diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 2f880a9e32..6934354a70 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,33 +1,49 @@ +--- +name: Bug report +about: Create a report to help us fix issues. +title: '' +labels: 'Type: Bug' +assignees: '' + +--- + -**Application Version** - +**Application version** +(The version of the application this issue occurs with.) **Platform** - +(Information about the operating system the issue occurs on. Include at least the operating system and maybe GPU.) **Printer** - +(Which printer was selected in Cura?) -**Steps to Reproduce** - +**Reproduction steps** +1. (Something you did.) +2. (Something you did next.) -**Actual Results** - +**Screenshot(s)** +(Image showing the problem, perhaps before/after images.) + +**Actual results** +(What happens after the above steps have been followed.) **Expected results** - +(What should happen after the above steps have been followed.) -**Additional Information** - +**Project file** +(For slicing bugs, provide a project which clearly shows the bug, by going to File->Save. For big files you may need to use WeTransfer or similar file sharing sites.) + +**Log file** +(See https://github.com/Ultimaker/Cura#logging-issues to find the log file to upload, or copy a relevant snippet from it.) + +**Additional information** +(Extra information relevant to the issue.) diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000000..6934354a70 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,49 @@ +--- +name: Bug report +about: Create a report to help us fix issues. +title: '' +labels: 'Type: Bug' +assignees: '' + +--- + + + +**Application version** +(The version of the application this issue occurs with.) + +**Platform** +(Information about the operating system the issue occurs on. Include at least the operating system and maybe GPU.) + +**Printer** +(Which printer was selected in Cura?) + +**Reproduction steps** +1. (Something you did.) +2. (Something you did next.) + +**Screenshot(s)** +(Image showing the problem, perhaps before/after images.) + +**Actual results** +(What happens after the above steps have been followed.) + +**Expected results** +(What should happen after the above steps have been followed.) + +**Project file** +(For slicing bugs, provide a project which clearly shows the bug, by going to File->Save. For big files you may need to use WeTransfer or similar file sharing sites.) + +**Log file** +(See https://github.com/Ultimaker/Cura#logging-issues to find the log file to upload, or copy a relevant snippet from it.) + +**Additional information** +(Extra information relevant to the issue.) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000000..a10d664a04 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,23 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: 'Type: New Feature' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +(A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]) + +**Describe the solution you'd like** +(A clear and concise description of what you want to happen. If possible, describe why you think this is a good solution.) + +**Describe alternatives you've considered** +(A clear and concise description of any alternative solutions or features you've considered. Again, if possible, think about why these alternatives are not working out.) + +**Affected users and/or printers** +(Who do you think will benefit from this? Is everyone going to benefit from these changes? Or specific kinds of users?) + +**Additional context** +(Add any other context or screenshots about the feature request here.) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml new file mode 100644 index 0000000000..3a0b57d714 --- /dev/null +++ b/.github/workflows/cicd.yml @@ -0,0 +1,13 @@ +--- +name: CI/CD +on: [push, pull_request] +jobs: + build: + name: Build and test + runs-on: ubuntu-latest + container: ultimaker/cura-build-environment + steps: + - name: Checkout master + uses: actions/checkout@v1.2.0 + - name: Build and test + run: docker/build.sh diff --git a/.gitignore b/.gitignore index 60b59e6829..eed686fda7 100644 --- a/.gitignore +++ b/.gitignore @@ -35,7 +35,7 @@ cura.desktop .pydevproject .settings -#Externally located plug-ins. +#Externally located plug-ins commonly installed by our devs. plugins/cura-big-flame-graph plugins/cura-god-mode-plugin plugins/cura-siemensnx-plugin @@ -52,6 +52,7 @@ plugins/FlatProfileExporter plugins/GodMode plugins/OctoPrintPlugin plugins/ProfileFlattener +plugins/SettingsGuide plugins/X3GWriter #Build stuff @@ -71,3 +72,7 @@ run.sh .scannerwork/ CuraEngine +/.coverage + +#Prevents import failures when plugin running tests +plugins/__init__.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000..6c5bc61cbe --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,16 @@ +image: registry.gitlab.com/ultimaker/cura/cura-build-environment:centos7 + +stages: + - build + +build and test linux: + stage: build + tags: + - cura + - docker + - linux + script: + - docker/build.sh + artifacts: + paths: + - build diff --git a/CMakeLists.txt b/CMakeLists.txt index be6c9d938e..4954ac46dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,10 @@ -project(cura NONE) -cmake_minimum_required(VERSION 2.8.12) - -set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/ - ${CMAKE_MODULE_PATH}) +project(cura) +cmake_minimum_required(VERSION 3.6) include(GNUInstallDirs) +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) + set(URANIUM_DIR "${CMAKE_SOURCE_DIR}/../Uranium" CACHE DIRECTORY "The location of the Uranium repository") set(URANIUM_SCRIPTS_DIR "${URANIUM_DIR}/scripts" CACHE DIRECTORY "The location of the scripts directory of the Uranium repository") @@ -21,15 +20,36 @@ set(CURA_APP_NAME "cura" CACHE STRING "Short name of Cura, used for configuratio set(CURA_APP_DISPLAY_NAME "Ultimaker Cura" CACHE STRING "Display name of Cura") set(CURA_VERSION "master" CACHE STRING "Version name of Cura") set(CURA_BUILDTYPE "" CACHE STRING "Build type of Cura, eg. 'PPA'") -set(CURA_SDK_VERSION "" CACHE STRING "SDK version of Cura") set(CURA_CLOUD_API_ROOT "" CACHE STRING "Alternative Cura cloud API root") set(CURA_CLOUD_API_VERSION "" CACHE STRING "Alternative Cura cloud API version") +set(CURA_CLOUD_ACCOUNT_API_ROOT "" CACHE STRING "Alternative Cura cloud account API version") configure_file(${CMAKE_SOURCE_DIR}/cura.desktop.in ${CMAKE_BINARY_DIR}/cura.desktop @ONLY) + configure_file(cura/CuraVersion.py.in CuraVersion.py @ONLY) + +# FIXME: Remove the code for CMake <3.12 once we have switched over completely. +# FindPython3 is a new module since CMake 3.12. It deprecates FindPythonInterp and FindPythonLibs. The FindPython3 +# module is copied from the CMake repository here so in CMake <3.12 we can still use it. +if(${CMAKE_VERSION} VERSION_LESS 3.12) + # Use FindPythonInterp and FindPythonLibs for CMake <3.12 + find_package(PythonInterp 3 REQUIRED) + + set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE}) + + set(Python3_VERSION ${PYTHON_VERSION_STRING}) + set(Python3_VERSION_MAJOR ${PYTHON_VERSION_MAJOR}) + set(Python3_VERSION_MINOR ${PYTHON_VERSION_MINOR}) + set(Python3_VERSION_PATCH ${PYTHON_VERSION_PATCH}) +else() + # Use FindPython3 for CMake >=3.12 + find_package(Python3 REQUIRED COMPONENTS Interpreter Development) +endif() + + if(NOT ${URANIUM_DIR} STREQUAL "") - set(CMAKE_MODULE_PATH "${URANIUM_DIR}/cmake") + set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${URANIUM_DIR}/cmake") endif() if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "") list(APPEND CMAKE_MODULE_PATH ${URANIUM_DIR}/cmake) @@ -40,12 +60,12 @@ if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "") CREATE_TRANSLATION_TARGETS() endif() -find_package(PythonInterp 3.5.0 REQUIRED) install(DIRECTORY resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura) -install(DIRECTORY plugins - DESTINATION lib${LIB_SUFFIX}/cura) + +include(CuraPluginInstall) + if(NOT APPLE AND NOT WIN32) install(FILES cura_app.py DESTINATION ${CMAKE_INSTALL_BINDIR} @@ -53,16 +73,16 @@ if(NOT APPLE AND NOT WIN32) RENAME cura) if(EXISTS /etc/debian_version) install(DIRECTORY cura - DESTINATION lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}/dist-packages + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}/dist-packages FILES_MATCHING PATTERN *.py) install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py - DESTINATION lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}/dist-packages/cura) + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}/dist-packages/cura) else() install(DIRECTORY cura - DESTINATION lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages FILES_MATCHING PATTERN *.py) install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py - DESTINATION lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/cura) + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages/cura) endif() install(FILES ${CMAKE_BINARY_DIR}/cura.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) @@ -78,8 +98,8 @@ else() DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) install(DIRECTORY cura - DESTINATION lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages FILES_MATCHING PATTERN *.py) install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py - DESTINATION lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/cura) + DESTINATION lib${LIB_SUFFIX}/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages/cura) endif() diff --git a/cmake/CuraPluginInstall.cmake b/cmake/CuraPluginInstall.cmake new file mode 100644 index 0000000000..d35e74acb8 --- /dev/null +++ b/cmake/CuraPluginInstall.cmake @@ -0,0 +1,99 @@ +# Copyright (c) 2019 Ultimaker B.V. +# CuraPluginInstall.cmake is released under the terms of the LGPLv3 or higher. + +# +# This module detects all plugins that need to be installed and adds them using the CMake install() command. +# It detects all plugin folder in the path "plugins/*" where there's a "plugin.json" in it. +# +# Plugins can be configured to NOT BE INSTALLED via the variable "CURA_NO_INSTALL_PLUGINS" as a list of string in the +# form of "a;b;c" or "a,b,c". By default all plugins will be installed. +# + +# FIXME: Remove the code for CMake <3.12 once we have switched over completely. +# FindPython3 is a new module since CMake 3.12. It deprecates FindPythonInterp and FindPythonLibs. The FindPython3 +# module is copied from the CMake repository here so in CMake <3.12 we can still use it. +if(${CMAKE_VERSION} VERSION_LESS 3.12) + # Use FindPythonInterp and FindPythonLibs for CMake <3.12 + find_package(PythonInterp 3 REQUIRED) + + set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE}) +else() + # Use FindPython3 for CMake >=3.12 + find_package(Python3 REQUIRED COMPONENTS Interpreter) +endif() + +# Options or configuration variables +set(CURA_NO_INSTALL_PLUGINS "" CACHE STRING "A list of plugins that should not be installed, separated with ';' or ','.") + +file(GLOB_RECURSE _plugin_json_list ${CMAKE_SOURCE_DIR}/plugins/*/plugin.json) +list(LENGTH _plugin_json_list _plugin_json_list_len) + +# Sort the lists alphabetically so we can handle cases like this: +# - plugins/my_plugin/plugin.json +# - plugins/my_plugin/my_module/plugin.json +# In this case, only "plugins/my_plugin" should be added via install(). +set(_no_install_plugin_list ${CURA_NO_INSTALL_PLUGINS}) +# Sanitize the string so the comparison will be case-insensitive. +string(STRIP "${_no_install_plugin_list}" _no_install_plugin_list) +string(TOLOWER "${_no_install_plugin_list}" _no_install_plugin_list) + +# WORKAROUND counterpart of what's in cura-build. +string(REPLACE "," ";" _no_install_plugin_list "${_no_install_plugin_list}") + +list(LENGTH _no_install_plugin_list _no_install_plugin_list_len) + +if(_no_install_plugin_list_len GREATER 0) + list(SORT _no_install_plugin_list) +endif() +if(_plugin_json_list_len GREATER 0) + list(SORT _plugin_json_list) +endif() + +# Check all plugin directories and add them via install() if needed. +set(_install_plugin_list "") +foreach(_plugin_json_path ${_plugin_json_list}) + get_filename_component(_plugin_dir ${_plugin_json_path} DIRECTORY) + file(RELATIVE_PATH _rel_plugin_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_plugin_dir}) + get_filename_component(_plugin_dir_name ${_plugin_dir} NAME) + + # Make plugin name comparison case-insensitive + string(TOLOWER "${_plugin_dir_name}" _plugin_dir_name_lowercase) + + # Check if this plugin needs to be skipped for installation + set(_add_plugin ON) # Indicates if this plugin should be added to the build or not. + set(_is_no_install_plugin OFF) # If this plugin will not be added, this indicates if it's because the plugin is + # specified in the NO_INSTALL_PLUGINS list. + if(_no_install_plugin_list) + if("${_plugin_dir_name_lowercase}" IN_LIST _no_install_plugin_list) + set(_add_plugin OFF) + set(_is_no_install_plugin ON) + endif() + endif() + + # Make sure this is not a subdirectory in a plugin that's already in the install list + if(_add_plugin) + foreach(_known_install_plugin_dir ${_install_plugin_list}) + if(_plugin_dir MATCHES "${_known_install_plugin_dir}.+") + set(_add_plugin OFF) + break() + endif() + endforeach() + endif() + + if(_add_plugin) + message(STATUS "[+] PLUGIN TO INSTALL: ${_rel_plugin_dir}") + get_filename_component(_rel_plugin_parent_dir ${_rel_plugin_dir} DIRECTORY) + install(DIRECTORY ${_rel_plugin_dir} + DESTINATION lib${LIB_SUFFIX}/cura/${_rel_plugin_parent_dir} + PATTERN "__pycache__" EXCLUDE + PATTERN "*.qmlc" EXCLUDE + ) + list(APPEND _install_plugin_list ${_plugin_dir}) + elseif(_is_no_install_plugin) + message(STATUS "[-] PLUGIN TO REMOVE : ${_rel_plugin_dir}") + execute_process(COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/mod_bundled_packages_json.py + -d ${CMAKE_CURRENT_SOURCE_DIR}/resources/bundled_packages + ${_plugin_dir_name} + RESULT_VARIABLE _mod_json_result) + endif() +endforeach() diff --git a/cmake/CuraTests.cmake b/cmake/CuraTests.cmake index b6d04de036..b1d3e0ddc4 100644 --- a/cmake/CuraTests.cmake +++ b/cmake/CuraTests.cmake @@ -1,10 +1,21 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -enable_testing() +include(CTest) include(CMakeParseArguments) -find_package(PythonInterp 3.5.0 REQUIRED) +# FIXME: Remove the code for CMake <3.12 once we have switched over completely. +# FindPython3 is a new module since CMake 3.12. It deprecates FindPythonInterp and FindPythonLibs. The FindPython3 +# module is copied from the CMake repository here so in CMake <3.12 we can still use it. +if(${CMAKE_VERSION} VERSION_LESS 3.12) + # Use FindPythonInterp and FindPythonLibs for CMake <3.12 + find_package(PythonInterp 3 REQUIRED) + + set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE}) +else() + # Use FindPython3 for CMake >=3.12 + find_package(Python3 REQUIRED COMPONENTS Interpreter Development) +endif() add_custom_target(test-verbose COMMAND ${CMAKE_CTEST_COMMAND} --verbose) @@ -36,7 +47,7 @@ function(cura_add_test) if (NOT ${test_exists}) add_test( NAME ${_NAME} - COMMAND ${PYTHON_EXECUTABLE} -m pytest --verbose --full-trace --capture=no --no-print-log --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY} + COMMAND ${Python3_EXECUTABLE} -m pytest --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY} ) set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT LANG=C) set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT "PYTHONPATH=${_PYTHONPATH}") @@ -59,13 +70,13 @@ endforeach() #Add code style test. add_test( NAME "code-style" - COMMAND ${PYTHON_EXECUTABLE} run_mypy.py + COMMAND ${Python3_EXECUTABLE} run_mypy.py WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) #Add test for whether the shortcut alt-keys are unique in every translation. add_test( NAME "shortcut-keys" - COMMAND ${PYTHON_EXECUTABLE} scripts/check_shortcut_keys.py + COMMAND ${Python3_EXECUTABLE} scripts/check_shortcut_keys.py WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} -) \ No newline at end of file +) diff --git a/cmake/mod_bundled_packages_json.py b/cmake/mod_bundled_packages_json.py new file mode 100755 index 0000000000..6423591f57 --- /dev/null +++ b/cmake/mod_bundled_packages_json.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +# +# This script removes the given package entries in the bundled_packages JSON files. This is used by the PluginInstall +# CMake module. +# + +import argparse +import collections +import json +import os +import sys + + +## Finds all JSON files in the given directory recursively and returns a list of those files in absolute paths. +# +# \param work_dir The directory to look for JSON files recursively. +# \return A list of JSON files in absolute paths that are found in the given directory. +def find_json_files(work_dir: str) -> list: + json_file_list = [] + for root, dir_names, file_names in os.walk(work_dir): + for file_name in file_names: + abs_path = os.path.abspath(os.path.join(root, file_name)) + json_file_list.append(abs_path) + return json_file_list + + +## Removes the given entries from the given JSON file. The file will modified in-place. +# +# \param file_path The JSON file to modify. +# \param entries A list of strings as entries to remove. +# \return None +def remove_entries_from_json_file(file_path: str, entries: list) -> None: + try: + with open(file_path, "r", encoding = "utf-8") as f: + package_dict = json.load(f, object_hook = collections.OrderedDict) + except Exception as e: + msg = "Failed to load '{file_path}' as a JSON file. This file will be ignored Exception: {e}"\ + .format(file_path = file_path, e = e) + sys.stderr.write(msg + os.linesep) + return + + for entry in entries: + if entry in package_dict: + del package_dict[entry] + print("[INFO] Remove entry [{entry}] from [{file_path}]".format(file_path = file_path, entry = entry)) + + try: + with open(file_path, "w", encoding = "utf-8", newline = "\n") as f: + json.dump(package_dict, f, indent = 4) + except Exception as e: + msg = "Failed to write '{file_path}' as a JSON file. Exception: {e}".format(file_path = file_path, e = e) + raise IOError(msg) + + +def main() -> None: + parser = argparse.ArgumentParser("mod_bundled_packages_json") + parser.add_argument("-d", "--dir", dest = "work_dir", + help = "The directory to look for bundled packages JSON files, recursively.") + parser.add_argument("entries", metavar = "ENTRIES", type = str, nargs = "+") + + args = parser.parse_args() + + json_file_list = find_json_files(args.work_dir) + for json_file_path in json_file_list: + remove_entries_from_json_file(json_file_path, args.entries) + + +if __name__ == "__main__": + main() diff --git a/contributing.md b/contributing.md new file mode 100644 index 0000000000..06f9dd472b --- /dev/null +++ b/contributing.md @@ -0,0 +1,19 @@ +Submitting bug reports +---------------------- +Please submit bug reports for all of Cura and CuraEngine to the [Cura repository](https://github.com/Ultimaker/Cura/issues). There will be a template there to fill in. Depending on the type of issue, we will usually ask for the [Cura log](Logging Issues) or a project file. + +If a bug report would contain private information, such as a proprietary 3D model, you may also e-mail us. Ask for contact information in the issue. + +Bugs related to supporting certain types of printers can usually not be solved by the Cura maintainers, since we don't have access to every 3D printer model in the world either. We have to rely on external contributors to fix this. If it's something simple and obvious, such as a mistake in the start g-code, then we can directly fix it for you, but e.g. issues with USB cable connectivity are impossible for us to debug. + +Requesting features +------------------- +The issue template in the Cura repository does not apply to feature requests. You can ignore it. + +When requesting a feature, please describe clearly what you need and why you think this is valuable to users or what problem it solves. + +Making pull requests +-------------------- +If you want to propose a change to Cura's source code, please create a pull request in the appropriate repository (being [Cura](https://github.com/Ultimaker/Cura), [Uranium](https://github.com/Ultimaker/Uranium), [CuraEngine](https://github.com/Ultimaker/CuraEngine), [fdm_materials](https://github.com/Ultimaker/fdm_materials), [libArcus](https://github.com/Ultimaker/libArcus), [cura-build](https://github.com/Ultimaker/cura-build), [cura-build-environment](https://github.com/Ultimaker/cura-build-environment), [libSavitar](https://github.com/Ultimaker/libSavitar), [libCharon](https://github.com/Ultimaker/libCharon) or [cura-binary-data](https://github.com/Ultimaker/cura-binary-data)) and if your change requires changes on multiple of these repositories, please link them together so that we know to merge them together. + +Some of these repositories will have automated tests running when you create a pull request, indicated by green check marks or red crosses in the Github web page. If you see a red cross, that means that a test has failed. If the test doesn't fail on the Master branch but does fail on your branch, that indicates that you've probably made a mistake and you need to do that. Click on the cross for more details, or run the test locally by running `cmake . && ctest --verbose`. \ No newline at end of file diff --git a/cura.desktop.in b/cura.desktop.in index b0195015a5..1e17e30f4e 100644 --- a/cura.desktop.in +++ b/cura.desktop.in @@ -13,6 +13,7 @@ TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura Icon=cura-icon Terminal=false Type=Application -MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;model/x3d+xml;text/x-gcode; +MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;text/x-gcode;application/x-amf;application/x-ply;application/x-ctm;model/vnd.collada+xml;model/gltf-binary;model/gltf+json;model/vnd.collada+xml+zip; Categories=Graphics; Keywords=3D;Printing;Slicer; +StartupWMClass=cura.real diff --git a/cura/API/Account.py b/cura/API/Account.py index 8a8b708cfa..0e3af0e6c1 100644 --- a/cura/API/Account.py +++ b/cura/API/Account.py @@ -29,6 +29,7 @@ i18n_catalog = i18nCatalog("cura") class Account(QObject): # Signal emitted when user logged in or out. loginStateChanged = pyqtSignal(bool) + accessTokenChanged = pyqtSignal() def __init__(self, application: "CuraApplication", parent = None) -> None: super().__init__(parent) @@ -59,8 +60,12 @@ class Account(QObject): self._authorization_service.initialize(self._application.getPreferences()) self._authorization_service.onAuthStateChanged.connect(self._onLoginStateChanged) self._authorization_service.onAuthenticationError.connect(self._onLoginStateChanged) + self._authorization_service.accessTokenChanged.connect(self._onAccessTokenChanged) self._authorization_service.loadAuthDataFromPreferences() + def _onAccessTokenChanged(self): + self.accessTokenChanged.emit() + ## Returns a boolean indicating whether the given authentication is applied against staging or not. @property def is_staging(self) -> bool: @@ -76,6 +81,9 @@ class Account(QObject): self._error_message.hide() self._error_message = Message(error_message, title = i18n_catalog.i18nc("@info:title", "Login failed")) self._error_message.show() + self._logged_in = False + self.loginStateChanged.emit(False) + return if self._logged_in != logged_in: self._logged_in = logged_in @@ -102,7 +110,7 @@ class Account(QObject): return None return user_profile.profile_image_url - @pyqtProperty(str, notify=loginStateChanged) + @pyqtProperty(str, notify=accessTokenChanged) def accessToken(self) -> Optional[str]: return self._authorization_service.getAccessToken() diff --git a/cura/ApplicationMetadata.py b/cura/ApplicationMetadata.py index faa3364e08..427cc77e65 100644 --- a/cura/ApplicationMetadata.py +++ b/cura/ApplicationMetadata.py @@ -9,7 +9,11 @@ DEFAULT_CURA_DISPLAY_NAME = "Ultimaker Cura" DEFAULT_CURA_VERSION = "master" DEFAULT_CURA_BUILD_TYPE = "" DEFAULT_CURA_DEBUG_MODE = False -DEFAULT_CURA_SDK_VERSION = "6.0.0" + +# Each release has a fixed SDK version coupled with it. It doesn't make sense to make it configurable because, for +# example Cura 3.2 with SDK version 6.1 will not work. So the SDK version is hard-coded here and left out of the +# CuraVersion.py.in template. +CuraSDKVersion = "7.0.0" try: from cura.CuraVersion import CuraAppName # type: ignore @@ -32,6 +36,9 @@ try: except ImportError: CuraVersion = DEFAULT_CURA_VERSION # [CodeStyle: Reflecting imported value] +# CURA-6569 +# This string indicates what type of version it is. For example, "enterprise". By default it's empty which indicates +# a default/normal Cura build. try: from cura.CuraVersion import CuraBuildType # type: ignore except ImportError: @@ -42,9 +49,7 @@ try: except ImportError: CuraDebugMode = DEFAULT_CURA_DEBUG_MODE -try: - from cura.CuraVersion import CuraSDKVersion # type: ignore - if CuraSDKVersion == "": - CuraSDKVersion = DEFAULT_CURA_SDK_VERSION -except ImportError: - CuraSDKVersion = DEFAULT_CURA_SDK_VERSION +# CURA-6569 +# Various convenience flags indicating what kind of Cura build it is. +__ENTERPRISE_VERSION_TYPE = "enterprise" +IsEnterpriseVersion = CuraBuildType.lower() == __ENTERPRISE_VERSION_TYPE diff --git a/cura/Arranging/Arrange.py b/cura/Arranging/Arrange.py index 32796005c8..caa7aae910 100644 --- a/cura/Arranging/Arrange.py +++ b/cura/Arranging/Arrange.py @@ -217,11 +217,6 @@ class Arrange: prio_slice = self._priority[min_y:max_y, min_x:max_x] prio_slice[new_occupied] = 999 - # If you want to see how the rasterized arranger build plate looks like, uncomment this code - # numpy.set_printoptions(linewidth=500, edgeitems=200) - # print(self._occupied.shape) - # print(self._occupied) - @property def isEmpty(self): return self._is_empty diff --git a/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py b/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py index 8bbc2bf132..89f613e180 100644 --- a/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py +++ b/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from UM.Application import Application @@ -48,7 +48,6 @@ class ArrangeArray: return self._count def get(self, index): - print(self._arrange) return self._arrange[index] def getFirstEmpty(self): diff --git a/cura/Arranging/ShapeArray.py b/cura/Arranging/ShapeArray.py index 64b78d6f17..403db5e706 100644 --- a/cura/Arranging/ShapeArray.py +++ b/cura/Arranging/ShapeArray.py @@ -1,12 +1,19 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + import numpy import copy +from typing import Optional, Tuple, TYPE_CHECKING from UM.Math.Polygon import Polygon +if TYPE_CHECKING: + from UM.Scene.SceneNode import SceneNode + ## Polygon representation as an array for use with Arrange class ShapeArray: - def __init__(self, arr, offset_x, offset_y, scale = 1): + def __init__(self, arr: numpy.array, offset_x: float, offset_y: float, scale: float = 1) -> None: self.arr = arr self.offset_x = offset_x self.offset_y = offset_y @@ -16,7 +23,7 @@ class ShapeArray: # \param vertices # \param scale scale the coordinates @classmethod - def fromPolygon(cls, vertices, scale = 1): + def fromPolygon(cls, vertices: numpy.array, scale: float = 1) -> "ShapeArray": # scale vertices = vertices * scale # flip y, x -> x, y @@ -42,7 +49,7 @@ class ShapeArray: # \param min_offset offset for the offset ShapeArray # \param scale scale the coordinates @classmethod - def fromNode(cls, node, min_offset, scale = 0.5, include_children = False): + def fromNode(cls, node: "SceneNode", min_offset: float, scale: float = 0.5, include_children: bool = False) -> Tuple[Optional["ShapeArray"], Optional["ShapeArray"]]: transform = node._transformation transform_x = transform._data[0][3] transform_y = transform._data[2][3] @@ -88,14 +95,16 @@ class ShapeArray: # \param shape numpy format shape, [x-size, y-size] # \param vertices @classmethod - def arrayFromPolygon(cls, shape, vertices): + def arrayFromPolygon(cls, shape: Tuple[int, int], vertices: numpy.array) -> numpy.array: base_array = numpy.zeros(shape, dtype = numpy.int32) # Initialize your array of zeros fill = numpy.ones(base_array.shape) * True # Initialize boolean array defining shape fill # Create check array for each edge segment, combine into fill array for k in range(vertices.shape[0]): - fill = numpy.all([fill, cls._check(vertices[k - 1], vertices[k], base_array)], axis=0) + check_array = cls._check(vertices[k - 1], vertices[k], base_array) + if check_array is not None: + fill = numpy.all([fill, check_array], axis=0) # Set all values inside polygon to one base_array[fill] = 1 @@ -111,9 +120,9 @@ class ShapeArray: # \param p2 2-tuple with x, y for point 2 # \param base_array boolean array to project the line on @classmethod - def _check(cls, p1, p2, base_array): + def _check(cls, p1: numpy.array, p2: numpy.array, base_array: numpy.array) -> Optional[numpy.array]: if p1[0] == p2[0] and p1[1] == p2[1]: - return + return None idxs = numpy.indices(base_array.shape) # Create 3D array of indices p1 = p1.astype(float) @@ -131,5 +140,4 @@ class ShapeArray: max_col_idx = (idxs[0] - p1[0]) / (p2[0] - p1[0]) * (p2[1] - p1[1]) + p1[1] sign = numpy.sign(p2[0] - p1[0]) - return idxs[1] * sign <= max_col_idx * sign - + return idxs[1] * sign <= max_col_idx * sign \ No newline at end of file diff --git a/cura/AutoSave.py b/cura/AutoSave.py index 1639868d6a..3b42fdafdf 100644 --- a/cura/AutoSave.py +++ b/cura/AutoSave.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import QTimer @@ -16,9 +16,10 @@ class AutoSave: self._application.getPreferences().addPreference("cura/autosave_delay", 1000 * 10) self._change_timer = QTimer() - self._change_timer.setInterval(self._application.getPreferences().getValue("cura/autosave_delay")) + self._change_timer.setInterval(int(self._application.getPreferences().getValue("cura/autosave_delay"))) self._change_timer.setSingleShot(True) + self._enabled = True self._saving = False def initialize(self): @@ -32,6 +33,13 @@ class AutoSave: if not self._saving: self._change_timer.start() + def setEnabled(self, enabled: bool) -> None: + self._enabled = enabled + if self._enabled: + self._change_timer.start() + else: + self._change_timer.stop() + def _onGlobalStackChanged(self): if self._global_stack: self._global_stack.propertyChanged.disconnect(self._triggerTimer) diff --git a/cura/Backups/Backup.py b/cura/Backups/Backup.py index 714d6527fe..9ccdcaf64d 100644 --- a/cura/Backups/Backup.py +++ b/cura/Backups/Backup.py @@ -116,12 +116,13 @@ class Backup: current_version = self._application.getVersion() version_to_restore = self.meta_data.get("cura_release", "master") - if current_version != version_to_restore: - # Cannot restore version older or newer than current because settings might have changed. - # Restoring this will cause a lot of issues so we don't allow this for now. + + if current_version < version_to_restore: + # Cannot restore version newer than current because settings might have changed. + Logger.log("d", "Tried to restore a Cura backup of version {version_to_restore} with cura version {current_version}".format(version_to_restore = version_to_restore, current_version = current_version)) self._showMessage( self.catalog.i18nc("@info:backup_failed", - "Tried to restore a Cura backup that does not match your current version.")) + "Tried to restore a Cura backup that is higher than the current version.")) return False version_data_dir = Resources.getDataStoragePath() @@ -147,5 +148,9 @@ class Backup: Logger.log("d", "Removing current data in location: %s", target_path) Resources.factoryReset() Logger.log("d", "Extracting backup to location: %s", target_path) - archive.extractall(target_path) + try: + archive.extractall(target_path) + except PermissionError: + Logger.logException("e", "Unable to extract the backup due to permission errors") + return False return True diff --git a/cura/Backups/BackupsManager.py b/cura/Backups/BackupsManager.py index a0d3881209..ba6fcab8d7 100644 --- a/cura/Backups/BackupsManager.py +++ b/cura/Backups/BackupsManager.py @@ -51,8 +51,18 @@ class BackupsManager: ## Here we try to disable the auto-save plug-in as it might interfere with # restoring a back-up. def _disableAutoSave(self) -> None: - self._application.setSaveDataEnabled(False) + auto_save = self._application.getAutoSave() + # The auto save is only not created if the application has not yet started. + if auto_save: + auto_save.setEnabled(False) + else: + Logger.log("e", "Unable to disable the autosave as application init has not been completed") ## Re-enable auto-save after we're done. def _enableAutoSave(self) -> None: - self._application.setSaveDataEnabled(True) + auto_save = self._application.getAutoSave() + # The auto save is only not created if the application has not yet started. + if auto_save: + auto_save.setEnabled(True) + else: + Logger.log("e", "Unable to enable the autosave as application init has not been completed") diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 42ef3d942f..aba94e8c60 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -1,6 +1,6 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. - +from UM.Mesh.MeshData import MeshData from cura.Scene.CuraSceneNode import CuraSceneNode from cura.Settings.ExtruderManager import ExtruderManager from UM.Application import Application #To modify the maximum zoom level. @@ -20,13 +20,19 @@ from UM.Signal import Signal from PyQt5.QtCore import QTimer from UM.View.RenderBatch import RenderBatch from UM.View.GL.OpenGL import OpenGL +from cura.Settings.GlobalStack import GlobalStack + catalog = i18nCatalog("cura") import numpy import math -import copy -from typing import List, Optional +from typing import List, Optional, TYPE_CHECKING, Any, Set, cast, Iterable, Dict + +if TYPE_CHECKING: + from cura.CuraApplication import CuraApplication + from cura.Settings.ExtruderStack import ExtruderStack + from UM.Settings.ContainerStack import ContainerStack # Radius of disallowed area in mm around prime. I.e. how much distance to keep from prime position. PRIME_CLEARANCE = 6.5 @@ -36,45 +42,47 @@ PRIME_CLEARANCE = 6.5 class BuildVolume(SceneNode): raftThicknessChanged = Signal() - def __init__(self, application, parent = None): + def __init__(self, application: "CuraApplication", parent: Optional[SceneNode] = None) -> None: super().__init__(parent) self._application = application self._machine_manager = self._application.getMachineManager() - self._volume_outline_color = None - self._x_axis_color = None - self._y_axis_color = None - self._z_axis_color = None - self._disallowed_area_color = None - self._error_area_color = None + self._volume_outline_color = None # type: Optional[Color] + self._x_axis_color = None # type: Optional[Color] + self._y_axis_color = None # type: Optional[Color] + self._z_axis_color = None # type: Optional[Color] + self._disallowed_area_color = None # type: Optional[Color] + self._error_area_color = None # type: Optional[Color] - self._width = 0 #type: float - self._height = 0 #type: float - self._depth = 0 #type: float - self._shape = "" #type: str + self._width = 0 # type: float + self._height = 0 # type: float + self._depth = 0 # type: float + self._shape = "" # type: str self._shader = None - self._origin_mesh = None + self._origin_mesh = None # type: Optional[MeshData] self._origin_line_length = 20 - self._origin_line_width = 0.5 + self._origin_line_width = 1.5 + self._enabled = False - self._grid_mesh = None + self._grid_mesh = None # type: Optional[MeshData] self._grid_shader = None - self._disallowed_areas = [] - self._disallowed_areas_no_brim = [] - self._disallowed_area_mesh = None + self._disallowed_areas = [] # type: List[Polygon] + self._disallowed_areas_no_brim = [] # type: List[Polygon] + self._disallowed_area_mesh = None # type: Optional[MeshData] + self._disallowed_area_size = 0. - self._error_areas = [] - self._error_mesh = None + self._error_areas = [] # type: List[Polygon] + self._error_mesh = None # type: Optional[MeshData] self.setCalculateBoundingBox(False) - self._volume_aabb = None + self._volume_aabb = None # type: Optional[AxisAlignedBox] self._raft_thickness = 0.0 self._extra_z_clearance = 0.0 - self._adhesion_type = None + self._adhesion_type = None # type: Any self._platform = Platform(self) self._build_volume_message = Message(catalog.i18nc("@info:status", @@ -82,7 +90,7 @@ class BuildVolume(SceneNode): " \"Print Sequence\" setting to prevent the gantry from colliding" " with printed models."), title = catalog.i18nc("@info:title", "Build Volume")) - self._global_container_stack = None + self._global_container_stack = None # type: Optional[GlobalStack] self._stack_change_timer = QTimer() self._stack_change_timer.setInterval(100) @@ -100,7 +108,7 @@ class BuildVolume(SceneNode): self._application.getController().getScene().sceneChanged.connect(self._onSceneChanged) #Objects loaded at the moment. We are connected to the property changed events of these objects. - self._scene_objects = set() + self._scene_objects = set() # type: Set[SceneNode] self._scene_change_timer = QTimer() self._scene_change_timer.setInterval(100) @@ -112,26 +120,22 @@ class BuildVolume(SceneNode): self._setting_change_timer.setSingleShot(True) self._setting_change_timer.timeout.connect(self._onSettingChangeTimerFinished) - - # Must be after setting _build_volume_message, apparently that is used in getMachineManager. # activeQualityChanged is always emitted after setActiveVariant, setActiveMaterial and setActiveQuality. # Therefore this works. self._machine_manager.activeQualityChanged.connect(self._onStackChanged) - # This should also ways work, and it is semantically more correct, - # but it does not update the disallowed areas after material change - self._machine_manager.activeStackChanged.connect(self._onStackChanged) - # Enable and disable extruder self._machine_manager.extruderChanged.connect(self.updateNodeBoundaryCheck) - # list of settings which were updated - self._changed_settings_since_last_rebuild = [] + # List of settings which were updated + self._changed_settings_since_last_rebuild = [] # type: List[str] def _onSceneChanged(self, source): if self._global_container_stack: - self._scene_change_timer.start() + # Ignore anything that is not something we can slice in the first place! + if source.callDecoration("isSliceable"): + self._scene_change_timer.start() def _onSceneChangeTimerFinished(self): root = self._application.getController().getScene().getRoot() @@ -148,7 +152,7 @@ class BuildVolume(SceneNode): if active_extruder_changed is not None: node.callDecoration("getActiveExtruderChangedSignal").disconnect(self._updateDisallowedAreasAndRebuild) node.decoratorsChanged.disconnect(self._updateNodeListeners) - self._updateDisallowedAreasAndRebuild() # make sure we didn't miss anything before we updated the node listeners + self.rebuild() self._scene_objects = new_scene_objects self._onSettingPropertyChanged("print_sequence", "value") # Create fake event, so right settings are triggered. @@ -165,16 +169,13 @@ class BuildVolume(SceneNode): active_extruder_changed.connect(self._updateDisallowedAreasAndRebuild) def setWidth(self, width: float) -> None: - if width is not None: - self._width = width + self._width = width def setHeight(self, height: float) -> None: - if height is not None: - self._height = height + self._height = height def setDepth(self, depth: float) -> None: - if depth is not None: - self._depth = depth + self._depth = depth def setShape(self, shape: str) -> None: if shape: @@ -196,7 +197,7 @@ class BuildVolume(SceneNode): self._disallowed_areas = areas def render(self, renderer): - if not self.getMeshData(): + if not self.getMeshData() or not self.isVisible(): return True if not self._shader: @@ -222,13 +223,18 @@ class BuildVolume(SceneNode): ## For every sliceable node, update node._outside_buildarea # def updateNodeBoundaryCheck(self): + if not self._global_container_stack: + return + root = self._application.getController().getScene().getRoot() - nodes = list(BreadthFirstIterator(root)) - group_nodes = [] + nodes = cast(List[SceneNode], list(cast(Iterable, BreadthFirstIterator(root)))) + group_nodes = [] # type: List[SceneNode] build_volume_bounding_box = self.getBoundingBox() if build_volume_bounding_box: # It's over 9000! + # We set this to a very low number, as we do allow models to intersect the build plate. + # This means the model gets cut off at the build plate. build_volume_bounding_box = build_volume_bounding_box.set(bottom=-9001) else: # No bounding box. This is triggered when running Cura from command line with a model for the first time @@ -241,20 +247,28 @@ class BuildVolume(SceneNode): group_nodes.append(node) # Keep list of affected group_nodes if node.callDecoration("isSliceable") or node.callDecoration("isGroup"): + if not isinstance(node, CuraSceneNode): + continue + if node.collidesWithBbox(build_volume_bounding_box): node.setOutsideBuildArea(True) continue - if node.collidesWithArea(self.getDisallowedAreas()): + if node.collidesWithAreas(self.getDisallowedAreas()): + node.setOutsideBuildArea(True) + continue + # If the entire node is below the build plate, still mark it as outside. + node_bounding_box = node.getBoundingBox() + if node_bounding_box and node_bounding_box.top < 0: node.setOutsideBuildArea(True) continue - # Mark the node as outside build volume if the set extruder is disabled extruder_position = node.callDecoration("getActiveExtruderPosition") - if extruder_position not in self._global_container_stack.extruders: - continue - if not self._global_container_stack.extruders[extruder_position].isEnabled: - node.setOutsideBuildArea(True) + try: + if not self._global_container_stack.extruderList[int(extruder_position)].isEnabled: + node.setOutsideBuildArea(True) + continue + except IndexError: continue node.setOutsideBuildArea(False) @@ -274,8 +288,8 @@ class BuildVolume(SceneNode): child_node.setOutsideBuildArea(group_node.isOutsideBuildArea()) ## Update the outsideBuildArea of a single node, given bounds or current build volume - def checkBoundsAndUpdate(self, node: CuraSceneNode, bounds: Optional[AxisAlignedBox] = None): - if not isinstance(node, CuraSceneNode): + def checkBoundsAndUpdate(self, node: CuraSceneNode, bounds: Optional[AxisAlignedBox] = None) -> None: + if not isinstance(node, CuraSceneNode) or self._global_container_stack is None: return if bounds is None: @@ -295,44 +309,55 @@ class BuildVolume(SceneNode): node.setOutsideBuildArea(True) return - if node.collidesWithArea(self.getDisallowedAreas()): + if node.collidesWithAreas(self.getDisallowedAreas()): node.setOutsideBuildArea(True) return # Mark the node as outside build volume if the set extruder is disabled extruder_position = node.callDecoration("getActiveExtruderPosition") - if not self._global_container_stack.extruders[extruder_position].isEnabled: + if not self._global_container_stack.extruderList[int(extruder_position)].isEnabled: node.setOutsideBuildArea(True) return node.setOutsideBuildArea(False) - ## Recalculates the build volume & disallowed areas. - def rebuild(self): - if not self._width or not self._height or not self._depth: - return + def _buildGridMesh(self, min_w: float, max_w: float, min_h: float, max_h: float, min_d: float, max_d:float, z_fight_distance: float) -> MeshData: + mb = MeshBuilder() + if self._shape != "elliptic": + # Build plate grid mesh + mb.addQuad( + Vector(min_w, min_h - z_fight_distance, min_d), + Vector(max_w, min_h - z_fight_distance, min_d), + Vector(max_w, min_h - z_fight_distance, max_d), + Vector(min_w, min_h - z_fight_distance, max_d) + ) - if not self._engine_ready: - return + for n in range(0, 6): + v = mb.getVertex(n) + mb.setVertexUVCoordinates(n, v[0], v[2]) + return mb.build() + else: + aspect = 1.0 + scale_matrix = Matrix() + if self._width != 0: + # Scale circular meshes by aspect ratio if width != height + aspect = self._depth / self._width + scale_matrix.compose(scale=Vector(1, 1, aspect)) + mb.addVertex(0, min_h - z_fight_distance, 0) + mb.addArc(max_w, Vector.Unit_Y, center=Vector(0, min_h - z_fight_distance, 0)) + sections = mb.getVertexCount() - 1 # Center point is not an arc section + indices = [] + for n in range(0, sections - 1): + indices.append([0, n + 2, n + 1]) + mb.addIndices(numpy.asarray(indices, dtype=numpy.int32)) + mb.calculateNormals() - if not self._volume_outline_color: - theme = self._application.getTheme() - self._volume_outline_color = Color(*theme.getColor("volume_outline").getRgb()) - self._x_axis_color = Color(*theme.getColor("x_axis").getRgb()) - self._y_axis_color = Color(*theme.getColor("y_axis").getRgb()) - self._z_axis_color = Color(*theme.getColor("z_axis").getRgb()) - self._disallowed_area_color = Color(*theme.getColor("disallowed_area").getRgb()) - self._error_area_color = Color(*theme.getColor("error_area").getRgb()) - - min_w = -self._width / 2 - max_w = self._width / 2 - min_h = 0.0 - max_h = self._height - min_d = -self._depth / 2 - max_d = self._depth / 2 - - z_fight_distance = 0.2 # Distance between buildplate and disallowed area meshes to prevent z-fighting + for n in range(0, mb.getVertexCount()): + v = mb.getVertex(n) + mb.setVertexUVCoordinates(n, v[0], v[2] * aspect) + return mb.build().getTransformed(scale_matrix) + def _buildMesh(self, min_w: float, max_w: float, min_h: float, max_h: float, min_d: float, max_d:float, z_fight_distance: float) -> MeshData: if self._shape != "elliptic": # Outline 'cube' of the build volume mb = MeshBuilder() @@ -351,25 +376,10 @@ class BuildVolume(SceneNode): mb.addLine(Vector(min_w, max_h, min_d), Vector(min_w, max_h, max_d), color = self._volume_outline_color) mb.addLine(Vector(max_w, max_h, min_d), Vector(max_w, max_h, max_d), color = self._volume_outline_color) - self.setMeshData(mb.build()) - - # Build plate grid mesh - mb = MeshBuilder() - mb.addQuad( - Vector(min_w, min_h - z_fight_distance, min_d), - Vector(max_w, min_h - z_fight_distance, min_d), - Vector(max_w, min_h - z_fight_distance, max_d), - Vector(min_w, min_h - z_fight_distance, max_d) - ) - - for n in range(0, 6): - v = mb.getVertex(n) - mb.setVertexUVCoordinates(n, v[0], v[2]) - self._grid_mesh = mb.build() + return mb.build() else: # Bottom and top 'ellipse' of the build volume - aspect = 1.0 scale_matrix = Matrix() if self._width != 0: # Scale circular meshes by aspect ratio if width != height @@ -378,23 +388,119 @@ class BuildVolume(SceneNode): mb = MeshBuilder() mb.addArc(max_w, Vector.Unit_Y, center = (0, min_h - z_fight_distance, 0), color = self._volume_outline_color) mb.addArc(max_w, Vector.Unit_Y, center = (0, max_h, 0), color = self._volume_outline_color) - self.setMeshData(mb.build().getTransformed(scale_matrix)) + return mb.build().getTransformed(scale_matrix) - # Build plate grid mesh - mb = MeshBuilder() - mb.addVertex(0, min_h - z_fight_distance, 0) - mb.addArc(max_w, Vector.Unit_Y, center = Vector(0, min_h - z_fight_distance, 0)) - sections = mb.getVertexCount() - 1 # Center point is not an arc section - indices = [] - for n in range(0, sections - 1): - indices.append([0, n + 2, n + 1]) - mb.addIndices(numpy.asarray(indices, dtype = numpy.int32)) - mb.calculateNormals() + def _buildOriginMesh(self, origin: Vector) -> MeshData: + mb = MeshBuilder() + mb.addCube( + width=self._origin_line_length, + height=self._origin_line_width, + depth=self._origin_line_width, + center=origin + Vector(self._origin_line_length / 2, 0, 0), + color=self._x_axis_color + ) + mb.addCube( + width=self._origin_line_width, + height=self._origin_line_length, + depth=self._origin_line_width, + center=origin + Vector(0, self._origin_line_length / 2, 0), + color=self._y_axis_color + ) + mb.addCube( + width=self._origin_line_width, + height=self._origin_line_width, + depth=self._origin_line_length, + center=origin - Vector(0, 0, self._origin_line_length / 2), + color=self._z_axis_color + ) + return mb.build() - for n in range(0, mb.getVertexCount()): - v = mb.getVertex(n) - mb.setVertexUVCoordinates(n, v[0], v[2] * aspect) - self._grid_mesh = mb.build().getTransformed(scale_matrix) + def _updateColors(self): + theme = self._application.getTheme() + if theme is None: + return + self._volume_outline_color = Color(*theme.getColor("volume_outline").getRgb()) + self._x_axis_color = Color(*theme.getColor("x_axis").getRgb()) + self._y_axis_color = Color(*theme.getColor("y_axis").getRgb()) + self._z_axis_color = Color(*theme.getColor("z_axis").getRgb()) + self._disallowed_area_color = Color(*theme.getColor("disallowed_area").getRgb()) + self._error_area_color = Color(*theme.getColor("error_area").getRgb()) + + def _buildErrorMesh(self, min_w: float, max_w: float, min_h: float, max_h: float, min_d: float, max_d: float, disallowed_area_height: float) -> Optional[MeshData]: + if not self._error_areas: + return None + mb = MeshBuilder() + for error_area in self._error_areas: + color = self._error_area_color + points = error_area.getPoints() + first = Vector(self._clamp(points[0][0], min_w, max_w), disallowed_area_height, + self._clamp(points[0][1], min_d, max_d)) + previous_point = Vector(self._clamp(points[0][0], min_w, max_w), disallowed_area_height, + self._clamp(points[0][1], min_d, max_d)) + for point in points: + new_point = Vector(self._clamp(point[0], min_w, max_w), disallowed_area_height, + self._clamp(point[1], min_d, max_d)) + mb.addFace(first, previous_point, new_point, color=color) + previous_point = new_point + return mb.build() + + def _buildDisallowedAreaMesh(self, min_w: float, max_w: float, min_h: float, max_h: float, min_d: float, max_d: float, disallowed_area_height: float) -> Optional[MeshData]: + if not self._disallowed_areas: + return None + + mb = MeshBuilder() + color = self._disallowed_area_color + for polygon in self._disallowed_areas: + points = polygon.getPoints() + if len(points) == 0: + continue + + first = Vector(self._clamp(points[0][0], min_w, max_w), disallowed_area_height, + self._clamp(points[0][1], min_d, max_d)) + previous_point = Vector(self._clamp(points[0][0], min_w, max_w), disallowed_area_height, + self._clamp(points[0][1], min_d, max_d)) + for point in points: + new_point = Vector(self._clamp(point[0], min_w, max_w), disallowed_area_height, + self._clamp(point[1], min_d, max_d)) + mb.addFace(first, previous_point, new_point, color=color) + previous_point = new_point + + # Find the largest disallowed area to exclude it from the maximum scale bounds. + # This is a very nasty hack. This pretty much only works for UM machines. + # This disallowed area_size needs a -lot- of rework at some point in the future: TODO + if numpy.min(points[:, + 1]) >= 0: # This filters out all areas that have points to the left of the centre. This is done to filter the skirt area. + size = abs(numpy.max(points[:, 1]) - numpy.min(points[:, 1])) + else: + size = 0 + self._disallowed_area_size = max(size, self._disallowed_area_size) + return mb.build() + + ## Recalculates the build volume & disallowed areas. + def rebuild(self) -> None: + if not self._width or not self._height or not self._depth: + return + + if not self._engine_ready: + return + + if not self._global_container_stack: + return + + if not self._volume_outline_color: + self._updateColors() + + min_w = -self._width / 2 + max_w = self._width / 2 + min_h = 0.0 + max_h = self._height + min_d = -self._depth / 2 + max_d = self._depth / 2 + + z_fight_distance = 0.2 # Distance between buildplate and disallowed area meshes to prevent z-fighting + + self._grid_mesh = self._buildGridMesh(min_w, max_w, min_h, max_h, min_d, max_d, z_fight_distance) + self.setMeshData(self._buildMesh(min_w, max_w, min_h, max_h, min_d, max_d, z_fight_distance)) # Indication of the machine origin if self._global_container_stack.getProperty("machine_center_is_zero", "value"): @@ -402,77 +508,13 @@ class BuildVolume(SceneNode): else: origin = Vector(min_w, min_h, max_d) - mb = MeshBuilder() - mb.addCube( - width = self._origin_line_length, - height = self._origin_line_width, - depth = self._origin_line_width, - center = origin + Vector(self._origin_line_length / 2, 0, 0), - color = self._x_axis_color - ) - mb.addCube( - width = self._origin_line_width, - height = self._origin_line_length, - depth = self._origin_line_width, - center = origin + Vector(0, self._origin_line_length / 2, 0), - color = self._y_axis_color - ) - mb.addCube( - width = self._origin_line_width, - height = self._origin_line_width, - depth = self._origin_line_length, - center = origin - Vector(0, 0, self._origin_line_length / 2), - color = self._z_axis_color - ) - self._origin_mesh = mb.build() + self._origin_mesh = self._buildOriginMesh(origin) disallowed_area_height = 0.1 - disallowed_area_size = 0 - if self._disallowed_areas: - mb = MeshBuilder() - color = self._disallowed_area_color - for polygon in self._disallowed_areas: - points = polygon.getPoints() - if len(points) == 0: - continue + self._disallowed_area_size = 0. + self._disallowed_area_mesh = self._buildDisallowedAreaMesh(min_w, max_w, min_h, max_h, min_d, max_d, disallowed_area_height) - first = Vector(self._clamp(points[0][0], min_w, max_w), disallowed_area_height, self._clamp(points[0][1], min_d, max_d)) - previous_point = Vector(self._clamp(points[0][0], min_w, max_w), disallowed_area_height, self._clamp(points[0][1], min_d, max_d)) - for point in points: - new_point = Vector(self._clamp(point[0], min_w, max_w), disallowed_area_height, self._clamp(point[1], min_d, max_d)) - mb.addFace(first, previous_point, new_point, color = color) - previous_point = new_point - - # Find the largest disallowed area to exclude it from the maximum scale bounds. - # This is a very nasty hack. This pretty much only works for UM machines. - # This disallowed area_size needs a -lot- of rework at some point in the future: TODO - if numpy.min(points[:, 1]) >= 0: # This filters out all areas that have points to the left of the centre. This is done to filter the skirt area. - size = abs(numpy.max(points[:, 1]) - numpy.min(points[:, 1])) - else: - size = 0 - disallowed_area_size = max(size, disallowed_area_size) - - self._disallowed_area_mesh = mb.build() - else: - self._disallowed_area_mesh = None - - if self._error_areas: - mb = MeshBuilder() - for error_area in self._error_areas: - color = self._error_area_color - points = error_area.getPoints() - first = Vector(self._clamp(points[0][0], min_w, max_w), disallowed_area_height, - self._clamp(points[0][1], min_d, max_d)) - previous_point = Vector(self._clamp(points[0][0], min_w, max_w), disallowed_area_height, - self._clamp(points[0][1], min_d, max_d)) - for point in points: - new_point = Vector(self._clamp(point[0], min_w, max_w), disallowed_area_height, - self._clamp(point[1], min_d, max_d)) - mb.addFace(first, previous_point, new_point, color=color) - previous_point = new_point - self._error_mesh = mb.build() - else: - self._error_mesh = None + self._error_mesh = self._buildErrorMesh(min_w, max_w, min_h, max_h, min_d, max_d, disallowed_area_height) self._volume_aabb = AxisAlignedBox( minimum = Vector(min_w, min_h - 1.0, min_d), @@ -484,23 +526,26 @@ class BuildVolume(SceneNode): # This is probably wrong in all other cases. TODO! # The +1 and -1 is added as there is always a bit of extra room required to work properly. scale_to_max_bounds = AxisAlignedBox( - minimum = Vector(min_w + bed_adhesion_size + 1, min_h, min_d + disallowed_area_size - bed_adhesion_size + 1), - maximum = Vector(max_w - bed_adhesion_size - 1, max_h - self._raft_thickness - self._extra_z_clearance, max_d - disallowed_area_size + bed_adhesion_size - 1) + minimum = Vector(min_w + bed_adhesion_size + 1, min_h, min_d + self._disallowed_area_size - bed_adhesion_size + 1), + maximum = Vector(max_w - bed_adhesion_size - 1, max_h - self._raft_thickness - self._extra_z_clearance, max_d - self._disallowed_area_size + bed_adhesion_size - 1) ) - self._application.getController().getScene()._maximum_bounds = scale_to_max_bounds + self._application.getController().getScene()._maximum_bounds = scale_to_max_bounds # type: ignore self.updateNodeBoundaryCheck() - def getBoundingBox(self) -> AxisAlignedBox: + def getBoundingBox(self): return self._volume_aabb def getRaftThickness(self) -> float: return self._raft_thickness - def _updateRaftThickness(self): + def _updateRaftThickness(self) -> None: + if not self._global_container_stack: + return + old_raft_thickness = self._raft_thickness - if self._global_container_stack.extruders: + if self._global_container_stack.extruderList: # This might be called before the extruder stacks have initialised, in which case getting the adhesion_type fails self._adhesion_type = self._global_container_stack.getProperty("adhesion_type", "value") self._raft_thickness = 0.0 @@ -509,7 +554,7 @@ class BuildVolume(SceneNode): self._global_container_stack.getProperty("raft_base_thickness", "value") + self._global_container_stack.getProperty("raft_interface_thickness", "value") + self._global_container_stack.getProperty("raft_surface_layers", "value") * - self._global_container_stack.getProperty("raft_surface_thickness", "value") + + self._global_container_stack.getProperty("raft_surface_thickness", "value") + self._global_container_stack.getProperty("raft_airgap", "value") - self._global_container_stack.getProperty("layer_0_z_overlap", "value")) @@ -518,28 +563,23 @@ class BuildVolume(SceneNode): self.setPosition(Vector(0, -self._raft_thickness, 0), SceneNode.TransformSpace.World) self.raftThicknessChanged.emit() - def _updateExtraZClearance(self) -> None: + def _calculateExtraZClearance(self, extruders: List["ContainerStack"]) -> float: + if not self._global_container_stack: + return 0 + extra_z = 0.0 - extruders = ExtruderManager.getInstance().getUsedExtruderStacks() - use_extruders = False for extruder in extruders: if extruder.getProperty("retraction_hop_enabled", "value"): retraction_hop = extruder.getProperty("retraction_hop", "value") if extra_z is None or retraction_hop > extra_z: extra_z = retraction_hop - use_extruders = True - if not use_extruders: - # If no extruders, take global value. - if self._global_container_stack.getProperty("retraction_hop_enabled", "value"): - extra_z = self._global_container_stack.getProperty("retraction_hop", "value") - if extra_z != self._extra_z_clearance: - self._extra_z_clearance = extra_z + return extra_z def _onStackChanged(self): self._stack_change_timer.start() ## Update the build volume visualization - def _onStackChangeTimerFinished(self): + def _onStackChangeTimerFinished(self) -> None: if self._global_container_stack: self._global_container_stack.propertyChanged.disconnect(self._onSettingPropertyChanged) extruders = ExtruderManager.getInstance().getActiveExtruderStacks() @@ -570,7 +610,7 @@ class BuildVolume(SceneNode): self._updateDisallowedAreas() self._updateRaftThickness() - self._updateExtraZClearance() + self._extra_z_clearance = self._calculateExtraZClearance(ExtruderManager.getInstance().getUsedExtruderStacks()) if self._engine_ready: self.rebuild() @@ -579,20 +619,23 @@ class BuildVolume(SceneNode): if camera: diagonal = self.getDiagonalSize() if diagonal > 1: - camera.setZoomRange(min = 0.1, max = diagonal * 5) #You can zoom out up to 5 times the diagonal. This gives some space around the volume. + # You can zoom out up to 5 times the diagonal. This gives some space around the volume. + camera.setZoomRange(min = 0.1, max = diagonal * 5) # type: ignore - def _onEngineCreated(self): + def _onEngineCreated(self) -> None: self._engine_ready = True self.rebuild() - def _onSettingChangeTimerFinished(self): + def _onSettingChangeTimerFinished(self) -> None: + if not self._global_container_stack: + return + rebuild_me = False update_disallowed_areas = False update_raft_thickness = False update_extra_z_clearance = True for setting_key in self._changed_settings_since_last_rebuild: - if setting_key == "print_sequence": machine_height = self._global_container_stack.getProperty("machine_height", "value") if self._application.getGlobalContainerStack().getProperty("print_sequence", "value") == "one_at_a_time" and len(self._scene_objects) > 1: @@ -605,33 +648,26 @@ class BuildVolume(SceneNode): self._height = self._global_container_stack.getProperty("machine_height", "value") self._build_volume_message.hide() update_disallowed_areas = True - rebuild_me = True # sometimes the machine size or shape settings are adjusted on the active machine, we should reflect this if setting_key in self._machine_settings: - self._height = self._global_container_stack.getProperty("machine_height", "value") - self._width = self._global_container_stack.getProperty("machine_width", "value") - self._depth = self._global_container_stack.getProperty("machine_depth", "value") - self._shape = self._global_container_stack.getProperty("machine_shape", "value") + self._updateMachineSizeProperties() update_extra_z_clearance = True update_disallowed_areas = True - rebuild_me = True - if setting_key in self._skirt_settings + self._prime_settings + self._tower_settings + self._ooze_shield_settings + self._distance_settings + self._extruder_settings: + if setting_key in self._disallowed_area_settings: update_disallowed_areas = True - rebuild_me = True if setting_key in self._raft_settings: update_raft_thickness = True - rebuild_me = True if setting_key in self._extra_z_settings: update_extra_z_clearance = True - rebuild_me = True if setting_key in self._limit_to_extruder_settings: update_disallowed_areas = True - rebuild_me = True + + rebuild_me = update_extra_z_clearance or update_disallowed_areas or update_raft_thickness # We only want to update all of them once. if update_disallowed_areas: @@ -641,7 +677,7 @@ class BuildVolume(SceneNode): self._updateRaftThickness() if update_extra_z_clearance: - self._updateExtraZClearance() + self._extra_z_clearance = self._calculateExtraZClearance(ExtruderManager.getInstance().getUsedExtruderStacks()) if rebuild_me: self.rebuild() @@ -649,7 +685,7 @@ class BuildVolume(SceneNode): # We just did a rebuild, reset the list. self._changed_settings_since_last_rebuild = [] - def _onSettingPropertyChanged(self, setting_key: str, property_name: str): + def _onSettingPropertyChanged(self, setting_key: str, property_name: str) -> None: if property_name != "value": return @@ -660,6 +696,14 @@ class BuildVolume(SceneNode): def hasErrors(self) -> bool: return self._has_errors + def _updateMachineSizeProperties(self) -> None: + if not self._global_container_stack: + return + self._height = self._global_container_stack.getProperty("machine_height", "value") + self._width = self._global_container_stack.getProperty("machine_width", "value") + self._depth = self._global_container_stack.getProperty("machine_depth", "value") + self._shape = self._global_container_stack.getProperty("machine_shape", "value") + ## Calls _updateDisallowedAreas and makes sure the changes appear in the # scene. # @@ -667,60 +711,30 @@ class BuildVolume(SceneNode): # ``_updateDisallowedAreas`` method itself shouldn't call ``rebuild``, # since there may be other changes before it needs to be rebuilt, which # would hit performance. + def _updateDisallowedAreasAndRebuild(self): self._updateDisallowedAreas() self._updateRaftThickness() - self._updateExtraZClearance() + self._extra_z_clearance = self._calculateExtraZClearance(ExtruderManager.getInstance().getUsedExtruderStacks()) self.rebuild() - def _updateDisallowedAreas(self): + def _updateDisallowedAreas(self) -> None: if not self._global_container_stack: return self._error_areas = [] - extruder_manager = ExtruderManager.getInstance() - used_extruders = extruder_manager.getUsedExtruderStacks() + used_extruders = ExtruderManager.getInstance().getUsedExtruderStacks() disallowed_border_size = self.getEdgeDisallowedSize() - if not used_extruders: - # If no extruder is used, assume that the active extruder is used (else nothing is drawn) - if extruder_manager.getActiveExtruderStack(): - used_extruders = [extruder_manager.getActiveExtruderStack()] - else: - used_extruders = [self._global_container_stack] - - result_areas = self._computeDisallowedAreasStatic(disallowed_border_size, used_extruders) #Normal machine disallowed areas can always be added. + result_areas = self._computeDisallowedAreasStatic(disallowed_border_size, used_extruders) # Normal machine disallowed areas can always be added. prime_areas = self._computeDisallowedAreasPrimeBlob(disallowed_border_size, used_extruders) - result_areas_no_brim = self._computeDisallowedAreasStatic(0, used_extruders) #Where the priming is not allowed to happen. This is not added to the result, just for collision checking. - prime_disallowed_areas = copy.deepcopy(result_areas_no_brim) + result_areas_no_brim = self._computeDisallowedAreasStatic(0, used_extruders) # Where the priming is not allowed to happen. This is not added to the result, just for collision checking. - #Check if prime positions intersect with disallowed areas. + # Check if prime positions intersect with disallowed areas. for extruder in used_extruders: extruder_id = extruder.getId() - collision = False - for prime_polygon in prime_areas[extruder_id]: - for disallowed_polygon in prime_disallowed_areas[extruder_id]: - if prime_polygon.intersectsPolygon(disallowed_polygon) is not None: - collision = True - break - if collision: - break - - #Also check other prime positions (without additional offset). - for other_extruder_id in prime_areas: - if extruder_id == other_extruder_id: #It is allowed to collide with itself. - continue - for other_prime_polygon in prime_areas[other_extruder_id]: - if prime_polygon.intersectsPolygon(other_prime_polygon): - collision = True - break - if collision: - break - if collision: - break - result_areas[extruder_id].extend(prime_areas[extruder_id]) result_areas_no_brim[extruder_id].extend(prime_areas[extruder_id]) @@ -728,33 +742,28 @@ class BuildVolume(SceneNode): for area in nozzle_disallowed_areas: polygon = Polygon(numpy.array(area, numpy.float32)) polygon_disallowed_border = polygon.getMinkowskiHull(Polygon.approximatedCircle(disallowed_border_size)) - result_areas[extruder_id].append(polygon_disallowed_border) #Don't perform the offset on these. - #polygon_minimal_border = polygon.getMinkowskiHull(5) - result_areas_no_brim[extruder_id].append(polygon) # no brim + result_areas[extruder_id].append(polygon_disallowed_border) # Don't perform the offset on these. + result_areas_no_brim[extruder_id].append(polygon) # No brim # Add prime tower location as disallowed area. - if len(used_extruders) > 1: #No prime tower in single-extrusion. - - if len([x for x in used_extruders if x.isEnabled == True]) > 1: #No prime tower if only one extruder is enabled - prime_tower_collision = False - prime_tower_areas = self._computeDisallowedAreasPrinted(used_extruders) - for extruder_id in prime_tower_areas: - for i_area, prime_tower_area in enumerate(prime_tower_areas[extruder_id]): - for area in result_areas[extruder_id]: - if prime_tower_area.intersectsPolygon(area) is not None: - prime_tower_collision = True - break - if prime_tower_collision: #Already found a collision. + if len([x for x in used_extruders if x.isEnabled]) > 1: # No prime tower if only one extruder is enabled + prime_tower_collision = False + prime_tower_areas = self._computeDisallowedAreasPrinted(used_extruders) + for extruder_id in prime_tower_areas: + for area_index, prime_tower_area in enumerate(prime_tower_areas[extruder_id]): + for area in result_areas[extruder_id]: + if prime_tower_area.intersectsPolygon(area) is not None: + prime_tower_collision = True break - if (ExtruderManager.getInstance().getResolveOrValue("prime_tower_brim_enable") and - ExtruderManager.getInstance().getResolveOrValue("adhesion_type") != "raft"): - prime_tower_areas[extruder_id][i_area] = prime_tower_area.getMinkowskiHull( - Polygon.approximatedCircle(disallowed_border_size)) - if not prime_tower_collision: - result_areas[extruder_id].extend(prime_tower_areas[extruder_id]) - result_areas_no_brim[extruder_id].extend(prime_tower_areas[extruder_id]) - else: - self._error_areas.extend(prime_tower_areas[extruder_id]) + if prime_tower_collision: # Already found a collision. + break + if self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and self._global_container_stack.getProperty("adhesion_type", "value") != "raft": + prime_tower_areas[extruder_id][area_index] = prime_tower_area.getMinkowskiHull(Polygon.approximatedCircle(disallowed_border_size)) + if not prime_tower_collision: + result_areas[extruder_id].extend(prime_tower_areas[extruder_id]) + result_areas_no_brim[extruder_id].extend(prime_tower_areas[extruder_id]) + else: + self._error_areas.extend(prime_tower_areas[extruder_id]) self._has_errors = len(self._error_areas) > 0 @@ -775,11 +784,14 @@ class BuildVolume(SceneNode): # where that extruder may not print. def _computeDisallowedAreasPrinted(self, used_extruders): result = {} + adhesion_extruder = None #type: ExtruderStack for extruder in used_extruders: + if int(extruder.getProperty("extruder_nr", "value")) == int(self._global_container_stack.getProperty("adhesion_extruder_nr", "value")): + adhesion_extruder = extruder result[extruder.getId()] = [] - #Currently, the only normally printed object is the prime tower. - if ExtruderManager.getInstance().getResolveOrValue("prime_tower_enable"): + # Currently, the only normally printed object is the prime tower. + if self._global_container_stack.getProperty("prime_tower_enable", "value"): prime_tower_size = self._global_container_stack.getProperty("prime_tower_size", "value") machine_width = self._global_container_stack.getProperty("machine_width", "value") machine_depth = self._global_container_stack.getProperty("machine_depth", "value") @@ -789,27 +801,19 @@ class BuildVolume(SceneNode): prime_tower_x = prime_tower_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left. prime_tower_y = prime_tower_y + machine_depth / 2 - if (ExtruderManager.getInstance().getResolveOrValue("prime_tower_brim_enable") and - ExtruderManager.getInstance().getResolveOrValue("adhesion_type") != "raft"): + if adhesion_extruder is not None and self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and self._global_container_stack.getProperty("adhesion_type", "value") != "raft": brim_size = ( - extruder.getProperty("brim_line_count", "value") * - extruder.getProperty("skirt_brim_line_width", "value") / 100.0 * - extruder.getProperty("initial_layer_line_width_factor", "value") + adhesion_extruder.getProperty("brim_line_count", "value") * + adhesion_extruder.getProperty("skirt_brim_line_width", "value") / 100.0 * + adhesion_extruder.getProperty("initial_layer_line_width_factor", "value") ) prime_tower_x -= brim_size prime_tower_y += brim_size - if self._global_container_stack.getProperty("prime_tower_circular", "value"): - radius = prime_tower_size / 2 - prime_tower_area = Polygon.approximatedCircle(radius) - prime_tower_area = prime_tower_area.translate(prime_tower_x - radius, prime_tower_y - radius) - else: - prime_tower_area = Polygon([ - [prime_tower_x - prime_tower_size, prime_tower_y - prime_tower_size], - [prime_tower_x, prime_tower_y - prime_tower_size], - [prime_tower_x, prime_tower_y], - [prime_tower_x - prime_tower_size, prime_tower_y], - ]) + radius = prime_tower_size / 2 + prime_tower_area = Polygon.approximatedCircle(radius) + prime_tower_area = prime_tower_area.translate(prime_tower_x - radius, prime_tower_y - radius) + prime_tower_area = prime_tower_area.getMinkowskiHull(Polygon.approximatedCircle(0)) for extruder in used_extruders: result[extruder.getId()].append(prime_tower_area) #The prime tower location is the same for each extruder, regardless of offset. @@ -827,9 +831,10 @@ class BuildVolume(SceneNode): # \param used_extruders The extruder stacks to generate disallowed areas # for. # \return A dictionary with for each used extruder ID the prime areas. - def _computeDisallowedAreasPrimeBlob(self, border_size, used_extruders): - result = {} - + def _computeDisallowedAreasPrimeBlob(self, border_size: float, used_extruders: List["ExtruderStack"]) -> Dict[str, List[Polygon]]: + result = {} # type: Dict[str, List[Polygon]] + if not self._global_container_stack: + return result machine_width = self._global_container_stack.getProperty("machine_width", "value") machine_depth = self._global_container_stack.getProperty("machine_depth", "value") for extruder in used_extruders: @@ -837,13 +842,13 @@ class BuildVolume(SceneNode): prime_x = extruder.getProperty("extruder_prime_pos_x", "value") prime_y = -extruder.getProperty("extruder_prime_pos_y", "value") - #Ignore extruder prime position if it is not set or if blob is disabled + # Ignore extruder prime position if it is not set or if blob is disabled if (prime_x == 0 and prime_y == 0) or not prime_blob_enabled: result[extruder.getId()] = [] continue if not self._global_container_stack.getProperty("machine_center_is_zero", "value"): - prime_x = prime_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left. + prime_x = prime_x - machine_width / 2 # Offset by half machine_width and _depth to put the origin in the front-left. prime_y = prime_y + machine_depth / 2 prime_polygon = Polygon.approximatedCircle(PRIME_CLEARANCE) @@ -866,9 +871,12 @@ class BuildVolume(SceneNode): # for. # \return A dictionary with for each used extruder ID the disallowed areas # where that extruder may not print. - def _computeDisallowedAreasStatic(self, border_size, used_extruders): - #Convert disallowed areas to polygons and dilate them. + def _computeDisallowedAreasStatic(self, border_size:float, used_extruders: List["ExtruderStack"]) -> Dict[str, List[Polygon]]: + # Convert disallowed areas to polygons and dilate them. machine_disallowed_polygons = [] + if self._global_container_stack is None: + return {} + for area in self._global_container_stack.getProperty("machine_disallowed_areas", "value"): polygon = Polygon(numpy.array(area, numpy.float32)) polygon = polygon.getMinkowskiHull(Polygon.approximatedCircle(border_size)) @@ -879,7 +887,7 @@ class BuildVolume(SceneNode): nozzle_offsetting_for_disallowed_areas = self._global_container_stack.getMetaDataEntry( "nozzle_offsetting_for_disallowed_areas", True) - result = {} + result = {} # type: Dict[str, List[Polygon]] for extruder in used_extruders: extruder_id = extruder.getId() offset_x = extruder.getProperty("machine_nozzle_offset_x", "value") @@ -888,13 +896,13 @@ class BuildVolume(SceneNode): offset_y = extruder.getProperty("machine_nozzle_offset_y", "value") if offset_y is None: offset_y = 0 - offset_y = -offset_y #Y direction of g-code is the inverse of Y direction of Cura's scene space. + offset_y = -offset_y # Y direction of g-code is the inverse of Y direction of Cura's scene space. result[extruder_id] = [] for polygon in machine_disallowed_polygons: - result[extruder_id].append(polygon.translate(offset_x, offset_y)) #Compensate for the nozzle offset of this extruder. + result[extruder_id].append(polygon.translate(offset_x, offset_y)) # Compensate for the nozzle offset of this extruder. - #Add the border around the edge of the build volume. + # Add the border around the edge of the build volume. left_unreachable_border = 0 right_unreachable_border = 0 top_unreachable_border = 0 @@ -902,7 +910,8 @@ class BuildVolume(SceneNode): # Only do nozzle offsetting if needed if nozzle_offsetting_for_disallowed_areas: - #The build volume is defined as the union of the area that all extruders can reach, so we need to know the relative offset to all extruders. + # The build volume is defined as the union of the area that all extruders can reach, so we need to know + # the relative offset to all extruders. for other_extruder in ExtruderManager.getInstance().getActiveExtruderStacks(): other_offset_x = other_extruder.getProperty("machine_nozzle_offset_x", "value") if other_offset_x is None: @@ -986,8 +995,8 @@ class BuildVolume(SceneNode): [ half_machine_width - border_size, 0] ], numpy.float32))) result[extruder_id].append(Polygon(numpy.array([ - [ half_machine_width,-half_machine_depth], - [-half_machine_width,-half_machine_depth], + [ half_machine_width, -half_machine_depth], + [-half_machine_width, -half_machine_depth], [ 0, -half_machine_depth + border_size] ], numpy.float32))) @@ -999,48 +1008,24 @@ class BuildVolume(SceneNode): # stack. # # \return A sequence of setting values, one for each extruder. - def _getSettingFromAllExtruders(self, setting_key): + def _getSettingFromAllExtruders(self, setting_key: str) -> List[Any]: all_values = ExtruderManager.getInstance().getAllExtruderSettings(setting_key, "value") all_types = ExtruderManager.getInstance().getAllExtruderSettings(setting_key, "type") - for i in range(len(all_values)): - if not all_values[i] and (all_types[i] == "int" or all_types[i] == "float"): + for i, (setting_value, setting_type) in enumerate(zip(all_values, all_types)): + if not setting_value and (setting_type == "int" or setting_type == "float"): all_values[i] = 0 return all_values - ## Calculate the disallowed radius around the edge. - # - # This disallowed radius is to allow for space around the models that is - # not part of the collision radius, such as bed adhesion (skirt/brim/raft) - # and travel avoid distance. - def getEdgeDisallowedSize(self): - if not self._global_container_stack or not self._global_container_stack.extruders: - return 0 + def _calculateBedAdhesionSize(self, used_extruders): + if self._global_container_stack is None: + return container_stack = self._global_container_stack - used_extruders = ExtruderManager.getInstance().getUsedExtruderStacks() - - # If we are printing one at a time, we need to add the bed adhesion size to the disallowed areas of the objects - if container_stack.getProperty("print_sequence", "value") == "one_at_a_time": - return 0.1 # Return a very small value, so we do draw disallowed area's near the edges. - adhesion_type = container_stack.getProperty("adhesion_type", "value") skirt_brim_line_width = self._global_container_stack.getProperty("skirt_brim_line_width", "value") initial_layer_line_width_factor = self._global_container_stack.getProperty("initial_layer_line_width_factor", "value") - if adhesion_type == "skirt": - skirt_distance = self._global_container_stack.getProperty("skirt_gap", "value") - skirt_line_count = self._global_container_stack.getProperty("skirt_line_count", "value") - - bed_adhesion_size = skirt_distance + (skirt_brim_line_width * skirt_line_count) * initial_layer_line_width_factor / 100.0 - - for extruder_stack in used_extruders: - bed_adhesion_size += extruder_stack.getProperty("skirt_brim_line_width", "value") * extruder_stack.getProperty("initial_layer_line_width_factor", "value") / 100.0 - - # We don't create an additional line for the extruder we're printing the skirt with. - bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0 - - elif (adhesion_type == "brim" or - (self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and - self._global_container_stack.getProperty("adhesion_type", "value") != "raft")): + # Use brim width if brim is enabled OR the prime tower has a brim. + if adhesion_type == "brim" or (self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and adhesion_type != "raft"): brim_line_count = self._global_container_stack.getProperty("brim_line_count", "value") bed_adhesion_size = skirt_brim_line_width * brim_line_count * initial_layer_line_width_factor / 100.0 @@ -1049,13 +1034,22 @@ class BuildVolume(SceneNode): # We don't create an additional line for the extruder we're printing the brim with. bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0 + elif adhesion_type == "skirt": # No brim? Also not on prime tower? Then use whatever the adhesion type is saying: Skirt, raft or none. + skirt_distance = self._global_container_stack.getProperty("skirt_gap", "value") + skirt_line_count = self._global_container_stack.getProperty("skirt_line_count", "value") + bed_adhesion_size = skirt_distance + ( + skirt_brim_line_width * skirt_line_count) * initial_layer_line_width_factor / 100.0 + + for extruder_stack in used_extruders: + bed_adhesion_size += extruder_stack.getProperty("skirt_brim_line_width", "value") * extruder_stack.getProperty("initial_layer_line_width_factor", "value") / 100.0 + + # We don't create an additional line for the extruder we're printing the skirt with. + bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0 elif adhesion_type == "raft": bed_adhesion_size = self._global_container_stack.getProperty("raft_margin", "value") - elif adhesion_type == "none": bed_adhesion_size = 0 - else: raise Exception("Unknown bed adhesion type. Did you forget to update the build volume calculations for your new bed adhesion type?") @@ -1064,26 +1058,56 @@ class BuildVolume(SceneNode): self._global_container_stack.getProperty("machine_depth", "value") ) bed_adhesion_size = min(bed_adhesion_size, max_length_available) + return bed_adhesion_size + def _calculateFarthestShieldDistance(self, container_stack): + farthest_shield_distance = 0 + if container_stack.getProperty("draft_shield_enabled", "value"): + farthest_shield_distance = max(farthest_shield_distance, container_stack.getProperty("draft_shield_dist", "value")) + if container_stack.getProperty("ooze_shield_enabled", "value"): + farthest_shield_distance = max(farthest_shield_distance,container_stack.getProperty("ooze_shield_dist", "value")) + return farthest_shield_distance + + def _calculateSupportExpansion(self, container_stack): support_expansion = 0 support_enabled = self._global_container_stack.getProperty("support_enable", "value") support_offset = self._global_container_stack.getProperty("support_offset", "value") if support_enabled and support_offset: support_expansion += support_offset + return support_expansion - farthest_shield_distance = 0 - if container_stack.getProperty("draft_shield_enabled", "value"): - farthest_shield_distance = max(farthest_shield_distance, container_stack.getProperty("draft_shield_dist", "value")) - if container_stack.getProperty("ooze_shield_enabled", "value"): - farthest_shield_distance = max(farthest_shield_distance, container_stack.getProperty("ooze_shield_dist", "value")) - + def _calculateMoveFromWallRadius(self, used_extruders): move_from_wall_radius = 0 # Moves that start from outer wall. - move_from_wall_radius = max(move_from_wall_radius, max(self._getSettingFromAllExtruders("infill_wipe_dist"))) - avoid_enabled_per_extruder = [stack.getProperty("travel_avoid_other_parts","value") for stack in used_extruders] + all_values = [move_from_wall_radius] + all_values.extend(self._getSettingFromAllExtruders("infill_wipe_dist")) + move_from_wall_radius = max(all_values) + avoid_enabled_per_extruder = [stack.getProperty("travel_avoid_other_parts", "value") for stack in used_extruders] travel_avoid_distance_per_extruder = [stack.getProperty("travel_avoid_distance", "value") for stack in used_extruders] - for avoid_other_parts_enabled, avoid_distance in zip(avoid_enabled_per_extruder, travel_avoid_distance_per_extruder): #For each extruder (or just global). + for avoid_other_parts_enabled, avoid_distance in zip(avoid_enabled_per_extruder, travel_avoid_distance_per_extruder): # For each extruder (or just global). if avoid_other_parts_enabled: move_from_wall_radius = max(move_from_wall_radius, avoid_distance) + return move_from_wall_radius + + ## Calculate the disallowed radius around the edge. + # + # This disallowed radius is to allow for space around the models that is + # not part of the collision radius, such as bed adhesion (skirt/brim/raft) + # and travel avoid distance. + def getEdgeDisallowedSize(self): + if not self._global_container_stack or not self._global_container_stack.extruderList: + return 0 + + container_stack = self._global_container_stack + used_extruders = ExtruderManager.getInstance().getUsedExtruderStacks() + + # If we are printing one at a time, we need to add the bed adhesion size to the disallowed areas of the objects + if container_stack.getProperty("print_sequence", "value") == "one_at_a_time": + return 0.1 + + bed_adhesion_size = self._calculateBedAdhesionSize(used_extruders) + support_expansion = self._calculateSupportExpansion(self._global_container_stack) + farthest_shield_distance = self._calculateFarthestShieldDistance(self._global_container_stack) + move_from_wall_radius = self._calculateMoveFromWallRadius(used_extruders) # Now combine our different pieces of data to get the final border size. # Support expansion is added to the bed adhesion, since the bed adhesion goes around support. @@ -1099,8 +1123,9 @@ class BuildVolume(SceneNode): _raft_settings = ["adhesion_type", "raft_base_thickness", "raft_interface_thickness", "raft_surface_layers", "raft_surface_thickness", "raft_airgap", "layer_0_z_overlap"] _extra_z_settings = ["retraction_hop_enabled", "retraction_hop"] _prime_settings = ["extruder_prime_pos_x", "extruder_prime_pos_y", "extruder_prime_pos_z", "prime_blob_enable"] - _tower_settings = ["prime_tower_enable", "prime_tower_circular", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable"] + _tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable"] _ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"] _distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts", "travel_avoid_supports"] _extruder_settings = ["support_enable", "support_bottom_enable", "support_roof_enable", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "brim_line_count", "adhesion_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used. _limit_to_extruder_settings = ["wall_extruder_nr", "wall_0_extruder_nr", "wall_x_extruder_nr", "top_bottom_extruder_nr", "infill_extruder_nr", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "adhesion_extruder_nr"] + _disallowed_area_settings = _skirt_settings + _prime_settings + _tower_settings + _ooze_shield_settings + _distance_settings + _extruder_settings diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index d43743bc37..1ec00787d7 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -12,9 +12,10 @@ import json import ssl import urllib.request import urllib.error -import shutil -from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, Qt, QUrl +import certifi + +from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QUrl from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit, QGroupBox, QCheckBox, QPushButton from PyQt5.QtGui import QDesktopServices @@ -22,9 +23,10 @@ from UM.Application import Application from UM.Logger import Logger from UM.View.GL.OpenGL import OpenGL from UM.i18n import i18nCatalog -from UM.Platform import Platform from UM.Resources import Resources +from cura import ApplicationMetadata + catalog = i18nCatalog("cura") MYPY = False @@ -181,6 +183,7 @@ class CrashHandler: self.cura_version = catalog.i18nc("@label unknown version of Cura", "Unknown") crash_info = "" + catalog.i18nc("@label Cura version number", "Cura version") + ": " + str(self.cura_version) + "
" + crash_info += "" + catalog.i18nc("@label Cura build type", "Cura build type") + ": " + str(ApplicationMetadata.CuraBuildType) + "
" crash_info += "" + catalog.i18nc("@label Type of platform", "Platform") + ": " + str(platform.platform()) + "
" crash_info += "" + catalog.i18nc("@label", "Qt version") + ": " + str(QT_VERSION_STR) + "
" crash_info += "" + catalog.i18nc("@label", "PyQt version") + ": " + str(PYQT_VERSION_STR) + "
" @@ -191,6 +194,7 @@ class CrashHandler: group.setLayout(layout) self.data["cura_version"] = self.cura_version + self.data["cura_build_type"] = ApplicationMetadata.CuraBuildType self.data["os"] = {"type": platform.system(), "version": platform.version()} self.data["qt_version"] = QT_VERSION_STR self.data["pyqt_version"] = PYQT_VERSION_STR @@ -319,7 +323,8 @@ class CrashHandler: def _userDescriptionWidget(self): group = QGroupBox() - group.setTitle(catalog.i18nc("@title:groupbox", "User description")) + group.setTitle(catalog.i18nc("@title:groupbox", "User description" + + " (Note: Developers may not speak your language, please use English if possible)")) layout = QVBoxLayout() # When sending the report, the user comments will be collected @@ -351,11 +356,13 @@ class CrashHandler: # Convert data to bytes binary_data = json.dumps(self.data).encode("utf-8") + # CURA-6698 Create an SSL context and use certifi CA certificates for verification. + context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLSv1_2) + context.load_verify_locations(cafile = certifi.where()) # Submit data - kwoptions = {"data": binary_data, "timeout": 5} - - if Platform.isOSX(): - kwoptions["context"] = ssl._create_unverified_context() + kwoptions = {"data": binary_data, + "timeout": 5, + "context": context} Logger.log("i", "Sending crash report info to [%s]...", self.crash_url) if not self.has_started: diff --git a/cura/CuraActions.py b/cura/CuraActions.py index 91e0966fed..b92abbe706 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -3,15 +3,17 @@ from PyQt5.QtCore import QObject, QUrl from PyQt5.QtGui import QDesktopServices -from typing import List, TYPE_CHECKING, cast +from typing import List, Optional, cast from UM.Event import CallFunctionEvent from UM.FlameProfiler import pyqtSlot +from UM.Math.Quaternion import Quaternion from UM.Math.Vector import Vector from UM.Scene.Selection import Selection from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation +from UM.Operations.RotateOperation import RotateOperation from UM.Operations.TranslateOperation import TranslateOperation import cura.CuraApplication @@ -23,9 +25,8 @@ from cura.Settings.ExtruderManager import ExtruderManager from cura.Operations.SetBuildPlateNumberOperation import SetBuildPlateNumberOperation from UM.Logger import Logger +from UM.Scene.SceneNode import SceneNode -if TYPE_CHECKING: - from UM.Scene.SceneNode import SceneNode class CuraActions(QObject): def __init__(self, parent: QObject = None) -> None: diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 4d3d2434ff..ef5f987b85 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -13,119 +13,130 @@ from PyQt5.QtGui import QColor, QIcon from PyQt5.QtWidgets import QMessageBox from PyQt5.QtQml import qmlRegisterUncreatableType, qmlRegisterSingletonType, qmlRegisterType +from UM.i18n import i18nCatalog from UM.Application import Application +from UM.Decorators import override, deprecated +from UM.FlameProfiler import pyqtSlot +from UM.Logger import Logger +from UM.Message import Message +from UM.Platform import Platform from UM.PluginError import PluginNotFoundError -from UM.Scene.SceneNode import SceneNode -from UM.Scene.Camera import Camera -from UM.Math.Vector import Vector -from UM.Math.Quaternion import Quaternion +from UM.Resources import Resources +from UM.Preferences import Preferences +from UM.Qt.QtApplication import QtApplication # The class we're inheriting from. +import UM.Util +from UM.View.SelectionPass import SelectionPass # For typing. + from UM.Math.AxisAlignedBox import AxisAlignedBox from UM.Math.Matrix import Matrix -from UM.Platform import Platform -from UM.Resources import Resources -from UM.Scene.ToolHandle import ToolHandle -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Math.Quaternion import Quaternion +from UM.Math.Vector import Vector + from UM.Mesh.ReadMeshJob import ReadMeshJob -from UM.Logger import Logger -from UM.Preferences import Preferences -from UM.Qt.QtApplication import QtApplication #The class we're inheriting from. -from UM.View.SelectionPass import SelectionPass #For typing. -from UM.Scene.Selection import Selection -from UM.Scene.GroupDecorator import GroupDecorator -from UM.Settings.ContainerStack import ContainerStack -from UM.Settings.InstanceContainer import InstanceContainer -from UM.Settings.Validator import Validator -from UM.Message import Message -from UM.i18n import i18nCatalog -from UM.Workspace.WorkspaceReader import WorkspaceReader from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.SetTransformOperation import SetTransformOperation +from UM.Scene.Camera import Camera +from UM.Scene.GroupDecorator import GroupDecorator +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Scene.SceneNode import SceneNode +from UM.Scene.Selection import Selection +from UM.Scene.ToolHandle import ToolHandle + +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.InstanceContainer import InstanceContainer +from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType +from UM.Settings.SettingFunction import SettingFunction +from UM.Settings.Validator import Validator + +from UM.Workspace.WorkspaceReader import WorkspaceReader + from cura.API import CuraAPI + from cura.Arranging.Arrange import Arrange from cura.Arranging.ArrangeObjectsJob import ArrangeObjectsJob from cura.Arranging.ArrangeObjectsAllBuildPlatesJob import ArrangeObjectsAllBuildPlatesJob from cura.Arranging.ShapeArray import ShapeArray -from cura.MultiplyObjectsJob import MultiplyObjectsJob -from cura.GlobalStacksModel import GlobalStacksModel -from cura.Scene.ConvexHullDecorator import ConvexHullDecorator + from cura.Operations.SetParentOperation import SetParentOperation -from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator + from cura.Scene.BlockSlicingDecorator import BlockSlicingDecorator from cura.Scene.BuildPlateDecorator import BuildPlateDecorator -from cura.Scene.CuraSceneNode import CuraSceneNode - +from cura.Scene.ConvexHullDecorator import ConvexHullDecorator from cura.Scene.CuraSceneController import CuraSceneController +from cura.Scene.CuraSceneNode import CuraSceneNode +from cura.Scene.GCodeListDecorator import GCodeListDecorator +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator +from cura.Scene import ZOffsetDecorator -from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.SettingFunction import SettingFunction -from cura.Settings.CuraContainerRegistry import CuraContainerRegistry -from cura.Settings.MachineNameValidator import MachineNameValidator - -from cura.Machines.Models.BuildPlateModel import BuildPlateModel -from cura.Machines.Models.NozzleModel import NozzleModel -from cura.Machines.Models.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel -from cura.Machines.Models.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel -from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel -from cura.Machines.Models.FavoriteMaterialsModel import FavoriteMaterialsModel -from cura.Machines.Models.GenericMaterialsModel import GenericMaterialsModel -from cura.Machines.Models.MaterialBrandsModel import MaterialBrandsModel -from cura.Machines.Models.QualityManagementModel import QualityManagementModel -from cura.Machines.Models.QualitySettingsModel import QualitySettingsModel -from cura.Machines.Models.MachineManagementModel import MachineManagementModel - -from cura.Machines.Models.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel - +from cura.Machines.ContainerTree import ContainerTree from cura.Machines.MachineErrorChecker import MachineErrorChecker +from cura.Machines.Models.BuildPlateModel import BuildPlateModel +from cura.Machines.Models.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel +from cura.Machines.Models.DiscoveredPrintersModel import DiscoveredPrintersModel +from cura.Machines.Models.ExtrudersModel import ExtrudersModel +from cura.Machines.Models.FavoriteMaterialsModel import FavoriteMaterialsModel +from cura.Machines.Models.FirstStartMachineActionsModel import FirstStartMachineActionsModel +from cura.Machines.Models.GenericMaterialsModel import GenericMaterialsModel +from cura.Machines.Models.GlobalStacksModel import GlobalStacksModel +from cura.Machines.Models.MaterialBrandsModel import MaterialBrandsModel +from cura.Machines.Models.MaterialManagementModel import MaterialManagementModel +from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel +from cura.Machines.Models.NozzleModel import NozzleModel +from cura.Machines.Models.QualityManagementModel import QualityManagementModel +from cura.Machines.Models.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel +from cura.Machines.Models.QualitySettingsModel import QualitySettingsModel +from cura.Machines.Models.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel +from cura.Machines.Models.UserChangesModel import UserChangesModel +from cura.Machines.Models.IntentModel import IntentModel +from cura.Machines.Models.IntentCategoryModel import IntentCategoryModel + +from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice +from cura.PrinterOutput.NetworkMJPGImage import NetworkMJPGImage + +import cura.Settings.cura_empty_instance_containers +from cura.Settings.ContainerManager import ContainerManager +from cura.Settings.CuraContainerRegistry import CuraContainerRegistry +from cura.Settings.CuraFormulaFunctions import CuraFormulaFunctions +from cura.Settings.ExtruderManager import ExtruderManager +from cura.Settings.ExtruderStack import ExtruderStack +from cura.Settings.MachineManager import MachineManager +from cura.Settings.MachineNameValidator import MachineNameValidator +from cura.Settings.IntentManager import IntentManager +from cura.Settings.MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler from cura.Settings.SettingInheritanceManager import SettingInheritanceManager +from cura.Settings.SidebarCustomMenuItemsModel import SidebarCustomMenuItemsModel from cura.Settings.SimpleModeSettingsManager import SimpleModeSettingsManager -from cura.Machines.VariantManager import VariantManager +from cura.TaskManagement.OnExitCallbackManager import OnExitCallbackManager + +from cura.UI import CuraSplashScreen, MachineActionManager, PrintInformation +from cura.UI.MachineSettingsManager import MachineSettingsManager +from cura.UI.ObjectsModel import ObjectsModel +from cura.UI.TextManager import TextManager +from cura.UI.AddPrinterPagesModel import AddPrinterPagesModel +from cura.UI.RecommendedMode import RecommendedMode +from cura.UI.WelcomePagesModel import WelcomePagesModel +from cura.UI.WhatsNewPagesModel import WhatsNewPagesModel + +from cura.Utils.NetworkingUtil import NetworkingUtil from .SingleInstance import SingleInstance from .AutoSave import AutoSave from . import PlatformPhysics from . import BuildVolume from . import CameraAnimation -from . import PrintInformation from . import CuraActions -from cura.Scene import ZOffsetDecorator -from . import CuraSplashScreen from . import PrintJobPreviewImageProvider -from . import MachineActionManager - -from cura.TaskManagement.OnExitCallbackManager import OnExitCallbackManager - -from cura.Settings.MachineManager import MachineManager -from cura.Settings.ExtruderManager import ExtruderManager -from cura.Settings.UserChangesModel import UserChangesModel -from cura.Settings.ExtrudersModel import ExtrudersModel -from cura.Settings.MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler -from cura.Settings.ContainerManager import ContainerManager -from cura.Settings.SidebarCustomMenuItemsModel import SidebarCustomMenuItemsModel -import cura.Settings.cura_empty_instance_containers -from cura.Settings.CuraFormulaFunctions import CuraFormulaFunctions - -from cura.ObjectsModel import ObjectsModel - -from cura.PrinterOutputDevice import PrinterOutputDevice -from cura.PrinterOutput.NetworkMJPGImage import NetworkMJPGImage from cura import ApplicationMetadata, UltimakerCloudAuthentication - -from UM.FlameProfiler import pyqtSlot -from UM.Decorators import override +from cura.Settings.GlobalStack import GlobalStack if TYPE_CHECKING: - from cura.Machines.MaterialManager import MaterialManager - from cura.Machines.QualityManager import QualityManager from UM.Settings.EmptyInstanceContainer import EmptyInstanceContainer - from cura.Settings.GlobalStack import GlobalStack - numpy.seterr(all = "ignore") @@ -134,7 +145,7 @@ class CuraApplication(QtApplication): # SettingVersion represents the set of settings available in the machine/extruder definitions. # You need to make sure that this version number needs to be increased if there is any non-backwards-compatible # changes of the settings. - SettingVersion = 7 + SettingVersion = 11 Created = False @@ -150,6 +161,7 @@ class CuraApplication(QtApplication): ExtruderStack = Resources.UserType + 9 DefinitionChangesContainer = Resources.UserType + 10 SettingVisibilityPreset = Resources.UserType + 11 + IntentInstanceContainer = Resources.UserType + 12 Q_ENUMS(ResourceTypes) @@ -186,13 +198,12 @@ class CuraApplication(QtApplication): self.empty_container = None # type: EmptyInstanceContainer self.empty_definition_changes_container = None # type: EmptyInstanceContainer self.empty_variant_container = None # type: EmptyInstanceContainer + self.empty_intent_container = None # type: EmptyInstanceContainer self.empty_material_container = None # type: EmptyInstanceContainer self.empty_quality_container = None # type: EmptyInstanceContainer self.empty_quality_changes_container = None # type: EmptyInstanceContainer - self._variant_manager = None self._material_manager = None - self._quality_manager = None self._machine_manager = None self._extruder_manager = None self._container_manager = None @@ -208,6 +219,17 @@ class CuraApplication(QtApplication): self._cura_scene_controller = None self._machine_error_checker = None + self._machine_settings_manager = MachineSettingsManager(self, parent = self) + self._material_management_model = None + self._quality_management_model = None + + self._discovered_printer_model = DiscoveredPrintersModel(self, parent = self) + self._first_start_machine_actions_model = None + self._welcome_pages_model = WelcomePagesModel(self, parent = self) + self._add_printer_pages_model = AddPrinterPagesModel(self, parent = self) + self._whats_new_pages_model = WhatsNewPagesModel(self, parent = self) + self._text_manager = TextManager(parent = self) + self._quality_profile_drop_down_menu_model = None self._custom_quality_profile_drop_down_menu_model = None self._cura_API = CuraAPI(self) @@ -237,15 +259,12 @@ class CuraApplication(QtApplication): self._update_platform_activity_timer = None - self._need_to_show_user_agreement = True - self._sidebar_custom_menu_items = [] # type: list # Keeps list of custom menu items for the side bar self._plugins_loaded = False # Backups - self._auto_save = None - self._save_data_enabled = True + self._auto_save = None # type: Optional[AutoSave] from cura.Settings.CuraContainerRegistry import CuraContainerRegistry self._container_registry_class = CuraContainerRegistry @@ -329,7 +348,7 @@ class CuraApplication(QtApplication): # Adds expected directory names and search paths for Resources. def __addExpectedResourceDirsAndSearchPaths(self): # this list of dir names will be used by UM to detect an old cura directory - for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "quality_changes", "user", "variants"]: + for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "quality_changes", "user", "variants", "intent"]: Resources.addExpectedDirNameInData(dir_name) Resources.addSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources")) @@ -387,6 +406,7 @@ class CuraApplication(QtApplication): Resources.addStorageType(self.ResourceTypes.MachineStack, "machine_instances") Resources.addStorageType(self.ResourceTypes.DefinitionChangesContainer, "definition_changes") Resources.addStorageType(self.ResourceTypes.SettingVisibilityPreset, "setting_visibility") + Resources.addStorageType(self.ResourceTypes.IntentInstanceContainer, "intent") self._container_registry.addResourceType(self.ResourceTypes.QualityInstanceContainer, "quality") self._container_registry.addResourceType(self.ResourceTypes.QualityChangesInstanceContainer, "quality_changes") @@ -396,6 +416,7 @@ class CuraApplication(QtApplication): self._container_registry.addResourceType(self.ResourceTypes.ExtruderStack, "extruder_train") self._container_registry.addResourceType(self.ResourceTypes.MachineStack, "machine") self._container_registry.addResourceType(self.ResourceTypes.DefinitionChangesContainer, "definition_changes") + self._container_registry.addResourceType(self.ResourceTypes.IntentInstanceContainer, "intent") Resources.addType(self.ResourceTypes.QmlFiles, "qml") Resources.addType(self.ResourceTypes.Firmware, "firmware") @@ -405,7 +426,7 @@ class CuraApplication(QtApplication): # Add empty variant, material and quality containers. # Since they are empty, they should never be serialized and instead just programmatically created. # We need them to simplify the switching between materials. - self.empty_container = cura.Settings.cura_empty_instance_containers.empty_container # type: EmptyInstanceContainer + self.empty_container = cura.Settings.cura_empty_instance_containers.empty_container self._container_registry.addContainer( cura.Settings.cura_empty_instance_containers.empty_definition_changes_container) @@ -414,6 +435,9 @@ class CuraApplication(QtApplication): self._container_registry.addContainer(cura.Settings.cura_empty_instance_containers.empty_variant_container) self.empty_variant_container = cura.Settings.cura_empty_instance_containers.empty_variant_container + self._container_registry.addContainer(cura.Settings.cura_empty_instance_containers.empty_intent_container) + self.empty_intent_container = cura.Settings.cura_empty_instance_containers.empty_intent_container + self._container_registry.addContainer(cura.Settings.cura_empty_instance_containers.empty_material_container) self.empty_material_container = cura.Settings.cura_empty_instance_containers.empty_material_container @@ -428,14 +452,15 @@ class CuraApplication(QtApplication): def __setLatestResouceVersionsForVersionUpgrade(self): self._version_upgrade_manager.setCurrentVersions( { - ("quality", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityInstanceContainer, "application/x-uranium-instancecontainer"), - ("quality_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityChangesInstanceContainer, "application/x-uranium-instancecontainer"), - ("machine_stack", ContainerStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.MachineStack, "application/x-cura-globalstack"), - ("extruder_train", ContainerStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.ExtruderStack, "application/x-cura-extruderstack"), - ("preferences", Preferences.Version * 1000000 + self.SettingVersion): (Resources.Preferences, "application/x-uranium-preferences"), - ("user", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.UserInstanceContainer, "application/x-uranium-instancecontainer"), - ("definition_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.DefinitionChangesContainer, "application/x-uranium-instancecontainer"), - ("variant", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.VariantInstanceContainer, "application/x-uranium-instancecontainer"), + ("quality", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityInstanceContainer, "application/x-uranium-instancecontainer"), + ("quality_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityChangesInstanceContainer, "application/x-uranium-instancecontainer"), + ("intent", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.IntentInstanceContainer, "application/x-uranium-instancecontainer"), + ("machine_stack", GlobalStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.MachineStack, "application/x-cura-globalstack"), + ("extruder_train", ExtruderStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.ExtruderStack, "application/x-cura-extruderstack"), + ("preferences", Preferences.Version * 1000000 + self.SettingVersion): (Resources.Preferences, "application/x-uranium-preferences"), + ("user", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.UserInstanceContainer, "application/x-uranium-instancecontainer"), + ("definition_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.DefinitionChangesContainer, "application/x-uranium-instancecontainer"), + ("variant", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.VariantInstanceContainer, "application/x-uranium-instancecontainer"), } ) @@ -450,7 +475,6 @@ class CuraApplication(QtApplication): # Misc.: "ConsoleLogger", #You want to be able to read the log if something goes wrong. "CuraEngineBackend", #Cura is useless without this one since you can't slice. - "UserAgreement", #Our lawyers want every user to see this at least once. "FileLogger", #You want to be able to read the log if something goes wrong. "XmlMaterialProfile", #Cura crashes without this one. "Toolbox", #This contains the interface to enable/disable plug-ins, so if you disable it you can't enable it back. @@ -488,10 +512,13 @@ class CuraApplication(QtApplication): self.showSplashMessage(self._i18n_catalog.i18nc("@info:progress", "Loading machines...")) + self._container_registry.allMetadataLoaded.connect(ContainerRegistry.getInstance) + with self._container_registry.lockFile(): self._container_registry.loadAllMetadata() - # set the setting version for Preferences + self.showSplashMessage(self._i18n_catalog.i18nc("@info:progress", "Setting up preferences...")) + # Set the setting version for Preferences preferences = self.getPreferences() preferences.addPreference("metadata/setting_version", 0) preferences.setValue("metadata/setting_version", self.SettingVersion) #Don't make it equal to the default so that the setting version always gets written to the file. @@ -509,8 +536,13 @@ class CuraApplication(QtApplication): preferences.addPreference("cura/choice_on_profile_override", "always_ask") preferences.addPreference("cura/choice_on_open_project", "always_ask") preferences.addPreference("cura/use_multi_build_plate", False) + preferences.addPreference("cura/show_list_of_objects", False) preferences.addPreference("view/settings_list_height", 400) preferences.addPreference("view/settings_visible", False) + preferences.addPreference("view/settings_xpos", 0) + preferences.addPreference("view/settings_ypos", 56) + preferences.addPreference("view/colorscheme_xpos", 0) + preferences.addPreference("view/colorscheme_ypos", 56) preferences.addPreference("cura/currency", "€") preferences.addPreference("cura/material_settings", "{}") @@ -522,7 +554,7 @@ class CuraApplication(QtApplication): preferences.addPreference("cura/expanded_brands", "") preferences.addPreference("cura/expanded_types", "") - self._need_to_show_user_agreement = not preferences.getValue("general/accepted_user_agreement") + preferences.addPreference("general/accepted_user_agreement", False) for key in [ "dialog_load_path", # dialog_save_path is in LocalFileOutputDevicePlugin @@ -545,13 +577,20 @@ class CuraApplication(QtApplication): @pyqtProperty(bool) def needToShowUserAgreement(self) -> bool: - return self._need_to_show_user_agreement + return not UM.Util.parseBool(self.getPreferences().getValue("general/accepted_user_agreement")) - def setNeedToShowUserAgreement(self, set_value = True) -> None: - self._need_to_show_user_agreement = set_value + @pyqtSlot(bool) + def setNeedToShowUserAgreement(self, set_value: bool = True) -> None: + self.getPreferences().setValue("general/accepted_user_agreement", str(not set_value)) + + @pyqtSlot(str, str) + def writeToLog(self, severity: str, message: str) -> None: + Logger.log(severity, message) # DO NOT call this function to close the application, use checkAndExitApplication() instead which will perform # pre-exit checks such as checking for in-progress USB printing, etc. + # Except for the 'Decline and close' in the 'User Agreement'-step in the Welcome-pages, that should be a hard exit. + @pyqtSlot() def closeApplication(self) -> None: Logger.log("i", "Close application") main_window = self.getMainWindow() @@ -604,9 +643,17 @@ class CuraApplication(QtApplication): ## A reusable dialogbox # - showMessageBox = pyqtSignal(str, str, str, str, int, int, arguments = ["title", "text", "informativeText", "detailedText", "buttons", "icon"]) + showMessageBox = pyqtSignal(str,str, str, str, int, int, + arguments = ["title", "text", "informativeText", "detailedText","buttons", "icon"]) - def messageBox(self, title, text, informativeText = "", detailedText = "", buttons = QMessageBox.Ok, icon = QMessageBox.NoIcon, callback = None, callback_arguments = []): + def messageBox(self, title, text, + informativeText = "", + detailedText = "", + buttons = QMessageBox.Ok, + icon = QMessageBox.NoIcon, + callback = None, + callback_arguments = [] + ): self._message_box_callback = callback self._message_box_callback_arguments = callback_arguments self.showMessageBox.emit(title, text, informativeText, detailedText, buttons, icon) @@ -632,14 +679,14 @@ class CuraApplication(QtApplication): def discardOrKeepProfileChangesClosed(self, option: str) -> None: global_stack = self.getGlobalContainerStack() if option == "discard": - for extruder in global_stack.extruders.values(): + for extruder in global_stack.extruderList: extruder.userChanges.clear() global_stack.userChanges.clear() # if the user decided to keep settings then the user settings should be re-calculated and validated for errors # before slicing. To ensure that slicer uses right settings values elif option == "keep": - for extruder in global_stack.extruders.values(): + for extruder in global_stack.extruderList: extruder.userChanges.update() global_stack.userChanges.update() @@ -649,13 +696,10 @@ class CuraApplication(QtApplication): self._message_box_callback(button, *self._message_box_callback_arguments) self._message_box_callback = None self._message_box_callback_arguments = [] - - def setSaveDataEnabled(self, enabled: bool) -> None: - self._save_data_enabled = enabled # Cura has multiple locations where instance containers need to be saved, so we need to handle this differently. def saveSettings(self): - if not self.started or not self._save_data_enabled: + if not self.started: # Do not do saving during application start or when data should not be saved on quit. return ContainerRegistry.getInstance().saveDirtyContainers() @@ -676,6 +720,8 @@ class CuraApplication(QtApplication): ## Handle loading of all plugin types (and the backend explicitly) # \sa PluginRegistry def _loadPlugins(self) -> None: + self._plugin_registry.setCheckIfTrusted(ApplicationMetadata.IsEnterpriseVersion) + self._plugin_registry.addType("profile_reader", self._addProfileReader) self._plugin_registry.addType("profile_writer", self._addProfileWriter) @@ -699,21 +745,6 @@ class CuraApplication(QtApplication): def run(self): super().run() - container_registry = self._container_registry - - Logger.log("i", "Initializing variant manager") - self._variant_manager = VariantManager(container_registry) - self._variant_manager.initialize() - - Logger.log("i", "Initializing material manager") - from cura.Machines.MaterialManager import MaterialManager - self._material_manager = MaterialManager(container_registry, parent = self) - self._material_manager.initialize() - - Logger.log("i", "Initializing quality manager") - from cura.Machines.QualityManager import QualityManager - self._quality_manager = QualityManager(self, parent = self) - self._quality_manager.initialize() Logger.log("i", "Initializing machine manager") self._machine_manager = MachineManager(self, parent = self) @@ -745,6 +776,11 @@ class CuraApplication(QtApplication): # Initialize Cura API self._cura_API.initialize() + self._output_device_manager.start() + self._welcome_pages_model.initialize() + self._add_printer_pages_model.initialize() + self._whats_new_pages_model.initialize() + # Detect in which mode to run and execute that mode if self._is_headless: self.runWithoutGUI() @@ -810,7 +846,6 @@ class CuraApplication(QtApplication): if diagonal < 1: #No printer added yet. Set a default camera distance for normal-sized printers. diagonal = 375 camera.setPosition(Vector(-80, 250, 700) * diagonal / 375) - camera.setPerspective(True) camera.lookAt(Vector(0, 0, 0)) controller.getScene().setActiveCamera("3d") @@ -839,10 +874,42 @@ class CuraApplication(QtApplication): # Hide the splash screen self.closeSplash() + @pyqtSlot(result = QObject) + def getDiscoveredPrintersModel(self, *args) -> "DiscoveredPrintersModel": + return self._discovered_printer_model + + @pyqtSlot(result = QObject) + def getFirstStartMachineActionsModel(self, *args) -> "FirstStartMachineActionsModel": + if self._first_start_machine_actions_model is None: + self._first_start_machine_actions_model = FirstStartMachineActionsModel(self, parent = self) + if self.started: + self._first_start_machine_actions_model.initialize() + return self._first_start_machine_actions_model + @pyqtSlot(result = QObject) def getSettingVisibilityPresetsModel(self, *args) -> SettingVisibilityPresetsModel: return self._setting_visibility_presets_model + @pyqtSlot(result = QObject) + def getWelcomePagesModel(self, *args) -> "WelcomePagesModel": + return self._welcome_pages_model + + @pyqtSlot(result = QObject) + def getAddPrinterPagesModel(self, *args) -> "AddPrinterPagesModel": + return self._add_printer_pages_model + + @pyqtSlot(result = QObject) + def getWhatsNewPagesModel(self, *args) -> "WhatsNewPagesModel": + return self._whats_new_pages_model + + @pyqtSlot(result = QObject) + def getMachineSettingsManager(self, *args) -> "MachineSettingsManager": + return self._machine_settings_manager + + @pyqtSlot(result = QObject) + def getTextManager(self, *args) -> "TextManager": + return self._text_manager + def getCuraFormulaFunctions(self, *args) -> "CuraFormulaFunctions": if self._cura_formula_functions is None: self._cura_formula_functions = CuraFormulaFunctions(self) @@ -861,20 +928,12 @@ class CuraApplication(QtApplication): self._extruder_manager = ExtruderManager() return self._extruder_manager - def getVariantManager(self, *args) -> VariantManager: - return self._variant_manager - - @pyqtSlot(result = QObject) - def getMaterialManager(self, *args) -> "MaterialManager": - return self._material_manager - - @pyqtSlot(result = QObject) - def getQualityManager(self, *args) -> "QualityManager": - return self._quality_manager + def getIntentManager(self, *args) -> IntentManager: + return IntentManager.getInstance() def getObjectsModel(self, *args): if self._object_manager is None: - self._object_manager = ObjectsModel.createObjectsModel() + self._object_manager = ObjectsModel(self) return self._object_manager @pyqtSlot(result = QObject) @@ -918,6 +977,18 @@ class CuraApplication(QtApplication): def getMachineActionManager(self, *args): return self._machine_action_manager + @pyqtSlot(result = QObject) + def getMaterialManagementModel(self) -> MaterialManagementModel: + if not self._material_management_model: + self._material_management_model = MaterialManagementModel(parent = self) + return self._material_management_model + + @pyqtSlot(result = QObject) + def getQualityManagementModel(self) -> QualityManagementModel: + if not self._quality_management_model: + self._quality_management_model = QualityManagementModel(parent = self) + return self._quality_management_model + def getSimpleModeSettingsManager(self, *args): if self._simple_mode_settings_manager is None: self._simple_mode_settings_manager = SimpleModeSettingsManager() @@ -933,7 +1004,7 @@ class CuraApplication(QtApplication): return super().event(event) - def getAutoSave(self): + def getAutoSave(self) -> Optional[AutoSave]: return self._auto_save ## Get print information (duration / material used) @@ -971,13 +1042,22 @@ class CuraApplication(QtApplication): qmlRegisterSingletonType(CuraSceneController, "Cura", 1, 0, "SceneController", self.getCuraSceneController) qmlRegisterSingletonType(ExtruderManager, "Cura", 1, 0, "ExtruderManager", self.getExtruderManager) qmlRegisterSingletonType(MachineManager, "Cura", 1, 0, "MachineManager", self.getMachineManager) + qmlRegisterSingletonType(IntentManager, "Cura", 1, 6, "IntentManager", self.getIntentManager) qmlRegisterSingletonType(SettingInheritanceManager, "Cura", 1, 0, "SettingInheritanceManager", self.getSettingInheritanceManager) qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 0, "SimpleModeSettingsManager", self.getSimpleModeSettingsManager) qmlRegisterSingletonType(MachineActionManager.MachineActionManager, "Cura", 1, 0, "MachineActionManager", self.getMachineActionManager) + qmlRegisterType(NetworkingUtil, "Cura", 1, 5, "NetworkingUtil") + + qmlRegisterType(WelcomePagesModel, "Cura", 1, 0, "WelcomePagesModel") + qmlRegisterType(WhatsNewPagesModel, "Cura", 1, 0, "WhatsNewPagesModel") + qmlRegisterType(AddPrinterPagesModel, "Cura", 1, 0, "AddPrinterPagesModel") + qmlRegisterType(TextManager, "Cura", 1, 0, "TextManager") + qmlRegisterType(RecommendedMode, "Cura", 1, 0, "RecommendedMode") + qmlRegisterType(NetworkMJPGImage, "Cura", 1, 0, "NetworkMJPGImage") - qmlRegisterSingletonType(ObjectsModel, "Cura", 1, 0, "ObjectsModel", self.getObjectsModel) + qmlRegisterType(ObjectsModel, "Cura", 1, 0, "ObjectsModel") qmlRegisterType(BuildPlateModel, "Cura", 1, 0, "BuildPlateModel") qmlRegisterType(MultiBuildPlateModel, "Cura", 1, 0, "MultiBuildPlateModel") qmlRegisterType(InstanceContainer, "Cura", 1, 0, "InstanceContainer") @@ -987,18 +1067,23 @@ class CuraApplication(QtApplication): qmlRegisterType(FavoriteMaterialsModel, "Cura", 1, 0, "FavoriteMaterialsModel") qmlRegisterType(GenericMaterialsModel, "Cura", 1, 0, "GenericMaterialsModel") qmlRegisterType(MaterialBrandsModel, "Cura", 1, 0, "MaterialBrandsModel") - qmlRegisterType(QualityManagementModel, "Cura", 1, 0, "QualityManagementModel") - qmlRegisterType(MachineManagementModel, "Cura", 1, 0, "MachineManagementModel") + qmlRegisterSingletonType(QualityManagementModel, "Cura", 1, 0, "QualityManagementModel", self.getQualityManagementModel) + qmlRegisterSingletonType(MaterialManagementModel, "Cura", 1, 5, "MaterialManagementModel", self.getMaterialManagementModel) + + qmlRegisterType(DiscoveredPrintersModel, "Cura", 1, 0, "DiscoveredPrintersModel") qmlRegisterSingletonType(QualityProfilesDropDownMenuModel, "Cura", 1, 0, "QualityProfilesDropDownMenuModel", self.getQualityProfilesDropDownMenuModel) qmlRegisterSingletonType(CustomQualityProfilesDropDownMenuModel, "Cura", 1, 0, "CustomQualityProfilesDropDownMenuModel", self.getCustomQualityProfilesDropDownMenuModel) qmlRegisterType(NozzleModel, "Cura", 1, 0, "NozzleModel") + qmlRegisterType(IntentModel, "Cura", 1, 6, "IntentModel") + qmlRegisterType(IntentCategoryModel, "Cura", 1, 6, "IntentCategoryModel") qmlRegisterType(MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler") qmlRegisterType(SettingVisibilityPresetsModel, "Cura", 1, 0, "SettingVisibilityPresetsModel") qmlRegisterType(QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel") + qmlRegisterType(FirstStartMachineActionsModel, "Cura", 1, 0, "FirstStartMachineActionsModel") qmlRegisterType(MachineNameValidator, "Cura", 1, 0, "MachineNameValidator") qmlRegisterType(UserChangesModel, "Cura", 1, 0, "UserChangesModel") qmlRegisterSingletonType(ContainerManager, "Cura", 1, 0, "ContainerManager", ContainerManager.getInstance) @@ -1055,7 +1140,6 @@ class CuraApplication(QtApplication): self._camera_animation.setTarget(Selection.getSelectedObject(0).getWorldPosition()) self._camera_animation.start() - requestAddPrinter = pyqtSignal() activityChanged = pyqtSignal() sceneBoundingBoxChanged = pyqtSignal() @@ -1197,7 +1281,7 @@ class CuraApplication(QtApplication): @pyqtSlot() def arrangeObjectsToAllBuildPlates(self) -> None: nodes_to_arrange = [] - for node in DepthFirstIterator(self.getController().getScene().getRoot()): # type: ignore + for node in DepthFirstIterator(self.getController().getScene().getRoot()): if not isinstance(node, SceneNode): continue @@ -1224,7 +1308,7 @@ class CuraApplication(QtApplication): def arrangeAll(self) -> None: nodes_to_arrange = [] active_build_plate = self.getMultiBuildPlateModel().activeBuildPlate - for node in DepthFirstIterator(self.getController().getScene().getRoot()): # type: ignore + for node in DepthFirstIterator(self.getController().getScene().getRoot()): if not isinstance(node, SceneNode): continue @@ -1262,7 +1346,13 @@ class CuraApplication(QtApplication): Logger.log("i", "Reloading all loaded mesh data.") nodes = [] has_merged_nodes = False - for node in DepthFirstIterator(self.getController().getScene().getRoot()): # type: ignore + gcode_filename = None # type: Optional[str] + for node in DepthFirstIterator(self.getController().getScene().getRoot()): + # Objects loaded from Gcode should also be included. + gcode_filename = node.callDecoration("getGcodeFileName") + if gcode_filename is not None: + break + if not isinstance(node, CuraSceneNode) or not node.getMeshData(): if node.getName() == "MergedMesh": has_merged_nodes = True @@ -1270,21 +1360,29 @@ class CuraApplication(QtApplication): nodes.append(node) + # We can open only one gcode file at the same time. If the current view has a gcode file open, just reopen it + # for reloading. + if gcode_filename: + self._openFile(gcode_filename) + if not nodes: return for node in nodes: - file_name = node.getMeshData().getFileName() - if file_name: - job = ReadMeshJob(file_name) - job._node = node # type: ignore - job.finished.connect(self._reloadMeshFinished) - if has_merged_nodes: - job.finished.connect(self.updateOriginOfMergedMeshes) + mesh_data = node.getMeshData() - job.start() - else: - Logger.log("w", "Unable to reload data because we don't have a filename.") + if mesh_data: + file_name = mesh_data.getFileName() + if file_name: + job = ReadMeshJob(file_name) + job._node = node # type: ignore + job.finished.connect(self._reloadMeshFinished) + if has_merged_nodes: + job.finished.connect(self.updateOriginOfMergedMeshes) + + job.start() + else: + Logger.log("w", "Unable to reload data because we don't have a filename.") @pyqtSlot("QStringList") def setExpandedCategories(self, categories: List[str]) -> None: @@ -1515,8 +1613,12 @@ class CuraApplication(QtApplication): openProjectFile = pyqtSignal(QUrl, arguments = ["project_file"]) # Emitted when a project file is about to open. - @pyqtSlot(QUrl, bool) - def readLocalFile(self, file, skip_project_file_check = False): + @pyqtSlot(QUrl, str) + @pyqtSlot(QUrl) + ## Open a local file + # \param project_mode How to handle project files. Either None(default): Follow user preference, "open_as_model" or + # "open_as_project". This parameter is only considered if the file is a project file. + def readLocalFile(self, file: QUrl, project_mode: Optional[str] = None): if not file.isValid(): return @@ -1527,10 +1629,24 @@ class CuraApplication(QtApplication): self.deleteAll() break - if not skip_project_file_check and self.checkIsValidProjectFile(file): + is_project_file = self.checkIsValidProjectFile(file) + + if project_mode is None: + project_mode = self.getPreferences().getValue("cura/choice_on_open_project") + + if is_project_file and project_mode == "open_as_project": + # open as project immediately without presenting a dialog + workspace_handler = self.getWorkspaceFileHandler() + workspace_handler.readLocalFile(file) + return + + if is_project_file and project_mode == "always_ask": + # present a dialog asking to open as project or import models self.callLater(self.openProjectFile.emit, file) return + # Either the file is a model file or we want to load only models from project. Continue to load models. + if self.getPreferences().getValue("cura/select_models_on_load"): Selection.clear() @@ -1591,7 +1707,7 @@ class CuraApplication(QtApplication): arranger = Arrange.create(x = machine_width, y = machine_depth, fixed_nodes = fixed_nodes) min_offset = 8 default_extruder_position = self.getMachineManager().defaultExtruderPosition - default_extruder_id = self._global_container_stack.extruders[default_extruder_position].getId() + default_extruder_id = self._global_container_stack.extruderList[int(default_extruder_position)].getId() select_models_on_load = self.getPreferences().getValue("cura/select_models_on_load") @@ -1685,7 +1801,7 @@ class CuraApplication(QtApplication): try: result = workspace_reader.preRead(file_path, show_dialog=False) return result == WorkspaceReader.PreReadResult.accepted - except Exception as e: + except Exception: Logger.logException("e", "Could not check file %s", file_url) return False @@ -1715,3 +1831,73 @@ class CuraApplication(QtApplication): def getSidebarCustomMenuItems(self) -> list: return self._sidebar_custom_menu_items + @pyqtSlot(result = bool) + def shouldShowWelcomeDialog(self) -> bool: + # Only show the complete flow if there is no printer yet. + return self._machine_manager.activeMachine is None + + @pyqtSlot(result = bool) + def shouldShowWhatsNewDialog(self) -> bool: + has_active_machine = self._machine_manager.activeMachine is not None + has_app_just_upgraded = self.hasJustUpdatedFromOldVersion() + + # Only show the what's new dialog if there's no machine and we have just upgraded + show_whatsnew_only = has_active_machine and has_app_just_upgraded + return show_whatsnew_only + + @pyqtSlot(result = int) + def appWidth(self) -> int: + main_window = QtApplication.getInstance().getMainWindow() + if main_window: + return main_window.width() + else: + return 0 + + @pyqtSlot(result = int) + def appHeight(self) -> int: + main_window = QtApplication.getInstance().getMainWindow() + if main_window: + return main_window.height() + else: + return 0 + + @pyqtSlot() + def deleteAll(self, only_selectable: bool = True) -> None: + super().deleteAll(only_selectable = only_selectable) + + # Also remove nodes with LayerData + self._removeNodesWithLayerData(only_selectable = only_selectable) + + def _removeNodesWithLayerData(self, only_selectable: bool = True) -> None: + Logger.log("i", "Clearing scene") + nodes = [] + for node in DepthFirstIterator(self.getController().getScene().getRoot()): + if not isinstance(node, SceneNode): + continue + if not node.isEnabled(): + continue + if (not node.getMeshData() and not node.callDecoration("getLayerData")) and not node.callDecoration("isGroup"): + continue # Node that doesnt have a mesh and is not a group. + if only_selectable and not node.isSelectable(): + continue # Only remove nodes that are selectable. + if not node.callDecoration("isSliceable") and not node.callDecoration("getLayerData") and not node.callDecoration("isGroup"): + continue # Grouped nodes don't need resetting as their parent (the group) is resetted) + nodes.append(node) + if nodes: + from UM.Operations.GroupedOperation import GroupedOperation + op = GroupedOperation() + + for node in nodes: + from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation + op.addOperation(RemoveSceneNodeOperation(node)) + + # Reset the print information + self.getController().getScene().sceneChanged.emit(node) + + op.push() + from UM.Scene.Selection import Selection + Selection.clear() + + @classmethod + def getInstance(cls, *args, **kwargs) -> "CuraApplication": + return cast(CuraApplication, super().getInstance(**kwargs)) diff --git a/cura/CuraVersion.py.in b/cura/CuraVersion.py.in index 1a500df248..4583e76f67 100644 --- a/cura/CuraVersion.py.in +++ b/cura/CuraVersion.py.in @@ -6,7 +6,6 @@ CuraAppDisplayName = "@CURA_APP_DISPLAY_NAME@" CuraVersion = "@CURA_VERSION@" CuraBuildType = "@CURA_BUILDTYPE@" CuraDebugMode = True if "@_cura_debugmode@" == "ON" else False -CuraSDKVersion = "@CURA_SDK_VERSION@" CuraCloudAPIRoot = "@CURA_CLOUD_API_ROOT@" CuraCloudAPIVersion = "@CURA_CLOUD_API_VERSION@" CuraCloudAccountAPIRoot = "@CURA_CLOUD_ACCOUNT_API_ROOT@" diff --git a/cura/CuraView.py b/cura/CuraView.py index 978c651b43..b358558dff 100644 --- a/cura/CuraView.py +++ b/cura/CuraView.py @@ -3,8 +3,11 @@ from PyQt5.QtCore import pyqtProperty, QUrl +from UM.Resources import Resources from UM.View.View import View +from cura.CuraApplication import CuraApplication + # Since Cura has a few pre-defined "space claims" for the locations of certain components, we've provided some structure # to indicate this. @@ -12,13 +15,20 @@ from UM.View.View import View # the stageMenuComponent returns an item that should be used somehwere in the stage menu. It's up to the active stage # to actually do something with this. class CuraView(View): - def __init__(self, parent = None) -> None: + def __init__(self, parent = None, use_empty_menu_placeholder: bool = False) -> None: super().__init__(parent) + self._empty_menu_placeholder_url = QUrl.fromLocalFile(Resources.getPath(CuraApplication.ResourceTypes.QmlFiles, + "EmptyViewMenuComponent.qml")) + self._use_empty_menu_placeholder = use_empty_menu_placeholder + @pyqtProperty(QUrl, constant = True) def mainComponent(self) -> QUrl: return self.getDisplayComponent("main") @pyqtProperty(QUrl, constant = True) def stageMenuComponent(self) -> QUrl: - return self.getDisplayComponent("menu") \ No newline at end of file + url = self.getDisplayComponent("menu") + if not url.toString() and self._use_empty_menu_placeholder: + url = self._empty_menu_placeholder_url + return url diff --git a/cura/Layer.py b/cura/Layer.py index 9cd45380fc..73fda64a45 100644 --- a/cura/Layer.py +++ b/cura/Layer.py @@ -1,14 +1,20 @@ -from UM.Mesh.MeshBuilder import MeshBuilder +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import List import numpy +from UM.Mesh.MeshBuilder import MeshBuilder +from UM.Mesh.MeshData import MeshData +from cura.LayerPolygon import LayerPolygon + class Layer: - def __init__(self, layer_id): + def __init__(self, layer_id: int) -> None: self._id = layer_id self._height = 0.0 self._thickness = 0.0 - self._polygons = [] + self._polygons = [] # type: List[LayerPolygon] self._element_count = 0 @property @@ -20,7 +26,7 @@ class Layer: return self._thickness @property - def polygons(self): + def polygons(self) -> List[LayerPolygon]: return self._polygons @property @@ -33,14 +39,14 @@ class Layer: def setThickness(self, thickness): self._thickness = thickness - def lineMeshVertexCount(self): + def lineMeshVertexCount(self) -> int: result = 0 for polygon in self._polygons: result += polygon.lineMeshVertexCount() return result - def lineMeshElementCount(self): + def lineMeshElementCount(self) -> int: result = 0 for polygon in self._polygons: result += polygon.lineMeshElementCount() @@ -57,18 +63,18 @@ class Layer: result_index_offset += polygon.lineMeshElementCount() self._element_count += polygon.elementCount - return (result_vertex_offset, result_index_offset) + return result_vertex_offset, result_index_offset - def createMesh(self): + def createMesh(self) -> MeshData: return self.createMeshOrJumps(True) - def createJumps(self): + def createJumps(self) -> MeshData: return self.createMeshOrJumps(False) # Defines the two triplets of local point indices to use to draw the two faces for each line segment in createMeshOrJump __index_pattern = numpy.array([[0, 3, 2, 0, 1, 3]], dtype = numpy.int32 ) - def createMeshOrJumps(self, make_mesh): + def createMeshOrJumps(self, make_mesh: bool) -> MeshData: builder = MeshBuilder() line_count = 0 @@ -79,14 +85,14 @@ class Layer: for polygon in self._polygons: line_count += polygon.jumpCount - # Reserve the neccesary space for the data upfront + # Reserve the necessary space for the data upfront builder.reserveFaceAndVertexCount(2 * line_count, 4 * line_count) for polygon in self._polygons: - # Filter out the types of lines we are not interesed in depending on whether we are drawing the mesh or the jumps. + # Filter out the types of lines we are not interested in depending on whether we are drawing the mesh or the jumps. index_mask = numpy.logical_not(polygon.jumpMask) if make_mesh else polygon.jumpMask - # Create an array with rows [p p+1] and only keep those we whant to draw based on make_mesh + # Create an array with rows [p p+1] and only keep those we want to draw based on make_mesh points = numpy.concatenate((polygon.data[:-1], polygon.data[1:]), 1)[index_mask.ravel()] # Line types of the points we want to draw line_types = polygon.types[index_mask] diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 072d5f94f5..0d6489aaa2 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -1,7 +1,7 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from UM.Application import Application +from UM.Qt.QtApplication import QtApplication from typing import Any, Optional import numpy @@ -20,7 +20,7 @@ class LayerPolygon: MoveCombingType = 8 MoveRetractionType = 9 SupportInterfaceType = 10 - PrimeTower = 11 + PrimeTowerType = 11 __number_of_types = 12 __jump_map = numpy.logical_or(numpy.logical_or(numpy.arange(__number_of_types) == NoneType, numpy.arange(__number_of_types) == MoveCombingType), numpy.arange(__number_of_types) == MoveRetractionType) @@ -61,19 +61,19 @@ class LayerPolygon: # When type is used as index returns true if type == LayerPolygon.InfillType or type == LayerPolygon.SkinType or type == LayerPolygon.SupportInfillType # Should be generated in better way, not hardcoded. - self._isInfillOrSkinTypeMap = numpy.array([0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1], dtype=numpy.bool) + self._isInfillOrSkinTypeMap = numpy.array([0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0], dtype = numpy.bool) self._build_cache_line_mesh_mask = None # type: Optional[numpy.ndarray] self._build_cache_needed_points = None # type: Optional[numpy.ndarray] def buildCache(self) -> None: # For the line mesh we do not draw Infill or Jumps. Therefore those lines are filtered out. - self._build_cache_line_mesh_mask = numpy.ones(self._jump_mask.shape, dtype=bool) + self._build_cache_line_mesh_mask = numpy.ones(self._jump_mask.shape, dtype = bool) mesh_line_count = numpy.sum(self._build_cache_line_mesh_mask) self._index_begin = 0 self._index_end = mesh_line_count - self._build_cache_needed_points = numpy.ones((len(self._types), 2), dtype=numpy.bool) + self._build_cache_needed_points = numpy.ones((len(self._types), 2), dtype = numpy.bool) # Only if the type of line segment changes do we need to add an extra vertex to change colors self._build_cache_needed_points[1:, 0][:, numpy.newaxis] = self._types[1:] != self._types[:-1] # Mark points as unneeded if they are of types we don't want in the line mesh according to the calculated mask @@ -136,9 +136,9 @@ class LayerPolygon: self._index_begin += index_offset self._index_end += index_offset - indices[self._index_begin:self._index_end, :] = numpy.arange(self._index_end-self._index_begin, dtype=numpy.int32).reshape((-1, 1)) + indices[self._index_begin:self._index_end, :] = numpy.arange(self._index_end-self._index_begin, dtype = numpy.int32).reshape((-1, 1)) # When the line type changes the index needs to be increased by 2. - indices[self._index_begin:self._index_end, :] += numpy.cumsum(needed_points_list[line_mesh_mask.ravel(), 0], dtype=numpy.int32).reshape((-1, 1)) + indices[self._index_begin:self._index_end, :] += numpy.cumsum(needed_points_list[line_mesh_mask.ravel(), 0], dtype = numpy.int32).reshape((-1, 1)) # Each line segment goes from it's starting point p to p+1, offset by the vertex index. # The -1 is to compensate for the neccecarily True value of needed_points_list[0,0] which causes an unwanted +1 in cumsum above. indices[self._index_begin:self._index_end, :] += numpy.array([self._vertex_begin - 1, self._vertex_begin]) @@ -232,7 +232,7 @@ class LayerPolygon: @classmethod def getColorMap(cls): if cls.__color_map is None: - theme = Application.getInstance().getTheme() + theme = QtApplication.getInstance().getTheme() cls.__color_map = numpy.array([ theme.getColor("layerview_none").getRgbF(), # NoneType theme.getColor("layerview_inset_0").getRgbF(), # Inset0Type @@ -245,7 +245,7 @@ class LayerPolygon: theme.getColor("layerview_move_combing").getRgbF(), # MoveCombingType theme.getColor("layerview_move_retraction").getRgbF(), # MoveRetractionType theme.getColor("layerview_support_interface").getRgbF(), # SupportInterfaceType - theme.getColor("layerview_prime_tower").getRgbF() + theme.getColor("layerview_prime_tower").getRgbF() # PrimeTowerType ]) return cls.__color_map diff --git a/cura/MachineAction.py b/cura/MachineAction.py index 94b096f9c1..0f05401c89 100644 --- a/cura/MachineAction.py +++ b/cura/MachineAction.py @@ -2,8 +2,9 @@ # Cura is released under the terms of the LGPLv3 or higher. import os +from typing import Optional -from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal +from PyQt5.QtCore import QObject, QUrl, pyqtSlot, pyqtProperty, pyqtSignal from UM.Logger import Logger from UM.PluginObject import PluginObject @@ -33,6 +34,12 @@ class MachineAction(QObject, PluginObject): def getKey(self) -> str: return self._key + ## Whether this action needs to ask the user anything. + # If not, we shouldn't present the user with certain screens which otherwise show up. + # Defaults to true to be in line with the old behaviour. + def needsUserInteraction(self) -> bool: + return True + @pyqtProperty(str, notify = labelChanged) def label(self) -> str: return self._label @@ -66,18 +73,26 @@ class MachineAction(QObject, PluginObject): return self._finished ## Protected helper to create a view object based on provided QML. - def _createViewFromQML(self) -> None: + def _createViewFromQML(self) -> Optional["QObject"]: plugin_path = PluginRegistry.getInstance().getPluginPath(self.getPluginId()) if plugin_path is None: Logger.log("e", "Cannot create QML view: cannot find plugin path for plugin [%s]", self.getPluginId()) - return + return None path = os.path.join(plugin_path, self._qml_url) from cura.CuraApplication import CuraApplication - self._view = CuraApplication.getInstance().createQmlComponent(path, {"manager": self}) + view = CuraApplication.getInstance().createQmlComponent(path, {"manager": self}) + return view - @pyqtProperty(QObject, constant = True) - def displayItem(self): - if not self._view: - self._createViewFromQML() - return self._view + @pyqtProperty(QUrl, constant = True) + def qmlPath(self) -> "QUrl": + plugin_path = PluginRegistry.getInstance().getPluginPath(self.getPluginId()) + if plugin_path is None: + Logger.log("e", "Cannot create QML view: cannot find plugin path for plugin [%s]", self.getPluginId()) + return QUrl("") + path = os.path.join(plugin_path, self._qml_url) + return QUrl.fromLocalFile(path) + + @pyqtSlot(result = QObject) + def getDisplayItem(self) -> Optional["QObject"]: + return self._createViewFromQML() diff --git a/cura/Machines/ContainerNode.py b/cura/Machines/ContainerNode.py index eef1c63127..a8bbf0a537 100644 --- a/cura/Machines/ContainerNode.py +++ b/cura/Machines/ContainerNode.py @@ -1,64 +1,64 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, Any, Dict, Union, TYPE_CHECKING - -from collections import OrderedDict +from typing import Any, Dict, Optional from UM.ConfigurationErrorMessage import ConfigurationErrorMessage +from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Logger import Logger from UM.Settings.InstanceContainer import InstanceContainer -## -# A metadata / container combination. Use getContainer() to get the container corresponding to the metadata. -# -# ContainerNode is a multi-purpose class. It has two main purposes: -# 1. It encapsulates an InstanceContainer. It contains that InstanceContainer's -# - metadata (Always) -# - container (lazy-loaded when needed) -# 2. It also serves as a node in a hierarchical InstanceContainer lookup table/tree. -# This is used in Variant, Material, and Quality Managers. +## A node in the container tree. It represents one container. # +# The container it represents is referenced by its container_id. During normal +# use of the tree, this container is not constructed. Only when parts of the +# tree need to get loaded in the container stack should it get constructed. class ContainerNode: - __slots__ = ("_metadata", "_container", "children_map") + ## Creates a new node for the container tree. + # \param container_id The ID of the container that this node should + # represent. + def __init__(self, container_id: str) -> None: + self.container_id = container_id + self._container = None # type: Optional[InstanceContainer] + self.children_map = {} # type: Dict[str, ContainerNode] # Mapping from container ID to container node. - def __init__(self, metadata: Optional[Dict[str, Any]] = None) -> None: - self._metadata = metadata - self._container = None # type: Optional[InstanceContainer] - self.children_map = OrderedDict() # type: ignore # This is because it's children are supposed to override it. + ## Gets the metadata of the container that this node represents. + # Getting the metadata from the container directly is about 10x as fast. + # \return The metadata of the container in this node. + def getMetadata(self): + return ContainerRegistry.getInstance().findContainersMetadata(id = self.container_id)[0] - ## Get an entry value from the metadata + ## Get an entry from the metadata of the container that this node contains. + # + # This is just a convenience function. + # \param entry The metadata entry key to return. + # \param default If the metadata is not present or the container is not + # found, the value of this default is returned. + # \return The value of the metadata entry, or the default if it was not + # present. def getMetaDataEntry(self, entry: str, default: Any = None) -> Any: - if self._metadata is None: + container_metadata = ContainerRegistry.getInstance().findContainersMetadata(id = self.container_id) + if len(container_metadata) == 0: return default - return self._metadata.get(entry, default) + return container_metadata[0].get(entry, default) - def getMetadata(self) -> Dict[str, Any]: - if self._metadata is None: - return {} - return self._metadata - - def getChildNode(self, child_key: str) -> Optional["ContainerNode"]: - return self.children_map.get(child_key) - - def getContainer(self) -> Optional["InstanceContainer"]: - if self._metadata is None: - Logger.log("e", "Cannot get container for a ContainerNode without metadata.") - return None - - if self._container is None: - container_id = self._metadata["id"] - from UM.Settings.ContainerRegistry import ContainerRegistry - container_list = ContainerRegistry.getInstance().findInstanceContainers(id = container_id) - if not container_list: - Logger.log("e", "Failed to lazy-load container [{container_id}]. Cannot find it.".format(container_id = container_id)) + ## The container that this node's container ID refers to. + # + # This can be used to finally instantiate the container in order to put it + # in the container stack. + # \return A container. + @property + def container(self) -> Optional[InstanceContainer]: + if not self._container: + container_list = ContainerRegistry.getInstance().findInstanceContainers(id = self.container_id) + if len(container_list) == 0: + Logger.log("e", "Failed to lazy-load container [{container_id}]. Cannot find it.".format(container_id = self.container_id)) error_message = ConfigurationErrorMessage.getInstance() - error_message.addFaultyContainers(container_id) + error_message.addFaultyContainers(self.container_id) return None self._container = container_list[0] - return self._container def __str__(self) -> str: - return "%s[%s]" % (self.__class__.__name__, self.getMetaDataEntry("id")) + return "%s[%s]" % (self.__class__.__name__, self.container_id) \ No newline at end of file diff --git a/cura/Machines/ContainerTree.py b/cura/Machines/ContainerTree.py new file mode 100644 index 0000000000..c2bfabea2c --- /dev/null +++ b/cura/Machines/ContainerTree.py @@ -0,0 +1,158 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Job import Job # For our background task of loading MachineNodes lazily. +from UM.JobQueue import JobQueue # For our background task of loading MachineNodes lazily. +from UM.Logger import Logger +from UM.Settings.ContainerRegistry import ContainerRegistry # To listen to containers being added. +from UM.Signal import Signal +import cura.CuraApplication # Imported like this to prevent circular dependencies. +from cura.Machines.MachineNode import MachineNode +from cura.Settings.GlobalStack import GlobalStack # To listen only to global stacks being added. + +from typing import Dict, List, Optional, TYPE_CHECKING +import time + +if TYPE_CHECKING: + from cura.Machines.QualityGroup import QualityGroup + from cura.Machines.QualityChangesGroup import QualityChangesGroup + from UM.Settings.ContainerStack import ContainerStack + + +## This class contains a look-up tree for which containers are available at +# which stages of configuration. +# +# The tree starts at the machine definitions. For every distinct definition +# there will be one machine node here. +# +# All of the fallbacks for material choices, quality choices, etc. should be +# encoded in this tree. There must always be at least one child node (for +# nodes that have children) but that child node may be a node representing the +# empty instance container. +class ContainerTree: + __instance = None + + @classmethod + def getInstance(cls): + if cls.__instance is None: + cls.__instance = ContainerTree() + return cls.__instance + + def __init__(self) -> None: + self.machines = self._MachineNodeMap() # Mapping from definition ID to machine nodes with lazy loading. + self.materialsChanged = Signal() # Emitted when any of the material nodes in the tree got changed. + cura.CuraApplication.CuraApplication.getInstance().initializationFinished.connect(self._onStartupFinished) # Start the background task to load more machine nodes after start-up is completed. + + ## Get the quality groups available for the currently activated printer. + # + # This contains all quality groups, enabled or disabled. To check whether + # the quality group can be activated, test for the + # ``QualityGroup.is_available`` property. + # \return For every quality type, one quality group. + def getCurrentQualityGroups(self) -> Dict[str, "QualityGroup"]: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return {} + variant_names = [extruder.variant.getName() for extruder in global_stack.extruderList] + material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruderList] + extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruderList] + return self.machines[global_stack.definition.getId()].getQualityGroups(variant_names, material_bases, extruder_enabled) + + ## Get the quality changes groups available for the currently activated + # printer. + # + # This contains all quality changes groups, enabled or disabled. To check + # whether the quality changes group can be activated, test for the + # ``QualityChangesGroup.is_available`` property. + # \return A list of all quality changes groups. + def getCurrentQualityChangesGroups(self) -> List["QualityChangesGroup"]: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return [] + variant_names = [extruder.variant.getName() for extruder in global_stack.extruderList] + material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruderList] + extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruderList] + return self.machines[global_stack.definition.getId()].getQualityChangesGroups(variant_names, material_bases, extruder_enabled) + + ## Ran after completely starting up the application. + def _onStartupFinished(self): + currently_added = ContainerRegistry.getInstance().findContainerStacks() # Find all currently added global stacks. + JobQueue.getInstance().add(self._MachineNodeLoadJob(self, currently_added)) + + ## Dictionary-like object that contains the machines. + # + # This handles the lazy loading of MachineNodes. + class _MachineNodeMap: + def __init__(self) -> None: + self._machines = {} # type: Dict[str, MachineNode] + + ## Returns whether a printer with a certain definition ID exists. This + # is regardless of whether or not the printer is loaded yet. + # \param definition_id The definition to look for. + # \return Whether or not a printer definition exists with that name. + def __contains__(self, definition_id: str) -> bool: + return len(ContainerRegistry.getInstance().findContainersMetadata(id = definition_id)) > 0 + + ## Returns a machine node for the specified definition ID. + # + # If the machine node wasn't loaded yet, this will load it lazily. + # \param definition_id The definition to look for. + # \return A machine node for that definition. + def __getitem__(self, definition_id: str) -> MachineNode: + if definition_id not in self._machines: + start_time = time.time() + self._machines[definition_id] = MachineNode(definition_id) + self._machines[definition_id].materialsChanged.connect(ContainerTree.getInstance().materialsChanged) + Logger.log("d", "Adding container tree for {definition_id} took {duration} seconds.".format(definition_id = definition_id, duration = time.time() - start_time)) + return self._machines[definition_id] + + ## Gets a machine node for the specified definition ID, with default. + # + # The default is returned if there is no definition with the specified + # ID. If the machine node wasn't loaded yet, this will load it lazily. + # \param definition_id The definition to look for. + # \param default The machine node to return if there is no machine + # with that definition (can be ``None`` optionally or if not + # provided). + # \return A machine node for that definition, or the default if there + # is no definition with the provided definition_id. + def get(self, definition_id: str, default: Optional[MachineNode] = None) -> Optional[MachineNode]: + if definition_id not in self: + return default + return self[definition_id] + + ## Returns whether we've already cached this definition's node. + # \param definition_id The definition that we may have cached. + # \return ``True`` if it's cached. + def is_loaded(self, definition_id: str) -> bool: + return definition_id in self._machines + + ## Pre-loads all currently added printers as a background task so that + # switching printers in the interface is faster. + class _MachineNodeLoadJob(Job): + ## Creates a new background task. + # \param tree_root The container tree instance. This cannot be + # obtained through the singleton static function since the instance + # may not yet be constructed completely. + # \param container_stacks All of the stacks to pre-load the container + # trees for. This needs to be provided from here because the stacks + # need to be constructed on the main thread because they are QObject. + def __init__(self, tree_root: "ContainerTree", container_stacks: List["ContainerStack"]): + self.tree_root = tree_root + self.container_stacks = container_stacks + super().__init__() + + ## Starts the background task. + # + # The ``JobQueue`` will schedule this on a different thread. + def run(self) -> None: + for stack in self.container_stacks: # Load all currently-added containers. + if not isinstance(stack, GlobalStack): + continue + # Allow a thread switch after every container. + # Experimentally, sleep(0) didn't allow switching. sleep(0.1) or sleep(0.2) neither. + # We're in no hurry though. Half a second is fine. + time.sleep(0.5) + definition_id = stack.definition.getId() + if not self.tree_root.machines.is_loaded(definition_id): + _ = self.tree_root.machines[definition_id] diff --git a/cura/Machines/IntentNode.py b/cura/Machines/IntentNode.py new file mode 100644 index 0000000000..2b3a596f81 --- /dev/null +++ b/cura/Machines/IntentNode.py @@ -0,0 +1,21 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import TYPE_CHECKING + +from UM.Settings.ContainerRegistry import ContainerRegistry + +from cura.Machines.ContainerNode import ContainerNode + +if TYPE_CHECKING: + from cura.Machines.QualityNode import QualityNode + + +## This class represents an intent profile in the container tree. +# +# This class has no more subnodes. +class IntentNode(ContainerNode): + def __init__(self, container_id: str, quality: "QualityNode") -> None: + super().__init__(container_id) + self.quality = quality + self.intent_category = ContainerRegistry.getInstance().findContainersMetadata(id = container_id)[0].get("intent_category", "default") diff --git a/cura/Machines/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py index fb11123af6..4c6ed891b1 100644 --- a/cura/Machines/MachineErrorChecker.py +++ b/cura/Machines/MachineErrorChecker.py @@ -58,7 +58,6 @@ class MachineErrorChecker(QObject): # Whenever the machine settings get changed, we schedule an error check. self._machine_manager.globalContainerChanged.connect(self.startErrorCheck) - self._machine_manager.globalValueChanged.connect(self.startErrorCheck) self._onMachineChanged() @@ -67,7 +66,7 @@ class MachineErrorChecker(QObject): self._global_stack.propertyChanged.disconnect(self.startErrorCheckPropertyChanged) self._global_stack.containersChanged.disconnect(self.startErrorCheck) - for extruder in self._global_stack.extruders.values(): + for extruder in self._global_stack.extruderList: extruder.propertyChanged.disconnect(self.startErrorCheckPropertyChanged) extruder.containersChanged.disconnect(self.startErrorCheck) @@ -77,7 +76,7 @@ class MachineErrorChecker(QObject): self._global_stack.propertyChanged.connect(self.startErrorCheckPropertyChanged) self._global_stack.containersChanged.connect(self.startErrorCheck) - for extruder in self._global_stack.extruders.values(): + for extruder in self._global_stack.extruderList: extruder.propertyChanged.connect(self.startErrorCheckPropertyChanged) extruder.containersChanged.connect(self.startErrorCheck) @@ -127,7 +126,7 @@ class MachineErrorChecker(QObject): # Populate the (stack, key) tuples to check self._stacks_and_keys_to_check = deque() - for stack in [global_stack] + list(global_stack.extruders.values()): + for stack in global_stack.extruderList: for key in stack.getAllKeys(): self._stacks_and_keys_to_check.append((stack, key)) @@ -168,7 +167,7 @@ class MachineErrorChecker(QObject): if validator_type: validator = validator_type(key) validation_state = validator(stack) - if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError): + if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError, ValidatorState.Invalid): # Finish self._setResult(True) return diff --git a/cura/Machines/MachineNode.py b/cura/Machines/MachineNode.py new file mode 100644 index 0000000000..92f71b409b --- /dev/null +++ b/cura/Machines/MachineNode.py @@ -0,0 +1,183 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Dict, List + +from UM.Logger import Logger +from UM.Signal import Signal +from UM.Util import parseBool +from UM.Settings.ContainerRegistry import ContainerRegistry # To find all the variants for this machine. + +import cura.CuraApplication # Imported like this to prevent circular dependencies. +from cura.Machines.ContainerNode import ContainerNode +from cura.Machines.QualityChangesGroup import QualityChangesGroup # To construct groups of quality changes profiles that belong together. +from cura.Machines.QualityGroup import QualityGroup # To construct groups of quality profiles that belong together. +from cura.Machines.QualityNode import QualityNode +from cura.Machines.VariantNode import VariantNode +import UM.FlameProfiler + + +## This class represents a machine in the container tree. +# +# The subnodes of these nodes are variants. +class MachineNode(ContainerNode): + def __init__(self, container_id: str) -> None: + super().__init__(container_id) + self.variants = {} # type: Dict[str, VariantNode] # Mapping variant names to their nodes. + self.global_qualities = {} # type: Dict[str, QualityNode] # Mapping quality types to the global quality for those types. + self.materialsChanged = Signal() # Emitted when one of the materials underneath this machine has been changed. + + container_registry = ContainerRegistry.getInstance() + try: + my_metadata = container_registry.findContainersMetadata(id = container_id)[0] + except IndexError: + Logger.log("Unable to find metadata for container %s", container_id) + my_metadata = {} + # Some of the metadata is cached upon construction here. + # ONLY DO THAT FOR METADATA THAT DOESN'T CHANGE DURING RUNTIME! + # Otherwise you need to keep it up-to-date during runtime. + self.has_materials = parseBool(my_metadata.get("has_materials", "true")) + self.has_variants = parseBool(my_metadata.get("has_variants", "false")) + self.has_machine_quality = parseBool(my_metadata.get("has_machine_quality", "false")) + self.quality_definition = my_metadata.get("quality_definition", container_id) if self.has_machine_quality else "fdmprinter" + self.exclude_materials = my_metadata.get("exclude_materials", []) + self.preferred_variant_name = my_metadata.get("preferred_variant_name", "") + self.preferred_material = my_metadata.get("preferred_material", "") + self.preferred_quality_type = my_metadata.get("preferred_quality_type", "") + + self._loadAll() + + ## Get the available quality groups for this machine. + # + # This returns all quality groups, regardless of whether they are + # available to the combination of extruders or not. On the resulting + # quality groups, the is_available property is set to indicate whether the + # quality group can be selected according to the combination of extruders + # in the parameters. + # \param variant_names The names of the variants loaded in each extruder. + # \param material_bases The base file names of the materials loaded in + # each extruder. + # \param extruder_enabled Whether or not the extruders are enabled. This + # allows the function to set the is_available properly. + # \return For each available quality type, a QualityGroup instance. + def getQualityGroups(self, variant_names: List[str], material_bases: List[str], extruder_enabled: List[bool]) -> Dict[str, QualityGroup]: + if len(variant_names) != len(material_bases) or len(variant_names) != len(extruder_enabled): + Logger.log("e", "The number of extruders in the list of variants (" + str(len(variant_names)) + ") is not equal to the number of extruders in the list of materials (" + str(len(material_bases)) + ") or the list of enabled extruders (" + str(len(extruder_enabled)) + ").") + return {} + # For each extruder, find which quality profiles are available. Later we'll intersect the quality types. + qualities_per_type_per_extruder = [{}] * len(variant_names) # type: List[Dict[str, QualityNode]] + for extruder_nr, variant_name in enumerate(variant_names): + if not extruder_enabled[extruder_nr]: + continue # No qualities are available in this extruder. It'll get skipped when calculating the available quality types. + material_base = material_bases[extruder_nr] + if variant_name not in self.variants or material_base not in self.variants[variant_name].materials: + # The printer has no variant/material-specific quality profiles. Use the global quality profiles. + qualities_per_type_per_extruder[extruder_nr] = self.global_qualities + else: + # Use the actually specialised quality profiles. + qualities_per_type_per_extruder[extruder_nr] = {node.quality_type: node for node in self.variants[variant_name].materials[material_base].qualities.values()} + + # Create the quality group for each available type. + quality_groups = {} + for quality_type, global_quality_node in self.global_qualities.items(): + if not global_quality_node.container: + Logger.log("w", "Node {0} doesn't have a container.".format(global_quality_node.container_id)) + continue + quality_groups[quality_type] = QualityGroup(name = global_quality_node.getMetaDataEntry("name", "Unnamed profile"), quality_type = quality_type) + quality_groups[quality_type].node_for_global = global_quality_node + for extruder_position, qualities_per_type in enumerate(qualities_per_type_per_extruder): + if quality_type in qualities_per_type: + quality_groups[quality_type].setExtruderNode(extruder_position, qualities_per_type[quality_type]) + + available_quality_types = set(quality_groups.keys()) + for extruder_nr, qualities_per_type in enumerate(qualities_per_type_per_extruder): + if not extruder_enabled[extruder_nr]: + continue + available_quality_types.intersection_update(qualities_per_type.keys()) + for quality_type in available_quality_types: + quality_groups[quality_type].is_available = True + return quality_groups + + ## Returns all of the quality changes groups available to this printer. + # + # The quality changes groups store which quality type and intent category + # they were made for, but not which material and nozzle. Instead for the + # quality type and intent category, the quality changes will always be + # available but change the quality type and intent category when + # activated. + # + # The quality changes group does depend on the printer: Which quality + # definition is used. + # + # The quality changes groups that are available do depend on the quality + # types that are available, so it must still be known which extruders are + # enabled and which materials and variants are loaded in them. This allows + # setting the correct is_available flag. + # \param variant_names The names of the variants loaded in each extruder. + # \param material_bases The base file names of the materials loaded in + # each extruder. + # \param extruder_enabled For each extruder whether or not they are + # enabled. + # \return List of all quality changes groups for the printer. + def getQualityChangesGroups(self, variant_names: List[str], material_bases: List[str], extruder_enabled: List[bool]) -> List[QualityChangesGroup]: + machine_quality_changes = ContainerRegistry.getInstance().findContainersMetadata(type = "quality_changes", definition = self.quality_definition) # All quality changes for each extruder. + + groups_by_name = {} #type: Dict[str, QualityChangesGroup] # Group quality changes profiles by their display name. The display name must be unique for quality changes. This finds profiles that belong together in a group. + for quality_changes in machine_quality_changes: + name = quality_changes["name"] + if name not in groups_by_name: + # CURA-6599 + # For some reason, QML will get null or fail to convert type for MachineManager.activeQualityChangesGroup() to + # a QObject. Setting the object ownership to QQmlEngine.CppOwnership doesn't work, but setting the object + # parent to application seems to work. + from cura.CuraApplication import CuraApplication + groups_by_name[name] = QualityChangesGroup(name, quality_type = quality_changes["quality_type"], + intent_category = quality_changes.get("intent_category", "default"), + parent = CuraApplication.getInstance()) + # CURA-6882 + # Custom qualities are always available, even if they are based on the "not supported" profile. + groups_by_name[name].is_available = True + elif groups_by_name[name].intent_category == "default": # Intent category should be stored as "default" if everything is default or as the intent if any of the extruder have an actual intent. + groups_by_name[name].intent_category = quality_changes.get("intent_category", "default") + + if quality_changes.get("position") is not None and quality_changes.get("position") != "None": # An extruder profile. + groups_by_name[name].metadata_per_extruder[int(quality_changes["position"])] = quality_changes + else: # Global profile. + groups_by_name[name].metadata_for_global = quality_changes + + return list(groups_by_name.values()) + + ## Gets the preferred global quality node, going by the preferred quality + # type. + # + # If the preferred global quality is not in there, an arbitrary global + # quality is taken. + # If there are no global qualities, an empty quality is returned. + def preferredGlobalQuality(self) -> "QualityNode": + return self.global_qualities.get(self.preferred_quality_type, next(iter(self.global_qualities.values()))) + + ## (Re)loads all variants under this printer. + @UM.FlameProfiler.profile + def _loadAll(self) -> None: + container_registry = ContainerRegistry.getInstance() + if not self.has_variants: + self.variants["empty"] = VariantNode("empty_variant", machine = self) + else: + # Find all the variants for this definition ID. + variants = container_registry.findInstanceContainersMetadata(type = "variant", definition = self.container_id, hardware_type = "nozzle") + for variant in variants: + variant_name = variant["name"] + if variant_name not in self.variants: + self.variants[variant_name] = VariantNode(variant["id"], machine = self) + self.variants[variant_name].materialsChanged.connect(self.materialsChanged) + if not self.variants: + self.variants["empty"] = VariantNode("empty_variant", machine = self) + + # Find the global qualities for this printer. + global_qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.quality_definition, global_quality = "True") # First try specific to this printer. + if len(global_qualities) == 0: # This printer doesn't override the global qualities. + global_qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = "fdmprinter", global_quality = "True") # Otherwise pick the global global qualities. + if len(global_qualities) == 0: # There are no global qualities either?! Something went very wrong, but we'll not crash and properly fill the tree. + global_qualities = [cura.CuraApplication.CuraApplication.getInstance().empty_quality_container.getMetaData()] + for global_quality in global_qualities: + self.global_qualities[global_quality["quality_type"]] = QualityNode(global_quality["id"], parent = self) diff --git a/cura/Machines/MaterialManager.py b/cura/Machines/MaterialManager.py deleted file mode 100644 index 68e894642d..0000000000 --- a/cura/Machines/MaterialManager.py +++ /dev/null @@ -1,698 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from collections import defaultdict, OrderedDict -import copy -import uuid -from typing import Dict, Optional, TYPE_CHECKING, Any, Set, List, cast, Tuple - -from PyQt5.Qt import QTimer, QObject, pyqtSignal, pyqtSlot - -from UM.Application import Application -from UM.ConfigurationErrorMessage import ConfigurationErrorMessage -from UM.Logger import Logger -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.SettingFunction import SettingFunction -from UM.Util import parseBool - -from .MaterialNode import MaterialNode -from .MaterialGroup import MaterialGroup -from .VariantType import VariantType - -if TYPE_CHECKING: - from UM.Settings.DefinitionContainer import DefinitionContainer - from UM.Settings.InstanceContainer import InstanceContainer - from cura.Settings.GlobalStack import GlobalStack - from cura.Settings.ExtruderStack import ExtruderStack - - -# -# MaterialManager maintains a number of maps and trees for material lookup. -# The models GUI and QML use are now only dependent on the MaterialManager. That means as long as the data in -# MaterialManager gets updated correctly, the GUI models should be updated correctly too, and the same goes for GUI. -# -# For now, updating the lookup maps and trees here is very simple: we discard the old data completely and recreate them -# again. This means the update is exactly the same as initialization. There are performance concerns about this approach -# but so far the creation of the tables and maps is very fast and there is no noticeable slowness, we keep it like this -# because it's simple. -# -class MaterialManager(QObject): - - materialsUpdated = pyqtSignal() # Emitted whenever the material lookup tables are updated. - favoritesUpdated = pyqtSignal() # Emitted whenever the favorites are changed - - def __init__(self, container_registry, parent = None): - super().__init__(parent) - self._application = Application.getInstance() - self._container_registry = container_registry # type: ContainerRegistry - - # Material_type -> generic material metadata - self._fallback_materials_map = dict() # type: Dict[str, Dict[str, Any]] - - # Root_material_id -> MaterialGroup - self._material_group_map = dict() # type: Dict[str, MaterialGroup] - - # Approximate diameter str - self._diameter_machine_nozzle_buildplate_material_map = dict() # type: Dict[str, Dict[str, MaterialNode]] - - # We're using these two maps to convert between the specific diameter material id and the generic material id - # because the generic material ids are used in qualities and definitions, while the specific diameter material is meant - # i.e. generic_pla -> generic_pla_175 - # root_material_id -> approximate diameter str -> root_material_id for that diameter - self._material_diameter_map = defaultdict(dict) # type: Dict[str, Dict[str, str]] - - # Material id including diameter (generic_pla_175) -> material root id (generic_pla) - self._diameter_material_map = dict() # type: Dict[str, str] - - # This is used in Legacy UM3 send material function and the material management page. - # GUID -> a list of material_groups - self._guid_material_groups_map = defaultdict(list) # type: Dict[str, List[MaterialGroup]] - - # The machine definition ID for the non-machine-specific materials. - # This is used as the last fallback option if the given machine-specific material(s) cannot be found. - self._default_machine_definition_id = "fdmprinter" - self._default_approximate_diameter_for_quality_search = "3" - - # When a material gets added/imported, there can be more than one InstanceContainers. In those cases, we don't - # want to react on every container/metadata changed signal. The timer here is to buffer it a bit so we don't - # react too many time. - self._update_timer = QTimer(self) - self._update_timer.setInterval(300) - self._update_timer.setSingleShot(True) - self._update_timer.timeout.connect(self._updateMaps) - - self._container_registry.containerMetaDataChanged.connect(self._onContainerMetadataChanged) - self._container_registry.containerAdded.connect(self._onContainerMetadataChanged) - self._container_registry.containerRemoved.connect(self._onContainerMetadataChanged) - - self._favorites = set() # type: Set[str] - - def initialize(self) -> None: - # Find all materials and put them in a matrix for quick search. - material_metadatas = {metadata["id"]: metadata for metadata in - self._container_registry.findContainersMetadata(type = "material") if - metadata.get("GUID")} # type: Dict[str, Dict[str, Any]] - - self._material_group_map = dict() # type: Dict[str, MaterialGroup] - - # Map #1 - # root_material_id -> MaterialGroup - for material_id, material_metadata in material_metadatas.items(): - # We don't store empty material in the lookup tables - if material_id == "empty_material": - continue - - root_material_id = material_metadata.get("base_file", "") - if root_material_id not in self._material_group_map: - self._material_group_map[root_material_id] = MaterialGroup(root_material_id, MaterialNode(material_metadatas[root_material_id])) - self._material_group_map[root_material_id].is_read_only = self._container_registry.isReadOnly(root_material_id) - group = self._material_group_map[root_material_id] - - # Store this material in the group of the appropriate root material. - if material_id != root_material_id: - new_node = MaterialNode(material_metadata) - group.derived_material_node_list.append(new_node) - - # Order this map alphabetically so it's easier to navigate in a debugger - self._material_group_map = OrderedDict(sorted(self._material_group_map.items(), key = lambda x: x[0])) - - # Map #1.5 - # GUID -> material group list - self._guid_material_groups_map = defaultdict(list) # type: Dict[str, List[MaterialGroup]] - for root_material_id, material_group in self._material_group_map.items(): - guid = material_group.root_material_node.getMetaDataEntry("GUID", "") - self._guid_material_groups_map[guid].append(material_group) - - # Map #2 - # Lookup table for material type -> fallback material metadata, only for read-only materials - grouped_by_type_dict = dict() # type: Dict[str, Any] - material_types_without_fallback = set() - for root_material_id, material_node in self._material_group_map.items(): - material_type = material_node.root_material_node.getMetaDataEntry("material", "") - if material_type not in grouped_by_type_dict: - grouped_by_type_dict[material_type] = {"generic": None, - "others": []} - material_types_without_fallback.add(material_type) - brand = material_node.root_material_node.getMetaDataEntry("brand", "") - if brand.lower() == "generic": - to_add = True - if material_type in grouped_by_type_dict: - diameter = material_node.root_material_node.getMetaDataEntry("approximate_diameter", "") - if diameter != self._default_approximate_diameter_for_quality_search: - to_add = False # don't add if it's not the default diameter - - if to_add: - # Checking this first allow us to differentiate between not read only materials: - # - if it's in the list, it means that is a new material without fallback - # - if it is not, then it is a custom material with a fallback material (parent) - if material_type in material_types_without_fallback: - grouped_by_type_dict[material_type] = material_node.root_material_node._metadata - material_types_without_fallback.remove(material_type) - - # Remove the materials that have no fallback materials - for material_type in material_types_without_fallback: - del grouped_by_type_dict[material_type] - self._fallback_materials_map = grouped_by_type_dict - - # Map #3 - # There can be multiple material profiles for the same material with different diameters, such as "generic_pla" - # and "generic_pla_175". This is inconvenient when we do material-specific quality lookup because a quality can - # be for either "generic_pla" or "generic_pla_175", but not both. This map helps to get the correct material ID - # for quality search. - self._material_diameter_map = defaultdict(dict) - self._diameter_material_map = dict() - - # Group the material IDs by the same name, material, brand, and color but with different diameters. - material_group_dict = dict() # type: Dict[Tuple[Any], Dict[str, str]] - keys_to_fetch = ("name", "material", "brand", "color") - for root_material_id, machine_node in self._material_group_map.items(): - root_material_metadata = machine_node.root_material_node._metadata - - key_data_list = [] # type: List[Any] - for key in keys_to_fetch: - key_data_list.append(machine_node.root_material_node.getMetaDataEntry(key)) - key_data = cast(Tuple[Any], tuple(key_data_list)) # type: Tuple[Any] - - # If the key_data doesn't exist, it doesn't matter if the material is read only... - if key_data not in material_group_dict: - material_group_dict[key_data] = dict() - else: - # ...but if key_data exists, we just overwrite it if the material is read only, otherwise we skip it - if not machine_node.is_read_only: - continue - approximate_diameter = machine_node.root_material_node.getMetaDataEntry("approximate_diameter", "") - material_group_dict[key_data][approximate_diameter] = machine_node.root_material_node.getMetaDataEntry("id", "") - - # Map [root_material_id][diameter] -> root_material_id for this diameter - for data_dict in material_group_dict.values(): - for root_material_id1 in data_dict.values(): - if root_material_id1 in self._material_diameter_map: - continue - diameter_map = data_dict - for root_material_id2 in data_dict.values(): - self._material_diameter_map[root_material_id2] = diameter_map - - default_root_material_id = data_dict.get(self._default_approximate_diameter_for_quality_search) - if default_root_material_id is None: - default_root_material_id = list(data_dict.values())[0] # no default diameter present, just take "the" only one - for root_material_id in data_dict.values(): - self._diameter_material_map[root_material_id] = default_root_material_id - - # Map #4 - # "machine" -> "nozzle name" -> "buildplate name" -> "root material ID" -> specific material InstanceContainer - self._diameter_machine_nozzle_buildplate_material_map = dict() # type: Dict[str, Dict[str, MaterialNode]] - for material_metadata in material_metadatas.values(): - self.__addMaterialMetadataIntoLookupTree(material_metadata) - - favorites = self._application.getPreferences().getValue("cura/favorite_materials") - for item in favorites.split(";"): - self._favorites.add(item) - - self.materialsUpdated.emit() - - def __addMaterialMetadataIntoLookupTree(self, material_metadata: Dict[str, Any]) -> None: - material_id = material_metadata["id"] - - # We don't store empty material in the lookup tables - if material_id == "empty_material": - return - - root_material_id = material_metadata["base_file"] - definition = material_metadata["definition"] - approximate_diameter = material_metadata["approximate_diameter"] - - if approximate_diameter not in self._diameter_machine_nozzle_buildplate_material_map: - self._diameter_machine_nozzle_buildplate_material_map[approximate_diameter] = {} - - machine_nozzle_buildplate_material_map = self._diameter_machine_nozzle_buildplate_material_map[ - approximate_diameter] - if definition not in machine_nozzle_buildplate_material_map: - machine_nozzle_buildplate_material_map[definition] = MaterialNode() - - # This is a list of information regarding the intermediate nodes: - # nozzle -> buildplate - nozzle_name = material_metadata.get("variant_name") - buildplate_name = material_metadata.get("buildplate_name") - intermediate_node_info_list = [(nozzle_name, VariantType.NOZZLE), - (buildplate_name, VariantType.BUILD_PLATE), - ] - - variant_manager = self._application.getVariantManager() - - machine_node = machine_nozzle_buildplate_material_map[definition] - current_node = machine_node - current_intermediate_node_info_idx = 0 - error_message = None # type: Optional[str] - while current_intermediate_node_info_idx < len(intermediate_node_info_list): - variant_name, variant_type = intermediate_node_info_list[current_intermediate_node_info_idx] - if variant_name is not None: - # The new material has a specific variant, so it needs to be added to that specific branch in the tree. - variant = variant_manager.getVariantNode(definition, variant_name, variant_type) - if variant is None: - error_message = "Material {id} contains a variant {name} that does not exist.".format( - id = material_metadata["id"], name = variant_name) - break - - # Update the current node to advance to a more specific branch - if variant_name not in current_node.children_map: - current_node.children_map[variant_name] = MaterialNode() - current_node = current_node.children_map[variant_name] - - current_intermediate_node_info_idx += 1 - - if error_message is not None: - Logger.log("e", "%s It will not be added into the material lookup tree.", error_message) - self._container_registry.addWrongContainerId(material_metadata["id"]) - return - - # Add the material to the current tree node, which is the deepest (the most specific) branch we can find. - # Sanity check: Make sure that there is no duplicated materials. - if root_material_id in current_node.material_map: - Logger.log("e", "Duplicated material [%s] with root ID [%s]. It has already been added.", - material_id, root_material_id) - ConfigurationErrorMessage.getInstance().addFaultyContainers(root_material_id) - return - - current_node.material_map[root_material_id] = MaterialNode(material_metadata) - - def _updateMaps(self): - Logger.log("i", "Updating material lookup data ...") - self.initialize() - - def _onContainerMetadataChanged(self, container): - self._onContainerChanged(container) - - def _onContainerChanged(self, container): - container_type = container.getMetaDataEntry("type") - if container_type != "material": - return - - # update the maps - self._update_timer.start() - - def getMaterialGroup(self, root_material_id: str) -> Optional[MaterialGroup]: - return self._material_group_map.get(root_material_id) - - def getRootMaterialIDForDiameter(self, root_material_id: str, approximate_diameter: str) -> str: - return self._material_diameter_map.get(root_material_id, {}).get(approximate_diameter, root_material_id) - - def getRootMaterialIDWithoutDiameter(self, root_material_id: str) -> str: - return self._diameter_material_map.get(root_material_id, "") - - def getMaterialGroupListByGUID(self, guid: str) -> Optional[List[MaterialGroup]]: - return self._guid_material_groups_map.get(guid) - - # Returns a dict of all material groups organized by root_material_id. - def getAllMaterialGroups(self) -> Dict[str, "MaterialGroup"]: - return self._material_group_map - - # - # Return a dict with all root material IDs (k) and ContainerNodes (v) that's suitable for the given setup. - # - def getAvailableMaterials(self, machine_definition: "DefinitionContainer", nozzle_name: Optional[str], - buildplate_name: Optional[str], diameter: float) -> Dict[str, MaterialNode]: - # round the diameter to get the approximate diameter - rounded_diameter = str(round(diameter)) - if rounded_diameter not in self._diameter_machine_nozzle_buildplate_material_map: - Logger.log("i", "Cannot find materials with diameter [%s] (rounded to [%s])", diameter, rounded_diameter) - return dict() - - machine_definition_id = machine_definition.getId() - - # If there are nozzle-and-or-buildplate materials, get the nozzle-and-or-buildplate material - machine_nozzle_buildplate_material_map = self._diameter_machine_nozzle_buildplate_material_map[rounded_diameter] - machine_node = machine_nozzle_buildplate_material_map.get(machine_definition_id) - default_machine_node = machine_nozzle_buildplate_material_map.get(self._default_machine_definition_id) - nozzle_node = None - buildplate_node = None - if nozzle_name is not None and machine_node is not None: - nozzle_node = machine_node.getChildNode(nozzle_name) - # Get buildplate node if possible - if nozzle_node is not None and buildplate_name is not None: - buildplate_node = nozzle_node.getChildNode(buildplate_name) - - nodes_to_check = [buildplate_node, nozzle_node, machine_node, default_machine_node] - - # Fallback mechanism of finding materials: - # 1. buildplate-specific material - # 2. nozzle-specific material - # 3. machine-specific material - # 4. generic material (for fdmprinter) - machine_exclude_materials = machine_definition.getMetaDataEntry("exclude_materials", []) - - material_id_metadata_dict = dict() # type: Dict[str, MaterialNode] - excluded_materials = set() - for current_node in nodes_to_check: - if current_node is None: - continue - - # Only exclude the materials that are explicitly specified in the "exclude_materials" field. - # Do not exclude other materials that are of the same type. - for material_id, node in current_node.material_map.items(): - if material_id in machine_exclude_materials: - excluded_materials.add(material_id) - continue - - if material_id not in material_id_metadata_dict: - material_id_metadata_dict[material_id] = node - - if excluded_materials: - Logger.log("d", "Exclude materials {excluded_materials} for machine {machine_definition_id}".format(excluded_materials = ", ".join(excluded_materials), machine_definition_id = machine_definition_id)) - - return material_id_metadata_dict - - # - # A convenience function to get available materials for the given machine with the extruder position. - # - def getAvailableMaterialsForMachineExtruder(self, machine: "GlobalStack", - extruder_stack: "ExtruderStack") -> Optional[Dict[str, MaterialNode]]: - buildplate_name = machine.getBuildplateName() - nozzle_name = None - if extruder_stack.variant.getId() != "empty_variant": - nozzle_name = extruder_stack.variant.getName() - diameter = extruder_stack.getApproximateMaterialDiameter() - - # Fetch the available materials (ContainerNode) for the current active machine and extruder setup. - return self.getAvailableMaterials(machine.definition, nozzle_name, buildplate_name, diameter) - - # - # Gets MaterialNode for the given extruder and machine with the given material name. - # Returns None if: - # 1. the given machine doesn't have materials; - # 2. cannot find any material InstanceContainers with the given settings. - # - def getMaterialNode(self, machine_definition_id: str, nozzle_name: Optional[str], - buildplate_name: Optional[str], diameter: float, root_material_id: str) -> Optional["MaterialNode"]: - # round the diameter to get the approximate diameter - rounded_diameter = str(round(diameter)) - if rounded_diameter not in self._diameter_machine_nozzle_buildplate_material_map: - Logger.log("i", "Cannot find materials with diameter [%s] (rounded to [%s]) for root material id [%s]", - diameter, rounded_diameter, root_material_id) - return None - - # If there are nozzle materials, get the nozzle-specific material - machine_nozzle_buildplate_material_map = self._diameter_machine_nozzle_buildplate_material_map[rounded_diameter] # type: Dict[str, MaterialNode] - machine_node = machine_nozzle_buildplate_material_map.get(machine_definition_id) - nozzle_node = None - buildplate_node = None - - # Fallback for "fdmprinter" if the machine-specific materials cannot be found - if machine_node is None: - machine_node = machine_nozzle_buildplate_material_map.get(self._default_machine_definition_id) - if machine_node is not None and nozzle_name is not None: - nozzle_node = machine_node.getChildNode(nozzle_name) - if nozzle_node is not None and buildplate_name is not None: - buildplate_node = nozzle_node.getChildNode(buildplate_name) - - # Fallback mechanism of finding materials: - # 1. buildplate-specific material - # 2. nozzle-specific material - # 3. machine-specific material - # 4. generic material (for fdmprinter) - nodes_to_check = [buildplate_node, nozzle_node, machine_node, - machine_nozzle_buildplate_material_map.get(self._default_machine_definition_id)] - - material_node = None - for node in nodes_to_check: - if node is not None: - material_node = node.material_map.get(root_material_id) - if material_node: - break - - return material_node - - # - # Gets MaterialNode for the given extruder and machine with the given material type. - # Returns None if: - # 1. the given machine doesn't have materials; - # 2. cannot find any material InstanceContainers with the given settings. - # - def getMaterialNodeByType(self, global_stack: "GlobalStack", position: str, nozzle_name: str, - buildplate_name: Optional[str], material_guid: str) -> Optional["MaterialNode"]: - node = None - machine_definition = global_stack.definition - extruder_definition = global_stack.extruders[position].definition - if parseBool(machine_definition.getMetaDataEntry("has_materials", False)): - material_diameter = extruder_definition.getProperty("material_diameter", "value") - if isinstance(material_diameter, SettingFunction): - material_diameter = material_diameter(global_stack) - - # Look at the guid to material dictionary - root_material_id = None - for material_group in self._guid_material_groups_map[material_guid]: - root_material_id = cast(str, material_group.root_material_node.getMetaDataEntry("id", "")) - break - - if not root_material_id: - Logger.log("i", "Cannot find materials with guid [%s] ", material_guid) - return None - - node = self.getMaterialNode(machine_definition.getId(), nozzle_name, buildplate_name, - material_diameter, root_material_id) - return node - - # There are 2 ways to get fallback materials; - # - A fallback by type (@sa getFallbackMaterialIdByMaterialType), which adds the generic version of this material - # - A fallback by GUID; If a material has been duplicated, it should also check if the original materials do have - # a GUID. This should only be done if the material itself does not have a quality just yet. - def getFallBackMaterialIdsByMaterial(self, material: "InstanceContainer") -> List[str]: - results = [] # type: List[str] - - material_groups = self.getMaterialGroupListByGUID(material.getMetaDataEntry("GUID")) - for material_group in material_groups: # type: ignore - if material_group.name != material.getId(): - # If the material in the group is read only, put it at the front of the list (since that is the most - # likely one to get a result) - if material_group.is_read_only: - results.insert(0, material_group.name) - else: - results.append(material_group.name) - - fallback = self.getFallbackMaterialIdByMaterialType(material.getMetaDataEntry("material")) - if fallback is not None: - results.append(fallback) - return results - - # - # Used by QualityManager. Built-in quality profiles may be based on generic material IDs such as "generic_pla". - # For materials such as ultimaker_pla_orange, no quality profiles may be found, so we should fall back to use - # the generic material IDs to search for qualities. - # - # An example would be, suppose we have machine with preferred material set to "filo3d_pla" (1.75mm), but its - # extruders only use 2.85mm materials, then we won't be able to find the preferred material for this machine. - # A fallback would be to fetch a generic material of the same type "PLA" as "filo3d_pla", and in this case it will - # be "generic_pla". This function is intended to get a generic fallback material for the given material type. - # - # This function returns the generic root material ID for the given material type, where material types are "PLA", - # "ABS", etc. - # - def getFallbackMaterialIdByMaterialType(self, material_type: str) -> Optional[str]: - # For safety - if material_type not in self._fallback_materials_map: - Logger.log("w", "The material type [%s] does not have a fallback material" % material_type) - return None - fallback_material = self._fallback_materials_map[material_type] - if fallback_material: - return self.getRootMaterialIDWithoutDiameter(fallback_material["id"]) - else: - return None - - ## Get default material for given global stack, extruder position and extruder nozzle name - # you can provide the extruder_definition and then the position is ignored (useful when building up global stack in CuraStackBuilder) - def getDefaultMaterial(self, global_stack: "GlobalStack", position: str, nozzle_name: Optional[str], - extruder_definition: Optional["DefinitionContainer"] = None) -> Optional["MaterialNode"]: - node = None - - buildplate_name = global_stack.getBuildplateName() - machine_definition = global_stack.definition - - # The extruder-compatible material diameter in the extruder definition may not be the correct value because - # the user can change it in the definition_changes container. - if extruder_definition is None: - extruder_stack_or_definition = global_stack.extruders[position] - is_extruder_stack = True - else: - extruder_stack_or_definition = extruder_definition - is_extruder_stack = False - - if extruder_stack_or_definition and parseBool(global_stack.getMetaDataEntry("has_materials", False)): - if is_extruder_stack: - material_diameter = extruder_stack_or_definition.getCompatibleMaterialDiameter() - else: - material_diameter = extruder_stack_or_definition.getProperty("material_diameter", "value") - - if isinstance(material_diameter, SettingFunction): - material_diameter = material_diameter(global_stack) - approximate_material_diameter = str(round(material_diameter)) - root_material_id = machine_definition.getMetaDataEntry("preferred_material") - root_material_id = self.getRootMaterialIDForDiameter(root_material_id, approximate_material_diameter) - node = self.getMaterialNode(machine_definition.getId(), nozzle_name, buildplate_name, - material_diameter, root_material_id) - return node - - def removeMaterialByRootId(self, root_material_id: str): - material_group = self.getMaterialGroup(root_material_id) - if not material_group: - Logger.log("i", "Unable to remove the material with id %s, because it doesn't exist.", root_material_id) - return - - nodes_to_remove = [material_group.root_material_node] + material_group.derived_material_node_list - for node in nodes_to_remove: - self._container_registry.removeContainer(node.getMetaDataEntry("id", "")) - - # - # Methods for GUI - # - - # - # Sets the new name for the given material. - # - @pyqtSlot("QVariant", str) - def setMaterialName(self, material_node: "MaterialNode", name: str) -> None: - root_material_id = material_node.getMetaDataEntry("base_file") - if root_material_id is None: - return - if self._container_registry.isReadOnly(root_material_id): - Logger.log("w", "Cannot set name of read-only container %s.", root_material_id) - return - - material_group = self.getMaterialGroup(root_material_id) - if material_group: - container = material_group.root_material_node.getContainer() - if container: - container.setName(name) - - # - # Removes the given material. - # - @pyqtSlot("QVariant") - def removeMaterial(self, material_node: "MaterialNode") -> None: - root_material_id = material_node.getMetaDataEntry("base_file") - if root_material_id is not None: - self.removeMaterialByRootId(root_material_id) - - # - # Creates a duplicate of a material, which has the same GUID and base_file metadata. - # Returns the root material ID of the duplicated material if successful. - # - @pyqtSlot("QVariant", result = str) - def duplicateMaterial(self, material_node: MaterialNode, new_base_id: Optional[str] = None, new_metadata: Dict[str, Any] = None) -> Optional[str]: - root_material_id = cast(str, material_node.getMetaDataEntry("base_file", "")) - - material_group = self.getMaterialGroup(root_material_id) - if not material_group: - Logger.log("i", "Unable to duplicate the material with id %s, because it doesn't exist.", root_material_id) - return None - - base_container = material_group.root_material_node.getContainer() - if not base_container: - return None - - # Ensure all settings are saved. - self._application.saveSettings() - - # Create a new ID & container to hold the data. - new_containers = [] - if new_base_id is None: - new_base_id = self._container_registry.uniqueName(base_container.getId()) - new_base_container = copy.deepcopy(base_container) - new_base_container.getMetaData()["id"] = new_base_id - new_base_container.getMetaData()["base_file"] = new_base_id - if new_metadata is not None: - for key, value in new_metadata.items(): - new_base_container.getMetaData()[key] = value - new_containers.append(new_base_container) - - # Clone all of them. - for node in material_group.derived_material_node_list: - container_to_copy = node.getContainer() - if not container_to_copy: - continue - # Create unique IDs for every clone. - new_id = new_base_id - if container_to_copy.getMetaDataEntry("definition") != "fdmprinter": - new_id += "_" + container_to_copy.getMetaDataEntry("definition") - if container_to_copy.getMetaDataEntry("variant_name"): - nozzle_name = container_to_copy.getMetaDataEntry("variant_name") - new_id += "_" + nozzle_name.replace(" ", "_") - - new_container = copy.deepcopy(container_to_copy) - new_container.getMetaData()["id"] = new_id - new_container.getMetaData()["base_file"] = new_base_id - if new_metadata is not None: - for key, value in new_metadata.items(): - new_container.getMetaData()[key] = value - - new_containers.append(new_container) - - for container_to_add in new_containers: - container_to_add.setDirty(True) - self._container_registry.addContainer(container_to_add) - - # if the duplicated material was favorite then the new material should also be added to favorite. - if root_material_id in self.getFavorites(): - self.addFavorite(new_base_id) - - return new_base_id - - # - # Create a new material by cloning Generic PLA for the current material diameter and generate a new GUID. - # Returns the ID of the newly created material. - @pyqtSlot(result = str) - def createMaterial(self) -> str: - from UM.i18n import i18nCatalog - catalog = i18nCatalog("cura") - # Ensure all settings are saved. - self._application.saveSettings() - - machine_manager = self._application.getMachineManager() - extruder_stack = machine_manager.activeStack - - machine_definition = self._application.getGlobalContainerStack().definition - root_material_id = machine_definition.getMetaDataEntry("preferred_material", default = "generic_pla") - - approximate_diameter = str(extruder_stack.approximateMaterialDiameter) - root_material_id = self.getRootMaterialIDForDiameter(root_material_id, approximate_diameter) - material_group = self.getMaterialGroup(root_material_id) - - if not material_group: # This should never happen - Logger.log("w", "Cannot get the material group of %s.", root_material_id) - return "" - - # Create a new ID & container to hold the data. - new_id = self._container_registry.uniqueName("custom_material") - new_metadata = {"name": catalog.i18nc("@label", "Custom Material"), - "brand": catalog.i18nc("@label", "Custom"), - "GUID": str(uuid.uuid4()), - } - - self.duplicateMaterial(material_group.root_material_node, - new_base_id = new_id, - new_metadata = new_metadata) - return new_id - - @pyqtSlot(str) - def addFavorite(self, root_material_id: str) -> None: - self._favorites.add(root_material_id) - self.materialsUpdated.emit() - - # Ensure all settings are saved. - self._application.getPreferences().setValue("cura/favorite_materials", ";".join(list(self._favorites))) - self._application.saveSettings() - - @pyqtSlot(str) - def removeFavorite(self, root_material_id: str) -> None: - try: - self._favorites.remove(root_material_id) - except KeyError: - Logger.log("w", "Could not delete material %s from favorites as it was already deleted", root_material_id) - return - self.materialsUpdated.emit() - - # Ensure all settings are saved. - self._application.getPreferences().setValue("cura/favorite_materials", ";".join(list(self._favorites))) - self._application.saveSettings() - - @pyqtSlot() - def getFavorites(self): - return self._favorites diff --git a/cura/Machines/MaterialNode.py b/cura/Machines/MaterialNode.py index a4dcb0564f..fe20af2cd5 100644 --- a/cura/Machines/MaterialNode.py +++ b/cura/Machines/MaterialNode.py @@ -1,25 +1,136 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, Dict, Any -from collections import OrderedDict -from .ContainerNode import ContainerNode +from typing import Any, Optional, TYPE_CHECKING +from UM.Logger import Logger +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.Interfaces import ContainerInterface +from UM.Signal import Signal +from cura.Machines.ContainerNode import ContainerNode +from cura.Machines.QualityNode import QualityNode +import UM.FlameProfiler +if TYPE_CHECKING: + from typing import Dict + from cura.Machines.VariantNode import VariantNode + +## Represents a material in the container tree. # -# A MaterialNode is a node in the material lookup tree/map/table. It contains 2 (extra) fields: -# - material_map: a one-to-one map of "material_root_id" to material_node. -# - children_map: the key-value map for child nodes of this node. This is used in a lookup tree. -# -# +# Its subcontainers are quality profiles. class MaterialNode(ContainerNode): - __slots__ = ("material_map", "children_map") + def __init__(self, container_id: str, variant: "VariantNode") -> None: + super().__init__(container_id) + self.variant = variant + self.qualities = {} # type: Dict[str, QualityNode] # Mapping container IDs to quality profiles. + self.materialChanged = Signal() # Triggered when the material is removed or its metadata is updated. - def __init__(self, metadata: Optional[Dict[str, Any]] = None) -> None: - super().__init__(metadata = metadata) - self.material_map = {} # type: Dict[str, MaterialNode] # material_root_id -> material_node + container_registry = ContainerRegistry.getInstance() + my_metadata = container_registry.findContainersMetadata(id = container_id)[0] + self.base_file = my_metadata["base_file"] + self.material_type = my_metadata["material"] + self.guid = my_metadata["GUID"] + self._loadAll() + container_registry.containerRemoved.connect(self._onRemoved) + container_registry.containerMetaDataChanged.connect(self._onMetadataChanged) - # We overide this as we want to indicate that MaterialNodes can only contain other material nodes. - self.children_map = OrderedDict() # type: OrderedDict[str, "MaterialNode"] + ## Finds the preferred quality for this printer with this material and this + # variant loaded. + # + # If the preferred quality is not available, an arbitrary quality is + # returned. If there is a configuration mistake (like a typo in the + # preferred quality) this returns a random available quality. If there are + # no available qualities, this will return the empty quality node. + # \return The node for the preferred quality, or any arbitrary quality if + # there is no match. + def preferredQuality(self) -> QualityNode: + for quality_id, quality_node in self.qualities.items(): + if self.variant.machine.preferred_quality_type == quality_node.quality_type: + return quality_node + fallback = next(iter(self.qualities.values())) # Should only happen with empty quality node. + Logger.log("w", "Could not find preferred quality type {preferred_quality_type} for material {material_id} and variant {variant_id}, falling back to {fallback}.".format( + preferred_quality_type = self.variant.machine.preferred_quality_type, + material_id = self.container_id, + variant_id = self.variant.container_id, + fallback = fallback.container_id + )) + return fallback - def getChildNode(self, child_key: str) -> Optional["MaterialNode"]: - return self.children_map.get(child_key) \ No newline at end of file + @UM.FlameProfiler.profile + def _loadAll(self) -> None: + container_registry = ContainerRegistry.getInstance() + # Find all quality profiles that fit on this material. + if not self.variant.machine.has_machine_quality: # Need to find the global qualities. + qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = "fdmprinter") + elif not self.variant.machine.has_materials: + qualities = container_registry.findInstanceContainersMetadata(type="quality", definition=self.variant.machine.quality_definition) + else: + if self.variant.machine.has_variants: + # Need to find the qualities that specify a material profile with the same material type. + qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name, material = self.container_id) # First try by exact material ID. + else: + qualities = container_registry.findInstanceContainersMetadata(type="quality", definition=self.variant.machine.quality_definition, material=self.container_id) + if not qualities: + my_material_type = self.material_type + if self.variant.machine.has_variants: + qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name) + else: + qualities_any_material = container_registry.findInstanceContainersMetadata(type="quality", definition = self.variant.machine.quality_definition) + for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type): + qualities.extend((quality for quality in qualities_any_material if quality.get("material") == material_metadata["id"])) + + if not qualities: # No quality profiles found. Go by GUID then. + my_guid = self.guid + for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", guid = my_guid): + qualities.extend((quality for quality in qualities_any_material if quality["material"] == material_metadata["id"])) + + if not qualities: + # There are still some machines that should use global profiles in the extruder, so do that now. + # These are mostly older machines that haven't received updates (so single extruder machines without specific qualities + # but that do have materials and profiles specific to that machine) + qualities.extend([quality for quality in qualities_any_material if quality.get("global_quality", "False") != "False"]) + + for quality in qualities: + quality_id = quality["id"] + if quality_id not in self.qualities: + self.qualities[quality_id] = QualityNode(quality_id, parent = self) + if not self.qualities: + self.qualities["empty_quality"] = QualityNode("empty_quality", parent = self) + + ## Triggered when any container is removed, but only handles it when the + # container is removed that this node represents. + # \param container The container that was allegedly removed. + def _onRemoved(self, container: ContainerInterface) -> None: + if container.getId() == self.container_id: + # Remove myself from my parent. + if self.base_file in self.variant.materials: + del self.variant.materials[self.base_file] + if not self.variant.materials: + self.variant.materials["empty_material"] = MaterialNode("empty_material", variant = self.variant) + self.materialChanged.emit(self) + + ## Triggered when any metadata changed in any container, but only handles + # it when the metadata of this node is changed. + # \param container The container whose metadata changed. + # \param kwargs Key-word arguments provided when changing the metadata. + # These are ignored. As far as I know they are never provided to this + # call. + def _onMetadataChanged(self, container: ContainerInterface, **kwargs: Any) -> None: + if container.getId() != self.container_id: + return + + new_metadata = container.getMetaData() + old_base_file = self.base_file + if new_metadata["base_file"] != old_base_file: + self.base_file = new_metadata["base_file"] + if old_base_file in self.variant.materials: # Move in parent node. + del self.variant.materials[old_base_file] + self.variant.materials[self.base_file] = self + + old_material_type = self.material_type + self.material_type = new_metadata["material"] + old_guid = self.guid + self.guid = new_metadata["GUID"] + if self.base_file != old_base_file or self.material_type != old_material_type or self.guid != old_guid: # List of quality profiles could've changed. + self.qualities = {} + self._loadAll() # Re-load the quality profiles for this node. + self.materialChanged.emit(self) diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py index 212e4fcf1e..db660704b5 100644 --- a/cura/Machines/Models/BaseMaterialsModel.py +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -1,42 +1,63 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, Dict, Set -from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty +from typing import Dict, Set + +from PyQt5.QtCore import Qt, QTimer, pyqtSignal, pyqtProperty + from UM.Qt.ListModel import ListModel +from UM.Logger import Logger +import cura.CuraApplication # Imported like this to prevent a circular reference. +from cura.Machines.ContainerTree import ContainerTree +from cura.Machines.MaterialNode import MaterialNode +from cura.Settings.CuraContainerRegistry import CuraContainerRegistry ## This is the base model class for GenericMaterialsModel and MaterialBrandsModel. # Those 2 models are used by the material drop down menu to show generic materials and branded materials separately. # The extruder position defined here is being used to bound a menu to the correct extruder. This is used in the top # bar menu "Settings" -> "Extruder nr" -> "Material" -> this menu -from cura.Machines.MaterialNode import MaterialNode - - class BaseMaterialsModel(ListModel): extruderPositionChanged = pyqtSignal() + enabledChanged = pyqtSignal() def __init__(self, parent = None): super().__init__(parent) - from cura.CuraApplication import CuraApplication self._application = CuraApplication.getInstance() + self._available_materials = {} # type: Dict[str, MaterialNode] + self._favorite_ids = set() # type: Set[str] + # Make these managers available to all material models self._container_registry = self._application.getInstance().getContainerRegistry() self._machine_manager = self._application.getMachineManager() - self._material_manager = self._application.getMaterialManager() + + self._extruder_position = 0 + self._extruder_stack = None + self._enabled = True + + # CURA-6904 + # Updating the material model requires information from material nodes and containers. We use a timer here to + # make sure that an update function call will not be directly invoked by an event. Because the triggered event + # can be caused in the middle of a XMLMaterial loading, and the material container we try to find may not be + # in the system yet. This will cause an infinite recursion of (1) trying to load a material, (2) trying to + # update the material model, (3) cannot find the material container, load it, (4) repeat #1. + self._update_timer = QTimer() + self._update_timer.setInterval(100) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._update) # Update the stack and the model data when the machine changes self._machine_manager.globalContainerChanged.connect(self._updateExtruderStack) + self._updateExtruderStack() - # Update this model when switching machines - self._machine_manager.activeStackChanged.connect(self._update) - - # Update this model when list of materials changes - self._material_manager.materialsUpdated.connect(self._update) + # Update this model when switching machines or tabs, when adding materials or changing their metadata. + self._machine_manager.activeStackChanged.connect(self._onChanged) + ContainerTree.getInstance().materialsChanged.connect(self._materialsListChanged) + self._application.getMaterialManagementModel().favoritesChanged.connect(self._onChanged) self.addRoleName(Qt.UserRole + 1, "root_material_id") self.addRoleName(Qt.UserRole + 2, "id") @@ -55,11 +76,8 @@ class BaseMaterialsModel(ListModel): self.addRoleName(Qt.UserRole + 15, "container_node") self.addRoleName(Qt.UserRole + 16, "is_favorite") - self._extruder_position = 0 - self._extruder_stack = None - - self._available_materials = None # type: Optional[Dict[str, MaterialNode]] - self._favorite_ids = set() # type: Set[str] + def _onChanged(self) -> None: + self._update_timer.start() def _updateExtruderStack(self): global_stack = self._machine_manager.activeMachine @@ -67,14 +85,19 @@ class BaseMaterialsModel(ListModel): return if self._extruder_stack is not None: - self._extruder_stack.pyqtContainersChanged.disconnect(self._update) - self._extruder_stack.approximateMaterialDiameterChanged.disconnect(self._update) - self._extruder_stack = global_stack.extruders.get(str(self._extruder_position)) + self._extruder_stack.pyqtContainersChanged.disconnect(self._onChanged) + self._extruder_stack.approximateMaterialDiameterChanged.disconnect(self._onChanged) + + try: + self._extruder_stack = global_stack.extruderList[self._extruder_position] + except IndexError: + self._extruder_stack = None + if self._extruder_stack is not None: - self._extruder_stack.pyqtContainersChanged.connect(self._update) - self._extruder_stack.approximateMaterialDiameterChanged.connect(self._update) + self._extruder_stack.pyqtContainersChanged.connect(self._onChanged) + self._extruder_stack.approximateMaterialDiameterChanged.connect(self._onChanged) # Force update the model when the extruder stack changes - self._update() + self._onChanged() def setExtruderPosition(self, position: int): if self._extruder_stack is None or self._extruder_position != position: @@ -86,36 +109,81 @@ class BaseMaterialsModel(ListModel): def extruderPosition(self) -> int: return self._extruder_position - ## This is an abstract method that needs to be implemented by the specific - # models themselves. + def setEnabled(self, enabled): + if self._enabled != enabled: + self._enabled = enabled + if self._enabled: + # ensure the data is there again. + self._onChanged() + self.enabledChanged.emit() + + @pyqtProperty(bool, fset = setEnabled, notify = enabledChanged) + def enabled(self): + return self._enabled + + ## Triggered when a list of materials changed somewhere in the container + # tree. This change may trigger an _update() call when the materials + # changed for the configuration that this model is looking for. + def _materialsListChanged(self, material: MaterialNode) -> None: + if self._extruder_stack is None: + return + if material.variant.container_id != self._extruder_stack.variant.getId(): + return + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack: + return + if material.variant.machine.container_id != global_stack.definition.getId(): + return + self._onChanged() + + ## Triggered when the list of favorite materials is changed. + def _favoritesChanged(self, material_base_file: str) -> None: + if material_base_file in self._available_materials: + self._onChanged() + + ## This is an abstract method that needs to be implemented by the specific + # models themselves. def _update(self): - pass + self._favorite_ids = set(cura.CuraApplication.CuraApplication.getInstance().getPreferences().getValue("cura/favorite_materials").split(";")) + + # Update the available materials (ContainerNode) for the current active machine and extruder setup. + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack.hasMaterials: + return # There are no materials for this machine, so nothing to do. + extruder_stack = global_stack.extruders.get(str(self._extruder_position)) + if not extruder_stack: + return + nozzle_name = extruder_stack.variant.getName() + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] + if nozzle_name not in machine_node.variants: + Logger.log("w", "Unable to find variant %s in container tree", nozzle_name) + self._available_materials = {} + return + materials = machine_node.variants[nozzle_name].materials + approximate_material_diameter = extruder_stack.getApproximateMaterialDiameter() + self._available_materials = {key: material for key, material in materials.items() if float(material.getMetaDataEntry("approximate_diameter", -1)) == approximate_material_diameter} ## This method is used by all material models in the beginning of the # _update() method in order to prevent errors. It's the same in all models # so it's placed here for easy access. def _canUpdate(self): global_stack = self._machine_manager.activeMachine - - if global_stack is None: + if global_stack is None or not self._enabled: return False extruder_position = str(self._extruder_position) - if extruder_position not in global_stack.extruders: return False - - extruder_stack = global_stack.extruders[extruder_position] - self._available_materials = self._material_manager.getAvailableMaterialsForMachineExtruder(global_stack, extruder_stack) - if self._available_materials is None: - return False return True ## This is another convenience function which is shared by all material # models so it's put here to avoid having so much duplicated code. def _createMaterialItem(self, root_material_id, container_node): - metadata = container_node.getMetadata() + metadata_list = CuraContainerRegistry.getInstance().findContainersMetadata(id = container_node.container_id) + if not metadata_list: + return None + metadata = metadata_list[0] item = { "root_material_id": root_material_id, "id": metadata["id"], @@ -136,4 +204,3 @@ class BaseMaterialsModel(ListModel): "is_favorite": root_material_id in self._favorite_ids } return item - diff --git a/cura/Machines/Models/BuildPlateModel.py b/cura/Machines/Models/BuildPlateModel.py index 82b9db4d64..3697dd2762 100644 --- a/cura/Machines/Models/BuildPlateModel.py +++ b/cura/Machines/Models/BuildPlateModel.py @@ -1,14 +1,9 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import Qt - -from UM.Application import Application from UM.Logger import Logger from UM.Qt.ListModel import ListModel -from UM.Util import parseBool - -from cura.Machines.VariantType import VariantType class BuildPlateModel(ListModel): @@ -21,31 +16,9 @@ class BuildPlateModel(ListModel): self.addRoleName(self.NameRole, "name") self.addRoleName(self.ContainerNodeRole, "container_node") - self._application = Application.getInstance() - self._variant_manager = self._application._variant_manager - self._machine_manager = self._application.getMachineManager() - - self._machine_manager.globalContainerChanged.connect(self._update) - self._update() def _update(self): Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) - global_stack = self._machine_manager._global_container_stack - if not global_stack: - self.setItems([]) - return - - has_variants = parseBool(global_stack.getMetaDataEntry("has_variant_buildplates", False)) - if not has_variants: - self.setItems([]) - return - - variant_dict = self._variant_manager.getVariantNodes(global_stack, variant_type = VariantType.BUILD_PLATE) - - item_list = [] - for name, variant_node in variant_dict.items(): - item = {"name": name, - "container_node": variant_node} - item_list.append(item) - self.setItems(item_list) + self.setItems([]) + return diff --git a/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py b/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py index dcade8cb0d..1ab7e21700 100644 --- a/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py +++ b/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py @@ -1,31 +1,48 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional, TYPE_CHECKING + from UM.Logger import Logger +import cura.CuraApplication # Imported this way to prevent circular references. +from cura.Machines.ContainerTree import ContainerTree from cura.Machines.Models.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel +if TYPE_CHECKING: + from PyQt5.QtCore import QObject + from UM.Settings.Interfaces import ContainerInterface -# -# This model is used for the custom profile items in the profile drop down menu. -# + +## This model is used for the custom profile items in the profile drop down +# menu. class CustomQualityProfilesDropDownMenuModel(QualityProfilesDropDownMenuModel): - def _update(self): + def __init__(self, parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + container_registry.containerAdded.connect(self._qualityChangesListChanged) + container_registry.containerRemoved.connect(self._qualityChangesListChanged) + container_registry.containerMetaDataChanged.connect(self._qualityChangesListChanged) + + def _qualityChangesListChanged(self, container: "ContainerInterface") -> None: + if container.getMetaDataEntry("type") == "quality_changes": + self._update() + + def _update(self) -> None: Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) - active_global_stack = self._machine_manager.activeMachine + active_global_stack = cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeMachine if active_global_stack is None: self.setItems([]) Logger.log("d", "No active GlobalStack, set %s as empty.", self.__class__.__name__) return - quality_changes_group_dict = self._quality_manager.getQualityChangesGroups(active_global_stack) + quality_changes_list = ContainerTree.getInstance().getCurrentQualityChangesGroups() item_list = [] - for key in sorted(quality_changes_group_dict, key = lambda name: name.upper()): - quality_changes_group = quality_changes_group_dict[key] - + for quality_changes_group in sorted(quality_changes_list, key = lambda qgc: qgc.name.lower()): item = {"name": quality_changes_group.name, "layer_height": "", "layer_height_without_unit": "", diff --git a/cura/Machines/Models/DiscoveredPrintersModel.py b/cura/Machines/Models/DiscoveredPrintersModel.py new file mode 100644 index 0000000000..c662334470 --- /dev/null +++ b/cura/Machines/Models/DiscoveredPrintersModel.py @@ -0,0 +1,263 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Callable, Dict, List, Optional, TYPE_CHECKING + +from PyQt5.QtCore import pyqtSlot, pyqtProperty, pyqtSignal, QObject, QTimer + +from UM.i18n import i18nCatalog +from UM.Logger import Logger +from UM.Util import parseBool +from UM.OutputDevice.OutputDeviceManager import ManualDeviceAdditionAttempt + +if TYPE_CHECKING: + from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin + from cura.CuraApplication import CuraApplication + from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice + + +catalog = i18nCatalog("cura") + + +class DiscoveredPrinter(QObject): + + def __init__(self, ip_address: str, key: str, name: str, create_callback: Callable[[str], None], machine_type: str, + device: "NetworkedPrinterOutputDevice", parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + + self._ip_address = ip_address + self._key = key + self._name = name + self.create_callback = create_callback + self._machine_type = machine_type + self._device = device + + nameChanged = pyqtSignal() + + def getKey(self) -> str: + return self._key + + @pyqtProperty(str, notify = nameChanged) + def name(self) -> str: + return self._name + + def setName(self, name: str) -> None: + if self._name != name: + self._name = name + self.nameChanged.emit() + + @pyqtProperty(str, constant = True) + def address(self) -> str: + return self._ip_address + + machineTypeChanged = pyqtSignal() + + @pyqtProperty(str, notify = machineTypeChanged) + def machineType(self) -> str: + return self._machine_type + + def setMachineType(self, machine_type: str) -> None: + if self._machine_type != machine_type: + self._machine_type = machine_type + self.machineTypeChanged.emit() + + # Checks if the given machine type name in the available machine list. + # The machine type is a code name such as "ultimaker_3", while the machine type name is the human-readable name of + # the machine type, which is "Ultimaker 3" for "ultimaker_3". + def _hasHumanReadableMachineTypeName(self, machine_type_name: str) -> bool: + from cura.CuraApplication import CuraApplication + results = CuraApplication.getInstance().getContainerRegistry().findDefinitionContainersMetadata(name = machine_type_name) + return len(results) > 0 + + # Human readable machine type string + @pyqtProperty(str, notify = machineTypeChanged) + def readableMachineType(self) -> str: + from cura.CuraApplication import CuraApplication + machine_manager = CuraApplication.getInstance().getMachineManager() + # In NetworkOutputDevice, when it updates a printer information, it updates the machine type using the field + # "machine_variant", and for some reason, it's not the machine type ID/codename/... but a human-readable string + # like "Ultimaker 3". The code below handles this case. + if self._hasHumanReadableMachineTypeName(self._machine_type): + readable_type = self._machine_type + else: + readable_type = self._getMachineTypeNameFromId(self._machine_type) + if not readable_type: + readable_type = catalog.i18nc("@label", "Unknown") + return readable_type + + @pyqtProperty(bool, notify = machineTypeChanged) + def isUnknownMachineType(self) -> bool: + if self._hasHumanReadableMachineTypeName(self._machine_type): + readable_type = self._machine_type + else: + readable_type = self._getMachineTypeNameFromId(self._machine_type) + return not readable_type + + def _getMachineTypeNameFromId(self, machine_type_id: str) -> str: + machine_type_name = "" + from cura.CuraApplication import CuraApplication + results = CuraApplication.getInstance().getContainerRegistry().findDefinitionContainersMetadata(id = machine_type_id) + if results: + machine_type_name = results[0]["name"] + return machine_type_name + + @pyqtProperty(QObject, constant = True) + def device(self) -> "NetworkedPrinterOutputDevice": + return self._device + + @pyqtProperty(bool, constant = True) + def isHostOfGroup(self) -> bool: + return getattr(self._device, "clusterSize", 1) > 0 + + @pyqtProperty(str, constant = True) + def sectionName(self) -> str: + if self.isUnknownMachineType or not self.isHostOfGroup: + return catalog.i18nc("@label", "The printer(s) below cannot be connected because they are part of a group") + else: + return catalog.i18nc("@label", "Available networked printers") + + +# +# Discovered printers are all the printers that were found on the network, which provide a more convenient way +# to add networked printers (Plugin finds a bunch of printers, user can select one from the list, plugin can then +# add that printer to Cura as the active one). +# +class DiscoveredPrintersModel(QObject): + + def __init__(self, application: "CuraApplication", parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + + self._application = application + self._discovered_printer_by_ip_dict = dict() # type: Dict[str, DiscoveredPrinter] + + self._plugin_for_manual_device = None # type: Optional[OutputDevicePlugin] + self._manual_device_address = "" + + self._manual_device_request_timeout_in_seconds = 5 # timeout for adding a manual device in seconds + self._manual_device_request_timer = QTimer() + self._manual_device_request_timer.setInterval(self._manual_device_request_timeout_in_seconds * 1000) + self._manual_device_request_timer.setSingleShot(True) + self._manual_device_request_timer.timeout.connect(self._onManualRequestTimeout) + + discoveredPrintersChanged = pyqtSignal() + + @pyqtSlot(str) + def checkManualDevice(self, address: str) -> None: + if self.hasManualDeviceRequestInProgress: + Logger.log("i", "A manual device request for address [%s] is still in progress, do nothing", + self._manual_device_address) + return + + priority_order = [ + ManualDeviceAdditionAttempt.PRIORITY, + ManualDeviceAdditionAttempt.POSSIBLE, + ] # type: List[ManualDeviceAdditionAttempt] + + all_plugins_dict = self._application.getOutputDeviceManager().getAllOutputDevicePlugins() + + can_add_manual_plugins = [item for item in filter( + lambda plugin_item: plugin_item.canAddManualDevice(address) in priority_order, + all_plugins_dict.values())] + + if not can_add_manual_plugins: + Logger.log("d", "Could not find a plugin to accept adding %s manually via address.", address) + return + + plugin = max(can_add_manual_plugins, key = lambda p: priority_order.index(p.canAddManualDevice(address))) + self._plugin_for_manual_device = plugin + self._plugin_for_manual_device.addManualDevice(address, callback = self._onManualDeviceRequestFinished) + self._manual_device_address = address + self._manual_device_request_timer.start() + self.hasManualDeviceRequestInProgressChanged.emit() + + @pyqtSlot() + def cancelCurrentManualDeviceRequest(self) -> None: + self._manual_device_request_timer.stop() + + if self._manual_device_address: + if self._plugin_for_manual_device is not None: + self._plugin_for_manual_device.removeManualDevice(self._manual_device_address, address = self._manual_device_address) + self._manual_device_address = "" + self._plugin_for_manual_device = None + self.hasManualDeviceRequestInProgressChanged.emit() + self.manualDeviceRequestFinished.emit(False) + + def _onManualRequestTimeout(self) -> None: + Logger.log("w", "Manual printer [%s] request timed out. Cancel the current request.", self._manual_device_address) + self.cancelCurrentManualDeviceRequest() + + hasManualDeviceRequestInProgressChanged = pyqtSignal() + + @pyqtProperty(bool, notify = hasManualDeviceRequestInProgressChanged) + def hasManualDeviceRequestInProgress(self) -> bool: + return self._manual_device_address != "" + + manualDeviceRequestFinished = pyqtSignal(bool, arguments = ["success"]) + + def _onManualDeviceRequestFinished(self, success: bool, address: str) -> None: + self._manual_device_request_timer.stop() + if address == self._manual_device_address: + self._manual_device_address = "" + self.hasManualDeviceRequestInProgressChanged.emit() + self.manualDeviceRequestFinished.emit(success) + + @pyqtProperty("QVariantMap", notify = discoveredPrintersChanged) + def discoveredPrintersByAddress(self) -> Dict[str, DiscoveredPrinter]: + return self._discovered_printer_by_ip_dict + + @pyqtProperty("QVariantList", notify = discoveredPrintersChanged) + def discoveredPrinters(self) -> List["DiscoveredPrinter"]: + item_list = list( + x for x in self._discovered_printer_by_ip_dict.values() if not parseBool(x.device.getProperty("temporary"))) + + # Split the printers into 2 lists and sort them ascending based on names. + available_list = [] + not_available_list = [] + for item in item_list: + if item.isUnknownMachineType or getattr(item.device, "clusterSize", 1) < 1: + not_available_list.append(item) + else: + available_list.append(item) + + available_list.sort(key = lambda x: x.device.name) + not_available_list.sort(key = lambda x: x.device.name) + + return available_list + not_available_list + + def addDiscoveredPrinter(self, ip_address: str, key: str, name: str, create_callback: Callable[[str], None], + machine_type: str, device: "NetworkedPrinterOutputDevice") -> None: + if ip_address in self._discovered_printer_by_ip_dict: + Logger.log("e", "Printer with ip [%s] has already been added", ip_address) + return + + discovered_printer = DiscoveredPrinter(ip_address, key, name, create_callback, machine_type, device, parent = self) + self._discovered_printer_by_ip_dict[ip_address] = discovered_printer + self.discoveredPrintersChanged.emit() + + def updateDiscoveredPrinter(self, ip_address: str, + name: Optional[str] = None, + machine_type: Optional[str] = None) -> None: + if ip_address not in self._discovered_printer_by_ip_dict: + Logger.log("w", "Printer with ip [%s] is not known", ip_address) + return + + item = self._discovered_printer_by_ip_dict[ip_address] + + if name is not None: + item.setName(name) + if machine_type is not None: + item.setMachineType(machine_type) + + def removeDiscoveredPrinter(self, ip_address: str) -> None: + if ip_address not in self._discovered_printer_by_ip_dict: + Logger.log("w", "Key [%s] does not exist in the discovered printers list.", ip_address) + return + + del self._discovered_printer_by_ip_dict[ip_address] + self.discoveredPrintersChanged.emit() + + # A convenience function for QML to create a machine (GlobalStack) out of the given discovered printer. + # This function invokes the given discovered printer's "create_callback" to do this. + @pyqtSlot("QVariant") + def createMachineFromDiscoveredPrinter(self, discovered_printer: "DiscoveredPrinter") -> None: + discovered_printer.create_callback(discovered_printer.getKey()) diff --git a/cura/Settings/ExtrudersModel.py b/cura/Machines/Models/ExtrudersModel.py similarity index 96% rename from cura/Settings/ExtrudersModel.py rename to cura/Machines/Models/ExtrudersModel.py index afc2af94b3..9eee7f5f9e 100644 --- a/cura/Settings/ExtrudersModel.py +++ b/cura/Machines/Models/ExtrudersModel.py @@ -2,23 +2,25 @@ # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty, QTimer -from typing import Iterable +from typing import Iterable, TYPE_CHECKING from UM.i18n import i18nCatalog -import UM.Qt.ListModel +from UM.Qt.ListModel import ListModel from UM.Application import Application import UM.FlameProfiler -from cura.Settings.ExtruderStack import ExtruderStack # To listen to changes on the extruders. +if TYPE_CHECKING: + from cura.Settings.ExtruderStack import ExtruderStack # To listen to changes on the extruders. catalog = i18nCatalog("cura") + ## Model that holds extruders. # # This model is designed for use by any list of extruders, but specifically # intended for drop-down lists of the current machine's extruders in place of # settings. -class ExtrudersModel(UM.Qt.ListModel.ListModel): +class ExtrudersModel(ListModel): # The ID of the container stack for the extruder. IdRole = Qt.UserRole + 1 @@ -134,8 +136,8 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): self._updateExtruders() # Since the new extruders may have different properties, update our own model. def _onExtruderStackContainersChanged(self, container): - # Update when there is an empty container or material change - if container.getMetaDataEntry("type") == "material" or container.getMetaDataEntry("type") is None: + # Update when there is an empty container or material or variant change + if container.getMetaDataEntry("type") in ["material", "variant", None]: # The ExtrudersModel needs to be updated when the material-name or -color changes, because the user identifies extruders by material-name self._updateExtruders() diff --git a/cura/Machines/Models/FavoriteMaterialsModel.py b/cura/Machines/Models/FavoriteMaterialsModel.py index 98a2a01597..6b8f0e8e56 100644 --- a/cura/Machines/Models/FavoriteMaterialsModel.py +++ b/cura/Machines/Models/FavoriteMaterialsModel.py @@ -1,28 +1,33 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel +import cura.CuraApplication # To listen to changes to the preferences. ## Model that shows the list of favorite materials. class FavoriteMaterialsModel(BaseMaterialsModel): def __init__(self, parent = None): super().__init__(parent) - self._update() + cura.CuraApplication.CuraApplication.getInstance().getPreferences().preferenceChanged.connect(self._onFavoritesChanged) + self._onChanged() + + ## Triggered when any preference changes, but only handles it when the list + # of favourites is changed. + def _onFavoritesChanged(self, preference_key: str) -> None: + if preference_key != "cura/favorite_materials": + return + self._onChanged() def _update(self): if not self._canUpdate(): return - - # Get updated list of favorites - self._favorite_ids = self._material_manager.getFavorites() + super()._update() item_list = [] for root_material_id, container_node in self._available_materials.items(): - metadata = container_node.getMetadata() - # Do not include the materials from a to-be-removed package - if bool(metadata.get("removed", False)): + if bool(container_node.getMetaDataEntry("removed", False)): continue # Only add results for favorite materials @@ -30,7 +35,8 @@ class FavoriteMaterialsModel(BaseMaterialsModel): continue item = self._createMaterialItem(root_material_id, container_node) - item_list.append(item) + if item: + item_list.append(item) # Sort the item list alphabetically by name item_list = sorted(item_list, key = lambda d: d["brand"].upper()) diff --git a/cura/Machines/Models/FirstStartMachineActionsModel.py b/cura/Machines/Models/FirstStartMachineActionsModel.py new file mode 100644 index 0000000000..92caed7b12 --- /dev/null +++ b/cura/Machines/Models/FirstStartMachineActionsModel.py @@ -0,0 +1,112 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional, Dict, Any, TYPE_CHECKING + +from PyQt5.QtCore import QObject, Qt, pyqtProperty, pyqtSignal, pyqtSlot + +from UM.Qt.ListModel import ListModel + +if TYPE_CHECKING: + from cura.CuraApplication import CuraApplication + + +# +# This model holds all first-start machine actions for the currently active machine. It has 2 roles: +# - title : the title/name of the action +# - content : the QObject of the QML content of the action +# - action : the MachineAction object itself +# +class FirstStartMachineActionsModel(ListModel): + + TitleRole = Qt.UserRole + 1 + ContentRole = Qt.UserRole + 2 + ActionRole = Qt.UserRole + 3 + + def __init__(self, application: "CuraApplication", parent: Optional[QObject] = None) -> None: + super().__init__(parent) + + self.addRoleName(self.TitleRole, "title") + self.addRoleName(self.ContentRole, "content") + self.addRoleName(self.ActionRole, "action") + + self._current_action_index = 0 + + self._application = application + self._application.initializationFinished.connect(self.initialize) + + self._previous_global_stack = None + + def initialize(self) -> None: + self._application.getMachineManager().globalContainerChanged.connect(self._update) + self._update() + + currentActionIndexChanged = pyqtSignal() + allFinished = pyqtSignal() # Emitted when all actions have been finished. + + @pyqtProperty(int, notify = currentActionIndexChanged) + def currentActionIndex(self) -> int: + return self._current_action_index + + @pyqtProperty("QVariantMap", notify = currentActionIndexChanged) + def currentItem(self) -> Optional[Dict[str, Any]]: + if self._current_action_index >= self.count: + return dict() + else: + return self.getItem(self._current_action_index) + + @pyqtProperty(bool, notify = currentActionIndexChanged) + def hasMoreActions(self) -> bool: + return self._current_action_index < self.count - 1 + + @pyqtSlot() + def goToNextAction(self) -> None: + # finish the current item + if "action" in self.currentItem: + self.currentItem["action"].setFinished() + + if not self.hasMoreActions: + self.allFinished.emit() + self.reset() + return + + self._current_action_index += 1 + self.currentActionIndexChanged.emit() + + # Resets the current action index to 0 so the wizard panel can show actions from the beginning. + @pyqtSlot() + def reset(self) -> None: + self._current_action_index = 0 + self.currentActionIndexChanged.emit() + + if self.count == 0: + self.allFinished.emit() + + def _update(self) -> None: + global_stack = self._application.getMachineManager().activeMachine + if global_stack is None: + self.setItems([]) + return + + # Do not update if the machine has not been switched. This can cause the SettingProviders on the Machine + # Setting page to do a force update, but they can use potential outdated cached values. + if self._previous_global_stack is not None and global_stack.getId() == self._previous_global_stack.getId(): + return + self._previous_global_stack = global_stack + + definition_id = global_stack.definition.getId() + first_start_actions = self._application.getMachineActionManager().getFirstStartActions(definition_id) + + item_list = [] + for item in first_start_actions: + item_list.append({"title": item.label, + "content": item.getDisplayItem(), + "action": item, + }) + item.reset() + + self.setItems(item_list) + self.reset() + + +__all__ = ["FirstStartMachineActionsModel"] diff --git a/cura/Machines/Models/GenericMaterialsModel.py b/cura/Machines/Models/GenericMaterialsModel.py index 8f41dd6a70..9ed1632b87 100644 --- a/cura/Machines/Models/GenericMaterialsModel.py +++ b/cura/Machines/Models/GenericMaterialsModel.py @@ -1,37 +1,33 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from UM.Logger import Logger from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel class GenericMaterialsModel(BaseMaterialsModel): def __init__(self, parent = None): super().__init__(parent) - self._update() + self._onChanged() def _update(self): if not self._canUpdate(): return - - # Get updated list of favorites - self._favorite_ids = self._material_manager.getFavorites() + super()._update() item_list = [] for root_material_id, container_node in self._available_materials.items(): - metadata = container_node.getMetadata() - # Do not include the materials from a to-be-removed package - if bool(metadata.get("removed", False)): + if bool(container_node.getMetaDataEntry("removed", False)): continue # Only add results for generic materials - if metadata["brand"].lower() != "generic": + if container_node.getMetaDataEntry("brand", "unknown").lower() != "generic": continue item = self._createMaterialItem(root_material_id, container_node) - item_list.append(item) + if item: + item_list.append(item) # Sort the item list alphabetically by name item_list = sorted(item_list, key = lambda d: d["name"].upper()) diff --git a/cura/GlobalStacksModel.py b/cura/Machines/Models/GlobalStacksModel.py similarity index 57% rename from cura/GlobalStacksModel.py rename to cura/Machines/Models/GlobalStacksModel.py index 32b0d9cead..9db4ffe6db 100644 --- a/cura/GlobalStacksModel.py +++ b/cura/Machines/Models/GlobalStacksModel.py @@ -1,11 +1,15 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import Qt +from PyQt5.QtCore import Qt, QTimer from UM.Qt.ListModel import ListModel -from cura.PrinterOutputDevice import ConnectionType +from UM.i18n import i18nCatalog +from UM.Util import parseBool + +from cura.PrinterOutput.PrinterOutputDevice import ConnectionType from cura.Settings.CuraContainerRegistry import CuraContainerRegistry +from cura.Settings.GlobalStack import GlobalStack class GlobalStacksModel(ListModel): @@ -14,47 +18,60 @@ class GlobalStacksModel(ListModel): HasRemoteConnectionRole = Qt.UserRole + 3 ConnectionTypeRole = Qt.UserRole + 4 MetaDataRole = Qt.UserRole + 5 + DiscoverySourceRole = Qt.UserRole + 6 # For separating local and remote printers in the machine management page - def __init__(self, parent = None): + def __init__(self, parent = None) -> None: super().__init__(parent) + + self._catalog = i18nCatalog("cura") + self.addRoleName(self.NameRole, "name") self.addRoleName(self.IdRole, "id") self.addRoleName(self.HasRemoteConnectionRole, "hasRemoteConnection") self.addRoleName(self.MetaDataRole, "metadata") - self._container_stacks = [] + self.addRoleName(self.DiscoverySourceRole, "discoverySource") + + self._change_timer = QTimer() + self._change_timer.setInterval(200) + self._change_timer.setSingleShot(True) + self._change_timer.timeout.connect(self._update) # Listen to changes CuraContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged) CuraContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerChanged) CuraContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChanged) - self._filter_dict = {} - self._update() + self._updateDelayed() ## Handler for container added/removed events from registry - def _onContainerChanged(self, container): - from cura.Settings.GlobalStack import GlobalStack # otherwise circular imports - + def _onContainerChanged(self, container) -> None: # We only need to update when the added / removed container GlobalStack if isinstance(container, GlobalStack): - self._update() + self._updateDelayed() + + def _updateDelayed(self) -> None: + self._change_timer.start() def _update(self) -> None: items = [] container_stacks = CuraContainerRegistry.getInstance().findContainerStacks(type = "machine") - for container_stack in container_stacks: has_remote_connection = False for connection_type in container_stack.configuredConnectionTypes: - has_remote_connection |= connection_type in [ConnectionType.NetworkConnection.value, ConnectionType.CloudConnection.value] + has_remote_connection |= connection_type in [ConnectionType.NetworkConnection.value, + ConnectionType.CloudConnection.value] - if container_stack.getMetaDataEntry("hidden", False) in ["True", True]: + if parseBool(container_stack.getMetaDataEntry("hidden", False)): continue + section_name = "Network enabled printers" if has_remote_connection else "Local printers" + section_name = self._catalog.i18nc("@info:title", section_name) + items.append({"name": container_stack.getMetaDataEntry("group_name", container_stack.getName()), "id": container_stack.getId(), "hasRemoteConnection": has_remote_connection, - "metadata": container_stack.getMetaData().copy()}) - items.sort(key=lambda i: not i["hasRemoteConnection"]) + "metadata": container_stack.getMetaData().copy(), + "discoverySource": section_name}) + items.sort(key = lambda i: (not i["hasRemoteConnection"], i["name"])) self.setItems(items) diff --git a/cura/Machines/Models/IntentCategoryModel.py b/cura/Machines/Models/IntentCategoryModel.py new file mode 100644 index 0000000000..202d79bb15 --- /dev/null +++ b/cura/Machines/Models/IntentCategoryModel.py @@ -0,0 +1,118 @@ +#Copyright (c) 2019 Ultimaker B.V. +#Cura is released under the terms of the LGPLv3 or higher. + +import collections +from PyQt5.QtCore import Qt, QTimer +from typing import TYPE_CHECKING, Optional, Dict +from cura.Machines.Models.IntentTranslations import intent_translations + +from cura.Machines.Models.IntentModel import IntentModel +from cura.Settings.IntentManager import IntentManager +from UM.Qt.ListModel import ListModel +from UM.Settings.ContainerRegistry import ContainerRegistry #To update the list if anything changes. +from PyQt5.QtCore import pyqtProperty, pyqtSignal +import cura.CuraApplication +if TYPE_CHECKING: + from UM.Settings.ContainerRegistry import ContainerInterface + +from UM.i18n import i18nCatalog +catalog = i18nCatalog("cura") + + +## Lists the intent categories that are available for the current printer +# configuration. +class IntentCategoryModel(ListModel): + NameRole = Qt.UserRole + 1 + IntentCategoryRole = Qt.UserRole + 2 + WeightRole = Qt.UserRole + 3 + QualitiesRole = Qt.UserRole + 4 + DescriptionRole = Qt.UserRole + 5 + + modelUpdated = pyqtSignal() + + _translations = collections.OrderedDict() # type: "collections.OrderedDict[str,Dict[str,Optional[str]]]" + + # Translations to user-visible string. Ordered by weight. + # TODO: Create a solution for this name and weight to be used dynamically. + @classmethod + def _get_translations(cls): + if len(cls._translations) == 0: + cls._translations["default"] = { + "name": catalog.i18nc("@label", "Default") + } + cls._translations["visual"] = { + "name": catalog.i18nc("@label", "Visual"), + "description": catalog.i18nc("@text", "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality.") + } + cls._translations["engineering"] = { + "name": catalog.i18nc("@label", "Engineering"), + "description": catalog.i18nc("@text", "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances.") + } + cls._translations["quick"] = { + "name": catalog.i18nc("@label", "Draft"), + "description": catalog.i18nc("@text", "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction.") + } + return cls._translations + + ## Creates a new model for a certain intent category. + # \param The category to list the intent profiles for. + def __init__(self, intent_category: str) -> None: + super().__init__() + self._intent_category = intent_category + + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.IntentCategoryRole, "intent_category") + self.addRoleName(self.WeightRole, "weight") + self.addRoleName(self.QualitiesRole, "qualities") + self.addRoleName(self.DescriptionRole, "description") + + application = cura.CuraApplication.CuraApplication.getInstance() + + ContainerRegistry.getInstance().containerAdded.connect(self._onContainerChange) + ContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChange) + machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager() + machine_manager.activeMaterialChanged.connect(self.update) + machine_manager.activeVariantChanged.connect(self.update) + machine_manager.extruderChanged.connect(self.update) + + extruder_manager = application.getExtruderManager() + extruder_manager.extrudersChanged.connect(self.update) + + self._update_timer = QTimer() + self._update_timer.setInterval(500) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._update) + + self.update() + + ## Updates the list of intents if an intent profile was added or removed. + def _onContainerChange(self, container: "ContainerInterface") -> None: + if container.getMetaDataEntry("type") == "intent": + self.update() + + def update(self): + self._update_timer.start() + + ## Updates the list of intents. + def _update(self) -> None: + available_categories = IntentManager.getInstance().currentAvailableIntentCategories() + result = [] + for category in available_categories: + qualities = IntentModel() + qualities.setIntentCategory(category) + result.append({ + "name": IntentCategoryModel.translation(category, "name", catalog.i18nc("@label", "Unknown")), + "description": IntentCategoryModel.translation(category, "description", None), + "intent_category": category, + "weight": list(IntentCategoryModel._get_translations().keys()).index(category), + "qualities": qualities + }) + result.sort(key = lambda k: k["weight"]) + self.setItems(result) + + ## Get a display value for a category. + ## for categories and keys + @staticmethod + def translation(category: str, key: str, default: Optional[str] = None): + display_strings = IntentCategoryModel._get_translations().get(category, {}) + return display_strings.get(key, default) diff --git a/cura/Machines/Models/IntentModel.py b/cura/Machines/Models/IntentModel.py new file mode 100644 index 0000000000..986f28a826 --- /dev/null +++ b/cura/Machines/Models/IntentModel.py @@ -0,0 +1,135 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional, Dict, Any, Set, List + +from PyQt5.QtCore import Qt, QObject, pyqtProperty, pyqtSignal + +import cura.CuraApplication +from UM.Qt.ListModel import ListModel +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Logger import Logger +from cura.Machines.ContainerTree import ContainerTree +from cura.Machines.MaterialNode import MaterialNode +from cura.Machines.Models.MachineModelUtils import fetchLayerHeight +from cura.Machines.QualityGroup import QualityGroup + + +class IntentModel(ListModel): + NameRole = Qt.UserRole + 1 + QualityTypeRole = Qt.UserRole + 2 + LayerHeightRole = Qt.UserRole + 3 + AvailableRole = Qt.UserRole + 4 + IntentRole = Qt.UserRole + 5 + + def __init__(self, parent: Optional[QObject] = None) -> None: + super().__init__(parent) + + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.QualityTypeRole, "quality_type") + self.addRoleName(self.LayerHeightRole, "layer_height") + self.addRoleName(self.AvailableRole, "available") + self.addRoleName(self.IntentRole, "intent_category") + + self._intent_category = "engineering" + + machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager() + machine_manager.globalContainerChanged.connect(self._update) + machine_manager.extruderChanged.connect(self._update) # We also need to update if an extruder gets disabled + ContainerRegistry.getInstance().containerAdded.connect(self._onChanged) + ContainerRegistry.getInstance().containerRemoved.connect(self._onChanged) + self._layer_height_unit = "" # This is cached + self._update() + + intentCategoryChanged = pyqtSignal() + + def setIntentCategory(self, new_category: str) -> None: + if self._intent_category != new_category: + self._intent_category = new_category + self.intentCategoryChanged.emit() + self._update() + + @pyqtProperty(str, fset = setIntentCategory, notify = intentCategoryChanged) + def intentCategory(self) -> str: + return self._intent_category + + def _onChanged(self, container): + if container.getMetaDataEntry("type") == "intent": + self._update() + + def _update(self) -> None: + new_items = [] # type: List[Dict[str, Any]] + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack: + self.setItems(new_items) + return + quality_groups = ContainerTree.getInstance().getCurrentQualityGroups() + + material_nodes = self._getActiveMaterials() + + added_quality_type_set = set() # type: Set[str] + for material_node in material_nodes: + intents = self._getIntentsForMaterial(material_node, quality_groups) + for intent in intents: + if intent["quality_type"] not in added_quality_type_set: + new_items.append(intent) + added_quality_type_set.add(intent["quality_type"]) + + # Now that we added all intents that we found something for, ensure that we set add ticks (and layer_heights) + # for all groups that we don't have anything for (and set it to not available) + for quality_type, quality_group in quality_groups.items(): + # Add the intents that are of the correct category + if quality_type not in added_quality_type_set: + layer_height = fetchLayerHeight(quality_group) + new_items.append({"name": "Unavailable", + "quality_type": quality_type, + "layer_height": layer_height, + "intent_category": self._intent_category, + "available": False}) + added_quality_type_set.add(quality_type) + + new_items = sorted(new_items, key = lambda x: x["layer_height"]) + self.setItems(new_items) + + ## Get the active materials for all extruders. No duplicates will be returned + def _getActiveMaterials(self) -> Set["MaterialNode"]: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return set() + + container_tree = ContainerTree.getInstance() + machine_node = container_tree.machines[global_stack.definition.getId()] + nodes = set() # type: Set[MaterialNode] + + for extruder in global_stack.extruderList: + active_variant_name = extruder.variant.getMetaDataEntry("name") + if active_variant_name not in machine_node.variants: + Logger.log("w", "Could not find the variant %s", active_variant_name) + continue + active_variant_node = machine_node.variants[active_variant_name] + active_material_node = active_variant_node.materials[extruder.material.getMetaDataEntry("base_file")] + nodes.add(active_material_node) + + return nodes + + def _getIntentsForMaterial(self, active_material_node: "MaterialNode", quality_groups: Dict[str, "QualityGroup"]) -> List[Dict[str, Any]]: + extruder_intents = [] # type: List[Dict[str, Any]] + + for quality_id, quality_node in active_material_node.qualities.items(): + if quality_node.quality_type not in quality_groups: # Don't add the empty quality type (or anything else that would crash, defensively). + continue + quality_group = quality_groups[quality_node.quality_type] + layer_height = fetchLayerHeight(quality_group) + + for intent_id, intent_node in quality_node.intents.items(): + if intent_node.intent_category != self._intent_category: + continue + extruder_intents.append({"name": quality_group.name, + "quality_type": quality_group.quality_type, + "layer_height": layer_height, + "available": quality_group.is_available, + "intent_category": self._intent_category + }) + return extruder_intents + + def __repr__(self): + return str(self.items) diff --git a/cura/Machines/Models/IntentTranslations.py b/cura/Machines/Models/IntentTranslations.py new file mode 100644 index 0000000000..050fb1de56 --- /dev/null +++ b/cura/Machines/Models/IntentTranslations.py @@ -0,0 +1,24 @@ +import collections +from typing import Dict, Optional + +from UM.i18n import i18nCatalog +from typing import Dict, Optional +catalog = i18nCatalog("cura") + + +intent_translations = collections.OrderedDict() # type: collections.OrderedDict[str, Dict[str, Optional[str]]] +intent_translations["default"] = { + "name": catalog.i18nc("@label", "Default") +} +intent_translations["visual"] = { + "name": catalog.i18nc("@label", "Visual"), + "description": catalog.i18nc("@text", "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality.") +} +intent_translations["engineering"] = { + "name": catalog.i18nc("@label", "Engineering"), + "description": catalog.i18nc("@text", "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances.") +} +intent_translations["quick"] = { + "name": catalog.i18nc("@label", "Draft"), + "description": catalog.i18nc("@text", "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction.") +} diff --git a/cura/Machines/Models/MachineManagementModel.py b/cura/Machines/Models/MachineManagementModel.py deleted file mode 100644 index 3297b8a467..0000000000 --- a/cura/Machines/Models/MachineManagementModel.py +++ /dev/null @@ -1,82 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from UM.Qt.ListModel import ListModel - -from PyQt5.QtCore import Qt - -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.ContainerStack import ContainerStack - -from UM.i18n import i18nCatalog -catalog = i18nCatalog("cura") - - -# -# This the QML model for the quality management page. -# -class MachineManagementModel(ListModel): - NameRole = Qt.UserRole + 1 - IdRole = Qt.UserRole + 2 - MetaDataRole = Qt.UserRole + 3 - GroupRole = Qt.UserRole + 4 - - def __init__(self, parent = None): - super().__init__(parent) - self.addRoleName(self.NameRole, "name") - self.addRoleName(self.IdRole, "id") - self.addRoleName(self.MetaDataRole, "metadata") - self.addRoleName(self.GroupRole, "group") - self._local_container_stacks = [] - self._network_container_stacks = [] - - # Listen to changes - ContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged) - ContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerChanged) - ContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChanged) - self._filter_dict = {} - self._update() - - ## Handler for container added/removed events from registry - def _onContainerChanged(self, container): - # We only need to update when the added / removed container is a stack. - if isinstance(container, ContainerStack) and container.getMetaDataEntry("type") == "machine": - self._update() - - ## Private convenience function to reset & repopulate the model. - def _update(self): - items = [] - - # Get first the network enabled printers - network_filter_printers = {"type": "machine", - "um_network_key": "*", - "hidden": "False"} - self._network_container_stacks = ContainerRegistry.getInstance().findContainerStacks(**network_filter_printers) - self._network_container_stacks.sort(key = lambda i: i.getMetaDataEntry("group_name", "")) - - for container in self._network_container_stacks: - metadata = container.getMetaData().copy() - if container.getBottom(): - metadata["definition_name"] = container.getBottom().getName() - - items.append({"name": metadata.get("group_name", ""), - "id": container.getId(), - "metadata": metadata, - "group": catalog.i18nc("@info:title", "Network enabled printers")}) - - # Get now the local printers - local_filter_printers = {"type": "machine", "um_network_key": None} - self._local_container_stacks = ContainerRegistry.getInstance().findContainerStacks(**local_filter_printers) - self._local_container_stacks.sort(key = lambda i: i.getName()) - - for container in self._local_container_stacks: - metadata = container.getMetaData().copy() - if container.getBottom(): - metadata["definition_name"] = container.getBottom().getName() - - items.append({"name": container.getName(), - "id": container.getId(), - "metadata": metadata, - "group": catalog.i18nc("@info:title", "Local printers")}) - - self.setItems(items) diff --git a/cura/Machines/Models/MachineModelUtils.py b/cura/Machines/Models/MachineModelUtils.py new file mode 100644 index 0000000000..a23b1ff3a5 --- /dev/null +++ b/cura/Machines/Models/MachineModelUtils.py @@ -0,0 +1,37 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import TYPE_CHECKING + +from UM.Settings.SettingFunction import SettingFunction + +if TYPE_CHECKING: + from cura.Machines.QualityGroup import QualityGroup + +layer_height_unit = "" + + +def fetchLayerHeight(quality_group: "QualityGroup") -> float: + from cura.CuraApplication import CuraApplication + global_stack = CuraApplication.getInstance().getMachineManager().activeMachine + + default_layer_height = global_stack.definition.getProperty("layer_height", "value") + + # Get layer_height from the quality profile for the GlobalStack + if quality_group.node_for_global is None: + return float(default_layer_height) + container = quality_group.node_for_global.container + + layer_height = default_layer_height + if container and container.hasProperty("layer_height", "value"): + layer_height = container.getProperty("layer_height", "value") + else: + # Look for layer_height in the GlobalStack from material -> definition + container = global_stack.definition + if container and container.hasProperty("layer_height", "value"): + layer_height = container.getProperty("layer_height", "value") + + if isinstance(layer_height, SettingFunction): + layer_height = layer_height(global_stack) + + return float(layer_height) diff --git a/cura/Machines/Models/MaterialBrandsModel.py b/cura/Machines/Models/MaterialBrandsModel.py index ac82cf6670..184d27f390 100644 --- a/cura/Machines/Models/MaterialBrandsModel.py +++ b/cura/Machines/Models/MaterialBrandsModel.py @@ -1,9 +1,8 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty +from PyQt5.QtCore import Qt, pyqtSignal from UM.Qt.ListModel import ListModel -from UM.Logger import Logger from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel class MaterialTypesModel(ListModel): @@ -30,8 +29,7 @@ class MaterialBrandsModel(BaseMaterialsModel): def _update(self): if not self._canUpdate(): return - # Get updated list of favorites - self._favorite_ids = self._material_manager.getFavorites() + super()._update() brand_item_list = [] brand_group_dict = {} @@ -56,7 +54,8 @@ class MaterialBrandsModel(BaseMaterialsModel): # Now handle the individual materials item = self._createMaterialItem(root_material_id, container_node) - brand_group_dict[brand][material_type].append(item) + if item: + brand_group_dict[brand][material_type].append(item) # Part 2: Organize the tree into models # diff --git a/cura/Machines/Models/MaterialManagementModel.py b/cura/Machines/Models/MaterialManagementModel.py new file mode 100644 index 0000000000..f00b81e987 --- /dev/null +++ b/cura/Machines/Models/MaterialManagementModel.py @@ -0,0 +1,246 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import copy # To duplicate materials. +from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot # To allow the preference page proxy to be used from the actual preferences page. +from typing import Any, Dict, Optional, TYPE_CHECKING +import uuid # To generate new GUIDs for new materials. + +from UM.i18n import i18nCatalog +from UM.Logger import Logger +from UM.Signal import postponeSignals, CompressTechnique + +import cura.CuraApplication # Imported like this to prevent circular imports. +from cura.Machines.ContainerTree import ContainerTree +from cura.Settings.CuraContainerRegistry import CuraContainerRegistry # To find the sets of materials belonging to each other, and currently loaded extruder stacks. + +if TYPE_CHECKING: + from cura.Machines.MaterialNode import MaterialNode + +catalog = i18nCatalog("cura") + +## Proxy class to the materials page in the preferences. +# +# This class handles the actions in that page, such as creating new materials, +# renaming them, etc. +class MaterialManagementModel(QObject): + ## Triggered when a favorite is added or removed. + # \param The base file of the material is provided as parameter when this + # emits. + favoritesChanged = pyqtSignal(str) + + ## Can a certain material be deleted, or is it still in use in one of the + # container stacks anywhere? + # + # We forbid the user from deleting a material if it's in use in any stack. + # Deleting it while it's in use can lead to corrupted stacks. In the + # future we might enable this functionality again (deleting the material + # from those stacks) but for now it is easier to prevent the user from + # doing this. + # \param material_node The ContainerTree node of the material to check. + # \return Whether or not the material can be removed. + @pyqtSlot("QVariant", result = bool) + def canMaterialBeRemoved(self, material_node: "MaterialNode") -> bool: + container_registry = CuraContainerRegistry.getInstance() + ids_to_remove = {metadata.get("id", "") for metadata in container_registry.findInstanceContainersMetadata(base_file = material_node.base_file)} + for extruder_stack in container_registry.findContainerStacks(type = "extruder_train"): + if extruder_stack.material.getId() in ids_to_remove: + return False + return True + + ## Change the user-visible name of a material. + # \param material_node The ContainerTree node of the material to rename. + # \param name The new name for the material. + @pyqtSlot("QVariant", str) + def setMaterialName(self, material_node: "MaterialNode", name: str) -> None: + container_registry = CuraContainerRegistry.getInstance() + root_material_id = material_node.base_file + if container_registry.isReadOnly(root_material_id): + Logger.log("w", "Cannot set name of read-only container %s.", root_material_id) + return + return container_registry.findContainers(id = root_material_id)[0].setName(name) + + ## Deletes a material from Cura. + # + # This function does not do any safety checking any more. Please call this + # function only if: + # - The material is not read-only. + # - The material is not used in any stacks. + # If the material was not lazy-loaded yet, this will fully load the + # container. When removing this material node, all other materials with + # the same base fill will also be removed. + # \param material_node The material to remove. + @pyqtSlot("QVariant") + def removeMaterial(self, material_node: "MaterialNode") -> None: + container_registry = CuraContainerRegistry.getInstance() + materials_this_base_file = container_registry.findContainersMetadata(base_file = material_node.base_file) + + # The material containers belonging to the same material file are supposed to work together. This postponeSignals() + # does two things: + # - optimizing the signal emitting. + # - making sure that the signals will only be emitted after all the material containers have been removed. + with postponeSignals(container_registry.containerRemoved, compress = CompressTechnique.CompressPerParameterValue): + # CURA-6886: Some containers may not have been loaded. If remove one material container, its material file + # will be removed. If later we remove a sub-material container which hasn't been loaded previously, it will + # crash because removeContainer() requires to load the container first, but the material file was already + # gone. + for material_metadata in materials_this_base_file: + container_registry.findInstanceContainers(id = material_metadata["id"]) + for material_metadata in materials_this_base_file: + container_registry.removeContainer(material_metadata["id"]) + + ## Creates a duplicate of a material with the same GUID and base_file + # metadata. + # \param base_file: The base file of the material to duplicate. + # \param new_base_id A new material ID for the base material. The IDs of + # the submaterials will be based off this one. If not provided, a material + # ID will be generated automatically. + # \param new_metadata Metadata for the new material. If not provided, this + # will be duplicated from the original material. + # \return The root material ID of the duplicate material. + def duplicateMaterialByBaseFile(self, base_file: str, new_base_id: Optional[str] = None, + new_metadata: Optional[Dict[str, Any]] = None) -> Optional[str]: + container_registry = CuraContainerRegistry.getInstance() + + root_materials = container_registry.findContainers(id = base_file) + if not root_materials: + Logger.log("i", "Unable to duplicate the root material with ID {root_id}, because it doesn't exist.".format(root_id = base_file)) + return None + root_material = root_materials[0] + + # Ensure that all settings are saved. + application = cura.CuraApplication.CuraApplication.getInstance() + application.saveSettings() + + # Create a new ID and container to hold the data. + if new_base_id is None: + new_base_id = container_registry.uniqueName(root_material.getId()) + new_root_material = copy.deepcopy(root_material) + new_root_material.getMetaData()["id"] = new_base_id + new_root_material.getMetaData()["base_file"] = new_base_id + if new_metadata is not None: + new_root_material.getMetaData().update(new_metadata) + new_containers = [new_root_material] + + # Clone all submaterials. + for container_to_copy in container_registry.findInstanceContainers(base_file = base_file): + if container_to_copy.getId() == base_file: + continue # We already have that one. Skip it. + new_id = new_base_id + definition = container_to_copy.getMetaDataEntry("definition") + if definition != "fdmprinter": + new_id += "_" + definition + variant_name = container_to_copy.getMetaDataEntry("variant_name") + if variant_name: + new_id += "_" + variant_name.replace(" ", "_") + + new_container = copy.deepcopy(container_to_copy) + new_container.getMetaData()["id"] = new_id + new_container.getMetaData()["base_file"] = new_base_id + if new_metadata is not None: + new_container.getMetaData().update(new_metadata) + new_containers.append(new_container) + + # CURA-6863: Nodes in ContainerTree will be updated upon ContainerAdded signals, one at a time. It will use the + # best fit material container at the time it sees one. For example, if you duplicate and get generic_pva #2, + # if the node update function sees the containers in the following order: + # + # - generic_pva #2 + # - generic_pva #2_um3_aa04 + # + # It will first use "generic_pva #2" because that's the best fit it has ever seen, and later "generic_pva #2_um3_aa04" + # once it sees that. Because things run in the Qt event loop, they don't happen at the same time. This means if + # between those two events, the ContainerTree will have nodes that contain invalid data. + # + # This sort fixes the problem by emitting the most specific containers first. + new_containers = sorted(new_containers, key = lambda x: x.getId(), reverse = True) + + # Optimization. Serving the same purpose as the postponeSignals() in removeMaterial() + # postpone the signals emitted when duplicating materials. This is easier on the event loop; changes the + # behavior to be like a transaction. Prevents concurrency issues. + with postponeSignals(container_registry.containerAdded, compress=CompressTechnique.CompressPerParameterValue): + for container_to_add in new_containers: + container_to_add.setDirty(True) + container_registry.addContainer(container_to_add) + + # If the duplicated material was favorite then the new material should also be added to the favorites. + favorites_set = set(application.getPreferences().getValue("cura/favorite_materials").split(";")) + if base_file in favorites_set: + favorites_set.add(new_base_id) + application.getPreferences().setValue("cura/favorite_materials", ";".join(favorites_set)) + + return new_base_id + + ## Creates a duplicate of a material with the same GUID and base_file + # metadata. + # \param material_node The node representing the material to duplicate. + # \param new_base_id A new material ID for the base material. The IDs of + # the submaterials will be based off this one. If not provided, a material + # ID will be generated automatically. + # \param new_metadata Metadata for the new material. If not provided, this + # will be duplicated from the original material. + # \return The root material ID of the duplicate material. + @pyqtSlot("QVariant", result = str) + def duplicateMaterial(self, material_node: "MaterialNode", new_base_id: Optional[str] = None, + new_metadata: Optional[Dict[str, Any]] = None) -> Optional[str]: + return self.duplicateMaterialByBaseFile(material_node.base_file, new_base_id, new_metadata) + + ## Create a new material by cloning the preferred material for the current + # material diameter and generate a new GUID. + # + # The material type is explicitly left to be the one from the preferred + # material, since this allows the user to still have SOME profiles to work + # with. + # \return The ID of the newly created material. + @pyqtSlot(result = str) + def createMaterial(self) -> str: + # Ensure all settings are saved. + application = cura.CuraApplication.CuraApplication.getInstance() + application.saveSettings() + + # Find the preferred material. + extruder_stack = application.getMachineManager().activeStack + active_variant_name = extruder_stack.variant.getName() + approximate_diameter = int(extruder_stack.approximateMaterialDiameter) + global_container_stack = application.getGlobalContainerStack() + if not global_container_stack: + return "" + machine_node = ContainerTree.getInstance().machines[global_container_stack.definition.getId()] + preferred_material_node = machine_node.variants[active_variant_name].preferredMaterial(approximate_diameter) + + # Create a new ID & new metadata for the new material. + new_id = CuraContainerRegistry.getInstance().uniqueName("custom_material") + new_metadata = {"name": catalog.i18nc("@label", "Custom Material"), + "brand": catalog.i18nc("@label", "Custom"), + "GUID": str(uuid.uuid4()), + } + + self.duplicateMaterial(preferred_material_node, new_base_id = new_id, new_metadata = new_metadata) + return new_id + + ## Adds a certain material to the favorite materials. + # \param material_base_file The base file of the material to add. + @pyqtSlot(str) + def addFavorite(self, material_base_file: str) -> None: + application = cura.CuraApplication.CuraApplication.getInstance() + favorites = application.getPreferences().getValue("cura/favorite_materials").split(";") + if material_base_file not in favorites: + favorites.append(material_base_file) + application.getPreferences().setValue("cura/favorite_materials", ";".join(favorites)) + application.saveSettings() + self.favoritesChanged.emit(material_base_file) + + ## Removes a certain material from the favorite materials. + # + # If the material was not in the favorite materials, nothing happens. + @pyqtSlot(str) + def removeFavorite(self, material_base_file: str) -> None: + application = cura.CuraApplication.CuraApplication.getInstance() + favorites = application.getPreferences().getValue("cura/favorite_materials").split(";") + try: + favorites.remove(material_base_file) + application.getPreferences().setValue("cura/favorite_materials", ";".join(favorites)) + application.saveSettings() + self.favoritesChanged.emit(material_base_file) + except ValueError: # Material was not in the favorites list. + Logger.log("w", "Material {material_base_file} was already not a favorite material.".format(material_base_file = material_base_file)) diff --git a/cura/Machines/Models/MultiBuildPlateModel.py b/cura/Machines/Models/MultiBuildPlateModel.py index 958e93837a..add960a545 100644 --- a/cura/Machines/Models/MultiBuildPlateModel.py +++ b/cura/Machines/Models/MultiBuildPlateModel.py @@ -4,6 +4,7 @@ from PyQt5.QtCore import QTimer, pyqtSignal, pyqtProperty from UM.Application import Application +from UM.Scene.Camera import Camera from UM.Scene.Selection import Selection from UM.Qt.ListModel import ListModel @@ -34,8 +35,9 @@ class MultiBuildPlateModel(ListModel): self._active_build_plate = -1 def setMaxBuildPlate(self, max_build_plate): - self._max_build_plate = max_build_plate - self.maxBuildPlateChanged.emit() + if self._max_build_plate != max_build_plate: + self._max_build_plate = max_build_plate + self.maxBuildPlateChanged.emit() ## Return the highest build plate number @pyqtProperty(int, notify = maxBuildPlateChanged) @@ -43,15 +45,17 @@ class MultiBuildPlateModel(ListModel): return self._max_build_plate def setActiveBuildPlate(self, nr): - self._active_build_plate = nr - self.activeBuildPlateChanged.emit() + if self._active_build_plate != nr: + self._active_build_plate = nr + self.activeBuildPlateChanged.emit() @pyqtProperty(int, notify = activeBuildPlateChanged) def activeBuildPlate(self): return self._active_build_plate def _updateSelectedObjectBuildPlateNumbersDelayed(self, *args): - self._update_timer.start() + if not isinstance(args[0], Camera): + self._update_timer.start() def _updateSelectedObjectBuildPlateNumbers(self, *args): result = set() diff --git a/cura/Machines/Models/NozzleModel.py b/cura/Machines/Models/NozzleModel.py index 785ff5b9b9..5f7f8b02f5 100644 --- a/cura/Machines/Models/NozzleModel.py +++ b/cura/Machines/Models/NozzleModel.py @@ -1,14 +1,12 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import Qt -from UM.Application import Application from UM.Logger import Logger from UM.Qt.ListModel import ListModel -from UM.Util import parseBool - -from cura.Machines.VariantType import VariantType +import cura.CuraApplication # Imported like this to prevent circular dependencies. +from cura.Machines.ContainerTree import ContainerTree class NozzleModel(ListModel): @@ -23,33 +21,24 @@ class NozzleModel(ListModel): self.addRoleName(self.HotendNameRole, "hotend_name") self.addRoleName(self.ContainerNodeRole, "container_node") - self._application = Application.getInstance() - self._machine_manager = self._application.getMachineManager() - self._variant_manager = self._application.getVariantManager() - - self._machine_manager.globalContainerChanged.connect(self._update) + cura.CuraApplication.CuraApplication.getInstance().getMachineManager().globalContainerChanged.connect(self._update) self._update() def _update(self): Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) - global_stack = self._machine_manager.activeMachine + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() if global_stack is None: self.setItems([]) return + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] - has_variants = parseBool(global_stack.getMetaDataEntry("has_variants", False)) - if not has_variants: - self.setItems([]) - return - - variant_node_dict = self._variant_manager.getVariantNodes(global_stack, VariantType.NOZZLE) - if not variant_node_dict: + if not machine_node.has_variants: self.setItems([]) return item_list = [] - for hotend_name, container_node in sorted(variant_node_dict.items(), key = lambda i: i[0].upper()): + for hotend_name, container_node in sorted(machine_node.variants.items(), key = lambda i: i[0].upper()): item = {"id": hotend_name, "hotend_name": hotend_name, "container_node": container_node @@ -57,4 +46,4 @@ class NozzleModel(ListModel): item_list.append(item) - self.setItems(item_list) + self.setItems(item_list) \ No newline at end of file diff --git a/cura/Machines/Models/QualityManagementModel.py b/cura/Machines/Models/QualityManagementModel.py index 315ab010bb..74dc8649d0 100644 --- a/cura/Machines/Models/QualityManagementModel.py +++ b/cura/Machines/Models/QualityManagementModel.py @@ -1,10 +1,30 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import Qt, pyqtSlot +from typing import Any, cast, Dict, Optional, TYPE_CHECKING +from PyQt5.QtCore import pyqtSlot, QObject, Qt, QTimer -from UM.Qt.ListModel import ListModel from UM.Logger import Logger +from UM.Qt.ListModel import ListModel +from UM.Settings.InstanceContainer import InstanceContainer # To create new profiles. + +import cura.CuraApplication # Imported this way to prevent circular imports. +from cura.Settings.ContainerManager import ContainerManager +from cura.Machines.ContainerTree import ContainerTree +from cura.Settings.cura_empty_instance_containers import empty_quality_changes_container +from cura.Settings.IntentManager import IntentManager +from cura.Machines.Models.MachineModelUtils import fetchLayerHeight +from cura.Machines.Models.IntentTranslations import intent_translations + +from UM.i18n import i18nCatalog +catalog = i18nCatalog("cura") + +if TYPE_CHECKING: + from UM.Settings.Interfaces import ContainerInterface + from cura.Machines.QualityChangesGroup import QualityChangesGroup + from cura.Settings.ExtruderStack import ExtruderStack + from cura.Settings.GlobalStack import GlobalStack + # # This the QML model for the quality management page. @@ -13,26 +33,257 @@ class QualityManagementModel(ListModel): NameRole = Qt.UserRole + 1 IsReadOnlyRole = Qt.UserRole + 2 QualityGroupRole = Qt.UserRole + 3 - QualityChangesGroupRole = Qt.UserRole + 4 + QualityTypeRole = Qt.UserRole + 4 + QualityChangesGroupRole = Qt.UserRole + 5 + IntentCategoryRole = Qt.UserRole + 6 + SectionNameRole = Qt.UserRole + 7 - def __init__(self, parent = None): + def __init__(self, parent: Optional["QObject"] = None) -> None: super().__init__(parent) self.addRoleName(self.NameRole, "name") self.addRoleName(self.IsReadOnlyRole, "is_read_only") self.addRoleName(self.QualityGroupRole, "quality_group") + self.addRoleName(self.QualityTypeRole, "quality_type") self.addRoleName(self.QualityChangesGroupRole, "quality_changes_group") + self.addRoleName(self.IntentCategoryRole, "intent_category") + self.addRoleName(self.SectionNameRole, "section_name") - from cura.CuraApplication import CuraApplication - self._container_registry = CuraApplication.getInstance().getContainerRegistry() - self._machine_manager = CuraApplication.getInstance().getMachineManager() - self._extruder_manager = CuraApplication.getInstance().getExtruderManager() - self._quality_manager = CuraApplication.getInstance().getQualityManager() + application = cura.CuraApplication.CuraApplication.getInstance() + container_registry = application.getContainerRegistry() + self._machine_manager = application.getMachineManager() + self._machine_manager.activeQualityGroupChanged.connect(self._onChange) + self._machine_manager.activeStackChanged.connect(self._onChange) + self._machine_manager.extruderChanged.connect(self._onChange) + self._machine_manager.globalContainerChanged.connect(self._onChange) - self._machine_manager.globalContainerChanged.connect(self._update) - self._quality_manager.qualitiesUpdated.connect(self._update) + self._extruder_manager = application.getExtruderManager() + self._extruder_manager.extrudersChanged.connect(self._onChange) - self._update() + container_registry.containerAdded.connect(self._qualityChangesListChanged) + container_registry.containerRemoved.connect(self._qualityChangesListChanged) + container_registry.containerMetaDataChanged.connect(self._qualityChangesListChanged) + + self._update_timer = QTimer() + self._update_timer.setInterval(100) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._update) + + self._onChange() + + def _onChange(self) -> None: + self._update_timer.start() + + ## Deletes a custom profile. It will be gone forever. + # \param quality_changes_group The quality changes group representing the + # profile to delete. + @pyqtSlot(QObject) + def removeQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup") -> None: + Logger.log("i", "Removing quality changes group {group_name}".format(group_name = quality_changes_group.name)) + removed_quality_changes_ids = set() + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + for metadata in [quality_changes_group.metadata_for_global] + list(quality_changes_group.metadata_per_extruder.values()): + container_id = metadata["id"] + container_registry.removeContainer(container_id) + removed_quality_changes_ids.add(container_id) + + # Reset all machines that have activated this custom profile. + for global_stack in container_registry.findContainerStacks(type = "machine"): + if global_stack.qualityChanges.getId() in removed_quality_changes_ids: + global_stack.qualityChanges = empty_quality_changes_container + for extruder_stack in container_registry.findContainerStacks(type = "extruder_train"): + if extruder_stack.qualityChanges.getId() in removed_quality_changes_ids: + extruder_stack.qualityChanges = empty_quality_changes_container + + ## Rename a custom profile. + # + # Because the names must be unique, the new name may not actually become + # the name that was given. The actual name is returned by this function. + # \param quality_changes_group The custom profile that must be renamed. + # \param new_name The desired name for the profile. + # \return The actual new name of the profile, after making the name + # unique. + @pyqtSlot(QObject, str, result = str) + def renameQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup", new_name: str) -> str: + Logger.log("i", "Renaming QualityChangesGroup {old_name} to {new_name}.".format(old_name = quality_changes_group.name, new_name = new_name)) + if new_name == quality_changes_group.name: + Logger.log("i", "QualityChangesGroup name {name} unchanged.".format(name = quality_changes_group.name)) + return new_name + + application = cura.CuraApplication.CuraApplication.getInstance() + container_registry = application.getContainerRegistry() + new_name = container_registry.uniqueName(new_name) + # CURA-6842 + # FIXME: setName() will trigger metaDataChanged signal that are connected with type Qt.AutoConnection. In this + # case, setName() will trigger direct connections which in turn causes the quality changes group and the models + # to update. Because multiple containers need to be renamed, and every time a container gets renamed, updates + # gets triggered and this results in partial updates. For example, if we rename the global quality changes + # container first, the rest of the system still thinks that I have selected "my_profile" instead of + # "my_new_profile", but an update already gets triggered, and the quality changes group that's selected will + # have no container for the global stack, because "my_profile" just got renamed to "my_new_profile". This results + # in crashes because the rest of the system assumes that all data in a QualityChangesGroup will be correct. + # + # Renaming the container for the global stack in the end seems to be ok, because the assumption is mostly based + # on the quality changes container for the global stack. + for metadata in quality_changes_group.metadata_per_extruder.values(): + extruder_container = cast(InstanceContainer, container_registry.findContainers(id = metadata["id"])[0]) + extruder_container.setName(new_name) + global_container = cast(InstanceContainer, container_registry.findContainers(id=quality_changes_group.metadata_for_global["id"])[0]) + global_container.setName(new_name) + + quality_changes_group.name = new_name + + application.getMachineManager().activeQualityChanged.emit() + application.getMachineManager().activeQualityGroupChanged.emit() + + return new_name + + ## Duplicates a given quality profile OR quality changes profile. + # \param new_name The desired name of the new profile. This will be made + # unique, so it might end up with a different name. + # \param quality_model_item The item of this model to duplicate, as + # dictionary. See the descriptions of the roles of this list model. + @pyqtSlot(str, "QVariantMap") + def duplicateQualityChanges(self, new_name: str, quality_model_item: Dict[str, Any]) -> None: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack: + Logger.log("i", "No active global stack, cannot duplicate quality (changes) profile.") + return + + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + new_name = container_registry.uniqueName(new_name) + + intent_category = quality_model_item["intent_category"] + quality_group = quality_model_item["quality_group"] + quality_changes_group = quality_model_item["quality_changes_group"] + if quality_changes_group is None: + # Create global quality changes only. + new_quality_changes = self._createQualityChanges(quality_group.quality_type, intent_category, new_name, + global_stack, extruder_stack = None) + container_registry.addContainer(new_quality_changes) + else: + for metadata in [quality_changes_group.metadata_for_global] + list(quality_changes_group.metadata_per_extruder.values()): + containers = container_registry.findContainers(id = metadata["id"]) + if not containers: + continue + container = containers[0] + new_id = container_registry.uniqueName(container.getId()) + container_registry.addContainer(container.duplicate(new_id, new_name)) + + ## Create quality changes containers from the user containers in the active + # stacks. + # + # This will go through the global and extruder stacks and create + # quality_changes containers from the user containers in each stack. These + # then replace the quality_changes containers in the stack and clear the + # user settings. + # \param base_name The new name for the quality changes profile. The final + # name of the profile might be different from this, because it needs to be + # made unique. + @pyqtSlot(str) + def createQualityChanges(self, base_name: str) -> None: + machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager() + + global_stack = machine_manager.activeMachine + if not global_stack: + return + + active_quality_name = machine_manager.activeQualityOrQualityChangesName + if active_quality_name == "": + Logger.log("w", "No quality container found in stack %s, cannot create profile", global_stack.getId()) + return + + machine_manager.blurSettings.emit() + if base_name is None or base_name == "": + base_name = active_quality_name + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + unique_name = container_registry.uniqueName(base_name) + + # Go through the active stacks and create quality_changes containers from the user containers. + container_manager = ContainerManager.getInstance() + stack_list = [global_stack] + list(global_stack.extruders.values()) + for stack in stack_list: + quality_container = stack.quality + quality_changes_container = stack.qualityChanges + if not quality_container or not quality_changes_container: + Logger.log("w", "No quality or quality changes container found in stack %s, ignoring it", stack.getId()) + continue + + extruder_stack = None + intent_category = None + if stack.getMetaDataEntry("position") is not None: + extruder_stack = stack + intent_category = stack.intent.getMetaDataEntry("intent_category") + new_changes = self._createQualityChanges(quality_container.getMetaDataEntry("quality_type"), intent_category, unique_name, global_stack, extruder_stack) + container_manager._performMerge(new_changes, quality_changes_container, clear_settings = False) + container_manager._performMerge(new_changes, stack.userChanges) + + container_registry.addContainer(new_changes) + + ## Create a quality changes container with the given set-up. + # \param quality_type The quality type of the new container. + # \param intent_category The intent category of the new container. + # \param new_name The name of the container. This name must be unique. + # \param machine The global stack to create the profile for. + # \param extruder_stack The extruder stack to create the profile for. If + # not provided, only a global container will be created. + def _createQualityChanges(self, quality_type: str, intent_category: Optional[str], new_name: str, machine: "GlobalStack", extruder_stack: Optional["ExtruderStack"]) -> "InstanceContainer": + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + base_id = machine.definition.getId() if extruder_stack is None else extruder_stack.getId() + new_id = base_id + "_" + new_name + new_id = new_id.lower().replace(" ", "_") + new_id = container_registry.uniqueName(new_id) + + # Create a new quality_changes container for the quality. + quality_changes = InstanceContainer(new_id) + quality_changes.setName(new_name) + quality_changes.setMetaDataEntry("type", "quality_changes") + quality_changes.setMetaDataEntry("quality_type", quality_type) + if intent_category is not None: + quality_changes.setMetaDataEntry("intent_category", intent_category) + + # If we are creating a container for an extruder, ensure we add that to the container. + if extruder_stack is not None: + quality_changes.setMetaDataEntry("position", extruder_stack.getMetaDataEntry("position")) + + # If the machine specifies qualities should be filtered, ensure we match the current criteria. + machine_definition_id = ContainerTree.getInstance().machines[machine.definition.getId()].quality_definition + quality_changes.setDefinition(machine_definition_id) + + quality_changes.setMetaDataEntry("setting_version", cura.CuraApplication.CuraApplication.getInstance().SettingVersion) + return quality_changes + + ## Triggered when any container changed. + # + # This filters the updates to the container manager: When it applies to + # the list of quality changes, we need to update our list. + def _qualityChangesListChanged(self, container: "ContainerInterface") -> None: + if container.getMetaDataEntry("type") == "quality_changes": + self._update() + + @pyqtSlot("QVariantMap", result = str) + def getQualityItemDisplayName(self, quality_model_item: Dict[str, Any]) -> str: + quality_group = quality_model_item["quality_group"] + is_read_only = quality_model_item["is_read_only"] + intent_category = quality_model_item["intent_category"] + + quality_level_name = "Not Supported" + if quality_group is not None: + quality_level_name = quality_group.name + + display_name = quality_level_name + + if intent_category != "default": + intent_display_name = catalog.i18nc("@label", intent_category.capitalize()) + display_name = "{intent_name} - {the_rest}".format(intent_name = intent_display_name, + the_rest = display_name) + + # A custom quality + if not is_read_only: + display_name = "{custom_profile_name} - {the_rest}".format(custom_profile_name = quality_model_item["name"], + the_rest = display_name) + + return display_name def _update(self): Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) @@ -42,38 +293,71 @@ class QualityManagementModel(ListModel): self.setItems([]) return - quality_group_dict = self._quality_manager.getQualityGroups(global_stack) - quality_changes_group_dict = self._quality_manager.getQualityChangesGroups(global_stack) + container_tree = ContainerTree.getInstance() + quality_group_dict = container_tree.getCurrentQualityGroups() + quality_changes_group_list = container_tree.getCurrentQualityChangesGroups() available_quality_types = set(quality_type for quality_type, quality_group in quality_group_dict.items() if quality_group.is_available) - if not available_quality_types and not quality_changes_group_dict: + if not available_quality_types and not quality_changes_group_list: # Nothing to show self.setItems([]) return item_list = [] - # Create quality group items + # Create quality group items (intent category = "default") for quality_group in quality_group_dict.values(): if not quality_group.is_available: continue + layer_height = fetchLayerHeight(quality_group) + item = {"name": quality_group.name, "is_read_only": True, "quality_group": quality_group, - "quality_changes_group": None} + "quality_type": quality_group.quality_type, + "quality_changes_group": None, + "intent_category": "default", + "section_name": catalog.i18nc("@label", "Default"), + "layer_height": layer_height, # layer_height is only used for sorting + } item_list.append(item) - # Sort by quality names - item_list = sorted(item_list, key = lambda x: x["name"].upper()) + # Sort by layer_height for built-in qualities + item_list = sorted(item_list, key = lambda x: x["layer_height"]) + + # Create intent items (non-default) + available_intent_list = IntentManager.getInstance().getCurrentAvailableIntents() + available_intent_list = [i for i in available_intent_list if i[0] != "default"] + result = [] + for intent_category, quality_type in available_intent_list: + result.append({ + "name": quality_group_dict[quality_type].name, # Use the quality name as the display name + "is_read_only": True, + "quality_group": quality_group_dict[quality_type], + "quality_type": quality_type, + "quality_changes_group": None, + "intent_category": intent_category, + "section_name": catalog.i18nc("@label", intent_translations.get(intent_category, {}).get("name", catalog.i18nc("@label", "Unknown"))), + }) + # Sort by quality_type for each intent category + + result = sorted(result, key = lambda x: (list(intent_translations).index(x["intent_category"]), x["quality_type"])) + item_list += result # Create quality_changes group items quality_changes_item_list = [] - for quality_changes_group in quality_changes_group_dict.values(): + for quality_changes_group in quality_changes_group_list: + # CURA-6913 Note that custom qualities can be based on "not supported", so the quality group can be None. quality_group = quality_group_dict.get(quality_changes_group.quality_type) + quality_type = quality_changes_group.quality_type item = {"name": quality_changes_group.name, "is_read_only": False, "quality_group": quality_group, - "quality_changes_group": quality_changes_group} + "quality_type": quality_type, + "quality_changes_group": quality_changes_group, + "intent_category": quality_changes_group.intent_category, + "section_name": catalog.i18nc("@label", "Custom profiles"), + } quality_changes_item_list.append(item) # Sort quality_changes items by names and append to the item list diff --git a/cura/Machines/Models/QualityProfilesDropDownMenuModel.py b/cura/Machines/Models/QualityProfilesDropDownMenuModel.py index 7ccc886bfe..3a79ceeaf1 100644 --- a/cura/Machines/Models/QualityProfilesDropDownMenuModel.py +++ b/cura/Machines/Models/QualityProfilesDropDownMenuModel.py @@ -1,14 +1,14 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import Qt, QTimer -from UM.Application import Application +import cura.CuraApplication # Imported this way to prevent circular dependencies. from UM.Logger import Logger from UM.Qt.ListModel import ListModel -from UM.Settings.SettingFunction import SettingFunction +from cura.Machines.ContainerTree import ContainerTree +from cura.Machines.Models.MachineModelUtils import fetchLayerHeight -from cura.Machines.QualityManager import QualityGroup # # QML Model for all built-in quality profiles. This model is used for the drop-down quality menu. @@ -35,14 +35,17 @@ class QualityProfilesDropDownMenuModel(ListModel): self.addRoleName(self.QualityChangesGroupRole, "quality_changes_group") self.addRoleName(self.IsExperimentalRole, "is_experimental") - self._application = Application.getInstance() - self._machine_manager = self._application.getMachineManager() - self._quality_manager = Application.getInstance().getQualityManager() + application = cura.CuraApplication.CuraApplication.getInstance() + machine_manager = application.getMachineManager() - self._application.globalContainerStackChanged.connect(self._onChange) - self._machine_manager.activeQualityGroupChanged.connect(self._onChange) - self._machine_manager.extruderChanged.connect(self._onChange) - self._quality_manager.qualitiesUpdated.connect(self._onChange) + application.globalContainerStackChanged.connect(self._onChange) + machine_manager.activeQualityGroupChanged.connect(self._onChange) + machine_manager.activeMaterialChanged.connect(self._onChange) + machine_manager.activeVariantChanged.connect(self._onChange) + machine_manager.extruderChanged.connect(self._onChange) + + extruder_manager = application.getExtruderManager() + extruder_manager.extrudersChanged.connect(self._onChange) self._layer_height_unit = "" # This is cached @@ -51,7 +54,7 @@ class QualityProfilesDropDownMenuModel(ListModel): self._update_timer.setSingleShot(True) self._update_timer.timeout.connect(self._update) - self._update() + self._onChange() def _onChange(self) -> None: self._update_timer.start() @@ -59,25 +62,36 @@ class QualityProfilesDropDownMenuModel(ListModel): def _update(self): Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) - global_stack = self._machine_manager.activeMachine + # CURA-6836 + # LabelBar is a repeater that creates labels for quality layer heights. Because of an optimization in + # UM.ListModel, the model will not remove all items and recreate new ones every time there's an update. + # Because LabelBar uses Repeater with Labels anchoring to "undefined" in certain cases, the anchoring will be + # kept the same as before. + self.setItems([]) + + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() if global_stack is None: self.setItems([]) Logger.log("d", "No active GlobalStack, set quality profile model as empty.") return + if not self._layer_height_unit: + unit = global_stack.definition.getProperty("layer_height", "unit") + if not unit: + unit = "" + self._layer_height_unit = unit + # Check for material compatibility - if not self._machine_manager.activeMaterialsCompatible(): + if not cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeMaterialsCompatible(): Logger.log("d", "No active material compatibility, set quality profile model as empty.") self.setItems([]) return - quality_group_dict = self._quality_manager.getQualityGroups(global_stack) + quality_group_dict = ContainerTree.getInstance().getCurrentQualityGroups() item_list = [] - for key in sorted(quality_group_dict): - quality_group = quality_group_dict[key] - - layer_height = self._fetchLayerHeight(quality_group) + for quality_group in quality_group_dict.values(): + layer_height = fetchLayerHeight(quality_group) item = {"name": quality_group.name, "quality_type": quality_group.quality_type, @@ -93,32 +107,3 @@ class QualityProfilesDropDownMenuModel(ListModel): item_list = sorted(item_list, key = lambda x: x["layer_height"]) self.setItems(item_list) - - def _fetchLayerHeight(self, quality_group: "QualityGroup") -> float: - global_stack = self._machine_manager.activeMachine - if not self._layer_height_unit: - unit = global_stack.definition.getProperty("layer_height", "unit") - if not unit: - unit = "" - self._layer_height_unit = unit - - default_layer_height = global_stack.definition.getProperty("layer_height", "value") - - # Get layer_height from the quality profile for the GlobalStack - if quality_group.node_for_global is None: - return float(default_layer_height) - container = quality_group.node_for_global.getContainer() - - layer_height = default_layer_height - if container and container.hasProperty("layer_height", "value"): - layer_height = container.getProperty("layer_height", "value") - else: - # Look for layer_height in the GlobalStack from material -> definition - container = global_stack.definition - if container and container.hasProperty("layer_height", "value"): - layer_height = container.getProperty("layer_height", "value") - - if isinstance(layer_height, SettingFunction): - layer_height = layer_height(global_stack) - - return float(layer_height) diff --git a/cura/Machines/Models/QualitySettingsModel.py b/cura/Machines/Models/QualitySettingsModel.py index 88005e69ca..6835ffb68f 100644 --- a/cura/Machines/Models/QualitySettingsModel.py +++ b/cura/Machines/Models/QualitySettingsModel.py @@ -1,9 +1,9 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import pyqtProperty, pyqtSignal, Qt -from UM.Application import Application +import cura.CuraApplication from UM.Logger import Logger from UM.Qt.ListModel import ListModel from UM.Settings.ContainerRegistry import ContainerRegistry @@ -35,15 +35,13 @@ class QualitySettingsModel(ListModel): self.addRoleName(self.CategoryRole, "category") self._container_registry = ContainerRegistry.getInstance() - self._application = Application.getInstance() - self._quality_manager = self._application.getQualityManager() + self._application = cura.CuraApplication.CuraApplication.getInstance() + self._application.getMachineManager().activeStackChanged.connect(self._update) self._selected_position = self.GLOBAL_STACK_POSITION #Must be either GLOBAL_STACK_POSITION or an extruder position (0, 1, etc.) self._selected_quality_item = None # The selected quality in the quality management page self._i18n_catalog = None - self._quality_manager.qualitiesUpdated.connect(self._update) - self._update() selectedPositionChanged = pyqtSignal() @@ -93,21 +91,33 @@ class QualitySettingsModel(ListModel): quality_node = quality_group.nodes_for_extruders.get(str(self._selected_position)) settings_keys = quality_group.getAllKeys() quality_containers = [] - if quality_node is not None and quality_node.getContainer() is not None: - quality_containers.append(quality_node.getContainer()) + if quality_node is not None and quality_node.container is not None: + quality_containers.append(quality_node.container) # Here, if the user has selected a quality changes, then "quality_changes_group" will not be None, and we fetch # the settings in that quality_changes_group. if quality_changes_group is not None: - if self._selected_position == self.GLOBAL_STACK_POSITION: - quality_changes_node = quality_changes_group.node_for_global + container_registry = ContainerRegistry.getInstance() + global_containers = container_registry.findContainers(id = quality_changes_group.metadata_for_global["id"]) + global_container = None if len(global_containers) == 0 else global_containers[0] + extruders_containers = {pos: container_registry.findContainers(id = quality_changes_group.metadata_per_extruder[pos]["id"]) for pos in quality_changes_group.metadata_per_extruder} + extruders_container = {pos: None if not containers else containers[0] for pos, containers in extruders_containers.items()} + if self._selected_position == self.GLOBAL_STACK_POSITION and global_container: + quality_changes_metadata = global_container.getMetaData() else: - quality_changes_node = quality_changes_group.nodes_for_extruders.get(str(self._selected_position)) - if quality_changes_node is not None and quality_changes_node.getContainer() is not None: # it can be None if number of extruders are changed during runtime - quality_containers.insert(0, quality_changes_node.getContainer()) - settings_keys.update(quality_changes_group.getAllKeys()) + quality_changes_metadata = extruders_container.get(str(self._selected_position)) + if quality_changes_metadata is not None: # It can be None if number of extruders are changed during runtime. + container = container_registry.findContainers(id = quality_changes_metadata["id"]) + if container: + quality_containers.insert(0, container[0]) - # We iterate over all definitions instead of settings in a quality/qualtiy_changes group is because in the GUI, + if global_container: + settings_keys.update(global_container.getAllKeys()) + for container in extruders_container.values(): + if container: + settings_keys.update(container.getAllKeys()) + + # We iterate over all definitions instead of settings in a quality/quality_changes group is because in the GUI, # the settings are grouped together by categories, and we had to go over all the definitions to figure out # which setting belongs in which category. current_category = "" diff --git a/cura/Settings/UserChangesModel.py b/cura/Machines/Models/UserChangesModel.py similarity index 98% rename from cura/Settings/UserChangesModel.py rename to cura/Machines/Models/UserChangesModel.py index 9a26e5607e..ec623f0f38 100644 --- a/cura/Settings/UserChangesModel.py +++ b/cura/Machines/Models/UserChangesModel.py @@ -10,7 +10,6 @@ from UM.Application import Application from UM.Settings.ContainerRegistry import ContainerRegistry from UM.i18n import i18nCatalog from UM.Settings.SettingFunction import SettingFunction - from UM.Qt.ListModel import ListModel @@ -51,7 +50,7 @@ class UserChangesModel(ListModel): return stacks = [global_stack] - stacks.extend(global_stack.extruders.values()) + stacks.extend(global_stack.extruderList) # Check if the definition container has a translation file and ensure it's loaded. definition = global_stack.getBottom() diff --git a/cura/Machines/QualityChangesGroup.py b/cura/Machines/QualityChangesGroup.py index 7844b935dc..655060070b 100644 --- a/cura/Machines/QualityChangesGroup.py +++ b/cura/Machines/QualityChangesGroup.py @@ -1,33 +1,37 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import TYPE_CHECKING +from typing import Any, Dict, Optional -from UM.Application import Application -from UM.ConfigurationErrorMessage import ConfigurationErrorMessage - -from .QualityGroup import QualityGroup - -if TYPE_CHECKING: - from cura.Machines.QualityNode import QualityNode +from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal -class QualityChangesGroup(QualityGroup): - def __init__(self, name: str, quality_type: str, parent = None) -> None: - super().__init__(name, quality_type, parent) - self._container_registry = Application.getInstance().getContainerRegistry() +## Data struct to group several quality changes instance containers together. +# +# Each group represents one "custom profile" as the user sees it, which +# contains an instance container for the global stack and one instance +# container per extruder. +class QualityChangesGroup(QObject): - def addNode(self, node: "QualityNode") -> None: - extruder_position = node.getMetaDataEntry("position") + def __init__(self, name: str, quality_type: str, intent_category: str, parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + self._name = name + self.quality_type = quality_type + self.intent_category = intent_category + self.is_available = False + self.metadata_for_global = {} # type: Dict[str, Any] + self.metadata_per_extruder = {} # type: Dict[int, Dict[str, Any]] - if extruder_position is None and self.node_for_global is not None or extruder_position in self.nodes_for_extruders: #We would be overwriting another node. - ConfigurationErrorMessage.getInstance().addFaultyContainers(node.getMetaDataEntry("id")) - return + nameChanged = pyqtSignal() - if extruder_position is None: # Then we're a global quality changes profile. - self.node_for_global = node - else: # This is an extruder's quality changes profile. - self.nodes_for_extruders[extruder_position] = node + def setName(self, name: str) -> None: + if self._name != name: + self._name = name + self.nameChanged.emit() + + @pyqtProperty(str, fset = setName, notify = nameChanged) + def name(self) -> str: + return self._name def __str__(self) -> str: - return "%s[<%s>, available = %s]" % (self.__class__.__name__, self.name, self.is_available) + return "{class_name}[{name}, available = {is_available}]".format(class_name = self.__class__.__name__, name = self.name, is_available = self.is_available) diff --git a/cura/Machines/QualityGroup.py b/cura/Machines/QualityGroup.py index f5bcbb0de8..58ba3acc63 100644 --- a/cura/Machines/QualityGroup.py +++ b/cura/Machines/QualityGroup.py @@ -1,32 +1,38 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Dict, Optional, List, Set from PyQt5.QtCore import QObject, pyqtSlot +from UM.Logger import Logger from UM.Util import parseBool from cura.Machines.ContainerNode import ContainerNode +## A QualityGroup represents a group of quality containers that must be applied +# to each ContainerStack when it's used. # -# A QualityGroup represents a group of containers that must be applied to each ContainerStack when it's used. -# Some concrete examples are Quality and QualityChanges: when we select quality type "normal", this quality type -# must be applied to all stacks in a machine, although each stack can have different containers. Use an Ultimaker 3 -# as an example, suppose we choose quality type "normal", the actual InstanceContainers on each stack may look -# as below: -# GlobalStack ExtruderStack 1 ExtruderStack 2 -# quality container: um3_global_normal um3_aa04_pla_normal um3_aa04_abs_normal +# A concrete example: When there are two extruders and the user selects the +# quality type "normal", this quality type must be applied to all stacks in a +# machine, although each stack can have different containers. So one global +# profile gets put on the global stack and one extruder profile gets put on +# each extruder stack. This quality group then contains the following +# profiles (for instance): +# GlobalStack ExtruderStack 1 ExtruderStack 2 +# quality container: um3_global_normal um3_aa04_pla_normal um3_aa04_abs_normal # -# This QualityGroup is mainly used in quality and quality_changes to group the containers that can be applied to -# a machine, so when a quality/custom quality is selected, the container can be directly applied to each stack instead -# of looking them up again. -# -class QualityGroup(QObject): - - def __init__(self, name: str, quality_type: str, parent = None) -> None: - super().__init__(parent) +# The purpose of these quality groups is to group the containers that can be +# applied to a configuration, so that when a quality level is selected, the +# container can directly be applied to each stack instead of looking them up +# again. +class QualityGroup: + ## Constructs a new group. + # \param name The user-visible name for the group. + # \param quality_type The quality level that each profile in this group + # has. + def __init__(self, name: str, quality_type: str) -> None: self.name = name self.node_for_global = None # type: Optional[ContainerNode] self.nodes_for_extruders = {} # type: Dict[int, ContainerNode] @@ -34,7 +40,6 @@ class QualityGroup(QObject): self.is_available = False self.is_experimental = False - @pyqtSlot(result = str) def getName(self) -> str: return self.name @@ -43,7 +48,7 @@ class QualityGroup(QObject): for node in [self.node_for_global] + list(self.nodes_for_extruders.values()): if node is None: continue - container = node.getContainer() + container = node.container if container: result.update(container.getAllKeys()) return result @@ -60,6 +65,9 @@ class QualityGroup(QObject): self.node_for_global = node # Update is_experimental flag + if not node.container: + Logger.log("w", "Node {0} doesn't have a container.".format(node.container_id)) + return is_experimental = parseBool(node.getMetaDataEntry("is_experimental", False)) self.is_experimental |= is_experimental @@ -67,5 +75,8 @@ class QualityGroup(QObject): self.nodes_for_extruders[position] = node # Update is_experimental flag + if not node.container: + Logger.log("w", "Node {0} doesn't have a container.".format(node.container_id)) + return is_experimental = parseBool(node.getMetaDataEntry("is_experimental", False)) self.is_experimental |= is_experimental diff --git a/cura/Machines/QualityManager.py b/cura/Machines/QualityManager.py deleted file mode 100644 index 34cc9ce4b2..0000000000 --- a/cura/Machines/QualityManager.py +++ /dev/null @@ -1,550 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from typing import TYPE_CHECKING, Optional, cast, Dict, List, Set - -from PyQt5.QtCore import QObject, QTimer, pyqtSignal, pyqtSlot - -from UM.ConfigurationErrorMessage import ConfigurationErrorMessage -from UM.Logger import Logger -from UM.Util import parseBool -from UM.Settings.InstanceContainer import InstanceContainer - -from cura.Settings.ExtruderStack import ExtruderStack - -from .QualityGroup import QualityGroup -from .QualityNode import QualityNode - -if TYPE_CHECKING: - from UM.Settings.Interfaces import DefinitionContainerInterface - from cura.Settings.GlobalStack import GlobalStack - from .QualityChangesGroup import QualityChangesGroup - from cura.CuraApplication import CuraApplication - - -# -# Similar to MaterialManager, QualityManager maintains a number of maps and trees for quality profile lookup. -# The models GUI and QML use are now only dependent on the QualityManager. That means as long as the data in -# QualityManager gets updated correctly, the GUI models should be updated correctly too, and the same goes for GUI. -# -# For now, updating the lookup maps and trees here is very simple: we discard the old data completely and recreate them -# again. This means the update is exactly the same as initialization. There are performance concerns about this approach -# but so far the creation of the tables and maps is very fast and there is no noticeable slowness, we keep it like this -# because it's simple. -# -class QualityManager(QObject): - - qualitiesUpdated = pyqtSignal() - - def __init__(self, application: "CuraApplication", parent = None) -> None: - super().__init__(parent) - self._application = application - self._material_manager = self._application.getMaterialManager() - self._container_registry = self._application.getContainerRegistry() - - self._empty_quality_container = self._application.empty_quality_container - self._empty_quality_changes_container = self._application.empty_quality_changes_container - - # For quality lookup - self._machine_nozzle_buildplate_material_quality_type_to_quality_dict = {} # type: Dict[str, QualityNode] - - # For quality_changes lookup - self._machine_quality_type_to_quality_changes_dict = {} # type: Dict[str, QualityNode] - - self._default_machine_definition_id = "fdmprinter" - - self._container_registry.containerMetaDataChanged.connect(self._onContainerMetadataChanged) - self._container_registry.containerAdded.connect(self._onContainerMetadataChanged) - self._container_registry.containerRemoved.connect(self._onContainerMetadataChanged) - - # When a custom quality gets added/imported, there can be more than one InstanceContainers. In those cases, - # we don't want to react on every container/metadata changed signal. The timer here is to buffer it a bit so - # we don't react too many time. - self._update_timer = QTimer(self) - self._update_timer.setInterval(300) - self._update_timer.setSingleShot(True) - self._update_timer.timeout.connect(self._updateMaps) - - def initialize(self) -> None: - # Initialize the lookup tree for quality profiles with following structure: - # -> -> -> - # -> - - self._machine_nozzle_buildplate_material_quality_type_to_quality_dict = {} # for quality lookup - self._machine_quality_type_to_quality_changes_dict = {} # for quality_changes lookup - - quality_metadata_list = self._container_registry.findContainersMetadata(type = "quality") - for metadata in quality_metadata_list: - if metadata["id"] == "empty_quality": - continue - - definition_id = metadata["definition"] - quality_type = metadata["quality_type"] - - root_material_id = metadata.get("material") - nozzle_name = metadata.get("variant") - buildplate_name = metadata.get("buildplate") - is_global_quality = metadata.get("global_quality", False) - is_global_quality = is_global_quality or (root_material_id is None and nozzle_name is None and buildplate_name is None) - - # Sanity check: material+variant and is_global_quality cannot be present at the same time - if is_global_quality and (root_material_id or nozzle_name): - ConfigurationErrorMessage.getInstance().addFaultyContainers(metadata["id"]) - continue - - if definition_id not in self._machine_nozzle_buildplate_material_quality_type_to_quality_dict: - self._machine_nozzle_buildplate_material_quality_type_to_quality_dict[definition_id] = QualityNode() - machine_node = cast(QualityNode, self._machine_nozzle_buildplate_material_quality_type_to_quality_dict[definition_id]) - - if is_global_quality: - # For global qualities, save data in the machine node - machine_node.addQualityMetadata(quality_type, metadata) - continue - - current_node = machine_node - intermediate_node_info_list = [nozzle_name, buildplate_name, root_material_id] - current_intermediate_node_info_idx = 0 - - while current_intermediate_node_info_idx < len(intermediate_node_info_list): - node_name = intermediate_node_info_list[current_intermediate_node_info_idx] - if node_name is not None: - # There is specific information, update the current node to go deeper so we can add this quality - # at the most specific branch in the lookup tree. - if node_name not in current_node.children_map: - current_node.children_map[node_name] = QualityNode() - current_node = cast(QualityNode, current_node.children_map[node_name]) - - current_intermediate_node_info_idx += 1 - - current_node.addQualityMetadata(quality_type, metadata) - - # Initialize the lookup tree for quality_changes profiles with following structure: - # -> -> - quality_changes_metadata_list = self._container_registry.findContainersMetadata(type = "quality_changes") - for metadata in quality_changes_metadata_list: - if metadata["id"] == "empty_quality_changes": - continue - - machine_definition_id = metadata["definition"] - quality_type = metadata["quality_type"] - - if machine_definition_id not in self._machine_quality_type_to_quality_changes_dict: - self._machine_quality_type_to_quality_changes_dict[machine_definition_id] = QualityNode() - machine_node = self._machine_quality_type_to_quality_changes_dict[machine_definition_id] - machine_node.addQualityChangesMetadata(quality_type, metadata) - - Logger.log("d", "Lookup tables updated.") - self.qualitiesUpdated.emit() - - def _updateMaps(self) -> None: - self.initialize() - - def _onContainerMetadataChanged(self, container: InstanceContainer) -> None: - self._onContainerChanged(container) - - def _onContainerChanged(self, container: InstanceContainer) -> None: - container_type = container.getMetaDataEntry("type") - if container_type not in ("quality", "quality_changes"): - return - - # update the cache table - self._update_timer.start() - - # Updates the given quality groups' availabilities according to which extruders are being used/ enabled. - def _updateQualityGroupsAvailability(self, machine: "GlobalStack", quality_group_list) -> None: - used_extruders = set() - for i in range(machine.getProperty("machine_extruder_count", "value")): - if str(i) in machine.extruders and machine.extruders[str(i)].isEnabled: - used_extruders.add(str(i)) - - # Update the "is_available" flag for each quality group. - for quality_group in quality_group_list: - is_available = True - if quality_group.node_for_global is None: - is_available = False - if is_available: - for position in used_extruders: - if position not in quality_group.nodes_for_extruders: - is_available = False - break - - quality_group.is_available = is_available - - # Returns a dict of "custom profile name" -> QualityChangesGroup - def getQualityChangesGroups(self, machine: "GlobalStack") -> dict: - machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition) - - machine_node = self._machine_quality_type_to_quality_changes_dict.get(machine_definition_id) - if not machine_node: - Logger.log("i", "Cannot find node for machine def [%s] in QualityChanges lookup table", machine_definition_id) - return dict() - - # Update availability for each QualityChangesGroup: - # A custom profile is always available as long as the quality_type it's based on is available - quality_group_dict = self.getQualityGroups(machine) - available_quality_type_list = [qt for qt, qg in quality_group_dict.items() if qg.is_available] - - # Iterate over all quality_types in the machine node - quality_changes_group_dict = dict() - for quality_type, quality_changes_node in machine_node.quality_type_map.items(): - for quality_changes_name, quality_changes_group in quality_changes_node.children_map.items(): - quality_changes_group_dict[quality_changes_name] = quality_changes_group - quality_changes_group.is_available = quality_type in available_quality_type_list - - return quality_changes_group_dict - - # - # Gets all quality groups for the given machine. Both available and none available ones will be included. - # It returns a dictionary with "quality_type"s as keys and "QualityGroup"s as values. - # Whether a QualityGroup is available can be unknown via the field QualityGroup.is_available. - # For more details, see QualityGroup. - # - def getQualityGroups(self, machine: "GlobalStack") -> Dict[str, QualityGroup]: - machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition) - - # This determines if we should only get the global qualities for the global stack and skip the global qualities for the extruder stacks - has_machine_specific_qualities = machine.getHasMachineQuality() - - # To find the quality container for the GlobalStack, check in the following fall-back manner: - # (1) the machine-specific node - # (2) the generic node - machine_node = self._machine_nozzle_buildplate_material_quality_type_to_quality_dict.get(machine_definition_id) - # Check if this machine has specific quality profiles for its extruders, if so, when looking up extruder - # qualities, we should not fall back to use the global qualities. - has_extruder_specific_qualities = False - if machine_node: - if machine_node.children_map: - has_extruder_specific_qualities = True - - default_machine_node = self._machine_nozzle_buildplate_material_quality_type_to_quality_dict.get(self._default_machine_definition_id) - - nodes_to_check = [] # type: List[QualityNode] - if machine_node is not None: - nodes_to_check.append(machine_node) - if default_machine_node is not None: - nodes_to_check.append(default_machine_node) - - # Iterate over all quality_types in the machine node - quality_group_dict = {} - for node in nodes_to_check: - if node and node.quality_type_map: - quality_node = list(node.quality_type_map.values())[0] - is_global_quality = parseBool(quality_node.getMetaDataEntry("global_quality", False)) - if not is_global_quality: - continue - - for quality_type, quality_node in node.quality_type_map.items(): - quality_group = QualityGroup(quality_node.getMetaDataEntry("name", ""), quality_type) - quality_group.setGlobalNode(quality_node) - quality_group_dict[quality_type] = quality_group - break - - buildplate_name = machine.getBuildplateName() - - # Iterate over all extruders to find quality containers for each extruder - for position, extruder in machine.extruders.items(): - nozzle_name = None - if extruder.variant.getId() != "empty_variant": - nozzle_name = extruder.variant.getName() - - # This is a list of root material IDs to use for searching for suitable quality profiles. - # The root material IDs in this list are in prioritized order. - root_material_id_list = [] - has_material = False # flag indicating whether this extruder has a material assigned - root_material_id = None - if extruder.material.getId() != "empty_material": - has_material = True - root_material_id = extruder.material.getMetaDataEntry("base_file") - # Convert possible generic_pla_175 -> generic_pla - root_material_id = self._material_manager.getRootMaterialIDWithoutDiameter(root_material_id) - root_material_id_list.append(root_material_id) - - # Also try to get the fallback materials - fallback_ids = self._material_manager.getFallBackMaterialIdsByMaterial(extruder.material) - - if fallback_ids: - root_material_id_list.extend(fallback_ids) - - # Weed out duplicates while preserving the order. - seen = set() # type: Set[str] - root_material_id_list = [x for x in root_material_id_list if x not in seen and not seen.add(x)] # type: ignore - - # Here we construct a list of nodes we want to look for qualities with the highest priority first. - # The use case is that, when we look for qualities for a machine, we first want to search in the following - # order: - # 1. machine-nozzle-buildplate-and-material-specific qualities if exist - # 2. machine-nozzle-and-material-specific qualities if exist - # 3. machine-nozzle-specific qualities if exist - # 4. machine-material-specific qualities if exist - # 5. machine-specific global qualities if exist, otherwise generic global qualities - # NOTE: We DO NOT fail back to generic global qualities if machine-specific global qualities exist. - # This is because when a machine defines its own global qualities such as Normal, Fine, etc., - # it is intended to maintain those specific qualities ONLY. If we still fail back to the generic - # global qualities, there can be unimplemented quality types e.g. "coarse", and this is not - # correct. - # Each points above can be represented as a node in the lookup tree, so here we simply put those nodes into - # the list with priorities as the order. Later, we just need to loop over each node in this list and fetch - # qualities from there. - node_info_list_0 = [nozzle_name, buildplate_name, root_material_id] # type: List[Optional[str]] - nodes_to_check = [] - - # This function tries to recursively find the deepest (the most specific) branch and add those nodes to - # the search list in the order described above. So, by iterating over that search node list, we first look - # in the more specific branches and then the less specific (generic) ones. - def addNodesToCheck(node: Optional[QualityNode], nodes_to_check_list: List[QualityNode], node_info_list, node_info_idx: int) -> None: - if node is None: - return - - if node_info_idx < len(node_info_list): - node_name = node_info_list[node_info_idx] - if node_name is not None: - current_node = node.getChildNode(node_name) - if current_node is not None and has_material: - addNodesToCheck(current_node, nodes_to_check_list, node_info_list, node_info_idx + 1) - - if has_material: - for rmid in root_material_id_list: - material_node = node.getChildNode(rmid) - if material_node: - nodes_to_check_list.append(material_node) - break - - nodes_to_check_list.append(node) - - addNodesToCheck(machine_node, nodes_to_check, node_info_list_0, 0) - - # The last fall back will be the global qualities (either from the machine-specific node or the generic - # node), but we only use one. For details see the overview comments above. - - if machine_node is not None and machine_node.quality_type_map: - nodes_to_check += [machine_node] - elif default_machine_node is not None: - nodes_to_check += [default_machine_node] - - for node_idx, node in enumerate(nodes_to_check): - if node and node.quality_type_map: - if has_extruder_specific_qualities: - # Only include variant qualities; skip non global qualities - quality_node = list(node.quality_type_map.values())[0] - is_global_quality = parseBool(quality_node.getMetaDataEntry("global_quality", False)) - if is_global_quality: - continue - - for quality_type, quality_node in node.quality_type_map.items(): - if quality_type not in quality_group_dict: - quality_group = QualityGroup(quality_node.getMetaDataEntry("name", ""), quality_type) - quality_group_dict[quality_type] = quality_group - - quality_group = quality_group_dict[quality_type] - if position not in quality_group.nodes_for_extruders: - quality_group.setExtruderNode(position, quality_node) - - # If the machine has its own specific qualities, for extruders, it should skip the global qualities - # and use the material/variant specific qualities. - if has_extruder_specific_qualities: - if node_idx == len(nodes_to_check) - 1: - break - - # Update availabilities for each quality group - self._updateQualityGroupsAvailability(machine, quality_group_dict.values()) - - return quality_group_dict - - def getQualityGroupsForMachineDefinition(self, machine: "GlobalStack") -> Dict[str, QualityGroup]: - machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition) - - # To find the quality container for the GlobalStack, check in the following fall-back manner: - # (1) the machine-specific node - # (2) the generic node - machine_node = self._machine_nozzle_buildplate_material_quality_type_to_quality_dict.get(machine_definition_id) - default_machine_node = self._machine_nozzle_buildplate_material_quality_type_to_quality_dict.get( - self._default_machine_definition_id) - nodes_to_check = [machine_node, default_machine_node] - - # Iterate over all quality_types in the machine node - quality_group_dict = dict() - for node in nodes_to_check: - if node and node.quality_type_map: - for quality_type, quality_node in node.quality_type_map.items(): - quality_group = QualityGroup(quality_node.getMetaDataEntry("name", ""), quality_type) - quality_group.setGlobalNode(quality_node) - quality_group_dict[quality_type] = quality_group - break - - return quality_group_dict - - def getDefaultQualityType(self, machine: "GlobalStack") -> Optional[QualityGroup]: - preferred_quality_type = machine.definition.getMetaDataEntry("preferred_quality_type") - quality_group_dict = self.getQualityGroups(machine) - quality_group = quality_group_dict.get(preferred_quality_type) - return quality_group - - - # - # Methods for GUI - # - - # - # Remove the given quality changes group. - # - @pyqtSlot(QObject) - def removeQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup") -> None: - Logger.log("i", "Removing quality changes group [%s]", quality_changes_group.name) - removed_quality_changes_ids = set() - for node in quality_changes_group.getAllNodes(): - container_id = node.getMetaDataEntry("id") - self._container_registry.removeContainer(container_id) - removed_quality_changes_ids.add(container_id) - - # Reset all machines that have activated this quality changes to empty. - for global_stack in self._container_registry.findContainerStacks(type = "machine"): - if global_stack.qualityChanges.getId() in removed_quality_changes_ids: - global_stack.qualityChanges = self._empty_quality_changes_container - for extruder_stack in self._container_registry.findContainerStacks(type = "extruder_train"): - if extruder_stack.qualityChanges.getId() in removed_quality_changes_ids: - extruder_stack.qualityChanges = self._empty_quality_changes_container - - # - # Rename a set of quality changes containers. Returns the new name. - # - @pyqtSlot(QObject, str, result = str) - def renameQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup", new_name: str) -> str: - Logger.log("i", "Renaming QualityChangesGroup[%s] to [%s]", quality_changes_group.name, new_name) - if new_name == quality_changes_group.name: - Logger.log("i", "QualityChangesGroup name [%s] unchanged.", quality_changes_group.name) - return new_name - - new_name = self._container_registry.uniqueName(new_name) - for node in quality_changes_group.getAllNodes(): - container = node.getContainer() - if container: - container.setName(new_name) - - quality_changes_group.name = new_name - - self._application.getMachineManager().activeQualityChanged.emit() - self._application.getMachineManager().activeQualityGroupChanged.emit() - - return new_name - - # - # Duplicates the given quality. - # - @pyqtSlot(str, "QVariantMap") - def duplicateQualityChanges(self, quality_changes_name: str, quality_model_item) -> None: - global_stack = self._application.getGlobalContainerStack() - if not global_stack: - Logger.log("i", "No active global stack, cannot duplicate quality changes.") - return - - quality_group = quality_model_item["quality_group"] - quality_changes_group = quality_model_item["quality_changes_group"] - if quality_changes_group is None: - # create global quality changes only - new_quality_changes = self._createQualityChanges(quality_group.quality_type, quality_changes_name, - global_stack, None) - self._container_registry.addContainer(new_quality_changes) - else: - new_name = self._container_registry.uniqueName(quality_changes_name) - for node in quality_changes_group.getAllNodes(): - container = node.getContainer() - if not container: - continue - new_id = self._container_registry.uniqueName(container.getId()) - self._container_registry.addContainer(container.duplicate(new_id, new_name)) - - ## Create quality changes containers from the user containers in the active stacks. - # - # This will go through the global and extruder stacks and create quality_changes containers from - # the user containers in each stack. These then replace the quality_changes containers in the - # stack and clear the user settings. - @pyqtSlot(str) - def createQualityChanges(self, base_name: str) -> None: - machine_manager = self._application.getMachineManager() - - global_stack = machine_manager.activeMachine - if not global_stack: - return - - active_quality_name = machine_manager.activeQualityOrQualityChangesName - if active_quality_name == "": - Logger.log("w", "No quality container found in stack %s, cannot create profile", global_stack.getId()) - return - - machine_manager.blurSettings.emit() - if base_name is None or base_name == "": - base_name = active_quality_name - unique_name = self._container_registry.uniqueName(base_name) - - # Go through the active stacks and create quality_changes containers from the user containers. - stack_list = [global_stack] + list(global_stack.extruders.values()) - for stack in stack_list: - user_container = stack.userChanges - quality_container = stack.quality - quality_changes_container = stack.qualityChanges - if not quality_container or not quality_changes_container: - Logger.log("w", "No quality or quality changes container found in stack %s, ignoring it", stack.getId()) - continue - - quality_type = quality_container.getMetaDataEntry("quality_type") - extruder_stack = None - if isinstance(stack, ExtruderStack): - extruder_stack = stack - new_changes = self._createQualityChanges(quality_type, unique_name, global_stack, extruder_stack) - from cura.Settings.ContainerManager import ContainerManager - ContainerManager.getInstance()._performMerge(new_changes, quality_changes_container, clear_settings = False) - ContainerManager.getInstance()._performMerge(new_changes, user_container) - - self._container_registry.addContainer(new_changes) - - # - # Create a quality changes container with the given setup. - # - def _createQualityChanges(self, quality_type: str, new_name: str, machine: "GlobalStack", - extruder_stack: Optional["ExtruderStack"]) -> "InstanceContainer": - base_id = machine.definition.getId() if extruder_stack is None else extruder_stack.getId() - new_id = base_id + "_" + new_name - new_id = new_id.lower().replace(" ", "_") - new_id = self._container_registry.uniqueName(new_id) - - # Create a new quality_changes container for the quality. - quality_changes = InstanceContainer(new_id) - quality_changes.setName(new_name) - quality_changes.setMetaDataEntry("type", "quality_changes") - quality_changes.setMetaDataEntry("quality_type", quality_type) - - # If we are creating a container for an extruder, ensure we add that to the container - if extruder_stack is not None: - quality_changes.setMetaDataEntry("position", extruder_stack.getMetaDataEntry("position")) - - # If the machine specifies qualities should be filtered, ensure we match the current criteria. - machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition) - quality_changes.setDefinition(machine_definition_id) - - quality_changes.setMetaDataEntry("setting_version", self._application.SettingVersion) - return quality_changes - - -# -# Gets the machine definition ID that can be used to search for Quality containers that are suitable for the given -# machine. The rule is as follows: -# 1. By default, the machine definition ID for quality container search will be "fdmprinter", which is the generic -# machine. -# 2. If a machine has its own machine quality (with "has_machine_quality = True"), we should use the given machine's -# own machine definition ID for quality search. -# Example: for an Ultimaker 3, the definition ID should be "ultimaker3". -# 3. When condition (2) is met, AND the machine has "quality_definition" defined in its definition file, then the -# definition ID specified in "quality_definition" should be used. -# Example: for an Ultimaker 3 Extended, it has "quality_definition = ultimaker3". This means Ultimaker 3 Extended -# shares the same set of qualities profiles as Ultimaker 3. -# -def getMachineDefinitionIDForQualitySearch(machine_definition: "DefinitionContainerInterface", - default_definition_id: str = "fdmprinter") -> str: - machine_definition_id = default_definition_id - if parseBool(machine_definition.getMetaDataEntry("has_machine_quality", False)): - # Only use the machine's own quality definition ID if this machine has machine quality. - machine_definition_id = machine_definition.getMetaDataEntry("quality_definition") - if machine_definition_id is None: - machine_definition_id = machine_definition.getId() - - return machine_definition_id diff --git a/cura/Machines/QualityNode.py b/cura/Machines/QualityNode.py index 991388a4bd..45cd898db5 100644 --- a/cura/Machines/QualityNode.py +++ b/cura/Machines/QualityNode.py @@ -1,38 +1,44 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, Dict, cast, Any +from typing import Union, TYPE_CHECKING -from .ContainerNode import ContainerNode -from .QualityChangesGroup import QualityChangesGroup +from UM.Settings.ContainerRegistry import ContainerRegistry +from cura.Machines.ContainerNode import ContainerNode +from cura.Machines.IntentNode import IntentNode +import UM.FlameProfiler +if TYPE_CHECKING: + from typing import Dict + from cura.Machines.MaterialNode import MaterialNode + from cura.Machines.MachineNode import MachineNode +## Represents a quality profile in the container tree. # -# QualityNode is used for BOTH quality and quality_changes containers. +# This may either be a normal quality profile or a global quality profile. # +# Its subcontainers are intent profiles. class QualityNode(ContainerNode): + def __init__(self, container_id: str, parent: Union["MaterialNode", "MachineNode"]) -> None: + super().__init__(container_id) + self.parent = parent + self.intents = {} # type: Dict[str, IntentNode] - def __init__(self, metadata: Optional[Dict[str, Any]] = None) -> None: - super().__init__(metadata = metadata) - self.quality_type_map = {} # type: Dict[str, QualityNode] # quality_type -> QualityNode for InstanceContainer + my_metadata = ContainerRegistry.getInstance().findContainersMetadata(id = container_id)[0] + self.quality_type = my_metadata["quality_type"] + # The material type of the parent doesn't need to be the same as this due to generic fallbacks. + self._material = my_metadata.get("material") + self._loadAll() - def getChildNode(self, child_key: str) -> Optional["QualityNode"]: - return self.children_map.get(child_key) + @UM.FlameProfiler.profile + def _loadAll(self) -> None: + container_registry = ContainerRegistry.getInstance() - def addQualityMetadata(self, quality_type: str, metadata: Dict[str, Any]): - if quality_type not in self.quality_type_map: - self.quality_type_map[quality_type] = QualityNode(metadata) + # Find all intent profiles that fit the current configuration. + from cura.Machines.MachineNode import MachineNode + if not isinstance(self.parent, MachineNode): # Not a global profile. + for intent in container_registry.findInstanceContainersMetadata(type = "intent", definition = self.parent.variant.machine.quality_definition, variant = self.parent.variant.variant_name, material = self._material, quality_type = self.quality_type): + self.intents[intent["id"]] = IntentNode(intent["id"], quality = self) - def getQualityNode(self, quality_type: str) -> Optional["QualityNode"]: - return self.quality_type_map.get(quality_type) - - def addQualityChangesMetadata(self, quality_type: str, metadata: Dict[str, Any]): - if quality_type not in self.quality_type_map: - self.quality_type_map[quality_type] = QualityNode() - quality_type_node = self.quality_type_map[quality_type] - - name = metadata["name"] - if name not in quality_type_node.children_map: - quality_type_node.children_map[name] = QualityChangesGroup(name, quality_type) - quality_changes_group = quality_type_node.children_map[name] - cast(QualityChangesGroup, quality_changes_group).addNode(QualityNode(metadata)) + self.intents["empty_intent"] = IntentNode("empty_intent", quality = self) + # Otherwise, there are no intents for global profiles. \ No newline at end of file diff --git a/cura/Machines/VariantManager.py b/cura/Machines/VariantManager.py deleted file mode 100644 index eaaa9fc5f0..0000000000 --- a/cura/Machines/VariantManager.py +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from collections import OrderedDict -from typing import Optional, TYPE_CHECKING, Dict - -from UM.ConfigurationErrorMessage import ConfigurationErrorMessage -from UM.Logger import Logger -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Util import parseBool - -from cura.Machines.ContainerNode import ContainerNode -from cura.Machines.VariantType import VariantType, ALL_VARIANT_TYPES -from cura.Settings.GlobalStack import GlobalStack - -if TYPE_CHECKING: - from UM.Settings.DefinitionContainer import DefinitionContainer - - -# -# VariantManager is THE place to look for a specific variant. It maintains two variant lookup tables with the following -# structure: -# -# [machine_definition_id] -> [variant_type] -> [variant_name] -> ContainerNode(metadata / container) -# Example: "ultimaker3" -> "buildplate" -> "Glass" (if present) -> ContainerNode -# -> ... -# -> "nozzle" -> "AA 0.4" -# -> "BB 0.8" -# -> ... -# -# [machine_definition_id] -> [machine_buildplate_type] -> ContainerNode(metadata / container) -# Example: "ultimaker3" -> "glass" (this is different from the variant name) -> ContainerNode -# -# Note that the "container" field is not loaded in the beginning because it would defeat the purpose of lazy-loading. -# A container is loaded when getVariant() is called to load a variant InstanceContainer. -# -class VariantManager: - - def __init__(self, container_registry: ContainerRegistry) -> None: - self._container_registry = container_registry - - self._machine_to_variant_dict_map = dict() # type: Dict[str, Dict["VariantType", Dict[str, ContainerNode]]] - self._machine_to_buildplate_dict_map = dict() # type: Dict[str, Dict[str, ContainerNode]] - - self._exclude_variant_id_list = ["empty_variant"] - - # - # Initializes the VariantManager including: - # - initializing the variant lookup table based on the metadata in ContainerRegistry. - # - def initialize(self) -> None: - self._machine_to_variant_dict_map = OrderedDict() - self._machine_to_buildplate_dict_map = OrderedDict() - - # Cache all variants from the container registry to a variant map for better searching and organization. - variant_metadata_list = self._container_registry.findContainersMetadata(type = "variant") - for variant_metadata in variant_metadata_list: - if variant_metadata["id"] in self._exclude_variant_id_list: - Logger.log("d", "Exclude variant [%s]", variant_metadata["id"]) - continue - - variant_name = variant_metadata["name"] - variant_definition = variant_metadata["definition"] - if variant_definition not in self._machine_to_variant_dict_map: - self._machine_to_variant_dict_map[variant_definition] = OrderedDict() - for variant_type in ALL_VARIANT_TYPES: - self._machine_to_variant_dict_map[variant_definition][variant_type] = dict() - - try: - variant_type = variant_metadata["hardware_type"] - except KeyError: - Logger.log("w", "Variant %s does not specify a hardware_type; assuming 'nozzle'", variant_metadata["id"]) - variant_type = VariantType.NOZZLE - variant_type = VariantType(variant_type) - variant_dict = self._machine_to_variant_dict_map[variant_definition][variant_type] - if variant_name in variant_dict: - # ERROR: duplicated variant name. - ConfigurationErrorMessage.getInstance().addFaultyContainers(variant_metadata["id"]) - continue #Then ignore this variant. This now chooses one of the two variants arbitrarily and deletes the other one! No guarantees! - - variant_dict[variant_name] = ContainerNode(metadata = variant_metadata) - - # If the variant is a buildplate then fill also the buildplate map - if variant_type == VariantType.BUILD_PLATE: - if variant_definition not in self._machine_to_buildplate_dict_map: - self._machine_to_buildplate_dict_map[variant_definition] = OrderedDict() - - variant_container = self._container_registry.findContainers(type = "variant", id = variant_metadata["id"])[0] - buildplate_type = variant_container.getProperty("machine_buildplate_type", "value") - if buildplate_type not in self._machine_to_buildplate_dict_map[variant_definition]: - self._machine_to_variant_dict_map[variant_definition][buildplate_type] = dict() - - self._machine_to_buildplate_dict_map[variant_definition][buildplate_type] = variant_dict[variant_name] - - # - # Gets the variant InstanceContainer with the given information. - # Almost the same as getVariantMetadata() except that this returns an InstanceContainer if present. - # - def getVariantNode(self, machine_definition_id: str, variant_name: str, - variant_type: Optional["VariantType"] = None) -> Optional["ContainerNode"]: - if variant_type is None: - variant_node = None - variant_type_dict = self._machine_to_variant_dict_map[machine_definition_id] - for variant_dict in variant_type_dict.values(): - if variant_name in variant_dict: - variant_node = variant_dict[variant_name] - break - return variant_node - - return self._machine_to_variant_dict_map.get(machine_definition_id, {}).get(variant_type, {}).get(variant_name) - - def getVariantNodes(self, machine: "GlobalStack", variant_type: "VariantType") -> Dict[str, ContainerNode]: - machine_definition_id = machine.definition.getId() - return self._machine_to_variant_dict_map.get(machine_definition_id, {}).get(variant_type, {}) - - # - # Gets the default variant for the given machine definition. - # If the optional GlobalStack is given, the metadata information will be fetched from the GlobalStack instead of - # the DefinitionContainer. Because for machines such as UM2, you can enable Olsson Block, which will set - # "has_variants" to True in the GlobalStack. In those cases, we need to fetch metadata from the GlobalStack or - # it may not be correct. - # - def getDefaultVariantNode(self, machine_definition: "DefinitionContainer", - variant_type: "VariantType", - global_stack: Optional["GlobalStack"] = None) -> Optional["ContainerNode"]: - machine_definition_id = machine_definition.getId() - container_for_metadata_fetching = global_stack if global_stack is not None else machine_definition - - preferred_variant_name = None - if variant_type == VariantType.BUILD_PLATE: - if parseBool(container_for_metadata_fetching.getMetaDataEntry("has_variant_buildplates", False)): - preferred_variant_name = container_for_metadata_fetching.getMetaDataEntry("preferred_variant_buildplate_name") - else: - if parseBool(container_for_metadata_fetching.getMetaDataEntry("has_variants", False)): - preferred_variant_name = container_for_metadata_fetching.getMetaDataEntry("preferred_variant_name") - - node = None - if preferred_variant_name: - node = self.getVariantNode(machine_definition_id, preferred_variant_name, variant_type) - return node - - def getBuildplateVariantNode(self, machine_definition_id: str, buildplate_type: str) -> Optional["ContainerNode"]: - if machine_definition_id in self._machine_to_buildplate_dict_map: - return self._machine_to_buildplate_dict_map[machine_definition_id].get(buildplate_type) - return None diff --git a/cura/Machines/VariantNode.py b/cura/Machines/VariantNode.py new file mode 100644 index 0000000000..c9e3ec4913 --- /dev/null +++ b/cura/Machines/VariantNode.py @@ -0,0 +1,182 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import TYPE_CHECKING + +from UM.Logger import Logger +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.Interfaces import ContainerInterface +from UM.Signal import Signal + +from cura.Machines.ContainerNode import ContainerNode +from cura.Machines.MaterialNode import MaterialNode + +import UM.FlameProfiler + +if TYPE_CHECKING: + from typing import Dict + from cura.Machines.MachineNode import MachineNode + + +## This class represents an extruder variant in the container tree. +# +# The subnodes of these nodes are materials. +# +# This node contains materials with ALL filament diameters underneath it. The +# tree of this variant is not specific to one global stack, so because the +# list of materials can be different per stack depending on the compatible +# material diameter setting, we cannot filter them here. Filtering must be +# done in the model. +class VariantNode(ContainerNode): + def __init__(self, container_id: str, machine: "MachineNode") -> None: + super().__init__(container_id) + self.machine = machine + self.materials = {} # type: Dict[str, MaterialNode] # Mapping material base files to their nodes. + self.materialsChanged = Signal() + + container_registry = ContainerRegistry.getInstance() + self.variant_name = container_registry.findContainersMetadata(id = container_id)[0]["name"] # Store our own name so that we can filter more easily. + container_registry.containerAdded.connect(self._materialAdded) + container_registry.containerRemoved.connect(self._materialRemoved) + self._loadAll() + + ## (Re)loads all materials under this variant. + @UM.FlameProfiler.profile + def _loadAll(self) -> None: + container_registry = ContainerRegistry.getInstance() + + if not self.machine.has_materials: + self.materials["empty_material"] = MaterialNode("empty_material", variant = self) + return # There should not be any materials loaded for this printer. + + # Find all the materials for this variant's name. + else: # Printer has its own material profiles. Look for material profiles with this printer's definition. + base_materials = container_registry.findInstanceContainersMetadata(type = "material", definition = "fdmprinter") + printer_specific_materials = container_registry.findInstanceContainersMetadata(type = "material", definition = self.machine.container_id, variant_name = None) + variant_specific_materials = container_registry.findInstanceContainersMetadata(type = "material", definition = self.machine.container_id, variant_name = self.variant_name) # If empty_variant, this won't return anything. + materials_per_base_file = {material["base_file"]: material for material in base_materials} + materials_per_base_file.update({material["base_file"]: material for material in printer_specific_materials}) # Printer-specific profiles override global ones. + materials_per_base_file.update({material["base_file"]: material for material in variant_specific_materials}) # Variant-specific profiles override all of those. + materials = list(materials_per_base_file.values()) + + # Filter materials based on the exclude_materials property. + filtered_materials = [material for material in materials if material["id"] not in self.machine.exclude_materials] + + for material in filtered_materials: + base_file = material["base_file"] + if base_file not in self.materials: + self.materials[base_file] = MaterialNode(material["id"], variant = self) + self.materials[base_file].materialChanged.connect(self.materialsChanged) + if not self.materials: + self.materials["empty_material"] = MaterialNode("empty_material", variant = self) + + ## Finds the preferred material for this printer with this nozzle in one of + # the extruders. + # + # If the preferred material is not available, an arbitrary material is + # returned. If there is a configuration mistake (like a typo in the + # preferred material) this returns a random available material. If there + # are no available materials, this will return the empty material node. + # \param approximate_diameter The desired approximate diameter of the + # material. + # \return The node for the preferred material, or any arbitrary material + # if there is no match. + def preferredMaterial(self, approximate_diameter: int) -> MaterialNode: + for base_material, material_node in self.materials.items(): + if self.machine.preferred_material == base_material and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")): + return material_node + + # First fallback: Check if we should be checking for the 175 variant. + if approximate_diameter == 2: + preferred_material = self.machine.preferred_material + "_175" + for base_material, material_node in self.materials.items(): + if preferred_material == base_material and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")): + return material_node + + # Second fallback: Choose any material with matching diameter. + for material_node in self.materials.values(): + if material_node.getMetaDataEntry("approximate_diameter") and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")): + Logger.log("w", "Could not find preferred material %s, falling back to whatever works", self.machine.preferred_material) + return material_node + + fallback = next(iter(self.materials.values())) # Should only happen with empty material node. + Logger.log("w", "Could not find preferred material {preferred_material} with diameter {diameter} for variant {variant_id}, falling back to {fallback}.".format( + preferred_material = self.machine.preferred_material, + diameter = approximate_diameter, + variant_id = self.container_id, + fallback = fallback.container_id + )) + return fallback + + ## When a material gets added to the set of profiles, we need to update our + # tree here. + @UM.FlameProfiler.profile + def _materialAdded(self, container: ContainerInterface) -> None: + if container.getMetaDataEntry("type") != "material": + return # Not interested. + if not ContainerRegistry.getInstance().findContainersMetadata(id = container.getId()): + # CURA-6889 + # containerAdded and removed signals may be triggered in the next event cycle. If a container gets added + # and removed in the same event cycle, in the next cycle, the connections should just ignore the signals. + # The check here makes sure that the container in the signal still exists. + Logger.log("d", "Got container added signal for container [%s] but it no longer exists, do nothing.", + container.getId()) + return + if not self.machine.has_materials: + return # We won't add any materials. + material_definition = container.getMetaDataEntry("definition") + + base_file = container.getMetaDataEntry("base_file") + if base_file in self.machine.exclude_materials: + return # Material is forbidden for this printer. + if base_file not in self.materials: # Completely new base file. Always better than not having a file as long as it matches our set-up. + if material_definition != "fdmprinter" and material_definition != self.machine.container_id: + return + material_variant = container.getMetaDataEntry("variant_name") + if material_variant is not None and material_variant != self.variant_name: + return + else: # We already have this base profile. Replace the base profile if the new one is more specific. + new_definition = container.getMetaDataEntry("definition") + if new_definition == "fdmprinter": + return # Just as unspecific or worse. + material_variant = container.getMetaDataEntry("variant_name") + if new_definition != self.machine.container_id or material_variant != self.variant_name: + return # Doesn't match this set-up. + original_metadata = ContainerRegistry.getInstance().findContainersMetadata(id = self.materials[base_file].container_id)[0] + if "variant_name" in original_metadata or material_variant is None: + return # Original was already specific or just as unspecific as the new one. + + if "empty_material" in self.materials: + del self.materials["empty_material"] + self.materials[base_file] = MaterialNode(container.getId(), variant = self) + self.materials[base_file].materialChanged.connect(self.materialsChanged) + self.materialsChanged.emit(self.materials[base_file]) + + @UM.FlameProfiler.profile + def _materialRemoved(self, container: ContainerInterface) -> None: + if container.getMetaDataEntry("type") != "material": + return # Only interested in materials. + base_file = container.getMetaDataEntry("base_file") + if base_file not in self.materials: + return # We don't track this material anyway. No need to remove it. + + original_node = self.materials[base_file] + del self.materials[base_file] + self.materialsChanged.emit(original_node) + + # Now a different material from the same base file may have been hidden because it was not as specific as the one we deleted. + # Search for any submaterials from that base file that are still left. + materials_same_base_file = ContainerRegistry.getInstance().findContainersMetadata(base_file = base_file) + if materials_same_base_file: + most_specific_submaterial = materials_same_base_file[0] + for submaterial in materials_same_base_file: + if submaterial["definition"] == self.machine.container_id: + if most_specific_submaterial["definition"] == "fdmprinter": + most_specific_submaterial = submaterial + if most_specific_submaterial.get("variant_name", "empty") == "empty" and submaterial.get("variant_name", "empty") == self.variant_name: + most_specific_submaterial = submaterial + self.materials[base_file] = MaterialNode(most_specific_submaterial["id"], variant = self) + self.materialsChanged.emit(self.materials[base_file]) + + if not self.materials: # The last available material just got deleted and there is nothing with the same base file to replace it. + self.materials["empty_material"] = MaterialNode("empty_material", variant = self) + self.materialsChanged.emit(self.materials["empty_material"]) \ No newline at end of file diff --git a/cura/MultiplyObjectsJob.py b/cura/MultiplyObjectsJob.py index e71bbf6668..5c25f70336 100644 --- a/cura/MultiplyObjectsJob.py +++ b/cura/MultiplyObjectsJob.py @@ -2,10 +2,12 @@ # Cura is released under the terms of the LGPLv3 or higher. import copy +from typing import List from UM.Job import Job from UM.Operations.GroupedOperation import GroupedOperation from UM.Message import Message +from UM.Scene.SceneNode import SceneNode from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") @@ -23,7 +25,7 @@ class MultiplyObjectsJob(Job): self._count = count self._min_offset = min_offset - def run(self): + def run(self) -> None: status_message = Message(i18n_catalog.i18nc("@info:status", "Multiplying and placing objects"), lifetime=0, dismissable=False, progress=0, title = i18n_catalog.i18nc("@info:title", "Placing Objects")) status_message.show() @@ -33,13 +35,15 @@ class MultiplyObjectsJob(Job): current_progress = 0 global_container_stack = Application.getInstance().getGlobalContainerStack() + if global_container_stack is None: + return # We can't do anything in this case. machine_width = global_container_stack.getProperty("machine_width", "value") machine_depth = global_container_stack.getProperty("machine_depth", "value") root = scene.getRoot() scale = 0.5 arranger = Arrange.create(x = machine_width, y = machine_depth, scene_root = root, scale = scale, min_offset = self._min_offset) - processed_nodes = [] + processed_nodes = [] # type: List[SceneNode] nodes = [] not_fit_count = 0 @@ -67,7 +71,11 @@ class MultiplyObjectsJob(Job): new_node = copy.deepcopy(node) solution_found = False if not node_too_big: - solution_found = arranger.findNodePlacement(new_node, offset_shape_arr, hull_shape_arr) + if offset_shape_arr is not None and hull_shape_arr is not None: + solution_found = arranger.findNodePlacement(new_node, offset_shape_arr, hull_shape_arr) + else: + # The node has no shape, so no need to arrange it. The solution is simple: Do nothing. + solution_found = True if node_too_big or not solution_found: found_solution_for_all = False diff --git a/cura/OAuth2/AuthorizationHelpers.py b/cura/OAuth2/AuthorizationHelpers.py index 314b5631f8..9fc01ba50b 100644 --- a/cura/OAuth2/AuthorizationHelpers.py +++ b/cura/OAuth2/AuthorizationHelpers.py @@ -41,12 +41,16 @@ class AuthorizationHelpers: "code_verifier": verification_code, "scope": self._settings.CLIENT_SCOPES if self._settings.CLIENT_SCOPES is not None else "", } - return self.parseTokenResponse(requests.post(self._token_url, data = data)) # type: ignore + try: + return self.parseTokenResponse(requests.post(self._token_url, data = data)) # type: ignore + except requests.exceptions.ConnectionError: + return AuthenticationResponse(success=False, err_message="Unable to connect to remote server") ## Request the access token from the authorization server using a refresh token. # \param refresh_token: # \return An AuthenticationResponse object. def getAccessTokenUsingRefreshToken(self, refresh_token: str) -> "AuthenticationResponse": + Logger.log("d", "Refreshing the access token.") data = { "client_id": self._settings.CLIENT_ID if self._settings.CLIENT_ID is not None else "", "redirect_uri": self._settings.CALLBACK_URL if self._settings.CALLBACK_URL is not None else "", @@ -54,7 +58,10 @@ class AuthorizationHelpers: "refresh_token": refresh_token, "scope": self._settings.CLIENT_SCOPES if self._settings.CLIENT_SCOPES is not None else "", } - return self.parseTokenResponse(requests.post(self._token_url, data = data)) # type: ignore + try: + return self.parseTokenResponse(requests.post(self._token_url, data = data)) # type: ignore + except requests.exceptions.ConnectionError: + return AuthenticationResponse(success=False, err_message="Unable to connect to remote server") @staticmethod ## Parse the token response from the authorization server into an AuthenticationResponse object. @@ -92,7 +99,7 @@ class AuthorizationHelpers: }) except requests.exceptions.ConnectionError: # Connection was suddenly dropped. Nothing we can do about that. - Logger.logException("e", "Something failed while attempting to parse the JWT token") + Logger.logException("w", "Something failed while attempting to parse the JWT token") return None if token_request.status_code not in (200, 201): Logger.log("w", "Could not retrieve token data from auth server: %s", token_request.text) diff --git a/cura/OAuth2/AuthorizationRequestHandler.py b/cura/OAuth2/AuthorizationRequestHandler.py index 66ecfc2787..83b94ed586 100644 --- a/cura/OAuth2/AuthorizationRequestHandler.py +++ b/cura/OAuth2/AuthorizationRequestHandler.py @@ -25,6 +25,10 @@ class AuthorizationRequestHandler(BaseHTTPRequestHandler): self.authorization_callback = None # type: Optional[Callable[[AuthenticationResponse], None]] self.verification_code = None # type: Optional[str] + # CURA-6609: Some browser seems to issue a HEAD instead of GET request as the callback. + def do_HEAD(self) -> None: + self.do_GET() + def do_GET(self) -> None: # Extract values from the query string. parsed_url = urlparse(self.path) diff --git a/cura/OAuth2/AuthorizationService.py b/cura/OAuth2/AuthorizationService.py index 377ec080aa..0848623410 100644 --- a/cura/OAuth2/AuthorizationService.py +++ b/cura/OAuth2/AuthorizationService.py @@ -2,20 +2,26 @@ # Cura is released under the terms of the LGPLv3 or higher. import json -import webbrowser from datetime import datetime, timedelta from typing import Optional, TYPE_CHECKING from urllib.parse import urlencode + import requests.exceptions +from PyQt5.QtCore import QUrl +from PyQt5.QtGui import QDesktopServices from UM.Logger import Logger +from UM.Message import Message from UM.Signal import Signal from cura.OAuth2.LocalAuthorizationServer import LocalAuthorizationServer from cura.OAuth2.AuthorizationHelpers import AuthorizationHelpers, TOKEN_TIMESTAMP_FORMAT from cura.OAuth2.Models import AuthenticationResponse +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("cura") + if TYPE_CHECKING: from cura.OAuth2.Models import UserProfile, OAuth2Settings from UM.Preferences import Preferences @@ -30,6 +36,8 @@ class AuthorizationService: # Emit signal when authentication failed. onAuthenticationError = Signal() + accessTokenChanged = Signal() + def __init__(self, settings: "OAuth2Settings", preferences: Optional["Preferences"] = None) -> None: self._settings = settings self._auth_helpers = AuthorizationHelpers(settings) @@ -39,6 +47,14 @@ class AuthorizationService: self._preferences = preferences self._server = LocalAuthorizationServer(self._auth_helpers, self._onAuthStateChanged, daemon=True) + self._unable_to_get_data_message = None # type: Optional[Message] + + self.onAuthStateChanged.connect(self._authChanged) + + def _authChanged(self, logged_in): + if logged_in and self._unable_to_get_data_message is not None: + self._unable_to_get_data_message.hide() + def initialize(self, preferences: Optional["Preferences"] = None) -> None: if preferences is not None: self._preferences = preferences @@ -56,6 +72,7 @@ class AuthorizationService: self._user_profile = self._parseJWT() except requests.exceptions.ConnectionError: # Unable to get connection, can't login. + Logger.logException("w", "Unable to validate user data with the remote server.") return None if not self._user_profile and self._auth_data: @@ -71,6 +88,7 @@ class AuthorizationService: def _parseJWT(self) -> Optional["UserProfile"]: if not self._auth_data or self._auth_data.access_token is None: # If no auth data exists, we should always log in again. + Logger.log("d", "There was no auth data or access token") return None user_data = self._auth_helpers.parseJWT(self._auth_data.access_token) if user_data: @@ -78,12 +96,16 @@ class AuthorizationService: return user_data # The JWT was expired or invalid and we should request a new one. if self._auth_data.refresh_token is None: + Logger.log("w", "There was no refresh token in the auth data.") return None self._auth_data = self._auth_helpers.getAccessTokenUsingRefreshToken(self._auth_data.refresh_token) if not self._auth_data or self._auth_data.access_token is None: + Logger.log("w", "Unable to use the refresh token to get a new access token.") # The token could not be refreshed using the refresh token. We should login again. return None - + # Ensure it gets stored as otherwise we only have it in memory. The stored refresh token has been deleted + # from the server already. + self._storeAuthData(self._auth_data) return self._auth_helpers.parseJWT(self._auth_data.access_token) ## Get the access token as provided by the repsonse data. @@ -96,7 +118,7 @@ class AuthorizationService: # We have a fallback on a date far in the past for currently stored auth data in cura.cfg. received_at = datetime.strptime(self._auth_data.received_at, TOKEN_TIMESTAMP_FORMAT) \ if self._auth_data.received_at else datetime(2000, 1, 1) - expiry_date = received_at + timedelta(seconds = float(self._auth_data.expires_in or 0)) + expiry_date = received_at + timedelta(seconds = float(self._auth_data.expires_in or 0) - 60) if datetime.now() > expiry_date: self.refreshAccessToken() @@ -107,8 +129,13 @@ class AuthorizationService: if self._auth_data is None or self._auth_data.refresh_token is None: Logger.log("w", "Unable to refresh access token, since there is no refresh token.") return - self._storeAuthData(self._auth_helpers.getAccessTokenUsingRefreshToken(self._auth_data.refresh_token)) - self.onAuthStateChanged.emit(logged_in = True) + response = self._auth_helpers.getAccessTokenUsingRefreshToken(self._auth_data.refresh_token) + if response.success: + self._storeAuthData(response) + self.onAuthStateChanged.emit(logged_in = True) + else: + Logger.log("w", "Failed to get a new access token from the server.") + self.onAuthStateChanged.emit(logged_in = False) ## Delete the authentication data that we have stored locally (eg; logout) def deleteAuthData(self) -> None: @@ -138,7 +165,7 @@ class AuthorizationService: }) # Open the authorization page in a new browser window. - webbrowser.open_new("{}?{}".format(self._auth_url, query_string)) + QDesktopServices.openUrl(QUrl("{}?{}".format(self._auth_url, query_string))) # Start a local web server to receive the callback URL on. self._server.start(verification_code) @@ -161,12 +188,22 @@ class AuthorizationService: preferences_data = json.loads(self._preferences.getValue(self._settings.AUTH_DATA_PREFERENCE_KEY)) if preferences_data: self._auth_data = AuthenticationResponse(**preferences_data) - self.onAuthStateChanged.emit(logged_in = True) + # Also check if we can actually get the user profile information. + user_profile = self.getUserProfile() + if user_profile is not None: + self.onAuthStateChanged.emit(logged_in = True) + else: + if self._unable_to_get_data_message is not None: + self._unable_to_get_data_message.hide() + + self._unable_to_get_data_message = Message(i18n_catalog.i18nc("@info", "Unable to reach the Ultimaker account server."), title = i18n_catalog.i18nc("@info:title", "Warning")) + self._unable_to_get_data_message.show() except ValueError: Logger.logException("w", "Could not load auth data from preferences") ## Store authentication data in preferences. def _storeAuthData(self, auth_data: Optional[AuthenticationResponse] = None) -> None: + Logger.log("d", "Attempting to store the auth data") if self._preferences is None: Logger.log("e", "Unable to save authentication data, since no preference has been set!") return @@ -178,3 +215,6 @@ class AuthorizationService: else: self._user_profile = None self._preferences.resetPreference(self._settings.AUTH_DATA_PREFERENCE_KEY) + + self.accessTokenChanged.emit() + diff --git a/cura/OAuth2/LocalAuthorizationServer.py b/cura/OAuth2/LocalAuthorizationServer.py index 25b2435012..a80b0deb28 100644 --- a/cura/OAuth2/LocalAuthorizationServer.py +++ b/cura/OAuth2/LocalAuthorizationServer.py @@ -63,6 +63,10 @@ class LocalAuthorizationServer: Logger.log("d", "Stopping local oauth2 web server...") if self._web_server: - self._web_server.server_close() + try: + self._web_server.server_close() + except OSError: + # OS error can happen if the socket was already closed. We really don't care about that case. + pass self._web_server = None self._web_server_thread = None diff --git a/cura/ObjectsModel.py b/cura/ObjectsModel.py deleted file mode 100644 index 8354540783..0000000000 --- a/cura/ObjectsModel.py +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from PyQt5.QtCore import QTimer - -from UM.Application import Application -from UM.Qt.ListModel import ListModel -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator -from UM.Scene.SceneNode import SceneNode -from UM.Scene.Selection import Selection -from UM.i18n import i18nCatalog -from collections import defaultdict - -catalog = i18nCatalog("cura") - - -## Keep track of all objects in the project -class ObjectsModel(ListModel): - def __init__(self): - super().__init__() - - Application.getInstance().getController().getScene().sceneChanged.connect(self._updateDelayed) - Application.getInstance().getPreferences().preferenceChanged.connect(self._updateDelayed) - - self._update_timer = QTimer() - self._update_timer.setInterval(100) - self._update_timer.setSingleShot(True) - self._update_timer.timeout.connect(self._update) - - self._build_plate_number = -1 - - def setActiveBuildPlate(self, nr): - self._build_plate_number = nr - self._update() - - def _updateDelayed(self, *args): - self._update_timer.start() - - def _update(self, *args): - nodes = [] - filter_current_build_plate = Application.getInstance().getPreferences().getValue("view/filter_current_build_plate") - active_build_plate_number = self._build_plate_number - group_nr = 1 - name_count_dict = defaultdict(int) - - for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): - if not isinstance(node, SceneNode): - continue - if (not node.getMeshData() and not node.callDecoration("getLayerData")) and not node.callDecoration("isGroup"): - continue - if node.getParent() and node.getParent().callDecoration("isGroup"): - continue # Grouped nodes don't need resetting as their parent (the group) is resetted) - if not node.callDecoration("isSliceable") and not node.callDecoration("isGroup"): - continue - node_build_plate_number = node.callDecoration("getBuildPlateNumber") - if filter_current_build_plate and node_build_plate_number != active_build_plate_number: - continue - - if not node.callDecoration("isGroup"): - name = node.getName() - - else: - name = catalog.i18nc("@label", "Group #{group_nr}").format(group_nr = str(group_nr)) - group_nr += 1 - - if hasattr(node, "isOutsideBuildArea"): - is_outside_build_area = node.isOutsideBuildArea() - else: - is_outside_build_area = False - - #check if we already have an instance of the object based on name - name_count_dict[name] += 1 - name_count = name_count_dict[name] - - if name_count > 1: - name = "{0}({1})".format(name, name_count-1) - node.setName(name) - - nodes.append({ - "name": name, - "isSelected": Selection.isSelected(node), - "isOutsideBuildArea": is_outside_build_area, - "buildPlateNumber": node_build_plate_number, - "node": node - }) - - nodes = sorted(nodes, key=lambda n: n["name"]) - self.setItems(nodes) - - self.itemsChanged.emit() - - @staticmethod - def createObjectsModel(): - return ObjectsModel() diff --git a/cura/OneAtATimeIterator.py b/cura/OneAtATimeIterator.py index a08f3ed2bf..b77e1f3982 100644 --- a/cura/OneAtATimeIterator.py +++ b/cura/OneAtATimeIterator.py @@ -1,149 +1,127 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import sys +from typing import List -from shapely import affinity -from shapely.geometry import Polygon - -from UM.Scene.Iterator.Iterator import Iterator +from UM.Scene.Iterator import Iterator from UM.Scene.SceneNode import SceneNode +from functools import cmp_to_key +## Iterator that returns a list of nodes in the order that they need to be printed +# If there is no solution an empty list is returned. +# Take note that the list of nodes can have children (that may or may not contain mesh data) +class OneAtATimeIterator(Iterator.Iterator): + def __init__(self, scene_node) -> None: + super().__init__(scene_node) # Call super to make multiple inheritance work. + self._hit_map = [[]] # type: List[List[bool]] # For each node, which other nodes this hits. A grid of booleans on which nodes hit which. + self._original_node_list = [] # type: List[SceneNode] # The nodes that need to be checked for collisions. -# Iterator that determines the object print order when one-at a time mode is enabled. -# -# In one-at-a-time mode, only one extruder can be enabled to print. In order to maximize the number of objects we can -# print, we need to print from the corner that's closest to the extruder that's being used. Here is an illustration: -# -# +--------------------------------+ -# | | -# | | -# | | - Rectangle represents the complete print head including fans, etc. -# | X X | y - X's are the nozzles -# | (1) (2) | ^ -# | | | -# +--------------------------------+ +--> x -# -# In this case, the nozzles are symmetric, nozzle (1) is closer to the bottom left corner while (2) is closer to the -# bottom right. If we use nozzle (1) to print, then we better off printing from the bottom left corner so the print -# head will not collide into an object on its top-right side, which is a very large unused area. Following the same -# logic, if we are printing with nozzle (2), then it's better to print from the bottom-right side. -# -# This iterator determines the print order following the rules above. -# -class OneAtATimeIterator(Iterator): - - def __init__(self, scene_node): - from cura.CuraApplication import CuraApplication - self._global_stack = CuraApplication.getInstance().getGlobalContainerStack() - self._original_node_list = [] - - super().__init__(scene_node) # Call super to make multiple inheritance work. - - def getMachineNearestCornerToExtruder(self, global_stack): - head_and_fans_coordinates = global_stack.getHeadAndFansCoordinates() - - used_extruder = None - for extruder in global_stack.extruders.values(): - if extruder.isEnabled: - used_extruder = extruder - break - - extruder_offsets = [used_extruder.getProperty("machine_nozzle_offset_x", "value"), - used_extruder.getProperty("machine_nozzle_offset_y", "value")] - - # find the corner that's closest to the origin - min_distance2 = sys.maxsize - min_coord = None - for coord in head_and_fans_coordinates: - x = coord[0] - extruder_offsets[0] - y = coord[1] - extruder_offsets[1] - - distance2 = x**2 + y**2 - if distance2 <= min_distance2: - min_distance2 = distance2 - min_coord = coord - - return min_coord - - def _checkForCollisions(self) -> bool: - all_nodes = [] - for node in self._scene_node.getChildren(): - if not issubclass(type(node), SceneNode): - continue - convex_hull = node.callDecoration("getConvexHullHead") - if not convex_hull: - continue - - bounding_box = node.getBoundingBox() - if not bounding_box: - continue - from UM.Math.Polygon import Polygon - bounding_box_polygon = Polygon([[bounding_box.left, bounding_box.front], - [bounding_box.left, bounding_box.back], - [bounding_box.right, bounding_box.back], - [bounding_box.right, bounding_box.front]]) - - all_nodes.append({"node": node, - "bounding_box": bounding_box_polygon, - "convex_hull": convex_hull}) - - has_collisions = False - for i, node_dict in enumerate(all_nodes): - for j, other_node_dict in enumerate(all_nodes): - if i == j: - continue - if node_dict["bounding_box"].intersectsPolygon(other_node_dict["convex_hull"]): - has_collisions = True - break - - if has_collisions: - break - - return has_collisions - - def _fillStack(self): - min_coord = self.getMachineNearestCornerToExtruder(self._global_stack) - transform_x = -int(round(min_coord[0] / abs(min_coord[0]))) - transform_y = -int(round(min_coord[1] / abs(min_coord[1]))) - - machine_size = [self._global_stack.getProperty("machine_width", "value"), - self._global_stack.getProperty("machine_depth", "value")] - - def flip_x(polygon): - tm2 = [-1, 0, 0, 1, 0, 0] - return affinity.affine_transform(affinity.translate(polygon, xoff = -machine_size[0]), tm2) - - def flip_y(polygon): - tm2 = [1, 0, 0, -1, 0, 0] - return affinity.affine_transform(affinity.translate(polygon, yoff = -machine_size[1]), tm2) - - if self._checkForCollisions(): - self._node_stack = [] - return - + ## Fills the ``_node_stack`` with a list of scene nodes that need to be + # printed in order. + def _fillStack(self) -> None: node_list = [] for node in self._scene_node.getChildren(): if not issubclass(type(node), SceneNode): continue - convex_hull = node.callDecoration("getConvexHull") - if convex_hull: - xmin = min(x for x, _ in convex_hull._points) - xmax = max(x for x, _ in convex_hull._points) - ymin = min(y for _, y in convex_hull._points) - ymax = max(y for _, y in convex_hull._points) + if node.callDecoration("getConvexHull"): + node_list.append(node) - convex_hull_polygon = Polygon.from_bounds(xmin, ymin, xmax, ymax) - if transform_x < 0: - convex_hull_polygon = flip_x(convex_hull_polygon) - if transform_y < 0: - convex_hull_polygon = flip_y(convex_hull_polygon) - node_list.append({"node": node, - "min_coord": [convex_hull_polygon.bounds[0], convex_hull_polygon.bounds[1]], - }) + if len(node_list) < 2: + self._node_stack = node_list[:] + return - node_list = sorted(node_list, key = lambda d: d["min_coord"]) + # Copy the list + self._original_node_list = node_list[:] - self._node_stack = [d["node"] for d in node_list] + ## Initialise the hit map (pre-compute all hits between all objects) + self._hit_map = [[self._checkHit(i,j) for i in node_list] for j in node_list] + + # Check if we have to files that block each other. If this is the case, there is no solution! + for a in range(0, len(node_list)): + for b in range(0, len(node_list)): + if a != b and self._hit_map[a][b] and self._hit_map[b][a]: + return + + # Sort the original list so that items that block the most other objects are at the beginning. + # This does not decrease the worst case running time, but should improve it in most cases. + sorted(node_list, key = cmp_to_key(self._calculateScore)) + + todo_node_list = [_ObjectOrder([], node_list)] + while len(todo_node_list) > 0: + current = todo_node_list.pop() + for node in current.todo: + # Check if the object can be placed with what we have and still allows for a solution in the future + if not self._checkHitMultiple(node, current.order) and not self._checkBlockMultiple(node, current.todo): + # We found a possible result. Create new todo & order list. + new_todo_list = current.todo[:] + new_todo_list.remove(node) + new_order = current.order[:] + [node] + if len(new_todo_list) == 0: + # We have no more nodes to check, so quit looking. + self._node_stack = new_order + return + todo_node_list.append(_ObjectOrder(new_order, new_todo_list)) + self._node_stack = [] #No result found! + + + # Check if first object can be printed before the provided list (using the hit map) + def _checkHitMultiple(self, node: SceneNode, other_nodes: List[SceneNode]) -> bool: + node_index = self._original_node_list.index(node) + for other_node in other_nodes: + other_node_index = self._original_node_list.index(other_node) + if self._hit_map[node_index][other_node_index]: + return True + return False + + ## Check for a node whether it hits any of the other nodes. + # \param node The node to check whether it collides with the other nodes. + # \param other_nodes The nodes to check for collisions. + def _checkBlockMultiple(self, node: SceneNode, other_nodes: List[SceneNode]) -> bool: + node_index = self._original_node_list.index(node) + for other_node in other_nodes: + other_node_index = self._original_node_list.index(other_node) + if self._hit_map[other_node_index][node_index] and node_index != other_node_index: + return True + return False + + ## Calculate score simply sums the number of other objects it 'blocks' + def _calculateScore(self, a: SceneNode, b: SceneNode) -> int: + score_a = sum(self._hit_map[self._original_node_list.index(a)]) + score_b = sum(self._hit_map[self._original_node_list.index(b)]) + return score_a - score_b + + ## Checks if A can be printed before B + def _checkHit(self, a: SceneNode, b: SceneNode) -> bool: + if a == b: + return False + + a_hit_hull = a.callDecoration("getConvexHullBoundary") + b_hit_hull = b.callDecoration("getConvexHullHeadFull") + overlap = a_hit_hull.intersectsPolygon(b_hit_hull) + + if overlap: + return True + + # Adhesion areas must never overlap, regardless of printing order + # This would cause over-extrusion + a_hit_hull = a.callDecoration("getAdhesionArea") + b_hit_hull = b.callDecoration("getAdhesionArea") + overlap = a_hit_hull.intersectsPolygon(b_hit_hull) + + if overlap: + return True + else: + return False + + +## Internal object used to keep track of a possible order in which to print objects. +class _ObjectOrder: + ## Creates the _ObjectOrder instance. + # \param order List of indices in which to print objects, ordered by printing + # order. + # \param todo: List of indices which are not yet inserted into the order list. + def __init__(self, order: List[SceneNode], todo: List[SceneNode]): + self.order = order + self.todo = todo diff --git a/cura/Operations/PlatformPhysicsOperation.py b/cura/Operations/PlatformPhysicsOperation.py index 75c5b437bc..9571679c3c 100644 --- a/cura/Operations/PlatformPhysicsOperation.py +++ b/cura/Operations/PlatformPhysicsOperation.py @@ -29,4 +29,4 @@ class PlatformPhysicsOperation(Operation): return group def __repr__(self): - return "PlatformPhysicsOperation(translation = {0})".format(self._translation) + return "PlatformPhysicsOp.(trans.={0})".format(self._translation) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 8ddcdbfb2f..a411478b16 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -40,8 +40,9 @@ class PlatformPhysics: Application.getInstance().getPreferences().addPreference("physics/automatic_drop_down", True) def _onSceneChanged(self, source): - if not source.getMeshData(): + if not source.callDecoration("isSliceable"): return + self._change_timer.start() def _onChangeTimerFinished(self): @@ -49,18 +50,20 @@ class PlatformPhysics: return root = self._controller.getScene().getRoot() + build_volume = Application.getInstance().getBuildVolume() + build_volume.updateNodeBoundaryCheck() # Keep a list of nodes that are moving. We use this so that we don't move two intersecting objects in the # same direction. transformed_nodes = [] - # We try to shuffle all the nodes to prevent "locked" situations, where iteration B inverts iteration A. - # By shuffling the order of the nodes, this might happen a few times, but at some point it will resolve. nodes = list(BreadthFirstIterator(root)) # Only check nodes inside build area. nodes = [node for node in nodes if (hasattr(node, "_outside_buildarea") and not node._outside_buildarea)] + # We try to shuffle all the nodes to prevent "locked" situations, where iteration B inverts iteration A. + # By shuffling the order of the nodes, this might happen a few times, but at some point it will resolve. random.shuffle(nodes) for node in nodes: if node is root or not isinstance(node, SceneNode) or node.getBoundingBox() is None: @@ -76,7 +79,7 @@ class PlatformPhysics: move_vector = move_vector.set(y = -bbox.bottom + z_offset) # If there is no convex hull for the node, start calculating it and continue. - if not node.getDecorator(ConvexHullDecorator): + if not node.getDecorator(ConvexHullDecorator) and not node.callDecoration("isNonPrintingMesh"): node.addDecorator(ConvexHullDecorator()) # only push away objects if this node is a printing mesh @@ -160,7 +163,6 @@ class PlatformPhysics: op.push() # After moving, we have to evaluate the boundary checks for nodes - build_volume = Application.getInstance().getBuildVolume() build_volume.updateNodeBoundaryCheck() def _onToolOperationStarted(self, tool): diff --git a/cura/PreviewPass.py b/cura/PreviewPass.py index befb52ee5e..58205ba708 100644 --- a/cura/PreviewPass.py +++ b/cura/PreviewPass.py @@ -1,7 +1,8 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, TYPE_CHECKING +from typing import Optional, TYPE_CHECKING, cast + from UM.Application import Application from UM.Resources import Resources @@ -12,6 +13,7 @@ from UM.View.RenderBatch import RenderBatch from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from cura.Scene.CuraSceneNode import CuraSceneNode if TYPE_CHECKING: from UM.View.GL.ShaderProgram import ShaderProgram @@ -44,9 +46,9 @@ class PreviewPass(RenderPass): self._renderer = Application.getInstance().getRenderer() - self._shader = None #type: Optional[ShaderProgram] - self._non_printing_shader = None #type: Optional[ShaderProgram] - self._support_mesh_shader = None #type: Optional[ShaderProgram] + self._shader = None # type: Optional[ShaderProgram] + self._non_printing_shader = None # type: Optional[ShaderProgram] + self._support_mesh_shader = None # type: Optional[ShaderProgram] self._scene = Application.getInstance().getController().getScene() # Set the camera to be used by this render pass @@ -62,6 +64,7 @@ class PreviewPass(RenderPass): self._shader.setUniformValue("u_ambientColor", [0.1, 0.1, 0.1, 1.0]) self._shader.setUniformValue("u_specularColor", [0.6, 0.6, 0.6, 1.0]) self._shader.setUniformValue("u_shininess", 20.0) + self._shader.setUniformValue("u_faceId", -1) # Don't render any selected faces in the preview. if not self._non_printing_shader: if self._non_printing_shader: @@ -83,30 +86,31 @@ class PreviewPass(RenderPass): batch_support_mesh = RenderBatch(self._support_mesh_shader) # Fill up the batch with objects that can be sliced. - for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. - if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible(): - per_mesh_stack = node.callDecoration("getStack") - if node.callDecoration("isNonThumbnailVisibleMesh"): - # Non printing mesh - continue - elif per_mesh_stack is not None and per_mesh_stack.getProperty("support_mesh", "value"): - # Support mesh - uniforms = {} - shade_factor = 0.6 - diffuse_color = node.getDiffuseColor() - diffuse_color2 = [ - diffuse_color[0] * shade_factor, - diffuse_color[1] * shade_factor, - diffuse_color[2] * shade_factor, - 1.0] - uniforms["diffuse_color"] = prettier_color(diffuse_color) - uniforms["diffuse_color_2"] = diffuse_color2 - batch_support_mesh.addItem(node.getWorldTransformation(), node.getMeshData(), uniforms = uniforms) - else: - # Normal scene node - uniforms = {} - uniforms["diffuse_color"] = prettier_color(node.getDiffuseColor()) - batch.addItem(node.getWorldTransformation(), node.getMeshData(), uniforms = uniforms) + for node in DepthFirstIterator(self._scene.getRoot()): + if hasattr(node, "_outside_buildarea") and not getattr(node, "_outside_buildarea"): + if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible(): + per_mesh_stack = node.callDecoration("getStack") + if node.callDecoration("isNonThumbnailVisibleMesh"): + # Non printing mesh + continue + elif per_mesh_stack is not None and per_mesh_stack.getProperty("support_mesh", "value"): + # Support mesh + uniforms = {} + shade_factor = 0.6 + diffuse_color = cast(CuraSceneNode, node).getDiffuseColor() + diffuse_color2 = [ + diffuse_color[0] * shade_factor, + diffuse_color[1] * shade_factor, + diffuse_color[2] * shade_factor, + 1.0] + uniforms["diffuse_color"] = prettier_color(diffuse_color) + uniforms["diffuse_color_2"] = diffuse_color2 + batch_support_mesh.addItem(node.getWorldTransformation(), node.getMeshData(), uniforms = uniforms) + else: + # Normal scene node + uniforms = {} + uniforms["diffuse_color"] = prettier_color(cast(CuraSceneNode, node).getDiffuseColor()) + batch.addItem(node.getWorldTransformation(), node.getMeshData(), uniforms = uniforms) self.bind() diff --git a/cura/PrinterOutput/FirmwareUpdater.py b/cura/PrinterOutput/FirmwareUpdater.py index c6d9513ee0..56e260a7f0 100644 --- a/cura/PrinterOutput/FirmwareUpdater.py +++ b/cura/PrinterOutput/FirmwareUpdater.py @@ -9,7 +9,7 @@ from typing import Union MYPY = False if MYPY: - from cura.PrinterOutputDevice import PrinterOutputDevice + from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice class FirmwareUpdater(QObject): firmwareProgressChanged = pyqtSignal() @@ -20,7 +20,7 @@ class FirmwareUpdater(QObject): self._output_device = output_device - self._update_firmware_thread = Thread(target=self._updateFirmware, daemon=True) + self._update_firmware_thread = Thread(target=self._updateFirmware, daemon=True, name = "FirmwareUpdateThread") self._firmware_file = "" self._firmware_progress = 0 @@ -43,7 +43,7 @@ class FirmwareUpdater(QObject): ## Cleanup after a succesful update def _cleanupAfterUpdate(self) -> None: # Clean up for next attempt. - self._update_firmware_thread = Thread(target=self._updateFirmware, daemon=True) + self._update_firmware_thread = Thread(target=self._updateFirmware, daemon=True, name = "FirmwareUpdateThread") self._firmware_file = "" self._onFirmwareProgress(100) self._setFirmwareUpdateState(FirmwareUpdateState.completed) diff --git a/cura/PrinterOutput/GenericOutputController.py b/cura/PrinterOutput/GenericOutputController.py index 1cb416787c..c160459776 100644 --- a/cura/PrinterOutput/GenericOutputController.py +++ b/cura/PrinterOutput/GenericOutputController.py @@ -3,14 +3,15 @@ from typing import TYPE_CHECKING, Set, Union, Optional -from cura.PrinterOutput.PrinterOutputController import PrinterOutputController from PyQt5.QtCore import QTimer +from .PrinterOutputController import PrinterOutputController + if TYPE_CHECKING: - from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel - from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel - from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice - from cura.PrinterOutput.ExtruderOutputModel import ExtruderOutputModel + from .Models.PrintJobOutputModel import PrintJobOutputModel + from .Models.PrinterOutputModel import PrinterOutputModel + from .PrinterOutputDevice import PrinterOutputDevice + from .Models.ExtruderOutputModel import ExtruderOutputModel class GenericOutputController(PrinterOutputController): @@ -54,7 +55,7 @@ class GenericOutputController(PrinterOutputController): self._preheat_hotends_timer.stop() for extruder in self._preheat_hotends: extruder.updateIsPreheating(False) - self._preheat_hotends = set() # type: Set[ExtruderOutputModel] + self._preheat_hotends = set() def moveHead(self, printer: "PrinterOutputModel", x, y, z, speed) -> None: self._output_device.sendCommand("G91") @@ -158,7 +159,7 @@ class GenericOutputController(PrinterOutputController): def _onPreheatHotendsTimerFinished(self) -> None: for extruder in self._preheat_hotends: self.setTargetHotendTemperature(extruder.getPrinter(), extruder.getPosition(), 0) - self._preheat_hotends = set() #type: Set[ExtruderOutputModel] + self._preheat_hotends = set() # Cancel any ongoing preheating timers, without setting back the temperature to 0 # This can be used eg at the start of a print @@ -166,7 +167,7 @@ class GenericOutputController(PrinterOutputController): if self._preheat_hotends_timer.isActive(): for extruder in self._preheat_hotends: extruder.updateIsPreheating(False) - self._preheat_hotends = set() #type: Set[ExtruderOutputModel] + self._preheat_hotends = set() self._preheat_hotends_timer.stop() diff --git a/cura/PrinterOutput/MaterialOutputModel.py b/cura/PrinterOutput/MaterialOutputModel.py deleted file mode 100644 index 64ebd3c94c..0000000000 --- a/cura/PrinterOutput/MaterialOutputModel.py +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant, pyqtSlot - - -class MaterialOutputModel(QObject): - def __init__(self, guid, type, color, brand, name, parent = None): - super().__init__(parent) - self._guid = guid - self._type = type - self._color = color - self._brand = brand - self._name = name - - @pyqtProperty(str, constant = True) - def guid(self): - return self._guid - - @pyqtProperty(str, constant=True) - def type(self): - return self._type - - @pyqtProperty(str, constant=True) - def brand(self): - return self._brand - - @pyqtProperty(str, constant=True) - def color(self): - return self._color - - @pyqtProperty(str, constant=True) - def name(self): - return self._name \ No newline at end of file diff --git a/cura/PrinterOutput/ExtruderConfigurationModel.py b/cura/PrinterOutput/Models/ExtruderConfigurationModel.py similarity index 70% rename from cura/PrinterOutput/ExtruderConfigurationModel.py rename to cura/PrinterOutput/Models/ExtruderConfigurationModel.py index da0ad6b0b2..4a1cf4916f 100644 --- a/cura/PrinterOutput/ExtruderConfigurationModel.py +++ b/cura/PrinterOutput/Models/ExtruderConfigurationModel.py @@ -4,7 +4,7 @@ from typing import Optional from PyQt5.QtCore import pyqtProperty, QObject, pyqtSignal -from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel +from .MaterialOutputModel import MaterialOutputModel class ExtruderConfigurationModel(QObject): @@ -25,15 +25,16 @@ class ExtruderConfigurationModel(QObject): return self._position def setMaterial(self, material: Optional[MaterialOutputModel]) -> None: - if self._hotend_id != material: - self._material = material - self.extruderConfigurationChanged.emit() + if material is None or self._material == material: + return + self._material = material + self.extruderConfigurationChanged.emit() @pyqtProperty(QObject, fset = setMaterial, notify = extruderConfigurationChanged) def activeMaterial(self) -> Optional[MaterialOutputModel]: return self._material - @pyqtProperty(QObject, fset=setMaterial, notify=extruderConfigurationChanged) + @pyqtProperty(QObject, fset = setMaterial, notify = extruderConfigurationChanged) def material(self) -> Optional[MaterialOutputModel]: return self._material @@ -62,9 +63,26 @@ class ExtruderConfigurationModel(QObject): return " ".join(message_chunks) def __eq__(self, other) -> bool: - return hash(self) == hash(other) + if not isinstance(other, ExtruderConfigurationModel): + return False + + if self._position != other.position: + return False + # Empty materials should be ignored for comparison + if self.activeMaterial is not None and other.activeMaterial is not None: + if self.activeMaterial.guid != other.activeMaterial.guid: + if self.activeMaterial.guid != "" and other.activeMaterial.guid != "": + return False + else: + # At this point there is no material, so it doesn't matter what the hotend is. + return True + + if self.hotendID != other.hotendID: + return False + + return True # Calculating a hash function using the position of the extruder, the material GUID and the hotend id to check if is # unique within a set def __hash__(self): - return hash(self._position) ^ (hash(self._material.guid) if self._material is not None else hash(0)) ^ hash(self._hotend_id) \ No newline at end of file + return hash(self._position) ^ (hash(self._material.guid) if self._material is not None else hash(0)) ^ hash(self._hotend_id) diff --git a/cura/PrinterOutput/ExtruderOutputModel.py b/cura/PrinterOutput/Models/ExtruderOutputModel.py similarity index 95% rename from cura/PrinterOutput/ExtruderOutputModel.py rename to cura/PrinterOutput/Models/ExtruderOutputModel.py index 30d53bbd85..889e140312 100644 --- a/cura/PrinterOutput/ExtruderOutputModel.py +++ b/cura/PrinterOutput/Models/ExtruderOutputModel.py @@ -1,14 +1,15 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot -from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel - from typing import Optional, TYPE_CHECKING +from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot + +from .ExtruderConfigurationModel import ExtruderConfigurationModel + if TYPE_CHECKING: - from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel - from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel + from .MaterialOutputModel import MaterialOutputModel + from .PrinterOutputModel import PrinterOutputModel class ExtruderOutputModel(QObject): diff --git a/cura/PrinterOutput/Models/MaterialOutputModel.py b/cura/PrinterOutput/Models/MaterialOutputModel.py new file mode 100644 index 0000000000..3714824a89 --- /dev/null +++ b/cura/PrinterOutput/Models/MaterialOutputModel.py @@ -0,0 +1,44 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional + +from PyQt5.QtCore import pyqtProperty, QObject + + +class MaterialOutputModel(QObject): + def __init__(self, guid: Optional[str], type: str, color: str, brand: str, name: str, parent = None) -> None: + super().__init__(parent) + self._guid = guid + self._type = type + self._color = color + self._brand = brand + self._name = name + + @pyqtProperty(str, constant = True) + def guid(self) -> str: + return self._guid if self._guid else "" + + @pyqtProperty(str, constant = True) + def type(self) -> str: + return self._type + + @pyqtProperty(str, constant = True) + def brand(self) -> str: + return self._brand + + @pyqtProperty(str, constant = True) + def color(self) -> str: + return self._color + + @pyqtProperty(str, constant = True) + def name(self) -> str: + return self._name + + def __eq__(self, other): + if self is other: + return True + if type(other) is not MaterialOutputModel: + return False + + return self.guid == other.guid and self.type == other.type and self.brand == other.brand and self.color == other.color and self.name == other.name diff --git a/cura/PrinterOutput/Models/PrintJobOutputModel.py b/cura/PrinterOutput/Models/PrintJobOutputModel.py new file mode 100644 index 0000000000..b4296a5494 --- /dev/null +++ b/cura/PrinterOutput/Models/PrintJobOutputModel.py @@ -0,0 +1,171 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional, TYPE_CHECKING, List + +from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot, QUrl +from PyQt5.QtGui import QImage + +if TYPE_CHECKING: + from cura.PrinterOutput.PrinterOutputController import PrinterOutputController + from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel + from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel + + +class PrintJobOutputModel(QObject): + stateChanged = pyqtSignal() + timeTotalChanged = pyqtSignal() + timeElapsedChanged = pyqtSignal() + nameChanged = pyqtSignal() + keyChanged = pyqtSignal() + assignedPrinterChanged = pyqtSignal() + ownerChanged = pyqtSignal() + configurationChanged = pyqtSignal() + previewImageChanged = pyqtSignal() + compatibleMachineFamiliesChanged = pyqtSignal() + + def __init__(self, output_controller: "PrinterOutputController", key: str = "", name: str = "", parent = None) -> None: + super().__init__(parent) + self._output_controller = output_controller + self._state = "" + self._time_total = 0 + self._time_elapsed = 0 + self._name = name # Human readable name + self._key = key # Unique identifier + self._assigned_printer = None # type: Optional[PrinterOutputModel] + self._owner = "" # Who started/owns the print job? + + self._configuration = None # type: Optional[PrinterConfigurationModel] + self._compatible_machine_families = [] # type: List[str] + self._preview_image_id = 0 + + self._preview_image = None # type: Optional[QImage] + + @pyqtProperty("QStringList", notify=compatibleMachineFamiliesChanged) + def compatibleMachineFamilies(self): + # Hack; Some versions of cluster will return a family more than once... + return list(set(self._compatible_machine_families)) + + def setCompatibleMachineFamilies(self, compatible_machine_families: List[str]) -> None: + if self._compatible_machine_families != compatible_machine_families: + self._compatible_machine_families = compatible_machine_families + self.compatibleMachineFamiliesChanged.emit() + + @pyqtProperty(QUrl, notify=previewImageChanged) + def previewImageUrl(self): + self._preview_image_id += 1 + # There is an image provider that is called "print_job_preview". In order to ensure that the image qml object, that + # requires a QUrl to function, updates correctly we add an increasing number. This causes to see the QUrl + # as new (instead of relying on cached version and thus forces an update. + temp = "image://print_job_preview/" + str(self._preview_image_id) + "/" + self._key + return QUrl(temp, QUrl.TolerantMode) + + def getPreviewImage(self) -> Optional[QImage]: + return self._preview_image + + def updatePreviewImage(self, preview_image: Optional[QImage]) -> None: + if self._preview_image != preview_image: + self._preview_image = preview_image + self.previewImageChanged.emit() + + @pyqtProperty(QObject, notify=configurationChanged) + def configuration(self) -> Optional["PrinterConfigurationModel"]: + return self._configuration + + def updateConfiguration(self, configuration: Optional["PrinterConfigurationModel"]) -> None: + if self._configuration != configuration: + self._configuration = configuration + self.configurationChanged.emit() + + @pyqtProperty(str, notify=ownerChanged) + def owner(self): + return self._owner + + def updateOwner(self, owner): + if self._owner != owner: + self._owner = owner + self.ownerChanged.emit() + + @pyqtProperty(QObject, notify=assignedPrinterChanged) + def assignedPrinter(self): + return self._assigned_printer + + def updateAssignedPrinter(self, assigned_printer: Optional["PrinterOutputModel"]) -> None: + if self._assigned_printer != assigned_printer: + old_printer = self._assigned_printer + self._assigned_printer = assigned_printer + if old_printer is not None: + # If the previously assigned printer is set, this job is moved away from it. + old_printer.updateActivePrintJob(None) + self.assignedPrinterChanged.emit() + + @pyqtProperty(str, notify=keyChanged) + def key(self): + return self._key + + def updateKey(self, key: str): + if self._key != key: + self._key = key + self.keyChanged.emit() + + @pyqtProperty(str, notify = nameChanged) + def name(self): + return self._name + + def updateName(self, name: str): + if self._name != name: + self._name = name + self.nameChanged.emit() + + @pyqtProperty(int, notify = timeTotalChanged) + def timeTotal(self) -> int: + return self._time_total + + @pyqtProperty(int, notify = timeElapsedChanged) + def timeElapsed(self) -> int: + return self._time_elapsed + + @pyqtProperty(int, notify = timeElapsedChanged) + def timeRemaining(self) -> int: + # Never get a negative time remaining + return max(self.timeTotal - self.timeElapsed, 0) + + @pyqtProperty(float, notify = timeElapsedChanged) + def progress(self) -> float: + result = float(self.timeElapsed) / max(self.timeTotal, 1.0) # Prevent a division by zero exception. + return min(result, 1.0) # Never get a progress past 1.0 + + @pyqtProperty(str, notify=stateChanged) + def state(self) -> str: + return self._state + + @pyqtProperty(bool, notify=stateChanged) + def isActive(self) -> bool: + inactive_states = [ + "pausing", + "paused", + "resuming", + "wait_cleanup" + ] + if self.state in inactive_states and self.timeRemaining > 0: + return False + return True + + def updateTimeTotal(self, new_time_total): + if self._time_total != new_time_total: + self._time_total = new_time_total + self.timeTotalChanged.emit() + + def updateTimeElapsed(self, new_time_elapsed): + if self._time_elapsed != new_time_elapsed: + self._time_elapsed = new_time_elapsed + self.timeElapsedChanged.emit() + + def updateState(self, new_state): + if self._state != new_state: + self._state = new_state + self.stateChanged.emit() + + @pyqtSlot(str) + def setState(self, state): + self._output_controller.setJobState(self, state) diff --git a/cura/PrinterOutput/ConfigurationModel.py b/cura/PrinterOutput/Models/PrinterConfigurationModel.py similarity index 72% rename from cura/PrinterOutput/ConfigurationModel.py rename to cura/PrinterOutput/Models/PrinterConfigurationModel.py index 312e3cffb0..52c7b6f960 100644 --- a/cura/PrinterOutput/ConfigurationModel.py +++ b/cura/PrinterOutput/Models/PrinterConfigurationModel.py @@ -6,10 +6,10 @@ from typing import List MYPY = False if MYPY: - from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel + from cura.PrinterOutput.Models.ExtruderConfigurationModel import ExtruderConfigurationModel -class ConfigurationModel(QObject): +class PrinterConfigurationModel(QObject): configurationChanged = pyqtSignal() @@ -19,14 +19,14 @@ class ConfigurationModel(QObject): self._extruder_configurations = [] # type: List[ExtruderConfigurationModel] self._buildplate_configuration = "" - def setPrinterType(self, printer_type): + def setPrinterType(self, printer_type: str) -> None: self._printer_type = printer_type @pyqtProperty(str, fset = setPrinterType, notify = configurationChanged) def printerType(self) -> str: return self._printer_type - def setExtruderConfigurations(self, extruder_configurations: List["ExtruderConfigurationModel"]): + def setExtruderConfigurations(self, extruder_configurations: List["ExtruderConfigurationModel"]) -> None: if self._extruder_configurations != extruder_configurations: self._extruder_configurations = extruder_configurations @@ -40,7 +40,7 @@ class ConfigurationModel(QObject): return self._extruder_configurations def setBuildplateConfiguration(self, buildplate_configuration: str) -> None: - if self._buildplate_configuration != buildplate_configuration: + if self._buildplate_configuration != buildplate_configuration: self._buildplate_configuration = buildplate_configuration self.configurationChanged.emit() @@ -58,6 +58,14 @@ class ConfigurationModel(QObject): return False return self._printer_type != "" + def hasAnyMaterialLoaded(self) -> bool: + if not self.isValid(): + return False + for configuration in self._extruder_configurations: + if configuration.activeMaterial and configuration.activeMaterial.type != "empty": + return True + return False + def __str__(self): message_chunks = [] message_chunks.append("Printer type: " + self._printer_type) @@ -71,7 +79,23 @@ class ConfigurationModel(QObject): return "\n".join(message_chunks) def __eq__(self, other): - return hash(self) == hash(other) + if not isinstance(other, PrinterConfigurationModel): + return False + + if self.printerType != other.printerType: + return False + + if self.buildplateConfiguration != other.buildplateConfiguration: + return False + + if len(self.extruderConfigurations) != len(other.extruderConfigurations): + return False + + for self_extruder, other_extruder in zip(sorted(self._extruder_configurations, key=lambda x: x.position), sorted(other.extruderConfigurations, key=lambda x: x.position)): + if self_extruder != other_extruder: + return False + + return True ## The hash function is used to compare and create unique sets. The configuration is unique if the configuration # of the extruders is unique (the order of the extruders matters), and the type and buildplate is the same. @@ -86,4 +110,4 @@ class ConfigurationModel(QObject): if first_extruder: extruder_hash &= hash(first_extruder) - return hash(self._printer_type) ^ extruder_hash ^ hash(self._buildplate_configuration) \ No newline at end of file + return hash(self._printer_type) ^ extruder_hash ^ hash(self._buildplate_configuration) diff --git a/cura/PrinterOutput/Models/PrinterOutputModel.py b/cura/PrinterOutput/Models/PrinterOutputModel.py new file mode 100644 index 0000000000..37135bf663 --- /dev/null +++ b/cura/PrinterOutput/Models/PrinterOutputModel.py @@ -0,0 +1,350 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant, pyqtSlot, QUrl +from typing import List, Dict, Optional, TYPE_CHECKING +from UM.Math.Vector import Vector +from cura.PrinterOutput.Peripheral import Peripheral +from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel +from cura.PrinterOutput.Models.ExtruderOutputModel import ExtruderOutputModel +from UM.Logger import Logger + +if TYPE_CHECKING: + from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel + from cura.PrinterOutput.PrinterOutputController import PrinterOutputController + + +class PrinterOutputModel(QObject): + bedTemperatureChanged = pyqtSignal() + targetBedTemperatureChanged = pyqtSignal() + isPreheatingChanged = pyqtSignal() + stateChanged = pyqtSignal() + activePrintJobChanged = pyqtSignal() + nameChanged = pyqtSignal() + headPositionChanged = pyqtSignal() + keyChanged = pyqtSignal() + typeChanged = pyqtSignal() + buildplateChanged = pyqtSignal() + cameraUrlChanged = pyqtSignal() + configurationChanged = pyqtSignal() + canUpdateFirmwareChanged = pyqtSignal() + + def __init__(self, output_controller: "PrinterOutputController", number_of_extruders: int = 1, parent=None, firmware_version = "") -> None: + super().__init__(parent) + self._bed_temperature = -1 # type: float # Use -1 for no heated bed. + self._target_bed_temperature = 0 # type: float + self._name = "" + self._key = "" # Unique identifier + self._unique_name = "" # Unique name (used in Connect) + self._controller = output_controller + self._controller.canUpdateFirmwareChanged.connect(self._onControllerCanUpdateFirmwareChanged) + self._extruders = [ExtruderOutputModel(printer = self, position = i) for i in range(number_of_extruders)] + self._active_printer_configuration = PrinterConfigurationModel() # Indicates the current configuration setup in this printer + self._head_position = Vector(0, 0, 0) + self._active_print_job = None # type: Optional[PrintJobOutputModel] + self._firmware_version = firmware_version + self._printer_state = "unknown" + self._is_preheating = False + self._printer_type = "" + self._buildplate = "" + self._peripherals = [] # type: List[Peripheral] + + self._active_printer_configuration.extruderConfigurations = [extruder.extruderConfiguration for extruder in + self._extruders] + self._active_printer_configuration.configurationChanged.connect(self.configurationChanged) + self._available_printer_configurations = [] # type: List[PrinterConfigurationModel] + + self._camera_url = QUrl() # type: QUrl + + @pyqtProperty(str, constant = True) + def firmwareVersion(self) -> str: + return self._firmware_version + + def setCameraUrl(self, camera_url: "QUrl") -> None: + if self._camera_url != camera_url: + self._camera_url = camera_url + self.cameraUrlChanged.emit() + + @pyqtProperty(QUrl, fset = setCameraUrl, notify = cameraUrlChanged) + def cameraUrl(self) -> "QUrl": + return self._camera_url + + def updateIsPreheating(self, pre_heating: bool) -> None: + if self._is_preheating != pre_heating: + self._is_preheating = pre_heating + self.isPreheatingChanged.emit() + + @pyqtProperty(bool, notify=isPreheatingChanged) + def isPreheating(self) -> bool: + return self._is_preheating + + @pyqtProperty(str, notify = typeChanged) + def type(self) -> str: + return self._printer_type + + def updateType(self, printer_type: str) -> None: + if self._printer_type != printer_type: + self._printer_type = printer_type + self._active_printer_configuration.printerType = self._printer_type + self.typeChanged.emit() + self.configurationChanged.emit() + + @pyqtProperty(str, notify = buildplateChanged) + def buildplate(self) -> str: + return self._buildplate + + def updateBuildplate(self, buildplate: str) -> None: + if self._buildplate != buildplate: + self._buildplate = buildplate + self._active_printer_configuration.buildplateConfiguration = self._buildplate + self.buildplateChanged.emit() + self.configurationChanged.emit() + + @pyqtProperty(str, notify=keyChanged) + def key(self) -> str: + return self._key + + def updateKey(self, key: str) -> None: + if self._key != key: + self._key = key + self.keyChanged.emit() + + @pyqtSlot() + def homeHead(self) -> None: + self._controller.homeHead(self) + + @pyqtSlot() + def homeBed(self) -> None: + self._controller.homeBed(self) + + @pyqtSlot(str) + def sendRawCommand(self, command: str) -> None: + self._controller.sendRawCommand(self, command) + + @pyqtProperty("QVariantList", constant = True) + def extruders(self) -> List["ExtruderOutputModel"]: + return self._extruders + + @pyqtProperty(QVariant, notify = headPositionChanged) + def headPosition(self) -> Dict[str, float]: + return {"x": self._head_position.x, "y": self._head_position.y, "z": self.head_position.z} + + def updateHeadPosition(self, x: float, y: float, z: float) -> None: + if self._head_position.x != x or self._head_position.y != y or self._head_position.z != z: + self._head_position = Vector(x, y, z) + self.headPositionChanged.emit() + + @pyqtProperty(float, float, float) + @pyqtProperty(float, float, float, float) + def setHeadPosition(self, x: float, y: float, z: float, speed: float = 3000) -> None: + self.updateHeadPosition(x, y, z) + self._controller.setHeadPosition(self, x, y, z, speed) + + @pyqtProperty(float) + @pyqtProperty(float, float) + def setHeadX(self, x: float, speed: float = 3000) -> None: + self.updateHeadPosition(x, self._head_position.y, self._head_position.z) + self._controller.setHeadPosition(self, x, self._head_position.y, self._head_position.z, speed) + + @pyqtProperty(float) + @pyqtProperty(float, float) + def setHeadY(self, y: float, speed: float = 3000) -> None: + self.updateHeadPosition(self._head_position.x, y, self._head_position.z) + self._controller.setHeadPosition(self, self._head_position.x, y, self._head_position.z, speed) + + @pyqtProperty(float) + @pyqtProperty(float, float) + def setHeadZ(self, z: float, speed:float = 3000) -> None: + self.updateHeadPosition(self._head_position.x, self._head_position.y, z) + self._controller.setHeadPosition(self, self._head_position.x, self._head_position.y, z, speed) + + @pyqtSlot(float, float, float) + @pyqtSlot(float, float, float, float) + def moveHead(self, x: float = 0, y: float = 0, z: float = 0, speed: float = 3000) -> None: + self._controller.moveHead(self, x, y, z, speed) + + ## Pre-heats the heated bed of the printer. + # + # \param temperature The temperature to heat the bed to, in degrees + # Celsius. + # \param duration How long the bed should stay warm, in seconds. + @pyqtSlot(float, float) + def preheatBed(self, temperature: float, duration: float) -> None: + self._controller.preheatBed(self, temperature, duration) + + @pyqtSlot() + def cancelPreheatBed(self) -> None: + self._controller.cancelPreheatBed(self) + + def getController(self) -> "PrinterOutputController": + return self._controller + + @pyqtProperty(str, notify = nameChanged) + def name(self) -> str: + return self._name + + def setName(self, name: str) -> None: + self.updateName(name) + + def updateName(self, name: str) -> None: + if self._name != name: + self._name = name + self.nameChanged.emit() + + @pyqtProperty(str, notify = nameChanged) + def uniqueName(self) -> str: + return self._unique_name + + def updateUniqueName(self, unique_name: str) -> None: + if self._unique_name != unique_name: + self._unique_name = unique_name + self.nameChanged.emit() + + ## Update the bed temperature. This only changes it locally. + def updateBedTemperature(self, temperature: float) -> None: + if self._bed_temperature != temperature: + self._bed_temperature = temperature + self.bedTemperatureChanged.emit() + + def updateTargetBedTemperature(self, temperature: float) -> None: + if self._target_bed_temperature != temperature: + self._target_bed_temperature = temperature + self.targetBedTemperatureChanged.emit() + + ## Set the target bed temperature. This ensures that it's actually sent to the remote. + @pyqtSlot(float) + def setTargetBedTemperature(self, temperature: float) -> None: + self._controller.setTargetBedTemperature(self, temperature) + self.updateTargetBedTemperature(temperature) + + def updateActivePrintJob(self, print_job: Optional["PrintJobOutputModel"]) -> None: + if self._active_print_job != print_job: + old_print_job = self._active_print_job + + if print_job is not None: + print_job.updateAssignedPrinter(self) + self._active_print_job = print_job + + if old_print_job is not None: + old_print_job.updateAssignedPrinter(None) + self.activePrintJobChanged.emit() + + def updateState(self, printer_state: str) -> None: + if self._printer_state != printer_state: + self._printer_state = printer_state + self.stateChanged.emit() + + @pyqtProperty(QObject, notify = activePrintJobChanged) + def activePrintJob(self) -> Optional["PrintJobOutputModel"]: + return self._active_print_job + + @pyqtProperty(str, notify = stateChanged) + def state(self) -> str: + return self._printer_state + + @pyqtProperty(float, notify = bedTemperatureChanged) + def bedTemperature(self) -> float: + return self._bed_temperature + + @pyqtProperty(float, notify = targetBedTemperatureChanged) + def targetBedTemperature(self) -> float: + return self._target_bed_temperature + + # Does the printer support pre-heating the bed at all + @pyqtProperty(bool, constant = True) + def canPreHeatBed(self) -> bool: + if self._controller: + return self._controller.can_pre_heat_bed + return False + + # Does the printer support pre-heating the bed at all + @pyqtProperty(bool, constant = True) + def canPreHeatHotends(self) -> bool: + if self._controller: + return self._controller.can_pre_heat_hotends + return False + + # Does the printer support sending raw G-code at all + @pyqtProperty(bool, constant = True) + def canSendRawGcode(self) -> bool: + if self._controller: + return self._controller.can_send_raw_gcode + return False + + # Does the printer support pause at all + @pyqtProperty(bool, constant = True) + def canPause(self) -> bool: + if self._controller: + return self._controller.can_pause + return False + + # Does the printer support abort at all + @pyqtProperty(bool, constant = True) + def canAbort(self) -> bool: + if self._controller: + return self._controller.can_abort + return False + + # Does the printer support manual control at all + @pyqtProperty(bool, constant = True) + def canControlManually(self) -> bool: + if self._controller: + return self._controller.can_control_manually + return False + + # Does the printer support upgrading firmware + @pyqtProperty(bool, notify = canUpdateFirmwareChanged) + def canUpdateFirmware(self) -> bool: + if self._controller: + return self._controller.can_update_firmware + return False + + # Stub to connect UM.Signal to pyqtSignal + def _onControllerCanUpdateFirmwareChanged(self) -> None: + self.canUpdateFirmwareChanged.emit() + + # Returns the active configuration (material, variant and buildplate) of the current printer + @pyqtProperty(QObject, notify = configurationChanged) + def printerConfiguration(self) -> Optional[PrinterConfigurationModel]: + if self._active_printer_configuration.isValid(): + return self._active_printer_configuration + return None + + peripheralsChanged = pyqtSignal() + + @pyqtProperty(str, notify = peripheralsChanged) + def peripherals(self) -> str: + return ", ".join([peripheral.name for peripheral in self._peripherals]) + + def addPeripheral(self, peripheral: Peripheral) -> None: + self._peripherals.append(peripheral) + self.peripheralsChanged.emit() + + def removePeripheral(self, peripheral: Peripheral) -> None: + self._peripherals.remove(peripheral) + self.peripheralsChanged.emit() + + availableConfigurationsChanged = pyqtSignal() + + # The availableConfigurations are configuration options that a printer can switch to, but doesn't currently have + # active (eg; Automatic tool changes, material loaders, etc). + @pyqtProperty("QVariantList", notify = availableConfigurationsChanged) + def availableConfigurations(self) -> List[PrinterConfigurationModel]: + return self._available_printer_configurations + + def addAvailableConfiguration(self, new_configuration: PrinterConfigurationModel) -> None: + if new_configuration not in self._available_printer_configurations: + self._available_printer_configurations.append(new_configuration) + self.availableConfigurationsChanged.emit() + + def removeAvailableConfiguration(self, config_to_remove: PrinterConfigurationModel) -> None: + try: + self._available_printer_configurations.remove(config_to_remove) + except ValueError: + Logger.log("w", "Unable to remove configuration that isn't in the list of available configurations") + else: + self.availableConfigurationsChanged.emit() + + def setAvailableConfigurations(self, new_configurations: List[PrinterConfigurationModel]) -> None: + self._available_printer_configurations = new_configurations + self.availableConfigurationsChanged.emit() diff --git a/cura/PrinterOutput/Models/__init__.py b/cura/PrinterOutput/Models/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cura/PrinterOutput/NetworkedPrinterOutputDevice.py b/cura/PrinterOutput/NetworkedPrinterOutputDevice.py index bbeb87d5e3..60be5bc8f3 100644 --- a/cura/PrinterOutput/NetworkedPrinterOutputDevice.py +++ b/cura/PrinterOutput/NetworkedPrinterOutputDevice.py @@ -7,7 +7,7 @@ from UM.Scene.SceneNode import SceneNode #For typing. from cura.API import Account from cura.CuraApplication import CuraApplication -from cura.PrinterOutputDevice import PrinterOutputDevice, ConnectionState, ConnectionType +from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice, ConnectionState, ConnectionType from PyQt5.QtNetwork import QHttpMultiPart, QHttpPart, QNetworkRequest, QNetworkAccessManager, QNetworkReply, QAuthenticator from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QUrl, QCoreApplication @@ -18,6 +18,8 @@ from enum import IntEnum import os # To get the username import gzip +from cura.Settings.CuraContainerRegistry import CuraContainerRegistry + class AuthState(IntEnum): NotAuthenticated = 1 @@ -33,8 +35,6 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): def __init__(self, device_id, address: str, properties: Dict[bytes, bytes], connection_type: ConnectionType = ConnectionType.NetworkConnection, parent: QObject = None) -> None: super().__init__(device_id = device_id, connection_type = connection_type, parent = parent) self._manager = None # type: Optional[QNetworkAccessManager] - self._last_manager_create_time = None # type: Optional[float] - self._recreate_network_manager_time = 30 self._timeout_time = 10 # After how many seconds of no response should a timeout occur? self._last_response_time = None # type: Optional[float] @@ -58,8 +58,8 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): self._gcode = [] # type: List[str] self._connection_state_before_timeout = None # type: Optional[ConnectionState] - def requestWrite(self, nodes: List[SceneNode], file_name: Optional[str] = None, limit_mimetypes: bool = False, - file_handler: Optional[FileHandler] = None, **kwargs: str) -> None: + def requestWrite(self, nodes: List["SceneNode"], file_name: Optional[str] = None, limit_mimetypes: bool = False, + file_handler: Optional["FileHandler"] = None, filter_by_machine: bool = False, **kwargs) -> None: raise NotImplementedError("requestWrite needs to be implemented") def setAuthenticationState(self, authentication_state: AuthState) -> None: @@ -131,12 +131,6 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): self.setConnectionState(ConnectionState.Closed) - # We need to check if the manager needs to be re-created. If we don't, we get some issues when OSX goes to - # sleep. - if time_since_last_response > self._recreate_network_manager_time: - if self._last_manager_create_time is None or time() - self._last_manager_create_time > self._recreate_network_manager_time: - self._createNetworkManager() - assert(self._manager is not None) elif self._connection_state == ConnectionState.Closed: # Go out of timeout. if self._connection_state_before_timeout is not None: # sanity check, but it should never be None here @@ -160,7 +154,7 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): part = QHttpPart() if not content_header.startswith("form-data;"): - content_header = "form_data; " + content_header + content_header = "form-data; " + content_header part.setHeader(QNetworkRequest.ContentDispositionHeader, content_header) if content_type is not None: @@ -310,22 +304,36 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): def _createNetworkManager(self) -> None: Logger.log("d", "Creating network manager") if self._manager: - self._manager.finished.disconnect(self.__handleOnFinished) + self._manager.finished.disconnect(self._handleOnFinished) self._manager.authenticationRequired.disconnect(self._onAuthenticationRequired) self._manager = QNetworkAccessManager() - self._manager.finished.connect(self.__handleOnFinished) - self._last_manager_create_time = time() + self._manager.finished.connect(self._handleOnFinished) self._manager.authenticationRequired.connect(self._onAuthenticationRequired) if self._properties.get(b"temporary", b"false") != b"true": - CuraApplication.getInstance().getMachineManager().checkCorrectGroupName(self.getId(), self.name) + self._checkCorrectGroupName(self.getId(), self.name) def _registerOnFinishedCallback(self, reply: QNetworkReply, on_finished: Optional[Callable[[QNetworkReply], None]]) -> None: if on_finished is not None: self._onFinishedCallbacks[reply.url().toString() + str(reply.operation())] = on_finished - def __handleOnFinished(self, reply: QNetworkReply) -> None: + ## This method checks if the name of the group stored in the definition container is correct. + # After updating from 3.2 to 3.3 some group names may be temporary. If there is a mismatch in the name of the group + # then all the container stacks are updated, both the current and the hidden ones. + def _checkCorrectGroupName(self, device_id: str, group_name: str) -> None: + global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() + active_machine_network_name = CuraApplication.getInstance().getMachineManager().activeMachineNetworkKey() + if global_container_stack and device_id == active_machine_network_name: + # Check if the group_name is correct. If not, update all the containers connected to the same printer + if CuraApplication.getInstance().getMachineManager().activeMachineNetworkGroupName != group_name: + metadata_filter = {"um_network_key": active_machine_network_name} + containers = CuraContainerRegistry.getInstance().findContainerStacks(type="machine", + **metadata_filter) + for container in containers: + container.setMetaDataEntry("group_name", group_name) + + def _handleOnFinished(self, reply: QNetworkReply) -> None: # Due to garbage collection, we need to cache certain bits of post operations. # As we don't want to keep them around forever, delete them if we get a reply. if reply.operation() == QNetworkAccessManager.PostOperation: diff --git a/cura/PrinterOutput/Peripheral.py b/cura/PrinterOutput/Peripheral.py new file mode 100644 index 0000000000..2693b82c36 --- /dev/null +++ b/cura/PrinterOutput/Peripheral.py @@ -0,0 +1,16 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + + +## Data class that represents a peripheral for a printer. +# +# Output device plug-ins may specify that the printer has a certain set of +# peripherals. This set is then possibly shown in the interface of the monitor +# stage. +class Peripheral: + ## Constructs the peripheral. + # \param type A unique ID for the type of peripheral. + # \param name A human-readable name for the peripheral. + def __init__(self, peripheral_type: str, name: str) -> None: + self.type = peripheral_type + self.name = name diff --git a/cura/PrinterOutput/PrintJobOutputModel.py b/cura/PrinterOutput/PrintJobOutputModel.py index fb163ef065..df66412df3 100644 --- a/cura/PrinterOutput/PrintJobOutputModel.py +++ b/cura/PrinterOutput/PrintJobOutputModel.py @@ -1,172 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot -from typing import Optional, TYPE_CHECKING, List - -from PyQt5.QtCore import QUrl -from PyQt5.QtGui import QImage - -if TYPE_CHECKING: - from cura.PrinterOutput.PrinterOutputController import PrinterOutputController - from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel - from cura.PrinterOutput.ConfigurationModel import ConfigurationModel - - -class PrintJobOutputModel(QObject): - stateChanged = pyqtSignal() - timeTotalChanged = pyqtSignal() - timeElapsedChanged = pyqtSignal() - nameChanged = pyqtSignal() - keyChanged = pyqtSignal() - assignedPrinterChanged = pyqtSignal() - ownerChanged = pyqtSignal() - configurationChanged = pyqtSignal() - previewImageChanged = pyqtSignal() - compatibleMachineFamiliesChanged = pyqtSignal() - - def __init__(self, output_controller: "PrinterOutputController", key: str = "", name: str = "", parent=None) -> None: - super().__init__(parent) - self._output_controller = output_controller - self._state = "" - self._time_total = 0 - self._time_elapsed = 0 - self._name = name # Human readable name - self._key = key # Unique identifier - self._assigned_printer = None # type: Optional[PrinterOutputModel] - self._owner = "" # Who started/owns the print job? - - self._configuration = None # type: Optional[ConfigurationModel] - self._compatible_machine_families = [] # type: List[str] - self._preview_image_id = 0 - - self._preview_image = None # type: Optional[QImage] - - @pyqtProperty("QStringList", notify=compatibleMachineFamiliesChanged) - def compatibleMachineFamilies(self): - # Hack; Some versions of cluster will return a family more than once... - return list(set(self._compatible_machine_families)) - - def setCompatibleMachineFamilies(self, compatible_machine_families: List[str]) -> None: - if self._compatible_machine_families != compatible_machine_families: - self._compatible_machine_families = compatible_machine_families - self.compatibleMachineFamiliesChanged.emit() - - @pyqtProperty(QUrl, notify=previewImageChanged) - def previewImageUrl(self): - self._preview_image_id += 1 - # There is an image provider that is called "print_job_preview". In order to ensure that the image qml object, that - # requires a QUrl to function, updates correctly we add an increasing number. This causes to see the QUrl - # as new (instead of relying on cached version and thus forces an update. - temp = "image://print_job_preview/" + str(self._preview_image_id) + "/" + self._key - return QUrl(temp, QUrl.TolerantMode) - - def getPreviewImage(self) -> Optional[QImage]: - return self._preview_image - - def updatePreviewImage(self, preview_image: Optional[QImage]) -> None: - if self._preview_image != preview_image: - self._preview_image = preview_image - self.previewImageChanged.emit() - - @pyqtProperty(QObject, notify=configurationChanged) - def configuration(self) -> Optional["ConfigurationModel"]: - return self._configuration - - def updateConfiguration(self, configuration: Optional["ConfigurationModel"]) -> None: - if self._configuration != configuration: - self._configuration = configuration - self.configurationChanged.emit() - - @pyqtProperty(str, notify=ownerChanged) - def owner(self): - return self._owner - - def updateOwner(self, owner): - if self._owner != owner: - self._owner = owner - self.ownerChanged.emit() - - @pyqtProperty(QObject, notify=assignedPrinterChanged) - def assignedPrinter(self): - return self._assigned_printer - - def updateAssignedPrinter(self, assigned_printer: Optional["PrinterOutputModel"]) -> None: - if self._assigned_printer != assigned_printer: - old_printer = self._assigned_printer - self._assigned_printer = assigned_printer - if old_printer is not None: - # If the previously assigned printer is set, this job is moved away from it. - old_printer.updateActivePrintJob(None) - self.assignedPrinterChanged.emit() - - @pyqtProperty(str, notify=keyChanged) - def key(self): - return self._key - - def updateKey(self, key: str): - if self._key != key: - self._key = key - self.keyChanged.emit() - - @pyqtProperty(str, notify = nameChanged) - def name(self): - return self._name - - def updateName(self, name: str): - if self._name != name: - self._name = name - self.nameChanged.emit() - - @pyqtProperty(int, notify = timeTotalChanged) - def timeTotal(self) -> int: - return self._time_total - - @pyqtProperty(int, notify = timeElapsedChanged) - def timeElapsed(self) -> int: - return self._time_elapsed - - @pyqtProperty(int, notify = timeElapsedChanged) - def timeRemaining(self) -> int: - # Never get a negative time remaining - return max(self.timeTotal - self.timeElapsed, 0) - - @pyqtProperty(float, notify = timeElapsedChanged) - def progress(self) -> float: - result = float(self.timeElapsed) / max(self.timeTotal, 1.0) # Prevent a division by zero exception. - return min(result, 1.0) # Never get a progress past 1.0 - - @pyqtProperty(str, notify=stateChanged) - def state(self) -> str: - return self._state - - @pyqtProperty(bool, notify=stateChanged) - def isActive(self) -> bool: - inactiveStates = [ - "pausing", - "paused", - "resuming", - "wait_cleanup" - ] - if self.state in inactiveStates and self.timeRemaining > 0: - return False - return True - - def updateTimeTotal(self, new_time_total): - if self._time_total != new_time_total: - self._time_total = new_time_total - self.timeTotalChanged.emit() - - def updateTimeElapsed(self, new_time_elapsed): - if self._time_elapsed != new_time_elapsed: - self._time_elapsed = new_time_elapsed - self.timeElapsedChanged.emit() - - def updateState(self, new_state): - if self._state != new_state: - self._state = new_state - self.stateChanged.emit() - - @pyqtSlot(str) - def setState(self, state): - self._output_controller.setJobState(self, state) +import warnings +warnings.warn("Importing cura.PrinterOutput.PrintJobOutputModel has been deprecated since 4.1, use cura.PrinterOutput.Models.PrintJobOutputModel instead", DeprecationWarning, stacklevel=2) +# We moved the the models to one submodule deeper +from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel \ No newline at end of file diff --git a/cura/PrinterOutput/PrinterOutputController.py b/cura/PrinterOutput/PrinterOutputController.py index aa06ada8a3..3d710582ca 100644 --- a/cura/PrinterOutput/PrinterOutputController.py +++ b/cura/PrinterOutput/PrinterOutputController.py @@ -4,14 +4,12 @@ from UM.Logger import Logger from UM.Signal import Signal -from typing import Union - MYPY = False if MYPY: - from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel - from cura.PrinterOutput.ExtruderOutputModel import ExtruderOutputModel - from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel - from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice + from .Models.PrintJobOutputModel import PrintJobOutputModel + from .Models.ExtruderOutputModel import ExtruderOutputModel + from .Models.PrinterOutputModel import PrinterOutputModel + from .PrinterOutputDevice import PrinterOutputDevice class PrinterOutputController: diff --git a/cura/PrinterOutput/PrinterOutputDevice.py b/cura/PrinterOutput/PrinterOutputDevice.py new file mode 100644 index 0000000000..b05e76ad2e --- /dev/null +++ b/cura/PrinterOutput/PrinterOutputDevice.py @@ -0,0 +1,264 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from enum import IntEnum +from typing import Callable, List, Optional, Union + +from PyQt5.QtCore import pyqtProperty, pyqtSignal, QObject, QTimer, QUrl +from PyQt5.QtWidgets import QMessageBox + +from UM.Logger import Logger +from UM.Signal import signalemitter +from UM.Qt.QtApplication import QtApplication +from UM.FlameProfiler import pyqtSlot +from UM.i18n import i18nCatalog +from UM.OutputDevice.OutputDevice import OutputDevice + +MYPY = False +if MYPY: + from UM.FileHandler.FileHandler import FileHandler + from UM.Scene.SceneNode import SceneNode + from .Models.PrinterOutputModel import PrinterOutputModel + from .Models.PrinterConfigurationModel import PrinterConfigurationModel + from .FirmwareUpdater import FirmwareUpdater + +i18n_catalog = i18nCatalog("cura") + + +## The current processing state of the backend. +class ConnectionState(IntEnum): + Closed = 0 + Connecting = 1 + Connected = 2 + Busy = 3 + Error = 4 + + +class ConnectionType(IntEnum): + NotConnected = 0 + UsbConnection = 1 + NetworkConnection = 2 + CloudConnection = 3 + + +## Printer output device adds extra interface options on top of output device. +# +# The assumption is made the printer is a FDM printer. +# +# Note that a number of settings are marked as "final". This is because decorators +# are not inherited by children. To fix this we use the private counter part of those +# functions to actually have the implementation. +# +# For all other uses it should be used in the same way as a "regular" OutputDevice. +@signalemitter +class PrinterOutputDevice(QObject, OutputDevice): + + printersChanged = pyqtSignal() + connectionStateChanged = pyqtSignal(str) + acceptsCommandsChanged = pyqtSignal() + + # Signal to indicate that the material of the active printer on the remote changed. + materialIdChanged = pyqtSignal() + + # # Signal to indicate that the hotend of the active printer on the remote changed. + hotendIdChanged = pyqtSignal() + + # Signal to indicate that the info text about the connection has changed. + connectionTextChanged = pyqtSignal() + + # Signal to indicate that the configuration of one of the printers has changed. + uniqueConfigurationsChanged = pyqtSignal() + + def __init__(self, device_id: str, connection_type: "ConnectionType" = ConnectionType.NotConnected, parent: QObject = None) -> None: + super().__init__(device_id = device_id, parent = parent) # type: ignore # MyPy complains with the multiple inheritance + + self._printers = [] # type: List[PrinterOutputModel] + self._unique_configurations = [] # type: List[PrinterConfigurationModel] + + self._monitor_view_qml_path = "" # type: str + self._monitor_component = None # type: Optional[QObject] + self._monitor_item = None # type: Optional[QObject] + + self._control_view_qml_path = "" # type: str + self._control_component = None # type: Optional[QObject] + self._control_item = None # type: Optional[QObject] + + self._accepts_commands = False # type: bool + + self._update_timer = QTimer() # type: QTimer + self._update_timer.setInterval(2000) # TODO; Add preference for update interval + self._update_timer.setSingleShot(False) + self._update_timer.timeout.connect(self._update) + + self._connection_state = ConnectionState.Closed # type: ConnectionState + self._connection_type = connection_type # type: ConnectionType + + self._firmware_updater = None # type: Optional[FirmwareUpdater] + self._firmware_name = None # type: Optional[str] + self._address = "" # type: str + self._connection_text = "" # type: str + self.printersChanged.connect(self._onPrintersChanged) + QtApplication.getInstance().getOutputDeviceManager().outputDevicesChanged.connect(self._updateUniqueConfigurations) + + @pyqtProperty(str, notify = connectionTextChanged) + def address(self) -> str: + return self._address + + def setConnectionText(self, connection_text): + if self._connection_text != connection_text: + self._connection_text = connection_text + self.connectionTextChanged.emit() + + @pyqtProperty(str, constant=True) + def connectionText(self) -> str: + return self._connection_text + + def materialHotendChangedMessage(self, callback: Callable[[int], None]) -> None: + Logger.log("w", "materialHotendChangedMessage needs to be implemented, returning 'Yes'") + callback(QMessageBox.Yes) + + def isConnected(self) -> bool: + return self._connection_state != ConnectionState.Closed and self._connection_state != ConnectionState.Error + + def setConnectionState(self, connection_state: "ConnectionState") -> None: + if self._connection_state != connection_state: + self._connection_state = connection_state + self.connectionStateChanged.emit(self._id) + + @pyqtProperty(int, constant = True) + def connectionType(self) -> "ConnectionType": + return self._connection_type + + @pyqtProperty(int, notify = connectionStateChanged) + def connectionState(self) -> "ConnectionState": + return self._connection_state + + def _update(self) -> None: + pass + + def _getPrinterByKey(self, key: str) -> Optional["PrinterOutputModel"]: + for printer in self._printers: + if printer.key == key: + return printer + + return None + + def requestWrite(self, nodes: List["SceneNode"], file_name: Optional[str] = None, limit_mimetypes: bool = False, + file_handler: Optional["FileHandler"] = None, filter_by_machine: bool = False, **kwargs) -> None: + raise NotImplementedError("requestWrite needs to be implemented") + + @pyqtProperty(QObject, notify = printersChanged) + def activePrinter(self) -> Optional["PrinterOutputModel"]: + if len(self._printers): + return self._printers[0] + return None + + @pyqtProperty("QVariantList", notify = printersChanged) + def printers(self) -> List["PrinterOutputModel"]: + return self._printers + + @pyqtProperty(QObject, constant = True) + def monitorItem(self) -> QObject: + # Note that we specifically only check if the monitor component is created. + # It could be that it failed to actually create the qml item! If we check if the item was created, it will try to + # create the item (and fail) every time. + if not self._monitor_component: + self._createMonitorViewFromQML() + return self._monitor_item + + @pyqtProperty(QObject, constant = True) + def controlItem(self) -> QObject: + if not self._control_component: + self._createControlViewFromQML() + return self._control_item + + def _createControlViewFromQML(self) -> None: + if not self._control_view_qml_path: + return + if self._control_item is None: + self._control_item = QtApplication.getInstance().createQmlComponent(self._control_view_qml_path, {"OutputDevice": self}) + + def _createMonitorViewFromQML(self) -> None: + if not self._monitor_view_qml_path: + return + + if self._monitor_item is None: + self._monitor_item = QtApplication.getInstance().createQmlComponent(self._monitor_view_qml_path, {"OutputDevice": self}) + + ## Attempt to establish connection + def connect(self) -> None: + self.setConnectionState(ConnectionState.Connecting) + self._update_timer.start() + + ## Attempt to close the connection + def close(self) -> None: + self._update_timer.stop() + self.setConnectionState(ConnectionState.Closed) + + ## Ensure that close gets called when object is destroyed + def __del__(self) -> None: + self.close() + + @pyqtProperty(bool, notify = acceptsCommandsChanged) + def acceptsCommands(self) -> bool: + return self._accepts_commands + + ## Set a flag to signal the UI that the printer is not (yet) ready to receive commands + def _setAcceptsCommands(self, accepts_commands: bool) -> None: + if self._accepts_commands != accepts_commands: + self._accepts_commands = accepts_commands + + self.acceptsCommandsChanged.emit() + + # Returns the unique configurations of the printers within this output device + @pyqtProperty("QVariantList", notify = uniqueConfigurationsChanged) + def uniqueConfigurations(self) -> List["PrinterConfigurationModel"]: + return self._unique_configurations + + def _updateUniqueConfigurations(self) -> None: + all_configurations = set() + for printer in self._printers: + if printer.printerConfiguration is not None and printer.printerConfiguration.hasAnyMaterialLoaded(): + all_configurations.add(printer.printerConfiguration) + all_configurations.update(printer.availableConfigurations) + if None in all_configurations: # Shouldn't happen, but it does. I don't see how it could ever happen. Skip adding that configuration. List could end up empty! + Logger.log("e", "Found a broken configuration in the synced list!") + all_configurations.remove(None) + new_configurations = sorted(all_configurations, key = lambda config: config.printerType or "") + if new_configurations != self._unique_configurations: + self._unique_configurations = new_configurations + self.uniqueConfigurationsChanged.emit() + + # Returns the unique configurations of the printers within this output device + @pyqtProperty("QStringList", notify = uniqueConfigurationsChanged) + def uniquePrinterTypes(self) -> List[str]: + return list(sorted(set([configuration.printerType or "" for configuration in self._unique_configurations]))) + + def _onPrintersChanged(self) -> None: + for printer in self._printers: + printer.configurationChanged.connect(self._updateUniqueConfigurations) + printer.availableConfigurationsChanged.connect(self._updateUniqueConfigurations) + + # At this point there may be non-updated configurations + self._updateUniqueConfigurations() + + ## Set the device firmware name + # + # \param name The name of the firmware. + def _setFirmwareName(self, name: str) -> None: + self._firmware_name = name + + ## Get the name of device firmware + # + # This name can be used to define device type + def getFirmwareName(self) -> Optional[str]: + return self._firmware_name + + def getFirmwareUpdater(self) -> Optional["FirmwareUpdater"]: + return self._firmware_updater + + @pyqtSlot(str) + def updateFirmware(self, firmware_file: Union[str, QUrl]) -> None: + if not self._firmware_updater: + return + + self._firmware_updater.updateFirmware(firmware_file) diff --git a/cura/PrinterOutput/PrinterOutputModel.py b/cura/PrinterOutput/PrinterOutputModel.py index 12884b5f9b..87020ce2d0 100644 --- a/cura/PrinterOutput/PrinterOutputModel.py +++ b/cura/PrinterOutput/PrinterOutputModel.py @@ -1,297 +1,4 @@ -# Copyright (c) 2019 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant, pyqtSlot, QUrl -from typing import List, Dict, Optional -from UM.Math.Vector import Vector -from cura.PrinterOutput.ConfigurationModel import ConfigurationModel -from cura.PrinterOutput.ExtruderOutputModel import ExtruderOutputModel - -MYPY = False -if MYPY: - from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel - from cura.PrinterOutput.PrinterOutputController import PrinterOutputController - - -class PrinterOutputModel(QObject): - bedTemperatureChanged = pyqtSignal() - targetBedTemperatureChanged = pyqtSignal() - isPreheatingChanged = pyqtSignal() - stateChanged = pyqtSignal() - activePrintJobChanged = pyqtSignal() - nameChanged = pyqtSignal() - headPositionChanged = pyqtSignal() - keyChanged = pyqtSignal() - typeChanged = pyqtSignal() - buildplateChanged = pyqtSignal() - cameraUrlChanged = pyqtSignal() - configurationChanged = pyqtSignal() - canUpdateFirmwareChanged = pyqtSignal() - - def __init__(self, output_controller: "PrinterOutputController", number_of_extruders: int = 1, parent=None, firmware_version = "") -> None: - super().__init__(parent) - self._bed_temperature = -1 # type: float # Use -1 for no heated bed. - self._target_bed_temperature = 0 # type: float - self._name = "" - self._key = "" # Unique identifier - self._controller = output_controller - self._controller.canUpdateFirmwareChanged.connect(self._onControllerCanUpdateFirmwareChanged) - self._extruders = [ExtruderOutputModel(printer = self, position = i) for i in range(number_of_extruders)] - self._printer_configuration = ConfigurationModel() # Indicates the current configuration setup in this printer - self._head_position = Vector(0, 0, 0) - self._active_print_job = None # type: Optional[PrintJobOutputModel] - self._firmware_version = firmware_version - self._printer_state = "unknown" - self._is_preheating = False - self._printer_type = "" - self._buildplate = "" - - self._printer_configuration.extruderConfigurations = [extruder.extruderConfiguration for extruder in - self._extruders] - - self._camera_url = QUrl() # type: QUrl - - @pyqtProperty(str, constant = True) - def firmwareVersion(self) -> str: - return self._firmware_version - - def setCameraUrl(self, camera_url: "QUrl") -> None: - if self._camera_url != camera_url: - self._camera_url = camera_url - self.cameraUrlChanged.emit() - - @pyqtProperty(QUrl, fset = setCameraUrl, notify = cameraUrlChanged) - def cameraUrl(self) -> "QUrl": - return self._camera_url - - def updateIsPreheating(self, pre_heating: bool) -> None: - if self._is_preheating != pre_heating: - self._is_preheating = pre_heating - self.isPreheatingChanged.emit() - - @pyqtProperty(bool, notify=isPreheatingChanged) - def isPreheating(self) -> bool: - return self._is_preheating - - @pyqtProperty(str, notify = typeChanged) - def type(self) -> str: - return self._printer_type - - def updateType(self, printer_type: str) -> None: - if self._printer_type != printer_type: - self._printer_type = printer_type - self._printer_configuration.printerType = self._printer_type - self.typeChanged.emit() - self.configurationChanged.emit() - - @pyqtProperty(str, notify = buildplateChanged) - def buildplate(self) -> str: - return self._buildplate - - def updateBuildplate(self, buildplate: str) -> None: - if self._buildplate != buildplate: - self._buildplate = buildplate - self._printer_configuration.buildplateConfiguration = self._buildplate - self.buildplateChanged.emit() - self.configurationChanged.emit() - - @pyqtProperty(str, notify=keyChanged) - def key(self) -> str: - return self._key - - def updateKey(self, key: str) -> None: - if self._key != key: - self._key = key - self.keyChanged.emit() - - @pyqtSlot() - def homeHead(self) -> None: - self._controller.homeHead(self) - - @pyqtSlot() - def homeBed(self) -> None: - self._controller.homeBed(self) - - @pyqtSlot(str) - def sendRawCommand(self, command: str) -> None: - self._controller.sendRawCommand(self, command) - - @pyqtProperty("QVariantList", constant = True) - def extruders(self) -> List["ExtruderOutputModel"]: - return self._extruders - - @pyqtProperty(QVariant, notify = headPositionChanged) - def headPosition(self) -> Dict[str, float]: - return {"x": self._head_position.x, "y": self._head_position.y, "z": self.head_position.z} - - def updateHeadPosition(self, x: float, y: float, z: float) -> None: - if self._head_position.x != x or self._head_position.y != y or self._head_position.z != z: - self._head_position = Vector(x, y, z) - self.headPositionChanged.emit() - - @pyqtProperty(float, float, float) - @pyqtProperty(float, float, float, float) - def setHeadPosition(self, x: float, y: float, z: float, speed: float = 3000) -> None: - self.updateHeadPosition(x, y, z) - self._controller.setHeadPosition(self, x, y, z, speed) - - @pyqtProperty(float) - @pyqtProperty(float, float) - def setHeadX(self, x: float, speed: float = 3000) -> None: - self.updateHeadPosition(x, self._head_position.y, self._head_position.z) - self._controller.setHeadPosition(self, x, self._head_position.y, self._head_position.z, speed) - - @pyqtProperty(float) - @pyqtProperty(float, float) - def setHeadY(self, y: float, speed: float = 3000) -> None: - self.updateHeadPosition(self._head_position.x, y, self._head_position.z) - self._controller.setHeadPosition(self, self._head_position.x, y, self._head_position.z, speed) - - @pyqtProperty(float) - @pyqtProperty(float, float) - def setHeadZ(self, z: float, speed:float = 3000) -> None: - self.updateHeadPosition(self._head_position.x, self._head_position.y, z) - self._controller.setHeadPosition(self, self._head_position.x, self._head_position.y, z, speed) - - @pyqtSlot(float, float, float) - @pyqtSlot(float, float, float, float) - def moveHead(self, x: float = 0, y: float = 0, z: float = 0, speed: float = 3000) -> None: - self._controller.moveHead(self, x, y, z, speed) - - ## Pre-heats the heated bed of the printer. - # - # \param temperature The temperature to heat the bed to, in degrees - # Celsius. - # \param duration How long the bed should stay warm, in seconds. - @pyqtSlot(float, float) - def preheatBed(self, temperature: float, duration: float) -> None: - self._controller.preheatBed(self, temperature, duration) - - @pyqtSlot() - def cancelPreheatBed(self) -> None: - self._controller.cancelPreheatBed(self) - - def getController(self) -> "PrinterOutputController": - return self._controller - - @pyqtProperty(str, notify = nameChanged) - def name(self) -> str: - return self._name - - def setName(self, name: str) -> None: - self.updateName(name) - - def updateName(self, name: str) -> None: - if self._name != name: - self._name = name - self.nameChanged.emit() - - ## Update the bed temperature. This only changes it locally. - def updateBedTemperature(self, temperature: float) -> None: - if self._bed_temperature != temperature: - self._bed_temperature = temperature - self.bedTemperatureChanged.emit() - - def updateTargetBedTemperature(self, temperature: float) -> None: - if self._target_bed_temperature != temperature: - self._target_bed_temperature = temperature - self.targetBedTemperatureChanged.emit() - - ## Set the target bed temperature. This ensures that it's actually sent to the remote. - @pyqtSlot(float) - def setTargetBedTemperature(self, temperature: float) -> None: - self._controller.setTargetBedTemperature(self, temperature) - self.updateTargetBedTemperature(temperature) - - def updateActivePrintJob(self, print_job: Optional["PrintJobOutputModel"]) -> None: - if self._active_print_job != print_job: - old_print_job = self._active_print_job - - if print_job is not None: - print_job.updateAssignedPrinter(self) - self._active_print_job = print_job - - if old_print_job is not None: - old_print_job.updateAssignedPrinter(None) - self.activePrintJobChanged.emit() - - def updateState(self, printer_state: str) -> None: - if self._printer_state != printer_state: - self._printer_state = printer_state - self.stateChanged.emit() - - @pyqtProperty(QObject, notify = activePrintJobChanged) - def activePrintJob(self) -> Optional["PrintJobOutputModel"]: - return self._active_print_job - - @pyqtProperty(str, notify = stateChanged) - def state(self) -> str: - return self._printer_state - - @pyqtProperty(float, notify = bedTemperatureChanged) - def bedTemperature(self) -> float: - return self._bed_temperature - - @pyqtProperty(float, notify = targetBedTemperatureChanged) - def targetBedTemperature(self) -> float: - return self._target_bed_temperature - - # Does the printer support pre-heating the bed at all - @pyqtProperty(bool, constant = True) - def canPreHeatBed(self) -> bool: - if self._controller: - return self._controller.can_pre_heat_bed - return False - - # Does the printer support pre-heating the bed at all - @pyqtProperty(bool, constant = True) - def canPreHeatHotends(self) -> bool: - if self._controller: - return self._controller.can_pre_heat_hotends - return False - - # Does the printer support sending raw G-code at all - @pyqtProperty(bool, constant = True) - def canSendRawGcode(self) -> bool: - if self._controller: - return self._controller.can_send_raw_gcode - return False - - # Does the printer support pause at all - @pyqtProperty(bool, constant = True) - def canPause(self) -> bool: - if self._controller: - return self._controller.can_pause - return False - - # Does the printer support abort at all - @pyqtProperty(bool, constant = True) - def canAbort(self) -> bool: - if self._controller: - return self._controller.can_abort - return False - - # Does the printer support manual control at all - @pyqtProperty(bool, constant = True) - def canControlManually(self) -> bool: - if self._controller: - return self._controller.can_control_manually - return False - - # Does the printer support upgrading firmware - @pyqtProperty(bool, notify = canUpdateFirmwareChanged) - def canUpdateFirmware(self) -> bool: - if self._controller: - return self._controller.can_update_firmware - return False - - # Stub to connect UM.Signal to pyqtSignal - def _onControllerCanUpdateFirmwareChanged(self) -> None: - self.canUpdateFirmwareChanged.emit() - - # Returns the configuration (material, variant and buildplate) of the current printer - @pyqtProperty(QObject, notify = configurationChanged) - def printerConfiguration(self) -> Optional[ConfigurationModel]: - if self._printer_configuration.isValid(): - return self._printer_configuration - return None \ No newline at end of file +import warnings +warnings.warn("Importing cura.PrinterOutput.PrinterOutputModel has been deprecated since 4.1, use cura.PrinterOutput.Models.PrinterOutputModel instead", DeprecationWarning, stacklevel=2) +# We moved the the models to one submodule deeper +from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel \ No newline at end of file diff --git a/cura/PrinterOutputDevice.py b/cura/PrinterOutputDevice.py index dbdf8c986c..51e563410c 100644 --- a/cura/PrinterOutputDevice.py +++ b/cura/PrinterOutputDevice.py @@ -1,261 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -from enum import IntEnum -from typing import Callable, List, Optional, Union - -from UM.Decorators import deprecated -from UM.i18n import i18nCatalog -from UM.OutputDevice.OutputDevice import OutputDevice -from PyQt5.QtCore import pyqtProperty, pyqtSignal, QObject, QTimer, QUrl -from PyQt5.QtWidgets import QMessageBox - -from UM.Logger import Logger -from UM.Signal import signalemitter -from UM.Qt.QtApplication import QtApplication -from UM.FlameProfiler import pyqtSlot - -MYPY = False -if MYPY: - from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel - from cura.PrinterOutput.ConfigurationModel import ConfigurationModel - from cura.PrinterOutput.FirmwareUpdater import FirmwareUpdater - from UM.FileHandler.FileHandler import FileHandler - from UM.Scene.SceneNode import SceneNode - -i18n_catalog = i18nCatalog("cura") - - -## The current processing state of the backend. -class ConnectionState(IntEnum): - Closed = 0 - Connecting = 1 - Connected = 2 - Busy = 3 - Error = 4 - - -class ConnectionType(IntEnum): - NotConnected = 0 - UsbConnection = 1 - NetworkConnection = 2 - CloudConnection = 3 - - -## Printer output device adds extra interface options on top of output device. -# -# The assumption is made the printer is a FDM printer. -# -# Note that a number of settings are marked as "final". This is because decorators -# are not inherited by children. To fix this we use the private counter part of those -# functions to actually have the implementation. -# -# For all other uses it should be used in the same way as a "regular" OutputDevice. -@signalemitter -class PrinterOutputDevice(QObject, OutputDevice): - - printersChanged = pyqtSignal() - connectionStateChanged = pyqtSignal(str) - acceptsCommandsChanged = pyqtSignal() - - # Signal to indicate that the material of the active printer on the remote changed. - materialIdChanged = pyqtSignal() - - # # Signal to indicate that the hotend of the active printer on the remote changed. - hotendIdChanged = pyqtSignal() - - # Signal to indicate that the info text about the connection has changed. - connectionTextChanged = pyqtSignal() - - # Signal to indicate that the configuration of one of the printers has changed. - uniqueConfigurationsChanged = pyqtSignal() - - def __init__(self, device_id: str, connection_type: "ConnectionType" = ConnectionType.NotConnected, parent: QObject = None) -> None: - super().__init__(device_id = device_id, parent = parent) # type: ignore # MyPy complains with the multiple inheritance - - self._printers = [] # type: List[PrinterOutputModel] - self._unique_configurations = [] # type: List[ConfigurationModel] - - self._monitor_view_qml_path = "" # type: str - self._monitor_component = None # type: Optional[QObject] - self._monitor_item = None # type: Optional[QObject] - - self._control_view_qml_path = "" # type: str - self._control_component = None # type: Optional[QObject] - self._control_item = None # type: Optional[QObject] - - self._accepts_commands = False # type: bool - - self._update_timer = QTimer() # type: QTimer - self._update_timer.setInterval(2000) # TODO; Add preference for update interval - self._update_timer.setSingleShot(False) - self._update_timer.timeout.connect(self._update) - - self._connection_state = ConnectionState.Closed # type: ConnectionState - self._connection_type = connection_type # type: ConnectionType - - self._firmware_updater = None # type: Optional[FirmwareUpdater] - self._firmware_name = None # type: Optional[str] - self._address = "" # type: str - self._connection_text = "" # type: str - self.printersChanged.connect(self._onPrintersChanged) - QtApplication.getInstance().getOutputDeviceManager().outputDevicesChanged.connect(self._updateUniqueConfigurations) - - @pyqtProperty(str, notify = connectionTextChanged) - def address(self) -> str: - return self._address - - def setConnectionText(self, connection_text): - if self._connection_text != connection_text: - self._connection_text = connection_text - self.connectionTextChanged.emit() - - @pyqtProperty(str, constant=True) - def connectionText(self) -> str: - return self._connection_text - - def materialHotendChangedMessage(self, callback: Callable[[int], None]) -> None: - Logger.log("w", "materialHotendChangedMessage needs to be implemented, returning 'Yes'") - callback(QMessageBox.Yes) - - def isConnected(self) -> bool: - return self._connection_state != ConnectionState.Closed and self._connection_state != ConnectionState.Error - - def setConnectionState(self, connection_state: "ConnectionState") -> None: - if self._connection_state != connection_state: - self._connection_state = connection_state - self.connectionStateChanged.emit(self._id) - - @pyqtProperty(int, constant = True) - def connectionType(self) -> "ConnectionType": - return self._connection_type - - @pyqtProperty(int, notify = connectionStateChanged) - def connectionState(self) -> "ConnectionState": - return self._connection_state - - def _update(self) -> None: - pass - - def _getPrinterByKey(self, key: str) -> Optional["PrinterOutputModel"]: - for printer in self._printers: - if printer.key == key: - return printer - - return None - - def requestWrite(self, nodes: List["SceneNode"], file_name: Optional[str] = None, limit_mimetypes: bool = False, - file_handler: Optional["FileHandler"] = None, **kwargs: str) -> None: - raise NotImplementedError("requestWrite needs to be implemented") - - @pyqtProperty(QObject, notify = printersChanged) - def activePrinter(self) -> Optional["PrinterOutputModel"]: - if len(self._printers): - return self._printers[0] - return None - - @pyqtProperty("QVariantList", notify = printersChanged) - def printers(self) -> List["PrinterOutputModel"]: - return self._printers - - @pyqtProperty(QObject, constant = True) - def monitorItem(self) -> QObject: - # Note that we specifically only check if the monitor component is created. - # It could be that it failed to actually create the qml item! If we check if the item was created, it will try to - # create the item (and fail) every time. - if not self._monitor_component: - self._createMonitorViewFromQML() - return self._monitor_item - - @pyqtProperty(QObject, constant = True) - def controlItem(self) -> QObject: - if not self._control_component: - self._createControlViewFromQML() - return self._control_item - - def _createControlViewFromQML(self) -> None: - if not self._control_view_qml_path: - return - if self._control_item is None: - self._control_item = QtApplication.getInstance().createQmlComponent(self._control_view_qml_path, {"OutputDevice": self}) - - def _createMonitorViewFromQML(self) -> None: - if not self._monitor_view_qml_path: - return - - if self._monitor_item is None: - self._monitor_item = QtApplication.getInstance().createQmlComponent(self._monitor_view_qml_path, {"OutputDevice": self}) - - ## Attempt to establish connection - def connect(self) -> None: - self.setConnectionState(ConnectionState.Connecting) - self._update_timer.start() - - ## Attempt to close the connection - def close(self) -> None: - self._update_timer.stop() - self.setConnectionState(ConnectionState.Closed) - - ## Ensure that close gets called when object is destroyed - def __del__(self) -> None: - self.close() - - @pyqtProperty(bool, notify = acceptsCommandsChanged) - def acceptsCommands(self) -> bool: - return self._accepts_commands - - @deprecated("Please use the protected function instead", "3.2") - def setAcceptsCommands(self, accepts_commands: bool) -> None: - self._setAcceptsCommands(accepts_commands) - - ## Set a flag to signal the UI that the printer is not (yet) ready to receive commands - def _setAcceptsCommands(self, accepts_commands: bool) -> None: - if self._accepts_commands != accepts_commands: - self._accepts_commands = accepts_commands - - self.acceptsCommandsChanged.emit() - - # Returns the unique configurations of the printers within this output device - @pyqtProperty("QVariantList", notify = uniqueConfigurationsChanged) - def uniqueConfigurations(self) -> List["ConfigurationModel"]: - return self._unique_configurations - - def _updateUniqueConfigurations(self) -> None: - self._unique_configurations = sorted( - {printer.printerConfiguration for printer in self._printers if printer.printerConfiguration is not None}, - key=lambda config: config.printerType, - ) - self.uniqueConfigurationsChanged.emit() - - # Returns the unique configurations of the printers within this output device - @pyqtProperty("QStringList", notify = uniqueConfigurationsChanged) - def uniquePrinterTypes(self) -> List[str]: - return list(sorted(set([configuration.printerType for configuration in self._unique_configurations]))) - - def _onPrintersChanged(self) -> None: - for printer in self._printers: - printer.configurationChanged.connect(self._updateUniqueConfigurations) - - # At this point there may be non-updated configurations - self._updateUniqueConfigurations() - - ## Set the device firmware name - # - # \param name The name of the firmware. - def _setFirmwareName(self, name: str) -> None: - self._firmware_name = name - - ## Get the name of device firmware - # - # This name can be used to define device type - def getFirmwareName(self) -> Optional[str]: - return self._firmware_name - - def getFirmwareUpdater(self) -> Optional["FirmwareUpdater"]: - return self._firmware_updater - - @pyqtSlot(str) - def updateFirmware(self, firmware_file: Union[str, QUrl]) -> None: - if not self._firmware_updater: - return - - self._firmware_updater.updateFirmware(firmware_file) +import warnings +warnings.warn("Importing cura.PrinterOutputDevice has been deprecated since 4.1, use cura.PrinterOutput.PrinterOutputDevice instead", DeprecationWarning, stacklevel=2) +# We moved the PrinterOutput device to it's own submodule. +from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice, ConnectionState \ No newline at end of file diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index dfb465b7ad..cff9f88f62 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -4,12 +4,12 @@ from cura.Scene.CuraSceneNode import CuraSceneNode ## Make a SceneNode build plate aware CuraSceneNode objects all have this decorator. class BuildPlateDecorator(SceneNodeDecorator): - def __init__(self, build_plate_number = -1): + def __init__(self, build_plate_number: int = -1) -> None: super().__init__() - self._build_plate_number = None + self._build_plate_number = build_plate_number self.setBuildPlateNumber(build_plate_number) - def setBuildPlateNumber(self, nr): + def setBuildPlateNumber(self, nr: int) -> None: # Make sure that groups are set correctly # setBuildPlateForSelection in CuraActions makes sure that no single childs are set. self._build_plate_number = nr @@ -19,7 +19,7 @@ class BuildPlateDecorator(SceneNodeDecorator): for child in self._node.getChildren(): child.callDecoration("setBuildPlateNumber", nr) - def getBuildPlateNumber(self): + def getBuildPlateNumber(self) -> int: return self._build_plate_number def __deepcopy__(self, memo): diff --git a/cura/Scene/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py index da71f6920e..2a160f6069 100644 --- a/cura/Scene/ConvexHullDecorator.py +++ b/cura/Scene/ConvexHullDecorator.py @@ -60,13 +60,15 @@ class ConvexHullDecorator(SceneNodeDecorator): previous_node = self._node # Disconnect from previous node signals if previous_node is not None and node is not previous_node: - previous_node.transformationChanged.disconnect(self._onChanged) - previous_node.parentChanged.disconnect(self._onChanged) + previous_node.boundingBoxChanged.disconnect(self._onChanged) super().setNode(node) - # Mypy doesn't understand that self._node is no longer optional, so just use the node. - node.transformationChanged.connect(self._onChanged) - node.parentChanged.connect(self._onChanged) + + node.boundingBoxChanged.connect(self._onChanged) + + per_object_stack = node.callDecoration("getStack") + if per_object_stack: + per_object_stack.propertyChanged.connect(self._onSettingValueChanged) self._onChanged() @@ -74,26 +76,46 @@ class ConvexHullDecorator(SceneNodeDecorator): def __deepcopy__(self, memo): return ConvexHullDecorator() - ## Get the unmodified 2D projected convex hull of the node (if any) - def getConvexHull(self) -> Optional[Polygon]: + ## The polygon representing the 2D adhesion area. + # If no adhesion is used, the regular convex hull is returned + def getAdhesionArea(self) -> Optional[Polygon]: if self._node is None: return None hull = self._compute2DConvexHull() + if hull is None: + return None - if self._global_stack and self._node is not None and hull is not None: - # Parent can be None if node is just loaded. - if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" and not self.hasGroupAsParent(self._node): - hull = hull.getMinkowskiHull(Polygon(numpy.array(self._global_stack.getProperty("machine_head_polygon", "value"), numpy.float32))) - hull = self._add2DAdhesionMargin(hull) - return hull + return self._add2DAdhesionMargin(hull) - ## Get the convex hull of the node with the full head size + ## Get the unmodified 2D projected convex hull of the node (if any) + # In case of one-at-a-time, this includes adhesion and head+fans clearance + def getConvexHull(self) -> Optional[Polygon]: + if self._node is None: + return None + if self._node.callDecoration("isNonPrintingMesh"): + return None + + # Parent can be None if node is just loaded. + if self._isSingularOneAtATimeNode(): + hull = self.getConvexHullHeadFull() + if hull is None: + return None + hull = self._add2DAdhesionMargin(hull) + return hull + + return self._compute2DConvexHull() + + ## For one at the time this is the convex hull of the node with the full head size + # In case of printing all at once this is None. def getConvexHullHeadFull(self) -> Optional[Polygon]: if self._node is None: return None - return self._compute2DConvexHeadFull() + if self._isSingularOneAtATimeNode(): + return self._compute2DConvexHeadFull() + + return None @staticmethod def hasGroupAsParent(node: "SceneNode") -> bool: @@ -103,34 +125,47 @@ class ConvexHullDecorator(SceneNodeDecorator): return bool(parent.callDecoration("isGroup")) ## Get convex hull of the object + head size - # In case of printing all at once this is the same as the convex hull. + # In case of printing all at once this is None. # For one at the time this is area with intersection of mirrored head def getConvexHullHead(self) -> Optional[Polygon]: if self._node is None: return None - - if self._global_stack: - if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" and not self.hasGroupAsParent(self._node): - head_with_fans = self._compute2DConvexHeadMin() - if head_with_fans is None: - return None - head_with_fans_with_adhesion_margin = self._add2DAdhesionMargin(head_with_fans) - return head_with_fans_with_adhesion_margin + if self._node.callDecoration("isNonPrintingMesh"): + return None + if self._isSingularOneAtATimeNode(): + head_with_fans = self._compute2DConvexHeadMin() + if head_with_fans is None: + return None + head_with_fans_with_adhesion_margin = self._add2DAdhesionMargin(head_with_fans) + return head_with_fans_with_adhesion_margin return None ## Get convex hull of the node - # In case of printing all at once this is the same as the convex hull. + # In case of printing all at once this None?? # For one at the time this is the area without the head. def getConvexHullBoundary(self) -> Optional[Polygon]: if self._node is None: return None - if self._global_stack: - if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" and not self.hasGroupAsParent(self._node): - # Printing one at a time and it's not an object in a group - return self._compute2DConvexHull() + if self._node.callDecoration("isNonPrintingMesh"): + return None + + if self._isSingularOneAtATimeNode(): + # Printing one at a time and it's not an object in a group + return self._compute2DConvexHull() return None + ## Get the buildplate polygon where will be printed + # In case of printing all at once this is the same as convex hull (no individual adhesion) + # For one at the time this includes the adhesion area + def getPrintingArea(self) -> Optional[Polygon]: + if self._isSingularOneAtATimeNode(): + # In one-at-a-time mode, every printed object gets it's own adhesion + printing_area = self.getAdhesionArea() + else: + printing_area = self.getConvexHull() + return printing_area + ## The same as recomputeConvexHull, but using a timer if it was set. def recomputeConvexHullDelayed(self) -> None: if self._recompute_convex_hull_timer is not None: @@ -153,10 +188,9 @@ class ConvexHullDecorator(SceneNodeDecorator): self._convex_hull_node = None return - convex_hull = self.getConvexHull() if self._convex_hull_node: self._convex_hull_node.setParent(None) - hull_node = ConvexHullNode.ConvexHullNode(self._node, convex_hull, self._raft_thickness, root) + hull_node = ConvexHullNode.ConvexHullNode(self._node, self.getPrintingArea(), self._raft_thickness, root) self._convex_hull_node = hull_node def _onSettingValueChanged(self, key: str, property_name: str) -> None: @@ -259,9 +293,13 @@ class ConvexHullDecorator(SceneNodeDecorator): return offset_hull def _getHeadAndFans(self) -> Polygon: - if self._global_stack: - return Polygon(numpy.array(self._global_stack.getHeadAndFansCoordinates(), numpy.float32)) - return Polygon() + if not self._global_stack: + return Polygon() + + polygon = Polygon(numpy.array(self._global_stack.getHeadAndFansCoordinates(), numpy.float32)) + offset_x = self._getSettingProperty("machine_nozzle_offset_x", "value") + offset_y = self._getSettingProperty("machine_nozzle_offset_y", "value") + return polygon.translate(-offset_x, -offset_y) def _compute2DConvexHeadFull(self) -> Optional[Polygon]: convex_hull = self._compute2DConvexHull() @@ -393,6 +431,14 @@ class ConvexHullDecorator(SceneNodeDecorator): return True return self.__isDescendant(root, node.getParent()) + ## True if print_sequence is one_at_a_time and _node is not part of a group + def _isSingularOneAtATimeNode(self) -> bool: + if self._node is None: + return False + return self._global_stack is not None \ + and self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" \ + and not self.hasGroupAsParent(self._node) + _affected_settings = [ "adhesion_type", "raft_margin", "print_sequence", "skirt_gap", "skirt_line_count", "skirt_brim_line_width", "skirt_distance", "brim_line_count"] @@ -400,4 +446,4 @@ class ConvexHullDecorator(SceneNodeDecorator): ## Settings that change the convex hull. # # If these settings change, the convex hull should be recalculated. - _influencing_settings = {"xy_offset", "xy_offset_layer_0", "mold_enabled", "mold_width"} + _influencing_settings = {"xy_offset", "xy_offset_layer_0", "mold_enabled", "mold_width", "anti_overhang_mesh", "infill_mesh", "cutting_mesh"} diff --git a/cura/Scene/ConvexHullNode.py b/cura/Scene/ConvexHullNode.py index 90bf536308..da2713a522 100644 --- a/cura/Scene/ConvexHullNode.py +++ b/cura/Scene/ConvexHullNode.py @@ -1,6 +1,6 @@ # Copyright (c) 2015 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional +from typing import Optional, TYPE_CHECKING from UM.Application import Application from UM.Math.Polygon import Polygon @@ -11,6 +11,9 @@ from UM.Math.Color import Color from UM.Mesh.MeshBuilder import MeshBuilder # To create a mesh to display the convex hull with. from UM.View.GL.OpenGL import OpenGL +if TYPE_CHECKING: + from UM.Mesh.MeshData import MeshData + class ConvexHullNode(SceneNode): shader = None # To prevent the shader from being re-built over and over again, only load it once. @@ -43,7 +46,8 @@ class ConvexHullNode(SceneNode): # The node this mesh is "watching" self._node = node - self._convex_hull_head_mesh = None + # Area of the head + fans for display as a shadow on the buildplate + self._convex_hull_head_mesh = None # type: Optional[MeshData] self._node.decoratorsChanged.connect(self._onNodeDecoratorsChanged) self._onNodeDecoratorsChanged(self._node) @@ -76,14 +80,17 @@ class ConvexHullNode(SceneNode): if self.getParent(): if self.getMeshData() and isinstance(self._node, SceneNode) and self._node.callDecoration("getBuildPlateNumber") == Application.getInstance().getMultiBuildPlateModel().activeBuildPlate: + # The object itself (+ adhesion in one-at-a-time mode) renderer.queueNode(self, transparent = True, shader = ConvexHullNode.shader, backface_cull = True, sort = -8) if self._convex_hull_head_mesh: + # The full head. Rendered as a hint to the user: If this area overlaps another object A; this object + # cannot be printed after A, because the head would hit A while printing the current object renderer.queueNode(self, shader = ConvexHullNode.shader, transparent = True, mesh = self._convex_hull_head_mesh, backface_cull = True, sort = -8) return True def _onNodeDecoratorsChanged(self, node: SceneNode) -> None: - convex_hull_head = self._node.callDecoration("getConvexHullHead") + convex_hull_head = self._node.callDecoration("getConvexHullHeadFull") if convex_hull_head: convex_hull_head_builder = MeshBuilder() convex_hull_head_builder.addConvexPolygon(convex_hull_head.getPoints(), self._mesh_height - self._thickness) diff --git a/cura/Scene/CuraSceneController.py b/cura/Scene/CuraSceneController.py index 4b19271538..91ff26cadc 100644 --- a/cura/Scene/CuraSceneController.py +++ b/cura/Scene/CuraSceneController.py @@ -3,7 +3,8 @@ from UM.Logger import Logger from PyQt5.QtCore import Qt, pyqtSlot, QObject from PyQt5.QtWidgets import QApplication -from cura.ObjectsModel import ObjectsModel +from UM.Scene.Camera import Camera +from cura.UI.ObjectsModel import ObjectsModel from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel from UM.Application import Application @@ -33,7 +34,7 @@ class CuraSceneController(QObject): source = args[0] else: source = None - if not isinstance(source, SceneNode): + if not isinstance(source, SceneNode) or isinstance(source, Camera): return max_build_plate = self._calcMaxBuildPlate() changed = False diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py index 259c273329..eb609def5a 100644 --- a/cura/Scene/CuraSceneNode.py +++ b/cura/Scene/CuraSceneNode.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from copy import deepcopy @@ -6,13 +6,14 @@ from typing import cast, Dict, List, Optional from UM.Application import Application from UM.Math.AxisAlignedBox import AxisAlignedBox -from UM.Math.Polygon import Polygon #For typing. +from UM.Math.Polygon import Polygon # For typing. from UM.Scene.SceneNode import SceneNode -from UM.Scene.SceneNodeDecorator import SceneNodeDecorator #To cast the deepcopy of every decorator back to SceneNodeDecorator. +from UM.Scene.SceneNodeDecorator import SceneNodeDecorator # To cast the deepcopy of every decorator back to SceneNodeDecorator. + +import cura.CuraApplication # To get the build plate. +from cura.Settings.ExtruderStack import ExtruderStack # For typing. +from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator # For per-object settings. -import cura.CuraApplication #To get the build plate. -from cura.Settings.ExtruderStack import ExtruderStack #For typing. -from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator #For per-object settings. ## Scene nodes that are models are only seen when selecting the corresponding build plate # Note that many other nodes can just be UM SceneNode objects. @@ -20,7 +21,7 @@ class CuraSceneNode(SceneNode): def __init__(self, parent: Optional["SceneNode"] = None, visible: bool = True, name: str = "", no_setting_override: bool = False) -> None: super().__init__(parent = parent, visible = visible, name = name) if not no_setting_override: - self.addDecorator(SettingOverrideDecorator()) # now we always have a getActiveExtruderPosition, unless explicitly disabled + self.addDecorator(SettingOverrideDecorator()) # Now we always have a getActiveExtruderPosition, unless explicitly disabled self._outside_buildarea = False def setOutsideBuildArea(self, new_value: bool) -> None: @@ -58,7 +59,7 @@ class CuraSceneNode(SceneNode): if extruder_id is not None: if extruder_id == extruder.getId(): return extruder - else: # If the id is unknown, then return the extruder in the position 0 + else: # If the id is unknown, then return the extruder in the position 0 try: if extruder.getMetaDataEntry("position", default = "0") == "0": # Check if the position is zero return extruder @@ -85,24 +86,14 @@ class CuraSceneNode(SceneNode): 1.0 ] - ## Return if the provided bbox collides with the bbox of this scene node - def collidesWithBbox(self, check_bbox: AxisAlignedBox) -> bool: - bbox = self.getBoundingBox() - if bbox is not None: - # Mark the node as outside the build volume if the bounding box test fails. - if check_bbox.intersectsBox(bbox) != AxisAlignedBox.IntersectionResult.FullIntersection: - return True - - return False - ## Return if any area collides with the convex hull of this scene node - def collidesWithArea(self, areas: List[Polygon]) -> bool: - convex_hull = self.callDecoration("getConvexHull") + def collidesWithAreas(self, areas: List[Polygon]) -> bool: + convex_hull = self.callDecoration("getPrintingArea") if convex_hull: if not convex_hull.isValid(): return False - # Check for collisions between disallowed areas and the object + # Check for collisions between provided areas and the object for area in areas: overlap = convex_hull.intersectsPolygon(area) if overlap is None: @@ -112,21 +103,24 @@ class CuraSceneNode(SceneNode): ## Override of SceneNode._calculateAABB to exclude non-printing-meshes from bounding box def _calculateAABB(self) -> None: + self._aabb = None if self._mesh_data: - aabb = self._mesh_data.getExtents(self.getWorldTransformation()) + self._aabb = self._mesh_data.getExtents(self.getWorldTransformation()) else: # If there is no mesh_data, use a boundingbox that encompasses the local (0,0,0) position = self.getWorldPosition() - aabb = AxisAlignedBox(minimum = position, maximum = position) + self._aabb = AxisAlignedBox(minimum=position, maximum=position) - for child in self._children: + for child in self.getAllChildren(): if child.callDecoration("isNonPrintingMesh"): # Non-printing-meshes inside a group should not affect push apart or drop to build plate continue - if aabb is None: - aabb = child.getBoundingBox() + if not child.getMeshData(): + # Nodes without mesh data should not affect bounding boxes of their parents. + continue + if self._aabb is None: + self._aabb = child.getBoundingBox() else: - aabb = aabb + child.getBoundingBox() - self._aabb = aabb + self._aabb = self._aabb + child.getBoundingBox() ## Taken from SceneNode, but replaced SceneNode with CuraSceneNode def __deepcopy__(self, memo: Dict[int, object]) -> "CuraSceneNode": diff --git a/cura/Scene/GCodeListDecorator.py b/cura/Scene/GCodeListDecorator.py index d3dadb3f23..6c52fb89bf 100644 --- a/cura/Scene/GCodeListDecorator.py +++ b/cura/Scene/GCodeListDecorator.py @@ -1,11 +1,18 @@ from UM.Scene.SceneNodeDecorator import SceneNodeDecorator -from typing import List +from typing import List, Optional class GCodeListDecorator(SceneNodeDecorator): def __init__(self) -> None: super().__init__() self._gcode_list = [] # type: List[str] + self._filename = None # type: Optional[str] + + def getGcodeFileName(self) -> Optional[str]: + return self._filename + + def setGcodeFileName(self, filename: str) -> None: + self._filename = filename def getGCodeList(self) -> List[str]: return self._gcode_list diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 133e04e8fc..92f06929d2 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -1,15 +1,14 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import os import urllib.parse import uuid -from typing import Dict, Union, Any, TYPE_CHECKING, List +from typing import Any, cast, Dict, List, TYPE_CHECKING, Union from PyQt5.QtCore import QObject, QUrl from PyQt5.QtWidgets import QMessageBox - from UM.i18n import i18nCatalog from UM.FlameProfiler import pyqtSlot from UM.Logger import Logger @@ -17,21 +16,19 @@ from UM.MimeTypeDatabase import MimeTypeDatabase, MimeTypeNotFoundError from UM.Platform import Platform from UM.SaveFile import SaveFile from UM.Settings.ContainerFormatError import ContainerFormatError +from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerStack import ContainerStack from UM.Settings.DefinitionContainer import DefinitionContainer from UM.Settings.InstanceContainer import InstanceContainer +import cura.CuraApplication +from cura.Machines.ContainerTree import ContainerTree if TYPE_CHECKING: from cura.CuraApplication import CuraApplication from cura.Machines.ContainerNode import ContainerNode from cura.Machines.MaterialNode import MaterialNode from cura.Machines.QualityChangesGroup import QualityChangesGroup - from UM.PluginRegistry import PluginRegistry - from cura.Settings.MachineManager import MachineManager - from cura.Machines.MaterialManager import MaterialManager - from cura.Machines.QualityManager import QualityManager - from cura.Settings.CuraContainerRegistry import CuraContainerRegistry catalog = i18nCatalog("cura") @@ -47,20 +44,16 @@ class ContainerManager(QObject): if ContainerManager.__instance is not None: raise RuntimeError("Try to create singleton '%s' more than once" % self.__class__.__name__) ContainerManager.__instance = self + try: + super().__init__(parent = application) + except TypeError: + super().__init__() - super().__init__(parent = application) - - self._application = application # type: CuraApplication - self._plugin_registry = self._application.getPluginRegistry() # type: PluginRegistry - self._container_registry = self._application.getContainerRegistry() # type: CuraContainerRegistry - self._machine_manager = self._application.getMachineManager() # type: MachineManager - self._material_manager = self._application.getMaterialManager() # type: MaterialManager - self._quality_manager = self._application.getQualityManager() # type: QualityManager self._container_name_filters = {} # type: Dict[str, Dict[str, Any]] @pyqtSlot(str, str, result=str) def getContainerMetaDataEntry(self, container_id: str, entry_names: str) -> str: - metadatas = self._container_registry.findContainersMetadata(id = container_id) + metadatas = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().findContainersMetadata(id = container_id) if not metadatas: Logger.log("w", "Could not get metadata of container %s because it was not found.", container_id) return "" @@ -89,15 +82,19 @@ class ContainerManager(QObject): # Update: In order for QML to use objects and sub objects, those (sub) objects must all be QObject. Is that what we want? @pyqtSlot("QVariant", str, str) def setContainerMetaDataEntry(self, container_node: "ContainerNode", entry_name: str, entry_value: str) -> bool: + if container_node.container is None: + Logger.log("w", "Container node {0} doesn't have a container.".format(container_node.container_id)) + return False root_material_id = container_node.getMetaDataEntry("base_file", "") - if self._container_registry.isReadOnly(root_material_id): + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + if container_registry.isReadOnly(root_material_id): Logger.log("w", "Cannot set metadata of read-only container %s.", root_material_id) return False - - material_group = self._material_manager.getMaterialGroup(root_material_id) - if material_group is None: - Logger.log("w", "Unable to find material group for: %s.", root_material_id) + root_material_query = container_registry.findContainers(id = root_material_id) + if not root_material_query: + Logger.log("w", "Unable to find root material: {root_material}.".format(root_material = root_material_id)) return False + root_material = root_material_query[0] entries = entry_name.split("/") entry_name = entries.pop() @@ -105,7 +102,7 @@ class ContainerManager(QObject): sub_item_changed = False if entries: root_name = entries.pop(0) - root = material_group.root_material_node.getMetaDataEntry(root_name) + root = root_material.getMetaDataEntry(root_name) item = root for _ in range(len(entries)): @@ -118,16 +115,14 @@ class ContainerManager(QObject): entry_name = root_name entry_value = root - container = material_group.root_material_node.getContainer() - if container is not None: - container.setMetaDataEntry(entry_name, entry_value) - if sub_item_changed: #If it was only a sub-item that has changed then the setMetaDataEntry won't correctly notice that something changed, and we must manually signal that the metadata changed. - container.metaDataChanged.emit(container) + root_material.setMetaDataEntry(entry_name, entry_value) + if sub_item_changed: #If it was only a sub-item that has changed then the setMetaDataEntry won't correctly notice that something changed, and we must manually signal that the metadata changed. + root_material.metaDataChanged.emit(root_material) return True @pyqtSlot(str, result = str) def makeUniqueName(self, original_name: str) -> str: - return self._container_registry.uniqueName(original_name) + return cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().uniqueName(original_name) ## Get a list of string that can be used as name filters for a Qt File Dialog # @@ -182,7 +177,7 @@ class ContainerManager(QObject): else: mime_type = self._container_name_filters[file_type]["mime"] - containers = self._container_registry.findContainers(id = container_id) + containers = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().findContainers(id = container_id) if not containers: return {"status": "error", "message": "Container not found"} container = containers[0] @@ -240,18 +235,19 @@ class ContainerManager(QObject): except MimeTypeNotFoundError: return {"status": "error", "message": "Could not determine mime type of file"} - container_type = self._container_registry.getContainerForMimeType(mime_type) + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + container_type = container_registry.getContainerForMimeType(mime_type) if not container_type: return {"status": "error", "message": "Could not find a container to handle the specified file."} container_id = urllib.parse.unquote_plus(mime_type.stripExtension(os.path.basename(file_url))) - container_id = self._container_registry.uniqueName(container_id) + container_id = container_registry.uniqueName(container_id) container = container_type(container_id) try: with open(file_url, "rt", encoding = "utf-8") as f: - container.deserialize(f.read()) + container.deserialize(f.read(), file_url) except PermissionError: return {"status": "error", "message": "Permission denied when trying to read the file."} except ContainerFormatError: @@ -261,7 +257,7 @@ class ContainerManager(QObject): container.setDirty(True) - self._container_registry.addContainer(container) + container_registry.addContainer(container) return {"status": "success", "message": "Successfully imported container {0}".format(container.getName())} @@ -273,44 +269,55 @@ class ContainerManager(QObject): # \return \type{bool} True if successful, False if not. @pyqtSlot(result = bool) def updateQualityChanges(self) -> bool: - global_stack = self._machine_manager.activeMachine + application = cura.CuraApplication.CuraApplication.getInstance() + global_stack = application.getMachineManager().activeMachine if not global_stack: return False - self._machine_manager.blurSettings.emit() + application.getMachineManager().blurSettings.emit() current_quality_changes_name = global_stack.qualityChanges.getName() current_quality_type = global_stack.quality.getMetaDataEntry("quality_type") extruder_stacks = list(global_stack.extruders.values()) + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + machine_definition_id = ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition for stack in [global_stack] + extruder_stacks: # Find the quality_changes container for this stack and merge the contents of the top container into it. quality_changes = stack.qualityChanges if quality_changes.getId() == "empty_quality_changes": - quality_changes = self._quality_manager._createQualityChanges(current_quality_type, current_quality_changes_name, - global_stack, stack) - self._container_registry.addContainer(quality_changes) + quality_changes = InstanceContainer(container_registry.uniqueName((stack.getId() + "_" + current_quality_changes_name).lower().replace(" ", "_"))) + quality_changes.setName(current_quality_changes_name) + quality_changes.setMetaDataEntry("type", "quality_changes") + quality_changes.setMetaDataEntry("quality_type", current_quality_type) + if stack.getMetaDataEntry("position") is not None: # Extruder stacks. + quality_changes.setMetaDataEntry("position", stack.getMetaDataEntry("position")) + quality_changes.setMetaDataEntry("intent_category", stack.quality.getMetaDataEntry("intent_category", "default")) + quality_changes.setMetaDataEntry("setting_version", application.SettingVersion) + quality_changes.setDefinition(machine_definition_id) + container_registry.addContainer(quality_changes) stack.qualityChanges = quality_changes - if not quality_changes or self._container_registry.isReadOnly(quality_changes.getId()): + if not quality_changes or container_registry.isReadOnly(quality_changes.getId()): Logger.log("e", "Could not update quality of a nonexistant or read only quality profile in stack %s", stack.getId()) continue self._performMerge(quality_changes, stack.getTop()) - self._machine_manager.activeQualityChangesGroupChanged.emit() + cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeQualityChangesGroupChanged.emit() return True ## Clear the top-most (user) containers of the active stacks. @pyqtSlot() def clearUserContainers(self) -> None: - self._machine_manager.blurSettings.emit() + machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager() + machine_manager.blurSettings.emit() send_emits_containers = [] # Go through global and extruder stacks and clear their topmost container (the user settings). - global_stack = self._machine_manager.activeMachine + global_stack = machine_manager.activeMachine extruder_stacks = list(global_stack.extruders.values()) for stack in [global_stack] + extruder_stacks: container = stack.userChanges @@ -318,40 +325,38 @@ class ContainerManager(QObject): send_emits_containers.append(container) # user changes are possibly added to make the current setup match the current enabled extruders - self._machine_manager.correctExtruderSettings() + machine_manager.correctExtruderSettings() for container in send_emits_containers: container.sendPostponedEmits() ## Get a list of materials that have the same GUID as the reference material # - # \param material_id \type{str} the id of the material for which to get the linked materials. - # \return \type{list} a list of names of materials with the same GUID + # \param material_node The node representing the material for which to get + # the same GUID. + # \param exclude_self Whether to include the name of the material you + # provided. + # \return A list of names of materials with the same GUID. @pyqtSlot("QVariant", bool, result = "QStringList") - def getLinkedMaterials(self, material_node: "MaterialNode", exclude_self: bool = False): - guid = material_node.getMetaDataEntry("GUID", "") - - self_root_material_id = material_node.getMetaDataEntry("base_file") - material_group_list = self._material_manager.getMaterialGroupListByGUID(guid) - - linked_material_names = [] - if material_group_list: - for material_group in material_group_list: - if exclude_self and material_group.name == self_root_material_id: - continue - linked_material_names.append(material_group.root_material_node.getMetaDataEntry("name", "")) - return linked_material_names + def getLinkedMaterials(self, material_node: "MaterialNode", exclude_self: bool = False) -> List[str]: + same_guid = ContainerRegistry.getInstance().findInstanceContainersMetadata(GUID = material_node.guid) + if exclude_self: + return list({meta["name"] for meta in same_guid if meta["base_file"] != material_node.base_file}) + else: + return list({meta["name"] for meta in same_guid}) ## Unlink a material from all other materials by creating a new GUID # \param material_id \type{str} the id of the material to create a new GUID for. @pyqtSlot("QVariant") def unlinkMaterial(self, material_node: "MaterialNode") -> None: # Get the material group - material_group = self._material_manager.getMaterialGroup(material_node.getMetaDataEntry("base_file", "")) - - if material_group is None: + if material_node.container is None: # Failed to lazy-load this container. + return + root_material_query = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().findInstanceContainers(id = material_node.getMetaDataEntry("base_file", "")) + if not root_material_query: Logger.log("w", "Unable to find material group for %s", material_node) return + root_material = root_material_query[0] # Generate a new GUID new_guid = str(uuid.uuid4()) @@ -359,9 +364,7 @@ class ContainerManager(QObject): # Update the GUID # NOTE: We only need to set the root material container because XmlMaterialProfile.setMetaDataEntry() will # take care of the derived containers too - container = material_group.root_material_node.getContainer() - if container is not None: - container.setMetaDataEntry("GUID", new_guid) + root_material.setMetaDataEntry("GUID", new_guid) def _performMerge(self, merge_into: InstanceContainer, merge: InstanceContainer, clear_settings: bool = True) -> None: if merge == merge_into: @@ -375,14 +378,16 @@ class ContainerManager(QObject): def _updateContainerNameFilters(self) -> None: self._container_name_filters = {} - for plugin_id, container_type in self._container_registry.getContainerTypes(): + plugin_registry = cura.CuraApplication.CuraApplication.getInstance().getPluginRegistry() + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + for plugin_id, container_type in container_registry.getContainerTypes(): # Ignore default container types since those are not plugins if container_type in (InstanceContainer, ContainerStack, DefinitionContainer): continue serialize_type = "" try: - plugin_metadata = self._plugin_registry.getMetaData(plugin_id) + plugin_metadata = plugin_registry.getMetaData(plugin_id) if plugin_metadata: serialize_type = plugin_metadata["settings_container"]["type"] else: @@ -390,7 +395,7 @@ class ContainerManager(QObject): except KeyError as e: continue - mime_type = self._container_registry.getMimeTypeForContainer(container_type) + mime_type = container_registry.getMimeTypeForContainer(container_type) if mime_type is None: continue entry = { @@ -426,7 +431,7 @@ class ContainerManager(QObject): path = file_url.toLocalFile() if not path: return {"status": "error", "message": catalog.i18nc("@info:status", "Invalid file URL:") + " " + str(file_url)} - return self._container_registry.importProfile(path) + return cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().importProfile(path) @pyqtSlot(QObject, QUrl, str) def exportQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup", file_url: QUrl, file_type: str) -> None: @@ -436,8 +441,11 @@ class ContainerManager(QObject): if not path: return - container_list = [n.getContainer() for n in quality_changes_group.getAllNodes() if n.getContainer() is not None] - self._container_registry.exportQualityProfile(container_list, path, file_type) + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + container_list = [cast(InstanceContainer, container_registry.findContainers(id = quality_changes_group.metadata_for_global["id"])[0])] # type: List[InstanceContainer] + for metadata in quality_changes_group.metadata_per_extruder.values(): + container_list.append(cast(InstanceContainer, container_registry.findContainers(id = metadata["id"])[0])) + cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().exportQualityProfile(container_list, path, file_type) __instance = None # type: ContainerManager diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 9f44d075e0..f6028e9d4d 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -1,11 +1,11 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import os import re import configparser -from typing import cast, Dict, Optional +from typing import Any, cast, Dict, Optional, List, Union from PyQt5.QtWidgets import QMessageBox from UM.Decorators import override @@ -20,14 +20,16 @@ from UM.Logger import Logger from UM.Message import Message from UM.Platform import Platform from UM.PluginRegistry import PluginRegistry # For getting the possible profile writers to write with. -from UM.Util import parseBool from UM.Resources import Resources +from UM.Util import parseBool +from cura.ReaderWriters.ProfileWriter import ProfileWriter from . import ExtruderStack from . import GlobalStack import cura.CuraApplication -from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch +from cura.Settings.cura_empty_instance_containers import empty_quality_container +from cura.Machines.ContainerTree import ContainerTree from cura.ReaderWriters.ProfileReader import NoProfileException, ProfileReader from UM.i18n import i18nCatalog @@ -50,10 +52,10 @@ class CuraContainerRegistry(ContainerRegistry): # This will also try to convert a ContainerStack to either Extruder or # Global stack based on metadata information. @override(ContainerRegistry) - def addContainer(self, container): + def addContainer(self, container: ContainerInterface) -> None: # Note: Intentional check with type() because we want to ignore subclasses if type(container) == ContainerStack: - container = self._convertContainerStack(container) + container = self._convertContainerStack(cast(ContainerStack, container)) if isinstance(container, InstanceContainer) and type(container) != type(self.getEmptyInstanceContainer()): # Check against setting version of the definition. @@ -61,7 +63,7 @@ class CuraContainerRegistry(ContainerRegistry): actual_setting_version = int(container.getMetaDataEntry("setting_version", default = 0)) if required_setting_version != actual_setting_version: Logger.log("w", "Instance container {container_id} is outdated. Its setting version is {actual_setting_version} but it should be {required_setting_version}.".format(container_id = container.getId(), actual_setting_version = actual_setting_version, required_setting_version = required_setting_version)) - return #Don't add. + return # Don't add. super().addContainer(container) @@ -71,9 +73,9 @@ class CuraContainerRegistry(ContainerRegistry): # \param new_name \type{string} Base name, which may not be unique # \param fallback_name \type{string} Name to use when (stripped) new_name is empty # \return \type{string} Name that is unique for the specified type and name/id - def createUniqueName(self, container_type, current_name, new_name, fallback_name): + def createUniqueName(self, container_type: str, current_name: str, new_name: str, fallback_name: str) -> str: new_name = new_name.strip() - num_check = re.compile("(.*?)\s*#\d+$").match(new_name) + num_check = re.compile(r"(.*?)\s*#\d+$").match(new_name) if num_check: new_name = num_check.group(1) if new_name == "": @@ -92,7 +94,7 @@ class CuraContainerRegistry(ContainerRegistry): # Both the id and the name are checked, because they may not be the same and it is better if they are both unique # \param container_type \type{string} Type of the container (machine, quality, ...) # \param container_name \type{string} Name to check - def _containerExists(self, container_type, container_name): + def _containerExists(self, container_type: str, container_name: str): container_class = ContainerStack if container_type == "machine" else InstanceContainer return self.findContainersMetadata(container_type = container_class, id = container_name, type = container_type, ignore_case = True) or \ @@ -100,16 +102,18 @@ class CuraContainerRegistry(ContainerRegistry): ## Exports an profile to a file # - # \param instance_ids \type{list} the IDs of the profiles to export. + # \param container_list \type{list} the containers to export. This is not + # necessarily in any order! # \param file_name \type{str} the full path and filename to export to. # \param file_type \type{str} the file type with the format " (*.)" - def exportQualityProfile(self, container_list, file_name, file_type): + # \return True if the export succeeded, false otherwise. + def exportQualityProfile(self, container_list: List[InstanceContainer], file_name: str, file_type: str) -> bool: # Parse the fileType to deduce what plugin can save the file format. # fileType has the format " (*.)" split = file_type.rfind(" (*.") # Find where the description ends and the extension starts. if split < 0: # Not found. Invalid format. Logger.log("e", "Invalid file format identifier %s", file_type) - return + return False description = file_type[:split] extension = file_type[split + 4:-1] # Leave out the " (*." and ")". if not file_name.endswith("." + extension): # Auto-fill the extension if the user did not provide any. @@ -121,10 +125,12 @@ class CuraContainerRegistry(ContainerRegistry): result = QMessageBox.question(None, catalog.i18nc("@title:window", "File Already Exists"), catalog.i18nc("@label Don't translate the XML tag !", "The file {0} already exists. Are you sure you want to overwrite it?").format(file_name)) if result == QMessageBox.No: - return + return False profile_writer = self._findProfileWriter(extension, description) try: + if profile_writer is None: + raise Exception("Unable to find a profile writer") success = profile_writer.write(file_name, container_list) except Exception as e: Logger.log("e", "Failed to export profile to %s: %s", file_name, str(e)) @@ -132,23 +138,24 @@ class CuraContainerRegistry(ContainerRegistry): lifetime = 0, title = catalog.i18nc("@info:title", "Error")) m.show() - return + return False if not success: Logger.log("w", "Failed to export profile to %s: Writer plugin reported failure.", file_name) m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Failed to export profile to {0}: Writer plugin reported failure.", file_name), lifetime = 0, title = catalog.i18nc("@info:title", "Error")) m.show() - return + return False m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Exported profile to {0}", file_name), title = catalog.i18nc("@info:title", "Export succeeded")) m.show() + return True ## Gets the plugin object matching the criteria # \param extension # \param description # \return The plugin object matching the given extension and description. - def _findProfileWriter(self, extension, description): + def _findProfileWriter(self, extension: str, description: str) -> Optional[ProfileWriter]: plugin_registry = PluginRegistry.getInstance() for plugin_id, meta_data in self._getIOPlugins("profile_writer"): for supported_type in meta_data["profile_writer"]: # All file types this plugin can supposedly write. @@ -156,7 +163,7 @@ class CuraContainerRegistry(ContainerRegistry): if supported_extension == extension: # This plugin supports a file type with the same extension. supported_description = supported_type.get("description", None) if supported_description == description: # The description is also identical. Assume it's the same file type. - return plugin_registry.getPluginObject(plugin_id) + return cast(ProfileWriter, plugin_registry.getPluginObject(plugin_id)) return None ## Imports a profile from a file @@ -169,17 +176,18 @@ class CuraContainerRegistry(ContainerRegistry): if not file_name: return { "status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags !", "Failed to import profile from {0}: {1}", file_name, "Invalid path")} - plugin_registry = PluginRegistry.getInstance() - extension = file_name.split(".")[-1] - global_stack = Application.getInstance().getGlobalContainerStack() if not global_stack: return {"status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags !", "Can't import profile from {0} before a printer is added.", file_name)} + container_tree = ContainerTree.getInstance() machine_extruders = [] for position in sorted(global_stack.extruders): machine_extruders.append(global_stack.extruders[position]) + plugin_registry = PluginRegistry.getInstance() + extension = file_name.split(".")[-1] + for plugin_id, meta_data in self._getIOPlugins("profile_reader"): if meta_data["profile_reader"][0]["extension"] != extension: continue @@ -221,7 +229,7 @@ class CuraContainerRegistry(ContainerRegistry): # Make sure we have a profile_definition in the file: if profile_definition is None: break - machine_definitions = self.findDefinitionContainers(id = profile_definition) + machine_definitions = self.findContainers(id = profile_definition) if not machine_definitions: Logger.log("e", "Incorrect profile [%s]. Unknown machine type [%s]", file_name, profile_definition) return {"status": "error", @@ -231,17 +239,17 @@ class CuraContainerRegistry(ContainerRegistry): # Get the expected machine definition. # i.e.: We expect gcode for a UM2 Extended to be defined as normal UM2 gcode... - profile_definition = getMachineDefinitionIDForQualitySearch(machine_definition) - expected_machine_definition = getMachineDefinitionIDForQualitySearch(global_stack.definition) + has_machine_quality = parseBool(machine_definition.getMetaDataEntry("has_machine_quality", "false")) + profile_definition = machine_definition.getMetaDataEntry("quality_definition", machine_definition.getId()) if has_machine_quality else "fdmprinter" + expected_machine_definition = container_tree.machines[global_stack.definition.getId()].quality_definition # And check if the profile_definition matches either one (showing error if not): if profile_definition != expected_machine_definition: - Logger.log("e", "Profile [%s] is for machine [%s] but the current active machine is [%s]. Will not import the profile", file_name, profile_definition, expected_machine_definition) - return { "status": "error", - "message": catalog.i18nc("@info:status Don't translate the XML tags !", "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it.", file_name, profile_definition, expected_machine_definition)} + Logger.log("d", "Profile {file_name} is for machine {profile_definition}, but the current active machine is {expected_machine_definition}. Changing profile's definition.".format(file_name = file_name, profile_definition = profile_definition, expected_machine_definition = expected_machine_definition)) + global_profile.setMetaDataEntry("definition", expected_machine_definition) + for extruder_profile in extruder_profiles: + extruder_profile.setMetaDataEntry("definition", expected_machine_definition) - # Fix the global quality profile's definition field in case it's not correct - global_profile.setMetaDataEntry("definition", expected_machine_definition) quality_name = global_profile.getName() quality_type = global_profile.getMetaDataEntry("quality_type") @@ -264,10 +272,9 @@ class CuraContainerRegistry(ContainerRegistry): profile.setMetaDataEntry("type", "quality_changes") profile.setMetaDataEntry("definition", expected_machine_definition) profile.setMetaDataEntry("quality_type", quality_type) - profile.setMetaDataEntry("position", "0") profile.setDirty(True) if idx == 0: - # move all per-extruder settings to the first extruder's quality_changes + # Move all per-extruder settings to the first extruder's quality_changes for qc_setting_key in global_profile.getAllKeys(): settable_per_extruder = global_stack.getProperty(qc_setting_key, "settable_per_extruder") if settable_per_extruder: @@ -281,13 +288,14 @@ class CuraContainerRegistry(ContainerRegistry): profile.addInstance(new_instance) profile.setDirty(True) - global_profile.removeInstance(qc_setting_key, postpone_emit=True) + global_profile.removeInstance(qc_setting_key, postpone_emit = True) extruder_profiles.append(profile) for profile in extruder_profiles: profile_or_list.append(profile) # Import all profiles + profile_ids_added = [] # type: List[str] for profile_index, profile in enumerate(profile_or_list): if profile_index == 0: # This is assumed to be the global profile @@ -303,16 +311,20 @@ class CuraContainerRegistry(ContainerRegistry): profile.setMetaDataEntry("position", extruder_position) profile_id = (extruder_id + "_" + name_seed).lower().replace(" ", "_") - else: #More extruders in the imported file than in the machine. - continue #Delete the additional profiles. + else: # More extruders in the imported file than in the machine. + continue # Delete the additional profiles. result = self._configureProfile(profile, profile_id, new_name, expected_machine_definition) if result is not None: - return {"status": "error", "message": catalog.i18nc( - "@info:status Don't translate the XML tags or !", - "Failed to import profile from {0}:", - file_name) + " " + result + ""} + # Remove any profiles that did got added. + for profile_id in profile_ids_added: + self.removeContainer(profile_id) + return {"status": "error", "message": catalog.i18nc( + "@info:status Don't translate the XML tag !", + "Failed to import profile from {0}:", + file_name) + " " + result} + profile_ids_added.append(profile.getId()) return {"status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile_or_list[0].getName())} # This message is throw when the profile reader doesn't find any profile in the file @@ -322,11 +334,28 @@ class CuraContainerRegistry(ContainerRegistry): return {"status": "error", "message": catalog.i18nc("@info:status", "Profile {0} has an unknown file type or is corrupted.", file_name)} @override(ContainerRegistry) - def load(self): + def load(self) -> None: super().load() self._registerSingleExtrusionMachinesExtruderStacks() self._connectUpgradedExtruderStacksToMachines() + ## Check if the metadata for a container is okay before adding it. + # + # This overrides the one from UM.Settings.ContainerRegistry because we + # also require that the setting_version is correct. + @override(ContainerRegistry) + def _isMetadataValid(self, metadata: Optional[Dict[str, Any]]) -> bool: + if metadata is None: + return False + if "setting_version" not in metadata: + return False + try: + if int(metadata["setting_version"]) != cura.CuraApplication.CuraApplication.SettingVersion: + return False + except ValueError: #Not parsable as int. + return False + return True + ## Update an imported profile to match the current machine configuration. # # \param profile The profile to configure. @@ -358,21 +387,40 @@ class CuraContainerRegistry(ContainerRegistry): global_stack = Application.getInstance().getGlobalContainerStack() if global_stack is None: return None - definition_id = getMachineDefinitionIDForQualitySearch(global_stack.definition) + definition_id = ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition profile.setDefinition(definition_id) # Check to make sure the imported profile actually makes sense in context of the current configuration. # This prevents issues where importing a "draft" profile for a machine without "draft" qualities would report as # successfully imported but then fail to show up. - quality_manager = cura.CuraApplication.CuraApplication.getInstance()._quality_manager - quality_group_dict = quality_manager.getQualityGroupsForMachineDefinition(global_stack) - if quality_type not in quality_group_dict: + quality_group_dict = ContainerTree.getInstance().getCurrentQualityGroups() + # "not_supported" profiles can be imported. + if quality_type != empty_quality_container.getMetaDataEntry("quality_type") and quality_type not in quality_group_dict: return catalog.i18nc("@info:status", "Could not find a quality type {0} for the current configuration.", quality_type) ContainerRegistry.getInstance().addContainer(profile) return None + @override(ContainerRegistry) + def saveDirtyContainers(self) -> None: + # Lock file for "more" atomically loading and saving to/from config dir. + with self.lockFile(): + # Save base files first + for instance in self.findDirtyContainers(container_type=InstanceContainer): + if instance.getMetaDataEntry("removed"): + continue + if instance.getId() == instance.getMetaData().get("base_file"): + self.saveContainer(instance) + + for instance in self.findDirtyContainers(container_type=InstanceContainer): + if instance.getMetaDataEntry("removed"): + continue + self.saveContainer(instance) + + for stack in self.findContainerStacks(): + self.saveContainer(stack) + ## Gets a list of profile writer plugins # \return List of tuples of (plugin_id, meta_data). def _getIOPlugins(self, io_type): @@ -386,32 +434,8 @@ class CuraContainerRegistry(ContainerRegistry): result.append( (plugin_id, meta_data) ) return result - ## Returns true if the current machine requires its own materials - # \return True if the current machine requires its own materials - def _machineHasOwnMaterials(self): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack: - return global_container_stack.getMetaDataEntry("has_materials", False) - return False - - ## Gets the ID of the active material - # \return the ID of the active material or the empty string - def _activeMaterialId(self): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack and global_container_stack.material: - return global_container_stack.material.getId() - return "" - - ## Returns true if the current machine requires its own quality profiles - # \return true if the current machine requires its own quality profiles - def _machineHasOwnQualities(self): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack: - return parseBool(global_container_stack.getMetaDataEntry("has_machine_quality", False)) - return False - ## Convert an "old-style" pure ContainerStack to either an Extruder or Global stack. - def _convertContainerStack(self, container): + def _convertContainerStack(self, container: ContainerStack) -> Union[ExtruderStack.ExtruderStack, GlobalStack.GlobalStack]: assert type(container) == ContainerStack container_type = container.getMetaDataEntry("type") @@ -435,14 +459,14 @@ class CuraContainerRegistry(ContainerRegistry): return new_stack - def _registerSingleExtrusionMachinesExtruderStacks(self): + def _registerSingleExtrusionMachinesExtruderStacks(self) -> None: machines = self.findContainerStacks(type = "machine", machine_extruder_trains = {"0": "fdmextruder"}) for machine in machines: extruder_stacks = self.findContainerStacks(type = "extruder_train", machine = machine.getId()) if not extruder_stacks: self.addExtruderStackForSingleExtrusionMachine(machine, "fdmextruder") - def _onContainerAdded(self, container): + def _onContainerAdded(self, container: ContainerInterface) -> None: # We don't have all the machines loaded in the beginning, so in order to add the missing extruder stack # for single extrusion machines, we subscribe to the containerAdded signal, and whenever a global stack # is added, we check to see if an extruder stack needs to be added. @@ -521,7 +545,7 @@ class CuraContainerRegistry(ContainerRegistry): user_container.setMetaDataEntry("position", extruder_stack.getMetaDataEntry("position")) if machine.userChanges: - # for the newly created extruder stack, we need to move all "per-extruder" settings to the user changes + # For the newly created extruder stack, we need to move all "per-extruder" settings to the user changes # container to the extruder stack. for user_setting_key in machine.userChanges.getAllKeys(): settable_per_extruder = machine.getProperty(user_setting_key, "settable_per_extruder") @@ -583,7 +607,7 @@ class CuraContainerRegistry(ContainerRegistry): extruder_quality_changes_container.setMetaDataEntry("position", extruder_definition.getMetaDataEntry("position")) extruder_stack.qualityChanges = self.findInstanceContainers(id = quality_changes_id)[0] else: - # if we still cannot find a quality changes container for the extruder, create a new one + # If we still cannot find a quality changes container for the extruder, create a new one container_name = machine_quality_changes.getName() container_id = self.uniqueName(extruder_stack.getId() + "_qc_" + container_name) extruder_quality_changes_container = InstanceContainer(container_id, parent = application) @@ -592,6 +616,7 @@ class CuraContainerRegistry(ContainerRegistry): extruder_quality_changes_container.setMetaDataEntry("setting_version", application.SettingVersion) extruder_quality_changes_container.setMetaDataEntry("position", extruder_definition.getMetaDataEntry("position")) extruder_quality_changes_container.setMetaDataEntry("quality_type", machine_quality_changes.getMetaDataEntry("quality_type")) + extruder_quality_changes_container.setMetaDataEntry("intent_category", "default") # Intent categories weren't a thing back then. extruder_quality_changes_container.setDefinition(machine_quality_changes.getDefinition().getId()) self.addContainer(extruder_quality_changes_container) @@ -601,7 +626,7 @@ class CuraContainerRegistry(ContainerRegistry): Logger.log("w", "Could not find quality_changes named [%s] for extruder [%s]", machine_quality_changes.getName(), extruder_stack.getId()) else: - # move all per-extruder settings to the extruder's quality changes + # Move all per-extruder settings to the extruder's quality changes for qc_setting_key in machine_quality_changes.getAllKeys(): settable_per_extruder = machine.getProperty(qc_setting_key, "settable_per_extruder") if settable_per_extruder: @@ -642,7 +667,7 @@ class CuraContainerRegistry(ContainerRegistry): if qc_name not in qc_groups: qc_groups[qc_name] = [] qc_groups[qc_name].append(qc) - # try to find from the quality changes cura directory too + # Try to find from the quality changes cura directory too quality_changes_container = self._findQualityChangesContainerInCuraFolder(machine_quality_changes.getName()) if quality_changes_container: qc_groups[qc_name].append(quality_changes_container) @@ -656,7 +681,7 @@ class CuraContainerRegistry(ContainerRegistry): else: qc_dict["global"] = qc if qc_dict["global"] is not None and len(qc_dict["extruders"]) == 1: - # move per-extruder settings + # Move per-extruder settings for qc_setting_key in qc_dict["global"].getAllKeys(): settable_per_extruder = machine.getProperty(qc_setting_key, "settable_per_extruder") if settable_per_extruder: @@ -676,7 +701,7 @@ class CuraContainerRegistry(ContainerRegistry): return extruder_stack - def _findQualityChangesContainerInCuraFolder(self, name): + def _findQualityChangesContainerInCuraFolder(self, name: str) -> Optional[InstanceContainer]: quality_changes_dir = Resources.getPath(cura.CuraApplication.CuraApplication.ResourceTypes.QualityChangesInstanceContainer) instance_container = None @@ -689,18 +714,18 @@ class CuraContainerRegistry(ContainerRegistry): parser = configparser.ConfigParser(interpolation = None) try: parser.read([file_path]) - except: - # skip, it is not a valid stack file + except Exception: + # Skip, it is not a valid stack file continue if not parser.has_option("general", "name"): continue if parser["general"]["name"] == name: - # load the container + # Load the container container_id = os.path.basename(file_path).replace(".inst.cfg", "") if self.findInstanceContainers(id = container_id): - # this container is already in the registry, skip it + # This container is already in the registry, skip it continue instance_container = InstanceContainer(container_id) @@ -721,7 +746,7 @@ class CuraContainerRegistry(ContainerRegistry): # due to problems with loading order, some stacks may not have the proper next stack # set after upgrading, because the proper global stack was not yet loaded. This method # makes sure those extruders also get the right stack set. - def _connectUpgradedExtruderStacksToMachines(self): + def _connectUpgradedExtruderStacksToMachines(self) -> None: extruder_stacks = self.findContainers(container_type = ExtruderStack.ExtruderStack) for extruder_stack in extruder_stacks: if extruder_stack.getNextStack(): @@ -734,8 +759,8 @@ class CuraContainerRegistry(ContainerRegistry): else: Logger.log("w", "Could not find machine {machine} for extruder {extruder}", machine = extruder_stack.getMetaDataEntry("machine"), extruder = extruder_stack.getId()) - #Override just for the type. + # Override just for the type. @classmethod @override(ContainerRegistry) def getInstance(cls, *args, **kwargs) -> "CuraContainerRegistry": - return cast(CuraContainerRegistry, super().getInstance(*args, **kwargs)) \ No newline at end of file + return cast(CuraContainerRegistry, super().getInstance(*args, **kwargs)) diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index 042b065226..1455e140a8 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -87,6 +87,19 @@ class CuraContainerStack(ContainerStack): def qualityChanges(self) -> InstanceContainer: return cast(InstanceContainer, self._containers[_ContainerIndexes.QualityChanges]) + ## Set the intent container. + # + # \param new_intent The new intent container. It is expected to have a "type" metadata entry with the value "intent". + def setIntent(self, new_intent: InstanceContainer, postpone_emit: bool = False) -> None: + self.replaceContainer(_ContainerIndexes.Intent, new_intent, postpone_emit = postpone_emit) + + ## Get the quality container. + # + # \return The intent container. Should always be a valid container, but can be equal to the empty InstanceContainer. + @pyqtProperty(InstanceContainer, fset = setIntent, notify = pyqtContainersChanged) + def intent(self) -> InstanceContainer: + return cast(InstanceContainer, self._containers[_ContainerIndexes.Intent]) + ## Set the quality container. # # \param new_quality The new quality container. It is expected to have a "type" metadata entry with the value "quality". @@ -330,16 +343,18 @@ class CuraContainerStack(ContainerStack): class _ContainerIndexes: UserChanges = 0 QualityChanges = 1 - Quality = 2 - Material = 3 - Variant = 4 - DefinitionChanges = 5 - Definition = 6 + Intent = 2 + Quality = 3 + Material = 4 + Variant = 5 + DefinitionChanges = 6 + Definition = 7 # Simple hash map to map from index to "type" metadata entry IndexTypeMap = { UserChanges: "user", QualityChanges: "quality_changes", + Intent: "intent", Quality: "quality", Material: "material", Variant: "variant", diff --git a/cura/Settings/CuraFormulaFunctions.py b/cura/Settings/CuraFormulaFunctions.py index 9ef80bd3d4..b35069da6f 100644 --- a/cura/Settings/CuraFormulaFunctions.py +++ b/cura/Settings/CuraFormulaFunctions.py @@ -40,9 +40,16 @@ class CuraFormulaFunctions: global_stack = machine_manager.activeMachine try: - extruder_stack = global_stack.extruders[str(extruder_position)] - except KeyError: - Logger.log("w", "Value for %s of extruder %s was requested, but that extruder is not available" % (property_key, extruder_position)) + extruder_stack = global_stack.extruderList[int(extruder_position)] + except IndexError: + if extruder_position != 0: + Logger.log("w", "Value for %s of extruder %s was requested, but that extruder is not available. Returning the result form extruder 0 instead" % (property_key, extruder_position)) + # This fixes a very specific fringe case; If a profile was created for a custom printer and one of the + # extruder settings has been set to non zero and the profile is loaded for a machine that has only a single extruder + # it would cause all kinds of issues (and eventually a crash). + # See https://github.com/Ultimaker/Cura/issues/5535 + return self.getValueInExtruder(0, property_key, context) + Logger.log("w", "Value for %s of extruder %s was requested, but that extruder is not available. " % (property_key, extruder_position)) return None value = extruder_stack.getRawProperty(property_key, "value", context = context) @@ -97,11 +104,14 @@ class CuraFormulaFunctions: machine_manager = self._application.getMachineManager() global_stack = machine_manager.activeMachine - extruder_stack = global_stack.extruders[str(extruder_position)] + try: + extruder_stack = global_stack.extruderList[extruder_position] + except IndexError: + Logger.log("w", "Unable to find extruder on in index %s", extruder_position) + else: + context = self.createContextForDefaultValueEvaluation(extruder_stack) - context = self.createContextForDefaultValueEvaluation(extruder_stack) - - return self.getValueInExtruder(extruder_position, property_key, context = context) + return self.getValueInExtruder(extruder_position, property_key, context = context) # Gets all default setting values as a list from all extruders of the currently active machine. # The default values are those excluding the values in the user_changes container. diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index c98c63f529..61a04e1be6 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Optional @@ -8,7 +8,8 @@ from UM.Logger import Logger from UM.Settings.Interfaces import DefinitionContainerInterface from UM.Settings.InstanceContainer import InstanceContainer -from cura.Machines.VariantType import VariantType +from cura.Machines.ContainerTree import ContainerTree +from cura.Machines.MachineNode import MachineNode from .GlobalStack import GlobalStack from .ExtruderStack import ExtruderStack @@ -26,9 +27,8 @@ class CuraStackBuilder: def createMachine(cls, name: str, definition_id: str) -> Optional[GlobalStack]: from cura.CuraApplication import CuraApplication application = CuraApplication.getInstance() - variant_manager = application.getVariantManager() - quality_manager = application.getQualityManager() registry = application.getContainerRegistry() + container_tree = ContainerTree.getInstance() definitions = registry.findDefinitionContainers(id = definition_id) if not definitions: @@ -37,14 +37,7 @@ class CuraStackBuilder: return None machine_definition = definitions[0] - - # get variant container for the global stack - global_variant_container = application.empty_variant_container - global_variant_node = variant_manager.getDefaultVariantNode(machine_definition, VariantType.BUILD_PLATE) - if global_variant_node: - global_variant_container = global_variant_node.getContainer() - if not global_variant_container: - global_variant_container = application.empty_variant_container + machine_node = container_tree.machines[machine_definition.getId()] generated_name = registry.createUniqueName("machine", "", name, machine_definition.getName()) # Make sure the new name does not collide with any definition or (quality) profile @@ -56,9 +49,9 @@ class CuraStackBuilder: new_global_stack = cls.createGlobalStack( new_stack_id = generated_name, definition = machine_definition, - variant_container = global_variant_container, + variant_container = application.empty_variant_container, material_container = application.empty_material_container, - quality_container = application.empty_quality_container, + quality_container = machine_node.preferredGlobalQuality().container, ) new_global_stack.setName(generated_name) @@ -67,33 +60,9 @@ class CuraStackBuilder: for position in extruder_dict: cls.createExtruderStackWithDefaultSetup(new_global_stack, position) - for new_extruder in new_global_stack.extruders.values(): #Only register the extruders if we're sure that all of them are correct. + for new_extruder in new_global_stack.extruders.values(): # Only register the extruders if we're sure that all of them are correct. registry.addContainer(new_extruder) - preferred_quality_type = machine_definition.getMetaDataEntry("preferred_quality_type") - quality_group_dict = quality_manager.getQualityGroups(new_global_stack) - if not quality_group_dict: - # There is no available quality group, set all quality containers to empty. - new_global_stack.quality = application.empty_quality_container - for extruder_stack in new_global_stack.extruders.values(): - extruder_stack.quality = application.empty_quality_container - else: - # Set the quality containers to the preferred quality type if available, otherwise use the first quality - # type that's available. - if preferred_quality_type not in quality_group_dict: - Logger.log("w", "The preferred quality {quality_type} doesn't exist for this set-up. Choosing a random one.".format(quality_type = preferred_quality_type)) - preferred_quality_type = next(iter(quality_group_dict)) - quality_group = quality_group_dict.get(preferred_quality_type) - - new_global_stack.quality = quality_group.node_for_global.getContainer() - if not new_global_stack.quality: - new_global_stack.quality = application.empty_quality_container - for position, extruder_stack in new_global_stack.extruders.items(): - if position in quality_group.nodes_for_extruders and quality_group.nodes_for_extruders[position].getContainer(): - extruder_stack.quality = quality_group.nodes_for_extruders[position].getContainer() - else: - extruder_stack.quality = application.empty_quality_container - # Register the global stack after the extruder stacks are created. This prevents the registry from adding another # extruder stack because the global stack didn't have one yet (which is enforced since Cura 3.1). registry.addContainer(new_global_stack) @@ -108,31 +77,32 @@ class CuraStackBuilder: def createExtruderStackWithDefaultSetup(cls, global_stack: "GlobalStack", extruder_position: int) -> None: from cura.CuraApplication import CuraApplication application = CuraApplication.getInstance() - variant_manager = application.getVariantManager() - material_manager = application.getMaterialManager() registry = application.getContainerRegistry() - # get variant container for extruders - extruder_variant_container = application.empty_variant_container - extruder_variant_node = variant_manager.getDefaultVariantNode(global_stack.definition, VariantType.NOZZLE, - global_stack = global_stack) - extruder_variant_name = None - if extruder_variant_node: - extruder_variant_container = extruder_variant_node.getContainer() - if not extruder_variant_container: - extruder_variant_container = application.empty_variant_container - extruder_variant_name = extruder_variant_container.getName() - + # Get the extruder definition. extruder_definition_dict = global_stack.getMetaDataEntry("machine_extruder_trains") extruder_definition_id = extruder_definition_dict[str(extruder_position)] - extruder_definition = registry.findDefinitionContainers(id = extruder_definition_id)[0] + try: + extruder_definition = registry.findDefinitionContainers(id = extruder_definition_id)[0] + except IndexError: + # It still needs to break, but we want to know what extruder ID made it break. + msg = "Unable to find extruder definition with the id [%s]" % extruder_definition_id + Logger.logException("e", msg) + raise IndexError(msg) - # get material container for extruders - material_container = application.empty_material_container - material_node = material_manager.getDefaultMaterial(global_stack, str(extruder_position), extruder_variant_name, - extruder_definition = extruder_definition) - if material_node and material_node.getContainer(): - material_container = material_node.getContainer() + # Find out what filament diameter we need. + approximate_diameter = round(extruder_definition.getProperty("material_diameter", "value")) # Can't be modified by definition changes since we are just initialising the stack here. + + # Find the preferred containers. + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] + extruder_variant_node = machine_node.variants.get(machine_node.preferred_variant_name) + if not extruder_variant_node: + Logger.log("w", "Could not find preferred nozzle {nozzle_name}. Falling back to {fallback}.".format(nozzle_name = machine_node.preferred_variant_name, fallback = next(iter(machine_node.variants)))) + extruder_variant_node = next(iter(machine_node.variants.values())) + extruder_variant_container = extruder_variant_node.container + material_node = extruder_variant_node.preferredMaterial(approximate_diameter) + material_container = material_node.container + quality_node = material_node.preferredQuality() new_extruder_id = registry.uniqueName(extruder_definition_id) new_extruder = cls.createExtruderStack( @@ -142,7 +112,7 @@ class CuraStackBuilder: position = extruder_position, variant_container = extruder_variant_container, material_container = material_container, - quality_container = application.empty_quality_container + quality_container = quality_node.container ) new_extruder.setNextStack(global_stack) @@ -184,6 +154,7 @@ class CuraStackBuilder: stack.variant = variant_container stack.material = material_container stack.quality = quality_container + stack.intent = application.empty_intent_container stack.qualityChanges = application.empty_quality_changes_container stack.userChanges = user_container @@ -232,6 +203,7 @@ class CuraStackBuilder: stack.variant = variant_container stack.material = material_container stack.quality = quality_container + stack.intent = application.empty_intent_container stack.qualityChanges = application.empty_quality_changes_container stack.userChanges = user_container diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index f8dccb4ba6..62bf396878 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant # For communicating data and events to Qt. @@ -12,7 +12,6 @@ from UM.Scene.SceneNode import SceneNode from UM.Scene.Selection import Selection from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Settings.ContainerRegistry import ContainerRegistry # Finding containers by ID. -from UM.Settings.ContainerStack import ContainerStack from typing import Any, cast, Dict, List, Optional, TYPE_CHECKING, Union @@ -42,8 +41,6 @@ class ExtruderManager(QObject): # TODO; I have no idea why this is a union of ID's and extruder stacks. This needs to be fixed at some point. self._selected_object_extruders = [] # type: List[Union[str, "ExtruderStack"]] - self._addCurrentMachineExtruders() - Selection.selectionChanged.connect(self.resetSelectedObjectExtruders) ## Signal to notify other components when the list of extruders for a machine definition changes. @@ -74,7 +71,7 @@ class ExtruderManager(QObject): global_container_stack = self._application.getGlobalContainerStack() if global_container_stack: - extruder_stack_ids = {position: extruder.id for position, extruder in global_container_stack.extruders.items()} + extruder_stack_ids = {extruder.getMetaDataEntry("position", ""): extruder.id for extruder in global_container_stack.extruderList} return extruder_stack_ids @@ -91,16 +88,6 @@ class ExtruderManager(QObject): def activeExtruderIndex(self) -> int: return self._active_extruder_index - ## Gets the extruder name of an extruder of the currently active machine. - # - # \param index The index of the extruder whose name to get. - @pyqtSlot(int, result = str) - def getExtruderName(self, index: int) -> str: - try: - return self.getActiveExtruderStacks()[index].getName() - except IndexError: - return "" - ## Emitted whenever the selectedObjectExtruders property changes. selectedObjectExtrudersChanged = pyqtSignal() @@ -114,7 +101,7 @@ class ExtruderManager(QObject): selected_nodes = [] # type: List["SceneNode"] for node in Selection.getAllSelectedObjects(): if node.callDecoration("isGroup"): - for grouped_node in BreadthFirstIterator(node): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for grouped_node in BreadthFirstIterator(node): if grouped_node.callDecoration("isGroup"): continue @@ -131,7 +118,7 @@ class ExtruderManager(QObject): elif current_extruder_trains: object_extruders.add(current_extruder_trains[0].getId()) - self._selected_object_extruders = list(object_extruders) # type: List[Union[str, "ExtruderStack"]] + self._selected_object_extruders = list(object_extruders) return self._selected_object_extruders @@ -140,7 +127,7 @@ class ExtruderManager(QObject): # This will trigger a recalculation of the extruders used for the # selection. def resetSelectedObjectExtruders(self) -> None: - self._selected_object_extruders = [] # type: List[Union[str, "ExtruderStack"]] + self._selected_object_extruders = [] self.selectedObjectExtrudersChanged.emit() @pyqtSlot(result = QObject) @@ -180,7 +167,7 @@ class ExtruderManager(QObject): # \param setting_key \type{str} The setting to get the property of. # \param property \type{str} The property to get. # \return \type{List} the list of results - def getAllExtruderSettings(self, setting_key: str, prop: str) -> List: + def getAllExtruderSettings(self, setting_key: str, prop: str) -> List[Any]: result = [] for extruder_stack in self.getActiveExtruderStacks(): @@ -205,7 +192,7 @@ class ExtruderManager(QObject): # list. # # \return A list of extruder stacks. - def getUsedExtruderStacks(self) -> List["ContainerStack"]: + def getUsedExtruderStacks(self) -> List["ExtruderStack"]: global_stack = self._application.getGlobalContainerStack() container_registry = ContainerRegistry.getInstance() @@ -224,7 +211,16 @@ class ExtruderManager(QObject): # Get the extruders of all printable meshes in the scene meshes = [node for node in DepthFirstIterator(scene_root) if isinstance(node, SceneNode) and node.isSelectable()] #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + + # Exclude anti-overhang meshes + mesh_list = [] for mesh in meshes: + stack = mesh.callDecoration("getStack") + if stack is not None and (stack.getProperty("anti_overhang_mesh", "value") or stack.getProperty("support_mesh", "value")): + continue + mesh_list.append(mesh) + + for mesh in mesh_list: extruder_stack_id = mesh.callDecoration("getActiveExtruder") if not extruder_stack_id: # No per-object settings for this node @@ -270,7 +266,8 @@ class ExtruderManager(QObject): extruder_str_nr = str(global_stack.getProperty("adhesion_extruder_nr", "value")) if extruder_str_nr == "-1": extruder_str_nr = self._application.getMachineManager().defaultExtruderPosition - used_extruder_stack_ids.add(self.extruderIds[extruder_str_nr]) + if extruder_str_nr in self.extruderIds: + used_extruder_stack_ids.add(self.extruderIds[extruder_str_nr]) try: return [container_registry.findContainerStacks(id = stack_id)[0] for stack_id in used_extruder_stack_ids] @@ -311,48 +308,47 @@ class ExtruderManager(QObject): self.resetSelectedObjectExtruders() - ## Adds the extruders of the currently active machine. - def _addCurrentMachineExtruders(self) -> None: - global_stack = self._application.getGlobalContainerStack() + ## Adds the extruders to the selected machine. + def addMachineExtruders(self, global_stack: GlobalStack) -> None: extruders_changed = False + container_registry = ContainerRegistry.getInstance() + global_stack_id = global_stack.getId() - if global_stack: - container_registry = ContainerRegistry.getInstance() - global_stack_id = global_stack.getId() + # Gets the extruder trains that we just created as well as any that still existed. + extruder_trains = container_registry.findContainerStacks(type = "extruder_train", machine = global_stack_id) - # Gets the extruder trains that we just created as well as any that still existed. - extruder_trains = container_registry.findContainerStacks(type = "extruder_train", machine = global_stack_id) + # Make sure the extruder trains for the new machine can be placed in the set of sets + if global_stack_id not in self._extruder_trains: + self._extruder_trains[global_stack_id] = {} + extruders_changed = True - # Make sure the extruder trains for the new machine can be placed in the set of sets - if global_stack_id not in self._extruder_trains: - self._extruder_trains[global_stack_id] = {} - extruders_changed = True + # Register the extruder trains by position + for extruder_train in extruder_trains: + extruder_position = extruder_train.getMetaDataEntry("position") + self._extruder_trains[global_stack_id][extruder_position] = extruder_train - # Register the extruder trains by position - for extruder_train in extruder_trains: - extruder_position = extruder_train.getMetaDataEntry("position") - self._extruder_trains[global_stack_id][extruder_position] = extruder_train + # regardless of what the next stack is, we have to set it again, because of signal routing. ??? + extruder_train.setParent(global_stack) + extruder_train.setNextStack(global_stack) + extruders_changed = True - # regardless of what the next stack is, we have to set it again, because of signal routing. ??? - extruder_train.setParent(global_stack) - extruder_train.setNextStack(global_stack) - extruders_changed = True - - self._fixSingleExtrusionMachineExtruderDefinition(global_stack) - if extruders_changed: - self.extrudersChanged.emit(global_stack_id) - self.setActiveExtruderIndex(0) - self.activeExtruderChanged.emit() + self.fixSingleExtrusionMachineExtruderDefinition(global_stack) + if extruders_changed: + self.extrudersChanged.emit(global_stack_id) # After 3.4, all single-extrusion machines have their own extruder definition files instead of reusing # "fdmextruder". We need to check a machine here so its extruder definition is correct according to this. - def _fixSingleExtrusionMachineExtruderDefinition(self, global_stack: "GlobalStack") -> None: + def fixSingleExtrusionMachineExtruderDefinition(self, global_stack: "GlobalStack") -> None: container_registry = ContainerRegistry.getInstance() expected_extruder_definition_0_id = global_stack.getMetaDataEntry("machine_extruder_trains")["0"] - extruder_stack_0 = global_stack.extruders.get("0") + try: + extruder_stack_0 = global_stack.extruderList[0] + except IndexError: + extruder_stack_0 = None + # At this point, extruder stacks for this machine may not have been loaded yet. In this case, need to look in # the container registry as well. - if not global_stack.extruders: + if not global_stack.extruderList: extruder_trains = container_registry.findContainerStacks(type = "extruder_train", machine = global_stack.getId()) if extruder_trains: @@ -370,7 +366,13 @@ class ExtruderManager(QObject): elif extruder_stack_0.definition.getId() != expected_extruder_definition_0_id: Logger.log("e", "Single extruder printer [{printer}] expected extruder [{expected}], but got [{got}]. I'm making it [{expected}].".format( printer = global_stack.getId(), expected = expected_extruder_definition_0_id, got = extruder_stack_0.definition.getId())) - extruder_definition = container_registry.findDefinitionContainers(id = expected_extruder_definition_0_id)[0] + try: + extruder_definition = container_registry.findDefinitionContainers(id = expected_extruder_definition_0_id)[0] + except IndexError: + # It still needs to break, but we want to know what extruder ID made it break. + msg = "Unable to find extruder definition with the id [%s]" % expected_extruder_definition_0_id + Logger.logException("e", msg) + raise IndexError(msg) extruder_stack_0.definition = extruder_definition ## Get all extruder values for a certain setting. diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index edb0e7d41f..5d4b3e38b1 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -51,6 +51,10 @@ class ExtruderStack(CuraContainerStack): def getNextStack(self) -> Optional["GlobalStack"]: return super().getNextStack() + @pyqtProperty(int, constant = True) + def position(self) -> int: + return int(self.getMetaDataEntry("position")) + def setEnabled(self, enabled: bool) -> None: if self.getMetaDataEntry("enabled", True) == enabled: # No change. return # Don't emit a signal then. @@ -135,12 +139,15 @@ class ExtruderStack(CuraContainerStack): if limit_to_extruder == -1: limit_to_extruder = int(cura.CuraApplication.CuraApplication.getInstance().getMachineManager().defaultExtruderPosition) limit_to_extruder = str(limit_to_extruder) + if (limit_to_extruder is not None and limit_to_extruder != "-1") and self.getMetaDataEntry("position") != str(limit_to_extruder): - if str(limit_to_extruder) in self.getNextStack().extruders: - result = self.getNextStack().extruders[str(limit_to_extruder)].getProperty(key, property_name, context) + try: + result = self.getNextStack().extruderList[int(limit_to_extruder)].getProperty(key, property_name, context) if result is not None: context.popContainer() return result + except IndexError: + pass result = super().getProperty(key, property_name, context) context.popContainer() diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index 3940af7ecc..d3a8842aa3 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -1,12 +1,14 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from collections import defaultdict import threading from typing import Any, Dict, Optional, Set, TYPE_CHECKING, List +import uuid + from PyQt5.QtCore import pyqtProperty, pyqtSlot, pyqtSignal -from UM.Decorators import override +from UM.Decorators import deprecated, override from UM.MimeTypeDatabase import MimeType, MimeTypeDatabase from UM.Settings.ContainerStack import ContainerStack from UM.Settings.SettingInstance import InstanceState @@ -18,6 +20,7 @@ from UM.Platform import Platform from UM.Util import parseBool import cura.CuraApplication +from cura.PrinterOutput.PrinterOutputDevice import ConnectionType from . import Exceptions from .CuraContainerStack import CuraContainerStack @@ -34,6 +37,12 @@ class GlobalStack(CuraContainerStack): self.setMetaDataEntry("type", "machine") # For backward compatibility + # TL;DR: If Cura is looking for printers that belong to the same group, it should use "group_id". + # Each GlobalStack by default belongs to a group which is identified via "group_id". This group_id is used to + # figure out which GlobalStacks are in the printer cluster for example without knowing the implementation + # details such as the um_network_key or some other identifier that's used by the underlying device plugin. + self.setMetaDataEntry("group_id", str(uuid.uuid4())) # Assign a new GlobalStack to a unique group by default + self._extruders = {} # type: Dict[str, "ExtruderStack"] # This property is used to track which settings we are calculating the "resolve" for @@ -53,17 +62,26 @@ class GlobalStack(CuraContainerStack): # # \return The extruders registered with this stack. @pyqtProperty("QVariantMap", notify = extrudersChanged) + @deprecated("Please use extruderList instead.", "4.4") def extruders(self) -> Dict[str, "ExtruderStack"]: return self._extruders @pyqtProperty("QVariantList", notify = extrudersChanged) def extruderList(self) -> List["ExtruderStack"]: - result_tuple_list = sorted(list(self.extruders.items()), key=lambda x: int(x[0])) + result_tuple_list = sorted(list(self._extruders.items()), key=lambda x: int(x[0])) result_list = [item[1] for item in result_tuple_list] machine_extruder_count = self.getProperty("machine_extruder_count", "value") return result_list[:machine_extruder_count] + @pyqtProperty(int, constant = True) + def maxExtruderCount(self): + return len(self.getMetaDataEntry("machine_extruder_trains")) + + @pyqtProperty(bool, notify=configuredConnectionTypesChanged) + def supportsNetworkConnection(self): + return self.getMetaDataEntry("supports_network_connection", False) + @classmethod def getLoadingPriority(cls) -> int: return 2 @@ -81,7 +99,28 @@ class GlobalStack(CuraContainerStack): # Requesting it from the metadata actually gets them as strings (as that's what you get from serializing). # But we do want them returned as a list of ints (so the rest of the code can directly compare) connection_types = self.getMetaDataEntry("connection_type", "").split(",") - return [int(connection_type) for connection_type in connection_types if connection_type != ""] + result = [] + for connection_type in connection_types: + if connection_type != "": + try: + result.append(int(connection_type)) + except ValueError: + # We got invalid data, probably a None. + pass + return result + + # Returns a boolean indicating if this machine has a remote connection. A machine is considered as remotely + # connected if its connection types contain one of the following values: + # - ConnectionType.NetworkConnection + # - ConnectionType.CloudConnection + @pyqtProperty(bool, notify = configuredConnectionTypesChanged) + def hasRemoteConnection(self) -> bool: + has_remote_connection = False + + for connection_type in self.configuredConnectionTypes: + has_remote_connection |= connection_type in [ConnectionType.NetworkConnection.value, + ConnectionType.CloudConnection.value] + return has_remote_connection ## \sa configuredConnectionTypes def addConfiguredConnectionType(self, connection_type: int) -> None: @@ -94,7 +133,7 @@ class GlobalStack(CuraContainerStack): ## \sa configuredConnectionTypes def removeConfiguredConnectionType(self, connection_type: int) -> None: configured_connection_types = self.configuredConnectionTypes - if connection_type in self.configured_connection_types: + if connection_type in configured_connection_types: # Store the values as a string. configured_connection_types.remove(connection_type) self.setMetaDataEntry("connection_type", ",".join([str(c_type) for c_type in configured_connection_types])) @@ -106,6 +145,14 @@ class GlobalStack(CuraContainerStack): return "machine_stack" return configuration_type + def getIntentCategory(self) -> str: + intent_category = "default" + for extruder in self.extruderList: + category = extruder.intent.getMetaDataEntry("intent_category", "default") + if category != "default" and category != intent_category: + intent_category = category + return intent_category + def getBuildplateName(self) -> Optional[str]: name = None if self.variant.getId() != "empty_variant": @@ -200,7 +247,7 @@ class GlobalStack(CuraContainerStack): # Determine whether or not we should try to get the "resolve" property instead of the # requested property. def _shouldResolve(self, key: str, property_name: str, context: Optional[PropertyEvaluationContext] = None) -> bool: - if property_name is not "value": + if property_name != "value": # Do not try to resolve anything but the "value" property return False @@ -240,14 +287,17 @@ class GlobalStack(CuraContainerStack): def getHeadAndFansCoordinates(self): return self.getProperty("machine_head_with_fans_polygon", "value") - def getHasMaterials(self) -> bool: + @pyqtProperty(bool, constant = True) + def hasMaterials(self) -> bool: return parseBool(self.getMetaDataEntry("has_materials", False)) - def getHasVariants(self) -> bool: + @pyqtProperty(bool, constant = True) + def hasVariants(self) -> bool: return parseBool(self.getMetaDataEntry("has_variants", False)) - def getHasMachineQuality(self) -> bool: - return parseBool(self.getMetaDataEntry("has_machine_quality", False)) + @pyqtProperty(bool, constant = True) + def hasVariantBuildplates(self) -> bool: + return parseBool(self.getMetaDataEntry("has_variant_buildplates", False)) ## Get default firmware file name if one is specified in the firmware @pyqtSlot(result = str) @@ -275,6 +325,17 @@ class GlobalStack(CuraContainerStack): Logger.log("w", "Firmware file %s not found.", hex_file) return "" + def getName(self) -> str: + return self._metadata.get("group_name", self._metadata.get("name", "")) + + def setName(self, name: "str") -> None: + super().setName(name) + + nameChanged = pyqtSignal() + name = pyqtProperty(str, fget=getName, fset=setName, notify=nameChanged) + + + ## private: global_stack_mime = MimeType( name = "application/x-cura-globalstack", diff --git a/cura/Settings/IntentManager.py b/cura/Settings/IntentManager.py new file mode 100644 index 0000000000..5133b401b4 --- /dev/null +++ b/cura/Settings/IntentManager.py @@ -0,0 +1,179 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, pyqtSlot +from typing import Any, Dict, List, Optional, Set, Tuple, TYPE_CHECKING + +from UM.Logger import Logger +from UM.Settings.InstanceContainer import InstanceContainer + +import cura.CuraApplication +from cura.Machines.ContainerTree import ContainerTree +from cura.Settings.cura_empty_instance_containers import empty_intent_container + +if TYPE_CHECKING: + from UM.Settings.InstanceContainer import InstanceContainer + + +## Front-end for querying which intents are available for a certain +# configuration. +class IntentManager(QObject): + __instance = None + + ## This class is a singleton. + @classmethod + def getInstance(cls): + if not cls.__instance: + cls.__instance = IntentManager() + return cls.__instance + + intentCategoryChanged = pyqtSignal() #Triggered when we switch categories. + + ## Gets the metadata dictionaries of all intent profiles for a given + # configuration. + # + # \param definition_id ID of the printer. + # \param nozzle_name Name of the nozzle. + # \param material_base_file The base_file of the material. + # \return A list of metadata dictionaries matching the search criteria, or + # an empty list if nothing was found. + def intentMetadatas(self, definition_id: str, nozzle_name: str, material_base_file: str) -> List[Dict[str, Any]]: + intent_metadatas = [] # type: List[Dict[str, Any]] + try: + materials = ContainerTree.getInstance().machines[definition_id].variants[nozzle_name].materials + except KeyError: + Logger.log("w", "Unable to find the machine %s or the variant %s", definition_id, nozzle_name) + materials = {} + if material_base_file not in materials: + return intent_metadatas + + material_node = materials[material_base_file] + for quality_node in material_node.qualities.values(): + for intent_node in quality_node.intents.values(): + intent_metadatas.append(intent_node.getMetadata()) + return intent_metadatas + + ## Collects and returns all intent categories available for the given + # parameters. Note that the 'default' category is always available. + # + # \param definition_id ID of the printer. + # \param nozzle_name Name of the nozzle. + # \param material_id ID of the material. + # \return A set of intent category names. + def intentCategories(self, definition_id: str, nozzle_id: str, material_id: str) -> List[str]: + categories = set() + for intent in self.intentMetadatas(definition_id, nozzle_id, material_id): + categories.add(intent["intent_category"]) + categories.add("default") #The "empty" intent is not an actual profile specific to the configuration but we do want it to appear in the categories list. + return list(categories) + + ## List of intents to be displayed in the interface. + # + # For the interface this will have to be broken up into the different + # intent categories. That is up to the model there. + # + # \return A list of tuples of intent_category and quality_type. The actual + # instance may vary per extruder. + def getCurrentAvailableIntents(self) -> List[Tuple[str, str]]: + application = cura.CuraApplication.CuraApplication.getInstance() + global_stack = application.getGlobalContainerStack() + if global_stack is None: + return [("default", "normal")] + # TODO: We now do this (return a default) if the global stack is missing, but not in the code below, + # even though there should always be defaults. The problem then is what to do with the quality_types. + # Currently _also_ inconsistent with 'currentAvailableIntentCategories', which _does_ return default. + quality_groups = ContainerTree.getInstance().getCurrentQualityGroups() + available_quality_types = {quality_group.quality_type for quality_group in quality_groups.values() if quality_group.node_for_global is not None} + + final_intent_ids = set() # type: Set[str] + current_definition_id = global_stack.definition.getId() + for extruder_stack in global_stack.extruderList: + if not extruder_stack.isEnabled: + continue + nozzle_name = extruder_stack.variant.getMetaDataEntry("name") + material_id = extruder_stack.material.getMetaDataEntry("base_file") + final_intent_ids |= {metadata["id"] for metadata in self.intentMetadatas(current_definition_id, nozzle_name, material_id) if metadata.get("quality_type") in available_quality_types} + + result = set() # type: Set[Tuple[str, str]] + for intent_id in final_intent_ids: + intent_metadata = application.getContainerRegistry().findContainersMetadata(id = intent_id)[0] + result.add((intent_metadata["intent_category"], intent_metadata["quality_type"])) + return list(result) + + ## List of intent categories available in either of the extruders. + # + # This is purposefully inconsistent with the way that the quality types + # are listed. The quality types will show all quality types available in + # the printer using any configuration. This will only list the intent + # categories that are available using the current configuration (but the + # union over the extruders). + # \return List of all categories in the current configurations of all + # extruders. + def currentAvailableIntentCategories(self) -> List[str]: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return ["default"] + current_definition_id = global_stack.definition.getId() + final_intent_categories = set() # type: Set[str] + for extruder_stack in global_stack.extruderList: + if not extruder_stack.isEnabled: + continue + nozzle_name = extruder_stack.variant.getMetaDataEntry("name") + material_id = extruder_stack.material.getMetaDataEntry("base_file") + final_intent_categories.update(self.intentCategories(current_definition_id, nozzle_name, material_id)) + return list(final_intent_categories) + + ## The intent that gets selected by default when no intent is available for + # the configuration, an extruder can't match the intent that the user + # selects, or just when creating a new printer. + def getDefaultIntent(self) -> "InstanceContainer": + return empty_intent_container + + @pyqtProperty(str, notify = intentCategoryChanged) + def currentIntentCategory(self) -> str: + application = cura.CuraApplication.CuraApplication.getInstance() + active_extruder_stack = application.getMachineManager().activeStack + if active_extruder_stack is None: + return "" + return active_extruder_stack.intent.getMetaDataEntry("intent_category", "") + + ## Apply intent on the stacks. + @pyqtSlot(str, str) + def selectIntent(self, intent_category: str, quality_type: str) -> None: + Logger.log("i", "Attempting to set intent_category to [%s] and quality type to [%s]", intent_category, quality_type) + old_intent_category = self.currentIntentCategory + application = cura.CuraApplication.CuraApplication.getInstance() + global_stack = application.getGlobalContainerStack() + if global_stack is None: + return + current_definition_id = global_stack.definition.getId() + machine_node = ContainerTree.getInstance().machines[current_definition_id] + for extruder_stack in global_stack.extruderList: + nozzle_name = extruder_stack.variant.getMetaDataEntry("name") + material_id = extruder_stack.material.getMetaDataEntry("base_file") + + material_node = machine_node.variants[nozzle_name].materials[material_id] + + # Since we want to switch to a certain quality type, check the tree if we have one. + quality_node = None + for q_node in material_node.qualities.values(): + if q_node.quality_type == quality_type: + quality_node = q_node + + if quality_node is None: + Logger.log("w", "Unable to find quality_type [%s] for extruder [%s]", quality_type, extruder_stack.getId()) + continue + + # Check that quality node if we can find a matching intent. + intent_id = None + for id, intent_node in quality_node.intents.items(): + if intent_node.intent_category == intent_category: + intent_id = id + intent = application.getContainerRegistry().findContainers(id = intent_id) + if intent: + extruder_stack.intent = intent[0] + else: + extruder_stack.intent = self.getDefaultIntent() + application.getMachineManager().setQualityGroupByQualityType(quality_type) + if old_intent_category != intent_category: + self.intentCategoryChanged.emit() diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 03b04cc3bb..de6e270a86 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import time @@ -6,13 +6,14 @@ import re import unicodedata from typing import Any, List, Dict, TYPE_CHECKING, Optional, cast +from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, QTimer + from UM.ConfigurationErrorMessage import ConfigurationErrorMessage +from UM.Decorators import deprecated from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.Interfaces import ContainerInterface from UM.Signal import Signal - -from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, QTimer from UM.FlameProfiler import pyqtSlot from UM import Util from UM.Logger import Logger @@ -21,33 +22,34 @@ from UM.Message import Message from UM.Settings.SettingFunction import SettingFunction from UM.Signal import postponeSignals, CompressTechnique -from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch -from cura.PrinterOutputDevice import PrinterOutputDevice, ConnectionType -from cura.PrinterOutput.ConfigurationModel import ConfigurationModel -from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel -from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel +import cura.CuraApplication # Imported like this to prevent circular references. + +from cura.Machines.ContainerNode import ContainerNode +from cura.Machines.ContainerTree import ContainerTree +from cura.Machines.Models.IntentCategoryModel import IntentCategoryModel + +from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice, ConnectionType +from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel +from cura.PrinterOutput.Models.ExtruderConfigurationModel import ExtruderConfigurationModel +from cura.PrinterOutput.Models.MaterialOutputModel import MaterialOutputModel from cura.Settings.CuraContainerRegistry import CuraContainerRegistry from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.ExtruderStack import ExtruderStack from cura.Settings.cura_empty_instance_containers import (empty_definition_changes_container, empty_variant_container, empty_material_container, empty_quality_container, - empty_quality_changes_container) + empty_quality_changes_container, empty_intent_container) from .CuraStackBuilder import CuraStackBuilder from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") - +from cura.Settings.GlobalStack import GlobalStack if TYPE_CHECKING: from cura.CuraApplication import CuraApplication - from cura.Settings.CuraContainerStack import CuraContainerStack - from cura.Settings.GlobalStack import GlobalStack - from cura.Machines.MaterialManager import MaterialManager - from cura.Machines.QualityManager import QualityManager - from cura.Machines.VariantManager import VariantManager - from cura.Machines.ContainerNode import ContainerNode + from cura.Machines.MaterialNode import MaterialNode from cura.Machines.QualityChangesGroup import QualityChangesGroup from cura.Machines.QualityGroup import QualityGroup + from cura.Machines.VariantNode import VariantNode class MachineManager(QObject): @@ -58,8 +60,6 @@ class MachineManager(QObject): self._global_container_stack = None # type: Optional[GlobalStack] self._current_root_material_id = {} # type: Dict[str, str] - self._current_quality_group = None # type: Optional[QualityGroup] - self._current_quality_changes_group = None # type: Optional[QualityChangesGroup] self._default_extruder_position = "0" # to be updated when extruders are switched on and off @@ -95,7 +95,6 @@ class MachineManager(QObject): extruder_manager.activeExtruderChanged.connect(self.activeQualityChanged) self.globalContainerChanged.connect(self.activeStackChanged) - self.globalValueChanged.connect(self.activeStackValueChanged) ExtruderManager.getInstance().activeExtruderChanged.connect(self.activeStackChanged) self.activeStackChanged.connect(self.activeStackValueChanged) @@ -106,7 +105,7 @@ class MachineManager(QObject): # There might already be some output devices by the time the signal is connected self._onOutputDevicesChanged() - self._current_printer_configuration = ConfigurationModel() # Indicates the current configuration setup in this printer + self._current_printer_configuration = PrinterConfigurationModel() # Indicates the current configuration setup in this printer self.activeMaterialChanged.connect(self._onCurrentConfigurationChanged) self.activeVariantChanged.connect(self._onCurrentConfigurationChanged) # Force to compute the current configuration @@ -118,22 +117,20 @@ class MachineManager(QObject): if containers: containers[0].nameChanged.connect(self._onMaterialNameChanged) - self._material_manager = self._application.getMaterialManager() # type: MaterialManager - self._variant_manager = self._application.getVariantManager() # type: VariantManager - self._quality_manager = self._application.getQualityManager() # type: QualityManager - - # When the materials lookup table gets updated, it can mean that a material has its name changed, which should - # be reflected on the GUI. This signal emission makes sure that it happens. - self._material_manager.materialsUpdated.connect(self.rootMaterialChanged) - # When the materials get updated, it can be that an activated material's diameter gets changed. In that case, - # a material update should be triggered to make sure that the machine still has compatible materials activated. - self._material_manager.materialsUpdated.connect(self._updateUponMaterialMetadataChange) self.rootMaterialChanged.connect(self._onRootMaterialChanged) # Emit the printerConnectedStatusChanged when either globalContainerChanged or outputDevicesChanged are emitted self.globalContainerChanged.connect(self.printerConnectedStatusChanged) self.outputDevicesChanged.connect(self.printerConnectedStatusChanged) + # For updating active quality display name + self.activeQualityChanged.connect(self.activeQualityDisplayNameChanged) + self.activeIntentChanged.connect(self.activeQualityDisplayNameChanged) + self.activeQualityGroupChanged.connect(self.activeQualityDisplayNameChanged) + self.activeQualityChangesGroupChanged.connect(self.activeQualityDisplayNameChanged) + + activeQualityDisplayNameChanged = pyqtSignal() + activeQualityGroupChanged = pyqtSignal() activeQualityChangesGroupChanged = pyqtSignal() @@ -141,10 +138,10 @@ class MachineManager(QObject): activeMaterialChanged = pyqtSignal() activeVariantChanged = pyqtSignal() activeQualityChanged = pyqtSignal() - activeStackChanged = pyqtSignal() # Emitted whenever the active stack is changed (ie: when changing between extruders, changing a profile, but not when changing a value) - extruderChanged = pyqtSignal() + activeIntentChanged = pyqtSignal() + activeStackChanged = pyqtSignal() # Emitted whenever the active extruder stack is changed (ie: when switching the active extruder tab or changing between printers) + extruderChanged = pyqtSignal() # Emitted whenever an extruder is activated or deactivated or the default extruder changes. - globalValueChanged = pyqtSignal() # Emitted whenever a value inside global container is changed. activeStackValueChanged = pyqtSignal() # Emitted whenever a value inside the active stack is changed. activeStackValidationChanged = pyqtSignal() # Emitted whenever a validation inside active container is changed stacksValidationChanged = pyqtSignal() # Emitted whenever a validation is changed @@ -171,10 +168,9 @@ class MachineManager(QObject): self._printer_output_devices.append(printer_output_device) self.outputDevicesChanged.emit() - self.printerConnectedStatusChanged.emit() @pyqtProperty(QObject, notify = currentConfigurationChanged) - def currentConfiguration(self) -> ConfigurationModel: + def currentConfiguration(self) -> PrinterConfigurationModel: return self._current_printer_configuration def _onCurrentConfigurationChanged(self) -> None: @@ -183,9 +179,11 @@ class MachineManager(QObject): # Create the configuration model with the current data in Cura self._current_printer_configuration.printerType = self._global_container_stack.definition.getName() - self._current_printer_configuration.extruderConfigurations = [] - for extruder in self._global_container_stack.extruders.values(): - extruder_configuration = ExtruderConfigurationModel() + + if len(self._current_printer_configuration.extruderConfigurations) != len(self._global_container_stack.extruderList): + self._current_printer_configuration.extruderConfigurations = [ExtruderConfigurationModel() for extruder in self._global_container_stack.extruderList] + + for extruder, extruder_configuration in zip(self._global_container_stack.extruderList, self._current_printer_configuration.extruderConfigurations): # For compare just the GUID is needed at this moment mat_type = extruder.material.getMetaDataEntry("material") if extruder.material != empty_material_container else None mat_guid = extruder.material.getMetaDataEntry("GUID") if extruder.material != empty_material_container else None @@ -197,15 +195,15 @@ class MachineManager(QObject): extruder_configuration.position = int(extruder.getMetaDataEntry("position")) extruder_configuration.material = material_model extruder_configuration.hotendID = extruder.variant.getName() if extruder.variant != empty_variant_container else None - self._current_printer_configuration.extruderConfigurations.append(extruder_configuration) # An empty build plate configuration from the network printer is presented as an empty string, so use "" for an # empty build plate. - self._current_printer_configuration.buildplateConfiguration = self._global_container_stack.getProperty("machine_buildplate_type", "value") if self._global_container_stack.variant != empty_variant_container else "" + self._current_printer_configuration.buildplateConfiguration = self._global_container_stack.getProperty("machine_buildplate_type", "value")\ + if self._global_container_stack.variant != empty_variant_container else self._global_container_stack.getProperty("machine_buildplate_type", "default_value") self.currentConfigurationChanged.emit() @pyqtSlot(QObject, result = bool) - def matchesConfiguration(self, configuration: ConfigurationModel) -> bool: + def matchesConfiguration(self, configuration: PrinterConfigurationModel) -> bool: return self._current_printer_configuration == configuration @pyqtProperty("QVariantList", notify = outputDevicesChanged) @@ -219,12 +217,9 @@ class MachineManager(QObject): return 0 return len(general_definition_containers[0].getAllKeys()) + ## Triggered when the global container stack is changed in CuraApplication. def _onGlobalContainerChanged(self) -> None: if self._global_container_stack: - try: - self._global_container_stack.nameChanged.disconnect(self._onMachineNameChanged) - except TypeError: # pyQtSignal gives a TypeError when disconnecting from something that was already disconnected. - pass try: self._global_container_stack.containersChanged.disconnect(self._onContainersChanged) except TypeError: @@ -249,7 +244,6 @@ class MachineManager(QObject): if self._global_container_stack: self._application.getPreferences().setValue("cura/active_machine", self._global_container_stack.getId()) - self._global_container_stack.nameChanged.connect(self._onMachineNameChanged) self._global_container_stack.containersChanged.connect(self._onContainersChanged) self._global_container_stack.propertyChanged.connect(self._onPropertyChanged) @@ -269,23 +263,19 @@ class MachineManager(QObject): extruder_stack.propertyChanged.connect(self._onPropertyChanged) extruder_stack.containersChanged.connect(self._onContainersChanged) + self._onRootMaterialChanged() + self.activeQualityGroupChanged.emit() def _onActiveExtruderStackChanged(self) -> None: self.blurSettings.emit() # Ensure no-one has focus. - old_active_container_stack = self._active_container_stack - self._active_container_stack = ExtruderManager.getInstance().getActiveExtruderStack() - if old_active_container_stack != self._active_container_stack: - # Many methods and properties related to the active quality actually depend - # on _active_container_stack. If it changes, then the properties change. - self.activeQualityChanged.emit() - def __emitChangedSignals(self) -> None: self.activeQualityChanged.emit() self.activeVariantChanged.emit() self.activeMaterialChanged.emit() + self.activeIntentChanged.emit() self.rootMaterialChanged.emit() self.numberExtrudersEnabledChanged.emit() @@ -298,83 +288,39 @@ class MachineManager(QObject): # Notify UI items, such as the "changed" star in profile pull down menu. self.activeStackValueChanged.emit() - ## Given a global_stack, make sure that it's all valid by searching for this quality group and applying it again - def _initMachineState(self, global_stack: "CuraContainerStack") -> None: - material_dict = {} - for position, extruder in global_stack.extruders.items(): - material_dict[position] = extruder.material.getMetaDataEntry("base_file") - self._current_root_material_id = material_dict - - # Update materials to make sure that the diameters match with the machine's - for position in global_stack.extruders: - self.updateMaterialWithVariant(position) - - global_quality = global_stack.quality - quality_type = global_quality.getMetaDataEntry("quality_type") - global_quality_changes = global_stack.qualityChanges - global_quality_changes_name = global_quality_changes.getName() - - # Try to set the same quality/quality_changes as the machine specified. - # If the quality/quality_changes is not available, switch to the default or the first quality that's available. - same_quality_found = False - quality_groups = self._application.getQualityManager().getQualityGroups(global_stack) - - if global_quality_changes.getId() != "empty_quality_changes": - quality_changes_groups = self._application.getQualityManager().getQualityChangesGroups(global_stack) - new_quality_changes_group = quality_changes_groups.get(global_quality_changes_name) - if new_quality_changes_group is not None: - self._setQualityChangesGroup(new_quality_changes_group) - same_quality_found = True - Logger.log("i", "Machine '%s' quality changes set to '%s'", - global_stack.getName(), new_quality_changes_group.name) - else: - new_quality_group = quality_groups.get(quality_type) - if new_quality_group is not None: - self._setQualityGroup(new_quality_group, empty_quality_changes = True) - same_quality_found = True - Logger.log("i", "Machine '%s' quality set to '%s'", - global_stack.getName(), new_quality_group.quality_type) - - # Could not find the specified quality/quality_changes, switch to the preferred quality if available, - # otherwise the first quality that's available, otherwise empty (not supported). - if not same_quality_found: - Logger.log("i", "Machine '%s' could not find quality_type '%s' and quality_changes '%s'. " - "Available quality types are [%s]. Switching to default quality.", - global_stack.getName(), quality_type, global_quality_changes_name, - ", ".join(quality_groups.keys())) - preferred_quality_type = global_stack.getMetaDataEntry("preferred_quality_type") - quality_group = quality_groups.get(preferred_quality_type) - if quality_group is None: - if quality_groups: - quality_group = list(quality_groups.values())[0] - self._setQualityGroup(quality_group, empty_quality_changes = True) - @pyqtSlot(str) def setActiveMachine(self, stack_id: str) -> None: self.blurSettings.emit() # Ensure no-one has focus. container_registry = CuraContainerRegistry.getInstance() - containers = container_registry.findContainerStacks(id = stack_id) if not containers: return - global_stack = containers[0] + global_stack = cast(GlobalStack, containers[0]) # Make sure that the default machine actions for this machine have been added self._application.getMachineActionManager().addDefaultMachineActions(global_stack) - ExtruderManager.getInstance()._fixSingleExtrusionMachineExtruderDefinition(global_stack) + extruder_manager = ExtruderManager.getInstance() + extruder_manager.fixSingleExtrusionMachineExtruderDefinition(global_stack) if not global_stack.isValid(): # Mark global stack as invalid ConfigurationErrorMessage.getInstance().addFaultyContainers(global_stack.getId()) return # We're done here - ExtruderManager.getInstance().setActiveExtruderIndex(0) # Switch to first extruder + self._global_container_stack = global_stack + extruder_manager.addMachineExtruders(global_stack) self._application.setGlobalContainerStack(global_stack) - ExtruderManager.getInstance()._globalContainerStackChanged() - self._initMachineState(global_stack) - self._onGlobalContainerChanged() + + # Switch to the first enabled extruder + self.updateDefaultExtruder() + default_extruder_position = int(self.defaultExtruderPosition) + old_active_extruder_index = extruder_manager.activeExtruderIndex + extruder_manager.setActiveExtruderIndex(default_extruder_position) + if old_active_extruder_index == default_extruder_position: + # This signal might not have been emitted yet (if it didn't change) but we still want the models to update that depend on it because we changed the contents of the containers too. + extruder_manager.activeExtruderChanged.emit() self.__emitChangedSignals() @@ -389,12 +335,21 @@ class MachineManager(QObject): machines = CuraContainerRegistry.getInstance().findContainerStacks(type = "machine", **metadata_filter) for machine in machines: if machine.definition.getId() == definition_id: - return machine + return cast(GlobalStack, machine) return None + @pyqtSlot(str) @pyqtSlot(str, str) - def addMachine(self, name: str, definition_id: str) -> None: - new_stack = CuraStackBuilder.createMachine(name, definition_id) + def addMachine(self, definition_id: str, name: Optional[str] = None) -> None: + Logger.log("i", "Trying to add a machine with the definition id [%s]", definition_id) + if name is None: + definitions = CuraContainerRegistry.getInstance().findDefinitionContainers(id = definition_id) + if definitions: + name = definitions[0].getName() + else: + name = definition_id + + new_stack = CuraStackBuilder.createMachine(cast(str, name), definition_id) if new_stack: # Instead of setting the global container stack here, we set the active machine and so the signals are emitted self.setActiveMachine(new_stack.getId()) @@ -457,6 +412,7 @@ class MachineManager(QObject): # \param key \type{str} the name of the key to delete @pyqtSlot(str) def clearUserSettingAllCurrentStacks(self, key: str) -> None: + Logger.log("i", "Clearing the setting [%s] from all stacks", key) if not self._global_container_stack: return @@ -491,24 +447,6 @@ class MachineManager(QObject): def stacksHaveErrors(self) -> bool: return bool(self._stacks_have_errors) - @pyqtProperty(str, notify = globalContainerChanged) - def activeMachineDefinitionName(self) -> str: - if self._global_container_stack: - return self._global_container_stack.definition.getName() - return "" - - @pyqtProperty(str, notify = globalContainerChanged) - def activeMachineName(self) -> str: - if self._global_container_stack: - return self._global_container_stack.getMetaDataEntry("group_name", self._global_container_stack.getName()) - return "" - - @pyqtProperty(str, notify = globalContainerChanged) - def activeMachineId(self) -> str: - if self._global_container_stack: - return self._global_container_stack.getId() - return "" - @pyqtProperty(str, notify = globalContainerChanged) def activeMachineFirmwareVersion(self) -> str: if not self._printer_output_devices: @@ -525,23 +463,6 @@ class MachineManager(QObject): def printerConnected(self) -> bool: return bool(self._printer_output_devices) - @pyqtProperty(bool, notify = printerConnectedStatusChanged) - def activeMachineHasRemoteConnection(self) -> bool: - if self._global_container_stack: - has_remote_connection = False - - for connection_type in self._global_container_stack.configuredConnectionTypes: - has_remote_connection |= connection_type in [ConnectionType.NetworkConnection.value, - ConnectionType.CloudConnection.value] - return has_remote_connection - return False - - @pyqtProperty("QVariantList", notify=globalContainerChanged) - def activeMachineConfiguredConnectionTypes(self): - if self._global_container_stack: - return self._global_container_stack.configuredConnectionTypes - return [] - @pyqtProperty(bool, notify = printerConnectedStatusChanged) def activeMachineIsGroup(self) -> bool: return bool(self._printer_output_devices) and len(self._printer_output_devices[0].printers) > 1 @@ -585,7 +506,7 @@ class MachineManager(QObject): def activeStack(self) -> Optional["ExtruderStack"]: return self._active_container_stack - @pyqtProperty(str, notify=activeMaterialChanged) + @pyqtProperty(str, notify = activeMaterialChanged) def activeMaterialId(self) -> str: if self._active_container_stack: material = self._active_container_stack.material @@ -593,44 +514,20 @@ class MachineManager(QObject): return material.getId() return "" - ## Gets a dict with the active materials ids set in all extruder stacks and the global stack - # (when there is one extruder, the material is set in the global stack) - # - # \return The material ids in all stacks - @pyqtProperty("QVariantMap", notify = activeMaterialChanged) - def allActiveMaterialIds(self) -> Dict[str, str]: - result = {} - - active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - for stack in active_stacks: - material_container = stack.material - if not material_container: - continue - result[stack.getId()] = material_container.getId() - - return result - ## Gets the layer height of the currently active quality profile. # # This is indicated together with the name of the active quality profile. # # \return The layer height of the currently active quality profile. If - # there is no quality profile, this returns 0. + # there is no quality profile, this returns the default layer height. @pyqtProperty(float, notify = activeQualityGroupChanged) def activeQualityLayerHeight(self) -> float: if not self._global_container_stack: return 0 - if self._current_quality_changes_group: - value = self._global_container_stack.getRawProperty("layer_height", "value", skip_until_container = self._global_container_stack.qualityChanges.getId()) - if isinstance(value, SettingFunction): - value = value(self._global_container_stack) - return value - elif self._current_quality_group: - value = self._global_container_stack.getRawProperty("layer_height", "value", skip_until_container = self._global_container_stack.quality.getId()) - if isinstance(value, SettingFunction): - value = value(self._global_container_stack) - return value - return 0 + value = self._global_container_stack.getRawProperty("layer_height", "value", skip_until_container = self._global_container_stack.qualityChanges.getId()) + if isinstance(value, SettingFunction): + value = value(self._global_container_stack) + return value @pyqtProperty(str, notify = activeVariantChanged) def globalVariantName(self) -> str: @@ -642,27 +539,57 @@ class MachineManager(QObject): @pyqtProperty(str, notify = activeQualityGroupChanged) def activeQualityType(self) -> str: - quality_type = "" - if self._active_container_stack: - if self._current_quality_group: - quality_type = self._current_quality_group.quality_type - return quality_type + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack: + return "" + return global_stack.quality.getMetaDataEntry("quality_type") @pyqtProperty(bool, notify = activeQualityGroupChanged) def isActiveQualitySupported(self) -> bool: - is_supported = False - if self._global_container_stack: - if self._current_quality_group: - is_supported = self._current_quality_group.is_available - return is_supported + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_container_stack: + return False + active_quality_group = self.activeQualityGroup() + if active_quality_group is None: + return False + return active_quality_group.is_available @pyqtProperty(bool, notify = activeQualityGroupChanged) def isActiveQualityExperimental(self) -> bool: - is_experimental = False - if self._global_container_stack: - if self._current_quality_group: - is_experimental = self._current_quality_group.is_experimental - return is_experimental + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_container_stack: + return False + active_quality_group = self.activeQualityGroup() + if active_quality_group is None: + return False + return active_quality_group.is_experimental + + @pyqtProperty(str, notify = activeIntentChanged) + def activeIntentCategory(self) -> str: + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + + if not global_container_stack: + return "" + return global_container_stack.getIntentCategory() + + # Provies a list of extruder positions that have a different intent from the active one. + @pyqtProperty("QStringList", notify=activeIntentChanged) + def extruderPositionsWithNonActiveIntent(self): + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + + if not global_container_stack: + return [] + + active_intent_category = self.activeIntentCategory + result = [] + for extruder in global_container_stack.extruderList: + if not extruder.isEnabled: + continue + category = extruder.intent.getMetaDataEntry("intent_category", "default") + if category != active_intent_category: + result.append(str(int(extruder.getMetaDataEntry("position")) + 1)) + + return result ## Returns whether there is anything unsupported in the current set-up. # @@ -673,7 +600,7 @@ class MachineManager(QObject): def isCurrentSetupSupported(self) -> bool: if not self._global_container_stack: return False - for stack in [self._global_container_stack] + list(self._global_container_stack.extruders.values()): + for stack in [self._global_container_stack] + self._global_container_stack.extruderList: for container in stack.getContainers(): if not container: return False @@ -681,11 +608,6 @@ class MachineManager(QObject): return False return True - ## Check if a container is read_only - @pyqtSlot(str, result = bool) - def isReadOnly(self, container_id: str) -> bool: - return CuraContainerRegistry.getInstance().isReadOnly(container_id) - ## Copy the value of the setting of the current extruder to all other extruders as well as the global container. @pyqtSlot(str) def copyValueToExtruders(self, key: str) -> None: @@ -704,8 +626,8 @@ class MachineManager(QObject): def copyAllValuesToExtruders(self) -> None: if self._active_container_stack is None or self._global_container_stack is None: return - extruder_stacks = list(self._global_container_stack.extruders.values()) - for extruder_stack in extruder_stacks: + + for extruder_stack in self._global_container_stack.extruderList: if extruder_stack != self._active_container_stack: for key in self._active_container_stack.userChanges.getAllKeys(): new_value = self._active_container_stack.getProperty(key, "value") @@ -713,47 +635,14 @@ class MachineManager(QObject): # Check if the value has to be replaced extruder_stack.userChanges.setProperty(key, "value", new_value) - @pyqtProperty(str, notify = activeVariantChanged) - def activeVariantName(self) -> str: - if self._active_container_stack: - variant = self._active_container_stack.variant - if variant: - return variant.getName() - - return "" - - @pyqtProperty(str, notify = activeVariantChanged) - def activeVariantId(self) -> str: - if self._active_container_stack: - variant = self._active_container_stack.variant - if variant: - return variant.getId() - - return "" - - @pyqtProperty(str, notify = activeVariantChanged) - def activeVariantBuildplateName(self) -> str: - if self._global_container_stack: - variant = self._global_container_stack.variant - if variant: - return variant.getName() - - return "" - - @pyqtProperty(str, notify = globalContainerChanged) - def activeDefinitionId(self) -> str: - if self._global_container_stack: - return self._global_container_stack.definition.id - - return "" - ## Get the Definition ID to use to select quality profiles for the currently active machine # \returns DefinitionID (string) if found, empty string otherwise @pyqtProperty(str, notify = globalContainerChanged) def activeQualityDefinitionId(self) -> str: - if self._global_container_stack: - return getMachineDefinitionIDForQualitySearch(self._global_container_stack.definition) - return "" + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack: + return "" + return ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition ## Gets how the active definition calls variants # Caveat: per-definition-variant-title is currently not translated (though the fallback is) @@ -776,6 +665,7 @@ class MachineManager(QObject): @pyqtSlot(str) def removeMachine(self, machine_id: str) -> None: + Logger.log("i", "Attempting to remove a machine with the id [%s]", machine_id) # If the machine that is being removed is the currently active machine, set another machine as the active machine. activate_new_machine = (self._global_container_stack and self._global_container_stack.getId() == machine_id) @@ -787,7 +677,6 @@ class MachineManager(QObject): self.setActiveMachine(other_machine_stacks[0]["id"]) metadata = CuraContainerRegistry.getInstance().findContainerStacksMetadata(id = machine_id)[0] - network_key = metadata.get("um_network_key", None) ExtruderManager.getInstance().removeMachineExtruders(machine_id) containers = CuraContainerRegistry.getInstance().findInstanceContainersMetadata(type = "user", machine = machine_id) for container in containers: @@ -795,31 +684,14 @@ class MachineManager(QObject): CuraContainerRegistry.getInstance().removeContainer(machine_id) # If the printer that is being removed is a network printer, the hidden printers have to be also removed - if network_key: - metadata_filter = {"um_network_key": network_key} + group_id = metadata.get("group_id", None) + if group_id: + metadata_filter = {"group_id": group_id} hidden_containers = CuraContainerRegistry.getInstance().findContainerStacks(type = "machine", **metadata_filter) if hidden_containers: # This reuses the method and remove all printers recursively self.removeMachine(hidden_containers[0].getId()) - @pyqtProperty(bool, notify = globalContainerChanged) - def hasMaterials(self) -> bool: - if self._global_container_stack: - return Util.parseBool(self._global_container_stack.getMetaDataEntry("has_materials", False)) - return False - - @pyqtProperty(bool, notify = globalContainerChanged) - def hasVariants(self) -> bool: - if self._global_container_stack: - return Util.parseBool(self._global_container_stack.getMetaDataEntry("has_variants", False)) - return False - - @pyqtProperty(bool, notify = globalContainerChanged) - def hasVariantBuildplates(self) -> bool: - if self._global_container_stack: - return Util.parseBool(self._global_container_stack.getMetaDataEntry("has_variant_buildplates", False)) - return False - ## The selected buildplate is compatible if it is compatible with all the materials in all the extruders @pyqtProperty(bool, notify = activeMaterialChanged) def variantBuildplateCompatible(self) -> bool: @@ -827,15 +699,15 @@ class MachineManager(QObject): return True buildplate_compatible = True # It is compatible by default - extruder_stacks = self._global_container_stack.extruders.values() - for stack in extruder_stacks: + for stack in self._global_container_stack.extruderList: if not stack.isEnabled: continue material_container = stack.material if material_container == empty_material_container: continue if material_container.getMetaDataEntry("buildplate_compatible"): - buildplate_compatible = buildplate_compatible and material_container.getMetaDataEntry("buildplate_compatible")[self.activeVariantBuildplateName] + active_buildplate_name = self.activeMachine.variant.name + buildplate_compatible = buildplate_compatible and material_container.getMetaDataEntry("buildplate_compatible")[active_buildplate_name] return buildplate_compatible @@ -851,8 +723,8 @@ class MachineManager(QObject): # (material_left_compatible or material_left_usable) and # (material_right_compatible or material_right_usable) result = not self.variantBuildplateCompatible - extruder_stacks = self._global_container_stack.extruders.values() - for stack in extruder_stacks: + + for stack in self._global_container_stack.extruderList: material_container = stack.material if material_container == empty_material_container: continue @@ -880,20 +752,15 @@ class MachineManager(QObject): result = [] # type: List[str] for setting_instance in container.findInstances(): setting_key = setting_instance.definition.key - setting_enabled = self._global_container_stack.getProperty(setting_key, "enabled") - if not setting_enabled: - # A setting is not visible anymore - result.append(setting_key) - Logger.log("d", "Reset setting [%s] from [%s] because the setting is no longer enabled", setting_key, container) - continue - if not self._global_container_stack.getProperty(setting_key, "type") in ("extruder", "optional_extruder"): continue old_value = container.getProperty(setting_key, "value") + if isinstance(old_value, SettingFunction): + old_value = old_value(self._global_container_stack) if int(old_value) < 0: continue - if int(old_value) >= extruder_count or not self._global_container_stack.extruders[str(old_value)].isEnabled: + if int(old_value) >= extruder_count or not self._global_container_stack.extruderList[int(old_value)].isEnabled: result.append(setting_key) Logger.log("d", "Reset setting [%s] in [%s] because its old value [%s] is no longer valid", setting_key, container, old_value) return result @@ -909,9 +776,8 @@ class MachineManager(QObject): # Apply quality changes that are incompatible to user changes, so we do not change the quality changes itself. self._global_container_stack.userChanges.setProperty(setting_key, "value", self._default_extruder_position) if add_user_changes: - caution_message = Message(catalog.i18nc( - "@info:generic", - "Settings have been changed to match the current availability of extruders: [%s]" % ", ".join(add_user_changes)), + caution_message = Message( + catalog.i18nc("@info:message Followed by a list of settings.", "Settings have been changed to match the current availability of extruders:") + " [{settings_list}]".format(settings_list = ", ".join(add_user_changes)), lifetime = 0, title = catalog.i18nc("@info:title", "Settings updated")) caution_message.show() @@ -939,7 +805,7 @@ class MachineManager(QObject): # Check to see if any objects are set to print with an extruder that will no longer exist root_node = self._application.getController().getScene().getRoot() - for node in DepthFirstIterator(root_node): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in DepthFirstIterator(root_node): if node.getMeshData(): extruder_nr = node.callDecoration("getActiveExtruderPosition") @@ -964,7 +830,7 @@ class MachineManager(QObject): if settable_per_extruder: limit_to_extruder = int(self._global_container_stack.getProperty(setting_key, "limit_to_extruder")) extruder_position = max(0, limit_to_extruder) - extruder_stack = self.getExtruder(extruder_position) + extruder_stack = self._global_container_stack.extruderList[extruder_position] if extruder_stack: extruder_stack.userChanges.setProperty(setting_key, "value", global_user_container.getProperty(setting_key, "value")) else: @@ -975,21 +841,15 @@ class MachineManager(QObject): self._application.globalContainerStackChanged.emit() self.forceUpdateAllSettings() - @pyqtSlot(int, result = QObject) - def getExtruder(self, position: int) -> Optional[ExtruderStack]: - if self._global_container_stack: - return self._global_container_stack.extruders.get(str(position)) - return None - def updateDefaultExtruder(self) -> None: if self._global_container_stack is None: return - extruder_items = sorted(self._global_container_stack.extruders.items()) + old_position = self._default_extruder_position new_default_position = "0" - for position, extruder in extruder_items: + for extruder in self._global_container_stack.extruderList: if extruder.isEnabled: - new_default_position = position + new_default_position = extruder.getMetaDataEntry("position", "0") break if new_default_position != old_position: self._default_extruder_position = new_default_position @@ -1001,7 +861,7 @@ class MachineManager(QObject): definition_changes_container = self._global_container_stack.definitionChanges machine_extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value") extruder_count = 0 - for position, extruder in self._global_container_stack.extruders.items(): + for position, extruder in enumerate(self._global_container_stack.extruderList): if extruder.isEnabled and int(position) < machine_extruder_count: extruder_count += 1 if self.numberExtrudersEnabled != extruder_count: @@ -1012,7 +872,10 @@ class MachineManager(QObject): def numberExtrudersEnabled(self) -> int: if self._global_container_stack is None: return 1 - return self._global_container_stack.definitionChanges.getProperty("extruders_enabled_count", "value") + extruders_enabled_count = self._global_container_stack.definitionChanges.getProperty("extruders_enabled_count", "value") + if extruders_enabled_count is None: + extruders_enabled_count = len(self._global_container_stack.extruderList) + return extruders_enabled_count @pyqtProperty(str, notify = extruderChanged) def defaultExtruderPosition(self) -> str: @@ -1025,16 +888,16 @@ class MachineManager(QObject): return with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): property_names = ["value", "resolve", "validationState"] - for container in [self._global_container_stack] + list(self._global_container_stack.extruders.values()): + for container in [self._global_container_stack] + self._global_container_stack.extruderList: for setting_key in container.getAllKeys(): container.propertiesChanged.emit(setting_key, property_names) @pyqtSlot(int, bool) def setExtruderEnabled(self, position: int, enabled: bool) -> None: - extruder = self.getExtruder(position) - if not extruder or self._global_container_stack is None: + if self._global_container_stack is None: Logger.log("w", "Could not find extruder on position %s", position) return + extruder = self._global_container_stack.extruderList[position] extruder.setEnabled(enabled) self.updateDefaultExtruder() @@ -1056,28 +919,25 @@ class MachineManager(QObject): self.forceUpdateAllSettings() # Also trigger the build plate compatibility to update self.activeMaterialChanged.emit() - - def _onMachineNameChanged(self) -> None: - self.globalContainerChanged.emit() + self.activeIntentChanged.emit() def _onMaterialNameChanged(self) -> None: self.activeMaterialChanged.emit() - def _onQualityNameChanged(self) -> None: - self.activeQualityChanged.emit() - + ## Get the signals that signal that the containers changed for all stacks. + # + # This includes the global stack and all extruder stacks. So if any + # container changed anywhere. def _getContainerChangedSignals(self) -> List[Signal]: if self._global_container_stack is None: return [] - stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - stacks.append(self._global_container_stack) - return [ s.containersChanged for s in stacks ] + return [s.containersChanged for s in ExtruderManager.getInstance().getActiveExtruderStacks() + [self._global_container_stack]] @pyqtSlot(str, str, str) def setSettingForAllExtruders(self, setting_name: str, property_name: str, property_value: str) -> None: if self._global_container_stack is None: return - for key, extruder in self._global_container_stack.extruders.items(): + for extruder in self._global_container_stack.extruderList: container = extruder.userChanges container.setProperty(setting_name, property_name, property_value) @@ -1087,59 +947,46 @@ class MachineManager(QObject): def resetSettingForAllExtruders(self, setting_name: str) -> None: if self._global_container_stack is None: return - for key, extruder in self._global_container_stack.extruders.items(): + for extruder in self._global_container_stack.extruderList: container = extruder.userChanges container.removeInstance(setting_name) - @pyqtProperty("QVariantList", notify = globalContainerChanged) - def currentExtruderPositions(self) -> List[str]: - if self._global_container_stack is None: - return [] - return sorted(list(self._global_container_stack.extruders.keys())) - ## Update _current_root_material_id when the current root material was changed. def _onRootMaterialChanged(self) -> None: self._current_root_material_id = {} + changed = False + if self._global_container_stack: - for position in self._global_container_stack.extruders: - self._current_root_material_id[position] = self._global_container_stack.extruders[position].material.getMetaDataEntry("base_file") + for extruder in self._global_container_stack.extruderList: + material_id = extruder.material.getMetaDataEntry("base_file") + position = extruder.getMetaDataEntry("position") + if position not in self._current_root_material_id or material_id != self._current_root_material_id[position]: + changed = True + self._current_root_material_id[position] = material_id + + if changed: + self.activeMaterialChanged.emit() @pyqtProperty("QVariant", notify = rootMaterialChanged) def currentRootMaterialId(self) -> Dict[str, str]: return self._current_root_material_id - ## Return the variant names in the extruder stack(s). - ## For the variant in the global stack, use activeVariantBuildplateName - @pyqtProperty("QVariant", notify = activeVariantChanged) - def activeVariantNames(self) -> Dict[str, str]: - result = {} - - active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - for stack in active_stacks: - variant_container = stack.variant - position = stack.getMetaDataEntry("position") - if variant_container and variant_container != empty_variant_container: - result[position] = variant_container.getName() - - return result - # Sets all quality and quality_changes containers to empty_quality and empty_quality_changes containers # for all stacks in the currently active machine. # def _setEmptyQuality(self) -> None: if self._global_container_stack is None: return - self._current_quality_group = None - self._current_quality_changes_group = None self._global_container_stack.quality = empty_quality_container self._global_container_stack.qualityChanges = empty_quality_changes_container - for extruder in self._global_container_stack.extruders.values(): + for extruder in self._global_container_stack.extruderList: extruder.quality = empty_quality_container extruder.qualityChanges = empty_quality_changes_container self.activeQualityGroupChanged.emit() self.activeQualityChangesGroupChanged.emit() + self._updateIntentWithQuality() def _setQualityGroup(self, quality_group: Optional["QualityGroup"], empty_quality_changes: bool = True) -> None: if self._global_container_stack is None: @@ -1148,37 +995,33 @@ class MachineManager(QObject): self._setEmptyQuality() return - if quality_group.node_for_global is None or quality_group.node_for_global.getContainer() is None: + if quality_group.node_for_global is None or quality_group.node_for_global.container is None: return for node in quality_group.nodes_for_extruders.values(): - if node.getContainer() is None: + if node.container is None: return - self._current_quality_group = quality_group - if empty_quality_changes: - self._current_quality_changes_group = None - # Set quality and quality_changes for the GlobalStack - self._global_container_stack.quality = quality_group.node_for_global.getContainer() + self._global_container_stack.quality = quality_group.node_for_global.container if empty_quality_changes: self._global_container_stack.qualityChanges = empty_quality_changes_container # Set quality and quality_changes for each ExtruderStack for position, node in quality_group.nodes_for_extruders.items(): - self._global_container_stack.extruders[str(position)].quality = node.getContainer() + self._global_container_stack.extruders[str(position)].quality = node.container if empty_quality_changes: self._global_container_stack.extruders[str(position)].qualityChanges = empty_quality_changes_container self.activeQualityGroupChanged.emit() self.activeQualityChangesGroupChanged.emit() + self._updateIntentWithQuality() def _fixQualityChangesGroupToNotSupported(self, quality_changes_group: "QualityChangesGroup") -> None: - nodes = [quality_changes_group.node_for_global] + list(quality_changes_group.nodes_for_extruders.values()) - containers = [n.getContainer() for n in nodes if n is not None] - for container in containers: - if container: - container.setMetaDataEntry("quality_type", "not_supported") + metadatas = [quality_changes_group.metadata_for_global] + list(quality_changes_group.metadata_per_extruder.values()) + for metadata in metadatas: + metadata["quality_type"] = "not_supported" # This actually changes the metadata of the container since they are stored by reference! quality_changes_group.quality_type = "not_supported" + quality_changes_group.intent_category = "default" def _setQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup") -> None: if self._global_container_stack is None: @@ -1187,67 +1030,76 @@ class MachineManager(QObject): # A custom quality can be created based on "not supported". # In that case, do not set quality containers to empty. quality_group = None - if quality_type != "not_supported": - quality_group_dict = self._quality_manager.getQualityGroups(self._global_container_stack) - quality_group = quality_group_dict.get(quality_type) + if quality_type != "not_supported": # Find the quality group that the quality changes was based on. + quality_group = ContainerTree.getInstance().getCurrentQualityGroups().get(quality_type) if quality_group is None: self._fixQualityChangesGroupToNotSupported(quality_changes_group) + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() quality_changes_container = empty_quality_changes_container - quality_container = empty_quality_container # type: Optional[InstanceContainer] - if quality_changes_group.node_for_global and quality_changes_group.node_for_global.getContainer(): - quality_changes_container = cast(InstanceContainer, quality_changes_group.node_for_global.getContainer()) - if quality_group is not None and quality_group.node_for_global and quality_group.node_for_global.getContainer(): - quality_container = quality_group.node_for_global.getContainer() + quality_container = empty_quality_container # type: InstanceContainer + if quality_changes_group.metadata_for_global: + global_containers = container_registry.findContainers(id = quality_changes_group.metadata_for_global["id"]) + if global_containers: + quality_changes_container = global_containers[0] + if quality_changes_group.metadata_for_global: + containers = container_registry.findContainers(id = quality_changes_group.metadata_for_global["id"]) + if containers: + quality_changes_container = cast(InstanceContainer, containers[0]) + if quality_group is not None and quality_group.node_for_global and quality_group.node_for_global.container: + quality_container = quality_group.node_for_global.container self._global_container_stack.quality = quality_container self._global_container_stack.qualityChanges = quality_changes_container for position, extruder in self._global_container_stack.extruders.items(): - quality_changes_node = quality_changes_group.nodes_for_extruders.get(position) quality_node = None if quality_group is not None: - quality_node = quality_group.nodes_for_extruders.get(position) + quality_node = quality_group.nodes_for_extruders.get(int(position)) quality_changes_container = empty_quality_changes_container quality_container = empty_quality_container - if quality_changes_node and quality_changes_node.getContainer(): - quality_changes_container = cast(InstanceContainer, quality_changes_node.getContainer()) - if quality_node and quality_node.getContainer(): - quality_container = quality_node.getContainer() + quality_changes_metadata = quality_changes_group.metadata_per_extruder.get(int(position)) + if quality_changes_metadata: + containers = container_registry.findContainers(id = quality_changes_metadata["id"]) + if containers: + quality_changes_container = cast(InstanceContainer, containers[0]) + if quality_node and quality_node.container: + quality_container = quality_node.container extruder.quality = quality_container extruder.qualityChanges = quality_changes_container - self._current_quality_group = quality_group - self._current_quality_changes_group = quality_changes_group + self.setIntentByCategory(quality_changes_group.intent_category) + self.activeQualityGroupChanged.emit() self.activeQualityChangesGroupChanged.emit() - def _setVariantNode(self, position: str, container_node: "ContainerNode") -> None: - if container_node.getContainer() is None or self._global_container_stack is None: + def _setVariantNode(self, position: str, variant_node: "VariantNode") -> None: + if self._global_container_stack is None: return - self._global_container_stack.extruders[position].variant = container_node.getContainer() + self._global_container_stack.extruders[position].variant = variant_node.container self.activeVariantChanged.emit() def _setGlobalVariant(self, container_node: "ContainerNode") -> None: if self._global_container_stack is None: return - self._global_container_stack.variant = container_node.getContainer() + self._global_container_stack.variant = container_node.container if not self._global_container_stack.variant: self._global_container_stack.variant = self._application.empty_variant_container - def _setMaterial(self, position: str, container_node: Optional["ContainerNode"] = None) -> None: + def _setMaterial(self, position: str, material_node: Optional["MaterialNode"] = None) -> None: if self._global_container_stack is None: return - if container_node and container_node.getContainer(): - self._global_container_stack.extruders[position].material = container_node.getContainer() - root_material_id = container_node.getMetaDataEntry("base_file", None) + if material_node and material_node.container: + material_container = material_node.container + self._global_container_stack.extruders[position].material = material_container + root_material_id = material_container.getMetaDataEntry("base_file", None) else: - self._global_container_stack.extruders[position].material = empty_material_container + self._global_container_stack.extruderList[int(position)].material = empty_material_container root_material_id = None # The _current_root_material_id is used in the MaterialMenu to see which material is selected - if root_material_id != self._current_root_material_id[position]: + if position not in self._current_root_material_id or root_material_id != self._current_root_material_id[position]: self._current_root_material_id[position] = root_material_id self.rootMaterialChanged.emit() @@ -1255,22 +1107,21 @@ class MachineManager(QObject): # Check material - variant compatibility if self._global_container_stack is not None: if Util.parseBool(self._global_container_stack.getMetaDataEntry("has_materials", False)): - for position, extruder in self._global_container_stack.extruders.items(): - if extruder.isEnabled and not extruder.material.getMetaDataEntry("compatible"): - return False + for extruder in self._global_container_stack.extruderList: + if not extruder.isEnabled: + continue if not extruder.material.getMetaDataEntry("compatible"): return False return True ## Update current quality type and machine after setting material def _updateQualityWithMaterial(self, *args: Any) -> None: - if self._global_container_stack is None: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: return - Logger.log("i", "Updating quality/quality_changes due to material change") - current_quality_type = None - if self._current_quality_group: - current_quality_type = self._current_quality_group.quality_type - candidate_quality_groups = self._quality_manager.getQualityGroups(self._global_container_stack) + Logger.log("d", "Updating quality/quality_changes due to material change") + current_quality_type = global_stack.quality.getMetaDataEntry("quality_type") + candidate_quality_groups = ContainerTree.getInstance().getCurrentQualityGroups() available_quality_types = {qt for qt, g in candidate_quality_groups.items() if g.is_available} Logger.log("d", "Current quality type = [%s]", current_quality_type) @@ -1281,7 +1132,7 @@ class MachineManager(QObject): return if not available_quality_types: - if self._current_quality_changes_group is None: + if global_stack.qualityChanges == empty_quality_changes_container: Logger.log("i", "No available quality types found, setting all qualities to empty (Not Supported).") self._setEmptyQuality() return @@ -1294,6 +1145,9 @@ class MachineManager(QObject): # The current quality type is not available so we use the preferred quality type if it's available, # otherwise use one of the available quality types. quality_type = sorted(list(available_quality_types))[0] + if self._global_container_stack is None: + Logger.log("e", "Global stack not present!") + return preferred_quality_type = self._global_container_stack.getMetaDataEntry("preferred_quality_type") if preferred_quality_type in available_quality_types: quality_type = preferred_quality_type @@ -1302,7 +1156,40 @@ class MachineManager(QObject): current_quality_type, quality_type) self._setQualityGroup(candidate_quality_groups[quality_type], empty_quality_changes = True) - def updateMaterialWithVariant(self, position: Optional[str]) -> None: + ## Update the current intent after the quality changed + def _updateIntentWithQuality(self): + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return + Logger.log("d", "Updating intent due to quality change") + + category = "default" + + for extruder in global_stack.extruderList: + if not extruder.isEnabled: + continue + current_category = extruder.intent.getMetaDataEntry("intent_category", "default") + if current_category != "default" and current_category != category: + category = current_category + continue + # It's also possible that the qualityChanges has an opinion about the intent_category. + # This is in the case that a QC was made on an intent, but none of the materials have that intent. + # If the user switches back, we do want the intent to be selected again. + # + # Do not ask empty quality changes for intent category. + if extruder.qualityChanges.getId() == empty_quality_changes_container.getId(): + continue + current_category = extruder.qualityChanges.getMetaDataEntry("intent_category", "default") + if current_category != "default" and current_category != category: + category = current_category + self.setIntentByCategory(category) + + ## Update the material profile in the current stacks when the variant is + # changed. + # \param position The extruder stack to update. If provided with None, all + # extruder stacks will be updated. + @pyqtSlot() + def updateMaterialWithVariant(self, position: Optional[str] = None) -> None: if self._global_container_stack is None: return if position is None: @@ -1310,37 +1197,31 @@ class MachineManager(QObject): else: position_list = [position] - buildplate_name = None - if self._global_container_stack.variant.getId() != "empty_variant": - buildplate_name = self._global_container_stack.variant.getName() - for position_item in position_list: - extruder = self._global_container_stack.extruders[position_item] + try: + extruder = self._global_container_stack.extruderList[int(position_item)] + except IndexError: + continue current_material_base_name = extruder.material.getMetaDataEntry("base_file") - current_nozzle_name = None - if extruder.variant.getId() != empty_variant_container.getId(): - current_nozzle_name = extruder.variant.getMetaDataEntry("name") + current_nozzle_name = extruder.variant.getMetaDataEntry("name") - material_diameter = extruder.getCompatibleMaterialDiameter() - candidate_materials = self._material_manager.getAvailableMaterials( - self._global_container_stack.definition, - current_nozzle_name, - buildplate_name, - material_diameter) + # If we can keep the current material after the switch, try to do so. + nozzle_node = ContainerTree.getInstance().machines[self._global_container_stack.definition.getId()].variants[current_nozzle_name] + candidate_materials = nozzle_node.materials + old_approximate_material_diameter = int(extruder.material.getMetaDataEntry("approximate_diameter", default = 3)) + new_approximate_material_diameter = int(self._global_container_stack.extruderList[int(position_item)].getApproximateMaterialDiameter()) - if not candidate_materials: - self._setMaterial(position_item, container_node = None) - continue - - if current_material_base_name in candidate_materials: + # Only switch to the old candidate material if the approximate material diameter of the extruder stays the + # same. + if new_approximate_material_diameter == old_approximate_material_diameter and \ + current_material_base_name in candidate_materials: # The current material is also available after the switch. Retain it. new_material = candidate_materials[current_material_base_name] self._setMaterial(position_item, new_material) - continue - - # The current material is not available, find the preferred one - material_node = self._material_manager.getDefaultMaterial(self._global_container_stack, position_item, current_nozzle_name) - if material_node is not None: + else: + # The current material is not available, find the preferred one. + approximate_material_diameter = int(self._global_container_stack.extruderList[int(position_item)].getApproximateMaterialDiameter()) + material_node = nozzle_node.preferredMaterial(approximate_material_diameter) self._setMaterial(position_item, material_node) ## Given a printer definition name, select the right machine instance. In case it doesn't exist, create a new @@ -1348,35 +1229,41 @@ class MachineManager(QObject): @pyqtSlot(str) def switchPrinterType(self, machine_name: str) -> None: # Don't switch if the user tries to change to the same type of printer - if self._global_container_stack is None or self.activeMachineDefinitionName == machine_name: + if self._global_container_stack is None or self._global_container_stack.definition.name == machine_name: return + Logger.log("i", "Attempting to switch the printer type to [%s]", machine_name) # Get the definition id corresponding to this machine name machine_definition_id = CuraContainerRegistry.getInstance().findDefinitionContainers(name = machine_name)[0].getId() # Try to find a machine with the same network key - new_machine = self.getMachine(machine_definition_id, metadata_filter = {"um_network_key": self.activeMachineNetworkKey()}) + metadata_filter = {"group_id": self._global_container_stack.getMetaDataEntry("group_id")} + new_machine = self.getMachine(machine_definition_id, metadata_filter = metadata_filter) # If there is no machine, then create a new one and set it to the non-hidden instance if not new_machine: new_machine = CuraStackBuilder.createMachine(machine_definition_id + "_sync", machine_definition_id) if not new_machine: return - new_machine.setMetaDataEntry("um_network_key", self.activeMachineNetworkKey()) - new_machine.setMetaDataEntry("group_name", self.activeMachineNetworkGroupName) - new_machine.setMetaDataEntry("hidden", False) - new_machine.setMetaDataEntry("connection_type", self._global_container_stack.getMetaDataEntry("connection_type")) + + for metadata_key in self._global_container_stack.getMetaData(): + if metadata_key in new_machine.getMetaData(): + continue # Don't copy the already preset stuff. + new_machine.setMetaDataEntry(metadata_key, self._global_container_stack.getMetaDataEntry(metadata_key)) + # Special case, group_id should be overwritten! + new_machine.setMetaDataEntry("group_id", self._global_container_stack.getMetaDataEntry("group_id")) else: Logger.log("i", "Found a %s with the key %s. Let's use it!", machine_name, self.activeMachineNetworkKey()) - new_machine.setMetaDataEntry("hidden", False) # Set the current printer instance to hidden (the metadata entry must exist) + new_machine.setMetaDataEntry("hidden", False) self._global_container_stack.setMetaDataEntry("hidden", True) self.setActiveMachine(new_machine.getId()) @pyqtSlot(QObject) - def applyRemoteConfiguration(self, configuration: ConfigurationModel) -> None: + def applyRemoteConfiguration(self, configuration: PrinterConfigurationModel) -> None: if self._global_container_stack is None: return self.blurSettings.emit() + container_registry = CuraContainerRegistry.getInstance() with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): self.switchPrinterType(configuration.printerType) @@ -1388,15 +1275,16 @@ class MachineManager(QObject): need_to_show_message = False for extruder_configuration in configuration.extruderConfigurations: - extruder_has_hotend = extruder_configuration.hotendID != "" - extruder_has_material = extruder_configuration.material.guid != "" + # We support "" or None, since the cloud uses None instead of empty strings + extruder_has_hotend = extruder_configuration.hotendID and extruder_configuration.hotendID != "" + extruder_has_material = extruder_configuration.material.guid and extruder_configuration.material.guid != "" # If the machine doesn't have a hotend or material, disable this extruder if not extruder_has_hotend or not extruder_has_material: extruders_to_disable.add(extruder_configuration.position) # If there's no material and/or nozzle on the printer, enable the first extruder and disable the rest. - if len(extruders_to_disable) == len(self._global_container_stack.extruders): + if len(extruders_to_disable) == len(self._global_container_stack.extruderList): extruders_to_disable.remove(min(extruders_to_disable)) for extruder_configuration in configuration.extruderConfigurations: @@ -1404,41 +1292,33 @@ class MachineManager(QObject): # If the machine doesn't have a hotend or material, disable this extruder if int(position) in extruders_to_disable: - self._global_container_stack.extruders[position].setEnabled(False) + self._global_container_stack.extruderList[int(position)].setEnabled(False) need_to_show_message = True disabled_used_extruder_position_set.add(int(position)) else: - variant_container_node = self._variant_manager.getVariantNode(self._global_container_stack.definition.getId(), - extruder_configuration.hotendID) - material_container_node = self._material_manager.getMaterialNodeByType(self._global_container_stack, - position, - extruder_configuration.hotendID, - configuration.buildplateConfiguration, - extruder_configuration.material.guid) - if variant_container_node: - self._setVariantNode(position, variant_container_node) - else: - self._global_container_stack.extruders[position].variant = empty_variant_container + machine_node = ContainerTree.getInstance().machines.get(self._global_container_stack.definition.getId()) + variant_node = machine_node.variants.get(extruder_configuration.hotendID) + if variant_node is None: + continue + self._setVariantNode(position, variant_node) - if material_container_node: - self._setMaterial(position, material_container_node) - else: - self._global_container_stack.extruders[position].material = empty_material_container + # Find the material profile that the printer has stored. + # This might find one of the duplicates if the user duplicated the material to sync with. But that's okay; both have this GUID so both are correct. + approximate_diameter = int(self._global_container_stack.extruderList[int(position)].getApproximateMaterialDiameter()) + materials_with_guid = container_registry.findInstanceContainersMetadata(GUID = extruder_configuration.material.guid, approximate_diameter = str(approximate_diameter), ignore_case = True) + material_container_node = variant_node.preferredMaterial(approximate_diameter) + if materials_with_guid: # We also have the material profile that the printer wants to share. + base_file = materials_with_guid[0]["base_file"] + material_container_node = variant_node.materials.get(base_file, material_container_node) + + self._setMaterial(position, material_container_node) self._global_container_stack.extruders[position].setEnabled(True) self.updateMaterialWithVariant(position) + self.updateDefaultExtruder() self.updateNumberExtrudersEnabled() - - if configuration.buildplateConfiguration is not None: - global_variant_container_node = self._variant_manager.getBuildplateVariantNode(self._global_container_stack.definition.getId(), configuration.buildplateConfiguration) - if global_variant_container_node: - self._setGlobalVariant(global_variant_container_node) - else: - self._global_container_stack.variant = empty_variant_container - else: - self._global_container_stack.variant = empty_variant_container self._updateQualityWithMaterial() if need_to_show_message: @@ -1447,7 +1327,7 @@ class MachineManager(QObject): # Show human-readable extruder names such as "Extruder Left", "Extruder Front" instead of "Extruder 1, 2, 3". extruder_names = [] for extruder_position in sorted(disabled_used_extruder_position_set): - extruder_stack = self._global_container_stack.extruders[str(extruder_position)] + extruder_stack = self._global_container_stack.extruderList[int(extruder_position)] extruder_name = extruder_stack.definition.getName() extruder_names.append(extruder_name) extruders_str = ", ".join(extruder_names) @@ -1460,31 +1340,6 @@ class MachineManager(QObject): if self.hasUserSettings and self._application.getPreferences().getValue("cura/active_mode") == 1: self._application.discardOrKeepProfileChanges() - ## Find all container stacks that has the pair 'key = value' in its metadata and replaces the value with 'new_value' - def replaceContainersMetadata(self, key: str, value: str, new_value: str) -> None: - machines = CuraContainerRegistry.getInstance().findContainerStacks(type = "machine") - for machine in machines: - if machine.getMetaDataEntry(key) == value: - machine.setMetaDataEntry(key, new_value) - - ## This method checks if the name of the group stored in the definition container is correct. - # After updating from 3.2 to 3.3 some group names may be temporary. If there is a mismatch in the name of the group - # then all the container stacks are updated, both the current and the hidden ones. - def checkCorrectGroupName(self, device_id: str, group_name: str) -> None: - if self._global_container_stack and device_id == self.activeMachineNetworkKey(): - # Check if the group_name is correct. If not, update all the containers connected to the same printer - if self.activeMachineNetworkGroupName != group_name: - metadata_filter = {"um_network_key": self.activeMachineNetworkKey()} - containers = CuraContainerRegistry.getInstance().findContainerStacks(type = "machine", **metadata_filter) - for container in containers: - container.setMetaDataEntry("group_name", group_name) - - ## This method checks if there is an instance connected to the given network_key - def existNetworkInstances(self, network_key: str) -> bool: - metadata_filter = {"um_network_key": network_key} - containers = CuraContainerRegistry.getInstance().findContainerStacks(type = "machine", **metadata_filter) - return bool(containers) - @pyqtSlot("QVariant") def setGlobalVariant(self, container_node: "ContainerNode") -> None: self.blurSettings.emit() @@ -1497,17 +1352,12 @@ class MachineManager(QObject): def setMaterialById(self, position: str, root_material_id: str) -> None: if self._global_container_stack is None: return - buildplate_name = None - if self._global_container_stack.variant.getId() != "empty_variant": - buildplate_name = self._global_container_stack.variant.getName() machine_definition_id = self._global_container_stack.definition.id position = str(position) - extruder_stack = self._global_container_stack.extruders[position] + extruder_stack = self._global_container_stack.extruderList[int(position)] nozzle_name = extruder_stack.variant.getName() - material_diameter = extruder_stack.getApproximateMaterialDiameter() - material_node = self._material_manager.getMaterialNode(machine_definition_id, nozzle_name, buildplate_name, - material_diameter, root_material_id) + material_node = ContainerTree.getInstance().machines[machine_definition_id].variants[nozzle_name].materials[root_material_id] self.setMaterial(position, material_node) ## Global_stack: if you want to provide your own global_stack instead of the current active one @@ -1515,7 +1365,7 @@ class MachineManager(QObject): @pyqtSlot(str, "QVariant") def setMaterial(self, position: str, container_node, global_stack: Optional["GlobalStack"] = None) -> None: if global_stack is not None and global_stack != self._global_container_stack: - global_stack.extruders[position].material = container_node.getContainer() + global_stack.extruders[position].material = container_node.container return position = str(position) self.blurSettings.emit() @@ -1532,15 +1382,16 @@ class MachineManager(QObject): if self._global_container_stack is None: return machine_definition_id = self._global_container_stack.definition.id - variant_node = self._variant_manager.getVariantNode(machine_definition_id, variant_name) + machine_node = ContainerTree.getInstance().machines.get(machine_definition_id) + variant_node = machine_node.variants.get(variant_name) self.setVariant(position, variant_node) @pyqtSlot(str, "QVariant") - def setVariant(self, position: str, container_node: "ContainerNode") -> None: + def setVariant(self, position: str, variant_node: "VariantNode") -> None: position = str(position) self.blurSettings.emit() with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): - self._setVariantNode(position, container_node) + self._setVariantNode(position, variant_node) self.updateMaterialWithVariant(position) self._updateQualityWithMaterial() @@ -1553,9 +1404,7 @@ class MachineManager(QObject): if self._global_container_stack is None: return # Get all the quality groups for this global stack and filter out by quality_type - quality_group_dict = self._quality_manager.getQualityGroups(self._global_container_stack) - quality_group = quality_group_dict[quality_type] - self.setQualityGroup(quality_group) + self.setQualityGroup(ContainerTree.getInstance().getCurrentQualityGroups()[quality_type]) ## Optionally provide global_stack if you want to use your own # The active global_stack is treated differently. @@ -1569,11 +1418,11 @@ class MachineManager(QObject): Logger.log("e", "Could not set quality group [%s] because it has no node_for_global", str(quality_group)) return # This is not changing the quality for the active machine !!!!!!!! - global_stack.quality = quality_group.node_for_global.getContainer() - for extruder_nr, extruder_stack in global_stack.extruders.items(): + global_stack.quality = quality_group.node_for_global.container + for extruder_nr, extruder_stack in enumerate(global_stack.extruderList): quality_container = empty_quality_container if extruder_nr in quality_group.nodes_for_extruders: - container = quality_group.nodes_for_extruders[extruder_nr].getContainer() + container = quality_group.nodes_for_extruders[extruder_nr].container quality_container = container if container is not None else quality_container extruder_stack.quality = quality_container return @@ -1586,9 +1435,91 @@ class MachineManager(QObject): if not no_dialog and self.hasUserSettings and self._application.getPreferences().getValue("cura/active_mode") == 1: self._application.discardOrKeepProfileChanges() - @pyqtProperty(QObject, fset = setQualityGroup, notify = activeQualityGroupChanged) + # The display name map of currently active quality. + # The display name has 2 parts, a main part and a suffix part. + # This display name is: + # - For built-in qualities (quality/intent): the quality type name, such as "Fine", "Normal", etc. + # - For custom qualities: - - + # Examples: + # - "my_profile - Fine" (only based on a default quality, no intent involved) + # - "my_profile - Engineering - Fine" (based on an intent) + @pyqtProperty("QVariantMap", notify = activeQualityDisplayNameChanged) + def activeQualityDisplayNameMap(self) -> Dict[str, str]: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return {"main": "", + "suffix": ""} + + display_name = global_stack.quality.getName() + + intent_category = self.activeIntentCategory + if intent_category != "default": + intent_display_name = IntentCategoryModel.translation(intent_category, + "name", + catalog.i18nc("@label", "Unknown")) + display_name = "{intent_name} - {the_rest}".format(intent_name = intent_display_name, + the_rest = display_name) + + main_part = display_name + suffix_part = "" + + # Not a custom quality + if global_stack.qualityChanges != empty_quality_changes_container: + main_part = self.activeQualityOrQualityChangesName + suffix_part = display_name + + return {"main": main_part, + "suffix": suffix_part} + + ## Change the intent category of the current printer. + # + # All extruders can change their profiles. If an intent profile is + # available with the desired intent category, that one will get chosen. + # Otherwise the intent profile will be left to the empty profile, which + # represents the "default" intent category. + # \param intent_category The intent category to change to. + @pyqtSlot(str) + def setIntentByCategory(self, intent_category: str) -> None: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return + container_tree = ContainerTree.getInstance() + for extruder in global_stack.extruderList: + definition_id = global_stack.definition.getId() + variant_name = extruder.variant.getName() + material_base_file = extruder.material.getMetaDataEntry("base_file") + quality_id = extruder.quality.getId() + if quality_id == empty_quality_container.getId(): + extruder.intent = empty_intent_container + continue + quality_node = container_tree.machines[definition_id].variants[variant_name].materials[material_base_file].qualities[quality_id] + + for intent_node in quality_node.intents.values(): + if intent_node.intent_category == intent_category: # Found an intent with the correct category. + extruder.intent = intent_node.container + break + else: # No intent had the correct category. + extruder.intent = empty_intent_container + + ## Get the currently activated quality group. + # + # If no printer is added yet or the printer doesn't have quality profiles, + # this returns ``None``. + # \return The currently active quality group. def activeQualityGroup(self) -> Optional["QualityGroup"]: - return self._current_quality_group + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack or global_stack.quality == empty_quality_container: + return None + return ContainerTree.getInstance().getCurrentQualityGroups().get(self.activeQualityType) + + ## Get the name of the active quality group. + # \return The name of the active quality group. + @pyqtProperty(str, notify = activeQualityGroupChanged) + def activeQualityGroupName(self) -> str: + quality_group = self.activeQualityGroup() + if quality_group is None: + return "" + return quality_group.getName() @pyqtSlot(QObject) def setQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup", no_dialog: bool = False) -> None: @@ -1605,30 +1536,50 @@ class MachineManager(QObject): if self._global_container_stack is None: return with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): - self._setQualityGroup(self._current_quality_group) + self._setQualityGroup(self.activeQualityGroup()) for stack in [self._global_container_stack] + list(self._global_container_stack.extruders.values()): stack.userChanges.clear() @pyqtProperty(QObject, fset = setQualityChangesGroup, notify = activeQualityChangesGroupChanged) def activeQualityChangesGroup(self) -> Optional["QualityChangesGroup"]: - return self._current_quality_changes_group + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None or global_stack.qualityChanges == empty_quality_changes_container: + return None + + all_group_list = ContainerTree.getInstance().getCurrentQualityChangesGroups() + the_group = None + for group in all_group_list: # Match on the container ID of the global stack to find the quality changes group belonging to the active configuration. + if group.metadata_for_global and group.metadata_for_global["id"] == global_stack.qualityChanges.getId(): + the_group = group + break + + return the_group @pyqtProperty(bool, notify = activeQualityChangesGroupChanged) def hasCustomQuality(self) -> bool: - return self._current_quality_changes_group is not None + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + return global_stack is None or global_stack.qualityChanges != empty_quality_changes_container @pyqtProperty(str, notify = activeQualityGroupChanged) def activeQualityOrQualityChangesName(self) -> str: - name = empty_quality_container.getName() - if self._current_quality_changes_group: - name = self._current_quality_changes_group.name - elif self._current_quality_group: - name = self._current_quality_group.name - return name + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_container_stack: + return empty_quality_container.getName() + if global_container_stack.qualityChanges != empty_quality_changes_container: + return global_container_stack.qualityChanges.getName() + return global_container_stack.quality.getName() @pyqtProperty(bool, notify = activeQualityGroupChanged) def hasNotSupportedQuality(self) -> bool: - return self._current_quality_group is None and self._current_quality_changes_group is None + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + return (not global_container_stack is None) and global_container_stack.quality == empty_quality_container and global_container_stack.qualityChanges == empty_quality_changes_container + + @pyqtProperty(bool, notify = activeQualityGroupChanged) + def isActiveQualityCustom(self) -> bool: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return False + return global_stack.qualityChanges != empty_quality_changes_container def _updateUponMaterialMetadataChange(self) -> None: if self._global_container_stack is None: diff --git a/cura/Settings/PerObjectContainerStack.py b/cura/Settings/PerObjectContainerStack.py index 3589029517..a4f1f6ed06 100644 --- a/cura/Settings/PerObjectContainerStack.py +++ b/cura/Settings/PerObjectContainerStack.py @@ -12,6 +12,10 @@ from .CuraContainerStack import CuraContainerStack class PerObjectContainerStack(CuraContainerStack): + def isDirty(self): + # This stack should never be auto saved, so always return that there is nothing to save. + return False + @override(CuraContainerStack) def getProperty(self, key: str, property_name: str, context: Optional[PropertyEvaluationContext] = None) -> Any: if context is None: @@ -34,7 +38,7 @@ class PerObjectContainerStack(CuraContainerStack): if limit_to_extruder is not None: limit_to_extruder = str(limit_to_extruder) - # if this stack has the limit_to_extruder "not overriden", use the original limit_to_extruder as the current + # if this stack has the limit_to_extruder "not overridden", use the original limit_to_extruder as the current # limit_to_extruder, so the values retrieved will be from the perspective of the original limit_to_extruder # stack. if limit_to_extruder == "-1": @@ -42,7 +46,7 @@ class PerObjectContainerStack(CuraContainerStack): limit_to_extruder = context.context["original_limit_to_extruder"] if limit_to_extruder is not None and limit_to_extruder != "-1" and limit_to_extruder in global_stack.extruders: - # set the original limit_to_extruder if this is the first stack that has a non-overriden limit_to_extruder + # set the original limit_to_extruder if this is the first stack that has a non-overridden limit_to_extruder if "original_limit_to_extruder" not in context.context: context.context["original_limit_to_extruder"] = limit_to_extruder diff --git a/cura/Settings/SettingInheritanceManager.py b/cura/Settings/SettingInheritanceManager.py index 12b541c3d8..7db579bf3f 100644 --- a/cura/Settings/SettingInheritanceManager.py +++ b/cura/Settings/SettingInheritanceManager.py @@ -28,20 +28,21 @@ if TYPE_CHECKING: class SettingInheritanceManager(QObject): def __init__(self, parent = None) -> None: super().__init__(parent) - Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) + self._global_container_stack = None # type: Optional[ContainerStack] self._settings_with_inheritance_warning = [] # type: List[str] self._active_container_stack = None # type: Optional[ExtruderStack] - self._onGlobalContainerChanged() - - ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderChanged) - self._onActiveExtruderChanged() self._update_timer = QTimer() self._update_timer.setInterval(500) self._update_timer.setSingleShot(True) self._update_timer.timeout.connect(self._update) + Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) + ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderChanged) + self._onGlobalContainerChanged() + self._onActiveExtruderChanged() + settingsWithIntheritanceChanged = pyqtSignal() ## Get the keys of all children settings with an override. @@ -88,8 +89,8 @@ class SettingInheritanceManager(QObject): self.settingsWithIntheritanceChanged.emit() @pyqtSlot() - def forceUpdate(self) -> None: - self._update() + def scheduleUpdate(self) -> None: + self._update_timer.start() def _onActiveExtruderChanged(self) -> None: new_active_stack = ExtruderManager.getInstance().getActiveExtruderStack() @@ -106,7 +107,7 @@ class SettingInheritanceManager(QObject): if self._active_container_stack is not None: self._active_container_stack.propertyChanged.connect(self._onPropertyChanged) self._active_container_stack.containersChanged.connect(self._onContainersChanged) - self._update() # Ensure that the settings_with_inheritance_warning list is populated. + self._update_timer.start() # Ensure that the settings_with_inheritance_warning list is populated. def _onPropertyChanged(self, key: str, property_name: str) -> None: if (property_name == "value" or property_name == "enabled") and self._global_container_stack: diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index 429e6d16ec..2fa5234ec3 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -73,8 +73,8 @@ class SettingOverrideDecorator(SceneNodeDecorator): # use value from the stack because there can be a delay in signal triggering and "_is_non_printing_mesh" # has not been updated yet. - deep_copy._is_non_printing_mesh = self.evaluateIsNonPrintingMesh() - deep_copy._is_non_thumbnail_visible_mesh = self.evaluateIsNonThumbnailVisibleMesh() + deep_copy._is_non_printing_mesh = self._evaluateIsNonPrintingMesh() + deep_copy._is_non_thumbnail_visible_mesh = self._evaluateIsNonThumbnailVisibleMesh() return deep_copy @@ -102,21 +102,21 @@ class SettingOverrideDecorator(SceneNodeDecorator): def isNonPrintingMesh(self): return self._is_non_printing_mesh - def evaluateIsNonPrintingMesh(self): + def _evaluateIsNonPrintingMesh(self): return any(bool(self._stack.getProperty(setting, "value")) for setting in self._non_printing_mesh_settings) def isNonThumbnailVisibleMesh(self): return self._is_non_thumbnail_visible_mesh - def evaluateIsNonThumbnailVisibleMesh(self): + def _evaluateIsNonThumbnailVisibleMesh(self): return any(bool(self._stack.getProperty(setting, "value")) for setting in self._non_thumbnail_visible_settings) - def _onSettingChanged(self, instance, property_name): # Reminder: 'property' is a built-in function + def _onSettingChanged(self, setting_key, property_name): # Reminder: 'property' is a built-in function + # We're only interested in a few settings and only if it's value changed. if property_name == "value": # Trigger slice/need slicing if the value has changed. - self._is_non_printing_mesh = self.evaluateIsNonPrintingMesh() - self._is_non_thumbnail_visible_mesh = self.evaluateIsNonThumbnailVisibleMesh() - + self._is_non_printing_mesh = self._evaluateIsNonPrintingMesh() + self._is_non_thumbnail_visible_mesh = self._evaluateIsNonThumbnailVisibleMesh() Application.getInstance().getBackend().needsSlicing() Application.getInstance().getBackend().tickle() diff --git a/cura/Settings/SimpleModeSettingsManager.py b/cura/Settings/SimpleModeSettingsManager.py index b1896a9205..3923435e63 100644 --- a/cura/Settings/SimpleModeSettingsManager.py +++ b/cura/Settings/SimpleModeSettingsManager.py @@ -39,8 +39,8 @@ class SimpleModeSettingsManager(QObject): user_setting_keys.update(global_stack.userChanges.getAllKeys()) # check user settings in the extruder stacks - if global_stack.extruders: - for extruder_stack in global_stack.extruders.values(): + if global_stack.extruderList: + for extruder_stack in global_stack.extruderList: user_setting_keys.update(extruder_stack.userChanges.getAllKeys()) # remove settings that are visible in recommended (we don't show the reset button for those) diff --git a/cura/Settings/cura_empty_instance_containers.py b/cura/Settings/cura_empty_instance_containers.py index d76407ed79..b142c53c11 100644 --- a/cura/Settings/cura_empty_instance_containers.py +++ b/cura/Settings/cura_empty_instance_containers.py @@ -1,9 +1,11 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import copy from UM.Settings.constant_instance_containers import EMPTY_CONTAINER_ID, empty_container +from UM.i18n import i18nCatalog +catalog = i18nCatalog("cura") # Empty definition changes @@ -23,12 +25,15 @@ EMPTY_MATERIAL_CONTAINER_ID = "empty_material" empty_material_container = copy.deepcopy(empty_container) empty_material_container.setMetaDataEntry("id", EMPTY_MATERIAL_CONTAINER_ID) empty_material_container.setMetaDataEntry("type", "material") +empty_material_container.setMetaDataEntry("base_file", "empty_material") +empty_material_container.setMetaDataEntry("GUID", "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF") +empty_material_container.setMetaDataEntry("material", "empty") # Empty quality EMPTY_QUALITY_CONTAINER_ID = "empty_quality" empty_quality_container = copy.deepcopy(empty_container) empty_quality_container.setMetaDataEntry("id", EMPTY_QUALITY_CONTAINER_ID) -empty_quality_container.setName("Not Supported") +empty_quality_container.setName(catalog.i18nc("@info:not supported profile", "Not supported")) empty_quality_container.setMetaDataEntry("quality_type", "not_supported") empty_quality_container.setMetaDataEntry("type", "quality") empty_quality_container.setMetaDataEntry("supported", False) @@ -39,6 +44,32 @@ empty_quality_changes_container = copy.deepcopy(empty_container) empty_quality_changes_container.setMetaDataEntry("id", EMPTY_QUALITY_CHANGES_CONTAINER_ID) empty_quality_changes_container.setMetaDataEntry("type", "quality_changes") empty_quality_changes_container.setMetaDataEntry("quality_type", "not_supported") +empty_quality_changes_container.setMetaDataEntry("intent_category", "not_supported") + +# Empty intent +EMPTY_INTENT_CONTAINER_ID = "empty_intent" +empty_intent_container = copy.deepcopy(empty_container) +empty_intent_container.setMetaDataEntry("id", EMPTY_INTENT_CONTAINER_ID) +empty_intent_container.setMetaDataEntry("type", "intent") +empty_intent_container.setMetaDataEntry("intent_category", "default") +empty_intent_container.setName(catalog.i18nc("@info:No intent profile selected", "Default")) + + +# All empty container IDs set +ALL_EMPTY_CONTAINER_ID_SET = { + EMPTY_CONTAINER_ID, + EMPTY_DEFINITION_CHANGES_CONTAINER_ID, + EMPTY_VARIANT_CONTAINER_ID, + EMPTY_MATERIAL_CONTAINER_ID, + EMPTY_QUALITY_CONTAINER_ID, + EMPTY_QUALITY_CHANGES_CONTAINER_ID, + EMPTY_INTENT_CONTAINER_ID +} + + +# Convenience function to check if a container ID represents an empty container. +def isEmptyContainer(container_id: str) -> bool: + return container_id in ALL_EMPTY_CONTAINER_ID_SET __all__ = ["EMPTY_CONTAINER_ID", @@ -52,5 +83,9 @@ __all__ = ["EMPTY_CONTAINER_ID", "EMPTY_QUALITY_CHANGES_CONTAINER_ID", "empty_quality_changes_container", "EMPTY_QUALITY_CONTAINER_ID", - "empty_quality_container" + "empty_quality_container", + "ALL_EMPTY_CONTAINER_ID_SET", + "isEmptyContainer", + "EMPTY_INTENT_CONTAINER_ID", + "empty_intent_container" ] diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index cf07b143c6..6fcf0da6cf 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -87,7 +87,7 @@ class SingleInstance: if command == "clear-all": self._application.callLater(lambda: self._application.deleteAll()) - # Command: Load a model file + # Command: Load a model or project file elif command == "open": self._application.callLater(lambda f = payload["filePath"]: self._application._openFile(f)) diff --git a/cura/Snapshot.py b/cura/Snapshot.py index b730c1fdcf..353b5ae17c 100644 --- a/cura/Snapshot.py +++ b/cura/Snapshot.py @@ -48,12 +48,12 @@ class Snapshot: # determine zoom and look at bbox = None for node in DepthFirstIterator(root): - if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible() and not node.callDecoration("isNonThumbnailVisibleMesh"): - if bbox is None: - bbox = node.getBoundingBox() - else: - bbox = bbox + node.getBoundingBox() - + if not getattr(node, "_outside_buildarea", False): + if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible() and not node.callDecoration("isNonThumbnailVisibleMesh"): + if bbox is None: + bbox = node.getBoundingBox() + else: + bbox = bbox + node.getBoundingBox() # If there is no bounding box, it means that there is no model in the buildplate if bbox is None: return None @@ -66,7 +66,7 @@ class Snapshot: looking_from_offset = Vector(-1, 1, 2) if size > 0: # determine the watch distance depending on the size - looking_from_offset = looking_from_offset * size * 1.3 + looking_from_offset = looking_from_offset * size * 1.75 camera.setPosition(look_at + looking_from_offset) camera.lookAt(look_at) @@ -85,8 +85,10 @@ class Snapshot: preview_pass.setCamera(camera) preview_pass.render() pixel_output = preview_pass.getOutput() - - min_x, max_x, min_y, max_y = Snapshot.getImageBoundaries(pixel_output) + try: + min_x, max_x, min_y, max_y = Snapshot.getImageBoundaries(pixel_output) + except ValueError: + return None size = max((max_x - min_x) / render_width, (max_y - min_y) / render_height) if size > 0.5 or satisfied: diff --git a/cura/Stages/CuraStage.py b/cura/Stages/CuraStage.py index 844b0d0768..6c4d46dd72 100644 --- a/cura/Stages/CuraStage.py +++ b/cura/Stages/CuraStage.py @@ -1,29 +1,32 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from PyQt5.QtCore import pyqtProperty, QUrl - -from UM.Stage import Stage - - -# Since Cura has a few pre-defined "space claims" for the locations of certain components, we've provided some structure -# to indicate this. -# * The StageMenuComponent is the horizontal area below the stage bar. This should be used to show stage specific -# buttons and elements. This component will be drawn over the bar & main component. -# * The MainComponent is the component that will be drawn starting from the bottom of the stageBar and fills the rest -# of the screen. -class CuraStage(Stage): - def __init__(self, parent = None) -> None: - super().__init__(parent) - - @pyqtProperty(str, constant = True) - def stageId(self) -> str: - return self.getPluginId() - - @pyqtProperty(QUrl, constant = True) - def mainComponent(self) -> QUrl: - return self.getDisplayComponent("main") - - @pyqtProperty(QUrl, constant = True) - def stageMenuComponent(self) -> QUrl: - return self.getDisplayComponent("menu") \ No newline at end of file +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import pyqtProperty, QUrl + +from UM.Stage import Stage + + +# Since Cura has a few pre-defined "space claims" for the locations of certain components, we've provided some structure +# to indicate this. +# * The StageMenuComponent is the horizontal area below the stage bar. This should be used to show stage specific +# buttons and elements. This component will be drawn over the bar & main component. +# * The MainComponent is the component that will be drawn starting from the bottom of the stageBar and fills the rest +# of the screen. +class CuraStage(Stage): + def __init__(self, parent = None) -> None: + super().__init__(parent) + + @pyqtProperty(str, constant = True) + def stageId(self) -> str: + return self.getPluginId() + + @pyqtProperty(QUrl, constant = True) + def mainComponent(self) -> QUrl: + return self.getDisplayComponent("main") + + @pyqtProperty(QUrl, constant = True) + def stageMenuComponent(self) -> QUrl: + return self.getDisplayComponent("menu") + + +__all__ = ["CuraStage"] diff --git a/cura/Stages/__init__.py b/cura/Stages/__init__.py index 2977645166..e69de29bb2 100644 --- a/cura/Stages/__init__.py +++ b/cura/Stages/__init__.py @@ -1,2 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. diff --git a/cura/UI/AddPrinterPagesModel.py b/cura/UI/AddPrinterPagesModel.py new file mode 100644 index 0000000000..d40da59b2a --- /dev/null +++ b/cura/UI/AddPrinterPagesModel.py @@ -0,0 +1,31 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from .WelcomePagesModel import WelcomePagesModel + + +# +# This Qt ListModel is more or less the same the WelcomePagesModel, except that this model is only for adding a printer, +# so only the steps for adding a printer is included. +# +class AddPrinterPagesModel(WelcomePagesModel): + + def initialize(self) -> None: + self._pages.append({"id": "add_network_or_local_printer", + "page_url": self._getBuiltinWelcomePagePath("AddNetworkOrLocalPrinterContent.qml"), + "next_page_id": "machine_actions", + "next_page_button_text": self._catalog.i18nc("@action:button", "Add"), + "previous_page_button_text": self._catalog.i18nc("@action:button", "Cancel"), + }) + self._pages.append({"id": "add_printer_by_ip", + "page_url": self._getBuiltinWelcomePagePath("AddPrinterByIpContent.qml"), + "next_page_id": "machine_actions", + }) + self._pages.append({"id": "machine_actions", + "page_url": self._getBuiltinWelcomePagePath("FirstStartMachineActionsContent.qml"), + "should_show_function": self.shouldShowMachineActions, + }) + self.setItems(self._pages) + + +__all__ = ["AddPrinterPagesModel"] diff --git a/cura/CuraSplashScreen.py b/cura/UI/CuraSplashScreen.py similarity index 94% rename from cura/CuraSplashScreen.py rename to cura/UI/CuraSplashScreen.py index 77c9ad1427..05231c106d 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/UI/CuraSplashScreen.py @@ -56,11 +56,11 @@ class CuraSplashScreen(QSplashScreen): if buildtype: version[0] += " (%s)" % buildtype - # draw version text + # Draw version text font = QFont() # Using system-default font here font.setPixelSize(37) painter.setFont(font) - painter.drawText(215, 66, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0]) + painter.drawText(60, 66, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0]) if len(version) > 1: font.setPixelSize(16) painter.setFont(font) @@ -68,14 +68,14 @@ class CuraSplashScreen(QSplashScreen): painter.drawText(247, 105, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1]) painter.setPen(QColor(255, 255, 255, 255)) - # draw the loading image + # Draw the loading image pen = QPen() pen.setWidth(6 * self._scale) pen.setColor(QColor(32, 166, 219, 255)) painter.setPen(pen) painter.drawArc(60, 150, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) - # draw message text + # Draw message text if self._current_message: font = QFont() # Using system-default font here font.setPixelSize(13) diff --git a/cura/MachineActionManager.py b/cura/UI/MachineActionManager.py similarity index 98% rename from cura/MachineActionManager.py rename to cura/UI/MachineActionManager.py index db0f7bfbff..aa90e909e2 100644 --- a/cura/MachineActionManager.py +++ b/cura/UI/MachineActionManager.py @@ -12,7 +12,7 @@ from UM.PluginRegistry import PluginRegistry # So MachineAction can be added as if TYPE_CHECKING: from cura.CuraApplication import CuraApplication from cura.Settings.GlobalStack import GlobalStack - from .MachineAction import MachineAction + from cura.MachineAction import MachineAction ## Raised when trying to add an unknown machine action as a required action @@ -136,7 +136,7 @@ class MachineActionManager(QObject): # action multiple times). # \param definition_id The ID of the definition that you want to get the "on added" actions for. # \returns List of actions. - @pyqtSlot(str, result="QVariantList") + @pyqtSlot(str, result = "QVariantList") def getFirstStartActions(self, definition_id: str) -> List["MachineAction"]: if definition_id in self._first_start_actions: return self._first_start_actions[definition_id] diff --git a/cura/UI/MachineSettingsManager.py b/cura/UI/MachineSettingsManager.py new file mode 100644 index 0000000000..671bb0ece0 --- /dev/null +++ b/cura/UI/MachineSettingsManager.py @@ -0,0 +1,84 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional, TYPE_CHECKING +from PyQt5.QtCore import QObject, pyqtSlot + +from UM.i18n import i18nCatalog + +from cura.Machines.ContainerTree import ContainerTree + +if TYPE_CHECKING: + from cura.CuraApplication import CuraApplication + + +# +# This manager provides (convenience) functions to the Machine Settings Dialog QML to update certain machine settings. +# +class MachineSettingsManager(QObject): + + def __init__(self, application: "CuraApplication", parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + self._i18n_catalog = i18nCatalog("cura") + + self._application = application + + # Force rebuilding the build volume by reloading the global container stack. This is a bit of a hack, but it seems + # quite enough. + @pyqtSlot() + def forceUpdate(self) -> None: + self._application.getMachineManager().globalContainerChanged.emit() + + # Function for the Machine Settings panel (QML) to update the compatible material diameter after a user has changed + # an extruder's compatible material diameter. This ensures that after the modification, changes can be notified + # and updated right away. + @pyqtSlot(int) + def updateMaterialForDiameter(self, extruder_position: int) -> None: + # Updates the material container to a material that matches the material diameter set for the printer + self._application.getMachineManager().updateMaterialWithVariant(str(extruder_position)) + + @pyqtSlot(int) + def setMachineExtruderCount(self, extruder_count: int) -> None: + # Note: this method was in this class before, but since it's quite generic and other plugins also need it + # it was moved to the machine manager instead. Now this method just calls the machine manager. + self._application.getMachineManager().setActiveMachineExtruderCount(extruder_count) + + # Function for the Machine Settings panel (QML) to update after the user changes "Number of Extruders". + # + # fieldOfView: The Ultimaker 2 family (not 2+) does not have materials in Cura by default, because the material is + # to be set on the printer. But when switching to Marlin flavor, the printer firmware can not change/insert material + # settings on the fly so they need to be configured in Cura. So when switching between gcode flavors, materials may + # need to be enabled/disabled. + @pyqtSlot() + def updateHasMaterialsMetadata(self): + machine_manager = self._application.getMachineManager() + global_stack = machine_manager.activeMachine + + definition = global_stack.definition + if definition.getProperty("machine_gcode_flavor", "value") != "UltiGCode" or definition.getMetaDataEntry( + "has_materials", False): + # In other words: only continue for the UM2 (extended), but not for the UM2+ + return + + extruder_positions = list(global_stack.extruders.keys()) + has_materials = global_stack.getProperty("machine_gcode_flavor", "value") != "UltiGCode" + + material_node = None + if has_materials: + global_stack.setMetaDataEntry("has_materials", True) + else: + # The metadata entry is stored in an ini, and ini files are parsed as strings only. + # Because any non-empty string evaluates to a boolean True, we have to remove the entry to make it False. + if "has_materials" in global_stack.getMetaData(): + global_stack.removeMetaDataEntry("has_materials") + + # set materials + for position in extruder_positions: + if has_materials: + extruder = global_stack.extruderList[int(position)] + approximate_diameter = extruder.getApproximateMaterialDiameter() + variant_node = ContainerTree.getInstance().machines[global_stack.definition.getId()].variants[extruder.variant.getName()] + material_node = variant_node.preferredMaterial(approximate_diameter) + machine_manager.setMaterial(position, material_node) + + self.forceUpdate() diff --git a/cura/UI/ObjectsModel.py b/cura/UI/ObjectsModel.py new file mode 100644 index 0000000000..5526b41098 --- /dev/null +++ b/cura/UI/ObjectsModel.py @@ -0,0 +1,184 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from UM.Logger import Logger +import re +from typing import Any, Dict, List, Optional, Union + +from PyQt5.QtCore import QTimer, Qt + +from UM.Application import Application +from UM.Qt.ListModel import ListModel +from UM.Scene.Camera import Camera +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Scene.SceneNode import SceneNode +from UM.Scene.Selection import Selection +from UM.i18n import i18nCatalog + +catalog = i18nCatalog("cura") + + +# Simple convenience class to keep stuff together. Since we're still stuck on python 3.5, we can't use the full +# typed named tuple, so we have to do it like this. +# Once we are at python 3.6, feel free to change this to a named tuple. +class _NodeInfo: + def __init__(self, index_to_node: Optional[Dict[int, SceneNode]] = None, nodes_to_rename: Optional[List[SceneNode]] = None, is_group: bool = False) -> None: + if index_to_node is None: + index_to_node = {} + if nodes_to_rename is None: + nodes_to_rename = [] + self.index_to_node = index_to_node # type: Dict[int, SceneNode] + self.nodes_to_rename = nodes_to_rename # type: List[SceneNode] + self.is_group = is_group # type: bool + + +## Keep track of all objects in the project +class ObjectsModel(ListModel): + NameRole = Qt.UserRole + 1 + SelectedRole = Qt.UserRole + 2 + OutsideAreaRole = Qt.UserRole + 3 + BuilplateNumberRole = Qt.UserRole + 4 + NodeRole = Qt.UserRole + 5 + + def __init__(self, parent = None) -> None: + super().__init__(parent) + + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.SelectedRole, "selected") + self.addRoleName(self.OutsideAreaRole, "outside_build_area") + self.addRoleName(self.BuilplateNumberRole, "buildplate_number") + self.addRoleName(self.NodeRole, "node") + + Application.getInstance().getController().getScene().sceneChanged.connect(self._updateSceneDelayed) + Application.getInstance().getPreferences().preferenceChanged.connect(self._updateDelayed) + Selection.selectionChanged.connect(self._updateDelayed) + + self._update_timer = QTimer() + self._update_timer.setInterval(200) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._update) + + self._build_plate_number = -1 + + self._group_name_template = catalog.i18nc("@label", "Group #{group_nr}") + self._group_name_prefix = self._group_name_template.split("#")[0] + + self._naming_regex = re.compile("^(.+)\(([0-9]+)\)$") + + def setActiveBuildPlate(self, nr: int) -> None: + if self._build_plate_number != nr: + self._build_plate_number = nr + self._update() + + def _updateSceneDelayed(self, source) -> None: + if not isinstance(source, Camera): + self._update_timer.start() + + def _updateDelayed(self, *args) -> None: + self._update_timer.start() + + def _shouldNodeBeHandled(self, node: SceneNode) -> bool: + is_group = bool(node.callDecoration("isGroup")) + if not node.callDecoration("isSliceable") and not is_group: + return False + + parent = node.getParent() + if parent and parent.callDecoration("isGroup"): + return False # Grouped nodes don't need resetting as their parent (the group) is resetted) + + node_build_plate_number = node.callDecoration("getBuildPlateNumber") + if Application.getInstance().getPreferences().getValue("view/filter_current_build_plate") and node_build_plate_number != self._build_plate_number: + return False + + return True + + def _renameNodes(self, node_info_dict: Dict[str, _NodeInfo]) -> List[SceneNode]: + # Go through all names and find out the names for all nodes that need to be renamed. + all_nodes = [] # type: List[SceneNode] + for name, node_info in node_info_dict.items(): + # First add the ones that do not need to be renamed. + for node in node_info.index_to_node.values(): + all_nodes.append(node) + + # Generate new names for the nodes that need to be renamed + current_index = 0 + for node in node_info.nodes_to_rename: + current_index += 1 + while current_index in node_info.index_to_node: + current_index += 1 + + if not node_info.is_group: + new_group_name = "{0}({1})".format(name, current_index) + else: + new_group_name = "{0}#{1}".format(name, current_index) + + old_name = node.getName() + node.setName(new_group_name) + Logger.log("d", "Node [%s] renamed to [%s]", old_name, new_group_name) + all_nodes.append(node) + return all_nodes + + def _update(self, *args) -> None: + nodes = [] # type: List[Dict[str, Union[str, int, bool, SceneNode]]] + name_to_node_info_dict = {} # type: Dict[str, _NodeInfo] + for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): # type: ignore + if not self._shouldNodeBeHandled(node): + continue + + is_group = bool(node.callDecoration("isGroup")) + + force_rename = False + if not is_group: + # Handle names for individual nodes + name = node.getName() + + name_match = self._naming_regex.fullmatch(name) + if name_match is None: + original_name = name + name_index = 0 + else: + original_name = name_match.groups()[0] + name_index = int(name_match.groups()[1]) + else: + # Handle names for grouped nodes + original_name = self._group_name_prefix + + current_name = node.getName() + if current_name.startswith(self._group_name_prefix): + name_index = int(current_name.split("#")[-1]) + else: + # Force rename this group because this node has not been named as a group yet, probably because + # it's a newly created group. + name_index = 0 + force_rename = True + + if original_name not in name_to_node_info_dict: + # Keep track of 2 things: + # - known indices for nodes which doesn't need to be renamed + # - a list of nodes that need to be renamed. When renaming then, we should avoid using the known indices. + name_to_node_info_dict[original_name] = _NodeInfo(is_group = is_group) + node_info = name_to_node_info_dict[original_name] + if not force_rename and name_index not in node_info.index_to_node: + node_info.index_to_node[name_index] = node + else: + node_info.nodes_to_rename.append(node) + + all_nodes = self._renameNodes(name_to_node_info_dict) + + for node in all_nodes: + if hasattr(node, "isOutsideBuildArea"): + is_outside_build_area = node.isOutsideBuildArea() # type: ignore + else: + is_outside_build_area = False + + node_build_plate_number = node.callDecoration("getBuildPlateNumber") + + nodes.append({ + "name": node.getName(), + "selected": Selection.isSelected(node), + "outside_build_area": is_outside_build_area, + "buildplate_number": node_build_plate_number, + "node": node + }) + + nodes = sorted(nodes, key=lambda n: n["name"]) + self.setItems(nodes) diff --git a/cura/PrintInformation.py b/cura/UI/PrintInformation.py similarity index 98% rename from cura/PrintInformation.py rename to cura/UI/PrintInformation.py index ba7c74fd6d..abf1083836 100644 --- a/cura/PrintInformation.py +++ b/cura/UI/PrintInformation.py @@ -5,8 +5,7 @@ import json import math import os import unicodedata -import re # To create abbreviations for printer names. -from typing import Dict, List, Optional +from typing import Dict, List, Optional, TYPE_CHECKING from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty, pyqtSlot @@ -16,8 +15,6 @@ from UM.Scene.SceneNode import SceneNode from UM.i18n import i18nCatalog from UM.MimeTypeDatabase import MimeTypeDatabase, MimeTypeNotFoundError -from typing import TYPE_CHECKING - if TYPE_CHECKING: from cura.CuraApplication import CuraApplication @@ -84,6 +81,7 @@ class PrintInformation(QObject): "support_interface": catalog.i18nc("@tooltip", "Support Interface"), "support": catalog.i18nc("@tooltip", "Support"), "skirt": catalog.i18nc("@tooltip", "Skirt"), + "prime_tower": catalog.i18nc("@tooltip", "Prime Tower"), "travel": catalog.i18nc("@tooltip", "Travel"), "retract": catalog.i18nc("@tooltip", "Retractions"), "none": catalog.i18nc("@tooltip", "Other") @@ -199,11 +197,7 @@ class PrintInformation(QObject): material_preference_values = json.loads(self._application.getInstance().getPreferences().getValue("cura/material_settings")) - extruder_stacks = global_stack.extruders - - for position in extruder_stacks: - extruder_stack = extruder_stacks[position] - index = int(position) + for index, extruder_stack in enumerate(global_stack.extruderList): if index >= len(self._material_amounts): continue amount = self._material_amounts[index] diff --git a/cura/UI/RecommendedMode.py b/cura/UI/RecommendedMode.py new file mode 100644 index 0000000000..47b617740a --- /dev/null +++ b/cura/UI/RecommendedMode.py @@ -0,0 +1,49 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import QObject, pyqtSlot + +from cura import CuraApplication + +# +# This object contains helper/convenience functions for Recommended mode. +# +class RecommendedMode(QObject): + + # Sets to use the adhesion or not for the "Adhesion" CheckBox in Recommended mode. + @pyqtSlot(bool) + def setAdhesion(self, checked: bool) -> None: + application = CuraApplication.CuraApplication.getInstance() + global_stack = application.getMachineManager().activeMachine + if global_stack is None: + return + + # Remove the adhesion type value set by the user. + adhesion_type_key = "adhesion_type" + user_changes_container = global_stack.userChanges + if adhesion_type_key in user_changes_container.getAllKeys(): + user_changes_container.removeInstance(adhesion_type_key) + + # Get the default value of adhesion type after user's value has been removed. + # skirt and none are counted as "no adhesion", the others are considered as "with adhesion". The conditions are + # as the following: + # - if the user checks the adhesion checkbox, get the default value (including the custom quality) for adhesion + # type. + # (1) If the default value is "skirt" or "none" (no adhesion), set adhesion_type to "brim". + # (2) If the default value is "with adhesion", do nothing. + # - if the user unchecks the adhesion checkbox, get the default value (including the custom quality) for + # adhesion type. + # (1) If the default value is "skirt" or "none" (no adhesion), do nothing. + # (2) Otherwise, set adhesion_type to "skirt". + value = global_stack.getProperty(adhesion_type_key, "value") + if checked: + if value in ("skirt", "none"): + value = "brim" + else: + if value not in ("skirt", "none"): + value = "skirt" + + user_changes_container.setProperty(adhesion_type_key, "value", value) + + +__all__ = ["RecommendedMode"] diff --git a/cura/UI/TextManager.py b/cura/UI/TextManager.py new file mode 100644 index 0000000000..86838a0b48 --- /dev/null +++ b/cura/UI/TextManager.py @@ -0,0 +1,69 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import collections +from typing import Optional, Dict, List, cast + +from PyQt5.QtCore import QObject, pyqtSlot + +from UM.Resources import Resources +from UM.Version import Version + + +# +# This manager provides means to load texts to QML. +# +class TextManager(QObject): + + def __init__(self, parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + + self._change_log_text = "" + + @pyqtSlot(result = str) + def getChangeLogText(self) -> str: + if not self._change_log_text: + self._change_log_text = self._loadChangeLogText() + return self._change_log_text + + def _loadChangeLogText(self) -> str: + # Load change log texts and organize them with a dict + file_path = Resources.getPath(Resources.Texts, "change_log.txt") + change_logs_dict = {} # type: Dict[Version, Dict[str, List[str]]] + with open(file_path, "r", encoding = "utf-8") as f: + open_version = None # type: Optional[Version] + open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog + for line in f: + line = line.replace("\n", "") + if "[" in line and "]" in line: + line = line.replace("[", "") + line = line.replace("]", "") + open_version = Version(line) + if open_version > Version([14, 99, 99]): # Bit of a hack: We released the 15.x.x versions before 2.x + open_version = Version([0, open_version.getMinor(), open_version.getRevision(), open_version.getPostfixVersion()]) + open_header = "" + change_logs_dict[open_version] = collections.OrderedDict() + elif line.startswith("*"): + open_header = line.replace("*", "") + change_logs_dict[cast(Version, open_version)][open_header] = [] + elif line != "": + if open_header not in change_logs_dict[cast(Version, open_version)]: + change_logs_dict[cast(Version, open_version)][open_header] = [] + change_logs_dict[cast(Version, open_version)][open_header].append(line) + + # Format changelog text + content = "" + for version in sorted(change_logs_dict.keys(), reverse = True): + text_version = version + if version < Version([1, 0, 0]): # Bit of a hack: We released the 15.x.x versions before 2.x + text_version = Version([15, version.getMinor(), version.getRevision(), version.getPostfixVersion()]) + content += "

" + str(text_version) + "


" + content += "" + for change in change_logs_dict[version]: + if str(change) != "": + content += "" + str(change) + "
" + for line in change_logs_dict[version][change]: + content += str(line) + "
" + content += "
" + + return content diff --git a/cura/UI/WelcomePagesModel.py b/cura/UI/WelcomePagesModel.py new file mode 100644 index 0000000000..c16ec3763e --- /dev/null +++ b/cura/UI/WelcomePagesModel.py @@ -0,0 +1,294 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from collections import deque +import os +from typing import TYPE_CHECKING, Optional, List, Dict, Any + +from PyQt5.QtCore import QUrl, Qt, pyqtSlot, pyqtProperty, pyqtSignal + +from UM.i18n import i18nCatalog +from UM.Logger import Logger +from UM.Qt.ListModel import ListModel +from UM.Resources import Resources + +if TYPE_CHECKING: + from PyQt5.QtCore import QObject + from cura.CuraApplication import CuraApplication + + +# +# This is the Qt ListModel that contains all welcome pages data. Each page is a page that can be shown as a step in the +# welcome wizard dialog. Each item in this ListModel represents a page, which contains the following fields: +# +# - id : A unique page_id which can be used in function goToPage(page_id) +# - page_url : The QUrl to the QML file that contains the content of this page +# - next_page_id : (OPTIONAL) The next page ID to go to when this page finished. This is optional. If this is not +# provided, it will go to the page with the current index + 1 +# - next_page_button_text: (OPTIONAL) The text to show for the "next" button, by default it's the translated text of +# "Next". Note that each step QML can decide whether to use this text or not, so it's not +# mandatory. +# - should_show_function : (OPTIONAL) An optional function that returns True/False indicating if this page should be +# shown. By default all pages should be shown. If a function returns False, that page will +# be skipped and its next page will be shown. +# +# Note that in any case, a page that has its "should_show_function" == False will ALWAYS be skipped. +# +class WelcomePagesModel(ListModel): + + IdRole = Qt.UserRole + 1 # Page ID + PageUrlRole = Qt.UserRole + 2 # URL to the page's QML file + NextPageIdRole = Qt.UserRole + 3 # The next page ID it should go to + NextPageButtonTextRole = Qt.UserRole + 4 # The text for the next page button + PreviousPageButtonTextRole = Qt.UserRole + 5 # The text for the previous page button + + def __init__(self, application: "CuraApplication", parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + + self.addRoleName(self.IdRole, "id") + self.addRoleName(self.PageUrlRole, "page_url") + self.addRoleName(self.NextPageIdRole, "next_page_id") + self.addRoleName(self.NextPageButtonTextRole, "next_page_button_text") + self.addRoleName(self.PreviousPageButtonTextRole, "previous_page_button_text") + + self._application = application + self._catalog = i18nCatalog("cura") + + self._default_next_button_text = self._catalog.i18nc("@action:button", "Next") + + self._pages = [] # type: List[Dict[str, Any]] + + self._current_page_index = 0 + # Store all the previous page indices so it can go back. + self._previous_page_indices_stack = deque() # type: deque + + # If the welcome flow should be shown. It can show the complete flow or just the changelog depending on the + # specific case. See initialize() for how this variable is set. + self._should_show_welcome_flow = False + + allFinished = pyqtSignal() # emitted when all steps have been finished + currentPageIndexChanged = pyqtSignal() + + @pyqtProperty(int, notify = currentPageIndexChanged) + def currentPageIndex(self) -> int: + return self._current_page_index + + # Returns a float number in [0, 1] which indicates the current progress. + @pyqtProperty(float, notify = currentPageIndexChanged) + def currentProgress(self) -> float: + if len(self._items) == 0: + return 0 + else: + return self._current_page_index / len(self._items) + + # Indicates if the current page is the last page. + @pyqtProperty(bool, notify = currentPageIndexChanged) + def isCurrentPageLast(self) -> bool: + return self._current_page_index == len(self._items) - 1 + + def _setCurrentPageIndex(self, page_index: int) -> None: + if page_index != self._current_page_index: + self._previous_page_indices_stack.append(self._current_page_index) + self._current_page_index = page_index + self.currentPageIndexChanged.emit() + + # Ends the Welcome-Pages. Put as a separate function for cases like the 'decline' in the User-Agreement. + @pyqtSlot() + def atEnd(self) -> None: + self.allFinished.emit() + self.resetState() + + # Goes to the next page. + # If "from_index" is given, it will look for the next page to show starting from the "from_index" page instead of + # the "self._current_page_index". + @pyqtSlot() + def goToNextPage(self, from_index: Optional[int] = None) -> None: + # Look for the next page that should be shown + current_index = self._current_page_index if from_index is None else from_index + while True: + page_item = self._items[current_index] + + # Check if there's a "next_page_id" assigned. If so, go to that page. Otherwise, go to the page with the + # current index + 1. + next_page_id = page_item.get("next_page_id") + next_page_index = current_index + 1 + if next_page_id: + idx = self.getPageIndexById(next_page_id) + if idx is None: + # FIXME: If we cannot find the next page, we cannot do anything here. + Logger.log("e", "Cannot find page with ID [%s]", next_page_id) + return + next_page_index = idx + + # If we have reached the last page, emit allFinished signal and reset. + if next_page_index == len(self._items): + self.atEnd() + return + + # Check if the this page should be shown (default yes), if not, keep looking for the next one. + next_page_item = self.getItem(next_page_index) + if self._shouldPageBeShown(next_page_index): + break + + Logger.log("d", "Page [%s] should not be displayed, look for the next page.", next_page_item["id"]) + current_index = next_page_index + + # Move to the next page + self._setCurrentPageIndex(next_page_index) + + # Goes to the previous page. If there's no previous page, do nothing. + @pyqtSlot() + def goToPreviousPage(self) -> None: + if len(self._previous_page_indices_stack) == 0: + Logger.log("i", "No previous page, do nothing") + return + + previous_page_index = self._previous_page_indices_stack.pop() + self._current_page_index = previous_page_index + self.currentPageIndexChanged.emit() + + # Sets the current page to the given page ID. If the page ID is not found, do nothing. + @pyqtSlot(str) + def goToPage(self, page_id: str) -> None: + page_index = self.getPageIndexById(page_id) + if page_index is None: + # FIXME: If we cannot find the next page, we cannot do anything here. + Logger.log("e", "Cannot find page with ID [%s], go to the next page by default", page_index) + self.goToNextPage() + return + + if self._shouldPageBeShown(page_index): + # Move to that page if it should be shown + self._setCurrentPageIndex(page_index) + else: + # Find the next page to show starting from the "page_index" + self.goToNextPage(from_index = page_index) + + # Checks if the page with the given index should be shown by calling the "should_show_function" associated with it. + # If the function is not present, returns True (show page by default). + def _shouldPageBeShown(self, page_index: int) -> bool: + next_page_item = self.getItem(page_index) + should_show_function = next_page_item.get("should_show_function", lambda: True) + return should_show_function() + + # Resets the state of the WelcomePagesModel. This functions does the following: + # - Resets current_page_index to 0 + # - Clears the previous page indices stack + @pyqtSlot() + def resetState(self) -> None: + self._current_page_index = 0 + self._previous_page_indices_stack.clear() + + self.currentPageIndexChanged.emit() + + shouldShowWelcomeFlowChanged = pyqtSignal() + + @pyqtProperty(bool, notify = shouldShowWelcomeFlowChanged) + def shouldShowWelcomeFlow(self) -> bool: + return self._should_show_welcome_flow + + # Gets the page index with the given page ID. If the page ID doesn't exist, returns None. + def getPageIndexById(self, page_id: str) -> Optional[int]: + page_idx = None + for idx, page_item in enumerate(self._items): + if page_item["id"] == page_id: + page_idx = idx + break + return page_idx + + # Convenience function to get QUrl path to pages that's located in "resources/qml/WelcomePages". + def _getBuiltinWelcomePagePath(self, page_filename: str) -> "QUrl": + from cura.CuraApplication import CuraApplication + return QUrl.fromLocalFile(Resources.getPath(CuraApplication.ResourceTypes.QmlFiles, + os.path.join("WelcomePages", page_filename))) + + # FIXME: HACKs for optimization that we don't update the model every time the active machine gets changed. + def _onActiveMachineChanged(self) -> None: + self._application.getMachineManager().globalContainerChanged.disconnect(self._onActiveMachineChanged) + self._initialize(update_should_show_flag = False) + + def initialize(self) -> None: + self._application.getMachineManager().globalContainerChanged.connect(self._onActiveMachineChanged) + self._initialize() + + def _initialize(self, update_should_show_flag: bool = True) -> None: + show_whatsnew_only = False + if update_should_show_flag: + has_active_machine = self._application.getMachineManager().activeMachine is not None + has_app_just_upgraded = self._application.hasJustUpdatedFromOldVersion() + + # Only show the what's new dialog if there's no machine and we have just upgraded + show_complete_flow = not has_active_machine + show_whatsnew_only = has_active_machine and has_app_just_upgraded + + # FIXME: This is a hack. Because of the circular dependency between MachineManager, ExtruderManager, and + # possibly some others, setting the initial active machine is not done when the MachineManager gets initialized. + # So at this point, we don't know if there will be an active machine or not. It could be that the active machine + # files are corrupted so we cannot rely on Preferences either. This makes sure that once the active machine + # gets changed, this model updates the flags, so it can decide whether to show the welcome flow or not. + should_show_welcome_flow = show_complete_flow or show_whatsnew_only + if should_show_welcome_flow != self._should_show_welcome_flow: + self._should_show_welcome_flow = should_show_welcome_flow + self.shouldShowWelcomeFlowChanged.emit() + + # All pages + all_pages_list = [{"id": "welcome", + "page_url": self._getBuiltinWelcomePagePath("WelcomeContent.qml"), + }, + {"id": "user_agreement", + "page_url": self._getBuiltinWelcomePagePath("UserAgreementContent.qml"), + }, + {"id": "whats_new", + "page_url": self._getBuiltinWelcomePagePath("WhatsNewContent.qml"), + }, + {"id": "data_collections", + "page_url": self._getBuiltinWelcomePagePath("DataCollectionsContent.qml"), + }, + {"id": "add_network_or_local_printer", + "page_url": self._getBuiltinWelcomePagePath("AddNetworkOrLocalPrinterContent.qml"), + "next_page_id": "machine_actions", + }, + {"id": "add_printer_by_ip", + "page_url": self._getBuiltinWelcomePagePath("AddPrinterByIpContent.qml"), + "next_page_id": "machine_actions", + }, + {"id": "machine_actions", + "page_url": self._getBuiltinWelcomePagePath("FirstStartMachineActionsContent.qml"), + "next_page_id": "cloud", + "should_show_function": self.shouldShowMachineActions, + }, + {"id": "cloud", + "page_url": self._getBuiltinWelcomePagePath("CloudContent.qml"), + }, + ] + + pages_to_show = all_pages_list + if show_whatsnew_only: + pages_to_show = list(filter(lambda x: x["id"] == "whats_new", all_pages_list)) + + self._pages = pages_to_show + self.setItems(self._pages) + + # For convenience, inject the default "next" button text to each item if it's not present. + def setItems(self, items: List[Dict[str, Any]]) -> None: + for item in items: + if "next_page_button_text" not in item: + item["next_page_button_text"] = self._default_next_button_text + + super().setItems(items) + + # Indicates if the machine action panel should be shown by checking if there's any first start machine actions + # available. + def shouldShowMachineActions(self) -> bool: + global_stack = self._application.getMachineManager().activeMachine + if global_stack is None: + return False + + definition_id = global_stack.definition.getId() + first_start_actions = self._application.getMachineActionManager().getFirstStartActions(definition_id) + return len([action for action in first_start_actions if action.needsUserInteraction()]) > 0 + + def addPage(self) -> None: + pass + + +__all__ = ["WelcomePagesModel"] diff --git a/cura/UI/WhatsNewPagesModel.py b/cura/UI/WhatsNewPagesModel.py new file mode 100644 index 0000000000..5b968ae574 --- /dev/null +++ b/cura/UI/WhatsNewPagesModel.py @@ -0,0 +1,22 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from .WelcomePagesModel import WelcomePagesModel + + +# +# This Qt ListModel is more or less the same the WelcomePagesModel, except that this model is only for showing the +# "what's new" page. This is also used in the "Help" menu to show the changes log. +# +class WhatsNewPagesModel(WelcomePagesModel): + + def initialize(self) -> None: + self._pages = [] + self._pages.append({"id": "whats_new", + "page_url": self._getBuiltinWelcomePagePath("WhatsNewContent.qml"), + "next_page_button_text": self._catalog.i18nc("@action:button", "Close"), + }) + self.setItems(self._pages) + + +__all__ = ["WhatsNewPagesModel"] diff --git a/cura/UI/__init__.py b/cura/UI/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cura/Utils/Decorators.py b/cura/Utils/Decorators.py new file mode 100644 index 0000000000..9275ee6ce9 --- /dev/null +++ b/cura/Utils/Decorators.py @@ -0,0 +1,30 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import functools +import re +from typing import Callable + +# An API version must be a semantic version "x.y.z" where ".z" is optional. So the valid formats are as follows: +# - x.y.z +# - x.y +SEMANTIC_VERSION_REGEX = re.compile(r"^[0-9]+\.[0-9]+(\.[0-9]+)?$") + + +## Decorator for functions that belong to a set of APIs. For now, this should only be used for officially supported +# APIs, meaning that those APIs should be versioned and maintained. +# +# \param since_version The earliest version since when this API becomes supported. This means that since this version, +# this API function is supposed to behave the same. This parameter is not used. It's just a +# documentation. +def api(since_version: str) -> Callable: + # Make sure that APi versions are semantic versions + if not SEMANTIC_VERSION_REGEX.fullmatch(since_version): + raise ValueError("API since_version [%s] is not a semantic version." % since_version) + + def api_decorator(function): + @functools.wraps(function) + def api_wrapper(*args, **kwargs): + return function(*args, **kwargs) + return api_wrapper + return api_decorator diff --git a/cura/Utils/NetworkingUtil.py b/cura/Utils/NetworkingUtil.py new file mode 100644 index 0000000000..b13f7903b9 --- /dev/null +++ b/cura/Utils/NetworkingUtil.py @@ -0,0 +1,44 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import socket +from typing import Optional + +from PyQt5.QtCore import QObject, pyqtSlot + + +# +# This is a QObject because some of the functions can be used (and are useful) in QML. +# +class NetworkingUtil(QObject): + + def __init__(self, parent: Optional["QObject"] = None) -> None: + super().__init__(parent = parent) + + # Checks if the given string is a valid IPv4 address. + @pyqtSlot(str, result = bool) + def isIPv4(self, address: str) -> bool: + try: + socket.inet_pton(socket.AF_INET, address) + result = True + except: + result = False + return result + + # Checks if the given string is a valid IPv6 address. + @pyqtSlot(str, result = bool) + def isIPv6(self, address: str) -> bool: + try: + socket.inet_pton(socket.AF_INET6, address) + result = True + except: + result = False + return result + + # Checks if the given string is a valid IPv4 or IPv6 address. + @pyqtSlot(str, result = bool) + def isValidIP(self, address: str) -> bool: + return self.isIPv4(address) or self.isIPv6(address) + + +__all__ = ["NetworkingUtil"] diff --git a/cura_app.py b/cura_app.py index 3224a5b99b..e14b4410bc 100755 --- a/cura_app.py +++ b/cura_app.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import argparse @@ -23,13 +23,17 @@ known_args = vars(parser.parse_known_args()[0]) if not known_args["debug"]: def get_cura_dir_path(): if Platform.isWindows(): - return os.path.expanduser("~/AppData/Roaming/" + CuraAppName) + appdata_path = os.getenv("APPDATA") + if not appdata_path: #Defensive against the environment variable missing (should never happen). + appdata_path = "." + return os.path.join(appdata_path, CuraAppName) elif Platform.isLinux(): return os.path.expanduser("~/.local/share/" + CuraAppName) elif Platform.isOSX(): return os.path.expanduser("~/Library/Logs/" + CuraAppName) - if hasattr(sys, "frozen"): + # Do not redirect stdout and stderr to files if we are running CLI. + if hasattr(sys, "frozen") and "cli" not in os.path.basename(sys.argv[0]).lower(): dirpath = get_cura_dir_path() os.makedirs(dirpath, exist_ok = True) sys.stdout = open(os.path.join(dirpath, "stdout.log"), "w", encoding = "utf-8") @@ -56,6 +60,14 @@ if Platform.isWindows() and hasattr(sys, "frozen"): except KeyError: pass +# GITHUB issue #6194: https://github.com/Ultimaker/Cura/issues/6194 +# With AppImage 2 on Linux, the current working directory will be somewhere in /tmp//usr, which is owned +# by root. For some reason, QDesktopServices.openUrl() requires to have a usable current working directory, +# otherwise it doesn't work. This is a workaround on Linux that before we call QDesktopServices.openUrl(), we +# switch to a directory where the user has the ownership. +if Platform.isLinux() and hasattr(sys, "frozen"): + os.chdir(os.path.expanduser("~")) + # WORKAROUND: GITHUB-704 GITHUB-708 # It looks like setuptools creates a .pth file in # the default /usr/lib which causes the default site-packages @@ -119,7 +131,10 @@ def exceptHook(hook_type, value, traceback): # Set exception hook to use the crash dialog handler sys.excepthook = exceptHook # Enable dumping traceback for all threads -faulthandler.enable(all_threads = True) +if sys.stderr: + faulthandler.enable(file = sys.stderr, all_threads = True) +else: + faulthandler.enable(file = sys.stdout, all_threads = True) # Workaround for a race condition on certain systems where there # is a race condition between Arcus and PyQt. Importing Arcus @@ -129,5 +144,37 @@ import Arcus #@UnusedImport import Savitar #@UnusedImport from cura.CuraApplication import CuraApplication + +# WORKAROUND: CURA-6739 +# The CTM file loading module in Trimesh requires the OpenCTM library to be dynamically loaded. It uses +# ctypes.util.find_library() to find libopenctm.dylib, but this doesn't seem to look in the ".app" application folder +# on Mac OS X. Adding the search path to environment variables such as DYLD_LIBRARY_PATH and DYLD_FALLBACK_LIBRARY_PATH +# makes it work. The workaround here uses DYLD_FALLBACK_LIBRARY_PATH. +if Platform.isOSX() and getattr(sys, "frozen", False): + old_env = os.environ.get("DYLD_FALLBACK_LIBRARY_PATH", "") + # This is where libopenctm.so is in the .app folder. + search_path = os.path.join(CuraApplication.getInstallPrefix(), "MacOS") + path_list = old_env.split(":") + if search_path not in path_list: + path_list.append(search_path) + os.environ["DYLD_FALLBACK_LIBRARY_PATH"] = ":".join(path_list) + import trimesh.exchange.load + os.environ["DYLD_FALLBACK_LIBRARY_PATH"] = old_env + +# WORKAROUND: CURA-6739 +# Similar CTM file loading fix for Linux, but NOTE THAT this doesn't work directly with Python 3.5.7. There's a fix +# for ctypes.util.find_library() in Python 3.6 and 3.7. That fix makes sure that find_library() will check +# LD_LIBRARY_PATH. With Python 3.5, that fix needs to be backported to make this workaround work. +if Platform.isLinux() and getattr(sys, "frozen", False): + old_env = os.environ.get("LD_LIBRARY_PATH", "") + # This is where libopenctm.so is in the AppImage. + search_path = os.path.join(CuraApplication.getInstallPrefix(), "bin") + path_list = old_env.split(":") + if search_path not in path_list: + path_list.append(search_path) + os.environ["LD_LIBRARY_PATH"] = ":".join(path_list) + import trimesh.exchange.load + os.environ["LD_LIBRARY_PATH"] = old_env + app = CuraApplication() app.run() diff --git a/docker/build.sh b/docker/build.sh new file mode 100755 index 0000000000..eb20b18c0d --- /dev/null +++ b/docker/build.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +# Abort at the first error. +set -e + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +PROJECT_DIR="$( cd "${SCRIPT_DIR}/.." && pwd )" + +# Make sure that environment variables are set properly +source /opt/rh/devtoolset-7/enable +export PATH="${CURA_BUILD_ENV_PATH}/bin:${PATH}" +export PKG_CONFIG_PATH="${CURA_BUILD_ENV_PATH}/lib/pkgconfig:${PKG_CONFIG_PATH}" + +cd "${PROJECT_DIR}" + +# +# Clone Uranium and set PYTHONPATH first +# + +# Check the branch to use: +# 1. Use the Uranium branch with the branch same if it exists. +# 2. Otherwise, use the default branch name "master" +URANIUM_BRANCH="${CI_COMMIT_REF_NAME:-master}" +output="$(git ls-remote --heads https://github.com/Ultimaker/Uranium.git "${URANIUM_BRANCH}")" +if [ -z "${output}" ]; then + echo "Could not find Uranium banch ${URANIUM_BRANCH}, fallback to use master." + URANIUM_BRANCH="master" +fi + +echo "Using Uranium branch ${URANIUM_BRANCH} ..." +git clone --depth=1 -b "${URANIUM_BRANCH}" https://github.com/Ultimaker/Uranium.git "${PROJECT_DIR}"/Uranium +export PYTHONPATH="${PROJECT_DIR}/Uranium:.:${PYTHONPATH}" + +mkdir build +cd build +cmake3 \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_PREFIX_PATH="${CURA_BUILD_ENV_PATH}" \ + -DURANIUM_DIR="${PROJECT_DIR}/Uranium" \ + -DBUILD_TESTS=ON \ + .. +make +ctest3 --output-on-failure -T Test diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 49c6995d18..20eb9b29dc 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -1,7 +1,7 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional +from typing import List, Optional, Union, TYPE_CHECKING import os.path import zipfile @@ -9,27 +9,26 @@ import numpy import Savitar -from UM.Application import Application from UM.Logger import Logger from UM.Math.Matrix import Matrix from UM.Math.Vector import Vector from UM.Mesh.MeshBuilder import MeshBuilder from UM.Mesh.MeshReader import MeshReader from UM.Scene.GroupDecorator import GroupDecorator +from UM.Scene.SceneNode import SceneNode #For typing. from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType +from cura.CuraApplication import CuraApplication +from cura.Machines.ContainerTree import ContainerTree from cura.Settings.ExtruderManager import ExtruderManager from cura.Scene.CuraSceneNode import CuraSceneNode from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator from cura.Scene.ZOffsetDecorator import ZOffsetDecorator -from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch - -MYPY = False try: - if not MYPY: + if not TYPE_CHECKING: import xml.etree.cElementTree as ET except ImportError: Logger.log("w", "Unable to load cElementTree, switching to slower version") @@ -55,7 +54,7 @@ class ThreeMFReader(MeshReader): self._unit = None self._object_count = 0 # Used to name objects as there is no node name yet. - def _createMatrixFromTransformationString(self, transformation): + def _createMatrixFromTransformationString(self, transformation: str) -> Matrix: if transformation == "": return Matrix() @@ -85,13 +84,13 @@ class ThreeMFReader(MeshReader): return temp_mat - ## Convenience function that converts a SceneNode object (as obtained from libSavitar) to a Uranium scene node. - # \returns Uranium scene node. - def _convertSavitarNodeToUMNode(self, savitar_node): + ## Convenience function that converts a SceneNode object (as obtained from libSavitar) to a scene node. + # \returns Scene node. + def _convertSavitarNodeToUMNode(self, savitar_node: Savitar.SceneNode) -> Optional[SceneNode]: self._object_count += 1 node_name = "Object %s" % self._object_count - active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate + active_build_plate = CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate um_node = CuraSceneNode() # This adds a SettingOverrideDecorator um_node.addDecorator(BuildPlateDecorator(active_build_plate)) @@ -122,7 +121,7 @@ class ThreeMFReader(MeshReader): # Add the setting override decorator, so we can add settings to this node. if settings: - global_container_stack = Application.getInstance().getGlobalContainerStack() + global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() # Ensure the correct next container for the SettingOverride decorator is set. if global_container_stack: @@ -132,7 +131,7 @@ class ThreeMFReader(MeshReader): um_node.callDecoration("setActiveExtruder", default_stack.getId()) # Get the definition & set it - definition_id = getMachineDefinitionIDForQualitySearch(global_container_stack.definition) + definition_id = ContainerTree.getInstance().machines[global_container_stack.definition.getId()].quality_definition um_node.callDecoration("getStack").getTop().setDefinition(definition_id) setting_container = um_node.callDecoration("getStack").getTop() @@ -161,7 +160,7 @@ class ThreeMFReader(MeshReader): um_node.addDecorator(sliceable_decorator) return um_node - def _read(self, file_name): + def _read(self, file_name: str) -> Union[SceneNode, List[SceneNode]]: result = [] self._object_count = 0 # Used to name objects as there is no node name yet. # The base object of 3mf is a zipped archive. @@ -181,12 +180,13 @@ class ThreeMFReader(MeshReader): mesh_data = um_node.getMeshData() if mesh_data is not None: extents = mesh_data.getExtents() - center_vector = Vector(extents.center.x, extents.center.y, extents.center.z) - transform_matrix.setByTranslation(center_vector) + if extents is not None: + center_vector = Vector(extents.center.x, extents.center.y, extents.center.z) + transform_matrix.setByTranslation(center_vector) transform_matrix.multiply(um_node.getLocalTransformation()) um_node.setTransformation(transform_matrix) - global_container_stack = Application.getInstance().getGlobalContainerStack() + global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() # Create a transformation Matrix to convert from 3mf worldspace into ours. # First step: flip the y and z axis. @@ -215,17 +215,20 @@ class ThreeMFReader(MeshReader): um_node.setTransformation(um_node.getLocalTransformation().preMultiply(transformation_matrix)) # Check if the model is positioned below the build plate and honor that when loading project files. - if um_node.getMeshData() is not None: - minimum_z_value = um_node.getMeshData().getExtents(um_node.getWorldTransformation()).minimum.y # y is z in transformation coordinates - if minimum_z_value < 0: - um_node.addDecorator(ZOffsetDecorator()) - um_node.callDecoration("setZOffset", minimum_z_value) + node_meshdata = um_node.getMeshData() + if node_meshdata is not None: + aabb = node_meshdata.getExtents(um_node.getWorldTransformation()) + if aabb is not None: + minimum_z_value = aabb.minimum.y # y is z in transformation coordinates + if minimum_z_value < 0: + um_node.addDecorator(ZOffsetDecorator()) + um_node.callDecoration("setZOffset", minimum_z_value) result.append(um_node) except Exception: Logger.logException("e", "An exception occurred in 3mf reader.") - return None + return [] return result diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index bf190f7e39..dd35484c31 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -1,10 +1,10 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from configparser import ConfigParser import zipfile import os -from typing import Dict, List, Tuple, cast +from typing import cast, Dict, List, Optional, Tuple import xml.etree.ElementTree as ET @@ -14,7 +14,6 @@ from UM.Application import Application from UM.Logger import Logger from UM.Message import Message from UM.i18n import i18nCatalog -from UM.Signal import postponeSignals, CompressTechnique from UM.Settings.ContainerFormatError import ContainerFormatError from UM.Settings.ContainerStack import ContainerStack from UM.Settings.DefinitionContainer import DefinitionContainer @@ -24,21 +23,25 @@ from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType from UM.Job import Job from UM.Preferences import Preferences -from cura.Machines.VariantType import VariantType +from cura.Machines.ContainerTree import ContainerTree from cura.Settings.CuraStackBuilder import CuraStackBuilder +from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.ExtruderStack import ExtruderStack from cura.Settings.GlobalStack import GlobalStack +from cura.Settings.IntentManager import IntentManager from cura.Settings.CuraContainerStack import _ContainerIndexes from cura.CuraApplication import CuraApplication from cura.Utils.Threading import call_on_qt_thread +from PyQt5.QtCore import QCoreApplication + from .WorkspaceDialog import WorkspaceDialog i18n_catalog = i18nCatalog("cura") class ContainerInfo: - def __init__(self, file_name: str, serialized: str, parser: ConfigParser) -> None: + def __init__(self, file_name: Optional[str], serialized: Optional[str], parser: Optional[ConfigParser]) -> None: self.file_name = file_name self.serialized = serialized self.parser = parser @@ -58,7 +61,11 @@ class MachineInfo: self.container_id = None self.name = None self.definition_id = None + + self.metadata_dict = {} # type: Dict[str, str] + self.quality_type = None + self.intent_category = None self.custom_quality_name = None self.quality_changes_info = None self.variant_info = None @@ -78,6 +85,7 @@ class ExtruderInfo: self.definition_changes_info = None self.user_changes_info = None + self.intent_info = None ## Base implementation for reading 3MF workspace files. @@ -226,6 +234,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): else: Logger.log("w", "Unknown definition container type %s for %s", definition_container_type, definition_container_file) + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. Job.yieldThread() if machine_definition_container_count != 1: @@ -252,13 +261,16 @@ class ThreeMFWorkspaceReader(WorkspaceReader): containers_found_dict["material"] = True if not self._container_registry.isReadOnly(container_id): # Only non readonly materials can be in conflict material_conflict = True + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. Job.yieldThread() # Check if any quality_changes instance container is in conflict. instance_container_files = [name for name in cura_file_names if name.endswith(self._instance_container_suffix)] quality_name = "" custom_quality_name = "" - num_settings_overriden_by_quality_changes = 0 # How many settings are changed by the quality changes + intent_name = "" + intent_category = "" + num_settings_overridden_by_quality_changes = 0 # How many settings are changed by the quality changes num_user_settings = 0 quality_changes_conflict = False @@ -296,7 +308,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): custom_quality_name = parser["general"]["name"] values = parser["values"] if parser.has_section("values") else dict() - num_settings_overriden_by_quality_changes += len(values) + num_settings_overridden_by_quality_changes += len(values) # Check if quality changes already exists. quality_changes = self._container_registry.findInstanceContainers(name = custom_quality_name, type = "quality_changes") @@ -315,13 +327,17 @@ class ThreeMFWorkspaceReader(WorkspaceReader): elif container_type == "quality": if not quality_name: quality_name = parser["general"]["name"] + elif container_type == "intent": + if not intent_name: + intent_name = parser["general"]["name"] + intent_category = parser["metadata"]["intent_category"] elif container_type == "user": num_user_settings += len(parser["values"]) elif container_type in self._ignored_instance_container_types: # Ignore certain instance container types Logger.log("w", "Ignoring instance container [%s] with type [%s]", container_id, container_type) continue - + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. Job.yieldThread() if self._machine_info.quality_changes_info.global_info is None: @@ -340,7 +356,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # To simplify this, only check if the global stack exists or not global_stack_id = self._stripFileToId(global_stack_file) serialized = archive.open(global_stack_file).read().decode("utf-8") + serialized = GlobalStack._updateSerialized(serialized, global_stack_file) machine_name = self._getMachineNameFromSerializedStack(serialized) + self._machine_info.metadata_dict = self._getMetaDataDictFromSerializedStack(serialized) + stacks = self._container_registry.findContainerStacks(name = machine_name, type = "machine") self._is_same_machine_type = True existing_global_stack = None @@ -396,7 +415,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): variant_id = parser["containers"][str(_ContainerIndexes.Variant)] if variant_id not in ("empty", "empty_variant"): self._machine_info.variant_info = instance_container_info_dict[variant_id] - + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. Job.yieldThread() # if the global stack is found, we check if there are conflicts in the extruder stacks @@ -418,18 +437,26 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if parser.has_option("metadata", "enabled"): extruder_info.enabled = parser["metadata"]["enabled"] if variant_id not in ("empty", "empty_variant"): - extruder_info.variant_info = instance_container_info_dict[variant_id] + if variant_id in instance_container_info_dict: + extruder_info.variant_info = instance_container_info_dict[variant_id] + if material_id not in ("empty", "empty_material"): root_material_id = reverse_material_id_dict[material_id] extruder_info.root_material_id = root_material_id + definition_changes_id = parser["containers"][str(_ContainerIndexes.DefinitionChanges)] if definition_changes_id not in ("empty", "empty_definition_changes"): extruder_info.definition_changes_info = instance_container_info_dict[definition_changes_id] + user_changes_id = parser["containers"][str(_ContainerIndexes.UserChanges)] if user_changes_id not in ("empty", "empty_user_changes"): extruder_info.user_changes_info = instance_container_info_dict[user_changes_id] self._machine_info.extruder_info_dict[position] = extruder_info + intent_id = parser["containers"][str(_ContainerIndexes.Intent)] + if intent_id not in ("empty", "empty_intent"): + extruder_info.intent_info = instance_container_info_dict[intent_id] + if not machine_conflict and containers_found_dict["machine"]: if position not in global_stack.extruders: continue @@ -494,6 +521,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._machine_info.definition_id = machine_definition_id self._machine_info.quality_type = quality_type self._machine_info.custom_quality_name = quality_name + self._machine_info.intent_category = intent_category if machine_conflict and not self._is_same_machine_type: machine_conflict = False @@ -514,7 +542,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setNumVisibleSettings(num_visible_settings) self._dialog.setQualityName(quality_name) self._dialog.setQualityType(quality_type) - self._dialog.setNumSettingsOverridenByQualityChanges(num_settings_overriden_by_quality_changes) + self._dialog.setIntentName(intent_name) + self._dialog.setNumSettingsOverriddenByQualityChanges(num_settings_overridden_by_quality_changes) self._dialog.setNumUserSettings(num_user_settings) self._dialog.setActiveMode(active_mode) self._dialog.setMachineName(machine_name) @@ -557,26 +586,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # \param file_name @call_on_qt_thread def read(self, file_name): - container_registry = ContainerRegistry.getInstance() - signals = [container_registry.containerAdded, - container_registry.containerRemoved, - container_registry.containerMetaDataChanged] - # - # We now have different managers updating their lookup tables upon container changes. It is critical to make - # sure that the managers have a complete set of data when they update. - # - # In project loading, lots of the container-related signals are loosely emitted, which can create timing gaps - # for incomplete data update or other kinds of issues to happen. - # - # To avoid this, we postpone all signals so they don't get emitted immediately. But, please also be aware that, - # because of this, do not expect to have the latest data in the lookup tables in project loading. - # - with postponeSignals(*signals, compress = CompressTechnique.NoCompression): - return self._read(file_name) - - def _read(self, file_name): application = CuraApplication.getInstance() - material_manager = application.getMaterialManager() archive = zipfile.ZipFile(file_name, "r") @@ -647,6 +657,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): definition_container = self._container_registry.findDefinitionContainers(id = "fdmprinter")[0] #Fall back to defaults. self._container_registry.addContainer(definition_container) Job.yieldThread() + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. Logger.log("d", "Workspace loading is checking materials...") # Get all the material files and check if they exist. If not, add them. @@ -673,7 +684,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if self._resolve_strategies["material"] == "override": # Remove the old materials and then deserialize the one from the project root_material_id = material_container.getMetaDataEntry("base_file") - material_manager.removeMaterialByRootId(root_material_id) + application.getContainerRegistry().removeContainer(root_material_id) elif self._resolve_strategies["material"] == "new": # Note that we *must* deserialize it with a new ID, as multiple containers will be # auto created & added. @@ -696,6 +707,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): material_container.setDirty(True) self._container_registry.addContainer(material_container) Job.yieldThread() + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. # Handle quality changes if any self._processQualityChanges(global_stack) @@ -726,9 +738,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if self._machine_info.quality_changes_info is None: return - application = CuraApplication.getInstance() - quality_manager = application.getQualityManager() - # If we have custom profiles, load them quality_changes_name = self._machine_info.quality_changes_info.name if self._machine_info.quality_changes_info is not None: @@ -736,12 +745,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._machine_info.quality_changes_info.name) # Get the correct extruder definition IDs for quality changes - from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch - machine_definition_id_for_quality = getMachineDefinitionIDForQualitySearch(global_stack.definition) + machine_definition_id_for_quality = ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition machine_definition_for_quality = self._container_registry.findDefinitionContainers(id = machine_definition_id_for_quality)[0] quality_changes_info = self._machine_info.quality_changes_info quality_changes_quality_type = quality_changes_info.global_info.parser["metadata"]["quality_type"] + quality_changes_intent_category_per_extruder = {position: info.parser["metadata"].get("intent_category", "default") for position, info in quality_changes_info.extruder_info_dict.items()} quality_changes_name = quality_changes_info.name create_new = self._resolve_strategies.get("quality_changes") != "override" @@ -752,13 +761,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): quality_changes_name = self._container_registry.uniqueName(quality_changes_name) for position, container_info in container_info_dict.items(): extruder_stack = None + intent_category = None # type: Optional[str] if position is not None: extruder_stack = global_stack.extruders[position] - container = quality_manager._createQualityChanges(quality_changes_quality_type, - quality_changes_name, - global_stack, extruder_stack) + intent_category = quality_changes_intent_category_per_extruder[position] + container = self._createNewQualityChanges(quality_changes_quality_type, intent_category, quality_changes_name, global_stack, extruder_stack) container_info.container = container - container.setDirty(True) self._container_registry.addContainer(container) Logger.log("d", "Created new quality changes container [%s]", container.getId()) @@ -781,12 +789,15 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if not quality_changes_info.extruder_info_dict: container_info = ContainerInfo(None, None, None) quality_changes_info.extruder_info_dict["0"] = container_info + # If the global stack we're "targeting" has never been active, but was updated from Cura 3.4, + # it might not have it's extruders set properly. + if not global_stack.extruders: + ExtruderManager.getInstance().fixSingleExtrusionMachineExtruderDefinition(global_stack) extruder_stack = global_stack.extruders["0"] + intent_category = quality_changes_intent_category_per_extruder["0"] - container = quality_manager._createQualityChanges(quality_changes_quality_type, quality_changes_name, - global_stack, extruder_stack) + container = self._createNewQualityChanges(quality_changes_quality_type, intent_category, quality_changes_name, global_stack, extruder_stack) container_info.container = container - container.setDirty(True) self._container_registry.addContainer(container) Logger.log("d", "Created new quality changes container [%s]", container.getId()) @@ -812,16 +823,57 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if container_info.container is None: extruder_stack = global_stack.extruders[position] - container = quality_manager._createQualityChanges(quality_changes_quality_type, quality_changes_name, - global_stack, extruder_stack) + intent_category = quality_changes_intent_category_per_extruder[position] + container = self._createNewQualityChanges(quality_changes_quality_type, intent_category, quality_changes_name, global_stack, extruder_stack) container_info.container = container + self._container_registry.addContainer(container) for key, value in container_info.parser["values"].items(): container_info.container.setProperty(key, "value", value) self._machine_info.quality_changes_info.name = quality_changes_name - def _clearStack(self, stack): + ## Helper class to create a new quality changes profile. + # + # This will then later be filled with the appropriate data. + # \param quality_type The quality type of the new profile. + # \param intent_category The intent category of the new profile. + # \param name The name for the profile. This will later be made unique so + # it doesn't need to be unique yet. + # \param global_stack The global stack showing the configuration that the + # profile should be created for. + # \param extruder_stack The extruder stack showing the configuration that + # the profile should be created for. If this is None, it will be created + # for the global stack. + def _createNewQualityChanges(self, quality_type: str, intent_category: Optional[str], name: str, global_stack: GlobalStack, extruder_stack: Optional[ExtruderStack]) -> InstanceContainer: + container_registry = CuraApplication.getInstance().getContainerRegistry() + base_id = global_stack.definition.getId() if extruder_stack is None else extruder_stack.getId() + new_id = base_id + "_" + name + new_id = new_id.lower().replace(" ", "_") + new_id = container_registry.uniqueName(new_id) + + # Create a new quality_changes container for the quality. + quality_changes = InstanceContainer(new_id) + quality_changes.setName(name) + quality_changes.setMetaDataEntry("type", "quality_changes") + quality_changes.setMetaDataEntry("quality_type", quality_type) + if intent_category is not None: + quality_changes.setMetaDataEntry("intent_category", intent_category) + + # If we are creating a container for an extruder, ensure we add that to the container. + if extruder_stack is not None: + quality_changes.setMetaDataEntry("position", extruder_stack.getMetaDataEntry("position")) + + # If the machine specifies qualities should be filtered, ensure we match the current criteria. + machine_definition_id = ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition + quality_changes.setDefinition(machine_definition_id) + + quality_changes.setMetaDataEntry("setting_version", CuraApplication.getInstance().SettingVersion) + quality_changes.setDirty(True) + return quality_changes + + @staticmethod + def _clearStack(stack): application = CuraApplication.getInstance() stack.definitionChanges.clear() @@ -880,41 +932,30 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_stack.userChanges.setProperty(key, "value", value) def _applyVariants(self, global_stack, extruder_stack_dict): - application = CuraApplication.getInstance() - variant_manager = application.getVariantManager() + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] + # Take the global variant from the machine info if available. if self._machine_info.variant_info is not None: - parser = self._machine_info.variant_info.parser - variant_name = parser["general"]["name"] - - variant_type = VariantType.BUILD_PLATE - - node = variant_manager.getVariantNode(global_stack.definition.getId(), variant_name, variant_type) - if node is not None and node.getContainer() is not None: - global_stack.variant = node.getContainer() + variant_name = self._machine_info.variant_info.parser["general"]["name"] + if variant_name in machine_node.variants: + global_stack.variant = machine_node.variants[variant_name].container + else: + Logger.log("w", "Could not find global variant '{0}'.".format(variant_name)) for position, extruder_stack in extruder_stack_dict.items(): if position not in self._machine_info.extruder_info_dict: continue extruder_info = self._machine_info.extruder_info_dict[position] if extruder_info.variant_info is None: - continue - parser = extruder_info.variant_info.parser - - variant_name = parser["general"]["name"] - variant_type = VariantType.NOZZLE - - node = variant_manager.getVariantNode(global_stack.definition.getId(), variant_name, variant_type) - if node is not None and node.getContainer() is not None: - extruder_stack.variant = node.getContainer() + # If there is no variant_info, try to use the default variant. Otherwise, any available variant. + node = machine_node.variants.get(machine_node.preferred_variant_name, next(iter(machine_node.variants.values()))) + else: + variant_name = extruder_info.variant_info.parser["general"]["name"] + node = ContainerTree.getInstance().machines[global_stack.definition.getId()].variants[variant_name] + extruder_stack.variant = node.container def _applyMaterials(self, global_stack, extruder_stack_dict): - application = CuraApplication.getInstance() - material_manager = application.getMaterialManager() - - # Force update lookup tables first - material_manager.initialize() - + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] for position, extruder_stack in extruder_stack_dict.items(): if position not in self._machine_info.extruder_info_dict: continue @@ -925,18 +966,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): root_material_id = extruder_info.root_material_id root_material_id = self._old_new_materials.get(root_material_id, root_material_id) - build_plate_id = global_stack.variant.getId() - - # get material diameter of this extruder - machine_material_diameter = extruder_stack.getCompatibleMaterialDiameter() - material_node = material_manager.getMaterialNode(global_stack.definition.getId(), - extruder_stack.variant.getName(), - build_plate_id, - machine_material_diameter, - root_material_id) - - if material_node is not None and material_node.getContainer() is not None: - extruder_stack.material = material_node.getContainer() # type: InstanceContainer + material_node = machine_node.variants[extruder_stack.variant.getName()].materials[root_material_id] + extruder_stack.material = material_node.container # type: InstanceContainer def _applyChangesToMachine(self, global_stack, extruder_stack_dict): # Clear all first @@ -952,10 +983,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # prepare the quality to select self._quality_changes_to_apply = None self._quality_type_to_apply = None + self._intent_category_to_apply = None if self._machine_info.quality_changes_info is not None: self._quality_changes_to_apply = self._machine_info.quality_changes_info.name else: self._quality_type_to_apply = self._machine_info.quality_type + self._intent_category_to_apply = self._machine_info.intent_category # Set enabled/disabled for extruders for position, extruder_stack in extruder_stack_dict.items(): @@ -966,34 +999,38 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_stack.setMetaDataEntry("enabled", "True") extruder_stack.setMetaDataEntry("enabled", str(extruder_info.enabled)) + # Set metadata fields that are missing from the global stack + for key, value in self._machine_info.metadata_dict.items(): + if key not in global_stack.getMetaData(): + global_stack.setMetaDataEntry(key, value) + def _updateActiveMachine(self, global_stack): # Actually change the active machine. machine_manager = Application.getInstance().getMachineManager() - material_manager = Application.getInstance().getMaterialManager() - quality_manager = Application.getInstance().getQualityManager() - - # Force update the lookup maps first - material_manager.initialize() - quality_manager.initialize() + container_tree = ContainerTree.getInstance() machine_manager.setActiveMachine(global_stack.getId()) + # Set metadata fields that are missing from the global stack + for key, value in self._machine_info.metadata_dict.items(): + if key not in global_stack.getMetaData(): + global_stack.setMetaDataEntry(key, value) + if self._quality_changes_to_apply: - quality_changes_group_dict = quality_manager.getQualityChangesGroups(global_stack) - if self._quality_changes_to_apply not in quality_changes_group_dict: + quality_changes_group_list = container_tree.getCurrentQualityChangesGroups() + quality_changes_group = next((qcg for qcg in quality_changes_group_list if qcg.name == self._quality_changes_to_apply), None) + if not quality_changes_group: Logger.log("e", "Could not find quality_changes [%s]", self._quality_changes_to_apply) return - quality_changes_group = quality_changes_group_dict[self._quality_changes_to_apply] machine_manager.setQualityChangesGroup(quality_changes_group, no_dialog = True) else: self._quality_type_to_apply = self._quality_type_to_apply.lower() - quality_group_dict = quality_manager.getQualityGroups(global_stack) + quality_group_dict = container_tree.getCurrentQualityGroups() if self._quality_type_to_apply in quality_group_dict: quality_group = quality_group_dict[self._quality_type_to_apply] else: Logger.log("i", "Could not find quality type [%s], switch to default", self._quality_type_to_apply) preferred_quality_type = global_stack.getMetaDataEntry("preferred_quality_type") - quality_group_dict = quality_manager.getQualityGroups(global_stack) quality_group = quality_group_dict.get(preferred_quality_type) if quality_group is None: Logger.log("e", "Could not get preferred quality type [%s]", preferred_quality_type) @@ -1001,10 +1038,16 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if quality_group is not None: machine_manager.setQualityGroup(quality_group, no_dialog = True) + # Also apply intent if available + available_intent_category_list = IntentManager.getInstance().currentAvailableIntentCategories() + if self._intent_category_to_apply is not None and self._intent_category_to_apply in available_intent_category_list: + machine_manager.setIntentByCategory(self._intent_category_to_apply) + # Notify everything/one that is to notify about changes. global_stack.containersChanged.emit(global_stack.getTop()) - def _stripFileToId(self, file): + @staticmethod + def _stripFileToId(file): mime_type = MimeTypeDatabase.getMimeTypeForFile(file) file = mime_type.stripExtension(file) return file.replace("Cura/", "") @@ -1013,7 +1056,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return self._container_registry.getContainerForMimeType(MimeTypeDatabase.getMimeType("application/x-ultimaker-material-profile")) ## Get the list of ID's of all containers in a container stack by partially parsing it's serialized data. - def _getContainerIdListFromSerialized(self, serialized): + @staticmethod + def _getContainerIdListFromSerialized(serialized): parser = ConfigParser(interpolation = None, empty_lines_in_values = False) parser.read_string(serialized) @@ -1034,12 +1078,20 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return container_ids - def _getMachineNameFromSerializedStack(self, serialized): + @staticmethod + def _getMachineNameFromSerializedStack(serialized): parser = ConfigParser(interpolation = None, empty_lines_in_values = False) parser.read_string(serialized) return parser["general"].get("name", "") - def _getMaterialLabelFromSerialized(self, serialized): + @staticmethod + def _getMetaDataDictFromSerializedStack(serialized: str) -> Dict[str, str]: + parser = ConfigParser(interpolation = None, empty_lines_in_values = False) + parser.read_string(serialized) + return dict(parser["metadata"]) + + @staticmethod + def _getMaterialLabelFromSerialized(serialized): data = ET.fromstring(serialized) metadata = data.iterfind("./um:metadata/um:name/um:label", {"um": "http://www.ultimaker.com/material"}) for entry in metadata: diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 6e1cbb2019..3df7f1f570 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -41,8 +41,9 @@ class WorkspaceDialog(QObject): self._num_user_settings = 0 self._active_mode = "" self._quality_name = "" - self._num_settings_overriden_by_quality_changes = 0 + self._num_settings_overridden_by_quality_changes = 0 self._quality_type = "" + self._intent_name = "" self._machine_name = "" self._machine_type = "" self._variant_type = "" @@ -60,6 +61,7 @@ class WorkspaceDialog(QObject): hasVisibleSettingsFieldChanged = pyqtSignal() numSettingsOverridenByQualityChangesChanged = pyqtSignal() qualityTypeChanged = pyqtSignal() + intentNameChanged = pyqtSignal() machineNameChanged = pyqtSignal() materialLabelsChanged = pyqtSignal() objectsOnPlateChanged = pyqtSignal() @@ -151,10 +153,10 @@ class WorkspaceDialog(QObject): @pyqtProperty(int, notify=numSettingsOverridenByQualityChangesChanged) def numSettingsOverridenByQualityChanges(self): - return self._num_settings_overriden_by_quality_changes + return self._num_settings_overridden_by_quality_changes - def setNumSettingsOverridenByQualityChanges(self, num_settings_overriden_by_quality_changes): - self._num_settings_overriden_by_quality_changes = num_settings_overriden_by_quality_changes + def setNumSettingsOverriddenByQualityChanges(self, num_settings_overridden_by_quality_changes): + self._num_settings_overridden_by_quality_changes = num_settings_overridden_by_quality_changes self.numSettingsOverridenByQualityChangesChanged.emit() @pyqtProperty(str, notify=qualityNameChanged) @@ -166,6 +168,15 @@ class WorkspaceDialog(QObject): self._quality_name = quality_name self.qualityNameChanged.emit() + @pyqtProperty(str, notify = intentNameChanged) + def intentName(self) -> str: + return self._intent_name + + def setIntentName(self, intent_name: str) -> None: + if self._intent_name != intent_name: + self._intent_name = intent_name + self.intentNameChanged.emit() + @pyqtProperty(str, notify=activeModeChanged) def activeMode(self): return self._active_mode diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 58d881c915..d0fd3d0846 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -1,10 +1,10 @@ // Copyright (c) 2016 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.1 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 +import QtQuick 2.10 +import QtQuick.Controls 1.4 +import QtQuick.Layouts 1.3 +import QtQuick.Window 2.2 import UM 1.1 as UM @@ -13,8 +13,8 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Open Project") - minimumWidth: 500 * screenScaleFactor - minimumHeight: 450 * screenScaleFactor + minimumWidth: UM.Theme.getSize("popup_dialog").width + minimumHeight: UM.Theme.getSize("popup_dialog").height width: minimumWidth height: minimumHeight @@ -24,7 +24,7 @@ UM.Dialog onClosing: manager.notifyClosed() onVisibleChanged: { - if(visible) + if (visible) { machineResolveComboBox.currentIndex = 0 qualityChangesResolveComboBox.currentIndex = 0 @@ -55,8 +55,8 @@ UM.Dialog // See http://stackoverflow.com/questions/7659442/listelement-fields-as-properties Component.onCompleted: { - append({"key": "override", "label": catalog.i18nc("@action:ComboBox option", "Update existing")}); - append({"key": "new", "label": catalog.i18nc("@action:ComboBox option", "Create new")}); + append({"key": "override", "label": catalog.i18nc("@action:ComboBox Update/override existing profile", "Update existing")}); + append({"key": "new", "label": catalog.i18nc("@action:ComboBox Save settings in a new profile", "Create new")}); } } @@ -223,6 +223,21 @@ UM.Dialog } } Row + { + width: parent.width + height: childrenRect.height + Label + { + text: catalog.i18nc("@action:label", "Intent") + width: (parent.width / 3) | 0 + } + Label + { + text: manager.intentName + width: (parent.width / 3) | 0 + } + } + Row { width: parent.width height: manager.numUserSettings != 0 ? childrenRect.height : 0 diff --git a/plugins/3MFReader/__init__.py b/plugins/3MFReader/__init__.py index ce94bbe69c..d68338c35f 100644 --- a/plugins/3MFReader/__init__.py +++ b/plugins/3MFReader/__init__.py @@ -12,7 +12,6 @@ except ImportError: from . import ThreeMFWorkspaceReader from UM.i18n import i18nCatalog -from UM.Platform import Platform catalog = i18nCatalog("cura") diff --git a/plugins/3MFReader/plugin.json b/plugins/3MFReader/plugin.json index 5af21a7033..e366a5da72 100644 --- a/plugins/3MFReader/plugin.json +++ b/plugins/3MFReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for reading 3MF files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/3MFWriter/plugin.json b/plugins/3MFWriter/plugin.json index 3820ebd2e7..5c72072447 100644 --- a/plugins/3MFWriter/plugin.json +++ b/plugins/3MFWriter/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for writing 3MF files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/AMFReader/AMFReader.py b/plugins/AMFReader/AMFReader.py new file mode 100644 index 0000000000..6c5ee91e87 --- /dev/null +++ b/plugins/AMFReader/AMFReader.py @@ -0,0 +1,173 @@ +# Copyright (c) 2019 fieldOfView, Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +# This AMF parser is based on the AMF parser in legacy cura: +# https://github.com/daid/LegacyCura/blob/ad7641e059048c7dcb25da1f47c0a7e95e7f4f7c/Cura/util/meshLoaders/amf.py +from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType +from cura.CuraApplication import CuraApplication +from UM.Logger import Logger + +from UM.Mesh.MeshData import MeshData, calculateNormalsFromIndexedVertices +from UM.Mesh.MeshReader import MeshReader + +from cura.Scene.CuraSceneNode import CuraSceneNode +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator +from cura.Scene.ConvexHullDecorator import ConvexHullDecorator +from UM.Scene.GroupDecorator import GroupDecorator + +import numpy +import trimesh +import os.path +import zipfile + +MYPY = False +try: + if not MYPY: + import xml.etree.cElementTree as ET +except ImportError: + import xml.etree.ElementTree as ET + +from typing import Dict + + +class AMFReader(MeshReader): + def __init__(self) -> None: + super().__init__() + self._supported_extensions = [".amf"] + self._namespaces = {} # type: Dict[str, str] + + MimeTypeDatabase.addMimeType( + MimeType( + name = "application/x-amf", + comment = "AMF", + suffixes = ["amf"] + ) + ) + + # Main entry point + # Reads the file, returns a SceneNode (possibly with nested ones), or None + def _read(self, file_name): + base_name = os.path.basename(file_name) + try: + zipped_file = zipfile.ZipFile(file_name) + xml_document = zipped_file.read(zipped_file.namelist()[0]) + zipped_file.close() + except zipfile.BadZipfile: + raw_file = open(file_name, "r") + xml_document = raw_file.read() + raw_file.close() + + try: + amf_document = ET.fromstring(xml_document) + except ET.ParseError: + Logger.log("e", "Could not parse XML in file %s" % base_name) + return None + + if "unit" in amf_document.attrib: + unit = amf_document.attrib["unit"].lower() + else: + unit = "millimeter" + if unit == "millimeter": + scale = 1.0 + elif unit == "meter": + scale = 1000.0 + elif unit == "inch": + scale = 25.4 + elif unit == "feet": + scale = 304.8 + elif unit == "micron": + scale = 0.001 + else: + Logger.log("w", "Unknown unit in amf: %s. Using mm instead." % unit) + scale = 1.0 + + nodes = [] + for amf_object in amf_document.iter("object"): + for amf_mesh in amf_object.iter("mesh"): + amf_mesh_vertices = [] + for vertices in amf_mesh.iter("vertices"): + for vertex in vertices.iter("vertex"): + for coordinates in vertex.iter("coordinates"): + v = [0.0, 0.0, 0.0] + for t in coordinates: + if t.tag == "x": + v[0] = float(t.text) * scale + elif t.tag == "y": + v[2] = -float(t.text) * scale + elif t.tag == "z": + v[1] = float(t.text) * scale + amf_mesh_vertices.append(v) + if not amf_mesh_vertices: + continue + + indices = [] + for volume in amf_mesh.iter("volume"): + for triangle in volume.iter("triangle"): + f = [0, 0, 0] + for t in triangle: + if t.tag == "v1": + f[0] = int(t.text) + elif t.tag == "v2": + f[1] = int(t.text) + elif t.tag == "v3": + f[2] = int(t.text) + indices.append(f) + + mesh = trimesh.base.Trimesh(vertices = numpy.array(amf_mesh_vertices, dtype = numpy.float32), faces = numpy.array(indices, dtype = numpy.int32)) + mesh.merge_vertices() + mesh.remove_unreferenced_vertices() + mesh.fix_normals() + mesh_data = self._toMeshData(mesh) + + new_node = CuraSceneNode() + new_node.setSelectable(True) + new_node.setMeshData(mesh_data) + new_node.setName(base_name if len(nodes) == 0 else "%s %d" % (base_name, len(nodes))) + new_node.addDecorator(BuildPlateDecorator(CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate)) + new_node.addDecorator(SliceableObjectDecorator()) + + nodes.append(new_node) + + if not nodes: + Logger.log("e", "No meshes in file %s" % base_name) + return None + + if len(nodes) == 1: + return nodes[0] + + # Add all scenenodes to a group so they stay together + group_node = CuraSceneNode() + group_node.addDecorator(GroupDecorator()) + group_node.addDecorator(ConvexHullDecorator()) + group_node.addDecorator(BuildPlateDecorator(CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate)) + + for node in nodes: + node.setParent(group_node) + + return group_node + + def _toMeshData(self, tri_node: trimesh.base.Trimesh) -> MeshData: + tri_faces = tri_node.faces + tri_vertices = tri_node.vertices + + indices = [] + vertices = [] + + index_count = 0 + face_count = 0 + for tri_face in tri_faces: + face = [] + for tri_index in tri_face: + vertices.append(tri_vertices[tri_index]) + face.append(index_count) + index_count += 1 + indices.append(face) + face_count += 1 + + vertices = numpy.asarray(vertices, dtype = numpy.float32) + indices = numpy.asarray(indices, dtype = numpy.int32) + normals = calculateNormalsFromIndexedVertices(vertices, indices, face_count) + + mesh_data = MeshData(vertices = vertices, indices = indices, normals = normals) + return mesh_data diff --git a/plugins/AMFReader/__init__.py b/plugins/AMFReader/__init__.py new file mode 100644 index 0000000000..c974a92d11 --- /dev/null +++ b/plugins/AMFReader/__init__.py @@ -0,0 +1,21 @@ +# Copyright (c) 2019 fieldOfView +# Cura is released under the terms of the LGPLv3 or higher. + +from . import AMFReader + +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("uranium") + + +def getMetaData(): + return { + "mesh_reader": [ + { + "extension": "amf", + "description": i18n_catalog.i18nc("@item:inlistbox", "AMF File") + } + ] + } + +def register(app): + return {"mesh_reader": AMFReader.AMFReader()} diff --git a/plugins/AMFReader/plugin.json b/plugins/AMFReader/plugin.json new file mode 100644 index 0000000000..5e5b0f211b --- /dev/null +++ b/plugins/AMFReader/plugin.json @@ -0,0 +1,7 @@ +{ + "name": "AMF Reader", + "author": "fieldOfView", + "version": "1.0.0", + "description": "Provides support for reading AMF files.", + "api": "7.0.0" +} diff --git a/plugins/ChangeLogPlugin/ChangeLog.py b/plugins/ChangeLogPlugin/ChangeLog.py deleted file mode 100644 index eeec5edf9b..0000000000 --- a/plugins/ChangeLogPlugin/ChangeLog.py +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from UM.i18n import i18nCatalog -from UM.Extension import Extension -from UM.Application import Application -from UM.PluginRegistry import PluginRegistry -from UM.Version import Version - -from PyQt5.QtCore import pyqtSlot, QObject - -import os.path -import collections - -catalog = i18nCatalog("cura") - -class ChangeLog(Extension, QObject,): - def __init__(self, parent = None): - QObject.__init__(self, parent) - Extension.__init__(self) - self._changelog_window = None - self._changelog_context = None - version_string = Application.getInstance().getVersion() - if version_string is not "master": - self._current_app_version = Version(version_string) - else: - self._current_app_version = None - - self._change_logs = None - Application.getInstance().engineCreatedSignal.connect(self._onEngineCreated) - Application.getInstance().getPreferences().addPreference("general/latest_version_changelog_shown", "2.0.0") #First version of CURA with uranium - self.setMenuName(catalog.i18nc("@item:inmenu", "Changelog")) - self.addMenuItem(catalog.i18nc("@item:inmenu", "Show Changelog"), self.showChangelog) - - def getChangeLogs(self): - if not self._change_logs: - self.loadChangeLogs() - return self._change_logs - - @pyqtSlot(result = str) - def getChangeLogString(self): - logs = self.getChangeLogs() - result = "" - for version in logs: - result += "

" + str(version) + "


" - result += "" - for change in logs[version]: - if str(change) != "": - result += "" + str(change) + "
" - for line in logs[version][change]: - result += str(line) + "
" - result += "
" - - pass - return result - - def loadChangeLogs(self): - self._change_logs = collections.OrderedDict() - with open(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "ChangeLog.txt"), "r", encoding = "utf-8") as f: - open_version = None - open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog - for line in f: - line = line.replace("\n","") - if "[" in line and "]" in line: - line = line.replace("[","") - line = line.replace("]","") - open_version = Version(line) - open_header = "" - self._change_logs[open_version] = collections.OrderedDict() - elif line.startswith("*"): - open_header = line.replace("*","") - self._change_logs[open_version][open_header] = [] - elif line != "": - if open_header not in self._change_logs[open_version]: - self._change_logs[open_version][open_header] = [] - self._change_logs[open_version][open_header].append(line) - - def _onEngineCreated(self): - if not self._current_app_version: - return #We're on dev branch. - - if Application.getInstance().getPreferences().getValue("general/latest_version_changelog_shown") == "master": - latest_version_shown = Version("0.0.0") - else: - latest_version_shown = Version(Application.getInstance().getPreferences().getValue("general/latest_version_changelog_shown")) - - Application.getInstance().getPreferences().setValue("general/latest_version_changelog_shown", Application.getInstance().getVersion()) - - # Do not show the changelog when there is no global container stack - # This implies we are running Cura for the first time. - if not Application.getInstance().getGlobalContainerStack(): - return - - if self._current_app_version > latest_version_shown: - self.showChangelog() - - def showChangelog(self): - if not self._changelog_window: - self.createChangelogWindow() - - self._changelog_window.show() - - def hideChangelog(self): - if self._changelog_window: - self._changelog_window.hide() - - def createChangelogWindow(self): - path = os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "ChangeLog.qml") - self._changelog_window = Application.getInstance().createQmlComponent(path, {"manager": self}) diff --git a/plugins/ChangeLogPlugin/ChangeLog.qml b/plugins/ChangeLogPlugin/ChangeLog.qml deleted file mode 100644 index 512687f15a..0000000000 --- a/plugins/ChangeLogPlugin/ChangeLog.qml +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.1 -import QtQuick.Controls 1.3 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 - -import UM 1.1 as UM - -UM.Dialog -{ - id: base - minimumWidth: (UM.Theme.getSize("modal_window_minimum").width * 0.75) | 0 - minimumHeight: (UM.Theme.getSize("modal_window_minimum").height * 0.75) | 0 - width: minimumWidth - height: minimumHeight - title: catalog.i18nc("@label", "Changelog") - - TextArea - { - anchors.fill: parent - text: manager.getChangeLogString() - readOnly: true; - textFormat: TextEdit.RichText - } - - rightButtons: [ - Button - { - UM.I18nCatalog - { - id: catalog - name: "cura" - } - - text: catalog.i18nc("@action:button", "Close") - onClicked: base.hide() - } - ] -} diff --git a/plugins/ChangeLogPlugin/__init__.py b/plugins/ChangeLogPlugin/__init__.py deleted file mode 100644 index a5452b60c8..0000000000 --- a/plugins/ChangeLogPlugin/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2015 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from . import ChangeLog - - -def getMetaData(): - return {} - -def register(app): - return {"extension": ChangeLog.ChangeLog()} diff --git a/plugins/ChangeLogPlugin/plugin.json b/plugins/ChangeLogPlugin/plugin.json deleted file mode 100644 index 92041d1543..0000000000 --- a/plugins/ChangeLogPlugin/plugin.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "Changelog", - "author": "Ultimaker B.V.", - "version": "1.0.1", - "description": "Shows changes since latest checked version.", - "api": "6.0", - "i18n-catalog": "cura" -} diff --git a/plugins/CuraDrive/plugin.json b/plugins/CuraDrive/plugin.json index d1cab39ca5..9b9b3e2c15 100644 --- a/plugins/CuraDrive/plugin.json +++ b/plugins/CuraDrive/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "description": "Backup and restore your configuration.", "version": "1.2.0", - "api": 6, + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/CuraDrive/src/DriveApiService.py b/plugins/CuraDrive/src/DriveApiService.py index 6a828e32d6..d8349ccc29 100644 --- a/plugins/CuraDrive/src/DriveApiService.py +++ b/plugins/CuraDrive/src/DriveApiService.py @@ -45,7 +45,7 @@ class DriveApiService: "Authorization": "Bearer {}".format(access_token) }) except requests.exceptions.ConnectionError: - Logger.log("w", "Unable to connect with the server.") + Logger.logException("w", "Unable to connect with the server.") return [] # HTTP status 300s mean redirection. 400s and 500s are errors. @@ -54,7 +54,13 @@ class DriveApiService: Logger.log("w", "Could not get backups list from remote: %s", backup_list_request.text) Message(catalog.i18nc("@info:backup_status", "There was an error listing your backups."), title = catalog.i18nc("@info:title", "Backup")).show() return [] - return backup_list_request.json()["data"] + + backup_list_response = backup_list_request.json() + if "data" not in backup_list_response: + Logger.log("w", "Could not get backups from remote, actual response body was: %s", str(backup_list_response)) + return [] + + return backup_list_response["data"] def createBackup(self) -> None: self.creatingStateChanged.emit(is_creating = True) @@ -92,7 +98,12 @@ class DriveApiService: # If there is no download URL, we can't restore the backup. return self._emitRestoreError() - download_package = requests.get(download_url, stream = True) + try: + download_package = requests.get(download_url, stream = True) + except requests.exceptions.ConnectionError: + Logger.logException("e", "Unable to connect with the server") + return self._emitRestoreError() + if download_package.status_code >= 300: # Something went wrong when attempting to download the backup. Logger.log("w", "Could not download backup from url %s: %s", download_url, download_package.text) @@ -136,9 +147,14 @@ class DriveApiService: Logger.log("w", "Could not get access token.") return False - delete_backup = requests.delete("{}/{}".format(self.BACKUP_URL, backup_id), headers = { - "Authorization": "Bearer {}".format(access_token) - }) + try: + delete_backup = requests.delete("{}/{}".format(self.BACKUP_URL, backup_id), headers = { + "Authorization": "Bearer {}".format(access_token) + }) + except requests.exceptions.ConnectionError: + Logger.logException("e", "Unable to connect with the server") + return False + if delete_backup.status_code >= 300: Logger.log("w", "Could not delete backup: %s", delete_backup.text) return False @@ -153,15 +169,19 @@ class DriveApiService: if not access_token: Logger.log("w", "Could not get access token.") return None - - backup_upload_request = requests.put(self.BACKUP_URL, json = { - "data": { - "backup_size": backup_size, - "metadata": backup_metadata - } - }, headers = { - "Authorization": "Bearer {}".format(access_token) - }) + try: + backup_upload_request = requests.put( + self.BACKUP_URL, + json = {"data": {"backup_size": backup_size, + "metadata": backup_metadata + } + }, + headers = { + "Authorization": "Bearer {}".format(access_token) + }) + except requests.exceptions.ConnectionError: + Logger.logException("e", "Unable to connect with the server") + return None # Any status code of 300 or above indicates an error. if backup_upload_request.status_code >= 300: diff --git a/plugins/CuraDrive/src/qml/main.qml b/plugins/CuraDrive/src/qml/main.qml index 48bf3b6ea4..796a31e1d3 100644 --- a/plugins/CuraDrive/src/qml/main.qml +++ b/plugins/CuraDrive/src/qml/main.qml @@ -18,6 +18,7 @@ Window minimumHeight: Math.round(UM.Theme.getSize("modal_window_minimum").height) maximumWidth: Math.round(minimumWidth * 1.2) maximumHeight: Math.round(minimumHeight * 1.2) + modality: Qt.ApplicationModal width: minimumWidth height: minimumHeight color: UM.Theme.getColor("main_background") diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index d5531a2773..1437153f32 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -15,14 +15,12 @@ from UM.Signal import Signal from UM.Logger import Logger from UM.Message import Message from UM.PluginRegistry import PluginRegistry -from UM.Resources import Resources from UM.Platform import Platform from UM.Qt.Duration import DurationFormat from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Settings.Interfaces import DefinitionContainerInterface from UM.Settings.SettingInstance import SettingInstance #For typing. from UM.Tool import Tool #For typing. -from UM.Mesh.MeshData import MeshData #For typing. from cura.CuraApplication import CuraApplication from cura.Settings.ExtruderManager import ExtruderManager @@ -209,7 +207,7 @@ class CuraEngineBackend(QObject, Backend): self._createSocket() if self._process_layers_job is not None: # We were processing layers. Stop that, the layers are going to change soon. - Logger.log("d", "Aborting process layers job...") + Logger.log("i", "Aborting process layers job...") self._process_layers_job.abort() self._process_layers_job = None @@ -224,7 +222,7 @@ class CuraEngineBackend(QObject, Backend): ## Perform a slice of the scene. def slice(self) -> None: - Logger.log("d", "Starting to slice...") + Logger.log("i", "Starting to slice...") self._slice_start_time = time() if not self._build_plates_to_be_sliced: self.processingProgress.emit(1.0) @@ -371,7 +369,7 @@ class CuraEngineBackend(QObject, Backend): elif job.getResult() == StartJobResult.ObjectSettingError: errors = {} - for node in DepthFirstIterator(self._application.getController().getScene().getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in DepthFirstIterator(self._application.getController().getScene().getRoot()): stack = node.callDecoration("getStack") if not stack: continue @@ -402,7 +400,7 @@ class CuraEngineBackend(QObject, Backend): self.setState(BackendState.NotStarted) if job.getResult() == StartJobResult.ObjectsWithDisabledExtruder: - self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because there are objects associated with disabled Extruder %s." % job.getMessage()), + self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because there are objects associated with disabled Extruder %s.") % job.getMessage(), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.setState(BackendState.Error) @@ -440,7 +438,7 @@ class CuraEngineBackend(QObject, Backend): if not self._application.getPreferences().getValue("general/auto_slice"): enable_timer = False - for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in DepthFirstIterator(self._scene.getRoot()): if node.callDecoration("isBlockSlicing"): enable_timer = False self.setState(BackendState.Disabled) @@ -462,7 +460,7 @@ class CuraEngineBackend(QObject, Backend): ## Return a dict with number of objects per build plate def _numObjectsPerBuildPlate(self) -> Dict[int, int]: num_objects = defaultdict(int) #type: Dict[int, int] - for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in DepthFirstIterator(self._scene.getRoot()): # Only count sliceable objects if node.callDecoration("isSliceable"): build_plate_number = node.callDecoration("getBuildPlateNumber") @@ -476,7 +474,7 @@ class CuraEngineBackend(QObject, Backend): # # \param source The scene node that was changed. def _onSceneChanged(self, source: SceneNode) -> None: - if not isinstance(source, SceneNode): + if not source.callDecoration("isSliceable"): return # This case checks if the source node is a node that contains GCode. In this case the @@ -519,9 +517,6 @@ class CuraEngineBackend(QObject, Backend): self._build_plates_to_be_sliced.append(build_plate_number) self.printDurationMessage.emit(source_build_plate_number, {}, []) self.processingProgress.emit(0.0) - self.setState(BackendState.NotStarted) - # if not self._use_timer: - # With manually having to slice, we want to clear the old invalid layer data. self._clearLayerData(build_plate_changed) self._invokeSlice() @@ -548,15 +543,25 @@ class CuraEngineBackend(QObject, Backend): if error.getErrorCode() == Arcus.ErrorCode.BindFailedError and self._start_slice_job is not None: self._start_slice_job.setIsCancelled(False) + # Check if there's any slicable object in the scene. + def hasSlicableObject(self) -> bool: + has_slicable = False + for node in DepthFirstIterator(self._scene.getRoot()): + if node.callDecoration("isSliceable"): + has_slicable = True + break + return has_slicable + ## Remove old layer data (if any) def _clearLayerData(self, build_plate_numbers: Set = None) -> None: # Clear out any old gcode self._scene.gcode_dict = {} # type: ignore - for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in DepthFirstIterator(self._scene.getRoot()): if node.callDecoration("getLayerData"): if not build_plate_numbers or node.callDecoration("getBuildPlateNumber") in build_plate_numbers: - node.getParent().removeChild(node) + # We can asume that all nodes have a parent as we're looping through the scene (and filter out root) + cast(SceneNode, node.getParent()).removeChild(node) def markSliceAll(self) -> None: for build_plate_number in range(self._application.getMultiBuildPlateModel().maxBuildPlate + 1): @@ -565,10 +570,14 @@ class CuraEngineBackend(QObject, Backend): ## Convenient function: mark everything to slice, emit state and clear layer data def needsSlicing(self) -> None: + # CURA-6604: If there's no slicable object, do not (try to) trigger slice, which will clear all the current + # gcode. This can break Gcode file loading if it tries to remove it afterwards. + if not self.hasSlicableObject(): + return + self.determineAutoSlicing() self.stopSlicing() self.markSliceAll() self.processingProgress.emit(0.0) - self.setState(BackendState.NotStarted) if not self._use_timer: # With manually having to slice, we want to clear the old invalid layer data. self._clearLayerData() @@ -636,7 +645,10 @@ class CuraEngineBackend(QObject, Backend): self.setState(BackendState.Done) self.processingProgress.emit(1.0) - gcode_list = self._scene.gcode_dict[self._start_slice_job_build_plate] #type: ignore #Because we generate this attribute dynamically. + try: + gcode_list = self._scene.gcode_dict[self._start_slice_job_build_plate] #type: ignore #Because we generate this attribute dynamically. + except KeyError: # Can occur if the g-code has been cleared while a slice message is still arriving from the other end. + gcode_list = [] for index, line in enumerate(gcode_list): replaced = line.replace("{print_time}", str(self._application.getPrintInformation().currentPrintTime.getDisplayString(DurationFormat.Format.ISO8601))) replaced = replaced.replace("{filament_amount}", str(self._application.getPrintInformation().materialLengths)) @@ -675,14 +687,20 @@ class CuraEngineBackend(QObject, Backend): # # \param message The protobuf message containing g-code, encoded as UTF-8. def _onGCodeLayerMessage(self, message: Arcus.PythonMessage) -> None: - self._scene.gcode_dict[self._start_slice_job_build_plate].append(message.data.decode("utf-8", "replace")) #type: ignore #Because we generate this attribute dynamically. + try: + self._scene.gcode_dict[self._start_slice_job_build_plate].append(message.data.decode("utf-8", "replace")) #type: ignore #Because we generate this attribute dynamically. + except KeyError: # Can occur if the g-code has been cleared while a slice message is still arriving from the other end. + pass # Throw the message away. ## Called when a g-code prefix message is received from the engine. # # \param message The protobuf message containing the g-code prefix, # encoded as UTF-8. def _onGCodePrefixMessage(self, message: Arcus.PythonMessage) -> None: - self._scene.gcode_dict[self._start_slice_job_build_plate].insert(0, message.data.decode("utf-8", "replace")) #type: ignore #Because we generate this attribute dynamically. + try: + self._scene.gcode_dict[self._start_slice_job_build_plate].insert(0, message.data.decode("utf-8", "replace")) #type: ignore #Because we generate this attribute dynamically. + except KeyError: # Can occur if the g-code has been cleared while a slice message is still arriving from the other end. + pass # Throw the message away. ## Creates a new socket connection. def _createSocket(self, protocol_file: str = None) -> None: @@ -737,6 +755,7 @@ class CuraEngineBackend(QObject, Backend): "support_interface": message.time_support_interface, "support": message.time_support, "skirt": message.time_skirt, + "prime_tower": message.time_prime_tower, "travel": message.time_travel, "retract": message.time_retract, "none": message.time_none @@ -815,9 +834,8 @@ class CuraEngineBackend(QObject, Backend): if self._global_container_stack: self._global_container_stack.propertyChanged.disconnect(self._onSettingChanged) self._global_container_stack.containersChanged.disconnect(self._onChanged) - extruders = list(self._global_container_stack.extruders.values()) - for extruder in extruders: + for extruder in self._global_container_stack.extruderList: extruder.propertyChanged.disconnect(self._onSettingChanged) extruder.containersChanged.disconnect(self._onChanged) @@ -826,8 +844,8 @@ class CuraEngineBackend(QObject, Backend): if self._global_container_stack: self._global_container_stack.propertyChanged.connect(self._onSettingChanged) # Note: Only starts slicing when the value changed. self._global_container_stack.containersChanged.connect(self._onChanged) - extruders = list(self._global_container_stack.extruders.values()) - for extruder in extruders: + + for extruder in self._global_container_stack.extruderList: extruder.propertyChanged.connect(self._onSettingChanged) extruder.containersChanged.connect(self._onChanged) self._onChanged() diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index 3cc23130ea..32d60eb68b 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -1,4 +1,4 @@ -#Copyright (c) 2017 Ultimaker B.V. +#Copyright (c) 2019 Ultimaker B.V. #Cura is released under the terms of the LGPLv3 or higher. import gc @@ -24,7 +24,7 @@ from cura import LayerPolygon import numpy from time import time -from cura.Settings.ExtrudersModel import ExtrudersModel +from cura.Machines.Models.ExtrudersModel import ExtrudersModel catalog = i18nCatalog("cura") @@ -136,23 +136,23 @@ class ProcessSlicedLayersJob(Job): extruder = polygon.extruder - line_types = numpy.fromstring(polygon.line_type, dtype="u1") # Convert bytearray to numpy array + line_types = numpy.fromstring(polygon.line_type, dtype = "u1") # Convert bytearray to numpy array line_types = line_types.reshape((-1,1)) - points = numpy.fromstring(polygon.points, dtype="f4") # Convert bytearray to numpy array + points = numpy.fromstring(polygon.points, dtype = "f4") # Convert bytearray to numpy array if polygon.point_type == 0: # Point2D points = points.reshape((-1,2)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly. else: # Point3D points = points.reshape((-1,3)) - line_widths = numpy.fromstring(polygon.line_width, dtype="f4") # Convert bytearray to numpy array + line_widths = numpy.fromstring(polygon.line_width, dtype = "f4") # Convert bytearray to numpy array line_widths = line_widths.reshape((-1,1)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly. - line_thicknesses = numpy.fromstring(polygon.line_thickness, dtype="f4") # Convert bytearray to numpy array + line_thicknesses = numpy.fromstring(polygon.line_thickness, dtype = "f4") # Convert bytearray to numpy array line_thicknesses = line_thicknesses.reshape((-1,1)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly. - line_feedrates = numpy.fromstring(polygon.line_feedrate, dtype="f4") # Convert bytearray to numpy array + line_feedrates = numpy.fromstring(polygon.line_feedrate, dtype = "f4") # Convert bytearray to numpy array line_feedrates = line_feedrates.reshape((-1,1)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly. # Create a new 3D-array, copy the 2D points over and insert the right height. @@ -194,7 +194,7 @@ class ProcessSlicedLayersJob(Job): manager = ExtruderManager.getInstance() extruders = manager.getActiveExtruderStacks() if extruders: - material_color_map = numpy.zeros((len(extruders), 4), dtype=numpy.float32) + material_color_map = numpy.zeros((len(extruders), 4), dtype = numpy.float32) for extruder in extruders: position = int(extruder.getMetaDataEntry("position", default = "0")) try: @@ -206,8 +206,8 @@ class ProcessSlicedLayersJob(Job): material_color_map[position, :] = color else: # Single extruder via global stack. - material_color_map = numpy.zeros((1, 4), dtype=numpy.float32) - color_code = global_container_stack.material.getMetaDataEntry("color_code", default="#e0e000") + material_color_map = numpy.zeros((1, 4), dtype = numpy.float32) + color_code = global_container_stack.material.getMetaDataEntry("color_code", default = "#e0e000") color = colorCodeToRGBA(color_code) material_color_map[0, :] = color diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index d3882a1209..43d54d8b12 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import numpy @@ -11,6 +11,7 @@ import Arcus #For typing. from UM.Job import Job from UM.Logger import Logger +from UM.Scene.SceneNode import SceneNode from UM.Settings.ContainerStack import ContainerStack #For typing. from UM.Settings.SettingRelation import SettingRelation #For typing. @@ -71,7 +72,7 @@ class GcodeStartEndFormatter(Formatter): value = default_value_str # "-1" is global stack, and if the setting value exists in the global stack, use it as the fallback value. if key in kwargs["-1"]: - value = kwargs["-1"] + value = kwargs["-1"][key] if str(extruder_nr) in kwargs and key in kwargs[str(extruder_nr)]: value = kwargs[str(extruder_nr)][key] @@ -105,9 +106,14 @@ class StartSliceJob(Job): if stack is None: return False + # if there are no per-object settings we don't need to check the other settings here + stack_top = stack.getTop() + if stack_top is None or not stack_top.getAllKeys(): + return False + for key in stack.getAllKeys(): validation_state = stack.getProperty(key, "validationState") - if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError): + if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError, ValidatorState.Invalid): Logger.log("w", "Setting %s is not valid, but %s. Aborting slicing.", key, validation_state) return True Job.yieldThread() @@ -133,6 +139,14 @@ class StartSliceJob(Job): self.setResult(StartJobResult.BuildPlateError) return + # Wait for error checker to be done. + while CuraApplication.getInstance().getMachineErrorChecker().needToWaitForResult: + time.sleep(0.1) + + if CuraApplication.getInstance().getMachineErrorChecker().hasError: + self.setResult(StartJobResult.SettingError) + return + # Don't slice if the buildplate or the nozzle type is incompatible with the materials if not CuraApplication.getInstance().getMachineManager().variantBuildplateCompatible and \ not CuraApplication.getInstance().getMachineManager().variantBuildplateUsable: @@ -150,7 +164,7 @@ class StartSliceJob(Job): # Don't slice if there is a per object setting with an error value. - for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in DepthFirstIterator(self._scene.getRoot()): if not isinstance(node, CuraSceneNode) or not node.isSelectable(): continue @@ -160,15 +174,16 @@ class StartSliceJob(Job): with self._scene.getSceneLock(): # Remove old layer data. - for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in DepthFirstIterator(self._scene.getRoot()): if node.callDecoration("getLayerData") and node.callDecoration("getBuildPlateNumber") == self._build_plate_number: - node.getParent().removeChild(node) + # Singe we walk through all nodes in the scene, they always have a parent. + cast(SceneNode, node.getParent()).removeChild(node) break # Get the objects in their groups to print. object_groups = [] if stack.getProperty("print_sequence", "value") == "one_at_a_time": - for node in OneAtATimeIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in OneAtATimeIterator(self._scene.getRoot()): temp_list = [] # Node can't be printed, so don't bother sending it. @@ -183,7 +198,8 @@ class StartSliceJob(Job): children = node.getAllChildren() children.append(node) for child_node in children: - if child_node.getMeshData() and child_node.getMeshData().getVertices() is not None: + mesh_data = child_node.getMeshData() + if mesh_data and mesh_data.getVertices() is not None: temp_list.append(child_node) if temp_list: @@ -194,12 +210,10 @@ class StartSliceJob(Job): else: temp_list = [] has_printing_mesh = False - for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. - if node.callDecoration("isSliceable") and node.getMeshData() and node.getMeshData().getVertices() is not None: - per_object_stack = node.callDecoration("getStack") - is_non_printing_mesh = False - if per_object_stack: - is_non_printing_mesh = any(per_object_stack.getProperty(key, "value") for key in NON_PRINTING_MESH_SETTINGS) + for node in DepthFirstIterator(self._scene.getRoot()): + mesh_data = node.getMeshData() + if node.callDecoration("isSliceable") and mesh_data and mesh_data.getVertices() is not None: + is_non_printing_mesh = bool(node.callDecoration("isNonPrintingMesh")) # Find a reason not to add the node if node.callDecoration("getBuildPlateNumber") != self._build_plate_number: @@ -213,7 +227,7 @@ class StartSliceJob(Job): Job.yieldThread() - #If the list doesn't have any model with suitable settings then clean the list + # If the list doesn't have any model with suitable settings then clean the list # otherwise CuraEngine will crash if not has_printing_mesh: temp_list.clear() @@ -259,18 +273,19 @@ class StartSliceJob(Job): self._buildGlobalInheritsStackMessage(stack) # Build messages for extruder stacks - # Send the extruder settings in the order of extruder positions. Somehow, if you send e.g. extruder 3 first, - # then CuraEngine can slice with the wrong settings. This I think should be fixed in CuraEngine as well. - extruder_stack_list = sorted(list(global_stack.extruders.items()), key = lambda item: int(item[0])) - for _, extruder_stack in extruder_stack_list: + for extruder_stack in global_stack.extruderList: self._buildExtruderMessage(extruder_stack) for group in filtered_object_groups: group_message = self._slice_message.addRepeatedMessage("object_lists") - if group[0].getParent() is not None and group[0].getParent().callDecoration("isGroup"): - self._handlePerObjectSettings(group[0].getParent(), group_message) + parent = group[0].getParent() + if parent is not None and parent.callDecoration("isGroup"): + self._handlePerObjectSettings(cast(CuraSceneNode, parent), group_message) + for object in group: mesh_data = object.getMeshData() + if mesh_data is None: + continue rot_scale = object.getWorldTransformation().getTransposed().getData()[0:3, 0:3] translate = object.getWorldTransformation().getData()[:3, 3] @@ -294,7 +309,7 @@ class StartSliceJob(Job): obj.vertices = flat_verts - self._handlePerObjectSettings(object, obj) + self._handlePerObjectSettings(cast(CuraSceneNode, object), obj) Job.yieldThread() @@ -323,9 +338,10 @@ class StartSliceJob(Job): value = stack.getProperty(key, "value") result[key] = value Job.yieldThread() - + result["print_bed_temperature"] = result["material_bed_temperature"] # Renamed settings. result["print_temperature"] = result["material_print_temperature"] + result["travel_speed"] = result["speed_travel"] result["time"] = time.strftime("%H:%M:%S") #Some extra settings. result["date"] = time.strftime("%d-%m-%Y") result["day"] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][int(time.strftime("%w"))] @@ -336,25 +352,29 @@ class StartSliceJob(Job): return result + def _cacheAllExtruderSettings(self): + global_stack = cast(ContainerStack, CuraApplication.getInstance().getGlobalContainerStack()) + + # NB: keys must be strings for the string formatter + self._all_extruders_settings = { + "-1": self._buildReplacementTokens(global_stack) + } + for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks(): + extruder_nr = extruder_stack.getProperty("extruder_nr", "value") + self._all_extruders_settings[str(extruder_nr)] = self._buildReplacementTokens(extruder_stack) + ## Replace setting tokens in a piece of g-code. # \param value A piece of g-code to replace tokens in. # \param default_extruder_nr Stack nr to use when no stack nr is specified, defaults to the global stack def _expandGcodeTokens(self, value: str, default_extruder_nr: int = -1) -> str: if not self._all_extruders_settings: - global_stack = cast(ContainerStack, CuraApplication.getInstance().getGlobalContainerStack()) - - # NB: keys must be strings for the string formatter - self._all_extruders_settings = { - "-1": self._buildReplacementTokens(global_stack) - } - - for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks(): - extruder_nr = extruder_stack.getProperty("extruder_nr", "value") - self._all_extruders_settings[str(extruder_nr)] = self._buildReplacementTokens(extruder_stack) + self._cacheAllExtruderSettings() try: # any setting can be used as a token fmt = GcodeStartEndFormatter(default_extruder_nr = default_extruder_nr) + if self._all_extruders_settings is None: + return "" settings = self._all_extruders_settings.copy() settings["default_extruder_nr"] = default_extruder_nr return str(fmt.format(value, **settings)) @@ -366,8 +386,14 @@ class StartSliceJob(Job): def _buildExtruderMessage(self, stack: ContainerStack) -> None: message = self._slice_message.addRepeatedMessage("extruders") message.id = int(stack.getMetaDataEntry("position")) + if not self._all_extruders_settings: + self._cacheAllExtruderSettings() - settings = self._buildReplacementTokens(stack) + if self._all_extruders_settings is None: + return + + extruder_nr = stack.getProperty("extruder_nr", "value") + settings = self._all_extruders_settings[str(extruder_nr)].copy() # Also send the material GUID. This is a setting in fdmprinter, but we have no interface for it. settings["material_guid"] = stack.material.getMetaDataEntry("GUID", "") @@ -391,7 +417,13 @@ class StartSliceJob(Job): # The settings are taken from the global stack. This does not include any # per-extruder settings or per-object settings. def _buildGlobalSettingsMessage(self, stack: ContainerStack) -> None: - settings = self._buildReplacementTokens(stack) + if not self._all_extruders_settings: + self._cacheAllExtruderSettings() + + if self._all_extruders_settings is None: + return + + settings = self._all_extruders_settings["-1"].copy() # Pre-compute material material_bed_temp_prepend and material_print_temp_prepend start_gcode = settings["machine_start_gcode"] diff --git a/plugins/CuraEngineBackend/plugin.json b/plugins/CuraEngineBackend/plugin.json index 28f0e294e7..5482e3699e 100644 --- a/plugins/CuraEngineBackend/plugin.json +++ b/plugins/CuraEngineBackend/plugin.json @@ -2,7 +2,7 @@ "name": "CuraEngine Backend", "author": "Ultimaker B.V.", "description": "Provides the link to the CuraEngine slicing backend.", - "api": "6.0", + "api": "7.0", "version": "1.0.1", "i18n-catalog": "cura" } diff --git a/plugins/CuraProfileReader/CuraProfileReader.py b/plugins/CuraProfileReader/CuraProfileReader.py index 11e58dac6d..d4e5d393b2 100644 --- a/plugins/CuraProfileReader/CuraProfileReader.py +++ b/plugins/CuraProfileReader/CuraProfileReader.py @@ -1,11 +1,14 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import configparser -from UM.PluginRegistry import PluginRegistry +import configparser +from typing import List, Optional, Tuple + from UM.Logger import Logger from UM.Settings.ContainerFormatError import ContainerFormatError from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make. +from cura.CuraApplication import CuraApplication +from cura.Machines.ContainerTree import ContainerTree from cura.ReaderWriters.ProfileReader import ProfileReader import zipfile @@ -17,39 +20,43 @@ import zipfile class CuraProfileReader(ProfileReader): ## Initialises the cura profile reader. # This does nothing since the only other function is basically stateless. - def __init__(self): + def __init__(self) -> None: super().__init__() ## Reads a cura profile from a file and returns it. # # \param file_name The file to read the cura profile from. - # \return The cura profile that was in the file, if any. If the file could - # not be read or didn't contain a valid profile, \code None \endcode is + # \return The cura profiles that were in the file, if any. If the file + # could not be read or didn't contain a valid profile, ``None`` is # returned. - def read(self, file_name): + def read(self, file_name: str) -> List[Optional[InstanceContainer]]: try: with zipfile.ZipFile(file_name, "r") as archive: - results = [] + results = [] # type: List[Optional[InstanceContainer]] for profile_id in archive.namelist(): with archive.open(profile_id) as f: serialized = f.read() - profile = self._loadProfile(serialized.decode("utf-8"), profile_id) - if profile is not None: - results.append(profile) + upgraded_profiles = self._upgradeProfile(serialized.decode("utf-8"), profile_id) #After upgrading it may split into multiple profiles. + for upgraded_profile in upgraded_profiles: + serialization, new_id = upgraded_profile + profile = self._loadProfile(serialization, new_id) + if profile is not None: + results.append(profile) return results except zipfile.BadZipFile: # It must be an older profile from Cura 2.1. with open(file_name, encoding = "utf-8") as fhandle: - serialized = fhandle.read() - return [self._loadProfile(serialized, profile_id) for serialized, profile_id in self._upgradeProfile(serialized, file_name)] + serialized_bytes = fhandle.read() + return [self._loadProfile(serialized, profile_id) for serialized, profile_id in self._upgradeProfile(serialized_bytes, file_name)] ## Convert a profile from an old Cura to this Cura if needed. # - # \param serialized \type{str} The profile data to convert in the serialized on-disk format. - # \param profile_id \type{str} The name of the profile. - # \return \type{List[Tuple[str,str]]} List of serialized profile strings and matching profile names. - def _upgradeProfile(self, serialized, profile_id): + # \param serialized The profile data to convert in the serialized on-disk + # format. + # \param profile_id The name of the profile. + # \return List of serialized profile strings and matching profile names. + def _upgradeProfile(self, serialized: str, profile_id: str) -> List[Tuple[str, str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialized) @@ -61,48 +68,67 @@ class CuraProfileReader(ProfileReader): return [] version = int(parser["general"]["version"]) + setting_version = int(parser["metadata"].get("setting_version", "0")) if InstanceContainer.Version != version: name = parser["general"]["name"] - return self._upgradeProfileVersion(serialized, name, version) + return self._upgradeProfileVersion(serialized, name, version, setting_version) else: return [(serialized, profile_id)] ## Load a profile from a serialized string. # - # \param serialized \type{str} The profile data to read. - # \param profile_id \type{str} The name of the profile. - # \return \type{InstanceContainer|None} - def _loadProfile(self, serialized, profile_id): + # \param serialized The profile data to read. + # \param profile_id The name of the profile. + # \return The profile that was stored in the string. + def _loadProfile(self, serialized: str, profile_id: str) -> Optional[InstanceContainer]: # Create an empty profile. profile = InstanceContainer(profile_id) profile.setMetaDataEntry("type", "quality_changes") try: - profile.deserialize(serialized) + profile.deserialize(serialized, file_name = profile_id) except ContainerFormatError as e: Logger.log("e", "Error in the format of a container: %s", str(e)) return None except Exception as e: Logger.log("e", "Error while trying to parse profile: %s", str(e)) return None + + global_stack = CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return None + + active_quality_definition = ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition + if profile.getMetaDataEntry("definition") != active_quality_definition: + profile.setMetaDataEntry("definition", active_quality_definition) return profile ## Upgrade a serialized profile to the current profile format. # - # \param serialized \type{str} The profile data to convert. - # \param profile_id \type{str} The name of the profile. - # \param source_version \type{int} The profile version of 'serialized'. - # \return \type{List[Tuple[str,str]]} List of serialized profile strings and matching profile names. - def _upgradeProfileVersion(self, serialized, profile_id, source_version): - converter_plugins = PluginRegistry.getInstance().getAllMetaData(filter={"version_upgrade": {} }, active_only=True) + # \param serialized The profile data to convert. + # \param profile_id The name of the profile. + # \param source_version The profile version of 'serialized'. + # \return List of serialized profile strings and matching profile names. + def _upgradeProfileVersion(self, serialized: str, profile_id: str, main_version: int, setting_version: int) -> List[Tuple[str, str]]: + source_version = main_version * 1000000 + setting_version - source_format = ("profile", source_version) - profile_convert_funcs = [plugin["version_upgrade"][source_format][2] for plugin in converter_plugins - if source_format in plugin["version_upgrade"] and plugin["version_upgrade"][source_format][1] == InstanceContainer.Version] - - if not profile_convert_funcs: + from UM.VersionUpgradeManager import VersionUpgradeManager + results = VersionUpgradeManager.getInstance().updateFilesData("quality_changes", source_version, [serialized], [profile_id]) + if results is None: return [] - filenames, outputs = profile_convert_funcs[0](serialized, profile_id) - if filenames is None and outputs is None: + serialized = results.files_data[0] + + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + if "general" not in parser: + Logger.log("w", "Missing required section 'general'.") return [] - return list(zip(outputs, filenames)) + + new_source_version = results.version + if int(new_source_version / 1000000) != InstanceContainer.Version or new_source_version % 1000000 != CuraApplication.SettingVersion: + Logger.log("e", "Failed to upgrade profile [%s]", profile_id) + + if int(parser["general"]["version"]) != InstanceContainer.Version: + Logger.log("e", "Failed to upgrade profile [%s]", profile_id) + return [] + return [(serialized, profile_id)] diff --git a/plugins/CuraProfileReader/plugin.json b/plugins/CuraProfileReader/plugin.json index 169fb43360..e1309b2d46 100644 --- a/plugins/CuraProfileReader/plugin.json +++ b/plugins/CuraProfileReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for importing Cura profiles.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/CuraProfileWriter/plugin.json b/plugins/CuraProfileWriter/plugin.json index 9627c754d7..180376f266 100644 --- a/plugins/CuraProfileWriter/plugin.json +++ b/plugins/CuraProfileWriter/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for exporting Cura profiles.", - "api": "6.0", + "api": "7.0", "i18n-catalog":"cura" } diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index a1460cca3f..f286662bc4 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -10,6 +10,9 @@ from UM.Version import Version import urllib.request from urllib.error import URLError from typing import Dict, Optional +import ssl + +import certifi from .FirmwareUpdateCheckerLookup import FirmwareUpdateCheckerLookup, getSettingsKeyForMachine from .FirmwareUpdateCheckerMessage import FirmwareUpdateCheckerMessage @@ -39,8 +42,12 @@ class FirmwareUpdateCheckerJob(Job): result = self.STRING_ZERO_VERSION try: + # CURA-6698 Create an SSL context and use certifi CA certificates for verification. + context = ssl.SSLContext(protocol = ssl.PROTOCOL_TLSv1_2) + context.load_verify_locations(cafile = certifi.where()) + request = urllib.request.Request(url, headers = self._headers) - response = urllib.request.urlopen(request) + response = urllib.request.urlopen(request, context = context) result = response.read().decode("utf-8") except URLError: Logger.log("w", "Could not reach '{0}', if this URL is old, consider removal.".format(url)) @@ -104,7 +111,7 @@ class FirmwareUpdateCheckerJob(Job): # because the new version of Cura will be release before the firmware and we don't want to # notify the user when no new firmware version is available. if (checked_version != "") and (checked_version != current_version): - Logger.log("i", "SHOWING FIRMWARE UPDATE MESSAGE") + Logger.log("i", "Showing firmware update message for new version: {version}".format(version = current_version)) message = FirmwareUpdateCheckerMessage(machine_id, self._machine_name, self._lookups.getRedirectUserUrl()) message.actionTriggered.connect(self._callback) @@ -113,7 +120,7 @@ class FirmwareUpdateCheckerJob(Job): Logger.log("i", "No machine with name {0} in list of firmware to check.".format(self._machine_name)) except Exception as e: - Logger.log("w", "Failed to check for new version: %s", e) + Logger.logException("w", "Failed to check for new version: %s", e) if not self.silent: Message(i18n_catalog.i18nc("@info", "Could not access update information.")).show() return diff --git a/plugins/FirmwareUpdateChecker/plugin.json b/plugins/FirmwareUpdateChecker/plugin.json index 6c55d77fd8..34e26fb146 100644 --- a/plugins/FirmwareUpdateChecker/plugin.json +++ b/plugins/FirmwareUpdateChecker/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Checks for firmware updates.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/FirmwareUpdater/plugin.json b/plugins/FirmwareUpdater/plugin.json index c1034e5e42..2546263064 100644 --- a/plugins/FirmwareUpdater/plugin.json +++ b/plugins/FirmwareUpdater/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides a machine actions for updating firmware.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeGzReader/GCodeGzReader.py b/plugins/GCodeGzReader/GCodeGzReader.py index d075e4e3b0..a528b494e9 100644 --- a/plugins/GCodeGzReader/GCodeGzReader.py +++ b/plugins/GCodeGzReader/GCodeGzReader.py @@ -27,6 +27,6 @@ class GCodeGzReader(MeshReader): file_data = file.read() uncompressed_gcode = gzip.decompress(file_data).decode("utf-8") PluginRegistry.getInstance().getPluginObject("GCodeReader").preReadFromStream(uncompressed_gcode) - result = PluginRegistry.getInstance().getPluginObject("GCodeReader").readFromStream(uncompressed_gcode) + result = PluginRegistry.getInstance().getPluginObject("GCodeReader").readFromStream(uncompressed_gcode, file_name) return result diff --git a/plugins/GCodeGzReader/plugin.json b/plugins/GCodeGzReader/plugin.json index d4f281682f..b3d52b1627 100644 --- a/plugins/GCodeGzReader/plugin.json +++ b/plugins/GCodeGzReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Reads g-code from a compressed archive.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeGzWriter/plugin.json b/plugins/GCodeGzWriter/plugin.json index b0e6f8d605..de59d1eda8 100644 --- a/plugins/GCodeGzWriter/plugin.json +++ b/plugins/GCodeGzWriter/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Writes g-code to a compressed archive.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeProfileReader/plugin.json b/plugins/GCodeProfileReader/plugin.json index af1c2d1827..162c31ce35 100644 --- a/plugins/GCodeProfileReader/plugin.json +++ b/plugins/GCodeProfileReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for importing profiles from g-code files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeReader/FlavorParser.py b/plugins/GCodeReader/FlavorParser.py index f8618712a1..d05338ae4d 100644 --- a/plugins/GCodeReader/FlavorParser.py +++ b/plugins/GCodeReader/FlavorParser.py @@ -1,31 +1,33 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import math +import re +from typing import Dict, List, NamedTuple, Optional, Union, Set + +import numpy + from UM.Backend import Backend from UM.Job import Job from UM.Logger import Logger from UM.Math.Vector import Vector from UM.Message import Message -from cura.Scene.CuraSceneNode import CuraSceneNode from UM.i18n import i18nCatalog -catalog = i18nCatalog("cura") - from cura.CuraApplication import CuraApplication from cura.LayerDataBuilder import LayerDataBuilder from cura.LayerDataDecorator import LayerDataDecorator from cura.LayerPolygon import LayerPolygon +from cura.Scene.CuraSceneNode import CuraSceneNode from cura.Scene.GCodeListDecorator import GCodeListDecorator from cura.Settings.ExtruderManager import ExtruderManager -import numpy -import math -import re -from typing import Dict, List, NamedTuple, Optional, Union +catalog = i18nCatalog("cura") PositionOptional = NamedTuple("Position", [("x", Optional[float]), ("y", Optional[float]), ("z", Optional[float]), ("f", Optional[float]), ("e", Optional[float])]) Position = NamedTuple("Position", [("x", float), ("y", float), ("z", float), ("f", float), ("e", List[float])]) + ## This parser is intended to interpret the common firmware codes among all the # different flavors class FlavorParser: @@ -33,9 +35,11 @@ class FlavorParser: def __init__(self) -> None: CuraApplication.getInstance().hideMessageSignal.connect(self._onHideMessage) self._cancelled = False - self._message = None + self._message = None # type: Optional[Message] self._layer_number = 0 self._extruder_number = 0 + # All extruder numbers that have been seen + self._extruders_seen = {0} # type: Set[int] self._clearValues() self._scene_node = None # X, Y, Z position, F feedrate and E extruder values are stored @@ -64,7 +68,7 @@ class FlavorParser: if n < 0: return None n += len(code) - pattern = re.compile("[;\s]") + pattern = re.compile("[;\\s]") match = pattern.search(line, n) m = match.start() if match is not None else -1 try: @@ -290,7 +294,12 @@ class FlavorParser: extruder.getProperty("machine_nozzle_offset_y", "value")] return result - def processGCodeStream(self, stream: str) -> Optional[CuraSceneNode]: + # + # CURA-6643 + # This function needs the filename so it can be set to the SceneNode. Otherwise, if you load a GCode file and press + # F5, that gcode SceneNode will be removed because it doesn't have a file to be reloaded from. + # + def processGCodeStream(self, stream: str, filename: str) -> Optional["CuraSceneNode"]: Logger.log("d", "Preparing to load GCode") self._cancelled = False # We obtain the filament diameter from the selected extruder to calculate line widths @@ -368,6 +377,8 @@ class FlavorParser: self._layer_type = LayerPolygon.InfillType elif type == "SUPPORT-INTERFACE": self._layer_type = LayerPolygon.SupportInterfaceType + elif type == "PRIME-TOWER": + self._layer_type = LayerPolygon.PrimeTowerType else: Logger.log("w", "Encountered a unknown type (%s) while parsing g-code.", type) @@ -414,6 +425,7 @@ class FlavorParser: if line.startswith("T"): T = self._getInt(line, "T") if T is not None: + self._extruders_seen.add(T) self._createPolygon(self._current_layer_thickness, current_path, self._extruder_offsets.get(self._extruder_number, [0, 0])) current_path.clear() @@ -425,7 +437,8 @@ class FlavorParser: if line.startswith("M"): M = self._getInt(line, "M") - self.processMCode(M, line, current_position, current_path) + if M is not None: + self.processMCode(M, line, current_position, current_path) # "Flush" leftovers. Last layer paths are still stored if len(current_path) > 1: @@ -448,6 +461,7 @@ class FlavorParser: scene_node.addDecorator(decorator) gcode_list_decorator = GCodeListDecorator() + gcode_list_decorator.setGcodeFileName(filename) gcode_list_decorator.setGCodeList(gcode_list) scene_node.addDecorator(gcode_list_decorator) @@ -462,10 +476,9 @@ class FlavorParser: if self._layer_number == 0: Logger.log("w", "File doesn't contain any valid layers") - settings = CuraApplication.getInstance().getGlobalContainerStack() - if not settings.getProperty("machine_center_is_zero", "value"): - machine_width = settings.getProperty("machine_width", "value") - machine_depth = settings.getProperty("machine_depth", "value") + if not global_stack.getProperty("machine_center_is_zero", "value"): + machine_width = global_stack.getProperty("machine_width", "value") + machine_depth = global_stack.getProperty("machine_depth", "value") scene_node.setPosition(Vector(-machine_width / 2, 0, machine_depth / 2)) Logger.log("d", "GCode loading finished") diff --git a/plugins/GCodeReader/GCodeReader.py b/plugins/GCodeReader/GCodeReader.py index 1bc22a3e62..21be026cc6 100755 --- a/plugins/GCodeReader/GCodeReader.py +++ b/plugins/GCodeReader/GCodeReader.py @@ -2,6 +2,8 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional, Union, List, TYPE_CHECKING + from UM.FileHandler.FileReader import FileReader from UM.Mesh.MeshReader import MeshReader from UM.i18n import i18nCatalog @@ -9,10 +11,13 @@ from UM.Application import Application from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType catalog = i18nCatalog("cura") + +from .FlavorParser import FlavorParser from . import MarlinFlavorParser, RepRapFlavorParser - - +if TYPE_CHECKING: + from UM.Scene.SceneNode import SceneNode + from cura.Scene.CuraSceneNode import CuraSceneNode # Class for loading and parsing G-code files @@ -33,7 +38,7 @@ class GCodeReader(MeshReader): ) self._supported_extensions = [".gcode", ".g"] - self._flavor_reader = None + self._flavor_reader = None # type: Optional[FlavorParser] Application.getInstance().getPreferences().addPreference("gcodereader/show_caution", True) @@ -57,10 +62,16 @@ class GCodeReader(MeshReader): file_data = file.read() return self.preReadFromStream(file_data, args, kwargs) - def readFromStream(self, stream): - return self._flavor_reader.processGCodeStream(stream) + def readFromStream(self, stream: str, filename: str) -> Optional["CuraSceneNode"]: + if self._flavor_reader is None: + return None + return self._flavor_reader.processGCodeStream(stream, filename) - def _read(self, file_name): + def _read(self, file_name: str) -> Union["SceneNode", List["SceneNode"]]: with open(file_name, "r", encoding = "utf-8") as file: file_data = file.read() - return self.readFromStream(file_data) + result = [] # type: List[SceneNode] + node = self.readFromStream(file_data, file_name) + if node is not None: + result.append(node) + return result diff --git a/plugins/GCodeReader/plugin.json b/plugins/GCodeReader/plugin.json index bbc94fa917..e34fefbdff 100644 --- a/plugins/GCodeReader/plugin.json +++ b/plugins/GCodeReader/plugin.json @@ -3,6 +3,6 @@ "author": "Victor Larchenko, Ultimaker", "version": "1.0.1", "description": "Allows loading and displaying G-code files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py index 3e5bf59e73..792b2aff10 100644 --- a/plugins/GCodeWriter/GCodeWriter.py +++ b/plugins/GCodeWriter/GCodeWriter.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import re # For escaping characters in the settings. @@ -9,8 +9,7 @@ from UM.Mesh.MeshWriter import MeshWriter from UM.Logger import Logger from UM.Application import Application from UM.Settings.InstanceContainer import InstanceContainer - -from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch +from cura.Machines.ContainerTree import ContainerTree from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") @@ -117,17 +116,24 @@ class GCodeWriter(MeshWriter): # \return A serialised string of the settings. def _serialiseSettings(self, stack): container_registry = self._application.getContainerRegistry() - quality_manager = self._application.getQualityManager() prefix = self._setting_keyword + str(GCodeWriter.version) + " " # The prefix to put before each line. prefix_length = len(prefix) quality_type = stack.quality.getMetaDataEntry("quality_type") container_with_profile = stack.qualityChanges + machine_definition_id_for_quality = ContainerTree.getInstance().machines[stack.definition.getId()].quality_definition if container_with_profile.getId() == "empty_quality_changes": # If the global quality changes is empty, create a new one quality_name = container_registry.uniqueName(stack.quality.getName()) - container_with_profile = quality_manager._createQualityChanges(quality_type, quality_name, stack, None) + quality_id = container_registry.uniqueName((stack.definition.getId() + "_" + quality_name).lower().replace(" ", "_")) + container_with_profile = InstanceContainer(quality_id) + container_with_profile.setName(quality_name) + container_with_profile.setMetaDataEntry("type", "quality_changes") + container_with_profile.setMetaDataEntry("quality_type", quality_type) + if stack.getMetaDataEntry("position") is not None: # For extruder stacks, the quality changes should include an intent category. + container_with_profile.setMetaDataEntry("intent_category", stack.intent.getMetaDataEntry("intent_category", "default")) + container_with_profile.setDefinition(machine_definition_id_for_quality) flat_global_container = self._createFlattenedContainerInstance(stack.userChanges, container_with_profile) # If the quality changes is not set, we need to set type manually @@ -139,7 +145,6 @@ class GCodeWriter(MeshWriter): flat_global_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal")) # Get the machine definition ID for quality profiles - machine_definition_id_for_quality = getMachineDefinitionIDForQualitySearch(stack.definition) flat_global_container.setMetaDataEntry("definition", machine_definition_id_for_quality) serialized = flat_global_container.serialize() @@ -151,7 +156,12 @@ class GCodeWriter(MeshWriter): if extruder_quality.getId() == "empty_quality_changes": # Same story, if quality changes is empty, create a new one quality_name = container_registry.uniqueName(stack.quality.getName()) - extruder_quality = quality_manager._createQualityChanges(quality_type, quality_name, stack, None) + quality_id = container_registry.uniqueName((stack.definition.getId() + "_" + quality_name).lower().replace(" ", "_")) + extruder_quality = InstanceContainer(quality_id) + extruder_quality.setName(quality_name) + extruder_quality.setMetaDataEntry("type", "quality_changes") + extruder_quality.setMetaDataEntry("quality_type", quality_type) + extruder_quality.setDefinition(machine_definition_id_for_quality) flat_extruder_quality = self._createFlattenedContainerInstance(extruder.userChanges, extruder_quality) # If the quality changes is not set, we need to set type manually diff --git a/plugins/GCodeWriter/plugin.json b/plugins/GCodeWriter/plugin.json index f3a95ddb78..457652bf3f 100644 --- a/plugins/GCodeWriter/plugin.json +++ b/plugins/GCodeWriter/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Writes g-code to a file.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/ImageReader/ConfigUI.qml b/plugins/ImageReader/ConfigUI.qml index b9ff2e4453..0429fae4e1 100644 --- a/plugins/ImageReader/ConfigUI.qml +++ b/plugins/ImageReader/ConfigUI.qml @@ -123,7 +123,7 @@ UM.Dialog UM.TooltipArea { Layout.fillWidth:true height: childrenRect.height - text: catalog.i18nc("@info:tooltip","By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh.") + text: catalog.i18nc("@info:tooltip","For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model.") Row { width: parent.width @@ -134,15 +134,61 @@ UM.Dialog anchors.verticalCenter: parent.verticalCenter } ComboBox { - id: image_color_invert - objectName: "Image_Color_Invert" - model: [ catalog.i18nc("@item:inlistbox","Lighter is higher"), catalog.i18nc("@item:inlistbox","Darker is higher") ] + id: lighter_is_higher + objectName: "Lighter_Is_Higher" + model: [ catalog.i18nc("@item:inlistbox","Darker is higher"), catalog.i18nc("@item:inlistbox","Lighter is higher") ] width: 180 * screenScaleFactor onCurrentIndexChanged: { manager.onImageColorInvertChanged(currentIndex) } } } } + UM.TooltipArea { + Layout.fillWidth:true + height: childrenRect.height + text: catalog.i18nc("@info:tooltip","For lithophanes a simple logarithmic model for translucency is available. For height maps the pixel values correspond to heights linearly.") + Row { + width: parent.width + + Label { + text: "Color Model" + width: 150 * screenScaleFactor + anchors.verticalCenter: parent.verticalCenter + } + ComboBox { + id: color_model + objectName: "ColorModel" + model: [ catalog.i18nc("@item:inlistbox","Linear"), catalog.i18nc("@item:inlistbox","Translucency") ] + width: 180 * screenScaleFactor + onCurrentIndexChanged: { manager.onColorModelChanged(currentIndex) } + } + } + } + + UM.TooltipArea { + Layout.fillWidth:true + height: childrenRect.height + text: catalog.i18nc("@info:tooltip","The percentage of light penetrating a print with a thickness of 1 millimeter. Lowering this value increases the contrast in dark regions and decreases the contrast in light regions of the image.") + visible: color_model.currentText == catalog.i18nc("@item:inlistbox","Translucency") + Row { + width: parent.width + + Label { + text: catalog.i18nc("@action:label", "1mm Transmittance (%)") + width: 150 * screenScaleFactor + anchors.verticalCenter: parent.verticalCenter + } + TextField { + id: transmittance + objectName: "Transmittance" + focus: true + validator: RegExpValidator {regExp: /^[1-9]\d{0,2}([\,|\.]\d*)?$/} + width: 180 * screenScaleFactor + onTextChanged: { manager.onTransmittanceChanged(text) } + } + } + } + UM.TooltipArea { Layout.fillWidth:true height: childrenRect.height diff --git a/plugins/ImageReader/ImageReader.py b/plugins/ImageReader/ImageReader.py index 5195b61595..d6c2827d16 100644 --- a/plugins/ImageReader/ImageReader.py +++ b/plugins/ImageReader/ImageReader.py @@ -3,6 +3,8 @@ import numpy +import math + from PyQt5.QtGui import QImage, qRed, qGreen, qBlue from PyQt5.QtCore import Qt @@ -46,9 +48,9 @@ class ImageReader(MeshReader): def _read(self, file_name): size = max(self._ui.getWidth(), self._ui.getDepth()) - return self._generateSceneNode(file_name, size, self._ui.peak_height, self._ui.base_height, self._ui.smoothing, 512, self._ui.image_color_invert) + return self._generateSceneNode(file_name, size, self._ui.peak_height, self._ui.base_height, self._ui.smoothing, 512, self._ui.lighter_is_higher, self._ui.use_transparency_model, self._ui.transmittance_1mm) - def _generateSceneNode(self, file_name, xz_size, peak_height, base_height, blur_iterations, max_size, image_color_invert): + def _generateSceneNode(self, file_name, xz_size, peak_height, base_height, blur_iterations, max_size, lighter_is_higher, use_transparency_model, transmittance_1mm): scene_node = SceneNode() mesh = MeshBuilder() @@ -99,12 +101,14 @@ class ImageReader(MeshReader): for x in range(0, width): for y in range(0, height): qrgb = img.pixel(x, y) - avg = float(qRed(qrgb) + qGreen(qrgb) + qBlue(qrgb)) / (3 * 255) - height_data[y, x] = avg + if use_transparency_model: + height_data[y, x] = (0.299 * math.pow(qRed(qrgb) / 255.0, 2.2) + 0.587 * math.pow(qGreen(qrgb) / 255.0, 2.2) + 0.114 * math.pow(qBlue(qrgb) / 255.0, 2.2)) + else: + height_data[y, x] = (0.212655 * qRed(qrgb) + 0.715158 * qGreen(qrgb) + 0.072187 * qBlue(qrgb)) / 255 # fast computation ignoring gamma and degamma Job.yieldThread() - if image_color_invert: + if lighter_is_higher == use_transparency_model: height_data = 1 - height_data for _ in range(0, blur_iterations): @@ -124,8 +128,15 @@ class ImageReader(MeshReader): Job.yieldThread() - height_data *= scale_vector.y - height_data += base_height + if use_transparency_model: + divisor = 1.0 / math.log(transmittance_1mm / 100.0) # log-base doesn't matter here. Precompute this value for faster computation of each pixel. + min_luminance = (transmittance_1mm / 100.0) ** (peak_height - base_height) + for (y, x) in numpy.ndindex(height_data.shape): + mapped_luminance = min_luminance + (1.0 - min_luminance) * height_data[y, x] + height_data[y, x] = base_height + divisor * math.log(mapped_luminance) # use same base as a couple lines above this + else: + height_data *= scale_vector.y + height_data += base_height heightmap_face_count = 2 * height_minus_one * width_minus_one total_face_count = heightmap_face_count + (width_minus_one * 2) * (height_minus_one * 2) + 2 diff --git a/plugins/ImageReader/ImageReaderUI.py b/plugins/ImageReader/ImageReaderUI.py index cb45afa4ad..a61fabb742 100644 --- a/plugins/ImageReader/ImageReaderUI.py +++ b/plugins/ImageReader/ImageReaderUI.py @@ -30,10 +30,12 @@ class ImageReaderUI(QObject): self._width = self.default_width self._depth = self.default_depth - self.base_height = 1 - self.peak_height = 10 + self.base_height = 0.4 + self.peak_height = 2.5 self.smoothing = 1 - self.image_color_invert = False; + self.lighter_is_higher = False; + self.use_transparency_model = True; + self.transmittance_1mm = 50.0; # based on pearl PLA self._ui_lock = threading.Lock() self._cancelled = False @@ -75,6 +77,7 @@ class ImageReaderUI(QObject): self._ui_view.findChild(QObject, "Base_Height").setProperty("text", str(self.base_height)) self._ui_view.findChild(QObject, "Peak_Height").setProperty("text", str(self.peak_height)) + self._ui_view.findChild(QObject, "Transmittance").setProperty("text", str(self.transmittance_1mm)) self._ui_view.findChild(QObject, "Smoothing").setProperty("value", self.smoothing) def _createConfigUI(self): @@ -143,4 +146,12 @@ class ImageReaderUI(QObject): @pyqtSlot(int) def onImageColorInvertChanged(self, value): - self.image_color_invert = (value == 1) + self.lighter_is_higher = (value == 1) + + @pyqtSlot(int) + def onColorModelChanged(self, value): + self.use_transparency_model = (value == 0) + + @pyqtSlot(int) + def onTransmittanceChanged(self, value): + self.transmittance_1mm = value diff --git a/plugins/ImageReader/plugin.json b/plugins/ImageReader/plugin.json index d966537d99..a5f03a540d 100644 --- a/plugins/ImageReader/plugin.json +++ b/plugins/ImageReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Enables ability to generate printable geometry from 2D image files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/LegacyProfileReader/LegacyProfileReader.py b/plugins/LegacyProfileReader/LegacyProfileReader.py index 013bab6f11..87b26eb4ec 100644 --- a/plugins/LegacyProfileReader/LegacyProfileReader.py +++ b/plugins/LegacyProfileReader/LegacyProfileReader.py @@ -157,7 +157,7 @@ class LegacyProfileReader(ProfileReader): data = stream.getvalue() profile = InstanceContainer(profile_id) - profile.deserialize(data) # Also performs the version upgrade. + profile.deserialize(data, file_name) # Also performs the version upgrade. profile.setDirty(True) #We need to return one extruder stack and one global stack. diff --git a/plugins/LegacyProfileReader/plugin.json b/plugins/LegacyProfileReader/plugin.json index 2f5264ad37..f4f18becbf 100644 --- a/plugins/LegacyProfileReader/plugin.json +++ b/plugins/LegacyProfileReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for importing profiles from legacy Cura versions.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py b/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py index 480a61f301..cd0f681828 100644 --- a/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py +++ b/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py @@ -5,6 +5,8 @@ import configparser # An input for some functions we're testing. import os.path # To find the integration test .ini files. import pytest # To register tests with. import unittest.mock # To mock the application, plug-in and container registry out. +import sys +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) import UM.Application # To mock the application out. import UM.PluginRegistry # To mock the plug-in registry out. @@ -12,11 +14,14 @@ import UM.Settings.ContainerRegistry # To mock the container registry out. import UM.Settings.InstanceContainer # To intercept the serialised data from the read() function. import LegacyProfileReader as LegacyProfileReaderModule # To get the directory of the module. -from LegacyProfileReader import LegacyProfileReader # The module we're testing. + @pytest.fixture def legacy_profile_reader(): - return LegacyProfileReader() + try: + return LegacyProfileReaderModule.LegacyProfileReader() + except TypeError: + return LegacyProfileReaderModule.LegacyProfileReader.LegacyProfileReader() test_prepareDefaultsData = [ { @@ -157,7 +162,7 @@ def test_read(legacy_profile_reader, file_name): plugin_registry.getPluginPath = unittest.mock.MagicMock(return_value = os.path.dirname(LegacyProfileReaderModule.__file__)) # Mock out the resulting InstanceContainer so that we can intercept the data before it's passed through the version upgrader. - def deserialize(self, data): # Intercepts the serialised data that we'd perform the version upgrade from when deserializing. + def deserialize(self, data, filename): # Intercepts the serialised data that we'd perform the version upgrade from when deserializing. global intercepted_data intercepted_data = data @@ -187,4 +192,4 @@ def test_read(legacy_profile_reader, file_name): assert parser["metadata"]["type"] == "quality_changes" assert parser["metadata"]["quality_type"] == "normal" assert parser["metadata"]["position"] == "0" - assert parser["metadata"]["setting_version"] == "5" # Yes, before we upgraded. \ No newline at end of file + assert parser["metadata"]["setting_version"] == "5" # Yes, before we upgraded. diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index afd7aac86d..28535024a7 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -1,16 +1,24 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import pyqtProperty, pyqtSignal +from typing import Optional, TYPE_CHECKING + +from PyQt5.QtCore import pyqtProperty import UM.i18n from UM.FlameProfiler import pyqtSlot -from UM.Application import Application from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.DefinitionContainer import DefinitionContainer +from UM.Util import parseBool +import cura.CuraApplication # Imported like this to prevent circular dependencies. from cura.MachineAction import MachineAction +from cura.Machines.ContainerTree import ContainerTree # To re-build the machine node when hasMaterials changes. from cura.Settings.CuraStackBuilder import CuraStackBuilder +from cura.Settings.cura_empty_instance_containers import isEmptyContainer + +if TYPE_CHECKING: + from PyQt5.QtCore import QObject catalog = UM.i18n.i18nCatalog("cura") @@ -18,139 +26,118 @@ catalog = UM.i18n.i18nCatalog("cura") ## This action allows for certain settings that are "machine only") to be modified. # It automatically detects machine definitions that it knows how to change and attaches itself to those. class MachineSettingsAction(MachineAction): - def __init__(self, parent = None): + def __init__(self, parent: Optional["QObject"] = None) -> None: super().__init__("MachineSettingsAction", catalog.i18nc("@action", "Machine Settings")) self._qml_url = "MachineSettingsAction.qml" - self._application = Application.getInstance() - - self._global_container_stack = None + from cura.CuraApplication import CuraApplication + self._application = CuraApplication.getInstance() from cura.Settings.CuraContainerStack import _ContainerIndexes - self._container_index = _ContainerIndexes.DefinitionChanges + self._store_container_index = _ContainerIndexes.DefinitionChanges self._container_registry = ContainerRegistry.getInstance() self._container_registry.containerAdded.connect(self._onContainerAdded) - self._container_registry.containerRemoved.connect(self._onContainerRemoved) - self._application.globalContainerStackChanged.connect(self._onGlobalContainerChanged) + # The machine settings dialog blocks auto-slicing when it's shown, and re-enables it when it's finished. self._backend = self._application.getBackend() + self.onFinished.connect(self._onFinished) - self._empty_definition_container_id_list = [] + # If the g-code flavour changes between UltiGCode and another flavour, we need to update the container tree. + self._application.globalContainerStackChanged.connect(self._updateHasMaterialsInContainerTree) - def _isEmptyDefinitionChanges(self, container_id: str): - if not self._empty_definition_container_id_list: - self._empty_definition_container_id_list = [self._application.empty_container.getId(), - self._application.empty_definition_changes_container.getId()] - return container_id in self._empty_definition_container_id_list + # Which container index in a stack to store machine setting changes. + @pyqtProperty(int, constant = True) + def storeContainerIndex(self) -> int: + return self._store_container_index def _onContainerAdded(self, container): # Add this action as a supported action to all machine definitions if isinstance(container, DefinitionContainer) and container.getMetaDataEntry("type") == "machine": self._application.getMachineActionManager().addSupportedAction(container.getId(), self.getKey()) - def _onContainerRemoved(self, container): - # Remove definition_changes containers when a stack is removed - if container.getMetaDataEntry("type") in ["machine", "extruder_train"]: - definition_changes_id = container.definitionChanges.getId() - if self._isEmptyDefinitionChanges(definition_changes_id): - return + ## Triggered when the global container stack changes or when the g-code + # flavour setting is changed. + def _updateHasMaterialsInContainerTree(self) -> None: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] + + if machine_node.has_materials != parseBool(global_stack.getMetaDataEntry("has_materials")): # May have changed due to the g-code flavour. + machine_node.has_materials = parseBool(global_stack.getMetaDataEntry("has_materials")) + machine_node._loadAll() def _reset(self): - if not self._global_container_stack: + global_stack = self._application.getMachineManager().activeMachine + if not global_stack: return # Make sure there is a definition_changes container to store the machine settings - definition_changes_id = self._global_container_stack.definitionChanges.getId() - if self._isEmptyDefinitionChanges(definition_changes_id): - CuraStackBuilder.createDefinitionChangesContainer(self._global_container_stack, - self._global_container_stack.getName() + "_settings") - - # Notify the UI in which container to store the machine settings data - from cura.Settings.CuraContainerStack import _ContainerIndexes - - container_index = _ContainerIndexes.DefinitionChanges - if container_index != self._container_index: - self._container_index = container_index - self.containerIndexChanged.emit() + definition_changes_id = global_stack.definitionChanges.getId() + if isEmptyContainer(definition_changes_id): + CuraStackBuilder.createDefinitionChangesContainer(global_stack, + global_stack.getName() + "_settings") # Disable auto-slicing while the MachineAction is showing if self._backend: # This sometimes triggers before backend is loaded. self._backend.disableTimer() - @pyqtSlot() - def onFinishAction(self): - # Restore autoslicing when the machineaction is dismissed + def _onFinished(self): + # Restore auto-slicing when the machine action is dismissed if self._backend and self._backend.determineAutoSlicing(): + self._backend.enableTimer() self._backend.tickle() - containerIndexChanged = pyqtSignal() - - @pyqtProperty(int, notify = containerIndexChanged) - def containerIndex(self): - return self._container_index - - def _onGlobalContainerChanged(self): - self._global_container_stack = Application.getInstance().getGlobalContainerStack() - - # This additional emit is needed because we cannot connect a UM.Signal directly to a pyqtSignal - self.globalContainerChanged.emit() - - globalContainerChanged = pyqtSignal() - - @pyqtProperty(int, notify = globalContainerChanged) - def definedExtruderCount(self): - if not self._global_container_stack: - return 0 - - return len(self._global_container_stack.getMetaDataEntry("machine_extruder_trains")) - @pyqtSlot(int) - def setMachineExtruderCount(self, extruder_count): + def setMachineExtruderCount(self, extruder_count: int) -> None: # Note: this method was in this class before, but since it's quite generic and other plugins also need it # it was moved to the machine manager instead. Now this method just calls the machine manager. self._application.getMachineManager().setActiveMachineExtruderCount(extruder_count) @pyqtSlot() - def forceUpdate(self): + def forceUpdate(self) -> None: # Force rebuilding the build volume by reloading the global container stack. # This is a bit of a hack, but it seems quick enough. - self._application.globalContainerStackChanged.emit() + self._application.getMachineManager().globalContainerChanged.emit() @pyqtSlot() - def updateHasMaterialsMetadata(self): + def updateHasMaterialsMetadata(self) -> None: + global_stack = self._application.getMachineManager().activeMachine + # Updates the has_materials metadata flag after switching gcode flavor - if not self._global_container_stack: + if not global_stack: return - definition = self._global_container_stack.getBottom() - if definition.getProperty("machine_gcode_flavor", "value") != "UltiGCode" or definition.getMetaDataEntry("has_materials", False): + definition = global_stack.getDefinition() + if definition.getProperty("machine_gcode_flavor", "value") != "UltiGCode" or parseBool(definition.getMetaDataEntry("has_materials", False)): # In other words: only continue for the UM2 (extended), but not for the UM2+ return machine_manager = self._application.getMachineManager() - material_manager = self._application.getMaterialManager() - extruder_positions = list(self._global_container_stack.extruders.keys()) - has_materials = self._global_container_stack.getProperty("machine_gcode_flavor", "value") != "UltiGCode" + has_materials = global_stack.getProperty("machine_gcode_flavor", "value") != "UltiGCode" - material_node = None if has_materials: - self._global_container_stack.setMetaDataEntry("has_materials", True) + global_stack.setMetaDataEntry("has_materials", True) else: # The metadata entry is stored in an ini, and ini files are parsed as strings only. # Because any non-empty string evaluates to a boolean True, we have to remove the entry to make it False. - if "has_materials" in self._global_container_stack.getMetaData(): - self._global_container_stack.removeMetaDataEntry("has_materials") + if "has_materials" in global_stack.getMetaData(): + global_stack.removeMetaDataEntry("has_materials") + + self._updateHasMaterialsInContainerTree() # set materials - for position in extruder_positions: - if has_materials: - material_node = material_manager.getDefaultMaterial(self._global_container_stack, position, None) - machine_manager.setMaterial(position, material_node) + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] + for position, extruder in enumerate(global_stack.extruderList): + #Find out what material we need to default to. + approximate_diameter = round(extruder.getProperty("material_diameter", "value")) + material_node = machine_node.variants[extruder.variant.getName()].preferredMaterial(approximate_diameter) + machine_manager.setMaterial(str(position), material_node) self._application.globalContainerStackChanged.emit() @pyqtSlot(int) - def updateMaterialForDiameter(self, extruder_position: int): + def updateMaterialForDiameter(self, extruder_position: int) -> None: # Updates the material container to a material that matches the material diameter set for the printer self._application.getMachineManager().updateMaterialWithVariant(str(extruder_position)) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.qml b/plugins/MachineSettingsAction/MachineSettingsAction.qml index ef8fda224a..56b4d3e3b6 100644 --- a/plugins/MachineSettingsAction/MachineSettingsAction.qml +++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml @@ -1,939 +1,119 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 -import UM 1.2 as UM -import Cura 1.0 as Cura +import UM 1.3 as UM +import Cura 1.1 as Cura +// +// This component contains the content for the "Welcome" page of the welcome on-boarding process. +// Cura.MachineAction { - id: base - property var extrudersModel: Cura.ExtrudersModel{} // Do not retrieve the Model from a backend. Otherwise the tabs - // in tabView will not removed/updated. Probably QML bug - property int extruderTabsCount: 0 + UM.I18nCatalog { id: catalog; name: "cura" } - property var activeMachineId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.id : "" + anchors.fill: parent + property var extrudersModel: Cura.ExtrudersModel {} + + // If we create a TabButton for "Printer" and use Repeater for extruders, for some reason, once the component + // finishes it will automatically change "currentIndex = 1", and it is VERY difficult to change "currentIndex = 0" + // after that. Using a model and a Repeater to create both "Printer" and extruder TabButtons seem to solve this + // problem. Connections { - target: base.extrudersModel - onModelChanged: - { - var extruderCount = base.extrudersModel.count; - base.extruderTabsCount = extruderCount; - } + target: extrudersModel + onItemsChanged: tabNameModel.update() } - Connections + ListModel { - target: dialog ? dialog : null - ignoreUnknownSignals: true - // Any which way this action dialog is dismissed, make sure it is properly finished - onNextClicked: finishAction() - onBackClicked: finishAction() - onAccepted: finishAction() - onRejected: finishAction() - onClosing: finishAction() - } + id: tabNameModel - function finishAction() - { - forceActiveFocus(); - manager.onFinishAction(); - } + Component.onCompleted: update() - anchors.fill: parent; - Item - { - id: machineSettingsAction - anchors.fill: parent; - - UM.I18nCatalog { id: catalog; name: "cura"; } - - Label + function update() { - id: pageTitle - width: parent.width - text: catalog.i18nc("@title", "Machine Settings") - wrapMode: Text.WordWrap - font.pointSize: 18; - } - - TabView - { - id: settingsTabs - height: parent.height - y - width: parent.width - anchors.left: parent.left - anchors.top: pageTitle.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - - property real columnWidth: Math.round((width - 3 * UM.Theme.getSize("default_margin").width) / 2) - property real labelColumnWidth: Math.round(columnWidth / 2) - - Tab + clear() + append({ name: catalog.i18nc("@title:tab", "Printer") }) + for (var i = 0; i < extrudersModel.count; i++) { - title: catalog.i18nc("@title:tab", "Printer"); - anchors.margins: UM.Theme.getSize("default_margin").width - - Column - { - spacing: UM.Theme.getSize("default_margin").height - - Row - { - width: parent.width - spacing: UM.Theme.getSize("default_margin").height - - Column - { - width: settingsTabs.columnWidth - spacing: UM.Theme.getSize("default_lining").height - - Label - { - text: catalog.i18nc("@label", "Printer Settings") - font.bold: true - } - - Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height } - - Loader - { - id: buildAreaWidthField - sourceComponent: numericTextFieldWithUnit - property string settingKey: "machine_width" - property string label: catalog.i18nc("@label", "X (Width)") - property string unit: catalog.i18nc("@label", "mm") - property bool forceUpdateOnChange: true - } - - Loader - { - id: buildAreaDepthField - sourceComponent: numericTextFieldWithUnit - property string settingKey: "machine_depth" - property string label: catalog.i18nc("@label", "Y (Depth)") - property string unit: catalog.i18nc("@label", "mm") - property bool forceUpdateOnChange: true - } - - Loader - { - id: buildAreaHeightField - sourceComponent: numericTextFieldWithUnit - property string settingKey: "machine_height" - property string label: catalog.i18nc("@label", "Z (Height)") - property string unit: catalog.i18nc("@label", "mm") - property bool forceUpdateOnChange: true - } - - Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height } - - Loader - { - id: shapeComboBox - sourceComponent: comboBoxWithOptions - property string settingKey: "machine_shape" - property string label: catalog.i18nc("@label", "Build plate shape") - property bool forceUpdateOnChange: true - } - - Loader - { - id: centerIsZeroCheckBox - sourceComponent: simpleCheckBox - property string settingKey: "machine_center_is_zero" - property string label: catalog.i18nc("@option:check", "Origin at center") - property bool forceUpdateOnChange: true - } - Loader - { - id: heatedBedCheckBox - sourceComponent: simpleCheckBox - property var settingKey: "machine_heated_bed" - property string label: catalog.i18nc("@option:check", "Heated bed") - property bool forceUpdateOnChange: true - } - - Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height } - - Loader - { - id: gcodeFlavorComboBox - sourceComponent: comboBoxWithOptions - property string settingKey: "machine_gcode_flavor" - property string label: catalog.i18nc("@label", "G-code flavor") - property bool forceUpdateOnChange: true - property var afterOnActivate: manager.updateHasMaterialsMetadata - } - } - - Column - { - width: settingsTabs.columnWidth - spacing: UM.Theme.getSize("default_lining").height - - Label - { - text: catalog.i18nc("@label", "Printhead Settings") - font.bold: true - } - - Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height } - - Loader - { - id: printheadXMinField - sourceComponent: headPolygonTextField - property string label: catalog.i18nc("@label", "X min") - property string tooltip: catalog.i18nc("@tooltip", "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\".") - property string axis: "x" - property string side: "min" - } - - Loader - { - id: printheadYMinField - sourceComponent: headPolygonTextField - property string label: catalog.i18nc("@label", "Y min") - property string tooltip: catalog.i18nc("@tooltip", "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\".") - property string axis: "y" - property string side: "min" - } - - Loader - { - id: printheadXMaxField - sourceComponent: headPolygonTextField - property string label: catalog.i18nc("@label", "X max") - property string tooltip: catalog.i18nc("@tooltip", "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\".") - property string axis: "x" - property string side: "max" - } - - Loader - { - id: printheadYMaxField - sourceComponent: headPolygonTextField - property string label: catalog.i18nc("@label", "Y max") - property string tooltip: catalog.i18nc("@tooltip", "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\".") - property string axis: "y" - property string side: "max" - } - - Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height } - - Loader - { - id: gantryHeightField - sourceComponent: numericTextFieldWithUnit - property string settingKey: "gantry_height" - property string label: catalog.i18nc("@label", "Gantry height") - property string unit: catalog.i18nc("@label", "mm") - property string tooltip: catalog.i18nc("@tooltip", "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\".") - property bool forceUpdateOnChange: true - } - - Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height } - - UM.TooltipArea - { - height: childrenRect.height - width: childrenRect.width - text: machineExtruderCountProvider.properties.description - visible: extruderCountModel.count >= 2 - - Row - { - spacing: UM.Theme.getSize("default_margin").width - - Label - { - text: catalog.i18nc("@label", "Number of Extruders") - elide: Text.ElideRight - width: Math.max(0, settingsTabs.labelColumnWidth) - anchors.verticalCenter: extruderCountComboBox.verticalCenter - } - ComboBox - { - id: extruderCountComboBox - model: ListModel - { - id: extruderCountModel - Component.onCompleted: - { - for(var i = 0; i < manager.definedExtruderCount; i++) - { - extruderCountModel.append({text: String(i + 1), value: i}); - } - } - } - - Connections - { - target: manager - onDefinedExtruderCountChanged: - { - extruderCountModel.clear(); - for(var i = 0; i < manager.definedExtruderCount; ++i) - { - extruderCountModel.append({text: String(i + 1), value: i}); - } - } - } - - currentIndex: machineExtruderCountProvider.properties.value - 1 - onActivated: - { - manager.setMachineExtruderCount(index + 1); - } - } - } - } - } - } - - Row - { - spacing: UM.Theme.getSize("default_margin").width - anchors.left: parent.left - anchors.right: parent.right - height: parent.height - y - Column - { - height: parent.height - width: settingsTabs.columnWidth - Label - { - text: catalog.i18nc("@label", "Start G-code") - font.bold: true - } - Loader - { - id: machineStartGcodeField - sourceComponent: gcodeTextArea - property int areaWidth: parent.width - property int areaHeight: parent.height - y - property string settingKey: "machine_start_gcode" - property string tooltip: catalog.i18nc("@tooltip", "G-code commands to be executed at the very start.") - } - } - - Column { - height: parent.height - width: settingsTabs.columnWidth - Label - { - text: catalog.i18nc("@label", "End G-code") - font.bold: true - } - Loader - { - id: machineEndGcodeField - sourceComponent: gcodeTextArea - property int areaWidth: parent.width - property int areaHeight: parent.height - y - property string settingKey: "machine_end_gcode" - property string tooltip: catalog.i18nc("@tooltip", "G-code commands to be executed at the very end.") - } - } - } - } + const m = extrudersModel.getItem(i) + append({ name: m.name }) } + } + } - onCurrentIndexChanged: + Cura.RoundedRectangle + { + anchors + { + top: tabBar.bottom + topMargin: -UM.Theme.getSize("default_lining").height + bottom: parent.bottom + left: parent.left + right: parent.right + } + cornerSide: Cura.RoundedRectangle.Direction.Down + border.color: UM.Theme.getColor("lining") + border.width: UM.Theme.getSize("default_lining").width + radius: UM.Theme.getSize("default_radius").width + color: UM.Theme.getColor("main_background") + StackLayout + { + id: tabStack + anchors.fill: parent + + currentIndex: tabBar.currentIndex + + MachineSettingsPrinterTab { - if(currentIndex > 0) - { - contentItem.forceActiveFocus(); - } + id: printerTab } Repeater { - id: extruderTabsRepeater - model: base.extruderTabsCount - - Tab + model: extrudersModel + delegate: MachineSettingsExtruderTab { - title: base.extrudersModel.getItem(index).name - anchors.margins: UM.Theme.getSize("default_margin").width - - Column - { - spacing: UM.Theme.getSize("default_lining").width - - Label - { - text: catalog.i18nc("@label", "Nozzle Settings") - font.bold: true - } - - Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height } - - Loader - { - id: extruderNozzleSizeField - visible: !Cura.MachineManager.hasVariants - sourceComponent: numericTextFieldWithUnit - property string settingKey: "machine_nozzle_size" - property string label: catalog.i18nc("@label", "Nozzle size") - property string unit: catalog.i18nc("@label", "mm") - function afterOnEditingFinished() - { - // Somehow the machine_nozzle_size dependent settings are not updated otherwise - Cura.MachineManager.forceUpdateAllSettings() - } - property bool isExtruderSetting: true - } - - Loader - { - id: materialDiameterField - visible: Cura.MachineManager.hasMaterials - sourceComponent: numericTextFieldWithUnit - property string settingKey: "material_diameter" - property string label: catalog.i18nc("@label", "Compatible material diameter") - property string unit: catalog.i18nc("@label", "mm") - property string tooltip: catalog.i18nc("@tooltip", "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile.") - function afterOnEditingFinished() - { - if (settingsTabs.currentIndex > 0) - { - manager.updateMaterialForDiameter(settingsTabs.currentIndex - 1) - } - } - function setValueFunction(value) - { - if (settingsTabs.currentIndex > 0) - { - const extruderIndex = index.toString() - Cura.MachineManager.activeMachine.extruders[extruderIndex].compatibleMaterialDiameter = value - } - } - property bool isExtruderSetting: true - } - - Loader - { - id: extruderOffsetXField - sourceComponent: numericTextFieldWithUnit - property string settingKey: "machine_nozzle_offset_x" - property string label: catalog.i18nc("@label", "Nozzle offset X") - property string unit: catalog.i18nc("@label", "mm") - property bool isExtruderSetting: true - property bool forceUpdateOnChange: true - property bool allowNegative: true - } - - Loader - { - id: extruderOffsetYField - sourceComponent: numericTextFieldWithUnit - property string settingKey: "machine_nozzle_offset_y" - property string label: catalog.i18nc("@label", "Nozzle offset Y") - property string unit: catalog.i18nc("@label", "mm") - property bool isExtruderSetting: true - property bool forceUpdateOnChange: true - property bool allowNegative: true - } - - Loader - { - id: extruderCoolingFanNumberField - sourceComponent: numericTextFieldWithUnit - property string settingKey: "machine_extruder_cooling_fan_number" - property string label: catalog.i18nc("@label", "Cooling Fan Number") - property string unit: catalog.i18nc("@label", "") - property bool isExtruderSetting: true - property bool forceUpdateOnChange: true - property bool allowNegative: false - } - - Item { width: UM.Theme.getSize("default_margin").width; height: UM.Theme.getSize("default_margin").height } - - Row - { - spacing: UM.Theme.getSize("default_margin").width - anchors.left: parent.left - anchors.right: parent.right - height: parent.height - y - Column - { - height: parent.height - width: settingsTabs.columnWidth - Label - { - text: catalog.i18nc("@label", "Extruder Start G-code") - font.bold: true - } - Loader - { - id: extruderStartGcodeField - sourceComponent: gcodeTextArea - property int areaWidth: parent.width - property int areaHeight: parent.height - y - property string settingKey: "machine_extruder_start_code" - property bool isExtruderSetting: true - } - } - Column { - height: parent.height - width: settingsTabs.columnWidth - Label - { - text: catalog.i18nc("@label", "Extruder End G-code") - font.bold: true - } - Loader - { - id: extruderEndGcodeField - sourceComponent: gcodeTextArea - property int areaWidth: parent.width - property int areaHeight: parent.height - y - property string settingKey: "machine_extruder_end_code" - property bool isExtruderSetting: true - } - } - } - } + id: discoverTab + extruderPosition: model.index + extruderStackId: model.id } } } } - Component + Label { - id: simpleCheckBox - UM.TooltipArea + id: machineNameLabel + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + text: Cura.MachineManager.activeMachine.name + horizontalAlignment: Text.AlignHCenter + font: UM.Theme.getFont("large_bold") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + UM.TabRow + { + id: tabBar + anchors.top: machineNameLabel.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + width: parent.width + Repeater { - height: checkBox.height - width: checkBox.width - text: _tooltip - - property bool _isExtruderSetting: (typeof(isExtruderSetting) === 'undefined') ? false: isExtruderSetting - property bool _forceUpdateOnChange: (typeof(forceUpdateOnChange) === 'undefined') ? false: forceUpdateOnChange - property string _tooltip: (typeof(tooltip) === 'undefined') ? propertyProvider.properties.description : tooltip - - UM.SettingPropertyProvider + model: tabNameModel + delegate: UM.TabRowButton { - id: propertyProvider - - containerStackId: { - if(_isExtruderSetting) - { - if(settingsTabs.currentIndex > 0) - { - return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; - } - return ""; - } - return base.activeMachineId - } - key: settingKey - watchedProperties: [ "value", "description" ] - storeIndex: manager.containerIndex - } - - CheckBox - { - id: checkBox - text: label - checked: String(propertyProvider.properties.value).toLowerCase() != 'false' - onClicked: - { - propertyProvider.setPropertyValue("value", checked); - if(_forceUpdateOnChange) - { - manager.forceUpdate(); - } - } + text: model.name } } } - - Component - { - id: numericTextFieldWithUnit - UM.TooltipArea - { - height: childrenRect.height - width: childrenRect.width - text: _tooltip - - property bool _isExtruderSetting: (typeof(isExtruderSetting) === 'undefined') ? false: isExtruderSetting - property bool _allowNegative: (typeof(allowNegative) === 'undefined') ? false : allowNegative - property var _afterOnEditingFinished: (typeof(afterOnEditingFinished) === 'undefined') ? undefined : afterOnEditingFinished - property bool _forceUpdateOnChange: (typeof(forceUpdateOnChange) === 'undefined') ? false : forceUpdateOnChange - property string _label: (typeof(label) === 'undefined') ? "" : label - property string _tooltip: (typeof(tooltip) === 'undefined') ? propertyProvider.properties.description : tooltip - property var _setValueFunction: (typeof(setValueFunction) === 'undefined') ? undefined : setValueFunction - - UM.SettingPropertyProvider - { - id: propertyProvider - - containerStackId: { - if(_isExtruderSetting) - { - if(settingsTabs.currentIndex > 0) - { - return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; - } - return ""; - } - return base.activeMachineId - } - key: settingKey - watchedProperties: [ "value", "description" ] - storeIndex: manager.containerIndex - } - - Row - { - spacing: UM.Theme.getSize("default_margin").width - - Label - { - text: _label - visible: _label != "" - elide: Text.ElideRight - width: Math.max(0, settingsTabs.labelColumnWidth) - anchors.verticalCenter: textFieldWithUnit.verticalCenter - } - - Item - { - width: textField.width - height: textField.height - - id: textFieldWithUnit - TextField - { - id: textField - text: { - const value = propertyProvider.properties.value; - return value ? value : ""; - } - validator: RegExpValidator { regExp: _allowNegative ? /-?[0-9\.,]{0,6}/ : /[0-9\.,]{0,6}/ } - onEditingFinished: - { - if (propertyProvider && text != propertyProvider.properties.value) - { - // For some properties like the extruder-compatible material diameter, they need to - // trigger many updates, such as the available materials, the current material may - // need to be switched, etc. Although setting the diameter can be done directly via - // the provider, all the updates that need to be triggered then need to depend on - // the metadata update, a signal that can be fired way too often. The update functions - // can have if-checks to filter out the irrelevant updates, but still it incurs unnecessary - // overhead. - // The ExtruderStack class has a dedicated function for this call "setCompatibleMaterialDiameter()", - // and it triggers the diameter update signals only when it is needed. Here it is optionally - // choose to use setCompatibleMaterialDiameter() or other more specific functions that - // are available. - if (_setValueFunction !== undefined) - { - _setValueFunction(text) - } - else - { - propertyProvider.setPropertyValue("value", text) - } - if(_forceUpdateOnChange) - { - manager.forceUpdate() - } - if(_afterOnEditingFinished) - { - _afterOnEditingFinished() - } - } - } - } - - Label - { - text: unit - anchors.right: textField.right - anchors.rightMargin: y - textField.y - anchors.verticalCenter: textField.verticalCenter - } - } - } - } - } - - Component - { - id: comboBoxWithOptions - UM.TooltipArea - { - height: childrenRect.height - width: childrenRect.width - text: _tooltip - - property bool _isExtruderSetting: (typeof(isExtruderSetting) === 'undefined') ? false : isExtruderSetting - property bool _forceUpdateOnChange: (typeof(forceUpdateOnChange) === 'undefined') ? false : forceUpdateOnChange - property var _afterOnActivate: (typeof(afterOnActivate) === 'undefined') ? undefined : afterOnActivate - property string _label: (typeof(label) === 'undefined') ? "" : label - property string _tooltip: (typeof(tooltip) === 'undefined') ? propertyProvider.properties.description : tooltip - - UM.SettingPropertyProvider - { - id: propertyProvider - - containerStackId: { - if(_isExtruderSetting) - { - if(settingsTabs.currentIndex > 0) - { - return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; - } - return ""; - } - return base.activeMachineId - } - key: settingKey - watchedProperties: [ "value", "options", "description" ] - storeIndex: manager.containerIndex - } - - Row - { - spacing: UM.Theme.getSize("default_margin").width - - Label - { - text: _label - visible: _label != "" - elide: Text.ElideRight - width: Math.max(0, settingsTabs.labelColumnWidth) - anchors.verticalCenter: comboBox.verticalCenter - } - ComboBox - { - id: comboBox - model: ListModel - { - id: optionsModel - Component.onCompleted: - { - // Options come in as a string-representation of an OrderedDict - var options = propertyProvider.properties.options.match(/^OrderedDict\(\[\((.*)\)\]\)$/); - if(options) - { - options = options[1].split("), (") - for(var i = 0; i < options.length; i++) - { - var option = options[i].substring(1, options[i].length - 1).split("', '") - optionsModel.append({text: option[1], value: option[0]}); - } - } - } - } - currentIndex: - { - var currentValue = propertyProvider.properties.value; - var index = 0; - for(var i = 0; i < optionsModel.count; i++) - { - if(optionsModel.get(i).value == currentValue) { - index = i; - break; - } - } - return index - } - onActivated: - { - if(propertyProvider.properties.value != optionsModel.get(index).value) - { - propertyProvider.setPropertyValue("value", optionsModel.get(index).value); - if(_forceUpdateOnChange) - { - manager.forceUpdate(); - } - if(_afterOnActivate) - { - _afterOnActivate(); - } - } - } - } - } - } - } - - Component - { - id: gcodeTextArea - - UM.TooltipArea - { - height: gcodeArea.height - width: gcodeArea.width - text: _tooltip - - property bool _isExtruderSetting: (typeof(isExtruderSetting) === 'undefined') ? false : isExtruderSetting - property string _tooltip: (typeof(tooltip) === 'undefined') ? propertyProvider.properties.description : tooltip - - UM.SettingPropertyProvider - { - id: propertyProvider - - containerStackId: { - if(_isExtruderSetting) - { - if(settingsTabs.currentIndex > 0) - { - return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; - } - return ""; - } - return base.activeMachineId - } - key: settingKey - watchedProperties: [ "value", "description" ] - storeIndex: manager.containerIndex - } - - TextArea - { - id: gcodeArea - width: areaWidth - height: areaHeight - font: UM.Theme.getFont("fixed") - text: (propertyProvider.properties.value) ? propertyProvider.properties.value : "" - onActiveFocusChanged: - { - if(!activeFocus) - { - propertyProvider.setPropertyValue("value", gcodeArea.text) - } - } - Component.onCompleted: - { - wrapMode = TextEdit.NoWrap; - } - } - } - } - - Component - { - id: headPolygonTextField - UM.TooltipArea - { - height: textField.height - width: textField.width - text: tooltip - - property string _label: (typeof(label) === 'undefined') ? "" : label - - Row - { - spacing: UM.Theme.getSize("default_margin").width - - Label - { - text: _label - visible: _label != "" - elide: Text.ElideRight - width: Math.max(0, settingsTabs.labelColumnWidth) - anchors.verticalCenter: textFieldWithUnit.verticalCenter - } - - Item - { - id: textFieldWithUnit - width: textField.width - height: textField.height - - TextField - { - id: textField - text: - { - var polygon = JSON.parse(machineHeadPolygonProvider.properties.value); - var item = (axis == "x") ? 0 : 1 - var result = polygon[0][item]; - for(var i = 1; i < polygon.length; i++) { - if (side == "min") { - result = Math.min(result, polygon[i][item]); - } else { - result = Math.max(result, polygon[i][item]); - } - } - result = Math.abs(result); - printHeadPolygon[axis][side] = result; - return result; - } - validator: RegExpValidator { regExp: /[0-9\.,]{0,6}/ } - onEditingFinished: - { - printHeadPolygon[axis][side] = parseFloat(textField.text.replace(',','.')); - var polygon = []; - polygon.push([-printHeadPolygon["x"]["min"], printHeadPolygon["y"]["max"]]); - polygon.push([-printHeadPolygon["x"]["min"],-printHeadPolygon["y"]["min"]]); - polygon.push([ printHeadPolygon["x"]["max"], printHeadPolygon["y"]["max"]]); - polygon.push([ printHeadPolygon["x"]["max"],-printHeadPolygon["y"]["min"]]); - var polygon_string = JSON.stringify(polygon); - if(polygon_string != machineHeadPolygonProvider.properties.value) - { - machineHeadPolygonProvider.setPropertyValue("value", polygon_string); - manager.forceUpdate(); - } - } - } - - Label - { - text: catalog.i18nc("@label", "mm") - anchors.right: textField.right - anchors.rightMargin: y - textField.y - anchors.verticalCenter: textField.verticalCenter - } - } - } - } - } - - property var printHeadPolygon: - { - "x": { - "min": 0, - "max": 0, - }, - "y": { - "min": 0, - "max": 0, - }, - } - - - UM.SettingPropertyProvider - { - id: machineExtruderCountProvider - - containerStackId: base.activeMachineId - key: "machine_extruder_count" - watchedProperties: [ "value", "description" ] - storeIndex: manager.containerIndex - } - - UM.SettingPropertyProvider - { - id: machineHeadPolygonProvider - - containerStackId: base.activeMachineId - key: "machine_head_with_fans_polygon" - watchedProperties: [ "value" ] - storeIndex: manager.containerIndex - } } diff --git a/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml b/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml new file mode 100644 index 0000000000..2ceabf87d0 --- /dev/null +++ b/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml @@ -0,0 +1,182 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This component contains the content for the "Welcome" page of the welcome on-boarding process. +// +Item +{ + id: base + UM.I18nCatalog { id: catalog; name: "cura" } + + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + + property int labelWidth: 210 * screenScaleFactor + property int controlWidth: (UM.Theme.getSize("setting_control").width * 3 / 4) | 0 + property var labelFont: UM.Theme.getFont("default") + + property int columnWidth: ((parent.width - 2 * UM.Theme.getSize("default_margin").width) / 2) | 0 + property int columnSpacing: 3 * screenScaleFactor + property int propertyStoreIndex: manager ? manager.storeContainerIndex : 1 // definition_changes + + property string extruderStackId: "" + property int extruderPosition: 0 + property var forceUpdateFunction: manager.forceUpdate + + function updateMaterialDiameter() + { + manager.updateMaterialForDiameter(extruderPosition) + } + + Item + { + id: upperBlock + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: UM.Theme.getSize("default_margin").width + + height: childrenRect.height + + // ======================================= + // Left-side column "Nozzle Settings" + // ======================================= + Column + { + anchors.top: parent.top + anchors.left: parent.left + width: parent.width * 2 / 3 + + spacing: base.columnSpacing + + Label // Title Label + { + text: catalog.i18nc("@title:label", "Nozzle Settings") + font: UM.Theme.getFont("medium_bold") + renderType: Text.NativeRendering + } + + Cura.NumericTextFieldWithUnit // "Nozzle size" + { + id: extruderNozzleSizeField + visible: !Cura.MachineManager.activeMachine.hasVariants + containerStackId: base.extruderStackId + settingKey: "machine_nozzle_size" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Nozzle size") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.NumericTextFieldWithUnit // "Compatible material diameter" + { + id: extruderCompatibleMaterialDiameterField + containerStackId: base.extruderStackId + settingKey: "material_diameter" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Compatible material diameter") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + forceUpdateOnChangeFunction: forceUpdateFunction + // Other modules won't automatically respond after the user changes the value, so we need to force it. + afterOnEditingFinishedFunction: updateMaterialDiameter + } + + Cura.NumericTextFieldWithUnit // "Nozzle offset X" + { + id: extruderNozzleOffsetXField + containerStackId: base.extruderStackId + settingKey: "machine_nozzle_offset_x" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Nozzle offset X") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + allowNegativeValue: true + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.NumericTextFieldWithUnit // "Nozzle offset Y" + { + id: extruderNozzleOffsetYField + containerStackId: base.extruderStackId + settingKey: "machine_nozzle_offset_y" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Nozzle offset Y") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + allowNegativeValue: true + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.NumericTextFieldWithUnit // "Cooling Fan Number" + { + id: extruderNozzleCoolingFanNumberField + containerStackId: base.extruderStackId + settingKey: "machine_extruder_cooling_fan_number" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Cooling Fan Number") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: "" + forceUpdateOnChangeFunction: forceUpdateFunction + } + } + } + + Item // Extruder Start and End G-code + { + id: lowerBlock + anchors.top: upperBlock.bottom + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: UM.Theme.getSize("default_margin").width + + Cura.GcodeTextArea // "Extruder Start G-code" + { + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.bottomMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + width: base.columnWidth - UM.Theme.getSize("default_margin").width + + labelText: catalog.i18nc("@title:label", "Extruder Start G-code") + containerStackId: base.extruderStackId + settingKey: "machine_extruder_start_code" + settingStoreIndex: propertyStoreIndex + } + + Cura.GcodeTextArea // "Extruder End G-code" + { + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.bottomMargin: UM.Theme.getSize("default_margin").height + anchors.right: parent.right + width: base.columnWidth - UM.Theme.getSize("default_margin").width + + labelText: catalog.i18nc("@title:label", "Extruder End G-code") + containerStackId: base.extruderStackId + settingKey: "machine_extruder_end_code" + settingStoreIndex: propertyStoreIndex + } + } +} diff --git a/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml b/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml new file mode 100644 index 0000000000..3780d6447b --- /dev/null +++ b/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml @@ -0,0 +1,384 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This the content in the "Printer" tab in the Machine Settings dialog. +// +Item +{ + id: base + UM.I18nCatalog { id: catalog; name: "cura" } + + property int columnWidth: ((parent.width - 2 * UM.Theme.getSize("default_margin").width) / 2) | 0 + property int columnSpacing: 3 * screenScaleFactor + property int propertyStoreIndex: manager ? manager.storeContainerIndex : 1 // definition_changes + + property int labelWidth: (columnWidth * 2 / 3 - UM.Theme.getSize("default_margin").width * 2) | 0 + property int controlWidth: (columnWidth / 3) | 0 + property var labelFont: UM.Theme.getFont("default") + + property string machineStackId: Cura.MachineManager.activeMachine.id + + property var forceUpdateFunction: manager.forceUpdate + + RowLayout + { + id: upperBlock + anchors + { + top: parent.top + left: parent.left + right: parent.right + margins: UM.Theme.getSize("default_margin").width + } + spacing: UM.Theme.getSize("default_margin").width + + // ======================================= + // Left-side column for "Printer Settings" + // ======================================= + Column + { + Layout.fillWidth: true + Layout.alignment: Qt.AlignTop + + spacing: base.columnSpacing + + Label // Title Label + { + text: catalog.i18nc("@title:label", "Printer Settings") + font: UM.Theme.getFont("medium_bold") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + width: parent.width + elide: Text.ElideRight + } + + Cura.NumericTextFieldWithUnit // "X (Width)" + { + id: machineXWidthField + containerStackId: machineStackId + settingKey: "machine_width" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "X (Width)") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.NumericTextFieldWithUnit // "Y (Depth)" + { + id: machineYDepthField + containerStackId: machineStackId + settingKey: "machine_depth" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Y (Depth)") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.NumericTextFieldWithUnit // "Z (Height)" + { + id: machineZHeightField + containerStackId: machineStackId + settingKey: "machine_height" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Z (Height)") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.ComboBoxWithOptions // "Build plate shape" + { + id: buildPlateShapeComboBox + containerStackId: machineStackId + settingKey: "machine_shape" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Build plate shape") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.SimpleCheckBox // "Origin at center" + { + id: originAtCenterCheckBox + containerStackId: machineStackId + settingKey: "machine_center_is_zero" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Origin at center") + labelFont: base.labelFont + labelWidth: base.labelWidth + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.SimpleCheckBox // "Heated bed" + { + id: heatedBedCheckBox + containerStackId: machineStackId + settingKey: "machine_heated_bed" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Heated bed") + labelFont: base.labelFont + labelWidth: base.labelWidth + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.SimpleCheckBox // "Heated build volume" + { + id: heatedVolumeCheckBox + containerStackId: machineStackId + settingKey: "machine_heated_build_volume" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Heated build volume") + labelFont: base.labelFont + labelWidth: base.labelWidth + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.ComboBoxWithOptions // "G-code flavor" + { + id: gcodeFlavorComboBox + containerStackId: machineStackId + settingKey: "machine_gcode_flavor" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "G-code flavor") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + forceUpdateOnChangeFunction: forceUpdateFunction + // FIXME(Lipu): better document this. + // This has something to do with UM2 and UM2+ regarding "has_material" and the gcode flavor settings. + // I don't remember exactly what. + afterOnEditingFinishedFunction: manager.updateHasMaterialsMetadata + } + } + + // ======================================= + // Right-side column for "Printhead Settings" + // ======================================= + Column + { + Layout.fillWidth: true + Layout.alignment: Qt.AlignTop + + spacing: base.columnSpacing + + Label // Title Label + { + text: catalog.i18nc("@title:label", "Printhead Settings") + font: UM.Theme.getFont("medium_bold") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + width: parent.width + elide: Text.ElideRight + } + + Cura.PrintHeadMinMaxTextField // "X min" + { + id: machineXMinField + + settingStoreIndex: propertyStoreIndex + + labelText: catalog.i18nc("@label", "X min") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + + axisName: "x" + axisMinOrMax: "min" + allowNegativeValue: true + allowPositiveValue: false + + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.PrintHeadMinMaxTextField // "Y min" + { + id: machineYMinField + + settingStoreIndex: propertyStoreIndex + + labelText: catalog.i18nc("@label", "Y min") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + + axisName: "y" + axisMinOrMax: "min" + allowNegativeValue: true + allowPositiveValue: false + + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.PrintHeadMinMaxTextField // "X max" + { + id: machineXMaxField + + settingStoreIndex: propertyStoreIndex + + labelText: catalog.i18nc("@label", "X max") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + + axisName: "x" + axisMinOrMax: "max" + allowNegativeValue: false + allowPositiveValue: true + + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.PrintHeadMinMaxTextField // "Y max" + { + id: machineYMaxField + + containerStackId: machineStackId + settingKey: "machine_head_with_fans_polygon" + settingStoreIndex: propertyStoreIndex + + labelText: catalog.i18nc("@label", "Y max") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + + axisName: "y" + axisMinOrMax: "max" + allowNegativeValue: false + allowPositiveValue: true + + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.NumericTextFieldWithUnit // "Gantry Height" + { + id: machineGantryHeightField + containerStackId: machineStackId + settingKey: "gantry_height" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Gantry Height") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + unitText: catalog.i18nc("@label", "mm") + forceUpdateOnChangeFunction: forceUpdateFunction + } + + Cura.ComboBoxWithOptions // "Number of Extruders" + { + id: numberOfExtrudersComboBox + containerStackId: machineStackId + settingKey: "machine_extruder_count" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Number of Extruders") + labelFont: base.labelFont + labelWidth: base.labelWidth + controlWidth: base.controlWidth + forceUpdateOnChangeFunction: forceUpdateFunction + // FIXME(Lipu): better document this. + // This has something to do with UM2 and UM2+ regarding "has_material" and the gcode flavor settings. + // I don't remember exactly what. + afterOnEditingFinishedFunction: manager.updateHasMaterialsMetadata + setValueFunction: manager.setMachineExtruderCount + + optionModel: ListModel + { + id: extruderCountModel + + Component.onCompleted: + { + update() + } + + function update() + { + clear() + for (var i = 1; i <= Cura.MachineManager.activeMachine.maxExtruderCount; i++) + { + // Use String as value. JavaScript only has Number. PropertyProvider.setPropertyValue() + // takes a QVariant as value, and Number gets translated into a float. This will cause problem + // for integer settings such as "Number of Extruders". + append({ text: String(i), value: String(i) }) + } + } + } + + Connections + { + target: Cura.MachineManager + onGlobalContainerChanged: extruderCountModel.update() + } + } + + Cura.SimpleCheckBox // "Shared Heater" + { + id: sharedHeaterCheckBox + containerStackId: machineStackId + settingKey: "machine_extruders_share_heater" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Shared Heater") + labelFont: base.labelFont + labelWidth: base.labelWidth + forceUpdateOnChangeFunction: forceUpdateFunction + } + } + } + + RowLayout // Start and End G-code + { + id: lowerBlock + spacing: UM.Theme.getSize("default_margin").width + anchors + { + top: upperBlock.bottom + bottom: parent.bottom + left: parent.left + right: parent.right + margins: UM.Theme.getSize("default_margin").width + } + + Cura.GcodeTextArea // "Start G-code" + { + Layout.fillWidth: true + Layout.fillHeight: true + + labelText: catalog.i18nc("@title:label", "Start G-code") + containerStackId: machineStackId + settingKey: "machine_start_gcode" + settingStoreIndex: propertyStoreIndex + } + + Cura.GcodeTextArea // "End G-code" + { + Layout.fillWidth: true + Layout.fillHeight: true + + labelText: catalog.i18nc("@title:label", "End G-code") + containerStackId: machineStackId + settingKey: "machine_end_gcode" + settingStoreIndex: propertyStoreIndex + } + } +} diff --git a/plugins/MachineSettingsAction/plugin.json b/plugins/MachineSettingsAction/plugin.json index d734c1adf5..cc1e5fb01e 100644 --- a/plugins/MachineSettingsAction/plugin.json +++ b/plugins/MachineSettingsAction/plugin.json @@ -3,6 +3,6 @@ "author": "fieldOfView", "version": "1.0.1", "description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/ModelChecker/ModelChecker.py b/plugins/ModelChecker/ModelChecker.py index d2c2eefac2..0afed28f19 100644 --- a/plugins/ModelChecker/ModelChecker.py +++ b/plugins/ModelChecker/ModelChecker.py @@ -3,12 +3,13 @@ import os -from PyQt5.QtCore import QObject, pyqtSlot, pyqtSignal, pyqtProperty +from PyQt5.QtCore import QObject, pyqtSlot, pyqtSignal, pyqtProperty, QTimer from UM.Application import Application from UM.Extension import Extension from UM.Logger import Logger from UM.Message import Message +from UM.Scene.Camera import Camera from UM.i18n import i18nCatalog from UM.PluginRegistry import PluginRegistry from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator @@ -29,13 +30,22 @@ class ModelChecker(QObject, Extension): lifetime = 0, title = catalog.i18nc("@info:title", "3D Model Assistant")) + self._change_timer = QTimer() + self._change_timer.setInterval(200) + self._change_timer.setSingleShot(True) + self._change_timer.timeout.connect(self.onChanged) + Application.getInstance().initializationFinished.connect(self._pluginsInitialized) Application.getInstance().getController().getScene().sceneChanged.connect(self._onChanged) Application.getInstance().globalContainerStackChanged.connect(self._onChanged) - ## Pass-through to allow UM.Signal to connect with a pyqtSignal. def _onChanged(self, *args, **kwargs): - self.onChanged.emit() + # Ignore camera updates. + if len(args) == 0: + self._change_timer.start() + return + if not isinstance(args[0], Camera): + self._change_timer.start() ## Called when plug-ins are initialized. # @@ -66,7 +76,9 @@ class ModelChecker(QObject, Extension): # This function can be triggered in the middle of a machine change, so do not proceed if the machine change # has not done yet. - if str(node_extruder_position) not in global_container_stack.extruders: + try: + extruder = global_container_stack.extruderList[int(node_extruder_position)] + except IndexError: Application.getInstance().callLater(lambda: self.onChanged.emit()) return False @@ -121,9 +133,9 @@ class ModelChecker(QObject, Extension): material_shrinkage = {} # Get all shrinkage values of materials used - for extruder_position, extruder in global_container_stack.extruders.items(): + for extruder_position, extruder in enumerate(global_container_stack.extruderList): shrinkage = extruder.material.getProperty("material_shrinkage_percentage", "value") if shrinkage is None: shrinkage = 0 - material_shrinkage[extruder_position] = shrinkage + material_shrinkage[str(extruder_position)] = shrinkage return material_shrinkage diff --git a/plugins/ModelChecker/plugin.json b/plugins/ModelChecker/plugin.json index 59be5bbf0a..6437fb0802 100644 --- a/plugins/ModelChecker/plugin.json +++ b/plugins/ModelChecker/plugin.json @@ -2,7 +2,7 @@ "name": "Model Checker", "author": "Ultimaker B.V.", "version": "1.0.1", - "api": "6.0", + "api": "7.0", "description": "Checks models and print configuration for possible printing issues and give suggestions.", "i18n-catalog": "cura" } diff --git a/plugins/MonitorStage/MonitorMain.qml b/plugins/MonitorStage/MonitorMain.qml index a73650ed6a..a70c10ff0f 100644 --- a/plugins/MonitorStage/MonitorMain.qml +++ b/plugins/MonitorStage/MonitorMain.qml @@ -11,13 +11,21 @@ Rectangle { id: viewportOverlay - property bool isConnected: Cura.MachineManager.activeMachineHasActiveNetworkConnection || Cura.MachineManager.activeMachineHasActiveCloudConnection - property bool isNetworkConfigurable: ["Ultimaker 3", "Ultimaker 3 Extended", "Ultimaker S5"].indexOf(Cura.MachineManager.activeMachineDefinitionName) > -1 + property bool isConnected: Cura.MachineManager.activeMachineHasNetworkConnection || Cura.MachineManager.activeMachineHasCloudConnection + property bool isNetworkConfigurable: + { + if(Cura.MachineManager.activeMachine === null) + { + return false + } + return Cura.MachineManager.activeMachine.supportsNetworkConnection + } + property bool isNetworkConfigured: { // Readability: var connectedTypes = [2, 3]; - var types = Cura.MachineManager.activeMachineConfiguredConnectionTypes + var types = Cura.MachineManager.activeMachine.configuredConnectionTypes // Check if configured connection types includes either 2 or 3 (LAN or cloud) for (var i = 0; i < types.length; i++) @@ -89,7 +97,7 @@ Rectangle horizontalCenter: parent.horizontalCenter } visible: isNetworkConfigured && !isConnected - text: catalog.i18nc("@info", "Please make sure your printer has a connection:\n- Check if the printer is turned on.\n- Check if the printer is connected to the network.") + text: catalog.i18nc("@info", "Please make sure your printer has a connection:\n- Check if the printer is turned on.\n- Check if the printer is connected to the network.\n- Check if you are signed in to discover cloud-connected printers.") font: UM.Theme.getFont("medium") color: UM.Theme.getColor("monitor_text_primary") wrapMode: Text.WordWrap @@ -98,7 +106,6 @@ Rectangle width: contentWidth } - // CASE 3: CAN NOT MONITOR Label { id: noNetworkLabel @@ -106,24 +113,8 @@ Rectangle { horizontalCenter: parent.horizontalCenter } - visible: !isNetworkConfigured - text: catalog.i18nc("@info", "Please select a network connected printer to monitor.") - font: UM.Theme.getFont("medium") - color: UM.Theme.getColor("monitor_text_primary") - wrapMode: Text.WordWrap - width: contentWidth - lineHeight: UM.Theme.getSize("monitor_text_line_large").height - lineHeightMode: Text.FixedHeight - } - Label - { - id: noNetworkUltimakerLabel - anchors - { - horizontalCenter: parent.horizontalCenter - } visible: !isNetworkConfigured && isNetworkConfigurable - text: catalog.i18nc("@info", "Please connect your Ultimaker printer to your local network.") + text: catalog.i18nc("@info", "Please connect your printer to the network.") font: UM.Theme.getFont("medium") color: UM.Theme.getColor("monitor_text_primary") wrapMode: Text.WordWrap @@ -135,7 +126,7 @@ Rectangle { anchors { - left: noNetworkUltimakerLabel.left + left: noNetworkLabel.left } visible: !isNetworkConfigured && isNetworkConfigurable height: UM.Theme.getSize("monitor_text_line").height @@ -160,7 +151,7 @@ Rectangle verticalCenter: externalLinkIcon.verticalCenter } color: UM.Theme.getColor("monitor_text_link") - font: UM.Theme.getFont("medium") // 14pt, regular + font: UM.Theme.getFont("medium") linkColor: UM.Theme.getColor("monitor_text_link") text: catalog.i18nc("@label link to technical assistance", "View user manuals online") renderType: Text.NativeRendering @@ -170,15 +161,9 @@ Rectangle anchors.fill: parent hoverEnabled: true onClicked: Qt.openUrlExternally("https://ultimaker.com/en/resources/manuals/ultimaker-3d-printers") - onEntered: - { - manageQueueText.font.underline = true - } - onExited: - { - manageQueueText.font.underline = false - } + onEntered: manageQueueText.font.underline = true + onExited: manageQueueText.font.underline = false } } } -} \ No newline at end of file +} diff --git a/plugins/MonitorStage/MonitorStage.py b/plugins/MonitorStage/MonitorStage.py index 69b7f20f4e..3d2a1c3f37 100644 --- a/plugins/MonitorStage/MonitorStage.py +++ b/plugins/MonitorStage/MonitorStage.py @@ -2,8 +2,6 @@ # Cura is released under the terms of the LGPLv3 or higher. import os.path from UM.Application import Application -from UM.PluginRegistry import PluginRegistry -from UM.Resources import Resources from cura.Stages.CuraStage import CuraStage diff --git a/plugins/MonitorStage/__init__.py b/plugins/MonitorStage/__init__.py index 0468e6319b..a755268c79 100644 --- a/plugins/MonitorStage/__init__.py +++ b/plugins/MonitorStage/__init__.py @@ -12,7 +12,7 @@ def getMetaData(): return { "stage": { "name": i18n_catalog.i18nc("@item:inmenu", "Monitor"), - "weight": 2 + "weight": 30 } } diff --git a/plugins/MonitorStage/plugin.json b/plugins/MonitorStage/plugin.json index 95e4b86f36..2274351527 100644 --- a/plugins/MonitorStage/plugin.json +++ b/plugins/MonitorStage/plugin.json @@ -1,8 +1,8 @@ -{ - "name": "Monitor Stage", - "author": "Ultimaker B.V.", - "version": "1.0.1", - "description": "Provides a monitor stage in Cura.", - "api": "6.0", - "i18n-catalog": "cura" +{ + "name": "Monitor Stage", + "author": "Ultimaker B.V.", + "version": "1.0.1", + "description": "Provides a monitor stage in Cura.", + "api": "7.0", + "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/PerObjectSettingsTool/PerObjectItem.qml b/plugins/PerObjectSettingsTool/PerObjectItem.qml index 559ad2bf81..7c6ece12db 100644 --- a/plugins/PerObjectSettingsTool/PerObjectItem.qml +++ b/plugins/PerObjectSettingsTool/PerObjectItem.qml @@ -29,6 +29,17 @@ UM.TooltipArea UM.ActiveTool.forceUpdate(); } } + + // When the user removes settings from the list addedSettingsModel, we need to recheck if the + // setting is visible or not to show a mark in the CheckBox. + Connections + { + target: addedSettingsModel + onVisibleCountChanged: + { + check.checked = addedSettingsModel.getVisible(model.key) + } + } } diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py b/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py index 3e1df1c7b8..61d0dbc0f0 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py @@ -1,7 +1,7 @@ # Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal +from PyQt5.QtCore import pyqtProperty from UM.FlameProfiler import pyqtSlot from UM.Application import Application @@ -13,6 +13,7 @@ import UM.Settings.Models.SettingVisibilityHandler from cura.Settings.ExtruderManager import ExtruderManager #To get global-inherits-stack setting values from different extruders. from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator + ## The per object setting visibility handler ensures that only setting # definitions that have a matching instance Container are returned as visible. class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHandler.SettingVisibilityHandler): diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 0e2bd88619..bb342d5045 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -4,22 +4,68 @@ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.2 -import QtQuick.Window 2.2 import UM 1.2 as UM import Cura 1.0 as Cura import ".." -Item { - id: base; - UM.I18nCatalog { id: catalog; name: "cura"; } - - width: childrenRect.width; - height: childrenRect.height; - property var all_categories_except_support: [ "machine_settings", "resolution", "shell", "infill", "material", "speed", +Item +{ + id: base + width: childrenRect.width + height: childrenRect.height + property var allCategoriesExceptSupport: [ "machine_settings", "resolution", "shell", "infill", "material", "speed", "travel", "cooling", "platform_adhesion", "dual", "meshfix", "blackmagic", "experimental"] + readonly property string normalMeshType: "" + readonly property string supportMeshType: "support_mesh" + readonly property string cuttingMeshType: "cutting_mesh" + readonly property string infillMeshType: "infill_mesh" + readonly property string antiOverhangMeshType: "anti_overhang_mesh" + + property var currentMeshType: UM.ActiveTool.properties.getValue("MeshType") + + // Update the view every time the currentMeshType changes + onCurrentMeshTypeChanged: + { + var type = currentMeshType + + // set checked state of mesh type buttons + normalButton.checked = type === normalMeshType + supportMeshButton.checked = type === supportMeshType + overhangMeshButton.checked = type === infillMeshType || type === cuttingMeshType + antiOverhangMeshButton.checked = type === antiOverhangMeshType + + // update active type label + for (var button in meshTypeButtons.children) + { + if (meshTypeButtons.children[button].checked){ + meshTypeLabel.text = catalog.i18nc("@label", "Mesh Type") + ": " + meshTypeButtons.children[button].text + break + } + } + } + + function setOverhangsMeshType() + { + if (infillOnlyCheckbox.checked) + { + setMeshType(infillMeshType) + } + else + { + setMeshType(cuttingMeshType) + } + } + + function setMeshType(type) + { + UM.ActiveTool.setProperty("MeshType", type) + } + + UM.I18nCatalog { id: catalog; name: "uranium"} + Column { id: items @@ -28,123 +74,97 @@ Item { spacing: UM.Theme.getSize("default_margin").height - Row + Row // Mesh type buttons { + id: meshTypeButtons spacing: UM.Theme.getSize("default_margin").width - Label + Button { - text: catalog.i18nc("@label","Mesh Type") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - height: UM.Theme.getSize("setting").height - verticalAlignment: Text.AlignVCenter + id: normalButton + text: catalog.i18nc("@label", "Normal model") + iconSource: UM.Theme.getIcon("pos_normal"); + property bool needBorder: true + checkable: true + onClicked: setMeshType(normalMeshType); + style: UM.Theme.styles.tool_button; + z: 4 } - UM.SettingPropertyProvider + Button { - id: meshTypePropertyProvider - containerStack: Cura.MachineManager.activeMachine - watchedProperties: [ "enabled" ] + id: supportMeshButton + text: catalog.i18nc("@label", "Print as support") + iconSource: UM.Theme.getIcon("pos_print_as_support"); + property bool needBorder: true + checkable:true + onClicked: setMeshType(supportMeshType) + style: UM.Theme.styles.tool_button; + z: 3 } - ComboBox + Button { - id: meshTypeSelection - style: UM.Theme.styles.combobox - onActivated: { - UM.ActiveTool.setProperty("MeshType", model.get(index).type) - } - model: ListModel - { - id: meshTypeModel - Component.onCompleted: meshTypeSelection.populateModel() - } - - function populateModel() - { - meshTypeModel.append({ - type: "", - text: catalog.i18nc("@label", "Normal model") - }); - meshTypePropertyProvider.key = "support_mesh"; - if(meshTypePropertyProvider.properties.enabled == "True") - { - meshTypeModel.append({ - type: "support_mesh", - text: catalog.i18nc("@label", "Print as support") - }); - } - meshTypePropertyProvider.key = "anti_overhang_mesh"; - if(meshTypePropertyProvider.properties.enabled == "True") - { - meshTypeModel.append({ - type: "anti_overhang_mesh", - text: catalog.i18nc("@label", "Don't support overlap with other models") - }); - } - meshTypePropertyProvider.key = "cutting_mesh"; - if(meshTypePropertyProvider.properties.enabled == "True") - { - meshTypeModel.append({ - type: "cutting_mesh", - text: catalog.i18nc("@label", "Modify settings for overlap with other models") - }); - } - meshTypePropertyProvider.key = "infill_mesh"; - if(meshTypePropertyProvider.properties.enabled == "True") - { - meshTypeModel.append({ - type: "infill_mesh", - text: catalog.i18nc("@label", "Modify settings for infill of other models") - }); - } - - meshTypeSelection.updateCurrentIndex(); - } - - function updateCurrentIndex() - { - var mesh_type = UM.ActiveTool.properties.getValue("MeshType"); - meshTypeSelection.currentIndex = -1; - for(var index=0; index < meshTypeSelection.model.count; index++) - { - if(meshTypeSelection.model.get(index).type == mesh_type) - { - meshTypeSelection.currentIndex = index; - return; - } - } - meshTypeSelection.currentIndex = 0; - } + id: overhangMeshButton + text: catalog.i18nc("@label", "Modify settings for overlaps") + iconSource: UM.Theme.getIcon("pos_modify_overlaps"); + property bool needBorder: true + checkable:true + onClicked: setMeshType(infillMeshType) + style: UM.Theme.styles.tool_button; + z: 2 } - Connections + Button { - target: Cura.MachineManager - onGlobalContainerChanged: - { - meshTypeSelection.model.clear(); - meshTypeSelection.populateModel(); - } - } - - Connections - { - target: UM.Selection - onSelectionChanged: meshTypeSelection.updateCurrentIndex() + id: antiOverhangMeshButton + text: catalog.i18nc("@label", "Don't support overlaps") + iconSource: UM.Theme.getIcon("pos_modify_dont_support_overlap"); + property bool needBorder: true + checkable: true + onClicked: setMeshType(antiOverhangMeshType) + style: UM.Theme.styles.tool_button; + z: 1 } } - Column + Label + { + id: meshTypeLabel + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + height: UM.Theme.getSize("setting").height + verticalAlignment: Text.AlignVCenter + } + + CheckBox + { + id: infillOnlyCheckbox + + text: catalog.i18nc("@action:checkbox", "Infill only"); + + style: UM.Theme.styles.checkbox; + + visible: currentMeshType === infillMeshType || currentMeshType === cuttingMeshType + onClicked: setOverhangsMeshType() + + Binding + { + target: infillOnlyCheckbox + property: "checked" + value: currentMeshType === infillMeshType + } + } + + Column // Settings Dialog { // This is to ensure that the panel is first increasing in size up to 200 and then shows a scrollbar. // It kinda looks ugly otherwise (big panel, no content on it) id: currentSettings property int maximumHeight: 200 * screenScaleFactor height: Math.min(contents.count * (UM.Theme.getSize("section").height + UM.Theme.getSize("default_lining").height), maximumHeight) - visible: meshTypeSelection.model.get(meshTypeSelection.currentIndex).type != "anti_overhang_mesh" + visible: currentMeshType != "anti_overhang_mesh" ScrollView { @@ -159,26 +179,26 @@ Item { model: UM.SettingDefinitionsModel { - id: addedSettingsModel; - containerId: Cura.MachineManager.activeDefinitionId + id: addedSettingsModel + containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" expanded: [ "*" ] filter: { if (printSequencePropertyProvider.properties.value == "one_at_a_time") { - return {"settable_per_meshgroup": true}; + return {"settable_per_meshgroup": true} } - return {"settable_per_mesh": true}; + return {"settable_per_mesh": true} } exclude: { - var excluded_settings = [ "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ]; + var excluded_settings = [ "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ] - if(meshTypeSelection.model.get(meshTypeSelection.currentIndex).type == "support_mesh") + if (currentMeshType == "support_mesh") { - excluded_settings = excluded_settings.concat(base.all_categories_except_support); + excluded_settings = excluded_settings.concat(base.allCategoriesExceptSupport) } - return excluded_settings; + return excluded_settings } visibilityHandler: Cura.PerObjectSettingVisibilityHandler @@ -188,8 +208,9 @@ Item { // For some reason the model object is updated after removing him from the memory and // it happens only on Windows. For this reason, set the destroyed value manually. - Component.onDestruction: { - setDestroyed(true); + Component.onDestruction: + { + setDestroyed(true) } } @@ -213,7 +234,8 @@ Item { //causing nasty issues when selecting different options. So disable asynchronous loading of enum type completely. asynchronous: model.type != "enum" && model.type != "extruder" - onLoaded: { + onLoaded: + { settingLoader.item.showRevertButton = false settingLoader.item.showInheritButton = false settingLoader.item.showLinkedSettingIcon = false @@ -299,7 +321,7 @@ Item { target: inheritStackProvider onPropertiesChanged: { - provider.forcePropertiesChanged(); + provider.forcePropertiesChanged() } } @@ -312,22 +334,22 @@ Item { // so here we connect to the signal and update the those values. if (typeof UM.ActiveTool.properties.getValue("SelectedObjectId") !== "undefined") { - const selectedObjectId = UM.ActiveTool.properties.getValue("SelectedObjectId"); + const selectedObjectId = UM.ActiveTool.properties.getValue("SelectedObjectId") if (addedSettingsModel.visibilityHandler.selectedObjectId != selectedObjectId) { - addedSettingsModel.visibilityHandler.selectedObjectId = selectedObjectId; + addedSettingsModel.visibilityHandler.selectedObjectId = selectedObjectId } } if (typeof UM.ActiveTool.properties.getValue("ContainerID") !== "undefined") { - const containerId = UM.ActiveTool.properties.getValue("ContainerID"); + const containerId = UM.ActiveTool.properties.getValue("ContainerID") if (provider.containerStackId != containerId) { - provider.containerStackId = containerId; + provider.containerStackId = containerId } if (inheritStackProvider.containerStackId != containerId) { - inheritStackProvider.containerStackId = containerId; + inheritStackProvider.containerStackId = containerId } } } @@ -337,7 +359,7 @@ Item { } } - Button + Cura.SecondaryButton { id: customiseSettingsButton; height: UM.Theme.getSize("setting_control").height; @@ -345,33 +367,12 @@ Item { text: catalog.i18nc("@action:button", "Select settings"); - style: ButtonStyle - { - background: Rectangle - { - width: control.width; - height: control.height; - border.width: UM.Theme.getSize("default_lining").width; - border.color: control.pressed ? UM.Theme.getColor("action_button_active_border") : - control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border") - color: control.pressed ? UM.Theme.getColor("action_button_active") : - control.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") - } - label: Label - { - text: control.text; - color: UM.Theme.getColor("setting_control_text"); - font: UM.Theme.getFont("default") - anchors.centerIn: parent - } - } - onClicked: { settingPickDialog.visible = true; - if (meshTypeSelection.model.get(meshTypeSelection.currentIndex).type == "support_mesh") + if (currentMeshType == "support_mesh") { - settingPickDialog.additional_excluded_settings = base.all_categories_except_support; + settingPickDialog.additional_excluded_settings = base.allCategoriesExceptSupport; } else { @@ -379,138 +380,12 @@ Item { } } } + } - - UM.Dialog { + SettingPickDialog + { id: settingPickDialog - - title: catalog.i18nc("@title:window", "Select Settings to Customize for this model") - width: screenScaleFactor * 360 - - property var additional_excluded_settings - - onVisibilityChanged: - { - // force updating the model to sync it with addedSettingsModel - if(visible) - { - // Set skip setting, it will prevent from resetting selected mesh_type - contents.model.visibilityHandler.addSkipResetSetting(meshTypeSelection.model.get(meshTypeSelection.currentIndex).type) - listview.model.forceUpdate() - - updateFilter() - } - } - - function updateFilter() - { - var new_filter = {}; - new_filter["settable_per_mesh"] = true; - // Don't filter on "settable_per_meshgroup" any more when `printSequencePropertyProvider.properties.value` - // is set to "one_at_a_time", because the current backend architecture isn't ready for that. - - if(filterInput.text != "") - { - new_filter["i18n_label"] = "*" + filterInput.text; - } - - listview.model.filter = new_filter; - } - - TextField { - id: filterInput - - anchors { - top: parent.top - left: parent.left - right: toggleShowAll.left - rightMargin: UM.Theme.getSize("default_margin").width - } - - placeholderText: catalog.i18nc("@label:textbox", "Filter..."); - - onTextChanged: settingPickDialog.updateFilter() - } - - CheckBox - { - id: toggleShowAll - - anchors { - top: parent.top - right: parent.right - } - - text: catalog.i18nc("@label:checkbox", "Show all") - checked: listview.model.showAll - onClicked: - { - listview.model.showAll = checked; - } - } - - ScrollView - { - id: scrollView - - anchors - { - top: filterInput.bottom; - left: parent.left; - right: parent.right; - bottom: parent.bottom; - } - ListView - { - id:listview - model: UM.SettingDefinitionsModel - { - id: definitionsModel; - containerId: Cura.MachineManager.activeDefinitionId - visibilityHandler: UM.SettingPreferenceVisibilityHandler {} - expanded: [ "*" ] - exclude: - { - var excluded_settings = [ "machine_settings", "command_line_settings", "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ]; - excluded_settings = excluded_settings.concat(settingPickDialog.additional_excluded_settings); - return excluded_settings; - } - } - delegate:Loader - { - id: loader - - width: parent.width - height: model.type != undefined ? UM.Theme.getSize("section").height : 0; - - property var definition: model - property var settingDefinitionsModel: definitionsModel - - asynchronous: true - source: - { - switch(model.type) - { - case "category": - return "PerObjectCategory.qml" - default: - return "PerObjectItem.qml" - } - } - } - Component.onCompleted: settingPickDialog.updateFilter() - } - } - - rightButtons: [ - Button { - text: catalog.i18nc("@action:button", "Close"); - onClicked: { - settingPickDialog.visible = false; - } - } - ] } UM.SettingPropertyProvider @@ -533,25 +408,25 @@ Item { storeIndex: 0 } - SystemPalette { id: palette; } + SystemPalette { id: palette } Component { - id: settingTextField; + id: settingTextField Cura.SettingTextField { } } Component { - id: settingComboBox; + id: settingComboBox Cura.SettingComboBox { } } Component { - id: settingExtruder; + id: settingExtruder Cura.SettingExtruder { } } @@ -565,22 +440,23 @@ Item { Component { - id: settingCheckBox; + id: settingCheckBox Cura.SettingCheckBox { } } Component { - id: settingCategory; + id: settingCategory Cura.SettingCategory { } } Component { - id: settingUnknown; + id: settingUnknown Cura.SettingUnknown { } } + } diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py index baa700165c..b2eb925a6d 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py @@ -1,6 +1,6 @@ # Copyright (c) 2016 Ultimaker B.V. # Uranium is released under the terms of the LGPLv3 or higher. - +from UM.Logger import Logger from UM.Tool import Tool from UM.Scene.Selection import Selection from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator @@ -20,15 +20,11 @@ class PerObjectSettingsTool(Tool): self.setExposedProperties("SelectedObjectId", "ContainerID", "SelectedActiveExtruder", "MeshType") - self._advanced_mode = False self._multi_extrusion = False self._single_model_selected = False Selection.selectionChanged.connect(self.propertyChanged) - Application.getInstance().getPreferences().preferenceChanged.connect(self._onPreferenceChanged) - self._onPreferenceChanged("cura/active_mode") - Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) self._onGlobalContainerChanged() Selection.selectionChanged.connect(self._updateEnabled) @@ -70,8 +66,16 @@ class PerObjectSettingsTool(Tool): selected_object.addDecorator(SettingOverrideDecorator()) selected_object.callDecoration("setActiveExtruder", extruder_stack_id) - def setMeshType(self, mesh_type): + ## Returns True when the mesh_type was changed, False when current mesh_type == mesh_type + def setMeshType(self, mesh_type: str) -> bool: + if self.getMeshType() == mesh_type: + return False + selected_object = Selection.getSelectedObject(0) + if selected_object is None: + Logger.log("w", "Tried setting the mesh type of the selected object, but no object was selected") + return False + stack = selected_object.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway. if not stack: selected_object.addDecorator(SettingOverrideDecorator()) @@ -90,6 +94,9 @@ class PerObjectSettingsTool(Tool): new_instance.resetState() # Ensure that the state is not seen as a user state. settings.addInstance(new_instance) + self.propertyChanged.emit() + return True + def getMeshType(self): selected_object = Selection.getSelectedObject(0) stack = selected_object.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway. @@ -103,11 +110,6 @@ class PerObjectSettingsTool(Tool): return "" - def _onPreferenceChanged(self, preference): - if preference == "cura/active_mode": - self._advanced_mode = Application.getInstance().getPreferences().getValue(preference) == 1 - self._updateEnabled() - def _onGlobalContainerChanged(self): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: @@ -140,4 +142,4 @@ class PerObjectSettingsTool(Tool): self._single_model_selected = False # Group is selected, so tool needs to be disabled else: self._single_model_selected = True - Application.getInstance().getController().toolEnabledChanged.emit(self._plugin_id, self._advanced_mode and self._single_model_selected) + Application.getInstance().getController().toolEnabledChanged.emit(self._plugin_id, self._single_model_selected) diff --git a/plugins/PerObjectSettingsTool/SettingPickDialog.qml b/plugins/PerObjectSettingsTool/SettingPickDialog.qml new file mode 100644 index 0000000000..92e22f26bc --- /dev/null +++ b/plugins/PerObjectSettingsTool/SettingPickDialog.qml @@ -0,0 +1,139 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.2 + +import UM 1.2 as UM +import Cura 1.0 as Cura +import ".." + +UM.Dialog + { + id: settingPickDialog + + title: catalog.i18nc("@title:window", "Select Settings to Customize for this model") + width: screenScaleFactor * 360 + + property var additional_excluded_settings + + onVisibilityChanged: + { + // force updating the model to sync it with addedSettingsModel + if (visible) + { + // Set skip setting, it will prevent from resetting selected mesh_type + contents.model.visibilityHandler.addSkipResetSetting(currentMeshType) + listview.model.forceUpdate() + + updateFilter() + } + } + + function updateFilter() + { + var new_filter = {} + new_filter["settable_per_mesh"] = true + // Don't filter on "settable_per_meshgroup" any more when `printSequencePropertyProvider.properties.value` + // is set to "one_at_a_time", because the current backend architecture isn't ready for that. + + if (filterInput.text != "") + { + new_filter["i18n_label"] = "*" + filterInput.text + } + + listview.model.filter = new_filter + } + + TextField { + id: filterInput + + anchors { + top: parent.top + left: parent.left + right: toggleShowAll.left + rightMargin: UM.Theme.getSize("default_margin").width + } + + placeholderText: catalog.i18nc("@label:textbox", "Filter...") + + onTextChanged: settingPickDialog.updateFilter() + } + + CheckBox + { + id: toggleShowAll + + anchors { + top: parent.top + right: parent.right + } + + text: catalog.i18nc("@label:checkbox", "Show all") + checked: listview.model.showAll + onClicked: + { + listview.model.showAll = checked + } + } + + ScrollView + { + id: scrollView + + anchors + { + top: filterInput.bottom + left: parent.left + right: parent.right + bottom: parent.bottom + } + ListView + { + id:listview + model: UM.SettingDefinitionsModel + { + id: definitionsModel + containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" + visibilityHandler: UM.SettingPreferenceVisibilityHandler {} + expanded: [ "*" ] + exclude: + { + var excluded_settings = [ "machine_settings", "command_line_settings", "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ] + excluded_settings = excluded_settings.concat(settingPickDialog.additional_excluded_settings) + return excluded_settings + } + } + delegate:Loader + { + id: loader + + width: parent.width + height: model.type != undefined ? UM.Theme.getSize("section").height : 0 + + property var definition: model + property var settingDefinitionsModel: definitionsModel + + asynchronous: true + source: + { + switch(model.type) + { + case "category": + return "PerObjectCategory.qml" + default: + return "PerObjectItem.qml" + } + } + } + Component.onCompleted: settingPickDialog.updateFilter() + } + } + + rightButtons: [ + Button { + text: catalog.i18nc("@action:button", "Close") + onClicked: { + settingPickDialog.visible = false + } + } + ] + } \ No newline at end of file diff --git a/plugins/PerObjectSettingsTool/plugin.json b/plugins/PerObjectSettingsTool/plugin.json index f272abf06a..b30acfd52e 100644 --- a/plugins/PerObjectSettingsTool/plugin.json +++ b/plugins/PerObjectSettingsTool/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides the Per Model Settings.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/PerObjectSettingsTool/tool_icon.svg b/plugins/PerObjectSettingsTool/tool_icon.svg index 4b15eb453f..41e49cae07 100644 --- a/plugins/PerObjectSettingsTool/tool_icon.svg +++ b/plugins/PerObjectSettingsTool/tool_icon.svg @@ -1,3 +1,22 @@ - - - + + + + per_model_settings + Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/PostProcessingPlugin/PostProcessingPlugin.py b/plugins/PostProcessingPlugin/PostProcessingPlugin.py index 78f9cc0516..376ab291c4 100644 --- a/plugins/PostProcessingPlugin/PostProcessingPlugin.py +++ b/plugins/PostProcessingPlugin/PostProcessingPlugin.py @@ -162,7 +162,7 @@ class PostProcessingPlugin(QObject, Extension): loaded_script = importlib.util.module_from_spec(spec) if spec.loader is None: continue - spec.loader.exec_module(loaded_script) + spec.loader.exec_module(loaded_script) # type: ignore sys.modules[script_name] = loaded_script #TODO: This could be a security risk. Overwrite any module with a user-provided name? loaded_class = getattr(loaded_script, script_name) @@ -219,6 +219,7 @@ class PostProcessingPlugin(QObject, Extension): self._script_list.clear() if not new_stack.getMetaDataEntry("post_processing_scripts"): # Missing or empty. self.scriptListChanged.emit() # Even emit this if it didn't change. We want it to write the empty list to the stack's metadata. + self.setSelectedScriptIndex(-1) return self._script_list.clear() diff --git a/plugins/PostProcessingPlugin/plugin.json b/plugins/PostProcessingPlugin/plugin.json index 1e73133c53..6a2b84933e 100644 --- a/plugins/PostProcessingPlugin/plugin.json +++ b/plugins/PostProcessingPlugin/plugin.json @@ -2,7 +2,7 @@ "name": "Post Processing", "author": "Ultimaker", "version": "2.2.1", - "api": "6.0", + "api": "7.0", "description": "Extension that allows for user created scripts for post processing", "catalog": "cura" } \ No newline at end of file diff --git a/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py b/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py index be9f93c0f6..cdbb4a79ef 100644 --- a/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py +++ b/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py @@ -100,8 +100,8 @@ class ChangeAtZ(Script): }, "d_twLayers": { - "label": "No. Layers", - "description": "No. of layers used to change", + "label": "Layer Spread", + "description": "The change will be gradual over this many layers. Enter 1 to make the change immediate.", "unit": "", "type": "int", "default_value": 1, @@ -330,7 +330,7 @@ class ChangeAtZ(Script): "extruderOne": self.getSettingValueByKey("i2_extruderOne"), "extruderTwo": self.getSettingValueByKey("i4_extruderTwo"), "fanSpeed": self.getSettingValueByKey("j2_fanSpeed")} - old = {"speed": -1, "flowrate": -1, "flowrateOne": -1, "flowrateTwo": -1, "platformTemp": -1, "extruderOne": -1, + old = {"speed": -1, "flowrate": 100, "flowrateOne": -1, "flowrateTwo": -1, "platformTemp": -1, "extruderOne": -1, "extruderTwo": -1, "bedTemp": -1, "fanSpeed": -1, "state": -1} twLayers = self.getSettingValueByKey("d_twLayers") if self.getSettingValueByKey("c_behavior") == "single_layer": @@ -367,6 +367,8 @@ class ChangeAtZ(Script): modified_gcode = "" lines = active_layer.split("\n") for line in lines: + if line.strip() == "": + continue if ";Generated with Cura_SteamEngine" in line: TWinstances += 1 modified_gcode += ";ChangeAtZ instances: %d\n" % TWinstances @@ -410,6 +412,8 @@ class ChangeAtZ(Script): tmp_extruder = self.getValue(line, "T", None) if tmp_extruder == None: #check if extruder is specified old["flowrate"] = self.getValue(line, "S", old["flowrate"]) + if old["flowrate"] == -1: + old["flowrate"] = 100.0 elif tmp_extruder == 0: #first extruder old["flowrateOne"] = self.getValue(line, "S", old["flowrateOne"]) elif tmp_extruder == 1: #second extruder @@ -481,9 +485,9 @@ class ChangeAtZ(Script): state = 2 done_layers = 0 if targetL_i > -100000: - modified_gcode += ";ChangeAtZ V%s: reset below Layer %d\n" % (self.version,targetL_i) + modified_gcode += ";ChangeAtZ V%s: reset below Layer %d\n" % (self.version, targetL_i) else: - modified_gcode += ";ChangeAtZ V%s: reset below %1.2f mm\n" % (self.version,targetZ) + modified_gcode += ";ChangeAtZ V%s: reset below %1.2f mm\n" % (self.version, targetZ) if IsUM2 and oldValueUnknown: #executes on UM2 with Ultigcode and machine setting modified_gcode += "M606 S%d;recalls saved settings\n" % (TWinstances-1) else: #executes on RepRap, UM2 with Ultigcode and Cura setting diff --git a/plugins/PostProcessingPlugin/scripts/DisplayFilenameAndLayerOnLCD.py b/plugins/PostProcessingPlugin/scripts/DisplayFilenameAndLayerOnLCD.py index 9fd9e08d7d..001beecd3b 100644 --- a/plugins/PostProcessingPlugin/scripts/DisplayFilenameAndLayerOnLCD.py +++ b/plugins/PostProcessingPlugin/scripts/DisplayFilenameAndLayerOnLCD.py @@ -1,10 +1,13 @@ # Cura PostProcessingPlugin # Author: Amanda de Castilho # Date: August 28, 2018 +# Modified: November 16, 2018 by Joshua Pope-Lewis -# Description: This plugin inserts a line at the start of each layer, -# M117 - displays the filename and layer height to the LCD -# Alternatively, user can override the filename to display alt text + layer height +# Description: This plugin shows custom messages about your print on the Status bar... +# Please look at the 3 options +# - Scolling (SCROLL_LONG_FILENAMES) if enabled in Marlin and you arent printing a small item select this option. +# - Name: By default it will use the name generated by Cura (EG: TT_Test_Cube) - Type a custom name in here +# - Max Layer: Enabling this will show how many layers are in the entire print (EG: Layer 1 of 265!) from ..Script import Script from UM.Application import Application @@ -15,35 +18,72 @@ class DisplayFilenameAndLayerOnLCD(Script): def getSettingDataString(self): return """{ - "name": "Display filename and layer on LCD", + "name": "Display Filename And Layer On LCD", "key": "DisplayFilenameAndLayerOnLCD", "metadata": {}, "version": 2, "settings": { + "scroll": + { + "label": "Scroll enabled/Small layers?", + "description": "If SCROLL_LONG_FILENAMES is enabled select this setting however, if the model is small disable this setting!", + "type": "bool", + "default_value": false + }, "name": { - "label": "text to display:", + "label": "Text to display:", "description": "By default the current filename will be displayed on the LCD. Enter text here to override the filename and display something else.", "type": "str", "default_value": "" + }, + "startNum": + { + "label": "Initial layer number:", + "description": "Choose which number you prefer for the initial layer, 0 or 1", + "type": "int", + "default_value": 0, + "minimum_value": 0, + "maximum_value": 1 + }, + "maxlayer": + { + "label": "Display max layer?:", + "description": "Display how many layers are in the entire print on status bar?", + "type": "bool", + "default_value": true } } }""" def execute(self, data): + max_layer = 0 if self.getSettingValueByKey("name") != "": name = self.getSettingValueByKey("name") else: - name = Application.getInstance().getPrintInformation().jobName - lcd_text = "M117 " + name + " layer: " - i = 0 + name = Application.getInstance().getPrintInformation().jobName + if not self.getSettingValueByKey("scroll"): + if self.getSettingValueByKey("maxlayer"): + lcd_text = "M117 Layer " + else: + lcd_text = "M117 Printing Layer " + else: + lcd_text = "M117 Printing " + name + " - Layer " + i = self.getSettingValueByKey("startNum") for layer in data: - display_text = lcd_text + str(i) + display_text = lcd_text + str(i) + " " + name layer_index = data.index(layer) lines = layer.split("\n") for line in lines: + if line.startswith(";LAYER_COUNT:"): + max_layer = line + max_layer = max_layer.split(":")[1] if line.startswith(";LAYER:"): + if self.getSettingValueByKey("maxlayer"): + display_text = display_text + " of " + max_layer + else: + display_text = display_text + "!" line_index = lines.index(line) lines.insert(line_index + 1, display_text) i += 1 diff --git a/plugins/PostProcessingPlugin/scripts/DisplayRemainingTimeOnLCD.py b/plugins/PostProcessingPlugin/scripts/DisplayRemainingTimeOnLCD.py new file mode 100644 index 0000000000..7d9af10925 --- /dev/null +++ b/plugins/PostProcessingPlugin/scripts/DisplayRemainingTimeOnLCD.py @@ -0,0 +1,94 @@ +# Cura PostProcessingPlugin +# Author: Mathias Lyngklip Kjeldgaard +# Date: July 31, 2019 +# Modified: November 26, 2019 + +# Description: This plugin displayes the remaining time on the LCD of the printer +# using the estimated print-time generated by Cura. + + + + +from ..Script import Script + +import re +import datetime + + +class DisplayRemainingTimeOnLCD(Script): + + def __init__(self): + super().__init__() + + + def getSettingDataString(self): + return """{ + "name":"Display Remaining Time on LCD", + "key":"DisplayRemainingTimeOnLCD", + "metadata": {}, + "version": 2, + "settings": + { + "TurnOn": + { + "label": "Enable", + "description": "When enabled, It will write Time Left: HHMMSS on the display. This is updated every layer.", + "type": "bool", + "default_value": false + } + } + }""" + + def execute(self, data): + if self.getSettingValueByKey("TurnOn"): + total_time = 0 + total_time_string = "" + for layer in data: + layer_index = data.index(layer) + lines = layer.split("\n") + for line in lines: + if line.startswith(";TIME:"): + # At this point, we have found a line in the GCODE with ";TIME:" + # which is the indication of total_time. Looks like: ";TIME:1337", where + # 1337 is the total print time in seconds. + line_index = lines.index(line) # We take a hold of that line + split_string = re.split(":", line) # Then we split it, so we can get the number + + string_with_numbers = "{}".format(split_string[1]) # Here we insert that number from the + # list into a string. + total_time = int(string_with_numbers) # Only to contert it to a int. + + m, s = divmod(total_time, 60) # Math to calculate + h, m = divmod(m, 60) # hours, minutes and seconds. + total_time_string = "{:d}h{:02d}m{:02d}s".format(h, m, s) # Now we put it into the string + lines[line_index] = "M117 Time Left {}".format(total_time_string) # And print that string instead of the original one + + + + + elif line.startswith(";TIME_ELAPSED:"): + + # As we didnt find the total time (";TIME:"), we have found a elapsed time mark + # This time represents the time the printer have printed. So with some math; + # totalTime - printTime = RemainingTime. + line_index = lines.index(line) # We get a hold of the line + list_split = re.split(":", line) # Again, we split at ":" so we can get the number + string_with_numbers = "{}".format(list_split[1]) # Then we put that number from the list, into a string + + current_time = float(string_with_numbers) # This time we convert to a float, as the line looks something like: + # ;TIME_ELAPSED:1234.6789 + # which is total time in seconds + + time_left = total_time - current_time # Here we calculate remaining time + m1, s1 = divmod(time_left, 60) # And some math to get the total time in seconds into + h1, m1 = divmod(m1, 60) # the right format. (HH,MM,SS) + current_time_string = "{:d}h{:2d}m{:2d}s".format(int(h1), int(m1), int(s1)) # Here we create the string holding our time + lines[line_index] = "M117 Time Left {}".format(current_time_string) # And now insert that into the GCODE + + + # Here we are OUT of the second for-loop + # Which means we have found and replaces all the occurences. + # Which also means we are ready to join the lines for that section of the GCODE file. + final_lines = "\n".join(lines) + data[layer_index] = final_lines + return data diff --git a/plugins/PostProcessingPlugin/scripts/FilamentChange.py b/plugins/PostProcessingPlugin/scripts/FilamentChange.py index febb93be4c..943ca30f2e 100644 --- a/plugins/PostProcessingPlugin/scripts/FilamentChange.py +++ b/plugins/PostProcessingPlugin/scripts/FilamentChange.py @@ -1,9 +1,7 @@ # Copyright (c) 2019 Ultimaker B.V. # The PostProcessingPlugin is released under the terms of the AGPLv3 or higher. -from typing import Optional, Tuple - -from UM.Logger import Logger +from typing import List from ..Script import Script class FilamentChange(Script): @@ -65,9 +63,10 @@ class FilamentChange(Script): } }""" - def execute(self, data: list): - - """data is a list. Each index contains a layer""" + ## Inserts the filament change g-code at specific layer numbers. + # \param data A list of layers of g-code. + # \return A similar list, with filament change commands inserted. + def execute(self, data: List[str]): layer_nums = self.getSettingValueByKey("layer_number") initial_retract = self.getSettingValueByKey("initial_retract") later_retract = self.getSettingValueByKey("later_retract") @@ -88,32 +87,16 @@ class FilamentChange(Script): if y_pos is not None: color_change = color_change + (" Y%.2f" % y_pos) - color_change = color_change + " ; Generated by FilamentChange plugin" + color_change = color_change + " ; Generated by FilamentChange plugin\n" layer_targets = layer_nums.split(",") if len(layer_targets) > 0: for layer_num in layer_targets: - layer_num = int(layer_num.strip()) - if layer_num <= len(data): - index, layer_data = self._searchLayerData(data, layer_num - 1) - if layer_data is None: - Logger.log("e", "Could not found the layer") - continue - lines = layer_data.split("\n") - lines.insert(2, color_change) - final_line = "\n".join(lines) - data[index] = final_line + try: + layer_num = int(layer_num.strip()) + 1 #Needs +1 because the 1st layer is reserved for start g-code. + except ValueError: #Layer number is not an integer. + continue + if 0 < layer_num < len(data): + data[layer_num] = color_change + data[layer_num] - return data - - ## This method returns the data corresponding with the indicated layer number, looking in the gcode for - # the occurrence of this layer number. - def _searchLayerData(self, data: list, layer_num: int) -> Tuple[int, Optional[str]]: - for index, layer_data in enumerate(data): - first_line = layer_data.split("\n")[0] - # The first line should contain the layer number at the beginning. - if first_line[:len(self._layer_keyword)] == self._layer_keyword: - # If found the layer that we are looking for, then return the data - if first_line[len(self._layer_keyword):] == str(layer_num): - return index, layer_data - return 0, None \ No newline at end of file + return data \ No newline at end of file diff --git a/plugins/PostProcessingPlugin/scripts/InsertAtLayerChange.py b/plugins/PostProcessingPlugin/scripts/InsertAtLayerChange.py new file mode 100644 index 0000000000..c21993aad1 --- /dev/null +++ b/plugins/PostProcessingPlugin/scripts/InsertAtLayerChange.py @@ -0,0 +1,50 @@ +# Created by Wayne Porter + +from ..Script import Script + +class InsertAtLayerChange(Script): + def __init__(self): + super().__init__() + + def getSettingDataString(self): + return """{ + "name": "Insert at layer change", + "key": "InsertAtLayerChange", + "metadata": {}, + "version": 2, + "settings": + { + "insert_location": + { + "label": "When to insert", + "description": "Whether to insert code before or after layer change.", + "type": "enum", + "options": {"before": "Before", "after": "After"}, + "default_value": "before" + }, + "gcode_to_add": + { + "label": "GCODE to insert.", + "description": "GCODE to add before or after layer change.", + "type": "str", + "default_value": "" + } + } + }""" + + def execute(self, data): + gcode_to_add = self.getSettingValueByKey("gcode_to_add") + "\n" + for layer in data: + # Check that a layer is being printed + lines = layer.split("\n") + for line in lines: + if ";LAYER:" in line: + index = data.index(layer) + if self.getSettingValueByKey("insert_location") == "before": + layer = gcode_to_add + layer + else: + layer = layer + gcode_to_add + + data[index] = layer + break + return data diff --git a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py index 8b50a88b7f..17b4de88dd 100644 --- a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py +++ b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py @@ -1,15 +1,18 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from ..Script import Script from UM.Application import Application #To get the current printer's settings. +from UM.Logger import Logger + +from typing import List, Tuple class PauseAtHeight(Script): - def __init__(self): + def __init__(self) -> None: super().__init__() - def getSettingDataString(self): + def getSettingDataString(self) -> str: return """{ "name": "Pause at height", "key": "PauseAtHeight", @@ -105,19 +108,24 @@ class PauseAtHeight(Script): "standby_temperature": { "label": "Standby Temperature", - "description": "Change the temperature during the pause", + "description": "Change the temperature during the pause.", "unit": "°C", "type": "int", "default_value": 0 + }, + "display_text": + { + "label": "Display Text", + "description": "Text that should appear on the display while paused. If left empty, there will not be any message.", + "type": "str", + "default_value": "" } } }""" - def getNextXY(self, layer: str): - """ - Get the X and Y values for a layer (will be used to get X and Y of - the layer after the pause - """ + ## Get the X and Y values for a layer (will be used to get X and Y of the + # layer after the pause). + def getNextXY(self, layer: str) -> Tuple[float, float]: lines = layer.split("\n") for line in lines: if self.getValue(line, "X") is not None and self.getValue(line, "Y") is not None: @@ -126,8 +134,10 @@ class PauseAtHeight(Script): return x, y return 0, 0 - def execute(self, data: list): - """data is a list. Each index contains a layer""" + ## Inserts the pause commands. + # \param data: List of layers. + # \return New list of layers. + def execute(self, data: List[str]) -> List[str]: pause_at = self.getSettingValueByKey("pause_at") pause_height = self.getSettingValueByKey("pause_height") pause_layer = self.getSettingValueByKey("pause_layer") @@ -143,6 +153,7 @@ class PauseAtHeight(Script): firmware_retract = Application.getInstance().getGlobalContainerStack().getProperty("machine_firmware_retract", "value") control_temperatures = Application.getInstance().getGlobalContainerStack().getProperty("machine_nozzle_temp_enabled", "value") initial_layer_height = Application.getInstance().getGlobalContainerStack().getProperty("layer_height_0", "value") + display_text = self.getSettingValueByKey("display_text") is_griffin = False @@ -151,6 +162,9 @@ class PauseAtHeight(Script): # use offset to calculate the current height: = - layer_0_z = 0 current_z = 0 + current_height = 0 + current_layer = 0 + current_extrusion_f = 0 got_first_g_cmd_on_layer_0 = False current_t = 0 #Tracks the current extruder for tracking the target temperature. target_temperature = {} #Tracks the current target temperature for each extruder. @@ -184,6 +198,10 @@ class PauseAtHeight(Script): if not layers_started: continue + # Look for the feed rate of an extrusion instruction + if self.getValue(line, "F") is not None and self.getValue(line, "E") is not None: + current_extrusion_f = self.getValue(line, "F") + # If a Z instruction is in the line, read the current Z if self.getValue(line, "Z") is not None: current_z = self.getValue(line, "Z") @@ -201,7 +219,7 @@ class PauseAtHeight(Script): current_height = current_z - layer_0_z if current_height < pause_height: - break # Try the next layer. + continue # Scan the enitre layer, z-changes are not always on the same/first line. # Pause at layer else: @@ -247,8 +265,8 @@ class PauseAtHeight(Script): # the nozzle) x, y = self.getNextXY(layer) prev_lines = prev_layer.split("\n") - for line in prev_lines: - new_e = self.getValue(line, 'E', current_e) + for lin in prev_lines: + new_e = self.getValue(lin, "E", current_e) if new_e != current_e: current_e = new_e break @@ -264,7 +282,7 @@ class PauseAtHeight(Script): if not is_griffin: # Retraction - prepend_gcode += self.putValue(M = 83) + "\n" + prepend_gcode += self.putValue(M = 83) + " ; switch to relative E values for any needed retraction\n" if retraction_amount != 0: if firmware_retract: #Can't set the distance directly to what the user wants. We have to choose ourselves. retraction_count = 1 if control_temperatures else 3 #Retract more if we don't control the temperature. @@ -274,25 +292,28 @@ class PauseAtHeight(Script): prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n" # Move the head away - prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n" + prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + " ; move up a millimeter to get out of the way\n" # This line should be ok prepend_gcode += self.putValue(G = 1, X = park_x, Y = park_y, F = 9000) + "\n" if current_z < 15: - prepend_gcode += self.putValue(G = 1, Z = 15, F = 300) + "\n" + prepend_gcode += self.putValue(G = 1, Z = 15, F = 300) + " ; too close to bed--move to at least 15mm\n" if control_temperatures: # Set extruder standby temperature - prepend_gcode += self.putValue(M = 104, S = standby_temperature) + "; standby temperature\n" + prepend_gcode += self.putValue(M = 104, S = standby_temperature) + " ; standby temperature\n" + + if display_text: + prepend_gcode += "M117 " + display_text + "\n" # Wait till the user continues printing - prepend_gcode += self.putValue(M = 0) + ";Do the actual pause\n" + prepend_gcode += self.putValue(M = 0) + " ; Do the actual pause\n" if not is_griffin: if control_temperatures: # Set extruder resume temperature - prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + "; resume temperature\n" + prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + " ; resume temperature\n" # Push the filament back, if retraction_amount != 0: @@ -308,8 +329,10 @@ class PauseAtHeight(Script): prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n" # Move the head back - prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n" + if current_z < 15: + prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n" prepend_gcode += self.putValue(G = 1, X = x, Y = y, F = 9000) + "\n" + prepend_gcode += self.putValue(G = 1, Z = current_z, F = 300) + " ; move back down to resume height\n" if retraction_amount != 0: if firmware_retract: #Can't set the distance directly to what the user wants. We have to choose ourselves. retraction_count = 1 if control_temperatures else 3 #Retract more if we don't control the temperature. @@ -317,8 +340,13 @@ class PauseAtHeight(Script): prepend_gcode += self.putValue(G = 11) + "\n" else: prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n" - prepend_gcode += self.putValue(G = 1, F = 9000) + "\n" - prepend_gcode += self.putValue(M = 82) + "\n" + + if current_extrusion_f != 0: + prepend_gcode += self.putValue(G = 1, F = current_extrusion_f) + " ; restore extrusion feedrate\n" + else: + Logger.log("w", "No previous feedrate found in gcode, feedrate for next layer(s) might be incorrect") + + prepend_gcode += self.putValue(M = 82) + " ; switch back to absolute E values\n" # reset extrude value to pre pause value prepend_gcode += self.putValue(G = 92, E = current_e) + "\n" diff --git a/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py b/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py index f6c93d9ae6..0353574289 100644 --- a/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py +++ b/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py @@ -1,3 +1,4 @@ +from UM.Logger import Logger from ..Script import Script class PauseAtHeightforRepetier(Script): def __init__(self): @@ -73,6 +74,7 @@ class PauseAtHeightforRepetier(Script): def execute(self, data): x = 0. y = 0. + current_extrusion_f = 0 current_z = 0. pause_z = self.getSettingValueByKey("pause_height") retraction_amount = self.getSettingValueByKey("retraction_amount") @@ -94,9 +96,11 @@ class PauseAtHeightforRepetier(Script): if self.getValue(line, 'G') == 1 or self.getValue(line, 'G') == 0: current_z = self.getValue(line, 'Z') + if self.getValue(line, 'F') is not None and self.getValue(line, 'E') is not None: + current_extrusion_f = self.getValue(line, 'F', current_extrusion_f) x = self.getValue(line, 'X', x) y = self.getValue(line, 'Y', y) - if current_z != None: + if current_z is not None: if current_z >= pause_z: index = data.index(layer) @@ -150,7 +154,12 @@ class PauseAtHeightforRepetier(Script): prepend_gcode +="G1 X%f Y%f F9000\n" % (x, y) if retraction_amount != 0: prepend_gcode +="G1 E%f F6000\n" % (retraction_amount) - prepend_gcode +="G1 F9000\n" + + if current_extrusion_f != 0: + prepend_gcode += self.putValue(G=1, F=current_extrusion_f) + " ; restore extrusion feedrate\n" + else: + Logger.log("w", "No previous feedrate found in gcode, feedrate for next layer(s) might be incorrect") + prepend_gcode +="M82\n" # reset extrude value to pre pause value diff --git a/plugins/PostProcessingPlugin/scripts/RetractContinue.py b/plugins/PostProcessingPlugin/scripts/RetractContinue.py new file mode 100644 index 0000000000..b0af9cd95e --- /dev/null +++ b/plugins/PostProcessingPlugin/scripts/RetractContinue.py @@ -0,0 +1,75 @@ +# Copyright (c) 2019 Ultimaker B.V. +# The PostProcessingPlugin is released under the terms of the AGPLv3 or higher. + +import math + +from ..Script import Script + +## Continues retracting during all travel moves. +class RetractContinue(Script): + def getSettingDataString(self): + return """{ + "name": "Retract Continue", + "key": "RetractContinue", + "metadata": {}, + "version": 2, + "settings": + { + "extra_retraction_speed": + { + "label": "Extra Retraction Ratio", + "description": "How much does it retract during the travel move, by ratio of the travel length.", + "type": "float", + "default_value": 0.05 + } + } + }""" + + def execute(self, data): + current_e = 0 + current_x = 0 + current_y = 0 + extra_retraction_speed = self.getSettingValueByKey("extra_retraction_speed") + + for layer_number, layer in enumerate(data): + lines = layer.split("\n") + for line_number, line in enumerate(lines): + if self.getValue(line, "G") in {0, 1}: # Track X,Y location. + current_x = self.getValue(line, "X", current_x) + current_y = self.getValue(line, "Y", current_y) + if self.getValue(line, "G") == 1: + if self.getValue(line, "E"): + new_e = self.getValue(line, "E") + if new_e >= current_e: # Not a retraction. + continue + # A retracted travel move may consist of multiple commands, due to combing. + # This continues retracting over all of these moves and only unretracts at the end. + delta_line = 1 + dx = current_x # Track the difference in X for this move only to compute the length of the travel. + dy = current_y + while line_number + delta_line < len(lines) and self.getValue(lines[line_number + delta_line], "G") != 1: + travel_move = lines[line_number + delta_line] + if self.getValue(travel_move, "G") != 0: + delta_line += 1 + continue + travel_x = self.getValue(travel_move, "X", dx) + travel_y = self.getValue(travel_move, "Y", dy) + f = self.getValue(travel_move, "F", "no f") + length = math.sqrt((travel_x - dx) * (travel_x - dx) + (travel_y - dy) * (travel_y - dy)) # Length of the travel move. + new_e -= length * extra_retraction_speed # New retraction is by ratio of this travel move. + if f == "no f": + new_travel_move = "G1 X{travel_x} Y{travel_y} E{new_e}".format(travel_x = travel_x, travel_y = travel_y, new_e = new_e) + else: + new_travel_move = "G1 F{f} X{travel_x} Y{travel_y} E{new_e}".format(f = f, travel_x = travel_x, travel_y = travel_y, new_e = new_e) + lines[line_number + delta_line] = new_travel_move + + delta_line += 1 + dx = travel_x + dy = travel_y + + current_e = new_e + + new_layer = "\n".join(lines) + data[layer_number] = new_layer + + return data \ No newline at end of file diff --git a/plugins/PostProcessingPlugin/scripts/Stretch.py b/plugins/PostProcessingPlugin/scripts/Stretch.py index 9757296041..20eef60ef2 100644 --- a/plugins/PostProcessingPlugin/scripts/Stretch.py +++ b/plugins/PostProcessingPlugin/scripts/Stretch.py @@ -128,9 +128,26 @@ class Stretcher(): onestep = GCodeStep(0, in_relative_movement) onestep.copyPosFrom(current) elif _getValue(line, "G") == 1: + last_x = current.step_x + last_y = current.step_y + last_z = current.step_z + last_e = current.step_e current.readStep(line) - onestep = GCodeStep(1, in_relative_movement) - onestep.copyPosFrom(current) + if (current.step_x == last_x and current.step_y == last_y and + current.step_z == last_z and current.step_e != last_e + ): + # It's an extruder only move. Preserve it rather than process it as an + # extruded move. Otherwise, the stretched output might contain slight + # motion in X and Y in addition to E. This can cause problems with + # firmwares that implement pressure advance. + onestep = GCodeStep(-1, in_relative_movement) + onestep.copyPosFrom(current) + # Rather than copy the original line, write a new one with consistent + # extruder coordinates + onestep.comment = "G1 F{} E{}".format(onestep.step_f, onestep.step_e) + else: + onestep = GCodeStep(1, in_relative_movement) + onestep.copyPosFrom(current) # end of relative movement elif _getValue(line, "G") == 90: @@ -145,6 +162,7 @@ class Stretcher(): current.readStep(line) onestep = GCodeStep(-1, in_relative_movement) onestep.copyPosFrom(current) + onestep.comment = line else: onestep = GCodeStep(-1, in_relative_movement) onestep.copyPosFrom(current) diff --git a/plugins/PostProcessingPlugin/scripts/TimeLapse.py b/plugins/PostProcessingPlugin/scripts/TimeLapse.py new file mode 100644 index 0000000000..53e55a9454 --- /dev/null +++ b/plugins/PostProcessingPlugin/scripts/TimeLapse.py @@ -0,0 +1,95 @@ +# Created by Wayne Porter + +from ..Script import Script + +class TimeLapse(Script): + def __init__(self): + super().__init__() + + def getSettingDataString(self): + return """{ + "name": "Time Lapse", + "key": "TimeLapse", + "metadata": {}, + "version": 2, + "settings": + { + "trigger_command": + { + "label": "Trigger camera command", + "description": "Gcode command used to trigger camera.", + "type": "str", + "default_value": "M240" + }, + "pause_length": + { + "label": "Pause length", + "description": "How long to wait (in ms) after camera was triggered.", + "type": "int", + "default_value": 700, + "minimum_value": 0, + "unit": "ms" + }, + "park_print_head": + { + "label": "Park Print Head", + "description": "Park the print head out of the way. Assumes absolute positioning.", + "type": "bool", + "default_value": true + }, + "head_park_x": + { + "label": "Park Print Head X", + "description": "What X location does the head move to for photo.", + "unit": "mm", + "type": "float", + "default_value": 0, + "enabled": "park_print_head" + }, + "head_park_y": + { + "label": "Park Print Head Y", + "description": "What Y location does the head move to for photo.", + "unit": "mm", + "type": "float", + "default_value": 190, + "enabled": "park_print_head" + }, + "park_feed_rate": + { + "label": "Park Feed Rate", + "description": "How fast does the head move to the park coordinates.", + "unit": "mm/s", + "type": "float", + "default_value": 9000, + "enabled": "park_print_head" + } + } + }""" + + def execute(self, data): + feed_rate = self.getSettingValueByKey("park_feed_rate") + park_print_head = self.getSettingValueByKey("park_print_head") + x_park = self.getSettingValueByKey("head_park_x") + y_park = self.getSettingValueByKey("head_park_y") + trigger_command = self.getSettingValueByKey("trigger_command") + pause_length = self.getSettingValueByKey("pause_length") + gcode_to_append = ";TimeLapse Begin\n" + + if park_print_head: + gcode_to_append += self.putValue(G = 1, F = feed_rate, X = x_park, Y = y_park) + " ;Park print head\n" + gcode_to_append += self.putValue(M = 400) + " ;Wait for moves to finish\n" + gcode_to_append += trigger_command + " ;Snap Photo\n" + gcode_to_append += self.putValue(G = 4, P = pause_length) + " ;Wait for camera\n" + gcode_to_append += ";TimeLapse End\n" + for layer in data: + # Check that a layer is being printed + lines = layer.split("\n") + for line in lines: + if ";LAYER:" in line: + index = data.index(layer) + layer += gcode_to_append + + data[index] = layer + break + return data diff --git a/plugins/PostProcessingPlugin/scripts/UsePreviousProbeMeasurements.py b/plugins/PostProcessingPlugin/scripts/UsePreviousProbeMeasurements.py new file mode 100644 index 0000000000..271cb57100 --- /dev/null +++ b/plugins/PostProcessingPlugin/scripts/UsePreviousProbeMeasurements.py @@ -0,0 +1,46 @@ +# Cura PostProcessingPlugin +# Author: Amanda de Castilho +# Date: January 5,2019 + +# Description: This plugin overrides probing command and inserts code to ensure +# previous probe measurements are loaded and bed leveling enabled +# (searches for G29 and replaces it with M501 & M420 S1) +# *** Assumes G29 is in the start code, will do nothing if it isn't *** + +from ..Script import Script + +class UsePreviousProbeMeasurements(Script): + def __init__(self): + super().__init__() + + def getSettingDataString(self): + return """{ + "name": "Use Previous Probe Measurements", + "key": "UsePreviousProbeMeasurements", + "metadata": {}, + "version": 2, + "settings": + { + "use_previous_measurements": + { + "label": "Use last measurement?", + "description": "Selecting this will remove the G29 probing command and instead ensure previous measurements are loaded and enabled", + "type": "bool", + "default_value": false + } + } + }""" + + def execute(self, data): + text = "M501 ;load bed level data\nM420 S1 ;enable bed leveling" + if self.getSettingValueByKey("use_previous_measurements"): + for layer in data: + layer_index = data.index(layer) + lines = layer.split("\n") + for line in lines: + if line.startswith("G29"): + line_index = lines.index(line) + lines[line_index] = text + final_lines = "\n".join(lines) + data[layer_index] = final_lines + return data diff --git a/plugins/PrepareStage/PrepareMenu.qml b/plugins/PrepareStage/PrepareMenu.qml index b62d65254d..87d7c5f35c 100644 --- a/plugins/PrepareStage/PrepareMenu.qml +++ b/plugins/PrepareStage/PrepareMenu.qml @@ -20,11 +20,19 @@ Item name: "cura" } + anchors + { + left: parent.left + right: parent.right + leftMargin: UM.Theme.getSize("wide_margin").width + rightMargin: UM.Theme.getSize("wide_margin").width + } + // Item to ensure that all of the buttons are nicely centered. Item { anchors.horizontalCenter: parent.horizontalCenter - width: openFileButton.width + itemRow.width + UM.Theme.getSize("default_margin").width + width: parent.width - 2 * UM.Theme.getSize("wide_margin").width height: parent.height RowLayout @@ -32,9 +40,9 @@ Item id: itemRow anchors.left: openFileButton.right + anchors.right: parent.right anchors.leftMargin: UM.Theme.getSize("default_margin").width - width: Math.round(0.9 * prepareMenu.width) height: parent.height spacing: 0 @@ -58,6 +66,7 @@ Item Cura.ConfigurationMenu { + id: printerSetup Layout.fillHeight: true Layout.fillWidth: true Layout.preferredWidth: itemRow.width - machineSelection.width - printSetupSelectorItem.width - 2 * UM.Theme.getSize("default_lining").width diff --git a/plugins/PrepareStage/__init__.py b/plugins/PrepareStage/__init__.py index f085d788f9..8e86ff303d 100644 --- a/plugins/PrepareStage/__init__.py +++ b/plugins/PrepareStage/__init__.py @@ -10,7 +10,7 @@ def getMetaData(): return { "stage": { "name": i18n_catalog.i18nc("@item:inmenu", "Prepare"), - "weight": 0 + "weight": 10 } } diff --git a/plugins/PrepareStage/plugin.json b/plugins/PrepareStage/plugin.json index dc5c68ce16..e65c62ef49 100644 --- a/plugins/PrepareStage/plugin.json +++ b/plugins/PrepareStage/plugin.json @@ -1,8 +1,8 @@ -{ - "name": "Prepare Stage", - "author": "Ultimaker B.V.", - "version": "1.0.1", - "description": "Provides a prepare stage in Cura.", - "api": "6.0", - "i18n-catalog": "cura" +{ + "name": "Prepare Stage", + "author": "Ultimaker B.V.", + "version": "1.0.1", + "description": "Provides a prepare stage in Cura.", + "api": "7.0", + "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/PreviewStage/PreviewMain.qml b/plugins/PreviewStage/PreviewMain.qml index 6b5ce2436b..2926f0d012 100644 --- a/plugins/PreviewStage/PreviewMain.qml +++ b/plugins/PreviewStage/PreviewMain.qml @@ -11,12 +11,34 @@ import Cura 1.0 as Cura Item { + + // An Item whose bounds are guaranteed to be safe for overlays to be placed. + // Defaults to parent, ie. the entire available area + property var safeArea: parent + + // Subtract the actionPanel from the safe area. This way the view won't draw interface elements under/over it + Item + { + id: childSafeArea + x: safeArea.x - parent.x + y: safeArea.y - parent.y + width: actionPanelWidget.x - x + height: actionPanelWidget.y - y + } + Loader { id: previewMain anchors.fill: parent source: UM.Controller.activeView != null && UM.Controller.activeView.mainComponent != null ? UM.Controller.activeView.mainComponent : "" + + onLoaded: + { + if (previewMain.item.safeArea !== undefined){ + previewMain.item.safeArea = Qt.binding(function() { return childSafeArea }); + } + } } Cura.ActionPanelWidget diff --git a/plugins/PreviewStage/PreviewMenu.qml b/plugins/PreviewStage/PreviewMenu.qml index 62f814aac9..ff1ccff75f 100644 --- a/plugins/PreviewStage/PreviewMenu.qml +++ b/plugins/PreviewStage/PreviewMenu.qml @@ -20,15 +20,21 @@ Item name: "cura" } + anchors + { + left: parent.left + right: parent.right + leftMargin: UM.Theme.getSize("wide_margin").width + rightMargin: UM.Theme.getSize("wide_margin").width + } + Row { id: stageMenuRow - anchors.centerIn: parent - height: parent.height - width: childrenRect.width - // We want this row to have a preferred with equals to the 85% of the parent - property int preferredWidth: Math.round(0.85 * previewMenu.width) + anchors.horizontalCenter: parent.horizontalCenter + width: parent.width - 2 * UM.Theme.getSize("wide_margin").width + height: parent.height Cura.ViewsSelector { @@ -49,12 +55,12 @@ Item color: UM.Theme.getColor("lining") } - // This component will grow freely up to complete the preferredWidth of the row. + // This component will grow freely up to complete the width of the row. Loader { id: viewPanel height: parent.height - width: source != "" ? (stageMenuRow.preferredWidth - viewsSelector.width - printSetupSelectorItem.width - 2 * UM.Theme.getSize("default_lining").width) : 0 + width: source != "" ? (previewMenu.width - viewsSelector.width - printSetupSelectorItem.width - 2 * (UM.Theme.getSize("wide_margin").width + UM.Theme.getSize("default_lining").width)) : 0 source: UM.Controller.activeView != null && UM.Controller.activeView.stageMenuComponent != null ? UM.Controller.activeView.stageMenuComponent : "" } diff --git a/plugins/PreviewStage/__init__.py b/plugins/PreviewStage/__init__.py index 424f573e4a..cb32f583ee 100644 --- a/plugins/PreviewStage/__init__.py +++ b/plugins/PreviewStage/__init__.py @@ -11,7 +11,7 @@ def getMetaData(): return { "stage": { "name": i18n_catalog.i18nc("@item:inmenu", "Preview"), - "weight": 1 + "weight": 20 } } diff --git a/plugins/PreviewStage/plugin.json b/plugins/PreviewStage/plugin.json index e1e4288bae..1c21e682ee 100644 --- a/plugins/PreviewStage/plugin.json +++ b/plugins/PreviewStage/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides a preview stage in Cura.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py b/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py index 51b6a70b7a..c89bd31e21 100644 --- a/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py +++ b/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py @@ -48,9 +48,13 @@ class WindowsRemovableDrivePlugin(RemovableDrivePlugin.RemovableDrivePlugin): drives = {} bitmask = ctypes.windll.kernel32.GetLogicalDrives() - # Check possible drive letters, from A to Z + # Check possible drive letters, from C to Z # Note: using ascii_uppercase because we do not want this to change with locale! - for letter in string.ascii_uppercase: + # Skip A and B, since those drives are typically reserved for floppy disks. + # Those drives can theoretically be reassigned but it's safer to not check them for removable drives. + # Windows will also behave weirdly even with some of its internal functions if you do this (e.g. search indexing doesn't search it). + # Users that have removable drives in A or B will just have to save to file and select the drive there. + for letter in string.ascii_uppercase[2:]: drive = "{0}:/".format(letter) # Do we really want to skip A and B? diff --git a/plugins/RemovableDriveOutputDevice/plugin.json b/plugins/RemovableDriveOutputDevice/plugin.json index 5523d6b1c1..c794257e3a 100644 --- a/plugins/RemovableDriveOutputDevice/plugin.json +++ b/plugins/RemovableDriveOutputDevice/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "description": "Provides removable drive hotplugging and writing support.", "version": "1.0.1", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/SimulationView/LayerSlider.qml b/plugins/SimulationView/LayerSlider.qml index 88f298d1f5..d6de45df9b 100644 --- a/plugins/SimulationView/LayerSlider.qml +++ b/plugins/SimulationView/LayerSlider.qml @@ -155,25 +155,19 @@ Item } onPositionChanged: parent.onHandleDragged() - onPressed: sliderRoot.setActiveHandle(rangeHandle) + onPressed: + { + sliderRoot.setActiveHandle(rangeHandle) + sliderRoot.forceActiveFocus() + } } - SimulationSliderLabel - { - id: rangleHandleLabel + } - height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - width - UM.Theme.getSize("default_margin").width - anchors.verticalCenter: parent.verticalCenter - target: Qt.point(sliderRoot.width, y + height / 2) - visible: sliderRoot.activeHandle == parent - - // custom properties - maximumValue: sliderRoot.maximumValue - value: sliderRoot.upperValue - busy: UM.SimulationView.busy - setValue: rangeHandle.setValueManually // connect callback functions - } + onHeightChanged : { + // After a height change, the pixel-position of the handles is out of sync with the property value + setLowerValue(lowerValue) + setUpperValue(upperValue) } // Upper handle @@ -270,11 +264,12 @@ Item { id: upperHandleLabel - height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - parent.width - width - anchors.verticalCenter: parent.verticalCenter - target: Qt.point(sliderRoot.width, y + height / 2) - visible: sliderRoot.activeHandle == parent + height: sliderRoot.handleSize + anchors.bottom: parent.top + anchors.bottomMargin: UM.Theme.getSize("narrow_margin").height + anchors.horizontalCenter: parent.horizontalCenter + target: Qt.point(parent.width / 2, parent.top) + visible: sliderRoot.activeHandle == parent || sliderRoot.activeHandle == rangeHandle // custom properties maximumValue: sliderRoot.maximumValue @@ -333,7 +328,6 @@ Item // set the slider position based on the lower value function setValue(value) { - // Normalize values between range, since using arrow keys will create out-of-the-range values value = sliderRoot.normalizeValue(value) @@ -380,11 +374,12 @@ Item { id: lowerHandleLabel - height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - parent.width - width - anchors.verticalCenter: parent.verticalCenter - target: Qt.point(sliderRoot.width + width, y + height / 2) - visible: sliderRoot.activeHandle == parent + height: sliderRoot.handleSize + anchors.top: parent.bottom + anchors.topMargin: UM.Theme.getSize("narrow_margin").height + anchors.horizontalCenter: parent.horizontalCenter + target: Qt.point(parent.width / 2, parent.bottom) + visible: sliderRoot.activeHandle == parent || sliderRoot.activeHandle == rangeHandle // custom properties maximumValue: sliderRoot.maximumValue @@ -393,4 +388,4 @@ Item setValue: lowerHandle.setValueManually // connect callback functions } } -} \ No newline at end of file +} diff --git a/plugins/SimulationView/NozzleNode.py b/plugins/SimulationView/NozzleNode.py index 8a29871775..11b788c128 100644 --- a/plugins/SimulationView/NozzleNode.py +++ b/plugins/SimulationView/NozzleNode.py @@ -3,7 +3,6 @@ from UM.Application import Application from UM.Math.Color import Color -from UM.Math.Vector import Vector from UM.PluginRegistry import PluginRegistry from UM.Scene.SceneNode import SceneNode from UM.View.GL.OpenGL import OpenGL diff --git a/plugins/SimulationView/PathSlider.qml b/plugins/SimulationView/PathSlider.qml index c7a43c6407..facdbb6a53 100644 --- a/plugins/SimulationView/PathSlider.qml +++ b/plugins/SimulationView/PathSlider.qml @@ -56,6 +56,11 @@ Item return Math.min(Math.max(value, sliderRoot.minimumValue), sliderRoot.maximumValue) } + onWidthChanged : { + // After a width change, the pixel-position of the handle is out of sync with the property value + setHandleValue(handleValue) + } + // slider track Rectangle { diff --git a/plugins/SimulationView/SimulationSliderLabel.qml b/plugins/SimulationView/SimulationSliderLabel.qml index 06c6a51b44..c1fb0f4de9 100644 --- a/plugins/SimulationView/SimulationSliderLabel.qml +++ b/plugins/SimulationView/SimulationSliderLabel.qml @@ -1,7 +1,6 @@ // Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 +import QtQuick 2.5 import QtQuick.Controls 1.2 import QtQuick.Layouts 1.1 import QtQuick.Controls.Styles 1.1 @@ -20,9 +19,9 @@ UM.PointingRectangle { property int startFrom: 1 target: Qt.point(parent.width, y + height / 2) - arrowSize: UM.Theme.getSize("default_arrow").width + arrowSize: UM.Theme.getSize("button_tooltip_arrow").height height: parent.height - width: valueLabel.width + UM.Theme.getSize("default_margin").width + width: valueLabel.width visible: false color: UM.Theme.getColor("tool_panel_background") @@ -40,26 +39,35 @@ UM.PointingRectangle { anchors.fill: parent } + TextMetrics { + id: maxValueMetrics + font: valueLabel.font + text: maximumValue + 1 // layers are 0 based, add 1 for display value + + } + TextField { id: valueLabel anchors { verticalCenter: parent.verticalCenter horizontalCenter: parent.horizontalCenter + alignWhenCentered: false } - width: ((maximumValue + 1).toString().length + 1) * 10 * screenScaleFactor + width: maxValueMetrics.width + UM.Theme.getSize("default_margin").width text: sliderLabelRoot.value + startFrom // the current handle value, add 1 because layers is an array - horizontalAlignment: TextInput.AlignRight + horizontalAlignment: TextInput.AlignHCenter // key bindings, work when label is currenctly focused (active handle in LayerSlider) Keys.onUpPressed: sliderLabelRoot.setValue(sliderLabelRoot.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) Keys.onDownPressed: sliderLabelRoot.setValue(sliderLabelRoot.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) style: TextFieldStyle { - textColor: UM.Theme.getColor("setting_control_text") + textColor: UM.Theme.getColor("text") font: UM.Theme.getFont("default") - background: Item { } + renderType: Text.NativeRendering + background: Item { } } onEditingFinished: { diff --git a/plugins/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index 3b2db2efac..6d6f19c57c 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -48,7 +48,7 @@ if TYPE_CHECKING: catalog = i18nCatalog("cura") -## View used to display g-code paths. +## The preview layer view. It is used to display g-code paths. class SimulationView(CuraView): # Must match SimulationViewMenuComponent.qml LAYER_VIEW_TYPE_MATERIAL_TYPE = 0 @@ -83,9 +83,13 @@ class SimulationView(CuraView): self._simulationview_composite_shader = None # type: Optional["ShaderProgram"] self._old_composite_shader = None # type: Optional["ShaderProgram"] + self._max_feedrate = sys.float_info.min + self._min_feedrate = sys.float_info.max + self._max_thickness = sys.float_info.min + self._min_thickness = sys.float_info.max + self._global_container_stack = None # type: Optional[ContainerStack] - self._proxy = SimulationViewProxy() - self._controller.getScene().getRoot().childrenChanged.connect(self._onSceneChanged) + self._proxy = None self._resetSettings() self._legend_items = None @@ -104,7 +108,6 @@ class SimulationView(CuraView): Application.getInstance().getPreferences().addPreference("layerview/show_skin", True) Application.getInstance().getPreferences().addPreference("layerview/show_infill", True) - Application.getInstance().getPreferences().preferenceChanged.connect(self._onPreferencesChanged) self._updateWithPreferences() self._solid_layers = int(Application.getInstance().getPreferences().getValue("view/top_layer_count")) @@ -180,8 +183,7 @@ class SimulationView(CuraView): def _onSceneChanged(self, node: "SceneNode") -> None: if node.getMeshData() is None: - self.resetLayerData() - + return self.setActivity(False) self.calculateMaxLayers() self.calculateMaxPathsOnLayer(self._current_layer_num) @@ -211,6 +213,8 @@ class SimulationView(CuraView): def beginRendering(self) -> None: scene = self.getController().getScene() renderer = self.getRenderer() + if renderer is None: + return if not self._ghost_shader: self._ghost_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader")) @@ -218,10 +222,10 @@ class SimulationView(CuraView): if theme is not None: self._ghost_shader.setUniformValue("u_color", Color(*theme.getColor("layerview_ghost").getRgb())) - for node in DepthFirstIterator(scene.getRoot()): # type: ignore + for node in DepthFirstIterator(scene.getRoot()): # We do not want to render ConvexHullNode as it conflicts with the bottom layers. # However, it is somewhat relevant when the node is selected, so do render it then. - if type(node) is ConvexHullNode and not Selection.isSelected(node.getWatchedNode()): + if type(node) is ConvexHullNode and not Selection.isSelected(cast(ConvexHullNode, node).getWatchedNode()): continue if not node.render(renderer): @@ -384,7 +388,7 @@ class SimulationView(CuraView): self._max_thickness = max(float(p.lineThicknesses.max()), self._max_thickness) try: self._min_thickness = min(float(p.lineThicknesses[numpy.nonzero(p.lineThicknesses)].min()), self._min_thickness) - except: + except ValueError: # Sometimes, when importing a GCode the line thicknesses are zero and so the minimum (avoiding # the zero) can't be calculated Logger.log("i", "Min thickness can't be calculated because all the values are zero") @@ -441,6 +445,8 @@ class SimulationView(CuraView): ## Hackish way to ensure the proxy is already created, which ensures that the layerview.qml is already created # as this caused some issues. def getProxy(self, engine, script_engine): + if self._proxy is None: + self._proxy = SimulationViewProxy(self) return self._proxy def endRendering(self) -> None: @@ -460,6 +466,13 @@ class SimulationView(CuraView): return True if event.type == Event.ViewActivateEvent: + # Start listening to changes. + Application.getInstance().getPreferences().preferenceChanged.connect(self._onPreferencesChanged) + self._controller.getScene().getRoot().childrenChanged.connect(self._onSceneChanged) + + self.calculateMaxLayers() + self.calculateMaxPathsOnLayer(self._current_layer_num) + # FIX: on Max OS X, somehow QOpenGLContext.currentContext() can become None during View switching. # This can happen when you do the following steps: # 1. Start Cura @@ -479,7 +492,11 @@ class SimulationView(CuraView): # Make sure the SimulationPass is created layer_pass = self.getSimulationPass() - self.getRenderer().addRenderPass(layer_pass) + renderer = self.getRenderer() + if renderer is None: + return False + + renderer.addRenderPass(layer_pass) # Make sure the NozzleNode is add to the root nozzle = self.getNozzleNode() @@ -498,7 +515,7 @@ class SimulationView(CuraView): self._simulationview_composite_shader.setUniformValue("u_outline_color", Color(*theme.getColor("model_selection_outline").getRgb())) if not self._composite_pass: - self._composite_pass = cast(CompositePass, self.getRenderer().getRenderPass("composite")) + self._composite_pass = cast(CompositePass, renderer.getRenderPass("composite")) self._old_layer_bindings = self._composite_pass.getLayerBindings()[:] # make a copy so we can restore to it later self._composite_pass.getLayerBindings().append("simulationview") @@ -506,13 +523,21 @@ class SimulationView(CuraView): self._composite_pass.setCompositeShader(self._simulationview_composite_shader) elif event.type == Event.ViewDeactivateEvent: + self._controller.getScene().getRoot().childrenChanged.disconnect(self._onSceneChanged) + Application.getInstance().getPreferences().preferenceChanged.disconnect(self._onPreferencesChanged) self._wireprint_warning_message.hide() Application.getInstance().globalContainerStackChanged.disconnect(self._onGlobalStackChanged) if self._global_container_stack: self._global_container_stack.propertyChanged.disconnect(self._onPropertyChanged) if self._nozzle_node: self._nozzle_node.setParent(None) - self.getRenderer().removeRenderPass(self._layer_pass) + + renderer = self.getRenderer() + if renderer is None: + return False + + if self._layer_pass is not None: + renderer.removeRenderPass(self._layer_pass) if self._composite_pass: self._composite_pass.setLayerBindings(cast(List[str], self._old_layer_bindings)) self._composite_pass.setCompositeShader(cast(ShaderProgram, self._old_composite_shader)) @@ -572,14 +597,14 @@ class SimulationView(CuraView): self._current_layer_jumps = job.getResult().get("jumps") self._controller.getScene().sceneChanged.emit(self._controller.getScene().getRoot()) - self._top_layers_job = None # type: Optional["_CreateTopLayersJob"] + self._top_layers_job = None def _updateWithPreferences(self) -> None: self._solid_layers = int(Application.getInstance().getPreferences().getValue("view/top_layer_count")) self._only_show_top_layers = bool(Application.getInstance().getPreferences().getValue("view/only_show_top_layers")) self._compatibility_mode = self._evaluateCompatibilityMode() - self.setSimulationViewType(int(float(Application.getInstance().getPreferences().getValue("layerview/layer_view_type")))); + self.setSimulationViewType(int(float(Application.getInstance().getPreferences().getValue("layerview/layer_view_type")))) for extruder_nr, extruder_opacity in enumerate(Application.getInstance().getPreferences().getValue("layerview/extruder_opacities").split("|")): try: diff --git a/plugins/SimulationView/SimulationViewMainComponent.qml b/plugins/SimulationView/SimulationViewMainComponent.qml index 58901652d3..bfd8799673 100644 --- a/plugins/SimulationView/SimulationViewMainComponent.qml +++ b/plugins/SimulationView/SimulationViewMainComponent.qml @@ -11,19 +11,39 @@ import Cura 1.0 as Cura Item { - property bool is_simulation_playing: false + // An Item whose bounds are guaranteed to be safe for overlays to be placed. + // Defaults to parent, ie. the entire available area + // eg. the layer slider will not be placed in this area. + property var safeArea: parent + + + property bool isSimulationPlaying: false + readonly property real layerSliderSafeYMin: safeArea.y + readonly property real layerSliderSafeYMax: safeArea.y + safeArea.height + readonly property real pathSliderSafeXMin: safeArea.x + playButton.width + readonly property real pathSliderSafeXMax: safeArea.x + safeArea.width + visible: UM.SimulationView.layerActivity && CuraApplication.platformActivity + // A slider which lets users trace a single layer (XY movements) PathSlider { id: pathSlider + + readonly property real preferredWidth: UM.Theme.getSize("slider_layerview_size").height // not a typo, should be as long as layerview slider + readonly property real margin: UM.Theme.getSize("default_margin").width + readonly property real pathSliderSafeWidth: pathSliderSafeXMax - pathSliderSafeXMin + height: UM.Theme.getSize("slider_handle").width - width: UM.Theme.getSize("slider_layerview_size").height + width: preferredWidth + margin * 2 < pathSliderSafeWidth ? preferredWidth : pathSliderSafeWidth - margin * 2 + anchors.bottom: parent.bottom - anchors.bottomMargin: UM.Theme.getSize("default_margin").height + anchors.bottomMargin: margin anchors.horizontalCenter: parent.horizontalCenter + anchors.horizontalCenterOffset: -(parent.width - pathSliderSafeXMax - pathSliderSafeXMin) / 2 // center between parent top and layerSliderSafeYMax + visible: !UM.SimulationView.compatibilityMode @@ -58,7 +78,7 @@ Item UM.SimpleButton { id: playButton - iconSource: !is_simulation_playing ? "./resources/simulation_resume.svg": "./resources/simulation_pause.svg" + iconSource: !isSimulationPlaying ? "./resources/simulation_resume.svg": "./resources/simulation_pause.svg" width: UM.Theme.getSize("small_button").width height: UM.Theme.getSize("small_button").height hoverColor: UM.Theme.getColor("slider_handle_active") @@ -88,7 +108,7 @@ Item onClicked: { - if(is_simulation_playing) + if(isSimulationPlaying) { pauseSimulation() } @@ -102,7 +122,7 @@ Item { UM.SimulationView.setSimulationRunning(false) simulationTimer.stop() - is_simulation_playing = false + isSimulationPlaying = false layerSlider.manuallyChanged = true pathSlider.manuallyChanged = true } @@ -131,7 +151,7 @@ Item // When the user plays the simulation, if the path slider is at the end of this layer, we start // the simulation at the beginning of the current layer. - if (!is_simulation_playing) + if (!isSimulationPlaying) { if (currentPath >= numPaths) { @@ -166,22 +186,30 @@ Item } // The status must be set here instead of in the resumeSimulation function otherwise it won't work // correctly, because part of the logic is in this trigger function. - is_simulation_playing = true + isSimulationPlaying = true } } + // Scrolls trough Z layers LayerSlider { + property var preferredHeight: UM.Theme.getSize("slider_layerview_size").height + property double heightMargin: UM.Theme.getSize("default_margin").height * 3 // extra margin to accomodate layer number tooltips + property double layerSliderSafeHeight: layerSliderSafeYMax - layerSliderSafeYMin + id: layerSlider width: UM.Theme.getSize("slider_handle").width - height: UM.Theme.getSize("slider_layerview_size").height + height: preferredHeight + heightMargin * 2 < layerSliderSafeHeight ? preferredHeight : layerSliderSafeHeight - heightMargin * 2 anchors { right: parent.right verticalCenter: parent.verticalCenter + verticalCenterOffset: -(parent.height - layerSliderSafeYMax - layerSliderSafeYMin) / 2 // center between parent top and layerSliderSafeYMax rightMargin: UM.Theme.getSize("default_margin").width + bottomMargin: heightMargin + topMargin: heightMargin } // Custom properties diff --git a/plugins/SimulationView/SimulationViewMenuComponent.qml b/plugins/SimulationView/SimulationViewMenuComponent.qml index 957d8170cf..b94cf029f0 100644 --- a/plugins/SimulationView/SimulationViewMenuComponent.qml +++ b/plugins/SimulationView/SimulationViewMenuComponent.qml @@ -15,6 +15,8 @@ Cura.ExpandableComponent { id: base + dragPreferencesNamePrefix: "view/colorscheme" + contentHeaderTitle: catalog.i18nc("@label", "Color scheme") Connections @@ -177,7 +179,6 @@ Cura.ExpandableComponent height: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height width: parent.width visible: !UM.SimulationView.compatibilityMode - enabled: index < 4 onClicked: { diff --git a/plugins/SimulationView/SimulationViewProxy.py b/plugins/SimulationView/SimulationViewProxy.py index a84b151983..58a004cc31 100644 --- a/plugins/SimulationView/SimulationViewProxy.py +++ b/plugins/SimulationView/SimulationViewProxy.py @@ -1,21 +1,24 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import TYPE_CHECKING from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty from UM.FlameProfiler import pyqtSlot from UM.Application import Application -import SimulationView +if TYPE_CHECKING: + from .SimulationView import SimulationView class SimulationViewProxy(QObject): - def __init__(self, parent=None): + def __init__(self, simulation_view: "SimulationView", parent=None): super().__init__(parent) + self._simulation_view = simulation_view self._current_layer = 0 self._controller = Application.getInstance().getController() self._controller.activeViewChanged.connect(self._onActiveViewChanged) - self._onActiveViewChanged() self.is_simulationView_selected = False + self._onActiveViewChanged() currentLayerChanged = pyqtSignal() currentPathChanged = pyqtSignal() @@ -28,182 +31,112 @@ class SimulationViewProxy(QObject): @pyqtProperty(bool, notify=activityChanged) def layerActivity(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getActivity() - return False + return self._simulation_view.getActivity() @pyqtProperty(int, notify=maxLayersChanged) def numLayers(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getMaxLayers() - return 0 + return self._simulation_view.getMaxLayers() @pyqtProperty(int, notify=currentLayerChanged) def currentLayer(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getCurrentLayer() - return 0 + return self._simulation_view.getCurrentLayer() @pyqtProperty(int, notify=currentLayerChanged) def minimumLayer(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getMinimumLayer() - return 0 + return self._simulation_view.getMinimumLayer() @pyqtProperty(int, notify=maxPathsChanged) def numPaths(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getMaxPaths() - return 0 + return self._simulation_view.getMaxPaths() @pyqtProperty(int, notify=currentPathChanged) def currentPath(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getCurrentPath() - return 0 + return self._simulation_view.getCurrentPath() @pyqtProperty(int, notify=currentPathChanged) def minimumPath(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getMinimumPath() - return 0 + return self._simulation_view.getMinimumPath() @pyqtProperty(bool, notify=busyChanged) def busy(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.isBusy() - return False + return self._simulation_view.isBusy() @pyqtProperty(bool, notify=preferencesChanged) def compatibilityMode(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getCompatibilityMode() - return False + return self._simulation_view.getCompatibilityMode() + + @pyqtProperty(int, notify=globalStackChanged) + def extruderCount(self): + return self._simulation_view.getExtruderCount() @pyqtSlot(int) def setCurrentLayer(self, layer_num): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setLayer(layer_num) + self._simulation_view.setLayer(layer_num) @pyqtSlot(int) def setMinimumLayer(self, layer_num): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setMinimumLayer(layer_num) + self._simulation_view.setMinimumLayer(layer_num) @pyqtSlot(int) def setCurrentPath(self, path_num): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setPath(path_num) + self._simulation_view.setPath(path_num) @pyqtSlot(int) def setMinimumPath(self, path_num): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setMinimumPath(path_num) + self._simulation_view.setMinimumPath(path_num) @pyqtSlot(int) def setSimulationViewType(self, layer_view_type): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setSimulationViewType(layer_view_type) + self._simulation_view.setSimulationViewType(layer_view_type) @pyqtSlot(result=int) def getSimulationViewType(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getSimulationViewType() - return 0 + return self._simulation_view.getSimulationViewType() @pyqtSlot(bool) def setSimulationRunning(self, running): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setSimulationRunning(running) + self._simulation_view.setSimulationRunning(running) @pyqtSlot(result=bool) def getSimulationRunning(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.isSimulationRunning() - return False + return self._simulation_view.isSimulationRunning() @pyqtSlot(result=float) def getMinFeedrate(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getMinFeedrate() - return 0 + return self._simulation_view.getMinFeedrate() @pyqtSlot(result=float) def getMaxFeedrate(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getMaxFeedrate() - return 0 + return self._simulation_view.getMaxFeedrate() @pyqtSlot(result=float) def getMinThickness(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getMinThickness() - return 0 + return self._simulation_view.getMinThickness() @pyqtSlot(result=float) def getMaxThickness(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getMaxThickness() - return 0 + return self._simulation_view.getMaxThickness() # Opacity 0..1 @pyqtSlot(int, float) def setExtruderOpacity(self, extruder_nr, opacity): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setExtruderOpacity(extruder_nr, opacity) + self._simulation_view.setExtruderOpacity(extruder_nr, opacity) @pyqtSlot(int) def setShowTravelMoves(self, show): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setShowTravelMoves(show) + self._simulation_view.setShowTravelMoves(show) @pyqtSlot(int) def setShowHelpers(self, show): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setShowHelpers(show) + self._simulation_view.setShowHelpers(show) @pyqtSlot(int) def setShowSkin(self, show): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setShowSkin(show) + self._simulation_view.setShowSkin(show) @pyqtSlot(int) def setShowInfill(self, show): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - active_view.setShowInfill(show) - - @pyqtProperty(int, notify=globalStackChanged) - def extruderCount(self): - active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - return active_view.getExtruderCount() - return 0 + self._simulation_view.setShowInfill(show) def _layerActivityChanged(self): self.activityChanged.emit() @@ -236,24 +169,25 @@ class SimulationViewProxy(QObject): def _onActiveViewChanged(self): active_view = self._controller.getActiveView() - if isinstance(active_view, SimulationView.SimulationView.SimulationView): - # remove other connection if once the SimulationView was created. - if self.is_simulationView_selected: - active_view.currentLayerNumChanged.disconnect(self._onLayerChanged) - active_view.currentPathNumChanged.disconnect(self._onPathChanged) - active_view.maxLayersChanged.disconnect(self._onMaxLayersChanged) - active_view.maxPathsChanged.disconnect(self._onMaxPathsChanged) - active_view.busyChanged.disconnect(self._onBusyChanged) - active_view.activityChanged.disconnect(self._onActivityChanged) - active_view.globalStackChanged.disconnect(self._onGlobalStackChanged) - active_view.preferencesChanged.disconnect(self._onPreferencesChanged) - + if active_view == self._simulation_view: + self._simulation_view.currentLayerNumChanged.connect(self._onLayerChanged) + self._simulation_view.currentPathNumChanged.connect(self._onPathChanged) + self._simulation_view.maxLayersChanged.connect(self._onMaxLayersChanged) + self._simulation_view.maxPathsChanged.connect(self._onMaxPathsChanged) + self._simulation_view.busyChanged.connect(self._onBusyChanged) + self._simulation_view.activityChanged.connect(self._onActivityChanged) + self._simulation_view.globalStackChanged.connect(self._onGlobalStackChanged) + self._simulation_view.preferencesChanged.connect(self._onPreferencesChanged) self.is_simulationView_selected = True - active_view.currentLayerNumChanged.connect(self._onLayerChanged) - active_view.currentPathNumChanged.connect(self._onPathChanged) - active_view.maxLayersChanged.connect(self._onMaxLayersChanged) - active_view.maxPathsChanged.connect(self._onMaxPathsChanged) - active_view.busyChanged.connect(self._onBusyChanged) - active_view.activityChanged.connect(self._onActivityChanged) - active_view.globalStackChanged.connect(self._onGlobalStackChanged) - active_view.preferencesChanged.connect(self._onPreferencesChanged) + elif self.is_simulationView_selected: + # Disconnect all of em again. + self.is_simulationView_selected = False + self._simulation_view.currentLayerNumChanged.disconnect(self._onLayerChanged) + self._simulation_view.currentPathNumChanged.disconnect(self._onPathChanged) + self._simulation_view.maxLayersChanged.disconnect(self._onMaxLayersChanged) + self._simulation_view.maxPathsChanged.disconnect(self._onMaxPathsChanged) + self._simulation_view.busyChanged.disconnect(self._onBusyChanged) + self._simulation_view.activityChanged.disconnect(self._onActivityChanged) + self._simulation_view.globalStackChanged.disconnect(self._onGlobalStackChanged) + self._simulation_view.preferencesChanged.disconnect(self._onPreferencesChanged) + diff --git a/plugins/SimulationView/layers.shader b/plugins/SimulationView/layers.shader index 69c7c61ee5..11b049c9fe 100644 --- a/plugins/SimulationView/layers.shader +++ b/plugins/SimulationView/layers.shader @@ -1,6 +1,9 @@ [shaders] vertex = - uniform highp mat4 u_modelViewProjectionMatrix; + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform lowp float u_active_extruder; uniform lowp float u_shade_factor; uniform highp int u_layer_view_type; @@ -16,7 +19,7 @@ vertex = void main() { - gl_Position = u_modelViewProjectionMatrix * a_vertex; + gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex; // shade the color depending on the extruder index v_color = a_color; // 8 and 9 are travel moves @@ -76,7 +79,10 @@ fragment = vertex41core = #version 410 - uniform highp mat4 u_modelViewProjectionMatrix; + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform lowp float u_active_extruder; uniform lowp float u_shade_factor; uniform highp int u_layer_view_type; @@ -92,7 +98,7 @@ vertex41core = void main() { - gl_Position = u_modelViewProjectionMatrix * a_vertex; + gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex; v_color = a_color; if ((a_line_type != 8) && (a_line_type != 9)) { v_color = (a_extruder == u_active_extruder) ? v_color : vec4(u_shade_factor * v_color.rgb, v_color.a); @@ -154,7 +160,9 @@ u_show_skin = 1 u_show_infill = 1 [bindings] -u_modelViewProjectionMatrix = model_view_projection_matrix +u_modelMatrix = model_matrix +u_viewMatrix = view_matrix +u_projectionMatrix = projection_matrix [attributes] a_vertex = vertex diff --git a/plugins/SimulationView/layers3d.shader b/plugins/SimulationView/layers3d.shader index a277606509..ecd96c3f68 100644 --- a/plugins/SimulationView/layers3d.shader +++ b/plugins/SimulationView/layers3d.shader @@ -1,10 +1,10 @@ [shaders] vertex41core = #version 410 - uniform highp mat4 u_modelViewProjectionMatrix; - uniform highp mat4 u_modelMatrix; - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform lowp float u_active_extruder; uniform lowp float u_max_feedrate; uniform lowp float u_min_feedrate; @@ -104,7 +104,10 @@ vertex41core = geometry41core = #version 410 - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform int u_show_travel_moves; uniform int u_show_helpers; uniform int u_show_skin; @@ -136,6 +139,8 @@ geometry41core = void main() { + highp mat4 viewProjectionMatrix = u_projectionMatrix * u_viewMatrix; + vec4 g_vertex_delta; vec3 g_vertex_normal_horz; // horizontal and vertical in respect to layers vec4 g_vertex_offset_horz; // vec4 to match gl_in[x].gl_Position @@ -183,65 +188,83 @@ geometry41core = g_vertex_offset_vert = vec4(g_vertex_normal_vert * size_y, 0.0); if ((v_line_type[0] == 8) || (v_line_type[0] == 9)) { + vec4 va_head = viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head + g_vertex_offset_vert); + vec4 va_up = viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert); + vec4 va_down = viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert); + vec4 vb_head = viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head + g_vertex_offset_vert); + vec4 vb_down = viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert); + vec4 vb_up = viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert); + // Travels: flat plane with pointy ends - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_up); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_head); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_down); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_up); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_down); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_up); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_head); //And reverse so that the line is also visible from the back side. - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_up); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_down); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_up); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_down); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_head); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_up); EndPrimitive(); } else { + vec4 va_m_horz = viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz); + vec4 vb_m_horz = viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz); + vec4 va_p_vert = viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert); + vec4 vb_p_vert = viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_vert); + vec4 va_p_horz = viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz); + vec4 vb_p_horz = viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz); + vec4 va_m_vert = viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert); + vec4 vb_m_vert = viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_vert); + vec4 va_head = viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head); + vec4 vb_head = viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head); + // All normal lines are rendered as 3d tubes. - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, va_m_horz); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, vb_m_horz); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_p_vert); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_p_vert); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, va_p_horz); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, vb_p_horz); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, va_m_vert); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, vb_m_vert); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, va_m_horz); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, vb_m_horz); EndPrimitive(); // left side - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, va_m_horz); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_p_vert); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, va_head); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, va_p_horz); EndPrimitive(); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, va_p_horz); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, va_m_vert); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, va_head); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, va_m_horz); EndPrimitive(); // right side - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, vb_p_horz); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_p_vert); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz_head, vb_head); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, vb_m_horz); EndPrimitive(); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, vb_m_horz); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, vb_m_vert); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz_head, vb_head); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, vb_p_horz); EndPrimitive(); } @@ -301,9 +324,9 @@ u_min_thickness = 0 u_max_thickness = 1 [bindings] -u_modelViewProjectionMatrix = model_view_projection_matrix u_modelMatrix = model_matrix -u_viewProjectionMatrix = view_projection_matrix +u_viewMatrix = view_matrix +u_projectionMatrix = projection_matrix u_normalMatrix = normal_matrix u_lightPosition = light_0_position diff --git a/plugins/SimulationView/layers3d_shadow.shader b/plugins/SimulationView/layers3d_shadow.shader index 15136fcf3f..b2ed7f8c12 100644 --- a/plugins/SimulationView/layers3d_shadow.shader +++ b/plugins/SimulationView/layers3d_shadow.shader @@ -1,10 +1,10 @@ [shaders] vertex41core = #version 410 - uniform highp mat4 u_modelViewProjectionMatrix; - uniform highp mat4 u_modelMatrix; - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform lowp float u_active_extruder; uniform lowp vec4 u_extruder_opacity; // currently only for max 4 extruders, others always visible @@ -58,7 +58,10 @@ vertex41core = geometry41core = #version 410 - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform int u_show_travel_moves; uniform int u_show_helpers; uniform int u_show_skin; @@ -90,6 +93,8 @@ geometry41core = void main() { + highp mat4 viewProjectionMatrix = u_projectionMatrix * u_viewMatrix; + vec4 g_vertex_delta; vec3 g_vertex_normal_horz; // horizontal and vertical in respect to layers vec4 g_vertex_offset_horz; // vec4 to match gl_in[x].gl_Position @@ -137,65 +142,83 @@ geometry41core = g_vertex_offset_vert = vec4(g_vertex_normal_vert * size_y, 0.0); if ((v_line_type[0] == 8) || (v_line_type[0] == 9)) { + vec4 va_head = viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head + g_vertex_offset_vert); + vec4 va_up = viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert); + vec4 va_down = viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert); + vec4 vb_head = viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head + g_vertex_offset_vert); + vec4 vb_down = viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert); + vec4 vb_up = viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert); + // Travels: flat plane with pointy ends - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_up); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_head); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_down); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_up); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_down); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_up); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_head); //And reverse so that the line is also visible from the back side. - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_up); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_down); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_up); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_down); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_head); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_up); EndPrimitive(); } else { + vec4 va_m_horz = viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz); + vec4 vb_m_horz = viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz); + vec4 va_p_vert = viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert); + vec4 vb_p_vert = viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_vert); + vec4 va_p_horz = viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz); + vec4 vb_p_horz = viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz); + vec4 va_m_vert = viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert); + vec4 vb_m_vert = viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_vert); + vec4 va_head = viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head); + vec4 vb_head = viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head); + // All normal lines are rendered as 3d tubes. - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, va_m_horz); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, vb_m_horz); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_p_vert); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_p_vert); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, va_p_horz); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, vb_p_horz); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, va_m_vert); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, vb_m_vert); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, va_m_horz); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, vb_m_horz); EndPrimitive(); // left side - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, va_m_horz); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, va_p_vert); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, va_head); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, va_p_horz); EndPrimitive(); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, va_p_horz); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, va_m_vert); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, va_head); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, va_m_horz); EndPrimitive(); // right side - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, vb_p_horz); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, vb_p_vert); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz_head, vb_head); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, vb_m_horz); EndPrimitive(); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, vb_m_horz); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, vb_m_vert); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz_head, vb_head); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, vb_p_horz); EndPrimitive(); } @@ -246,9 +269,9 @@ u_show_skin = 1 u_show_infill = 1 [bindings] -u_modelViewProjectionMatrix = model_view_projection_matrix u_modelMatrix = model_matrix -u_viewProjectionMatrix = view_projection_matrix +u_viewMatrix = view_matrix +u_projectionMatrix = projection_matrix u_normalMatrix = normal_matrix u_lightPosition = light_0_position diff --git a/plugins/SimulationView/layers_shadow.shader b/plugins/SimulationView/layers_shadow.shader index 6149cc1703..8f500536a5 100644 --- a/plugins/SimulationView/layers_shadow.shader +++ b/plugins/SimulationView/layers_shadow.shader @@ -1,6 +1,9 @@ [shaders] vertex = - uniform highp mat4 u_modelViewProjectionMatrix; + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform lowp float u_active_extruder; uniform lowp float u_shade_factor; uniform highp int u_layer_view_type; @@ -16,7 +19,7 @@ vertex = void main() { - gl_Position = u_modelViewProjectionMatrix * a_vertex; + gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex; // shade the color depending on the extruder index v_color = vec4(0.4, 0.4, 0.4, 0.9); // default color for not current layer; // 8 and 9 are travel moves @@ -80,7 +83,10 @@ fragment = vertex41core = #version 410 - uniform highp mat4 u_modelViewProjectionMatrix; + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform lowp float u_active_extruder; uniform lowp float u_shade_factor; uniform highp int u_layer_view_type; @@ -96,7 +102,7 @@ vertex41core = void main() { - gl_Position = u_modelViewProjectionMatrix * a_vertex; + gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex; v_color = vec4(0.4, 0.4, 0.4, 0.9); // default color for not current layer // if ((a_line_type != 8) && (a_line_type != 9)) { // v_color = (a_extruder == u_active_extruder) ? v_color : vec4(u_shade_factor * v_color.rgb, v_color.a); @@ -159,7 +165,9 @@ u_show_skin = 1 u_show_infill = 1 [bindings] -u_modelViewProjectionMatrix = model_view_projection_matrix +u_modelMatrix = model_matrix +u_viewMatrix = view_matrix +u_projectionMatrix = projection_matrix [attributes] a_vertex = vertex diff --git a/plugins/SimulationView/plugin.json b/plugins/SimulationView/plugin.json index 3ccf91b9e6..e444f1fa2e 100644 --- a/plugins/SimulationView/plugin.json +++ b/plugins/SimulationView/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides the Simulation view.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/SliceInfoPlugin/MoreInfoWindow.qml b/plugins/SliceInfoPlugin/MoreInfoWindow.qml index 985ebe94a2..50276ec25c 100644 --- a/plugins/SliceInfoPlugin/MoreInfoWindow.qml +++ b/plugins/SliceInfoPlugin/MoreInfoWindow.qml @@ -1,150 +1,156 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 +import QtQuick.Controls 2.3 import QtQuick.Window 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 import UM 1.3 as UM -import Cura 1.0 as Cura +import Cura 1.1 as Cura -UM.Dialog +Window { + UM.I18nCatalog { id: catalog; name: "cura" } + id: baseDialog title: catalog.i18nc("@title:window", "More information on anonymous data collection") visible: false + modality: Qt.ApplicationModal + minimumWidth: 500 * screenScaleFactor minimumHeight: 400 * screenScaleFactor width: minimumWidth height: minimumHeight - property bool allowSendData: true // for saving the user's choice + color: UM.Theme.getColor("main_background") - onAccepted: manager.setSendSliceInfo(allowSendData) + property bool allowSendData: true // for saving the user's choice onVisibilityChanged: { if (visible) { - baseDialog.allowSendData = UM.Preferences.getValue("info/send_slice_info"); + baseDialog.allowSendData = UM.Preferences.getValue("info/send_slice_info") if (baseDialog.allowSendData) { - allowSendButton.checked = true; + allowSendButton.checked = true } else { - dontSendButton.checked = true; + dontSendButton.checked = true } } } + // Main content area Item { - id: textRow - anchors - { - top: parent.top - bottom: radioButtonsRow.top - bottomMargin: UM.Theme.getSize("default_margin").height - left: parent.left - right: parent.right - } + anchors.fill: parent + anchors.margins: UM.Theme.getSize("default_margin").width - Label + Item // Text part { - id: headerText + id: textRow anchors { top: parent.top - left: parent.left - right: parent.right - } - - text: catalog.i18nc("@text:window", "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent.") - wrapMode: Text.WordWrap - } - - TextArea - { - id: exampleData - anchors - { - top: headerText.bottom - topMargin: UM.Theme.getSize("default_margin").height - bottom: parent.bottom + bottom: radioButtonsRow.top bottomMargin: UM.Theme.getSize("default_margin").height left: parent.left right: parent.right } - text: manager.getExampleData() - readOnly: true - textFormat: TextEdit.PlainText - } - } - - Column - { - id: radioButtonsRow - width: parent.width - anchors.bottom: buttonRow.top - anchors.bottomMargin: UM.Theme.getSize("default_margin").height - - ExclusiveGroup { id: group } - - RadioButton - { - id: dontSendButton - text: catalog.i18nc("@text:window", "I don't want to send these data") - exclusiveGroup: group - onClicked: + Label { - baseDialog.allowSendData = !checked; + id: headerText + anchors + { + top: parent.top + left: parent.left + right: parent.right + } + text: catalog.i18nc("@text:window", "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:") + wrapMode: Text.WordWrap + renderType: Text.NativeRendering } - } - RadioButton - { - id: allowSendButton - text: catalog.i18nc("@text:window", "Allow sending these data to Ultimaker and help us improve Cura") - exclusiveGroup: group - onClicked: + + Cura.ScrollableTextArea { - baseDialog.allowSendData = checked; - } - } - } + anchors + { + top: headerText.bottom + topMargin: UM.Theme.getSize("default_margin").height + bottom: parent.bottom + bottomMargin: UM.Theme.getSize("default_margin").height + left: parent.left + right: parent.right + } - Item - { - id: buttonRow - anchors.bottom: parent.bottom - width: parent.width - anchors.bottomMargin: UM.Theme.getSize("default_margin").height - - UM.I18nCatalog { id: catalog; name: "cura" } - - Button - { - anchors.right: parent.right - text: catalog.i18nc("@action:button", "OK") - onClicked: - { - baseDialog.accepted() - baseDialog.hide() + textArea.text: manager.getExampleData() + textArea.textFormat: Text.RichText + textArea.wrapMode: Text.Wrap + textArea.readOnly: true } } - Button + Column // Radio buttons for agree and disagree { + id: radioButtonsRow anchors.left: parent.left - text: catalog.i18nc("@action:button", "Cancel") - onClicked: + anchors.right: parent.right + anchors.bottom: buttonRow.top + anchors.bottomMargin: UM.Theme.getSize("default_margin").height + + Cura.RadioButton { - baseDialog.rejected() - baseDialog.hide() + id: dontSendButton + text: catalog.i18nc("@text:window", "I don't want to send anonymous data") + onClicked: + { + baseDialog.allowSendData = !checked + } + } + Cura.RadioButton + { + id: allowSendButton + text: catalog.i18nc("@text:window", "Allow sending anonymous data") + onClicked: + { + baseDialog.allowSendData = checked + } + } + } + + Item // Bottom buttons + { + id: buttonRow + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + + height: childrenRect.height + + Cura.PrimaryButton + { + anchors.right: parent.right + text: catalog.i18nc("@action:button", "OK") + onClicked: + { + manager.setSendSliceInfo(allowSendData) + baseDialog.hide() + } + } + + Cura.SecondaryButton + { + anchors.left: parent.left + text: catalog.i18nc("@action:button", "Cancel") + onClicked: + { + baseDialog.hide() + } } } } diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 5149b6a6a6..af8a8b9853 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -18,6 +18,8 @@ from UM.Logger import Logger from UM.PluginRegistry import PluginRegistry from UM.Qt.Duration import DurationFormat +from cura import ApplicationMetadata + from .SliceInfoJob import SliceInfoJob @@ -48,20 +50,6 @@ class SliceInfo(QObject, Extension): def _onAppInitialized(self): # DO NOT read any preferences values in the constructor because at the time plugins are created, no version # upgrade has been performed yet because version upgrades are plugins too! - if not self._application.getPreferences().getValue("info/asked_send_slice_info"): - self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymized usage statistics."), - lifetime = 0, - dismissable = False, - title = catalog.i18nc("@info:title", "Collecting Data")) - - self.send_slice_info_message.addAction("MoreInfo", name = catalog.i18nc("@action:button", "More info"), icon = None, - description = catalog.i18nc("@action:tooltip", "See more information on what data Cura sends."), button_style = Message.ActionButtonStyle.LINK) - - self.send_slice_info_message.addAction("Dismiss", name = catalog.i18nc("@action:button", "Allow"), icon = None, - description = catalog.i18nc("@action:tooltip", "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing.")) - self.send_slice_info_message.actionTriggered.connect(self.messageActionTriggered) - self.send_slice_info_message.show() - if self._more_info_dialog is None: self._more_info_dialog = self._createDialog("MoreInfoWindow.qml") @@ -76,7 +64,7 @@ class SliceInfo(QObject, Extension): def showMoreInfoDialog(self): if self._more_info_dialog is None: self._more_info_dialog = self._createDialog("MoreInfoWindow.qml") - self._more_info_dialog.open() + self._more_info_dialog.show() def _createDialog(self, qml_name): Logger.log("d", "Creating dialog [%s]", qml_name) @@ -91,7 +79,7 @@ class SliceInfo(QObject, Extension): if not plugin_path: Logger.log("e", "Could not get plugin path!", self.getPluginId()) return None - file_path = os.path.join(plugin_path, "example_data.json") + file_path = os.path.join(plugin_path, "example_data.html") if file_path: with open(file_path, "r", encoding = "utf-8") as f: self._example_data_content = f.read() @@ -133,6 +121,7 @@ class SliceInfo(QObject, Extension): data["time_stamp"] = time.time() data["schema_version"] = 0 data["cura_version"] = application.getVersion() + data["cura_build_type"] = ApplicationMetadata.CuraBuildType active_mode = Application.getInstance().getPreferences().getValue("cura/active_mode") if active_mode == 0: @@ -140,6 +129,10 @@ class SliceInfo(QObject, Extension): else: data["active_mode"] = "custom" + data["camera_view"] = application.getPreferences().getValue("general/camera_perspective_mode") + if data["camera_view"] == "orthographic": + data["camera_view"] = "orthogonal" #The database still only recognises the old name "orthogonal". + definition_changes = global_stack.definitionChanges machine_settings_changed_by_user = False if definition_changes.getId() != "empty": @@ -184,6 +177,7 @@ class SliceInfo(QObject, Extension): extruder_dict["extruder_settings"] = extruder_settings data["extruders"].append(extruder_dict) + data["intent_category"] = global_stack.getIntentCategory() data["quality_profile"] = global_stack.quality.getMetaData().get("quality_type") data["user_modified_setting_keys"] = self._getUserModifiedSettingKeys() @@ -195,6 +189,8 @@ class SliceInfo(QObject, Extension): model = dict() model["hash"] = node.getMeshData().getHash() bounding_box = node.getBoundingBox() + if not bounding_box: + continue model["bounding_box"] = {"minimum": {"x": bounding_box.minimum.x, "y": bounding_box.minimum.y, "z": bounding_box.minimum.z}, diff --git a/plugins/SliceInfoPlugin/SliceInfoJob.py b/plugins/SliceInfoPlugin/SliceInfoJob.py index a5667c1c13..50d6b560f1 100644 --- a/plugins/SliceInfoPlugin/SliceInfoJob.py +++ b/plugins/SliceInfoPlugin/SliceInfoJob.py @@ -8,6 +8,8 @@ import ssl import urllib.request import urllib.error +import certifi + class SliceInfoJob(Job): def __init__(self, url, data): @@ -20,11 +22,14 @@ class SliceInfoJob(Job): Logger.log("e", "URL or DATA for sending slice info was not set!") return - # Submit data - kwoptions = {"data" : self._data, "timeout" : 5} + # CURA-6698 Create an SSL context and use certifi CA certificates for verification. + context = ssl.SSLContext(protocol = ssl.PROTOCOL_TLSv1_2) + context.load_verify_locations(cafile = certifi.where()) - if Platform.isOSX(): - kwoptions["context"] = ssl._create_unverified_context() + # Submit data + kwoptions = {"data": self._data, + "timeout": 5, + "context": context} Logger.log("i", "Sending anonymous slice info to [%s]...", self._url) @@ -35,4 +40,4 @@ class SliceInfoJob(Job): except urllib.error.HTTPError: Logger.logException("e", "An HTTP error occurred while trying to send slice information") except Exception: # We don't want any exception to cause problems - Logger.logException("e", "An exception occurred while trying to send slice information") \ No newline at end of file + Logger.logException("e", "An exception occurred while trying to send slice information") diff --git a/plugins/SliceInfoPlugin/example_data.html b/plugins/SliceInfoPlugin/example_data.html new file mode 100644 index 0000000000..103eb55a6a --- /dev/null +++ b/plugins/SliceInfoPlugin/example_data.html @@ -0,0 +1,65 @@ + + + Cura Version: 4.0
+ Operating System: Windows 10
+ Language: en_US
+ Machine Type: Ultimaker S5
+ Intent Profile: Default
+ Quality Profile: Fast
+ Using Custom Settings: No + +

Extruder 1:

+
    +
  • Material Type: PLA
  • +
  • Print Core: AA 0.4
  • +
  • Material Used: 1240 mm
  • +
+ +

Extruder 2:

+
    +
  • Material Type: PVA
  • +
  • Print Core: BB 0.4
  • +
  • Material Used: 432 mm
  • +
+ +

Print Settings:

+
    +
  • Layer Height: 0.15
  • +
  • Wall Line Count: 3
  • +
  • Enable Retraction: no
  • +
  • Infill Density: 20%
  • +
  • Infill Pattern: triangles
  • +
  • Gradual Infill Steps: 0
  • +
  • Printing Temperature: 220 °C
  • +
  • Generate Support: yes
  • +
  • Support Extruder: 1
  • +
  • Build Plate Adhesion Type: brim
  • +
  • Enable Prime Tower: yes
  • +
  • Print Sequence: All at once
  • +
  • ...
  • +
+ +

Model Information:

+
    +
  • + Model 1 +
      +
    • Hash: b72789b9b...
    • +
    • Transformation: [transformation matrix]
    • +
    • Bounding Box: [minimum x, y, z; maximum x, y, z]
    • +
    • Is Helper Mesh: no
    • +
    • Helper Mesh Type: support mesh
    • +
    +
  • +
+ +

Print Times:

+
    +
  • Infill: 61200 sec.
  • +
  • Support: 25480 sec.
  • +
  • Travel: 6224 sec.
  • +
  • Walls: 10225 sec.
  • +
  • Total: 103129 sec.
  • +
+ + diff --git a/plugins/SliceInfoPlugin/example_data.json b/plugins/SliceInfoPlugin/example_data.json deleted file mode 100644 index 5fc4175e60..0000000000 --- a/plugins/SliceInfoPlugin/example_data.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "time_stamp": 1523973715.486928, - "schema_version": 0, - "cura_version": "3.3", - "active_mode": "custom", - "machine_settings_changed_by_user": true, - "language": "en_US", - "os": { - "type": "Linux", - "version": "#43~16.04.1-Ubuntu SMP Wed Mar 14 17:48:43 UTC 2018" - }, - "active_machine": { - "definition_id": "ultimaker3", - "manufacturer": "Ultimaker B.V." - }, - "extruders": [ - { - "active": true, - "material": { - "GUID": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", - "type": "PLA", - "brand": "Generic" - }, - "material_used": 0.84, - "variant": "AA 0.4", - "nozzle_size": 0.4, - "extruder_settings": { - "wall_line_count": 3, - "retraction_enable": true, - "infill_sparse_density": 30, - "infill_pattern": "triangles", - "gradual_infill_steps": 0, - "default_material_print_temperature": 200, - "material_print_temperature": 200 - } - }, - { - "active": false, - "material": { - "GUID": "86a89ceb-4159-47f6-ab97-e9953803d70f", - "type": "PVA", - "brand": "Generic" - }, - "material_used": 0.5, - "variant": "BB 0.4", - "nozzle_size": 0.4, - "extruder_settings": { - "wall_line_count": 3, - "retraction_enable": true, - "infill_sparse_density": 20, - "infill_pattern": "triangles", - "gradual_infill_steps": 0, - "default_material_print_temperature": 215, - "material_print_temperature": 220 - } - } - ], - "quality_profile": "fast", - "user_modified_setting_keys": ["layer_height", "wall_line_width", "infill_sparse_density"], - "models": [ - { - "hash": "b72789b9beb5366dff20b1cf501020c3d4d4df7dc2295ecd0fddd0a6436df070", - "bounding_box": { - "minimum": { - "x": -10.0, - "y": 0.0, - "z": -5.0 - }, - "maximum": { - "x": 9.999999046325684, - "y": 40.0, - "z": 5.0 - } - }, - "transformation": { - "data": "[[ 1. 0. 0. 0.] [ 0. 1. 0. 20.] [ 0. 0. 1. 0.] [ 0. 0. 0. 1.]]" - }, - "extruder": 0, - "model_settings": { - "support_enabled": true, - "support_extruder_nr": 1, - "infill_mesh": false, - "cutting_mesh": false, - "support_mesh": false, - "anti_overhang_mesh": false, - "wall_line_count": 3, - "retraction_enable": true, - "infill_sparse_density": 30, - "infill_pattern": "triangles", - "gradual_infill_steps": 0 - } - } - ], - "print_times": { - "travel": 187, - "support": 825, - "infill": 351, - "total": 7234 - }, - "print_settings": { - "layer_height": 0.15, - "support_enabled": true, - "support_extruder_nr": 1, - "adhesion_type": "brim", - "wall_line_count": 3, - "retraction_enable": true, - "prime_tower_enable": true, - "infill_sparse_density": 20, - "infill_pattern": "triangles", - "gradual_infill_steps": 0, - "print_sequence": "all_at_once" - }, - "output_to": "LocalFileOutputDevice" -} diff --git a/plugins/SliceInfoPlugin/plugin.json b/plugins/SliceInfoPlugin/plugin.json index 8ff0e194fb..8975f52591 100644 --- a/plugins/SliceInfoPlugin/plugin.json +++ b/plugins/SliceInfoPlugin/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Submits anonymous slice info. Can be disabled through preferences.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index 797d6dabec..61954f5bca 100644 --- a/plugins/SolidView/SolidView.py +++ b/plugins/SolidView/SolidView.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from UM.View.View import View @@ -7,7 +7,6 @@ from UM.Scene.Selection import Selection from UM.Resources import Resources from UM.Application import Application from UM.View.RenderBatch import RenderBatch -from UM.Settings.Validator import ValidatorState from UM.Math.Color import Color from UM.View.GL.OpenGL import OpenGL @@ -20,9 +19,9 @@ import math class SolidView(View): def __init__(self): super().__init__() - - Application.getInstance().getPreferences().addPreference("view/show_overhang", True) - + application = Application.getInstance() + application.getPreferences().addPreference("view/show_overhang", True) + application.globalContainerStackChanged.connect(self._onGlobalContainerChanged) self._enabled_shader = None self._disabled_shader = None self._non_printing_shader = None @@ -30,6 +29,41 @@ class SolidView(View): self._extruders_model = None self._theme = None + self._support_angle = 90 + + self._global_stack = None + + Application.getInstance().engineCreatedSignal.connect(self._onGlobalContainerChanged) + + def _onGlobalContainerChanged(self) -> None: + if self._global_stack: + try: + self._global_stack.propertyChanged.disconnect(self._onPropertyChanged) + except TypeError: + pass + for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks(): + extruder_stack.propertyChanged.disconnect(self._onPropertyChanged) + + self._global_stack = Application.getInstance().getGlobalContainerStack() + if self._global_stack: + self._global_stack.propertyChanged.connect(self._onPropertyChanged) + for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks(): + extruder_stack.propertyChanged.connect(self._onPropertyChanged) + self._onPropertyChanged("support_angle", "value") # Force an re-evaluation + + def _onPropertyChanged(self, key: str, property_name: str) -> None: + if key != "support_angle" or property_name != "value": + return + # As the rendering is called a *lot* we really, dont want to re-evaluate the property every time. So we store em! + global_container_stack = Application.getInstance().getGlobalContainerStack() + if global_container_stack: + support_extruder_nr = int(global_container_stack.getExtruderPositionValueWithDefault("support_extruder_nr")) + try: + support_angle_stack = global_container_stack.extruderList[support_extruder_nr] + except IndexError: + pass + else: + self._support_angle = support_angle_stack.getProperty("support_angle", "value") def beginRendering(self): scene = self.getController().getScene() @@ -63,15 +97,10 @@ class SolidView(View): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: - support_extruder_nr = global_container_stack.getExtruderPositionValueWithDefault("support_extruder_nr") - support_angle_stack = Application.getInstance().getExtruderManager().getExtruderStack(support_extruder_nr) - - if support_angle_stack is not None and Application.getInstance().getPreferences().getValue("view/show_overhang"): - angle = support_angle_stack.getProperty("support_angle", "value") + if Application.getInstance().getPreferences().getValue("view/show_overhang"): # Make sure the overhang angle is valid before passing it to the shader - # Note: if the overhang angle is set to its default value, it does not need to get validated (validationState = None) - if angle is not None and global_container_stack.getProperty("support_angle", "validationState") in [None, ValidatorState.Valid]: - self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(90 - angle))) + if self._support_angle is not None and self._support_angle >= 0 and self._support_angle <= 90: + self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(90 - self._support_angle))) else: self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(0))) #Overhang angle of 0 causes no area at all to be marked as overhang. else: @@ -113,6 +142,10 @@ class SolidView(View): shade_factor * int(material_color[5:7], 16) / 255, 1.0 ] + + # Color the currently selected face-id. (Disable for now.) + #face = Selection.getHoverFace() + uniforms["hover_face"] = -1 #if not face or node != face[0] else face[1] except ValueError: pass diff --git a/plugins/SolidView/plugin.json b/plugins/SolidView/plugin.json index b3f62221c5..716f2d8d89 100644 --- a/plugins/SolidView/plugin.json +++ b/plugins/SolidView/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides a normal solid mesh view.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/SupportEraser/SupportEraser.py b/plugins/SupportEraser/SupportEraser.py index 0683c48635..35f597dcc5 100644 --- a/plugins/SupportEraser/SupportEraser.py +++ b/plugins/SupportEraser/SupportEraser.py @@ -98,8 +98,10 @@ class SupportEraser(Tool): node.setName("Eraser") node.setSelectable(True) + node.setCalculateBoundingBox(True) mesh = self._createCube(10) node.setMeshData(mesh.build()) + node.calculateBoundingBoxMesh() active_build_plate = CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate node.addDecorator(BuildPlateDecorator(active_build_plate)) diff --git a/plugins/SupportEraser/plugin.json b/plugins/SupportEraser/plugin.json index fa6d6d230e..888c3df50d 100644 --- a/plugins/SupportEraser/plugin.json +++ b/plugins/SupportEraser/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Creates an eraser mesh to block the printing of support in certain places", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/SupportEraser/tool_icon.svg b/plugins/SupportEraser/tool_icon.svg index a0f8a3e3c3..fee69e0715 100644 --- a/plugins/SupportEraser/tool_icon.svg +++ b/plugins/SupportEraser/tool_icon.svg @@ -1,11 +1,14 @@ - - + + + + support_blocker Created with Sketch. - - - - - + + + + + + - + \ No newline at end of file diff --git a/plugins/Toolbox/plugin.json b/plugins/Toolbox/plugin.json index 61dc0429f5..0b967e1645 100644 --- a/plugins/Toolbox/plugin.json +++ b/plugins/Toolbox/plugin.json @@ -2,6 +2,6 @@ "name": "Toolbox", "author": "Ultimaker B.V.", "version": "1.0.1", - "api": "6.0", + "api": "7.0", "description": "Find, manage and install new Cura packages." } diff --git a/plugins/Toolbox/resources/qml/Toolbox.qml b/plugins/Toolbox/resources/qml/Toolbox.qml index d15d98eed7..d6d862b5f6 100644 --- a/plugins/Toolbox/resources/qml/Toolbox.qml +++ b/plugins/Toolbox/resources/qml/Toolbox.qml @@ -1,11 +1,17 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. +// Main window for the Toolbox + import QtQuick 2.2 import QtQuick.Dialogs 1.1 import QtQuick.Window 2.2 import UM 1.1 as UM +import "./pages" +import "./dialogs" +import "./components" + Window { id: base @@ -14,8 +20,8 @@ Window modality: Qt.ApplicationModal flags: Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowCloseButtonHint - width: Math.floor(720 * screenScaleFactor) - height: Math.floor(640 * screenScaleFactor) + width: UM.Theme.getSize("large_popup_dialog").width + height: UM.Theme.getSize("large_popup_dialog").height minimumWidth: width maximumWidth: minimumWidth minimumHeight: height @@ -29,9 +35,16 @@ Window Item { anchors.fill: parent + + WelcomePage + { + visible: toolbox.viewPage === "welcome" + } + ToolboxHeader { id: header + visible: toolbox.viewPage !== "welcome" } Item @@ -48,32 +61,32 @@ Window ToolboxLoadingPage { id: viewLoading - visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "loading" + visible: toolbox.viewCategory !== "installed" && toolbox.viewPage === "loading" } ToolboxErrorPage { id: viewErrored - visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "errored" + visible: toolbox.viewCategory !== "installed" && toolbox.viewPage === "errored" } ToolboxDownloadsPage { id: viewDownloads - visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "overview" + visible: toolbox.viewCategory !== "installed" && toolbox.viewPage === "overview" } ToolboxDetailPage { id: viewDetail - visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "detail" + visible: toolbox.viewCategory !== "installed" && toolbox.viewPage === "detail" } ToolboxAuthorPage { id: viewAuthor - visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "author" + visible: toolbox.viewCategory !== "installed" && toolbox.viewPage === "author" } ToolboxInstalledPage { id: installedPluginList - visible: toolbox.viewCategory == "installed" + visible: toolbox.viewCategory === "installed" } } diff --git a/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml b/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml deleted file mode 100644 index 4d4ae92e73..0000000000 --- a/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Toolbox is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 -import UM 1.1 as UM -import Cura 1.0 as Cura - - -Item -{ - id: base - - property var active: false - property var complete: false - - property var readyLabel: catalog.i18nc("@action:button", "Install") - property var activeLabel: catalog.i18nc("@action:button", "Cancel") - property var completeLabel: catalog.i18nc("@action:button", "Installed") - - signal readyAction() // Action when button is ready and clicked (likely install) - signal activeAction() // Action when button is active and clicked (likely cancel) - signal completeAction() // Action when button is complete and clicked (likely go to installed) - - width: UM.Theme.getSize("toolbox_action_button").width - height: UM.Theme.getSize("toolbox_action_button").height - - Cura.PrimaryButton - { - id: button - width: UM.Theme.getSize("toolbox_action_button").width - height: UM.Theme.getSize("toolbox_action_button").height - fixedWidthMode: true - text: - { - if (complete) - { - return completeLabel - } - else if (active) - { - return activeLabel - } - else - { - return readyLabel - } - } - onClicked: - { - if (complete) - { - completeAction() - } - else if (active) - { - activeAction() - } - else - { - readyAction() - } - } - busy: active - } -} diff --git a/plugins/Toolbox/resources/qml/RatingWidget.qml b/plugins/Toolbox/resources/qml/components/RatingWidget.qml similarity index 100% rename from plugins/Toolbox/resources/qml/RatingWidget.qml rename to plugins/Toolbox/resources/qml/components/RatingWidget.qml diff --git a/plugins/Toolbox/resources/qml/SmallRatingWidget.qml b/plugins/Toolbox/resources/qml/components/SmallRatingWidget.qml similarity index 100% rename from plugins/Toolbox/resources/qml/SmallRatingWidget.qml rename to plugins/Toolbox/resources/qml/components/SmallRatingWidget.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxActionButtonStyle.qml b/plugins/Toolbox/resources/qml/components/ToolboxActionButtonStyle.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxActionButtonStyle.qml rename to plugins/Toolbox/resources/qml/components/ToolboxActionButtonStyle.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml b/plugins/Toolbox/resources/qml/components/ToolboxBackColumn.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxBackColumn.qml rename to plugins/Toolbox/resources/qml/components/ToolboxBackColumn.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml b/plugins/Toolbox/resources/qml/components/ToolboxCompatibilityChart.qml similarity index 73% rename from plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml rename to plugins/Toolbox/resources/qml/components/ToolboxCompatibilityChart.qml index db4e8c628f..ae9241f0ab 100644 --- a/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxCompatibilityChart.qml @@ -1,9 +1,9 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 + import UM 1.1 as UM Item @@ -11,48 +11,17 @@ Item id: base property var packageData - property var technicalDataSheetUrl: - { - var link = undefined - if ("Technical Data Sheet" in packageData.links) - { - // HACK: This is the way the old API (used in 3.6-beta) used to do it. For safety it's still here, - // but it can be removed over time. - link = packageData.links["Technical Data Sheet"] - } - else if ("technicalDataSheet" in packageData.links) - { - link = packageData.links["technicalDataSheet"] - } - return link - } - property var safetyDataSheetUrl: - { - var sds_name = "safetyDataSheet" - return (sds_name in packageData.links) ? packageData.links[sds_name] : undefined - } - property var printingGuidelinesUrl: - { - var pg_name = "printingGuidelines" - return (pg_name in packageData.links) ? packageData.links[pg_name] : undefined - } + property var technicalDataSheetUrl: packageData.links.technicalDataSheet + property var safetyDataSheetUrl: packageData.links.safetyDataSheet + property var printingGuidelinesUrl: packageData.links.printingGuidelines + property var materialWebsiteUrl: packageData.links.website - property var materialWebsiteUrl: - { - var pg_name = "website" - return (pg_name in packageData.links) ? packageData.links[pg_name] : undefined - } - anchors.topMargin: UM.Theme.getSize("default_margin").height - height: visible ? childrenRect.height : 0 + height: childrenRect.height + onVisibleChanged: packageData.type === "material" && (compatibilityItem.visible || dataSheetLinks.visible) - visible: packageData.type == "material" && - (packageData.has_configs || technicalDataSheetUrl !== undefined || - safetyDataSheetUrl !== undefined || printingGuidelinesUrl !== undefined || - materialWebsiteUrl !== undefined) - - Item + Column { - id: combatibilityItem + id: compatibilityItem visible: packageData.has_configs width: parent.width // This is a bit of a hack, but the whole QML is pretty messy right now. This needs a big overhaul. @@ -61,7 +30,6 @@ Item Label { id: heading - anchors.topMargin: UM.Theme.getSize("default_margin").height width: parent.width text: catalog.i18nc("@label", "Compatibility") wrapMode: Text.WordWrap @@ -73,8 +41,6 @@ Item TableView { id: table - anchors.top: heading.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height width: parent.width frameVisible: false @@ -155,32 +121,32 @@ Item TableViewColumn { role: "machine" - title: "Machine" + title: catalog.i18nc("@label:table_header", "Machine") width: Math.floor(table.width * 0.25) delegate: columnTextDelegate } TableViewColumn { role: "print_core" - title: "Print Core" + title: "Print Core" //This term should not be translated. width: Math.floor(table.width * 0.2) } TableViewColumn { role: "build_plate" - title: "Build Plate" + title: catalog.i18nc("@label:table_header", "Build Plate") width: Math.floor(table.width * 0.225) } TableViewColumn { role: "support_material" - title: "Support" + title: catalog.i18nc("@label:table_header", "Support") width: Math.floor(table.width * 0.225) } TableViewColumn { role: "quality" - title: "Quality" + title: catalog.i18nc("@label:table_header", "Quality") width: Math.floor(table.width * 0.1) } } @@ -188,13 +154,14 @@ Item Label { - id: data_sheet_links - anchors.top: combatibilityItem.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height / 2 + id: dataSheetLinks + anchors.top: compatibilityItem.bottom + anchors.topMargin: UM.Theme.getSize("narrow_margin").height visible: base.technicalDataSheetUrl !== undefined || - base.safetyDataSheetUrl !== undefined || base.printingGuidelinesUrl !== undefined || - base.materialWebsiteUrl !== undefined - height: visible ? contentHeight : 0 + base.safetyDataSheetUrl !== undefined || + base.printingGuidelinesUrl !== undefined || + base.materialWebsiteUrl !== undefined + text: { var result = "" diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailList.qml b/plugins/Toolbox/resources/qml/components/ToolboxDetailList.qml similarity index 82% rename from plugins/Toolbox/resources/qml/ToolboxDetailList.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDetailList.qml index 4e44ea7d0b..22c6b6045f 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailList.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDetailList.qml @@ -1,9 +1,8 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick 2.10 +import QtQuick.Controls 2.3 import UM 1.1 as UM Item @@ -11,10 +10,9 @@ Item id: detailList ScrollView { - frameVisible: false + clip: true anchors.fill: detailList - style: UM.Theme.styles.scrollview - flickableItem.flickableDirection: Flickable.VerticalFlick + Column { anchors diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml b/plugins/Toolbox/resources/qml/components/ToolboxDetailTile.qml similarity index 72% rename from plugins/Toolbox/resources/qml/ToolboxDetailTile.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDetailTile.qml index c7bb1f60ac..5badc6b66d 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDetailTile.qml @@ -1,30 +1,30 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls 2.3 + import UM 1.1 as UM Item { id: tile width: detailList.width - UM.Theme.getSize("wide_margin").width - height: normalData.height + compatibilityChart.height + 4 * UM.Theme.getSize("default_margin").height - Item + height: normalData.height + 2 * UM.Theme.getSize("wide_margin").height + Column { id: normalData - height: childrenRect.height + anchors { + top: parent.top left: parent.left right: controls.left - rightMargin: UM.Theme.getSize("default_margin").width * 2 + UM.Theme.getSize("toolbox_loader").width - top: parent.top + rightMargin: UM.Theme.getSize("wide_margin").width } + Label { - id: packageName width: parent.width height: UM.Theme.getSize("toolbox_property_label").height text: model.name @@ -33,9 +33,9 @@ Item font: UM.Theme.getFont("medium_bold") renderType: Text.NativeRendering } + Label { - anchors.top: packageName.bottom width: parent.width text: model.description maximumLineCount: 25 @@ -45,6 +45,12 @@ Item font: UM.Theme.getFont("default") renderType: Text.NativeRendering } + + ToolboxCompatibilityChart + { + width: parent.width + packageData: model + } } ToolboxDetailTileActions @@ -57,20 +63,12 @@ Item packageData: model } - ToolboxCompatibilityChart - { - id: compatibilityChart - anchors.top: normalData.bottom - width: normalData.width - packageData: model - } - Rectangle { color: UM.Theme.getColor("lining") width: tile.width height: UM.Theme.getSize("default_lining").height - anchors.top: compatibilityChart.bottom + anchors.top: normalData.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height + UM.Theme.getSize("wide_margin").height //Normal margin for spacing after chart, wide margin between items. } } diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml b/plugins/Toolbox/resources/qml/components/ToolboxDetailTileActions.qml similarity index 93% rename from plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDetailTileActions.qml index 60fe095537..dfe91edbf6 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDetailTileActions.qml @@ -10,7 +10,7 @@ import Cura 1.1 as Cura Column { property bool installed: toolbox.isInstalled(model.id) - property bool canUpdate: toolbox.canUpdate(model.id) + property bool canUpdate: CuraApplication.getPackageManager().packagesWithUpdate.indexOf(model.id) != -1 property bool loginRequired: model.login_required && !Cura.API.account.isLoggedIn property var packageData @@ -35,11 +35,12 @@ Column // Don't allow installing while another download is running enabled: installed || (!(toolbox.isDownloading && toolbox.activePackage != model) && !loginRequired) opacity: enabled ? 1.0 : 0.5 - visible: !updateButton.visible && !installed// Don't show when the update button is visible + visible: !updateButton.visible && !installed // Don't show when the update button is visible } Cura.SecondaryButton { + id: installedButton visible: installed onClicked: toolbox.viewCategory = "installed" text: catalog.i18nc("@action:button", "Installed") @@ -112,11 +113,9 @@ Column { target: toolbox onInstallChanged: installed = toolbox.isInstalled(model.id) - onMetadataChanged: canUpdate = toolbox.canUpdate(model.id) onFilterChanged: { installed = toolbox.isInstalled(model.id) - canUpdate = toolbox.canUpdate(model.id) } } } diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsGrid.qml similarity index 93% rename from plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDownloadsGrid.qml index a9fcb39b28..6682281a31 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsGrid.qml @@ -2,9 +2,7 @@ // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 -import QtQuick.Layouts 1.3 +import QtQuick.Controls 2.3 import UM 1.1 as UM Column diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsGridTile.qml similarity index 95% rename from plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDownloadsGridTile.qml index a11c6ee963..78cdf1562a 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsGridTile.qml @@ -67,7 +67,7 @@ Item width: UM.Theme.getSize("toolbox_thumbnail_small").width - UM.Theme.getSize("wide_margin").width height: UM.Theme.getSize("toolbox_thumbnail_small").height - UM.Theme.getSize("wide_margin").width fillMode: Image.PreserveAspectFit - source: model.icon_url || "../images/logobot.svg" + source: model.icon_url || "../../images/logobot.svg" mipmap: true } UM.RecolorImage @@ -81,8 +81,8 @@ Item } sourceSize.height: height visible: installedPackages != 0 - color: (installedPackages == packageCount) ? UM.Theme.getColor("primary") : UM.Theme.getColor("border") - source: "../images/installed_check.svg" + color: (installedPackages >= packageCount) ? UM.Theme.getColor("primary") : UM.Theme.getColor("border") + source: "../../images/installed_check.svg" } } Item diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml similarity index 95% rename from plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml index 795622cf82..72dd6f91a2 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml @@ -14,7 +14,7 @@ Rectangle Column { height: childrenRect.height + 2 * padding - spacing: UM.Theme.getSize("toolbox_showcase_spacing").width + spacing: UM.Theme.getSize("default_margin").width width: parent.width padding: UM.Theme.getSize("wide_margin").height Label diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcaseTile.qml similarity index 95% rename from plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcaseTile.qml index 3699746b86..f6e32b2d84 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcaseTile.qml @@ -23,7 +23,7 @@ Rectangle height: UM.Theme.getSize("toolbox_thumbnail_large").height - 4 * UM.Theme.getSize("default_margin").height width: UM.Theme.getSize("toolbox_thumbnail_large").height - 4 * UM.Theme.getSize("default_margin").height fillMode: Image.PreserveAspectFit - source: model.icon_url || "../images/logobot.svg" + source: model.icon_url || "../../images/logobot.svg" mipmap: true anchors { @@ -61,8 +61,8 @@ Rectangle right: parent.right } visible: installedPackages != 0 - color: (installedPackages == packageCount) ? UM.Theme.getColor("primary") : UM.Theme.getColor("border") - source: "../images/installed_check.svg" + color: (installedPackages >= packageCount) ? UM.Theme.getColor("primary") : UM.Theme.getColor("border") + source: "../../images/installed_check.svg" } SmallRatingWidget diff --git a/plugins/Toolbox/resources/qml/ToolboxFooter.qml b/plugins/Toolbox/resources/qml/components/ToolboxFooter.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxFooter.qml rename to plugins/Toolbox/resources/qml/components/ToolboxFooter.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxHeader.qml b/plugins/Toolbox/resources/qml/components/ToolboxHeader.qml similarity index 75% rename from plugins/Toolbox/resources/qml/ToolboxHeader.qml rename to plugins/Toolbox/resources/qml/components/ToolboxHeader.qml index 087402d564..491567eb5f 100644 --- a/plugins/Toolbox/resources/qml/ToolboxHeader.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxHeader.qml @@ -1,9 +1,11 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 +import QtQuick 2.10 import QtQuick.Controls 1.4 -import UM 1.1 as UM + +import UM 1.4 as UM +import Cura 1.0 as Cura Item { @@ -50,6 +52,7 @@ Item } } } + ToolboxTabButton { id: installedTabButton @@ -62,7 +65,25 @@ Item rightMargin: UM.Theme.getSize("default_margin").width } onClicked: toolbox.viewCategory = "installed" + width: UM.Theme.getSize("toolbox_header_tab").width + marketplaceNotificationIcon.width - UM.Theme.getSize("default_margin").width } + + Cura.NotificationIcon + { + id: marketplaceNotificationIcon + + visible: CuraApplication.getPackageManager().packagesWithUpdate.length > 0 + + anchors.right: installedTabButton.right + anchors.verticalCenter: installedTabButton.verticalCenter + + labelText: + { + const itemCount = CuraApplication.getPackageManager().packagesWithUpdate.length + return itemCount > 9 ? "9+" : itemCount + } + } + ToolboxShadow { anchors.top: bar.bottom diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml b/plugins/Toolbox/resources/qml/components/ToolboxInstalledTile.qml similarity index 96% rename from plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml rename to plugins/Toolbox/resources/qml/components/ToolboxInstalledTile.qml index f50c3f3ac6..f85a1056b7 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxInstalledTile.qml @@ -41,14 +41,13 @@ Item Column { id: pluginInfo - topPadding: Math.floor(UM.Theme.getSize("default_margin").height / 2) + topPadding: UM.Theme.getSize("narrow_margin").height property var color: model.type === "plugin" && !isEnabled ? UM.Theme.getColor("lining") : UM.Theme.getColor("text") width: Math.floor(tileRow.width - (authorInfo.width + pluginActions.width + 2 * tileRow.spacing + ((disableButton.visible) ? disableButton.width + tileRow.spacing : 0))) Label { text: model.name width: parent.width - height: Math.floor(UM.Theme.getSize("toolbox_property_label").height) wrapMode: Text.WordWrap font: UM.Theme.getFont("large_bold") color: pluginInfo.color diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml b/plugins/Toolbox/resources/qml/components/ToolboxInstalledTileActions.qml similarity index 96% rename from plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml rename to plugins/Toolbox/resources/qml/components/ToolboxInstalledTileActions.qml index 61af84fbe5..db30b1caf5 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxInstalledTileActions.qml @@ -10,7 +10,7 @@ import Cura 1.1 as Cura Column { - property bool canUpdate: false + property bool canUpdate: CuraApplication.getPackageManager().packagesWithUpdate.indexOf(model.id) != -1 property bool canDowngrade: false property bool loginRequired: model.login_required && !Cura.API.account.isLoggedIn width: UM.Theme.getSize("toolbox_action_button").width @@ -83,7 +83,6 @@ Column target: toolbox onMetadataChanged: { - canUpdate = toolbox.canUpdate(model.id) canDowngrade = toolbox.canDowngrade(model.id) } } diff --git a/plugins/Toolbox/resources/qml/components/ToolboxProgressButton.qml b/plugins/Toolbox/resources/qml/components/ToolboxProgressButton.qml new file mode 100644 index 0000000000..40d6c1af47 --- /dev/null +++ b/plugins/Toolbox/resources/qml/components/ToolboxProgressButton.qml @@ -0,0 +1,60 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.1 as UM +import Cura 1.0 as Cura + + +Cura.PrimaryButton +{ + id: button + + property var active: false + property var complete: false + + property var readyLabel: catalog.i18nc("@action:button", "Install") + property var activeLabel: catalog.i18nc("@action:button", "Cancel") + property var completeLabel: catalog.i18nc("@action:button", "Installed") + + signal readyAction() // Action when button is ready and clicked (likely install) + signal activeAction() // Action when button is active and clicked (likely cancel) + signal completeAction() // Action when button is complete and clicked (likely go to installed) + + width: UM.Theme.getSize("toolbox_action_button").width + height: UM.Theme.getSize("toolbox_action_button").height + fixedWidthMode: true + text: + { + if (complete) + { + return completeLabel + } + else if (active) + { + return activeLabel + } + else + { + return readyLabel + } + } + onClicked: + { + if (complete) + { + completeAction() + } + else if (active) + { + activeAction() + } + else + { + readyAction() + } + } + busy: active +} diff --git a/plugins/Toolbox/resources/qml/ToolboxShadow.qml b/plugins/Toolbox/resources/qml/components/ToolboxShadow.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxShadow.qml rename to plugins/Toolbox/resources/qml/components/ToolboxShadow.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxTabButton.qml b/plugins/Toolbox/resources/qml/components/ToolboxTabButton.qml similarity index 50% rename from plugins/Toolbox/resources/qml/ToolboxTabButton.qml rename to plugins/Toolbox/resources/qml/components/ToolboxTabButton.qml index 5e1aeaa636..7a7d2be48a 100644 --- a/plugins/Toolbox/resources/qml/ToolboxTabButton.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxTabButton.qml @@ -9,14 +9,17 @@ Button { id: control property bool active: false - hoverEnabled: true + + implicitWidth: UM.Theme.getSize("toolbox_header_tab").width + implicitHeight: UM.Theme.getSize("toolbox_header_tab").height background: Item { - implicitWidth: UM.Theme.getSize("toolbox_header_tab").width - implicitHeight: UM.Theme.getSize("toolbox_header_tab").height + id: backgroundItem Rectangle { + id: highlight + visible: control.active color: UM.Theme.getColor("primary") anchors.bottom: parent.bottom @@ -24,28 +27,42 @@ Button height: UM.Theme.getSize("toolbox_header_highlight").height } } + contentItem: Label { id: label text: control.text - color: - { - if(control.hovered) - { - return UM.Theme.getColor("toolbox_header_button_text_hovered"); - } - if(control.active) - { - return UM.Theme.getColor("toolbox_header_button_text_active"); - } - else - { - return UM.Theme.getColor("toolbox_header_button_text_inactive"); - } - } - font: control.enabled ? (control.active ? UM.Theme.getFont("medium_bold") : UM.Theme.getFont("medium")) : UM.Theme.getFont("default_italic") + color: UM.Theme.getColor("toolbox_header_button_text_inactive") + font: UM.Theme.getFont("medium") + verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter + renderType: Text.NativeRendering } + + states: + [ + State + { + name: "disabled" + when: !control.enabled + PropertyChanges + { + target: label + font: UM.Theme.getFont("default_italic") + } + }, + State + { + name: "active" + when: control.active + PropertyChanges + { + target: label + font: UM.Theme.getFont("medium_bold") + color: UM.Theme.getColor("action_button_text") + } + } + ] } \ No newline at end of file diff --git a/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml b/plugins/Toolbox/resources/qml/dialogs/ToolboxConfirmUninstallResetDialog.qml similarity index 94% rename from plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml rename to plugins/Toolbox/resources/qml/dialogs/ToolboxConfirmUninstallResetDialog.qml index e238132680..1b5e4d1d46 100644 --- a/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml +++ b/plugins/Toolbox/resources/qml/dialogs/ToolboxConfirmUninstallResetDialog.qml @@ -14,7 +14,7 @@ import Cura 1.0 as Cura UM.Dialog { - // This dialog asks the user whether he/she wants to open a project file as a project or import models. + // This dialog asks the user to confirm he/she wants to uninstall materials/pprofiles which are currently in use id: base title: catalog.i18nc("@title:window", "Confirm uninstall") + toolbox.pluginToUninstall @@ -26,7 +26,7 @@ UM.Dialog minimumWidth: 450 * screenScaleFactor minimumHeight: 150 * screenScaleFactor - modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal + modality: Qt.WindowModal Column { diff --git a/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml b/plugins/Toolbox/resources/qml/dialogs/ToolboxLicenseDialog.qml similarity index 90% rename from plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml rename to plugins/Toolbox/resources/qml/dialogs/ToolboxLicenseDialog.qml index 40b22c268d..f7edde1fff 100644 --- a/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml +++ b/plugins/Toolbox/resources/qml/dialogs/ToolboxLicenseDialog.qml @@ -30,7 +30,7 @@ UM.Dialog anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right - text: licenseDialog.pluginName + catalog.i18nc("@label", "This plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?") + text: licenseDialog.pluginName + ": " + catalog.i18nc("@label", "This plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?") wrapMode: Text.Wrap renderType: Text.NativeRendering } diff --git a/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxAuthorPage.qml similarity index 94% rename from plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxAuthorPage.qml index b653f1a73b..d1abe48de1 100644 --- a/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml +++ b/plugins/Toolbox/resources/qml/pages/ToolboxAuthorPage.qml @@ -6,6 +6,8 @@ import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM +import "../components" + Item { id: page @@ -31,7 +33,7 @@ Item width: UM.Theme.getSize("toolbox_thumbnail_medium").width height: UM.Theme.getSize("toolbox_thumbnail_medium").height fillMode: Image.PreserveAspectFit - source: details.icon_url || "../images/logobot.svg" + source: details.icon_url || "../../images/logobot.svg" mipmap: true anchors { @@ -65,6 +67,7 @@ Item { id: description text: details.description || "" + font: UM.Theme.getFont("default") anchors { top: title.bottom @@ -108,6 +111,8 @@ Item top: description.bottom left: properties.right leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width topMargin: UM.Theme.getSize("default_margin").height } spacing: Math.floor(UM.Theme.getSize("narrow_margin").height) @@ -122,6 +127,8 @@ Item } return "" } + width: parent.width + elide: Text.ElideRight font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") linkColor: UM.Theme.getColor("text_link") diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxDetailPage.qml similarity index 98% rename from plugins/Toolbox/resources/qml/ToolboxDetailPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxDetailPage.qml index fef2732af9..6d34e23f42 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml +++ b/plugins/Toolbox/resources/qml/pages/ToolboxDetailPage.qml @@ -8,6 +8,8 @@ import UM 1.1 as UM import Cura 1.1 as Cura +import "../components" + Item { id: page @@ -44,7 +46,7 @@ Item { anchors.fill: parent fillMode: Image.PreserveAspectFit - source: details === null ? "" : (details.icon_url || "../images/logobot.svg") + source: details === null ? "" : (details.icon_url || "../../images/logobot.svg") mipmap: true } } @@ -89,6 +91,7 @@ Item Label { text: catalog.i18nc("@label", "Your rating") + ":" + visible: details.type == "plugin" font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") renderType: Text.NativeRendering diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxDownloadsPage.qml similarity index 53% rename from plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxDownloadsPage.qml index 3e0dda4f4a..9be8cbe2b9 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml +++ b/plugins/Toolbox/resources/qml/pages/ToolboxDownloadsPage.qml @@ -1,25 +1,24 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick 2.10 +import QtQuick.Controls 2.3 import UM 1.1 as UM +import "../components" + ScrollView { - frameVisible: false + clip: true width: parent.width height: parent.height - style: UM.Theme.styles.scrollview - - flickableItem.flickableDirection: Flickable.VerticalFlick + contentHeight: mainColumn.height Column { + id: mainColumn width: base.width spacing: UM.Theme.getSize("default_margin").height - height: childrenRect.height ToolboxDownloadsShowcase { @@ -31,14 +30,14 @@ ScrollView { id: allPlugins width: parent.width - heading: toolbox.viewCategory == "material" ? catalog.i18nc("@label", "Community Contributions") : catalog.i18nc("@label", "Community Plugins") - model: toolbox.viewCategory == "material" ? toolbox.materialsAvailableModel : toolbox.pluginsAvailableModel + heading: toolbox.viewCategory === "material" ? catalog.i18nc("@label", "Community Contributions") : catalog.i18nc("@label", "Community Plugins") + model: toolbox.viewCategory === "material" ? toolbox.materialsAvailableModel : toolbox.pluginsAvailableModel } ToolboxDownloadsGrid { id: genericMaterials - visible: toolbox.viewCategory == "material" + visible: toolbox.viewCategory === "material" width: parent.width heading: catalog.i18nc("@label", "Generic Materials") model: toolbox.materialsGenericModel diff --git a/plugins/Toolbox/resources/qml/ToolboxErrorPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxErrorPage.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxErrorPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxErrorPage.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml similarity index 70% rename from plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml index a85a69cbac..99590c712c 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml +++ b/plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml @@ -1,49 +1,52 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 -import QtQuick.Dialogs 1.1 -import QtQuick.Window 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls 2.3 import UM 1.1 as UM +import "../components" + ScrollView { id: page - frameVisible: false + clip: true width: parent.width height: parent.height - style: UM.Theme.styles.scrollview - flickableItem.flickableDirection: Flickable.VerticalFlick Column { + width: page.width spacing: UM.Theme.getSize("default_margin").height + padding: UM.Theme.getSize("wide_margin").width visible: toolbox.pluginsInstalledModel.items.length > 0 - height: childrenRect.height + 4 * UM.Theme.getSize("default_margin").height - - anchors - { - right: parent.right - left: parent.left - margins: UM.Theme.getSize("default_margin").width - top: parent.top - } + height: childrenRect.height + 2 * UM.Theme.getSize("wide_margin").height Label { - width: page.width + anchors + { + left: parent.left + right: parent.right + margins: parent.padding + } text: catalog.i18nc("@title:tab", "Plugins") color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("large") renderType: Text.NativeRendering } + Rectangle { + anchors + { + left: parent.left + right: parent.right + margins: parent.padding + } + id: installedPlugins color: "transparent" - width: parent.width height: childrenRect.height + UM.Theme.getSize("default_margin").width border.color: UM.Theme.getColor("lining") border.width: UM.Theme.getSize("default_lining").width @@ -64,8 +67,15 @@ ScrollView } } } + Label { + anchors + { + left: parent.left + right: parent.right + margins: parent.padding + } text: catalog.i18nc("@title:tab", "Materials") color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("medium") @@ -74,8 +84,14 @@ ScrollView Rectangle { + anchors + { + left: parent.left + right: parent.right + margins: parent.padding + } + id: installedMaterials color: "transparent" - width: parent.width height: childrenRect.height + UM.Theme.getSize("default_margin").width border.color: UM.Theme.getColor("lining") border.width: UM.Theme.getSize("default_lining").width diff --git a/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxLoadingPage.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxLoadingPage.qml diff --git a/plugins/Toolbox/resources/qml/pages/WelcomePage.qml b/plugins/Toolbox/resources/qml/pages/WelcomePage.qml new file mode 100644 index 0000000000..cbfdf8f402 --- /dev/null +++ b/plugins/Toolbox/resources/qml/pages/WelcomePage.qml @@ -0,0 +1,53 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtQuick.Window 2.2 + +import UM 1.3 as UM +import Cura 1.1 as Cura + +Column +{ + id: welcomePage + spacing: UM.Theme.getSize("wide_margin").height + width: parent.width + height: childrenRect.height + anchors.centerIn: parent + + Image + { + id: profileImage + fillMode: Image.PreserveAspectFit + source: "../../images/logobot.svg" + anchors.horizontalCenter: parent.horizontalCenter + width: Math.round(parent.width / 4) + } + + Label + { + id: welcomeTextLabel + text: catalog.i18nc("@description", "Get plugins and materials verified by Ultimaker") + width: Math.round(parent.width / 2) + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + anchors.horizontalCenter: parent.horizontalCenter + wrapMode: Label.WordWrap + renderType: Text.NativeRendering + } + + Cura.PrimaryButton + { + id: loginButton + width: UM.Theme.getSize("account_button").width + height: UM.Theme.getSize("account_button").height + anchors.horizontalCenter: parent.horizontalCenter + text: catalog.i18nc("@button", "Sign in") + onClicked: Cura.API.account.login() + fixedWidthMode: true + } +} + diff --git a/plugins/Toolbox/src/AuthorsModel.py b/plugins/Toolbox/src/AuthorsModel.py index 877f8256ee..7bfc58df04 100644 --- a/plugins/Toolbox/src/AuthorsModel.py +++ b/plugins/Toolbox/src/AuthorsModel.py @@ -53,7 +53,7 @@ class AuthorsModel(ListModel): # Filter on all the key-word arguments. for key, value in self._filter.items(): - if key is "package_types": + if key == "package_types": key_filter = lambda item, value = value: value in item["package_types"] # type: ignore elif "*" in value: key_filter = lambda item, key = key, value = value: self._matchRegExp(item, key, value) # type: ignore diff --git a/plugins/Toolbox/src/ConfigsModel.py b/plugins/Toolbox/src/ConfigsModel.py index dd54d53d93..9ba65caaa4 100644 --- a/plugins/Toolbox/src/ConfigsModel.py +++ b/plugins/Toolbox/src/ConfigsModel.py @@ -1,11 +1,10 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import re -from typing import Dict from PyQt5.QtCore import Qt, pyqtProperty from UM.Qt.ListModel import ListModel + ## Model that holds supported configurations (for material/quality packages). class ConfigsModel(ListModel): def __init__(self, parent = None): diff --git a/plugins/Toolbox/src/PackagesModel.py b/plugins/Toolbox/src/PackagesModel.py index d94fdf6bb7..1cf87790bc 100644 --- a/plugins/Toolbox/src/PackagesModel.py +++ b/plugins/Toolbox/src/PackagesModel.py @@ -112,7 +112,7 @@ class PackagesModel(ListModel): # Filter on all the key-word arguments. for key, value in self._filter.items(): - if key is "tags": + if key == "tags": key_filter = lambda item, v = value: v in item["tags"] elif "*" in value: key_filter = lambda candidate, k = key, v = value: self._matchRegExp(candidate, k, v) diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index 7d8d359831..27197275b8 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Toolbox is released under the terms of the LGPLv3 or higher. import json @@ -19,6 +19,7 @@ from UM.Version import Version from cura import ApplicationMetadata from cura import UltimakerCloudAuthentication from cura.CuraApplication import CuraApplication +from cura.Machines.ContainerTree import ContainerTree from .AuthorsModel import AuthorsModel from .PackagesModel import PackagesModel @@ -47,10 +48,9 @@ class Toolbox(QObject, Extension): self._download_progress = 0 # type: float self._is_downloading = False # type: bool self._network_manager = None # type: Optional[QNetworkAccessManager] - self._request_headers = [] # type: List[Tuple[bytes, bytes]] + self._request_headers = [] # type: List[Tuple[bytes, bytes]] self._updateRequestHeader() - self._request_urls = {} # type: Dict[str, QUrl] self._to_update = [] # type: List[str] # Package_ids that are waiting to be updated self._old_plugin_ids = set() # type: Set[str] @@ -59,13 +59,15 @@ class Toolbox(QObject, Extension): # The responses as given by the server parsed to a list. self._server_response_data = { "authors": [], - "packages": [] + "packages": [], + "updates": [], } # type: Dict[str, List[Any]] # Models: self._models = { "authors": AuthorsModel(self), "packages": PackagesModel(self), + "updates": PackagesModel(self), } # type: Dict[str, Union[AuthorsModel, PackagesModel]] self._plugins_showcase_model = PackagesModel(self) @@ -86,7 +88,7 @@ class Toolbox(QObject, Extension): # View page defines which type of page layout to use. For example, # possible values include "overview", "detail" or "author". - self._view_page = "loading" # type: str + self._view_page = "welcome" # type: str # Active package refers to which package is currently being downloaded, # installed, or otherwise modified. @@ -105,7 +107,7 @@ class Toolbox(QObject, Extension): self._restart_dialog_message = "" # type: str self._application.initializationFinished.connect(self._onAppInitialized) - self._application.getCuraAPI().account.loginStateChanged.connect(self._updateRequestHeader) + self._application.getCuraAPI().account.accessTokenChanged.connect(self._updateRequestHeader) # Signals: # -------------------------------------------------------------------------- @@ -125,6 +127,16 @@ class Toolbox(QObject, Extension): showLicenseDialog = pyqtSignal() uninstallVariablesChanged = pyqtSignal() + ## Go back to the start state (welcome screen or loading if no login required) + def _restart(self): + self._updateRequestHeader() + # For an Essentials build, login is mandatory + if not self._application.getCuraAPI().account.isLoggedIn and ApplicationMetadata.IsEnterpriseVersion: + self.setViewPage("welcome") + else: + self.setViewPage("loading") + self._fetchPackageData() + def _updateRequestHeader(self): self._request_headers = [ (b"User-Agent", @@ -185,16 +197,27 @@ class Toolbox(QObject, Extension): cloud_api_version = self._cloud_api_version, sdk_version = self._sdk_version ) + + # We need to construct a query like installed_packages=ID:VERSION&installed_packages=ID:VERSION, etc. + installed_package_ids_with_versions = [":".join(items) for items in + self._package_manager.getAllInstalledPackageIdsAndVersions()] + installed_packages_query = "&installed_packages=".join(installed_package_ids_with_versions) + self._request_urls = { "authors": QUrl("{base_url}/authors".format(base_url = self._api_url)), - "packages": QUrl("{base_url}/packages".format(base_url = self._api_url)) + "packages": QUrl("{base_url}/packages".format(base_url = self._api_url)), + "updates": QUrl("{base_url}/packages/package-updates?installed_packages={query}".format( + base_url = self._api_url, query = installed_packages_query)) } - @pyqtSlot() - def browsePackages(self) -> None: - # Create the network manager: - # This was formerly its own function but really had no reason to be as - # it was never called more than once ever. + self._application.getCuraAPI().account.loginStateChanged.connect(self._restart) + + # On boot we check which packages have updates. + if CuraApplication.getInstance().getPreferences().getValue("info/automatic_update_check") and len(installed_package_ids_with_versions) > 0: + # Request the latest and greatest! + self._fetchPackageUpdates() + + def _prepareNetworkManager(self): if self._network_manager is not None: self._network_manager.finished.disconnect(self._onRequestFinished) self._network_manager.networkAccessibleChanged.disconnect(self._onNetworkAccessibleChanged) @@ -202,13 +225,22 @@ class Toolbox(QObject, Extension): self._network_manager.finished.connect(self._onRequestFinished) self._network_manager.networkAccessibleChanged.connect(self._onNetworkAccessibleChanged) + def _fetchPackageUpdates(self): + self._prepareNetworkManager() + self._makeRequestByType("updates") + + def _fetchPackageData(self): + self._prepareNetworkManager() # Make remote requests: self._makeRequestByType("packages") self._makeRequestByType("authors") - # Gather installed packages: self._updateInstalledModels() + # Displays the toolbox + @pyqtSlot() + def launch(self) -> None: + if not self._dialog: self._dialog = self._createDialog("Toolbox.qml") @@ -216,6 +248,8 @@ class Toolbox(QObject, Extension): Logger.log("e", "Unexpected error trying to create the 'Marketplace' dialog.") return + self._restart() + self._dialog.show() # Apply enabled/disabled state to installed plugins @@ -227,7 +261,7 @@ class Toolbox(QObject, Extension): if not plugin_path: return None path = os.path.join(plugin_path, "resources", "qml", qml_name) - + dialog = self._application.createQmlComponent(path, {"toolbox": self}) if not dialog: raise Exception("Failed to create Marketplace dialog") @@ -272,7 +306,7 @@ class Toolbox(QObject, Extension): for plugin_id in old_plugin_ids: # Neither the installed packages nor the packages that are scheduled to remove are old plugins if plugin_id not in installed_package_ids and plugin_id not in scheduled_to_remove_package_ids: - Logger.log("i", "Found a plugin that was installed with the old plugin browser: %s", plugin_id) + Logger.log("d", "Found a plugin that was installed with the old plugin browser: %s", plugin_id) old_metadata = self._plugin_registry.getMetaData(plugin_id) new_metadata = self._convertPluginMetadata(old_metadata) @@ -321,7 +355,7 @@ class Toolbox(QObject, Extension): self._package_used_qualities = package_used_qualities # Ask change to default material / profile if self._confirm_reset_dialog is None: - self._confirm_reset_dialog = self._createDialog("ToolboxConfirmUninstallResetDialog.qml") + self._confirm_reset_dialog = self._createDialog("dialogs/ToolboxConfirmUninstallResetDialog.qml") self.uninstallVariablesChanged.emit() if self._confirm_reset_dialog is None: Logger.log("e", "ToolboxConfirmUninstallResetDialog should have been initialized, but it is not. Not showing dialog and not uninstalling package.") @@ -353,15 +387,22 @@ class Toolbox(QObject, Extension): @pyqtSlot() def resetMaterialsQualitiesAndUninstall(self) -> None: application = CuraApplication.getInstance() - material_manager = application.getMaterialManager() - quality_manager = application.getQualityManager() machine_manager = application.getMachineManager() + container_tree = ContainerTree.getInstance() for global_stack, extruder_nr, container_id in self._package_used_materials: - default_material_node = material_manager.getDefaultMaterial(global_stack, extruder_nr, global_stack.extruders[extruder_nr].variant.getName()) + extruder = global_stack.extruderList[int(extruder_nr)] + approximate_diameter = extruder.getApproximateMaterialDiameter() + variant_node = container_tree.machines[global_stack.definition.getId()].variants[extruder.variant.getName()] + default_material_node = variant_node.preferredMaterial(approximate_diameter) machine_manager.setMaterial(extruder_nr, default_material_node, global_stack = global_stack) for global_stack, extruder_nr, container_id in self._package_used_qualities: - default_quality_group = quality_manager.getDefaultQualityType(global_stack) + variant_names = [extruder.variant.getName() for extruder in global_stack.extruderList] + material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruderList] + extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruderList] + definition_id = global_stack.definition.getId() + machine_node = container_tree.machines[definition_id] + default_quality_group = machine_node.getQualityGroups(variant_names, material_bases, extruder_enabled)[machine_node.preferred_quality_type] machine_manager.setQualityGroup(default_quality_group, global_stack = global_stack) if self._package_id_to_uninstall is not None: @@ -455,36 +496,6 @@ class Toolbox(QObject, Extension): break return remote_package - # Checks - # -------------------------------------------------------------------------- - @pyqtSlot(str, result = bool) - def canUpdate(self, package_id: str) -> bool: - local_package = self._package_manager.getInstalledPackageInfo(package_id) - if local_package is None: - local_package = self.getOldPluginPackageMetadata(package_id) - if local_package is None: - return False - - remote_package = self.getRemotePackage(package_id) - if remote_package is None: - return False - - local_version = Version(local_package["package_version"]) - remote_version = Version(remote_package["package_version"]) - can_upgrade = False - if remote_version > local_version: - can_upgrade = True - # A package with the same version can be built to have different SDK versions. So, for a package with the same - # version, we also need to check if the current one has a lower SDK version. If so, this package should also - # be upgradable. - elif remote_version == local_version: - # First read sdk_version_semver. If that doesn't exist, read just sdk_version (old version system). - remote_sdk_version = Version(remote_package.get("sdk_version_semver", remote_package.get("sdk_version", 0))) - local_sdk_version = Version(local_package.get("sdk_version_semver", local_package.get("sdk_version", 0))) - can_upgrade = local_sdk_version < remote_sdk_version - - return can_upgrade - @pyqtSlot(str, result = bool) def canDowngrade(self, package_id: str) -> bool: # If the currently installed version is higher than the bundled version (if present), the we can downgrade @@ -550,7 +561,7 @@ class Toolbox(QObject, Extension): # Make API Calls # -------------------------------------------------------------------------- def _makeRequestByType(self, request_type: str) -> None: - Logger.log("i", "Requesting %s metadata from server.", request_type) + Logger.log("d", "Requesting %s metadata from server.", request_type) request = QNetworkRequest(self._request_urls[request_type]) for header_name, header_value in self._request_headers: request.setRawHeader(header_name, header_value) @@ -584,9 +595,15 @@ class Toolbox(QObject, Extension): if self._download_reply: try: self._download_reply.downloadProgress.disconnect(self._onDownloadProgress) - except TypeError: # Raised when the method is not connected to the signal yet. + except (TypeError, RuntimeError): # Raised when the method is not connected to the signal yet. pass # Don't need to disconnect. - self._download_reply.abort() + try: + self._download_reply.abort() + except RuntimeError: + # In some cases the garbage collector is a bit to agressive, which causes the dowload_reply + # to be deleted (especially if the machine has been put to sleep). As we don't know what exactly causes + # this (The issue probably lives in the bowels of (py)Qt somewhere), we can only catch and ignore it. + pass self._download_reply = None self._download_request = None self.setDownloadProgress(0) @@ -628,17 +645,22 @@ class Toolbox(QObject, Extension): if not self._models[response_type]: Logger.log("e", "Could not find the %s model.", response_type) break - + self._server_response_data[response_type] = json_data["data"] self._models[response_type].setMetadata(self._server_response_data[response_type]) - if response_type is "packages": + if response_type == "packages": self._models[response_type].setFilter({"type": "plugin"}) self.reBuildMaterialsModels() self.reBuildPluginsModels() - elif response_type is "authors": + self._notifyPackageManager() + elif response_type == "authors": self._models[response_type].setFilter({"package_types": "material"}) self._models[response_type].setFilter({"tags": "generic"}) + elif response_type == "updates": + # Tell the package manager that there's a new set of updates available. + packages = set([pkg["package_id"] for pkg in self._server_response_data[response_type]]) + self._package_manager.setPackagesWithUpdate(packages) self.metadataChanged.emit() @@ -656,6 +678,11 @@ class Toolbox(QObject, Extension): # Ignore any operation that is not a get operation pass + # This function goes through all known remote versions of a package and notifies the package manager of this change + def _notifyPackageManager(self): + for package in self._server_response_data["packages"]: + self._package_manager.addAvailablePackageVersion(package["package_id"], Version(package["package_version"])) + def _onDownloadProgress(self, bytes_sent: int, bytes_total: int) -> None: if bytes_total > 0: new_progress = bytes_sent / bytes_total * 100 @@ -664,11 +691,15 @@ class Toolbox(QObject, Extension): self.setIsDownloading(False) self._download_reply = cast(QNetworkReply, self._download_reply) self._download_reply.downloadProgress.disconnect(self._onDownloadProgress) - + # Check if the download was sucessfull if self._download_reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: - Logger.log("w", "Failed to download package. The following error was returned: %s", json.loads(bytes(self._download_reply.readAll()).decode("utf-8"))) - return + try: + Logger.log("w", "Failed to download package. The following error was returned: %s", json.loads(bytes(self._download_reply.readAll()).decode("utf-8"))) + except json.decoder.JSONDecodeError: + Logger.logException("w", "Failed to download package and failed to parse a response from it") + finally: + return # Must not delete the temporary file on Windows self._temp_plugin_file = tempfile.NamedTemporaryFile(mode = "w+b", suffix = ".curapackage", delete = False) file_path = self._temp_plugin_file.name diff --git a/plugins/TrimeshReader/TrimeshReader.py b/plugins/TrimeshReader/TrimeshReader.py new file mode 100644 index 0000000000..91f8423579 --- /dev/null +++ b/plugins/TrimeshReader/TrimeshReader.py @@ -0,0 +1,161 @@ +# Copyright (c) 2019 Ultimaker B.V., fieldOfView +# Cura is released under the terms of the LGPLv3 or higher. + +# The _toMeshData function is taken from the AMFReader class which was built by fieldOfView. + +from typing import Any, List, Union, TYPE_CHECKING +import numpy # To create the mesh data. +import os.path # To create the mesh name for the resulting mesh. +import trimesh # To load the files into a Trimesh. + +from UM.Mesh.MeshData import MeshData, calculateNormalsFromIndexedVertices # To construct meshes from the Trimesh data. +from UM.Mesh.MeshReader import MeshReader # The plug-in type we're extending. +from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType # To add file types that we can open. +from UM.Scene.GroupDecorator import GroupDecorator # Added to the parent node if we load multiple nodes at once. + +from cura.CuraApplication import CuraApplication +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator # Added to the resulting scene node. +from cura.Scene.ConvexHullDecorator import ConvexHullDecorator # Added to group nodes if we load multiple nodes at once. +from cura.Scene.CuraSceneNode import CuraSceneNode # To create a node in the scene after reading the file. +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator # Added to the resulting scene node. + +if TYPE_CHECKING: + from UM.Scene.SceneNode import SceneNode + +## Class that leverages Trimesh to import files. +class TrimeshReader(MeshReader): + def __init__(self) -> None: + super().__init__() + + self._supported_extensions = [".ctm", ".dae", ".gltf", ".glb", ".ply", ".zae"] + MimeTypeDatabase.addMimeType( + MimeType( + name = "application/x-ctm", + comment = "Open Compressed Triangle Mesh", + suffixes = ["ctm"] + ) + ) + MimeTypeDatabase.addMimeType( + MimeType( + name = "model/vnd.collada+xml", + comment = "COLLADA Digital Asset Exchange", + suffixes = ["dae"] + ) + ) + MimeTypeDatabase.addMimeType( + MimeType( + name = "model/gltf-binary", + comment = "glTF Binary", + suffixes = ["glb"] + ) + ) + MimeTypeDatabase.addMimeType( + MimeType( + name = "model/gltf+json", + comment = "glTF Embedded JSON", + suffixes = ["gltf"] + ) + ) + # Trimesh seems to have a bug when reading .off files. + #MimeTypeDatabase.addMimeType( + # MimeType( + # name = "application/x-off", + # comment = "Geomview Object File Format", + # suffixes = ["off"] + # ) + #) + MimeTypeDatabase.addMimeType( + MimeType( + name = "application/x-ply", # Wikipedia lists the MIME type as "text/plain" but that won't do as it's not unique to PLY files. + comment = "Stanford Triangle Format", + suffixes = ["ply"] + ) + ) + MimeTypeDatabase.addMimeType( + MimeType( + name = "model/vnd.collada+xml+zip", + comment = "Compressed COLLADA Digital Asset Exchange", + suffixes = ["zae"] + ) + ) + + ## Reads a file using Trimesh. + # \param file_name The file path. This is assumed to be one of the file + # types that Trimesh can read. It will not be checked again. + # \return A scene node that contains the file's contents. + def _read(self, file_name: str) -> Union["SceneNode", List["SceneNode"]]: + # CURA-6739 + # GLTF files are essentially JSON files. If you directly give a file name to trimesh.load(), it will + # try to figure out the format, but for GLTF, it loads it as a binary file with flags "rb", and the json.load() + # doesn't like it. For some reason, this seems to happen with 3.5.7, but not 3.7.1. Below is a workaround to + # pass a file object that has been opened with "r" instead "rb" to load a GLTF file. + if file_name.lower().endswith(".gltf"): + mesh_or_scene = trimesh.load(open(file_name, "r", encoding = "utf-8"), file_type = "gltf") + else: + mesh_or_scene = trimesh.load(file_name) + + meshes = [] # type: List[Union[trimesh.Trimesh, trimesh.Scene, Any]] + if isinstance(mesh_or_scene, trimesh.Trimesh): + meshes = [mesh_or_scene] + elif isinstance(mesh_or_scene, trimesh.Scene): + meshes = [mesh for mesh in mesh_or_scene.geometry.values()] + + active_build_plate = CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate + nodes = [] # type: List[SceneNode] + for mesh in meshes: + if not isinstance(mesh, trimesh.Trimesh): # Trimesh can also receive point clouds, 2D paths, 3D paths or metadata. Skip those. + continue + mesh.merge_vertices() + mesh.remove_unreferenced_vertices() + mesh.fix_normals() + mesh_data = self._toMeshData(mesh) + + file_base_name = os.path.basename(file_name) + new_node = CuraSceneNode() + new_node.setMeshData(mesh_data) + new_node.setSelectable(True) + new_node.setName(file_base_name if len(meshes) == 1 else "{file_base_name} {counter}".format(file_base_name = file_base_name, counter = str(len(nodes) + 1))) + new_node.addDecorator(BuildPlateDecorator(active_build_plate)) + new_node.addDecorator(SliceableObjectDecorator()) + nodes.append(new_node) + + if len(nodes) == 1: + return nodes[0] + # Add all nodes to a group so they stay together. + group_node = CuraSceneNode() + group_node.addDecorator(GroupDecorator()) + group_node.addDecorator(ConvexHullDecorator()) + group_node.addDecorator(BuildPlateDecorator(active_build_plate)) + for node in nodes: + node.setParent(group_node) + return group_node + + ## Converts a Trimesh to Uranium's MeshData. + # \param tri_node A Trimesh containing the contents of a file that was + # just read. + # \return Mesh data from the Trimesh in a way that Uranium can understand + # it. + def _toMeshData(self, tri_node: trimesh.base.Trimesh) -> MeshData: + tri_faces = tri_node.faces + tri_vertices = tri_node.vertices + + indices = [] + vertices = [] + + index_count = 0 + face_count = 0 + for tri_face in tri_faces: + face = [] + for tri_index in tri_face: + vertices.append(tri_vertices[tri_index]) + face.append(index_count) + index_count += 1 + indices.append(face) + face_count += 1 + + vertices = numpy.asarray(vertices, dtype = numpy.float32) + indices = numpy.asarray(indices, dtype = numpy.int32) + normals = calculateNormalsFromIndexedVertices(vertices, indices, face_count) + + mesh_data = MeshData(vertices = vertices, indices = indices, normals = normals) + return mesh_data \ No newline at end of file diff --git a/plugins/TrimeshReader/__init__.py b/plugins/TrimeshReader/__init__.py new file mode 100644 index 0000000000..8a267a7bc0 --- /dev/null +++ b/plugins/TrimeshReader/__init__.py @@ -0,0 +1,46 @@ +# Copyright (c) 2019 Ultimaker +# Cura is released under the terms of the LGPLv3 or higher. + +from . import TrimeshReader + +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("uranium") + + +def getMetaData(): + return { + "mesh_reader": [ + { + "extension": "ctm", + "description": i18n_catalog.i18nc("@item:inlistbox 'Open' is part of the name of this file format.", "Open Compressed Triangle Mesh") + }, + { + "extension": "dae", + "description": i18n_catalog.i18nc("@item:inlistbox", "COLLADA Digital Asset Exchange") + }, + { + "extension": "glb", + "description": i18n_catalog.i18nc("@item:inlistbox", "glTF Binary") + }, + { + "extension": "gltf", + "description": i18n_catalog.i18nc("@item:inlistbox", "glTF Embedded JSON") + }, + # Trimesh seems to have a bug when reading OFF files. + #{ + # "extension": "off", + # "description": i18n_catalog.i18nc("@item:inlistbox", "Geomview Object File Format") + #}, + { + "extension": "ply", + "description": i18n_catalog.i18nc("@item:inlistbox", "Stanford Triangle Format") + }, + { + "extension": "zae", + "description": i18n_catalog.i18nc("@item:inlistbox", "Compressed COLLADA Digital Asset Exchange") + } + ] + } + +def register(app): + return {"mesh_reader": TrimeshReader.TrimeshReader()} diff --git a/plugins/TrimeshReader/plugin.json b/plugins/TrimeshReader/plugin.json new file mode 100644 index 0000000000..dbe937b01d --- /dev/null +++ b/plugins/TrimeshReader/plugin.json @@ -0,0 +1,7 @@ +{ + "name": "Trimesh Reader", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Provides support for reading model files.", + "api": "7.0.0" +} diff --git a/plugins/UFPReader/UFPReader.py b/plugins/UFPReader/UFPReader.py new file mode 100644 index 0000000000..71061f938b --- /dev/null +++ b/plugins/UFPReader/UFPReader.py @@ -0,0 +1,42 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import TYPE_CHECKING + +from Charon.VirtualFile import VirtualFile + +from UM.Mesh.MeshReader import MeshReader +from UM.MimeTypeDatabase import MimeType, MimeTypeDatabase +from UM.PluginRegistry import PluginRegistry + +if TYPE_CHECKING: + from cura.Scene.CuraSceneNode import CuraSceneNode + + +class UFPReader(MeshReader): + + def __init__(self) -> None: + super().__init__() + + MimeTypeDatabase.addMimeType( + MimeType( + name = "application/x-ufp", + comment = "Ultimaker Format Package", + suffixes = ["ufp"] + ) + ) + self._supported_extensions = [".ufp"] + + def _read(self, file_name: str) -> "CuraSceneNode": + # Open the file + archive = VirtualFile() + archive.open(file_name) + # Get the gcode data from the file + gcode_data = archive.getData("/3D/model.gcode") + # Convert the bytes stream to string + gcode_stream = gcode_data["/3D/model.gcode"].decode("utf-8") + + # Open the GCodeReader to parse the data + gcode_reader = PluginRegistry.getInstance().getPluginObject("GCodeReader") # type: ignore + gcode_reader.preReadFromStream(gcode_stream) # type: ignore + return gcode_reader.readFromStream(gcode_stream, file_name) # type: ignore diff --git a/plugins/UFPReader/__init__.py b/plugins/UFPReader/__init__.py new file mode 100644 index 0000000000..cfea4b9882 --- /dev/null +++ b/plugins/UFPReader/__init__.py @@ -0,0 +1,34 @@ +#Copyright (c) 2019 Ultimaker B.V. +#Cura is released under the terms of the LGPLv3 or higher. + +import sys + +from UM.Logger import Logger +try: + from . import UFPReader +except ImportError: + Logger.log("w", "Could not import UFPReader; libCharon may be missing") + +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("cura") + + +def getMetaData(): + return { + "mesh_reader": [ + { + "mime_type": "application/x-ufp", + "extension": "ufp", + "description": i18n_catalog.i18nc("@item:inlistbox", "Ultimaker Format Package") + } + ] + } + + +def register(app): + if "UFPReader.UFPReader" not in sys.modules: + return {} + + app.addNonSliceableExtension(".ufp") + return {"mesh_reader": UFPReader.UFPReader()} + diff --git a/plugins/UFPReader/plugin.json b/plugins/UFPReader/plugin.json new file mode 100644 index 0000000000..a88a9c3ab0 --- /dev/null +++ b/plugins/UFPReader/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "UFP Reader", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Provides support for reading Ultimaker Format Packages.", + "supported_sdk_versions": ["7.0.0"], + "i18n-catalog": "cura" +} \ No newline at end of file diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py index c0db104c82..e085adfd47 100644 --- a/plugins/UFPWriter/UFPWriter.py +++ b/plugins/UFPWriter/UFPWriter.py @@ -1,4 +1,4 @@ -#Copyright (c) 2018 Ultimaker B.V. +#Copyright (c) 2019 Ultimaker B.V. #Cura is released under the terms of the LGPLv3 or higher. from typing import cast @@ -7,13 +7,13 @@ from Charon.VirtualFile import VirtualFile #To open UFP files. from Charon.OpenMode import OpenMode #To indicate that we want to write to UFP files. from io import StringIO #For converting g-code to bytes. -from UM.Application import Application from UM.Logger import Logger from UM.Mesh.MeshWriter import MeshWriter #The writer we need to implement. from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType from UM.PluginRegistry import PluginRegistry #To get the g-code writer. from PyQt5.QtCore import QBuffer +from cura.CuraApplication import CuraApplication from cura.Snapshot import Snapshot from cura.Utils.Threading import call_on_qt_thread @@ -28,7 +28,7 @@ class UFPWriter(MeshWriter): MimeTypeDatabase.addMimeType( MimeType( name = "application/x-ufp", - comment = "Cura UFP File", + comment = "Ultimaker Format Package", suffixes = ["ufp"] ) ) @@ -38,7 +38,11 @@ class UFPWriter(MeshWriter): def _createSnapshot(self, *args): # must be called from the main thread because of OpenGL Logger.log("d", "Creating thumbnail image...") - self._snapshot = Snapshot.snapshot(width = 300, height = 300) + try: + self._snapshot = Snapshot.snapshot(width = 300, height = 300) + except Exception: + Logger.logException("w", "Failed to create snapshot image") + self._snapshot = None # Failing to create thumbnail should not fail creation of UFP # This needs to be called on the main thread (Qt thread) because the serialization of material containers can # trigger loading other containers. Because those loaded containers are QtObjects, they must be created on the @@ -79,9 +83,9 @@ class UFPWriter(MeshWriter): Logger.log("d", "Thumbnail not created, cannot save it") # Store the material. - application = Application.getInstance() + application = CuraApplication.getInstance() machine_manager = application.getMachineManager() - material_manager = application.getMaterialManager() + container_registry = application.getContainerRegistry() global_stack = machine_manager.activeMachine material_extension = "xml.fdm_material" @@ -107,12 +111,12 @@ class UFPWriter(MeshWriter): continue material_root_id = material.getMetaDataEntry("base_file") - material_group = material_manager.getMaterialGroup(material_root_id) - if material_group is None: - Logger.log("e", "Cannot find material container with root id [%s]", material_root_id) + material_root_query = container_registry.findContainers(id = material_root_id) + if not material_root_query: + Logger.log("e", "Cannot find material container with root id {root_id}".format(root_id = material_root_id)) return False + material_container = material_root_query[0] - material_container = material_group.root_material_node.getContainer() try: serialized_material = material_container.serialize() except NotImplementedError: diff --git a/plugins/UFPWriter/plugin.json b/plugins/UFPWriter/plugin.json index 288d6acf77..35fd18f05e 100644 --- a/plugins/UFPWriter/plugin.json +++ b/plugins/UFPWriter/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for writing Ultimaker Format Packages.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/__init__.py b/plugins/UM3NetworkPrinting/__init__.py index 3da7795589..ea0f69639d 100644 --- a/plugins/UM3NetworkPrinting/__init__.py +++ b/plugins/UM3NetworkPrinting/__init__.py @@ -1,7 +1,7 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from .src import DiscoverUM3Action from .src import UM3OutputDevicePlugin +from .src import UltimakerNetworkedPrinterAction def getMetaData(): @@ -11,5 +11,5 @@ def getMetaData(): def register(app): return { "output_device": UM3OutputDevicePlugin.UM3OutputDevicePlugin(), - "machine_action": DiscoverUM3Action.DiscoverUM3Action() + "machine_action": UltimakerNetworkedPrinterAction.UltimakerNetworkedPrinterAction() } diff --git a/plugins/UM3NetworkPrinting/plugin.json b/plugins/UM3NetworkPrinting/plugin.json index 088b4dae6a..193ba63d83 100644 --- a/plugins/UM3NetworkPrinting/plugin.json +++ b/plugins/UM3NetworkPrinting/plugin.json @@ -1,8 +1,8 @@ { - "name": "UM3 Network Connection", + "name": "Ultimaker Network Connection", "author": "Ultimaker B.V.", - "description": "Manages network connections to Ultimaker 3 printers.", - "version": "1.0.1", - "api": "6.0", + "description": "Manages network connections to Ultimaker networked printers.", + "version": "2.0.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/UM3NetworkPrinting/resources/png/Ultimaker S3.png b/plugins/UM3NetworkPrinting/resources/png/Ultimaker S3.png new file mode 100644 index 0000000000..b6ce6e1273 Binary files /dev/null and b/plugins/UM3NetworkPrinting/resources/png/Ultimaker S3.png differ diff --git a/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml b/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml index bf7690ac37..2e3d17ceb0 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.3 @@ -7,34 +7,39 @@ import QtQuick.Controls.Styles 1.3 import UM 1.3 as UM import Cura 1.0 as Cura -Rectangle { +Rectangle +{ id: base property var enabled: true - property var iconSource: null; - color: UM.Theme.getColor("monitor_icon_primary") - height: width; - radius: Math.round(0.5 * width); - width: 24 * screenScaleFactor; + property var iconSource: null + color: enabled ? UM.Theme.getColor("monitor_icon_primary") : UM.Theme.getColor("monitor_icon_disabled") + height: width + radius: Math.round(0.5 * width) + width: 24 * screenScaleFactor - UM.RecolorImage { - id: icon; - anchors { - horizontalCenter: parent.horizontalCenter; - verticalCenter: parent.verticalCenter; + UM.RecolorImage + { + id: icon + anchors + { + horizontalCenter: parent.horizontalCenter + verticalCenter: parent.verticalCenter } - color: UM.Theme.getColor("monitor_icon_accent"); - height: width; - source: iconSource; - width: Math.round(parent.width / 2); + color: UM.Theme.getColor("monitor_icon_accent") + height: width + source: iconSource + width: Math.round(parent.width / 2) } - MouseArea { - id: clickArea; - anchors.fill: parent; + MouseArea + { + id: clickArea + anchors.fill: parent hoverEnabled: base.enabled - onClicked: { + onClicked: + { if (base.enabled) { if (OutputDevice.activeCameraUrl != "") @@ -48,4 +53,4 @@ Rectangle { } } } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml index 3883a7e285..59a0148550 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml @@ -1,8 +1,8 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.5 as Cura import QtQuick 2.2 import QtQuick.Controls 1.1 @@ -14,42 +14,22 @@ Cura.MachineAction { id: base anchors.fill: parent; + property alias currentItemIndex: listview.currentIndex property var selectedDevice: null property bool completeProperties: true + // For validating IP addresses + property var networkingUtil: Cura.NetworkingUtil {} + function connectToPrinter() { - if(base.selectedDevice && base.completeProperties) + if (base.selectedDevice && base.completeProperties) { - var printerKey = base.selectedDevice.key - var printerName = base.selectedDevice.name // TODO To change when the groups have a name - if (manager.getStoredKey() != printerKey) - { - // Check if there is another instance with the same key - if (!manager.existsKey(printerKey)) - { - manager.associateActiveMachineWithPrinterDevice(base.selectedDevice) - manager.setGroupName(printerName) // TODO To change when the groups have a name - completed() - } - else - { - existingConnectionDialog.open() - } - } + manager.associateActiveMachineWithPrinterDevice(base.selectedDevice) + completed() } } - MessageDialog - { - id: existingConnectionDialog - title: catalog.i18nc("@window:title", "Existing Connection") - icon: StandardIcon.Information - text: catalog.i18nc("@message:text", "This printer/group is already added to Cura. Please select another printer/group.") - standardButtons: StandardButton.Ok - modality: Qt.ApplicationModal - } - Column { anchors.fill: parent; @@ -74,7 +54,7 @@ Cura.MachineAction width: parent.width wrapMode: Text.WordWrap renderType: Text.NativeRendering - text: catalog.i18nc("@label", "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n\nSelect your printer from the list below:") + text: catalog.i18nc("@label", "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.") + "\n\n" + catalog.i18nc("@label", "Select your printer from the list below:") } Row @@ -147,21 +127,6 @@ Cura.MachineAction { id: listview model: manager.foundDevices - onModelChanged: - { - var selectedKey = manager.getLastManualEntryKey() - // If there is no last manual entry key, then we select the stored key (if any) - if (selectedKey == "") - selectedKey = manager.getStoredKey() - for(var i = 0; i < model.length; i++) { - if(model[i].key == selectedKey) - { - currentIndex = i; - return - } - } - currentIndex = -1; - } width: parent.width currentIndex: -1 onCurrentIndexChanged: @@ -246,29 +211,10 @@ Cura.MachineAction renderType: Text.NativeRendering text: { - if(base.selectedDevice) - { - if (base.selectedDevice.printerType == "ultimaker3") - { - return "Ultimaker 3"; - } - else if (base.selectedDevice.printerType == "ultimaker3_extended") - { - return "Ultimaker 3 Extended"; - } - else if (base.selectedDevice.printerType == "ultimaker_s5") - { - return "Ultimaker S5"; - } - else - { - return catalog.i18nc("@label", "Unknown") // We have no idea what type it is. Should not happen 'in the field' - } - } - else - { - return "" + if (base.selectedDevice) { + return base.selectedDevice.printerTypeName } + return "" } } Label @@ -342,6 +288,17 @@ Cura.MachineAction } } + MessageDialog + { + id: invalidIPAddressMessageDialog + x: parent ? (parent.x + (parent.width) / 2) : 0 + y: parent ? (parent.y + (parent.height) / 2) : 0 + title: catalog.i18nc("@title:window", "Invalid IP address") + text: catalog.i18nc("@text", "Please enter a valid IP address.") + icon: StandardIcon.Warning + standardButtons: StandardButton.Ok + } + UM.Dialog { id: manualPrinterDialog @@ -371,7 +328,7 @@ Cura.MachineAction Label { - text: catalog.i18nc("@alabel", "Enter the IP address or hostname of your printer on the network.") + text: catalog.i18nc("@label", "Enter the IP address of your printer on the network.") width: parent.width wrapMode: Text.WordWrap renderType: Text.NativeRendering @@ -404,6 +361,26 @@ Cura.MachineAction text: catalog.i18nc("@action:button", "OK") onClicked: { + // Validate the input first + if (!networkingUtil.isValidIP(manualPrinterDialog.addressText)) + { + invalidIPAddressMessageDialog.open() + return + } + + // if the entered IP address has already been discovered, switch the current item to that item + // and do nothing else. + for (var i = 0; i < manager.foundDevices.length; i++) + { + var device = manager.foundDevices[i] + if (device.address == manualPrinterDialog.addressText) + { + currentItemIndex = i + manualPrinterDialog.hide() + return + } + } + manager.setManualDevice(manualPrinterDialog.printerKey, manualPrinterDialog.addressText) manualPrinterDialog.hide() } diff --git a/plugins/UM3NetworkPrinting/resources/qml/ExpandableCard.qml b/plugins/UM3NetworkPrinting/resources/qml/ExpandableCard.qml index fae8280488..5257361367 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/ExpandableCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/ExpandableCard.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -87,4 +87,4 @@ Item } } } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml index 74d9377f3e..61981dab2c 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/GenericPopUp.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml index d1a0c207c5..5d08422877 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorBuildplateConfiguration.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -35,7 +35,7 @@ Item { height: parent.height width: 32 * screenScaleFactor // Ensure the icon is centered under the extruder icon (same width) - + Rectangle { anchors.centerIn: parent @@ -56,7 +56,7 @@ Item visible: buildplate } } - + Label { id: buildplateLabel @@ -69,6 +69,7 @@ Item // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorCarousel.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorCarousel.qml index 0d7a177dd3..08743ed777 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorCarousel.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorCarousel.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.3 @@ -23,7 +23,7 @@ Item height: centerSection.height width: maximumWidth - + // Enable keyboard navigation Keys.onLeftPressed: navigateTo(currentIndex - 1) Keys.onRightPressed: navigateTo(currentIndex + 1) @@ -131,7 +131,7 @@ Item } } spacing: 60 * screenScaleFactor // TODO: Theme! - + Repeater { model: printers @@ -255,4 +255,4 @@ Item currentIndex = i } } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml index 1718994d83..1fe766d9f7 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.3 @@ -30,6 +30,26 @@ UM.Dialog OutputDevice.forceSendJob(printer.activePrintJob.key) overrideConfirmationDialog.close() } + visible: + { + // Don't show the button if we're missing a printer or print job + if (!printer || !printer.activePrintJob) + { + return false + } + + // Check each required change... + for (var i = 0; i < printer.activePrintJob.configurationChanges.length; i++) + { + var change = printer.activePrintJob.configurationChanges[i] + // If that type of change is in the list of blocking changes, hide the button + if (!change.canOverride) + { + return false + } + } + return true + } }, Button { @@ -52,6 +72,7 @@ UM.Dialog bottomMargin: 56 * screenScaleFactor // TODO: Theme! } wrapMode: Text.WordWrap + renderType: Text.NativeRendering text: { if (!printer || !printer.activePrintJob) @@ -139,4 +160,4 @@ UM.Dialog } return translationText } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml index 771bd4b8cf..34ca3c6df2 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.3 @@ -81,7 +81,7 @@ Item enabled: visible && !(printJob.state == "pausing" || printJob.state == "resuming"); onClicked: { if (printJob.state == "paused") { - printJob.setState("print"); + printJob.setState("resume"); popUp.close(); return; } diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenuButton.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenuButton.qml index 3e4f1839b6..aa5d6de89b 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenuButton.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenuButton.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.3 @@ -11,21 +11,22 @@ Button id: base background: Rectangle { - color: UM.Theme.getColor("viewport_background") // TODO: Theme! + color: enabled ? UM.Theme.getColor("viewport_background") : "transparent" height: base.height opacity: base.down || base.hovered ? 1 : 0 radius: Math.round(0.5 * width) width: base.width } contentItem: Label { - color: UM.Theme.getColor("monitor_text_primary") + color: enabled ? UM.Theme.getColor("monitor_text_primary") : UM.Theme.getColor("monitor_text_disabled") font.pixelSize: 32 * screenScaleFactor horizontalAlignment: Text.AlignHCenter text: base.text verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering; } height: width hoverEnabled: enabled text: "\u22EE" //Unicode Three stacked points. width: 36 * screenScaleFactor // TODO: Theme! -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorExtruderConfiguration.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorExtruderConfiguration.qml index 4079f23b0a..63caaab433 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorExtruderConfiguration.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorExtruderConfiguration.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -56,7 +56,7 @@ Item Label { id: materialLabel - + color: UM.Theme.getColor("monitor_text_primary") elide: Text.ElideRight font: UM.Theme.getFont("default") // 12pt, regular @@ -66,6 +66,7 @@ Item // FIXED-LINE-HEIGHT: height: parent.height verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } } @@ -85,7 +86,7 @@ Item Label { id: printCoreLabel - + color: UM.Theme.getColor("monitor_text_primary") elide: Text.ElideRight font: UM.Theme.getFont("default_bold") // 12pt, bold @@ -95,6 +96,7 @@ Item // FIXED-LINE-HEIGHT: height: parent.height verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorIconExtruder.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorIconExtruder.qml index c3e78317c5..876215d65d 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorIconExtruder.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorIconExtruder.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -48,5 +48,6 @@ Item x: Math.round(size * 0.25) y: Math.round(size * 0.15625) visible: position >= 0 + renderType: Text.NativeRendering } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml index 21000b8bff..32e19c1cdb 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorInfoBlurb.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.3 @@ -40,6 +40,7 @@ Item width: 240 * screenScaleFactor // TODO: Theme! color: UM.Theme.getColor("monitor_tooltip_text") font: UM.Theme.getFont("default") + renderType: Text.NativeRendering } } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorItem.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorItem.qml index 41b3a93a7b..1ac72b8f8e 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorItem.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorItem.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -42,4 +42,4 @@ Component { z: 1; } } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml index a23b8ab0d3..c01f778bba 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml @@ -1,6 +1,5 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. - import QtQuick 2.2 import QtQuick.Controls 2.0 import UM 1.3 as UM @@ -22,10 +21,6 @@ Item // The print job which all other data is derived from property var printJob: null - // If the printer is a cloud printer or not. Other items base their enabled state off of this boolean. In the future - // they might not need to though. - property bool cloudConnection: Cura.MachineManager.activeMachineIsUsingCloudConnection - width: parent.width height: childrenRect.height @@ -51,7 +46,7 @@ Item { anchors.verticalCenter: parent.verticalCenter height: 18 * screenScaleFactor // TODO: Theme! - width: 216 * screenScaleFactor // TODO: Theme! (Should match column size) + width: UM.Theme.getSize("monitor_column").width Rectangle { color: UM.Theme.getColor("monitor_skeleton_loading") @@ -69,8 +64,10 @@ Item visible: printJob // FIXED-LINE-HEIGHT: + width: parent.width height: parent.height verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } } @@ -78,7 +75,8 @@ Item { anchors.verticalCenter: parent.verticalCenter height: 18 * screenScaleFactor // TODO: Theme! - width: 216 * screenScaleFactor // TODO: Theme! (Should match column size) + width: UM.Theme.getSize("monitor_column").width + Rectangle { color: UM.Theme.getColor("monitor_skeleton_loading") @@ -87,6 +85,7 @@ Item visible: !printJob radius: 2 * screenScaleFactor // TODO: Theme! } + Label { text: printJob ? OutputDevice.formatDuration(printJob.timeTotal) : "" @@ -98,6 +97,7 @@ Item // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } } @@ -143,6 +143,7 @@ Item // FIXED-LINE-HEIGHT: height: parent.height verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } Row @@ -158,14 +159,9 @@ Item spacing: 6 // TODO: Theme! visible: printJob - Repeater + MonitorPrinterPill { - id: compatiblePills - delegate: MonitorPrinterPill - { - text: modelData - } - model: printJob ? printJob.compatibleMachineFamilies : [] + text: printJob.configuration.printerType } } } @@ -185,13 +181,10 @@ Item id: printerConfiguration anchors.verticalCenter: parent.verticalCenter buildplate: catalog.i18nc("@label", "Glass") - configurations: - [ - base.printJob.configuration.extruderConfigurations[0], - base.printJob.configuration.extruderConfigurations[1] - ] + configurations: base.printJob.configuration.extruderConfigurations height: 72 * screenScaleFactor // TODO: Theme! } + Label { text: printJob && printJob.owner ? printJob.owner : "" color: UM.Theme.getColor("monitor_text_primary") @@ -202,6 +195,7 @@ Item // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } } } @@ -218,7 +212,7 @@ Item } width: 32 * screenScaleFactor // TODO: Theme! height: 32 * screenScaleFactor // TODO: Theme! - enabled: !cloudConnection + enabled: OutputDevice.supportsPrintJobActions onClicked: enabled ? contextMenu.switchPopupState() : {} visible: { @@ -248,10 +242,10 @@ Item enabled: !contextMenuButton.enabled } - MonitorInfoBlurb - { - id: contextMenuDisabledInfo - text: catalog.i18nc("@info", "These options are not available because you are monitoring a cloud printer.") - target: contextMenuButton - } -} \ No newline at end of file + MonitorInfoBlurb + { + id: contextMenuDisabledInfo + text: catalog.i18nc("@info", "Please update your printer's firmware to manage the queue remotely.") + target: contextMenuButton + } +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobPreview.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobPreview.qml index a392571757..7492b4e8e4 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobPreview.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobPreview.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -41,7 +41,7 @@ Item UM.RecolorImage { id: ultiBotImage - + anchors.centerIn: printJobPreview color: UM.Theme.getColor("monitor_placeholder_image") height: printJobPreview.height @@ -98,4 +98,4 @@ Item visible: source != "" width: 0.5 * printJobPreview.width } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml index 2ba70268b2..0a478c8543 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.3 @@ -20,49 +20,38 @@ Item property var printJob: null width: childrenRect.width - height: 18 * screenScaleFactor // TODO: Theme! + height: UM.Theme.getSize("monitor_text_line").height - ProgressBar + UM.ProgressBar { id: progressBar anchors { verticalCenter: parent.verticalCenter + left: parent.left } value: printJob ? printJob.progress : 0 - style: ProgressBarStyle - { - background: Rectangle - { - color: UM.Theme.getColor("monitor_progress_bar_empty") - implicitHeight: visible ? 12 * screenScaleFactor : 0 // TODO: Theme! - implicitWidth: 180 * screenScaleFactor // TODO: Theme! - radius: 2 * screenScaleFactor // TODO: Theme! - } - progress: Rectangle - { - id: progressItem; - color: printJob && printJob.isActive ? UM.Theme.getColor("monitor_progress_bar_fill") : UM.Theme.getColor("monitor_progress_bar_deactive") - radius: 2 * screenScaleFactor // TODO: Theme! - } - } + width: UM.Theme.getSize("monitor_progress_bar").width } + Label { id: percentLabel anchors { left: progressBar.right - leftMargin: 18 * screenScaleFactor // TODO: Theme! + leftMargin: UM.Theme.getSize("monitor_margin").width + verticalCenter: parent.verticalCenter } text: printJob ? Math.round(printJob.progress * 100) + "%" : "0%" color: printJob && printJob.isActive ? UM.Theme.getColor("monitor_text_primary") : UM.Theme.getColor("monitor_text_disabled") width: contentWidth - font: UM.Theme.getFont("medium") // 14pt, regular + font: UM.Theme.getFont("default") // 12pt, regular // FIXED-LINE-HEIGHT: - height: 18 * screenScaleFactor // TODO: Theme! + height: UM.Theme.getSize("monitor_text_line").height verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } Label { @@ -70,50 +59,52 @@ Item anchors { left: percentLabel.right - leftMargin: 18 * screenScaleFactor // TODO: Theme! + leftMargin: UM.Theme.getSize("monitor_margin").width + verticalCenter: parent.verticalCenter } color: UM.Theme.getColor("monitor_text_primary") - font: UM.Theme.getFont("medium") // 14pt, regular + font: UM.Theme.getFont("default") text: { if (!printJob) { - return "" + return ""; } switch (printJob.state) { case "wait_cleanup": if (printJob.timeTotal > printJob.timeElapsed) { - return catalog.i18nc("@label:status", "Aborted") + return catalog.i18nc("@label:status", "Aborted"); } - return catalog.i18nc("@label:status", "Finished") + return catalog.i18nc("@label:status", "Finished"); case "finished": - return catalog.i18nc("@label:status", "Finished") + return catalog.i18nc("@label:status", "Finished"); case "sent_to_printer": - return catalog.i18nc("@label:status", "Preparing...") + return catalog.i18nc("@label:status", "Preparing..."); case "pre_print": - return catalog.i18nc("@label:status", "Preparing...") + return catalog.i18nc("@label:status", "Preparing..."); case "aborting": // NOTE: Doesn't exist but maybe should someday - return catalog.i18nc("@label:status", "Aborting...") + return catalog.i18nc("@label:status", "Aborting..."); case "aborted": // NOTE: Unused, see above - return catalog.i18nc("@label:status", "Aborted") + return catalog.i18nc("@label:status", "Aborted"); case "pausing": - return catalog.i18nc("@label:status", "Pausing...") + return catalog.i18nc("@label:status", "Pausing..."); case "paused": - return catalog.i18nc("@label:status", "Paused") + return catalog.i18nc("@label:status", "Paused"); case "resuming": - return catalog.i18nc("@label:status", "Resuming...") + return catalog.i18nc("@label:status", "Resuming..."); case "queued": - return catalog.i18nc("@label:status", "Action required") + return catalog.i18nc("@label:status", "Action required"); default: - return catalog.i18nc("@label:status", "Finishes %1 at %2".arg(OutputDevice.getDateCompleted( printJob.timeRemaining )).arg(OutputDevice.getTimeCompleted( printJob.timeRemaining ))) + return catalog.i18nc("@label:status", "Finishes %1 at %2".arg(OutputDevice.getDateCompleted(printJob.timeRemaining)).arg(OutputDevice.getTimeCompleted(printJob.timeRemaining))); } } width: contentWidth // FIXED-LINE-HEIGHT: - height: 18 * screenScaleFactor // TODO: Theme! + height: UM.Theme.getSize("monitor_text_line").height verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml index 8c63e1ef1a..9242abacdd 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.3 @@ -81,7 +81,7 @@ Item mipmap: true } } - + Item { @@ -90,7 +90,7 @@ Item verticalCenter: parent.verticalCenter } width: 180 * screenScaleFactor // TODO: Theme! - height: printerNameLabel.height + printerFamilyPill.height + 6 * screenScaleFactor // TODO: Theme! + height: childrenRect.height Rectangle { @@ -99,7 +99,7 @@ Item height: 18 * screenScaleFactor // TODO: Theme! width: parent.width radius: 2 * screenScaleFactor // TODO: Theme! - + Label { text: printer && printer.name ? printer.name : "" @@ -112,6 +112,7 @@ Item // FIXED-LINE-HEIGHT: height: parent.height verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } } @@ -134,13 +135,61 @@ Item } text: printer ? printer.type : "" } + Item + { + id: managePrinterLink + anchors { + top: printerFamilyPill.bottom + topMargin: 6 * screenScaleFactor + } + height: 18 * screenScaleFactor // TODO: Theme! + width: childrenRect.width + + Label + { + id: managePrinterText + anchors.verticalCenter: managePrinterLink.verticalCenter + color: UM.Theme.getColor("monitor_text_link") + font: UM.Theme.getFont("default") + linkColor: UM.Theme.getColor("monitor_text_link") + text: catalog.i18nc("@label link to Connect and Cloud interfaces", "Manage printer") + renderType: Text.NativeRendering + } + UM.RecolorImage + { + id: externalLinkIcon + anchors + { + left: managePrinterText.right + leftMargin: 6 * screenScaleFactor + verticalCenter: managePrinterText.verticalCenter + } + color: UM.Theme.getColor("monitor_text_link") + source: UM.Theme.getIcon("external_link") + width: 12 * screenScaleFactor + height: 12 * screenScaleFactor + } + } + MouseArea + { + anchors.fill: managePrinterLink + onClicked: OutputDevice.openPrintJobControlPanel() + onEntered: + { + manageQueueText.font.underline = true + } + onExited: + { + manageQueueText.font.underline = false + } + } } MonitorPrinterConfiguration { id: printerConfiguration anchors.verticalCenter: parent.verticalCenter - buildplate: printer ? "Glass" : null // 'Glass' as a default + buildplate: printer ? catalog.i18nc("@label", "Glass") : null // 'Glass' as a default configurations: { var configs = [] @@ -171,8 +220,7 @@ Item } width: 36 * screenScaleFactor // TODO: Theme! height: 36 * screenScaleFactor // TODO: Theme! - enabled: !cloudConnection - + enabled: OutputDevice.supportsPrintJobActions onClicked: enabled ? contextMenu.switchPopupState() : {} visible: { @@ -205,7 +253,7 @@ Item MonitorInfoBlurb { id: contextMenuDisabledInfo - text: catalog.i18nc("@info", "These options are not available because you are monitoring a cloud printer.") + text: catalog.i18nc("@info", "Please update your printer's firmware to manage the queue remotely.") target: contextMenuButton } @@ -243,7 +291,6 @@ Item } } - // Divider Rectangle { @@ -315,6 +362,7 @@ Item return "" } visible: text !== "" + renderType: Text.NativeRendering } Item @@ -356,6 +404,7 @@ Item // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } Label @@ -376,6 +425,7 @@ Item // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } } @@ -403,6 +453,7 @@ Item // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering } } @@ -437,11 +488,31 @@ Item verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignHCenter height: 18 * screenScaleFactor // TODO: Theme! + renderType: Text.NativeRendering } implicitHeight: 32 * screenScaleFactor // TODO: Theme! implicitWidth: 96 * screenScaleFactor // TODO: Theme! visible: printer && printer.activePrintJob && printer.activePrintJob.configurationChanges.length > 0 && !printerStatus.visible onClicked: base.enabled ? overrideConfirmationDialog.open() : {} + enabled: OutputDevice.supportsPrintJobActions + } + + // For cloud printing, add this mouse area over the disabled details button to indicate that it's not available + MouseArea + { + id: detailsButtonDisabledButtonArea + anchors.fill: detailsButton + hoverEnabled: detailsButton.visible && !detailsButton.enabled + onEntered: overrideButtonDisabledInfo.open() + onExited: overrideButtonDisabledInfo.close() + enabled: !detailsButton.enabled + } + + MonitorInfoBlurb + { + id: overrideButtonDisabledInfo + text: catalog.i18nc("@info", "Please update your printer's firmware to manage the queue remotely.") + target: detailsButton } } @@ -450,4 +521,4 @@ Item id: overrideConfirmationDialog printer: base.printer } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterConfiguration.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterConfiguration.qml index dbe085e18e..21d08a310c 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterConfiguration.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterConfiguration.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -55,4 +55,4 @@ Item anchors.bottom: parent.bottom buildplate: null } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterPill.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterPill.qml index 2aeecd5a92..44aa1a1f8d 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterPill.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterPill.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -11,20 +11,8 @@ import UM 1.2 as UM */ Item { - // The printer name + id: monitorPrinterPill property var text: "" - property var tagText: { - switch(text) { - case "Ultimaker 3": - return "UM 3" - case "Ultimaker 3 Extended": - return "UM 3 EXT" - case "Ultimaker S5": - return "UM S5" - default: - return text - } - } implicitHeight: 18 * screenScaleFactor // TODO: Theme! implicitWidth: Math.max(printerNameLabel.contentWidth + 12 * screenScaleFactor, 36 * screenScaleFactor) // TODO: Theme! @@ -40,8 +28,9 @@ Item id: printerNameLabel anchors.centerIn: parent color: UM.Theme.getColor("monitor_text_primary") - text: tagText + text: monitorPrinterPill.text font.pointSize: 10 // TODO: Theme! - visible: text !== "" + visible: monitorPrinterPill.text !== "" + renderType: Text.NativeRendering } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml index c75bd4190f..ce692168c3 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -14,6 +14,10 @@ import Cura 1.0 as Cura */ Item { + // If the printer is a cloud printer or not. Other items base their enabled state off of this boolean. In the future + // they might not need to though. + property bool cloudConnection: Cura.MachineManager.activeMachineIsUsingCloudConnection + Label { id: queuedLabel @@ -25,6 +29,7 @@ Item color: UM.Theme.getColor("monitor_text_primary") font: UM.Theme.getFont("large") text: catalog.i18nc("@label", "Queued") + renderType: Text.NativeRendering } Item @@ -59,7 +64,7 @@ Item color: UM.Theme.getColor("monitor_text_link") font: UM.Theme.getFont("medium") // 14pt, regular linkColor: UM.Theme.getColor("monitor_text_link") - text: catalog.i18nc("@label link to connect manager", "Go to Cura Connect") + text: catalog.i18nc("@label link to connect manager", "Manage in browser") renderType: Text.NativeRendering } } @@ -67,8 +72,7 @@ Item MouseArea { anchors.fill: manageQueueLabel - hoverEnabled: true - onClicked: Cura.MachineManager.printerOutputDevices[0].openPrintJobControlPanel() + onClicked: OutputDevice.openPrintJobControlPanel() onEntered: { manageQueueText.font.underline = true @@ -91,6 +95,21 @@ Item } spacing: 18 * screenScaleFactor // TODO: Theme! + Label + { + text: catalog.i18nc("@label", "There are no print jobs in the queue. Slice and send a job to add one.") + color: UM.Theme.getColor("monitor_text_primary") + elide: Text.ElideRight + font: UM.Theme.getFont("medium") // 14pt, regular + anchors.verticalCenter: parent.verticalCenter + + // FIXED-LINE-HEIGHT: + height: 18 * screenScaleFactor // TODO: Theme! + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + visible: printJobList.count === 0 + } + Label { text: catalog.i18nc("@label", "Print jobs") @@ -103,6 +122,8 @@ Item // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + visible: printJobList.count > 0 } Label @@ -112,11 +133,13 @@ Item elide: Text.ElideRight font: UM.Theme.getFont("medium") // 14pt, regular anchors.verticalCenter: parent.verticalCenter - width: 216 * screenScaleFactor // TODO: Theme! (Should match column size) + width: UM.Theme.getSize("monitor_column").width // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + visible: printJobList.count > 0 } Label @@ -126,11 +149,13 @@ Item elide: Text.ElideRight font: UM.Theme.getFont("medium") // 14pt, regular anchors.verticalCenter: parent.verticalCenter - width: 216 * screenScaleFactor // TODO: Theme! (Should match column size) + width: UM.Theme.getSize("monitor_column").width // FIXED-LINE-HEIGHT: height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + visible: printJobList.count > 0 } } @@ -162,99 +187,13 @@ Item } model: { - // When printing over the cloud we don't recieve print jobs until there is one, so - // unless there's at least one print job we'll be stuck with skeleton loading - // indefinitely. - if (Cura.MachineManager.activeMachineHasActiveCloudConnection) + if (OutputDevice.receivedData) { return OutputDevice.queuedPrintJobs } - return OutputDevice.receivedPrintJobs ? OutputDevice.queuedPrintJobs : [null,null] + return [null, null] } spacing: 6 // TODO: Theme! } } - - Rectangle - { - anchors - { - horizontalCenter: parent.horizontalCenter - top: printJobQueueHeadings.bottom - topMargin: 12 * screenScaleFactor // TODO: Theme! - } - height: 48 * screenScaleFactor // TODO: Theme! - width: parent.width - color: UM.Theme.getColor("monitor_card_background") - border.color: UM.Theme.getColor("monitor_card_border") - radius: 2 * screenScaleFactor // TODO: Theme! - - visible: printJobList.model.length == 0 - - Row - { - anchors - { - left: parent.left - leftMargin: 18 * screenScaleFactor // TODO: Theme! - verticalCenter: parent.verticalCenter - } - spacing: 18 * screenScaleFactor // TODO: Theme! - height: 18 * screenScaleFactor // TODO: Theme! - - Label - { - text: "All jobs are printed." - color: UM.Theme.getColor("monitor_text_primary") - font: UM.Theme.getFont("medium") // 14pt, regular - } - - Item - { - id: viewPrintHistoryLabel - - height: 18 * screenScaleFactor // TODO: Theme! - width: childrenRect.width - - UM.RecolorImage - { - id: printHistoryIcon - anchors.verticalCenter: parent.verticalCenter - color: UM.Theme.getColor("monitor_text_link") - source: UM.Theme.getIcon("external_link") - width: 16 * screenScaleFactor // TODO: Theme! (Y U NO USE 18 LIKE ALL OTHER ICONS?!) - height: 16 * screenScaleFactor // TODO: Theme! (Y U NO USE 18 LIKE ALL OTHER ICONS?!) - } - Label - { - id: viewPrintHistoryText - anchors - { - left: printHistoryIcon.right - leftMargin: 6 * screenScaleFactor // TODO: Theme! - verticalCenter: printHistoryIcon.verticalCenter - } - color: UM.Theme.getColor("monitor_text_link") - font: UM.Theme.getFont("medium") // 14pt, regular - linkColor: UM.Theme.getColor("monitor_text_link") - text: catalog.i18nc("@label link to connect manager", "View print history") - renderType: Text.NativeRendering - } - MouseArea - { - anchors.fill: parent - hoverEnabled: true - onClicked: Cura.MachineManager.printerOutputDevices[0].openPrintJobControlPanel() - onEntered: - { - viewPrintHistoryText.font.underline = true - } - onExited: - { - viewPrintHistoryText.font.underline = false - } - } - } - } - } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml index 59cbda7172..47c45f8b11 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorStage.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -25,7 +25,7 @@ Component } width: maximumWidth color: UM.Theme.getColor("monitor_stage_background") - + // Enable keyboard navigation. NOTE: This is done here so that we can also potentially // forward to the queue items in the future. (Deleting selected print job, etc.) Keys.forwardTo: carousel @@ -50,7 +50,14 @@ Component MonitorCarousel { id: carousel - printers: OutputDevice.receivedPrintJobs ? OutputDevice.printers : [null] + printers: + { + if (OutputDevice.receivedData) + { + return OutputDevice.printers + } + return [null] + } } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml index 67c82db320..78b94ce259 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -16,8 +16,9 @@ Button { text: parent.text horizontalAlignment: Text.AlignLeft; verticalAlignment: Text.AlignVCenter; + renderType: Text.NativeRendering; } height: visible ? 39 * screenScaleFactor : 0; // TODO: Theme! hoverEnabled: true; width: parent.width; -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml index c2590e99a8..6d9f375788 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml @@ -1,52 +1,57 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. - import QtQuick 2.2 import QtQuick.Window 2.2 import QtQuick.Controls 1.2 import UM 1.1 as UM UM.Dialog { + id: base; + title: catalog.i18nc("@title:window", "Print over network"); + width: minimumWidth; height: minimumHeight; - leftButtons: [ - Button { - enabled: true; - onClicked: { - base.visible = false; - printerSelectionCombobox.currentIndex = 0; - OutputDevice.cancelPrintSelection(); - } - text: catalog.i18nc("@action:button","Cancel"); - } - ] maximumHeight: minimumHeight; maximumWidth: minimumWidth; minimumHeight: 140 * screenScaleFactor; minimumWidth: 500 * screenScaleFactor; modality: Qt.ApplicationModal; - onVisibleChanged: { - if (visible) { - resetPrintersModel(); - } else { - OutputDevice.cancelPrintSelection(); + + Component.onCompleted: { + populateComboBox() + } + + // populates the combo box with the correct printer values + function populateComboBox() { + comboBoxPrintersModel.clear(); + comboBoxPrintersModel.append({ name: "Automatic", key: "" }); // Connect will just do it's thing + for (var i in OutputDevice.printers) { + comboBoxPrintersModel.append({ + name: OutputDevice.printers[i].name, + key: OutputDevice.printers[i].uniqueName + }); } } + + leftButtons: [ + Button { + enabled: true; + onClicked: { + base.close(); + } + text: catalog.i18nc("@action:button","Cancel"); + } + ] rightButtons: [ Button { enabled: true; onClicked: { - base.visible = false; - OutputDevice.selectPrinter(printerSelectionCombobox.model.get(printerSelectionCombobox.currentIndex).key); - // reset to defaults - printerSelectionCombobox.currentIndex = 0; + OutputDevice.selectTargetPrinter(printerComboBox.model.get(printerComboBox.currentIndex).key); + base.close(); } text: catalog.i18nc("@action:button","Print"); } ] - title: catalog.i18nc("@title:window", "Print over network"); - visible: true; - width: minimumWidth; Column { id: printerSelection; @@ -59,10 +64,6 @@ UM.Dialog { } height: 50 * screenScaleFactor; - SystemPalette { - id: palette; - } - UM.I18nCatalog { id: catalog; name: "cura"; @@ -78,26 +79,18 @@ UM.Dialog { height: 20 * screenScaleFactor; text: catalog.i18nc("@label", "Printer selection"); wrapMode: Text.Wrap; + renderType: Text.NativeRendering; } ComboBox { - id: printerSelectionCombobox; + id: printerComboBox; Behavior on height { NumberAnimation { duration: 100 } } height: 40 * screenScaleFactor; model: ListModel { - id: printersModel; + id: comboBoxPrintersModel; } textRole: "name"; width: parent.width; } } - - // Utils - function resetPrintersModel() { - printersModel.clear(); - printersModel.append({ name: "Automatic", key: ""}); - for (var index in OutputDevice.printers) { - printersModel.append({name: OutputDevice.printers[index].name, key: OutputDevice.printers[index].key}); - } - } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml index 77b481f6d8..cfbb30fdfb 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 diff --git a/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml b/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml deleted file mode 100644 index c99ed1688e..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 -import UM 1.2 as UM -import Cura 1.0 as Cura - -Item { - id: base; - property string activeQualityDefinitionId: Cura.MachineManager.activeQualityDefinitionId; - property bool isUM3: activeQualityDefinitionId == "ultimaker3" || activeQualityDefinitionId.match("ultimaker_") != null; - property bool printerConnected: Cura.MachineManager.printerConnected; - property bool printerAcceptsCommands: - { - if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) - { - return Cura.MachineManager.printerOutputDevices[0].acceptsCommands - } - return false - } - property bool authenticationRequested: - { - if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) - { - var device = Cura.MachineManager.printerOutputDevices[0] - // AuthState.AuthenticationRequested or AuthState.AuthenticationReceived - return device.authenticationState == 2 || device.authenticationState == 5 - } - return false - } - property var materialNames: - { - if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) - { - return Cura.MachineManager.printerOutputDevices[0].materialNames - } - return null - } - property var hotendIds: - { - if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) - { - return Cura.MachineManager.printerOutputDevices[0].hotendIds - } - return null - } - - UM.I18nCatalog { - id: catalog; - name: "cura"; - } - - Row { - objectName: "networkPrinterConnectButton"; - spacing: UM.Theme.getSize("default_margin").width; - visible: isUM3; - - Button { - height: UM.Theme.getSize("save_button_save_to_button").height; - onClicked: Cura.MachineManager.printerOutputDevices[0].requestAuthentication(); - style: UM.Theme.styles.print_setup_action_button; - text: catalog.i18nc("@action:button", "Request Access"); - tooltip: catalog.i18nc("@info:tooltip", "Send access request to the printer"); - visible: printerConnected && !printerAcceptsCommands && !authenticationRequested; - } - - Button { - height: UM.Theme.getSize("save_button_save_to_button").height; - onClicked: connectActionDialog.show(); - style: UM.Theme.styles.print_setup_action_button; - text: catalog.i18nc("@action:button", "Connect"); - tooltip: catalog.i18nc("@info:tooltip", "Connect to a printer"); - visible: !printerConnected; - } - } - - UM.Dialog { - id: connectActionDialog; - rightButtons: Button { - iconName: "dialog-close"; - onClicked: connectActionDialog.reject(); - text: catalog.i18nc("@action:button", "Close"); - } - - Loader { - anchors.fill: parent; - source: "DiscoverUM3Action.qml"; - } - } -} diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py index adff94bbbc..ed8d22a478 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import json from json import JSONDecodeError @@ -11,18 +11,19 @@ from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply, QNetworkAccessManage from UM.Logger import Logger from cura import UltimakerCloudAuthentication from cura.API import Account + from .ToolPathUploader import ToolPathUploader -from ..Models import BaseModel -from .Models.CloudClusterResponse import CloudClusterResponse -from .Models.CloudError import CloudError -from .Models.CloudClusterStatus import CloudClusterStatus -from .Models.CloudPrintJobUploadRequest import CloudPrintJobUploadRequest -from .Models.CloudPrintResponse import CloudPrintResponse -from .Models.CloudPrintJobResponse import CloudPrintJobResponse +from ..Models.BaseModel import BaseModel +from ..Models.Http.CloudClusterResponse import CloudClusterResponse +from ..Models.Http.CloudError import CloudError +from ..Models.Http.CloudClusterStatus import CloudClusterStatus +from ..Models.Http.CloudPrintJobUploadRequest import CloudPrintJobUploadRequest +from ..Models.Http.CloudPrintResponse import CloudPrintResponse +from ..Models.Http.CloudPrintJobResponse import CloudPrintJobResponse ## The generic type variable used to document the methods below. -CloudApiClientModel = TypeVar("CloudApiClientModel", bound = BaseModel) +CloudApiClientModel = TypeVar("CloudApiClientModel", bound=BaseModel) ## The cloud API client is responsible for handling the requests and responses from the cloud. @@ -34,6 +35,9 @@ class CloudApiClient: CLUSTER_API_ROOT = "{}/connect/v1".format(ROOT_PATH) CURA_API_ROOT = "{}/cura/v1".format(ROOT_PATH) + # In order to avoid garbage collection we keep the callbacks in this list. + _anti_gc_callbacks = [] # type: List[Callable[[], None]] + ## Initializes a new cloud API client. # \param account: The user's account object # \param on_error: The callback to be called whenever we receive errors from the server. @@ -43,8 +47,6 @@ class CloudApiClient: self._account = account self._on_error = on_error self._upload = None # type: Optional[ToolPathUploader] - # In order to avoid garbage collection we keep the callbacks in this list. - self._anti_gc_callbacks = [] # type: List[Callable[[], None]] ## Gets the account used for the API. @property @@ -54,7 +56,7 @@ class CloudApiClient: ## Retrieves all the clusters for the user that is currently logged in. # \param on_finished: The function to be called after the result is parsed. def getClusters(self, on_finished: Callable[[List[CloudClusterResponse]], Any]) -> None: - url = "{}/clusters".format(self.CLUSTER_API_ROOT) + url = "{}/clusters?status=active".format(self.CLUSTER_API_ROOT) reply = self._manager.get(self._createEmptyRequest(url)) self._addCallback(reply, on_finished, CloudClusterResponse) @@ -69,8 +71,8 @@ class CloudApiClient: ## Requests the cloud to register the upload of a print job mesh. # \param request: The request object. # \param on_finished: The function to be called after the result is parsed. - def requestUpload(self, request: CloudPrintJobUploadRequest, on_finished: Callable[[CloudPrintJobResponse], Any] - ) -> None: + def requestUpload(self, request: CloudPrintJobUploadRequest, + on_finished: Callable[[CloudPrintJobResponse], Any]) -> None: url = "{}/jobs/upload".format(self.CURA_API_ROOT) body = json.dumps({"data": request.toDict()}) reply = self._manager.put(self._createEmptyRequest(url), body.encode()) @@ -96,6 +98,16 @@ class CloudApiClient: reply = self._manager.post(self._createEmptyRequest(url), b"") self._addCallback(reply, on_finished, CloudPrintResponse) + ## Send a print job action to the cluster for the given print job. + # \param cluster_id: The ID of the cluster. + # \param cluster_job_id: The ID of the print job within the cluster. + # \param action: The name of the action to execute. + def doPrintJobAction(self, cluster_id: str, cluster_job_id: str, action: str, + data: Optional[Dict[str, Any]] = None) -> None: + body = json.dumps({"data": data}).encode() if data else b"" + url = "{}/clusters/{}/print_jobs/{}/action/{}".format(self.CLUSTER_API_ROOT, cluster_id, cluster_job_id, action) + self._manager.post(self._createEmptyRequest(url), body) + ## We override _createEmptyRequest in order to add the user credentials. # \param url: The URL to request # \param content_type: The type of the body contents. @@ -156,12 +168,16 @@ class CloudApiClient: reply: QNetworkReply, on_finished: Union[Callable[[CloudApiClientModel], Any], Callable[[List[CloudApiClientModel]], Any]], - model: Type[CloudApiClientModel], - ) -> None: + model: Type[CloudApiClientModel]) -> None: def parse() -> None: - status_code, response = self._parseReply(reply) self._anti_gc_callbacks.remove(parse) - return self._parseModels(response, on_finished, model) + + # Don't try to parse the reply if we didn't get one + if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) is None: + return + + status_code, response = self._parseReply(reply) + self._parseModels(response, on_finished, model) self._anti_gc_callbacks.append(parse) reply.finished.connect(parse) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputController.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputController.py deleted file mode 100644 index bd56ef3185..0000000000 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputController.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -from cura.PrinterOutput.PrinterOutputController import PrinterOutputController - -from typing import TYPE_CHECKING -if TYPE_CHECKING: - from .CloudOutputDevice import CloudOutputDevice - - -class CloudOutputController(PrinterOutputController): - def __init__(self, output_device: "CloudOutputDevice") -> None: - super().__init__(output_device) - - # The cloud connection only supports fetching the printer and queue status and adding a job to the queue. - # To let the UI know this we mark all features below as False. - self.can_pause = False - self.can_abort = False - self.can_pre_heat_bed = False - self.can_pre_heat_hotends = False - self.can_send_raw_gcode = False - self.can_control_manually = False - self.can_update_firmware = False diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py index 7b5add276a..b544490cfb 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py @@ -1,37 +1,34 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import os - from time import time -from typing import Dict, List, Optional, Set, cast +from typing import List, Optional, cast from PyQt5.QtCore import QObject, QUrl, pyqtProperty, pyqtSignal, pyqtSlot +from PyQt5.QtGui import QDesktopServices from UM import i18nCatalog from UM.Backend.Backend import BackendState from UM.FileHandler.FileHandler import FileHandler from UM.Logger import Logger -from UM.Message import Message -from UM.Qt.Duration import Duration, DurationFormat from UM.Scene.SceneNode import SceneNode +from UM.Version import Version from cura.CuraApplication import CuraApplication -from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState, NetworkedPrinterOutputDevice -from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel -from cura.PrinterOutputDevice import ConnectionType +from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState +from cura.PrinterOutput.PrinterOutputDevice import ConnectionType -from .CloudOutputController import CloudOutputController -from ..MeshFormatHandler import MeshFormatHandler -from ..UM3PrintJobOutputModel import UM3PrintJobOutputModel -from .CloudProgressMessage import CloudProgressMessage from .CloudApiClient import CloudApiClient -from .Models.CloudClusterResponse import CloudClusterResponse -from .Models.CloudClusterStatus import CloudClusterStatus -from .Models.CloudPrintJobUploadRequest import CloudPrintJobUploadRequest -from .Models.CloudPrintResponse import CloudPrintResponse -from .Models.CloudPrintJobResponse import CloudPrintJobResponse -from .Models.CloudClusterPrinterStatus import CloudClusterPrinterStatus -from .Models.CloudClusterPrintJobStatus import CloudClusterPrintJobStatus -from .Utils import findChanges, formatDateCompleted, formatTimeCompleted +from ..ExportFileJob import ExportFileJob +from ..UltimakerNetworkedPrinterOutputDevice import UltimakerNetworkedPrinterOutputDevice +from ..Messages.PrintJobUploadBlockedMessage import PrintJobUploadBlockedMessage +from ..Messages.PrintJobUploadErrorMessage import PrintJobUploadErrorMessage +from ..Messages.PrintJobUploadSuccessMessage import PrintJobUploadSuccessMessage +from ..Models.Http.CloudClusterResponse import CloudClusterResponse +from ..Models.Http.CloudClusterStatus import CloudClusterStatus +from ..Models.Http.CloudPrintJobUploadRequest import CloudPrintJobUploadRequest +from ..Models.Http.CloudPrintResponse import CloudPrintResponse +from ..Models.Http.CloudPrintJobResponse import CloudPrintJobResponse +from ..Models.Http.ClusterPrinterStatus import ClusterPrinterStatus +from ..Models.Http.ClusterPrintJobStatus import ClusterPrintJobStatus I18N_CATALOG = i18nCatalog("cura") @@ -41,20 +38,22 @@ I18N_CATALOG = i18nCatalog("cura") # Currently it only supports viewing the printer and print job status and adding a new job to the queue. # As such, those methods have been implemented here. # Note that this device represents a single remote cluster, not a list of multiple clusters. -class CloudOutputDevice(NetworkedPrinterOutputDevice): +class CloudOutputDevice(UltimakerNetworkedPrinterOutputDevice): - # The interval with which the remote clusters are checked + # The interval with which the remote cluster is checked. + # We can do this relatively often as this API call is quite fast. CHECK_CLUSTER_INTERVAL = 10.0 # seconds - # Signal triggered when the print jobs in the queue were changed. - printJobsChanged = pyqtSignal() + # Override the network response timeout in seconds after which we consider the device offline. + # For cloud this needs to be higher because the interval at which we check the status is higher as well. + NETWORK_RESPONSE_CONSIDER_OFFLINE = 15.0 # seconds - # Signal triggered when the selected printer in the UI should be changed. - activePrinterChanged = pyqtSignal() + # The minimum version of firmware that support print job actions over cloud. + PRINT_JOB_ACTIONS_MIN_VERSION = Version("5.3.0") # Notify can only use signals that are defined by the class that they are in, not inherited ones. # Therefore we create a private signal used to trigger the printersChanged signal. - _clusterPrintersChanged = pyqtSignal() + _cloudClusterPrintersChanged = pyqtSignal() ## Creates a new cloud output device # \param api_client: The client that will run the API calls @@ -66,46 +65,36 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice): # Because the cloud connection does not off all of these, we manually construct this version here. # An example of why this is needed is the selection of the compatible file type when exporting the tool path. properties = { - b"address": b"", - b"name": cluster.host_name.encode() if cluster.host_name else b"", + b"address": cluster.host_internal_ip.encode() if cluster.host_internal_ip else b"", + b"name": cluster.friendly_name.encode() if cluster.friendly_name else b"", b"firmware_version": cluster.host_version.encode() if cluster.host_version else b"", - b"printer_type": b"" + b"printer_type": cluster.printer_type.encode() if cluster.printer_type else b"", + b"cluster_size": b"1" # cloud devices are always clusters of at least one } - super().__init__(device_id = cluster.cluster_id, address = "", - connection_type = ConnectionType.CloudConnection, properties = properties, parent = parent) - self._api = api_client - self._cluster = cluster + super().__init__( + device_id=cluster.cluster_id, + address="", + connection_type=ConnectionType.CloudConnection, + properties=properties, + parent=parent + ) + self._api = api_client + self._account = api_client.account + self._cluster = cluster + self.setAuthenticationState(AuthState.NotAuthenticated) self._setInterfaceElements() - self._account = api_client.account - - # We use the Cura Connect monitor tab to get most functionality right away. - self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), - "../../resources/qml/MonitorStage.qml") - # Trigger the printersChanged signal when the private signal is triggered. - self.printersChanged.connect(self._clusterPrintersChanged) - - # We keep track of which printer is visible in the monitor page. - self._active_printer = None # type: Optional[PrinterOutputModel] - - # Properties to populate later on with received cloud data. - self._print_jobs = [] # type: List[UM3PrintJobOutputModel] - self._number_of_extruders = 2 # All networked printers are dual-extrusion Ultimaker machines. - - # We only allow a single upload at a time. - self._progress = CloudProgressMessage() + self.printersChanged.connect(self._cloudClusterPrintersChanged) # Keep server string of the last generated time to avoid updating models more than once for the same response - self._received_printers = None # type: Optional[List[CloudClusterPrinterStatus]] - self._received_print_jobs = None # type: Optional[List[CloudClusterPrintJobStatus]] - - # A set of the user's job IDs that have finished - self._finished_jobs = set() # type: Set[str] + self._received_printers = None # type: Optional[List[ClusterPrinterStatus]] + self._received_print_jobs = None # type: Optional[List[ClusterPrintJobStatus]] # Reference to the uploaded print job / mesh + # We do this to prevent re-uploading the same file multiple times. self._tool_path = None # type: Optional[bytes] self._uploaded_print_job = None # type: Optional[CloudPrintJobResponse] @@ -116,9 +105,12 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice): super().connect() Logger.log("i", "Connected to cluster %s", self.key) CuraApplication.getInstance().getBackend().backendStateChange.connect(self._onBackendStateChange) + self._update() ## Disconnects the device def disconnect(self) -> None: + if not self.isConnected(): + return super().disconnect() Logger.log("i", "Disconnected from cluster %s", self.key) CuraApplication.getInstance().getBackend().backendStateChange.disconnect(self._onBackendStateChange) @@ -128,6 +120,149 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice): self._tool_path = None self._uploaded_print_job = None + ## Checks whether the given network key is found in the cloud's host name + def matchesNetworkKey(self, network_key: str) -> bool: + # Typically, a network key looks like "ultimakersystem-aabbccdd0011._ultimaker._tcp.local." + # the host name should then be "ultimakersystem-aabbccdd0011" + if network_key.startswith(str(self.clusterData.host_name or "")): + return True + # However, for manually added printers, the local IP address is used in lieu of a proper + # network key, so check for that as well. It is in the format "manual:10.1.10.1". + if network_key.endswith(str(self.clusterData.host_internal_ip or "")): + return True + return False + + ## Set all the interface elements and texts for this output device. + def _setInterfaceElements(self) -> None: + self.setPriority(2) # Make sure we end up below the local networking and above 'save to file'. + self.setShortDescription(I18N_CATALOG.i18nc("@action:button", "Print via Cloud")) + self.setDescription(I18N_CATALOG.i18nc("@properties:tooltip", "Print via Cloud")) + self.setConnectionText(I18N_CATALOG.i18nc("@info:status", "Connected via Cloud")) + + ## Called when the network data should be updated. + def _update(self) -> None: + super()._update() + if time() - self._time_of_last_request < self.CHECK_CLUSTER_INTERVAL: + return # avoid calling the cloud too often + self._time_of_last_request = time() + if self._account.isLoggedIn: + self.setAuthenticationState(AuthState.Authenticated) + self._last_request_time = time() + self._api.getClusterStatus(self.key, self._onStatusCallFinished) + else: + self.setAuthenticationState(AuthState.NotAuthenticated) + + ## Method called when HTTP request to status endpoint is finished. + # Contains both printers and print jobs statuses in a single response. + def _onStatusCallFinished(self, status: CloudClusterStatus) -> None: + self._responseReceived() + if status.printers != self._received_printers: + self._received_printers = status.printers + self._updatePrinters(status.printers) + if status.print_jobs != self._received_print_jobs: + self._received_print_jobs = status.print_jobs + self._updatePrintJobs(status.print_jobs) + + ## Called when Cura requests an output device to receive a (G-code) file. + def requestWrite(self, nodes: List[SceneNode], file_name: Optional[str] = None, limit_mimetypes: bool = False, + file_handler: Optional[FileHandler] = None, filter_by_machine: bool = False, **kwargs) -> None: + + # Show an error message if we're already sending a job. + if self._progress.visible: + PrintJobUploadBlockedMessage().show() + return + + # Indicate we have started sending a job. + self.writeStarted.emit(self) + + # The mesh didn't change, let's not upload it to the cloud again. + # Note that self.writeFinished is called in _onPrintUploadCompleted as well. + if self._uploaded_print_job: + self._api.requestPrint(self.key, self._uploaded_print_job.job_id, self._onPrintUploadCompleted) + return + + # Export the scene to the correct file type. + job = ExportFileJob(file_handler=file_handler, nodes=nodes, firmware_version=self.firmwareVersion) + job.finished.connect(self._onPrintJobCreated) + job.start() + + ## Handler for when the print job was created locally. + # It can now be sent over the cloud. + def _onPrintJobCreated(self, job: ExportFileJob) -> None: + output = job.getOutput() + self._tool_path = output # store the tool path to prevent re-uploading when printing the same file again + request = CloudPrintJobUploadRequest( + job_name=job.getFileName(), + file_size=len(output), + content_type=job.getMimeType(), + ) + self._api.requestUpload(request, self._uploadPrintJob) + + ## Uploads the mesh when the print job was registered with the cloud API. + # \param job_response: The response received from the cloud API. + def _uploadPrintJob(self, job_response: CloudPrintJobResponse) -> None: + if not self._tool_path: + return self._onUploadError() + self._progress.show() + self._uploaded_print_job = job_response # store the last uploaded job to prevent re-upload of the same file + self._api.uploadToolPath(job_response, self._tool_path, self._onPrintJobUploaded, self._progress.update, + self._onUploadError) + + ## Requests the print to be sent to the printer when we finished uploading the mesh. + def _onPrintJobUploaded(self) -> None: + self._progress.update(100) + print_job = cast(CloudPrintJobResponse, self._uploaded_print_job) + self._api.requestPrint(self.key, print_job.job_id, self._onPrintUploadCompleted) + + ## Shows a message when the upload has succeeded + # \param response: The response from the cloud API. + def _onPrintUploadCompleted(self, response: CloudPrintResponse) -> None: + self._progress.hide() + PrintJobUploadSuccessMessage().show() + self.writeFinished.emit() + + ## Displays the given message if uploading the mesh has failed + # \param message: The message to display. + def _onUploadError(self, message: str = None) -> None: + self._progress.hide() + self._uploaded_print_job = None + PrintJobUploadErrorMessage(message).show() + self.writeError.emit() + + ## Whether the printer that this output device represents supports print job actions via the cloud. + @pyqtProperty(bool, notify=_cloudClusterPrintersChanged) + def supportsPrintJobActions(self) -> bool: + if not self._printers: + return False + version_number = self.printers[0].firmwareVersion.split(".") + firmware_version = Version([version_number[0], version_number[1], version_number[2]]) + return firmware_version >= self.PRINT_JOB_ACTIONS_MIN_VERSION + + ## Set the remote print job state. + def setJobState(self, print_job_uuid: str, state: str) -> None: + self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, state) + + @pyqtSlot(str, name="sendJobToTop") + def sendJobToTop(self, print_job_uuid: str) -> None: + self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, "move", + {"list": "queued", "to_position": 0}) + + @pyqtSlot(str, name="deleteJobFromQueue") + def deleteJobFromQueue(self, print_job_uuid: str) -> None: + self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, "remove") + + @pyqtSlot(str, name="forceSendJob") + def forceSendJob(self, print_job_uuid: str) -> None: + self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, "force") + + @pyqtSlot(name="openPrintJobControlPanel") + def openPrintJobControlPanel(self) -> None: + QDesktopServices.openUrl(QUrl(self.clusterCloudUrl)) + + @pyqtSlot(name="openPrinterControlPanel") + def openPrinterControlPanel(self) -> None: + QDesktopServices.openUrl(QUrl(self.clusterCloudUrl)) + ## Gets the cluster response from which this device was created. @property def clusterData(self) -> CloudClusterResponse: @@ -138,298 +273,8 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice): def clusterData(self, value: CloudClusterResponse) -> None: self._cluster = value - ## Checks whether the given network key is found in the cloud's host name - def matchesNetworkKey(self, network_key: str) -> bool: - # A network key looks like "ultimakersystem-aabbccdd0011._ultimaker._tcp.local." - # the host name should then be "ultimakersystem-aabbccdd0011" - return network_key.startswith(self.clusterData.host_name) - - ## Set all the interface elements and texts for this output device. - def _setInterfaceElements(self) -> None: - self.setPriority(2) # Make sure we end up below the local networking and above 'save to file' - self.setName(self._id) - self.setShortDescription(I18N_CATALOG.i18nc("@action:button", "Print via Cloud")) - self.setDescription(I18N_CATALOG.i18nc("@properties:tooltip", "Print via Cloud")) - self.setConnectionText(I18N_CATALOG.i18nc("@info:status", "Connected via Cloud")) - - ## Called when Cura requests an output device to receive a (G-code) file. - def requestWrite(self, nodes: List[SceneNode], file_name: Optional[str] = None, limit_mimetypes: bool = False, - file_handler: Optional[FileHandler] = None, **kwargs: str) -> None: - - # Show an error message if we're already sending a job. - if self._progress.visible: - message = Message( - text = I18N_CATALOG.i18nc("@info:status", "Sending new jobs (temporarily) blocked, still sending the previous print job."), - title = I18N_CATALOG.i18nc("@info:title", "Cloud error"), - lifetime = 10 - ) - message.show() - return - - if self._uploaded_print_job: - # The mesh didn't change, let's not upload it again - self._api.requestPrint(self.key, self._uploaded_print_job.job_id, self._onPrintUploadCompleted) - return - - # Indicate we have started sending a job. - self.writeStarted.emit(self) - - mesh_format = MeshFormatHandler(file_handler, self.firmwareVersion) - if not mesh_format.is_valid: - Logger.log("e", "Missing file or mesh writer!") - return self._onUploadError(I18N_CATALOG.i18nc("@info:status", "Could not export print job.")) - - mesh = mesh_format.getBytes(nodes) - - self._tool_path = mesh - request = CloudPrintJobUploadRequest( - job_name = file_name or mesh_format.file_extension, - file_size = len(mesh), - content_type = mesh_format.mime_type, - ) - self._api.requestUpload(request, self._onPrintJobCreated) - - ## Called when the network data should be updated. - def _update(self) -> None: - super()._update() - if self._last_request_time and time() - self._last_request_time < self.CHECK_CLUSTER_INTERVAL: - return # Avoid calling the cloud too often - - Logger.log("d", "Updating: %s - %s >= %s", time(), self._last_request_time, self.CHECK_CLUSTER_INTERVAL) - if self._account.isLoggedIn: - self.setAuthenticationState(AuthState.Authenticated) - self._last_request_time = time() - self._api.getClusterStatus(self.key, self._onStatusCallFinished) - else: - self.setAuthenticationState(AuthState.NotAuthenticated) - - ## Method called when HTTP request to status endpoint is finished. - # Contains both printers and print jobs statuses in a single response. - def _onStatusCallFinished(self, status: CloudClusterStatus) -> None: - # Update all data from the cluster. - self._last_response_time = time() - if self._received_printers != status.printers: - self._received_printers = status.printers - self._updatePrinters(status.printers) - - if status.print_jobs != self._received_print_jobs: - self._received_print_jobs = status.print_jobs - self._updatePrintJobs(status.print_jobs) - - ## Updates the local list of printers with the list received from the cloud. - # \param jobs: The printers received from the cloud. - def _updatePrinters(self, printers: List[CloudClusterPrinterStatus]) -> None: - previous = {p.key: p for p in self._printers} # type: Dict[str, PrinterOutputModel] - received = {p.uuid: p for p in printers} # type: Dict[str, CloudClusterPrinterStatus] - - removed_printers, added_printers, updated_printers = findChanges(previous, received) - - for removed_printer in removed_printers: - if self._active_printer == removed_printer: - self.setActivePrinter(None) - self._printers.remove(removed_printer) - - for added_printer in added_printers: - self._printers.append(added_printer.createOutputModel(CloudOutputController(self))) - - for model, printer in updated_printers: - printer.updateOutputModel(model) - - # Always have an active printer - if self._printers and not self._active_printer: - self.setActivePrinter(self._printers[0]) - - if added_printers or removed_printers: - self.printersChanged.emit() - - ## Updates the local list of print jobs with the list received from the cloud. - # \param jobs: The print jobs received from the cloud. - def _updatePrintJobs(self, jobs: List[CloudClusterPrintJobStatus]) -> None: - received = {j.uuid: j for j in jobs} # type: Dict[str, CloudClusterPrintJobStatus] - previous = {j.key: j for j in self._print_jobs} # type: Dict[str, UM3PrintJobOutputModel] - - removed_jobs, added_jobs, updated_jobs = findChanges(previous, received) - - for removed_job in removed_jobs: - if removed_job.assignedPrinter: - removed_job.assignedPrinter.updateActivePrintJob(None) - removed_job.stateChanged.disconnect(self._onPrintJobStateChanged) - self._print_jobs.remove(removed_job) - - for added_job in added_jobs: - self._addPrintJob(added_job) - - for model, job in updated_jobs: - job.updateOutputModel(model) - if job.printer_uuid: - self._updateAssignedPrinter(model, job.printer_uuid) - - # We only have to update when jobs are added or removed - # updated jobs push their changes via their output model - if added_jobs or removed_jobs: - self.printJobsChanged.emit() - - ## Registers a new print job received via the cloud API. - # \param job: The print job received. - def _addPrintJob(self, job: CloudClusterPrintJobStatus) -> None: - model = job.createOutputModel(CloudOutputController(self)) - model.stateChanged.connect(self._onPrintJobStateChanged) - if job.printer_uuid: - self._updateAssignedPrinter(model, job.printer_uuid) - self._print_jobs.append(model) - - ## Handles the event of a change in a print job state - def _onPrintJobStateChanged(self) -> None: - user_name = self._getUserName() - # TODO: confirm that notifications in Cura are still required - for job in self._print_jobs: - if job.state == "wait_cleanup" and job.key not in self._finished_jobs and job.owner == user_name: - self._finished_jobs.add(job.key) - Message( - title = I18N_CATALOG.i18nc("@info:status", "Print finished"), - text = (I18N_CATALOG.i18nc("@info:status", "Printer '{printer_name}' has finished printing '{job_name}'.").format( - printer_name = job.assignedPrinter.name, - job_name = job.name - ) if job.assignedPrinter else - I18N_CATALOG.i18nc("@info:status", "The print job '{job_name}' was finished.").format( - job_name = job.name - )), - ).show() - - ## Updates the printer assignment for the given print job model. - def _updateAssignedPrinter(self, model: UM3PrintJobOutputModel, printer_uuid: str) -> None: - printer = next((p for p in self._printers if printer_uuid == p.key), None) - if not printer: - Logger.log("w", "Missing printer %s for job %s in %s", model.assignedPrinter, model.key, - [p.key for p in self._printers]) - return - - printer.updateActivePrintJob(model) - model.updateAssignedPrinter(printer) - - ## Uploads the mesh when the print job was registered with the cloud API. - # \param job_response: The response received from the cloud API. - def _onPrintJobCreated(self, job_response: CloudPrintJobResponse) -> None: - self._progress.show() - self._uploaded_print_job = job_response - tool_path = cast(bytes, self._tool_path) - self._api.uploadToolPath(job_response, tool_path, self._onPrintJobUploaded, self._progress.update, self._onUploadError) - - ## Requests the print to be sent to the printer when we finished uploading the mesh. - def _onPrintJobUploaded(self) -> None: - self._progress.update(100) - print_job = cast(CloudPrintJobResponse, self._uploaded_print_job) - self._api.requestPrint(self.key, print_job.job_id, self._onPrintUploadCompleted) - - ## Displays the given message if uploading the mesh has failed - # \param message: The message to display. - def _onUploadError(self, message: str = None) -> None: - self._progress.hide() - self._uploaded_print_job = None - Message( - text = message or I18N_CATALOG.i18nc("@info:text", "Could not upload the data to the printer."), - title = I18N_CATALOG.i18nc("@info:title", "Cloud error"), - lifetime = 10 - ).show() - self.writeError.emit() - - ## Shows a message when the upload has succeeded - # \param response: The response from the cloud API. - def _onPrintUploadCompleted(self, response: CloudPrintResponse) -> None: - Logger.log("d", "The cluster will be printing this print job with the ID %s", response.cluster_job_id) - self._progress.hide() - Message( - text = I18N_CATALOG.i18nc("@info:status", "Print job was successfully sent to the printer."), - title = I18N_CATALOG.i18nc("@info:title", "Data Sent"), - lifetime = 5 - ).show() - self.writeFinished.emit() - - ## Gets the remote printers. - @pyqtProperty("QVariantList", notify=_clusterPrintersChanged) - def printers(self) -> List[PrinterOutputModel]: - return self._printers - - ## Get the active printer in the UI (monitor page). - @pyqtProperty(QObject, notify = activePrinterChanged) - def activePrinter(self) -> Optional[PrinterOutputModel]: - return self._active_printer - - ## Set the active printer in the UI (monitor page). - @pyqtSlot(QObject) - def setActivePrinter(self, printer: Optional[PrinterOutputModel] = None) -> None: - if printer != self._active_printer: - self._active_printer = printer - self.activePrinterChanged.emit() - - @pyqtProperty(int, notify = _clusterPrintersChanged) - def clusterSize(self) -> int: - return len(self._printers) - - ## Get remote print jobs. - @pyqtProperty("QVariantList", notify = printJobsChanged) - def printJobs(self) -> List[UM3PrintJobOutputModel]: - return self._print_jobs - - ## Get remote print jobs that are still in the print queue. - @pyqtProperty("QVariantList", notify = printJobsChanged) - def queuedPrintJobs(self) -> List[UM3PrintJobOutputModel]: - return [print_job for print_job in self._print_jobs - if print_job.state == "queued" or print_job.state == "error"] - - ## Get remote print jobs that are assigned to a printer. - @pyqtProperty("QVariantList", notify = printJobsChanged) - def activePrintJobs(self) -> List[UM3PrintJobOutputModel]: - return [print_job for print_job in self._print_jobs if - print_job.assignedPrinter is not None and print_job.state != "queued"] - - @pyqtSlot(int, result = str) - def formatDuration(self, seconds: int) -> str: - return Duration(seconds).getDisplayString(DurationFormat.Format.Short) - - @pyqtSlot(int, result = str) - def getTimeCompleted(self, time_remaining: int) -> str: - return formatTimeCompleted(time_remaining) - - @pyqtSlot(int, result = str) - def getDateCompleted(self, time_remaining: int) -> str: - return formatDateCompleted(time_remaining) - - ## TODO: The following methods are required by the monitor page QML, but are not actually available using cloud. - # TODO: We fake the methods here to not break the monitor page. - - @pyqtProperty(QUrl, notify = _clusterPrintersChanged) - def activeCameraUrl(self) -> "QUrl": - return QUrl() - - @pyqtSlot(QUrl) - def setActiveCameraUrl(self, camera_url: "QUrl") -> None: - pass - - @pyqtProperty(bool, notify = printJobsChanged) - def receivedPrintJobs(self) -> bool: - return bool(self._print_jobs) - - @pyqtSlot() - def openPrintJobControlPanel(self) -> None: - pass - - @pyqtSlot() - def openPrinterControlPanel(self) -> None: - pass - - @pyqtSlot(str) - def sendJobToTop(self, print_job_uuid: str) -> None: - pass - - @pyqtSlot(str) - def deleteJobFromQueue(self, print_job_uuid: str) -> None: - pass - - @pyqtSlot(str) - def forceSendJob(self, print_job_uuid: str) -> None: - pass - - @pyqtProperty("QVariantList", notify = _clusterPrintersChanged) - def connectedPrintersTypeCount(self) -> List[Dict[str, str]]: - return [] + ## Gets the URL on which to monitor the cluster via the cloud. + @property + def clusterCloudUrl(self) -> str: + root_url_prefix = "-staging" if self._account.is_staging else "" + return "https://mycloud{}.ultimaker.com/app/jobs/{}".format(root_url_prefix, self.clusterData.cluster_id) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py index e081beb99c..ccc64f8073 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py @@ -1,30 +1,29 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Dict, List +from typing import Dict, List, Optional from PyQt5.QtCore import QTimer from UM import i18nCatalog -from UM.Logger import Logger -from UM.Message import Message -from UM.Signal import Signal, signalemitter +from UM.Logger import Logger # To log errors talking to the API. +from UM.Signal import Signal from cura.API import Account from cura.CuraApplication import CuraApplication +from cura.Settings.CuraStackBuilder import CuraStackBuilder from cura.Settings.GlobalStack import GlobalStack + from .CloudApiClient import CloudApiClient from .CloudOutputDevice import CloudOutputDevice -from .Models.CloudClusterResponse import CloudClusterResponse -from .Models.CloudError import CloudError -from .Utils import findChanges +from ..Models.Http.CloudClusterResponse import CloudClusterResponse -## The cloud output device manager is responsible for using the Ultimaker Cloud APIs to manage remote clusters. -# Keeping all cloud related logic in this class instead of the UM3OutputDevicePlugin results in more readable code. -# -# API spec is available on https://api.ultimaker.com/docs/connect/spec/. -# +## The cloud output device manager is responsible for using the Ultimaker Cloud APIs to manage remote clusters. +# Keeping all cloud related logic in this class instead of the UM3OutputDevicePlugin results in more readable code. +# API spec is available on https://api.ultimaker.com/docs/connect/spec/. class CloudOutputDeviceManager: + META_CLUSTER_ID = "um_cloud_cluster_id" + META_NETWORK_KEY = "um_network_key" # The interval with which the remote clusters are checked CHECK_CLUSTER_INTERVAL = 30.0 # seconds @@ -32,144 +31,154 @@ class CloudOutputDeviceManager: # The translation catalog for this device. I18N_CATALOG = i18nCatalog("cura") - addedCloudCluster = Signal() - removedCloudCluster = Signal() + # Signal emitted when the list of discovered devices changed. + discoveredDevicesChanged = Signal() def __init__(self) -> None: # Persistent dict containing the remote clusters for the authenticated user. self._remote_clusters = {} # type: Dict[str, CloudOutputDevice] - - self._application = CuraApplication.getInstance() - self._output_device_manager = self._application.getOutputDeviceManager() - - self._account = self._application.getCuraAPI().account # type: Account - self._api = CloudApiClient(self._account, self._onApiError) + self._account = CuraApplication.getInstance().getCuraAPI().account # type: Account + self._api = CloudApiClient(self._account, on_error = lambda error: Logger.log("e", str(error))) + self._account.loginStateChanged.connect(self._onLoginStateChanged) # Create a timer to update the remote cluster list self._update_timer = QTimer() self._update_timer.setInterval(int(self.CHECK_CLUSTER_INTERVAL * 1000)) self._update_timer.setSingleShot(False) + self._update_timer.timeout.connect(self._getRemoteClusters) + # Ensure we don't start twice. self._running = False - # Called when the uses logs in or out + ## Starts running the cloud output device manager, thus periodically requesting cloud data. + def start(self): + if self._running: + return + if not self._account.isLoggedIn: + return + self._running = True + if not self._update_timer.isActive(): + self._update_timer.start() + self._getRemoteClusters() + + ## Stops running the cloud output device manager. + def stop(self): + if not self._running: + return + self._running = False + if self._update_timer.isActive(): + self._update_timer.stop() + self._onGetRemoteClustersFinished([]) # Make sure we remove all cloud output devices. + + ## Force refreshing connections. + def refreshConnections(self) -> None: + self._connectToActiveMachine() + + ## Called when the uses logs in or out def _onLoginStateChanged(self, is_logged_in: bool) -> None: - Logger.log("d", "Log in state changed to %s", is_logged_in) if is_logged_in: - if not self._update_timer.isActive(): - self._update_timer.start() - self._getRemoteClusters() + self.start() else: - if self._update_timer.isActive(): - self._update_timer.stop() + self.stop() - # Notify that all clusters have disappeared - self._onGetRemoteClustersFinished([]) - - ## Gets all remote clusters from the API. + ## Gets all remote clusters from the API. def _getRemoteClusters(self) -> None: - Logger.log("d", "Retrieving remote clusters") self._api.getClusters(self._onGetRemoteClustersFinished) - ## Callback for when the request for getting the clusters. is finished. + ## Callback for when the request for getting the clusters is finished. def _onGetRemoteClustersFinished(self, clusters: List[CloudClusterResponse]) -> None: online_clusters = {c.cluster_id: c for c in clusters if c.is_online} # type: Dict[str, CloudClusterResponse] + for device_id, cluster_data in online_clusters.items(): + if device_id not in self._remote_clusters: + self._onDeviceDiscovered(cluster_data) + else: + self._onDiscoveredDeviceUpdated(cluster_data) - removed_devices, added_clusters, updates = findChanges(self._remote_clusters, online_clusters) - - Logger.log("d", "Parsed remote clusters to %s", [cluster.toDict() for cluster in online_clusters.values()]) - Logger.log("d", "Removed: %s, added: %s, updates: %s", len(removed_devices), len(added_clusters), len(updates)) - - # Remove output devices that are gone - for removed_cluster in removed_devices: - if removed_cluster.isConnected(): - removed_cluster.disconnect() - removed_cluster.close() - self._output_device_manager.removeOutputDevice(removed_cluster.key) - self.removedCloudCluster.emit() - del self._remote_clusters[removed_cluster.key] - - # Add an output device for each new remote cluster. - # We only add when is_online as we don't want the option in the drop down if the cluster is not online. - for added_cluster in added_clusters: - device = CloudOutputDevice(self._api, added_cluster) - self._remote_clusters[added_cluster.cluster_id] = device - self.addedCloudCluster.emit() - - for device, cluster in updates: - device.clusterData = cluster + removed_device_keys = set(self._remote_clusters.keys()) - set(online_clusters.keys()) + for device_id in removed_device_keys: + self._onDiscoveredDeviceRemoved(device_id) + def _onDeviceDiscovered(self, cluster_data: CloudClusterResponse) -> None: + device = CloudOutputDevice(self._api, cluster_data) + CuraApplication.getInstance().getDiscoveredPrintersModel().addDiscoveredPrinter( + ip_address=device.key, + key=device.getId(), + name=device.getName(), + create_callback=self._createMachineFromDiscoveredDevice, + machine_type=device.printerType, + device=device + ) + self._remote_clusters[device.getId()] = device + self.discoveredDevicesChanged.emit() self._connectToActiveMachine() + def _onDiscoveredDeviceUpdated(self, cluster_data: CloudClusterResponse) -> None: + device = self._remote_clusters.get(cluster_data.cluster_id) + if not device: + return + CuraApplication.getInstance().getDiscoveredPrintersModel().updateDiscoveredPrinter( + ip_address=device.key, + name=cluster_data.friendly_name, + machine_type=device.printerType + ) + self.discoveredDevicesChanged.emit() + + def _onDiscoveredDeviceRemoved(self, device_id: str) -> None: + device = self._remote_clusters.pop(device_id, None) # type: Optional[CloudOutputDevice] + if not device: + return + device.close() + CuraApplication.getInstance().getDiscoveredPrintersModel().removeDiscoveredPrinter(device.key) + output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() + if device.key in output_device_manager.getOutputDeviceIds(): + output_device_manager.removeOutputDevice(device.key) + self.discoveredDevicesChanged.emit() + + def _createMachineFromDiscoveredDevice(self, key: str) -> None: + device = self._remote_clusters[key] + if not device: + return + + # Create a new machine and activate it. + # We do not use use MachineManager.addMachine here because we need to set the cluster ID before activating it. + new_machine = CuraStackBuilder.createMachine(device.name, device.printerType) + if not new_machine: + Logger.log("e", "Failed creating a new machine") + return + new_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key) + CuraApplication.getInstance().getMachineManager().setActiveMachine(new_machine.getId()) + self._connectToOutputDevice(device, new_machine) + ## Callback for when the active machine was changed by the user or a new remote cluster was found. def _connectToActiveMachine(self) -> None: active_machine = CuraApplication.getInstance().getGlobalContainerStack() if not active_machine: return - # Remove all output devices that we have registered. - # This is needed because when we switch machines we can only leave - # output devices that are meant for that machine. - for stored_cluster_id in self._remote_clusters: - self._output_device_manager.removeOutputDevice(stored_cluster_id) - - # Check if the stored cluster_id for the active machine is in our list of remote clusters. + output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() stored_cluster_id = active_machine.getMetaDataEntry(self.META_CLUSTER_ID) - if stored_cluster_id in self._remote_clusters: - device = self._remote_clusters[stored_cluster_id] - self._connectToOutputDevice(device, active_machine) - Logger.log("d", "Device connected by metadata cluster ID %s", stored_cluster_id) - else: - self._connectByNetworkKey(active_machine) - - ## Tries to match the local network key to the cloud cluster host name. - def _connectByNetworkKey(self, active_machine: GlobalStack) -> None: - # Check if the active printer has a local network connection and match this key to the remote cluster. - local_network_key = active_machine.getMetaDataEntry("um_network_key") - if not local_network_key: - return - - device = next((c for c in self._remote_clusters.values() if c.matchesNetworkKey(local_network_key)), None) - if not device: - return - - Logger.log("i", "Found cluster %s with network key %s", device, local_network_key) - active_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key) - self._connectToOutputDevice(device, active_machine) + local_network_key = active_machine.getMetaDataEntry(self.META_NETWORK_KEY) + for device in self._remote_clusters.values(): + if device.key == stored_cluster_id: + # Connect to it if the stored ID matches. + self._connectToOutputDevice(device, active_machine) + elif local_network_key and device.matchesNetworkKey(local_network_key): + # Connect to it if we can match the local network key that was already present. + self._connectToOutputDevice(device, active_machine) + elif device.key in output_device_manager.getOutputDeviceIds(): + # Remove device if it is not meant for the active machine. + output_device_manager.removeOutputDevice(device.key) ## Connects to an output device and makes sure it is registered in the output device manager. - def _connectToOutputDevice(self, device: CloudOutputDevice, active_machine: GlobalStack) -> None: - device.connect() - self._output_device_manager.addOutputDevice(device) - active_machine.addConfiguredConnectionType(device.connectionType.value) + def _connectToOutputDevice(self, device: CloudOutputDevice, machine: GlobalStack) -> None: + machine.setName(device.name) + machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key) + machine.setMetaDataEntry("group_name", device.name) + machine.addConfiguredConnectionType(device.connectionType.value) - ## Handles an API error received from the cloud. - # \param errors: The errors received - def _onApiError(self, errors: List[CloudError] = None) -> None: - Logger.log("w", str(errors)) - message = Message( - text = self.I18N_CATALOG.i18nc("@info:description", "There was an error connecting to the cloud."), - title = self.I18N_CATALOG.i18nc("@info:title", "Error"), - lifetime = 10 - ) - message.show() + if not device.isConnected(): + device.connect() - ## Starts running the cloud output device manager, thus periodically requesting cloud data. - def start(self): - if self._running: - return - self._account.loginStateChanged.connect(self._onLoginStateChanged) - # When switching machines we check if we have to activate a remote cluster. - self._application.globalContainerStackChanged.connect(self._connectToActiveMachine) - self._update_timer.timeout.connect(self._getRemoteClusters) - self._onLoginStateChanged(is_logged_in = self._account.isLoggedIn) - - ## Stops running the cloud output device manager. - def stop(self): - if not self._running: - return - self._account.loginStateChanged.disconnect(self._onLoginStateChanged) - # When switching machines we check if we have to activate a remote cluster. - self._application.globalContainerStackChanged.disconnect(self._connectToActiveMachine) - self._update_timer.timeout.disconnect(self._getRemoteClusters) - self._onLoginStateChanged(is_logged_in = False) + output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() + if device.key not in output_device_manager.getOutputDeviceIds(): + output_device_manager.addOutputDevice(device) \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterBuildPlate.py b/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterBuildPlate.py deleted file mode 100644 index 4386bbb435..0000000000 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterBuildPlate.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -from .BaseCloudModel import BaseCloudModel - - -## Class representing a cluster printer -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterBuildPlate(BaseCloudModel): - ## Create a new build plate - # \param type: The type of buildplate glass or aluminium - def __init__(self, type: str = "glass", **kwargs) -> None: - self.type = type - super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterConfigurationMaterial.py b/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterConfigurationMaterial.py deleted file mode 100644 index 652cbdabda..0000000000 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterConfigurationMaterial.py +++ /dev/null @@ -1,55 +0,0 @@ -from typing import Optional - -from UM.Logger import Logger -from cura.CuraApplication import CuraApplication -from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel -from .BaseCloudModel import BaseCloudModel - - -## Class representing a cloud cluster printer configuration -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterPrinterConfigurationMaterial(BaseCloudModel): - ## Creates a new material configuration model. - # \param brand: The brand of material in this print core, e.g. 'Ultimaker'. - # \param color: The color of material in this print core, e.g. 'Blue'. - # \param guid: he GUID of the material in this print core, e.g. '506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9'. - # \param material: The type of material in this print core, e.g. 'PLA'. - def __init__(self, brand: Optional[str] = None, color: Optional[str] = None, guid: Optional[str] = None, - material: Optional[str] = None, **kwargs) -> None: - self.guid = guid - self.brand = brand - self.color = color - self.material = material - super().__init__(**kwargs) - - ## Creates a material output model based on this cloud printer material. - def createOutputModel(self) -> MaterialOutputModel: - material_manager = CuraApplication.getInstance().getMaterialManager() - material_group_list = material_manager.getMaterialGroupListByGUID(self.guid) or [] - - # Sort the material groups by "is_read_only = True" first, and then the name alphabetically. - read_only_material_group_list = list(filter(lambda x: x.is_read_only, material_group_list)) - non_read_only_material_group_list = list(filter(lambda x: not x.is_read_only, material_group_list)) - material_group = None - if read_only_material_group_list: - read_only_material_group_list = sorted(read_only_material_group_list, key = lambda x: x.name) - material_group = read_only_material_group_list[0] - elif non_read_only_material_group_list: - non_read_only_material_group_list = sorted(non_read_only_material_group_list, key = lambda x: x.name) - material_group = non_read_only_material_group_list[0] - - if material_group: - container = material_group.root_material_node.getContainer() - color = container.getMetaDataEntry("color_code") - brand = container.getMetaDataEntry("brand") - material_type = container.getMetaDataEntry("material") - name = container.getName() - else: - Logger.log("w", "Unable to find material with guid {guid}. Using data as provided by cluster" - .format(guid = self.guid)) - color = self.color - brand = self.brand - material_type = self.material - name = "Empty" if self.material == "empty" else "Unknown" - - return MaterialOutputModel(guid = self.guid, type = material_type, brand = brand, color = color, name = name) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterStatus.py b/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterStatus.py deleted file mode 100644 index bd3e482bde..0000000000 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterStatus.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -from typing import List, Union, Dict, Optional, Any - -from cura.PrinterOutput.PrinterOutputController import PrinterOutputController -from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel -from .CloudClusterBuildPlate import CloudClusterBuildPlate -from .CloudClusterPrintCoreConfiguration import CloudClusterPrintCoreConfiguration -from .BaseCloudModel import BaseCloudModel - - -## Class representing a cluster printer -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterPrinterStatus(BaseCloudModel): - ## Creates a new cluster printer status - # \param enabled: A printer can be disabled if it should not receive new jobs. By default every printer is enabled. - # \param firmware_version: Firmware version installed on the printer. Can differ for each printer in a cluster. - # \param friendly_name: Human readable name of the printer. Can be used for identification purposes. - # \param ip_address: The IP address of the printer in the local network. - # \param machine_variant: The type of printer. Can be 'Ultimaker 3' or 'Ultimaker 3ext'. - # \param status: The status of the printer. - # \param unique_name: The unique name of the printer in the network. - # \param uuid: The unique ID of the printer, also known as GUID. - # \param configuration: The active print core configurations of this printer. - # \param reserved_by: A printer can be claimed by a specific print job. - # \param maintenance_required: Indicates if maintenance is necessary - # \param firmware_update_status: Whether the printer's firmware is up-to-date, value is one of: "up_to_date", - # "pending_update", "update_available", "update_in_progress", "update_failed", "update_impossible" - # \param latest_available_firmware: The version of the latest firmware that is available - # \param build_plate: The build plate that is on the printer - def __init__(self, enabled: bool, firmware_version: str, friendly_name: str, ip_address: str, machine_variant: str, - status: str, unique_name: str, uuid: str, - configuration: List[Union[Dict[str, Any], CloudClusterPrintCoreConfiguration]], - reserved_by: Optional[str] = None, maintenance_required: Optional[bool] = None, - firmware_update_status: Optional[str] = None, latest_available_firmware: Optional[str] = None, - build_plate: Union[Dict[str, Any], CloudClusterBuildPlate] = None, **kwargs) -> None: - - self.configuration = self.parseModels(CloudClusterPrintCoreConfiguration, configuration) - self.enabled = enabled - self.firmware_version = firmware_version - self.friendly_name = friendly_name - self.ip_address = ip_address - self.machine_variant = machine_variant - self.status = status - self.unique_name = unique_name - self.uuid = uuid - self.reserved_by = reserved_by - self.maintenance_required = maintenance_required - self.firmware_update_status = firmware_update_status - self.latest_available_firmware = latest_available_firmware - self.build_plate = self.parseModel(CloudClusterBuildPlate, build_plate) if build_plate else None - super().__init__(**kwargs) - - ## Creates a new output model. - # \param controller - The controller of the model. - def createOutputModel(self, controller: PrinterOutputController) -> PrinterOutputModel: - model = PrinterOutputModel(controller, len(self.configuration), firmware_version = self.firmware_version) - self.updateOutputModel(model) - return model - - ## Updates the given output model. - # \param model - The output model to update. - def updateOutputModel(self, model: PrinterOutputModel) -> None: - model.updateKey(self.uuid) - model.updateName(self.friendly_name) - model.updateType(self.machine_variant) - model.updateState(self.status if self.enabled else "disabled") - model.updateBuildplate(self.build_plate.type if self.build_plate else "glass") - - for configuration, extruder_output, extruder_config in \ - zip(self.configuration, model.extruders, model.printerConfiguration.extruderConfigurations): - configuration.updateOutputModel(extruder_output) - configuration.updateConfigurationModel(extruder_config) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/__init__.py b/plugins/UM3NetworkPrinting/src/Cloud/Models/__init__.py deleted file mode 100644 index f3f6970c54..0000000000 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. diff --git a/plugins/UM3NetworkPrinting/src/Cloud/ToolPathUploader.py b/plugins/UM3NetworkPrinting/src/Cloud/ToolPathUploader.py index 176b7e6ab7..d5de7fe10a 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/ToolPathUploader.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/ToolPathUploader.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # !/usr/bin/env python # -*- coding: utf-8 -*- from PyQt5.QtCore import QUrl @@ -6,7 +6,8 @@ from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply, QNetworkAccessManage from typing import Optional, Callable, Any, Tuple, cast from UM.Logger import Logger -from .Models.CloudPrintJobResponse import CloudPrintJobResponse + +from ..Models.Http.CloudPrintJobResponse import CloudPrintJobResponse ## Class responsible for uploading meshes to the cloud in separate requests. @@ -53,7 +54,7 @@ class ToolPathUploader: def _createRequest(self) -> QNetworkRequest: request = QNetworkRequest(QUrl(self._print_job.upload_url)) request.setHeader(QNetworkRequest.ContentTypeHeader, self._print_job.content_type) - + first_byte, last_byte = self._chunkRange() content_range = "bytes {}-{}/{}".format(first_byte, last_byte - 1, len(self._data)) request.setRawHeader(b"Content-Range", content_range.encode()) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Utils.py b/plugins/UM3NetworkPrinting/src/Cloud/Utils.py deleted file mode 100644 index 5136e0e7db..0000000000 --- a/plugins/UM3NetworkPrinting/src/Cloud/Utils.py +++ /dev/null @@ -1,54 +0,0 @@ -from datetime import datetime, timedelta -from typing import TypeVar, Dict, Tuple, List - -from UM import i18nCatalog - -T = TypeVar("T") -U = TypeVar("U") - - -## Splits the given dictionaries into three lists (in a tuple): -# - `removed`: Items that were in the first argument but removed in the second one. -# - `added`: Items that were not in the first argument but were included in the second one. -# - `updated`: Items that were in both dictionaries. Both values are given in a tuple. -# \param previous: The previous items -# \param received: The received items -# \return: The tuple (removed, added, updated) as explained above. -def findChanges(previous: Dict[str, T], received: Dict[str, U]) -> Tuple[List[T], List[U], List[Tuple[T, U]]]: - previous_ids = set(previous) - received_ids = set(received) - - removed_ids = previous_ids.difference(received_ids) - new_ids = received_ids.difference(previous_ids) - updated_ids = received_ids.intersection(previous_ids) - - removed = [previous[removed_id] for removed_id in removed_ids] - added = [received[new_id] for new_id in new_ids] - updated = [(previous[updated_id], received[updated_id]) for updated_id in updated_ids] - - return removed, added, updated - - -def formatTimeCompleted(seconds_remaining: int) -> str: - completed = datetime.now() + timedelta(seconds=seconds_remaining) - return "{hour:02d}:{minute:02d}".format(hour = completed.hour, minute = completed.minute) - - -def formatDateCompleted(seconds_remaining: int) -> str: - now = datetime.now() - completed = now + timedelta(seconds=seconds_remaining) - days = (completed.date() - now.date()).days - i18n = i18nCatalog("cura") - - # If finishing date is more than 7 days out, using "Mon Dec 3 at HH:MM" format - if days >= 7: - return completed.strftime("%a %b ") + "{day}".format(day = completed.day) - # If finishing date is within the next week, use "Monday at HH:MM" format - elif days >= 2: - return completed.strftime("%a") - # If finishing tomorrow, use "tomorrow at HH:MM" format - elif days >= 1: - return i18n.i18nc("@info:status", "tomorrow") - # If finishing today, use "today at HH:MM" format - else: - return i18n.i18nc("@info:status", "today") diff --git a/plugins/UM3NetworkPrinting/src/ClusterOutputController.py b/plugins/UM3NetworkPrinting/src/ClusterOutputController.py new file mode 100644 index 0000000000..02d8d174d1 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/ClusterOutputController.py @@ -0,0 +1,21 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel +from cura.PrinterOutput.PrinterOutputController import PrinterOutputController +from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice + + +class ClusterOutputController(PrinterOutputController): + + def __init__(self, output_device: PrinterOutputDevice) -> None: + super().__init__(output_device) + self.can_pause = True + self.can_abort = True + self.can_pre_heat_bed = False + self.can_pre_heat_hotends = False + self.can_send_raw_gcode = False + self.can_control_manually = False + self.can_update_firmware = False + + def setJobState(self, job: PrintJobOutputModel, state: str): + self._output_device.setJobState(job.key, state) diff --git a/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py b/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py deleted file mode 100644 index c1a6362455..0000000000 --- a/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py +++ /dev/null @@ -1,697 +0,0 @@ -# Copyright (c) 2019 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from typing import Any, cast, Tuple, Union, Optional, Dict, List -from time import time - -import io # To create the correct buffers for sending data to the printer. -import json -import os - -from UM.FileHandler.FileHandler import FileHandler -from UM.FileHandler.WriteFileJob import WriteFileJob # To call the file writer asynchronously. -from UM.Logger import Logger -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.i18n import i18nCatalog -from UM.Qt.Duration import Duration, DurationFormat - -from UM.Message import Message -from UM.Scene.SceneNode import SceneNode # For typing. - -from cura.CuraApplication import CuraApplication -from cura.PrinterOutput.ConfigurationModel import ConfigurationModel -from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel -from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState, NetworkedPrinterOutputDevice -from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel -from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel -from cura.PrinterOutputDevice import ConnectionType - -from .Cloud.Utils import formatTimeCompleted, formatDateCompleted -from .ClusterUM3PrinterOutputController import ClusterUM3PrinterOutputController -from .ConfigurationChangeModel import ConfigurationChangeModel -from .MeshFormatHandler import MeshFormatHandler -from .SendMaterialJob import SendMaterialJob -from .UM3PrintJobOutputModel import UM3PrintJobOutputModel - -from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply -from PyQt5.QtGui import QDesktopServices, QImage -from PyQt5.QtCore import pyqtSlot, QUrl, pyqtSignal, pyqtProperty, QObject - -i18n_catalog = i18nCatalog("cura") - - -class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): - printJobsChanged = pyqtSignal() - activePrinterChanged = pyqtSignal() - activeCameraUrlChanged = pyqtSignal() - receivedPrintJobsChanged = pyqtSignal() - - # Notify can only use signals that are defined by the class that they are in, not inherited ones. - # Therefore we create a private signal used to trigger the printersChanged signal. - _clusterPrintersChanged = pyqtSignal() - - def __init__(self, device_id, address, properties, parent = None) -> None: - super().__init__(device_id = device_id, address = address, properties=properties, connection_type = ConnectionType.NetworkConnection, parent = parent) - self._api_prefix = "/cluster-api/v1/" - - self._application = CuraApplication.getInstance() - - self._number_of_extruders = 2 - - self._dummy_lambdas = ( - "", {}, io.BytesIO() - ) # type: Tuple[Optional[str], Dict[str, Union[str, int, bool]], Union[io.StringIO, io.BytesIO]] - - self._print_jobs = [] # type: List[UM3PrintJobOutputModel] - self._received_print_jobs = False # type: bool - - self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../resources/qml/MonitorStage.qml") - - # Trigger the printersChanged signal when the private signal is triggered - self.printersChanged.connect(self._clusterPrintersChanged) - - self._accepts_commands = True # type: bool - - # Cluster does not have authentication, so default to authenticated - self._authentication_state = AuthState.Authenticated - - self._error_message = None # type: Optional[Message] - self._write_job_progress_message = None # type: Optional[Message] - self._progress_message = None # type: Optional[Message] - - self._active_printer = None # type: Optional[PrinterOutputModel] - - self._printer_selection_dialog = None # type: QObject - - self.setPriority(3) # Make sure the output device gets selected above local file output - self.setName(self._id) - self.setShortDescription(i18n_catalog.i18nc("@action:button Preceded by 'Ready to'.", "Print over network")) - self.setDescription(i18n_catalog.i18nc("@properties:tooltip", "Print over network")) - - self.setConnectionText(i18n_catalog.i18nc("@info:status", "Connected over the network")) - - self._printer_uuid_to_unique_name_mapping = {} # type: Dict[str, str] - - self._finished_jobs = [] # type: List[UM3PrintJobOutputModel] - - self._cluster_size = int(properties.get(b"cluster_size", 0)) # type: int - - self._latest_reply_handler = None # type: Optional[QNetworkReply] - self._sending_job = None - - self._active_camera_url = QUrl() # type: QUrl - - def requestWrite(self, nodes: List[SceneNode], file_name: Optional[str] = None, limit_mimetypes: bool = False, - file_handler: Optional[FileHandler] = None, **kwargs: str) -> None: - self.writeStarted.emit(self) - - self.sendMaterialProfiles() - - mesh_format = MeshFormatHandler(file_handler, self.firmwareVersion) - - # This function pauses with the yield, waiting on instructions on which printer it needs to print with. - if not mesh_format.is_valid: - Logger.log("e", "Missing file or mesh writer!") - return - self._sending_job = self._sendPrintJob(mesh_format, nodes) - if self._sending_job is not None: - self._sending_job.send(None) # Start the generator. - - if len(self._printers) > 1: # We need to ask the user. - self._spawnPrinterSelectionDialog() - is_job_sent = True - else: # Just immediately continue. - self._sending_job.send("") # No specifically selected printer. - is_job_sent = self._sending_job.send(None) - - def _spawnPrinterSelectionDialog(self): - if self._printer_selection_dialog is None: - path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../resources/qml/PrintWindow.qml") - self._printer_selection_dialog = self._application.createQmlComponent(path, {"OutputDevice": self}) - if self._printer_selection_dialog is not None: - self._printer_selection_dialog.show() - - @pyqtProperty(int, constant=True) - def clusterSize(self) -> int: - return self._cluster_size - - ## Allows the user to choose a printer to print with from the printer - # selection dialogue. - # \param target_printer The name of the printer to target. - @pyqtSlot(str) - def selectPrinter(self, target_printer: str = "") -> None: - if self._sending_job is not None: - self._sending_job.send(target_printer) - - @pyqtSlot() - def cancelPrintSelection(self) -> None: - self._sending_gcode = False - - ## Greenlet to send a job to the printer over the network. - # - # This greenlet gets called asynchronously in requestWrite. It is a - # greenlet in order to optionally wait for selectPrinter() to select a - # printer. - # The greenlet yields exactly three times: First time None, - # \param mesh_format Object responsible for choosing the right kind of format to write with. - def _sendPrintJob(self, mesh_format: MeshFormatHandler, nodes: List[SceneNode]): - Logger.log("i", "Sending print job to printer.") - if self._sending_gcode: - self._error_message = Message( - i18n_catalog.i18nc("@info:status", - "Sending new jobs (temporarily) blocked, still sending the previous print job.")) - self._error_message.show() - yield #Wait on the user to select a target printer. - yield #Wait for the write job to be finished. - yield False #Return whether this was a success or not. - yield #Prevent StopIteration. - - self._sending_gcode = True - - # Potentially wait on the user to select a target printer. - target_printer = yield # type: Optional[str] - - # Using buffering greatly reduces the write time for many lines of gcode - - stream = mesh_format.createStream() - - job = WriteFileJob(mesh_format.writer, stream, nodes, mesh_format.file_mode) - - self._write_job_progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), - lifetime = 0, dismissable = False, progress = -1, - title = i18n_catalog.i18nc("@info:title", "Sending Data"), - use_inactivity_timer = False) - self._write_job_progress_message.show() - - if mesh_format.preferred_format is not None: - self._dummy_lambdas = (target_printer, mesh_format.preferred_format, stream) - job.finished.connect(self._sendPrintJobWaitOnWriteJobFinished) - job.start() - yield True # Return that we had success! - yield # To prevent having to catch the StopIteration exception. - - def _sendPrintJobWaitOnWriteJobFinished(self, job: WriteFileJob) -> None: - if self._write_job_progress_message: - self._write_job_progress_message.hide() - - self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), lifetime = 0, - dismissable = False, progress = -1, - title = i18n_catalog.i18nc("@info:title", "Sending Data")) - self._progress_message.addAction("Abort", i18n_catalog.i18nc("@action:button", "Cancel"), icon = "", - description = "") - self._progress_message.actionTriggered.connect(self._progressMessageActionTriggered) - self._progress_message.show() - parts = [] - - target_printer, preferred_format, stream = self._dummy_lambdas - - # If a specific printer was selected, it should be printed with that machine. - if target_printer: - target_printer = self._printer_uuid_to_unique_name_mapping[target_printer] - parts.append(self._createFormPart("name=require_printer_name", bytes(target_printer, "utf-8"), "text/plain")) - - # Add user name to the print_job - parts.append(self._createFormPart("name=owner", bytes(self._getUserName(), "utf-8"), "text/plain")) - - file_name = self._application.getPrintInformation().jobName + "." + preferred_format["extension"] - - output = stream.getvalue() # Either str or bytes depending on the output mode. - if isinstance(stream, io.StringIO): - output = cast(str, output).encode("utf-8") - output = cast(bytes, output) - - parts.append(self._createFormPart("name=\"file\"; filename=\"%s\"" % file_name, output)) - - self._latest_reply_handler = self.postFormWithParts("print_jobs/", parts, - on_finished = self._onPostPrintJobFinished, - on_progress = self._onUploadPrintJobProgress) - - @pyqtProperty(QObject, notify = activePrinterChanged) - def activePrinter(self) -> Optional[PrinterOutputModel]: - return self._active_printer - - @pyqtSlot(QObject) - def setActivePrinter(self, printer: Optional[PrinterOutputModel]) -> None: - if self._active_printer != printer: - self._active_printer = printer - self.activePrinterChanged.emit() - - @pyqtProperty(QUrl, notify = activeCameraUrlChanged) - def activeCameraUrl(self) -> "QUrl": - return self._active_camera_url - - @pyqtSlot(QUrl) - def setActiveCameraUrl(self, camera_url: "QUrl") -> None: - if self._active_camera_url != camera_url: - self._active_camera_url = camera_url - self.activeCameraUrlChanged.emit() - - def _onPostPrintJobFinished(self, reply: QNetworkReply) -> None: - if self._progress_message: - self._progress_message.hide() - self._compressing_gcode = False - self._sending_gcode = False - - ## The IP address of the printer. - @pyqtProperty(str, constant = True) - def address(self) -> str: - return self._address - - def _onUploadPrintJobProgress(self, bytes_sent: int, bytes_total: int) -> None: - if bytes_total > 0: - new_progress = bytes_sent / bytes_total * 100 - # Treat upload progress as response. Uploading can take more than 10 seconds, so if we don't, we can get - # timeout responses if this happens. - self._last_response_time = time() - if self._progress_message is not None and new_progress != self._progress_message.getProgress(): - self._progress_message.show() # Ensure that the message is visible. - self._progress_message.setProgress(bytes_sent / bytes_total * 100) - - # If successfully sent: - if bytes_sent == bytes_total: - # Show a confirmation to the user so they know the job was sucessful and provide the option to switch to - # the monitor tab. - self._success_message = Message( - i18n_catalog.i18nc("@info:status", "Print job was successfully sent to the printer."), - lifetime=5, dismissable=True, - title=i18n_catalog.i18nc("@info:title", "Data Sent")) - self._success_message.addAction("View", i18n_catalog.i18nc("@action:button", "View in Monitor"), icon = "", - description="") - self._success_message.actionTriggered.connect(self._successMessageActionTriggered) - self._success_message.show() - else: - if self._progress_message is not None: - self._progress_message.setProgress(0) - self._progress_message.hide() - - def _progressMessageActionTriggered(self, message_id: Optional[str] = None, action_id: Optional[str] = None) -> None: - if action_id == "Abort": - Logger.log("d", "User aborted sending print to remote.") - if self._progress_message is not None: - self._progress_message.hide() - self._compressing_gcode = False - self._sending_gcode = False - self._application.getController().setActiveStage("PrepareStage") - - # After compressing the sliced model Cura sends data to printer, to stop receiving updates from the request - # the "reply" should be disconnected - if self._latest_reply_handler: - self._latest_reply_handler.disconnect() - self._latest_reply_handler = None - - def _successMessageActionTriggered(self, message_id: Optional[str] = None, action_id: Optional[str] = None) -> None: - if action_id == "View": - self._application.getController().setActiveStage("MonitorStage") - - @pyqtSlot() - def openPrintJobControlPanel(self) -> None: - Logger.log("d", "Opening print job control panel...") - QDesktopServices.openUrl(QUrl("http://" + self._address + "/print_jobs")) - - @pyqtSlot() - def openPrinterControlPanel(self) -> None: - Logger.log("d", "Opening printer control panel...") - QDesktopServices.openUrl(QUrl("http://" + self._address + "/printers")) - - @pyqtProperty("QVariantList", notify = printJobsChanged) - def printJobs(self)-> List[UM3PrintJobOutputModel]: - return self._print_jobs - - @pyqtProperty(bool, notify = receivedPrintJobsChanged) - def receivedPrintJobs(self) -> bool: - return self._received_print_jobs - - @pyqtProperty("QVariantList", notify = printJobsChanged) - def queuedPrintJobs(self) -> List[UM3PrintJobOutputModel]: - return [print_job for print_job in self._print_jobs if print_job.state == "queued" or print_job.state == "error"] - - @pyqtProperty("QVariantList", notify = printJobsChanged) - def activePrintJobs(self) -> List[UM3PrintJobOutputModel]: - return [print_job for print_job in self._print_jobs if print_job.assignedPrinter is not None and print_job.state != "queued"] - - @pyqtProperty("QVariantList", notify = _clusterPrintersChanged) - def connectedPrintersTypeCount(self) -> List[Dict[str, str]]: - printer_count = {} # type: Dict[str, int] - for printer in self._printers: - if printer.type in printer_count: - printer_count[printer.type] += 1 - else: - printer_count[printer.type] = 1 - result = [] - for machine_type in printer_count: - result.append({"machine_type": machine_type, "count": str(printer_count[machine_type])}) - return result - - @pyqtProperty("QVariantList", notify=_clusterPrintersChanged) - def printers(self): - return self._printers - - @pyqtSlot(int, result = str) - def getTimeCompleted(self, time_remaining: int) -> str: - return formatTimeCompleted(time_remaining) - - @pyqtSlot(int, result = str) - def getDateCompleted(self, time_remaining: int) -> str: - return formatDateCompleted(time_remaining) - - @pyqtSlot(int, result = str) - def formatDuration(self, seconds: int) -> str: - return Duration(seconds).getDisplayString(DurationFormat.Format.Short) - - @pyqtSlot(str) - def sendJobToTop(self, print_job_uuid: str) -> None: - # This function is part of the output device (and not of the printjob output model) as this type of operation - # is a modification of the cluster queue and not of the actual job. - data = "{\"to_position\": 0}" - self.put("print_jobs/{uuid}/move_to_position".format(uuid = print_job_uuid), data, on_finished=None) - - @pyqtSlot(str) - def deleteJobFromQueue(self, print_job_uuid: str) -> None: - # This function is part of the output device (and not of the printjob output model) as this type of operation - # is a modification of the cluster queue and not of the actual job. - self.delete("print_jobs/{uuid}".format(uuid = print_job_uuid), on_finished=None) - - @pyqtSlot(str) - def forceSendJob(self, print_job_uuid: str) -> None: - data = "{\"force\": true}" - self.put("print_jobs/{uuid}".format(uuid=print_job_uuid), data, on_finished=None) - - def _printJobStateChanged(self) -> None: - username = self._getUserName() - - if username is None: - return # We only want to show notifications if username is set. - - finished_jobs = [job for job in self._print_jobs if job.state == "wait_cleanup"] - - newly_finished_jobs = [job for job in finished_jobs if job not in self._finished_jobs and job.owner == username] - for job in newly_finished_jobs: - if job.assignedPrinter: - job_completed_text = i18n_catalog.i18nc("@info:status", "Printer '{printer_name}' has finished printing '{job_name}'.".format(printer_name=job.assignedPrinter.name, job_name = job.name)) - else: - job_completed_text = i18n_catalog.i18nc("@info:status", "The print job '{job_name}' was finished.".format(job_name = job.name)) - job_completed_message = Message(text=job_completed_text, title = i18n_catalog.i18nc("@info:status", "Print finished")) - job_completed_message.show() - - # Ensure UI gets updated - self.printJobsChanged.emit() - - # Keep a list of all completed jobs so we know if something changed next time. - self._finished_jobs = finished_jobs - - ## Called when the connection to the cluster changes. - def connect(self) -> None: - super().connect() - self.sendMaterialProfiles() - - def _onGetPreviewImageFinished(self, reply: QNetworkReply) -> None: - reply_url = reply.url().toString() - - uuid = reply_url[reply_url.find("print_jobs/")+len("print_jobs/"):reply_url.rfind("/preview_image")] - - print_job = findByKey(self._print_jobs, uuid) - if print_job: - image = QImage() - image.loadFromData(reply.readAll()) - print_job.updatePreviewImage(image) - - def _update(self) -> None: - super()._update() - self.get("printers/", on_finished = self._onGetPrintersDataFinished) - self.get("print_jobs/", on_finished = self._onGetPrintJobsFinished) - - for print_job in self._print_jobs: - if print_job.getPreviewImage() is None: - self.get("print_jobs/{uuid}/preview_image".format(uuid=print_job.key), on_finished=self._onGetPreviewImageFinished) - - def _onGetPrintJobsFinished(self, reply: QNetworkReply) -> None: - self._received_print_jobs = True - self.receivedPrintJobsChanged.emit() - - if not checkValidGetReply(reply): - return - - result = loadJsonFromReply(reply) - if result is None: - return - - print_jobs_seen = [] - job_list_changed = False - for idx, print_job_data in enumerate(result): - print_job = findByKey(self._print_jobs, print_job_data["uuid"]) - if print_job is None: - print_job = self._createPrintJobModel(print_job_data) - job_list_changed = True - elif not job_list_changed: - # Check if the order of the jobs has changed since the last check - if self._print_jobs.index(print_job) != idx: - job_list_changed = True - - self._updatePrintJob(print_job, print_job_data) - - if print_job.state != "queued" and print_job.state != "error": # Print job should be assigned to a printer. - if print_job.state in ["failed", "finished", "aborted", "none"]: - # Print job was already completed, so don't attach it to a printer. - printer = None - else: - printer = self._getPrinterByKey(print_job_data["printer_uuid"]) - else: # The job can "reserve" a printer if some changes are required. - printer = self._getPrinterByKey(print_job_data["assigned_to"]) - - if printer: - printer.updateActivePrintJob(print_job) - - print_jobs_seen.append(print_job) - - # Check what jobs need to be removed. - removed_jobs = [print_job for print_job in self._print_jobs if print_job not in print_jobs_seen] - - for removed_job in removed_jobs: - job_list_changed = job_list_changed or self._removeJob(removed_job) - - if job_list_changed: - # Override the old list with the new list (either because jobs were removed / added or order changed) - self._print_jobs = print_jobs_seen - self.printJobsChanged.emit() # Do a single emit for all print job changes. - - def _onGetPrintersDataFinished(self, reply: QNetworkReply) -> None: - if not checkValidGetReply(reply): - return - - result = loadJsonFromReply(reply) - if result is None: - return - - printer_list_changed = False - printers_seen = [] - - for printer_data in result: - printer = findByKey(self._printers, printer_data["uuid"]) - - if printer is None: - printer = self._createPrinterModel(printer_data) - printer_list_changed = True - - printers_seen.append(printer) - - self._updatePrinter(printer, printer_data) - - removed_printers = [printer for printer in self._printers if printer not in printers_seen] - for printer in removed_printers: - self._removePrinter(printer) - - if removed_printers or printer_list_changed: - self.printersChanged.emit() - - def _createPrinterModel(self, data: Dict[str, Any]) -> PrinterOutputModel: - printer = PrinterOutputModel(output_controller = ClusterUM3PrinterOutputController(self), - number_of_extruders = self._number_of_extruders) - printer.setCameraUrl(QUrl("http://" + data["ip_address"] + ":8080/?action=stream")) - self._printers.append(printer) - return printer - - def _createPrintJobModel(self, data: Dict[str, Any]) -> UM3PrintJobOutputModel: - print_job = UM3PrintJobOutputModel(output_controller=ClusterUM3PrinterOutputController(self), - key=data["uuid"], name= data["name"]) - - configuration = ConfigurationModel() - extruders = [ExtruderConfigurationModel(position = idx) for idx in range(0, self._number_of_extruders)] - for index in range(0, self._number_of_extruders): - try: - extruder_data = data["configuration"][index] - except IndexError: - continue - extruder = extruders[int(data["configuration"][index]["extruder_index"])] - extruder.setHotendID(extruder_data.get("print_core_id", "")) - extruder.setMaterial(self._createMaterialOutputModel(extruder_data.get("material", {}))) - - configuration.setExtruderConfigurations(extruders) - print_job.updateConfiguration(configuration) - print_job.setCompatibleMachineFamilies(data.get("compatible_machine_families", [])) - print_job.stateChanged.connect(self._printJobStateChanged) - return print_job - - def _updatePrintJob(self, print_job: UM3PrintJobOutputModel, data: Dict[str, Any]) -> None: - print_job.updateTimeTotal(data["time_total"]) - print_job.updateTimeElapsed(data["time_elapsed"]) - impediments_to_printing = data.get("impediments_to_printing", []) - print_job.updateOwner(data["owner"]) - - status_set_by_impediment = False - for impediment in impediments_to_printing: - if impediment["severity"] == "UNFIXABLE": - status_set_by_impediment = True - print_job.updateState("error") - break - - if not status_set_by_impediment: - print_job.updateState(data["status"]) - - print_job.updateConfigurationChanges(self._createConfigurationChanges(data["configuration_changes_required"])) - - def _createConfigurationChanges(self, data: List[Dict[str, Any]]) -> List[ConfigurationChangeModel]: - result = [] - for change in data: - result.append(ConfigurationChangeModel(type_of_change=change["type_of_change"], - index=change["index"], - target_name=change["target_name"], - origin_name=change["origin_name"])) - return result - - def _createMaterialOutputModel(self, material_data: Dict[str, Any]) -> "MaterialOutputModel": - material_manager = self._application.getMaterialManager() - material_group_list = None - - # Avoid crashing if there is no "guid" field in the metadata - material_guid = material_data.get("guid") - if material_guid: - material_group_list = material_manager.getMaterialGroupListByGUID(material_guid) - - # This can happen if the connected machine has no material in one or more extruders (if GUID is empty), or the - # material is unknown to Cura, so we should return an "empty" or "unknown" material model. - if material_group_list is None: - material_name = i18n_catalog.i18nc("@label:material", "Empty") if len(material_data.get("guid", "")) == 0 \ - else i18n_catalog.i18nc("@label:material", "Unknown") - - return MaterialOutputModel(guid = material_data.get("guid", ""), - type = material_data.get("material", ""), - color = material_data.get("color", ""), - brand = material_data.get("brand", ""), - name = material_data.get("name", material_name) - ) - - # Sort the material groups by "is_read_only = True" first, and then the name alphabetically. - read_only_material_group_list = list(filter(lambda x: x.is_read_only, material_group_list)) - non_read_only_material_group_list = list(filter(lambda x: not x.is_read_only, material_group_list)) - material_group = None - if read_only_material_group_list: - read_only_material_group_list = sorted(read_only_material_group_list, key = lambda x: x.name) - material_group = read_only_material_group_list[0] - elif non_read_only_material_group_list: - non_read_only_material_group_list = sorted(non_read_only_material_group_list, key = lambda x: x.name) - material_group = non_read_only_material_group_list[0] - - if material_group: - container = material_group.root_material_node.getContainer() - color = container.getMetaDataEntry("color_code") - brand = container.getMetaDataEntry("brand") - material_type = container.getMetaDataEntry("material") - name = container.getName() - else: - Logger.log("w", - "Unable to find material with guid {guid}. Using data as provided by cluster".format( - guid=material_data["guid"])) - color = material_data["color"] - brand = material_data["brand"] - material_type = material_data["material"] - name = i18n_catalog.i18nc("@label:material", "Empty") if material_data["material"] == "empty" \ - else i18n_catalog.i18nc("@label:material", "Unknown") - return MaterialOutputModel(guid = material_data["guid"], type = material_type, - brand = brand, color = color, name = name) - - def _updatePrinter(self, printer: PrinterOutputModel, data: Dict[str, Any]) -> None: - # For some unknown reason the cluster wants UUID for everything, except for sending a job directly to a printer. - # Then we suddenly need the unique name. So in order to not have to mess up all the other code, we save a mapping. - self._printer_uuid_to_unique_name_mapping[data["uuid"]] = data["unique_name"] - - definitions = ContainerRegistry.getInstance().findDefinitionContainers(name = data["machine_variant"]) - if not definitions: - Logger.log("w", "Unable to find definition for machine variant %s", data["machine_variant"]) - return - - machine_definition = definitions[0] - - printer.updateName(data["friendly_name"]) - printer.updateKey(data["uuid"]) - printer.updateType(data["machine_variant"]) - - # Do not store the build plate information that comes from connect if the current printer has not build plate information - if "build_plate" in data and machine_definition.getMetaDataEntry("has_variant_buildplates", False): - printer.updateBuildplate(data["build_plate"]["type"]) - if not data["enabled"]: - printer.updateState("disabled") - else: - printer.updateState(data["status"]) - - for index in range(0, self._number_of_extruders): - extruder = printer.extruders[index] - try: - extruder_data = data["configuration"][index] - except IndexError: - break - - extruder.updateHotendID(extruder_data.get("print_core_id", "")) - - material_data = extruder_data["material"] - if extruder.activeMaterial is None or extruder.activeMaterial.guid != material_data["guid"]: - material = self._createMaterialOutputModel(material_data) - extruder.updateActiveMaterial(material) - - def _removeJob(self, job: UM3PrintJobOutputModel) -> bool: - if job not in self._print_jobs: - return False - - if job.assignedPrinter: - job.assignedPrinter.updateActivePrintJob(None) - job.stateChanged.disconnect(self._printJobStateChanged) - self._print_jobs.remove(job) - - return True - - def _removePrinter(self, printer: PrinterOutputModel) -> None: - self._printers.remove(printer) - if self._active_printer == printer: - self._active_printer = None - self.activePrinterChanged.emit() - - ## Sync the material profiles in Cura with the printer. - # - # This gets called when connecting to a printer as well as when sending a - # print. - def sendMaterialProfiles(self) -> None: - job = SendMaterialJob(device = self) - job.run() - -def loadJsonFromReply(reply: QNetworkReply) -> Optional[List[Dict[str, Any]]]: - try: - result = json.loads(bytes(reply.readAll()).decode("utf-8")) - except json.decoder.JSONDecodeError: - Logger.logException("w", "Unable to decode JSON from reply.") - return None - return result - - -def checkValidGetReply(reply: QNetworkReply) -> bool: - status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) - - if status_code != 200: - Logger.log("w", "Got status code {status_code} while trying to get data".format(status_code=status_code)) - return False - return True - - -def findByKey(lst: List[Union[UM3PrintJobOutputModel, PrinterOutputModel]], key: str) -> Optional[UM3PrintJobOutputModel]: - for item in lst: - if item.key == key: - return item - return None diff --git a/plugins/UM3NetworkPrinting/src/ClusterUM3PrinterOutputController.py b/plugins/UM3NetworkPrinting/src/ClusterUM3PrinterOutputController.py deleted file mode 100644 index fc6798386a..0000000000 --- a/plugins/UM3NetworkPrinting/src/ClusterUM3PrinterOutputController.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from cura.PrinterOutput.PrinterOutputController import PrinterOutputController - -MYPY = False -if MYPY: - from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel - -class ClusterUM3PrinterOutputController(PrinterOutputController): - def __init__(self, output_device): - super().__init__(output_device) - self.can_pre_heat_bed = False - self.can_pre_heat_hotends = False - self.can_control_manually = False - self.can_send_raw_gcode = False - - def setJobState(self, job: "PrintJobOutputModel", state: str): - data = "{\"action\": \"%s\"}" % state - self._output_device.put("print_jobs/%s/action" % job.key, data, on_finished=None) diff --git a/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py b/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py deleted file mode 100644 index ecc89b3948..0000000000 --- a/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -import os.path -import time -from typing import Optional, TYPE_CHECKING - -from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot, QObject - -from UM.PluginRegistry import PluginRegistry -from UM.Logger import Logger -from UM.i18n import i18nCatalog - -from cura.CuraApplication import CuraApplication -from cura.MachineAction import MachineAction -from cura.Settings.CuraContainerRegistry import CuraContainerRegistry - -from .UM3OutputDevicePlugin import UM3OutputDevicePlugin - -if TYPE_CHECKING: - from cura.PrinterOutputDevice import PrinterOutputDevice - -catalog = i18nCatalog("cura") - - -class DiscoverUM3Action(MachineAction): - discoveredDevicesChanged = pyqtSignal() - - def __init__(self) -> None: - super().__init__("DiscoverUM3Action", catalog.i18nc("@action","Connect via Network")) - self._qml_url = "resources/qml/DiscoverUM3Action.qml" - - self._network_plugin = None #type: Optional[UM3OutputDevicePlugin] - - self.__additional_components_view = None #type: Optional[QObject] - - CuraApplication.getInstance().engineCreatedSignal.connect(self._createAdditionalComponentsView) - - self._last_zero_conf_event_time = time.time() #type: float - - # Time to wait after a zero-conf service change before allowing a zeroconf reset - self._zero_conf_change_grace_period = 0.25 #type: float - - @pyqtSlot() - def startDiscovery(self): - if not self._network_plugin: - Logger.log("d", "Starting device discovery.") - self._network_plugin = CuraApplication.getInstance().getOutputDeviceManager().getOutputDevicePlugin("UM3NetworkPrinting") - self._network_plugin.discoveredDevicesChanged.connect(self._onDeviceDiscoveryChanged) - self.discoveredDevicesChanged.emit() - - ## Re-filters the list of devices. - @pyqtSlot() - def reset(self): - Logger.log("d", "Reset the list of found devices.") - if self._network_plugin: - self._network_plugin.resetLastManualDevice() - self.discoveredDevicesChanged.emit() - - @pyqtSlot() - def restartDiscovery(self): - # Ensure that there is a bit of time after a printer has been discovered. - # This is a work around for an issue with Qt 5.5.1 up to Qt 5.7 which can segfault if we do this too often. - # It's most likely that the QML engine is still creating delegates, where the python side already deleted or - # garbage collected the data. - # Whatever the case, waiting a bit ensures that it doesn't crash. - if time.time() - self._last_zero_conf_event_time > self._zero_conf_change_grace_period: - if not self._network_plugin: - self.startDiscovery() - else: - self._network_plugin.startDiscovery() - - @pyqtSlot(str, str) - def removeManualDevice(self, key, address): - if not self._network_plugin: - return - - self._network_plugin.removeManualDevice(key, address) - - @pyqtSlot(str, str) - def setManualDevice(self, key, address): - if key != "": - # This manual printer replaces a current manual printer - self._network_plugin.removeManualDevice(key) - - if address != "": - self._network_plugin.addManualDevice(address) - - def _onDeviceDiscoveryChanged(self, *args): - self._last_zero_conf_event_time = time.time() - self.discoveredDevicesChanged.emit() - - @pyqtProperty("QVariantList", notify = discoveredDevicesChanged) - def foundDevices(self): - if self._network_plugin: - - printers = list(self._network_plugin.getDiscoveredDevices().values()) - printers.sort(key = lambda k: k.name) - return printers - else: - return [] - - @pyqtSlot(str) - def setGroupName(self, group_name: str) -> None: - Logger.log("d", "Attempting to set the group name of the active machine to %s", group_name) - global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() - if global_container_stack: - meta_data = global_container_stack.getMetaData() - if "group_name" in meta_data: - previous_connect_group_name = meta_data["group_name"] - global_container_stack.setMetaDataEntry("group_name", group_name) - # Find all the places where there is the same group name and change it accordingly - CuraApplication.getInstance().getMachineManager().replaceContainersMetadata(key = "group_name", value = previous_connect_group_name, new_value = group_name) - else: - global_container_stack.setMetaDataEntry("group_name", group_name) - # Set the default value for "hidden", which is used when you have a group with multiple types of printers - global_container_stack.setMetaDataEntry("hidden", False) - - if self._network_plugin: - # Ensure that the connection states are refreshed. - self._network_plugin.reCheckConnections() - - # Associates the currently active machine with the given printer device. The network connection information will be - # stored into the metadata of the currently active machine. - @pyqtSlot(QObject) - def associateActiveMachineWithPrinterDevice(self, printer_device: Optional["PrinterOutputDevice"]) -> None: - if not printer_device: - return - - Logger.log("d", "Attempting to set the network key of the active machine to %s", printer_device.key) - - global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() - if not global_container_stack: - return - - meta_data = global_container_stack.getMetaData() - - if "um_network_key" in meta_data: # Global stack already had a connection, but it's changed. - old_network_key = meta_data["um_network_key"] - # Since we might have a bunch of hidden stacks, we also need to change it there. - metadata_filter = {"um_network_key": old_network_key} - containers = CuraContainerRegistry.getInstance().findContainerStacks(type="machine", **metadata_filter) - - for container in containers: - container.setMetaDataEntry("um_network_key", printer_device.key) - - # Delete old authentication data. - Logger.log("d", "Removing old authentication id %s for device %s", - global_container_stack.getMetaDataEntry("network_authentication_id", None), printer_device.key) - - container.removeMetaDataEntry("network_authentication_id") - container.removeMetaDataEntry("network_authentication_key") - - # Ensure that these containers do know that they are configured for network connection - container.addConfiguredConnectionType(printer_device.connectionType.value) - - else: # Global stack didn't have a connection yet, configure it. - global_container_stack.setMetaDataEntry("um_network_key", printer_device.key) - global_container_stack.addConfiguredConnectionType(printer_device.connectionType.value) - - if self._network_plugin: - # Ensure that the connection states are refreshed. - self._network_plugin.reCheckConnections() - - @pyqtSlot(result = str) - def getStoredKey(self) -> str: - global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() - if global_container_stack: - meta_data = global_container_stack.getMetaData() - if "um_network_key" in meta_data: - return global_container_stack.getMetaDataEntry("um_network_key") - - return "" - - @pyqtSlot(result = str) - def getLastManualEntryKey(self) -> str: - if self._network_plugin: - return self._network_plugin.getLastManualDevice() - return "" - - @pyqtSlot(str, result = bool) - def existsKey(self, key: str) -> bool: - return CuraApplication.getInstance().getMachineManager().existNetworkInstances(network_key = key) - - @pyqtSlot() - def loadConfigurationFromPrinter(self) -> None: - machine_manager = CuraApplication.getInstance().getMachineManager() - hotend_ids = machine_manager.printerOutputDevices[0].hotendIds - for index in range(len(hotend_ids)): - machine_manager.printerOutputDevices[0].hotendIdChanged.emit(index, hotend_ids[index]) - material_ids = machine_manager.printerOutputDevices[0].materialIds - for index in range(len(material_ids)): - machine_manager.printerOutputDevices[0].materialIdChanged.emit(index, material_ids[index]) - - def _createAdditionalComponentsView(self) -> None: - Logger.log("d", "Creating additional ui components for UM3.") - - # Create networking dialog - plugin_path = PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting") - if not plugin_path: - return - path = os.path.join(plugin_path, "resources/qml/UM3InfoComponents.qml") - self.__additional_components_view = CuraApplication.getInstance().createQmlComponent(path, {"manager": self}) - if not self.__additional_components_view: - Logger.log("w", "Could not create ui components for UM3.") - return - - # Create extra components - CuraApplication.getInstance().addAdditionalComponent("monitorButtons", self.__additional_components_view.findChild(QObject, "networkPrinterConnectButton")) diff --git a/plugins/UM3NetworkPrinting/src/ExportFileJob.py b/plugins/UM3NetworkPrinting/src/ExportFileJob.py new file mode 100644 index 0000000000..56d15bc835 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/ExportFileJob.py @@ -0,0 +1,39 @@ +from typing import List, Optional + +from UM.FileHandler.FileHandler import FileHandler +from UM.FileHandler.WriteFileJob import WriteFileJob +from UM.Logger import Logger +from UM.Scene.SceneNode import SceneNode +from cura.CuraApplication import CuraApplication + +from .MeshFormatHandler import MeshFormatHandler + + +## Job that exports the build plate to the correct file format for the target cluster. +class ExportFileJob(WriteFileJob): + + def __init__(self, file_handler: Optional[FileHandler], nodes: List[SceneNode], firmware_version: str) -> None: + + self._mesh_format_handler = MeshFormatHandler(file_handler, firmware_version) + if not self._mesh_format_handler.is_valid: + Logger.log("e", "Missing file or mesh writer!") + return + + super().__init__(self._mesh_format_handler.writer, self._mesh_format_handler.createStream(), nodes, + self._mesh_format_handler.file_mode) + + # Determine the filename. + job_name = CuraApplication.getInstance().getPrintInformation().jobName + extension = self._mesh_format_handler.preferred_format.get("extension", "") + self.setFileName("{}.{}".format(job_name, extension)) + + ## Get the mime type of the selected export file type. + def getMimeType(self) -> str: + return self._mesh_format_handler.mime_type + + ## Get the job result as bytes as that is what we need to upload to the cluster. + def getOutput(self) -> bytes: + output = self.getStream().getvalue() + if isinstance(output, str): + output = output.encode("utf-8") + return output diff --git a/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py b/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py deleted file mode 100644 index 3ce0460d6b..0000000000 --- a/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py +++ /dev/null @@ -1,639 +0,0 @@ -from typing import List, Optional - -from UM.FileHandler.FileHandler import FileHandler -from UM.Scene.SceneNode import SceneNode -from cura.CuraApplication import CuraApplication -from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState -from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel -from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel -from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel -from cura.PrinterOutputDevice import ConnectionType - -from cura.Settings.ContainerManager import ContainerManager -from cura.Settings.ExtruderManager import ExtruderManager - -from UM.Logger import Logger -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.i18n import i18nCatalog -from UM.Message import Message - -from PyQt5.QtNetwork import QNetworkRequest -from PyQt5.QtCore import QTimer, QUrl -from PyQt5.QtWidgets import QMessageBox - -from .LegacyUM3PrinterOutputController import LegacyUM3PrinterOutputController - -from time import time - -import json -import os - - -i18n_catalog = i18nCatalog("cura") - - -## This is the output device for the "Legacy" API of the UM3. All firmware before 4.0.1 uses this API. -# Everything after that firmware uses the ClusterUM3Output. -# The Legacy output device can only have one printer (whereas the cluster can have 0 to n). -# -# Authentication is done in a number of steps; -# 1. Request an id / key pair by sending the application & user name. (state = authRequested) -# 2. Machine sends this back and will display an approve / deny message on screen. (state = AuthReceived) -# 3. OutputDevice will poll if the button was pressed. -# 4. At this point the machine either has the state Authenticated or AuthenticationDenied. -# 5. As a final step, we verify the authentication, as this forces the QT manager to setup the authenticator. -class LegacyUM3OutputDevice(NetworkedPrinterOutputDevice): - def __init__(self, device_id, address: str, properties, parent = None) -> None: - super().__init__(device_id = device_id, address = address, properties = properties, connection_type = ConnectionType.NetworkConnection, parent = parent) - self._api_prefix = "/api/v1/" - self._number_of_extruders = 2 - - self._authentication_id = None - self._authentication_key = None - - self._authentication_counter = 0 - self._max_authentication_counter = 5 * 60 # Number of attempts before authentication timed out (5 min) - - self._authentication_timer = QTimer() - self._authentication_timer.setInterval(1000) # TODO; Add preference for update interval - self._authentication_timer.setSingleShot(False) - - self._authentication_timer.timeout.connect(self._onAuthenticationTimer) - - # The messages are created when connect is called the first time. - # This ensures that the messages are only created for devices that actually want to connect. - self._authentication_requested_message = None - self._authentication_failed_message = None - self._authentication_succeeded_message = None - self._not_authenticated_message = None - - self.authenticationStateChanged.connect(self._onAuthenticationStateChanged) - - self.setPriority(3) # Make sure the output device gets selected above local file output - self.setName(self._id) - self.setShortDescription(i18n_catalog.i18nc("@action:button Preceded by 'Ready to'.", "Print over network")) - self.setDescription(i18n_catalog.i18nc("@properties:tooltip", "Print over network")) - - self.setIconName("print") - - self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../resources/qml/MonitorItem.qml") - - self._output_controller = LegacyUM3PrinterOutputController(self) - - def _onAuthenticationStateChanged(self): - # We only accept commands if we are authenticated. - self._setAcceptsCommands(self._authentication_state == AuthState.Authenticated) - - if self._authentication_state == AuthState.Authenticated: - self.setConnectionText(i18n_catalog.i18nc("@info:status", "Connected over the network.")) - elif self._authentication_state == AuthState.AuthenticationRequested: - self.setConnectionText(i18n_catalog.i18nc("@info:status", - "Connected over the network. Please approve the access request on the printer.")) - elif self._authentication_state == AuthState.AuthenticationDenied: - self.setConnectionText(i18n_catalog.i18nc("@info:status", "Connected over the network. No access to control the printer.")) - - - def _setupMessages(self): - self._authentication_requested_message = Message(i18n_catalog.i18nc("@info:status", - "Access to the printer requested. Please approve the request on the printer"), - lifetime=0, dismissable=False, progress=0, - title=i18n_catalog.i18nc("@info:title", - "Authentication status")) - - self._authentication_failed_message = Message("", title=i18n_catalog.i18nc("@info:title", "Authentication Status")) - self._authentication_failed_message.addAction("Retry", i18n_catalog.i18nc("@action:button", "Retry"), None, - i18n_catalog.i18nc("@info:tooltip", "Re-send the access request")) - self._authentication_failed_message.actionTriggered.connect(self._messageCallback) - self._authentication_succeeded_message = Message( - i18n_catalog.i18nc("@info:status", "Access to the printer accepted"), - title=i18n_catalog.i18nc("@info:title", "Authentication Status")) - - self._not_authenticated_message = Message( - i18n_catalog.i18nc("@info:status", "No access to print with this printer. Unable to send print job."), - title=i18n_catalog.i18nc("@info:title", "Authentication Status")) - self._not_authenticated_message.addAction("Request", i18n_catalog.i18nc("@action:button", "Request Access"), - None, i18n_catalog.i18nc("@info:tooltip", - "Send access request to the printer")) - self._not_authenticated_message.actionTriggered.connect(self._messageCallback) - - def _messageCallback(self, message_id=None, action_id="Retry"): - if action_id == "Request" or action_id == "Retry": - if self._authentication_failed_message: - self._authentication_failed_message.hide() - if self._not_authenticated_message: - self._not_authenticated_message.hide() - - self._requestAuthentication() - - def connect(self): - super().connect() - self._setupMessages() - global_container = CuraApplication.getInstance().getGlobalContainerStack() - if global_container: - self._authentication_id = global_container.getMetaDataEntry("network_authentication_id", None) - self._authentication_key = global_container.getMetaDataEntry("network_authentication_key", None) - - def close(self): - super().close() - if self._authentication_requested_message: - self._authentication_requested_message.hide() - if self._authentication_failed_message: - self._authentication_failed_message.hide() - if self._authentication_succeeded_message: - self._authentication_succeeded_message.hide() - self._sending_gcode = False - self._compressing_gcode = False - self._authentication_timer.stop() - - ## Send all material profiles to the printer. - def _sendMaterialProfiles(self): - Logger.log("i", "Sending material profiles to printer") - - # TODO: Might want to move this to a job... - for container in ContainerRegistry.getInstance().findInstanceContainers(type="material"): - try: - xml_data = container.serialize() - if xml_data == "" or xml_data is None: - continue - - names = ContainerManager.getInstance().getLinkedMaterials(container.getId()) - if names: - # There are other materials that share this GUID. - if not container.isReadOnly(): - continue # If it's not readonly, it's created by user, so skip it. - - file_name = "none.xml" - - self.postForm("materials", "form-data; name=\"file\";filename=\"%s\"" % file_name, xml_data.encode(), on_finished=None) - - except NotImplementedError: - # If the material container is not the most "generic" one it can't be serialized an will raise a - # NotImplementedError. We can simply ignore these. - pass - - def requestWrite(self, nodes: List[SceneNode], file_name: Optional[str] = None, limit_mimetypes: bool = False, file_handler: Optional[FileHandler] = None, **kwargs: str) -> None: - if not self.activePrinter: - # No active printer. Unable to write - return - - if self.activePrinter.state not in ["idle", ""]: - # Printer is not able to accept commands. - return - - if self._authentication_state != AuthState.Authenticated: - # Not authenticated, so unable to send job. - return - - self.writeStarted.emit(self) - - gcode_dict = getattr(CuraApplication.getInstance().getController().getScene(), "gcode_dict", []) - active_build_plate_id = CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate - gcode_list = gcode_dict[active_build_plate_id] - - if not gcode_list: - # Unable to find g-code. Nothing to send - return - - self._gcode = gcode_list - - errors = self._checkForErrors() - if errors: - text = i18n_catalog.i18nc("@label", "Unable to start a new print job.") - informative_text = i18n_catalog.i18nc("@label", - "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. " - "Please resolve this issues before continuing.") - detailed_text = "" - for error in errors: - detailed_text += error + "\n" - - CuraApplication.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Mismatched configuration"), - text, - informative_text, - detailed_text, - buttons=QMessageBox.Ok, - icon=QMessageBox.Critical, - callback = self._messageBoxCallback - ) - return # Don't continue; Errors must block sending the job to the printer. - - # There might be multiple things wrong with the configuration. Check these before starting. - warnings = self._checkForWarnings() - - if warnings: - text = i18n_catalog.i18nc("@label", "Are you sure you wish to print with the selected configuration?") - informative_text = i18n_catalog.i18nc("@label", - "There is a mismatch between the configuration or calibration of the printer and Cura. " - "For the best result, always slice for the PrintCores and materials that are inserted in your printer.") - detailed_text = "" - for warning in warnings: - detailed_text += warning + "\n" - - CuraApplication.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Mismatched configuration"), - text, - informative_text, - detailed_text, - buttons=QMessageBox.Yes + QMessageBox.No, - icon=QMessageBox.Question, - callback=self._messageBoxCallback - ) - return - - # No warnings or errors, so we're good to go. - self._startPrint() - - # Notify the UI that a switch to the print monitor should happen - CuraApplication.getInstance().getController().setActiveStage("MonitorStage") - - def _startPrint(self): - Logger.log("i", "Sending print job to printer.") - if self._sending_gcode: - self._error_message = Message( - i18n_catalog.i18nc("@info:status", - "Sending new jobs (temporarily) blocked, still sending the previous print job.")) - self._error_message.show() - return - - self._sending_gcode = True - - self._send_gcode_start = time() - self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), 0, False, -1, - i18n_catalog.i18nc("@info:title", "Sending Data")) - self._progress_message.addAction("Abort", i18n_catalog.i18nc("@action:button", "Cancel"), None, "") - self._progress_message.actionTriggered.connect(self._progressMessageActionTriggered) - self._progress_message.show() - - compressed_gcode = self._compressGCode() - if compressed_gcode is None: - # Abort was called. - return - - file_name = "%s.gcode.gz" % CuraApplication.getInstance().getPrintInformation().jobName - self.postForm("print_job", "form-data; name=\"file\";filename=\"%s\"" % file_name, compressed_gcode, - on_finished=self._onPostPrintJobFinished) - - return - - def _progressMessageActionTriggered(self, message_id=None, action_id=None): - if action_id == "Abort": - Logger.log("d", "User aborted sending print to remote.") - self._progress_message.hide() - self._compressing_gcode = False - self._sending_gcode = False - CuraApplication.getInstance().getController().setActiveStage("PrepareStage") - - def _onPostPrintJobFinished(self, reply): - self._progress_message.hide() - self._sending_gcode = False - - def _onUploadPrintJobProgress(self, bytes_sent, bytes_total): - if bytes_total > 0: - new_progress = bytes_sent / bytes_total * 100 - # Treat upload progress as response. Uploading can take more than 10 seconds, so if we don't, we can get - # timeout responses if this happens. - self._last_response_time = time() - if new_progress > self._progress_message.getProgress(): - self._progress_message.show() # Ensure that the message is visible. - self._progress_message.setProgress(bytes_sent / bytes_total * 100) - else: - self._progress_message.setProgress(0) - - self._progress_message.hide() - - def _messageBoxCallback(self, button): - def delayedCallback(): - if button == QMessageBox.Yes: - self._startPrint() - else: - CuraApplication.getInstance().getController().setActiveStage("PrepareStage") - # For some unknown reason Cura on OSX will hang if we do the call back code - # immediately without first returning and leaving QML's event system. - - QTimer.singleShot(100, delayedCallback) - - def _checkForErrors(self): - errors = [] - print_information = CuraApplication.getInstance().getPrintInformation() - if not print_information.materialLengths: - Logger.log("w", "There is no material length information. Unable to check for errors.") - return errors - - for index, extruder in enumerate(self.activePrinter.extruders): - # Due to airflow issues, both slots must be loaded, regardless if they are actually used or not. - if extruder.hotendID == "": - # No Printcore loaded. - errors.append(i18n_catalog.i18nc("@info:status", "No Printcore loaded in slot {slot_number}".format(slot_number=index + 1))) - - if index < len(print_information.materialLengths) and print_information.materialLengths[index] != 0: - # The extruder is by this print. - if extruder.activeMaterial is None: - # No active material - errors.append(i18n_catalog.i18nc("@info:status", "No material loaded in slot {slot_number}".format(slot_number=index + 1))) - return errors - - def _checkForWarnings(self): - warnings = [] - print_information = CuraApplication.getInstance().getPrintInformation() - - if not print_information.materialLengths: - Logger.log("w", "There is no material length information. Unable to check for warnings.") - return warnings - - extruder_manager = ExtruderManager.getInstance() - - for index, extruder in enumerate(self.activePrinter.extruders): - if index < len(print_information.materialLengths) and print_information.materialLengths[index] != 0: - # The extruder is by this print. - - # TODO: material length check - - # Check if the right Printcore is active. - variant = extruder_manager.getExtruderStack(index).findContainer({"type": "variant"}) - if variant: - if variant.getName() != extruder.hotendID: - warnings.append(i18n_catalog.i18nc("@label", "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}".format(cura_printcore_name = variant.getName(), remote_printcore_name = extruder.hotendID, extruder_id = index + 1))) - else: - Logger.log("w", "Unable to find variant.") - - # Check if the right material is loaded. - local_material = extruder_manager.getExtruderStack(index).findContainer({"type": "material"}) - if local_material: - if extruder.activeMaterial.guid != local_material.getMetaDataEntry("GUID"): - Logger.log("w", "Extruder %s has a different material (%s) as Cura (%s)", index + 1, extruder.activeMaterial.guid, local_material.getMetaDataEntry("GUID")) - warnings.append(i18n_catalog.i18nc("@label", "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}").format(local_material.getName(), extruder.activeMaterial.name, index + 1)) - else: - Logger.log("w", "Unable to find material.") - - return warnings - - def _update(self): - if not super()._update(): - return - if self._authentication_state == AuthState.NotAuthenticated: - if self._authentication_id is None and self._authentication_key is None: - # This machine doesn't have any authentication, so request it. - self._requestAuthentication() - elif self._authentication_id is not None and self._authentication_key is not None: - # We have authentication info, but we haven't checked it out yet. Do so now. - self._verifyAuthentication() - elif self._authentication_state == AuthState.AuthenticationReceived: - # We have an authentication, but it's not confirmed yet. - self._checkAuthentication() - - # We don't need authentication for requesting info, so we can go right ahead with requesting this. - self.get("printer", on_finished=self._onGetPrinterDataFinished) - self.get("print_job", on_finished=self._onGetPrintJobFinished) - - def _resetAuthenticationRequestedMessage(self): - if self._authentication_requested_message: - self._authentication_requested_message.hide() - self._authentication_timer.stop() - self._authentication_counter = 0 - - def _onAuthenticationTimer(self): - self._authentication_counter += 1 - self._authentication_requested_message.setProgress( - self._authentication_counter / self._max_authentication_counter * 100) - if self._authentication_counter > self._max_authentication_counter: - self._authentication_timer.stop() - Logger.log("i", "Authentication timer ended. Setting authentication to denied for printer: %s" % self._id) - self.setAuthenticationState(AuthState.AuthenticationDenied) - self._resetAuthenticationRequestedMessage() - self._authentication_failed_message.show() - - def _verifyAuthentication(self): - Logger.log("d", "Attempting to verify authentication") - # This will ensure that the "_onAuthenticationRequired" is triggered, which will setup the authenticator. - self.get("auth/verify", on_finished=self._onVerifyAuthenticationCompleted) - - def _onVerifyAuthenticationCompleted(self, reply): - status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) - if status_code == 401: - # Something went wrong; We somehow tried to verify authentication without having one. - Logger.log("d", "Attempted to verify auth without having one.") - self._authentication_id = None - self._authentication_key = None - self.setAuthenticationState(AuthState.NotAuthenticated) - elif status_code == 403 and self._authentication_state != AuthState.Authenticated: - # If we were already authenticated, we probably got an older message back all of the sudden. Drop that. - Logger.log("d", - "While trying to verify the authentication state, we got a forbidden response. Our own auth state was %s. ", - self._authentication_state) - self.setAuthenticationState(AuthState.AuthenticationDenied) - self._authentication_failed_message.show() - elif status_code == 200: - self.setAuthenticationState(AuthState.Authenticated) - - def _checkAuthentication(self): - Logger.log("d", "Checking if authentication is correct for id %s and key %s", self._authentication_id, self._getSafeAuthKey()) - self.get("auth/check/" + str(self._authentication_id), on_finished=self._onCheckAuthenticationFinished) - - def _onCheckAuthenticationFinished(self, reply): - if str(self._authentication_id) not in reply.url().toString(): - Logger.log("w", "Got an old id response.") - # Got response for old authentication ID. - return - try: - data = json.loads(bytes(reply.readAll()).decode("utf-8")) - except json.decoder.JSONDecodeError: - Logger.log("w", "Received an invalid authentication check from printer: Not valid JSON.") - return - - if data.get("message", "") == "authorized": - Logger.log("i", "Authentication was approved") - self.setAuthenticationState(AuthState.Authenticated) - self._saveAuthentication() - - # Double check that everything went well. - self._verifyAuthentication() - - # Notify the user. - self._resetAuthenticationRequestedMessage() - self._authentication_succeeded_message.show() - elif data.get("message", "") == "unauthorized": - Logger.log("i", "Authentication was denied.") - self.setAuthenticationState(AuthState.AuthenticationDenied) - self._authentication_failed_message.show() - - def _saveAuthentication(self) -> None: - global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() - if self._authentication_key is None: - Logger.log("e", "Authentication key is None, nothing to save.") - return - if self._authentication_id is None: - Logger.log("e", "Authentication id is None, nothing to save.") - return - if global_container_stack: - global_container_stack.setMetaDataEntry("network_authentication_key", self._authentication_key) - - global_container_stack.setMetaDataEntry("network_authentication_id", self._authentication_id) - - # Force save so we are sure the data is not lost. - CuraApplication.getInstance().saveStack(global_container_stack) - Logger.log("i", "Authentication succeeded for id %s and key %s", self._authentication_id, - self._getSafeAuthKey()) - else: - Logger.log("e", "Unable to save authentication for id %s and key %s", self._authentication_id, - self._getSafeAuthKey()) - - def _onRequestAuthenticationFinished(self, reply): - try: - data = json.loads(bytes(reply.readAll()).decode("utf-8")) - except json.decoder.JSONDecodeError: - Logger.log("w", "Received an invalid authentication request reply from printer: Not valid JSON.") - self.setAuthenticationState(AuthState.NotAuthenticated) - return - - self.setAuthenticationState(AuthState.AuthenticationReceived) - self._authentication_id = data["id"] - self._authentication_key = data["key"] - Logger.log("i", "Got a new authentication ID (%s) and KEY (%s). Waiting for authorization.", - self._authentication_id, self._getSafeAuthKey()) - - def _requestAuthentication(self): - self._authentication_requested_message.show() - self._authentication_timer.start() - - # Reset any previous authentication info. If this isn't done, the "Retry" action on the failed message might - # give issues. - self._authentication_key = None - self._authentication_id = None - - self.post("auth/request", - json.dumps({"application": "Cura-" + CuraApplication.getInstance().getVersion(), - "user": self._getUserName()}), - on_finished=self._onRequestAuthenticationFinished) - - self.setAuthenticationState(AuthState.AuthenticationRequested) - - def _onAuthenticationRequired(self, reply, authenticator): - if self._authentication_id is not None and self._authentication_key is not None: - Logger.log("d", - "Authentication was required for printer: %s. Setting up authenticator with ID %s and key %s", - self._id, self._authentication_id, self._getSafeAuthKey()) - authenticator.setUser(self._authentication_id) - authenticator.setPassword(self._authentication_key) - else: - Logger.log("d", "No authentication is available to use for %s, but we did got a request for it.", self._id) - - def _onGetPrintJobFinished(self, reply): - status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) - - if not self._printers: - return # Ignore the data for now, we don't have info about a printer yet. - printer = self._printers[0] - - if status_code == 200: - try: - result = json.loads(bytes(reply.readAll()).decode("utf-8")) - except json.decoder.JSONDecodeError: - Logger.log("w", "Received an invalid print job state message: Not valid JSON.") - return - if printer.activePrintJob is None: - print_job = PrintJobOutputModel(output_controller=self._output_controller) - printer.updateActivePrintJob(print_job) - else: - print_job = printer.activePrintJob - print_job.updateState(result["state"]) - print_job.updateTimeElapsed(result["time_elapsed"]) - print_job.updateTimeTotal(result["time_total"]) - print_job.updateName(result["name"]) - elif status_code == 404: - # No job found, so delete the active print job (if any!) - printer.updateActivePrintJob(None) - else: - Logger.log("w", - "Got status code {status_code} while trying to get printer data".format(status_code=status_code)) - - def materialHotendChangedMessage(self, callback): - CuraApplication.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Sync with your printer"), - i18n_catalog.i18nc("@label", - "Would you like to use your current printer configuration in Cura?"), - i18n_catalog.i18nc("@label", - "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer."), - buttons=QMessageBox.Yes + QMessageBox.No, - icon=QMessageBox.Question, - callback=callback - ) - - def _onGetPrinterDataFinished(self, reply): - status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) - if status_code == 200: - try: - result = json.loads(bytes(reply.readAll()).decode("utf-8")) - except json.decoder.JSONDecodeError: - Logger.log("w", "Received an invalid printer state message: Not valid JSON.") - return - - if not self._printers: - # Quickest way to get the firmware version is to grab it from the zeroconf. - firmware_version = self._properties.get(b"firmware_version", b"").decode("utf-8") - self._printers = [PrinterOutputModel(output_controller=self._output_controller, number_of_extruders=self._number_of_extruders, firmware_version=firmware_version)] - self._printers[0].setCameraUrl(QUrl("http://" + self._address + ":8080/?action=stream")) - for extruder in self._printers[0].extruders: - extruder.activeMaterialChanged.connect(self.materialIdChanged) - extruder.hotendIDChanged.connect(self.hotendIdChanged) - self.printersChanged.emit() - - # LegacyUM3 always has a single printer. - printer = self._printers[0] - printer.updateBedTemperature(result["bed"]["temperature"]["current"]) - printer.updateTargetBedTemperature(result["bed"]["temperature"]["target"]) - printer.updateState(result["status"]) - - try: - # If we're still handling the request, we should ignore remote for a bit. - if not printer.getController().isPreheatRequestInProgress(): - printer.updateIsPreheating(result["bed"]["pre_heat"]["active"]) - except KeyError: - # Older firmwares don't support preheating, so we need to fake it. - pass - - head_position = result["heads"][0]["position"] - printer.updateHeadPosition(head_position["x"], head_position["y"], head_position["z"]) - - for index in range(0, self._number_of_extruders): - temperatures = result["heads"][0]["extruders"][index]["hotend"]["temperature"] - extruder = printer.extruders[index] - extruder.updateTargetHotendTemperature(temperatures["target"]) - extruder.updateHotendTemperature(temperatures["current"]) - - material_guid = result["heads"][0]["extruders"][index]["active_material"]["guid"] - - if extruder.activeMaterial is None or extruder.activeMaterial.guid != material_guid: - # Find matching material (as we need to set brand, type & color) - containers = ContainerRegistry.getInstance().findInstanceContainers(type="material", - GUID=material_guid) - if containers: - color = containers[0].getMetaDataEntry("color_code") - brand = containers[0].getMetaDataEntry("brand") - material_type = containers[0].getMetaDataEntry("material") - name = containers[0].getName() - else: - # Unknown material. - color = "#00000000" - brand = "Unknown" - material_type = "Unknown" - name = "Unknown" - material = MaterialOutputModel(guid=material_guid, type=material_type, - brand=brand, color=color, name = name) - extruder.updateActiveMaterial(material) - - try: - hotend_id = result["heads"][0]["extruders"][index]["hotend"]["id"] - except KeyError: - hotend_id = "" - printer.extruders[index].updateHotendID(hotend_id) - - else: - Logger.log("w", - "Got status code {status_code} while trying to get printer data".format(status_code = status_code)) - - ## Convenience function to "blur" out all but the last 5 characters of the auth key. - # This can be used to debug print the key, without it compromising the security. - def _getSafeAuthKey(self): - if self._authentication_key is not None: - result = self._authentication_key[-5:] - result = "********" + result - return result - - return self._authentication_key diff --git a/plugins/UM3NetworkPrinting/src/LegacyUM3PrinterOutputController.py b/plugins/UM3NetworkPrinting/src/LegacyUM3PrinterOutputController.py deleted file mode 100644 index 63167b4ffb..0000000000 --- a/plugins/UM3NetworkPrinting/src/LegacyUM3PrinterOutputController.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2019 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from cura.PrinterOutput.PrinterOutputController import PrinterOutputController -from PyQt5.QtCore import QTimer -from UM.Version import Version - -MYPY = False -if MYPY: - from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel - from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel - - -class LegacyUM3PrinterOutputController(PrinterOutputController): - def __init__(self, output_device): - super().__init__(output_device) - self._preheat_bed_timer = QTimer() - self._preheat_bed_timer.setSingleShot(True) - self._preheat_bed_timer.timeout.connect(self._onPreheatBedTimerFinished) - self._preheat_printer = None - - self.can_control_manually = False - self.can_send_raw_gcode = False - - # Are we still waiting for a response about preheat? - # We need this so we can already update buttons, so it feels more snappy. - self._preheat_request_in_progress = False - - def isPreheatRequestInProgress(self): - return self._preheat_request_in_progress - - def setJobState(self, job: "PrintJobOutputModel", state: str): - data = "{\"target\": \"%s\"}" % state - self._output_device.put("print_job/state", data, on_finished=None) - - def setTargetBedTemperature(self, printer: "PrinterOutputModel", temperature: float): - data = str(temperature) - self._output_device.put("printer/bed/temperature/target", data, on_finished = self._onPutBedTemperatureCompleted) - - def _onPutBedTemperatureCompleted(self, reply): - if Version(self._preheat_printer.firmwareVersion) < Version("3.5.92"): - # If it was handling a preheat, it isn't anymore. - self._preheat_request_in_progress = False - - def _onPutPreheatBedCompleted(self, reply): - self._preheat_request_in_progress = False - - def moveHead(self, printer: "PrinterOutputModel", x, y, z, speed): - head_pos = printer._head_position - new_x = head_pos.x + x - new_y = head_pos.y + y - new_z = head_pos.z + z - data = "{\n\"x\":%s,\n\"y\":%s,\n\"z\":%s\n}" %(new_x, new_y, new_z) - self._output_device.put("printer/heads/0/position", data, on_finished=None) - - def homeBed(self, printer): - self._output_device.put("printer/heads/0/position/z", "0", on_finished=None) - - def _onPreheatBedTimerFinished(self): - self.setTargetBedTemperature(self._preheat_printer, 0) - self._preheat_printer.updateIsPreheating(False) - self._preheat_request_in_progress = True - - def cancelPreheatBed(self, printer: "PrinterOutputModel"): - self.preheatBed(printer, temperature=0, duration=0) - self._preheat_bed_timer.stop() - printer.updateIsPreheating(False) - - def preheatBed(self, printer: "PrinterOutputModel", temperature, duration): - try: - temperature = round(temperature) # The API doesn't allow floating point. - duration = round(duration) - except ValueError: - return # Got invalid values, can't pre-heat. - - if duration > 0: - data = """{"temperature": "%i", "timeout": "%i"}""" % (temperature, duration) - else: - data = """{"temperature": "%i"}""" % temperature - - # Real bed pre-heating support is implemented from 3.5.92 and up. - - if Version(printer.firmwareVersion) < Version("3.5.92"): - # No firmware-side duration support then, so just set target bed temp and set a timer. - self.setTargetBedTemperature(printer, temperature=temperature) - self._preheat_bed_timer.setInterval(duration * 1000) - self._preheat_bed_timer.start() - self._preheat_printer = printer - printer.updateIsPreheating(True) - return - - self._output_device.put("printer/bed/pre_heat", data, on_finished = self._onPutPreheatBedCompleted) - printer.updateIsPreheating(True) - self._preheat_request_in_progress = True - - diff --git a/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py b/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py index c3cd82a86d..9927bf744e 100644 --- a/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py +++ b/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import io from typing import Optional, Dict, Union, List, cast @@ -32,7 +32,7 @@ class MeshFormatHandler: # \return A dict with the file format details, with the following keys: # {id: str, extension: str, description: str, mime_type: str, mode: int, hide_in_file_dialog: bool} @property - def preferred_format(self) -> Optional[Dict[str, Union[str, int, bool]]]: + def preferred_format(self) -> Dict[str, Union[str, int, bool]]: return self._preferred_format ## Gets the file writer for the given file handler and mime type. @@ -90,6 +90,7 @@ class MeshFormatHandler: machine_file_formats = global_stack.getMetaDataEntry("file_formats").split(";") machine_file_formats = [file_type.strip() for file_type in machine_file_formats] + # Exception for UM3 firmware version >=4.4: UFP is now supported and should be the preferred file format. if "application/x-ufp" not in machine_file_formats and Version(firmware_version) >= Version("4.4"): machine_file_formats = ["application/x-ufp"] + machine_file_formats diff --git a/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py b/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py new file mode 100644 index 0000000000..311356de8e --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py @@ -0,0 +1,41 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import os + +from PyQt5.QtCore import QUrl +from PyQt5.QtGui import QDesktopServices + +from UM import i18nCatalog +from UM.Message import Message +from cura.CuraApplication import CuraApplication + + +I18N_CATALOG = i18nCatalog("cura") + + +class CloudFlowMessage(Message): + + def __init__(self, address: str) -> None: + + image_path = os.path.join( + CuraApplication.getInstance().getPluginRegistry().getPluginPath("UM3NetworkPrinting") or "", + "resources", "svg", "cloud-flow-start.svg" + ) + + super().__init__( + text=I18N_CATALOG.i18nc("@info:status", + "Send and monitor print jobs from anywhere using your Ultimaker account."), + lifetime=0, + dismissable=True, + option_state=False, + image_source=QUrl.fromLocalFile(image_path), + image_caption=I18N_CATALOG.i18nc("@info:status Ultimaker Cloud should not be translated.", + "Connect to Ultimaker Cloud"), + ) + self._address = address + self.addAction("", I18N_CATALOG.i18nc("@action", "Get started"), "", "") + self.actionTriggered.connect(self._onCloudFlowStarted) + + def _onCloudFlowStarted(self, messageId: str, actionId: str) -> None: + QDesktopServices.openUrl(QUrl("http://{}/cloud_connect".format(self._address))) + self.hide() diff --git a/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py b/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py new file mode 100644 index 0000000000..f4132dbcbc --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py @@ -0,0 +1,33 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from UM import i18nCatalog +from UM.Message import Message + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when trying to connect to a legacy printer device. +class LegacyDeviceNoLongerSupportedMessage(Message): + + # Singleton used to prevent duplicate messages of this type at the same time. + __is_visible = False + + def __init__(self) -> None: + super().__init__( + text = I18N_CATALOG.i18nc("@info:status", "You are attempting to connect to a printer that is not " + "running Ultimaker Connect. Please update the printer to the " + "latest firmware."), + title = I18N_CATALOG.i18nc("@info:title", "Update your printer"), + lifetime = 10 + ) + + def show(self) -> None: + if LegacyDeviceNoLongerSupportedMessage.__is_visible: + return + super().show() + LegacyDeviceNoLongerSupportedMessage.__is_visible = True + + def hide(self, send_signal = True) -> None: + super().hide(send_signal) + LegacyDeviceNoLongerSupportedMessage.__is_visible = False diff --git a/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py b/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py new file mode 100644 index 0000000000..e021b2ae99 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py @@ -0,0 +1,39 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import TYPE_CHECKING + +from UM import i18nCatalog +from UM.Message import Message + + +if TYPE_CHECKING: + from ..UltimakerNetworkedPrinterOutputDevice import UltimakerNetworkedPrinterOutputDevice + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when sending material files to cluster host. +class MaterialSyncMessage(Message): + + # Singleton used to prevent duplicate messages of this type at the same time. + __is_visible = False + + def __init__(self, device: "UltimakerNetworkedPrinterOutputDevice") -> None: + super().__init__( + text = I18N_CATALOG.i18nc("@info:status", "Cura has detected material profiles that were not yet installed " + "on the host printer of group {0}.", device.name), + title = I18N_CATALOG.i18nc("@info:title", "Sending materials to printer"), + lifetime = 10, + dismissable = True + ) + + def show(self) -> None: + if MaterialSyncMessage.__is_visible: + return + super().show() + MaterialSyncMessage.__is_visible = True + + def hide(self, send_signal = True) -> None: + super().hide(send_signal) + MaterialSyncMessage.__is_visible = False diff --git a/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py b/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py new file mode 100644 index 0000000000..77d7995fc7 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py @@ -0,0 +1,50 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import TYPE_CHECKING + +from PyQt5.QtCore import QUrl +from PyQt5.QtGui import QDesktopServices + +from UM import i18nCatalog +from UM.Message import Message + + +if TYPE_CHECKING: + from ..UltimakerNetworkedPrinterOutputDevice import UltimakerNetworkedPrinterOutputDevice + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when trying to connect to a printer that is not a host. +class NotClusterHostMessage(Message): + + # Singleton used to prevent duplicate messages of this type at the same time. + __is_visible = False + + def __init__(self, device: "UltimakerNetworkedPrinterOutputDevice") -> None: + super().__init__( + text = I18N_CATALOG.i18nc("@info:status", "You are attempting to connect to {0} but it is not " + "the host of a group. You can visit the web page to configure " + "it as a group host.", device.name), + title = I18N_CATALOG.i18nc("@info:title", "Not a group host"), + lifetime = 0, + dismissable = True + ) + self._address = device.address + self.addAction("", I18N_CATALOG.i18nc("@action", "Configure group"), "", "") + self.actionTriggered.connect(self._onConfigureClicked) + + def show(self) -> None: + if NotClusterHostMessage.__is_visible: + return + super().show() + NotClusterHostMessage.__is_visible = True + + def hide(self, send_signal = True) -> None: + super().hide(send_signal) + NotClusterHostMessage.__is_visible = False + + def _onConfigureClicked(self, messageId: str, actionId: str) -> None: + QDesktopServices.openUrl(QUrl("http://{}/print_jobs".format(self._address))) + self.hide() diff --git a/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py new file mode 100644 index 0000000000..be00292559 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py @@ -0,0 +1,18 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from UM import i18nCatalog +from UM.Message import Message + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when uploading a print job to a cluster is blocked because another upload is already in progress. +class PrintJobUploadBlockedMessage(Message): + + def __init__(self) -> None: + super().__init__( + text = I18N_CATALOG.i18nc("@info:status", "Please wait until the current job has been sent."), + title = I18N_CATALOG.i18nc("@info:title", "Print error"), + lifetime = 10 + ) diff --git a/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py new file mode 100644 index 0000000000..bb26a84953 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py @@ -0,0 +1,18 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from UM import i18nCatalog +from UM.Message import Message + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when uploading a print job to a cluster failed. +class PrintJobUploadErrorMessage(Message): + + def __init__(self, message: str = None) -> None: + super().__init__( + text = message or I18N_CATALOG.i18nc("@info:text", "Could not upload the data to the printer."), + title = I18N_CATALOG.i18nc("@info:title", "Network error"), + lifetime = 10 + ) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py similarity index 82% rename from plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py rename to plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py index d85f49c1a0..bdbab008e3 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py +++ b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from UM import i18nCatalog from UM.Message import Message @@ -8,11 +8,11 @@ I18N_CATALOG = i18nCatalog("cura") ## Class responsible for showing a progress message while a mesh is being uploaded to the cloud. -class CloudProgressMessage(Message): +class PrintJobUploadProgressMessage(Message): def __init__(self): super().__init__( - text = I18N_CATALOG.i18nc("@info:status", "Sending data to remote cluster"), - title = I18N_CATALOG.i18nc("@info:status", "Sending data to remote cluster"), + title = I18N_CATALOG.i18nc("@info:status", "Sending Print Job"), + text = I18N_CATALOG.i18nc("@info:status", "Uploading print job to printer."), progress = -1, lifetime = 0, dismissable = False, diff --git a/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py new file mode 100644 index 0000000000..c9be28d57f --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py @@ -0,0 +1,18 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from UM import i18nCatalog +from UM.Message import Message + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when uploading a print job to a cluster succeeded. +class PrintJobUploadSuccessMessage(Message): + + def __init__(self) -> None: + super().__init__( + text = I18N_CATALOG.i18nc("@info:status", "Print job was successfully sent to the printer."), + title = I18N_CATALOG.i18nc("@info:title", "Data Sent"), + lifetime = 5 + ) diff --git a/plugins/UM3NetworkPrinting/src/Messages/__init__.py b/plugins/UM3NetworkPrinting/src/Messages/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/UM3NetworkPrinting/src/Models.py b/plugins/UM3NetworkPrinting/src/Models.py deleted file mode 100644 index c5b9b16665..0000000000 --- a/plugins/UM3NetworkPrinting/src/Models.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - - -## Base model that maps kwargs to instance attributes. -class BaseModel: - def __init__(self, **kwargs) -> None: - self.__dict__.update(kwargs) - self.validate() - - # Validates the model, raising an exception if the model is invalid. - def validate(self) -> None: - pass - - -## Class representing a material that was fetched from the cluster API. -class ClusterMaterial(BaseModel): - def __init__(self, guid: str, version: int, **kwargs) -> None: - self.guid = guid # type: str - self.version = version # type: int - super().__init__(**kwargs) - - def validate(self) -> None: - if not self.guid: - raise ValueError("guid is required on ClusterMaterial") - if not self.version: - raise ValueError("version is required on ClusterMaterial") - - -## Class representing a local material that was fetched from the container registry. -class LocalMaterial(BaseModel): - def __init__(self, GUID: str, id: str, version: int, **kwargs) -> None: - self.GUID = GUID # type: str - self.id = id # type: str - self.version = version # type: int - super().__init__(**kwargs) - - # - def validate(self) -> None: - super().validate() - if not self.GUID: - raise ValueError("guid is required on LocalMaterial") - if not self.version: - raise ValueError("version is required on LocalMaterial") - if not self.id: - raise ValueError("id is required on LocalMaterial") diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/BaseCloudModel.py b/plugins/UM3NetworkPrinting/src/Models/BaseModel.py similarity index 81% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/BaseCloudModel.py rename to plugins/UM3NetworkPrinting/src/Models/BaseModel.py index 18a8cb5cba..3d38a4b116 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/BaseCloudModel.py +++ b/plugins/UM3NetworkPrinting/src/Models/BaseModel.py @@ -1,13 +1,23 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from datetime import datetime, timezone -from typing import Dict, Union, TypeVar, Type, List, Any - -from ...Models import BaseModel +from typing import TypeVar, Dict, List, Any, Type, Union -## Base class for the models used in the interface with the Ultimaker cloud APIs. -class BaseCloudModel(BaseModel): +# Type variable used in the parse methods below, which should be a subclass of BaseModel. +T = TypeVar("T", bound="BaseModel") + + +class BaseModel: + + def __init__(self, **kwargs) -> None: + self.__dict__.update(kwargs) + self.validate() + + # Validates the model, raising an exception if the model is invalid. + def validate(self) -> None: + pass + ## Checks whether the two models are equal. # \param other: The other model. # \return True if they are equal, False if they are different. @@ -24,9 +34,6 @@ class BaseCloudModel(BaseModel): def toDict(self) -> Dict[str, Any]: return self.__dict__ - # Type variable used in the parse methods below, which should be a subclass of BaseModel. - T = TypeVar("T", bound=BaseModel) - ## Parses a single model. # \param model_class: The model class. # \param values: The value of the model, which is usually a dictionary, but may also be already parsed. diff --git a/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py b/plugins/UM3NetworkPrinting/src/Models/ConfigurationChangeModel.py similarity index 63% rename from plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py rename to plugins/UM3NetworkPrinting/src/Models/ConfigurationChangeModel.py index ef8a212b76..58fae03679 100644 --- a/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py +++ b/plugins/UM3NetworkPrinting/src/Models/ConfigurationChangeModel.py @@ -1,13 +1,18 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from PyQt5.QtCore import pyqtProperty, QObject + + +BLOCKING_CHANGE_TYPES = [ + "material_insert", "buildplate_change" +] -from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot class ConfigurationChangeModel(QObject): def __init__(self, type_of_change: str, index: int, target_name: str, origin_name: str) -> None: super().__init__() - self._type_of_change = type_of_change - # enum = ["material", "print_core_change"] + self._type_of_change = type_of_change # enum = ["material", "print_core_change"] + self._can_override = self._type_of_change not in BLOCKING_CHANGE_TYPES self._index = index self._target_name = target_name self._origin_name = origin_name @@ -27,3 +32,7 @@ class ConfigurationChangeModel(QObject): @pyqtProperty(str, constant = True) def originName(self) -> str: return self._origin_name + + @pyqtProperty(bool, constant = True) + def canOverride(self) -> bool: + return self._can_override diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterResponse.py b/plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterResponse.py similarity index 67% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterResponse.py rename to plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterResponse.py index 9c0853e7c9..7ecfe8b0a3 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterResponse.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterResponse.py @@ -1,13 +1,13 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Optional -from .BaseCloudModel import BaseCloudModel +from ..BaseModel import BaseModel ## Class representing a cloud connected cluster. -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterResponse(BaseCloudModel): +class CloudClusterResponse(BaseModel): + ## Creates a new cluster response object. # \param cluster_id: The secret unique ID, e.g. 'kBEeZWEifXbrXviO8mRYLx45P8k5lHVGs43XKvRniPg='. # \param host_guid: The unique identifier of the print cluster host, e.g. 'e90ae0ac-1257-4403-91ee-a44c9b7e8050'. @@ -15,14 +15,21 @@ class CloudClusterResponse(BaseCloudModel): # \param is_online: Whether this cluster is currently connected to the cloud. # \param status: The status of the cluster authentication (active or inactive). # \param host_version: The firmware version of the cluster host. This is where the Stardust client is running on. + # \param host_internal_ip: The internal IP address of the host printer. + # \param friendly_name: The human readable name of the host printer. + # \param printer_type: The machine type of the host printer. def __init__(self, cluster_id: str, host_guid: str, host_name: str, is_online: bool, status: str, - host_version: Optional[str] = None, **kwargs) -> None: + host_internal_ip: Optional[str] = None, host_version: Optional[str] = None, + friendly_name: Optional[str] = None, printer_type: str = "ultimaker3", **kwargs) -> None: self.cluster_id = cluster_id self.host_guid = host_guid self.host_name = host_name self.status = status self.is_online = is_online self.host_version = host_version + self.host_internal_ip = host_internal_ip + self.friendly_name = friendly_name + self.printer_type = printer_type super().__init__(**kwargs) # Validates the model, raising an exception if the model is invalid. diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterStatus.py b/plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterStatus.py similarity index 52% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterStatus.py rename to plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterStatus.py index b0250c2ebb..330e61d343 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterStatus.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterStatus.py @@ -1,26 +1,26 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from datetime import datetime from typing import List, Dict, Union, Any -from .CloudClusterPrinterStatus import CloudClusterPrinterStatus -from .CloudClusterPrintJobStatus import CloudClusterPrintJobStatus -from .BaseCloudModel import BaseCloudModel +from ..BaseModel import BaseModel +from .ClusterPrinterStatus import ClusterPrinterStatus +from .ClusterPrintJobStatus import ClusterPrintJobStatus # Model that represents the status of the cluster for the cloud -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterStatus(BaseCloudModel): +class CloudClusterStatus(BaseModel): + ## Creates a new cluster status model object. # \param printers: The latest status of each printer in the cluster. # \param print_jobs: The latest status of each print job in the cluster. # \param generated_time: The datetime when the object was generated on the server-side. def __init__(self, - printers: List[Union[CloudClusterPrinterStatus, Dict[str, Any]]], - print_jobs: List[Union[CloudClusterPrintJobStatus, Dict[str, Any]]], + printers: List[Union[ClusterPrinterStatus, Dict[str, Any]]], + print_jobs: List[Union[ClusterPrintJobStatus, Dict[str, Any]]], generated_time: Union[str, datetime], **kwargs) -> None: self.generated_time = self.parseDate(generated_time) - self.printers = self.parseModels(CloudClusterPrinterStatus, printers) - self.print_jobs = self.parseModels(CloudClusterPrintJobStatus, print_jobs) + self.printers = self.parseModels(ClusterPrinterStatus, printers) + self.print_jobs = self.parseModels(ClusterPrintJobStatus, print_jobs) super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudError.py b/plugins/UM3NetworkPrinting/src/Models/Http/CloudError.py similarity index 88% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudError.py rename to plugins/UM3NetworkPrinting/src/Models/Http/CloudError.py index b53361022e..9381e4b8cf 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudError.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/CloudError.py @@ -1,13 +1,13 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Dict, Optional, Any -from .BaseCloudModel import BaseCloudModel +from ..BaseModel import BaseModel ## Class representing errors generated by the cloud servers, according to the JSON-API standard. -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudError(BaseCloudModel): +class CloudError(BaseModel): + ## Creates a new error object. # \param id: Unique identifier for this particular occurrence of the problem. # \param title: A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudPrintJobResponse.py b/plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintJobResponse.py similarity index 88% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudPrintJobResponse.py rename to plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintJobResponse.py index 79196ee38c..a1880e8751 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudPrintJobResponse.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintJobResponse.py @@ -1,13 +1,13 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Optional -from .BaseCloudModel import BaseCloudModel +from ..BaseModel import BaseModel # Model that represents the response received from the cloud after requesting to upload a print job -# Spec: https://api-staging.ultimaker.com/cura/v1/spec -class CloudPrintJobResponse(BaseCloudModel): +class CloudPrintJobResponse(BaseModel): + ## Creates a new print job response model. # \param job_id: The job unique ID, e.g. 'kBEeZWEifXbrXviO8mRYLx45P8k5lHVGs43XKvRniPg='. # \param status: The status of the print job. @@ -28,6 +28,5 @@ class CloudPrintJobResponse(BaseCloudModel): self.upload_url = upload_url self.content_type = content_type self.status_description = status_description - # TODO: Implement slicing details self.slicing_details = slicing_details super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudPrintJobUploadRequest.py b/plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintJobUploadRequest.py similarity index 77% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudPrintJobUploadRequest.py rename to plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintJobUploadRequest.py index e59c571558..ff705ae495 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudPrintJobUploadRequest.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintJobUploadRequest.py @@ -1,11 +1,11 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from .BaseCloudModel import BaseCloudModel +from ..BaseModel import BaseModel # Model that represents the request to upload a print job to the cloud -# Spec: https://api-staging.ultimaker.com/cura/v1/spec -class CloudPrintJobUploadRequest(BaseCloudModel): +class CloudPrintJobUploadRequest(BaseModel): + ## Creates a new print job upload request. # \param job_name: The name of the print job. # \param file_size: The size of the file in bytes. diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudPrintResponse.py b/plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintResponse.py similarity index 85% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudPrintResponse.py rename to plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintResponse.py index 919d1b3c3a..b108f40e27 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudPrintResponse.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/CloudPrintResponse.py @@ -1,14 +1,14 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from datetime import datetime from typing import Optional, Union -from .BaseCloudModel import BaseCloudModel +from ..BaseModel import BaseModel # Model that represents the responses received from the cloud after requesting a job to be printed. -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudPrintResponse(BaseCloudModel): +class CloudPrintResponse(BaseModel): + ## Creates a new print response object. # \param job_id: The unique ID of a print job inside of the cluster. This ID is generated by Cura Connect. # \param status: The status of the print request (queued or failed). diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterBuildPlate.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterBuildPlate.py new file mode 100644 index 0000000000..a5a392488d --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterBuildPlate.py @@ -0,0 +1,13 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from ..BaseModel import BaseModel + + +## Class representing a cluster printer +class ClusterBuildPlate(BaseModel): + + ## Create a new build plate + # \param type: The type of build plate glass or aluminium + def __init__(self, type: str = "glass", **kwargs) -> None: + self.type = type + super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterMaterial.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterMaterial.py new file mode 100644 index 0000000000..afc0851211 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterMaterial.py @@ -0,0 +1,16 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from ..BaseModel import BaseModel + + +class ClusterMaterial(BaseModel): + def __init__(self, guid: str, version: int, **kwargs) -> None: + self.guid = guid # type: str + self.version = version # type: int + super().__init__(**kwargs) + + def validate(self) -> None: + if not self.guid: + raise ValueError("guid is required on ClusterMaterial") + if not self.version: + raise ValueError("version is required on ClusterMaterial") diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintCoreConfiguration.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintCoreConfiguration.py similarity index 72% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintCoreConfiguration.py rename to plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintCoreConfiguration.py index 7454401d09..e11d2be2d2 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintCoreConfiguration.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintCoreConfiguration.py @@ -1,26 +1,28 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Union, Dict, Optional, Any -from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel -from cura.PrinterOutput.ExtruderOutputModel import ExtruderOutputModel -from .CloudClusterPrinterConfigurationMaterial import CloudClusterPrinterConfigurationMaterial -from .BaseCloudModel import BaseCloudModel +from cura.PrinterOutput.Models.ExtruderConfigurationModel import ExtruderConfigurationModel +from cura.PrinterOutput.Models.ExtruderOutputModel import ExtruderOutputModel + +from .ClusterPrinterConfigurationMaterial import ClusterPrinterConfigurationMaterial +from ..BaseModel import BaseModel -## Class representing a cloud cluster printer configuration -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterPrintCoreConfiguration(BaseCloudModel): +## Class representing a cloud cluster printer configuration +# Also used for representing slots in a Material Station (as from Cura's perspective these are the same). +class ClusterPrintCoreConfiguration(BaseModel): + ## Creates a new cloud cluster printer configuration object # \param extruder_index: The position of the extruder on the machine as list index. Numbered from left to right. # \param material: The material of a configuration object in a cluster printer. May be in a dict or an object. # \param nozzle_diameter: The diameter of the print core at this position in millimeters, e.g. '0.4'. # \param print_core_id: The type of print core inserted at this position, e.g. 'AA 0.4'. def __init__(self, extruder_index: int, - material: Union[None, Dict[str, Any], CloudClusterPrinterConfigurationMaterial], + material: Union[None, Dict[str, Any], ClusterPrinterConfigurationMaterial] = None, print_core_id: Optional[str] = None, **kwargs) -> None: self.extruder_index = extruder_index - self.material = self.parseModel(CloudClusterPrinterConfigurationMaterial, material) if material else None + self.material = self.parseModel(ClusterPrinterConfigurationMaterial, material) if material else None self.print_core_id = print_core_id super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobConfigurationChange.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobConfigurationChange.py similarity index 84% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobConfigurationChange.py rename to plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobConfigurationChange.py index 9ff4154666..88251bbf53 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobConfigurationChange.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobConfigurationChange.py @@ -1,13 +1,13 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Optional -from .BaseCloudModel import BaseCloudModel +from ..BaseModel import BaseModel ## Model for the types of changes that are needed before a print job can start -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterPrintJobConfigurationChange(BaseCloudModel): +class ClusterPrintJobConfigurationChange(BaseModel): + ## Creates a new print job constraint. # \param type_of_change: The type of configuration change, one of: "material", "print_core_change" # \param index: The hotend slot or extruder index to change diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobConstraint.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobConstraint.py similarity index 75% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobConstraint.py rename to plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobConstraint.py index 8236ec06b9..9239004b18 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobConstraint.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobConstraint.py @@ -1,13 +1,13 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Optional -from .BaseCloudModel import BaseCloudModel +from ..BaseModel import BaseModel ## Class representing a cloud cluster print job constraint -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterPrintJobConstraints(BaseCloudModel): +class ClusterPrintJobConstraints(BaseModel): + ## Creates a new print job constraint. # \param require_printer_name: Unique name of the printer that this job should be printed on. # Should be one of the unique_name field values in the cluster, e.g. 'ultimakersystem-ccbdd30044ec' diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobImpediment.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobImpediment.py similarity index 68% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobImpediment.py rename to plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobImpediment.py index 12b67996c1..5a8f0aa46d 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobImpediment.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobImpediment.py @@ -1,13 +1,14 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from .BaseCloudModel import BaseCloudModel +from ..BaseModel import BaseModel ## Class representing the reasons that prevent this job from being printed on the associated printer -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterPrintJobImpediment(BaseCloudModel): +class ClusterPrintJobImpediment(BaseModel): + ## Creates a new print job constraint. - # \param translation_key: A string indicating a reason the print cannot be printed, such as 'does_not_fit_in_build_volume' + # \param translation_key: A string indicating a reason the print cannot be printed, + # such as 'does_not_fit_in_build_volume' # \param severity: A number indicating the severity of the problem, with higher being more severe def __init__(self, translation_key: str, severity: int, **kwargs) -> None: self.translation_key = translation_key diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobStatus.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobStatus.py similarity index 76% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobStatus.py rename to plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobStatus.py index 45b7d838a5..9794da1bbb 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobStatus.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobStatus.py @@ -1,22 +1,23 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import List, Optional, Union, Dict, Any -from cura.PrinterOutput.ConfigurationModel import ConfigurationModel -from ...UM3PrintJobOutputModel import UM3PrintJobOutputModel -from ...ConfigurationChangeModel import ConfigurationChangeModel -from ..CloudOutputController import CloudOutputController -from .BaseCloudModel import BaseCloudModel -from .CloudClusterBuildPlate import CloudClusterBuildPlate -from .CloudClusterPrintJobConfigurationChange import CloudClusterPrintJobConfigurationChange -from .CloudClusterPrintJobImpediment import CloudClusterPrintJobImpediment -from .CloudClusterPrintCoreConfiguration import CloudClusterPrintCoreConfiguration -from .CloudClusterPrintJobConstraint import CloudClusterPrintJobConstraints +from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel + +from .ClusterBuildPlate import ClusterBuildPlate +from .ClusterPrintJobConfigurationChange import ClusterPrintJobConfigurationChange +from .ClusterPrintJobImpediment import ClusterPrintJobImpediment +from .ClusterPrintCoreConfiguration import ClusterPrintCoreConfiguration +from .ClusterPrintJobConstraint import ClusterPrintJobConstraints +from ..UM3PrintJobOutputModel import UM3PrintJobOutputModel +from ..ConfigurationChangeModel import ConfigurationChangeModel +from ..BaseModel import BaseModel +from ...ClusterOutputController import ClusterOutputController ## Model for the status of a single print job in a cluster. -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterPrintJobStatus(BaseCloudModel): +class ClusterPrintJobStatus(BaseModel): + ## Creates a new cloud print job status model. # \param assigned_to: The name of the printer this job is assigned to while being queued. # \param configuration: The required print core configurations of this print job. @@ -45,21 +46,21 @@ class CloudClusterPrintJobStatus(BaseCloudModel): # printer def __init__(self, created_at: str, force: bool, machine_variant: str, name: str, started: bool, status: str, time_total: int, uuid: str, - configuration: List[Union[Dict[str, Any], CloudClusterPrintCoreConfiguration]], - constraints: List[Union[Dict[str, Any], CloudClusterPrintJobConstraints]], + configuration: List[Union[Dict[str, Any], ClusterPrintCoreConfiguration]], + constraints: List[Union[Dict[str, Any], ClusterPrintJobConstraints]], last_seen: Optional[float] = None, network_error_count: Optional[int] = None, owner: Optional[str] = None, printer_uuid: Optional[str] = None, time_elapsed: Optional[int] = None, assigned_to: Optional[str] = None, deleted_at: Optional[str] = None, printed_on_uuid: Optional[str] = None, configuration_changes_required: List[ - Union[Dict[str, Any], CloudClusterPrintJobConfigurationChange]] = None, - build_plate: Union[Dict[str, Any], CloudClusterBuildPlate] = None, + Union[Dict[str, Any], ClusterPrintJobConfigurationChange]] = None, + build_plate: Union[Dict[str, Any], ClusterBuildPlate] = None, compatible_machine_families: List[str] = None, - impediments_to_printing: List[Union[Dict[str, Any], CloudClusterPrintJobImpediment]] = None, + impediments_to_printing: List[Union[Dict[str, Any], ClusterPrintJobImpediment]] = None, **kwargs) -> None: self.assigned_to = assigned_to - self.configuration = self.parseModels(CloudClusterPrintCoreConfiguration, configuration) - self.constraints = self.parseModels(CloudClusterPrintJobConstraints, constraints) + self.configuration = self.parseModels(ClusterPrintCoreConfiguration, configuration) + self.constraints = self.parseModels(ClusterPrintJobConstraints, constraints) self.created_at = created_at self.force = force self.last_seen = last_seen @@ -76,29 +77,29 @@ class CloudClusterPrintJobStatus(BaseCloudModel): self.deleted_at = deleted_at self.printed_on_uuid = printed_on_uuid - self.configuration_changes_required = self.parseModels(CloudClusterPrintJobConfigurationChange, + self.configuration_changes_required = self.parseModels(ClusterPrintJobConfigurationChange, configuration_changes_required) \ if configuration_changes_required else [] - self.build_plate = self.parseModel(CloudClusterBuildPlate, build_plate) if build_plate else None + self.build_plate = self.parseModel(ClusterBuildPlate, build_plate) if build_plate else None self.compatible_machine_families = compatible_machine_families if compatible_machine_families else [] - self.impediments_to_printing = self.parseModels(CloudClusterPrintJobImpediment, impediments_to_printing) \ + self.impediments_to_printing = self.parseModels(ClusterPrintJobImpediment, impediments_to_printing) \ if impediments_to_printing else [] super().__init__(**kwargs) ## Creates an UM3 print job output model based on this cloud cluster print job. # \param printer: The output model of the printer - def createOutputModel(self, controller: CloudOutputController) -> UM3PrintJobOutputModel: + def createOutputModel(self, controller: ClusterOutputController) -> UM3PrintJobOutputModel: model = UM3PrintJobOutputModel(controller, self.uuid, self.name) self.updateOutputModel(model) - return model ## Creates a new configuration model - def _createConfigurationModel(self) -> ConfigurationModel: + def _createConfigurationModel(self) -> PrinterConfigurationModel: extruders = [extruder.createConfigurationModel() for extruder in self.configuration or ()] - configuration = ConfigurationModel() + configuration = PrinterConfigurationModel() configuration.setExtruderConfigurations(extruders) + configuration.setPrinterType(self.machine_variant) return configuration ## Updates an UM3 print job output model based on this cloud cluster print job. diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py new file mode 100644 index 0000000000..8edb9fb808 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py @@ -0,0 +1,51 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional + +from UM.Settings.ContainerRegistry import ContainerRegistry +from cura.PrinterOutput.Models.MaterialOutputModel import MaterialOutputModel + +from ..BaseModel import BaseModel + + +## Class representing a cloud cluster printer configuration +class ClusterPrinterConfigurationMaterial(BaseModel): + + ## Creates a new material configuration model. + # \param brand: The brand of material in this print core, e.g. 'Ultimaker'. + # \param color: The color of material in this print core, e.g. 'Blue'. + # \param guid: he GUID of the material in this print core, e.g. '506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9'. + # \param material: The type of material in this print core, e.g. 'PLA'. + def __init__(self, brand: Optional[str] = None, color: Optional[str] = None, guid: Optional[str] = None, + material: Optional[str] = None, **kwargs) -> None: + self.guid = guid + self.brand = brand + self.color = color + self.material = material + super().__init__(**kwargs) + + ## Creates a material output model based on this cloud printer material. + # + # A material is chosen that matches the current GUID. If multiple such + # materials are available, read-only materials are preferred and the + # material with the earliest alphabetical name will be selected. + # \return A material output model that matches the current GUID. + def createOutputModel(self) -> MaterialOutputModel: + container_registry = ContainerRegistry.getInstance() + same_guid = container_registry.findInstanceContainersMetadata(GUID = self.guid) + if same_guid: + read_only = sorted(filter(lambda metadata: container_registry.isReadOnly(metadata["id"]), same_guid), key = lambda metadata: metadata["name"]) + if read_only: + material_metadata = read_only[0] + else: + material_metadata = min(same_guid, key = lambda metadata: metadata["name"]) + else: + material_metadata = { + "color_code": self.color, + "brand": self.brand, + "material": self.material, + "name": "Empty" if self.material == "empty" else "Unknown" + } + + return MaterialOutputModel(guid = self.guid, type = material_metadata["material"], brand = material_metadata["brand"], color = material_metadata["color_code"], name = material_metadata["name"]) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStation.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStation.py new file mode 100644 index 0000000000..c51e07bcfc --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStation.py @@ -0,0 +1,23 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import Union, Dict, Any, List + +from ..BaseModel import BaseModel +from .ClusterPrinterMaterialStationSlot import ClusterPrinterMaterialStationSlot + + +## Class representing the data of a Material Station in the cluster. +class ClusterPrinterMaterialStation(BaseModel): + + ## Creates a new Material Station status. + # \param status: The status of the material station. + # \param: supported: Whether the material station is supported on this machine or not. + # \param material_slots: The active slots configurations of this material station. + def __init__(self, status: str, supported: bool = False, + material_slots: List[Union[ClusterPrinterMaterialStationSlot, Dict[str, Any]]] = None, + **kwargs) -> None: + self.status = status + self.supported = supported + self.material_slots = self.parseModels(ClusterPrinterMaterialStationSlot, material_slots)\ + if material_slots else [] # type: List[ClusterPrinterMaterialStationSlot] + super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStationSlot.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStationSlot.py new file mode 100644 index 0000000000..80deb1c9a8 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStationSlot.py @@ -0,0 +1,22 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional + +from .ClusterPrintCoreConfiguration import ClusterPrintCoreConfiguration + + +## Class representing the data of a single slot in the material station. +class ClusterPrinterMaterialStationSlot(ClusterPrintCoreConfiguration): + + ## Create a new material station slot object. + # \param slot_index: The index of the slot in the material station (ranging 0 to 5). + # \param compatible: Whether the configuration is compatible with the print core. + # \param material_remaining: How much material is remaining on the spool (between 0 and 1, or -1 for missing data). + # \param material_empty: Whether the material spool is too empty to be used. + def __init__(self, slot_index: int, compatible: bool, material_remaining: float, + material_empty: Optional[bool] = False, **kwargs): + self.slot_index = slot_index + self.compatible = compatible + self.material_remaining = material_remaining + self.material_empty = material_empty + super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py new file mode 100644 index 0000000000..2e0912f057 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py @@ -0,0 +1,147 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from itertools import product +from typing import List, Union, Dict, Optional, Any + +from PyQt5.QtCore import QUrl + +from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel +from cura.PrinterOutput.PrinterOutputController import PrinterOutputController +from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel + +from .ClusterBuildPlate import ClusterBuildPlate +from .ClusterPrintCoreConfiguration import ClusterPrintCoreConfiguration +from .ClusterPrinterMaterialStation import ClusterPrinterMaterialStation +from .ClusterPrinterMaterialStationSlot import ClusterPrinterMaterialStationSlot +from .ClusterPrinterConfigurationMaterial import ClusterPrinterConfigurationMaterial +from ..BaseModel import BaseModel + + +## Class representing a cluster printer +class ClusterPrinterStatus(BaseModel): + + ## Creates a new cluster printer status + # \param enabled: A printer can be disabled if it should not receive new jobs. By default every printer is enabled. + # \param firmware_version: Firmware version installed on the printer. Can differ for each printer in a cluster. + # \param friendly_name: Human readable name of the printer. Can be used for identification purposes. + # \param ip_address: The IP address of the printer in the local network. + # \param machine_variant: The type of printer. Can be 'Ultimaker 3' or 'Ultimaker 3ext'. + # \param status: The status of the printer. + # \param unique_name: The unique name of the printer in the network. + # \param uuid: The unique ID of the printer, also known as GUID. + # \param configuration: The active print core configurations of this printer. + # \param reserved_by: A printer can be claimed by a specific print job. + # \param maintenance_required: Indicates if maintenance is necessary. + # \param firmware_update_status: Whether the printer's firmware is up-to-date, value is one of: "up_to_date", + # "pending_update", "update_available", "update_in_progress", "update_failed", "update_impossible". + # \param latest_available_firmware: The version of the latest firmware that is available. + # \param build_plate: The build plate that is on the printer. + # \param material_station: The material station that is on the printer. + def __init__(self, enabled: bool, firmware_version: str, friendly_name: str, ip_address: str, machine_variant: str, + status: str, unique_name: str, uuid: str, + configuration: List[Union[Dict[str, Any], ClusterPrintCoreConfiguration]], + reserved_by: Optional[str] = None, maintenance_required: Optional[bool] = None, + firmware_update_status: Optional[str] = None, latest_available_firmware: Optional[str] = None, + build_plate: Union[Dict[str, Any], ClusterBuildPlate] = None, + material_station: Union[Dict[str, Any], ClusterPrinterMaterialStation] = None, **kwargs) -> None: + + self.configuration = self.parseModels(ClusterPrintCoreConfiguration, configuration) + self.enabled = enabled + self.firmware_version = firmware_version + self.friendly_name = friendly_name + self.ip_address = ip_address + self.machine_variant = machine_variant + self.status = status + self.unique_name = unique_name + self.uuid = uuid + self.reserved_by = reserved_by + self.maintenance_required = maintenance_required + self.firmware_update_status = firmware_update_status + self.latest_available_firmware = latest_available_firmware + self.build_plate = self.parseModel(ClusterBuildPlate, build_plate) if build_plate else None + self.material_station = self.parseModel(ClusterPrinterMaterialStation, + material_station) if material_station else None + super().__init__(**kwargs) + + ## Creates a new output model. + # \param controller - The controller of the model. + def createOutputModel(self, controller: PrinterOutputController) -> PrinterOutputModel: + # FIXME + # Note that we're using '2' here as extruder count. We have hardcoded this for now to prevent issues where the + # amount of extruders coming back from the API is actually lower (which it can be if a printer was just added + # to a cluster). This should be fixed in the future, probably also on the cluster API side. + model = PrinterOutputModel(controller, 2, firmware_version = self.firmware_version) + self.updateOutputModel(model) + return model + + ## Updates the given output model. + # \param model - The output model to update. + def updateOutputModel(self, model: PrinterOutputModel) -> None: + model.updateKey(self.uuid) + model.updateName(self.friendly_name) + model.updateUniqueName(self.unique_name) + model.updateType(self.machine_variant) + model.updateState(self.status if self.enabled else "disabled") + model.updateBuildplate(self.build_plate.type if self.build_plate else "glass") + model.setCameraUrl(QUrl("http://{}:8080/?action=stream".format(self.ip_address))) + + if not model.printerConfiguration: + # Prevent accessing printer configuration when not available. + # This sometimes happens when a printer was just added to a group and Cura is connected to that group. + return + + # Set the possible configurations based on whether a Material Station is present or not. + if self.material_station and self.material_station.material_slots: + self._updateAvailableConfigurations(model) + if self.configuration: + self._updateActiveConfiguration(model) + + def _updateActiveConfiguration(self, model: PrinterOutputModel) -> None: + configurations = zip(self.configuration, model.extruders, model.printerConfiguration.extruderConfigurations) + for configuration, extruder_output, extruder_config in configurations: + configuration.updateOutputModel(extruder_output) + configuration.updateConfigurationModel(extruder_config) + + def _updateAvailableConfigurations(self, model: PrinterOutputModel) -> None: + available_configurations = [self._createAvailableConfigurationFromPrinterConfiguration( + left_slot = left_slot, + right_slot = right_slot, + printer_configuration = model.printerConfiguration + ) for left_slot, right_slot in product(self._getSlotsForExtruder(0), self._getSlotsForExtruder(1))] + model.setAvailableConfigurations(available_configurations) + + ## Create a list of Material Station slots for the given extruder index. + # Returns a list with a single empty material slot if none are found to ensure we don't miss configurations. + def _getSlotsForExtruder(self, extruder_index: int) -> List[ClusterPrinterMaterialStationSlot]: + if not self.material_station: # typing guard + return [] + slots = [slot for slot in self.material_station.material_slots if self._isSupportedConfiguration( + slot = slot, + extruder_index = extruder_index + )] + return slots or [self._createEmptyMaterialSlot(extruder_index)] + + ## Check if a configuration is supported in order to make it selectable by the user. + # We filter out any slot that is not supported by the extruder index, print core type or if the material is empty. + @staticmethod + def _isSupportedConfiguration(slot: ClusterPrinterMaterialStationSlot, extruder_index: int) -> bool: + return slot.extruder_index == extruder_index and slot.compatible and not slot.material_empty + + ## Create an empty material slot with a fake empty material. + @staticmethod + def _createEmptyMaterialSlot(extruder_index: int) -> ClusterPrinterMaterialStationSlot: + empty_material = ClusterPrinterConfigurationMaterial(guid = "", material = "empty", brand = "", color = "") + return ClusterPrinterMaterialStationSlot(slot_index = 0, extruder_index = extruder_index, + compatible = True, material_remaining = 0, material = empty_material) + + @staticmethod + def _createAvailableConfigurationFromPrinterConfiguration(left_slot: ClusterPrinterMaterialStationSlot, + right_slot: ClusterPrinterMaterialStationSlot, + printer_configuration: PrinterConfigurationModel + ) -> PrinterConfigurationModel: + available_configuration = PrinterConfigurationModel() + available_configuration.setExtruderConfigurations([left_slot.createConfigurationModel(), + right_slot.createConfigurationModel()]) + available_configuration.setPrinterType(printer_configuration.printerType) + available_configuration.setBuildplateConfiguration(printer_configuration.buildplateConfiguration) + return available_configuration diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/PrinterSystemStatus.py b/plugins/UM3NetworkPrinting/src/Models/Http/PrinterSystemStatus.py new file mode 100644 index 0000000000..ad7b9c8698 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/PrinterSystemStatus.py @@ -0,0 +1,21 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import Dict, Any + +from ..BaseModel import BaseModel + + +## Class representing the system status of a printer. +class PrinterSystemStatus(BaseModel): + + def __init__(self, guid: str, firmware: str, hostname: str, name: str, platform: str, variant: str, + hardware: Dict[str, Any], **kwargs + ) -> None: + self.guid = guid + self.firmware = firmware + self.hostname = hostname + self.name = name + self.platform = platform + self.variant = variant + self.hardware = hardware + super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/__init__.py b/plugins/UM3NetworkPrinting/src/Models/Http/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/UM3NetworkPrinting/src/Models/LocalMaterial.py b/plugins/UM3NetworkPrinting/src/Models/LocalMaterial.py new file mode 100644 index 0000000000..b45289e1c4 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/LocalMaterial.py @@ -0,0 +1,21 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from .BaseModel import BaseModel + + +class LocalMaterial(BaseModel): + + def __init__(self, GUID: str, id: str, version: int, **kwargs) -> None: + self.GUID = GUID # type: str + self.id = id # type: str + self.version = version # type: int + super().__init__(**kwargs) + + def validate(self) -> None: + super().validate() + if not self.GUID: + raise ValueError("guid is required on LocalMaterial") + if not self.version: + raise ValueError("version is required on LocalMaterial") + if not self.id: + raise ValueError("id is required on LocalMaterial") diff --git a/plugins/UM3NetworkPrinting/src/UM3PrintJobOutputModel.py b/plugins/UM3NetworkPrinting/src/Models/UM3PrintJobOutputModel.py similarity index 64% rename from plugins/UM3NetworkPrinting/src/UM3PrintJobOutputModel.py rename to plugins/UM3NetworkPrinting/src/Models/UM3PrintJobOutputModel.py index 4f44ca4af8..bfde233a35 100644 --- a/plugins/UM3NetworkPrinting/src/UM3PrintJobOutputModel.py +++ b/plugins/UM3NetworkPrinting/src/Models/UM3PrintJobOutputModel.py @@ -1,21 +1,22 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. - from typing import List from PyQt5.QtCore import pyqtProperty, pyqtSignal +from PyQt5.QtGui import QImage -from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel +from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.PrinterOutputController import PrinterOutputController + from .ConfigurationChangeModel import ConfigurationChangeModel class UM3PrintJobOutputModel(PrintJobOutputModel): configurationChangesChanged = pyqtSignal() - def __init__(self, output_controller: "PrinterOutputController", key: str = "", name: str = "", parent=None) -> None: + def __init__(self, output_controller: PrinterOutputController, key: str = "", name: str = "", parent=None) -> None: super().__init__(output_controller, key, name, parent) - self._configuration_changes = [] # type: List[ConfigurationChangeModel] + self._configuration_changes = [] # type: List[ConfigurationChangeModel] @pyqtProperty("QVariantList", notify=configurationChangesChanged) def configurationChanges(self) -> List[ConfigurationChangeModel]: @@ -26,3 +27,8 @@ class UM3PrintJobOutputModel(PrintJobOutputModel): return self._configuration_changes = changes self.configurationChangesChanged.emit() + + def updatePreviewImageData(self, data: bytes) -> None: + image = QImage() + image.loadFromData(data) + self.updatePreviewImage(image) diff --git a/plugins/UM3NetworkPrinting/src/Models/__init__.py b/plugins/UM3NetworkPrinting/src/Models/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py b/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py new file mode 100644 index 0000000000..6a8b9f625c --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py @@ -0,0 +1,173 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import json +from json import JSONDecodeError +from typing import Callable, List, Optional, Dict, Union, Any, Type, cast, TypeVar, Tuple + +from PyQt5.QtCore import QUrl +from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply + +from UM.Logger import Logger + +from ..Models.BaseModel import BaseModel +from ..Models.Http.ClusterPrintJobStatus import ClusterPrintJobStatus +from ..Models.Http.ClusterPrinterStatus import ClusterPrinterStatus +from ..Models.Http.PrinterSystemStatus import PrinterSystemStatus +from ..Models.Http.ClusterMaterial import ClusterMaterial + + +## The generic type variable used to document the methods below. +ClusterApiClientModel = TypeVar("ClusterApiClientModel", bound=BaseModel) + + +## The ClusterApiClient is responsible for all network calls to local network clusters. +class ClusterApiClient: + + PRINTER_API_PREFIX = "/api/v1" + CLUSTER_API_PREFIX = "/cluster-api/v1" + + # In order to avoid garbage collection we keep the callbacks in this list. + _anti_gc_callbacks = [] # type: List[Callable[[], None]] + + ## Initializes a new cluster API client. + # \param address: The network address of the cluster to call. + # \param on_error: The callback to be called whenever we receive errors from the server. + def __init__(self, address: str, on_error: Callable) -> None: + super().__init__() + self._manager = QNetworkAccessManager() + self._address = address + self._on_error = on_error + + ## Get printer system information. + # \param on_finished: The callback in case the response is successful. + def getSystem(self, on_finished: Callable) -> None: + url = "{}/system".format(self.PRINTER_API_PREFIX) + reply = self._manager.get(self._createEmptyRequest(url)) + self._addCallback(reply, on_finished, PrinterSystemStatus) + + ## Get the installed materials on the printer. + # \param on_finished: The callback in case the response is successful. + def getMaterials(self, on_finished: Callable[[List[ClusterMaterial]], Any]) -> None: + url = "{}/materials".format(self.CLUSTER_API_PREFIX) + reply = self._manager.get(self._createEmptyRequest(url)) + self._addCallback(reply, on_finished, ClusterMaterial) + + ## Get the printers in the cluster. + # \param on_finished: The callback in case the response is successful. + def getPrinters(self, on_finished: Callable[[List[ClusterPrinterStatus]], Any]) -> None: + url = "{}/printers".format(self.CLUSTER_API_PREFIX) + reply = self._manager.get(self._createEmptyRequest(url)) + self._addCallback(reply, on_finished, ClusterPrinterStatus) + + ## Get the print jobs in the cluster. + # \param on_finished: The callback in case the response is successful. + def getPrintJobs(self, on_finished: Callable[[List[ClusterPrintJobStatus]], Any]) -> None: + url = "{}/print_jobs".format(self.CLUSTER_API_PREFIX) + reply = self._manager.get(self._createEmptyRequest(url)) + self._addCallback(reply, on_finished, ClusterPrintJobStatus) + + ## Move a print job to the top of the queue. + def movePrintJobToTop(self, print_job_uuid: str) -> None: + url = "{}/print_jobs/{}/action/move".format(self.CLUSTER_API_PREFIX, print_job_uuid) + self._manager.post(self._createEmptyRequest(url), json.dumps({"to_position": 0, "list": "queued"}).encode()) + + ## Override print job configuration and force it to be printed. + def forcePrintJob(self, print_job_uuid: str) -> None: + url = "{}/print_jobs/{}".format(self.CLUSTER_API_PREFIX, print_job_uuid) + self._manager.put(self._createEmptyRequest(url), json.dumps({"force": True}).encode()) + + ## Delete a print job from the queue. + def deletePrintJob(self, print_job_uuid: str) -> None: + url = "{}/print_jobs/{}".format(self.CLUSTER_API_PREFIX, print_job_uuid) + self._manager.deleteResource(self._createEmptyRequest(url)) + + ## Set the state of a print job. + def setPrintJobState(self, print_job_uuid: str, state: str) -> None: + url = "{}/print_jobs/{}/action".format(self.CLUSTER_API_PREFIX, print_job_uuid) + # We rewrite 'resume' to 'print' here because we are using the old print job action endpoints. + action = "print" if state == "resume" else state + self._manager.put(self._createEmptyRequest(url), json.dumps({"action": action}).encode()) + + ## Get the preview image data of a print job. + def getPrintJobPreviewImage(self, print_job_uuid: str, on_finished: Callable) -> None: + url = "{}/print_jobs/{}/preview_image".format(self.CLUSTER_API_PREFIX, print_job_uuid) + reply = self._manager.get(self._createEmptyRequest(url)) + self._addCallback(reply, on_finished) + + ## We override _createEmptyRequest in order to add the user credentials. + # \param url: The URL to request + # \param content_type: The type of the body contents. + def _createEmptyRequest(self, path: str, content_type: Optional[str] = "application/json") -> QNetworkRequest: + url = QUrl("http://" + self._address + path) + request = QNetworkRequest(url) + request.setAttribute(QNetworkRequest.FollowRedirectsAttribute, True) + if content_type: + request.setHeader(QNetworkRequest.ContentTypeHeader, content_type) + return request + + ## Parses the given JSON network reply into a status code and a dictionary, handling unexpected errors as well. + # \param reply: The reply from the server. + # \return A tuple with a status code and a dictionary. + @staticmethod + def _parseReply(reply: QNetworkReply) -> Tuple[int, Dict[str, Any]]: + status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) + try: + response = bytes(reply.readAll()).decode() + return status_code, json.loads(response) + except (UnicodeDecodeError, JSONDecodeError, ValueError) as err: + Logger.logException("e", "Could not parse the cluster response: %s", err) + return status_code, {"errors": [err]} + + ## Parses the given models and calls the correct callback depending on the result. + # \param response: The response from the server, after being converted to a dict. + # \param on_finished: The callback in case the response is successful. + # \param model_class: The type of the model to convert the response to. It may either be a single record or a list. + def _parseModels(self, response: Dict[str, Any], + on_finished: Union[Callable[[ClusterApiClientModel], Any], + Callable[[List[ClusterApiClientModel]], Any]], + model_class: Type[ClusterApiClientModel]) -> None: + try: + if isinstance(response, list): + results = [model_class(**c) for c in response] # type: List[ClusterApiClientModel] + on_finished_list = cast(Callable[[List[ClusterApiClientModel]], Any], on_finished) + on_finished_list(results) + else: + result = model_class(**response) # type: ClusterApiClientModel + on_finished_item = cast(Callable[[ClusterApiClientModel], Any], on_finished) + on_finished_item(result) + except (JSONDecodeError, TypeError, ValueError): + Logger.log("e", "Could not parse response from network: %s", str(response)) + + ## Creates a callback function so that it includes the parsing of the response into the correct model. + # The callback is added to the 'finished' signal of the reply. + # \param reply: The reply that should be listened to. + # \param on_finished: The callback in case the response is successful. + def _addCallback(self, + reply: QNetworkReply, + on_finished: Union[Callable[[ClusterApiClientModel], Any], + Callable[[List[ClusterApiClientModel]], Any]], + model: Type[ClusterApiClientModel] = None, + ) -> None: + + def parse() -> None: + self._anti_gc_callbacks.remove(parse) + + # Don't try to parse the reply if we didn't get one + if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) is None: + return + + if reply.error() > 0: + self._on_error(reply.errorString()) + return + + # If no parse model is given, simply return the raw data in the callback. + if not model: + on_finished(reply.readAll()) + return + + # Otherwise parse the result and return the formatted data in the callback. + status_code, response = self._parseReply(reply) + self._parseModels(response, on_finished, model) + + self._anti_gc_callbacks.append(parse) + reply.finished.connect(parse) diff --git a/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py b/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py new file mode 100644 index 0000000000..1266afcca8 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py @@ -0,0 +1,209 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import os +from typing import Optional, Dict, List, Callable, Any + +from PyQt5.QtGui import QDesktopServices +from PyQt5.QtCore import pyqtSlot, QUrl, pyqtSignal, pyqtProperty, QObject +from PyQt5.QtNetwork import QNetworkReply + +from UM.FileHandler.FileHandler import FileHandler +from UM.i18n import i18nCatalog +from UM.Logger import Logger +from UM.Scene.SceneNode import SceneNode +from cura.CuraApplication import CuraApplication +from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState +from cura.PrinterOutput.PrinterOutputDevice import ConnectionType + +from .ClusterApiClient import ClusterApiClient +from .SendMaterialJob import SendMaterialJob +from ..ExportFileJob import ExportFileJob +from ..UltimakerNetworkedPrinterOutputDevice import UltimakerNetworkedPrinterOutputDevice +from ..Messages.PrintJobUploadBlockedMessage import PrintJobUploadBlockedMessage +from ..Messages.PrintJobUploadErrorMessage import PrintJobUploadErrorMessage +from ..Messages.PrintJobUploadSuccessMessage import PrintJobUploadSuccessMessage +from ..Models.Http.ClusterMaterial import ClusterMaterial + + +I18N_CATALOG = i18nCatalog("cura") + + +class LocalClusterOutputDevice(UltimakerNetworkedPrinterOutputDevice): + + activeCameraUrlChanged = pyqtSignal() + + def __init__(self, device_id: str, address: str, properties: Dict[bytes, bytes], parent=None) -> None: + + super().__init__( + device_id=device_id, + address=address, + properties=properties, + connection_type=ConnectionType.NetworkConnection, + parent=parent + ) + + self._cluster_api = None # type: Optional[ClusterApiClient] + self._active_exported_job = None # type: Optional[ExportFileJob] + self._printer_select_dialog = None # type: Optional[QObject] + + # We don't have authentication over local networking, so we're always authenticated. + self.setAuthenticationState(AuthState.Authenticated) + self._setInterfaceElements() + self._active_camera_url = QUrl() # type: QUrl + + ## Set all the interface elements and texts for this output device. + def _setInterfaceElements(self) -> None: + self.setPriority(3) # Make sure the output device gets selected above local file output + self.setShortDescription(I18N_CATALOG.i18nc("@action:button Preceded by 'Ready to'.", "Print over network")) + self.setDescription(I18N_CATALOG.i18nc("@properties:tooltip", "Print over network")) + self.setConnectionText(I18N_CATALOG.i18nc("@info:status", "Connected over the network")) + + ## Called when the connection to the cluster changes. + def connect(self) -> None: + super().connect() + self._update() + self.sendMaterialProfiles() + + @pyqtProperty(QUrl, notify=activeCameraUrlChanged) + def activeCameraUrl(self) -> QUrl: + return self._active_camera_url + + @pyqtSlot(QUrl, name="setActiveCameraUrl") + def setActiveCameraUrl(self, camera_url: QUrl) -> None: + if self._active_camera_url != camera_url: + self._active_camera_url = camera_url + self.activeCameraUrlChanged.emit() + + @pyqtSlot(name="openPrintJobControlPanel") + def openPrintJobControlPanel(self) -> None: + QDesktopServices.openUrl(QUrl("http://" + self._address + "/print_jobs")) + + @pyqtSlot(name="openPrinterControlPanel") + def openPrinterControlPanel(self) -> None: + QDesktopServices.openUrl(QUrl("http://" + self._address + "/printers")) + + @pyqtSlot(str, name="sendJobToTop") + def sendJobToTop(self, print_job_uuid: str) -> None: + self._getApiClient().movePrintJobToTop(print_job_uuid) + + @pyqtSlot(str, name="deleteJobFromQueue") + def deleteJobFromQueue(self, print_job_uuid: str) -> None: + self._getApiClient().deletePrintJob(print_job_uuid) + + @pyqtSlot(str, name="forceSendJob") + def forceSendJob(self, print_job_uuid: str) -> None: + self._getApiClient().forcePrintJob(print_job_uuid) + + ## Set the remote print job state. + # \param print_job_uuid: The UUID of the print job to set the state for. + # \param action: The action to undertake ('pause', 'resume', 'abort'). + def setJobState(self, print_job_uuid: str, action: str) -> None: + self._getApiClient().setPrintJobState(print_job_uuid, action) + + def _update(self) -> None: + super()._update() + self._getApiClient().getPrinters(self._updatePrinters) + self._getApiClient().getPrintJobs(self._updatePrintJobs) + self._updatePrintJobPreviewImages() + + ## Get a list of materials that are installed on the cluster host. + def getMaterials(self, on_finished: Callable[[List[ClusterMaterial]], Any]) -> None: + self._getApiClient().getMaterials(on_finished = on_finished) + + ## Sync the material profiles in Cura with the printer. + # This gets called when connecting to a printer as well as when sending a print. + def sendMaterialProfiles(self) -> None: + job = SendMaterialJob(device = self) + job.run() + + ## Send a print job to the cluster. + def requestWrite(self, nodes: List[SceneNode], file_name: Optional[str] = None, limit_mimetypes: bool = False, + file_handler: Optional[FileHandler] = None, filter_by_machine: bool = False, **kwargs) -> None: + + # Show an error message if we're already sending a job. + if self._progress.visible: + PrintJobUploadBlockedMessage().show() + return + + self.writeStarted.emit(self) + + # Export the scene to the correct file type. + job = ExportFileJob(file_handler=file_handler, nodes=nodes, firmware_version=self.firmwareVersion) + job.finished.connect(self._onPrintJobCreated) + job.start() + + ## Allows the user to choose a printer to print with from the printer selection dialogue. + # \param unique_name: The unique name of the printer to target. + @pyqtSlot(str, name="selectTargetPrinter") + def selectTargetPrinter(self, unique_name: str = "") -> None: + self._startPrintJobUpload(unique_name if unique_name != "" else None) + + ## Handler for when the print job was created locally. + # It can now be sent over the network. + def _onPrintJobCreated(self, job: ExportFileJob) -> None: + self._active_exported_job = job + # TODO: add preference to enable/disable this feature? + if self.clusterSize > 1: + self._showPrinterSelectionDialog() # self._startPrintJobUpload will be triggered from this dialog + return + self._startPrintJobUpload() + + ## Shows a dialog allowing the user to select which printer in a group to send a job to. + def _showPrinterSelectionDialog(self) -> None: + if not self._printer_select_dialog: + plugin_path = CuraApplication.getInstance().getPluginRegistry().getPluginPath("UM3NetworkPrinting") or "" + path = os.path.join(plugin_path, "resources", "qml", "PrintWindow.qml") + self._printer_select_dialog = CuraApplication.getInstance().createQmlComponent(path, {"OutputDevice": self}) + if self._printer_select_dialog is not None: + self._printer_select_dialog.show() + + ## Upload the print job to the group. + def _startPrintJobUpload(self, unique_name: str = None) -> None: + if not self._active_exported_job: + Logger.log("e", "No active exported job to upload!") + return + self._progress.show() + parts = [ + self._createFormPart("name=owner", bytes(self._getUserName(), "utf-8"), "text/plain"), + self._createFormPart("name=\"file\"; filename=\"%s\"" % self._active_exported_job.getFileName(), + self._active_exported_job.getOutput()) + ] + # If a specific printer was selected we include the name in the request. + # FIXME: Connect should allow the printer UUID here instead of the 'unique_name'. + if unique_name is not None: + parts.append(self._createFormPart("name=require_printer_name", bytes(unique_name, "utf-8"), "text/plain")) + # FIXME: move form posting to API client + self.postFormWithParts("/cluster-api/v1/print_jobs/", parts, on_finished=self._onPrintUploadCompleted, + on_progress=self._onPrintJobUploadProgress) + self._active_exported_job = None + + ## Handler for print job upload progress. + def _onPrintJobUploadProgress(self, bytes_sent: int, bytes_total: int) -> None: + percentage = (bytes_sent / bytes_total) if bytes_total else 0 + self._progress.setProgress(percentage * 100) + self.writeProgress.emit() + + ## Handler for when the print job was fully uploaded to the cluster. + def _onPrintUploadCompleted(self, _: QNetworkReply) -> None: + self._progress.hide() + PrintJobUploadSuccessMessage().show() + self.writeFinished.emit() + + ## Displays the given message if uploading the mesh has failed + # \param message: The message to display. + def _onUploadError(self, message: str = None) -> None: + self._progress.hide() + PrintJobUploadErrorMessage(message).show() + self.writeError.emit() + + ## Download all the images from the cluster and load their data in the print job models. + def _updatePrintJobPreviewImages(self): + for print_job in self._print_jobs: + if print_job.getPreviewImage() is None: + self._getApiClient().getPrintJobPreviewImage(print_job.key, print_job.updatePreviewImageData) + + ## Get the API client instance. + def _getApiClient(self) -> ClusterApiClient: + if not self._cluster_api: + self._cluster_api = ClusterApiClient(self.address, on_error = lambda error: Logger.log("e", str(error))) + return self._cluster_api diff --git a/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDeviceManager.py b/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDeviceManager.py new file mode 100644 index 0000000000..273c64ef4d --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDeviceManager.py @@ -0,0 +1,274 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Dict, Optional, Callable, List + +from UM import i18nCatalog +from UM.Logger import Logger +from UM.Signal import Signal +from UM.Version import Version + +from cura.CuraApplication import CuraApplication +from cura.Settings.CuraStackBuilder import CuraStackBuilder +from cura.Settings.GlobalStack import GlobalStack + +from .ZeroConfClient import ZeroConfClient +from .ClusterApiClient import ClusterApiClient +from .LocalClusterOutputDevice import LocalClusterOutputDevice +from ..UltimakerNetworkedPrinterOutputDevice import UltimakerNetworkedPrinterOutputDevice +from ..Messages.CloudFlowMessage import CloudFlowMessage +from ..Messages.LegacyDeviceNoLongerSupportedMessage import LegacyDeviceNoLongerSupportedMessage +from ..Models.Http.PrinterSystemStatus import PrinterSystemStatus + + +I18N_CATALOG = i18nCatalog("cura") + + +## The LocalClusterOutputDeviceManager is responsible for discovering and managing local networked clusters. +class LocalClusterOutputDeviceManager: + + META_NETWORK_KEY = "um_network_key" + + MANUAL_DEVICES_PREFERENCE_KEY = "um3networkprinting/manual_instances" + MIN_SUPPORTED_CLUSTER_VERSION = Version("4.0.0") + + # The translation catalog for this device. + I18N_CATALOG = i18nCatalog("cura") + + # Signal emitted when the list of discovered devices changed. + discoveredDevicesChanged = Signal() + + def __init__(self) -> None: + + # Persistent dict containing the networked clusters. + self._discovered_devices = {} # type: Dict[str, LocalClusterOutputDevice] + self._output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() + + # Hook up ZeroConf client. + self._zero_conf_client = ZeroConfClient() + self._zero_conf_client.addedNetworkCluster.connect(self._onDeviceDiscovered) + self._zero_conf_client.removedNetworkCluster.connect(self._onDiscoveredDeviceRemoved) + + ## Start the network discovery. + def start(self) -> None: + self._zero_conf_client.start() + for address in self._getStoredManualAddresses(): + self.addManualDevice(address) + + ## Stop network discovery and clean up discovered devices. + def stop(self) -> None: + self._zero_conf_client.stop() + for instance_name in list(self._discovered_devices): + self._onDiscoveredDeviceRemoved(instance_name) + + ## Restart discovery on the local network. + def startDiscovery(self): + self.stop() + self.start() + + ## Add a networked printer manually by address. + def addManualDevice(self, address: str, callback: Optional[Callable[[bool, str], None]] = None) -> None: + api_client = ClusterApiClient(address, lambda error: Logger.log("e", str(error))) + api_client.getSystem(lambda status: self._onCheckManualDeviceResponse(address, status, callback)) + + ## Remove a manually added networked printer. + def removeManualDevice(self, device_id: str, address: Optional[str] = None) -> None: + if device_id not in self._discovered_devices and address is not None: + device_id = "manual:{}".format(address) + + if device_id in self._discovered_devices: + address = address or self._discovered_devices[device_id].ipAddress + self._onDiscoveredDeviceRemoved(device_id) + + if address in self._getStoredManualAddresses(): + self._removeStoredManualAddress(address) + + ## Force reset all network device connections. + def refreshConnections(self) -> None: + self._connectToActiveMachine() + + ## Get the discovered devices. + def getDiscoveredDevices(self) -> Dict[str, LocalClusterOutputDevice]: + return self._discovered_devices + + ## Connect the active machine to a given device. + def associateActiveMachineWithPrinterDevice(self, device: LocalClusterOutputDevice) -> None: + active_machine = CuraApplication.getInstance().getGlobalContainerStack() + if not active_machine: + return + self._connectToOutputDevice(device, active_machine) + self._connectToActiveMachine() + + # Pre-select the correct machine type of the group host. + # We first need to find the correct definition because the machine manager only takes name as input, not ID. + definitions = CuraApplication.getInstance().getContainerRegistry().findContainers(id = device.printerType) + if not definitions: + return + CuraApplication.getInstance().getMachineManager().switchPrinterType(definitions[0].getName()) + + ## Callback for when the active machine was changed by the user or a new remote cluster was found. + def _connectToActiveMachine(self) -> None: + active_machine = CuraApplication.getInstance().getGlobalContainerStack() + if not active_machine: + return + + output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() + stored_device_id = active_machine.getMetaDataEntry(self.META_NETWORK_KEY) + for device in self._discovered_devices.values(): + if device.key == stored_device_id: + # Connect to it if the stored key matches. + self._connectToOutputDevice(device, active_machine) + elif device.key in output_device_manager.getOutputDeviceIds(): + # Remove device if it is not meant for the active machine. + output_device_manager.removeOutputDevice(device.key) + + ## Callback for when a manual device check request was responded to. + def _onCheckManualDeviceResponse(self, address: str, status: PrinterSystemStatus, + callback: Optional[Callable[[bool, str], None]] = None) -> None: + self._onDeviceDiscovered("manual:{}".format(address), address, { + b"name": status.name.encode("utf-8"), + b"address": address.encode("utf-8"), + b"machine": str(status.hardware.get("typeid", "")).encode("utf-8"), + b"manual": b"true", + b"firmware_version": status.firmware.encode("utf-8"), + b"cluster_size": b"1" + }) + self._storeManualAddress(address) + if callback is not None: + CuraApplication.getInstance().callLater(callback, True, address) + + ## Returns a dict of printer BOM numbers to machine types. + # These numbers are available in the machine definition already so we just search for them here. + @staticmethod + def _getPrinterTypeIdentifiers() -> Dict[str, str]: + container_registry = CuraApplication.getInstance().getContainerRegistry() + ultimaker_machines = container_registry.findContainersMetadata(type="machine", manufacturer="Ultimaker B.V.") + found_machine_type_identifiers = {} # type: Dict[str, str] + for machine in ultimaker_machines: + machine_type = machine.get("id", None) + machine_bom_numbers = machine.get("bom_numbers", []) + if machine_type and machine_bom_numbers: + for bom_number in machine_bom_numbers: + # This produces a n:1 mapping of bom numbers to machine types + # allowing the S5R1 and S5R2 hardware to use a single S5 definition. + found_machine_type_identifiers[str(bom_number)] = machine_type + return found_machine_type_identifiers + + ## Add a new device. + def _onDeviceDiscovered(self, key: str, address: str, properties: Dict[bytes, bytes]) -> None: + machine_identifier = properties.get(b"machine", b"").decode("utf-8") + printer_type_identifiers = self._getPrinterTypeIdentifiers() + + # Detect the machine type based on the BOM number that is sent over the network. + properties[b"printer_type"] = b"Unknown" + for bom, p_type in printer_type_identifiers.items(): + if machine_identifier.startswith(bom): + properties[b"printer_type"] = bytes(p_type, encoding="utf8") + break + + device = LocalClusterOutputDevice(key, address, properties) + discovered_printers_model = CuraApplication.getInstance().getDiscoveredPrintersModel() + if address in list(discovered_printers_model.discoveredPrintersByAddress.keys()): + # The printer was already added, we just update the available data. + discovered_printers_model.updateDiscoveredPrinter( + ip_address=address, + name=device.getName(), + machine_type=device.printerType + ) + else: + # The printer was not added yet so let's do that. + discovered_printers_model.addDiscoveredPrinter( + ip_address=address, + key=device.getId(), + name=device.getName(), + create_callback=self._createMachineFromDiscoveredDevice, + machine_type=device.printerType, + device=device + ) + self._discovered_devices[device.getId()] = device + self.discoveredDevicesChanged.emit() + self._connectToActiveMachine() + + ## Remove a device. + def _onDiscoveredDeviceRemoved(self, device_id: str) -> None: + device = self._discovered_devices.pop(device_id, None) # type: Optional[LocalClusterOutputDevice] + if not device: + return + device.close() + CuraApplication.getInstance().getDiscoveredPrintersModel().removeDiscoveredPrinter(device.address) + self.discoveredDevicesChanged.emit() + + ## Create a machine instance based on the discovered network printer. + def _createMachineFromDiscoveredDevice(self, device_id: str) -> None: + device = self._discovered_devices.get(device_id) + if device is None: + return + + # Create a new machine and activate it. + # We do not use use MachineManager.addMachine here because we need to set the network key before activating it. + # If we do not do this the auto-pairing with the cloud-equivalent device will not work. + new_machine = CuraStackBuilder.createMachine(device.name, device.printerType) + if not new_machine: + Logger.log("e", "Failed creating a new machine") + return + new_machine.setMetaDataEntry(self.META_NETWORK_KEY, device.key) + CuraApplication.getInstance().getMachineManager().setActiveMachine(new_machine.getId()) + self._connectToOutputDevice(device, new_machine) + self._showCloudFlowMessage(device) + + ## Add an address to the stored preferences. + def _storeManualAddress(self, address: str) -> None: + stored_addresses = self._getStoredManualAddresses() + if address in stored_addresses: + return # Prevent duplicates. + stored_addresses.append(address) + new_value = ",".join(stored_addresses) + CuraApplication.getInstance().getPreferences().setValue(self.MANUAL_DEVICES_PREFERENCE_KEY, new_value) + + ## Remove an address from the stored preferences. + def _removeStoredManualAddress(self, address: str) -> None: + stored_addresses = self._getStoredManualAddresses() + try: + stored_addresses.remove(address) # Can throw a ValueError + new_value = ",".join(stored_addresses) + CuraApplication.getInstance().getPreferences().setValue(self.MANUAL_DEVICES_PREFERENCE_KEY, new_value) + except ValueError: + Logger.log("w", "Could not remove address from stored_addresses, it was not there") + + ## Load the user-configured manual devices from Cura preferences. + def _getStoredManualAddresses(self) -> List[str]: + preferences = CuraApplication.getInstance().getPreferences() + preferences.addPreference(self.MANUAL_DEVICES_PREFERENCE_KEY, "") + manual_instances = preferences.getValue(self.MANUAL_DEVICES_PREFERENCE_KEY).split(",") + return manual_instances + + ## Add a device to the current active machine. + def _connectToOutputDevice(self, device: UltimakerNetworkedPrinterOutputDevice, machine: GlobalStack) -> None: + + # Make sure users know that we no longer support legacy devices. + if Version(device.firmwareVersion) < self.MIN_SUPPORTED_CLUSTER_VERSION: + LegacyDeviceNoLongerSupportedMessage().show() + return + + machine.setName(device.name) + machine.setMetaDataEntry(self.META_NETWORK_KEY, device.key) + machine.setMetaDataEntry("group_name", device.name) + machine.addConfiguredConnectionType(device.connectionType.value) + + if not device.isConnected(): + device.connect() + + output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() + if device.key not in output_device_manager.getOutputDeviceIds(): + output_device_manager.addOutputDevice(device) + + ## Nudge the user to start using Ultimaker Cloud. + @staticmethod + def _showCloudFlowMessage(device: LocalClusterOutputDevice) -> None: + if CuraApplication.getInstance().getMachineManager().activeMachineIsUsingCloudConnection: + # This printer is already cloud connected, so we do not bother the user anymore. + return + if not CuraApplication.getInstance().getCuraAPI().account.isLoggedIn: + # Do not show the message if the user is not signed in. + return + CloudFlowMessage(device.ipAddress).show() diff --git a/plugins/UM3NetworkPrinting/src/SendMaterialJob.py b/plugins/UM3NetworkPrinting/src/Network/SendMaterialJob.py similarity index 59% rename from plugins/UM3NetworkPrinting/src/SendMaterialJob.py rename to plugins/UM3NetworkPrinting/src/Network/SendMaterialJob.py index f0fde818c4..09949ed37e 100644 --- a/plugins/UM3NetworkPrinting/src/SendMaterialJob.py +++ b/plugins/UM3NetworkPrinting/src/Network/SendMaterialJob.py @@ -1,20 +1,20 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. - -import json import os -from typing import Dict, TYPE_CHECKING, Set, Optional +from typing import Dict, TYPE_CHECKING, Set, List from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest from UM.Job import Job from UM.Logger import Logger +from UM.Settings import ContainerRegistry from cura.CuraApplication import CuraApplication -# Absolute imports don't work in plugins -from .Models import ClusterMaterial, LocalMaterial +from ..Models.Http.ClusterMaterial import ClusterMaterial +from ..Models.LocalMaterial import LocalMaterial +from ..Messages.MaterialSyncMessage import MaterialSyncMessage if TYPE_CHECKING: - from .ClusterUM3OutputDevice import ClusterUM3OutputDevice + from .LocalClusterOutputDevice import LocalClusterOutputDevice ## Asynchronous job to send material profiles to the printer. @@ -22,75 +22,56 @@ if TYPE_CHECKING: # This way it won't freeze up the interface while sending those materials. class SendMaterialJob(Job): - def __init__(self, device: "ClusterUM3OutputDevice") -> None: + def __init__(self, device: "LocalClusterOutputDevice") -> None: super().__init__() - self.device = device # type: ClusterUM3OutputDevice + self.device = device # type: LocalClusterOutputDevice ## Send the request to the printer and register a callback def run(self) -> None: - self.device.get("materials/", on_finished = self._onGetRemoteMaterials) + self.device.getMaterials(on_finished = self._onGetMaterials) - ## Process the materials reply from the printer. - # - # \param reply The reply from the printer, a json file. - def _onGetRemoteMaterials(self, reply: QNetworkReply) -> None: - # Got an error from the HTTP request. If we did not receive a 200 something happened. - if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: - Logger.log("e", "Error fetching materials from printer: %s", reply.errorString()) - return - - # Collect materials from the printer's reply and send the missing ones if needed. - remote_materials_by_guid = self._parseReply(reply) - if remote_materials_by_guid: - self._sendMissingMaterials(remote_materials_by_guid) + ## Callback for when the remote materials were returned. + def _onGetMaterials(self, materials: List[ClusterMaterial]) -> None: + remote_materials_by_guid = {material.guid: material for material in materials} + self._sendMissingMaterials(remote_materials_by_guid) ## Determine which materials should be updated and send them to the printer. - # # \param remote_materials_by_guid The remote materials by GUID. def _sendMissingMaterials(self, remote_materials_by_guid: Dict[str, ClusterMaterial]) -> None: - # Collect local materials local_materials_by_guid = self._getLocalMaterials() if len(local_materials_by_guid) == 0: Logger.log("d", "There are no local materials to synchronize with the printer.") return - - # Find out what materials are new or updated and must be sent to the printer material_ids_to_send = self._determineMaterialsToSend(local_materials_by_guid, remote_materials_by_guid) if len(material_ids_to_send) == 0: Logger.log("d", "There are no remote materials to update.") return - - # Send materials to the printer self._sendMaterials(material_ids_to_send) ## From the local and remote materials, determine which ones should be synchronized. - # # Makes a Set of id's containing only the id's of the materials that are not on the printer yet or the ones that # are newer in Cura. - # # \param local_materials The local materials by GUID. # \param remote_materials The remote materials by GUID. @staticmethod def _determineMaterialsToSend(local_materials: Dict[str, LocalMaterial], remote_materials: Dict[str, ClusterMaterial]) -> Set[str]: return { - material.id - for guid, material in local_materials.items() - if guid not in remote_materials or material.version > remote_materials[guid].version + local_material.id + for guid, local_material in local_materials.items() + if guid not in remote_materials.keys() or local_material.version > remote_materials[guid].version } ## Send the materials to the printer. - # # The given materials will be loaded from disk en sent to to printer. # The given id's will be matched with filenames of the locally stored materials. - # # \param materials_to_send A set with id's of materials that must be sent. def _sendMaterials(self, materials_to_send: Set[str]) -> None: container_registry = CuraApplication.getInstance().getContainerRegistry() - material_manager = CuraApplication.getInstance().getMaterialManager() - material_group_dict = material_manager.getAllMaterialGroups() + all_materials = container_registry.findInstanceContainersMetadata(type = "material") + all_base_files = {material["base_file"] for material in all_materials if "base_file" in material} # Filters out uniques by making it a set. Don't include files without base file (i.e. empty material). - for root_material_id in material_group_dict: + for root_material_id in all_base_files: if root_material_id not in materials_to_send: # If the material does not have to be sent we skip it. continue @@ -104,9 +85,7 @@ class SendMaterialJob(Job): self._sendMaterialFile(file_path, file_name, root_material_id) ## Send a single material file to the printer. - # # Also add the material signature file if that is available. - # # \param file_path The path of the material file. # \param file_name The name of the material file. # \param material_id The ID of the material in the file. @@ -126,61 +105,41 @@ class SendMaterialJob(Job): parts.append(self.device.createFormPart("name=\"signature_file\"; filename=\"{file_name}\"" .format(file_name = signature_file_name), f.read())) - Logger.log("d", "Syncing material {material_id} with cluster.".format(material_id = material_id)) - self.device.postFormWithParts(target = "materials/", parts = parts, on_finished = self.sendingFinished) + # FIXME: move form posting to API client + self.device.postFormWithParts(target = "/cluster-api/v1/materials/", parts = parts, + on_finished = self._sendingFinished) ## Check a reply from an upload to the printer and log an error when the call failed - @staticmethod - def sendingFinished(reply: QNetworkReply) -> None: + def _sendingFinished(self, reply: QNetworkReply) -> None: if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: - Logger.log("e", "Received error code from printer when syncing material: {code}, {text}".format( - code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute), - text = reply.errorString() - )) - - ## Parse the reply from the printer - # - # Parses the reply to a "/materials" request to the printer - # - # \return a dictionary of ClusterMaterial objects by GUID - # \throw KeyError Raised when on of the materials does not include a valid guid - @classmethod - def _parseReply(cls, reply: QNetworkReply) -> Optional[Dict[str, ClusterMaterial]]: - try: - remote_materials = json.loads(reply.readAll().data().decode("utf-8")) - return {material["guid"]: ClusterMaterial(**material) for material in remote_materials} - except UnicodeDecodeError: - Logger.log("e", "Request material storage on printer: I didn't understand the printer's answer.") - except json.JSONDecodeError: - Logger.log("e", "Request material storage on printer: I didn't understand the printer's answer.") - except ValueError: - Logger.log("e", "Request material storage on printer: Printer's answer had an incorrect value.") - except TypeError: - Logger.log("e", "Request material storage on printer: Printer's answer was missing a required value.") - return None + Logger.log("w", "Error while syncing material: %s", reply.errorString()) + return + body = reply.readAll().data().decode('utf8') + if "not added" in body: + # For some reason the cluster returns a 200 sometimes even when syncing failed. + return + # Inform the user that materials have been synced. This message only shows itself when not already visible. + # Because of the guards above it is not shown when syncing failed (which is not always an actual problem). + MaterialSyncMessage(self.device).show() ## Retrieves a list of local materials - # # Only the new newest version of the local materials is returned - # # \return a dictionary of LocalMaterial objects by GUID - def _getLocalMaterials(self) -> Dict[str, LocalMaterial]: + @staticmethod + def _getLocalMaterials() -> Dict[str, LocalMaterial]: result = {} # type: Dict[str, LocalMaterial] - material_manager = CuraApplication.getInstance().getMaterialManager() - - material_group_dict = material_manager.getAllMaterialGroups() + all_materials = CuraApplication.getInstance().getContainerRegistry().findInstanceContainersMetadata(type = "material") + all_base_files = [material for material in all_materials if material["id"] == material.get("base_file")] # Don't send materials without base_file: The empty material doesn't need to be sent. # Find the latest version of all material containers in the registry. - for root_material_id, material_group in material_group_dict.items(): - material_metadata = material_group.root_material_node.getMetadata() - + for material_metadata in all_base_files: try: # material version must be an int material_metadata["version"] = int(material_metadata["version"]) # Create a new local material local_material = LocalMaterial(**material_metadata) - local_material.id = root_material_id + local_material.id = material_metadata["id"] if local_material.GUID not in result or \ local_material.GUID not in result or \ diff --git a/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py b/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py new file mode 100644 index 0000000000..421246fb95 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py @@ -0,0 +1,146 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from queue import Queue +from threading import Thread, Event +from time import time +from typing import Optional + +from zeroconf import Zeroconf, ServiceBrowser, ServiceStateChange, ServiceInfo + +from UM.Logger import Logger +from UM.Signal import Signal +from cura.CuraApplication import CuraApplication + + +## The ZeroConfClient handles all network discovery logic. +# It emits signals when new network services were found or disappeared. +class ZeroConfClient: + + # The discovery protocol name for Ultimaker printers. + ZERO_CONF_NAME = u"_ultimaker._tcp.local." + + # Signals emitted when new services were discovered or removed on the network. + addedNetworkCluster = Signal() + removedNetworkCluster = Signal() + + def __init__(self) -> None: + self._zero_conf = None # type: Optional[Zeroconf] + self._zero_conf_browser = None # type: Optional[ServiceBrowser] + self._service_changed_request_queue = None # type: Optional[Queue] + self._service_changed_request_event = None # type: Optional[Event] + self._service_changed_request_thread = None # type: Optional[Thread] + + ## The ZeroConf service changed requests are handled in a separate thread so we don't block the UI. + # We can also re-schedule the requests when they fail to get detailed service info. + # Any new or re-reschedule requests will be appended to the request queue and the thread will process them. + def start(self) -> None: + self._service_changed_request_queue = Queue() + self._service_changed_request_event = Event() + try: + self._zero_conf = Zeroconf() + # CURA-6855 catch WinErrors + except OSError: + Logger.logException("e", "Failed to create zeroconf instance.") + return + + self._service_changed_request_thread = Thread(target = self._handleOnServiceChangedRequests, daemon = True, name = "ZeroConfServiceChangedThread") + self._service_changed_request_thread.start() + self._zero_conf_browser = ServiceBrowser(self._zero_conf, self.ZERO_CONF_NAME, [self._queueService]) + + # Cleanup ZeroConf resources. + def stop(self) -> None: + if self._zero_conf is not None: + self._zero_conf.close() + self._zero_conf = None + if self._zero_conf_browser is not None: + self._zero_conf_browser.cancel() + self._zero_conf_browser = None + + ## Handles a change is discovered network services. + def _queueService(self, zeroconf: Zeroconf, service_type, name: str, state_change: ServiceStateChange) -> None: + item = (zeroconf, service_type, name, state_change) + if not self._service_changed_request_queue or not self._service_changed_request_event: + return + self._service_changed_request_queue.put(item) + self._service_changed_request_event.set() + + ## Callback for when a ZeroConf service has changes. + def _handleOnServiceChangedRequests(self) -> None: + if not self._service_changed_request_queue or not self._service_changed_request_event: + return + + while True: + # Wait for the event to be set + self._service_changed_request_event.wait(timeout=5.0) + + # Stop if the application is shutting down + if CuraApplication.getInstance().isShuttingDown(): + return + + self._service_changed_request_event.clear() + + # Handle all pending requests + reschedule_requests = [] # A list of requests that have failed so later they will get re-scheduled + while not self._service_changed_request_queue.empty(): + request = self._service_changed_request_queue.get() + zeroconf, service_type, name, state_change = request + try: + result = self._onServiceChanged(zeroconf, service_type, name, state_change) + if not result: + reschedule_requests.append(request) + except Exception: + Logger.logException("e", "Failed to get service info for [%s] [%s], the request will be rescheduled", + service_type, name) + reschedule_requests.append(request) + + # Re-schedule the failed requests if any + if reschedule_requests: + for request in reschedule_requests: + self._service_changed_request_queue.put(request) + + ## Handler for zeroConf detection. + # Return True or False indicating if the process succeeded. + # Note that this function can take over 3 seconds to complete. Be careful calling it from the main thread. + def _onServiceChanged(self, zero_conf: Zeroconf, service_type: str, name: str, state_change: ServiceStateChange + ) -> bool: + if state_change == ServiceStateChange.Added: + return self._onServiceAdded(zero_conf, service_type, name) + elif state_change == ServiceStateChange.Removed: + return self._onServiceRemoved(name) + return True + + ## Handler for when a ZeroConf service was added. + def _onServiceAdded(self, zero_conf: Zeroconf, service_type: str, name: str) -> bool: + # First try getting info from zero-conf cache + info = ServiceInfo(service_type, name, properties={}) + for record in zero_conf.cache.entries_with_name(name.lower()): + info.update_record(zero_conf, time(), record) + + for record in zero_conf.cache.entries_with_name(info.server): + info.update_record(zero_conf, time(), record) + if info.address: + break + + # Request more data if info is not complete + if not info.address: + info = zero_conf.get_service_info(service_type, name) + + if info: + type_of_device = info.properties.get(b"type", None) + if type_of_device: + if type_of_device == b"printer": + address = '.'.join(map(lambda n: str(n), info.address)) + self.addedNetworkCluster.emit(str(name), address, info.properties) + else: + Logger.log("w", "The type of the found device is '%s', not 'printer'." % type_of_device) + else: + Logger.log("w", "Could not get information about %s" % name) + return False + + return True + + ## Handler for when a ZeroConf service was removed. + def _onServiceRemoved(self, name: str) -> bool: + Logger.log("d", "ZeroConf service removed: %s" % name) + self.removedNetworkCluster.emit(str(name)) + return True diff --git a/plugins/UM3NetworkPrinting/src/Network/__init__.py b/plugins/UM3NetworkPrinting/src/Network/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py b/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py index e9f47f1937..3ab37297b5 100644 --- a/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py +++ b/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py @@ -1,525 +1,73 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import json -from queue import Queue -from threading import Event, Thread -from time import time -import os - -from zeroconf import Zeroconf, ServiceBrowser, ServiceStateChange, ServiceInfo -from PyQt5.QtNetwork import QNetworkRequest, QNetworkAccessManager -from PyQt5.QtCore import pyqtSlot, QUrl, pyqtSignal, pyqtProperty, QObject -from PyQt5.QtGui import QDesktopServices +from typing import Optional, Callable, Dict +from UM.Signal import Signal from cura.CuraApplication import CuraApplication -from cura.PrinterOutputDevice import ConnectionType -from cura.Settings.GlobalStack import GlobalStack # typing -from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin -from UM.Logger import Logger -from UM.Signal import Signal, signalemitter -from UM.Version import Version -from UM.Message import Message -from UM.i18n import i18nCatalog -from . import ClusterUM3OutputDevice, LegacyUM3OutputDevice +from UM.OutputDevice.OutputDeviceManager import ManualDeviceAdditionAttempt +from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin + +from .Network.LocalClusterOutputDevice import LocalClusterOutputDevice +from .Network.LocalClusterOutputDeviceManager import LocalClusterOutputDeviceManager from .Cloud.CloudOutputDeviceManager import CloudOutputDeviceManager -from typing import Optional -i18n_catalog = i18nCatalog("cura") - -## This plugin handles the connection detection & creation of output device objects for the UM3 printer. -# Zero-Conf is used to detect printers, which are saved in a dict. -# If we discover a printer that has the same key as the active machine instance a connection is made. -@signalemitter +## This plugin handles the discovery and networking for Ultimaker 3D printers that support network and cloud printing. class UM3OutputDevicePlugin(OutputDevicePlugin): - addDeviceSignal = Signal() - removeDeviceSignal = Signal() + + # Signal emitted when the list of discovered devices changed. Used by printer action in this plugin. discoveredDevicesChanged = Signal() - cloudFlowIsPossible = Signal() - def __init__(self): + def __init__(self) -> None: super().__init__() - - self._zero_conf = None - self._zero_conf_browser = None - self._application = CuraApplication.getInstance() + # Create a network output device manager that abstracts all network connection logic away. + self._network_output_device_manager = LocalClusterOutputDeviceManager() + self._network_output_device_manager.discoveredDevicesChanged.connect(self.discoveredDevicesChanged) # Create a cloud output device manager that abstracts all cloud connection logic away. self._cloud_output_device_manager = CloudOutputDeviceManager() - # Because the model needs to be created in the same thread as the QMLEngine, we use a signal. - self.addDeviceSignal.connect(self._onAddDevice) - self.removeDeviceSignal.connect(self._onRemoveDevice) + # Refresh network connections when another machine was selected in Cura. + # This ensures no output devices are still connected that do not belong to the new active machine. + CuraApplication.getInstance().globalContainerStackChanged.connect(self.refreshConnections) - self._application.globalContainerStackChanged.connect(self.reCheckConnections) - - self._discovered_devices = {} - - self._network_manager = QNetworkAccessManager() - self._network_manager.finished.connect(self._onNetworkRequestFinished) - - self._min_cluster_version = Version("4.0.0") - self._min_cloud_version = Version("5.2.0") - - self._api_version = "1" - self._api_prefix = "/api/v" + self._api_version + "/" - self._cluster_api_version = "1" - self._cluster_api_prefix = "/cluster-api/v" + self._cluster_api_version + "/" - - # Get list of manual instances from preferences - self._preferences = CuraApplication.getInstance().getPreferences() - self._preferences.addPreference("um3networkprinting/manual_instances", - "") # A comma-separated list of ip adresses or hostnames - - self._manual_instances = self._preferences.getValue("um3networkprinting/manual_instances").split(",") - - # Store the last manual entry key - self._last_manual_entry_key = "" # type: str - - # The zero-conf service changed requests are handled in a separate thread, so we can re-schedule the requests - # which fail to get detailed service info. - # Any new or re-scheduled requests will be appended to the request queue, and the handling thread will pick - # them up and process them. - self._service_changed_request_queue = Queue() - self._service_changed_request_event = Event() - self._service_changed_request_thread = Thread(target=self._handleOnServiceChangedRequests, daemon=True) - self._service_changed_request_thread.start() - - self._account = self._application.getCuraAPI().account - - # Check if cloud flow is possible when user logs in - self._account.loginStateChanged.connect(self.checkCloudFlowIsPossible) - - # Check if cloud flow is possible when user switches machines - self._application.globalContainerStackChanged.connect(self._onMachineSwitched) - - # Listen for when cloud flow is possible - self.cloudFlowIsPossible.connect(self._onCloudFlowPossible) - - # Listen if cloud cluster was added - self._cloud_output_device_manager.addedCloudCluster.connect(self._onCloudPrintingConfigured) - - # Listen if cloud cluster was removed - self._cloud_output_device_manager.removedCloudCluster.connect(self.checkCloudFlowIsPossible) - - self._start_cloud_flow_message = None # type: Optional[Message] - self._cloud_flow_complete_message = None # type: Optional[Message] - - def getDiscoveredDevices(self): - return self._discovered_devices - - def getLastManualDevice(self) -> str: - return self._last_manual_entry_key - - def resetLastManualDevice(self) -> None: - self._last_manual_entry_key = "" - - ## Start looking for devices on network. + ## Start looking for devices in the network and cloud. def start(self): - self.startDiscovery() + self._network_output_device_manager.start() self._cloud_output_device_manager.start() - def startDiscovery(self): - self.stop() - if self._zero_conf_browser: - self._zero_conf_browser.cancel() - self._zero_conf_browser = None # Force the old ServiceBrowser to be destroyed. - - for instance_name in list(self._discovered_devices): - self._onRemoveDevice(instance_name) - - self._zero_conf = Zeroconf() - self._zero_conf_browser = ServiceBrowser(self._zero_conf, u'_ultimaker._tcp.local.', - [self._appendServiceChangedRequest]) - - # Look for manual instances from preference - for address in self._manual_instances: - if address: - self.addManualDevice(address) - self.resetLastManualDevice() - - def reCheckConnections(self): - active_machine = CuraApplication.getInstance().getGlobalContainerStack() - if not active_machine: - return - - um_network_key = active_machine.getMetaDataEntry("um_network_key") - - for key in self._discovered_devices: - if key == um_network_key: - if not self._discovered_devices[key].isConnected(): - Logger.log("d", "Attempting to connect with [%s]" % key) - # It should already be set, but if it actually connects we know for sure it's supported! - active_machine.addConfiguredConnectionType(self._discovered_devices[key].connectionType.value) - self._discovered_devices[key].connect() - self._discovered_devices[key].connectionStateChanged.connect(self._onDeviceConnectionStateChanged) - else: - self._onDeviceConnectionStateChanged(key) - else: - if self._discovered_devices[key].isConnected(): - Logger.log("d", "Attempting to close connection with [%s]" % key) - self._discovered_devices[key].close() - self._discovered_devices[key].connectionStateChanged.disconnect(self._onDeviceConnectionStateChanged) - - def _onDeviceConnectionStateChanged(self, key): - if key not in self._discovered_devices: - return - if self._discovered_devices[key].isConnected(): - # Sometimes the status changes after changing the global container and maybe the device doesn't belong to this machine - um_network_key = CuraApplication.getInstance().getGlobalContainerStack().getMetaDataEntry("um_network_key") - if key == um_network_key: - self.getOutputDeviceManager().addOutputDevice(self._discovered_devices[key]) - self.checkCloudFlowIsPossible() - else: - self.getOutputDeviceManager().removeOutputDevice(key) - - def stop(self): - if self._zero_conf is not None: - Logger.log("d", "zeroconf close...") - self._zero_conf.close() + # Stop network and cloud discovery. + def stop(self) -> None: + self._network_output_device_manager.stop() self._cloud_output_device_manager.stop() - def removeManualDevice(self, key, address = None): - if key in self._discovered_devices: - if not address: - address = self._discovered_devices[key].ipAddress - self._onRemoveDevice(key) - self.resetLastManualDevice() + ## Restart network discovery. + def startDiscovery(self) -> None: + self._network_output_device_manager.startDiscovery() - if address in self._manual_instances: - self._manual_instances.remove(address) - self._preferences.setValue("um3networkprinting/manual_instances", ",".join(self._manual_instances)) + ## Force refreshing the network connections. + def refreshConnections(self) -> None: + self._network_output_device_manager.refreshConnections() + self._cloud_output_device_manager.refreshConnections() - def addManualDevice(self, address): - if address not in self._manual_instances: - self._manual_instances.append(address) - self._preferences.setValue("um3networkprinting/manual_instances", ",".join(self._manual_instances)) + ## Indicate that this plugin supports adding networked printers manually. + def canAddManualDevice(self, address: str = "") -> ManualDeviceAdditionAttempt: + return ManualDeviceAdditionAttempt.PRIORITY - instance_name = "manual:%s" % address - properties = { - b"name": address.encode("utf-8"), - b"address": address.encode("utf-8"), - b"manual": b"true", - b"incomplete": b"true", - b"temporary": b"true" # Still a temporary device until all the info is retrieved in _onNetworkRequestFinished - } + ## Add a networked printer manually based on its network address. + def addManualDevice(self, address: str, callback: Optional[Callable[[bool, str], None]] = None) -> None: + self._network_output_device_manager.addManualDevice(address, callback) - if instance_name not in self._discovered_devices: - # Add a preliminary printer instance - self._onAddDevice(instance_name, address, properties) - self._last_manual_entry_key = instance_name - - self._checkManualDevice(address) - - def _checkManualDevice(self, address): - # Check if a UM3 family device exists at this address. - # If a printer responds, it will replace the preliminary printer created above - # origin=manual is for tracking back the origin of the call - url = QUrl("http://" + address + self._api_prefix + "system") - name_request = QNetworkRequest(url) - self._network_manager.get(name_request) - - def _onNetworkRequestFinished(self, reply): - reply_url = reply.url().toString() - - if "system" in reply_url: - if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: - # Something went wrong with checking the firmware version! - return - - try: - system_info = json.loads(bytes(reply.readAll()).decode("utf-8")) - except: - Logger.log("e", "Something went wrong converting the JSON.") - return - - address = reply.url().host() - has_cluster_capable_firmware = Version(system_info["firmware"]) > self._min_cluster_version - instance_name = "manual:%s" % address - properties = { - b"name": (system_info["name"] + " (manual)").encode("utf-8"), - b"address": address.encode("utf-8"), - b"firmware_version": system_info["firmware"].encode("utf-8"), - b"manual": b"true", - b"machine": str(system_info['hardware']["typeid"]).encode("utf-8") - } - - if has_cluster_capable_firmware: - # Cluster needs an additional request, before it's completed. - properties[b"incomplete"] = b"true" - - # Check if the device is still in the list & re-add it with the updated - # information. - if instance_name in self._discovered_devices: - self._onRemoveDevice(instance_name) - self._onAddDevice(instance_name, address, properties) - - if has_cluster_capable_firmware: - # We need to request more info in order to figure out the size of the cluster. - cluster_url = QUrl("http://" + address + self._cluster_api_prefix + "printers/") - cluster_request = QNetworkRequest(cluster_url) - self._network_manager.get(cluster_request) - - elif "printers" in reply_url: - if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: - # Something went wrong with checking the amount of printers the cluster has! - return - # So we confirmed that the device is in fact a cluster printer, and we should now know how big it is. - try: - cluster_printers_list = json.loads(bytes(reply.readAll()).decode("utf-8")) - except: - Logger.log("e", "Something went wrong converting the JSON.") - return - address = reply.url().host() - instance_name = "manual:%s" % address - if instance_name in self._discovered_devices: - device = self._discovered_devices[instance_name] - properties = device.getProperties().copy() - if b"incomplete" in properties: - del properties[b"incomplete"] - properties[b"cluster_size"] = len(cluster_printers_list) - self._onRemoveDevice(instance_name) - self._onAddDevice(instance_name, address, properties) - - def _onRemoveDevice(self, device_id): - device = self._discovered_devices.pop(device_id, None) - if device: - if device.isConnected(): - device.disconnect() - try: - device.connectionStateChanged.disconnect(self._onDeviceConnectionStateChanged) - except TypeError: - # Disconnect already happened. - pass - - self.discoveredDevicesChanged.emit() - - def _onAddDevice(self, name, address, properties): - # Check what kind of device we need to add; Depending on the firmware we either add a "Connect"/"Cluster" - # or "Legacy" UM3 device. - cluster_size = int(properties.get(b"cluster_size", -1)) - - printer_type = properties.get(b"machine", b"").decode("utf-8") - printer_type_identifiers = { - "9066": "ultimaker3", - "9511": "ultimaker3_extended", - "9051": "ultimaker_s5" - } - - for key, value in printer_type_identifiers.items(): - if printer_type.startswith(key): - properties[b"printer_type"] = bytes(value, encoding="utf8") - break - else: - properties[b"printer_type"] = b"Unknown" - if cluster_size >= 0: - device = ClusterUM3OutputDevice.ClusterUM3OutputDevice(name, address, properties) - else: - device = LegacyUM3OutputDevice.LegacyUM3OutputDevice(name, address, properties) - - self._discovered_devices[device.getId()] = device - self.discoveredDevicesChanged.emit() - - global_container_stack = CuraApplication.getInstance().getGlobalContainerStack() - if global_container_stack and device.getId() == global_container_stack.getMetaDataEntry("um_network_key"): - # Ensure that the configured connection type is set. - global_container_stack.addConfiguredConnectionType(device.connectionType.value) - device.connect() - device.connectionStateChanged.connect(self._onDeviceConnectionStateChanged) - - ## Appends a service changed request so later the handling thread will pick it up and processes it. - def _appendServiceChangedRequest(self, zeroconf, service_type, name, state_change): - # append the request and set the event so the event handling thread can pick it up - item = (zeroconf, service_type, name, state_change) - self._service_changed_request_queue.put(item) - self._service_changed_request_event.set() - - def _handleOnServiceChangedRequests(self): - while True: - # Wait for the event to be set - self._service_changed_request_event.wait(timeout = 5.0) - - # Stop if the application is shutting down - if CuraApplication.getInstance().isShuttingDown(): - return - - self._service_changed_request_event.clear() - - # Handle all pending requests - reschedule_requests = [] # A list of requests that have failed so later they will get re-scheduled - while not self._service_changed_request_queue.empty(): - request = self._service_changed_request_queue.get() - zeroconf, service_type, name, state_change = request - try: - result = self._onServiceChanged(zeroconf, service_type, name, state_change) - if not result: - reschedule_requests.append(request) - except Exception: - Logger.logException("e", "Failed to get service info for [%s] [%s], the request will be rescheduled", - service_type, name) - reschedule_requests.append(request) - - # Re-schedule the failed requests if any - if reschedule_requests: - for request in reschedule_requests: - self._service_changed_request_queue.put(request) - - ## Handler for zeroConf detection. - # Return True or False indicating if the process succeeded. - # Note that this function can take over 3 seconds to complete. Be careful - # calling it from the main thread. - def _onServiceChanged(self, zero_conf, service_type, name, state_change): - if state_change == ServiceStateChange.Added: - # First try getting info from zero-conf cache - info = ServiceInfo(service_type, name, properties = {}) - for record in zero_conf.cache.entries_with_name(name.lower()): - info.update_record(zero_conf, time(), record) - - for record in zero_conf.cache.entries_with_name(info.server): - info.update_record(zero_conf, time(), record) - if info.address: - break - - # Request more data if info is not complete - if not info.address: - info = zero_conf.get_service_info(service_type, name) - - if info: - type_of_device = info.properties.get(b"type", None) - if type_of_device: - if type_of_device == b"printer": - address = '.'.join(map(lambda n: str(n), info.address)) - self.addDeviceSignal.emit(str(name), address, info.properties) - else: - Logger.log("w", - "The type of the found device is '%s', not 'printer'! Ignoring.." % type_of_device) - else: - Logger.log("w", "Could not get information about %s" % name) - return False - - elif state_change == ServiceStateChange.Removed: - Logger.log("d", "Bonjour service removed: %s" % name) - self.removeDeviceSignal.emit(str(name)) - - return True - - ## Check if the prerequsites are in place to start the cloud flow - def checkCloudFlowIsPossible(self) -> None: - Logger.log("d", "Checking if cloud connection is possible...") - - # Pre-Check: Skip if active machine already has been cloud connected or you said don't ask again - active_machine = self._application.getMachineManager().activeMachine # type: Optional["GlobalStack"] - if active_machine: - - # Check 1A: Printer isn't already configured for cloud - if ConnectionType.CloudConnection.value in active_machine.configuredConnectionTypes: - Logger.log("d", "Active machine was already configured for cloud.") - return - - # Check 1B: Printer isn't already configured for cloud - if active_machine.getMetaDataEntry("cloud_flow_complete", False): - Logger.log("d", "Active machine was already configured for cloud.") - return - - # Check 2: User did not already say "Don't ask me again" - if active_machine.getMetaDataEntry("do_not_show_cloud_message", False): - Logger.log("d", "Active machine shouldn't ask about cloud anymore.") - return + ## Remove a manually connected networked printer. + def removeManualDevice(self, key: str, address: Optional[str] = None) -> None: + self._network_output_device_manager.removeManualDevice(key, address) - # Check 3: User is logged in with an Ultimaker account - if not self._account.isLoggedIn: - Logger.log("d", "Cloud Flow not possible: User not logged in!") - return + ## Get the discovered devices from the local network. + def getDiscoveredDevices(self) -> Dict[str, LocalClusterOutputDevice]: + return self._network_output_device_manager.getDiscoveredDevices() - # Check 4: Machine is configured for network connectivity - if not self._application.getMachineManager().activeMachineHasNetworkConnection: - Logger.log("d", "Cloud Flow not possible: Machine is not connected!") - return - - # Check 5: Machine has correct firmware version - firmware_version = self._application.getMachineManager().activeMachineFirmwareVersion # type: str - if not Version(firmware_version) > self._min_cloud_version: - Logger.log("d", "Cloud Flow not possible: Machine firmware (%s) is too low! (Requires version %s)", - firmware_version, - self._min_cloud_version) - return - - Logger.log("d", "Cloud flow is possible!") - self.cloudFlowIsPossible.emit() - - def _onCloudFlowPossible(self) -> None: - # Cloud flow is possible, so show the message - if not self._start_cloud_flow_message: - self._start_cloud_flow_message = Message( - text = i18n_catalog.i18nc("@info:status", "Send and monitor print jobs from anywhere using your Ultimaker account."), - lifetime = 0, - image_source = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "resources", "svg", - "cloud-flow-start.svg"), - image_caption = i18n_catalog.i18nc("@info:status", "Connect to Ultimaker Cloud"), - option_text = i18n_catalog.i18nc("@action", "Don't ask me again for this printer."), - option_state = False - ) - self._start_cloud_flow_message.addAction("", i18n_catalog.i18nc("@action", "Get started"), "", "") - self._start_cloud_flow_message.optionToggled.connect(self._onDontAskMeAgain) - self._start_cloud_flow_message.actionTriggered.connect(self._onCloudFlowStarted) - self._start_cloud_flow_message.show() - return - - def _onCloudPrintingConfigured(self) -> None: - if self._start_cloud_flow_message: - self._start_cloud_flow_message.hide() - self._start_cloud_flow_message = None - - # Show the successful pop-up - if not self._start_cloud_flow_message: - self._cloud_flow_complete_message = Message( - text = i18n_catalog.i18nc("@info:status", "You can now send and monitor print jobs from anywhere using your Ultimaker account."), - lifetime = 30, - image_source = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "resources", "svg", - "cloud-flow-completed.svg"), - image_caption = i18n_catalog.i18nc("@info:status", "Connected!") - ) - self._cloud_flow_complete_message.addAction("", i18n_catalog.i18nc("@action", "Review your connection"), "", "", 1) # TODO: Icon - self._cloud_flow_complete_message.actionTriggered.connect(self._onReviewCloudConnection) - self._cloud_flow_complete_message.show() - - # Set the machine's cloud flow as complete so we don't ask the user again and again for cloud connected printers - active_machine = self._application.getMachineManager().activeMachine - if active_machine: - active_machine.setMetaDataEntry("do_not_show_cloud_message", True) - return - - def _onDontAskMeAgain(self, checked: bool) -> None: - active_machine = self._application.getMachineManager().activeMachine # type: Optional["GlobalStack"] - if active_machine: - active_machine.setMetaDataEntry("do_not_show_cloud_message", checked) - if checked: - Logger.log("d", "Will not ask the user again to cloud connect for current printer.") - return - - def _onCloudFlowStarted(self, messageId: str, actionId: str) -> None: - address = self._application.getMachineManager().activeMachineAddress # type: str - if address: - QDesktopServices.openUrl(QUrl("http://" + address + "/cloud_connect")) - if self._start_cloud_flow_message: - self._start_cloud_flow_message.hide() - self._start_cloud_flow_message = None - return - - def _onReviewCloudConnection(self, messageId: str, actionId: str) -> None: - address = self._application.getMachineManager().activeMachineAddress # type: str - if address: - QDesktopServices.openUrl(QUrl("http://" + address + "/settings")) - return - - def _onMachineSwitched(self) -> None: - if self._start_cloud_flow_message is not None: - self._start_cloud_flow_message.hide() - self._start_cloud_flow_message = None - if self._cloud_flow_complete_message is not None: - self._cloud_flow_complete_message.hide() - self._cloud_flow_complete_message = None - - self.checkCloudFlowIsPossible() + ## Connect the active machine to a device. + def associateActiveMachineWithPrinterDevice(self, device: LocalClusterOutputDevice) -> None: + self._network_output_device_manager.associateActiveMachineWithPrinterDevice(device) diff --git a/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py b/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py new file mode 100644 index 0000000000..8c5f5c12ea --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py @@ -0,0 +1,87 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional, cast + +from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty, QObject + +from UM import i18nCatalog +from cura.CuraApplication import CuraApplication +from cura.MachineAction import MachineAction + +from .UM3OutputDevicePlugin import UM3OutputDevicePlugin +from .Network.LocalClusterOutputDevice import LocalClusterOutputDevice + + +I18N_CATALOG = i18nCatalog("cura") + + +## Machine action that allows to connect the active machine to a networked devices. +# TODO: in the future this should be part of the new discovery workflow baked into Cura. +class UltimakerNetworkedPrinterAction(MachineAction): + + # Signal emitted when discovered devices have changed. + discoveredDevicesChanged = pyqtSignal() + + def __init__(self) -> None: + super().__init__("DiscoverUM3Action", I18N_CATALOG.i18nc("@action", "Connect via Network")) + self._qml_url = "resources/qml/DiscoverUM3Action.qml" + self._network_plugin = None # type: Optional[UM3OutputDevicePlugin] + + ## Override the default value. + def needsUserInteraction(self) -> bool: + return False + + ## Start listening to network discovery events via the plugin. + @pyqtSlot(name = "startDiscovery") + def startDiscovery(self) -> None: + self._networkPlugin.discoveredDevicesChanged.connect(self._onDeviceDiscoveryChanged) + self.discoveredDevicesChanged.emit() # trigger at least once to populate the list + + ## Reset the discovered devices. + @pyqtSlot(name = "reset") + def reset(self) -> None: + self.discoveredDevicesChanged.emit() # trigger to reset the list + + ## Reset the discovered devices. + @pyqtSlot(name = "restartDiscovery") + def restartDiscovery(self) -> None: + self._networkPlugin.startDiscovery() + self.discoveredDevicesChanged.emit() # trigger to reset the list + + ## Remove a manually added device. + @pyqtSlot(str, str, name = "removeManualDevice") + def removeManualDevice(self, key: str, address: str) -> None: + self._networkPlugin.removeManualDevice(key, address) + + ## Add a new manual device. Can replace an existing one by key. + @pyqtSlot(str, str, name = "setManualDevice") + def setManualDevice(self, key: str, address: str) -> None: + if key != "": + self._networkPlugin.removeManualDevice(key) + if address != "": + self._networkPlugin.addManualDevice(address) + + ## Get the devices discovered in the local network sorted by name. + @pyqtProperty("QVariantList", notify = discoveredDevicesChanged) + def foundDevices(self): + discovered_devices = list(self._networkPlugin.getDiscoveredDevices().values()) + discovered_devices.sort(key = lambda d: d.name) + return discovered_devices + + ## Connect a device selected in the list with the active machine. + @pyqtSlot(QObject, name = "associateActiveMachineWithPrinterDevice") + def associateActiveMachineWithPrinterDevice(self, device: LocalClusterOutputDevice) -> None: + self._networkPlugin.associateActiveMachineWithPrinterDevice(device) + + ## Callback for when the list of discovered devices in the plugin was changed. + def _onDeviceDiscoveryChanged(self) -> None: + self.discoveredDevicesChanged.emit() + + ## Get the network manager from the plugin. + @property + def _networkPlugin(self) -> UM3OutputDevicePlugin: + if not self._network_plugin: + output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() + network_plugin = output_device_manager.getOutputDevicePlugin("UM3NetworkPrinting") + self._network_plugin = cast(UM3OutputDevicePlugin, network_plugin) + return self._network_plugin diff --git a/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterOutputDevice.py new file mode 100644 index 0000000000..73b5b456f9 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterOutputDevice.py @@ -0,0 +1,353 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import os +from time import time +from typing import List, Optional, Dict + +from PyQt5.QtCore import pyqtProperty, pyqtSignal, QObject, pyqtSlot, QUrl + +from UM.Logger import Logger +from UM.Qt.Duration import Duration, DurationFormat +from cura.CuraApplication import CuraApplication +from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel +from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState +from cura.PrinterOutput.PrinterOutputDevice import ConnectionType, ConnectionState + +from .Utils import formatTimeCompleted, formatDateCompleted +from .ClusterOutputController import ClusterOutputController +from .Messages.PrintJobUploadProgressMessage import PrintJobUploadProgressMessage +from .Messages.NotClusterHostMessage import NotClusterHostMessage +from .Models.UM3PrintJobOutputModel import UM3PrintJobOutputModel +from .Models.Http.ClusterPrinterStatus import ClusterPrinterStatus +from .Models.Http.ClusterPrintJobStatus import ClusterPrintJobStatus + + +## Output device class that forms the basis of Ultimaker networked printer output devices. +# Currently used for local networking and cloud printing using Ultimaker Connect. +# This base class primarily contains all the Qt properties and slots needed for the monitor page to work. +class UltimakerNetworkedPrinterOutputDevice(NetworkedPrinterOutputDevice): + + META_NETWORK_KEY = "um_network_key" + META_CLUSTER_ID = "um_cloud_cluster_id" + + # Signal emitted when the status of the print jobs for this cluster were changed over the network. + printJobsChanged = pyqtSignal() + + # Signal emitted when the currently visible printer card in the UI was changed by the user. + activePrinterChanged = pyqtSignal() + + # Notify can only use signals that are defined by the class that they are in, not inherited ones. + # Therefore we create a private signal used to trigger the printersChanged signal. + _clusterPrintersChanged = pyqtSignal() + + # States indicating if a print job is queued. + QUEUED_PRINT_JOBS_STATES = {"queued", "error"} + + # Time in seconds since last network response after which we consider this device offline. + # We set this a bit higher than some of the other intervals to make sure they don't overlap. + NETWORK_RESPONSE_CONSIDER_OFFLINE = 10.0 # seconds + + def __init__(self, device_id: str, address: str, properties: Dict[bytes, bytes], connection_type: ConnectionType, + parent=None) -> None: + + super().__init__(device_id=device_id, address=address, properties=properties, connection_type=connection_type, + parent=parent) + + # Trigger the printersChanged signal when the private signal is triggered. + self.printersChanged.connect(self._clusterPrintersChanged) + + # Keeps track the last network response to determine if we are still connected. + self._time_of_last_response = time() + self._time_of_last_request = time() + + # Set the display name from the properties. + self.setName(self.getProperty("name")) + + # Set the display name of the printer type. + definitions = CuraApplication.getInstance().getContainerRegistry().findContainers(id = self.printerType) + self._printer_type_name = definitions[0].getName() if definitions else "" + + # Keeps track of all printers in the cluster. + self._printers = [] # type: List[PrinterOutputModel] + self._has_received_printers = False + + # Keeps track of all print jobs in the cluster. + self._print_jobs = [] # type: List[UM3PrintJobOutputModel] + + # Keep track of the printer currently selected in the UI. + self._active_printer = None # type: Optional[PrinterOutputModel] + + # By default we are not authenticated. This state will be changed later. + self._authentication_state = AuthState.NotAuthenticated + + # Load the Monitor UI elements. + self._loadMonitorTab() + + # The job upload progress message modal. + self._progress = PrintJobUploadProgressMessage() + + ## The IP address of the printer. + @pyqtProperty(str, constant=True) + def address(self) -> str: + return self._address + + ## The display name of the printer. + @pyqtProperty(str, constant=True) + def printerTypeName(self) -> str: + return self._printer_type_name + + # Get all print jobs for this cluster. + @pyqtProperty("QVariantList", notify=printJobsChanged) + def printJobs(self) -> List[UM3PrintJobOutputModel]: + return self._print_jobs + + # Get all print jobs for this cluster that are queued. + @pyqtProperty("QVariantList", notify=printJobsChanged) + def queuedPrintJobs(self) -> List[UM3PrintJobOutputModel]: + return [print_job for print_job in self._print_jobs if print_job.state in self.QUEUED_PRINT_JOBS_STATES] + + # Get all print jobs for this cluster that are currently printing. + @pyqtProperty("QVariantList", notify=printJobsChanged) + def activePrintJobs(self) -> List[UM3PrintJobOutputModel]: + return [print_job for print_job in self._print_jobs if + print_job.assignedPrinter is not None and print_job.state not in self.QUEUED_PRINT_JOBS_STATES] + + @pyqtProperty(bool, notify=_clusterPrintersChanged) + def receivedData(self) -> bool: + return self._has_received_printers + + # Get the amount of printers in the cluster. + @pyqtProperty(int, notify=_clusterPrintersChanged) + def clusterSize(self) -> int: + if not self._has_received_printers: + discovered_size = self.getProperty("cluster_size") + if discovered_size == "": + return 1 # prevent false positives for new devices + return int(discovered_size) + return len(self._printers) + + # Get the amount of printer in the cluster per type. + @pyqtProperty("QVariantList", notify=_clusterPrintersChanged) + def connectedPrintersTypeCount(self) -> List[Dict[str, str]]: + printer_count = {} # type: Dict[str, int] + for printer in self._printers: + if printer.type in printer_count: + printer_count[printer.type] += 1 + else: + printer_count[printer.type] = 1 + result = [] + for machine_type in printer_count: + result.append({"machine_type": machine_type, "count": str(printer_count[machine_type])}) + return result + + # Get a list of all printers. + @pyqtProperty("QVariantList", notify=_clusterPrintersChanged) + def printers(self) -> List[PrinterOutputModel]: + return self._printers + + # Get the currently active printer in the UI. + @pyqtProperty(QObject, notify=activePrinterChanged) + def activePrinter(self) -> Optional[PrinterOutputModel]: + return self._active_printer + + # Set the currently active printer from the UI. + @pyqtSlot(QObject, name="setActivePrinter") + def setActivePrinter(self, printer: Optional[PrinterOutputModel]) -> None: + if self.activePrinter == printer: + return + self._active_printer = printer + self.activePrinterChanged.emit() + + ## Whether the printer that this output device represents supports print job actions via the local network. + @pyqtProperty(bool, constant=True) + def supportsPrintJobActions(self) -> bool: + return True + + ## Set the remote print job state. + def setJobState(self, print_job_uuid: str, state: str) -> None: + raise NotImplementedError("setJobState must be implemented") + + @pyqtSlot(str, name="sendJobToTop") + def sendJobToTop(self, print_job_uuid: str) -> None: + raise NotImplementedError("sendJobToTop must be implemented") + + @pyqtSlot(str, name="deleteJobFromQueue") + def deleteJobFromQueue(self, print_job_uuid: str) -> None: + raise NotImplementedError("deleteJobFromQueue must be implemented") + + @pyqtSlot(str, name="forceSendJob") + def forceSendJob(self, print_job_uuid: str) -> None: + raise NotImplementedError("forceSendJob must be implemented") + + @pyqtSlot(name="openPrintJobControlPanel") + def openPrintJobControlPanel(self) -> None: + raise NotImplementedError("openPrintJobControlPanel must be implemented") + + @pyqtSlot(name="openPrinterControlPanel") + def openPrinterControlPanel(self) -> None: + raise NotImplementedError("openPrinterControlPanel must be implemented") + + @pyqtProperty(QUrl, notify=_clusterPrintersChanged) + def activeCameraUrl(self) -> QUrl: + return QUrl() + + @pyqtSlot(QUrl, name="setActiveCameraUrl") + def setActiveCameraUrl(self, camera_url: QUrl) -> None: + pass + + @pyqtSlot(int, result=str, name="getTimeCompleted") + def getTimeCompleted(self, time_remaining: int) -> str: + return formatTimeCompleted(time_remaining) + + @pyqtSlot(int, result=str, name="getDateCompleted") + def getDateCompleted(self, time_remaining: int) -> str: + return formatDateCompleted(time_remaining) + + @pyqtSlot(int, result=str, name="formatDuration") + def formatDuration(self, seconds: int) -> str: + return Duration(seconds).getDisplayString(DurationFormat.Format.Short) + + def _update(self) -> None: + self._checkStillConnected() + super()._update() + + ## Check if we're still connected by comparing the last timestamps for network response and the current time. + # This implementation is similar to the base NetworkedPrinterOutputDevice, but is tweaked slightly. + # Re-connecting is handled automatically by the output device managers in this plugin. + # TODO: it would be nice to have this logic in the managers, but connecting those with signals causes crashes. + def _checkStillConnected(self) -> None: + time_since_last_response = time() - self._time_of_last_response + if time_since_last_response > self.NETWORK_RESPONSE_CONSIDER_OFFLINE: + self.setConnectionState(ConnectionState.Closed) + if self.key in CuraApplication.getInstance().getOutputDeviceManager().getOutputDeviceIds(): + CuraApplication.getInstance().getOutputDeviceManager().removeOutputDevice(self.key) + elif self.connectionState == ConnectionState.Closed: + self._reconnectForActiveMachine() + + ## Reconnect for the active output device. + # Does nothing if the device is not meant for the active machine. + def _reconnectForActiveMachine(self) -> None: + active_machine = CuraApplication.getInstance().getGlobalContainerStack() + if not active_machine: + return + + # Indicate this device is now connected again. + self.setConnectionState(ConnectionState.Connected) + + # If the device was already registered we don't need to register it again. + if self.key in CuraApplication.getInstance().getOutputDeviceManager().getOutputDeviceIds(): + return + + # Try for local network device. + stored_device_id = active_machine.getMetaDataEntry(self.META_NETWORK_KEY) + if self.key == stored_device_id: + CuraApplication.getInstance().getOutputDeviceManager().addOutputDevice(self) + + # Try for cloud device. + stored_cluster_id = active_machine.getMetaDataEntry(self.META_CLUSTER_ID) + if self.key == stored_cluster_id: + CuraApplication.getInstance().getOutputDeviceManager().addOutputDevice(self) + + def _responseReceived(self) -> None: + self._time_of_last_response = time() + + def _updatePrinters(self, remote_printers: List[ClusterPrinterStatus]) -> None: + self._responseReceived() + + # Keep track of the new printers to show. + # We create a new list instead of changing the existing one to get the correct order. + new_printers = [] # type: List[PrinterOutputModel] + + # Check which printers need to be created or updated. + for index, printer_data in enumerate(remote_printers): + printer = next(iter(printer for printer in self._printers if printer.key == printer_data.uuid), None) + if printer is None: + printer = printer_data.createOutputModel(ClusterOutputController(self)) + else: + printer_data.updateOutputModel(printer) + new_printers.append(printer) + + # Check which printers need to be removed (de-referenced). + remote_printers_keys = [printer_data.uuid for printer_data in remote_printers] + removed_printers = [printer for printer in self._printers if printer.key not in remote_printers_keys] + for removed_printer in removed_printers: + if self._active_printer and self._active_printer.key == removed_printer.key: + self.setActivePrinter(None) + + self._printers = new_printers + self._has_received_printers = True + if self._printers and not self.activePrinter: + self.setActivePrinter(self._printers[0]) + + self.printersChanged.emit() + self._checkIfClusterHost() + + ## Check is this device is a cluster host and takes the needed actions when it is not. + def _checkIfClusterHost(self): + if len(self._printers) < 1 and self.isConnected(): + NotClusterHostMessage(self).show() + self.close() + CuraApplication.getInstance().getOutputDeviceManager().removeOutputDevice(self.key) + + ## Updates the local list of print jobs with the list received from the cluster. + # \param remote_jobs: The print jobs received from the cluster. + def _updatePrintJobs(self, remote_jobs: List[ClusterPrintJobStatus]) -> None: + self._responseReceived() + + # Keep track of the new print jobs to show. + # We create a new list instead of changing the existing one to get the correct order. + new_print_jobs = [] + + # Check which print jobs need to be created or updated. + for index, print_job_data in enumerate(remote_jobs): + print_job = next( + iter(print_job for print_job in self._print_jobs if print_job.key == print_job_data.uuid), None) + if not print_job: + new_print_jobs.append(self._createPrintJobModel(print_job_data)) + else: + print_job_data.updateOutputModel(print_job) + if print_job_data.printer_uuid: + self._updateAssignedPrinter(print_job, print_job_data.printer_uuid) + if print_job_data.assigned_to: + self._updateAssignedPrinter(print_job, print_job_data.assigned_to) + new_print_jobs.append(print_job) + + # Check which print job need to be removed (de-referenced). + remote_job_keys = [print_job_data.uuid for print_job_data in remote_jobs] + removed_jobs = [print_job for print_job in self._print_jobs if print_job.key not in remote_job_keys] + for removed_job in removed_jobs: + if removed_job.assignedPrinter: + removed_job.assignedPrinter.updateActivePrintJob(None) + + self._print_jobs = new_print_jobs + self.printJobsChanged.emit() + + ## Create a new print job model based on the remote status of the job. + # \param remote_job: The remote print job data. + def _createPrintJobModel(self, remote_job: ClusterPrintJobStatus) -> UM3PrintJobOutputModel: + model = remote_job.createOutputModel(ClusterOutputController(self)) + if remote_job.printer_uuid: + self._updateAssignedPrinter(model, remote_job.printer_uuid) + if remote_job.assigned_to: + self._updateAssignedPrinter(model, remote_job.assigned_to) + return model + + ## Updates the printer assignment for the given print job model. + def _updateAssignedPrinter(self, model: UM3PrintJobOutputModel, printer_uuid: str) -> None: + printer = next((p for p in self._printers if printer_uuid == p.key), None) + if not printer: + return + printer.updateActivePrintJob(model) + model.updateAssignedPrinter(printer) + + ## Load Monitor tab QML. + def _loadMonitorTab(self) -> None: + plugin_registry = CuraApplication.getInstance().getPluginRegistry() + if not plugin_registry: + Logger.log("e", "Could not get plugin registry") + return + plugin_path = plugin_registry.getPluginPath("UM3NetworkPrinting") + if not plugin_path: + Logger.log("e", "Could not get plugin path") + return + self._monitor_view_qml_path = os.path.join(plugin_path, "resources", "qml", "MonitorStage.qml") diff --git a/plugins/UM3NetworkPrinting/src/Utils.py b/plugins/UM3NetworkPrinting/src/Utils.py new file mode 100644 index 0000000000..a628130416 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Utils.py @@ -0,0 +1,30 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from datetime import datetime, timedelta + +from UM import i18nCatalog + + +def formatTimeCompleted(seconds_remaining: int) -> str: + completed = datetime.now() + timedelta(seconds=seconds_remaining) + return "{hour:02d}:{minute:02d}".format(hour = completed.hour, minute = completed.minute) + + +def formatDateCompleted(seconds_remaining: int) -> str: + now = datetime.now() + completed = now + timedelta(seconds=seconds_remaining) + days = (completed.date() - now.date()).days + i18n = i18nCatalog("cura") + + # If finishing date is more than 7 days out, using "Mon Dec 3 at HH:MM" format + if days >= 7: + return completed.strftime("%a %b ") + "{day}".format(day = completed.day) + # If finishing date is within the next week, use "Monday at HH:MM" format + elif days >= 2: + return completed.strftime("%a") + # If finishing tomorrow, use "tomorrow at HH:MM" format + elif days >= 1: + return i18n.i18nc("@info:status", "tomorrow") + # If finishing today, use "today at HH:MM" format + else: + return i18n.i18nc("@info:status", "today") diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/__init__.py b/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/__init__.py deleted file mode 100644 index 777afc92c2..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -import json -import os - - -def readFixture(fixture_name: str) -> bytes: - with open("{}/{}.json".format(os.path.dirname(__file__), fixture_name), "rb") as f: - return f.read() - -def parseFixture(fixture_name: str) -> dict: - return json.loads(readFixture(fixture_name).decode()) diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusterStatusResponse.json b/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusterStatusResponse.json deleted file mode 100644 index 4f9f47fc75..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusterStatusResponse.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "data": { - "generated_time": "2018-12-10T08:23:55.110Z", - "printers": [ - { - "configuration": [ - { - "extruder_index": 0, - "material": { - "material": "empty" - }, - "print_core_id": "AA 0.4" - }, - { - "extruder_index": 1, - "material": { - "material": "empty" - }, - "print_core_id": "AA 0.4" - } - ], - "enabled": true, - "firmware_version": "5.1.2.20180807", - "friendly_name": "Master-Luke", - "ip_address": "10.183.1.140", - "machine_variant": "Ultimaker 3", - "status": "maintenance", - "unique_name": "ultimakersystem-ccbdd30044ec", - "uuid": "b3a47ea3-1eeb-4323-9626-6f9c3c888f9e" - }, - { - "configuration": [ - { - "extruder_index": 0, - "material": { - "brand": "Generic", - "color": "Generic", - "guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", - "material": "PLA" - }, - "print_core_id": "AA 0.4" - }, - { - "extruder_index": 1, - "material": { - "brand": "Ultimaker", - "color": "Red", - "guid": "9cfe5bf1-bdc5-4beb-871a-52c70777842d", - "material": "PLA" - }, - "print_core_id": "AA 0.4" - } - ], - "enabled": true, - "firmware_version": "4.3.3.20180529", - "friendly_name": "UM-Marijn", - "ip_address": "10.183.1.166", - "machine_variant": "Ultimaker 3", - "status": "idle", - "unique_name": "ultimakersystem-ccbdd30058ab", - "uuid": "6e62c40a-4601-4b0e-9fec-c7c02c59c30a" - } - ], - "print_jobs": [ - { - "assigned_to": "6e62c40a-4601-4b0e-9fec-c7c02c59c30a", - "configuration": [ - { - "extruder_index": 0, - "material": { - "brand": "Ultimaker", - "color": "Black", - "guid": "3ee70a86-77d8-4b87-8005-e4a1bc57d2ce", - "material": "PLA" - }, - "print_core_id": "AA 0.4" - } - ], - "constraints": {}, - "created_at": "2018-12-10T08:28:04.108Z", - "force": false, - "last_seen": 500165.109491861, - "machine_variant": "Ultimaker 3", - "name": "UM3_dragon", - "network_error_count": 0, - "owner": "Daniel Testing", - "started": false, - "status": "queued", - "time_elapsed": 0, - "time_total": 14145, - "uuid": "d1c8bd52-5e9f-486a-8c25-a123cc8c7702" - } - ] - } -} diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusters.json b/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusters.json deleted file mode 100644 index 5200e3b971..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusters.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "data": [{ - "cluster_id": "RIZ6cZbWA_Ua7RZVJhrdVfVpf0z-MqaSHQE4v8aRTtYq", - "host_guid": "e90ae0ac-1257-4403-91ee-a44c9b7e8050", - "host_name": "ultimakersystem-ccbdd30044ec", - "host_version": "5.0.0.20170101", - "is_online": true, - "status": "active" - }, { - "cluster_id": "NWKV6vJP_LdYsXgXqAcaNCR0YcLJwar1ugh0ikEZsZs8", - "host_guid": "e0ace90a-91ee-1257-4403-e8050a44c9b7", - "host_name": "ultimakersystem-30044ecccbdd", - "host_version": "5.1.2.20180807", - "is_online": true, - "status": "active" - }] -} diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/postJobPrintResponse.json b/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/postJobPrintResponse.json deleted file mode 100644 index caedcd8732..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/postJobPrintResponse.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "data": { - "cluster_job_id": "9a59d8e9-91d3-4ff6-b4cb-9db91c4094dd", - "job_id": "ABCDefGHIjKlMNOpQrSTUvYxWZ0-1234567890abcDE=", - "status": "queued", - "generated_time": "2018-12-10T08:23:55.110Z" - } -} diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/putJobUploadResponse.json b/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/putJobUploadResponse.json deleted file mode 100644 index 1304f3a9f6..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/putJobUploadResponse.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "data": { - "content_type": "text/plain", - "job_id": "ABCDefGHIjKlMNOpQrSTUvYxWZ0-1234567890abcDE=", - "job_name": "Ultimaker Robot v3.0", - "status": "uploading", - "upload_url": "https://api.ultimaker.com/print-job-upload" - } -} diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Models/__init__.py b/plugins/UM3NetworkPrinting/tests/Cloud/Models/__init__.py deleted file mode 100644 index f3f6970c54..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Models/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/NetworkManagerMock.py b/plugins/UM3NetworkPrinting/tests/Cloud/NetworkManagerMock.py deleted file mode 100644 index e504509d67..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/NetworkManagerMock.py +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -import json -from typing import Dict, Tuple, Union, Optional, Any -from unittest.mock import MagicMock - -from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest - -from UM.Logger import Logger -from UM.Signal import Signal - - -class FakeSignal: - def __init__(self): - self._callbacks = [] - - def connect(self, callback): - self._callbacks.append(callback) - - def disconnect(self, callback): - self._callbacks.remove(callback) - - def emit(self, *args, **kwargs): - for callback in self._callbacks: - callback(*args, **kwargs) - - -## This class can be used to mock the QNetworkManager class and test the code using it. -# After patching the QNetworkManager class, requests are prepared before they can be executed. -# Any requests not prepared beforehand will cause KeyErrors. -class NetworkManagerMock: - - # An enumeration of the supported operations and their code for the network access manager. - _OPERATIONS = { - "GET": QNetworkAccessManager.GetOperation, - "POST": QNetworkAccessManager.PostOperation, - "PUT": QNetworkAccessManager.PutOperation, - "DELETE": QNetworkAccessManager.DeleteOperation, - "HEAD": QNetworkAccessManager.HeadOperation, - } # type: Dict[str, int] - - ## Initializes the network manager mock. - def __init__(self) -> None: - # A dict with the prepared replies, using the format {(http_method, url): reply} - self.replies = {} # type: Dict[Tuple[str, str], MagicMock] - self.request_bodies = {} # type: Dict[Tuple[str, str], bytes] - - # Signals used in the network manager. - self.finished = Signal() - self.authenticationRequired = Signal() - - ## Mock implementation of the get, post, put, delete and head methods from the network manager. - # Since the methods are very simple and the same it didn't make sense to repeat the code. - # \param method: The method being called. - # \return The mocked function, if the method name is known. Defaults to the standard getattr function. - def __getattr__(self, method: str) -> Any: - ## This mock implementation will simply return the reply from the prepared ones. - # it raises a KeyError if requests are done without being prepared. - def doRequest(request: QNetworkRequest, body: Optional[bytes] = None, *_): - key = method.upper(), request.url().toString() - if body: - self.request_bodies[key] = body - return self.replies[key] - - operation = self._OPERATIONS.get(method.upper()) - if operation: - return doRequest - - # the attribute is not one of the implemented methods, default to the standard implementation. - return getattr(super(), method) - - ## Prepares a server reply for the given parameters. - # \param method: The HTTP method. - # \param url: The URL being requested. - # \param status_code: The HTTP status code for the response. - # \param response: The response body from the server (generally json-encoded). - def prepareReply(self, method: str, url: str, status_code: int, response: Union[bytes, dict]) -> None: - reply_mock = MagicMock() - reply_mock.url().toString.return_value = url - reply_mock.operation.return_value = self._OPERATIONS[method] - reply_mock.attribute.return_value = status_code - reply_mock.finished = FakeSignal() - reply_mock.isFinished.return_value = False - reply_mock.readAll.return_value = response if isinstance(response, bytes) else json.dumps(response).encode() - self.replies[method, url] = reply_mock - Logger.log("i", "Prepared mock {}-response to {} {}", status_code, method, url) - - ## Gets the request that was sent to the network manager for the given method and URL. - # \param method: The HTTP method. - # \param url: The URL. - def getRequestBody(self, method: str, url: str) -> Optional[bytes]: - return self.request_bodies.get((method.upper(), url)) - - ## Emits the signal that the reply is ready to all prepared replies. - def flushReplies(self) -> None: - for key, reply in self.replies.items(): - Logger.log("i", "Flushing reply to {} {}", *key) - reply.isFinished.return_value = True - reply.finished.emit() - self.finished.emit(reply) - self.reset() - - ## Deletes all prepared replies - def reset(self) -> None: - self.replies.clear() diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudApiClient.py b/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudApiClient.py deleted file mode 100644 index b79d009c31..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudApiClient.py +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -from typing import List -from unittest import TestCase -from unittest.mock import patch, MagicMock - -from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot -from ...src.Cloud import CloudApiClient -from ...src.Cloud.Models.CloudClusterResponse import CloudClusterResponse -from ...src.Cloud.Models.CloudClusterStatus import CloudClusterStatus -from ...src.Cloud.Models.CloudPrintJobResponse import CloudPrintJobResponse -from ...src.Cloud.Models.CloudPrintJobUploadRequest import CloudPrintJobUploadRequest -from ...src.Cloud.Models.CloudError import CloudError -from .Fixtures import readFixture, parseFixture -from .NetworkManagerMock import NetworkManagerMock - - -class TestCloudApiClient(TestCase): - maxDiff = None - - def _errorHandler(self, errors: List[CloudError]): - raise Exception("Received unexpected error: {}".format(errors)) - - def setUp(self): - super().setUp() - self.account = MagicMock() - self.account.isLoggedIn.return_value = True - - self.network = NetworkManagerMock() - with patch.object(CloudApiClient, 'QNetworkAccessManager', return_value = self.network): - self.api = CloudApiClient.CloudApiClient(self.account, self._errorHandler) - - def test_getClusters(self): - result = [] - - response = readFixture("getClusters") - data = parseFixture("getClusters")["data"] - - self.network.prepareReply("GET", CuraCloudAPIRoot + "/connect/v1/clusters", 200, response) - # The callback is a function that adds the result of the call to getClusters to the result list - self.api.getClusters(lambda clusters: result.extend(clusters)) - - self.network.flushReplies() - - self.assertEqual([CloudClusterResponse(**data[0]), CloudClusterResponse(**data[1])], result) - - def test_getClusterStatus(self): - result = [] - - response = readFixture("getClusterStatusResponse") - data = parseFixture("getClusterStatusResponse")["data"] - - url = CuraCloudAPIRoot + "/connect/v1/clusters/R0YcLJwar1ugh0ikEZsZs8NWKV6vJP_LdYsXgXqAcaNC/status" - self.network.prepareReply("GET", url, 200, response) - self.api.getClusterStatus("R0YcLJwar1ugh0ikEZsZs8NWKV6vJP_LdYsXgXqAcaNC", lambda s: result.append(s)) - - self.network.flushReplies() - - self.assertEqual([CloudClusterStatus(**data)], result) - - def test_requestUpload(self): - - results = [] - - response = readFixture("putJobUploadResponse") - - self.network.prepareReply("PUT", CuraCloudAPIRoot + "/cura/v1/jobs/upload", 200, response) - request = CloudPrintJobUploadRequest(job_name = "job name", file_size = 143234, content_type = "text/plain") - self.api.requestUpload(request, lambda r: results.append(r)) - self.network.flushReplies() - - self.assertEqual(["text/plain"], [r.content_type for r in results]) - self.assertEqual(["uploading"], [r.status for r in results]) - - def test_uploadToolPath(self): - - results = [] - progress = MagicMock() - - data = parseFixture("putJobUploadResponse")["data"] - upload_response = CloudPrintJobResponse(**data) - - # Network client doesn't look into the reply - self.network.prepareReply("PUT", upload_response.upload_url, 200, b'{}') - - mesh = ("1234" * 100000).encode() - self.api.uploadToolPath(upload_response, mesh, lambda: results.append("sent"), progress.advance, progress.error) - - for _ in range(10): - self.network.flushReplies() - self.network.prepareReply("PUT", upload_response.upload_url, 200, b'{}') - - self.assertEqual(["sent"], results) - - def test_requestPrint(self): - - results = [] - - response = readFixture("postJobPrintResponse") - - cluster_id = "NWKV6vJP_LdYsXgXqAcaNCR0YcLJwar1ugh0ikEZsZs8" - cluster_job_id = "9a59d8e9-91d3-4ff6-b4cb-9db91c4094dd" - job_id = "ABCDefGHIjKlMNOpQrSTUvYxWZ0-1234567890abcDE=" - - self.network.prepareReply("POST", - CuraCloudAPIRoot + "/connect/v1/clusters/{}/print/{}" - .format(cluster_id, job_id), - 200, response) - - self.api.requestPrint(cluster_id, job_id, lambda r: results.append(r)) - - self.network.flushReplies() - - self.assertEqual([job_id], [r.job_id for r in results]) - self.assertEqual([cluster_job_id], [r.cluster_job_id for r in results]) - self.assertEqual(["queued"], [r.status for r in results]) diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudOutputDevice.py b/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudOutputDevice.py deleted file mode 100644 index c4d891302e..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudOutputDevice.py +++ /dev/null @@ -1,155 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -import json -from unittest import TestCase -from unittest.mock import patch, MagicMock - -from UM.Scene.SceneNode import SceneNode -from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot -from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel -from ...src.Cloud import CloudApiClient -from ...src.Cloud.CloudOutputDevice import CloudOutputDevice -from ...src.Cloud.Models.CloudClusterResponse import CloudClusterResponse -from .Fixtures import readFixture, parseFixture -from .NetworkManagerMock import NetworkManagerMock - - -class TestCloudOutputDevice(TestCase): - maxDiff = None - - CLUSTER_ID = "RIZ6cZbWA_Ua7RZVJhrdVfVpf0z-MqaSHQE4v8aRTtYq" - JOB_ID = "ABCDefGHIjKlMNOpQrSTUvYxWZ0-1234567890abcDE=" - HOST_NAME = "ultimakersystem-ccbdd30044ec" - HOST_GUID = "e90ae0ac-1257-4403-91ee-a44c9b7e8050" - HOST_VERSION = "5.2.0" - - STATUS_URL = "{}/connect/v1/clusters/{}/status".format(CuraCloudAPIRoot, CLUSTER_ID) - PRINT_URL = "{}/connect/v1/clusters/{}/print/{}".format(CuraCloudAPIRoot, CLUSTER_ID, JOB_ID) - REQUEST_UPLOAD_URL = "{}/cura/v1/jobs/upload".format(CuraCloudAPIRoot) - - def setUp(self): - super().setUp() - self.app = MagicMock() - - self.patches = [patch("UM.Qt.QtApplication.QtApplication.getInstance", return_value=self.app), - patch("UM.Application.Application.getInstance", return_value=self.app)] - for patched_method in self.patches: - patched_method.start() - - self.cluster = CloudClusterResponse(self.CLUSTER_ID, self.HOST_GUID, self.HOST_NAME, is_online=True, - status="active", host_version=self.HOST_VERSION) - - self.network = NetworkManagerMock() - self.account = MagicMock(isLoggedIn=True, accessToken="TestAccessToken") - self.onError = MagicMock() - with patch.object(CloudApiClient, "QNetworkAccessManager", return_value = self.network): - self._api = CloudApiClient.CloudApiClient(self.account, self.onError) - - self.device = CloudOutputDevice(self._api, self.cluster) - self.cluster_status = parseFixture("getClusterStatusResponse") - self.network.prepareReply("GET", self.STATUS_URL, 200, readFixture("getClusterStatusResponse")) - - def tearDown(self): - try: - super().tearDown() - self.network.flushReplies() - finally: - for patched_method in self.patches: - patched_method.stop() - - # We test for these in order to make sure the correct file type is selected depending on the firmware version. - def test_properties(self): - self.assertEqual(self.device.firmwareVersion, self.HOST_VERSION) - self.assertEqual(self.device.name, self.HOST_NAME) - - def test_status(self): - self.device._update() - self.network.flushReplies() - - self.assertEqual([PrinterOutputModel, PrinterOutputModel], [type(printer) for printer in self.device.printers]) - - controller_fields = { - "_output_device": self.device, - "can_abort": False, - "can_control_manually": False, - "can_pause": False, - "can_pre_heat_bed": False, - "can_pre_heat_hotends": False, - "can_send_raw_gcode": False, - "can_update_firmware": False, - } - - self.assertEqual({printer["uuid"] for printer in self.cluster_status["data"]["printers"]}, - {printer.key for printer in self.device.printers}) - self.assertEqual([controller_fields, controller_fields], - [printer.getController().__dict__ for printer in self.device.printers]) - - self.assertEqual(["UM3PrintJobOutputModel"], [type(printer).__name__ for printer in self.device.printJobs]) - self.assertEqual({job["uuid"] for job in self.cluster_status["data"]["print_jobs"]}, - {job.key for job in self.device.printJobs}) - self.assertEqual({job["owner"] for job in self.cluster_status["data"]["print_jobs"]}, - {job.owner for job in self.device.printJobs}) - self.assertEqual({job["name"] for job in self.cluster_status["data"]["print_jobs"]}, - {job.name for job in self.device.printJobs}) - - def test_remove_print_job(self): - self.device._update() - self.network.flushReplies() - self.assertEqual(1, len(self.device.printJobs)) - - self.cluster_status["data"]["print_jobs"].clear() - self.network.prepareReply("GET", self.STATUS_URL, 200, self.cluster_status) - - self.device._last_request_time = None - self.device._update() - self.network.flushReplies() - self.assertEqual([], self.device.printJobs) - - def test_remove_printers(self): - self.device._update() - self.network.flushReplies() - self.assertEqual(2, len(self.device.printers)) - - self.cluster_status["data"]["printers"].clear() - self.network.prepareReply("GET", self.STATUS_URL, 200, self.cluster_status) - - self.device._last_request_time = None - self.device._update() - self.network.flushReplies() - self.assertEqual([], self.device.printers) - - def test_print_to_cloud(self): - active_machine_mock = self.app.getGlobalContainerStack.return_value - active_machine_mock.getMetaDataEntry.side_effect = {"file_formats": "application/x-ufp"}.get - - request_upload_response = parseFixture("putJobUploadResponse") - request_print_response = parseFixture("postJobPrintResponse") - self.network.prepareReply("PUT", self.REQUEST_UPLOAD_URL, 201, request_upload_response) - self.network.prepareReply("PUT", request_upload_response["data"]["upload_url"], 201, b"{}") - self.network.prepareReply("POST", self.PRINT_URL, 200, request_print_response) - - file_handler = MagicMock() - file_handler.getSupportedFileTypesWrite.return_value = [{ - "extension": "ufp", - "mime_type": "application/x-ufp", - "mode": 2 - }, { - "extension": "gcode.gz", - "mime_type": "application/gzip", - "mode": 2, - }] - file_handler.getWriterByMimeType.return_value.write.side_effect = \ - lambda stream, nodes: stream.write(str(nodes).encode()) - - scene_nodes = [SceneNode()] - expected_mesh = str(scene_nodes).encode() - self.device.requestWrite(scene_nodes, file_handler=file_handler, file_name="FileName") - - self.network.flushReplies() - self.assertEqual( - {"data": {"content_type": "application/x-ufp", "file_size": len(expected_mesh), "job_name": "FileName"}}, - json.loads(self.network.getRequestBody("PUT", self.REQUEST_UPLOAD_URL).decode()) - ) - self.assertEqual(expected_mesh, - self.network.getRequestBody("PUT", request_upload_response["data"]["upload_url"])) - self.assertIsNone(self.network.getRequestBody("POST", self.PRINT_URL)) diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudOutputDeviceManager.py b/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudOutputDeviceManager.py deleted file mode 100644 index e24ca1694e..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudOutputDeviceManager.py +++ /dev/null @@ -1,123 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -from unittest import TestCase -from unittest.mock import patch, MagicMock - -from UM.OutputDevice.OutputDeviceManager import OutputDeviceManager -from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot -from ...src.Cloud import CloudApiClient -from ...src.Cloud import CloudOutputDeviceManager -from .Fixtures import parseFixture, readFixture -from .NetworkManagerMock import NetworkManagerMock, FakeSignal - - -class TestCloudOutputDeviceManager(TestCase): - maxDiff = None - - URL = CuraCloudAPIRoot + "/connect/v1/clusters" - - def setUp(self): - super().setUp() - self.app = MagicMock() - self.device_manager = OutputDeviceManager() - self.app.getOutputDeviceManager.return_value = self.device_manager - - self.patches = [patch("UM.Qt.QtApplication.QtApplication.getInstance", return_value=self.app), - patch("UM.Application.Application.getInstance", return_value=self.app)] - for patched_method in self.patches: - patched_method.start() - - self.network = NetworkManagerMock() - self.timer = MagicMock(timeout = FakeSignal()) - with patch.object(CloudApiClient, "QNetworkAccessManager", return_value = self.network), \ - patch.object(CloudOutputDeviceManager, "QTimer", return_value = self.timer): - self.manager = CloudOutputDeviceManager.CloudOutputDeviceManager() - self.clusters_response = parseFixture("getClusters") - self.network.prepareReply("GET", self.URL, 200, readFixture("getClusters")) - - def tearDown(self): - try: - self._beforeTearDown() - - self.network.flushReplies() - self.manager.stop() - for patched_method in self.patches: - patched_method.stop() - finally: - super().tearDown() - - ## Before tear down method we check whether the state of the output device manager is what we expect based on the - # mocked API response. - def _beforeTearDown(self): - # let the network send replies - self.network.flushReplies() - # get the created devices - devices = self.device_manager.getOutputDevices() - # TODO: Check active device - - response_clusters = self.clusters_response.get("data", []) - manager_clusters = sorted([device.clusterData.toDict() for device in self.manager._remote_clusters.values()], - key=lambda cluster: cluster['cluster_id'], reverse=True) - self.assertEqual(response_clusters, manager_clusters) - - ## Runs the initial request to retrieve the clusters. - def _loadData(self): - self.manager.start() - self.network.flushReplies() - - def test_device_is_created(self): - # just create the cluster, it is checked at tearDown - self._loadData() - - def test_device_is_updated(self): - self._loadData() - - # update the cluster from member variable, which is checked at tearDown - self.clusters_response["data"][0]["host_name"] = "New host name" - self.network.prepareReply("GET", self.URL, 200, self.clusters_response) - - self.manager._update_timer.timeout.emit() - - def test_device_is_removed(self): - self._loadData() - - # delete the cluster from member variable, which is checked at tearDown - del self.clusters_response["data"][1] - self.network.prepareReply("GET", self.URL, 200, self.clusters_response) - - self.manager._update_timer.timeout.emit() - - def test_device_connects_by_cluster_id(self): - active_machine_mock = self.app.getGlobalContainerStack.return_value - cluster1, cluster2 = self.clusters_response["data"] - cluster_id = cluster1["cluster_id"] - active_machine_mock.getMetaDataEntry.side_effect = {"um_cloud_cluster_id": cluster_id}.get - - self._loadData() - - self.assertTrue(self.device_manager.getOutputDevice(cluster1["cluster_id"]).isConnected()) - self.assertIsNone(self.device_manager.getOutputDevice(cluster2["cluster_id"])) - self.assertEquals([], active_machine_mock.setMetaDataEntry.mock_calls) - - def test_device_connects_by_network_key(self): - active_machine_mock = self.app.getGlobalContainerStack.return_value - - cluster1, cluster2 = self.clusters_response["data"] - network_key = cluster2["host_name"] + ".ultimaker.local" - active_machine_mock.getMetaDataEntry.side_effect = {"um_network_key": network_key}.get - - self._loadData() - - self.assertIsNone(self.device_manager.getOutputDevice(cluster1["cluster_id"])) - self.assertTrue(self.device_manager.getOutputDevice(cluster2["cluster_id"]).isConnected()) - - active_machine_mock.setMetaDataEntry.assert_called_with("um_cloud_cluster_id", cluster2["cluster_id"]) - - @patch.object(CloudOutputDeviceManager, "Message") - def test_api_error(self, message_mock): - self.clusters_response = { - "errors": [{"id": "notFound", "title": "Not found!", "http_status": "404", "code": "notFound"}] - } - self.network.prepareReply("GET", self.URL, 200, self.clusters_response) - self._loadData() - message_mock.return_value.show.assert_called_once_with() diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/__init__.py b/plugins/UM3NetworkPrinting/tests/Cloud/__init__.py deleted file mode 100644 index f3f6970c54..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. diff --git a/plugins/UM3NetworkPrinting/tests/TestSendMaterialJob.py b/plugins/UM3NetworkPrinting/tests/TestSendMaterialJob.py deleted file mode 100644 index 952d38dcf4..0000000000 --- a/plugins/UM3NetworkPrinting/tests/TestSendMaterialJob.py +++ /dev/null @@ -1,244 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -import io -import json -from unittest import TestCase, mock -from unittest.mock import patch, call, MagicMock - -from PyQt5.QtCore import QByteArray - -from UM.Application import Application - -from cura.Machines.MaterialGroup import MaterialGroup -from cura.Machines.MaterialNode import MaterialNode - -from ..src.SendMaterialJob import SendMaterialJob - -_FILES_MAP = {"generic_pla_white": "/materials/generic_pla_white.xml.fdm_material", - "generic_pla_black": "/materials/generic_pla_black.xml.fdm_material", - } - - -@patch("builtins.open", lambda _, __: io.StringIO("")) -class TestSendMaterialJob(TestCase): - # version 1 - _LOCAL_MATERIAL_WHITE = {"type": "material", "status": "unknown", "id": "generic_pla_white", - "base_file": "generic_pla_white", "setting_version": "5", "name": "White PLA", - "brand": "Generic", "material": "PLA", "color_name": "White", - "GUID": "badb0ee7-87c8-4f3f-9398-938587b67dce", "version": "1", "color_code": "#ffffff", - "description": "Test PLA White", "adhesion_info": "Use glue.", "approximate_diameter": "3", - "properties": {"density": "1.00", "diameter": "2.85", "weight": "750"}, - "definition": "fdmprinter", "compatible": True} - - # version 2 - _LOCAL_MATERIAL_WHITE_NEWER = {"type": "material", "status": "unknown", "id": "generic_pla_white", - "base_file": "generic_pla_white", "setting_version": "5", "name": "White PLA", - "brand": "Generic", "material": "PLA", "color_name": "White", - "GUID": "badb0ee7-87c8-4f3f-9398-938587b67dce", "version": "2", - "color_code": "#ffffff", - "description": "Test PLA White", "adhesion_info": "Use glue.", - "approximate_diameter": "3", - "properties": {"density": "1.00", "diameter": "2.85", "weight": "750"}, - "definition": "fdmprinter", "compatible": True} - - # invalid version: "one" - _LOCAL_MATERIAL_WHITE_INVALID_VERSION = {"type": "material", "status": "unknown", "id": "generic_pla_white", - "base_file": "generic_pla_white", "setting_version": "5", "name": "White PLA", - "brand": "Generic", "material": "PLA", "color_name": "White", - "GUID": "badb0ee7-87c8-4f3f-9398-938587b67dce", "version": "one", - "color_code": "#ffffff", - "description": "Test PLA White", "adhesion_info": "Use glue.", - "approximate_diameter": "3", - "properties": {"density": "1.00", "diameter": "2.85", "weight": "750"}, - "definition": "fdmprinter", "compatible": True} - - _LOCAL_MATERIAL_WHITE_ALL_RESULT = {"generic_pla_white": MaterialGroup("generic_pla_white", - MaterialNode(_LOCAL_MATERIAL_WHITE))} - - _LOCAL_MATERIAL_WHITE_NEWER_ALL_RESULT = {"generic_pla_white": MaterialGroup("generic_pla_white", - MaterialNode(_LOCAL_MATERIAL_WHITE_NEWER))} - - _LOCAL_MATERIAL_WHITE_INVALID_VERSION_ALL_RESULT = {"generic_pla_white": MaterialGroup("generic_pla_white", - MaterialNode(_LOCAL_MATERIAL_WHITE_INVALID_VERSION))} - - _LOCAL_MATERIAL_BLACK = {"type": "material", "status": "unknown", "id": "generic_pla_black", - "base_file": "generic_pla_black", "setting_version": "5", "name": "Yellow CPE", - "brand": "Ultimaker", "material": "CPE", "color_name": "Black", - "GUID": "5fbb362a-41f9-4818-bb43-15ea6df34aa4", "version": "1", "color_code": "#000000", - "description": "Test PLA Black", "adhesion_info": "Use glue.", "approximate_diameter": "3", - "properties": {"density": "1.01", "diameter": "2.85", "weight": "750"}, - "definition": "fdmprinter", "compatible": True} - - _LOCAL_MATERIAL_BLACK_ALL_RESULT = {"generic_pla_black": MaterialGroup("generic_pla_black", - MaterialNode(_LOCAL_MATERIAL_BLACK))} - - _REMOTE_MATERIAL_WHITE = { - "guid": "badb0ee7-87c8-4f3f-9398-938587b67dce", - "material": "PLA", - "brand": "Generic", - "version": 1, - "color": "White", - "density": 1.00 - } - - _REMOTE_MATERIAL_BLACK = { - "guid": "5fbb362a-41f9-4818-bb43-15ea6df34aa4", - "material": "PLA", - "brand": "Generic", - "version": 2, - "color": "Black", - "density": 1.00 - } - - def test_run(self): - device_mock = MagicMock() - job = SendMaterialJob(device_mock) - job.run() - - # We expect the materials endpoint to be called when the job runs. - device_mock.get.assert_called_with("materials/", on_finished = job._onGetRemoteMaterials) - - def test__onGetRemoteMaterials_withFailedRequest(self): - reply_mock = MagicMock() - device_mock = MagicMock() - reply_mock.attribute.return_value = 404 - job = SendMaterialJob(device_mock) - job._onGetRemoteMaterials(reply_mock) - - # We expect the device not to be called for any follow up. - self.assertEqual(0, device_mock.createFormPart.call_count) - - def test__onGetRemoteMaterials_withWrongEncoding(self): - reply_mock = MagicMock() - device_mock = MagicMock() - reply_mock.attribute.return_value = 200 - reply_mock.readAll.return_value = QByteArray(json.dumps([self._REMOTE_MATERIAL_WHITE]).encode("cp500")) - job = SendMaterialJob(device_mock) - job._onGetRemoteMaterials(reply_mock) - - # Given that the parsing fails we do no expect the device to be called for any follow up. - self.assertEqual(0, device_mock.createFormPart.call_count) - - def test__onGetRemoteMaterials_withBadJsonAnswer(self): - reply_mock = MagicMock() - device_mock = MagicMock() - reply_mock.attribute.return_value = 200 - reply_mock.readAll.return_value = QByteArray(b"Six sick hicks nick six slick bricks with picks and sticks.") - job = SendMaterialJob(device_mock) - job._onGetRemoteMaterials(reply_mock) - - # Given that the parsing fails we do no expect the device to be called for any follow up. - self.assertEqual(0, device_mock.createFormPart.call_count) - - def test__onGetRemoteMaterials_withMissingGuidInRemoteMaterial(self): - reply_mock = MagicMock() - device_mock = MagicMock() - reply_mock.attribute.return_value = 200 - remote_material_without_guid = self._REMOTE_MATERIAL_WHITE.copy() - del remote_material_without_guid["guid"] - reply_mock.readAll.return_value = QByteArray(json.dumps([remote_material_without_guid]).encode("ascii")) - job = SendMaterialJob(device_mock) - job._onGetRemoteMaterials(reply_mock) - - # Given that parsing fails we do not expect the device to be called for any follow up. - self.assertEqual(0, device_mock.createFormPart.call_count) - - @patch("cura.Machines.MaterialManager.MaterialManager") - @patch("cura.Settings.CuraContainerRegistry") - @patch("UM.Application") - def test__onGetRemoteMaterials_withInvalidVersionInLocalMaterial(self, application_mock, container_registry_mock, - material_manager_mock): - reply_mock = MagicMock() - device_mock = MagicMock() - application_mock.getContainerRegistry.return_value = container_registry_mock - application_mock.getMaterialManager.return_value = material_manager_mock - - reply_mock.attribute.return_value = 200 - reply_mock.readAll.return_value = QByteArray(json.dumps([self._REMOTE_MATERIAL_WHITE]).encode("ascii")) - - material_manager_mock.getAllMaterialGroups.return_value = self._LOCAL_MATERIAL_WHITE_INVALID_VERSION_ALL_RESULT.copy() - - with mock.patch.object(Application, "getInstance", new = lambda: application_mock): - job = SendMaterialJob(device_mock) - job._onGetRemoteMaterials(reply_mock) - - self.assertEqual(0, device_mock.createFormPart.call_count) - - @patch("UM.Application.Application.getInstance") - def test__onGetRemoteMaterials_withNoUpdate(self, application_mock): - reply_mock = MagicMock() - device_mock = MagicMock() - container_registry_mock = application_mock.getContainerRegistry.return_value - material_manager_mock = application_mock.getMaterialManager.return_value - - device_mock.createFormPart.return_value = "_xXx_" - - material_manager_mock.getAllMaterialGroups.return_value = self._LOCAL_MATERIAL_WHITE_ALL_RESULT.copy() - - reply_mock.attribute.return_value = 200 - reply_mock.readAll.return_value = QByteArray(json.dumps([self._REMOTE_MATERIAL_WHITE]).encode("ascii")) - - with mock.patch.object(Application, "getInstance", new = lambda: application_mock): - job = SendMaterialJob(device_mock) - job._onGetRemoteMaterials(reply_mock) - - self.assertEqual(0, device_mock.createFormPart.call_count) - self.assertEqual(0, device_mock.postFormWithParts.call_count) - - @patch("UM.Application.Application.getInstance") - def test__onGetRemoteMaterials_withUpdatedMaterial(self, get_instance_mock): - reply_mock = MagicMock() - device_mock = MagicMock() - application_mock = get_instance_mock.return_value - container_registry_mock = application_mock.getContainerRegistry.return_value - material_manager_mock = application_mock.getMaterialManager.return_value - - container_registry_mock.getContainerFilePathById = lambda x: _FILES_MAP.get(x) - - device_mock.createFormPart.return_value = "_xXx_" - - material_manager_mock.getAllMaterialGroups.return_value = self._LOCAL_MATERIAL_WHITE_NEWER_ALL_RESULT.copy() - - reply_mock.attribute.return_value = 200 - reply_mock.readAll.return_value = QByteArray(json.dumps([self._REMOTE_MATERIAL_WHITE]).encode("ascii")) - - job = SendMaterialJob(device_mock) - job._onGetRemoteMaterials(reply_mock) - - self.assertEqual(1, device_mock.createFormPart.call_count) - self.assertEqual(1, device_mock.postFormWithParts.call_count) - self.assertEquals( - [call.createFormPart("name=\"file\"; filename=\"generic_pla_white.xml.fdm_material\"", ""), - call.postFormWithParts(target = "materials/", parts = ["_xXx_"], on_finished = job.sendingFinished)], - device_mock.method_calls) - - @patch("UM.Application.Application.getInstance") - def test__onGetRemoteMaterials_withNewMaterial(self, application_mock): - reply_mock = MagicMock() - device_mock = MagicMock() - container_registry_mock = application_mock.getContainerRegistry.return_value - material_manager_mock = application_mock.getMaterialManager.return_value - - container_registry_mock.getContainerFilePathById = lambda x: _FILES_MAP.get(x) - - device_mock.createFormPart.return_value = "_xXx_" - - all_results = self._LOCAL_MATERIAL_WHITE_ALL_RESULT.copy() - for key, value in self._LOCAL_MATERIAL_BLACK_ALL_RESULT.items(): - all_results[key] = value - material_manager_mock.getAllMaterialGroups.return_value = all_results - - reply_mock.attribute.return_value = 200 - reply_mock.readAll.return_value = QByteArray(json.dumps([self._REMOTE_MATERIAL_BLACK]).encode("ascii")) - - with mock.patch.object(Application, "getInstance", new = lambda: application_mock): - job = SendMaterialJob(device_mock) - job._onGetRemoteMaterials(reply_mock) - - self.assertEqual(1, device_mock.createFormPart.call_count) - self.assertEqual(1, device_mock.postFormWithParts.call_count) - self.assertEquals( - [call.createFormPart("name=\"file\"; filename=\"generic_pla_white.xml.fdm_material\"", ""), - call.postFormWithParts(target = "materials/", parts = ["_xXx_"], on_finished = job.sendingFinished)], - device_mock.method_calls) diff --git a/plugins/UM3NetworkPrinting/tests/__init__.py b/plugins/UM3NetworkPrinting/tests/__init__.py deleted file mode 100644 index f3f6970c54..0000000000 --- a/plugins/UM3NetworkPrinting/tests/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. diff --git a/plugins/USBPrinting/AvrFirmwareUpdater.py b/plugins/USBPrinting/AvrFirmwareUpdater.py index 56e3f99c23..0f7146560d 100644 --- a/plugins/USBPrinting/AvrFirmwareUpdater.py +++ b/plugins/USBPrinting/AvrFirmwareUpdater.py @@ -13,7 +13,7 @@ from time import sleep MYPY = False if MYPY: - from cura.PrinterOutputDevice import PrinterOutputDevice + from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice class AvrFirmwareUpdater(FirmwareUpdater): diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 752773723e..c9758d88d4 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -1,29 +1,38 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. + import os -from UM.Logger import Logger from UM.i18n import i18nCatalog +from UM.Logger import Logger +from UM.Mesh.MeshWriter import MeshWriter #To get the g-code output. +from UM.Message import Message #Show an error when already printing. +from UM.PluginRegistry import PluginRegistry #To get the g-code output. from UM.Qt.Duration import DurationFormat from cura.CuraApplication import CuraApplication -from cura.PrinterOutputDevice import PrinterOutputDevice, ConnectionState, ConnectionType -from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel -from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel +from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice, ConnectionState, ConnectionType +from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel +from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.GenericOutputController import GenericOutputController from .AutoDetectBaudJob import AutoDetectBaudJob from .AvrFirmwareUpdater import AvrFirmwareUpdater +from io import StringIO #To write the g-code output. +from queue import Queue from serial import Serial, SerialException, SerialTimeoutException from threading import Thread, Event from time import time -from queue import Queue -from typing import Union, Optional, List, cast +from typing import Union, Optional, List, cast, TYPE_CHECKING import re import functools # Used for reduce +if TYPE_CHECKING: + from UM.FileHandler.FileHandler import FileHandler + from UM.Scene.SceneNode import SceneNode + catalog = i18nCatalog("cura") @@ -52,7 +61,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._all_baud_rates = [115200, 250000, 500000, 230400, 57600, 38400, 19200, 9600] # Instead of using a timer, we really need the update to be as a thread, as reading from serial can block. - self._update_thread = Thread(target = self._update, daemon = True) + self._update_thread = Thread(target = self._update, daemon = True, name = "USBPrinterUpdate") self._last_temperature_request = None # type: Optional[int] self._firmware_idle_count = 0 @@ -108,34 +117,39 @@ class USBPrinterOutputDevice(PrinterOutputDevice): ## Request the current scene to be sent to a USB-connected printer. # # \param nodes A collection of scene nodes to send. This is ignored. - # \param file_name \type{string} A suggestion for a file name to write. + # \param file_name A suggestion for a file name to write. # \param filter_by_machine Whether to filter MIME types by machine. This # is ignored. # \param kwargs Keyword arguments. - def requestWrite(self, nodes, file_name = None, filter_by_machine = False, file_handler = None, **kwargs): + def requestWrite(self, nodes: List["SceneNode"], file_name: Optional[str] = None, limit_mimetypes: bool = False, + file_handler: Optional["FileHandler"] = None, filter_by_machine: bool = False, **kwargs) -> None: if self._is_printing: - return # Aleady printing + message = Message(text = catalog.i18nc("@message", "A print is still in progress. Cura cannot start another print via USB until the previous print has completed."), title = catalog.i18nc("@message", "Print in Progress")) + message.show() + return # Already printing self.writeStarted.emit(self) # cancel any ongoing preheat timer before starting a print - self._printers[0].getController().stopPreheatTimers() + controller = cast(GenericOutputController, self._printers[0].getController()) + controller.stopPreheatTimers() CuraApplication.getInstance().getController().setActiveStage("MonitorStage") - # find the G-code for the active build plate to print - active_build_plate_id = CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate - gcode_dict = getattr(CuraApplication.getInstance().getController().getScene(), "gcode_dict") - gcode_list = gcode_dict[active_build_plate_id] + #Find the g-code to print. + gcode_textio = StringIO() + gcode_writer = cast(MeshWriter, PluginRegistry.getInstance().getPluginObject("GCodeWriter")) + success = gcode_writer.write(gcode_textio, None) + if not success: + return - self._printGCode(gcode_list) + self._printGCode(gcode_textio.getvalue()) ## Start a print based on a g-code. - # \param gcode_list List with gcode (strings). - def _printGCode(self, gcode_list: List[str]): + # \param gcode The g-code to print. + def _printGCode(self, gcode: str): self._gcode.clear() self._paused = False - for layer in gcode_list: - self._gcode.extend(layer.split("\n")) + self._gcode.extend(gcode.split("\n")) # Reset line number. If this is not done, first line is sometimes ignored self._gcode.insert(0, "M110") @@ -176,7 +190,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): try: self._serial = Serial(str(self._serial_port), self._baud_rate, timeout=self._timeout, writeTimeout=self._timeout) except SerialException: - Logger.log("w", "An exception occured while trying to create serial connection") + Logger.log("w", "An exception occurred while trying to create serial connection") return CuraApplication.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerStackChanged) self._onGlobalContainerStackChanged() @@ -198,7 +212,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._serial.close() # Re-create the thread so it can be started again later. - self._update_thread = Thread(target=self._update, daemon=True) + self._update_thread = Thread(target=self._update, daemon=True, name = "USBPrinterUpdate") self._serial = None ## Send a command to printer. @@ -221,6 +235,9 @@ class USBPrinterOutputDevice(PrinterOutputDevice): except SerialTimeoutException: Logger.log("w", "Timeout when sending command to printer via USB.") self._command_received.set() + except SerialException: + Logger.logException("w", "An unexpected exception occurred while writing to the serial.") + self.setConnectionState(ConnectionState.Error) def _update(self): while self._connection_state == ConnectionState.Connected and self._serial is not None: @@ -243,7 +260,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._last_temperature_request = time() if re.search(b"[B|T\d*]: ?\d+\.?\d*", line): # Temperature message. 'T:' for extruder and 'B:' for bed - extruder_temperature_matches = re.findall(b"T(\d*): ?(\d+\.?\d*) ?\/?(\d+\.?\d*)?", line) + extruder_temperature_matches = re.findall(b"T(\d*): ?(\d+\.?\d*)\s*\/?(\d+\.?\d*)?", line) # Update all temperature values matched_extruder_nrs = [] for match in extruder_temperature_matches: @@ -265,7 +282,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): if match[2]: extruder.updateTargetHotendTemperature(float(match[2])) - bed_temperature_matches = re.findall(b"B: ?(\d+\.?\d*) ?\/?(\d+\.?\d*) ?", line) + bed_temperature_matches = re.findall(b"B: ?(\d+\.?\d*)\s*\/?(\d+\.?\d*)?", line) if bed_temperature_matches: match = bed_temperature_matches[0] if match[0]: @@ -311,7 +328,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): def _setFirmwareName(self, name): new_name = re.findall(r"FIRMWARE_NAME:(.*);", str(name)) - if new_name: + if new_name: self._firmware_name = new_name[0] Logger.log("i", "USB output device Firmware name: %s", self._firmware_name) else: @@ -366,10 +383,17 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._sendCommand("N%d%s*%d" % (self._gcode_position, line, checksum)) - progress = (self._gcode_position / len(self._gcode)) + print_job = self._printers[0].activePrintJob + try: + progress = self._gcode_position / len(self._gcode) + except ZeroDivisionError: + # There is nothing to send! + if print_job is not None: + print_job.updateState("error") + return elapsed_time = int(time() - self._print_start_time) - print_job = self._printers[0].activePrintJob + if print_job is None: controller = GenericOutputController(self) controller.setCanUpdateFirmware(True) diff --git a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py index d4c0d1828e..56f53145b0 100644 --- a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py +++ b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py @@ -4,16 +4,16 @@ import threading import time import serial.tools.list_ports +from os import environ +from re import search -from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal +from PyQt5.QtCore import QObject, pyqtSignal -from UM.Logger import Logger from UM.Signal import Signal, signalemitter from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin from UM.i18n import i18nCatalog -from cura.PrinterOutputDevice import ConnectionState -from cura.CuraApplication import CuraApplication +from cura.PrinterOutput.PrinterOutputDevice import ConnectionState from . import USBPrinterOutputDevice @@ -114,6 +114,27 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin): port = (port.device, port.description, port.hwid) if only_list_usb and not port[2].startswith("USB"): continue + + # To prevent cura from messing with serial ports of other devices, + # filter by regular expressions passed in as environment variables. + # Get possible patterns with python3 -m serial.tools.list_ports -v + + # set CURA_DEVICENAMES=USB[1-9] -> e.g. not matching /dev/ttyUSB0 + pattern = environ.get('CURA_DEVICENAMES') + if pattern and not search(pattern, port[0]): + continue + + # set CURA_DEVICETYPES=CP2102 -> match a type of serial converter + pattern = environ.get('CURA_DEVICETYPES') + if pattern and not search(pattern, port[1]): + continue + + # set CURA_DEVICEINFOS=LOCATION=2-1.4 -> match a physical port + # set CURA_DEVICEINFOS=VID:PID=10C4:EA60 -> match a vendor:product + pattern = environ.get('CURA_DEVICEINFOS') + if pattern and not search(pattern, port[2]): + continue + base_list += [port[0]] return list(base_list) diff --git a/plugins/USBPrinting/plugin.json b/plugins/USBPrinting/plugin.json index 45971d858b..c05ea65f2d 100644 --- a/plugins/USBPrinting/plugin.json +++ b/plugins/USBPrinting/plugin.json @@ -2,7 +2,7 @@ "name": "USB printing", "author": "Ultimaker B.V.", "version": "1.0.2", - "api": "6.0", + "api": "7.0", "description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.", "i18n-catalog": "cura" } diff --git a/plugins/UltimakerMachineActions/BedLevelMachineAction.py b/plugins/UltimakerMachineActions/BedLevelMachineAction.py index d6de21c89b..818ad0e4f0 100644 --- a/plugins/UltimakerMachineActions/BedLevelMachineAction.py +++ b/plugins/UltimakerMachineActions/BedLevelMachineAction.py @@ -4,7 +4,7 @@ from typing import List from cura.MachineAction import MachineAction -from cura.PrinterOutputDevice import PrinterOutputDevice +from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice from UM.FlameProfiler import pyqtSlot diff --git a/plugins/UltimakerMachineActions/BedLevelMachineAction.qml b/plugins/UltimakerMachineActions/BedLevelMachineAction.qml index 262d5df376..a9f7e93d44 100644 --- a/plugins/UltimakerMachineActions/BedLevelMachineAction.qml +++ b/plugins/UltimakerMachineActions/BedLevelMachineAction.qml @@ -1,24 +1,27 @@ -// Copyright (c) 2016 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 -import UM 1.2 as UM -import Cura 1.0 as Cura +import UM 1.3 as UM +import Cura 1.1 as Cura Cura.MachineAction { - anchors.fill: parent; + UM.I18nCatalog { id: catalog; name: "cura"; } + + anchors.fill: parent + Item { id: bedLevelMachineAction - anchors.fill: parent; - - UM.I18nCatalog { id: catalog; name: "cura"; } + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("default_margin").height * 3 + anchors.horizontalCenter: parent.horizontalCenter + width: parent.width * 3 / 4 Label { @@ -26,17 +29,24 @@ Cura.MachineAction width: parent.width text: catalog.i18nc("@title", "Build Plate Leveling") wrapMode: Text.WordWrap - font.pointSize: 18; + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering } + Label { id: pageDescription anchors.top: pageTitle.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 3 width: parent.width wrapMode: Text.WordWrap text: catalog.i18nc("@label", "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted.") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering } + Label { id: bedlevelingText @@ -45,37 +55,40 @@ Cura.MachineAction width: parent.width wrapMode: Text.WordWrap text: catalog.i18nc("@label", "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle.") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering } Row { id: bedlevelingWrapper anchors.top: bedlevelingText.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.topMargin: UM.Theme.getSize("default_margin").height * 3 anchors.horizontalCenter: parent.horizontalCenter width: childrenRect.width spacing: UM.Theme.getSize("default_margin").width - Button + Cura.ActionButton { id: startBedLevelingButton - text: catalog.i18nc("@action:button","Start Build Plate Leveling") + text: catalog.i18nc("@action:button", "Start Build Plate Leveling") onClicked: { - startBedLevelingButton.visible = false; - bedlevelingButton.visible = true; - manager.startBedLeveling(); + startBedLevelingButton.visible = false + bedlevelingButton.visible = true + manager.startBedLeveling() } } - Button + Cura.ActionButton { id: bedlevelingButton - text: catalog.i18nc("@action:button","Move to Next Position") + text: catalog.i18nc("@action:button", "Move to Next Position") visible: false onClicked: { - manager.moveToNextLevelPosition(); + manager.moveToNextLevelPosition() } } } diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py deleted file mode 100644 index 6ff3f0b629..0000000000 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Uranium is released under the terms of the LGPLv3 or higher. - -from UM.Settings.ContainerRegistry import ContainerRegistry -from cura.MachineAction import MachineAction -from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty - -from UM.i18n import i18nCatalog -from UM.Application import Application -from UM.Util import parseBool -catalog = i18nCatalog("cura") - - -## The Ultimaker 2 can have a few revisions & upgrades. -class UM2UpgradeSelection(MachineAction): - def __init__(self): - super().__init__("UM2UpgradeSelection", catalog.i18nc("@action", "Select upgrades")) - self._qml_url = "UM2UpgradeSelectionMachineAction.qml" - - self._container_registry = ContainerRegistry.getInstance() - - self._current_global_stack = None - - Application.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged) - self._reset() - - def _reset(self): - self.hasVariantsChanged.emit() - - def _onGlobalStackChanged(self): - if self._current_global_stack: - self._current_global_stack.metaDataChanged.disconnect(self._onGlobalStackMetaDataChanged) - - self._current_global_stack = Application.getInstance().getGlobalContainerStack() - if self._current_global_stack: - self._current_global_stack.metaDataChanged.connect(self._onGlobalStackMetaDataChanged) - self._reset() - - def _onGlobalStackMetaDataChanged(self): - self._reset() - - hasVariantsChanged = pyqtSignal() - - def setHasVariants(self, has_variants = True): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack: - variant_container = global_container_stack.extruders["0"].variant - - if has_variants: - global_container_stack.setMetaDataEntry("has_variants", True) - - # Set the variant container to a sane default - empty_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() - if type(variant_container) == type(empty_container): - search_criteria = { "type": "variant", "definition": "ultimaker2", "id": "*0.4*" } - containers = self._container_registry.findInstanceContainers(**search_criteria) - if containers: - global_container_stack.extruders["0"].variant = containers[0] - else: - # The metadata entry is stored in an ini, and ini files are parsed as strings only. - # Because any non-empty string evaluates to a boolean True, we have to remove the entry to make it False. - if "has_variants" in global_container_stack.getMetaData(): - global_container_stack.removeMetaDataEntry("has_variants") - - # Set the variant container to an empty variant - global_container_stack.extruders["0"].variant = ContainerRegistry.getInstance().getEmptyInstanceContainer() - - Application.getInstance().globalContainerStackChanged.emit() - self._reset() - - @pyqtProperty(bool, fset = setHasVariants, notify = hasVariantsChanged) - def hasVariants(self): - if self._current_global_stack: - return parseBool(self._current_global_stack.getMetaDataEntry("has_variants", "false")) diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml b/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml deleted file mode 100644 index 793f3f00a8..0000000000 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2016 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 - -import UM 1.2 as UM -import Cura 1.0 as Cura - - -Cura.MachineAction -{ - anchors.fill: parent; - - Item - { - id: upgradeSelectionMachineAction - anchors.fill: parent - - Label - { - id: pageTitle - width: parent.width - text: catalog.i18nc("@title", "Select Printer Upgrades") - wrapMode: Text.WordWrap - font.pointSize: 18; - } - - Label - { - id: pageDescription - anchors.top: pageTitle.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - width: parent.width - wrapMode: Text.WordWrap - text: catalog.i18nc("@label","Please select any upgrades made to this Ultimaker 2."); - } - - CheckBox - { - id: olssonBlockCheckBox - anchors.top: pageDescription.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - - text: catalog.i18nc("@label", "Olsson Block") - checked: manager.hasVariants - onClicked: manager.hasVariants = checked - - Connections - { - target: manager - onHasVariantsChanged: olssonBlockCheckBox.checked = manager.hasVariants - } - } - - UM.I18nCatalog { id: catalog; name: "cura"; } - } -} \ No newline at end of file diff --git a/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py b/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py deleted file mode 100644 index f9ad4789e5..0000000000 --- a/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py +++ /dev/null @@ -1,193 +0,0 @@ -from cura.MachineAction import MachineAction -from cura.PrinterOutputDevice import PrinterOutputDevice -from UM.Application import Application -from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty - -from UM.Logger import Logger -from UM.i18n import i18nCatalog -catalog = i18nCatalog("cura") - - -## Action to check up if the self-built UMO was done correctly. -class UMOCheckupMachineAction(MachineAction): - def __init__(self): - super().__init__("UMOCheckup", catalog.i18nc("@action", "Checkup")) - self._qml_url = "UMOCheckupMachineAction.qml" - self._hotend_target_temp = 180 - self._bed_target_temp = 60 - self._output_device = None - self._bed_test_completed = False - self._hotend_test_completed = False - - # Endstop tests - self._x_min_endstop_test_completed = False - self._y_min_endstop_test_completed = False - self._z_min_endstop_test_completed = False - - self._check_started = False - - Application.getInstance().getOutputDeviceManager().outputDevicesChanged.connect(self._onOutputDevicesChanged) - - onBedTestCompleted = pyqtSignal() - onHotendTestCompleted = pyqtSignal() - - onXMinEndstopTestCompleted = pyqtSignal() - onYMinEndstopTestCompleted = pyqtSignal() - onZMinEndstopTestCompleted = pyqtSignal() - - bedTemperatureChanged = pyqtSignal() - hotendTemperatureChanged = pyqtSignal() - - def _onOutputDevicesChanged(self): - # Check if this action was started, but no output device was found the first time. - # If so, re-try now that an output device has been added/removed. - if self._output_device is None and self._check_started: - self.startCheck() - - def _getPrinterOutputDevices(self): - return [printer_output_device for printer_output_device in - Application.getInstance().getOutputDeviceManager().getOutputDevices() if - isinstance(printer_output_device, PrinterOutputDevice)] - - def _reset(self): - if self._output_device: - self._output_device.bedTemperatureChanged.disconnect(self.bedTemperatureChanged) - self._output_device.hotendTemperaturesChanged.disconnect(self.hotendTemperatureChanged) - self._output_device.bedTemperatureChanged.disconnect(self._onBedTemperatureChanged) - self._output_device.hotendTemperaturesChanged.disconnect(self._onHotendTemperatureChanged) - self._output_device.endstopStateChanged.disconnect(self._onEndstopStateChanged) - try: - self._output_device.stopPollEndstop() - except AttributeError as e: # Connection is probably not a USB connection. Something went pretty wrong if this happens. - Logger.log("e", "An exception occurred while stopping end stop polling: %s" % str(e)) - - self._output_device = None - - self._check_started = False - self.checkStartedChanged.emit() - - # Ensure everything is reset (and right signals are emitted again) - self._bed_test_completed = False - self.onBedTestCompleted.emit() - self._hotend_test_completed = False - self.onHotendTestCompleted.emit() - - self._x_min_endstop_test_completed = False - self.onXMinEndstopTestCompleted.emit() - self._y_min_endstop_test_completed = False - self.onYMinEndstopTestCompleted.emit() - self._z_min_endstop_test_completed = False - self.onZMinEndstopTestCompleted.emit() - - self.heatedBedChanged.emit() - - @pyqtProperty(bool, notify = onBedTestCompleted) - def bedTestCompleted(self): - return self._bed_test_completed - - @pyqtProperty(bool, notify = onHotendTestCompleted) - def hotendTestCompleted(self): - return self._hotend_test_completed - - @pyqtProperty(bool, notify = onXMinEndstopTestCompleted) - def xMinEndstopTestCompleted(self): - return self._x_min_endstop_test_completed - - @pyqtProperty(bool, notify=onYMinEndstopTestCompleted) - def yMinEndstopTestCompleted(self): - return self._y_min_endstop_test_completed - - @pyqtProperty(bool, notify=onZMinEndstopTestCompleted) - def zMinEndstopTestCompleted(self): - return self._z_min_endstop_test_completed - - @pyqtProperty(float, notify = bedTemperatureChanged) - def bedTemperature(self): - if not self._output_device: - return 0 - return self._output_device.bedTemperature - - @pyqtProperty(float, notify=hotendTemperatureChanged) - def hotendTemperature(self): - if not self._output_device: - return 0 - return self._output_device.hotendTemperatures[0] - - def _onHotendTemperatureChanged(self): - if not self._output_device: - return - if not self._hotend_test_completed: - if self._output_device.hotendTemperatures[0] + 10 > self._hotend_target_temp and self._output_device.hotendTemperatures[0] - 10 < self._hotend_target_temp: - self._hotend_test_completed = True - self.onHotendTestCompleted.emit() - - def _onBedTemperatureChanged(self): - if not self._output_device: - return - if not self._bed_test_completed: - if self._output_device.bedTemperature + 5 > self._bed_target_temp and self._output_device.bedTemperature - 5 < self._bed_target_temp: - self._bed_test_completed = True - self.onBedTestCompleted.emit() - - def _onEndstopStateChanged(self, switch_type, state): - if state: - if switch_type == "x_min": - self._x_min_endstop_test_completed = True - self.onXMinEndstopTestCompleted.emit() - elif switch_type == "y_min": - self._y_min_endstop_test_completed = True - self.onYMinEndstopTestCompleted.emit() - elif switch_type == "z_min": - self._z_min_endstop_test_completed = True - self.onZMinEndstopTestCompleted.emit() - - checkStartedChanged = pyqtSignal() - - @pyqtProperty(bool, notify = checkStartedChanged) - def checkStarted(self): - return self._check_started - - @pyqtSlot() - def startCheck(self): - self._check_started = True - self.checkStartedChanged.emit() - output_devices = self._getPrinterOutputDevices() - if output_devices: - self._output_device = output_devices[0] - try: - self._output_device.sendCommand("M18") # Turn off all motors so the user can move the axes - self._output_device.startPollEndstop() - self._output_device.bedTemperatureChanged.connect(self.bedTemperatureChanged) - self._output_device.hotendTemperaturesChanged.connect(self.hotendTemperatureChanged) - self._output_device.bedTemperatureChanged.connect(self._onBedTemperatureChanged) - self._output_device.hotendTemperaturesChanged.connect(self._onHotendTemperatureChanged) - self._output_device.endstopStateChanged.connect(self._onEndstopStateChanged) - except AttributeError as e: # Connection is probably not a USB connection. Something went pretty wrong if this happens. - Logger.log("e", "An exception occurred while starting end stop polling: %s" % str(e)) - - @pyqtSlot() - def cooldownHotend(self): - if self._output_device is not None: - self._output_device.setTargetHotendTemperature(0, 0) - - @pyqtSlot() - def cooldownBed(self): - if self._output_device is not None: - self._output_device.setTargetBedTemperature(0) - - @pyqtSlot() - def heatupHotend(self): - if self._output_device is not None: - self._output_device.setTargetHotendTemperature(0, self._hotend_target_temp) - - @pyqtSlot() - def heatupBed(self): - if self._output_device is not None: - self._output_device.setTargetBedTemperature(self._bed_target_temp) - - heatedBedChanged = pyqtSignal() - - @pyqtProperty(bool, notify = heatedBedChanged) - def hasHeatedBed(self): - global_container_stack = Application.getInstance().getGlobalContainerStack() - return global_container_stack.getProperty("machine_heated_bed", "value") \ No newline at end of file diff --git a/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml b/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml deleted file mode 100644 index 2a01cfaa40..0000000000 --- a/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml +++ /dev/null @@ -1,288 +0,0 @@ -import UM 1.2 as UM -import Cura 1.0 as Cura - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 - -Cura.MachineAction -{ - anchors.fill: parent; - Item - { - id: checkupMachineAction - anchors.fill: parent; - property int leftRow: (checkupMachineAction.width * 0.40) | 0 - property int rightRow: (checkupMachineAction.width * 0.60) | 0 - property bool heatupHotendStarted: false - property bool heatupBedStarted: false - property bool printerConnected: Cura.MachineManager.printerConnected - - UM.I18nCatalog { id: catalog; name: "cura"} - Label - { - id: pageTitle - width: parent.width - text: catalog.i18nc("@title", "Check Printer") - wrapMode: Text.WordWrap - font.pointSize: 18; - } - - Label - { - id: pageDescription - anchors.top: pageTitle.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - width: parent.width - wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"); - } - - Row - { - id: startStopButtons - anchors.top: pageDescription.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - anchors.horizontalCenter: parent.horizontalCenter - width: childrenRect.width - spacing: UM.Theme.getSize("default_margin").width - Button - { - id: startCheckButton - text: catalog.i18nc("@action:button","Start Printer Check"); - onClicked: - { - checkupMachineAction.heatupHotendStarted = false; - checkupMachineAction.heatupBedStarted = false; - manager.startCheck(); - startCheckButton.visible = false; - } - } - } - - Item - { - id: checkupContent - anchors.top: startStopButtons.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - visible: manager.checkStarted - width: parent.width - height: 250 - ////////////////////////////////////////////////////////// - Label - { - id: connectionLabel - width: checkupMachineAction.leftRow - anchors.left: parent.left - anchors.top: parent.top - wrapMode: Text.WordWrap - text: catalog.i18nc("@label","Connection: ") - } - Label - { - id: connectionStatus - width: checkupMachineAction.rightRow - anchors.left: connectionLabel.right - anchors.top: parent.top - wrapMode: Text.WordWrap - text: checkupMachineAction.printerConnected ? catalog.i18nc("@info:status","Connected"): catalog.i18nc("@info:status","Not connected") - } - ////////////////////////////////////////////////////////// - Label - { - id: endstopXLabel - width: checkupMachineAction.leftRow - anchors.left: parent.left - anchors.top: connectionLabel.bottom - wrapMode: Text.WordWrap - text: catalog.i18nc("@label","Min endstop X: ") - visible: checkupMachineAction.printerConnected - } - Label - { - id: endstopXStatus - width: checkupMachineAction.rightRow - anchors.left: endstopXLabel.right - anchors.top: connectionLabel.bottom - wrapMode: Text.WordWrap - text: manager.xMinEndstopTestCompleted ? catalog.i18nc("@info:status","Works") : catalog.i18nc("@info:status","Not checked") - visible: checkupMachineAction.printerConnected - } - ////////////////////////////////////////////////////////////// - Label - { - id: endstopYLabel - width: checkupMachineAction.leftRow - anchors.left: parent.left - anchors.top: endstopXLabel.bottom - wrapMode: Text.WordWrap - text: catalog.i18nc("@label","Min endstop Y: ") - visible: checkupMachineAction.printerConnected - } - Label - { - id: endstopYStatus - width: checkupMachineAction.rightRow - anchors.left: endstopYLabel.right - anchors.top: endstopXLabel.bottom - wrapMode: Text.WordWrap - text: manager.yMinEndstopTestCompleted ? catalog.i18nc("@info:status","Works") : catalog.i18nc("@info:status","Not checked") - visible: checkupMachineAction.printerConnected - } - ///////////////////////////////////////////////////////////////////// - Label - { - id: endstopZLabel - width: checkupMachineAction.leftRow - anchors.left: parent.left - anchors.top: endstopYLabel.bottom - wrapMode: Text.WordWrap - text: catalog.i18nc("@label","Min endstop Z: ") - visible: checkupMachineAction.printerConnected - } - Label - { - id: endstopZStatus - width: checkupMachineAction.rightRow - anchors.left: endstopZLabel.right - anchors.top: endstopYLabel.bottom - wrapMode: Text.WordWrap - text: manager.zMinEndstopTestCompleted ? catalog.i18nc("@info:status","Works") : catalog.i18nc("@info:status","Not checked") - visible: checkupMachineAction.printerConnected - } - //////////////////////////////////////////////////////////// - Label - { - id: nozzleTempLabel - width: checkupMachineAction.leftRow - height: nozzleTempButton.height - anchors.left: parent.left - anchors.top: endstopZLabel.bottom - wrapMode: Text.WordWrap - text: catalog.i18nc("@label","Nozzle temperature check: ") - visible: checkupMachineAction.printerConnected - } - Label - { - id: nozzleTempStatus - width: (checkupMachineAction.rightRow * 0.4) | 0 - anchors.top: nozzleTempLabel.top - anchors.left: nozzleTempLabel.right - wrapMode: Text.WordWrap - text: catalog.i18nc("@info:status","Not checked") - visible: checkupMachineAction.printerConnected - } - Item - { - id: nozzleTempButton - width: (checkupMachineAction.rightRow * 0.3) | 0 - height: childrenRect.height - anchors.top: nozzleTempLabel.top - anchors.left: bedTempStatus.right - anchors.leftMargin: Math.round(UM.Theme.getSize("default_margin").width/2) - visible: checkupMachineAction.printerConnected - Button - { - text: checkupMachineAction.heatupHotendStarted ? catalog.i18nc("@action:button","Stop Heating") : catalog.i18nc("@action:button","Start Heating") - onClicked: - { - if (checkupMachineAction.heatupHotendStarted) - { - manager.cooldownHotend() - checkupMachineAction.heatupHotendStarted = false - } else - { - manager.heatupHotend() - checkupMachineAction.heatupHotendStarted = true - } - } - } - } - Label - { - id: nozzleTemp - anchors.top: nozzleTempLabel.top - anchors.left: nozzleTempButton.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width - width: (checkupMachineAction.rightRow * 0.2) | 0 - wrapMode: Text.WordWrap - text: manager.hotendTemperature + "°C" - font.bold: true - visible: checkupMachineAction.printerConnected - } - ///////////////////////////////////////////////////////////////////////////// - Label - { - id: bedTempLabel - width: checkupMachineAction.leftRow - height: bedTempButton.height - anchors.left: parent.left - anchors.top: nozzleTempLabel.bottom - wrapMode: Text.WordWrap - text: catalog.i18nc("@label","Build plate temperature check:") - visible: checkupMachineAction.printerConnected && manager.hasHeatedBed - } - - Label - { - id: bedTempStatus - width: (checkupMachineAction.rightRow * 0.4) | 0 - anchors.top: bedTempLabel.top - anchors.left: bedTempLabel.right - wrapMode: Text.WordWrap - text: manager.bedTestCompleted ? catalog.i18nc("@info:status","Not checked"): catalog.i18nc("@info:status","Checked") - visible: checkupMachineAction.printerConnected && manager.hasHeatedBed - } - Item - { - id: bedTempButton - width: (checkupMachineAction.rightRow * 0.3) | 0 - height: childrenRect.height - anchors.top: bedTempLabel.top - anchors.left: bedTempStatus.right - anchors.leftMargin: Math.round(UM.Theme.getSize("default_margin").width/2) - visible: checkupMachineAction.printerConnected && manager.hasHeatedBed - Button - { - text: checkupMachineAction.heatupBedStarted ?catalog.i18nc("@action:button","Stop Heating") : catalog.i18nc("@action:button","Start Heating") - onClicked: - { - if (checkupMachineAction.heatupBedStarted) - { - manager.cooldownBed() - checkupMachineAction.heatupBedStarted = false - } else - { - manager.heatupBed() - checkupMachineAction.heatupBedStarted = true - } - } - } - } - Label - { - id: bedTemp - width: (checkupMachineAction.rightRow * 0.2) | 0 - anchors.top: bedTempLabel.top - anchors.left: bedTempButton.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width - wrapMode: Text.WordWrap - text: manager.bedTemperature + "°C" - font.bold: true - visible: checkupMachineAction.printerConnected && manager.hasHeatedBed - } - Label - { - id: resultText - visible: false - anchors.top: bedTemp.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - anchors.left: parent.left - width: parent.width - wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Everything is in order! You're done with your CheckUp.") - } - } - } -} \ No newline at end of file diff --git a/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml b/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml index 2b973ca1bb..565ba2fa0e 100644 --- a/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml +++ b/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml @@ -1,43 +1,39 @@ -// Copyright (c) 2016 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 +import QtQuick 2.10 +import QtQuick.Controls 2.3 -import UM 1.2 as UM -import Cura 1.0 as Cura +import UM 1.3 as UM +import Cura 1.1 as Cura Cura.MachineAction { - anchors.fill: parent; + UM.I18nCatalog { id: catalog; name: "cura"; } + anchors.fill: parent + Item { id: upgradeSelectionMachineAction anchors.fill: parent - - Label - { - id: pageTitle - width: parent.width - text: catalog.i18nc("@title", "Select Printer Upgrades") - wrapMode: Text.WordWrap - font.pointSize: 18; - } + anchors.topMargin: UM.Theme.getSize("default_margin").width * 5 + anchors.leftMargin: UM.Theme.getSize("default_margin").width * 4 Label { id: pageDescription - anchors.top: pageTitle.bottom + anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("default_margin").height width: parent.width wrapMode: Text.WordWrap - text: catalog.i18nc("@label","Please select any upgrades made to this Ultimaker Original"); + text: catalog.i18nc("@label","Please select any upgrades made to this Ultimaker Original") + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering } - CheckBox + Cura.CheckBox { anchors.top: pageDescription.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height @@ -46,7 +42,5 @@ Cura.MachineAction checked: manager.hasHeatedBed onClicked: manager.setHeatedBed(checked) } - - UM.I18nCatalog { id: catalog; name: "cura"; } } -} \ No newline at end of file +} diff --git a/plugins/UltimakerMachineActions/__init__.py b/plugins/UltimakerMachineActions/__init__.py index e87949580a..aecb3b0ad6 100644 --- a/plugins/UltimakerMachineActions/__init__.py +++ b/plugins/UltimakerMachineActions/__init__.py @@ -1,9 +1,8 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from . import BedLevelMachineAction from . import UMOUpgradeSelection -from . import UM2UpgradeSelection def getMetaData(): return {} @@ -11,6 +10,5 @@ def getMetaData(): def register(app): return { "machine_action": [ BedLevelMachineAction.BedLevelMachineAction(), - UMOUpgradeSelection.UMOUpgradeSelection(), - UM2UpgradeSelection.UM2UpgradeSelection() + UMOUpgradeSelection.UMOUpgradeSelection() ]} diff --git a/plugins/UltimakerMachineActions/plugin.json b/plugins/UltimakerMachineActions/plugin.json index 3e3e0af9b0..e33d77c154 100644 --- a/plugins/UltimakerMachineActions/plugin.json +++ b/plugins/UltimakerMachineActions/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/UserAgreement/UserAgreement.py b/plugins/UserAgreement/UserAgreement.py deleted file mode 100644 index 4ea1ccf9bb..0000000000 --- a/plugins/UserAgreement/UserAgreement.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -import os - -from PyQt5.QtCore import QObject, pyqtSlot - -from UM.Extension import Extension -from UM.Logger import Logger - - -class UserAgreement(QObject, Extension): - def __init__(self, application): - super(UserAgreement, self).__init__() - self._application = application - self._user_agreement_window = None - self._user_agreement_context = None - self._application.engineCreatedSignal.connect(self._onEngineCreated) - - self._application.getPreferences().addPreference("general/accepted_user_agreement", False) - - def _onEngineCreated(self): - if not self._application.getPreferences().getValue("general/accepted_user_agreement"): - self.showUserAgreement() - - def showUserAgreement(self): - if not self._user_agreement_window: - self.createUserAgreementWindow() - - self._user_agreement_window.show() - - @pyqtSlot(bool) - def didAgree(self, user_choice): - if user_choice: - Logger.log("i", "User agreed to the user agreement") - self._application.getPreferences().setValue("general/accepted_user_agreement", True) - self._user_agreement_window.hide() - else: - Logger.log("i", "User did NOT agree to the user agreement") - self._application.getPreferences().setValue("general/accepted_user_agreement", False) - self._application.quit() - self._application.setNeedToShowUserAgreement(False) - - def createUserAgreementWindow(self): - path = os.path.join(self._application.getPluginRegistry().getPluginPath(self.getPluginId()), "UserAgreement.qml") - self._user_agreement_window = self._application.createQmlComponent(path, {"manager": self}) diff --git a/plugins/UserAgreement/UserAgreement.qml b/plugins/UserAgreement/UserAgreement.qml deleted file mode 100644 index 2e5893fc41..0000000000 --- a/plugins/UserAgreement/UserAgreement.qml +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.4 - -import UM 1.3 as UM - -UM.Dialog -{ - id: baseDialog - minimumWidth: Math.round(UM.Theme.getSize("modal_window_minimum").width * 0.75) - minimumHeight: Math.round(UM.Theme.getSize("modal_window_minimum").height * 0.5) - width: minimumWidth - height: minimumHeight - title: catalog.i18nc("@title:window", "User Agreement") - - TextArea - { - anchors.top: parent.top - width: parent.width - anchors.bottom: buttonRow.top - text: '

DISCLAIMER BY ULTIMAKER

-

PLEASE READ THIS DISCLAIMER CAREFULLY.

-

EXCEPT WHEN OTHERWISE STATED IN WRITING, ULTIMAKER PROVIDES ANY ULTIMAKER SOFTWARE OR THIRD PARTY SOFTWARE “AS IS” WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF ULTIMAKER SOFTWARE IS WITH YOU.

-

UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, IN NO EVENT WILL ULTIMAKER BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE ANY ULTIMAKER SOFTWARE OR THIRD PARTY SOFTWARE.

- ' - readOnly: true; - textFormat: TextEdit.RichText - } - - Item - { - id: buttonRow - anchors.bottom: parent.bottom - width: parent.width - anchors.bottomMargin: UM.Theme.getSize("default_margin").height - - UM.I18nCatalog { id: catalog; name: "cura" } - - Button - { - anchors.right: parent.right - text: catalog.i18nc("@action:button", "I understand and agree") - onClicked: { - baseDialog.accepted() - } - } - - Button - { - anchors.left: parent.left - text: catalog.i18nc("@action:button", "I don't agree") - onClicked: { - baseDialog.rejected() - } - } - } - - onAccepted: manager.didAgree(true) - onRejected: manager.didAgree(false) - onClosing: manager.didAgree(false) -} diff --git a/plugins/UserAgreement/__init__.py b/plugins/UserAgreement/__init__.py deleted file mode 100644 index 3cf81c64f4..0000000000 --- a/plugins/UserAgreement/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from . import UserAgreement - -def getMetaData(): - return {} - -def register(app): - return {"extension": UserAgreement.UserAgreement(app)} diff --git a/plugins/UserAgreement/plugin.json b/plugins/UserAgreement/plugin.json deleted file mode 100644 index b172d1f9a2..0000000000 --- a/plugins/UserAgreement/plugin.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "UserAgreement", - "author": "Ultimaker B.V.", - "version": "1.0.1", - "description": "Ask the user once if he/she agrees with our license.", - "api": "6.0", - "i18n-catalog": "cura" -} diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py index af9635d384..8419b3beeb 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py @@ -6,7 +6,7 @@ import io #To write config files to strings as if they were files. from typing import Dict, List, Optional, Tuple import UM.VersionUpgrade -from UM.Logger import Logger + ## Creates a new profile instance by parsing a serialised profile in version 1 # of the file format. @@ -20,6 +20,7 @@ def importFrom(serialised: str, filename: str) -> Optional["Profile"]: except (configparser.Error, UM.VersionUpgrade.FormatException, UM.VersionUpgrade.InvalidVersionException): return None + ## A representation of a profile used as intermediary form for conversion from # one format to the other. class Profile: diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json b/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json index cad94c2eb5..547c1f9f4e 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 2.1 to Cura 2.2.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json b/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json index 7da1e7a56d..51e3cd6794 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 2.2 to Cura 2.4.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json b/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json index e1f0a47685..4a2c04ad8e 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 2.5 to Cura 2.6.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py index 9d7c7646cc..45cdaebe87 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py @@ -1,5 +1,8 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import os.path +import sys +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) import configparser #To check whether the appropriate exceptions are raised. import pytest #To register tests with. diff --git a/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json b/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json index 6cdbd64cbb..a72c5210f9 100644 --- a/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 2.6 to Cura 2.7.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade26to27/tests/TestVersionUpgrade26to27.py b/plugins/VersionUpgrade/VersionUpgrade26to27/tests/TestVersionUpgrade26to27.py index eebaca23c6..6235578238 100644 --- a/plugins/VersionUpgrade/VersionUpgrade26to27/tests/TestVersionUpgrade26to27.py +++ b/plugins/VersionUpgrade/VersionUpgrade26to27/tests/TestVersionUpgrade26to27.py @@ -3,7 +3,9 @@ import configparser #To check whether the appropriate exceptions are raised. import pytest #To register tests with. - +import os.path +import sys +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) import VersionUpgrade26to27 #The module we're testing. ## Creates an instance of the upgrader to test with. diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json b/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json index 885d741a8c..787d03fdf3 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 2.7 to Cura 3.0.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py b/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py index cae08ebcfd..8ac6616511 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py @@ -1,6 +1,8 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. - +import os.path +import sys +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) import configparser #To parse the resulting config files. import pytest #To register tests with. diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json b/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json index d5f22649c1..7303d576cc 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 3.0 to Cura 3.1.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json b/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json index eb489169e0..a6f8f743e6 100644 --- a/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 3.2 to Cura 3.3.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json b/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json index 9649010643..4f8c7b0a94 100644 --- a/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 3.3 to Cura 3.4.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json b/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json index 71b13ee5a9..bdcb6598d1 100644 --- a/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 3.4 to Cura 3.5.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade34to35/tests/TestVersionUpgrade34to35.py b/plugins/VersionUpgrade/VersionUpgrade34to35/tests/TestVersionUpgrade34to35.py index b74e6f35ac..9f306e74fa 100644 --- a/plugins/VersionUpgrade/VersionUpgrade34to35/tests/TestVersionUpgrade34to35.py +++ b/plugins/VersionUpgrade/VersionUpgrade34to35/tests/TestVersionUpgrade34to35.py @@ -1,6 +1,8 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. - +import os.path +import sys +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) import configparser #To parse the resulting config files. import pytest #To register tests with. diff --git a/plugins/VersionUpgrade/VersionUpgrade35to40/VersionUpgrade35to40.py b/plugins/VersionUpgrade/VersionUpgrade35to40/VersionUpgrade35to40.py index 900c0a7396..71ce2e4fd0 100644 --- a/plugins/VersionUpgrade/VersionUpgrade35to40/VersionUpgrade35to40.py +++ b/plugins/VersionUpgrade/VersionUpgrade35to40/VersionUpgrade35to40.py @@ -3,7 +3,7 @@ from typing import Tuple, List, Set, Dict import io from UM.VersionUpgrade import VersionUpgrade -from cura.PrinterOutputDevice import ConnectionType +from cura.PrinterOutput.PrinterOutputDevice import ConnectionType deleted_settings = {"bridge_wall_max_overhang"} # type: Set[str] renamed_configurations = {"connect_group_name": "group_name"} # type: Dict[str, str] diff --git a/plugins/VersionUpgrade/VersionUpgrade35to40/plugin.json b/plugins/VersionUpgrade/VersionUpgrade35to40/plugin.json index 578594fb6d..68259c1b9c 100644 --- a/plugins/VersionUpgrade/VersionUpgrade35to40/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade35to40/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.0", "description": "Upgrades configurations from Cura 3.5 to Cura 4.0.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade40to41/VersionUpgrade40to41.py b/plugins/VersionUpgrade/VersionUpgrade40to41/VersionUpgrade40to41.py index d80e0007aa..b63d1842b7 100644 --- a/plugins/VersionUpgrade/VersionUpgrade40to41/VersionUpgrade40to41.py +++ b/plugins/VersionUpgrade/VersionUpgrade40to41/VersionUpgrade40to41.py @@ -1,8 +1,9 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import configparser import io +import uuid from typing import Dict, List, Tuple from UM.VersionUpgrade import VersionUpgrade @@ -18,6 +19,7 @@ _renamed_quality_profiles = { "gmax15plus_pla_very_thick": "gmax15plus_global_very_thick" } # type: Dict[str, str] + ## Upgrades configurations from the state they were in at version 4.0 to the # state they should be in at version 4.1. class VersionUpgrade40to41(VersionUpgrade): @@ -49,6 +51,15 @@ class VersionUpgrade40to41(VersionUpgrade): parser["general"]["version"] = "4" parser["metadata"]["setting_version"] = "7" + # Limit Maximum Deviation instead of Maximum Resolution. This should have approximately the same effect as before the algorithm change, only more consistent. + if "values" in parser and "meshfix_maximum_resolution" in parser["values"]: + resolution = parser["values"]["meshfix_maximum_resolution"] + if resolution.startswith("="): + resolution = resolution[1:] + deviation = "=(" + resolution + ") / 2" + parser["values"]["meshfix_maximum_deviation"] = deviation + del parser["values"]["meshfix_maximum_resolution"] + result = io.StringIO() parser.write(result) return [filename], [result.getvalue()] @@ -62,6 +73,11 @@ class VersionUpgrade40to41(VersionUpgrade): parser["general"]["version"] = "6" if "metadata" not in parser: parser["metadata"] = {} + + # Remove changelog plugin + if "latest_version_changelog_shown" in parser["general"]: + del parser["general"]["latest_version_changelog_shown"] + parser["metadata"]["setting_version"] = "7" result = io.StringIO() @@ -81,6 +97,13 @@ class VersionUpgrade40to41(VersionUpgrade): if parser["containers"]["4"] in _renamed_quality_profiles: parser["containers"]["4"] = _renamed_quality_profiles[parser["containers"]["4"]] + # Assign a GlobalStack to a unique group_id. If the GlobalStack has a UM network connection, use the UM network + # key as the group_id. + if "um_network_key" in parser["metadata"]: + parser["metadata"]["group_id"] = parser["metadata"]["um_network_key"] + elif "group_id" not in parser["metadata"]: + parser["metadata"]["group_id"] = str(uuid.uuid4()) + result = io.StringIO() parser.write(result) return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py b/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py index 7f39bb9d39..09be805147 100644 --- a/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py @@ -14,7 +14,7 @@ def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function - ("preferences", 6000006): ("preferences", 6000007, upgrade.upgradePreferences), + ("preferences", 6000006): ("preferences", 6000007, upgrade.upgradePreferences), ("machine_stack", 4000006): ("machine_stack", 4000007, upgrade.upgradeStack), ("extruder_train", 4000006): ("extruder_train", 4000007, upgrade.upgradeStack), ("definition_changes", 4000006): ("definition_changes", 4000007, upgrade.upgradeInstanceContainer), diff --git a/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json b/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json index b1c6d75669..67474508ec 100644 --- a/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 4.0 to Cura 4.1.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py b/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py new file mode 100644 index 0000000000..305cce16c6 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py @@ -0,0 +1,340 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser +import io +import os.path # To get the file ID. +from typing import Dict, List, Tuple + +from UM.VersionUpgrade import VersionUpgrade + +_renamed_settings = { + "support_minimal_diameter": "support_tower_maximum_supported_diameter" +} # type: Dict[str, str] +_removed_settings = ["prime_tower_circular", "max_feedrate_z_override"] # type: List[str] +_renamed_profiles = { + # Include CreawsomeMod profiles here as well for the people who installed that. + # Definitions. + "creawsome_base": "creality_base", + "creawsome_cr10": "creality_cr10", + "creawsome_cr10mini": "creality_cr10mini", + "creawsome_cr10s": "creality_cr10s", + "creawsome_cr10s4": "creality_cr10s4", + "creawsome_cr10s5": "creality_cr10s5", + "creawsome_cr10spro": "creality_cr10spro", + "creawsome_cr20": "creality_cr20", + "creawsome_cr20pro": "creality_cr20pro", + "creawsome_ender2": "creality_ender2", + "creawsome_ender3": "creality_ender3", + "creawsome_ender4": "creality_ender4", + "creawsome_ender5": "creality_ender5", + + # Extruder definitions. + "creawsome_base_extruder_0": "creality_base_extruder_0", + + # Variants. + "creawsome_base_0.2": "creality_base_0.2", + "creawsome_base_0.3": "creality_base_0.3", + "creawsome_base_0.4": "creality_base_0.4", + "creawsome_base_0.5": "creality_base_0.5", + "creawsome_base_0.6": "creality_base_0.6", + "creawsome_base_0.8": "creality_base_0.8", + "creawsome_base_1.0": "creality_base_1.0", + "creawsome_cr10_0.2": "creality_cr10_0.2", + "creawsome_cr10_0.3": "creality_cr10_0.3", + "creawsome_cr10_0.4": "creality_cr10_0.4", + "creawsome_cr10_0.5": "creality_cr10_0.5", + "creawsome_cr10_0.6": "creality_cr10_0.6", + "creawsome_cr10_0.8": "creality_cr10_0.8", + "creawsome_cr10_1.0": "creality_cr10_1.0", + "creawsome_cr10mini_0.2": "creality_cr10mini_0.2", + "creawsome_cr10mini_0.3": "creality_cr10mini_0.3", + "creawsome_cr10mini_0.4": "creality_cr10mini_0.4", + "creawsome_cr10mini_0.5": "creality_cr10mini_0.5", + "creawsome_cr10mini_0.6": "creality_cr10mini_0.6", + "creawsome_cr10mini_0.8": "creality_cr10mini_0.8", + "creawsome_cr10mini_1.0": "creality_cr10mini_1.0", + "creawsome_cr10s4_0.2": "creality_cr10s4_0.2", + "creawsome_cr10s4_0.3": "creality_cr10s4_0.3", + "creawsome_cr10s4_0.4": "creality_cr10s4_0.4", + "creawsome_cr10s4_0.5": "creality_cr10s4_0.5", + "creawsome_cr10s4_0.6": "creality_cr10s4_0.6", + "creawsome_cr10s4_0.8": "creality_cr10s4_0.8", + "creawsome_cr10s4_1.0": "creality_cr10s4_1.0", + "creawsome_cr10s5_0.2": "creality_cr10s5_0.2", + "creawsome_cr10s5_0.3": "creality_cr10s5_0.3", + "creawsome_cr10s5_0.4": "creality_cr10s5_0.4", + "creawsome_cr10s5_0.5": "creality_cr10s5_0.5", + "creawsome_cr10s5_0.6": "creality_cr10s5_0.6", + "creawsome_cr10s5_0.8": "creality_cr10s5_0.8", + "creawsome_cr10s5_1.0": "creality_cr10s5_1.0", + "creawsome_cr10s_0.2": "creality_cr10s_0.2", + "creawsome_cr10s_0.3": "creality_cr10s_0.3", + "creawsome_cr10s_0.4": "creality_cr10s_0.4", + "creawsome_cr10s_0.5": "creality_cr10s_0.5", + "creawsome_cr10s_0.6": "creality_cr10s_0.6", + "creawsome_cr10s_0.8": "creality_cr10s_0.8", + "creawsome_cr10s_1.0": "creality_cr10s_1.0", + "creawsome_cr10spro_0.2": "creality_cr10spro_0.2", + "creawsome_cr10spro_0.3": "creality_cr10spro_0.3", + "creawsome_cr10spro_0.4": "creality_cr10spro_0.4", + "creawsome_cr10spro_0.5": "creality_cr10spro_0.5", + "creawsome_cr10spro_0.6": "creality_cr10spro_0.6", + "creawsome_cr10spro_0.8": "creality_cr10spro_0.8", + "creawsome_cr10spro_1.0": "creality_cr10spro_1.0", + "creawsome_cr20_0.2": "creality_cr20_0.2", + "creawsome_cr20_0.3": "creality_cr20_0.3", + "creawsome_cr20_0.4": "creality_cr20_0.4", + "creawsome_cr20_0.5": "creality_cr20_0.5", + "creawsome_cr20_0.6": "creality_cr20_0.6", + "creawsome_cr20_0.8": "creality_cr20_0.8", + "creawsome_cr20_1.0": "creality_cr20_1.0", + "creawsome_cr20pro_0.2": "creality_cr20pro_0.2", + "creawsome_cr20pro_0.3": "creality_cr20pro_0.3", + "creawsome_cr20pro_0.4": "creality_cr20pro_0.4", + "creawsome_cr20pro_0.5": "creality_cr20pro_0.5", + "creawsome_cr20pro_0.6": "creality_cr20pro_0.6", + "creawsome_cr20pro_0.8": "creality_cr20pro_0.8", + "creawsome_cr20pro_1.0": "creality_cr20pro_1.0", + "creawsome_ender2_0.2": "creality_ender2_0.2", + "creawsome_ender2_0.3": "creality_ender2_0.3", + "creawsome_ender2_0.4": "creality_ender2_0.4", + "creawsome_ender2_0.5": "creality_ender2_0.5", + "creawsome_ender2_0.6": "creality_ender2_0.6", + "creawsome_ender2_0.8": "creality_ender2_0.8", + "creawsome_ender2_1.0": "creality_ender2_1.0", + "creawsome_ender3_0.2": "creality_ender3_0.2", + "creawsome_ender3_0.3": "creality_ender3_0.3", + "creawsome_ender3_0.4": "creality_ender3_0.4", + "creawsome_ender3_0.5": "creality_ender3_0.5", + "creawsome_ender3_0.6": "creality_ender3_0.6", + "creawsome_ender3_0.8": "creality_ender3_0.8", + "creawsome_ender3_1.0": "creality_ender3_1.0", + "creawsome_ender4_0.2": "creality_ender4_0.2", + "creawsome_ender4_0.3": "creality_ender4_0.3", + "creawsome_ender4_0.4": "creality_ender4_0.4", + "creawsome_ender4_0.5": "creality_ender4_0.5", + "creawsome_ender4_0.6": "creality_ender4_0.6", + "creawsome_ender4_0.8": "creality_ender4_0.8", + "creawsome_ender4_1.0": "creality_ender4_1.0", + "creawsome_ender5_0.2": "creality_ender5_0.2", + "creawsome_ender5_0.3": "creality_ender5_0.3", + "creawsome_ender5_0.4": "creality_ender5_0.4", + "creawsome_ender5_0.5": "creality_ender5_0.5", + "creawsome_ender5_0.6": "creality_ender5_0.6", + "creawsome_ender5_0.8": "creality_ender5_0.8", + "creawsome_ender5_1.0": "creality_ender5_1.0", + + # Upgrade for people who had the original Creality profiles from 4.1 and earlier. + "creality_cr10_extruder_0": "creality_base_extruder_0", + "creality_cr10s4_extruder_0": "creality_base_extruder_0", + "creality_cr10s5_extruder_0": "creality_base_extruder_0", + "creality_ender3_extruder_0": "creality_base_extruder_0" +} + +# For legacy Creality printers, select the correct quality profile depending on the material. +_creality_quality_per_material = { + # Since legacy Creality printers didn't have different variants, we always pick the 0.4mm variant. + "generic_abs_175": { + "high": "base_0.4_ABS_super", + "normal": "base_0.4_ABS_super", + "fast": "base_0.4_ABS_super", + "draft": "base_0.4_ABS_standard", + "extra_fast": "base_0.4_ABS_low", + "coarse": "base_0.4_ABS_low", + "extra_coarse": "base_0.4_ABS_low" + }, + "generic_petg_175": { + "high": "base_0.4_PETG_super", + "normal": "base_0.4_PETG_super", + "fast": "base_0.4_PETG_super", + "draft": "base_0.4_PETG_standard", + "extra_fast": "base_0.4_PETG_low", + "coarse": "base_0.4_PETG_low", + "extra_coarse": "base_0.4_PETG_low" + }, + "generic_pla_175": { + "high": "base_0.4_PLA_super", + "normal": "base_0.4_PLA_super", + "fast": "base_0.4_PLA_super", + "draft": "base_0.4_PLA_standard", + "extra_fast": "base_0.4_PLA_low", + "coarse": "base_0.4_PLA_low", + "extra_coarse": "base_0.4_PLA_low" + }, + "generic_tpu_175": { + "high": "base_0.4_TPU_super", + "normal": "base_0.4_TPU_super", + "fast": "base_0.4_TPU_super", + "draft": "base_0.4_TPU_standard", + "extra_fast": "base_0.4_TPU_standard", + "coarse": "base_0.4_TPU_standard", + "extra_coarse": "base_0.4_TPU_standard" + }, + "empty_material": { # For the global stack. + "high": "base_global_super", + "normal": "base_global_super", + "fast": "base_global_super", + "draft": "base_global_standard", + "extra_fast": "base_global_low", + "coarse": "base_global_low", + "extra_coarse": "base_global_low" + } +} + +# Default variant to select for legacy Creality printers, now that we have variants. +_default_variants = { + "creality_cr10_extruder_0": "creality_cr10_0.4", + "creality_cr10s4_extruder_0": "creality_cr10s4_0.4", + "creality_cr10s5_extruder_0": "creality_cr10s5_0.4", + "creality_ender3_extruder_0": "creality_ender3_0.4" +} + +# Whether the quality changes profile belongs to one of the upgraded printers can only be recognised by how they start. +# If they are, they must use the creality base definition so that they still belong to those printers. +_quality_changes_to_creality_base = { + "creality_cr10_extruder_0", + "creality_cr10s4_extruder_0", + "creality_cr10s5_extruder_0", + "creality_ender3_extruder_0", + "creality_cr10", + "creality_cr10s", + "creality_cr10s4", + "creality_cr10s5", + "creality_ender3", +} +_creality_limited_quality_type = { + "high": "super", + "normal": "super", + "fast": "super", + "draft": "draft", + "extra_fast": "draft", + "coarse": "draft", + "extra_coarse": "draft" +} + +## Upgrades configurations from the state they were in at version 4.1 to the +# state they should be in at version 4.2. +class VersionUpgrade41to42(VersionUpgrade): + ## Gets the version number from a CFG file in Uranium's 4.1 format. + # + # Since the format may change, this is implemented for the 4.1 format only + # and needs to be included in the version upgrade system rather than + # globally in Uranium. + # + # \param serialised The serialised form of a CFG file. + # \return The version number stored in the CFG file. + # \raises ValueError The format of the version number in the file is + # incorrect. + # \raises KeyError The format of the file is incorrect. + def getCfgVersion(self, serialised: str) -> int: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) + return format_version * 1000000 + setting_version + + ## Upgrades instance containers to have the new version + # number. + # + # This renames the renamed settings in the containers. + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None, comment_prefixes=()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "8" + + # Certain instance containers (such as definition changes) reference to a certain definition container + # Since a number of those changed name, we also need to update those. + old_definition = parser["general"]["definition"] + if old_definition in _renamed_profiles: + parser["general"]["definition"] = _renamed_profiles[old_definition] + + # Rename settings. + if "values" in parser: + for old_name, new_name in _renamed_settings.items(): + if old_name in parser["values"]: + parser["values"][new_name] = parser["values"][old_name] + del parser["values"][old_name] + # Remove settings. + for key in _removed_settings: + if key in parser["values"]: + del parser["values"][key] + + # For quality-changes profiles made for Creality printers, change the definition to the creality_base and make sure that the quality is something we have a profile for. + if parser["metadata"].get("type", "") == "quality_changes": + for possible_printer in _quality_changes_to_creality_base: + if os.path.basename(filename).startswith(possible_printer + "_"): + parser["general"]["definition"] = "creality_base" + parser["metadata"]["quality_type"] = _creality_limited_quality_type.get(parser["metadata"]["quality_type"], "draft") + break + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades Preferences to have the new version number. + # + # This renames the renamed settings in the list of visible settings. + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "8" + + # Renamed settings. + if "visible_settings" in parser["general"]: + visible_settings = parser["general"]["visible_settings"] + visible_setting_set = set(visible_settings.split(";")) + for old_name, new_name in _renamed_settings.items(): + if old_name in visible_setting_set: + visible_setting_set.remove(old_name) + visible_setting_set.add(new_name) + for removed_key in _removed_settings: + if removed_key in visible_setting_set: + visible_setting_set.remove(removed_key) + parser["general"]["visible_settings"] = ";".join(visible_setting_set) + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades stacks to have the new version number. + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "8" + + # Change renamed profiles. + if "containers" in parser: + # For legacy Creality printers, change the variant to 0.4. + definition_id = parser["containers"]["6"] + if parser["metadata"].get("type", "machine") == "extruder_train": + if parser["containers"]["4"] == "empty_variant": # Necessary for people entering from CreawsomeMod who already had a variant. + if definition_id in _default_variants: + parser["containers"]["4"] = _default_variants[definition_id] + if definition_id == "creality_cr10_extruder_0": # We can't disambiguate between Creality CR-10 and Creality-CR10S since they share the same extruder definition. Have to go by the name. + if "cr-10s" in parser["metadata"].get("machine", "Creality CR-10").lower(): # Not perfect, since the user can change this name :( + parser["containers"]["4"] = "creality_cr10s_0.4" + + # Also change the quality to go along with it. + material_id = parser["containers"]["3"] + old_quality_id = parser["containers"]["2"] + if material_id in _creality_quality_per_material and old_quality_id in _creality_quality_per_material[material_id]: + if definition_id == "creality_cr10_extruder_0": # We can't disambiguate between Creality CR-10 and Creality-CR10S since they share the same extruder definition. Have to go by the name. + if "cr-10s" in parser["metadata"].get("machine", "Creality CR-10").lower(): # Not perfect, since the user can change this name :( + parser["containers"]["2"] = _creality_quality_per_material[material_id][old_quality_id] + + stack_copy = {} # type: Dict[str, str] # Make a copy so that we don't modify the dict we're iterating over. + stack_copy.update(parser["containers"]) + for position, profile_id in stack_copy.items(): + if profile_id in _renamed_profiles: + parser["containers"][position] = _renamed_profiles[profile_id] + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade41to42/__init__.py b/plugins/VersionUpgrade/VersionUpgrade41to42/__init__.py new file mode 100644 index 0000000000..8fe718ca83 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade41to42/__init__.py @@ -0,0 +1,59 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade41to42 + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade41to42.VersionUpgrade41to42() + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000007): ("preferences", 6000008, upgrade.upgradePreferences), + ("machine_stack", 4000007): ("machine_stack", 4000008, upgrade.upgradeStack), + ("extruder_train", 4000007): ("extruder_train", 4000008, upgrade.upgradeStack), + ("definition_changes", 4000007): ("definition_changes", 4000008, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000007): ("quality_changes", 4000008, upgrade.upgradeInstanceContainer), + ("quality", 4000007): ("quality", 4000008, upgrade.upgradeInstanceContainer), + ("user", 4000007): ("user", 4000008, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json b/plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json new file mode 100644 index 0000000000..506000aae9 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.1 to 4.2", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.1 to Cura 4.2.", + "api": "7.0", + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py b/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py new file mode 100644 index 0000000000..d6489f6d8b --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py @@ -0,0 +1,160 @@ +import configparser +import io +from typing import Dict, Tuple, List + +from UM.VersionUpgrade import VersionUpgrade + +_renamed_profiles = {"generic_pla_0.4_coarse": "jbo_generic_pla_0.4_coarse", + "generic_pla_0.4_fine": "jbo_generic_pla_fine", + "generic_pla_0.4_medium": "jbo_generic_pla_medium", + "generic_pla_0.4_ultrafine": "jbo_generic_pla_ultrafine", + + "generic_petg_0.4_coarse": "jbo_generic_petg_0.4_coarse", + "generic_petg_0.4_fine": "jbo_generic_petg_fine", + "generic_petg_0.4_medium": "jbo_generic_petg_medium", + } + +# - The variant "imade3d jellybox 0.4 mm 2-fans" for machine definition "imade3d_jellybox" +# is now "0.4 mm" for machine definition "imade3d jellybox_2". +# - Materials "imade3d_petg_green" and "imade3d_petg_pink" are now "imade3d_petg_175". +# - Materials "imade3d_pla_green" and "imade3d_pla_pink" are now "imade3d_petg_175". +# +# Note: Theoretically, the old material profiles with "_2-fans" at the end should be updated to: +# - machine definition: imade3d_jellybox_2 +# - variant: 0.4 mm (for jellybox 2) +# - material: (as an example) imade3d_petg_175_imade3d_jellybox_2_0.4_mm +# +# But this involves changing the definition of the global stack and the extruder stacks, which can cause more trouble +# than what we can fix. So, here, we update all material variants, regardless of having "_2-fans" at the end or not, to +# jellybox_0.4_mm. +# +_renamed_material_profiles = { # PETG + "imade3d_petg_green": "imade3d_petg_175", + "imade3d_petg_green_imade3d_jellybox": "imade3d_petg_175_imade3d_jellybox", + "imade3d_petg_green_imade3d_jellybox_0.4_mm": "imade3d_petg_175_imade3d_jellybox_0.4_mm", + "imade3d_petg_green_imade3d_jellybox_0.4_mm_2-fans": "imade3d_petg_175_imade3d_jellybox_0.4_mm", + "imade3d_petg_pink": "imade3d_petg_175", + "imade3d_petg_pink_imade3d_jellybox": "imade3d_petg_175_imade3d_jellybox", + "imade3d_petg_pink_imade3d_jellybox_0.4_mm": "imade3d_petg_175_imade3d_jellybox_0.4_mm", + "imade3d_petg_pink_imade3d_jellybox_0.4_mm_2-fans": "imade3d_petg_175_imade3d_jellybox_0.4_mm", + # PLA + "imade3d_pla_green": "imade3d_pla_175", + "imade3d_pla_green_imade3d_jellybox": "imade3d_pla_175_imade3d_jellybox", + "imade3d_pla_green_imade3d_jellybox_0.4_mm": "imade3d_pla_175_imade3d_jellybox_0.4_mm", + "imade3d_pla_green_imade3d_jellybox_0.4_mm_2-fans": "imade3d_pla_175_imade3d_jellybox_0.4_mm", + "imade3d_pla_pink": "imade3d_pla_175", + "imade3d_pla_pink_imade3d_jellybox": "imade3d_pla_175_imade3d_jellybox", + "imade3d_pla_pink_imade3d_jellybox_0.4_mm": "imade3d_pla_175_imade3d_jellybox_0.4_mm", + "imade3d_pla_pink_imade3d_jellybox_0.4_mm_2-fans": "imade3d_pla_175_imade3d_jellybox_0.4_mm", + } + +_removed_settings = { + "start_layers_at_same_position" +} + +_renamed_settings = { + "support_infill_angle": "support_infill_angles" +} # type: Dict[str, str] + +## Upgrades configurations from the state they were in at version 4.2 to the +# state they should be in at version 4.3. +class VersionUpgrade42to43(VersionUpgrade): + ## Gets the version number from a CFG file in Uranium's 4.2 format. + # + # Since the format may change, this is implemented for the 4.2 format only + # and needs to be included in the version upgrade system rather than + # globally in Uranium. + # + # \param serialised The serialised form of a CFG file. + # \return The version number stored in the CFG file. + # \raises ValueError The format of the version number in the file is + # incorrect. + # \raises KeyError The format of the file is incorrect. + def getCfgVersion(self, serialised: str) -> int: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) + return format_version * 1000000 + setting_version + + def upgradePreferences(self, serialized: str, filename: str): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + if "camera_perspective_mode" in parser["general"] and parser["general"]["camera_perspective_mode"] == "orthogonal": + parser["general"]["camera_perspective_mode"] = "orthographic" + + # Fix renamed settings for visibility + if "visible_settings" in parser["general"]: + all_setting_keys = parser["general"]["visible_settings"].strip().split(";") + if all_setting_keys: + for idx, key in enumerate(all_setting_keys): + if key in _renamed_settings: + all_setting_keys[idx] = _renamed_settings[key] + parser["general"]["visible_settings"] = ";".join(all_setting_keys) + + parser["metadata"]["setting_version"] = "9" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades instance containers to have the new version + # number. + # + # This renames the renamed settings in the containers. + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None, comment_prefixes=()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "9" + + if "values" in parser: + for old_name, new_name in _renamed_settings.items(): + if old_name in parser["values"]: + parser["values"][new_name] = parser["values"][old_name] + del parser["values"][old_name] + for key in _removed_settings: + if key in parser["values"]: + del parser["values"][key] + + if "support_infill_angles" in parser["values"]: + old_value = float(parser["values"]["support_infill_angles"]) + new_value = [int(round(old_value))] + parser["values"]["support_infill_angles"] = str(new_value) + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades stacks to have the new version number. + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "9" + # Handle changes for the imade3d jellybox. The machine was split up into parts (eg; a 2 fan version and a single + # fan version. Perviously it used variants for this. The only upgrade we can do here is strip that variant. + # This is because we only upgrade per stack (and to fully do these changes, we'd need to switch out something + # in the global container based on changes made to the extruder stack) + if parser["containers"]["6"] == "imade3d_jellybox_extruder_0": + quality_id = parser["containers"]["2"] + if quality_id.endswith("_2-fans"): + parser["containers"]["2"] = quality_id.replace("_2-fans", "") + + if parser["containers"]["2"] in _renamed_profiles: + parser["containers"]["2"] = _renamed_profiles[parser["containers"]["2"]] + + material_id = parser["containers"]["3"] + if material_id in _renamed_material_profiles: + parser["containers"]["3"] = _renamed_material_profiles[material_id] + variant_id = parser["containers"]["4"] + + if variant_id.endswith("_2-fans"): + parser["containers"]["4"] = variant_id.replace("_2-fans", "") + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade42to43/__init__.py b/plugins/VersionUpgrade/VersionUpgrade42to43/__init__.py new file mode 100644 index 0000000000..7400bbb989 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade42to43/__init__.py @@ -0,0 +1,59 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade42to43 + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade42to43.VersionUpgrade42to43() + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000008): ("preferences", 6000009, upgrade.upgradePreferences), + ("machine_stack", 4000008): ("machine_stack", 4000009, upgrade.upgradeStack), + ("extruder_train", 4000008): ("extruder_train", 4000009, upgrade.upgradeStack), + ("definition_changes", 4000008): ("definition_changes", 4000009, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000008): ("quality_changes", 4000009, upgrade.upgradeInstanceContainer), + ("quality", 4000008): ("quality", 4000009, upgrade.upgradeInstanceContainer), + ("user", 4000008): ("user", 4000009, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return { "version_upgrade": upgrade } \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade42to43/plugin.json b/plugins/VersionUpgrade/VersionUpgrade42to43/plugin.json new file mode 100644 index 0000000000..8a5e838668 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade42to43/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.2 to 4.3", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.2 to Cura 4.3.", + "api": "7.0", + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py b/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py new file mode 100644 index 0000000000..8b69852cb2 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py @@ -0,0 +1,122 @@ +import configparser +from typing import Tuple, List +import io +from UM.VersionUpgrade import VersionUpgrade +from UM.Util import parseBool # To parse whether the Alternate Skin Rotations function is activated. + +_renamed_container_id_map = { + "ultimaker2_0.25": "ultimaker2_olsson_0.25", + "ultimaker2_0.4": "ultimaker2_olsson_0.4", + "ultimaker2_0.6": "ultimaker2_olsson_0.6", + "ultimaker2_0.8": "ultimaker2_olsson_0.8", + "ultimaker2_extended_0.25": "ultimaker2_extended_olsson_0.25", + "ultimaker2_extended_0.4": "ultimaker2_extended_olsson_0.4", + "ultimaker2_extended_0.6": "ultimaker2_extended_olsson_0.6", + "ultimaker2_extended_0.8": "ultimaker2_extended_olsson_0.8", + # HMS434 "extra coarse", "super coarse", and "ultra coarse" are removed. + "hms434_global_Extra_Coarse_Quality": "hms434_global_Normal_Quality", + "hms434_global_Super_Coarse_Quality": "hms434_global_Normal_Quality", + "hms434_global_Ultra_Coarse_Quality": "hms434_global_Normal_Quality", + # HMS434 "0.25", "0.6", "1.2", and "1.5" nozzles are removed. + "hms434_0.25tpnozzle": "hms434_0.4tpnozzle", + "hms434_0.6tpnozzle": "hms434_0.4tpnozzle", + "hms434_1.2tpnozzle": "hms434_0.4tpnozzle", + "hms434_1.5tpnozzle": "hms434_0.4tpnozzle", +} + + +class VersionUpgrade43to44(VersionUpgrade): + def getCfgVersion(self, serialised: str) -> int: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) + return format_version * 1000000 + setting_version + + ## Upgrades Preferences to have the new version number. + # + # This renames the renamed settings in the list of visible settings. + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "10" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades instance containers to have the new version + # number. + # + # This renames the renamed settings in the containers. + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None, comment_prefixes=()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "10" + + # Intent profiles were added, so the quality changes should match with no intent (so "default") + if parser["metadata"].get("type", "") == "quality_changes": + parser["metadata"]["intent_category"] = "default" + + if "values" in parser: + # Alternate skin rotation should be translated to top/bottom line directions. + if "skin_alternate_rotation" in parser["values"] and parseBool(parser["values"]["skin_alternate_rotation"]): + parser["values"]["skin_angles"] = "[45, 135, 0, 90]" + # Unit of adaptive layers topography size changed. + if "adaptive_layer_height_threshold" in parser["values"]: + val = parser["values"]["adaptive_layer_height_threshold"] + if val.startswith("="): + val = val[1:] + val = "=({val}) / 1000".format(val = val) # Convert microns to millimetres. Works even if the profile contained a formula. + parser["values"]["adaptive_layer_height_threshold"] = val + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades stacks to have the new version number. + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + if "metadata" not in parser: + parser["metadata"] = {} + parser["metadata"]["setting_version"] = "10" + + if "containers" in parser: + # With the ContainerTree refactor, UM2 with Olsson block got moved to a separate definition. + if "6" in parser["containers"]: + if parser["containers"]["6"] == "ultimaker2": + if "metadata" in parser and "has_variants" in parser["metadata"] and parser["metadata"]["has_variants"] == "True": # This is an Olsson block upgraded UM2! + parser["containers"]["6"] = "ultimaker2_olsson" + del parser["metadata"]["has_variants"] + elif parser["containers"]["6"] == "ultimaker2_extended": + if "metadata" in parser and "has_variants" in parser["metadata"] and parser["metadata"]["has_variants"] == "True": # This is an Olsson block upgraded UM2E! + parser["containers"]["6"] = "ultimaker2_extended_olsson" + del parser["metadata"]["has_variants"] + + # We should only have 6 levels when we start. + if "7" in parser["containers"]: + return ([], []) + + # We added the intent container in Cura 4.4. This means that all other containers move one step down. + parser["containers"]["7"] = parser["containers"]["6"] + parser["containers"]["6"] = parser["containers"]["5"] + parser["containers"]["5"] = parser["containers"]["4"] + parser["containers"]["4"] = parser["containers"]["3"] + parser["containers"]["3"] = parser["containers"]["2"] + parser["containers"]["2"] = "empty_intent" + + # Update renamed containers + for key, value in parser["containers"].items(): + if value in _renamed_container_id_map: + parser["containers"][key] = _renamed_container_id_map[value] + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/__init__.py b/plugins/VersionUpgrade/VersionUpgrade43to44/__init__.py new file mode 100644 index 0000000000..506ec6c03d --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade43to44/__init__.py @@ -0,0 +1,61 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade43to44 + + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade43to44.VersionUpgrade43to44() + + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000009): ("preferences", 6000010, upgrade.upgradePreferences), + ("machine_stack", 4000009): ("machine_stack", 4000010, upgrade.upgradeStack), + ("extruder_train", 4000009): ("extruder_train", 4000010, upgrade.upgradeStack), + ("definition_changes", 4000009): ("definition_changes", 4000010, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000009): ("quality_changes", 4000010, upgrade.upgradeInstanceContainer), + ("quality", 4000009): ("quality", 4000010, upgrade.upgradeInstanceContainer), + ("user", 4000009): ("user", 4000010, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return {"version_upgrade": upgrade} diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/plugin.json b/plugins/VersionUpgrade/VersionUpgrade43to44/plugin.json new file mode 100644 index 0000000000..37575396e3 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade43to44/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.3 to 4.4", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.3 to Cura 4.4.", + "api": "7.0", + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/tests/TestVersionUpgrade43To44.py b/plugins/VersionUpgrade/VersionUpgrade43to44/tests/TestVersionUpgrade43To44.py new file mode 100644 index 0000000000..dc770c2c6f --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade43to44/tests/TestVersionUpgrade43To44.py @@ -0,0 +1,36 @@ +import configparser + +import VersionUpgrade43to44 + +before_update = """[general] +version = 4 +name = Ultimaker 3 +id = Ultimaker 3 + +[metadata] +type = machine + +[containers] +0 = user_profile +1 = quality_changes +2 = quality +3 = material +4 = variant +5 = definition_changes +6 = definition +""" + + +def test_upgrade(): + upgrader = VersionUpgrade43to44.VersionUpgrade43to44() + file_name, new_data = upgrader.upgradeStack(before_update, "whatever") + parser = configparser.ConfigParser(interpolation=None) + parser.read_string(new_data[0]) + assert parser["containers"]["0"] == "user_profile" + assert parser["containers"]["1"] == "quality_changes" + assert parser["containers"]["2"] == "empty_intent" + assert parser["containers"]["3"] == "quality" + assert parser["containers"]["4"] == "material" + assert parser["containers"]["5"] == "variant" + assert parser["containers"]["6"] == "definition_changes" + assert parser["containers"]["7"] == "definition" \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade44to45/VersionUpgrade44to45.py b/plugins/VersionUpgrade/VersionUpgrade44to45/VersionUpgrade44to45.py new file mode 100644 index 0000000000..1d278764f0 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade44to45/VersionUpgrade44to45.py @@ -0,0 +1,69 @@ +import configparser +from typing import Tuple, List +import io +from UM.VersionUpgrade import VersionUpgrade + +# Merged preferences: machine_head_polygon and machine_head_with_fans_polygon -> machine_head_with_fans_polygon +# When both are present, machine_head_polygon will be removed +# When only one of the two is present, it's value will be used + + +class VersionUpgrade44to45(VersionUpgrade): + def getCfgVersion(self, serialised: str) -> int: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) + return format_version * 1000000 + setting_version + + ## Upgrades Preferences to have the new version number. + # + # This renames the renamed settings in the list of visible settings. + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "11" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades instance containers to have the new version + # number. + # + # This renames the renamed settings in the containers. + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None, comment_prefixes=()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "11" + + if "values" in parser: + # merge machine_head_with_fans_polygon (preferred) and machine_head_polygon + if "machine_head_with_fans_polygon" in parser["values"]: + if "machine_head_polygon" in parser["values"]: + del parser["values"]["machine_head_polygon"] + elif "machine_head_polygon" in parser["values"]: + parser["values"]["machine_head_with_fans_polygon"] = parser["values"]["machine_head_polygon"] + del parser["values"]["machine_head_polygon"] + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades stacks to have the new version number. + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + if "metadata" not in parser: + parser["metadata"] = {} + parser["metadata"]["setting_version"] = "11" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade44to45/__init__.py b/plugins/VersionUpgrade/VersionUpgrade44to45/__init__.py new file mode 100644 index 0000000000..06a9d66c50 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade44to45/__init__.py @@ -0,0 +1,61 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade44to45 + + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade44to45.VersionUpgrade44to45() + + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000010): ("preferences", 6000011, upgrade.upgradePreferences), + ("machine_stack", 4000010): ("machine_stack", 4000011, upgrade.upgradeStack), + ("extruder_train", 4000010): ("extruder_train", 4000011, upgrade.upgradeStack), + ("definition_changes", 4000010): ("definition_changes", 4000011, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000010): ("quality_changes", 4000011, upgrade.upgradeInstanceContainer), + ("quality", 4000010): ("quality", 4000011, upgrade.upgradeInstanceContainer), + ("user", 4000010): ("user", 4000011, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return {"version_upgrade": upgrade} diff --git a/plugins/VersionUpgrade/VersionUpgrade44to45/plugin.json b/plugins/VersionUpgrade/VersionUpgrade44to45/plugin.json new file mode 100644 index 0000000000..f7b6157118 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade44to45/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.4 to 4.5", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.4 to Cura 4.5.", + "api": "7.0", + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade44to45/tests/TestVersionUpgrade44To45.py b/plugins/VersionUpgrade/VersionUpgrade44to45/tests/TestVersionUpgrade44To45.py new file mode 100644 index 0000000000..0c1bb55985 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade44to45/tests/TestVersionUpgrade44To45.py @@ -0,0 +1,42 @@ +import configparser + +import VersionUpgrade44to45 +import pytest + +before_update = """[general] +version = 4 +name = Creality CR-10S_settings +definition = creality_cr10s + +[metadata] +type = definition_changes +setting_version = 11 + +[values] +%s +""" +before_after_list = [ + ("machine_head_with_fans_polygon = [[-99, 99], [-99, -44], [45, 99], [45, -44]]", "[[-99, 99], [-99, -44], [45, 99], [45, -44]]"), + ("", None), + ("machine_head_polygon = [[-98, 99], [-99, -44], [45, 99], [45, -44]]", "[[-98, 99], [-99, -44], [45, 99], [45, -44]]"), + ("machine_head_polygon = [[-87, 99], [-99, -44], [45, 99], [45, -44]]\nmachine_head_with_fans_polygon = [[-99, 99], [-99, -44], [45, 99], [45, -44]]", "[[-99, 99], [-99, -44], [45, 99], [45, -44]]"), + ] + + +class TestVersionUpgrade44to45: + + @pytest.mark.parametrize("after_string, after_value", before_after_list) + def test_upgrade(self, after_string, after_value): + upgrader = VersionUpgrade44to45.VersionUpgrade44to45() + + + file_name, new_data = upgrader.upgradeInstanceContainer(before_update % after_string, "whatever") + parser = configparser.ConfigParser(interpolation=None) + parser.read_string(new_data[0]) + + if after_value is None: + assert "machine_head_with_fans_polygon" not in parser["values"] + else: + assert parser["values"]["machine_head_with_fans_polygon"] == after_value + + assert "machine_head_polygon" not in parser["values"] \ No newline at end of file diff --git a/plugins/X3DReader/plugin.json b/plugins/X3DReader/plugin.json index 1fc14104ed..17bb3a96d1 100644 --- a/plugins/X3DReader/plugin.json +++ b/plugins/X3DReader/plugin.json @@ -3,6 +3,6 @@ "author": "Seva Alekseyev", "version": "1.0.1", "description": "Provides support for reading X3D files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/XRayView/XRayView.py b/plugins/XRayView/XRayView.py index 86533fe51c..88a5a441b8 100644 --- a/plugins/XRayView/XRayView.py +++ b/plugins/XRayView/XRayView.py @@ -10,21 +10,21 @@ from UM.Math.Color import Color from UM.PluginRegistry import PluginRegistry from UM.Platform import Platform from UM.Event import Event -from UM.View.View import View from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.View.RenderBatch import RenderBatch from UM.View.GL.OpenGL import OpenGL from cura.CuraApplication import CuraApplication +from cura.CuraView import CuraView from cura.Scene.ConvexHullNode import ConvexHullNode from . import XRayPass ## View used to display a see-through version of objects with errors highlighted. -class XRayView(View): +class XRayView(CuraView): def __init__(self): - super().__init__() + super().__init__(parent = None, use_empty_menu_placeholder = True) self._xray_shader = None self._xray_pass = None diff --git a/plugins/XRayView/plugin.json b/plugins/XRayView/plugin.json index 71cc165b6c..ff220ed97c 100644 --- a/plugins/XRayView/plugin.json +++ b/plugins/XRayView/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides the X-Ray view.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/XRayView/xray.shader b/plugins/XRayView/xray.shader index 41b00154ea..45cb16c44c 100644 --- a/plugins/XRayView/xray.shader +++ b/plugins/XRayView/xray.shader @@ -1,12 +1,14 @@ [shaders] vertex = - uniform highp mat4 u_modelViewProjectionMatrix; + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; attribute highp vec4 a_vertex; void main() { - gl_Position = u_modelViewProjectionMatrix * a_vertex; + gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex; } fragment = @@ -19,13 +21,15 @@ fragment = vertex41core = #version 410 - uniform highp mat4 u_modelViewProjectionMatrix; + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; in highp vec4 a_vertex; void main() { - gl_Position = u_modelViewProjectionMatrix * a_vertex; + gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex; } fragment41core = @@ -43,7 +47,9 @@ fragment41core = u_color = [0.02, 0.02, 0.02, 1.0] [bindings] -u_modelViewProjectionMatrix = model_view_projection_matrix +u_modelMatrix = model_matrix +u_viewMatrix = view_matrix +u_projectionMatrix = projection_matrix [attributes] a_vertex = vertex diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 1a0d3bc85e..52b204affc 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -6,7 +6,7 @@ import io import json #To parse the product-to-id mapping file. import os.path #To find the product-to-id mapping. import sys -from typing import Any, Dict, List, Optional, Tuple, cast, Set +from typing import Any, Dict, List, Optional, Tuple, cast, Set, Union import xml.etree.ElementTree as ET from UM.Resources import Resources @@ -17,9 +17,13 @@ from UM.Settings.ContainerRegistry import ContainerRegistry from UM.ConfigurationErrorMessage import ConfigurationErrorMessage from cura.CuraApplication import CuraApplication +from cura.Machines.ContainerTree import ContainerTree from cura.Machines.VariantType import VariantType -from .XmlMaterialValidator import XmlMaterialValidator +try: + from .XmlMaterialValidator import XmlMaterialValidator +except (ImportError, SystemError): + import XmlMaterialValidator # type: ignore # This fixes the tests not being able to import. ## Handles serializing and deserializing material containers from an XML file @@ -40,11 +44,11 @@ class XmlMaterialProfile(InstanceContainer): # # \param xml_version: The version number found in an XML file. # \return The corresponding setting_version. - @classmethod - def xmlVersionToSettingVersion(cls, xml_version: str) -> int: + @staticmethod + def xmlVersionToSettingVersion(xml_version: str) -> int: if xml_version == "1.3": return CuraApplication.SettingVersion - return 0 #Older than 1.3. + return 0 # Older than 1.3. def getInheritedFiles(self): return self._inherited_files @@ -63,26 +67,28 @@ class XmlMaterialProfile(InstanceContainer): Logger.log("w", "Can't change metadata {key} of material {material_id} because it's read-only.".format(key = key, material_id = self.getId())) return - # Prevent recursion - if not apply_to_all: - super().setMetaDataEntry(key, value) - return + # Some metadata such as diameter should also be instantiated to be a setting. Go though all values for the + # "properties" field and apply the new values to SettingInstances as well. + new_setting_values_dict = {} + if key == "properties": + for k, v in value.items(): + if k in self.__material_properties_setting_map: + new_setting_values_dict[self.__material_properties_setting_map[k]] = v - # Get the MaterialGroup - material_manager = CuraApplication.getInstance().getMaterialManager() - root_material_id = self.getMetaDataEntry("base_file") #if basefile is self.getId, this is a basefile. - material_group = material_manager.getMaterialGroup(root_material_id) + if not apply_to_all: # Historical: If you only want to modify THIS container. We only used that to prevent recursion but with the below code that's no longer necessary. + # CURA-6920: This is an optimization, but it also fixes the problem that you can only set metadata for a + # material container that can be found in the container registry. + container_query = [self] + else: + container_query = registry.findContainers(base_file = self.getMetaDataEntry("base_file")) - # Update the root material container - root_material_container = material_group.root_material_node.getContainer() - if root_material_container is not None: - root_material_container.setMetaDataEntry(key, value, apply_to_all = False) - - # Update all containers derived from it - for node in material_group.derived_material_node_list: - container = node.getContainer() - if container is not None: - container.setMetaDataEntry(key, value, apply_to_all = False) + for container in container_query: + if key not in container.getMetaData() or container.getMetaData()[key] != value: + container.getMetaData()[key] = value + container.setDirty(True) + container.metaDataChanged.emit(container) + for k, v in new_setting_values_dict.items(): + self.setProperty(k, "value", v) ## Overridden from InstanceContainer, similar to setMetaDataEntry. # without this function the setName would only set the name of the specific nozzle / material / machine combination container @@ -142,23 +148,13 @@ class XmlMaterialProfile(InstanceContainer): # setting_version is derived from the "version" tag in the schema, so don't serialize it into a file if ignored_metadata_keys is None: ignored_metadata_keys = set() - ignored_metadata_keys |= {"setting_version"} + ignored_metadata_keys |= {"setting_version", "definition", "status", "variant", "type", "base_file", "approximate_diameter", "id", "container_type", "name", "compatible"} # remove the keys that we want to ignore in the metadata for key in ignored_metadata_keys: if key in metadata: del metadata[key] properties = metadata.pop("properties", {}) - # Metadata properties that should not be serialized. - metadata.pop("status", "") - metadata.pop("variant", "") - metadata.pop("type", "") - metadata.pop("base_file", "") - metadata.pop("approximate_diameter", "") - metadata.pop("id", "") - metadata.pop("container_type", "") - metadata.pop("name", "") - ## Begin Name Block builder.start("name") # type: ignore @@ -182,13 +178,16 @@ class XmlMaterialProfile(InstanceContainer): ## End Name Block for key, value in metadata.items(): - builder.start(key) # type: ignore + key_to_use = key + if key in self._metadata_tags_that_have_cura_namespace: + key_to_use = "cura:" + key_to_use + builder.start(key_to_use) # type: ignore if value is not None: #Nones get handled well by the builder. #Otherwise the builder always expects a string. #Deserialize expects the stringified version. value = str(value) builder.data(value) - builder.end(key) + builder.end(key_to_use) builder.end("metadata") ## End Metadata Block @@ -211,10 +210,8 @@ class XmlMaterialProfile(InstanceContainer): for instance in self.findInstances(): self._addSettingElement(builder, instance) - machine_container_map = {} # type: Dict[str, InstanceContainer] - machine_variant_map = {} # type: Dict[str, Dict[str, Any]] - - variant_manager = CuraApplication.getInstance().getVariantManager() + machine_container_map = {} # type: Dict[str, InstanceContainer] + machine_variant_map = {} # type: Dict[str, Dict[str, Any]] root_material_id = self.getMetaDataEntry("base_file") # if basefile is self.getId, this is a basefile. all_containers = registry.findInstanceContainers(base_file = root_material_id) @@ -231,13 +228,13 @@ class XmlMaterialProfile(InstanceContainer): machine_variant_map[definition_id] = {} variant_name = container.getMetaDataEntry("variant_name") - if variant_name: - variant_dict = {"variant_node": variant_manager.getVariantNode(definition_id, variant_name), - "material_container": container} - machine_variant_map[definition_id][variant_name] = variant_dict + if not variant_name: + machine_container_map[definition_id] = container continue - machine_container_map[definition_id] = container + variant_dict = {"variant_type": container.getMetaDataEntry("hardware_type", "nozzle"), + "material_container": container} + machine_variant_map[definition_id][variant_name] = variant_dict # Map machine human-readable names to IDs product_id_map = self.getProductIdMap() @@ -270,8 +267,7 @@ class XmlMaterialProfile(InstanceContainer): # Find all hotend sub-profiles corresponding to this material and machine and add them to this profile. buildplate_dict = {} # type: Dict[str, Any] for variant_name, variant_dict in machine_variant_map[definition_id].items(): - variant_type = variant_dict["variant_node"].getMetaDataEntry("hardware_type", str(VariantType.NOZZLE)) - variant_type = VariantType(variant_type) + variant_type = VariantType(variant_dict["variant_type"]) if variant_type == VariantType.NOZZLE: # The hotend identifier is not the containers name, but its "name". builder.start("hotend", {"id": variant_name}) @@ -334,7 +330,7 @@ class XmlMaterialProfile(InstanceContainer): stream = io.BytesIO() tree = ET.ElementTree(root) # this makes sure that the XML header states encoding="utf-8" - tree.write(stream, encoding = "utf-8", xml_declaration=True) + tree.write(stream, encoding = "utf-8", xml_declaration = True) return stream.getvalue().decode("utf-8") @@ -398,7 +394,8 @@ class XmlMaterialProfile(InstanceContainer): self._combineElement(self._expandMachinesXML(result), self._expandMachinesXML(second)) return result - def _createKey(self, element): + @staticmethod + def _createKey(element): key = element.tag.split("}")[-1] if "key" in element.attrib: key += " key:" + element.attrib["key"] @@ -414,15 +411,15 @@ class XmlMaterialProfile(InstanceContainer): # Recursively merges XML elements. Updates either the text or children if another element is found in first. # If it does not exist, copies it from second. - def _combineElement(self, first, second): + @staticmethod + def _combineElement(first, second): # Create a mapping from tag name to element. - mapping = {} for element in first: - key = self._createKey(element) + key = XmlMaterialProfile._createKey(element) mapping[key] = element for element in second: - key = self._createKey(element) + key = XmlMaterialProfile._createKey(element) if len(element): # Check if element has children. try: if "setting" in element.tag and not "settings" in element.tag: @@ -432,7 +429,7 @@ class XmlMaterialProfile(InstanceContainer): for child in element: mapping[key].append(child) else: - self._combineElement(mapping[key], element) # Multiple elements, handle those. + XmlMaterialProfile._combineElement(mapping[key], element) # Multiple elements, handle those. except KeyError: mapping[key] = element first.append(element) @@ -684,32 +681,6 @@ class XmlMaterialProfile(InstanceContainer): if is_new_material: containers_to_add.append(new_material) - # Find the buildplates compatibility - buildplates = machine.iterfind("./um:buildplate", self.__namespaces) - buildplate_map = {} - buildplate_map["buildplate_compatible"] = {} - buildplate_map["buildplate_recommended"] = {} - for buildplate in buildplates: - buildplate_id = buildplate.get("id") - if buildplate_id is None: - continue - - variant_manager = CuraApplication.getInstance().getVariantManager() - variant_node = variant_manager.getVariantNode(machine_id, buildplate_id, - variant_type = VariantType.BUILD_PLATE) - if not variant_node: - continue - - _, buildplate_unmapped_settings_dict = self._getSettingsDictForNode(buildplate) - - buildplate_compatibility = buildplate_unmapped_settings_dict.get("hardware compatible", - machine_compatibility) - buildplate_recommended = buildplate_unmapped_settings_dict.get("hardware recommended", - machine_compatibility) - - buildplate_map["buildplate_compatible"][buildplate_id] = buildplate_compatibility - buildplate_map["buildplate_recommended"][buildplate_id] = buildplate_recommended - hotends = machine.iterfind("./um:hotend", self.__namespaces) for hotend in hotends: # The "id" field for hotends in material profiles is actually name @@ -717,11 +688,6 @@ class XmlMaterialProfile(InstanceContainer): if hotend_name is None: continue - variant_manager = CuraApplication.getInstance().getVariantManager() - variant_node = variant_manager.getVariantNode(machine_id, hotend_name, VariantType.NOZZLE) - if not variant_node: - continue - hotend_mapped_settings, hotend_unmapped_settings = self._getSettingsDictForNode(hotend) hotend_compatibility = hotend_unmapped_settings.get("hardware compatible", machine_compatibility) @@ -745,9 +711,6 @@ class XmlMaterialProfile(InstanceContainer): new_hotend_material.getMetaData()["compatible"] = hotend_compatibility new_hotend_material.getMetaData()["machine_manufacturer"] = machine_manufacturer new_hotend_material.getMetaData()["definition"] = machine_id - if buildplate_map["buildplate_compatible"]: - new_hotend_material.getMetaData()["buildplate_compatible"] = buildplate_map["buildplate_compatible"] - new_hotend_material.getMetaData()["buildplate_recommended"] = buildplate_map["buildplate_recommended"] cached_hotend_setting_properties = cached_machine_setting_properties.copy() cached_hotend_setting_properties.update(hotend_mapped_settings) @@ -757,63 +720,10 @@ class XmlMaterialProfile(InstanceContainer): new_hotend_material._dirty = False if is_new_material: + if ContainerRegistry.getInstance().isReadOnly(self.getId()): + ContainerRegistry.getInstance().setExplicitReadOnly(new_hotend_material.getId()) containers_to_add.append(new_hotend_material) - # - # Build plates in hotend - # - buildplates = hotend.iterfind("./um:buildplate", self.__namespaces) - for buildplate in buildplates: - # The "id" field for buildplate in material profiles is actually name - buildplate_name = buildplate.get("id") - if buildplate_name is None: - continue - - variant_manager = CuraApplication.getInstance().getVariantManager() - variant_node = variant_manager.getVariantNode(machine_id, buildplate_name, VariantType.BUILD_PLATE) - if not variant_node: - continue - - buildplate_mapped_settings, buildplate_unmapped_settings = self._getSettingsDictForNode(buildplate) - buildplate_compatibility = buildplate_unmapped_settings.get("hardware compatible", - buildplate_map["buildplate_compatible"]) - buildplate_recommended = buildplate_unmapped_settings.get("hardware recommended", - buildplate_map["buildplate_recommended"]) - - # Generate container ID for the hotend-and-buildplate-specific material container - new_hotend_and_buildplate_specific_material_id = new_hotend_specific_material_id + "_" + buildplate_name.replace(" ", "_") - - # Same as machine compatibility, keep the derived material containers consistent with the parent material - if ContainerRegistry.getInstance().isLoaded(new_hotend_and_buildplate_specific_material_id): - new_hotend_and_buildplate_material = ContainerRegistry.getInstance().findContainers(id = new_hotend_and_buildplate_specific_material_id)[0] - is_new_material = False - else: - new_hotend_and_buildplate_material = XmlMaterialProfile(new_hotend_and_buildplate_specific_material_id) - is_new_material = True - - new_hotend_and_buildplate_material.setMetaData(copy.deepcopy(new_hotend_material.getMetaData())) - new_hotend_and_buildplate_material.getMetaData()["id"] = new_hotend_and_buildplate_specific_material_id - new_hotend_and_buildplate_material.getMetaData()["name"] = self.getName() - new_hotend_and_buildplate_material.getMetaData()["variant_name"] = hotend_name - new_hotend_and_buildplate_material.getMetaData()["buildplate_name"] = buildplate_name - new_hotend_and_buildplate_material.setDefinition(machine_id) - # Don't use setMetadata, as that overrides it for all materials with same base file - new_hotend_and_buildplate_material.getMetaData()["compatible"] = buildplate_compatibility - new_hotend_and_buildplate_material.getMetaData()["machine_manufacturer"] = machine_manufacturer - new_hotend_and_buildplate_material.getMetaData()["definition"] = machine_id - new_hotend_and_buildplate_material.getMetaData()["buildplate_compatible"] = buildplate_compatibility - new_hotend_and_buildplate_material.getMetaData()["buildplate_recommended"] = buildplate_recommended - - cached_hotend_and_buildplate_setting_properties = cached_hotend_setting_properties.copy() - cached_hotend_and_buildplate_setting_properties.update(buildplate_mapped_settings) - - new_hotend_and_buildplate_material.setCachedValues(cached_hotend_and_buildplate_setting_properties) - - new_hotend_and_buildplate_material._dirty = False - - if is_new_material: - containers_to_add.append(new_hotend_and_buildplate_material) - # there is only one ID for a machine. Once we have reached here, it means we have already found # a workable ID for that machine, so there is no need to continue break @@ -822,9 +732,9 @@ class XmlMaterialProfile(InstanceContainer): ContainerRegistry.getInstance().addContainer(container_to_add) @classmethod - def _getSettingsDictForNode(cls, node) -> Tuple[dict, dict]: - node_mapped_settings_dict = dict() - node_unmapped_settings_dict = dict() + def _getSettingsDictForNode(cls, node) -> Tuple[Dict[str, Any], Dict[str, Any]]: + node_mapped_settings_dict = dict() # type: Dict[str, Any] + node_unmapped_settings_dict = dict() # type: Dict[str, Any] # Fetch settings in the "um" namespace um_settings = node.iterfind("./um:setting", cls.__namespaces) @@ -953,14 +863,12 @@ class XmlMaterialProfile(InstanceContainer): for machine in data.iterfind("./um:settings/um:machine", cls.__namespaces): machine_compatibility = common_compatibility - for entry in machine.iterfind("./um:setting", cls.__namespaces): - key = entry.get("key") - if key == "hardware compatible": - if entry.text is not None: - machine_compatibility = cls._parseCompatibleValue(entry.text) + for entry in machine.iterfind("./um:setting[@key='hardware compatible']", cls.__namespaces): + if entry.text is not None: + machine_compatibility = cls._parseCompatibleValue(entry.text) for identifier in machine.iterfind("./um:machine_identifier", cls.__namespaces): - machine_id_list = product_id_map.get(identifier.get("product"), []) + machine_id_list = product_id_map.get(identifier.get("product", ""), []) if not machine_id_list: machine_id_list = cls.getPossibleDefinitionIDsFromName(identifier.get("product")) @@ -992,7 +900,7 @@ class XmlMaterialProfile(InstanceContainer): result_metadata.append(new_material_metadata) buildplates = machine.iterfind("./um:buildplate", cls.__namespaces) - buildplate_map = {} # type: Dict[str, Dict[str, bool]] + buildplate_map = {} # type: Dict[str, Dict[str, bool]] buildplate_map["buildplate_compatible"] = {} buildplate_map["buildplate_recommended"] = {} for buildplate in buildplates: @@ -1028,11 +936,9 @@ class XmlMaterialProfile(InstanceContainer): continue hotend_compatibility = machine_compatibility - for entry in hotend.iterfind("./um:setting", cls.__namespaces): - key = entry.get("key") - if key == "hardware compatible": - if entry.text is not None: - hotend_compatibility = cls._parseCompatibleValue(entry.text) + for entry in hotend.iterfind("./um:setting[@key='hardware compatible']", cls.__namespaces): + if entry.text is not None: + hotend_compatibility = cls._parseCompatibleValue(entry.text) new_hotend_specific_material_id = container_id + "_" + machine_id + "_" + hotend_name.replace(" ", "_") @@ -1123,8 +1029,8 @@ class XmlMaterialProfile(InstanceContainer): builder.data(data) builder.end(tag_name) - @classmethod - def _profile_name(cls, material_name, color_name): + @staticmethod + def _profile_name(material_name, color_name): if material_name is None: return "Unknown Material" if color_name != "Generic": @@ -1132,8 +1038,8 @@ class XmlMaterialProfile(InstanceContainer): else: return material_name - @classmethod - def getPossibleDefinitionIDsFromName(cls, name): + @staticmethod + def getPossibleDefinitionIDsFromName(name): name_parts = name.lower().split(" ") merged_name_parts = [] for part in name_parts: @@ -1166,17 +1072,21 @@ class XmlMaterialProfile(InstanceContainer): with open(product_to_id_file, encoding = "utf-8") as f: product_to_id_map = json.load(f) product_to_id_map = {key: [value] for key, value in product_to_id_map.items()} + #This also loads "Ultimaker S5" -> "ultimaker_s5" even though that is not strictly necessary with the default to change spaces into underscores. + #However it is not always loaded with that default; this mapping is also used in serialize() without that default. return product_to_id_map ## Parse the value of the "material compatible" property. - @classmethod - def _parseCompatibleValue(cls, value: str): + @staticmethod + def _parseCompatibleValue(value: str): return value in {"yes", "unknown"} ## Small string representation for debugging. def __str__(self): return "".format(my_id = self.getId(), name = self.getName(), base_file = self.getMetaDataEntry("base_file")) + _metadata_tags_that_have_cura_namespace = {"pva_compatible", "breakaway_compatible"} + # Map XML file setting names to internal names __material_settings_setting_map = { "print temperature": "default_material_print_temperature", @@ -1189,7 +1099,16 @@ class XmlMaterialProfile(InstanceContainer): "adhesion tendency": "material_adhesion_tendency", "surface energy": "material_surface_energy", "shrinkage percentage": "material_shrinkage_percentage", - } + "build volume temperature": "build_volume_temperature", + "anti ooze retract position": "material_anti_ooze_retracted_position", + "anti ooze retract speed": "material_anti_ooze_retraction_speed", + "break preparation position": "material_break_preparation_retracted_position", + "break preparation speed": "material_break_preparation_speed", + "break preparation temperature": "material_break_preparation_temperature", + "break position": "material_break_retracted_position", + "break speed": "material_break_speed", + "break temperature": "material_break_temperature" + } # type: Dict[str, str] __unmapped_settings = [ "hardware compatible", "hardware recommended" diff --git a/plugins/XmlMaterialProfile/plugin.json b/plugins/XmlMaterialProfile/plugin.json index bb1db82fa4..a8f82d1058 100644 --- a/plugins/XmlMaterialProfile/plugin.json +++ b/plugins/XmlMaterialProfile/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides capabilities to read and write XML-based material profiles.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/XmlMaterialProfile/product_to_id.json b/plugins/XmlMaterialProfile/product_to_id.json index 3e7ce9311f..a48eb20a18 100644 --- a/plugins/XmlMaterialProfile/product_to_id.json +++ b/plugins/XmlMaterialProfile/product_to_id.json @@ -6,6 +6,8 @@ "Ultimaker 2+": "ultimaker2_plus", "Ultimaker 3": "ultimaker3", "Ultimaker 3 Extended": "ultimaker3_extended", + "Ultimaker S3": "ultimaker_s3", + "Ultimaker S5": "ultimaker_s5", "Ultimaker Original": "ultimaker_original", "Ultimaker Original+": "ultimaker_original_plus", "Ultimaker Original Dual Extrusion": "ultimaker_original_dual", diff --git a/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py b/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py new file mode 100644 index 0000000000..1bc19f773a --- /dev/null +++ b/plugins/XmlMaterialProfile/tests/TestXmlMaterialProfile.py @@ -0,0 +1,79 @@ +from unittest.mock import patch, MagicMock +import sys +import os + +# Prevents error: "PyCapsule_GetPointer called with incorrect name" with conflicting SIP configurations between Arcus and PyQt: Import Arcus and Savitar first! +import Savitar # Dont remove this line +import Arcus # No really. Don't. It needs to be there! +from UM.Qt.QtApplication import QtApplication # QtApplication import is required, even though it isn't used. + +import pytest +import XmlMaterialProfile + +def createXmlMaterialProfile(material_id): + try: + return XmlMaterialProfile.XmlMaterialProfile.XmlMaterialProfile(material_id) + except AttributeError: + return XmlMaterialProfile.XmlMaterialProfile(material_id) + + +def test_setName(): + material_1 = createXmlMaterialProfile("herpderp") + material_2 = createXmlMaterialProfile("OMGZOMG") + + material_1.getMetaData()["base_file"] = "herpderp" + material_2.getMetaData()["base_file"] = "herpderp" + + container_registry = MagicMock() + container_registry.isReadOnly = MagicMock(return_value = False) + container_registry.findInstanceContainers = MagicMock(return_value = [material_1, material_2]) + + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + material_1.setName("beep!") + + assert material_1.getName() == "beep!" + assert material_2.getName() == "beep!" + + +def test_setDirty(): + material_1 = createXmlMaterialProfile("herpderp") + material_2 = createXmlMaterialProfile("OMGZOMG") + + material_1.getMetaData()["base_file"] = "herpderp" + material_2.getMetaData()["base_file"] = "herpderp" + + container_registry = MagicMock() + container_registry.isReadOnly = MagicMock(return_value=False) + container_registry.findContainers = MagicMock(return_value=[material_1, material_2]) + + # Sanity check. Since we did a hacky thing to set the metadata, the container should not be dirty. + # But this test assumes that it works like that, so we need to validate that. + assert not material_1.isDirty() + assert not material_2.isDirty() + + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + material_2.setDirty(True) + + assert material_1.isDirty() + assert material_2.isDirty() + + # Setting the base material dirty does not set it's child as dirty. + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + material_1.setDirty(False) + + assert not material_1.isDirty() + assert material_2.isDirty() + + +def test_serializeNonBaseMaterial(): + material_1 = createXmlMaterialProfile("herpderp") + material_1.getMetaData()["base_file"] = "omgzomg" + + container_registry = MagicMock() + container_registry.isReadOnly = MagicMock(return_value=False) + container_registry.findContainers = MagicMock(return_value=[material_1]) + + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + with pytest.raises(NotImplementedError): + # This material is not a base material, so it can't be serialized! + material_1.serialize() diff --git a/public_key.pem b/public_key.pem new file mode 100644 index 0000000000..d07bb5477a --- /dev/null +++ b/public_key.pem @@ -0,0 +1,13 @@ +-----BEGIN RSA PUBLIC KEY----- +MIICCgKCAgEA8k8IJsNNM097VM2pJ5vxkHcLhHf76JCB0iyvqpUuIgl8Zcp78Go+ +WtVkbVBZPPfSSB8GwjEtxvZeWj3i6e3nfreuuzq2sw6Gh860wMiQbNgL+rYCU3m9 +XxvC0kXgZt+oYs13N5LTePV7BG4goa/JOcN8dsu2ptZKfgH6TPhwshMeOGr/RoGr +Jw1DrpvVeq/yTkrEHQHdtHr81GDghfK1vzxYQCt94MOFQCeShhtIC/jHelenJA94 +EpXqcWwCzFDfCQ3aXmCNHnMAsTHer7DWDfvsaUFyvJznrxkuQZIOQydGCNWhePTw +nGiaMydchknr9TT3F+W/yuCs4u5GdZsz7S+1qbG4hblXo6dV6CTzkdKhh/MzONPC +w6u1QBHUeTWN98zcTdtGIn53jjZEyYTodPnw/p4xLHVCju78a7uwm5U0rahcs6gw +658glo3uT41mmTrXTBIVTV+4f/dSrwJVpNfTy/E4wi6fiuFeN8ojqXqN+NbIymfJ +aKar/Jf/nM3QpEYaPz7yyn8PW8MZ7iomqnsPzyQGE1aymuEbw0ipTzMB7Oy/DfuU +d4JU8FFuVuWJj3zNaXW7U/ggzbt5vkdIP/VNVfNZf741J/yKRbCI0+j4mthbruVQ +Ka4aB2EVp1ozisHMaALg5tAeUgrQDZjGnVmSQLt+yFUUbG4e0XFQBb8CAwEAAQ== +-----END RSA PUBLIC KEY----- diff --git a/resources/bundled_packages/cura.json b/resources/bundled_packages/cura.json index 21da1d9fdb..22642cd38e 100644 --- a/resources/bundled_packages/cura.json +++ b/resources/bundled_packages/cura.json @@ -6,7 +6,7 @@ "display_name": "3MF Reader", "description": "Provides support for reading 3MF files.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -23,7 +23,7 @@ "display_name": "3MF Writer", "description": "Provides support for writing 3MF files.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -33,18 +33,18 @@ } } }, - "ChangeLogPlugin": { + "AMFReader": { "package_info": { - "package_id": "ChangeLogPlugin", + "package_id": "AMFReader", "package_type": "plugin", - "display_name": "Change Log", - "description": "Shows changes since latest checked version.", - "package_version": "1.0.1", - "sdk_version": "6.0", + "display_name": "AMF Reader", + "description": "Provides support for reading AMF files.", + "package_version": "1.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { - "author_id": "UltimakerPackages", - "display_name": "Ultimaker B.V.", + "author_id": "fieldOfView", + "display_name": "fieldOfView", "email": "plugins@ultimaker.com", "website": "https://ultimaker.com" } @@ -57,7 +57,7 @@ "display_name": "Cura Backups", "description": "Backup and restore your configuration.", "package_version": "1.2.0", - "sdk_version": 6, + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -74,7 +74,7 @@ "display_name": "CuraEngine Backend", "description": "Provides the link to the CuraEngine slicing backend.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -91,7 +91,7 @@ "display_name": "Cura Profile Reader", "description": "Provides support for importing Cura profiles.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -108,7 +108,7 @@ "display_name": "Cura Profile Writer", "description": "Provides support for exporting Cura profiles.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -125,7 +125,7 @@ "display_name": "Firmware Update Checker", "description": "Checks for firmware updates.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -142,7 +142,7 @@ "display_name": "Firmware Updater", "description": "Provides a machine actions for updating firmware.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -159,7 +159,7 @@ "display_name": "Compressed G-code Reader", "description": "Reads g-code from a compressed archive.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -176,7 +176,7 @@ "display_name": "Compressed G-code Writer", "description": "Writes g-code to a compressed archive.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -193,7 +193,7 @@ "display_name": "G-Code Profile Reader", "description": "Provides support for importing profiles from g-code files.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -210,7 +210,7 @@ "display_name": "G-Code Reader", "description": "Allows loading and displaying G-code files.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "VictorLarchenko", @@ -227,7 +227,7 @@ "display_name": "G-Code Writer", "description": "Writes g-code to a file.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -244,7 +244,7 @@ "display_name": "Image Reader", "description": "Enables ability to generate printable geometry from 2D image files.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -261,7 +261,7 @@ "display_name": "Legacy Cura Profile Reader", "description": "Provides support for importing profiles from legacy Cura versions.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -278,7 +278,7 @@ "display_name": "Machine Settings Action", "description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "fieldOfView", @@ -295,7 +295,7 @@ "display_name": "Model Checker", "description": "Checks models and print configuration for possible printing issues and give suggestions.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -312,7 +312,7 @@ "display_name": "Monitor Stage", "description": "Provides a monitor stage in Cura.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -329,7 +329,7 @@ "display_name": "Per-Object Settings Tool", "description": "Provides the per-model settings.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -346,7 +346,7 @@ "display_name": "Post Processing", "description": "Extension that allows for user created scripts for post processing.", "package_version": "2.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -363,7 +363,7 @@ "display_name": "Prepare Stage", "description": "Provides a prepare stage in Cura.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -380,7 +380,7 @@ "display_name": "Preview Stage", "description": "Provides a preview stage in Cura.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -397,7 +397,7 @@ "display_name": "Removable Drive Output Device", "description": "Provides removable drive hotplugging and writing support.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -414,7 +414,7 @@ "display_name": "Simulation View", "description": "Provides the Simulation view.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -431,7 +431,7 @@ "display_name": "Slice Info", "description": "Submits anonymous slice info. Can be disabled through preferences.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -448,7 +448,7 @@ "display_name": "Solid View", "description": "Provides a normal solid mesh view.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -465,7 +465,24 @@ "display_name": "Support Eraser Tool", "description": "Creates an eraser mesh to block the printing of support in certain places.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, + "TrimeshReader": { + "package_info": { + "package_id": "TrimeshReader", + "package_type": "plugin", + "display_name": "Trimesh Reader", + "description": "Provides support for reading model files.", + "package_version": "1.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -482,7 +499,24 @@ "display_name": "Toolbox", "description": "Find, manage and install new Cura packages.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, + "UFPReader": { + "package_info": { + "package_id": "UFPReader", + "package_type": "plugin", + "display_name": "UFP Reader", + "description": "Provides support for reading Ultimaker Format Packages.", + "package_version": "1.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -499,7 +533,7 @@ "display_name": "UFP Writer", "description": "Provides support for writing Ultimaker Format Packages.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -516,7 +550,7 @@ "display_name": "Ultimaker Machine Actions", "description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -533,7 +567,7 @@ "display_name": "UM3 Network Printing", "description": "Manages network connections to Ultimaker 3 printers.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -550,24 +584,7 @@ "display_name": "USB Printing", "description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.", "package_version": "1.0.2", - "sdk_version": "6.0", - "website": "https://ultimaker.com", - "author": { - "author_id": "UltimakerPackages", - "display_name": "Ultimaker B.V.", - "email": "plugins@ultimaker.com", - "website": "https://ultimaker.com" - } - } - }, - "UserAgreement": { - "package_info": { - "package_id": "UserAgreement", - "package_type": "plugin", - "display_name": "User Agreement", - "description": "Ask the user once if he/she agrees with our license.", - "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -584,7 +601,7 @@ "display_name": "Version Upgrade 2.1 to 2.2", "description": "Upgrades configurations from Cura 2.1 to Cura 2.2.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -601,7 +618,7 @@ "display_name": "Version Upgrade 2.2 to 2.4", "description": "Upgrades configurations from Cura 2.2 to Cura 2.4.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -618,7 +635,7 @@ "display_name": "Version Upgrade 2.5 to 2.6", "description": "Upgrades configurations from Cura 2.5 to Cura 2.6.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -635,7 +652,7 @@ "display_name": "Version Upgrade 2.6 to 2.7", "description": "Upgrades configurations from Cura 2.6 to Cura 2.7.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -652,7 +669,7 @@ "display_name": "Version Upgrade 2.7 to 3.0", "description": "Upgrades configurations from Cura 2.7 to Cura 3.0.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -669,7 +686,7 @@ "display_name": "Version Upgrade 3.0 to 3.1", "description": "Upgrades configurations from Cura 3.0 to Cura 3.1.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -686,7 +703,7 @@ "display_name": "Version Upgrade 3.2 to 3.3", "description": "Upgrades configurations from Cura 3.2 to Cura 3.3.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -703,7 +720,7 @@ "display_name": "Version Upgrade 3.3 to 3.4", "description": "Upgrades configurations from Cura 3.3 to Cura 3.4.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -720,7 +737,7 @@ "display_name": "Version Upgrade 3.4 to 3.5", "description": "Upgrades configurations from Cura 3.4 to Cura 3.5.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -737,7 +754,7 @@ "display_name": "Version Upgrade 3.5 to 4.0", "description": "Upgrades configurations from Cura 3.5 to Cura 4.0.", "package_version": "1.0.0", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -754,7 +771,58 @@ "display_name": "Version Upgrade 4.0 to 4.1", "description": "Upgrades configurations from Cura 4.0 to Cura 4.1.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, + "VersionUpgrade41to42": { + "package_info": { + "package_id": "VersionUpgrade41to42", + "package_type": "plugin", + "display_name": "Version Upgrade 4.1 to 4.2", + "description": "Upgrades configurations from Cura 4.1 to Cura 4.2.", + "package_version": "1.0.0", + "sdk_version": "7.0.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, + "VersionUpgrade42to43": { + "package_info": { + "package_id": "VersionUpgrade42to43", + "package_type": "plugin", + "display_name": "Version Upgrade 4.2 to 4.3", + "description": "Upgrades configurations from Cura 4.2 to Cura 4.3.", + "package_version": "1.0.0", + "sdk_version": "7.0.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, + "VersionUpgrade43to44": { + "package_info": { + "package_id": "VersionUpgrade43to44", + "package_type": "plugin", + "display_name": "Version Upgrade 4.3 to 4.4", + "description": "Upgrades configurations from Cura 4.3 to Cura 4.4.", + "package_version": "1.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -771,7 +839,7 @@ "display_name": "X3D Reader", "description": "Provides support for reading X3D files.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "SevaAlekseyev", @@ -788,7 +856,7 @@ "display_name": "XML Material Profiles", "description": "Provides capabilities to read and write XML-based material profiles.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -805,7 +873,7 @@ "display_name": "X-Ray View", "description": "Provides the X-Ray view.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -822,7 +890,7 @@ "display_name": "Generic ABS", "description": "The generic ABS profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -840,7 +908,7 @@ "display_name": "Generic BAM", "description": "The generic BAM profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -858,7 +926,7 @@ "display_name": "Generic CFF CPE", "description": "The generic CFF CPE profile which other profiles can be based upon.", "package_version": "1.1.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -876,7 +944,7 @@ "display_name": "Generic CFF PA", "description": "The generic CFF PA profile which other profiles can be based upon.", "package_version": "1.1.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -894,7 +962,7 @@ "display_name": "Generic CPE", "description": "The generic CPE profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -912,7 +980,7 @@ "display_name": "Generic CPE+", "description": "The generic CPE+ profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -930,7 +998,7 @@ "display_name": "Generic GFF CPE", "description": "The generic GFF CPE profile which other profiles can be based upon.", "package_version": "1.1.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -948,7 +1016,7 @@ "display_name": "Generic GFF PA", "description": "The generic GFF PA profile which other profiles can be based upon.", "package_version": "1.1.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -966,7 +1034,7 @@ "display_name": "Generic HIPS", "description": "The generic HIPS profile which other profiles can be based upon.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -984,7 +1052,7 @@ "display_name": "Generic Nylon", "description": "The generic Nylon profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1002,7 +1070,7 @@ "display_name": "Generic PC", "description": "The generic PC profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1020,7 +1088,7 @@ "display_name": "Generic PETG", "description": "The generic PETG profile which other profiles can be based upon.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1038,7 +1106,7 @@ "display_name": "Generic PLA", "description": "The generic PLA profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1056,7 +1124,7 @@ "display_name": "Generic PP", "description": "The generic PP profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1074,7 +1142,7 @@ "display_name": "Generic PVA", "description": "The generic PVA profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1092,7 +1160,7 @@ "display_name": "Generic Tough PLA", "description": "The generic Tough PLA profile which other profiles can be based upon.", "package_version": "1.0.2", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1110,7 +1178,7 @@ "display_name": "Generic TPU", "description": "The generic TPU profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1128,7 +1196,7 @@ "display_name": "Dagoma Chromatik PLA", "description": "Filament testé et approuvé pour les imprimantes 3D Dagoma. Chromatik est l'idéal pour débuter et suivre les tutoriels premiers pas. Il vous offre qualité et résistance pour chacune de vos impressions.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://dagoma.fr/boutique/filaments.html", "author": { "author_id": "Dagoma", @@ -1145,7 +1213,7 @@ "display_name": "FABtotum ABS", "description": "This material is easy to be extruded but it is not the simplest to use. It is one of the most used in 3D printing to get very well finished objects. It is not sustainable and its smoke can be dangerous if inhaled. The reason to prefer this filament to PLA is mainly because of its precision and mechanical specs. ABS (for plastic) stands for Acrylonitrile Butadiene Styrene and it is a thermoplastic which is widely used in everyday objects. It can be printed with any FFF 3D printer which can get to high temperatures as it must be extruded in a range between 220° and 245°, so it’s compatible with all versions of the FABtotum Personal fabricator.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=40", "author": { "author_id": "FABtotum", @@ -1162,7 +1230,7 @@ "display_name": "FABtotum Nylon", "description": "When 3D printing started this material was not listed among the extrudable filaments. It is flexible as well as resistant to tractions. It is well known for its uses in textile but also in industries which require a strong and flexible material. There are different kinds of Nylon: 3D printing mostly uses Nylon 6 and Nylon 6.6, which are the most common. It requires higher temperatures to be printed, so a 3D printer must be able to reach them (around 240°C): the FABtotum, of course, can.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=53", "author": { "author_id": "FABtotum", @@ -1179,7 +1247,7 @@ "display_name": "FABtotum PLA", "description": "It is the most common filament used for 3D printing. It is studied to be bio-degradable as it comes from corn starch’s sugar mainly. It is completely made of renewable sources and has no footprint on polluting. PLA stands for PolyLactic Acid and it is a thermoplastic that today is still considered the easiest material to be 3D printed. It can be extruded at lower temperatures: the standard range of FABtotum’s one is between 185° and 195°.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=39", "author": { "author_id": "FABtotum", @@ -1196,7 +1264,7 @@ "display_name": "FABtotum TPU Shore 98A", "description": "", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=66", "author": { "author_id": "FABtotum", @@ -1213,7 +1281,7 @@ "display_name": "Fiberlogy HD PLA", "description": "With our HD PLA you have many more options. You can use this material in two ways. Choose the one you like best. You can use it as a normal PLA and get prints characterized by a very good adhesion between the layers and high precision. You can also make your prints acquire similar properties to that of ABS – better impact resistance and high temperature resistance. All you need is an oven. Yes, an oven! By annealing our HD PLA in an oven, in accordance with the manual, you will avoid all the inconveniences of printing with ABS, such as unpleasant odour or hazardous fumes.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "http://fiberlogy.com/en/fiberlogy-filaments/filament-hd-pla/", "author": { "author_id": "Fiberlogy", @@ -1230,7 +1298,7 @@ "display_name": "Filo3D PLA", "description": "Fast, safe and reliable printing. PLA is ideal for the fast and reliable printing of parts and prototypes with a great surface quality.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://dagoma.fr", "author": { "author_id": "Dagoma", @@ -1247,7 +1315,7 @@ "display_name": "IMADE3D JellyBOX PETG", "description": "", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "http://shop.imade3d.com/filament.html", "author": { "author_id": "IMADE3D", @@ -1264,7 +1332,7 @@ "display_name": "IMADE3D JellyBOX PLA", "description": "", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "http://shop.imade3d.com/filament.html", "author": { "author_id": "IMADE3D", @@ -1281,7 +1349,7 @@ "display_name": "Octofiber PLA", "description": "PLA material from Octofiber.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://nl.octofiber.com/3d-printing-filament/pla.html", "author": { "author_id": "Octofiber", @@ -1298,7 +1366,7 @@ "display_name": "PolyFlex™ PLA", "description": "PolyFlex™ is a highly flexible yet easy to print 3D printing material. Featuring good elasticity and a large strain-to- failure, PolyFlex™ opens up a completely new realm of applications.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "http://www.polymaker.com/shop/polyflex/", "author": { "author_id": "Polymaker", @@ -1315,7 +1383,7 @@ "display_name": "PolyMax™ PLA", "description": "PolyMax™ PLA is a 3D printing material with excellent mechanical properties and printing quality. PolyMax™ PLA has an impact resistance of up to nine times that of regular PLA, and better overall mechanical properties than ABS.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "http://www.polymaker.com/shop/polymax/", "author": { "author_id": "Polymaker", @@ -1332,7 +1400,7 @@ "display_name": "PolyPlus™ PLA True Colour", "description": "PolyPlus™ PLA is a premium PLA designed for all desktop FDM/FFF 3D printers. It is produced with our patented Jam-Free™ technology that ensures consistent extrusion and prevents jams.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "http://www.polymaker.com/shop/polyplus-true-colour/", "author": { "author_id": "Polymaker", @@ -1349,7 +1417,7 @@ "display_name": "PolyWood™ PLA", "description": "PolyWood™ is a wood mimic printing material that contains no actual wood ensuring a clean Jam-Free™ printing experience.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "http://www.polymaker.com/shop/polywood/", "author": { "author_id": "Polymaker", @@ -1365,8 +1433,8 @@ "package_type": "material", "display_name": "Ultimaker ABS", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.2.1", - "sdk_version": "6.0", + "package_version": "1.2.2", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/abs", "author": { "author_id": "UltimakerPackages", @@ -1385,7 +1453,7 @@ "display_name": "Ultimaker Breakaway", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/breakaway", "author": { "author_id": "UltimakerPackages", @@ -1403,8 +1471,8 @@ "package_type": "material", "display_name": "Ultimaker CPE", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.2.1", - "sdk_version": "6.0", + "package_version": "1.2.2", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/abs", "author": { "author_id": "UltimakerPackages", @@ -1422,8 +1490,8 @@ "package_type": "material", "display_name": "Ultimaker CPE+", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.2.1", - "sdk_version": "6.0", + "package_version": "1.2.2", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/cpe", "author": { "author_id": "UltimakerPackages", @@ -1441,8 +1509,8 @@ "package_type": "material", "display_name": "Ultimaker Nylon", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.2.1", - "sdk_version": "6.0", + "package_version": "1.2.2", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/abs", "author": { "author_id": "UltimakerPackages", @@ -1461,7 +1529,7 @@ "display_name": "Ultimaker PC", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.2", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/pc", "author": { "author_id": "UltimakerPackages", @@ -1479,8 +1547,8 @@ "package_type": "material", "display_name": "Ultimaker PLA", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.2.1", - "sdk_version": "6.0", + "package_version": "1.2.2", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/abs", "author": { "author_id": "UltimakerPackages", @@ -1498,8 +1566,8 @@ "package_type": "material", "display_name": "Ultimaker PP", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.2.1", - "sdk_version": "6.0", + "package_version": "1.2.2", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/pp", "author": { "author_id": "UltimakerPackages", @@ -1518,7 +1586,7 @@ "display_name": "Ultimaker PVA", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/abs", "author": { "author_id": "UltimakerPackages", @@ -1536,8 +1604,8 @@ "package_type": "material", "display_name": "Ultimaker TPU 95A", "description": "Example package for material and quality profiles for Ultimaker materials.", - "package_version": "1.2.1", - "sdk_version": "6.0", + "package_version": "1.2.2", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/tpu-95a", "author": { "author_id": "UltimakerPackages", @@ -1556,7 +1624,7 @@ "display_name": "Ultimaker Tough PLA", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.0.3", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/tough-pla", "author": { "author_id": "UltimakerPackages", @@ -1575,7 +1643,7 @@ "display_name": "Vertex Delta ABS", "description": "ABS material and quality files for the Delta Vertex K8800.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", @@ -1592,7 +1660,7 @@ "display_name": "Vertex Delta PET", "description": "ABS material and quality files for the Delta Vertex K8800.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", @@ -1609,7 +1677,7 @@ "display_name": "Vertex Delta PLA", "description": "ABS material and quality files for the Delta Vertex K8800.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", @@ -1626,7 +1694,7 @@ "display_name": "Vertex Delta TPU", "description": "ABS material and quality files for the Delta Vertex K8800.", "package_version": "1.0.1", - "sdk_version": "6.0", + "sdk_version": "7.0.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", @@ -1636,4 +1704,4 @@ } } } -} \ No newline at end of file +} diff --git a/resources/definitions/101Hero.def.json b/resources/definitions/101Hero.def.json index d77f01fd82..d356d15da9 100644 --- a/resources/definitions/101Hero.def.json +++ b/resources/definitions/101Hero.def.json @@ -34,11 +34,10 @@ }, "speed_print": { "default_value": 14 }, "speed_travel": { "value": "speed_print" }, - "speed_infill": { "default_value": 14 }, "speed_wall": { "value": "speed_print * 0.7" }, "speed_topbottom": { "value": "speed_print * 0.7" }, "speed_layer_0": { "value": "speed_print * 0.7" }, - "gantry_height": { "default_value": 0 }, + "gantry_height": { "value": "0" }, "retraction_speed": { "default_value" : 10 }, "retraction_amount": { "default_value" : 2.5 }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, diff --git a/resources/definitions/3dator.def.json b/resources/definitions/3dator.def.json index e91c46920b..ac37523379 100644 --- a/resources/definitions/3dator.def.json +++ b/resources/definitions/3dator.def.json @@ -17,15 +17,10 @@ "overrides": { "machine_name": { "default_value": "3Dator" }, - "speed_travel": { "default_value": 120 }, "prime_tower_size": { "default_value": 8.660254037844387 }, "infill_sparse_density": { "default_value": 20 }, - "speed_wall_x": { "default_value": 45 }, - "speed_wall_0": { "default_value": 40 }, - "speed_topbottom": { "default_value": 35 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 50 }, - "speed_infill": { "default_value": 60 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, "machine_height": { "default_value": 260 }, @@ -33,8 +28,6 @@ "machine_depth": { "default_value": 170 }, "machine_width": { "default_value": 180 }, "retraction_speed": {"default_value":100}, - "cool_fan_speed_min": {"default_value": 20}, - "cool_fan_speed_max": {"default_value": 70}, "adhesion_type": { "default_value": "none" }, "machine_head_with_fans_polygon": { "default_value": [ @@ -45,7 +38,7 @@ ] }, "gantry_height": { - "default_value": 30 + "value": "30" }, "machine_start_gcode": { "default_value": ";Sliced at: {day} {date} {time}\nM104 S{material_print_temperature} ;set temperatures\nM140 S{material_bed_temperature}\nM109 S{material_print_temperature} ;wait for temperatures\nM190 S{material_bed_temperature}\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 Z0 ;move Z to min endstops\nG28 X0 Y0 ;move X/Y to min endstops\nG29 ;Auto Level\nG1 Z0.6 F{speed_travel} ;move the Nozzle near the Bed\nG92 E0\nG1 Y0 ;zero the extruded length\nG1 X10 E30 F500 ;printing a Line from right to left\nG92 E0 ;zero the extruded length again\nG1 Z2\nG1 F{speed_travel}\nM117 Printing...;Put printing message on LCD screen\nM150 R255 U255 B255 P4 ;Change LED Color to white" }, diff --git a/resources/definitions/Mark2_for_Ultimaker2.def.json b/resources/definitions/Mark2_for_Ultimaker2.def.json new file mode 100644 index 0000000000..1aca2a3844 --- /dev/null +++ b/resources/definitions/Mark2_for_Ultimaker2.def.json @@ -0,0 +1,214 @@ +{ + "version": 2, + "name": "Mark2 for Ultimaker2", + "inherits": "ultimaker2_plus", + "metadata": { + "visible": true, + "author": "TheUltimakerCommunity", + "manufacturer": "Foehnsturm", + "category": "Other", + "weight": 0, + "has_variants": true, + "has_materials": true, + "has_machine_quality": false, + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker.png", + "platform": "ultimaker2_platform.obj", + "platform_texture": "Mark2_for_Ultimaker2_backplate.png", + "machine_extruder_trains": + { + "0": "Mark2_extruder1", + "1": "Mark2_extruder2" + }, + "supported_actions": ["MachineSettingsAction", "UpgradeFirmware"] + }, + "overrides": { + "machine_name": { "default_value": "Mark2_for_Ultimaker2" }, + "machine_width": { + "default_value": 223 + }, + "machine_depth": { + "default_value": 223 + }, + "machine_height": { + "default_value": 203 + }, + "gantry_height": { + "value": "52" + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_heat_up_speed": { + "default_value": 3.5 + }, + "machine_nozzle_cool_down_speed": { + "default_value": 1.5 + }, + "machine_min_cool_heat_time_window": + { + "default_value": 15.0 + }, + "machine_show_variants": { + "default_value": true + }, + "machine_nozzle_head_distance": { + "default_value": 5 + }, + "machine_nozzle_expansion_angle": { + "default_value": 45 + }, + "machine_heat_zone_length": { + "default_value": 20 + }, + "machine_heated_bed": { + "default_value": true + }, + "speed_infill": { + "value": "speed_print" + }, + "speed_wall_x": { + "value": "speed_wall" + }, + "layer_height_0": { + "value": "round(machine_nozzle_size / 1.5, 2)" + }, + "line_width": { + "value": "round(machine_nozzle_size * 0.875, 2)" + }, + "speed_support": { + "value": "speed_wall_0" + }, + "machine_max_feedrate_x": { + "default_value": 250 + }, + "machine_max_feedrate_y": { + "default_value": 250 + }, + "machine_max_feedrate_z": { + "default_value": 40 + }, + "machine_max_feedrate_e": { + "default_value": 45 + }, + "machine_acceleration": { + "default_value": 3000 + }, + "retraction_amount": { + "default_value": 5.1 + }, + "retraction_speed": { + "default_value": 25 + }, + "switch_extruder_retraction_amount": { + "value": "retraction_amount", + "enabled": false + }, + "switch_extruder_retraction_speeds": { + "value": "retraction_speed", + "enabled": false + }, + "switch_extruder_retraction_speed": { + "value": "retraction_retract_speed", + "enabled": false + }, + "switch_extruder_prime_speed": { + "value": "retraction_prime_speed", + "enabled": false + }, + "machine_head_with_fans_polygon": + { + "default_value": [ + [ -44, 14 ], + [ -44, -34 ], + [ 64, 14 ], + [ 64, -34 ] + ] + }, + "machine_use_extruder_offset_to_offset_coords": { + "default_value": false + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode" : { + "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G21 ;metric values\\nG90 ;absolute positioning\\nM82 ;set extruder to absolute mode\\nM107 ;start with the fan off\\nM200 D0 T0 ;reset filament diameter\\nM200 D0 T1\\nG28 Z0; home all\\nG28 X0 Y0\\nG0 Z20 F2400 ;move the platform to 20mm\\nG92 E0\\nM190 S{material_bed_temperature_layer_0}\\nM109 T0 S{material_standby_temperature, 0}\\nM109 T1 S{material_print_temperature_layer_0, 1}\\nM104 T0 S{material_print_temperature_layer_0, 0}\\nT1 ; move to the 2th head\\nG0 Z20 F2400\\nG92 E-7.0 ;prime distance\\nG1 E0 F45 ;purge nozzle\\nG1 E-5.1 F1500 ; retract\\nG1 X90 Z0.01 F5000 ; move away from the prime poop\\nG1 X50 F9000\\nG0 Z20 F2400\\nT0 ; move to the first head\\nM104 T1 S{material_standby_temperature, 1}\\nG0 Z20 F2400\\nM104 T{initial_extruder_nr} S{material_print_temperature_layer_0, initial_extruder_nr}\\nG92 E-7.0\\nG1 E0 F45 ;purge nozzle\\nG1 X60 Z0.01 F5000 ; move away from the prime poop\\nG1 X20 F9000\\nM400 ;finish all moves\\nG92 E0\\n;end of startup sequence\\n\"" + }, + "machine_end_gcode" : { + "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"G90 ;absolute positioning\\nM104 S0 T0 ;extruder heater off\\nM104 S0 T1\\nM140 S0 ;turn off bed\\nT0 ; move to the first head\\nM107 ;fan off\"" + }, + "machine_extruder_count": { + "default_value": 2 + }, + "acceleration_enabled": + { + "default_value": true + }, + "acceleration_print": + { + "value": "2000" + }, + "acceleration_travel": + { + "value": "acceleration_print if magic_spiralize else 3000" + }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" }, + "jerk_enabled": + { + "default_value": true + }, + "jerk_print": + { + "default_value": 12 + }, + "jerk_travel": + { + "value": "jerk_print if magic_spiralize else 20" + }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "10 if jerk_print < 16 else math.ceil(jerk_print * 15 / 25)" }, + "jerk_support": { "value": "10 if jerk_print < 16 else math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "10 if jerk_print < 25 else math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall": { "value": "10 if jerk_print < 16 else math.ceil(jerk_print * 15 / 25)" }, + "jerk_wall_0": { "value": "10 if jerk_wall < 16 else math.ceil(jerk_wall * 6 / 10)" }, + "jerk_travel_layer_0": { "value": "math.ceil(jerk_layer_0 * jerk_travel / jerk_print)" }, + "extruder_prime_pos_abs": { "default_value": false }, + "extruder_prime_pos_x": { "default_value": 0.0, "enabled": false }, + "extruder_prime_pos_y": { "default_value": 0.0, "enabled": false }, + "extruder_prime_pos_z": { "default_value": 0.0, "enabled": false }, + "layer_start_x": + { + "default_value": 105.0, + "enabled": false + }, + "layer_start_y": + { + "default_value": 27.0, + "enabled": false + }, + "prime_tower_position_x": { + "value": "185" + }, + "prime_tower_position_y": { + "value": "160" + }, + "machine_disallowed_areas": { + "default_value": [ + [[-115, 112.5], [ -10, 112.5], [ -10, 72.5], [-115, 72.5]], + [[ 115, 112.5], [ 115, 72.5], [ 15, 72.5], [ 15, 112.5]], + [[-115, -112.5], [-115, -87.5], [ 115, -87.5], [ 115, -112.5]], + [[-115, 72.5], [-97, 72.5], [-97, -112.5], [-115, -112.5]] + ] + } + } +} diff --git a/resources/definitions/abax_pri3.def.json b/resources/definitions/abax_pri3.def.json index 1ab48b865a..529636be90 100644 --- a/resources/definitions/abax_pri3.def.json +++ b/resources/definitions/abax_pri3.def.json @@ -49,33 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 70 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/abax_pri5.def.json b/resources/definitions/abax_pri5.def.json index 46229ce756..9e4e7e3b20 100644 --- a/resources/definitions/abax_pri5.def.json +++ b/resources/definitions/abax_pri5.def.json @@ -49,33 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 70 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/abax_titan.def.json b/resources/definitions/abax_titan.def.json index 9f67117d6c..98643df22b 100644 --- a/resources/definitions/abax_titan.def.json +++ b/resources/definitions/abax_titan.def.json @@ -49,33 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 70 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/alfawise_u20.def.json b/resources/definitions/alfawise_u20.def.json index 8a6badeca6..4da42fdb1d 100644 --- a/resources/definitions/alfawise_u20.def.json +++ b/resources/definitions/alfawise_u20.def.json @@ -39,7 +39,7 @@ "default_value": false }, "gantry_height": { - "default_value": 10 + "value": "10" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 50 - }, "layer_height_0": { "default_value": 0.2 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/alfawise_u30.def.json b/resources/definitions/alfawise_u30.def.json index 65f6adcfe0..e05536f66c 100644 --- a/resources/definitions/alfawise_u30.def.json +++ b/resources/definitions/alfawise_u30.def.json @@ -14,80 +14,45 @@ } }, "overrides": { - "machine_name": { - "default_value": "Alfawise U30" - }, + "machine_name": { "default_value": "Alfawise U30" }, "machine_start_gcode": { "default_value": "; -- START GCODE --\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z1 F1000 ;move up slightly\nG1 Y60.0 Z0 E9.0 F1000.0;intro line\nG1 Y100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\nG1 F80\n;Put printing message on LCD screen\nM117 Printing...\n; -- end of START GCODE --" }, "machine_end_gcode": { "default_value": "; -- END GCODE --\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F80 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\nM107 ;turn the fan off; -- end of END GCODE --" }, - "machine_width": { - "default_value": 220 - }, - "machine_height": { - "default_value": 250 - }, - "machine_depth": { - "default_value": 220 - }, - "machine_heated_bed": { - "default_value": true - }, - "machine_center_is_zero": { - "default_value": false - }, - "gantry_height": { - "default_value": 10 - }, - "machine_gcode_flavor": { - "default_value": "RepRap (Marlin/Sprinter)" - }, - "material_diameter": { - "default_value": 1.75 - }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 50 - }, - "layer_height_0": { - "default_value": 0.2 - }, - "wall_thickness": { - "default_value": 1.2 - }, - "speed_print": { - "default_value": 40 - }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, - "support_enable": { - "default_value": true - }, - "retraction_enable": { - "default_value": true - }, - "retraction_amount": { - "default_value": 5 - }, - "retraction_speed": { - "default_value": 45 - } + "material_diameter": { "default_value": 1.75 }, + "layer_height_0": { "default_value": 0.2 }, + "wall_thickness": { "default_value": 1.2 }, + "speed_print": { "default_value": 40 }, + "support_enable": { "default_value": true }, + "retraction_enable": { "default_value": true }, + "retraction_amount": { "default_value": 5 }, + "retraction_speed": { "default_value": 45 }, + "gantry_height": { "value": "25" }, + "machine_width": { "default_value": 220 }, + "machine_height": { "default_value": 250 }, + "machine_depth": { "default_value": 220 }, + "machine_center_is_zero": { "default_value": false }, + "machine_heated_bed": { "default_value": true }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_max_feedrate_x": { "default_value": 200 }, + "machine_max_feedrate_y": { "default_value": 200 }, + "machine_max_feedrate_z": { "default_value": 5 }, + "machine_max_feedrate_e": { "default_value": 100 }, + "machine_max_acceleration_x": { "default_value": 500 }, + "machine_max_acceleration_y": { "default_value": 500 }, + "machine_max_acceleration_z": { "default_value": 10 }, + "machine_max_acceleration_e": { "default_value": 3000 }, + "machine_acceleration": { "default_value": 300 }, + "machine_max_jerk_xy": { "default_value": 20.0 }, + "machine_max_jerk_z": { "default_value": 0.4 }, + "machine_max_jerk_e": { "default_value": 5.0 }, + "machine_steps_per_mm_x": { "default_value": 80 }, + "machine_steps_per_mm_y": { "default_value": 80 }, + "machine_steps_per_mm_z": { "default_value": 400 }, + "machine_steps_per_mm_e": { "default_value": 93 }, + "skirt_line_count": { "default_value": 1 }, + "skirt_brim_minimal_length": { "default_value": 250 } } } diff --git a/resources/definitions/alya3dp.def.json b/resources/definitions/alya3dp.def.json index e918649097..8de7c79641 100644 --- a/resources/definitions/alya3dp.def.json +++ b/resources/definitions/alya3dp.def.json @@ -1,12 +1,22 @@ { - "name": "ALYA", "version": 2, + "name": "ALYA", "inherits": "fdmprinter", - "metadata": { + "metadata": + { "visible": true, "author": "ALYA", - "manufacturer": "ALYA", + "manufacturer": "Kati Hal ARGE", + "category": "Other", "file_formats": "text/x-gcode", + "platform": "alya_platform.stl", + "platform_offset": [-60, -45, 75 ], + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla","tizyx_pla","tizyx_abs","tizyx_pla_bois" ], + "preferred_material": "generic_pla", + "has_machine_quality": true, + "has_materials": true, + "has_variants": false, + "supports_usb_connection": false, "machine_extruder_trains": { "0": "alya3dp_extruder_0" @@ -14,37 +24,27 @@ }, "overrides": { - "machine_width": { - "default_value": 100 + "machine_name": { "default_value": "ALYA 3DP" }, + "machine_heated_bed": { "default_value": false }, + "machine_width": { "default_value": 100 }, + "machine_height": { "default_value": 133 }, + "machine_depth": { "default_value": 100 }, + "machine_center_is_zero": { "default_value": false }, + "gantry_height": { "value": "55"}, + "retraction_amount": { "default_value": 1.5 }, + "support_enable": { "default_value": true}, + "machine_head_with_fans_polygon": { + "default_value": [[75, 18],[18, 18],[18, 35],[75, 35]] }, - "machine_height": { - "default_value": 133 + "adhesion_type": {"options": {"raft": "Raft" ,"none": "None", "brim": "Brim"}, "default_value": "raft"}, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": + { + "default_value": ";Sliced at: {day} {date} {time} \n ;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density} \n ;Print time: {print_time} \n ;Filament used: {filament_amount}m {filament_weight}g \n ;Filament cost: {filament_cost} \n G28 X0 Y0 ;move X Y to endstops \n G28 Z0 ;move Z to endstops \n ; M190 S{material_bed_temperature} ;bed temp \n M107 ; switch fan off \n M109 S{material_print_temperature} ;extruder temp set \n G1 F3000 \n G1 Z10 \n G92 E0 ;zero the extruded length \n G1 F200 E1 ;extrude 1mm of feed stock \n G92 E0 ;zero the extruded length again \n G4 P7000 ; wait 7000ms \n M117 Printing... ;Put printing message on LCD screen" }, - "machine_depth": { - "default_value": 100 - }, - "machine_center_is_zero": { - "default_value": false - }, - "machine_head_polygon": { - "default_value": [ - [75, 18], - [18, 18], - [18, 35], - [75, 35] - ] - }, - "gantry_height": { - "default_value": 55 - }, - "machine_gcode_flavor": { - "default_value": "RepRap" - }, - "machine_start_gcode": { - "default_value": ";Sliced at: {day} {date} {time}\n;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density}\n;Print time: {print_time}\n;Filament used: {filament_amount}m {filament_weight}g\n;Filament cost: {filament_cost}\n;M190 S{print_bed_temperature} ;Uncomment to add your own bed temperature line\n;M109 S{print_temperature} ;Uncomment to add your own temperature line\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to max endstops\nG1 Z115.0 F{speed_travel} ;move th e platform up 20mm\nG28 Z0 ;move Z to max endstop\nG1 Z15.0 F{speed_travel} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{speed_travel}\nM301 H1 P26.38 I2.57 D67.78\n;Put printing message on LCD screen\nM117 Printing..." - }, - "machine_end_gcode": { - "default_value": ";End GCode\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nG28 Z0\nM84 ;steppers off\nG90 ;absolute positioning\n;{profile_string}" + "machine_end_gcode": + { + "default_value": ";End GCode\nM104 S0 ;extruder heater off \nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nG28 Z0\nM84 ;steppers off\nG90 ;absolute positioning\n;{profile_string}" } } } \ No newline at end of file diff --git a/resources/definitions/alyanx3dp.def.json b/resources/definitions/alyanx3dp.def.json new file mode 100644 index 0000000000..07e0a090a9 --- /dev/null +++ b/resources/definitions/alyanx3dp.def.json @@ -0,0 +1,50 @@ +{ + "version": 2, + "name": "ALYA NX", + "inherits": "fdmprinter", + "metadata": + { + "visible": true, + "author": "ALYA", + "manufacturer": "Kati Hal ARGE", + "category": "Other", + "file_formats": "text/x-gcode", + "platform": "alya_nx_platform.stl", + "platform_offset": [-104, 0, 93 ], + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla","tizyx_pla","tizyx_abs","tizyx_pla_bois" ], + "preferred_material": "generic_pla", + "has_machine_quality": true, + "has_materials": true, + "has_variants": false, + "supports_usb_connection": false, + "machine_extruder_trains": + { + "0": "alya3dp_extruder_0" + } + }, + + "overrides": { + "machine_name": { "default_value": "ALYA NX 3DP" }, + "machine_heated_bed": { "default_value": false }, + "machine_width": { "default_value": 180 }, + "machine_height": { "default_value": 170 }, + "machine_depth": { "default_value": 160 }, + "machine_center_is_zero": { "default_value": false }, + "gantry_height": { "value": "55"}, + "retraction_amount": { "default_value": 1.5 }, + "support_enable": { "default_value": true}, + "machine_head_with_fans_polygon": { + "default_value": [[75, 18],[18, 18],[18, 35],[75, 35]] + }, + "adhesion_type": {"options": {"raft": "Raft" ,"none": "None", "brim": "Brim"}, "default_value": "raft"}, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": + { + "default_value": ";Sliced at: {day} {date} {time} \n ;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density} \n ;Print time: {print_time} \n ;Filament used: {filament_amount}m {filament_weight}g \n ;Filament cost: {filament_cost} \n G28 X0 Y0 ;move X Y to endstops \n G28 Z0 ;move Z to endstops \n ; M190 S{material_bed_temperature} ;bed temp \n M107 ; switch fan off \n M109 S{material_print_temperature} ;extruder temp set \n G1 F3000 \n G1 Z10 \n G92 E0 ;zero the extruded length \n G1 F200 E1 ;extrude 1mm of feed stock \n G92 E0 ;zero the extruded length again \n G4 P7000 ; wait 7000ms \n M117 Printing... ;Put printing message on LCD screen" + }, + "machine_end_gcode": + { + "default_value": ";End GCode\nM104 S0 ;extruder heater off \nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nG28 Z0\nM84 ;steppers off\nG90 ;absolute positioning\n;{profile_string}" + } + } +} \ No newline at end of file diff --git a/resources/definitions/anet_a6.def.json b/resources/definitions/anet_a6.def.json new file mode 100644 index 0000000000..0f5384451e --- /dev/null +++ b/resources/definitions/anet_a6.def.json @@ -0,0 +1,45 @@ +{ + "version": 2, + "name": "Anet A6", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Mark", + "manufacturer": "Anet", + "file_formats": "text/x-gcode", + "platform": "aneta6_platform.stl", + "platform_offset": [0, -3.4, 0], + "machine_extruder_trains": + { + "0": "anet_a6_extruder_0" + } + }, + + "overrides": { + "machine_name": { "default_value": "Anet A6" }, + "machine_heated_bed": { + "default_value": true + }, + "machine_width": { + "default_value": 220 + }, + "machine_height": { + "default_value": 250 + }, + "machine_depth": { + "default_value": 220 + }, + "machine_center_is_zero": { + "default_value": false + }, + "gantry_height": { + "value": "55" + }, + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nM84 ;steppers off\nM0 S12 ;wait 12 seconds\nM17 ;turn steppers on\nG1 Z10.0 F300 ;move the platform down 10mm\nG92 E0 ;zero the extruded length\nG1 F200 E8 ;extrude 8mm of feed stock\nG92 E0 ;zero the extruded length again\nM0 S5 ;wait 5 seconds\nG1 F9000\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+4 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nG1 Y210 F9000 ;move out to get part off\nM84 ;steppers off\nG90 ;absolute positioning" + } + } +} diff --git a/resources/definitions/anycubic_4max.def.json b/resources/definitions/anycubic_4max.def.json index c14ce1ac31..05fffcb206 100644 --- a/resources/definitions/anycubic_4max.def.json +++ b/resources/definitions/anycubic_4max.def.json @@ -50,7 +50,7 @@ "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, - "gantry_height": { "default_value": 25.0 }, + "gantry_height": { "value": "25.0" }, "skin_overlap": { "value": "10" }, "acceleration_enabled": { "value": "True" }, @@ -83,6 +83,6 @@ "machine_gcode_flavor":{"default_value": "RepRap (Marlin/Sprinter)"}, "machine_start_gcode":{"default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F{speed_travel} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{speed_travel}\nM117 Printing...\nG5"}, - "machine_end_gcode":{"default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors\nM107\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle\nto release some of the pressure\nG1 Z+0.5 E-5 ;X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\nG28 X0 ;Y0 ;move X/Y to min endstops\nso the head is out of the way\nG1 Y180 F2000\nM84 ;steppers off\nG90\nM300 P300 S4000"} + "machine_end_gcode":{"default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors\nM107\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 ;X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\nG28 X0 ;Y0 ;move X/Y to min endstops, so the head is out of the way\nG1 Y180 F2000\nM84 ;steppers off\nG90\nM300 P300 S4000"} } } diff --git a/resources/definitions/anycubic_chiron.def.json b/resources/definitions/anycubic_chiron.def.json new file mode 100644 index 0000000000..1b18a936a7 --- /dev/null +++ b/resources/definitions/anycubic_chiron.def.json @@ -0,0 +1,80 @@ +{ + "version": 2, + "name": "Anycubic Chiron", + "inherits": "fdmprinter", + "metadata": + { + "visible": true, + "author": "Patrick Glatt", + "manufacturer": "Anycubic", + "category": "Other", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "platform": "anycubic_chiron_platform.obj", + "platform_texture": "anycubic-chiron.png", + "has_materials": true, + "preferred_material": "generic_pla", + "has_machine_quality": true, + "quality_definition": "anycubic_chiron", + "preferred_quality_type": "normal", + "machine_extruder_trains": + { + "0": "anycubic_chiron_extruder_0" + }, + "firmware_file": "MarlinChiron.hex" + }, + + "overrides": + { + "machine_name": + { + "default_value": "Anycubic Chiron" + }, + "machine_heated_bed": + { + "default_value": true + }, + "machine_width": + { + "default_value": 400 + }, + "machine_height": + { + "default_value": 450 + }, + "machine_depth": + { + "default_value": 400 + }, + "machine_center_is_zero": + { + "default_value": false + }, + "gantry_height": + { + "value": "35" + }, + "machine_head_with_fans_polygon": + { + "default_value": + [ + [-45, 50], + [-45, -45], + [45, 50], + [45, -45] + ] + }, + "machine_gcode_flavor": + { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": + { + "default_value": "M107 ;Start with the fan off\nG21 ;Set units to millimeters\nG91 ;Change to relative positioning mode for retract filament and nozzle lifting\nG1 F200 E-3 ;Retract 3mm filament for a clean start\nG92 E0 ;Zero the extruded length\nG1 F1000 Z5 ;Lift the nozzle 5mm before homing axes\nG90 ;Absolute positioning\nM82 ;Set extruder to absolute mode too\nG28 X0 Y0 ;First move X/Y to min endstops\nG28 Z0 ;Then move Z to min endstops\nG1 F1000 Z15 ;After homing lift the nozzle 15mm before start printing\n" + }, + "machine_end_gcode": + { + "default_value": "G91 ;Change to relative positioning mode for filament retraction and nozzle lifting\nG1 F200 E-4;Retract the filament a bit before lifting the nozzle\nG1 F1000 Z5;Lift nozzle 5mm\nG90 ;Change to absolute positioning mode to prepare for part rermoval\nG1 X0 Y400 ;Move the print to max y pos for part rermoval\nM104 S0 ; Turn off hotend\nM106 S0 ; Turn off cooling fan\nM140 S0 ; Turn off bed\nM84 ; Disable motors\n" + } + } +} diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json index 8a96d98023..18005f0e12 100644 --- a/resources/definitions/anycubic_i3_mega.def.json +++ b/resources/definitions/anycubic_i3_mega.def.json @@ -46,7 +46,7 @@ }, "gantry_height": { - "default_value": 0 + "value": "0" }, "machine_gcode_flavor": { @@ -54,11 +54,11 @@ }, "machine_start_gcode": { - "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F{speed_travel} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{speed_travel}\nM117 Printing...\nG5" + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F{speed_travel} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{speed_travel}\nG0 Y20 F{speed_travel}\nM117 Printing...\nG5" }, "machine_end_gcode": { - "default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors\nM107\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle\nto release some of the pressure\nG1 Z+0.5 E-5 ;X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\nG28 X0 ;Y0 ;move X/Y to min endstops\nso the head is out of the way\nG1 Y180 F2000\nM84 ;steppers off\nG90\nM300 P300 S4000" + "default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors\nM107\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 ;X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\nG28 X0 ;Y0 ;move X/Y to min endstops, so the head is out of the way\nG1 Y180 F2000\nM84 ;steppers off\nG90\nM300 P300 S4000" } } } diff --git a/resources/definitions/bfb.def.json b/resources/definitions/bfb.def.json index d1dfa9ef1b..e88c8c792b 100644 --- a/resources/definitions/bfb.def.json +++ b/resources/definitions/bfb.def.json @@ -15,26 +15,19 @@ }, "overrides": { - "speed_topbottom": { "default_value": 40 }, "speed_print": { "default_value": 40 }, "machine_extruder_count": { "default_value": 1 }, "prime_tower_size": { "default_value": 7.745966692414834 }, "machine_name": { "default_value": "BFB_Test" }, "machine_heated_bed": { "default_value": false }, - "speed_layer_0": { "default_value": 25 }, "machine_width": { "default_value": 275 }, "machine_gcode_flavor": { "default_value": "BFB" }, "machine_depth": { "default_value": 265 }, - "speed_infill": { "default_value": 30 }, "machine_center_is_zero": { "default_value": true }, "machine_height": { "default_value": 240 }, "layer_height": { "default_value": 0.25 }, - "material_print_temperature": { "default_value": 200 }, "retraction_amount": { "default_value": 0.05 }, - "speed_wall_0": { "default_value": 25 }, - "speed_travel": { "default_value": 50 }, "infill_sparse_density": { "default_value": 10 }, - "layer_height_0": { "default_value": 0.5 }, - "speed_wall_x": { "default_value": 20 } + "layer_height_0": { "default_value": 0.5 } } } diff --git a/resources/definitions/bibo2_dual.def.json b/resources/definitions/bibo2_dual.def.json index 1ae16a49b1..a644185915 100644 --- a/resources/definitions/bibo2_dual.def.json +++ b/resources/definitions/bibo2_dual.def.json @@ -1,11 +1,10 @@ { - "id": "BIBO2 dual", "version": 2, "name": "BIBO2 dual", "inherits": "fdmprinter", "metadata": { "visible": true, - "author": "na", + "author": "unknown", "manufacturer": "BIBO", "category": "Other", "file_formats": "text/x-gcode", @@ -64,7 +63,7 @@ ] }, "gantry_height": { - "default_value": 12 + "value": "12" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true @@ -78,14 +77,17 @@ "machine_end_gcode": { "default_value": ";End GCode\nM104 T0 S0 ;extruder heater off\nM104 T1 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91\nG1 Z1 F100 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-2 X-20 Y-20 F300 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, + "speed_print": { + "default_value": 40 + }, "machine_extruder_count": { "default_value": 2 }, "prime_tower_position_x": { - "default_value": 50 + "value": "50" }, "prime_tower_position_y": { - "default_value": 50 + "value": "50" } } } diff --git a/resources/definitions/bq_hephestos.def.json b/resources/definitions/bq_hephestos.def.json index be024cd6fa..d9e84dae87 100644 --- a/resources/definitions/bq_hephestos.def.json +++ b/resources/definitions/bq_hephestos.def.json @@ -54,33 +54,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 220 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/bq_hephestos_2.def.json b/resources/definitions/bq_hephestos_2.def.json index 90a86433fb..5c122eb9a4 100644 --- a/resources/definitions/bq_hephestos_2.def.json +++ b/resources/definitions/bq_hephestos_2.def.json @@ -24,26 +24,14 @@ "machine_height": { "default_value": 220 }, "machine_heated_bed": { "default_value": false }, "machine_center_is_zero": { "default_value": false }, - "material_print_temperature": { "default_value": 210 }, - "material_bed_temperature": { "default_value": 0 }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { "default_value": 3 }, "wall_thickness": { "default_value": 1.2 }, "top_bottom_thickness": { "default_value": 1.2 }, "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { "default_value": 15 }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 160 }, - "speed_layer_0": { "default_value": 30 }, - "speed_wall_x": { "default_value": 35 }, - "speed_wall_0": { "default_value": 30 }, - "speed_infill": { "default_value": 80 }, - "speed_topbottom": { "default_value": 35 }, - "skirt_brim_speed": { "default_value": 35 }, "skirt_line_count": { "default_value": 4 }, "skirt_brim_minimal_length": { "default_value": 30 }, - "skirt_gap": { "default_value": 6 }, - "cool_fan_full_at_height": { "default_value": 0.4 } + "skirt_gap": { "default_value": 6 } } } diff --git a/resources/definitions/bq_hephestos_xl.def.json b/resources/definitions/bq_hephestos_xl.def.json index a8d63cbb41..16d0953bf1 100644 --- a/resources/definitions/bq_hephestos_xl.def.json +++ b/resources/definitions/bq_hephestos_xl.def.json @@ -53,33 +53,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 220 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/bq_witbox.def.json b/resources/definitions/bq_witbox.def.json index b96da6179c..fce2af9f97 100644 --- a/resources/definitions/bq_witbox.def.json +++ b/resources/definitions/bq_witbox.def.json @@ -54,33 +54,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 220 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/bq_witbox_2.def.json b/resources/definitions/bq_witbox_2.def.json index 7412647852..d1114aafd6 100644 --- a/resources/definitions/bq_witbox_2.def.json +++ b/resources/definitions/bq_witbox_2.def.json @@ -41,21 +41,12 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 0 - }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { - "default_value": 3 - }, "wall_thickness": { "default_value": 1.2 }, @@ -65,33 +56,9 @@ "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { - "default_value": 15 - }, "speed_print": { "default_value": 60 }, - "speed_travel": { - "default_value": 160 - }, - "speed_layer_0": { - "default_value": 30 - }, - "speed_wall_x": { - "default_value": 35 - }, - "speed_wall_0": { - "default_value": 30 - }, - "speed_infill": { - "default_value": 80 - }, - "speed_topbottom": { - "default_value": 35 - }, - "skirt_brim_speed": { - "default_value": 35 - }, "skirt_line_count": { "default_value": 4 }, @@ -101,9 +68,6 @@ "skirt_gap": { "default_value": 6 }, - "cool_fan_full_at_height": { - "default_value": 0.4 - }, "support_enable": { "default_value": false } diff --git a/resources/definitions/builder_premium_large.def.json b/resources/definitions/builder_premium_large.def.json index 2e0cd4f839..d19382a591 100644 --- a/resources/definitions/builder_premium_large.def.json +++ b/resources/definitions/builder_premium_large.def.json @@ -35,8 +35,6 @@ "material_standby_temperature": { "value": "material_print_temperature" }, "switch_extruder_retraction_speeds": {"default_value": 15 }, - "switch_extruder_retraction_speed": {"default_value": 15 }, - "switch_extruder_prime_speed": {"default_value": 15 }, "switch_extruder_retraction_amount": {"value": 1 }, "speed_travel": { "value": "100" }, @@ -50,8 +48,8 @@ "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, "speed_wall_x": { "value": "speed_wall" }, - "prime_tower_position_x": { "default_value": 175 }, - "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_position_x": { "value": "175" }, + "prime_tower_position_y": { "value": "178" }, "prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_min_volume": { "default_value": 50 }, @@ -85,15 +83,13 @@ "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, - "retraction_retract_speed": { "default_value": 15 }, - "retraction_prime_speed": { "default_value": 15 }, "travel_retract_before_outer_wall": { "default_value": true }, "skin_overlap": { "value": "15" }, "adhesion_type": { "default_value": "skirt" }, "machine_nozzle_heat_up_speed": { "default_value": 2 }, "machine_nozzle_cool_down_speed": { "default_value": 2 }, - "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, - "gantry_height": { "default_value": 55 }, + "machine_head_with_fans_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "gantry_height": { "value": "55" }, "machine_max_feedrate_x": { "default_value": 300 }, "machine_max_feedrate_y": { "default_value": 300 }, "machine_max_feedrate_z": { "default_value": 40 }, diff --git a/resources/definitions/builder_premium_medium.def.json b/resources/definitions/builder_premium_medium.def.json index 58e7c18ed8..e5b8f1785c 100644 --- a/resources/definitions/builder_premium_medium.def.json +++ b/resources/definitions/builder_premium_medium.def.json @@ -35,8 +35,6 @@ "material_standby_temperature": { "value": "material_print_temperature" }, "switch_extruder_retraction_speeds": {"default_value": 15 }, - "switch_extruder_retraction_speed": {"default_value": 15 }, - "switch_extruder_prime_speed": {"default_value": 15 }, "switch_extruder_retraction_amount": {"value": 1 }, "speed_travel": { "value": "100" }, @@ -50,8 +48,8 @@ "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, "speed_wall_x": { "value": "speed_wall" }, - "prime_tower_position_x": { "default_value": 175 }, - "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_position_x": { "value": "175" }, + "prime_tower_position_y": { "value": "178" }, "prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_min_volume": { "default_value": 50 }, @@ -85,15 +83,13 @@ "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, - "retraction_retract_speed": { "default_value": 15 }, - "retraction_prime_speed": { "default_value": 15 }, "travel_retract_before_outer_wall": { "default_value": true }, "skin_overlap": { "value": "15" }, "adhesion_type": { "default_value": "skirt" }, "machine_nozzle_heat_up_speed": { "default_value": 2 }, "machine_nozzle_cool_down_speed": { "default_value": 2 }, - "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, - "gantry_height": { "default_value": 55 }, + "machine_head_with_fans_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "gantry_height": { "value": "55" }, "machine_max_feedrate_x": { "default_value": 300 }, "machine_max_feedrate_y": { "default_value": 300 }, "machine_max_feedrate_z": { "default_value": 40 }, diff --git a/resources/definitions/builder_premium_small.def.json b/resources/definitions/builder_premium_small.def.json index 89e172592c..4bcbd7d526 100644 --- a/resources/definitions/builder_premium_small.def.json +++ b/resources/definitions/builder_premium_small.def.json @@ -34,8 +34,6 @@ "material_standby_temperature": { "value": "material_print_temperature" }, "switch_extruder_retraction_speeds": {"default_value": 15 }, - "switch_extruder_retraction_speed": {"default_value": 15 }, - "switch_extruder_prime_speed": {"default_value": 15 }, "switch_extruder_retraction_amount": {"value": 1 }, "speed_travel": { "value": "100" }, @@ -49,8 +47,8 @@ "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, "speed_wall_x": { "value": "speed_wall" }, - "prime_tower_position_x": { "default_value": 175 }, - "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_position_x": { "value": "175" }, + "prime_tower_position_y": { "value": "178" }, "prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_min_volume": { "default_value": 50 }, @@ -84,15 +82,13 @@ "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, - "retraction_retract_speed": { "default_value": 15 }, - "retraction_prime_speed": { "default_value": 15 }, "travel_retract_before_outer_wall": { "default_value": true }, "skin_overlap": { "value": "15" }, "adhesion_type": { "default_value": "skirt" }, "machine_nozzle_heat_up_speed": { "default_value": 2 }, "machine_nozzle_cool_down_speed": { "default_value": 2 }, - "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, - "gantry_height": { "default_value": 55 }, + "machine_head_with_fans_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "gantry_height": { "value": "55" }, "machine_max_feedrate_x": { "default_value": 300 }, "machine_max_feedrate_y": { "default_value": 300 }, "machine_max_feedrate_z": { "default_value": 40 }, diff --git a/resources/definitions/cartesio.def.json b/resources/definitions/cartesio.def.json index 9c7a95cceb..e7a005682d 100644 --- a/resources/definitions/cartesio.def.json +++ b/resources/definitions/cartesio.def.json @@ -10,7 +10,6 @@ "has_machine_quality": true, "has_materials": true, - "has_machine_materials": true, "has_variants": true, "variants_name": "Tool", @@ -35,7 +34,7 @@ "machine_extruder_count": { "default_value": 2 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, - "gantry_height": { "default_value": 35 }, + "gantry_height": { "value": "35" }, "machine_height": { "default_value": 400 }, "machine_depth": { "default_value": 270 }, "machine_width": { "default_value": 430 }, @@ -45,8 +44,8 @@ "prime_tower_enable": { "default_value": false }, "prime_tower_min_volume": { "value": "0.7" }, "prime_tower_size": { "value": 24.0 }, - "prime_tower_position_x": { "value": 125 }, - "prime_tower_position_y": { "value": 70 }, + "prime_tower_position_x": { "value": "125" }, + "prime_tower_position_y": { "value": "70" }, "prime_blob_enable": { "default_value": false }, "machine_max_feedrate_z": { "default_value": 20 }, "machine_disallowed_areas": { "default_value": [ diff --git a/resources/definitions/cocoon_create_modelmaker.def.json b/resources/definitions/cocoon_create_modelmaker.def.json index 22aa75d09e..b738dc64ff 100644 --- a/resources/definitions/cocoon_create_modelmaker.def.json +++ b/resources/definitions/cocoon_create_modelmaker.def.json @@ -39,7 +39,7 @@ "default_value": false }, "gantry_height": { - "default_value": 10 + "value": "10" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" @@ -47,9 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 220 - }, "layer_height": { "default_value": 0.10 }, @@ -65,21 +62,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 70 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/creality_base.def.json b/resources/definitions/creality_base.def.json new file mode 100644 index 0000000000..7e91fb4989 --- /dev/null +++ b/resources/definitions/creality_base.def.json @@ -0,0 +1,267 @@ +{ + "name": "Creawsome Base Printer", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": false, + "author": "trouch.com", + "manufacturer": "Creality3D", + "file_formats": "text/x-gcode", + "first_start_actions": ["MachineSettingsAction"], + + "machine_extruder_trains": { + "0": "creality_base_extruder_0" + }, + + "has_materials": true, + "has_variants": true, + "has_machine_quality": true, + "variants_name": "Nozzle Size", + + "preferred_variant_name": "0.4mm Nozzle", + "preferred_quality_type": "standard", + "preferred_material": "generic_pla", + "exclude_materials": [ + "Vertex_Delta_ABS", + "Vertex_Delta_PET", + "Vertex_Delta_PLA", + "Vertex_Delta_TPU", + "chromatik_pla", + "dsm_arnitel2045_175", + "dsm_novamid1070_175", + "fabtotum_abs", + "fabtotum_nylon", + "fabtotum_pla", + "fabtotum_tpu", + "fiberlogy_hd_pla", + "filo3d_pla", + "filo3d_pla_green", + "filo3d_pla_red", + "generic_abs", + "generic_bam", + "generic_cffcpe", + "generic_cffpa", + "generic_cpe", + "generic_cpe_plus", + "generic_gffcpe", + "generic_gffpa", + "generic_hips", + "generic_nylon", + "generic_pc", + "generic_petg", + "generic_pla", + "generic_pp", + "generic_pva", + "generic_tough_pla", + "generic_tpu", + "imade3d_petg_green", + "imade3d_petg_pink", + "imade3d_pla_green", + "imade3d_pla_pink", + "innofill_innoflex60_175", + "octofiber_pla", + "polyflex_pla", + "polymax_pla", + "polyplus_pla", + "polywood_pla", + "structur3d_dap100silicone", + "tizyx_abs", + "tizyx_pla", + "tizyx_pla_bois", + "ultimaker_abs_black", + "ultimaker_abs_blue", + "ultimaker_abs_green", + "ultimaker_abs_grey", + "ultimaker_abs_orange", + "ultimaker_abs_pearl-gold", + "ultimaker_abs_red", + "ultimaker_abs_silver-metallic", + "ultimaker_abs_white", + "ultimaker_abs_yellow", + "ultimaker_bam", + "ultimaker_cpe_black", + "ultimaker_cpe_blue", + "ultimaker_cpe_dark-grey", + "ultimaker_cpe_green", + "ultimaker_cpe_light-grey", + "ultimaker_cpe_plus_black", + "ultimaker_cpe_plus_transparent", + "ultimaker_cpe_plus_white", + "ultimaker_cpe_red", + "ultimaker_cpe_transparent", + "ultimaker_cpe_white", + "ultimaker_cpe_yellow", + "ultimaker_nylon_black", + "ultimaker_nylon_transparent", + "ultimaker_pc_black", + "ultimaker_pc_transparent", + "ultimaker_pc_white", + "ultimaker_pla_black", + "ultimaker_pla_blue", + "ultimaker_pla_green", + "ultimaker_pla_magenta", + "ultimaker_pla_orange", + "ultimaker_pla_pearl-white", + "ultimaker_pla_red", + "ultimaker_pla_silver-metallic", + "ultimaker_pla_transparent", + "ultimaker_pla_white", + "ultimaker_pla_yellow", + "ultimaker_pp_transparent", + "ultimaker_pva", + "ultimaker_tough_pla_black", + "ultimaker_tough_pla_green", + "ultimaker_tough_pla_red", + "ultimaker_tough_pla_white", + "ultimaker_tpu_black", + "ultimaker_tpu_blue", + "ultimaker_tpu_red", + "ultimaker_tpu_white", + "verbatim_bvoh_175", + "zyyx_pro_flex", + "zyyx_pro_pla" + ] + }, + "overrides": { + "machine_name": { "default_value": "Creawsome Base Printer" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\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 Z2.0 F3000 ;Move Z Axis up\n" }, + "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positionning\n\nG1 X0 Y{machine_depth} ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" }, + + "machine_max_feedrate_x": { "value": 500 }, + "machine_max_feedrate_y": { "value": 500 }, + "machine_max_feedrate_z": { "value": 10 }, + "machine_max_feedrate_e": { "value": 50 }, + + "machine_max_acceleration_x": { "value": 500 }, + "machine_max_acceleration_y": { "value": 500 }, + "machine_max_acceleration_z": { "value": 100 }, + "machine_max_acceleration_e": { "value": 5000 }, + "machine_acceleration": { "value": 500 }, + + "machine_max_jerk_xy": { "value": 10 }, + "machine_max_jerk_z": { "value": 0.4 }, + "machine_max_jerk_e": { "value": 5 }, + + "machine_heated_bed": { "default_value": true }, + + "material_diameter": { "default_value": 1.75 }, + + "acceleration_print": { "value": 500 }, + "acceleration_travel": { "value": 500 }, + "acceleration_travel_layer_0": { "value": "acceleration_travel" }, + "acceleration_roofing": { "enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0" }, + + "jerk_print": { "value": 8 }, + "jerk_travel": { "value": "jerk_print" }, + "jerk_travel_layer_0": { "value": "jerk_travel" }, + + "acceleration_enabled": { "value": false }, + "jerk_enabled": { "value": false }, + + "speed_print": { "value": 50.0 } , + "speed_infill": { "value": "speed_print" }, + "speed_wall": { "value": "speed_print / 2" }, + "speed_wall_0": { "value": "speed_wall" }, + "speed_wall_x": { "value": "speed_wall" }, + "speed_topbottom": { "value": "speed_print / 2" }, + "speed_roofing": { "value": "speed_topbottom" }, + "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, + "speed_layer_0": { "value": 20.0 }, + "speed_print_layer_0": { "value": "speed_layer_0" }, + "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_z_hop": { "value": 5 }, + + "skirt_brim_speed": { "value": "speed_layer_0" }, + + "line_width": { "value": "machine_nozzle_size" }, + + "optimize_wall_printing_order": { "value": "True" }, + + "material_initial_print_temperature": { "value": "material_print_temperature" }, + "material_final_print_temperature": { "value": "material_print_temperature" }, + "material_flow": { "value": 100 }, + "travel_compensate_overlapping_walls_0_enabled": { "value": "False" }, + + "z_seam_type": { "value": "'back'" }, + "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, + + "infill_sparse_density": { "value": "20" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, + "infill_before_walls": { "value": false }, + "infill_overlap": { "value": 30.0 }, + "skin_overlap": { "value": 10.0 }, + "infill_wipe_dist": { "value": 0.0 }, + "wall_0_wipe_dist": { "value": 0.0 }, + + "fill_perimeter_gaps": { "value": "'everywhere'" }, + "fill_outline_gaps": { "value": false }, + "filter_out_tiny_gaps": { "value": false }, + + "retraction_speed": { + "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", + "maximum_value": 200 + }, + "retraction_retract_speed": { + "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", + "maximum_value": 200 + }, + "retraction_prime_speed": { + "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", + "maximum_value": 200 + }, + + "retraction_hop_enabled": { "value": "False" }, + "retraction_hop": { "value": 0.2 }, + "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" }, + "retraction_combing_max_distance": { "value": 30 }, + "travel_avoid_other_parts": { "value": true }, + "travel_avoid_supports": { "value": true }, + "travel_retract_before_outer_wall": { "value": true }, + + "retraction_enable": { "value": true }, + "retraction_count_max": { "value": 100 }, + "retraction_extrusion_window": { "value": 10 }, + "retraction_min_travel": { "value": 1.5 }, + + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, + "cool_fan_enabled": { "value": true }, + "cool_min_layer_time": { "value": 10 }, + + "adhesion_type": { "value": "'skirt'" }, + "brim_replaces_support": { "value": false }, + "skirt_gap": { "value": 10.0 }, + "skirt_line_count": { "value": 3 }, + + "adaptive_layer_height_variation": { "value": 0.04 }, + "adaptive_layer_height_variation_step": { "value": 0.04 }, + + "meshfix_maximum_resolution": { "value": "0.05" }, + "meshfix_maximum_travel_resolution": { "value": "meshfix_maximum_resolution" }, + + "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" }, + "support_pattern": { "value": "'zigzag'" }, + "support_infill_rate": { "value": "0 if support_tree_enable else 20" }, + "support_use_towers": { "value": false }, + "support_xy_distance": { "value": "wall_line_width_0 * 2" }, + "support_xy_distance_overhang": { "value": "wall_line_width_0" }, + "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" }, + "support_xy_overrides_z": { "value": "'xy_overrides_z'" }, + "support_wall_count": { "value": 1 }, + "support_brim_enable": { "value": true }, + "support_brim_width": { "value": 4 }, + + "support_interface_enable": { "value": true }, + "support_interface_height": { "value": "layer_height * 4" }, + "support_interface_density": { "value": 33.333 }, + "support_interface_pattern": { "value": "'grid'" }, + "support_interface_skip_height": { "value": 0.2 }, + "minimum_support_area": { "value": 5 }, + "minimum_interface_area": { "value": 10 }, + "top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" }, + "wall_thickness": {"value": "line_width * 2" } + + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr-x.def.json b/resources/definitions/creality_cr-x.def.json index 94ac20cbb5..13409a7212 100644 --- a/resources/definitions/creality_cr-x.def.json +++ b/resources/definitions/creality_cr-x.def.json @@ -1,5 +1,4 @@ { - "id": "CR-X", "version": 2, "name": "Creality CR-X", "inherits": "fdmprinter", @@ -30,9 +29,8 @@ "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 70}, "adhesion_type": { "default_value": "skirt" }, - "gantry_height": { "default_value": 30 }, + "gantry_height": { "value": "30" }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 120 }, "machine_max_acceleration_x": { "default_value": 500 }, "machine_max_acceleration_y": { "default_value": 500 }, "machine_max_acceleration_z": { "default_value": 100 }, @@ -43,9 +41,7 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { "default_value": "G21 ;metric values\nG28 ;home all\nG90 ;absolute positioning\nM107 ;start with the fan off\nG1 F2400 Z15.0 ;raise the nozzle 15mm\nM109 S{material_print_temperature} ;Set Extruder Temperature and Wait\nM190 S{material_bed_temperature}; Wait for bed temperature to reach target temp\nT0 ;Switch to Extruder 1\nG1 F3000 X5 Y10 Z0.2 ;move to prime start position\nG92 E0 ;reset extrusion distance\nG1 F600 X160 E15 ;prime nozzle in a line\nG1 F5000 X180 ;quick wipe\nG92 E0 ;reset extrusion distance" }, "machine_end_gcode": { "default_value": "M104 S0 ;hotend off\nM140 S0 ;bed off\nG92 E0\nG1 F2000 E-100 ;retract filament 100mm\nG92 E0\nG1 F3000 X0 Y270 ;move bed for easy part removal\nM84 ;disable steppers" }, - "material_print_temperature": { "default_value": 200 }, "wall_thickness": { "default_value": 1 }, - "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { "default_value": 1 } + "top_bottom_thickness": { "default_value": 1 } } } diff --git a/resources/definitions/creality_cr10.def.json b/resources/definitions/creality_cr10.def.json index fb63867163..85e0f0a435 100644 --- a/resources/definitions/creality_cr10.def.json +++ b/resources/definitions/creality_cr10.def.json @@ -1,95 +1,25 @@ { "name": "Creality CR-10", "version": 2, - "inherits": "fdmprinter", - "metadata": { - "visible": true, - "author": "Michael Wildermuth", - "manufacturer": "Creality3D", - "file_formats": "text/x-gcode", - "preferred_quality_type": "draft", - "machine_extruder_trains": - { - "0": "creality_cr10_extruder_0" - } - }, + "inherits": "creality_base", "overrides": { - "machine_width": { - "default_value": 300 - }, - "machine_height": { - "default_value": 400 - }, - "machine_depth": { - "default_value": 300 - }, - "machine_head_polygon": { - "default_value": [ - [-30, 34], - [-30, -32], - [30, -32], - [30, 34] + "machine_name": { "default_value": "Creality CR-10" }, + "machine_width": { "default_value": 300 }, + "machine_depth": { "default_value": 300 }, + "machine_height": { "default_value": 400 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] ] }, - "layer_height_0": { - "default_value": 0.2 - }, - "top_bottom_thickness": { - "default_value": 0.6 - }, - "top_bottom_pattern_0": { - "default_value": "concentric" - }, - "infill_pattern": { - "value": "'triangles'" - }, - "retraction_enable": { - "default_value": true - }, - "retraction_amount": { - "default_value": 5 - }, - "retraction_speed": { - "default_value": 40 - }, - "cool_min_layer_time": { - "default_value": 10 - }, - "adhesion_type": { - "default_value": "skirt" - }, - "skirt_line_count": { - "default_value": 4 - }, - "skirt_gap": { - "default_value": 5 - }, - "machine_end_gcode": { - "default_value": "G91\nG1 F1800 E-3\nG1 F3000 Z10\nG90\nG28 X0 Y0 ; home x and y axis\nM106 S0 ; turn off cooling fan\nM104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors" - }, - "machine_heated_bed": { - "default_value": true - }, - "gantry_height": { - "default_value": 30 - }, - "acceleration_enabled": { - "default_value": true - }, - "acceleration_print": { - "default_value": 500 - }, - "acceleration_travel": { - "default_value": 500 - }, - "jerk_enabled": { - "default_value": true - }, - "jerk_print": { - "default_value": 20 - }, - "jerk_travel": { - "default_value": 20 - } + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true } } \ No newline at end of file diff --git a/resources/definitions/creality_cr10max.def.json b/resources/definitions/creality_cr10max.def.json new file mode 100644 index 0000000000..a7e40d5bfc --- /dev/null +++ b/resources/definitions/creality_cr10max.def.json @@ -0,0 +1,26 @@ +{ + "name": "Creality CR-10 Max", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality CR-10 Max" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\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 Z2.0 F3000 ;Move Z Axis up\n"}, + "machine_width": { "default_value": 450 }, + "machine_depth": { "default_value": 450 }, + "machine_height": { "default_value": 470 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-44, 34], + [-44, -34], + [38, -34], + [38, 34] + ] + }, + + "gantry_height": { "value": 30 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr10mini.def.json b/resources/definitions/creality_cr10mini.def.json new file mode 100644 index 0000000000..621be5f0f3 --- /dev/null +++ b/resources/definitions/creality_cr10mini.def.json @@ -0,0 +1,25 @@ +{ + "name": "Creality CR-10 Mini", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality CR-10 Mini" }, + "machine_width": { "default_value": 300 }, + "machine_depth": { "default_value": 220 }, + "machine_height": { "default_value": 300 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr10s.def.json b/resources/definitions/creality_cr10s.def.json index c368269a46..9884b95cb4 100644 --- a/resources/definitions/creality_cr10s.def.json +++ b/resources/definitions/creality_cr10s.def.json @@ -1,5 +1,11 @@ { "name": "Creality CR-10S", "version": 2, - "inherits": "creality_cr10" + "inherits": "creality_cr10", + "overrides": { + "machine_name": { "default_value": "Creality CR-10S" } + }, + "metadata": { + "quality_definition": "creality_base" + } } \ No newline at end of file diff --git a/resources/definitions/creality_cr10s4.def.json b/resources/definitions/creality_cr10s4.def.json index 7145083674..ccecd41a1d 100644 --- a/resources/definitions/creality_cr10s4.def.json +++ b/resources/definitions/creality_cr10s4.def.json @@ -1,26 +1,25 @@ { - "name": "Creality CR-10 S4", + "name": "Creality CR-10S4", "version": 2, - "inherits": "creality_cr10", - "metadata": { - "visible": true, - "author": "Michael Wildermuth", - "manufacturer": "Creality3D", - "file_formats": "text/x-gcode", - "machine_extruder_trains": - { - "0": "creality_cr10s4_extruder_0" - } - }, + "inherits": "creality_base", "overrides": { - "machine_width": { - "default_value": 400 + "machine_name": { "default_value": "Creality CR-10S4" }, + "machine_width": { "default_value": 400 }, + "machine_depth": { "default_value": 400 }, + "machine_height": { "default_value": 400 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] }, - "machine_height": { - "default_value": 400 - }, - "machine_depth": { - "default_value": 400 - } + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true } } \ No newline at end of file diff --git a/resources/definitions/creality_cr10s5.def.json b/resources/definitions/creality_cr10s5.def.json index b082894a16..105e1d0458 100644 --- a/resources/definitions/creality_cr10s5.def.json +++ b/resources/definitions/creality_cr10s5.def.json @@ -1,26 +1,25 @@ { - "name": "Creality CR-10 S5", + "name": "Creality CR-10S5", "version": 2, - "inherits": "creality_cr10", - "metadata": { - "visible": true, - "author": "Michael Wildermuth", - "manufacturer": "Creality3D", - "file_formats": "text/x-gcode", - "machine_extruder_trains": - { - "0": "creality_cr10s5_extruder_0" - } - }, + "inherits": "creality_base", "overrides": { - "machine_width": { - "default_value": 500 + "machine_name": { "default_value": "Creality CR-10S5" }, + "machine_width": { "default_value": 500 }, + "machine_depth": { "default_value": 500 }, + "machine_height": { "default_value": 500 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] }, - "machine_height": { - "default_value": 500 - }, - "machine_depth": { - "default_value": 500 - } + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true } } \ No newline at end of file diff --git a/resources/definitions/creality_cr10spro.def.json b/resources/definitions/creality_cr10spro.def.json new file mode 100644 index 0000000000..28c8dda0a5 --- /dev/null +++ b/resources/definitions/creality_cr10spro.def.json @@ -0,0 +1,24 @@ +{ + "name": "Creality CR-10S Pro", + "version": 2, + "inherits": "creality_cr10", + "overrides": { + "machine_name": { "default_value": "Creality CR-10S Pro" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\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 Z2.0 F3000 ;Move Z Axis up\n"}, + "machine_head_with_fans_polygon": { "default_value": [ + [-44, 34], + [-44, -34], + [38, -34], + [38, 34] + ] + }, + + "gantry_height": { "value": 30 } + + }, + "metadata": { + "quality_definition": "creality_base", + "platform": "creality_cr10spro.stl", + "platform_offset": [ -150, 0, 150] + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr20.def.json b/resources/definitions/creality_cr20.def.json new file mode 100644 index 0000000000..b18c2709e6 --- /dev/null +++ b/resources/definitions/creality_cr20.def.json @@ -0,0 +1,25 @@ +{ + "name": "Creality CR-20", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality CR-20" }, + "machine_width": { "default_value": 220 }, + "machine_depth": { "default_value": 220 }, + "machine_height": { "default_value": 250 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr20pro.def.json b/resources/definitions/creality_cr20pro.def.json new file mode 100644 index 0000000000..4e676bcb74 --- /dev/null +++ b/resources/definitions/creality_cr20pro.def.json @@ -0,0 +1,13 @@ +{ + "name": "Creality CR-20 Pro", + "version": 2, + "inherits": "creality_cr20", + "overrides": { + "machine_name": { "default_value": "Creality CR-20 Pro" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\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 Z2.0 F3000 ;Move Z Axis up\n"} + + }, + "metadata": { + "quality_definition": "creality_base" + } +} \ No newline at end of file diff --git a/resources/definitions/creality_ender2.def.json b/resources/definitions/creality_ender2.def.json new file mode 100644 index 0000000000..2a5e14c828 --- /dev/null +++ b/resources/definitions/creality_ender2.def.json @@ -0,0 +1,26 @@ +{ + "name": "Creality Ender-2", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality Ender-2" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y100.0 Z0.28 F1500.0 E8 ;Draw the first line\nG1 X10.4 Y100.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E15 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"}, + "machine_width": { "default_value": 150 }, + "machine_depth": { "default_value": 150 }, + "machine_height": { "default_value": 200 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_ender3.def.json b/resources/definitions/creality_ender3.def.json old mode 100755 new mode 100644 index 08d8e92b72..37df844560 --- a/resources/definitions/creality_ender3.def.json +++ b/resources/definitions/creality_ender3.def.json @@ -1,96 +1,33 @@ { "name": "Creality Ender-3", "version": 2, - "inherits": "fdmprinter", + "inherits": "creality_base", "metadata": { + "quality_definition": "creality_base", "visible": true, - "author": "Sacha Telgenhof", - "manufacturer": "Creality3D", - "file_formats": "text/x-gcode", - "platform": "creality_ender3_platform.stl", - "preferred_quality_type": "draft", - "machine_extruder_trains": - { - "0": "creality_ender3_extruder_0" - } + "platform": "creality_ender3.stl" }, "overrides": { - "machine_name": { - "default_value": "Creality Ender-3" - }, - "machine_width": { - "default_value": 235 - }, - "machine_height": { - "default_value": 250 - }, - "machine_depth": { - "default_value": 235 - }, - "machine_heated_bed": { - "default_value": true - }, - "gantry_height": { - "default_value": 30 - }, - "machine_head_polygon": { + "machine_name": { "default_value": "Creality Ender-3" }, + "machine_width": { "default_value": 235 }, + "machine_depth": { "default_value": 235 }, + "machine_height": { "default_value": 250 }, + "machine_disallowed_areas": { "default_value": [ - [-30, 34], - [-30, -32], - [30, -32], - [30, 34] + [[-117.5, 117.5], [-117.5, 108], [117.5, 108], [117.5, 117.5]], + [[-117.5, -108], [-117.5, -117.5], [117.5, -117.5], [117.5, -108]] + ]}, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] ] }, - "material_diameter": { - "default_value": 1.75 - }, - "acceleration_enabled": { - "default_value": true - }, - "acceleration_print": { - "default_value": 500 - }, - "acceleration_travel": { - "default_value": 500 - }, - "jerk_enabled": { - "default_value": true - }, - "jerk_travel": { - "default_value": 20 - }, - "layer_height": { - "default_value": 0.10 - }, - "layer_height_0": { - "default_value": 0.2 - }, - "adhesion_type": { - "default_value": "skirt" - }, - "top_bottom_thickness": { - "default_value": 0.6 - }, - "retraction_amount": { - "default_value": 5 - }, - "retraction_speed": { - "default_value": 40 - }, - "cool_min_layer_time": { - "default_value": 10 - }, - "skirt_line_count": { - "default_value": 4 - }, - "skirt_gap": { - "default_value": 5 - }, "machine_start_gcode": { - "default_value": "; Ender 3 Custom Start G-code\nG28 ; Home all axes\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\n; End of custom start GCode" + "default_value": "; Ender 3 Custom Start G-code\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\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": { - "default_value": "; Ender 3 Custom End G-code\nG4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG1 F1800 E-3 ; Retract filament 3 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM84 ; Disable stepper motors\n; End of custom end GCode" - } + + "gantry_height": { "value": 25 } } } diff --git a/resources/definitions/creality_ender4.def.json b/resources/definitions/creality_ender4.def.json new file mode 100644 index 0000000000..9c13797c92 --- /dev/null +++ b/resources/definitions/creality_ender4.def.json @@ -0,0 +1,27 @@ +{ + "name": "Creality Ender-4", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality Ender-4" }, + "machine_width": { "default_value": 452 }, + "machine_depth": { "default_value": 468 }, + "machine_height": { "default_value": 482 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 }, + + "speed_print": { "value": 80.0 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_ender5.def.json b/resources/definitions/creality_ender5.def.json new file mode 100644 index 0000000000..1b4be4d71f --- /dev/null +++ b/resources/definitions/creality_ender5.def.json @@ -0,0 +1,28 @@ +{ + "name": "Creality Ender-5", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality Ender-5" }, + "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positionning\n\nG1 X0 Y0 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" }, + "machine_width": { "default_value": 220 }, + "machine_depth": { "default_value": 220 }, + "machine_height": { "default_value": 300 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 }, + + "speed_print": { "value": 80.0 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_ender5plus.def.json b/resources/definitions/creality_ender5plus.def.json new file mode 100644 index 0000000000..48ebad61ea --- /dev/null +++ b/resources/definitions/creality_ender5plus.def.json @@ -0,0 +1,28 @@ +{ + "name": "Creality Ender-5 Plus", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality Ender-5 Plus" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\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 Z2.0 F3000 ;Move Z Axis up\n"}, + "machine_width": { "default_value": 350 }, + "machine_depth": { "default_value": 350 }, + "machine_height": { "default_value": 400 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 }, + + "speed_print": { "value": 80.0 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creatable_d3.def.json b/resources/definitions/creatable_d3.def.json index 3fb1205ead..f621bcbe97 100644 --- a/resources/definitions/creatable_d3.def.json +++ b/resources/definitions/creatable_d3.def.json @@ -24,17 +24,15 @@ "machine_depth": { "default_value": 250 }, "machine_heated_bed": { "default_value": true }, "machine_shape": { "default_value": "elliptic" }, - "machine_max_feedrate_z": { "default_value": 300 }, - "gantry_height": {"default_value": 43}, + "machine_max_feedrate_z": { "default_value": 300 }, + "gantry_height": {"value": "43"}, "layer_height": { "default_value": 0.1 }, - "relative_extrusion": { "default_value": false }, + "relative_extrusion": { "value": "False" }, "retraction_combing": { "default_value": "off" }, - "retraction_hop_enabled": { "default_value": true }, + "retraction_hop_enabled": { "default_value": true }, "retraction_hop_only_when_collides": { "default_value": false }, - "retraction_retract_speed": { "default_value": 100 }, "retraction_speed": { "default_value": 100 }, "retraction_amount": { "default_value": 4.5 }, - "retraction_prime_speed": { "default_value": 45 }, "machine_start_gcode": { "default_value": "G21\nG90\nM82\nM106 S255\nG28\nG92 E0\nG1 Z100 F5000\nM190 S50\nM109 S200\nG1 X-135\nG1 Z0.3\nG92 E-32\nG1 E0 F1000\nG1 E50 F200\nG1 F1000\nG1 X-125\nG92 E0" }, diff --git a/resources/definitions/cubicon_3dp_110f.def.json b/resources/definitions/cubicon_3dp_110f.def.json index 168b57cd66..eecfdd5911 100644 --- a/resources/definitions/cubicon_3dp_110f.def.json +++ b/resources/definitions/cubicon_3dp_110f.def.json @@ -1,5 +1,4 @@ { - "id": "3DP-110F", "version": 2, "name": "Cubicon Single", "inherits": "cubicon_common", diff --git a/resources/definitions/cubicon_3dp_210f.def.json b/resources/definitions/cubicon_3dp_210f.def.json index cc99899f92..5d8ff78487 100644 --- a/resources/definitions/cubicon_3dp_210f.def.json +++ b/resources/definitions/cubicon_3dp_210f.def.json @@ -1,5 +1,4 @@ { - "id": "3DP-210F", "version": 2, "name": "Cubicon Style", "inherits": "cubicon_common", diff --git a/resources/definitions/cubicon_3dp_310f.def.json b/resources/definitions/cubicon_3dp_310f.def.json index 90d0e3f25c..1dc78f0ebf 100644 --- a/resources/definitions/cubicon_3dp_310f.def.json +++ b/resources/definitions/cubicon_3dp_310f.def.json @@ -1,5 +1,4 @@ { - "id": "3DP-310F", "version": 2, "name": "Cubicon Single Plus", "inherits": "cubicon_common", diff --git a/resources/definitions/cubicon_common.def.json b/resources/definitions/cubicon_common.def.json index ae085c7552..6b1e3d953e 100644 --- a/resources/definitions/cubicon_common.def.json +++ b/resources/definitions/cubicon_common.def.json @@ -23,77 +23,34 @@ "travel_compensate_overlapping_walls_enabled": { "default_value": false }, - "travel_compensate_overlapping_walls_0_enabled": { - "default_value": false - }, - "travel_compensate_overlapping_walls_x_enabled": { - "default_value": false - }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "infill_line_width": { - "default_value": 0.6 - }, "adhesion_type": { "default_value": "raft" }, - "roofing_pattern": { "default_value": "lines" }, "top_bottom_pattern": { "default_value": "lines" }, - "top_bottom_pattern_0": { - "default_value": "zigzag" - }, "fill_perimeter_gaps": { "default_value": "everywhere" }, - "infill_pattern": { - "default_value": "zigzag" - }, "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { - "default_value": 15 - }, "infill_before_walls": { "default_value": false }, - "infill_sparse_thickness": { "default_value": 0.2 }, "top_bottom_thickness": { "default_value": 1.0 }, - "top_thickness": { - "default_value": 1.0 - }, "bottom_thickness": { - "default_value": 0.6, "value": "top_bottom_thickness * 0.6" }, - "roofing_layer_count": { - "default_value": 1 - }, - "skin_preshrink": { "default_value": true }, "material_flow_layer_0": { "default_value": 100 }, - "top_skin_preshrink": { "default_value": 1.2 }, - "bottom_skin_preshrink": { "default_value": 1.2 }, "max_skin_angle_for_expansion": { "default_value": 90 }, - "min_skin_width_for_expansion": { "default_value": 2.7475 }, "skin_angles": { "default_value": "[135,45]" }, - "roofing_angles": { "default_value": "[135,45]" }, "coasting_volume": { "default_value": 0.032 }, "wall_thickness": { "default_value": 1.2 }, - "wall_line_count": { "default_value": 3 }, - "speed_wall_0": { "default_value": 25 }, - "skin_overlap": { "default_value": 5 }, "cool_min_layer_time_fan_speed_max": { "default_value": 15 }, "cool_min_layer_time": { "default_value": 15 }, - "support_roof_pattern": { "default_value": "zigzag" }, - "support_bottom_pattern": { "default_value": "zigzag" }, "support_interface_pattern": { "default_value": "zigzag" }, "support_pattern": { "default_value": "zigzag" }, - "retraction_amount": { "default_value": 1.5 }, - "top_layers": { - "default_value": 5 - }, - "bottom_layers": { - "default_value": 3 - } + "retraction_amount": { "default_value": 1.5 } } } \ No newline at end of file diff --git a/resources/definitions/cubicon_dual_pro_a30.def.json b/resources/definitions/cubicon_dual_pro_a30.def.json new file mode 100644 index 0000000000..6431c917a5 --- /dev/null +++ b/resources/definitions/cubicon_dual_pro_a30.def.json @@ -0,0 +1,44 @@ +{ + "version": 2, + "name": "Cubicon Dual Pro-A30", + "inherits": "cubicon_common", + "metadata": { + "author": "Cubicon R&D Center", + "manufacturer": "Cubicon", + "visible": true, + "file_formats": "text/x-gcode", + "supports_usb_connection": false, + "machine_extruder_trains": { + "0": "cubicon_dual_pro_a30_extruder_0", + "1": "cubicon_dual_pro_a30_extruder_1" + }, + "platform_offset": [ + 0, + 0, + 0 + ] + }, + "overrides": { + "machine_name": { + "default_value": "Cubicon Dual Pro-A30" + }, + "machine_start_gcode": { + "default_value": "M911 Dual Pro-A30C\nM201 X400 Y400\nM202 X400 Y400\nG28 ; Home\nG1 Z15.0 F6000 ;move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_width": { + "default_value": 300 + }, + "machine_depth": { + "default_value": 300 + }, + "machine_height": { + "default_value": 300 + }, + "material_bed_temp_wait":{ + "default_value": false + }, + "machine_extruder_count": { + "default_value": 2 + } + } +} diff --git a/resources/definitions/cubicon_style_plus_a15.def.json b/resources/definitions/cubicon_style_plus_a15.def.json new file mode 100644 index 0000000000..a55d5aa791 --- /dev/null +++ b/resources/definitions/cubicon_style_plus_a15.def.json @@ -0,0 +1,40 @@ +{ + "version": 2, + "name": "Cubicon Style Plus-A15", + "inherits": "cubicon_common", + "metadata": { + "author": "Cubicon R&D Center", + "manufacturer": "Cubicon", + "visible": true, + "file_formats": "text/x-gcode", + "supports_usb_connection": false, + "machine_extruder_trains": { + "0": "cubicon_style_plus_a15_extruder_0" + }, + "platform_offset": [ + 0, + 0, + 0 + ] + }, + "overrides": { + "machine_name": { + "default_value": "Cubicon Style Plus-A15" + }, + "machine_start_gcode": { + "default_value": "M911 Style Plus-A15\nM201 X400 Y400\nM202 X400 Y400\nG28 ; Home\nG1 Z15.0 F6000 ;move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_width": { + "default_value": 150 + }, + "machine_depth": { + "default_value": 150 + }, + "machine_height": { + "default_value": 150 + }, + "material_bed_temp_wait":{ + "default_value": false + } + } +} diff --git a/resources/definitions/dagoma_discoeasy200.def.json b/resources/definitions/dagoma_discoeasy200.def.json index 89d94ff6b7..30c0abdab2 100644 --- a/resources/definitions/dagoma_discoeasy200.def.json +++ b/resources/definitions/dagoma_discoeasy200.def.json @@ -38,7 +38,7 @@ ] }, "gantry_height": { - "default_value": 10 + "value": "10" }, "machine_start_gcode": { "default_value": ";Gcode by Cura\nG90\nM106 S255\nG28 X Y\nG1 X50\nM109 R90\nG28\nM104 S{material_print_temperature_layer_0}\nG29\nM107\nG1 X100 Y20 F3000\nG1 Z0.5\nM109 S{material_print_temperature_layer_0}\nM82\nG92 E0\nG1 F200 E10\nG92 E0\nG1 Z3\nG1 F6000\n" @@ -52,9 +52,6 @@ "speed_print": { "default_value": 60 }, - "speed_travel": { - "default_value": 100 - }, "retraction_amount": { "default_value": 3.5 }, diff --git a/resources/definitions/dagoma_magis.def.json b/resources/definitions/dagoma_magis.def.json index 75e6e449cd..dc5a0f86d2 100644 --- a/resources/definitions/dagoma_magis.def.json +++ b/resources/definitions/dagoma_magis.def.json @@ -38,7 +38,7 @@ ] }, "gantry_height": { - "default_value": 0 + "value": "0" }, "machine_shape": { "default_value": "elliptic" @@ -55,9 +55,6 @@ "speed_print": { "default_value": 40 }, - "speed_travel": { - "default_value": 120 - }, "retraction_amount": { "default_value": 3.8 }, diff --git a/resources/definitions/dagoma_neva.def.json b/resources/definitions/dagoma_neva.def.json index 67c8795678..43a3e0c4f1 100644 --- a/resources/definitions/dagoma_neva.def.json +++ b/resources/definitions/dagoma_neva.def.json @@ -38,7 +38,7 @@ ] }, "gantry_height": { - "default_value": 0 + "value": "0" }, "machine_shape": { "default_value": "elliptic" @@ -55,9 +55,6 @@ "speed_print": { "default_value": 40 }, - "speed_travel": { - "default_value": 120 - }, "retraction_amount": { "default_value": 3.8 }, diff --git a/resources/definitions/delta_go.def.json b/resources/definitions/delta_go.def.json index cd1fb180c2..04f0580898 100644 --- a/resources/definitions/delta_go.def.json +++ b/resources/definitions/delta_go.def.json @@ -16,12 +16,8 @@ "overrides": { "machine_name": { "default_value": "Delta Go" }, "default_material_print_temperature": { "default_value": 210 }, - "speed_travel": { "default_value": 150 }, "prime_tower_size": { "default_value": 8.66 }, "infill_sparse_density": { "default_value": 10 }, - "speed_wall_x": { "default_value": 30 }, - "speed_wall_0": { "default_value": 30 }, - "speed_topbottom": { "default_value": 20 }, "layer_height": { "default_value": 0.15 }, "speed_print": { "default_value": 30 }, "machine_heated_bed": { "default_value": false }, diff --git a/resources/definitions/deltabot.def.json b/resources/definitions/deltabot.def.json index 95435f659d..ad6a207bb2 100644 --- a/resources/definitions/deltabot.def.json +++ b/resources/definitions/deltabot.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Ultimaker", - "manufacturer": "Danny Lu", + "manufacturer": "Custom", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0], "machine_extruder_trains": @@ -15,15 +15,10 @@ }, "overrides": { - "speed_travel": { "default_value": 150 }, "prime_tower_size": { "default_value": 8.660254037844387 }, "infill_sparse_density": { "default_value": 10 }, - "speed_wall_x": { "default_value": 30 }, - "speed_wall_0": { "default_value": 30 }, - "speed_topbottom": { "default_value": 30 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 30 }, - "speed_infill": { "default_value": 30 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": true }, diff --git a/resources/definitions/deltacomb.def.json b/resources/definitions/deltacomb.def.json index 8fec0f8950..ac2ea5abe1 100755 --- a/resources/definitions/deltacomb.def.json +++ b/resources/definitions/deltacomb.def.json @@ -1,61 +1,67 @@ { - "version": 2, - "name": "Deltacomb 3D", - "inherits": "fdmprinter", + "version": 2, + "name": "Deltacomb 3D", + "inherits": "fdmprinter", + "metadata": { - "author": "Gabriele Rossetti", - "visible": true, - "manufacturer": "Deltacomb 3D", - "category": "Other", - "file_formats": "text/x-gcode", - "platform": "deltacomb.stl", - "has_machine_quality": true, - "machine_extruder_trains": - { - "0": "deltacomb_extruder_0" - } + "author": "Gabriele Rossetti", + "visible": true, + "manufacturer": "Deltacomb 3D", + "category": "Other", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "platform": "deltacomb.stl", + "has_machine_quality": true, + "has_materials": true, + "has_variants": true, + "variants_name": "Head", + "preferred_variant_name": "E3D 0.40mm", + "preferred_material": "generic_pla", + "preferred_quality_type": "normal", + "machine_extruder_trains": { "0": "deltacomb_extruder_0", "1": "deltacomb_extruder_1" } }, "overrides": { - "machine_heated_bed": { "default_value": true }, - "machine_width": { "default_value": 190 }, - "machine_height": { "default_value": 250 }, - "machine_depth": { "default_value": 190 }, - "machine_center_is_zero": { "default_value": true }, - "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home all axes (max endstops)\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."}, - "machine_end_gcode": { "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG28 ;Home all axes (max endstops)\nM84 ;steppers off\nG90 ;absolute positioning" }, - "machine_shape": { "default_value": "elliptic" }, - "retraction_hop_enabled": { "default_value": true }, - "retraction_amount" : { "default_value": 3.5 }, - "retraction_speed" : { "default_value": 50 }, - "material_final_print_temperature": { "value": "material_print_temperature - 5" }, - "material_initial_print_temperature": { "value": "material_print_temperature" }, - "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, - "material_diameter": { "default_value": 1.75 }, - "travel_avoid_distance": { "default_value": 1, "value": "1" }, - "speed_print" : { "default_value": 70 }, - "speed_travel": { "value": "150.0" }, - "speed_infill": { "value": "round(speed_print * 1.05, 0)" }, - "speed_topbottom": { "value": "round(speed_print * 0.95, 0)" }, - "speed_wall": { "value": "speed_print" }, - "speed_wall_0": { "value": "20" }, - "speed_wall_x": { "value": "speed_wall" }, - "speed_layer_0": { "value": "min(round(speed_print * 0.75, 0), 45.0)" }, - "speed_travel_layer_0": { "value": "round(speed_travel * 0.7, 0)" }, - "skirt_brim_speed": { "value": "speed_layer_0" }, - "skirt_line_count": { "default_value": 3 }, - "skirt_brim_minimal_length": { "default_value": 150 }, - "infill_sparse_density": { "default_value": 90 }, - "gradual_infill_steps": { "default_value": 2 }, - "infill_before_walls" : { "default_value": false }, - "top_bottom_thickness": { "default_value": 0.6 }, - "support_z_distance": { "value": "layer_height * 2" }, - "support_bottom_distance": { "value": "layer_height" }, - "support_use_towers" : { "default_value": false }, - "jerk_wall_0" : { "value": "30" }, - "jerk_travel" : { "default_value": 20 }, - "acceleration_travel" : { "value": 10000 }, - "machine_max_feedrate_z" : { "default_value": 150 } + "machine_extruder_count": { "default_value": 1 }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 190 }, + "machine_height": { "default_value": 250 }, + "machine_depth": { "default_value": 190 }, + "machine_center_is_zero": { "default_value": true }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home all axes (max endstops)\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."}, + "machine_end_gcode": { "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG28 ;Home all axes (max endstops)\nM84 ;steppers off\nG90 ;absolute positioning" }, + "machine_shape": { "default_value": "elliptic" }, + "retraction_hop_enabled": { "default_value": true }, + "retraction_hop": { "default_value": 1 }, + "retraction_amount" : { "default_value": 3.5 }, + "retraction_speed" : { "default_value": 30 }, + "retraction_combing" : { "default_value": "noskin" }, + "travel_avoid_distance": { "value": "1" }, + "speed_print" : { "default_value": 80 }, + "speed_infill": { "value": "round(speed_print * 1.05, 0)" }, + "speed_topbottom": { "value": "round(speed_print * 0.95, 0)" }, + "speed_wall": { "value": "speed_print" }, + "speed_wall_0": { "value": "30" }, + "speed_wall_x": { "value": "speed_wall" }, + "speed_layer_0": { "value": "min(round(speed_print * 0.75, 0), 45.0)" }, + "speed_travel": { "value": 150 }, + "speed_travel_layer_0": { "value": "round(speed_travel * 0.7, 0)" }, + "skirt_brim_speed": { "value": "speed_layer_0" }, + "skirt_line_count": { "default_value": 3 }, + "skirt_brim_minimal_length": { "default_value": 150 }, + "infill_sparse_density": { "default_value": 30 }, + "infill_pattern": { "value": "'cubic'" }, + "infill_before_walls" : { "default_value": false }, + "top_bottom_thickness": { "default_value": 0.8 }, + "support_z_distance": { "value": "layer_height * 2" }, + "support_bottom_distance": { "value": "layer_height" }, + "support_use_towers" : { "default_value": false }, + "jerk_enabled": { "value": "True" }, + "jerk_infill" : { "value": "5" }, + "jerk_support" : { "value": "5" }, + "acceleration_enabled": { "value": "1" }, + "acceleration_travel" : { "value": 5000 }, + "machine_max_feedrate_z" : { "default_value": 300 } } } diff --git a/resources/definitions/easyarts_ares.def.json b/resources/definitions/easyarts_ares.def.json index 5655d0a795..18d73a3531 100644 --- a/resources/definitions/easyarts_ares.def.json +++ b/resources/definitions/easyarts_ares.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "nliaudat", - "manufacturer": "EasyArts (discontinued)", + "manufacturer": "EasyArts", "file_formats": "text/x-gcode", "machine_extruder_trains": { @@ -49,27 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, "speed_print": { "default_value": 75 }, - "speed_infill": { - "default_value": 100 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/erzay3d.def.json b/resources/definitions/erzay3d.def.json new file mode 100644 index 0000000000..875aea708e --- /dev/null +++ b/resources/definitions/erzay3d.def.json @@ -0,0 +1,81 @@ +{ + "name": "Erzay3D", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Alexander Kirsanov", + "manufacturer": "Robokinetika", + "category": "Other", + "file_formats": "text/x-gcode", + "machine_extruder_trains": + { + "0": "erzay3d_extruder_0" + } + }, + + "overrides": { + "machine_start_gcode" : { "default_value": "G28\nG1 Z15.0 F6000\nG92 E0" }, + "machine_shape": { "default_value": "elliptic"}, + "machine_name": { "default_value": "Erzay3D" }, + "machine_depth": { "default_value": 210 }, + "machine_width": { "default_value": 210 }, + "machine_height": { "default_value": 230 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_center_is_zero": { "default_value": true }, + "machine_extruder_count": { "default_value": 1 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_heated_bed": { "default_value": true }, + "material_bed_temp_wait": { "default_value": true }, + "material_print_temp_wait": { "default_value": true }, + "material_print_temp_prepend": { "default_value": true }, + "machine_buildplate_type": { "default_value": "glass" }, + "machine_nozzle_head_distance": { "default_value": 2.5 }, + "machine_heat_zone_length": { "default_value": 12.5 }, + "machine_max_feedrate_x": { "default_value": 200 }, + "machine_max_feedrate_y": { "default_value": 200 }, + "machine_max_feedrate_z": { "default_value": 200 }, + "machine_max_feedrate_e": { "default_value": 50 }, + "machine_max_acceleration_x": { "default_value": 3000 }, + "machine_max_acceleration_y": { "default_value": 3000 }, + "machine_max_acceleration_z": { "default_value": 3000 }, + "machine_max_acceleration_e": { "default_value": 3000 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "machine_max_jerk_z": { "default_value": 10 }, + "machine_max_jerk_e": { "default_value": 10 }, + "machine_steps_per_mm_x": { "default_value": 1600 }, + "machine_steps_per_mm_y": { "default_value": 1600 }, + "machine_steps_per_mm_z": { "default_value": 1600 }, + "machine_steps_per_mm_e": { "default_value": 174 }, + "machine_feeder_wheel_diameter": { "default_value": 12 }, + + "layer_height": { "default_value": 0.2 }, + "layer_height_0": { "default_value": 0.2 }, + + "ironing_pattern": { "default_value": "concentric" }, + "ironing_flow": { "default_value": 7.0 }, + + "infill_sparse_density": { "default_value": 20 }, + + "default_material_print_temperature": { "default_value": 220 }, + "retraction_amount": { "default_value": 6.5 }, + + "speed_print": { "default_value": 40 }, + "speed_equalize_flow_enabled": { "default_value": true }, + "speed_equalize_flow_max": { "default_value": 100 }, + + "acceleration_print": { "default_value": 1000 }, + + "jerk_print": { "default_value": 10 }, + + "support_angle": { "default_value": 65 }, + "support_brim_enable": { "default_value": true }, + + "adhesion_type": { "default_value": "skirt" }, + "brim_outside_only": { "default_value": false }, + + "meshfix_maximum_resolution": { "default_value": 0.05 } + } +} diff --git a/resources/definitions/fabtotum.def.json b/resources/definitions/fabtotum.def.json index 10c8f68844..355f6a1434 100644 --- a/resources/definitions/fabtotum.def.json +++ b/resources/definitions/fabtotum.def.json @@ -28,7 +28,7 @@ "machine_end_gcode": { "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-3 X+5 Y+5 F5000 ;move Z up a bit and retract filament even more\n;end of the print\nM84 ;steppers off\nG90 ;absolute positioning\nM300 S2 ;FAB bep bep (end print)" }, - "gantry_height": { "default_value": 55 }, + "gantry_height": { "value": "55" }, "machine_width": { "default_value": 214 }, "machine_height": { "default_value": 241.5 }, "machine_depth": { "default_value": 234 }, @@ -50,8 +50,8 @@ "retraction_hop_enabled": { "default_value": false }, "material_final_print_temperature": { "value": "material_print_temperature - 5" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, - "travel_avoid_distance": { "default_value": 1, "value": 1 }, - "speed_travel": { "default_value": 200, "value": 200 }, + "travel_avoid_distance": { "value": 1 }, + "speed_travel": { "value": 200 }, "speed_infill": { "value": "round(speed_print * 1.05, 0)" }, "speed_topbottom": { "value": "round(speed_print * 0.95, 0)" }, "speed_wall": { "value": "speed_print" }, diff --git a/resources/definitions/fdmextruder.def.json b/resources/definitions/fdmextruder.def.json index 0af1e68075..9d1e3c305e 100644 --- a/resources/definitions/fdmextruder.def.json +++ b/resources/definitions/fdmextruder.def.json @@ -6,7 +6,7 @@ "type": "extruder", "author": "Ultimaker", "manufacturer": "Unknown", - "setting_version": 1, + "setting_version": 11, "visible": false, "position": "0" }, diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 677fbf565d..1c84e99d24 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -7,17 +7,20 @@ "author": "Ultimaker", "category": "Other", "manufacturer": "Unknown", - "setting_version": 1, + "setting_version": 11, "file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g", "visible": false, "has_materials": true, + "has_variants": false, + "has_machine_quality": false, "preferred_material": "generic_pla", "preferred_quality_type": "normal", "machine_extruder_trains": { "0": "fdmextruder" }, - "supports_usb_connection": true + "supports_usb_connection": true, + "supports_network_connection": false }, "settings": { @@ -203,6 +206,16 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, + "machine_heated_build_volume": + { + "label": "Has Build Volume Temperature Stabilization", + "description": "Whether the machine is able to stabilize the build volume temperature.", + "default_value": false, + "type": "bool", + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false + }, "machine_center_is_zero": { "label": "Is Center Origin", @@ -227,7 +240,7 @@ }, "extruders_enabled_count": { - "label": "Number of Extruders that are enabled", + "label": "Number of Extruders That Are Enabled", "description": "Number of extruder trains that are enabled; automatically set in software", "value": "machine_extruder_count", "default_value": 1, @@ -240,7 +253,7 @@ }, "machine_nozzle_tip_outer_diameter": { - "label": "Outer nozzle diameter", + "label": "Outer Nozzle Diameter", "description": "The outer diameter of the tip of the nozzle.", "unit": "mm", "default_value": 1, @@ -252,7 +265,7 @@ }, "machine_nozzle_head_distance": { - "label": "Nozzle length", + "label": "Nozzle Length", "description": "The height difference between the tip of the nozzle and the lowest part of the print head.", "unit": "mm", "default_value": 3, @@ -263,7 +276,7 @@ }, "machine_nozzle_expansion_angle": { - "label": "Nozzle angle", + "label": "Nozzle Angle", "description": "The angle between the horizontal plane and the conical part right above the tip of the nozzle.", "unit": "°", "type": "int", @@ -276,7 +289,7 @@ }, "machine_heat_zone_length": { - "label": "Heat zone length", + "label": "Heat Zone Length", "description": "The distance from the tip of the nozzle in which heat from the nozzle is transferred to the filament.", "unit": "mm", "default_value": 16, @@ -310,7 +323,7 @@ }, "machine_nozzle_heat_up_speed": { - "label": "Heat up speed", + "label": "Heat Up Speed", "description": "The speed (°C/s) by which the nozzle heats up averaged over the window of normal printing temperatures and the standby temperature.", "default_value": 2.0, "unit": "°C/s", @@ -321,7 +334,7 @@ }, "machine_nozzle_cool_down_speed": { - "label": "Cool down speed", + "label": "Cool Down Speed", "description": "The speed (°C/s) by which the nozzle cools down averaged over the window of normal printing temperatures and the standby temperature.", "default_value": 2.0, "unit": "°C/s", @@ -343,7 +356,7 @@ }, "machine_gcode_flavor": { - "label": "G-code flavour", + "label": "G-code Flavor", "description": "The type of g-code to be generated.", "type": "enum", "options": @@ -374,9 +387,19 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, + "machine_extruders_share_heater": + { + "label": "Extruders Share Heater", + "description": "Whether the extruders share a single heater rather than each extruder having its own heater.", + "type": "bool", + "default_value": false, + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false + }, "machine_disallowed_areas": { - "label": "Disallowed areas", + "label": "Disallowed Areas", "description": "A list of polygons with areas the print head is not allowed to enter.", "type": "polygons", "default_value": @@ -398,37 +421,9 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_head_polygon": - { - "label": "Machine head polygon", - "description": "A 2D silhouette of the print head (fan caps excluded).", - "type": "polygon", - "default_value": - [ - [ - -1, - 1 - ], - [ - -1, - -1 - ], - [ - 1, - -1 - ], - [ - 1, - 1 - ] - ], - "settable_per_mesh": false, - "settable_per_extruder": false, - "settable_per_meshgroup": false - }, "machine_head_with_fans_polygon": { - "label": "Machine head & Fan polygon", + "label": "Machine Head & Fan Polygon", "description": "A 2D silhouette of the print head (fan caps included).", "type": "polygon", "default_value": @@ -456,9 +451,10 @@ }, "gantry_height": { - "label": "Gantry height", + "label": "Gantry Height", "description": "The height difference between the tip of the nozzle and the gantry system (X and Y axes).", "default_value": 99999999999, + "value": "machine_height", "type": "float", "settable_per_mesh": false, "settable_per_extruder": false, @@ -487,7 +483,7 @@ }, "machine_use_extruder_offset_to_offset_coords": { - "label": "Offset With Extruder", + "label": "Offset with Extruder", "description": "Apply the extruder offset to the coordinate system.", "type": "bool", "default_value": true, @@ -522,7 +518,7 @@ "description": "The maximum speed for the motor of the X-direction.", "unit": "mm/s", "type": "float", - "default_value": 500, + "default_value": 299792458000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -533,7 +529,7 @@ "description": "The maximum speed for the motor of the Y-direction.", "unit": "mm/s", "type": "float", - "default_value": 500, + "default_value": 299792458000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -544,7 +540,7 @@ "description": "The maximum speed for the motor of the Z-direction.", "unit": "mm/s", "type": "float", - "default_value": 5, + "default_value": 299792458000, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -890,7 +886,7 @@ "maximum_value_warning": "3 * machine_nozzle_size", "default_value": 0.4, "type": "float", - "enabled": "support_enable", + "enabled": "(support_enable or support_tree_enable)", "value": "line_width", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, @@ -906,7 +902,7 @@ "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", - "enabled": "support_enable and support_interface_enable", + "enabled": "(support_enable or support_tree_enable) and support_interface_enable", "limit_to_extruder": "support_interface_extruder_nr", "value": "line_width", "settable_per_mesh": false, @@ -923,7 +919,7 @@ "minimum_value_warning": "0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", - "enabled": "support_enable and support_roof_enable", + "enabled": "(support_enable or support_tree_enable) and support_roof_enable", "limit_to_extruder": "support_roof_extruder_nr", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_line_width')", "settable_per_mesh": false, @@ -939,7 +935,7 @@ "minimum_value_warning": "0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", - "enabled": "support_enable and support_bottom_enable", + "enabled": "(support_enable or support_tree_enable) and support_bottom_enable", "limit_to_extruder": "support_bottom_extruder_nr", "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_line_width')", "settable_per_mesh": false, @@ -961,20 +957,20 @@ "maximum_value_warning": "2 * machine_nozzle_size", "settable_per_mesh": false, "settable_per_extruder": true - }, - "initial_layer_line_width_factor": - { - "label": "Initial Layer Line Width", - "description": "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion.", - "type": "float", - "unit": "%", - "default_value": 100.0, - "minimum_value": "0.001", - "maximum_value_warning": "150", - "settable_per_mesh": false, - "settable_per_extruder": true } } + }, + "initial_layer_line_width_factor": + { + "label": "Initial Layer Line Width", + "description": "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion.", + "type": "float", + "unit": "%", + "default_value": 100.0, + "minimum_value": "0.001", + "maximum_value_warning": "150", + "settable_per_mesh": false, + "settable_per_extruder": true } } }, @@ -1176,6 +1172,18 @@ "value": "999999 if infill_sparse_density == 100 else math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true + }, + "initial_bottom_layers": + { + "label": "Initial Bottom Layers", + "description": "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number.", + "minimum_value": "0", + "minimum_value_warning": "2", + "default_value": 6, + "type": "int", + "value": "bottom_layers", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true } } } @@ -1315,8 +1323,7 @@ "default_value": 0, "type": "float", "enabled": "travel_compensate_overlapping_walls_0_enabled or travel_compensate_overlapping_walls_x_enabled", - "settable_per_mesh": true, - "settable_per_extruder": false + "settable_per_mesh": true }, "wall_min_flow_retract": { @@ -1325,8 +1332,7 @@ "type": "bool", "default_value": false, "enabled": "(travel_compensate_overlapping_walls_0_enabled or travel_compensate_overlapping_walls_x_enabled) and wall_min_flow > 0", - "settable_per_mesh": true, - "settable_per_extruder": false + "settable_per_mesh": true }, "fill_perimeter_gaps": { @@ -1399,41 +1405,66 @@ "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, - "z_seam_x": + "z_seam_position": { - "label": "Z Seam X", - "description": "The X coordinate of the position near where to start printing each part in a layer.", - "unit": "mm", - "type": "float", - "default_value": 100.0, - "value": "machine_width / 2", + "label": "Z Seam Position", + "description": "The position near where to start printing each part in a layer.", + "type": "enum", + "options": + { + "backleft": "Back Left", + "back": "Back", + "backright": "Back Right", + "right": "Right", + "frontright": "Front Right", + "front": "Front", + "frontleft": "Front Left", + "left": "Left" + }, "enabled": "z_seam_type == 'back'", + "default_value": "back", "limit_to_extruder": "wall_0_extruder_nr", - "settable_per_mesh": true - }, - "z_seam_y": - { - "label": "Z Seam Y", - "description": "The Y coordinate of the position near where to start printing each part in a layer.", - "unit": "mm", - "type": "float", - "default_value": 100.0, - "value": "machine_depth * 3", - "enabled": "z_seam_type == 'back'", - "limit_to_extruder": "wall_0_extruder_nr", - "settable_per_mesh": true + "settable_per_mesh": true, + "children": + { + "z_seam_x": + { + "label": "Z Seam X", + "description": "The X coordinate of the position near where to start printing each part in a layer.", + "unit": "mm", + "type": "float", + "default_value": 100.0, + "value": "(0 if (z_seam_position == 'frontleft' or z_seam_position == 'left' or z_seam_position == 'backleft') else machine_width / 2 if (z_seam_position == 'front' or z_seam_position == 'back') else machine_width) - (machine_width / 2 if z_seam_relative or machine_center_is_zero else 0)", + "enabled": "z_seam_type == 'back'", + "limit_to_extruder": "wall_0_extruder_nr", + "settable_per_mesh": true + }, + "z_seam_y": + { + "label": "Z Seam Y", + "description": "The Y coordinate of the position near where to start printing each part in a layer.", + "unit": "mm", + "type": "float", + "default_value": 100.0, + "value": "(0 if (z_seam_position == 'frontleft' or z_seam_position == 'front' or z_seam_position == 'frontright') else machine_depth / 2 if (z_seam_position == 'left' or z_seam_position == 'right') else machine_depth) - (machine_depth / 2 if z_seam_relative or machine_center_is_zero else 0)", + "enabled": "z_seam_type == 'back'", + "limit_to_extruder": "wall_0_extruder_nr", + "settable_per_mesh": true + } + } }, "z_seam_corner": { "label": "Seam Corner Preference", - "description": "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner.", + "description": "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate.", "type": "enum", "options": { - "z_seam_corner_none": "None", - "z_seam_corner_inner": "Hide Seam", - "z_seam_corner_outer": "Expose Seam", - "z_seam_corner_any": "Hide or Expose Seam" + "z_seam_corner_none": "None", + "z_seam_corner_inner": "Hide Seam", + "z_seam_corner_outer": "Expose Seam", + "z_seam_corner_any": "Hide or Expose Seam", + "z_seam_corner_weighted": "Smart Hiding" }, "default_value": "z_seam_corner_inner", "enabled": "z_seam_type != 'random'", @@ -1453,8 +1484,8 @@ }, "skin_no_small_gaps_heuristic": { - "label": "Ignore Small Z Gaps", - "description": "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting.", + "label": "No Skin in Z Gaps", + "description": "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air.", "type": "bool", "default_value": false, "enabled": "top_layers > 0 or bottom_layers > 0", @@ -1476,7 +1507,7 @@ "ironing_enabled": { "label": "Enable Ironing", - "description": "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface.", + "description": "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material.", "type": "bool", "default_value": false, "limit_to_extruder": "top_bottom_extruder_nr", @@ -1590,6 +1621,36 @@ "enabled": "resolveOrValue('jerk_enabled') and ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true + }, + "skin_overlap": + { + "label": "Skin Overlap Percentage", + "description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.", + "unit": "%", + "type": "float", + "default_value": 5, + "minimum_value_warning": "-50", + "maximum_value_warning": "100", + "value": "5 if top_bottom_pattern != 'concentric' else 0", + "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true, + "children": + { + "skin_overlap_mm": + { + "label": "Skin Overlap", + "description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.", + "unit": "mm", + "type": "float", + "default_value": 0.02, + "minimum_value_warning": "-0.5 * machine_nozzle_size", + "maximum_value_warning": "machine_nozzle_size", + "value": "0.5 * (skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", + "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", + "settable_per_mesh": true + } + } } } }, @@ -1722,6 +1783,17 @@ "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, + "infill_randomize_start_location": + { + "label": "Randomize Infill Start", + "description": "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move.", + "type": "bool", + "default_value": false, + "warning_value": "True if infill_pattern not in ('grid', 'triangles', 'trihexagon', 'cubic', 'cubicsubdiv', 'tetrahedral', 'quarter_cubic') else None", + "enabled": "not ((infill_pattern == 'cross' and connect_infill_polygons) or infill_pattern == 'concentric')", + "limit_to_extruder": "infill_extruder_nr", + "settable_per_mesh": true + }, "infill_multiplier": { "label": "Infill Line Multiplier", @@ -1789,36 +1861,6 @@ } } }, - "skin_overlap": - { - "label": "Skin Overlap Percentage", - "description": "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall.", - "unit": "%", - "type": "float", - "default_value": 5, - "minimum_value_warning": "-50", - "maximum_value_warning": "100", - "value": "5 if top_bottom_pattern != 'concentric' else 0", - "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true, - "children": - { - "skin_overlap_mm": - { - "label": "Skin Overlap", - "description": "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin.", - "unit": "mm", - "type": "float", - "default_value": 0.02, - "minimum_value_warning": "-0.5 * machine_nozzle_size", - "maximum_value_warning": "machine_nozzle_size", - "value": "0.5 * (skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", - "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", - "settable_per_mesh": true - } - } - }, "infill_wipe_dist": { "label": "Infill Wipe Distance", @@ -1840,7 +1882,7 @@ "unit": "mm", "type": "float", "default_value": 0.1, - "minimum_value": "resolveOrValue('layer_height') if infill_line_distance > 0 else -999999", + "minimum_value": "resolveOrValue('layer_height') / 2 if infill_line_distance > 0 else -999999", "maximum_value_warning": "0.75 * machine_nozzle_size", "maximum_value": "resolveOrValue('layer_height') * (1.45 if spaghetti_infill_enabled else 8) if infill_line_distance > 0 else 999999", "value": "resolveOrValue('layer_height')", @@ -1924,7 +1966,7 @@ "description": "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model.", "unit": "mm", "type": "float", - "default_value": 0, + "default_value": 1, "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", "enabled": "top_layers > 0 or bottom_layers > 0", @@ -1938,7 +1980,7 @@ "description": "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model.", "unit": "mm", "type": "float", - "default_value": 0, + "default_value": 1, "value": "skin_preshrink", "minimum_value": "0", "enabled": "top_layers > 0 or bottom_layers > 0", @@ -1951,7 +1993,7 @@ "description": "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model.", "unit": "mm", "type": "float", - "default_value": 0, + "default_value": 1, "value": "skin_preshrink", "minimum_value": "0", "enabled": "top_layers > 0 or bottom_layers > 0", @@ -1966,7 +2008,7 @@ "description": "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used.", "unit": "mm", "type": "float", - "default_value": 2.8, + "default_value": 1, "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "-skin_preshrink", "limit_to_extruder": "top_bottom_extruder_nr", @@ -1980,7 +2022,7 @@ "description": "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used.", "unit": "mm", "type": "float", - "default_value": 2.8, + "default_value": 1, "value": "expand_skins_expand_distance", "minimum_value": "-top_skin_preshrink", "enabled": "top_layers > 0 or bottom_layers > 0", @@ -1993,7 +2035,7 @@ "description": "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used.", "unit": "mm", "type": "float", - "default_value": 2.8, + "default_value": 1, "value": "expand_skins_expand_distance", "minimum_value": "-bottom_skin_preshrink", "enabled": "top_layers > 0 or bottom_layers > 0", @@ -2051,11 +2093,26 @@ "default_value": 210, "minimum_value_warning": "0", "maximum_value_warning": "285", - "enabled": "machine_nozzle_temp_enabled", + "enabled": false, "settable_per_extruder": true, "settable_per_mesh": false, "minimum_value": "-273.15" }, + "build_volume_temperature": + { + "label": "Build Volume Temperature", + "description": "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted.", + "unit": "°C", + "type": "float", + "default_value": 0, + "resolve": "min(extruderValues('build_volume_temperature'))", + "minimum_value": "-273.15", + "minimum_value_warning": "0", + "maximum_value_warning": "285", + "enabled": "machine_heated_build_volume", + "settable_per_mesh": false, + "settable_per_extruder": false + }, "material_print_temperature": { "label": "Printing Temperature", @@ -2097,7 +2154,7 @@ "minimum_value": "-273.15", "minimum_value_warning": "material_standby_temperature", "maximum_value_warning": "material_print_temperature", - "enabled": "machine_nozzle_temp_enabled", + "enabled": "machine_nozzle_temp_enabled and not machine_extruders_share_heater", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2112,7 +2169,7 @@ "minimum_value": "-273.15", "minimum_value_warning": "material_standby_temperature", "maximum_value_warning": "material_print_temperature", - "enabled": "machine_nozzle_temp_enabled", + "enabled": "machine_nozzle_temp_enabled and not machine_extruders_share_heater", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2139,9 +2196,9 @@ "resolve": "max(extruderValues('default_material_bed_temperature'))", "default_value": 60, "minimum_value": "-273.15", - "minimum_value_warning": "0", + "minimum_value_warning": "build_volume_temperature", "maximum_value_warning": "130", - "enabled": "machine_heated_bed and machine_gcode_flavor != \"UltiGCode\"", + "enabled": false, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -2156,7 +2213,7 @@ "value": "default_material_bed_temperature", "resolve": "max(extruderValues('material_bed_temperature'))", "minimum_value": "-273.15", - "minimum_value_warning": "0", + "minimum_value_warning": "build_volume_temperature", "maximum_value_warning": "130", "enabled": "machine_heated_bed and machine_gcode_flavor != \"UltiGCode\"", "settable_per_mesh": false, @@ -2173,7 +2230,7 @@ "default_value": 60, "value": "resolveOrValue('material_bed_temperature')", "minimum_value": "-273.15", - "minimum_value_warning": "max(extruderValues('material_bed_temperature'))", + "minimum_value_warning": "max(build_volume_temperature, max(extruderValues('material_bed_temperature')))", "maximum_value_warning": "130", "enabled": "machine_heated_bed and machine_gcode_flavor != \"UltiGCode\"", "settable_per_mesh": false, @@ -2218,6 +2275,121 @@ "settable_per_mesh": false, "settable_per_extruder": true }, + "material_crystallinity": + { + "label": "Crystalline Material", + "description": "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?", + "type": "bool", + "default_value": false, + "enabled": false, + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_anti_ooze_retracted_position": + { + "label": "Anti-ooze Retracted Position", + "description": "How far the material needs to be retracted before it stops oozing.", + "type": "float", + "unit": "mm", + "default_value": -4, + "enabled": false, + "minimum_value_warning": "-retraction_amount", + "maximum_value_warning": "0", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_anti_ooze_retraction_speed": + { + "label": "Anti-ooze Retraction Speed", + "description": "How fast the material needs to be retracted during a filament switch to prevent oozing.", + "type": "float", + "unit": "mm/s", + "default_value": 5, + "enabled": false, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_preparation_retracted_position": + { + "label": "Break Preparation Retracted Position", + "description": "How far the filament can be stretched before it breaks, while heated.", + "type": "float", + "unit": "mm", + "default_value": -16, + "enabled": false, + "minimum_value_warning": "-retraction_amount * 4", + "maximum_value_warning": "0", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_preparation_speed": + { + "label": "Break Preparation Retraction Speed", + "description": "How fast the filament needs to be retracted just before breaking it off in a retraction.", + "type": "float", + "unit": "mm/s", + "default_value": 2, + "enabled": false, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_preparation_temperature": + { + "label": "Break Preparation Temperature", + "description": "The temperature used to purge material, should be roughly equal to the highest possible printing temperature.", + "type": "float", + "unit": "°C", + "default_value": 50, + "value": "material_print_temperature", + "enabled": false, + "minimum_value": "-273.15", + "maximum_value_warning": "300", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_retracted_position": + { + "label": "Break Retracted Position", + "description": "How far to retract the filament in order to break it cleanly.", + "type": "float", + "unit": "mm", + "default_value": -50, + "enabled": false, + "minimum_value_warning": "-100", + "maximum_value_warning": "0", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_speed": + { + "label": "Break Retraction Speed", + "description": "The speed at which to retract the filament in order to break it cleanly.", + "type": "float", + "unit": "mm/s", + "default_value": 25, + "enabled": false, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_temperature": + { + "label": "Break Temperature", + "description": "The temperature at which the filament is broken for a clean break.", + "type": "float", + "unit": "°C", + "default_value": 50, + "enabled": false, + "minimum_value": "-273.15", + "maximum_value_warning": "300", + "settable_per_mesh": false, + "settable_per_extruder": true + }, "material_flow": { "label": "Flow", @@ -2229,7 +2401,196 @@ "minimum_value_warning": "50", "maximum_value_warning": "150", "enabled": "machine_gcode_flavor != \"UltiGCode\"", - "settable_per_mesh": true + "settable_per_mesh": true, + "children": + { + "wall_material_flow": + { + "label": "Wall Flow", + "description": "Flow compensation on wall lines.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "material_flow", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "limit_to_extruder": "wall_0_extruder_nr if wall_x_extruder_nr == wall_0_extruder_nr else -1", + "settable_per_mesh": true, + "children": + { + "wall_0_material_flow": + { + "label": "Outer Wall Flow", + "description": "Flow compensation on the outermost wall line.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "wall_material_flow", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "limit_to_extruder": "wall_0_extruder_nr", + "settable_per_mesh": true + }, + "wall_x_material_flow": + { + "label": "Inner Wall(s) Flow", + "description": "Flow compensation on wall lines for all wall lines except the outermost one.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "wall_material_flow", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "limit_to_extruder": "wall_x_extruder_nr", + "settable_per_mesh": true + } + } + }, + "skin_material_flow": + { + "label": "Top/Bottom Flow", + "description": "Flow compensation on top/bottom lines.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "material_flow", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "top_layers > 0 or bottom_layers > 0", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, + "roofing_material_flow": + { + "label": "Top Surface Skin Flow", + "description": "Flow compensation on lines of the areas at the top of the print.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "skin_material_flow", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "limit_to_extruder": "roofing_extruder_nr", + "settable_per_mesh": true, + "enabled": "roofing_layer_count > 0 and top_layers > 0" + }, + "infill_material_flow": + { + "label": "Infill Flow", + "description": "Flow compensation on infill lines.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "material_flow", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "infill_sparse_density > 0", + "limit_to_extruder": "infill_extruder_nr", + "settable_per_mesh": true + }, + "skirt_brim_material_flow": + { + "label": "Skirt/Brim Flow", + "description": "Flow compensation on skirt or brim lines.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "material_flow", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_material_flow": + { + "label": "Support Flow", + "description": "Flow compensation on support structure lines.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "material_flow", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "support_enable", + "limit_to_extruder": "support_infill_extruder_nr", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_interface_material_flow": + { + "label": "Support Interface Flow", + "description": "Flow compensation on lines of support roof or floor.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "material_flow", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "support_enable and support_interface_enable", + "limit_to_extruder": "support_interface_extruder_nr", + "settable_per_mesh": false, + "settable_per_extruder": true, + "children": + { + "support_roof_material_flow": + { + "label": "Support Roof Flow", + "description": "Flow compensation on support roof lines.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "extruderValue(support_roof_extruder_nr, 'support_interface_material_flow')", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "support_enable and support_roof_enable", + "limit_to_extruder": "support_roof_extruder_nr", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_bottom_material_flow": + { + "label": "Support Floor Flow", + "description": "Flow compensation on support floor lines.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_material_flow')", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "support_enable and support_bottom_enable", + "limit_to_extruder": "support_bottom_extruder_nr", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } + }, + "prime_tower_flow": + { + "label": "Prime Tower Flow", + "description": "Flow compensation on prime tower lines.", + "unit": "%", + "type": "float", + "default_value": 100, + "value": "material_flow", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } }, "material_flow_layer_0": { @@ -2237,7 +2598,6 @@ "description": "Flow compensation for the first layer: the amount of material extruded on the initial layer is multiplied by this value.", "unit": "%", "default_value": 100, - "value": "material_flow", "type": "float", "minimum_value": "0.0001", "minimum_value_warning": "50", @@ -2349,7 +2709,6 @@ "minimum_value": "0", "minimum_value_warning": "line_width * 1.5", "maximum_value_warning": "10", - "enabled": "retraction_enable", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2382,10 +2741,10 @@ "limit_support_retractions": { "label": "Limit Support Retractions", - "description": "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure.", + "description": "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure.", "type": "bool", "default_value": true, - "enabled": "retraction_enable and support_enable", + "enabled": "retraction_enable and (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2466,6 +2825,19 @@ "settable_per_extruder": true } } + }, + "switch_extruder_extra_prime_amount": + { + "label": "Nozzle Switch Extra Prime Amount", + "description": "Extra material to prime after nozzle switching.", + "type": "float", + "unit": "mm³", + "default_value": 0, + "minimum_value_warning": "0", + "maximum_value_warning": "100", + "enabled": "retraction_enable", + "settable_per_mesh": false, + "settable_per_extruder": true } } }, @@ -2590,7 +2962,7 @@ "maximum_value_warning": "150", "default_value": 60, "value": "speed_print", - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": false, "limit_to_extruder": "support_extruder_nr", "settable_per_extruder": true, @@ -2607,7 +2979,7 @@ "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "value": "speed_support", - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2622,7 +2994,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", - "enabled": "support_interface_enable and support_enable", + "enabled": "support_interface_enable and (support_enable or support_tree_enable)", "limit_to_extruder": "support_interface_extruder_nr", "value": "speed_support / 1.5", "settable_per_mesh": false, @@ -2639,7 +3011,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", - "enabled": "support_roof_enable and support_enable", + "enabled": "support_roof_enable and (support_enable or support_tree_enable)", "limit_to_extruder": "support_roof_extruder_nr", "value": "extruderValue(support_roof_extruder_nr, 'speed_support_interface')", "settable_per_mesh": false, @@ -2655,7 +3027,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", - "enabled": "support_bottom_enable and support_enable", + "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", "limit_to_extruder": "support_bottom_extruder_nr", "value": "extruderValue(support_bottom_extruder_nr, 'speed_support_interface')", "settable_per_mesh": false, @@ -2750,21 +3122,21 @@ "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "300", "value": "speed_layer_0", - "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'", + "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" }, - "max_feedrate_z_override": + "speed_z_hop": { - "label": "Maximum Z Speed", - "description": "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed.", + "label": "Z Hop Speed", + "description": "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move.", "unit": "mm/s", "type": "float", - "default_value": 0, + "default_value": 10, "minimum_value": "0", - "maximum_value": "299792458000", - "maximum_value_warning": "machine_max_feedrate_z", + "maximum_value": "machine_max_feedrate_z", + "enabled": "retraction_enable and retraction_hop_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2901,7 +3273,6 @@ "default_value": 3000, "value": "acceleration_topbottom", "enabled": "resolveOrValue('acceleration_enabled') and roofing_layer_count > 0 and top_layers > 0", - "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "roofing_extruder_nr", "settable_per_mesh": true }, @@ -2931,7 +3302,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", - "enabled": "resolveOrValue('acceleration_enabled') and support_enable", + "enabled": "resolveOrValue('acceleration_enabled') and (support_enable or support_tree_enable)", "settable_per_mesh": false, "limit_to_extruder": "support_extruder_nr", "settable_per_extruder": true, @@ -2948,7 +3319,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "resolveOrValue('acceleration_enabled') and support_enable", + "enabled": "resolveOrValue('acceleration_enabled') and (support_enable or support_tree_enable)", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2964,7 +3335,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "resolveOrValue('acceleration_enabled') and support_interface_enable and support_enable", + "enabled": "resolveOrValue('acceleration_enabled') and support_interface_enable and (support_enable or support_tree_enable)", "limit_to_extruder": "support_interface_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -2981,7 +3352,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "acceleration_enabled and support_roof_enable and support_enable", + "enabled": "acceleration_enabled and support_roof_enable and (support_enable or support_tree_enable)", "limit_to_extruder": "support_roof_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2997,7 +3368,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "acceleration_enabled and support_bottom_enable and support_enable", + "enabled": "acceleration_enabled and support_bottom_enable and (support_enable or support_tree_enable)", "limit_to_extruder": "support_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3093,7 +3464,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "resolveOrValue('acceleration_enabled')", + "enabled": "resolveOrValue('acceleration_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" }, @@ -3216,7 +3587,7 @@ "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", - "enabled": "resolveOrValue('jerk_enabled') and support_enable", + "enabled": "resolveOrValue('jerk_enabled') and (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_extruder_nr", @@ -3232,7 +3603,7 @@ "value": "jerk_support", "minimum_value": "0", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and support_enable", + "enabled": "resolveOrValue('jerk_enabled') and (support_enable or support_tree_enable)", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3247,7 +3618,7 @@ "value": "jerk_support", "minimum_value": "0", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and support_interface_enable and support_enable", + "enabled": "resolveOrValue('jerk_enabled') and support_interface_enable and (support_enable or support_tree_enable)", "limit_to_extruder": "support_interface_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3263,7 +3634,7 @@ "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')", "minimum_value": "0", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and support_roof_enable and support_enable", + "enabled": "resolveOrValue('jerk_enabled') and support_roof_enable and (support_enable or support_tree_enable)", "limit_to_extruder": "support_roof_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3278,7 +3649,7 @@ "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')", "minimum_value": "0", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and support_bottom_enable and support_enable", + "enabled": "resolveOrValue('jerk_enabled') and support_bottom_enable and (support_enable or support_tree_enable)", "limit_to_extruder": "support_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3368,7 +3739,7 @@ "minimum_value": "0", "maximum_value_warning": "50", "value": "jerk_layer_0", - "enabled": "resolveOrValue('jerk_enabled')", + "enabled": "resolveOrValue('jerk_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))", "settable_per_mesh": false, "limit_to_extruder": "adhesion_extruder_nr" } @@ -3456,17 +3827,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "start_layers_at_same_position": - { - "label": "Start Layers with the Same Part", - "description": "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time.", - "type": "bool", - "default_value": false, - "enabled": false, - "settable_per_mesh": false, - "settable_per_extruder": false, - "settable_per_meshgroup": true - }, "layer_start_x": { "label": "Layer Start X", @@ -3529,6 +3889,20 @@ "enabled": "retraction_hop_enabled and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": true + }, + "retraction_hop_after_extruder_switch_height": + { + "label": "Z Hop After Extruder Switch Height", + "description": "The height difference when performing a Z Hop after extruder switch.", + "unit": "mm", + "type": "float", + "default_value": 1, + "value": "retraction_hop", + "minimum_value_warning": "0", + "maximum_value_warning": "10", + "enabled": "retraction_enable and retraction_hop_after_extruder_switch and extruders_enabled_count > 1", + "settable_per_mesh": false, + "settable_per_extruder": true } } }, @@ -3704,7 +4078,7 @@ "description": "The extruder train to use for printing the support. This is used in multi-extrusion.", "type": "extruder", "default_value": "0", - "value": "defaultExtruderPosition()", + "value": "int(defaultExtruderPosition())", "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, @@ -3842,7 +4216,7 @@ "type": "bool", "default_value": false, "value": "support_pattern == 'cross' or support_pattern == 'gyroid'", - "enabled": "support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'cross' or support_pattern == 'gyroid'", + "enabled": "(support_enable or support_tree_enable) and (support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'cross' or support_pattern == 'gyroid')", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3906,16 +4280,14 @@ } } }, - "support_infill_angle": + "support_infill_angles": { - "label": "Support Infill Line Direction", - "description": "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane.", - "unit": "°", - "type": "float", - "minimum_value": "-180", - "maximum_value": "180", - "default_value": 0, - "enabled": "support_enable and support_pattern != 'concentric' and support_infill_rate > 0", + "label": "Support Infill Line Directions", + "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees.", + "type": "[int]", + "default_value": "[ ]", + "enabled": "(support_enable or support_tree_enable) and support_pattern != 'concentric' and support_infill_rate > 0", + "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -3939,7 +4311,7 @@ "default_value": 8.0, "minimum_value": "0.0", "maximum_value_warning": "50.0", - "enabled": "support_enable", + "enabled": "(support_enable or support_tree_enable) and support_brim_enable", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_infill_extruder_nr", @@ -3954,7 +4326,7 @@ "minimum_value": "0", "maximum_value_warning": "50 / skirt_brim_line_width", "value": "math.ceil(support_brim_width / (skirt_brim_line_width * initial_layer_line_width_factor / 100.0))", - "enabled": "support_enable", + "enabled": "(support_enable or support_tree_enable) and support_brim_enable", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_infill_extruder_nr" @@ -4040,6 +4412,7 @@ "unit": "mm", "type": "float", "minimum_value": "0", + "minimum_value_warning": "support_xy_distance - support_line_width * 2", "maximum_value_warning": "support_xy_distance", "default_value": 0.2, "value": "machine_nozzle_size / 2", @@ -4076,7 +4449,7 @@ "support_join_distance": { "label": "Support Join Distance", - "description": "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one.", + "description": "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one.", "unit": "mm", "type": "float", "default_value": 2.0, @@ -4092,7 +4465,7 @@ "description": "Amount of offset applied to all support polygons in each layer. Positive values can smooth out the support areas and result in more sturdy support.", "unit": "mm", "type": "float", - "default_value": 0.2, + "default_value": 0, "limit_to_extruder": "support_infill_extruder_nr", "minimum_value_warning": "-1 * machine_nozzle_size", "maximum_value_warning": "10 * machine_nozzle_size", @@ -4243,7 +4616,7 @@ "minimum_value": "0", "maximum_value_warning": "support_interface_height", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and support_enable", + "enabled": "support_interface_enable and (support_enable or support_tree_enable)", "settable_per_mesh": true }, "support_interface_density": @@ -4394,21 +4767,21 @@ "minimum_interface_area": { "label": "Minimum Support Interface Area", - "description": "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated.", + "description": "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support.", "unit": "mm²", "type": "float", "default_value": 1.0, "minimum_value": "0", "minimum_value_warning": "minimum_support_area", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and support_enable", + "enabled": "support_interface_enable and (support_enable or support_tree_enable)", "settable_per_mesh": true, "children": { "minimum_roof_area": { "label": "Minimum Support Roof Area", - "description": "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated.", + "description": "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support.", "unit": "mm²", "type": "float", "default_value": 1.0, @@ -4416,13 +4789,13 @@ "minimum_value": "0", "minimum_value_warning": "minimum_support_area", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_roof_enable and support_enable", + "enabled": "support_roof_enable and (support_enable or support_tree_enable)", "settable_per_mesh": true }, "minimum_bottom_area": { "label": "Minimum Support Floor Area", - "description": "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated.", + "description": "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support.", "unit": "mm²", "type": "float", "default_value": 1.0, @@ -4430,7 +4803,7 @@ "minimum_value": "0", "minimum_value_warning": "minimum_support_area", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "support_bottom_enable and support_enable", + "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", "settable_per_mesh": true } } @@ -4479,13 +4852,51 @@ } } }, + "support_interface_angles": + { + "label": "Support Interface Line Directions", + "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees).", + "type": "[int]", + "default_value": "[ ]", + "limit_to_extruder": "support_interface_extruder_nr", + "enabled": "(support_enable or support_tree_enable) and support_interface_enable and support_interface_pattern != 'concentric'", + "settable_per_mesh": false, + "settable_per_extruder": true, + "children": + { + "support_roof_angles": + { + "label": "Support Roof Line Directions", + "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees).", + "type": "[int]", + "default_value": "[ ]", + "value": "support_interface_angles", + "limit_to_extruder": "support_roof_extruder_nr", + "enabled": "(support_enable or support_tree_enable) and support_roof_enable and support_roof_pattern != 'concentric'", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_bottom_angles": + { + "label": "Support Floor Line Directions", + "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees).", + "type": "[int]", + "default_value": "[ ]", + "value": "support_interface_angles", + "limit_to_extruder": "support_bottom_extruder_nr", + "enabled": "(support_enable or support_tree_enable) and support_bottom_enable and support_bottom_pattern != 'concentric'", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } + }, "support_fan_enable": { "label": "Fan Speed Override", "description": "When enabled, the print cooling fan speed is altered for the skin regions immediately above the support.", "type": "bool", "default_value": false, - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": false }, "support_supported_skin_fan_speed": @@ -4497,7 +4908,7 @@ "maximum_value": "100", "default_value": 100, "type": "float", - "enabled": "support_enable and support_fan_enable", + "enabled": "(support_enable or support_tree_enable) and support_fan_enable", "settable_per_mesh": false }, "support_use_towers": @@ -4524,10 +4935,10 @@ "enabled": "support_enable and support_use_towers", "settable_per_mesh": true }, - "support_minimal_diameter": + "support_tower_maximum_supported_diameter": { - "label": "Minimum Diameter", - "description": "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower.", + "label": "Maximum Tower-Supported Diameter", + "description": "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower.", "unit": "mm", "type": "float", "default_value": 3.0, @@ -4579,11 +4990,11 @@ "label": "Enable Prime Blob", "description": "Whether to prime the filament with a blob before printing. Turning this setting on will ensure that the extruder will have material ready at the nozzle before printing. Printing Brim or Skirt can act like priming too, in which case turning this setting off saves some time.", "type": "bool", - "resolve": "any(extruderValues('prime_blob_enable'))", - "default_value": true, + "default_value": false, "settable_per_mesh": false, "settable_per_extruder": true, - "enabled": false + "enabled": false, + "warning_value": "True if resolveOrValue('print_sequence') == 'one_at_a_time' else None" }, "extruder_prime_pos_x": { @@ -4634,7 +5045,7 @@ "description": "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion.", "type": "extruder", "default_value": "0", - "value": "defaultExtruderPosition()", + "value": "int(defaultExtruderPosition())", "enabled": "extruders_enabled_count > 1 and (resolveOrValue('adhesion_type') != 'none' or resolveOrValue('prime_tower_brim_enable'))", "settable_per_mesh": false, "settable_per_extruder": false @@ -4719,7 +5130,7 @@ "description": "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions.", "type": "bool", "default_value": true, - "enabled": "resolveOrValue('adhesion_type') == 'brim' and support_enable", + "enabled": "resolveOrValue('adhesion_type') == 'brim' and (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_infill_extruder_nr" @@ -5221,18 +5632,7 @@ "type": "bool", "enabled": "extruders_enabled_count > 1", "default_value": false, - "resolve": "any(extruderValues('prime_tower_enable'))", - "settable_per_mesh": false, - "settable_per_extruder": false - }, - "prime_tower_circular": - { - "label": "Circular Prime Tower", - "description": "Make the prime tower as a circular shape.", - "type": "bool", - "enabled": "resolveOrValue('prime_tower_enable')", - "default_value": true, - "resolve": "any(extruderValues('prime_tower_circular'))", + "resolve": "(extruders_enabled_count > 1) and any(extruderValues('prime_tower_enable'))", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -5260,7 +5660,7 @@ "type": "float", "default_value": 6, "minimum_value": "0", - "maximum_value_warning": "((resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height') if prime_tower_circular else resolveOrValue('prime_tower_size') ** 2 * resolveOrValue('layer_height')) - sum(extruderValues('prime_tower_min_volume')) + prime_tower_min_volume", + "maximum_value_warning": "(resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height')", "enabled": "resolveOrValue('prime_tower_enable')", "settable_per_mesh": false, "settable_per_extruder": true @@ -5273,7 +5673,7 @@ "unit": "mm", "enabled": "resolveOrValue('prime_tower_enable')", "default_value": 200, - "value": "machine_width - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enable') else 0) - 1", + "value": "machine_width - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - 1", "maximum_value": "machine_width / 2 if machine_center_is_zero else machine_width", "minimum_value": "resolveOrValue('prime_tower_size') - machine_width / 2 if machine_center_is_zero else resolveOrValue('prime_tower_size')", "settable_per_mesh": false, @@ -5287,27 +5687,12 @@ "unit": "mm", "enabled": "resolveOrValue('prime_tower_enable')", "default_value": 200, - "value": "machine_depth - prime_tower_size - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enable') else 0) - 1", + "value": "machine_depth - prime_tower_size - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - 1", "maximum_value": "machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')", "minimum_value": "machine_depth / -2 if machine_center_is_zero else 0", "settable_per_mesh": false, "settable_per_extruder": false }, - "prime_tower_flow": - { - "label": "Prime Tower Flow", - "description": "Flow compensation: the amount of material extruded is multiplied by this value.", - "type": "float", - "unit": "%", - "enabled": "resolveOrValue('prime_tower_enable')", - "default_value": 100, - "value": "material_flow", - "minimum_value": "0.0001", - "minimum_value_warning": "50", - "maximum_value_warning": "150", - "settable_per_mesh": false, - "settable_per_extruder": true - }, "prime_tower_wipe_enabled": { "label": "Wipe Inactive Nozzle on Prime Tower", @@ -5324,6 +5709,7 @@ "description": "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type.", "type": "bool", "enabled": "resolveOrValue('prime_tower_enable') and (resolveOrValue('adhesion_type') != 'raft')", + "resolve": "resolveOrValue('prime_tower_enable') and (resolveOrValue('adhesion_type') in ('none', 'skirt'))", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": false @@ -5450,9 +5836,47 @@ "description": "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle.", "type": "bool", "default_value": true, - "enabled": "not support_enable", + "enabled": "not (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": false + }, + "meshfix_maximum_resolution": + { + "label": "Maximum Resolution", + "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", + "type": "float", + "unit": "mm", + "default_value": 0.5, + "minimum_value": "0.001", + "minimum_value_warning": "0.01", + "maximum_value_warning": "3", + "settable_per_mesh": true + }, + "meshfix_maximum_travel_resolution": + { + "label": "Maximum Travel Resolution", + "description": "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate.", + "type": "float", + "unit": "mm", + "default_value": 1.0, + "value": "min(meshfix_maximum_resolution * speed_travel / speed_print, 2 * line_width)", + "minimum_value": "0.001", + "minimum_value_warning": "0.05", + "maximum_value_warning": "10", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "meshfix_maximum_deviation": + { + "label": "Maximum Deviation", + "description": "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true.", + "type": "float", + "unit": "mm", + "default_value": 0.05, + "minimum_value": "0.001", + "minimum_value_warning": "0.01", + "maximum_value_warning": "0.3", + "settable_per_mesh": true } } }, @@ -5610,7 +6034,7 @@ "smooth_spiralized_contours": { "label": "Smooth Spiralized Contours", - "description": "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details.", + "description": "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details.", "type": "bool", "default_value": true, "enabled": "magic_spiralize", @@ -5812,6 +6236,7 @@ "label": "Infill Travel Optimization", "description": "When enabled, the order in which the infill lines are printed is optimized to reduce the distance travelled. The reduction in travel time achieved very much depends on the model being sliced, infill pattern, density, etc. Note that, for some models that have many small areas of infill, the time to slice the model may be greatly increased.", "type": "bool", + "enabled": "resolveOrValue('retraction_combing') != 'off'", "default_value": false, "settable_per_mesh": true }, @@ -5843,38 +6268,12 @@ "unit": "mm", "type": "float", "default_value": 1.0, - "minimum_value": "0.001", + "minimum_value": "0", "minimum_value_warning": "0.05", "maximum_value_warning": "1.0", "settable_per_mesh": true, "settable_per_extruder": false }, - "meshfix_maximum_resolution": - { - "label": "Maximum Resolution", - "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", - "type": "float", - "unit": "mm", - "default_value": 0.01, - "minimum_value": "0.001", - "minimum_value_warning": "0.005", - "maximum_value_warning": "0.1", - "settable_per_mesh": true - }, - "meshfix_maximum_travel_resolution": - { - "label": "Maximum Travel Resolution", - "description": "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate.", - "type": "float", - "unit": "mm", - "default_value": 0.02, - "value": "meshfix_maximum_resolution * speed_travel / speed_print", - "minimum_value": "0.001", - "minimum_value_warning": "0.005", - "maximum_value_warning": "1", - "settable_per_mesh": false, - "settable_per_extruder": true - }, "support_skip_some_zags": { "label": "Break Up Support In Chunks", @@ -6037,16 +6436,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "skin_alternate_rotation": - { - "label": "Alternate Skin Rotation", - "description": "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions.", - "type": "bool", - "default_value": false, - "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, "cross_infill_pocket_size": { "label": "Cross 3D Pocket Size", @@ -6171,7 +6560,7 @@ "support_conical_enabled": { "label": "Enable Conical Support", - "description": "Experimental feature: Make support areas smaller at the bottom than at the overhang.", + "description": "Make support areas smaller at the bottom than at the overhang.", "type": "bool", "default_value": false, "enabled": "support_enable", @@ -6203,7 +6592,7 @@ "minimum_value_warning": "machine_nozzle_size * 3", "maximum_value_warning": "100.0", "type": "float", - "enabled": "support_conical_enabled and support_enable", + "enabled": "support_conical_enabled and support_enable and support_conical_angle > 0", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": true }, @@ -6264,30 +6653,26 @@ }, "flow_rate_max_extrusion_offset": { - "label": "Flow rate compensation max extrusion offset", - "description": "The maximum distance in mm to compensate.", + "label": "Flow Rate Compensation Max Extrusion Offset", + "description": "The maximum distance in mm to move the filament to compensate for changes in flow rate.", "unit": "mm", "type": "float", "minimum_value": "0", "maximum_value_warning": "10", "default_value": 0, - "value": "0", - "enabled": true, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "flow_rate_extrusion_offset_factor": { - "label": "Flow rate compensation factor", - "description": "The multiplication factor for the flow rate -> distance translation.", + "label": "Flow Rate Compensation Factor", + "description": "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion.", "unit": "%", "type": "float", "minimum_value": "0", "maximum_value_warning": "100", "default_value": 100, - "value": "100", - "enabled": true, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6310,7 +6695,7 @@ "unit": "mm", "default_value": 3, "value": "machine_nozzle_head_distance", - "minimum_value": "0.0001", + "minimum_value": "0.001", "maximum_value_warning": "20", "enabled": "wireframe_enabled", "settable_per_mesh": false, @@ -6340,8 +6725,8 @@ "unit": "mm/s", "type": "float", "default_value": 5, - "minimum_value": "0.1", - "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + max(max_feedrate_z_override, machine_max_feedrate_z) ** 2)", + "minimum_value": "0.05", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)", "maximum_value_warning": "50", "enabled": "wireframe_enabled", "settable_per_mesh": false, @@ -6356,11 +6741,11 @@ "unit": "mm/s", "type": "float", "default_value": 5, - "minimum_value": "0.1", + "minimum_value": "0.05", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "50", "enabled": "wireframe_enabled", - "value": "wireframe_printspeed", + "value": "wireframe_printspeed_flat", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6372,8 +6757,8 @@ "unit": "mm/s", "type": "float", "default_value": 5, - "minimum_value": "0.1", - "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + max(max_feedrate_z_override, machine_max_feedrate_z) ** 2)", + "minimum_value": "0.05", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)", "maximum_value_warning": "50", "enabled": "wireframe_enabled", "value": "wireframe_printspeed", @@ -6388,8 +6773,8 @@ "unit": "mm/s", "type": "float", "default_value": 5, - "minimum_value": "0.1", - "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + max(max_feedrate_z_override, machine_max_feedrate_z) ** 2)", + "minimum_value": "0.05", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)", "maximum_value_warning": "50", "enabled": "wireframe_enabled", "value": "wireframe_printspeed", @@ -6404,7 +6789,7 @@ "unit": "mm/s", "type": "float", "default_value": 5, - "minimum_value": "0.1", + "minimum_value": "0.05", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "100", "value": "wireframe_printspeed", @@ -6527,7 +6912,7 @@ "default_value": 0.6, "minimum_value": "0", "maximum_value_warning": "2.0", - "enabled": "wireframe_enabled", + "enabled": "wireframe_enabled and wireframe_strategy == 'knot'", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6541,7 +6926,7 @@ "default_value": 0.5, "minimum_value": "0", "maximum_value_warning": "wireframe_height", - "enabled": "wireframe_enabled", + "enabled": "wireframe_enabled and wireframe_strategy == 'compensate'", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6555,7 +6940,7 @@ "default_value": 0.6, "minimum_value": "0", "maximum_value_warning": "wireframe_height", - "enabled": "wireframe_enabled", + "enabled": "wireframe_enabled and wireframe_strategy == 'compensate'", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6649,7 +7034,7 @@ }, "adaptive_layer_height_enabled": { - "label": "Use adaptive layers", + "label": "Use Adaptive Layers", "description": "Adaptive layers computes the layer heights depending on the shape of the model.", "type": "bool", "default_value": false, @@ -6659,7 +7044,7 @@ }, "adaptive_layer_height_variation": { - "label": "Adaptive layers maximum variation", + "label": "Adaptive Layers Maximum Variation", "description": "The maximum allowed height different from the base layer height.", "type": "float", "enabled": "adaptive_layer_height_enabled", @@ -6671,23 +7056,25 @@ }, "adaptive_layer_height_variation_step": { - "label": "Adaptive layers variation step size", + "label": "Adaptive Layers Variation Step Size", "description": "The difference in height of the next layer height compared to the previous one.", "type": "float", "enabled": "adaptive_layer_height_enabled", "default_value": 0.01, "unit": "mm", "settable_per_mesh": false, + "minimum_value": "0.001", "settable_per_extruder": false, "settable_per_meshgroup": false }, "adaptive_layer_height_threshold": { - "label": "Adaptive layers threshold", - "description": "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer.", + "label": "Adaptive Layers Topography Size", + "description": "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together.", "type": "float", "enabled": "adaptive_layer_height_enabled", - "default_value": 200.0, + "default_value": 0.2, + "unit": "mm", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6695,7 +7082,7 @@ "wall_overhang_angle": { "label": "Overhanging Wall Angle", - "description": "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging.", + "description": "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either.", "unit": "°", "type": "float", "minimum_value": "0", @@ -6749,6 +7136,17 @@ "enabled": "bridge_settings_enabled", "settable_per_mesh": true }, + "bridge_sparse_infill_max_density": + { + "label": "Bridge Sparse Infill Max Density", + "description": "Maximum density of infill considered to be sparse. Skin over sparse infill is considered to be unsupported and so may be treated as a bridge skin.", + "unit": "%", + "type": "float", + "default_value": 0, + "minimum_value": "0", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, "bridge_wall_coast": { "label": "Bridge Wall Coasting", @@ -6954,44 +7352,303 @@ "type": "float", "enabled": "bridge_settings_enabled and bridge_enable_more_layers", "settable_per_mesh": true + }, + "clean_between_layers": + { + "label": "Wipe Nozzle Between Layers", + "description": "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working.", + "default_value": false, + "type": "bool", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "max_extrusion_before_wipe": + { + "label": "Material Volume Between Wipes", + "description": "Maximum material, that can be extruded before another nozzle wipe is initiated.", + "default_value": 10, + "type": "float", + "unit": "mm³", + "enabled": "clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "wipe_retraction_enable": + { + "label": "Wipe Retraction Enable", + "description": "Retract the filament when the nozzle is moving over a non-printed area.", + "type": "bool", + "default_value": true, + "value": "retraction_enable", + "enabled": "clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "wipe_retraction_amount": + { + "label": "Wipe Retraction Distance", + "description": "Amount to retract the filament so it does not ooze during the wipe sequence.", + "unit": "mm", + "type": "float", + "default_value": 1, + "value": "retraction_amount", + "minimum_value_warning": "-0.0001", + "maximum_value_warning": "10.0", + "enabled": "wipe_retraction_enable and clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "wipe_retraction_extra_prime_amount": + { + "label": "Wipe Retraction Extra Prime Amount", + "description": "Some material can ooze away during a wipe travel moves, which can be compensated for here.", + "unit": "mm³", + "type": "float", + "default_value": 0, + "value": "retraction_extra_prime_amount", + "minimum_value_warning": "-0.0001", + "maximum_value_warning": "10.0", + "enabled": "wipe_retraction_enable and clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "wipe_retraction_speed": + { + "label": "Wipe Retraction Speed", + "description": "The speed at which the filament is retracted and primed during a wipe retraction move.", + "unit": "mm/s", + "type": "float", + "default_value": 5, + "value": "retraction_speed", + "minimum_value": "0", + "minimum_value_warning": "1", + "maximum_value": "machine_max_feedrate_e", + "maximum_value_warning": "70", + "enabled": "wipe_retraction_enable and clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "children": + { + "wipe_retraction_retract_speed": + { + "label": "Wipe Retraction Retract Speed", + "description": "The speed at which the filament is retracted during a wipe retraction move.", + "unit": "mm/s", + "type": "float", + "default_value": 3, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "minimum_value_warning": "1", + "maximum_value_warning": "70", + "enabled": "wipe_retraction_enable and clean_between_layers", + "value": "wipe_retraction_speed", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "wipe_retraction_prime_speed": + { + "label": "Wipe Retraction Prime Speed", + "description": "The speed at which the filament is primed during a wipe retraction move.", + "unit": "mm/s", + "type": "float", + "default_value": 2, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "minimum_value_warning": "1", + "maximum_value_warning": "70", + "enabled": "wipe_retraction_enable and clean_between_layers", + "value": "wipe_retraction_speed", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } + }, + "wipe_pause": + { + "label": "Wipe Pause", + "description": "Pause after the unretract.", + "unit": "s", + "type": "float", + "default_value": 0, + "minimum_value": "0", + "enabled": "clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "wipe_hop_enable": + { + "label": "Wipe Z Hop", + "description": "When wiping, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate.", + "type": "bool", + "default_value": true, + "value": "retraction_hop_enabled", + "enabled": "clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "wipe_hop_amount": + { + "label": "Wipe Z Hop Height", + "description": "The height difference when performing a Z Hop.", + "unit": "mm", + "type": "float", + "default_value": 1, + "value": "retraction_hop", + "enabled": "wipe_hop_enable and clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "wipe_hop_speed": + { + "label": "Wipe Hop Speed", + "description": "Speed to move the z-axis during the hop.", + "unit": "mm/s", + "type": "float", + "default_value": 10, + "value": "speed_z_hop", + "minimum_value": "0", + "minimum_value_warning": "1", + "enabled": "wipe_hop_enable and clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "wipe_brush_pos_x": + { + "label": "Wipe Brush X Position", + "description": "X location where wipe script will start.", + "type": "float", + "unit": "mm", + "default_value": 100, + "minimum_value_warning": "0", + "enabled": "clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "wipe_repeat_count": + { + "label": "Wipe Repeat Count", + "description": "Number of times to move the nozzle across the brush.", + "type": "int", + "minimum_value": "0", + "default_value": 5, + "enabled": "clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "wipe_move_distance": + { + "label": "Wipe Move Distance", + "description": "The distance to move the head back and forth across the brush.", + "unit": "mm", + "type": "float", + "default_value": 20, + "enabled": "clean_between_layers", + "settable_per_mesh": false, + "settable_per_extruder": true, + "settable_per_meshgroup": false + }, + "small_hole_max_size": + { + "label": "Small Hole Max Size", + "description": "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed.", + "unit": "mm", + "type": "float", + "minimum_value": "0", + "default_value": 0, + "settable_per_mesh": true, + "children": + { + "small_feature_max_length": + { + "label": "Small Feature Max Length", + "description": "Feature outlines that are shorter than this length will be printed using Small Feature Speed.", + "unit": "mm", + "type": "float", + "minimum_value": "0", + "default_value": 0, + "value": "small_hole_max_size * math.pi", + "settable_per_mesh": true + } + } + }, + "small_feature_speed_factor": + { + "label": "Small Feature Speed", + "description": "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy.", + "unit": "%", + "type": "float", + "default_value": 50, + "minimum_value": "1", + "minimum_value_warning": "25", + "maximum_value": "100", + "settable_per_mesh": true + }, + "small_feature_speed_factor_0": + { + "label": "Small Feature Initial Layer Speed", + "description": "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy.", + "unit": "%", + "type": "float", + "default_value": 50, + "value": "small_feature_speed_factor", + "minimum_value": "1", + "minimum_value_warning": "25", + "maximum_value": "100", + "settable_per_mesh": true } } }, - "command_line_settings": { + "command_line_settings": + { "label": "Command Line Settings", "description": "Settings which are only used if CuraEngine isn't called from the Cura frontend.", "type": "category", "enabled": false, "children": { - "center_object": { + "center_object": + { "description": "Whether to center the object on the middle of the build platform (0,0), instead of using the coordinate system in which the object was saved.", "type": "bool", "label": "Center Object", "default_value": false, "enabled": false }, - "mesh_position_x": { + "mesh_position_x": + { "description": "Offset applied to the object in the x direction.", "type": "float", "label": "Mesh Position X", "default_value": 0, "enabled": false }, - "mesh_position_y": { + "mesh_position_y": + { "description": "Offset applied to the object in the y direction.", "type": "float", "label": "Mesh Position Y", "default_value": 0, "enabled": false }, - "mesh_position_z": { + "mesh_position_z": + { "description": "Offset applied to the object in the z direction. With this you can perform what was used to be called 'Object Sink'.", "type": "float", "label": "Mesh Position Z", "default_value": 0, "enabled": false }, - "mesh_rotation_matrix": { + "mesh_rotation_matrix": + { "label": "Mesh Rotation Matrix", "description": "Transformation matrix to be applied to the model when loading it from file.", "type": "str", diff --git a/resources/definitions/felixpro2dual.def.json b/resources/definitions/felixpro2dual.def.json new file mode 100644 index 0000000000..fdd8a1b694 --- /dev/null +++ b/resources/definitions/felixpro2dual.def.json @@ -0,0 +1,71 @@ +{ + "version": 2, + "name": "Felix Pro 2 Dual", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "pnks", + "manufacturer": "Felix", + "platform": "FelixPro2_platform.obj", + "platform_offset": [-135, -0.5, 130], + "machine_extruder_trains": + { + "0": "felixpro2_dual_extruder_0", + "1": "felixpro2_dual_extruder_1" + }, + "file_formats": "text/x-gcode", + "has_variants": true, + "has_materials": true, + "preferred_variant_name": "0.35 mm", + "variants_name": "Nozzle diameter" + }, + "overrides": { + "machine_name": { "default_value": "FelixPro2Dual" }, + + "layer_height": { "default_value": 0.15 }, + "layer_height_0": { "default_value": 0.2 }, + + "infill_sparse_density": { "default_value": 20 }, + "wall_thickness": { "default_value": 1 }, + "top_bottom_thickness": { "default_value": 1 }, + + "machine_width": { "default_value": 240 }, + "machine_depth": { "default_value": 225 }, + "machine_height": { "default_value": 245 }, + + "machine_head_with_fans_polygon": + { + "default_value": [ + [ -60, 50 ], + [ -60, -50 ], + [ 70, 50 ], + [ 70, -50 ] + ] + }, + "gantry_height": { "value": "0" }, + "machine_extruder_count": { "default_value": 2 }, + "prime_tower_position_x": { "value": "250" }, + "prime_tower_position_y": { "value": "200" }, + + "machine_heated_bed": { "default_value": true }, + "machine_gcode_flavor": { "default_value": "Repetier" }, + "machine_center_is_zero": { "default_value": false }, + + "speed_print": { "default_value": 80 }, + + "retraction_amount": { "default_value": 1 }, + "retraction_speed": { "default_value": 50}, + "material_flow": { "default_value": 100 }, + "material_flow_layer_0": { "default_value" : 110, "value": "material_flow * 1.1" }, + "adhesion_type": { "default_value": "skirt" }, + "skirt_brim_minimal_length": { "default_value": 130 }, + "skirt_line_count": { "default_value": 3 }, + + "machine_start_gcode": { + "default_value": "G90 ;absolute positioning\r\nM82 ;set extruder to absolute mode\r\nM107 ;start with the fan off\r\nG28 X0 Y0 ;move X\/Y to min endstops\r\nG28 Z0 ;move Z to min endstops\r\nG1 Z15.0 F9000 ;move the platform down 15mm\r\n\r\nT0 ;Switch to the 1st extruder\r\nG92 E0 ;zero the extruded length\r\nG1 F200 E6 ;extrude 6 mm of feed stock\r\nG92 E0 ;zero the extruded length again\r\n;G1 F9000\r\nM117 FPro2 printing...\r\n" + }, + "machine_end_gcode": { + "default_value": "; Endcode FELIXprinters Pro series\r\n; =================================\t; Move extruder to park position\r\nG91 \t\t\t\t\t; Make coordinates relative\r\nG1 Z2 F5000 \t\t\t\t; Move z 2mm up\r\nG90 \t\t\t\t\t; Use absolute coordinates again\t\t\r\nG1 X220 Y243 F7800 \t\t\t; Move bed and printhead to ergonomic position\r\n\r\n; =================================\t; Turn off heaters\r\nT0\t\t\t\t\t; Select left extruder\r\nM104 T0 S0\t\t\t\t; Turn off heater and continue\t\t\t\t\r\nG92 E0\t\t\t\t\t; Reset extruder position\r\nG1 E-8\t\t\t\t\t; Retract filament 8mm\r\nG1 E-5\t\t\t\t\t; Push back filament 3mm\r\nG92 E0\t\t\t\t\t; Reset extruder position\r\n\r\nT1\t\t\t\t\t; Select right extruder\r\nM104 T1 S0\t\t\t\t; Turn off heater and continu\r\nG92 E0\t\t\t\t\t; Reset extruder position\r\nG1 E-8\t\t\t\t\t; Retract filament 8mm\r\nG1 E-5\t\t\t\t\t; Push back filament 3mm\r\nG92 E0\t\t\t\t\t; Reset extruder position\r\nT0\t\t\t\t\t; Select left extruder\r\nM140 S0\t\t\t\t\t; Turn off bed heater\r\n\r\n; =================================\t; Turn the rest off\r\nM107 \t\t\t\t; Turn off fan\r\nM84\t\t\t\t\t; Disable steppers\r\nM117 Print Complete" + } + } +} diff --git a/resources/definitions/felixtec4dual.def.json b/resources/definitions/felixtec4dual.def.json index ba612d4e3c..efc13c1759 100644 --- a/resources/definitions/felixtec4dual.def.json +++ b/resources/definitions/felixtec4dual.def.json @@ -39,19 +39,18 @@ "machine_center_is_zero": { "default_value": false }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 200 }, "retraction_amount": { "default_value": 1 }, "retraction_speed": { "default_value": 50}, - "material_flow": { "default_value": 87 }, + "material_flow": { "default_value": 95 }, "adhesion_type": { "default_value": "skirt" }, "skirt_brim_minimal_length": { "default_value": 130}, - "machine_start_gcode": { - "default_value": "; FELIXprinters | www.FELIXprinters.com | Zeemanlaan 15 3401 MV IJsselstein The Netherlands\n; FELIX Tec 4 | Start Code Dual Extruders v1.0\n; Modified by kerog777@gmail.com\n;================================ \n;Initializing\nM80 ; Turn on the power supply\nM107 ; Turn off fans\nM117 Heating up\nM104 T0 S120\nM104 T1 S120\nM140 S{print_bed_temperature} ; Heatup Bed and continue\nG28 ; Home all\nM109 T0 S{print_temperature} ; Heatup hot-end and continue\nM117 Purging\nT0 ; Select extruder 1\nG92 E0 ; Reset extruder\nG1 X10.0 Y1.1 Z5.0 F15240 ; Move to start-line position\nG1 Z0.3 F15240 ; Move z up\nG1 X127.0 Y1.1 Z0.3 F1500.0 E15 ; Purge 1st line\nG92 E0 ; Reset extruder\n\n;================================ ; Initializing done\nM117 FELIXprinting" + "machine_start_gcode": { + "default_value": "; FELIXprinters | www.FELIXprinters.com | Zeemanlaan 15 3401 MV IJsselstein The Netherlands\n; FELIX Tec 4 | Start Code Dual Extruders v1.0\n; Modified by kerog777@gmail.com\n;================================ \n;Initializing\nM80 ; Turn on the power supply\nM107 ; Turn off fans\nM117 Heating up\nM190 S{material_bed_temperature} ; Heatup Bed\nM104 T0 S120\nM104 T1 S120\nG28 ; Home all\nM109 T0 S{material_print_temperature_layer_0} ; Heatup hot-end\nM117 Purging\nT0 ; Select extruder 1\nG92 E0 ; Reset extruder\nG1 X10.0 Y1.1 Z5.0 F15240 ; Move to start-line position\nG1 Z0.3 F15240 ; Move z up\nG1 X127.0 Y1.1 Z0.3 F1500.0 E15 ; Purge 1st line\nG92 E0 ; Reset extruder\n\n;================================ ; Initializing done\nM117 FELIXprinting" }, "machine_end_gcode": { - "default_value": "; FELIXprinters End Code Tec Series v1.0\n; Modified by kerog777@gmail.com\n; ================================= \n; Move extruder to park position\nG91 ; Make coordinates relative\nG1 Z2 F1000 ; Move z 2mm up\nG90 ; Use absolute coordinates again\n G1 X0 Y0 F15240 ; Move bed and printhead to ergonomic position\n\n; ================================= ; Turn off heaters\nM140 S0 ; Turn off bed heater\nT0 ; Select left extruder\nM104 T0 S0 ; Turn off heater and continue\n G92 E0 ; Reset extruder position\nG1 E-6 ; Retract filament 8mm\nG92 E0 ; Reset extruder position\nT1 ; Select right extruder\nM104 T1 S0 ; Turn off heater and continue\nG92 E0 ; Reset extruder position\nG1 E-6 ; Retract filament 8mm\nG92 E0 ; Reset extruder position\nT0 ; Select left extruder\n\n; ================================= ; Turn the rest off\nM107 ; Turn off fan\nM84 ; Disable steppers\nM117 Finished Printing!" + "default_value": "; FELIXprinters End Code Tec Series v1.0\n; Modified by kerog777@gmail.com\n; ================================= \n; Move extruder to park position\nG91 ; Make coordinates relative\nG1 Z2 F1000 ; Move z 2mm up\nG90 ; Use absolute coordinates again\nG1 X0 Y0 F15240 ; Move bed and printhead to ergonomic position\n\n; ================================= ; Turn off heaters\nM140 S0 ; Turn off bed heater\nT0 ; Select left extruder\nM104 T0 S0 ; Turn off heater and continue\nG92 E0 ; Reset extruder position\nG1 E-6 ; Retract filament 8mm\nG92 E0 ; Reset extruder position\nT1 ; Select right extruder\nM104 T1 S0 ; Turn off heater and continue\nG92 E0 ; Reset extruder position\nG1 E-6 ; Retract filament 8mm\nG92 E0 ; Reset extruder position\nT0 ; Select left extruder\n\n; ================================= ; Turn the rest off\nM107 ; Turn off fan\nM84 ; Disable steppers\nM117 Finished Printing!" } } } diff --git a/resources/definitions/flsun_qq.def.json b/resources/definitions/flsun_qq.def.json new file mode 100644 index 0000000000..02b3849c12 --- /dev/null +++ b/resources/definitions/flsun_qq.def.json @@ -0,0 +1,46 @@ +{ + "version": 2, + "name": "FLSUN QQ", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "manufacturer": "FLSUN", + "author": "Daniel Green", + "file_formats": "text/x-gcode", + "machine_extruder_trains": { + "0": "flsun_qq_extruder" + } + }, + "overrides": { + "machine_extruder_count": { + "default_value": 1 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_width": { + "default_value": 260 + }, + "machine_height": { + "default_value": 285 + }, + "machine_depth": { + "default_value": 260 + }, + "machine_center_is_zero": { + "default_value": true + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G28 ;Home\nG1 Z15.0 F6000 ;Move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_end_gcode": { + "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" + }, + "machine_shape": { + "default_value": "elliptic" + } + } +} diff --git a/resources/definitions/flsun_qq_s.def.json b/resources/definitions/flsun_qq_s.def.json new file mode 100644 index 0000000000..9c3bf571ae --- /dev/null +++ b/resources/definitions/flsun_qq_s.def.json @@ -0,0 +1,71 @@ +{ + "version": 2, + "name": "FLSUN QQ-S", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Cataldo URSO", + "manufacturer": "FLSUN", + "file_formats": "text/x-gcode", + "has_materials": true, + "preferred_quality_type": "draft", + "machine_extruder_trains": { + "0": "flsun_qq_s_extruder_0" + } + }, + "overrides": { + "machine_center_is_zero": { + "default_value": true + }, + "machine_shape": { + "default_value": "elliptic" + }, + "machine_width": { + "default_value": 260 + }, + "machine_depth": { + "default_value": 260 + }, + "machine_height": { + "default_value": 370 + }, + "z_seam_type": { + "default_value": "back" + }, + "gantry_height": { + "value": "0" + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_start_gcode": { + "default_value": "G21\nG90\nM82\nM107 T0\nM190 S{material_bed_temperature}\nM109 S{material_print_temperature} T0\nG28\nG92 E0\nG0 E3 F200\nG92 E0\n" + }, + "machine_end_gcode": { + "default_value": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 E-1 F300 \nG1 Z+0.5 E-5 X-20 Y-20 F9000\nG28 X0 Y0\nM84 ;steppers off\nG90 ;absolute positioning\n" + }, + "infill_sparse_density": { + "default_value": 10 + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ] + }, + "retraction_enable": { + "default_value": true + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_gcode_flavor": { + "default_value": "Repetier" + } + } +} diff --git a/resources/definitions/folgertech_FT-5.def.json b/resources/definitions/folgertech_FT-5.def.json index d3d00a9b25..7ede40a025 100644 --- a/resources/definitions/folgertech_FT-5.def.json +++ b/resources/definitions/folgertech_FT-5.def.json @@ -18,7 +18,7 @@ "machine_width": { "default_value": 300 }, "machine_height": { "default_value": 400 }, "machine_depth": { "default_value": 300 }, - "gantry_height": { "default_value": 55 }, + "gantry_height": { "value": "55" }, "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." diff --git a/resources/definitions/geeetech_a30.def.json b/resources/definitions/geeetech_a30.def.json new file mode 100644 index 0000000000..1f08d37445 --- /dev/null +++ b/resources/definitions/geeetech_a30.def.json @@ -0,0 +1,113 @@ +{ + "version": 2, + "name": "Geeetech A30", + "inherits": "fdmprinter", + "metadata": { + "author": "William & Cataldo URSO", + "manufacturer": "Shenzhen Geeetech Technology", + "file_formats": "text/x-gcode", + "visible": true, + "has_materials": true, + "preferred_quality_type": "draft", + "machine_extruder_trains": { + "0": "geeetech_a30_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "Geeetech A30" + }, + "machine_start_gcode": { + "default_value": "G28 ;Home\nM190 S{material_bed_temperature}\nM109 S{material_print_temperature} T0\nG1 Z15.0 F6000 ;Move the platform down 15mm\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_end_gcode": { + "default_value": "M104 S0;Cooling the heat end\nM140 S0;Cooling the heat bed\nG92 E1\nG1 E-1 F300\nG28 X0 Y0;Home X axis and Y axis\nM84" + }, + "machine_width": { + "default_value": 320 + }, + "machine_height": { + "default_value": 420 + }, + "machine_depth": { + "default_value": 320 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_center_is_zero": { + "default_value": false + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "layer_height": { + "default_value": 0.1 + }, + "layer_height_0": { + "default_value": 0.3 + }, + "retraction_amount": { + "default_value": 2 + }, + "retraction_speed": { + "default_value": 25 + }, + "adhesion_type": { + "default_value": "skirt" + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [-75, 35], + [18, 35], + [18, -18], + [-75, -18] + ] + }, + "gantry_height": { + "value": "55" + }, + "machine_max_feedrate_x": { + "default_value": 300 + }, + "machine_max_feedrate_y": { + "default_value": 300 + }, + "machine_max_feedrate_z": { + "default_value": 7 + }, + "machine_max_feedrate_e": { + "default_value": 50 + }, + "machine_max_acceleration_x": { + "default_value": 2000 + }, + "machine_max_acceleration_y": { + "default_value": 2000 + }, + "machine_max_acceleration_z": { + "default_value": 100 + }, + "machine_max_acceleration_e": { + "default_value": 10000 + }, + "machine_acceleration": { + "default_value": 2000 + }, + "machine_max_jerk_xy": { + "default_value": 10 + }, + "machine_max_jerk_z": { + "default_value": 1 + }, + "machine_max_jerk_e": { + "default_value": 5 + }, + "machine_gcode_flavor": { + "default_value": "Repetier" + } + } +} diff --git a/resources/definitions/gmax15plus.def.json b/resources/definitions/gmax15plus.def.json index 069b8be999..e98d6c02fe 100644 --- a/resources/definitions/gmax15plus.def.json +++ b/resources/definitions/gmax15plus.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus", "version": 2, "name": "gMax 1.5 Plus", "inherits": "fdmprinter", @@ -37,9 +36,8 @@ "retraction_amount": { "default_value": 1 }, "retraction_speed": { "default_value": 70}, "adhesion_type": { "default_value": "skirt" }, - "gantry_height": { "default_value": 50 }, + "gantry_height": { "value": "50" }, "speed_print": { "default_value": 50 }, - "speed_travel": { "default_value": 70 }, "machine_max_acceleration_x": { "default_value": 600 }, "machine_max_acceleration_y": { "default_value": 600 }, "machine_max_acceleration_z": { "default_value": 30 }, @@ -50,9 +48,7 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home X/Y/Z\nM104 S{material_print_temperature} ; Preheat\nM109 S{material_print_temperature} ; Preheat\nG91 ;relative positioning\nG90 ;absolute positioning\nG1 Z25.0 F9000 ;raise nozzle 25mm\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_end_gcode": { "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, - "material_print_temperature": { "default_value": 202 }, "wall_thickness": { "default_value": 1 }, - "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { "default_value": 1 } + "top_bottom_thickness": { "default_value": 1 } } } diff --git a/resources/definitions/gmax15plus_dual.def.json b/resources/definitions/gmax15plus_dual.def.json index 0264ef5977..aaba2cc55b 100644 --- a/resources/definitions/gmax15plus_dual.def.json +++ b/resources/definitions/gmax15plus_dual.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_dual", "version": 2, "name": "gMax 1.5 Plus Dual Extruder", "inherits": "fdmprinter", @@ -35,9 +34,8 @@ "retraction_amount": { "default_value": 1 }, "retraction_speed": { "default_value": 70}, "adhesion_type": { "default_value": "skirt" }, - "gantry_height": { "default_value": 50 }, + "gantry_height": { "value": "50" }, "speed_print": { "default_value": 50 }, - "speed_travel": { "default_value": 70 }, "machine_max_acceleration_x": { "default_value": 600 }, "machine_max_acceleration_y": { "default_value": 600 }, "machine_max_acceleration_z": { "default_value": 30 }, @@ -48,9 +46,7 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home X/Y/Z\nM104 S{material_print_temperature} T0 ; Preheat Left Extruder\nM104 S{material_print_temperature} T1 ; Preheat Right Extruder\nM109 S{material_print_temperature} T0 ; Preheat Left Extruder\nM109 S{material_print_temperature} T1 ; Preheat Right Extruder\nG91 ;relative positioning\nG90 ;absolute positioning\nM218 T1 X34.3 Y0; Set 2nd extruder offset. This can be changed later if needed\nG1 Z25.0 F9000 ;raise nozzle 25mm\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_end_gcode": { "default_value": "M104 S0 T0;Left extruder off\nM104 S0 T1; Right extruder off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, - "material_print_temperature": { "default_value": 202 }, "wall_thickness": { "default_value": 1 }, - "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { "default_value": 1 } + "top_bottom_thickness": { "default_value": 1 } } } diff --git a/resources/definitions/grr_neo.def.json b/resources/definitions/grr_neo.def.json index 67d6a92023..774a3e614c 100644 --- a/resources/definitions/grr_neo.def.json +++ b/resources/definitions/grr_neo.def.json @@ -28,7 +28,7 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-75, -18], [-75, 35], @@ -37,7 +37,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/hellbot_adonis.def.json b/resources/definitions/hellbot_adonis.def.json new file mode 100644 index 0000000000..a73c66a611 --- /dev/null +++ b/resources/definitions/hellbot_adonis.def.json @@ -0,0 +1,32 @@ +{ + "version": 2, + "name": "Hellbot Adonis", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "MUX team", + "manufacturer": "Hellbot", + "file_formats": "text/x-gcode", + "platform": "hellbot_adonis.obj", + "platform_texture": "hellbot.png", + "platform_offset": [0, -1, 0], + "has_materials": true, + "machine_extruder_trains": { + "0": "hellbot_adonis_extruder" + } + }, + "overrides": { + "machine_name": { + "default_value": "Hellbot Adonis" + }, + "machine_width": { + "default_value": 160 + }, + "machine_depth": { + "default_value": 160 + }, + "machine_height": { + "default_value": 160 + } + } +} diff --git a/resources/definitions/hellbot_magna_I.def.json b/resources/definitions/hellbot_magna_I.def.json new file mode 100644 index 0000000000..453dcef718 --- /dev/null +++ b/resources/definitions/hellbot_magna_I.def.json @@ -0,0 +1,32 @@ +{ + "version": 2, + "name": "Hellbot Magna 1", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "MUX team", + "manufacturer": "Hellbot", + "file_formats": "text/x-gcode", + "platform": "hellbot_magna.obj", + "platform_texture": "hellbot.png", + "platform_offset": [0, -1, 0], + "has_materials": true, + "machine_extruder_trains": { + "0": "hellbot_magna_i_extruder" + } + }, + "overrides": { + "machine_name": { + "default_value": "Hellbot Magna 1" + }, + "machine_width": { + "default_value": 220 + }, + "machine_depth": { + "default_value": 220 + }, + "machine_height": { + "default_value": 260 + } + } +} diff --git a/resources/definitions/hellbot_magna_dual.def.json b/resources/definitions/hellbot_magna_dual.def.json new file mode 100644 index 0000000000..5ee36e0749 --- /dev/null +++ b/resources/definitions/hellbot_magna_dual.def.json @@ -0,0 +1,36 @@ +{ + "version": 2, + "name": "Hellbot Magna DUAL", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "MUX team", + "manufacturer": "Hellbot", + "file_formats": "text/x-gcode", + "platform": "hellbot_magna.obj", + "platform_texture": "hellbot.png", + "platform_offset": [0, -1, 0], + "has_materials": true, + "machine_extruder_trains": { + "0": "hellbot_magna_dual_extruder_1", + "1": "hellbot_magna_dual_extruder_2" + } + }, + "overrides": { + "machine_name": { + "default_value": "Hellbot Magna DUAL" + }, + "machine_width": { + "default_value": 220 + }, + "machine_depth": { + "default_value": 220 + }, + "machine_height": { + "default_value": 260 + }, + "machine_extruder_count": { + "default_value": 2 + } + } +} diff --git a/resources/definitions/helloBEEprusa.def.json b/resources/definitions/helloBEEprusa.def.json index 65716ac175..2c8c4839d0 100644 --- a/resources/definitions/helloBEEprusa.def.json +++ b/resources/definitions/helloBEEprusa.def.json @@ -26,28 +26,15 @@ "machine_height": { "default_value": 190 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, - "material_print_temperature": { "default_value": 200 }, - "material_bed_temperature": { "default_value": 60 }, - "line_width": { "default_value": 0.48 }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { "default_value": 3 }, "wall_thickness": { "default_value": 1.2 }, "top_bottom_thickness": { "default_value": 1.2 }, "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { "default_value": 15 }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 160 }, - "speed_layer_0": { "default_value": 30 }, - "speed_wall_x": { "default_value": 35 }, - "speed_wall_0": { "default_value": 30 }, - "speed_infill": { "default_value": 60 }, - "speed_topbottom": { "default_value": 20 }, - "skirt_brim_speed": { "default_value": 35 }, "skirt_line_count": { "default_value": 4 }, "skirt_brim_minimal_length": { "default_value": 30 }, "skirt_gap": { "default_value": 6 }, - "cool_fan_full_at_height": { "default_value": 0.4 }, "retraction_speed": { "default_value": 15.0}, "retraction_amount": { "default_value": 1.5} } diff --git a/resources/definitions/hms434.def.json b/resources/definitions/hms434.def.json new file mode 100644 index 0000000000..ca031f26bf --- /dev/null +++ b/resources/definitions/hms434.def.json @@ -0,0 +1,187 @@ +{ + "name": "HMS434", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Scheepers", + "manufacturer": "Hybrid AM Systems", + "file_formats": "text/x-gcode", + + "has_materials": true, + "preferred_material": "generic_pla", + "exclude_materials": [ + "chromatik_pla", + "dsm_arnitel2045_175", "dsm_novamid1070_175", + "emotiontech_abs", "emotiontech_petg", "emotiontech_pla", "emotiontech_pva-m", "emotiontech_pva-oks", "emotiontech_pva-s", "emotiontech_tpu98a", + "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", + "fiberlogy_hd_pla", + "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", + "generic_abs_175", "generic_cpe_175", "generic_hips_175", "generic_nylon_175", "generic_pc_175", "generic_petg_175", "generic_pva_175", "generic_tpu_175", + "imade3d_petg_175", "imade3d_pla_175", + "innofill_innoflex60_175", + "octofiber_pla", + "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", + "verbatim_bvoh_175", + "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_PLA_Glitter", "Vertex_Delta_PLA_Mat", "Vertex_Delta_PLA_Satin", "Vertex_Delta_PLA_Wood", "Vertex_Delta_TPU", + "tizyx_abs", "tizyx_flex", "tizyx_petg", "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", + "zyyx_pro_flex", "zyyx_pro_pla" + ], + + "has_variants": true, + "variants_name": "Tool", + "preferred_variant_name": "0.4mm TP extruder", + + "has_machine_quality": true, + "preferred_quality_type": "normal", + + "machine_extruder_trains": + { + "0": "hms434_tool_1", + "1": "hms434_tool_2", + "2": "hms434_tool_3", + "3": "hms434_tool_4", + "4": "hms434_tool_5", + "5": "hms434_tool_6", + "6": "hms434_tool_7", + "7": "hms434_tool_8" + }, + "platform": "hms_platform.obj", + "platform_offset": [ 26, -13.2, 162.5], + "platform_texture": "hms434.png", + "first_start_actions": ["MachineSettingsAction"], + "supported_actions": ["MachineSettingsAction"] + }, + + "overrides": { + "machine_extruder_count": {"default_value": 2 }, + "material_diameter": {"default_value": 1.75 }, + "machine_heated_bed": {"default_value": true }, + "machine_heated_build_volume":{"default_value": true }, + "machine_center_is_zero": {"default_value": false }, + "gantry_height": {"value": "35" }, + "machine_height": {"default_value": 400 }, + "machine_depth": {"default_value": 325 }, + "machine_width": {"default_value": 450 }, + "machine_gcode_flavor": {"default_value": "RepRap (RepRap)" }, + "material_print_temp_wait": {"default_value": false }, + "material_bed_temp_wait": {"default_value": false }, + "machine_max_feedrate_z": {"default_value": 10 }, + "machine_acceleration": {"default_value": 1000 }, + "machine_start_gcode": {"default_value": "\n;Neither Hybrid AM Systems nor any of Hybrid AM Systems representatives has any liabilities or gives any warranties on this .gcode file, or on any or all objects made with this .gcode file.\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\n\nG1 X-44 Y-100 F9000;go to wipe point\nG1 Z0 F900\nG1 Z0.2 F900\nM117 HMS434 Printing ...\n\n" }, + "machine_end_gcode": {"default_value": "" }, + + "retraction_extra_prime_amount": {"minimum_value_warning": "-2.0" }, + "optimize_wall_printing_order": {"default_value": true }, + "machine_nozzle_heat_up_speed": {"default_value": 12}, + "machine_nozzle_cool_down_speed": {"default_value": 20}, + "machine_min_cool_heat_time_window": {"default_value": 5}, + + "layer_height": {"maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, + "layer_height_0": {"maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, + "line_width": {"value": "(machine_nozzle_size + layer_height)" }, + "infill_line_width": {"value": "(line_width)" }, + "initial_layer_line_width_factor": {"value": 110 }, + + "wall_thickness": {"value": "(line_width * 3) if infill_sparse_density < 95 else line_width" }, + "roofing_layer_count": {"value": "4" }, + "top_bottom_thickness": {"value": "(layer_height_0 + (layer_height * 3))" }, + "top_layers": {"value": "4" }, + "bottom_layers": {"value": "(top_layers)" }, + "wall_0_inset": {"value": "0" }, + "outer_inset_first": {"value": true }, + "alternate_extra_perimeter": {"value": false }, + "filter_out_tiny_gaps": {"value": false }, + "fill_outline_gaps": {"value": true }, + "skin_outline_count": {"value": "0"}, + "ironing_enabled": {"value": true }, + "ironing_line_spacing": {"value": "line_width"}, + "ironing_flow": {"value": "0"}, + "ironing_inset": {"value": "line_width"}, + "speed_ironing": {"value": "150"}, + + "infill_sparse_density": {"value": 30}, + "infill_pattern": {"value": "'lines'"}, + "infill_overlap": {"value": 5}, + "skin_overlap": {"value": 5}, + "infill_wipe_dist": {"value": 0.0}, + "infill_before_walls": {"value": false}, + + "material_print_temperature_layer_0": {"value": "material_print_temperature + 5"}, + "material_initial_print_temperature": {"value": "material_print_temperature", + "maximum_value_warning": "material_print_temperature + 15"}, + "material_final_print_temperature": {"value": "material_print_temperature"}, + "material_bed_temperature_layer_0": {"value": "material_bed_temperature + 1"}, + "material_flow": {"value": "100"}, + "retraction_amount": {"value": "1"}, + "retraction_speed": {"value": "20"}, + "retraction_prime_speed": {"value": "8"}, + "retraction_min_travel": {"value": "(round(line_width * 10))"}, + "switch_extruder_retraction_amount": {"value": 2}, + "switch_extruder_retraction_speeds": {"value": "(retraction_speed)"}, + "switch_extruder_prime_speed": {"value": "(retraction_prime_speed)"}, + + "speed_print": {"value": "50"}, + "speed_infill": {"value": "speed_print"}, + "speed_wall": {"value": "(speed_print/5*3) if speed_print < 51 else speed_print"}, + "speed_wall_x": {"value": "speed_wall"}, + "speed_layer_0": {"value": "(speed_print/5*4) if speed_print < 51 else speed_print"}, + "speed_topbottom": {"value": "speed_layer_0"}, + "speed_travel": {"value": "150"}, + "speed_travel_layer_0": {"value": "speed_travel"}, + "speed_support_interface": {"value": "speed_topbottom"}, + "speed_z_hop": {"value": 10}, + "speed_slowdown_layers": {"value": 1}, + "acceleration_print": {"value": 1000}, + "acceleration_travel": {"value": 1000}, + "jerk_print": {"value": 10}, + "jerk_travel": {"value": 10}, + + "retraction_hop_enabled": {"value": false}, + "retraction_hop": {"value": 1}, + "retraction_combing": {"value": "'off'"}, + + "cool_fan_speed": {"value": 0}, + "cool_fan_enabled": {"value": true}, + "cool_min_layer_time_fan_speed_max": {"value": "cool_min_layer_time"}, + "cool_min_layer_time": {"value": 20}, + "cool_min_speed": {"value": "10"}, + "cool_lift_head": {"value": false}, + + "support_z_distance": {"value": 0}, + "support_xy_distance": {"value": 1}, + "support_join_distance": {"value": 10}, + "support_interface_enable": {"value": true}, + "support_interface_height": {"value": 0.5}, + "support_interface_pattern": {"value": "'lines'"}, + + "adhesion_type": {"value": "'none'"}, + "skirt_gap": {"value": 1}, + "skirt_brim_minimal_length": {"value": 50}, + + "prime_tower_enable": {"value": false }, + "prime_tower_size": {"value": 20.6 }, + "prime_tower_position_x": {"value": 125 }, + "prime_tower_position_y": {"value": 70 }, + "prime_blob_enable": {"default_value": false }, + + "coasting_enable": {"value": true}, + "coasting_volume": {"value": 0.1}, + "coasting_min_volume": {"value": 0.17}, + "coasting_speed": {"value": 90}, + "bridge_settings_enabled": {"value": true}, + "bridge_wall_min_length": {"value": 3}, + "bridge_skin_support_threshold": {"value": 90}, + "bridge_wall_speed": {"value": 15}, + "bridge_wall_material_flow": {"value": 130}, + "bridge_skin_speed": {"value": 15}, + "bridge_skin_material_flow": {"value": 130}, + "bridge_fan_speed": {"value": 0}, + "bridge_skin_density_2": {"value": 100}, + "bridge_skin_density_3": {"value": 100}, + "bridge_skin_material_flow_2": {"value": 110}, + "bridge_skin_material_flow_3": {"value": 100}, + "bridge_skin_speed_2": {"value": 20}, + "bridge_skin_speed_3": {"value": 30} + } +} diff --git a/resources/definitions/imade3d_jellybox.def.json b/resources/definitions/imade3d_jellybox.def.json index ae9ca176f5..635cb1fdd0 100644 --- a/resources/definitions/imade3d_jellybox.def.json +++ b/resources/definitions/imade3d_jellybox.def.json @@ -1,19 +1,16 @@ { "version": 2, - "name": "IMADE3D JellyBOX", - "inherits": "fdmprinter", + "name": "IMADE3D JellyBOX Original", + "inherits": "imade3d_jellybox_root", "metadata": { "visible": true, "author": "IMADE3D", - "manufacturer": "IMADE3D", "platform": "imade3d_jellybox_platform.stl", "platform_offset": [ 0, -0.3, 0], - "file_formats": "text/x-gcode", "preferred_variant_name": "0.4 mm", "preferred_quality_type": "fast", "has_materials": true, "has_variants": true, - "has_machine_materials": true, "has_machine_quality": true, "machine_extruder_trains": { "0": "imade3d_jellybox_extruder_0" @@ -22,18 +19,15 @@ "overrides": { "machine_head_with_fans_polygon": { "default_value": [[ 0, 0 ],[ 0, 0 ],[ 0, 0 ],[ 0, 0 ]]}, - "machine_name": { "default_value": "IMADE3D JellyBOX" }, + "machine_name": { "default_value": "IMADE3D JellyBOX Original" }, "machine_width": { "default_value": 170 }, "machine_height": { "default_value": 145 }, "machine_depth": { "default_value": 160 }, - "machine_heated_bed": { "default_value": true }, - "machine_center_is_zero": { "default_value": false }, - "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": ";---------------------------------------\n; ; ; Jellybox Start Script Begin ; ; ;\n;_______________________________________\n; M92 E140 ;optionally adjust steps per mm for your filament\n\n; Print Settings Summary\n; (leave these alone: this is only a list of the slicing settings)\n; (overwriting these values will NOT change your printer's behavior)\n; sliced for : {machine_name}\n; nozzle diameter : {machine_nozzle_size}\n; filament diameter : {material_diameter}\n; layer height : {layer_height}\n; 1st layer height : {layer_height_0}\n; line width : {line_width}\n; outer wall wipe dist. : {wall_0_wipe_dist}\n; infill line width : {infill_line_width}\n; wall thickness : {wall_thickness}\n; top thickness : {top_thickness}\n; bottom thickness : {bottom_thickness}\n; infill density : {infill_sparse_density}\n; infill pattern : {infill_pattern}\n; print temperature : {material_print_temperature}\n; 1st layer print temp. : {material_print_temperature_layer_0}\n; heated bed temperature : {material_bed_temperature}\n; 1st layer bed temp. : {material_bed_temperature_layer_0}\n; regular fan speed : {cool_fan_speed_min}\n; max fan speed : {cool_fan_speed_max}\n; retraction amount : {retraction_amount}\n; retr. retract speed : {retraction_retract_speed}\n; retr. prime speed : {retraction_prime_speed}\n; build plate adhesion : {adhesion_type}\n; support ? {support_enable}\n; spiralized ? {magic_spiralize}\n\nM117 Preparing ;write Preparing\nM140 S{material_bed_temperature_layer_0} ;set bed temperature and move on\nM109 S{material_print_temperature} ; wait for the extruder to reach desired temperature\nM206 X10.0 Y0.0 ;set x homing offset for default bed leveling\nG21 ;metric values\nG90 ;absolute positioning\nM107 ;start with the fan off\nM82 ;set extruder to absolute mode\nG28 ;home all axes\nM203 Z4 ;slow Z speed down for greater accuracy when probing\nG29 ;auto bed leveling procedure\nM203 Z7 ;pick up z speed again for printing\nM190 S{material_bed_temperature_layer_0} ;wait for the bed to reach desired temperature\nM109 S{material_print_temperature_layer_0} ;wait for the extruder to reach desired temperature\nG92 E0 ;reset the extruder position\nG1 F1500 E15 ;extrude 15mm of feed stock\nG92 E0 ;reset the extruder position again\nM117 Print starting ;write Print starting\n;---------------------------------------------\n; ; ; Jellybox Printer Start Script End ; ; ;\n;_____________________________________________\n" + "default_value": ";---------------------------------------\n; ; ; Jellybox Start Script Begin ; ; ;\n;_______________________________________\n; for slicer: CURA 3\n; start gcode last modified Jun 1, 2019\n\n; Print Settings Summary\n; (leave these alone: this is only a list of the slicing settings)\n; (overwriting these values will NOT change your printer's behavior)\n; sliced for : {machine_name}\n; jobname : {jobname}\n; gcode generated : {day}, {date}, {time}\n; est. print time : {print_time}\n; nozzle diameter : {machine_nozzle_size}\n; filament diameter : {material_diameter}\n; layer height : {layer_height}\n; 1st layer height : {layer_height_0}\n; line width : {line_width} \n; outer wall wipe dist. : {wall_0_wipe_dist}\n; infill line width : {infill_line_width}\n; wall thickness : {wall_thickness}\n; top thickness : {top_thickness}\n; bottom thickness : {bottom_thickness}\n; infill density : {infill_sparse_density}\n; infill pattern : {infill_pattern}\n; print temperature : {material_print_temperature}\n; 1st layer print temp. : {material_print_temperature_layer_0}\n; heated bed temperature : {material_bed_temperature}\n; 1st layer bed temp. : {material_bed_temperature_layer_0}\n; regular fan speed : {cool_fan_speed_min}\n; max fan speed : {cool_fan_speed_max}\n; retraction amount : {retraction_amount}\n; retr. retract speed : {retraction_retract_speed}\n; retr. prime speed : {retraction_prime_speed}\n; build plate adhesion : {adhesion_type}\n; support ? {support_enable}\n; spiralized ? {magic_spiralize}\n\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nM117 Preparing ;write Preparing\nM190 S{material_bed_temperature_layer_0} ;wait for the bed to reach desired temperature\nM109 S180 ;wait for the extruder to reach 180C\nG28 ;home all axes\nM203 Z4 ;slow Z speed down for greater accuracy when probing\nG29 O ;run auto bed leveling procedure IF leveling not active already\n; M500 ;optionally save the mesh\nM203 Z7 ;pick up z speed again for printing\nG28 X ;home x to get as far from the plate as possible\nM420 S1 ;(re) enable bed leveling if turned off by the G28\nG0 Y0 F5000 ;position Y in front\nG0 Z15 F3000 ;position Z\nM109 S{material_print_temperature_layer_0} ;wait for the extruder to reach desired temperature\nM300 S440 P300 ;play a tone\n; M0 Ready! Click to start ; optionally, stop and wait for user to continue\nM420 S1 ;(re) enable bed leveling to make iron-sure\nM117 Print starting ;write Print starting\n;================ ;PRINT:LINE start\nG90 ;absolute positioning\nG92 E0 ;reset the extruder position\nM420 S1 ;(re) enable bed leveling to make iron-sure\nG0 Z0 ;get Z down\nM83 ;relative extrusion mode\nM420 S1 ;(re) enable bed leveling to make iron-sure\nG1 E20 F300 ;extrude __mm of feed stock\nG1 E18 F250 ;extrude __mm of feed stock\nG1 E10 F250 ;extrude __mm of feed stock\nG4 S2 ;pause for ooze\nM400 ;make sure all is finished\nM420 S1 ;(re) enable bed leveling to make iron-sure\nG0 F500 X3 Y0 Z0.3;get to the start of the LINE\nG1 E2 F300 ;extrude __mm of feed stock\nG1 F1000 X152 E7 ;print a thick LINE extruding __mm along the way\nG92 E0 ;reset the extruder position\n;---------------------------------------------\n; ; ; Jellybox Printer Start Script End ; ; ;\n;_____________________________________________\n" }, "machine_end_gcode": { - "default_value": "\n;---------------------------------\n;;; Jellybox End Script Begin ;;;\n;_________________________________\nM117 Finishing Up ;write Finishing Up\n\nM104 S0 ;extruder heater off\nM140 S0 ;bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG90 ;absolute positioning\nG28 X ;home x, so the head is out of the way\nG1 Y100 ;move Y forward, so the print is more accessible\nM84 ;steppers off\n\nM117 Print finished ;write Print finished\n;---------------------------------------\n;;; Jellybox End Script End ;;;\n;_______________________________________" + "default_value": "\n;---------------------------------\n;;; Jellybox End Script Begin ;;;\n;_________________________________\n; end gcode last modified Nov 30, 2018\nM117 Finishing Up ;write Finishing Up\n\nM107 ;turn the fan off\nM104 S0 ;extruder heater off\nM140 S0 ;bed heater off (if you have it)\nG91 ;relative positioning (includes extruder)\nG1 E-1 F2500 ;retract the filament a bit before lifting the nozzle to release some of the pressure\nG1 Z0.5 E-4 X-10 F9000 ;get out and retract filament even more\nG1 E-25 F2500 ;retract even more\nG90 ;absolute positioning (includes extruder)\nG28 X ;home X so the head is out of the way\nG1 Y140 ;move Y forward, so the print is more accessible\nM84 ;steppers off\n\nM117 Print finished ;write Print finished\n;---------------------------------------\n;;; Jellybox End Script End ;;;\n;_______________________________________" } } } diff --git a/resources/definitions/imade3d_jellybox_2.def.json b/resources/definitions/imade3d_jellybox_2.def.json new file mode 100644 index 0000000000..7d7b82e194 --- /dev/null +++ b/resources/definitions/imade3d_jellybox_2.def.json @@ -0,0 +1,36 @@ +{ + "version": 2, + "name": "IMADE3D JellyBOX 2", + "inherits": "imade3d_jellybox_root", + "metadata": { + "visible": true, + "author": "IMADE3D", + "platform": "imade3d_jellybox_2_platform.stl", + "platform_offset": [ 0, -10, 0], + "preferred_variant_name": "0.4 mm", + "preferred_quality_type": "fast", + "has_materials": true, + "has_variants": true, + "has_machine_quality": true, + "machine_extruder_trains": { + "0": "imade3d_jellybox_2_extruder_0" + } + }, + + "overrides": { + "gradual_infill_steps":{"default_value": 0}, + "gradual_infill_step_height": {"default_value": 3}, + "machine_head_with_fans_polygon": { "default_value": [[ 0, 0 ],[ 0, 0 ],[ 0, 0 ],[ 0, 0 ]]}, + "machine_name": { "default_value": "IMADE3D JellyBOX 2" }, + "machine_width": { "default_value": 180 }, + "machine_height": { "default_value": 145 }, + "machine_depth": { "default_value": 165 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "machine_start_gcode": { + "default_value": ";---------------------------------------\n; ; ; Jellybox Start Script Begin ; ; ;\n;_______________________________________\n; for slicer: CURA 3\n; start gcode last modified Jun 1, 2019\n\n; Print Settings Summary\n; (leave these alone: this is only a list of the slicing settings)\n; (overwriting these values will NOT change your printer's behavior)\n; sliced for : {machine_name}\n; jobname : {jobname}\n; gcode generated : {day}, {date}, {time}\n; est. print time : {print_time}\n; nozzle diameter : {machine_nozzle_size}\n; filament diameter : {material_diameter}\n; layer height : {layer_height}\n; 1st layer height : {layer_height_0}\n; line width : {line_width} \n; outer wall wipe dist. : {wall_0_wipe_dist}\n; infill line width : {infill_line_width}\n; wall thickness : {wall_thickness}\n; top thickness : {top_thickness}\n; bottom thickness : {bottom_thickness}\n; infill density : {infill_sparse_density}\n; infill pattern : {infill_pattern}\n; print temperature : {material_print_temperature}\n; 1st layer print temp. : {material_print_temperature_layer_0}\n; heated bed temperature : {material_bed_temperature}\n; 1st layer bed temp. : {material_bed_temperature_layer_0}\n; regular fan speed : {cool_fan_speed_min}\n; max fan speed : {cool_fan_speed_max}\n; retraction amount : {retraction_amount}\n; retr. retract speed : {retraction_retract_speed}\n; retr. prime speed : {retraction_prime_speed}\n; build plate adhesion : {adhesion_type}\n; support ? {support_enable}\n; spiralized ? {magic_spiralize}\n\nG21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nM117 Preparing ;write Preparing\nM190 S{material_bed_temperature_layer_0} ;wait for the bed to reach desired temperature\nM109 S180 ;wait for the extruder to reach 180C\nG28 ;home all axes\nM203 Z4 ;slow Z speed down for greater accuracy when probing\nG29 O ;run auto bed leveling procedure IF leveling not active already\n; M500 ;optionally save the mesh\nM203 Z7 ;pick up z speed again for printing\nG28 X ;home x to get as far from the plate as possible\nM420 S1 ;(re) enable bed leveling if turned off by the G28\nG0 Y0 F5000 ;position Y in front\nG0 Z15 F3000 ;position Z\nM109 S{material_print_temperature_layer_0} ;wait for the extruder to reach desired temperature\nM300 S440 P300 ;play a tone\n; M0 Ready! Click to start ; optionally, stop and wait for user to continue\nM420 S1 ;(re) enable bed leveling to make iron-sure\nM117 Print starting ;write Print starting\n;================ ;PRINT:LINE start\nG90 ;absolute positioning\nG92 E0 ;reset the extruder position\nM420 S1 ;(re) enable bed leveling to make iron-sure\nG0 Z0 ;get Z down\nM83 ;relative extrusion mode\nM420 S1 ;(re) enable bed leveling to make iron-sure\nG1 E20 F300 ;extrude __mm of feed stock\nG1 E18 F250 ;extrude __mm of feed stock\nG1 E10 F250 ;extrude __mm of feed stock\nG4 S2 ;pause for ooze\nM400 ;make sure all is finished\nM420 S1 ;(re) enable bed leveling to make iron-sure\nG0 F500 X3 Y0 Z0.3;get to the start of the LINE\nG1 E2 F300 ;extrude __mm of feed stock\nG1 F1000 X152 E7 ;print a thick LINE extruding __mm along the way\nG92 E0 ;reset the extruder position\n;---------------------------------------------\n; ; ; Jellybox Printer Start Script End ; ; ;\n;_____________________________________________\n" + }, + "machine_end_gcode": { + "default_value": "\n;---------------------------------\n;;; Jellybox End Script Begin ;;;\n;_________________________________\n; end gcode last modified Nov 30, 2018\nM117 Finishing Up ;write Finishing Up\n\nM107 ;turn the fan off\nM104 S0 ;extruder heater off\nM140 S0 ;bed heater off (if you have it)\nG91 ;relative positioning (includes extruder)\nG1 E-1 F2500 ;retract the filament a bit before lifting the nozzle to release some of the pressure\nG1 Z0.5 E-4 X-10 F9000 ;get out and retract filament even more\nG1 E-25 F2500 ;retract even more\nG90 ;absolute positioning (includes extruder)\nG28 X ;home X so the head is out of the way\nG1 Y140 ;move Y forward, so the print is more accessible\nM84 ;steppers off\n\nM117 Print finished ;write Print finished\n;---------------------------------------\n;;; Jellybox End Script End ;;;\n;_______________________________________" + } + } +} diff --git a/resources/definitions/imade3d_jellybox_root.def.json b/resources/definitions/imade3d_jellybox_root.def.json new file mode 100644 index 0000000000..52f541f1d4 --- /dev/null +++ b/resources/definitions/imade3d_jellybox_root.def.json @@ -0,0 +1,143 @@ +{ + "version": 2, + "name": "imade3d_jellybox_root", + "inherits": "fdmprinter", + "metadata": { + "author": "IMADE3D", + "manufacturer": "IMADE3D", + "category": "Ultimaker", + "visible": false, + "file_formats": "text/x-gcode", + "exclude_materials": [ + "chromatik_pla", + "dsm_arnitel2045_175", + "dsm_novamid1070_175", + "fabtotum_abs", + "fabtotum_nylon", + "fabtotum_pla", + "fabtotum_tpu", + "fiberlogy_hd_pla", + "filo3d_pla_green", + "filo3d_pla_red", + "filo3d_pla", + "generic_abs_175", + "generic_abs", + "generic_bam", + "generic_cpe_175", + "generic_cpe_plus", + "generic_cpe", + "generic_hips_175", + "generic_hips", + "generic_nylon_175", + "generic_nylon", + "generic_pc_175", + "generic_pc", + "generic_petg", + "generic_petg_175", + "generic_pla", + "generic_pla_175", + "generic_pp", + "generic_pva_175", + "generic_pva", + "generic_tough_pla", + "generic_tpu", + "imade3d_petg_green", + "imade3d_petg_pink", + "imade3d_pla_green", + "imade3d_pla_pink", + "innofill_innoflex60_175", + "octofiber_pla", + "polyflex_pla", + "polymax_pla", + "polyplus_pla", + "polywood_pla", + "tizyx_abs", + "tizyx_pla_bois", + "tizyx_pla", + "ultimaker_abs_black", + "ultimaker_abs_blue", + "ultimaker_abs_green", + "ultimaker_abs_grey", + "ultimaker_abs_orange", + "ultimaker_abs_pearl-gold", + "ultimaker_abs_red", + "ultimaker_abs_silver-metallic", + "ultimaker_abs_white", + "ultimaker_abs_yellow", + "ultimaker_bam", + "ultimaker_cpe_black", + "ultimaker_cpe_blue", + "ultimaker_cpe_dark-grey", + "ultimaker_cpe_green", + "ultimaker_cpe_light-grey", + "ultimaker_cpe_plus_black", + "ultimaker_cpe_plus_transparent", + "ultimaker_cpe_plus_white", + "ultimaker_cpe_red", + "ultimaker_cpe_transparent", + "ultimaker_cpe_white", + "ultimaker_cpe_yellow", + "ultimaker_nylon_black", + "ultimaker_nylon_transparent", + "ultimaker_pc_black", + "ultimaker_pc_transparent", + "ultimaker_pc_white", + "ultimaker_pla_black", + "ultimaker_pla_blue", + "ultimaker_pla_green", + "ultimaker_pla_magenta", + "ultimaker_pla_orange", + "ultimaker_pla_pearl-white", + "ultimaker_pla_red", + "ultimaker_pla_silver-metallic", + "ultimaker_pla_transparent", + "ultimaker_pla_white", + "ultimaker_pla_yellow", + "ultimaker_pp_transparent", + "ultimaker_pva", + "ultimaker_tough_pla_black", + "ultimaker_tough_pla_green", + "ultimaker_tough_pla_red", + "ultimaker_tough_pla_white", + "ultimaker_tpu_black", + "ultimaker_tpu_blue", + "ultimaker_tpu_red", + "ultimaker_tpu_white", + "verbatim_bvoh_175", + "Vertex_Delta_ABS", + "Vertex_Delta_PET", + "Vertex_Delta_PLA", + "Vertex_Delta_TPU", + "zyyx_pro_flex", + "zyyx_pro_pla" + ] + }, + "overrides": { + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "material_diameter": { + "default_value": 1.75 + }, + "material_print_temperature": { + "minimum_value": "0" + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_heated_bed": { + "default_value": true + }, + "material_bed_temperature": { + "minimum_value": "0" + }, + "material_standby_temperature": { + "minimum_value": "0" + }, + "relative_extrusion": + { + "value": true, + "enabled": true + } + } +} diff --git a/resources/definitions/innovo_inventor.def.json b/resources/definitions/innovo_inventor.def.json index 91a6d8365b..df839b0fe4 100644 --- a/resources/definitions/innovo_inventor.def.json +++ b/resources/definitions/innovo_inventor.def.json @@ -32,7 +32,7 @@ "machine_center_is_zero": { "default_value": true }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-43.7, -19.2], [-43.7, 55], @@ -41,7 +41,7 @@ ] }, "gantry_height": { - "default_value": 82.3 + "value": "82.3" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" @@ -61,36 +61,10 @@ "top_bottom_thickness": { "default_value": 1.2 }, - "material_print_temperature": { - "default_value": 205 - }, - "material_bed_temperature": { - "default_value": 60 - }, "speed_print": { "default_value": 50 }, - "speed_wall_0": { - "default_value": 25 - }, - "speed_wall_x": { - "default_value": 40 - }, - "speed_infill": { - "default_value": 80 - }, - "speed_topbottom": { - "default_value": 30 - }, - "speed_support_interface": - { - "default_value": 20 - }, - "speed_travel": { - "default_value": 150 - }, "speed_layer_0": { - "default_value": 30.0, "minimum_value": 0.1 } } diff --git a/resources/definitions/jgaurora_a1.def.json b/resources/definitions/jgaurora_a1.def.json index b9a921c311..1c910f0d95 100644 --- a/resources/definitions/jgaurora_a1.def.json +++ b/resources/definitions/jgaurora_a1.def.json @@ -39,7 +39,7 @@ "default_value": false }, "gantry_height": { - "default_value": 10 + "value": "10" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 215 - }, - "material_bed_temperature": { - "default_value": 67 - }, "layer_height_0": { "default_value": 0.12 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 12 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/jgaurora_a3s.def.json b/resources/definitions/jgaurora_a3s.def.json new file mode 100644 index 0000000000..ead0a5f9e7 --- /dev/null +++ b/resources/definitions/jgaurora_a3s.def.json @@ -0,0 +1,72 @@ +{ + "name": "JGAurora A3S", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Samuel Pinches", + "manufacturer": "JGAurora", + "file_formats": "text/x-gcode", + "preferred_quality_type": "normal", + "machine_extruder_trains": + { + "0": "jgaurora_a3s_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "JGAurora A3S" + }, + "machine_start_gcode": { + "default_value": "; -- START GCODE --\nG21 ;set units to millimetres\nG90 ;set to absolute positioning\nM106 S0 ;set fan speed to zero (turned off)\nG28 ;home all axis\nG92 E0 ;zero the extruded length\nG1 Z1 F1000 ;move up slightly\nG1 X60.0 Z0 E9.0 F1000.0;intro line\nG1 X100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\n; -- end of START GCODE --" + }, + "machine_end_gcode": { + "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 ;move to the X-axis origin (Home)\nG0 Y200 F600 ;bring the bed to the front for easy print removal\nM84 ;turn off stepper motors\n; -- end of END GCODE --" + }, + "machine_width": { + "default_value": 205 + }, + "machine_height": { + "default_value": 205 + }, + "machine_depth": { + "default_value": 205 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_center_is_zero": { + "default_value": false + }, + "gantry_height": { + "value": "10" + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "material_diameter": { + "default_value": 1.75 + }, + "layer_height_0": { + "default_value": 0.12 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "speed_print": { + "default_value": 35 + }, + "support_enable": { + "default_value": true + }, + "retraction_enable": { + "default_value": true + }, + "retraction_amount": { + "default_value": 8 + }, + "retraction_speed": { + "default_value": 45 + } + } +} diff --git a/resources/definitions/jgaurora_a5.def.json b/resources/definitions/jgaurora_a5.def.json index d84a8440e6..b9f179d38e 100644 --- a/resources/definitions/jgaurora_a5.def.json +++ b/resources/definitions/jgaurora_a5.def.json @@ -41,7 +41,7 @@ "default_value": false }, "gantry_height": { - "default_value": 10 + "value": "10" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" @@ -49,12 +49,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 215 - }, - "material_bed_temperature": { - "default_value": 67 - }, "layer_height_0": { "default_value": 0.12 }, @@ -64,21 +58,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 12 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/jgaurora_jgmaker_magic.def.json b/resources/definitions/jgaurora_jgmaker_magic.def.json new file mode 100644 index 0000000000..8d0349a48c --- /dev/null +++ b/resources/definitions/jgaurora_jgmaker_magic.def.json @@ -0,0 +1,72 @@ +{ + "name": "JGAurora JGMaker Magic", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Samuel Pinches", + "manufacturer": "JGAurora", + "file_formats": "text/x-gcode", + "preferred_quality_type": "fast", + "machine_extruder_trains": + { + "0": "jgaurora_jgmaker_magic_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "JGAurora JGMaker Magic" + }, + "machine_start_gcode": { + "default_value": "; -- START GCODE --\nG21 ;set units to millimetres\nG90 ;set to absolute positioning\nM106 S0 ;set fan speed to zero (turned off)\nG28 ;home all axis\nM420 S1 ;turn on mesh bed levelling if enabled in firmware\nG92 E0 ;zero the extruded length\nG1 Z1 F1000 ;move up slightly\nG1 X60.0 Z0 E9.0 F1000.0;intro line\nG1 X100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\n; -- end of START GCODE --" + }, + "machine_end_gcode": { + "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 ;move to the X-axis origin (Home)\nG0 Y280 F600 ;bring the bed to the front for easy print removal\nM84 ;turn off stepper motors\n; -- end of END GCODE --" + }, + "machine_width": { + "default_value": 220 + }, + "machine_height": { + "default_value": 250 + }, + "machine_depth": { + "default_value": 220 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_center_is_zero": { + "default_value": false + }, + "gantry_height": { + "value": "10" + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "material_diameter": { + "default_value": 1.75 + }, + "layer_height_0": { + "default_value": 0.2 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "speed_print": { + "default_value": 60 + }, + "support_enable": { + "default_value": true + }, + "retraction_enable": { + "default_value": true + }, + "retraction_amount": { + "default_value": 5 + }, + "retraction_speed": { + "default_value": 50 + } + } +} diff --git a/resources/definitions/jgaurora_z_603s.def.json b/resources/definitions/jgaurora_z_603s.def.json index 3a78585240..8dbf5a82bb 100644 --- a/resources/definitions/jgaurora_z_603s.def.json +++ b/resources/definitions/jgaurora_z_603s.def.json @@ -21,8 +21,8 @@ "default_value": "; -- START GCODE --\nG21 ;set units to millimetres\nG90 ;set to absolute positioning\nM106 S0 ;set fan speed to zero (turned off)\nG28 ;home all axis\nM420 S1 ;turn on mesh bed levelling if enabled in firmware\nG92 E0 ;zero the extruded length\nG1 Z1 F1000 ;move up slightly\nG1 X60.0 Z0 E9.0 F1000.0;intro line\nG1 X100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\n; -- end of START GCODE --" }, "machine_end_gcode": { - "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 ;move to the X-axis origin (Home)\nG0 Y280 F600 ;bring the bed to the front for easy print removal\nM84 ;turn off stepper motors\n; -- end of END GCODE --" - }, + "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 Y0 F600 ;move to the X/Y-axis origin (Home)\nM84 ;turn off stepper motors\n; -- end of END GCODE --" + }, "machine_width": { "default_value": 280 }, @@ -39,7 +39,7 @@ "default_value": false }, "gantry_height": { - "default_value": 10 + "value": "10" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 55 - }, "layer_height_0": { "default_value": 0.2 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 60 - }, - "speed_wall": { - "default_value": 30 - }, - "speed_topbottom": { - "default_value": 45 - }, - "speed_travel": { - "default_value": 125 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/julia.def.json b/resources/definitions/julia.def.json index 62e4170c1f..15e5057a55 100644 --- a/resources/definitions/julia.def.json +++ b/resources/definitions/julia.def.json @@ -21,25 +21,14 @@ "machine_end_gcode": { "default_value": " M104 S0 ;extruder heater off\n M140 S0 ;heated bed heater off (if you have it)\n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning\n" }, - "material_bed_temperature": { "default_value": 100 }, "layer_height": { "default_value": 0.2 }, "support_angle": { "default_value": 30 }, - "infill_overlap": { "default_value": 30 }, "layer_height_0": { "default_value": 0.2 }, "speed_print": { "default_value": 80 }, - "speed_wall_0": { "default_value": 30 }, - "speed_travel": { "default_value": 150 }, - "brim_line_count": { "default_value": 15 }, - "skin_overlap": { "default_value": 30 }, "prime_tower_size": { "default_value": 8.660254037844387 }, - "bottom_thickness": { "default_value": 0.8 }, "retraction_amount": { "default_value": 3 }, - "speed_topbottom": { "default_value": 80 }, - "material_print_temperature": { "default_value": 230 }, "support_pattern": { "default_value": "grid" }, - "speed_infill": { "default_value": 80 }, "infill_sparse_density": { "default_value": 10 }, - "top_thickness": { "default_value": 0.8 }, "machine_extruder_count": { "default_value": 1 }, "retraction_combing": { "default_value": "off" }, "machine_heated_bed": { "default_value": true }, diff --git a/resources/definitions/kemiq_q2_beta.def.json b/resources/definitions/kemiq_q2_beta.def.json index 387818565e..f0ae009419 100644 --- a/resources/definitions/kemiq_q2_beta.def.json +++ b/resources/definitions/kemiq_q2_beta.def.json @@ -41,7 +41,7 @@ "default_value": 2 }, "gantry_height": { - "default_value": 0 + "value": "0" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/kemiq_q2_gama.def.json b/resources/definitions/kemiq_q2_gama.def.json index fd6f2d54aa..07ff6dcbf7 100644 --- a/resources/definitions/kemiq_q2_gama.def.json +++ b/resources/definitions/kemiq_q2_gama.def.json @@ -42,7 +42,7 @@ "default_value": 2 }, "gantry_height": { - "default_value": 0 + "value": "0" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/key3d_tyro.def.json b/resources/definitions/key3d_tyro.def.json new file mode 100644 index 0000000000..0bfc78c115 --- /dev/null +++ b/resources/definitions/key3d_tyro.def.json @@ -0,0 +1,65 @@ +{ + "name": "Tyro", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "DragonJe", + "manufacturer": "Key3D", + "file_formats": "text/x-gcode", + "platform_offset": [0, 0, 0], + "has_materials": true, + "has_variants": false, + "preferred_quality_type": "normal", + "has_machine_quality": true, + "preferred_material": "generic_pla", + "machine_extruder_trains": + { + "0": "key3d_tyro_extruder_0" + } + }, + + "overrides": { + "machine_name": { + "default_value": "Tyro" + }, + "machine_width": { + "default_value": 150 + }, + "machine_height": { + "default_value": 150 + }, + "machine_depth": { + "default_value": 150 + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [-30, 34], + [-30, -32], + [30, -32], + [30, 34] + ] + }, + "gantry_height": { + "value": "30" + }, + "machine_heated_bed": { + "default_value": false + }, + "machine_heated_build_volume": { + "default_value": false + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G28 ; Home\nG1 Z15.0 F6000 ; Move Z axis up 15mm\n ; Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_end_gcode": { + "default_value": "M104 S0\nM140 S0\n ; Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" + } + } +} diff --git a/resources/definitions/kossel_mini.def.json b/resources/definitions/kossel_mini.def.json index 91f374fb6d..d9c3b3d37f 100644 --- a/resources/definitions/kossel_mini.def.json +++ b/resources/definitions/kossel_mini.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Claudio Sampaio (Patola)", - "manufacturer": "Other", + "manufacturer": "Johann", "file_formats": "text/x-gcode", "platform": "kossel_platform.stl", "platform_offset": [0, -0.25, 0], diff --git a/resources/definitions/kossel_pro.def.json b/resources/definitions/kossel_pro.def.json index e104538b2c..f26c6ed068 100644 --- a/resources/definitions/kossel_pro.def.json +++ b/resources/definitions/kossel_pro.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Chris Petersen", - "manufacturer": "OpenBeam", + "manufacturer": "Johann", "file_formats": "text/x-gcode", "platform": "kossel_pro_build_platform.stl", "platform_offset": [0, -0.25, 0], diff --git a/resources/definitions/kupido.def.json b/resources/definitions/kupido.def.json index 412fe979b8..ad0182a5f6 100644 --- a/resources/definitions/kupido.def.json +++ b/resources/definitions/kupido.def.json @@ -1,13 +1,21 @@ { - "name": "Kupido", "version": 2, + "name": "KUPIDO", "inherits": "fdmprinter", - "metadata": { + "metadata": + { "visible": true, - "author": "Ultimaker", - "manufacturer": "Kupido", + "author": "ALYA", + "manufacturer": "Kati Hal ARGE", + "category": "Other", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0], + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla","tizyx_pla","tizyx_abs","tizyx_pla_bois" ], + "preferred_material": "generic_pla", + "has_machine_quality": true, + "has_materials": true, + "has_variants": false, + "supports_usb_connection": false, "machine_extruder_trains": { "0": "kupido_extruder_0" @@ -15,26 +23,27 @@ }, "overrides": { - "machine_name": { "default_value": "Kupido" }, - "machine_start_gcode": { - "default_value": " ;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {infill_sparse_density}\n ;M190 S{material_bed_temperature} ;Uncomment to add your own bed temperature line\n ;M109 S{material_print_temperature} ;Uncomment to add your own temperature line\n G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X Y to endstops\n G28 Z0 ;move Z to endstops\n G1 Z20.0 F40 ;move the platform down 20mm\n G1 Y0 X170 F{speed_travel}\n G92 E0 ;zero the extruded length\n G1 F200 E10 ;extrude 3mm of feed stock\n G92 E0 ;zero the extruded length again\n G4 P7000\n G1 F{speed_travel}\n ;Put printing message on LCD screen\n M117 Printing...\n" + "machine_name": { "default_value": "KUPIDO" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 195 }, + "machine_height": { "default_value": 190 }, + "machine_depth": { "default_value": 195 }, + "machine_center_is_zero": { "default_value": false }, + "gantry_height": { "value": "55" }, + "retraction_amount": { "default_value": 1 }, + "support_enable": { "default_value": true}, + "machine_head_with_fans_polygon": { + "default_value": [[75, 18],[18, 18],[18, 35],[75, 35]] }, - "machine_end_gcode": { - "default_value": " M104 S0 ;extruder heater off\n M140 S0 ;heated bed heater off (if you have it)\n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning\n" + "adhesion_type": {"options": {"raft": "Raft" ,"none": "None", "brim": "Brim"}, "default_value": "raft"}, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": + { + "default_value": ";Sliced at: {day} {date} {time} \n ;Basic settings: Layer height: {layer_height} Walls: {wall_thickness} Fill: {fill_density} \n ;Print time: {print_time} \n ;Filament used: {filament_amount}m {filament_weight}g \n ;Filament cost: {filament_cost} \n G28 X0 Y0 ;move X Y to endstops \n G28 Z0 ;move Z to endstops \n M190 S{material_bed_temperature} ;bed temp \n M107 ; switch fan off \n M109 S{material_print_temperature} ;extruder temp set \n G1 F3000 \n G1 Z10 \n G92 E0 ;zero the extruded length \n G1 F200 E1 ;extrude 1mm of feed stock \n G92 E0 ;zero the extruded length again \n G4 P7000 ; wait 7000ms \n M117 Printing... ;Put printing message on LCD screen" }, - "prime_tower_size": { "default_value": 8.660254037844387 }, - "retraction_speed": { "default_value": 60 }, - "material_bed_temperature": { "default_value": 60 }, - "speed_wall_x": { "default_value": 40 }, - "skirt_line_count": { "default_value": 2 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 30 }, - "material_print_temperature": { "default_value": 220 }, - "brim_line_count": { "default_value": 15 }, - "retraction_amount": { "default_value": 3.6 }, - "speed_topbottom": { "default_value": 20 }, - "layer_height": { "default_value": 0.2 }, - "speed_print": { "default_value": 30 }, - "speed_infill": { "default_value": 30 } + "machine_end_gcode": + { + "default_value": ";End GCode\nM104 S0 ;extruder heater off \nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nG28 Z0\nM84 ;steppers off\nG90 ;absolute positioning\n;{profile_string}" + } } -} +} \ No newline at end of file diff --git a/resources/definitions/leapfrog_bolt_pro.def.json b/resources/definitions/leapfrog_bolt_pro.def.json new file mode 100644 index 0000000000..09b9ecded5 --- /dev/null +++ b/resources/definitions/leapfrog_bolt_pro.def.json @@ -0,0 +1,115 @@ +{ + "version": 2, + "name": "Leapfrog Bolt Pro", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Karan and Vincent 20191104", + "manufacturer": "Leapfrog B.V.", + "category": "Other", + "platform": "leapfrog_bolt_pro_platform.stl", + "platform_offset": [0, 0, -14], + "file_formats": "text/x-gcode", + "supports_usb_connection": false, + "supports_network_connection": false, + "has_materials": true, + "has_machine_quality": true, + "has_variants": true, + "preferred_variant_name": "Brass 0.4", + "preferred_material": "leapfrog_epla_natural", + "variants_name": "Hot end", + "exclude_materials": [ + "generic_pla_175", + "generic_abs_175", + "generic_cpe_175", + "generic_hips_175", + "generic_nylon_175", + "generic_pc_175", + "generic_petg_175", + "generic_pva_175", + "generic_tpu_175", + "chromatik_pla", + "dsm_arnitel2045_175", + "dsm_novamid1070_175", + "emotiontech_abs", + "emotiontech_petg", + "emotiontech_pla", + "emotiontech_pva-m", + "emotiontech_pva-oks", + "emotiontech_pva-s", + "emotiontech_tpu98a", + "fabtotum_abs", + "fabtotum_nylon", + "fabtotum_pla", + "fabtotum_tpu", + "fiberlogy_hd_pla", + "filo3d_pla", + "filo3d_pla_green", + "filo3d_pla_red", + "imade3d_petg_175", + "imade3d_pla_175", + "innofill_innoflex60_175", + "octofiber_pla", + "polyflex_pla", + "polymax_pla", + "polyplus_pla", + "polywood_pla", + "tizyx_abs", + "tizyx_pla", + "tizyx_flex", + "tizyx_petg", + "tizyx_pva", + "tizyx_pla_bois", + "verbatim_bvoh_175", + "Vertex_Delta_ABS", + "Vertex_Delta_PET", + "Vertex_Delta_PLA_Glitter", + "Vertex_Delta_PLA_Mat", + "Vertex_Delta_PLA_Satin", + "Vertex_Delta_PLA_Wood", + "Vertex_Delta_PLA", + "Vertex_Delta_TPU", + "zyyx_pro_flex", + "zyyx_pro_pla" + ], + "machine_extruder_trains": + { + "0": "leapfrog_bolt_pro_extruder_right", + "1": "leapfrog_bolt_pro_extruder_left" + } + }, + "overrides": { + "machine_name": {"default_value": "Leapfrog Bolt Pro" }, + "machine_extruder_count": {"default_value": 2}, + "machine_center_is_zero": {"default_value": false}, + "machine_width": {"default_value": 302}, + "machine_height": {"default_value": 205}, + "machine_depth": {"default_value": 322}, + "machine_heated_bed": {"default_value": true}, + "machine_head_with_fans_polygon": {"default_value": [[-60, 110 ], [-60, -45], [60, -45 ], [60, 110]]}, + "machine_max_feedrate_z": {"default_value": 16.7 }, + "machine_max_feedrate_e": {"default_value": 50 }, + "machine_max_acceleration_z": {"default_value": 100 }, + "machine_acceleration": {"default_value": 400 }, + "machine_max_jerk_xy": {"default_value": 20 }, + "machine_max_jerk_z": {"default_value": 0.4 }, + "machine_max_jerk_e": {"default_value": 5 }, + "machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"}, + "material_final_print_temperature": {"value": "default_material_print_temperature" }, + "material_initial_print_temperature": {"value": "default_material_print_temperature" }, + "gantry_height": {"value": "20"}, + "retraction_combing": { "default_value": "all" }, + "retraction_amount": {"default_value": 2}, + "adhesion_type": {"default_value": "skirt"}, + "skirt_line_count": {"default_value": 3}, + "machine_use_extruder_offset_to_offset_coords": {"default_value": true}, + "machine_start_gcode": {"default_value": "G90\nG28 X0 Y0 Z0\nG1 Z5 F1000\nG92 E0\nG1 Y-32 F12000\nG1 E15 F1000\nG1 E45 F150\nG4 S5"}, + "machine_end_gcode": {"default_value": "G92 E0\nG1 E-3 F300\nM104 S0 T0\nM104 S0 T1\nM140 S0\nG28 X0 Y0\nM84"}, + "prime_tower_enable": { "resolve": "extruders_enabled_count > 1"}, + "prime_tower_position_x": {"value": "169" }, + "prime_tower_position_y": {"value": "25" }, + "speed_travel": { "value": "200" }, + "build_volume_temperature": {"enabled": false}, + "material_standby_temperature": {"enabled": false } + } +} diff --git a/resources/definitions/makeR_pegasus.def.json b/resources/definitions/makeR_pegasus.def.json index ac09aa01ac..63f76194a4 100644 --- a/resources/definitions/makeR_pegasus.def.json +++ b/resources/definitions/makeR_pegasus.def.json @@ -32,7 +32,7 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-75, -18], [-75, 35], @@ -41,7 +41,7 @@ ] }, "gantry_height": { - "default_value": -25 + "value": "25" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/makeR_prusa_tairona_i3.def.json b/resources/definitions/makeR_prusa_tairona_i3.def.json index 0e59874978..3c57c0cbc8 100644 --- a/resources/definitions/makeR_prusa_tairona_i3.def.json +++ b/resources/definitions/makeR_prusa_tairona_i3.def.json @@ -32,7 +32,7 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-75, -18], [-75, 35], @@ -41,7 +41,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/makeblock_mcreate.def.json b/resources/definitions/makeblock_mcreate.def.json new file mode 100644 index 0000000000..7a2d575395 --- /dev/null +++ b/resources/definitions/makeblock_mcreate.def.json @@ -0,0 +1,68 @@ +{ + "version": 2, + "name": "Makeblock mCreate", + "inherits": "fdmprinter", + "metadata": { + "author": "Makeblock", + "manufacturer": "Makeblock", + "visible": true, + "file_formats": "application/gzip;text/x-gcode", + "has_machine_quality": true, + "preferred_quality_type": "normal", + "machine_extruder_trains": { + "0": "makeblock_mcreate_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "Makeblock mCreate" + }, + "machine_width": { + "default_value": 225 + }, + "machine_depth": { + "default_value": 225 + }, + "machine_height": { + "default_value": 300 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "machine_gcode_flavor": { + "default_value": "Marlin" + }, + "gantry_height": { + "value": 15.0 + }, + "machine_extruder_count": { + "default_value": 1 + }, + "machine_start_gcode": { + "default_value": "; Mcreate Start Gcode \nG28 ; Home all axes \nG92 E0 ; Reset Extruder\nG1 X0 Y0 Z15 F3000.0 ; Move to start position \nG1 E10 F400 ;load filament \nG1 E2 F400 ;retarct filament \nG92 E0 ; Reset Extruder \nG1 X0 Y130 Z15 F3000.0 \nG12 ; clean nozzle \nG1 X0 Y0 Z0.3 F3000.0 ; Move to start position \nG1 E9.0 F400 ;loadsome filament \nG92 E0 ; Reset Extruder \n; End of start GCode" + }, + "machine_end_gcode": { + "default_value": "; Mcreate end Gcode \nG4 ; Wait command in buffer have finished \nG92 E0 \nG1 E-2 F300; retract filament \nG28 X Z; home x z axis \nG1 F3000 Y220;Move Heat Bed to the front for easy print removal \nM104 S0; Turn off the nozzle heat \nM140 S0; Turn off the bed heat \nM107 ; Turn off the Fan \nM84 ; Disable stepper motors \n; End of GCode" + } + } +} diff --git a/resources/definitions/makeit_pro_l.def.json b/resources/definitions/makeit_pro_l.def.json index d40d63f97b..d601a5c309 100644 --- a/resources/definitions/makeit_pro_l.def.json +++ b/resources/definitions/makeit_pro_l.def.json @@ -4,8 +4,8 @@ "inherits": "fdmprinter", "metadata": { "visible": true, - "author": "NA", - "manufacturer": "NA", + "author": "unknown", + "manufacturer": "MAKEiT 3D", "file_formats": "text/x-gcode", "has_materials": false, "machine_extruder_trains": @@ -39,7 +39,7 @@ ] }, "gantry_height": { - "default_value": 330 + "value": "330" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true @@ -77,27 +77,12 @@ "retraction_amount": { "default_value": 6 }, - "retraction_min_travel": { - "default_value": 1.5 - }, - "speed_travel": { - "default_value": 150 - }, "speed_print": { "default_value": 60 }, "wall_thickness": { "default_value": 1.2 }, - "bottom_thickness": { - "default_value": 0.2 - }, - "speed_layer_0": { - "default_value": 20 - }, - "speed_print_layer_0": { - "default_value": 20 - }, "cool_min_layer_time_fan_speed_max": { "default_value": 5 }, diff --git a/resources/definitions/makeit_pro_m.def.json b/resources/definitions/makeit_pro_m.def.json index 1f0381df86..267646b647 100644 --- a/resources/definitions/makeit_pro_m.def.json +++ b/resources/definitions/makeit_pro_m.def.json @@ -4,8 +4,8 @@ "inherits": "fdmprinter", "metadata": { "visible": true, - "author": "NA", - "manufacturer": "NA", + "author": "unknown", + "manufacturer": "MAKEiT 3D", "file_formats": "text/x-gcode", "has_materials": false, "machine_extruder_trains": @@ -39,7 +39,7 @@ ] }, "gantry_height": { - "default_value": 200 + "value": "200" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true @@ -77,27 +77,12 @@ "retraction_amount": { "default_value": 6 }, - "retraction_min_travel": { - "default_value": 1.5 - }, - "speed_travel": { - "default_value": 150 - }, "speed_print": { "default_value": 60 }, "wall_thickness": { "default_value": 1.2 }, - "bottom_thickness": { - "default_value": 0.2 - }, - "speed_layer_0": { - "default_value": 20 - }, - "speed_print_layer_0": { - "default_value": 20 - }, "cool_min_layer_time_fan_speed_max": { "default_value": 5 }, diff --git a/resources/definitions/maker_starter.def.json b/resources/definitions/maker_starter.def.json index be85e54967..96dca118af 100644 --- a/resources/definitions/maker_starter.def.json +++ b/resources/definitions/maker_starter.def.json @@ -33,7 +33,7 @@ "default_value": false }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" @@ -53,57 +53,15 @@ "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { - "default_value": 2 - }, - "top_layers": { - "default_value": 4 - }, - "bottom_layers": { - "default_value": 4 - }, "speed_print": { "default_value": 50 }, - "speed_wall": { - "default_value": 30 - }, - "speed_wall_0": { - "default_value": 30 - }, - "speed_wall_x": { - "default_value": 30 - }, - "speed_topbottom": { - "default_value": 50 - }, - "speed_support": { - "default_value": 50 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, - "skirt_brim_speed": { - "default_value": 15 - }, "speed_slowdown_layers": { "default_value": 4 }, "infill_sparse_density": { "default_value": 20 }, - "cool_fan_speed_min": { - "default_value": 50 - }, - "cool_fan_speed_max": { - "default_value": 100 - }, - "cool_fan_full_layer": { - "default_value": 4 - }, "cool_min_layer_time": { "default_value": 5 }, @@ -122,17 +80,11 @@ "support_z_distance": { "default_value": 0.2 }, - "support_top_distance": { - "default_value": 0.2 - }, - "support_bottom_distance": { - "default_value": 0.24 - }, "support_pattern": { "default_value": "ZigZag" }, "support_infill_rate": { - "default_value": 15 + "value": "15 if support_enable else 0 if support_tree_enable else 15" }, "adhesion_type": { "default_value": "raft" @@ -140,24 +92,6 @@ "skirt_brim_minimal_length": { "default_value": 100 }, - "raft_base_line_spacing": { - "default_value": 2 - }, - "raft_base_thickness": { - "default_value": 0.3 - }, - "raft_base_line_width": { - "default_value": 2 - }, - "raft_base_speed": { - "default_value": 15 - }, - "raft_interface_thickness": { - "default_value": 0.24 - }, - "raft_interface_line_width": { - "default_value": 0.6 - }, "raft_airgap": { "default_value": 0.2 }, diff --git a/resources/definitions/makerbotreplicator.def.json b/resources/definitions/makerbotreplicator.def.json index 3b02215e74..24b556e1ee 100644 --- a/resources/definitions/makerbotreplicator.def.json +++ b/resources/definitions/makerbotreplicator.def.json @@ -18,9 +18,7 @@ "overrides": { "prime_tower_size": { "default_value": 10.0 }, "infill_sparse_density": { "default_value": 10 }, - "speed_travel": { "default_value": 150 }, "layer_height": { "default_value": 0.15 }, - "material_print_temperature": { "default_value": 220 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/malyan_m180.def.json b/resources/definitions/malyan_m180.def.json index 53864dabae..bb812b6dd6 100644 --- a/resources/definitions/malyan_m180.def.json +++ b/resources/definitions/malyan_m180.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m180", "version": 2, "name": "Malyan M180", "inherits": "fdmprinter", @@ -53,7 +52,7 @@ "default_value": 92 }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/malyan_m200.def.json b/resources/definitions/malyan_m200.def.json index f2c01b3831..fc8756ff6a 100644 --- a/resources/definitions/malyan_m200.def.json +++ b/resources/definitions/malyan_m200.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m200", "version": 2, "name": "Malyan M200", "inherits": "fdmprinter", @@ -30,8 +29,6 @@ "speed_wall_x": { "value": "speed_print" }, "speed_support": { "value": "speed_wall_0" }, "speed_layer_0": { "value": "round(speed_print / 2.0, 2)" }, - "speed_travel": { "default_value": 50 }, - "speed_travel_layer_0": { "default_value": 40 }, "speed_infill": { "value": "speed_print" }, "speed_topbottom": {"value": "speed_print / 2"}, @@ -80,7 +77,6 @@ "raft_surface_layers": { "default_value": 1 }, "skirt_line_count": { "default_value": 2}, "brim_width" : { "default_value": 5}, - "start_layers_at_same_position": { "default_value": true}, "retraction_combing": { "default_value": "noskin" }, "retraction_amount" : { "default_value": 4.5}, "retraction_speed" : { "default_value": 40}, diff --git a/resources/definitions/mankati_fullscale_xt_plus.def.json b/resources/definitions/mankati_fullscale_xt_plus.def.json index 507e5209b2..b6fa040750 100644 --- a/resources/definitions/mankati_fullscale_xt_plus.def.json +++ b/resources/definitions/mankati_fullscale_xt_plus.def.json @@ -28,7 +28,7 @@ [ 3, 3 ] ] }, - "gantry_height": { "default_value": 0 }, + "gantry_height": { "value": "0" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { @@ -41,23 +41,15 @@ "layer_height": { "default_value": 0.2 }, "wall_thickness": { "default_value": 0.8 }, "top_bottom_thickness": { "default_value": 0.3 }, - "material_print_temperature": { "default_value": 195 }, - "material_bed_temperature": { "default_value": 60 }, "retraction_enable": { "default_value": true }, "retraction_speed": { "default_value": 50 }, "retraction_amount": { "default_value": 0.8 }, "retraction_hop": { "default_value": 0.075 }, "speed_print": { "default_value": 60 }, - "speed_infill": { "default_value": 100 }, - "speed_topbottom": { "default_value": 15 }, - "speed_travel": { "default_value": 150 }, "speed_layer_0": { - "minimum_value": "0.1", - "default_value": 15.0 + "minimum_value": "0.1" }, - "infill_overlap": { "default_value": 10 }, "cool_fan_enabled": { "default_value": false }, - "cool_fan_speed": { "default_value": 0 }, "skirt_line_count": { "default_value": 3 }, "skirt_gap": { "default_value": 4 }, "skirt_brim_minimal_length": { "default_value": 200 } diff --git a/resources/definitions/mendel90.def.json b/resources/definitions/mendel90.def.json index 104ca7f42f..39cb4de8d3 100644 --- a/resources/definitions/mendel90.def.json +++ b/resources/definitions/mendel90.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, - "author": "Bo Herrmannsen", + "author": "Wilmer Gaona", "manufacturer": "Nophead", "file_formats": "text/x-gcode", "platform": "mendel90_platform.stl", @@ -23,10 +23,10 @@ "overrides": { "machine_name": { "default_value": "Mendel90" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\nG90 ;absolute positioning\nG92 E0 ;zero the extruded length\nM107 ;start with the fan off\nG1 X90 Y200 F6000 ;go to the middle of the front\nG1 Z0.05 ;close to the bed\nG1 Z0.3 ;lift Z\n" + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;absolute extrusion\nM107 ;start with the fan off\nG28 ;home\nG92 E0 ;zero the extruded length\nM140 S{material_bed_temperature_layer_0} ; set the bed temperature and continue on\nG1 X-50 Y98 F9000 ;go to the left of the top\nG1 Z0.05 ; close to the bed\nM104 S{material_print_temperature_layer_0}; pre-heat the extruder continue on\nM190 S{material_bed_temperature_layer_0} ;set the bed temp & wait\nM109 S{material_print_temperature_layer_0};set the extruder temp for layer 0 & wait\nG92 E0 ;zero the extruded length\nG1 X50 E10 F300 ; make a thick line to prime extruder\nG92 E0 ; reset extruder\nG1 E-4 F1800\nG1 Z0.3 ;lift Z\n" }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nM107 ;carriage fan off\nG91 ;relative positioning\nG1 Z10 ;Move up Z 10mm\nG90 ;back to absolute mode\nG1 E-1 F1200 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG92 E0 ;zero the extruded length\nG1 Y200 F5000 ;Move Y to middle of bed cooling fan\nM42 P42 S255 ;Turn on Bed cooling fan on\nG4 S420 ;Wait 7 mins\nM42 P42 S0 ;Turn off bed cooling fan\nG1 Y10 F5000 ;Move Y to front\nM84 ;steppers off\n" + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nM107 ;carriage fan off\nG91 ;relative positioning\nG1 Z10 ;Move up Z 10mm\nG90 ;back to absolute mode\nG1 E-1 F1200 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG92 E0 ;zero the extruded length\nG1 Z200 X-100 F9000 ; go to top\nG1 Y100 F5000 ;Move Y to back\nM42 P42 S255 ;Turn on Bed cooling fan on\nG4 S10 ;Wait 10 seconds\nM42 P42 S0 ;Turn off bed cooling fan\nM84 ;steppers off\n" }, "material_bed_temp_wait": { "default_value": true @@ -47,7 +47,7 @@ "default_value": true }, "machine_center_is_zero": { - "default_value": false + "default_value": true }, "machine_extruder_count": { "default_value": 1 @@ -68,7 +68,7 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_head_with_fans_polygon": { diff --git a/resources/definitions/monoprice_select_mini_v1.def.json b/resources/definitions/monoprice_select_mini_v1.def.json index a516d54b18..4fe67fc92e 100644 --- a/resources/definitions/monoprice_select_mini_v1.def.json +++ b/resources/definitions/monoprice_select_mini_v1.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v1", "version": 2, "name": "Monoprice Select Mini V1", "inherits": "malyan_m200", diff --git a/resources/definitions/monoprice_select_mini_v2.def.json b/resources/definitions/monoprice_select_mini_v2.def.json index bed4fb1adb..2364e49383 100644 --- a/resources/definitions/monoprice_select_mini_v2.def.json +++ b/resources/definitions/monoprice_select_mini_v2.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v2", "version": 2, "name": "Monoprice Select Mini V2 (E3D)", "inherits": "malyan_m200", diff --git a/resources/definitions/monoprice_ultimate.def.json b/resources/definitions/monoprice_ultimate.def.json index 48290f0941..445347b54e 100644 --- a/resources/definitions/monoprice_ultimate.def.json +++ b/resources/definitions/monoprice_ultimate.def.json @@ -1,52 +1,48 @@ { - "version": 2, - "name": "Monoprice Ultimate", - "inherits": "wanhao_d6", - "metadata": { - "visible": true, - "author": "Danny Tuppeny", - "manufacturer": "monoprice", - "file_formats": "text/x-gcode", - "icon": "wanhao-icon.png", - "has_materials": true, - "platform": "wanhao_200_200_platform.obj", - "platform_texture": "Wanhaobackplate.png", - "machine_extruder_trains": { - "0": "wanhao_d6_extruder_0" + "version": 2, + "name": "Monoprice Ultimate", + "inherits": "wanhao_d6", + "metadata": { + "visible": true, + "author": "Danny Tuppeny", + "manufacturer": "Monoprice", + "file_formats": "text/x-gcode", + "icon": "wanhao-icon.png", + "has_materials": true, + "platform": "wanhao_200_200_platform.obj", + "platform_texture": "Wanhaobackplate.png", + "machine_extruder_trains": { + "0": "wanhao_d6_extruder_0" + }, + "platform_offset": [0, -28, 0] }, - "platform_offset": [ - 0, - -28, - 0 - ] - }, - "overrides": { - "machine_name": { - "default_value": "Monoprice Ultimate" - }, - "machine_max_acceleration_x": { - "default_value": 3000 - }, - "machine_max_acceleration_y": { - "default_value": 3000 - }, - "machine_max_acceleration_z": { - "default_value": 100 - }, - "machine_max_acceleration_e": { - "default_value": 500 - }, - "machine_acceleration": { - "default_value": 800 - }, - "machine_max_jerk_xy": { - "default_value": 10.0 - }, - "machine_max_jerk_z": { - "default_value": 0.4 - }, - "machine_max_jerk_e": { - "default_value": 1.0 + "overrides": { + "machine_name": { + "default_value": "Monoprice Ultimate" + }, + "machine_max_acceleration_x": { + "default_value": 3000 + }, + "machine_max_acceleration_y": { + "default_value": 3000 + }, + "machine_max_acceleration_z": { + "default_value": 100 + }, + "machine_max_acceleration_e": { + "default_value": 500 + }, + "machine_acceleration": { + "default_value": 800 + }, + "machine_max_jerk_xy": { + "default_value": 10.0 + }, + "machine_max_jerk_z": { + "default_value": 0.4 + }, + "machine_max_jerk_e": { + "default_value": 1.0 + } } - } } diff --git a/resources/definitions/nwa3d_a31.def.json b/resources/definitions/nwa3d_a31.def.json new file mode 100644 index 0000000000..1cfd02fe7f --- /dev/null +++ b/resources/definitions/nwa3d_a31.def.json @@ -0,0 +1,64 @@ +{ + "name": "NWA3D A31", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "DragonJe", + "manufacturer": "NWA 3D LLC", + "file_formats": "text/x-gcode", + "platform_offset": [0, 0, 0], + "has_materials": true, + "has_variants": true, + "variants_name": "Nozzle Size", + "preferred_variant_name": "Standard 0.4mm", + "preferred_quality_type": "normal", + "has_machine_quality": true, + "preferred_material": "generic_pla", + "machine_extruder_trains": + { + "0": "nwa3d_a31_extruder_0" + } + }, + + "overrides": { + "machine_name": { + "default_value": "NWA3D A31" + }, + "machine_width": { + "default_value": 300 + }, + "machine_height": { + "default_value": 400 + }, + "machine_depth": { + "default_value": 300 + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [-30, 34], + [-30, -32], + [30, -32], + [30, 34] + ] + }, + "gantry_height": { + "value": "30" + }, + "machine_heated_bed": { + "default_value": true + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G28 ; Home\nG1 Z15.0 F6000 ; Move Z axis up 15mm\n ; Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_end_gcode": { + "default_value": "M104 S0\nM140 S0\n ; Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" + } + } +} diff --git a/resources/definitions/nwa3d_a5.def.json b/resources/definitions/nwa3d_a5.def.json index 3deb0027fd..1631860d47 100644 --- a/resources/definitions/nwa3d_a5.def.json +++ b/resources/definitions/nwa3d_a5.def.json @@ -10,55 +10,53 @@ "platform_offset": [0, 0, 0], "has_materials": true, "has_variants": false, - "has_machine_materials": true, - "has_variant_materials": false, "preferred_quality_type": "normal", "has_machine_quality": true, "preferred_material": "generic_pla", - "machine_extruder_trains": + "machine_extruder_trains": { "0": "nwa3d_a5_extruder_0" } }, - + "overrides": { - "machine_name": { - "default_value": "NWA3D A5" + "machine_name": { + "default_value": "NWA3D A5" }, - "machine_width": { - "default_value": 125 + "machine_width": { + "default_value": 125 }, - "machine_height": { - "default_value": 100 + "machine_height": { + "default_value": 100 }, - "machine_depth": { - "default_value": 150 + "machine_depth": { + "default_value": 150 }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ - [-30, 34], - [-30, -32], - [30, -32], + [-30, 34], + [-30, -32], + [30, -32], [30, 34] - ] + ] }, - "gantry_height": { - "default_value": 30 + "gantry_height": { + "value": "30" }, - "machine_heated_bed": { - "default_value": false + "machine_heated_bed": { + "default_value": false }, "material_diameter": { "default_value": 1.75 }, - "machine_gcode_flavor": { - "default_value": "RepRap (RepRap)" + "machine_gcode_flavor": { + "default_value": "RepRap (RepRap)" }, - "machine_start_gcode": { - "default_value": "G28 ; Home\nG1 Z15.0 F6000 ; Move Z axis up 15mm\n ; Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + "machine_start_gcode": { + "default_value": "G28 ; Home\nG1 Z15.0 F6000 ; Move Z axis up 15mm\n ; Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" }, - "machine_end_gcode": { - "default_value": "M104 S0\nM140 S0\n ; Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" + "machine_end_gcode": { + "default_value": "M104 S0\nM140 S0\n ; Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" } } } diff --git a/resources/definitions/ord.def.json b/resources/definitions/ord.def.json index de410b0d58..4a550602f2 100644 --- a/resources/definitions/ord.def.json +++ b/resources/definitions/ord.def.json @@ -19,12 +19,9 @@ }, "overrides": { - "material_bed_temperature": { "default_value": 60 }, "prime_tower_size": { "default_value": 7.0710678118654755 }, "infill_sparse_density": { "default_value": 15 }, - "speed_travel": { "default_value": 150 }, "layer_height": { "default_value": 0.3 }, - "material_print_temperature": { "default_value": 240 }, "machine_extruder_count": { "default_value": 5 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/peopoly_moai.def.json b/resources/definitions/peopoly_moai.def.json index a578cc4240..8d7754a9ef 100644 --- a/resources/definitions/peopoly_moai.def.json +++ b/resources/definitions/peopoly_moai.def.json @@ -126,9 +126,6 @@ "adhesion_type": { "value": "'none'" }, - "acceleration_enabled": { - "value": "False" - }, "print_sequence": { "enabled": false }, @@ -173,8 +170,8 @@ "minimum_polygon_circumference": { "value": "0.1" }, - "meshfix_maximum_resolution": { - "value": "0.005" + "meshfix_maximum_deviation": { + "value": "0.003" }, "skin_outline_count": { "value": 0 @@ -251,10 +248,6 @@ "expand_skins_expand_distance": { "value": "( wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x ) / 2" }, - "max_feedrate_z_override": { - "value": 0, - "enabled": false - }, "flow_rate_max_extrusion_offset": { "enabled": false }, diff --git a/resources/definitions/printrbot_play.def.json b/resources/definitions/printrbot_play.def.json index e3a18a4eee..bf52363800 100644 --- a/resources/definitions/printrbot_play.def.json +++ b/resources/definitions/printrbot_play.def.json @@ -27,9 +27,8 @@ "retraction_speed": { "default_value": 45}, "adhesion_type": { "default_value": "skirt" }, "machine_head_with_fans_polygon": { "default_value": [[-32,999],[37,999],[37,-32],[-32,-32]] }, - "gantry_height": { "default_value": 55 }, + "gantry_height": { "value": "55" }, "speed_print": { "default_value": 50 }, - "speed_travel": { "default_value": 55 }, "machine_max_feedrate_x": {"default_value": 125}, "machine_max_feedrate_y": {"default_value": 125}, "machine_max_feedrate_z": { "default_value": 5 }, diff --git a/resources/definitions/printrbot_simple.def.json b/resources/definitions/printrbot_simple.def.json index fb65b77fa5..760ff383d1 100644 --- a/resources/definitions/printrbot_simple.def.json +++ b/resources/definitions/printrbot_simple.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Calvindog717", - "manufacturer": "PrintrBot", + "manufacturer": "Printrbot", "platform": "printrbot_simple_metal_platform.stl", "platform_offset": [0, -3.45, 0], "file_formats": "text/x-gcode", @@ -30,7 +30,6 @@ [55, -99999] ] }, - "gantry_height": { "default_value": 99999 }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { diff --git a/resources/definitions/printrbot_simple_extended.def.json b/resources/definitions/printrbot_simple_extended.def.json index 1e004a8ca3..06c639f024 100644 --- a/resources/definitions/printrbot_simple_extended.def.json +++ b/resources/definitions/printrbot_simple_extended.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "samsector", - "manufacturer": "PrintrBot", + "manufacturer": "Printrbot", "platform": "printrbot_simple_metal_upgrade.stl", "platform_offset": [0, -0.3, 0], "file_formats": "text/x-gcode", @@ -30,7 +30,7 @@ [ -49, -20 ] ] }, - "gantry_height": { "default_value": 99999 }, + "gantry_height": { "value": "99999" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { diff --git a/resources/definitions/printrbot_simple_makers_kit.def.json b/resources/definitions/printrbot_simple_makers_kit.def.json index ad6ecee21e..1223f2a4d9 100644 --- a/resources/definitions/printrbot_simple_makers_kit.def.json +++ b/resources/definitions/printrbot_simple_makers_kit.def.json @@ -27,7 +27,7 @@ [60, -10] ] }, - "gantry_height": { "default_value": 1000 }, + "gantry_height": { "value": "1000" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { diff --git a/resources/definitions/prusa_i3.def.json b/resources/definitions/prusa_i3.def.json index 1f0eb37aec..267a7ba4e6 100644 --- a/resources/definitions/prusa_i3.def.json +++ b/resources/definitions/prusa_i3.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Quillford", - "manufacturer": "Prusajr", + "manufacturer": "Prusa3D", "file_formats": "text/x-gcode", "platform": "prusai3_platform.stl", "machine_extruder_trains": @@ -31,14 +31,6 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { - "default_value": [ - [-75, -18], - [-75, 35], - [18, 35], - [18, -18] - ] - }, "machine_head_with_fans_polygon": { "default_value": [ [-75, -18], @@ -48,7 +40,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/prusa_i3_mk2.def.json b/resources/definitions/prusa_i3_mk2.def.json index 5c5583b56f..5ae541049d 100644 --- a/resources/definitions/prusa_i3_mk2.def.json +++ b/resources/definitions/prusa_i3_mk2.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Apsu, Nounours2099", - "manufacturer": "Prusa Research", + "manufacturer": "Prusa3D", "file_formats": "text/x-gcode", "platform": "prusai3_platform.stl", "has_materials": true, @@ -22,16 +22,13 @@ "machine_height": { "default_value": 200 }, "machine_depth": { "default_value": 210 }, "machine_center_is_zero": { "default_value": false }, - "material_bed_temperature": { "default_value": 55 }, "layer_height": { "default_value": 0.1 }, "layer_height_0": { "default_value": 0.15 }, "retraction_amount": { "default_value": 0.8 }, "retraction_speed": { "default_value": 35 }, - "retraction_retract_speed": { "default_value": 35 }, - "retraction_prime_speed": { "default_value": 35 }, "adhesion_type": { "default_value": "skirt" }, "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] }, - "gantry_height": { "default_value": 28 }, + "gantry_height": { "value": "28" }, "machine_max_feedrate_z": { "default_value": 12 }, "machine_max_feedrate_e": { "default_value": 120 }, "machine_max_acceleration_z": { "default_value": 500 }, diff --git a/resources/definitions/prusa_i3_mk3.def.json b/resources/definitions/prusa_i3_mk3.def.json new file mode 100644 index 0000000000..eddc1d88df --- /dev/null +++ b/resources/definitions/prusa_i3_mk3.def.json @@ -0,0 +1,50 @@ +{ + "version": 2, + "name": "Prusa i3 Mk3/Mk3s", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Prusa Research", + "manufacturer": "Prusa3D", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "platform": "Original_Prusa_i3_MK3S_MK3_platform.stl", + "has_materials": true, + "machine_extruder_trains": + { + "0": "prusa_i3_mk3_extruder_0" + } + }, + + "overrides": { + "machine_name": { "default_value": "Prusa i3 Mk3/Mk3s" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 250 }, + "machine_height": { "default_value": 210 }, + "machine_depth": { "default_value": 210 }, + "machine_center_is_zero": { "default_value": false }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "layer_height": { "default_value": 0.15 }, + "layer_height_0": { "default_value": 0.2 }, + "retraction_amount": { "default_value": 0.8 }, + "retraction_speed": { "default_value": 35 }, + "adhesion_type": { "default_value": "skirt" }, + "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] }, + "gantry_height": { "value": 28 }, + "machine_max_feedrate_z": { "default_value": 12 }, + "machine_max_feedrate_e": { "default_value": 120 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "machine_max_jerk_z": { "default_value": 0.2 }, + "machine_max_jerk_e": { "default_value": 2.5 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { + "default_value": "G21 ; set units to millimeters\nG90 ; use absolute positioning\nM82 ; absolute extrusion mode\nM104 S{material_print_temperature_layer_0} ; set extruder temp\nM140 S{material_bed_temperature_layer_0} ; set bed temp\nM190 S{material_bed_temperature_layer_0} ; wait for bed temp\nM109 S{material_print_temperature_layer_0} ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG92 E0.0 ; reset extruder distance position\nG1 Y-3.0 F1000.0 ; go outside print area\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E21.5 F1000.0 ; intro line\nG92 E0.0 ; reset extruder distance position" + }, + "machine_end_gcode": { + "default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y210; home X axis and push Y forward\nM84 ; disable motors" + } + } +} diff --git a/resources/definitions/prusa_i3_xl.def.json b/resources/definitions/prusa_i3_xl.def.json index 9931be5c72..dae1bdce4f 100644 --- a/resources/definitions/prusa_i3_xl.def.json +++ b/resources/definitions/prusa_i3_xl.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "guigashm", - "manufacturer": "Prusajr", + "manufacturer": "Prusa3D", "file_formats": "text/x-gcode", "platform": "prusai3_xl_platform.stl", "machine_extruder_trains": @@ -31,7 +31,7 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-75, -18], [-75, 35], @@ -40,7 +40,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/punchtec_connect_xl.def.json b/resources/definitions/punchtec_connect_xl.def.json index 1efdd226fd..9bae80b0ac 100644 --- a/resources/definitions/punchtec_connect_xl.def.json +++ b/resources/definitions/punchtec_connect_xl.def.json @@ -16,16 +16,10 @@ }, "overrides": { - "machine_head_polygon": { "default_value": [[ 0, 0], [ 0, 0], [ 0, 0], [ 0, 0]] }, - "speed_travel": { "default_value": 150 }, + "machine_head_with_fans_polygon": { "default_value": [[ 0, 0], [ 0, 0], [ 0, 0], [ 0, 0]] }, "prime_tower_size": { "default_value": 8.660254037844387 }, - "speed_wall_x": { "default_value": 40 }, - "speed_wall_0": { "default_value": 40 }, - "speed_topbottom": { "default_value": 40 }, "layer_height": { "default_value": 0.2 }, - "material_print_temperature": { "default_value": 195 }, "speed_print": { "default_value": 40 }, - "speed_infill": { "default_value": 40 }, "machine_extruder_count": { "default_value": 2 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/raise3D_N2_dual.def.json b/resources/definitions/raise3D_N2_dual.def.json index eff5884da8..530ad79d19 100644 --- a/resources/definitions/raise3D_N2_dual.def.json +++ b/resources/definitions/raise3D_N2_dual.def.json @@ -58,7 +58,7 @@ "default_value": "skirt" }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true @@ -67,7 +67,7 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\nT1; left tool\n; set extruder steps per mm\nM92 E140\nT0; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\nT1; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n" + "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\nT1; left tool\n; set extruder steps per mm\nM92 E140\nT0; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\nT1; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing...\nM1001\n" }, "machine_end_gcode": { "default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84" @@ -76,10 +76,10 @@ "default_value": 2 }, "prime_tower_position_x": { - "default_value": 195 + "value": "195" }, "prime_tower_position_y": { - "default_value": 149 + "value": "149" } } } diff --git a/resources/definitions/raise3D_N2_plus_dual.def.json b/resources/definitions/raise3D_N2_plus_dual.def.json index 06de52321a..ffc4afec16 100644 --- a/resources/definitions/raise3D_N2_plus_dual.def.json +++ b/resources/definitions/raise3D_N2_plus_dual.def.json @@ -58,7 +58,7 @@ "default_value": "skirt" }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true @@ -67,7 +67,7 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\nT1; left tool\n; set extruder steps per mm\nM92 E140\nT0; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\nT1; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n" + "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\nT1; left tool\n; set extruder steps per mm\nM92 E140\nT0; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\nT1; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing...\nM1001\n" }, "machine_end_gcode": { "default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84" @@ -76,10 +76,10 @@ "default_value": 2 }, "prime_tower_position_x": { - "default_value": 195 + "value": "195" }, "prime_tower_position_y": { - "default_value": 149 + "value": "149" } } } diff --git a/resources/definitions/raise3D_N2_plus_single.def.json b/resources/definitions/raise3D_N2_plus_single.def.json index b829147160..ccb169efb1 100644 --- a/resources/definitions/raise3D_N2_plus_single.def.json +++ b/resources/definitions/raise3D_N2_plus_single.def.json @@ -57,7 +57,7 @@ "default_value": "skirt" }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true @@ -66,16 +66,16 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n" + "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing...\nM1001\n" }, "machine_end_gcode": { "default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84" }, "prime_tower_position_x": { - "default_value": 195 + "value": "195" }, "prime_tower_position_y": { - "default_value": 149 + "value": "149" } } } diff --git a/resources/definitions/raise3D_N2_single.def.json b/resources/definitions/raise3D_N2_single.def.json index 899da5188f..f0915d1a31 100644 --- a/resources/definitions/raise3D_N2_single.def.json +++ b/resources/definitions/raise3D_N2_single.def.json @@ -57,7 +57,7 @@ "default_value": "skirt" }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true @@ -66,16 +66,16 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n" + "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing...\nM1001\n" }, "machine_end_gcode": { "default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84" }, "prime_tower_position_x": { - "default_value": 195 + "value": "195" }, "prime_tower_position_y": { - "default_value": 149 + "value": "149" } } } diff --git a/resources/definitions/renkforce_rf100.def.json b/resources/definitions/renkforce_rf100.def.json index 41549fb531..2ff34a7519 100644 --- a/resources/definitions/renkforce_rf100.def.json +++ b/resources/definitions/renkforce_rf100.def.json @@ -183,7 +183,7 @@ "value": "False" }, "support_infill_rate": { - "value": "15.0" + "value": "15 if support_enable else 0 if support_tree_enable else 15" }, "support_pattern": { "default_value": "lines" diff --git a/resources/definitions/rigid3d.def.json b/resources/definitions/rigid3d.def.json index 43ffd6924a..ba90894f7d 100644 --- a/resources/definitions/rigid3d.def.json +++ b/resources/definitions/rigid3d.def.json @@ -21,27 +21,17 @@ "machine_end_gcode": { "default_value": " ; -- END GCODE --\n G1 X0 Y230 ; Get extruder out of way.\n M107 ; Turn off fan\n G91 ; Relative positioning\n G0 Z20 ; Lift extruder up\n T0\n G1 E-1 ; Reduce filament pressure\n M104 T0 S0 ; Turn ectruder heater off\n G90 ; Absolute positioning\n G92 E0 ; Reset extruder position\n M140 S0 ; Disable heated bed\n M84 ; Turn steppers off\n ; -- end of END GCODE --\n" }, - "machine_head_polygon": { "default_value": [[ 22, 67], [ 22, 51], [ 36, 51], [ 36, 67]] }, + "machine_head_with_fans_polygon": { "default_value": [[ 22, 67], [ 22, 51], [ 36, 51], [ 36, 67]] }, "skirt_gap": { "default_value": 5.0 }, "cool_min_layer_time": { "default_value": 10 }, "prime_tower_size": { "default_value": 7.745966692414834 }, - "speed_wall_x": { "default_value": 40 }, - "speed_travel": { "default_value": 100 }, - "bottom_thickness": { "default_value": 0.75 }, "layer_height_0": { "default_value": 0.25 }, "support_angle": { "default_value": 45 }, - "material_bed_temperature": { "default_value": 100 }, - "top_thickness": { "default_value": 0.75 }, - "material_print_temperature": { "default_value": 235 }, "retraction_speed": { "default_value": 60.0 }, "wall_thickness": { "default_value": 0.8 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 30 }, "retraction_amount": { "default_value": 1 }, - "speed_topbottom": { "default_value": 30 }, "layer_height": { "default_value": 0.25 }, "speed_print": { "default_value": 40 }, - "speed_infill": { "default_value": 40 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/rigid3d_3rdgen.def.json b/resources/definitions/rigid3d_3rdgen.def.json index bb3414b75d..6e1a93fb40 100644 --- a/resources/definitions/rigid3d_3rdgen.def.json +++ b/resources/definitions/rigid3d_3rdgen.def.json @@ -21,24 +21,16 @@ "machine_end_gcode": { "default_value": " ; -- END GCODE --\n G1 X0 Y230 ; Get extruder out of way.\n M107 ; Turn off fan\n G91 ; Relative positioning\n G0 Z20 ; Lift extruder up\n T0\n G1 E-1 ; Reduce filament pressure\n M104 T0 S0 ; Turn extruder heater off\n G90 ; Absolute positioning\n G92 E0 ; Reset extruder position\n M140 S0 ; Disable heated bed\n M84 ; Turn steppers off\n ; -- end of END GCODE --\n" }, - "machine_head_polygon": { "default_value": [[ 18, 0], [ 18, 65], [ 32, 65], [ 32, 0]] }, + "machine_head_with_fans_polygon": { "default_value": [[ 18, 0], [ 18, 65], [ 32, 65], [ 32, 0]] }, "cool_min_layer_time": { "default_value": 10 }, "prime_tower_size": { "default_value": 7.745966692414834 }, "skirt_gap": { "default_value": 5.0 }, - "speed_travel": { "default_value": 120 }, - "bottom_thickness": { "default_value": 0.75 }, "layer_height_0": { "default_value": 0.25 }, "support_angle": { "default_value": 45 }, - "material_bed_temperature": { "default_value": 100 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 30 }, "retraction_speed": { "default_value": 60.0 }, "wall_thickness": { "default_value": 0.8 }, - "material_print_temperature": { "default_value": 235 }, "retraction_amount": { "default_value": 1 }, - "speed_topbottom": { "default_value": 25 }, "layer_height": { "default_value": 0.25 }, - "top_thickness": { "default_value": 0.75 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/rigid3d_hobby.def.json b/resources/definitions/rigid3d_hobby.def.json index db48195fe0..d89c1aeaff 100644 --- a/resources/definitions/rigid3d_hobby.def.json +++ b/resources/definitions/rigid3d_hobby.def.json @@ -15,27 +15,19 @@ }, "overrides": { - "machine_head_polygon": { "default_value": [[ 16, 30], [ 16, 45], [ 16, 45], [ 16, 30]] }, + "machine_head_with_fans_polygon": { "default_value": [[ 16, 30], [ 16, 45], [ 16, 45], [ 16, 30]] }, "prime_tower_size": { "default_value": 8.660254037844387 }, - "speed_travel": { "default_value": 40 }, "skirt_gap": { "default_value": 5.0 }, "cool_min_layer_time": { "default_value": 15 }, "support_pattern": { "default_value": "grid" }, "layer_height_0": { "default_value": 0.25 }, - "speed_wall_x": { "default_value": 30 }, "skirt_line_count": { "default_value": 2 }, "support_angle": { "default_value": 45 }, - "speed_topbottom": { "default_value": 20 }, - "material_print_temperature": { "default_value": 205 }, "retraction_speed": { "default_value": 80 }, "wall_thickness": { "default_value": 0.8 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 20 }, "retraction_amount": { "default_value": 2 }, - "speed_layer_0": { "default_value": 15 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 30 }, - "speed_infill": { "default_value": 30 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": false }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/rigid3d_mucit.def.json b/resources/definitions/rigid3d_mucit.def.json index 42cd99a3bd..75853fab8b 100644 --- a/resources/definitions/rigid3d_mucit.def.json +++ b/resources/definitions/rigid3d_mucit.def.json @@ -76,14 +76,9 @@ "default_value": true }, "cool_fan_speed": { - "default_value": 100, "value": "100" }, - "cool_fan_speed_min": { - "default_value": 0 - }, "cool_fan_full_at_height": { - "default_value": 0.5, "value": "0.5" }, "support_z_distance": { diff --git a/resources/definitions/rigid3d_zero.def.json b/resources/definitions/rigid3d_zero.def.json index f55f913a56..54bd2c3dca 100644 --- a/resources/definitions/rigid3d_zero.def.json +++ b/resources/definitions/rigid3d_zero.def.json @@ -21,24 +21,14 @@ "machine_end_gcode": { "default_value": " ; -- END GCODE --\n G1 X0 Y230 ; Get extruder out of way.\n M107 ; Turn off fan\n G91 ; Relative positioning\n G0 Z20 ; Lift extruder up\n T0\n G1 E-1 ; Reduce filament pressure\n M104 T0 S0 ; Turn ectruder heater off\n G90 ; Absolute positioning\n G92 E0 ; Reset extruder position\n M140 S0 ; Disable heated bed\n M84 ; Turn steppers off\n ; -- end of END GCODE --\n" }, - "machine_head_polygon": { "default_value": [[ 40, 15], [ 40, 60], [ 30, 60], [ 30, 15]] }, + "machine_head_with_fans_polygon": { "default_value": [[ 40, 15], [ 40, 60], [ 30, 60], [ 30, 15]] }, "support_pattern": { "default_value": "grid" }, "cool_min_layer_time": { "default_value": 10 }, - "speed_travel": { "default_value": 80 }, "support_angle": { "default_value": 45 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 20 }, - "speed_layer_0": { "default_value": 15 }, - "speed_infill": { "default_value": 30 }, - "speed_topbottom": { "default_value": 30 }, "prime_tower_size": { "default_value": 7.745966692414834 }, "skirt_line_count": { "default_value": 2 }, - "speed_wall_x": { "default_value": 30 }, - "bottom_thickness": { "default_value": 0.75 }, "layer_height_0": { "default_value": 0.25 }, - "top_thickness": { "default_value": 0.75 }, "wall_thickness": { "default_value": 0.8 }, - "material_print_temperature": { "default_value": 195 }, "retraction_amount": { "default_value": 1.5 }, "skirt_gap": { "default_value": 5.0 }, "layer_height": { "default_value": 0.25 }, diff --git a/resources/definitions/rigid3d_zero2.def.json b/resources/definitions/rigid3d_zero2.def.json index 09390ed8b5..cc922769f7 100644 --- a/resources/definitions/rigid3d_zero2.def.json +++ b/resources/definitions/rigid3d_zero2.def.json @@ -44,9 +44,6 @@ "material_print_temperature": { "value": 235 }, - "material_bed_temperature": { - "default_value": 100 - }, "speed_print": { "default_value": 40 }, @@ -55,7 +52,7 @@ }, "speed_travel": { "value": 100 - }, + }, "support_enable": { "default_value": false }, @@ -81,7 +78,7 @@ "default_value": false }, "gantry_height": { - "default_value": 25 + "value": "25" }, "machine_gcode_flavor": { "default_value": "RepRap" @@ -90,14 +87,9 @@ "default_value": false }, "cool_fan_speed": { - "default_value": 50, "value": 50 }, - "cool_fan_speed_min": { - "default_value": 0 - }, "cool_fan_full_at_height": { - "default_value": 1.0, "value": 1.0 }, "support_z_distance": { diff --git a/resources/definitions/rigidbot.def.json b/resources/definitions/rigidbot.def.json index 5eb346c7ca..d6fb4f1651 100644 --- a/resources/definitions/rigidbot.def.json +++ b/resources/definitions/rigidbot.def.json @@ -29,7 +29,7 @@ "default_value": true }, "gantry_height": { - "default_value": 0 + "value": "0" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" @@ -49,37 +49,15 @@ "top_bottom_thickness": { "default_value": 0.3 }, - "material_print_temperature": { - "default_value": 195 - }, - "material_bed_temperature": { - "default_value": 60 - }, "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 100 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, "speed_layer_0": { - "default_value": 15, "minimum_value": "0.1" }, - "infill_overlap": { - "default_value": 10 - }, "cool_fan_enabled": { "default_value": false }, - "cool_fan_speed": { - "default_value": 0 - }, "skirt_line_count": { "default_value": 3 }, diff --git a/resources/definitions/rigidbot_big.def.json b/resources/definitions/rigidbot_big.def.json index 581b6144a0..9568417acc 100644 --- a/resources/definitions/rigidbot_big.def.json +++ b/resources/definitions/rigidbot_big.def.json @@ -29,7 +29,7 @@ "default_value": true }, "gantry_height": { - "default_value": 0 + "value": "0" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" @@ -49,37 +49,15 @@ "top_bottom_thickness": { "default_value": 0.3 }, - "material_print_temperature": { - "default_value": 195 - }, - "material_bed_temperature": { - "default_value": 60 - }, "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 100 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, "speed_layer_0": { - "default_value": 15, "minimum_value": "0.1" }, - "infill_overlap": { - "default_value": 10 - }, "cool_fan_enabled": { "default_value": false }, - "cool_fan_speed": { - "default_value": 0 - }, "skirt_line_count": { "default_value": 3 }, diff --git a/resources/definitions/robo_3d_r1.def.json b/resources/definitions/robo_3d_r1.def.json index 8d7698e198..36b8addd27 100644 --- a/resources/definitions/robo_3d_r1.def.json +++ b/resources/definitions/robo_3d_r1.def.json @@ -22,28 +22,16 @@ "default_value": " M104 S0 ;extruder heater off\n M140 S0 ;heated bed heater off (if you have it)\n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning\n" }, "cool_min_layer_time": { "default_value": 7 }, - "speed_topbottom": { "default_value": 40 }, "retraction_speed": { "default_value": 50 }, - "layer_0_z_overlap": { "default_value": 0.2 }, "cool_min_speed": { "default_value": 19 }, - "material_bed_temperature": { "default_value": 60 }, "support_angle": { "default_value": 50 }, - "speed_layer_0": { "default_value": 30 }, - "line_width": { "default_value": 0.4 }, - "speed_infill": { "default_value": 60 }, "prime_tower_size": { "default_value": 8.660254037844387 }, "support_enable": { "default_value": true }, - "cool_fan_full_at_height": { "default_value": 0.1 }, - "bottom_thickness": { "default_value": 1.2 }, "raft_airgap": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.15 }, - "top_thickness": { "default_value": 1.2 }, - "speed_wall_0": { "default_value": 40 }, - "retraction_min_travel": { "default_value": 5 }, "material_flow": { "default_value": 100 }, "infill_sparse_density": { "default_value": 10 }, "wall_thickness": { "default_value": 1.2 }, - "material_print_temperature": { "default_value": 190 }, "retraction_amount": { "default_value": 3 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 40 }, diff --git a/resources/definitions/seemecnc_artemis.def.json b/resources/definitions/seemecnc_artemis.def.json index ec92f528d7..88c1d84b3d 100644 --- a/resources/definitions/seemecnc_artemis.def.json +++ b/resources/definitions/seemecnc_artemis.def.json @@ -27,13 +27,11 @@ "machine_name": { "default_value": "Artemis" }, "machine_shape": { "default_value": "elliptic" }, "machine_width": { "default_value": 290 }, - "relative_extrusion": { "default_value": false }, + "relative_extrusion": { "value": "False" }, "retraction_amount": { "default_value": 3.2 }, "retraction_combing": { "default_value": "off" }, "retraction_hop_enabled": { "default_value": true }, "retraction_hop_only_when_collides": { "default_value": false }, - "retraction_prime_speed": { "default_value": 45 }, - "retraction_retract_speed": { "default_value": 45 }, "retraction_speed": { "default_value": 45 }, "machine_start_gcode": { "default_value": "G28\nG1 Z15.0 F10000\nG92 E0" diff --git a/resources/definitions/seemecnc_v32.def.json b/resources/definitions/seemecnc_v32.def.json index d4316c25d9..0f49410116 100644 --- a/resources/definitions/seemecnc_v32.def.json +++ b/resources/definitions/seemecnc_v32.def.json @@ -27,13 +27,11 @@ "machine_name": { "default_value": "Rostock Max V3.2" }, "machine_shape": { "default_value": "elliptic" }, "machine_width": { "default_value": 265 }, - "relative_extrusion": { "default_value": false }, + "relative_extrusion": { "value": "False" }, "retraction_amount": { "default_value": 3.2 }, "retraction_combing": { "default_value": "off" }, "retraction_hop_enabled": { "default_value": true }, "retraction_hop_only_when_collides": { "default_value": false }, - "retraction_prime_speed": { "default_value": 45 }, - "retraction_retract_speed": { "default_value": 45 }, "retraction_speed": { "default_value": 45 }, "machine_start_gcode": { "default_value": "G28\nG1 Z15.0 F10000\nG92 E0" diff --git a/resources/definitions/skriware_2.def.json b/resources/definitions/skriware_2.def.json new file mode 100644 index 0000000000..584cdd1708 --- /dev/null +++ b/resources/definitions/skriware_2.def.json @@ -0,0 +1,598 @@ +{ + "name": "Skriware 2", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Skriware", + "manufacturer": "Skriware", + "category": "Other", + "file_formats": "text/x-gcode", + "platform_offset": [ + 0, + 0, + 0 + ], + "supports_usb_connection": false, + "platform": "skriware_2_platform.stl", + "machine_extruder_trains": { + "0": "skriware_2_extruder_0", + "1": "skriware_2_extruder_1" + } + }, + "overrides": { + "jerk_print_layer_0": { + "value": "5" + }, + "jerk_prime_tower": { + "value": "5" + }, + "expand_skins_expand_distance": { + "value": "1.2" + }, + "jerk_support_interface": { + "value": "5" + }, + "jerk_travel_layer_0": { + "value": "5.0" + }, + "wipe_retraction_prime_speed": { + "value": "30" + }, + "material_standby_temperature": { + "default_value": 195 + }, + "acceleration_support_bottom": { + "value": "250" + }, + "raft_base_line_width": { + "value": "0.5" + }, + "raft_speed": { + "value": "30.0" + }, + "jerk_topbottom": { + "value": "5" + }, + "ironing_inset": { + "value": "0.2" + }, + "acceleration_wall": { + "value": "250" + }, + "cross_infill_pocket_size": { + "value": "5.333333333333333" + }, + "jerk_support_roof": { + "value": "5" + }, + "acceleration_print": { + "default_value": 250 + }, + "meshfix_maximum_travel_resolution": { + "value": "0.8" + }, + "support_top_distance": { + "value": "0.22" + }, + "acceleration_enabled": { + "default_value": true + }, + "optimize_wall_printing_order": { + "default_value": true + }, + "jerk_layer_0": { + "value": "5" + }, + "infill_line_distance": { + "value": "5.333333333333333" + }, + "acceleration_ironing": { + "value": "250" + }, + "material_print_temperature_layer_0": { + "value": "195" + }, + "bridge_skin_speed_2": { + "value": "15" + }, + "acceleration_travel": { + "value": "250" + }, + "switch_extruder_retraction_speed": { + "value": "30" + }, + "jerk_print": { + "default_value": 5 + }, + "material_guid": { + "default_value": "0ff92885-617b-4144-a03c-9989872454bc" + }, + "raft_interface_acceleration": { + "value": "250" + }, + "acceleration_support_interface": { + "value": "250" + }, + "cool_fan_full_layer": { + "value": "1" + }, + "skirt_brim_minimal_length": { + "default_value": 50 + }, + "material_bed_temperature": { + "value": "50" + }, + "speed_slowdown_layers": { + "default_value": 1 + }, + "speed_travel": { + "value": "150" + }, + "skin_overlap": { + "value": "15" + }, + "acceleration_infill": { + "value": "250" + }, + "support_roof_material_flow": { + "value": "99" + }, + "raft_base_jerk": { + "value": "5" + }, + "retraction_retract_speed": { + "value": "30" + }, + "infill_wipe_dist": { + "value": "0.1" + }, + "jerk_wall_x": { + "value": "5" + }, + "layer_height": { + "default_value": 0.2 + }, + "bottom_skin_expand_distance": { + "value": "1.2000000000000002" + }, + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nG28 X0 Y0;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nM420 S1 Z0.9 ;enable bed levelling\nG1 Z10 F250 ;move the platform down 10mm\nM107 ;fan off\nM42 P11 S255 ;turn on front fan\nM140 S{material_bed_temperature}\nM104 T0 S{material_print_temperature}\nM104 T1 S{material_print_temperature}\nG1 F2500 Y260\nM190 S{material_bed_temperature}\nM109 T0 S{material_print_temperature}\nM109 T1 S{material_print_temperature}\nM60 ;enable E-FADE Algorithm\nM62 A ;filament sensor off\nG92 E0 ;zero the extruded length\nT1\nG92 E0;zero the extruded length\nG1 F300 Z0.3\nG1 F1200 X20\nG1 F1200 X180 E21 ;extrude 21 mm of feed stock\nG1 F1200 E15 ;retracting 6 mm\nG1 F2000 E21\nG1 F2000 E15\nG1 F300 Z1.5\nG92 E0 ;zero the extruded length again\nT0\nG92 E0 ;zero the extruded length\nG1 F1200 Y258\nG1 F300 Z0.3\nG1 F1200 X40 E21 ;extrude 21 mm of feed stock\nG1 F1200 E15 ;retracting 6 mm\nG1 F2000 E21\nG1 F2000 E15\nG1 Z1.5\nM61 A\nM63 A ;filament sensor on\nG92 E0 ;zero the extruded length again\nM58 ;end of Start G-Code and signal retract management" + }, + "travel_retract_before_outer_wall": { + "default_value": true + }, + "xy_offset_layer_0": { + "value": "-0.16" + }, + "adhesion_type": { + "default_value": "raft" + }, + "min_skin_width_for_expansion": { + "value": "0.671279704941824" + }, + "support_bottom_material_flow": { + "value": "99" + }, + "prime_tower_position_x": { + "value": "1" + }, + "machine_depth": { + "default_value": 260 + }, + "retraction_speed": { + "default_value": 30 + }, + "support_skip_some_zags": { + "default_value": true + }, + "remove_empty_first_layers": { + "default_value": false + }, + "z_seam_x": { + "value": "115" + }, + "support_xy_distance_overhang": { + "value": "0.5" + }, + "support_tree_wall_thickness": { + "value": "0.4" + }, + "acceleration_print_layer_0": { + "value": "250" + }, + "support_xy_distance": { + "default_value": 0.8 + }, + "support_roof_line_distance": { + "value": "0.5714285714285714" + }, + "jerk_enabled": { + "default_value": true + }, + "min_infill_area": { + "default_value": 1 + }, + "travel_avoid_supports": { + "default_value": true + }, + "bottom_layers": { + "value": "3" + }, + "multiple_mesh_overlap": { + "default_value": 0 + }, + "retraction_hop_enabled": { + "default_value": true + }, + "acceleration_topbottom": { + "value": "250" + }, + "jerk_wall": { + "value": "5" + }, + "jerk_wall_0": { + "value": "5" + }, + "skin_overlap_mm": { + "value": "0.06" + }, + "retraction_min_travel": { + "value": "1" + }, + "support_interface_material_flow": { + "value": "99" + }, + "material_diameter": { + "default_value": 1.75 + }, + "speed_roofing": { + "value": "30.0" + }, + "skin_outline_count": { + "default_value": 0 + }, + "skin_no_small_gaps_heuristic": { + "default_value": true + }, + "top_bottom_pattern_0": { + "value": "'zigzag'" + }, + "top_skin_expand_distance": { + "value": "1.2000000000000002" + }, + "acceleration_travel_layer_0": { + "value": "250.0" + }, + "prime_tower_min_volume": { + "default_value": 4 + }, + "switch_extruder_retraction_speeds": { + "default_value": 30 + }, + "skin_preshrink": { + "value": "1.2000000000000002" + }, + "material_bed_temperature_layer_0": { + "value": "50" + }, + "support_tree_collision_resolution": { + "value": "0.2" + }, + "machine_height": { + "default_value": 210 + }, + "raft_acceleration": { + "value": "250" + }, + "fill_outline_gaps": { + "default_value": true + }, + "wall_x_material_flow": { + "value": "99" + }, + "jerk_support_bottom": { + "value": "5" + }, + "machine_end_gcode": { + "default_value": "M59\nG92 E1\nG1 E-1 F300\nM104 T0 S0\nM104 T1 S0\nM140 S0\nG28 X0 Y0\nM84\nM106 S0\nM107" + }, + "infill_sparse_density": { + "default_value": 15 + }, + "meshfix_maximum_deviation": { + "default_value": 0.005 + }, + "wall_0_material_flow": { + "value": "99" + }, + "material_adhesion_tendency": { + "default_value": 0 + }, + "prime_tower_flow": { + "value": "99" + }, + "prime_tower_position_y": { + "value": "1" + }, + "support_material_flow": { + "value": "99" + }, + "retract_at_layer_change": { + "default_value": true + }, + "machine_extruder_count": { + "default_value": 2 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "support_infill_sparse_thickness": { + "value": "0.2" + }, + "raft_surface_acceleration": { + "value": "250" + }, + "roofing_layer_count": { + "value": "1" + }, + "skirt_brim_line_width": { + "value": "0.5" + }, + "jerk_support": { + "value": "5" + }, + "raft_surface_jerk": { + "value": "5" + }, + "speed_equalize_flow_max": { + "default_value": 40 + }, + "raft_surface_speed": { + "value": "30.0" + }, + "jerk_travel": { + "value": "5" + }, + "support_zag_skip_count": { + "value": "8" + }, + "retraction_combing": { + "default_value": "infill" + }, + "raft_interface_line_spacing": { + "value": "0.4" + }, + "layer_height_0": { + "default_value": 0.2 + }, + "extruders_enabled_count": { + "value": "2" + }, + "support_line_distance": { + "value": "1.3333333333333333" + }, + "support_roof_density": { + "value": "70" + }, + "raft_base_line_spacing": { + "value": "0.8" + }, + "acceleration_prime_tower": { + "value": "250" + }, + "skin_material_flow": { + "value": "99" + }, + "support_z_distance": { + "default_value": 0.22 + }, + "bottom_skin_preshrink": { + "value": "1.2000000000000002" + }, + "jerk_skirt_brim": { + "value": "5" + }, + "z_seam_y": { + "value": "180" + }, + "skirt_line_count": { + "default_value": 2 + }, + "raft_margin": { + "default_value": 4 + }, + "infill_material_flow": { + "value": "99" + }, + "wipe_retraction_retract_speed": { + "value": "30" + }, + "z_seam_corner": { + "default_value": "z_seam_corner_weighted" + }, + "support_roof_height": { + "value": "0.4" + }, + "top_layers": { + "value": "4" + }, + "support_infill_rate": { + "value": "30" + }, + "raft_interface_speed": { + "value": "35" + }, + "default_material_print_temperature": { + "default_value": 195 + }, + "acceleration_layer_0": { + "value": "250" + }, + "support_skip_zag_per_mm": { + "default_value": 10 + }, + "material_initial_print_temperature": { + "value": "195" + }, + "raft_interface_jerk": { + "value": "5" + }, + "machine_width": { + "default_value": 210 + }, + "wall_line_count": { + "value": "3" + }, + "retraction_amount": { + "default_value": 3 + }, + "infill_sparse_thickness": { + "value": "0.2" + }, + "support_initial_layer_line_distance": { + "value": "1.3333333333333333" + }, + "jerk_support_infill": { + "value": "5" + }, + "acceleration_roofing": { + "value": "250" + }, + "retraction_extrusion_window": { + "value": "3" + }, + "raft_interface_line_width": { + "value": "0.4" + }, + "acceleration_support_roof": { + "value": "250" + }, + "support_brim_line_count": { + "value": "16" + }, + "layer_0_z_overlap": { + "value": "0.1" + }, + "support_angle": { + "default_value": 60 + }, + "machine_heated_bed": { + "default_value": true + }, + "raft_surface_thickness": { + "value": "0.2" + }, + "cool_min_layer_time": { + "default_value": 10 + }, + "gantry_height": { + "value": "210" + }, + "raft_airgap": { + "default_value": 0.2 + }, + "acceleration_skirt_brim": { + "value": "250" + }, + "skirt_brim_material_flow": { + "value": "99" + }, + "jerk_infill": { + "value": "5" + }, + "roofing_material_flow": { + "value": "99" + }, + "support_use_towers": { + "default_value": false + }, + "ooze_shield_angle": { + "default_value": 50 + }, + "material_flow": { + "default_value": 99 + }, + "speed_travel_layer_0": { + "value": "75.0" + }, + "raft_base_acceleration": { + "value": "250" + }, + "retraction_count_max": { + "default_value": 40 + }, + "ooze_shield_dist": { + "default_value": 4 + }, + "acceleration_support": { + "value": "250" + }, + "max_skin_angle_for_expansion": { + "default_value": 50 + }, + "coasting_enable": { + "default_value": true + }, + "brim_width": { + "default_value": 10 + }, + "acceleration_support_infill": { + "value": "250" + }, + "retraction_prime_speed": { + "value": "30" + }, + "raft_base_speed": { + "value": "35" + }, + "acceleration_wall_0": { + "value": "250" + }, + "xy_offset": { + "default_value": -0.16 + }, + "prime_tower_size": { + "default_value": 1 + }, + "jerk_ironing": { + "value": "5" + }, + "switch_extruder_prime_speed": { + "value": "30" + }, + "raft_jerk": { + "value": "5" + }, + "top_skin_preshrink": { + "value": "1.2000000000000002" + }, + "material_print_temperature": { + "value": "195" + }, + "wall_material_flow": { + "value": "99" + }, + "jerk_roofing": { + "value": "5" + }, + "cool_fan_full_at_height": { + "value": "0" + }, + "acceleration_wall_x": { + "value": "250" + }, + "support_bottom_distance": { + "value": "0.23" + }, + "cool_min_speed": { + "default_value": 15 + }, + "default_material_bed_temperature": { + "default_value": 50 + }, + "raft_interface_thickness": { + "value": "0.2" + } + } +} diff --git a/resources/definitions/stereotech_start.def.json b/resources/definitions/stereotech_start.def.json new file mode 100644 index 0000000000..e85893d811 --- /dev/null +++ b/resources/definitions/stereotech_start.def.json @@ -0,0 +1,45 @@ +{ + "version": 2, + "name": "Stereotech START", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Stereotech", + "manufacturer": "Stereotech LLC.", + "file_formats": "text/x-gcode", + "platform": "stereotech_start.stl", + "icon": "icon_ultimaker2", + "platform_offset": [0, 0, 0], + "machine_extruder_trains": + { + "0": "stereotech_start_extruder_0" + } + }, + + "overrides": { + "machine_heated_bed": { + "default_value": true + }, + "machine_width": { + "default_value": 190 + }, + "machine_height": { + "default_value": 190 + }, + "machine_depth": { + "default_value": 190 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home all axes (max endstops)\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG28 ;Home all axes (max endstops)\nM84 ;steppers off\nG90 ;absolute positioning" + }, + "machine_shape": { + "default_value": "rectangular" + } + } +} diff --git a/resources/definitions/stereotech_ste320.def.json b/resources/definitions/stereotech_ste320.def.json new file mode 100644 index 0000000000..3eb114324b --- /dev/null +++ b/resources/definitions/stereotech_ste320.def.json @@ -0,0 +1,89 @@ +{ + "version": 2, + "name": "Stereotech STE320", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Stereotech", + "manufacturer": "Stereotech LLC.", + "category": "Other", + "platform": "stereotech_ste320_platform.obj", + "platform_texture": "StereotechSte320backplate.png", + "platform_offset": [ + 0, + 0, + -14 + ], + "file_formats": "text/x-gcode", + "has_materials": true, + "supports_usb_connection": false, + "machine_extruder_trains": { + "0": "stereotech_ste320_1st", + "1": "stereotech_ste320_2nd" + } + }, + "overrides": { + "machine_name": { + "default_value": "Stereotech STE320" + }, + "machine_width": { + "default_value": 218 + }, + "machine_height": { + "default_value": 200 + }, + "machine_depth": { + "default_value": 210 + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [ + -29, + 22 + ], + [ + -29, + -20 + ], + [ + 27, + 22 + ], + [ + 27, + -20 + ] + ] + }, + "gantry_height": { + "value": "25" + }, + "machine_use_extruder_offset_to_offset_coords": { + "default_value": true + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;homing\nG1 Z15.0 F9000 ;move the platform down 15mm\nT1 ;Switch to the 2nd extruder\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F200 E-{switch_extruder_retraction_amount}\nT0 ;Switch to the 1st extruder\nG92 E0 ;zero the extruded length\nG1 F200 E6 ;extrude 6 mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 T0 S0 ;1st extruder heater off\nM104 T1 S0 ;2nd extruder heater off\nM140 S0 ;heated bed heater off\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + }, + "machine_extruder_count": { + "default_value": 2 + }, + "prime_tower_position_x": { + "value": "195" + }, + "prime_tower_position_y": { + "value": "149" + } + } +} \ No newline at end of file diff --git a/resources/definitions/strateo3d.def.json b/resources/definitions/strateo3d.def.json new file mode 100644 index 0000000000..2ee3650404 --- /dev/null +++ b/resources/definitions/strateo3d.def.json @@ -0,0 +1,138 @@ +{ + "version": 2, + "name": "Strateo3D", + "inherits": "fdmprinter", + "metadata": + { + "author": "M.K", + "manufacturer": "eMotionTech", + "category": "Other", + "visible": true, + "file_formats": "text/x-gcode", + "has_machine_quality": true, + "has_materials": true, + "has_variants": true, + "preferred_variant_name": "Standard 0.6", + "preferred_material": "emotiontech_pla", + "preferred_quality_type": "c", + "variants_name": "Print Head", + "machine_extruder_trains": + { + "0": "strateo3d_right_extruder", + "1": "strateo3d_left_extruder" + } + }, + + "overrides": + { + "machine_name": { "default_value": "Strateo3D" }, + "machine_width": { "default_value": 600 }, + "machine_depth": { "default_value": 420 }, + "machine_height": { "default_value": 495 }, + "machine_heated_bed": { "default_value": true }, + "machine_heated_build_volume": { "default_value": true }, + "machine_center_is_zero": { "default_value": false }, + "machine_head_with_fans_polygon": { "default_value": [ [ -76, -51.8 ] , [ 25, -51.8 ] , [ 25, 38.2 ] , [ -76, 38.2 ] ] }, + "gantry_height": { "value": "40" }, + "machine_extruder_count": { "default_value": 2 }, + "machine_gcode_flavor": { "default_value": "Marlin" }, + "machine_start_gcode": { "default_value": "G28 \nG90 G1 X300 Y210 Z15 F6000 \nG92 E0" }, + "machine_end_gcode": { "default_value": "T1 \nM104 S0 \nT0 \nM104 S0 \nM140 S0 \nM141 S0 \nG91 \nG0 z1 \nG90 \nG28 \nM801.0 \nM84 \nM192" }, + "extruder_prime_pos_y": {"minimum_value": "0", "maximum_value": "machine_depth"}, + "extruder_prime_pos_x": {"minimum_value": "0", "maximum_value": "machine_width"}, + "machine_heat_zone_length": { "default_value": 7 }, + "default_material_print_temperature": { "maximum_value_warning": "350" }, + "material_print_temperature": { "maximum_value_warning": "350" }, + "material_print_temperature_layer_0": { "maximum_value_warning": "350" }, + "material_bed_temperature": { "maximum_value": "130" }, + "material_bed_temperature_layer_0": { "maximum_value": "130" }, + "extruder_prime_pos_abs": { "default_value": true }, + "machine_acceleration": { "default_value": 1500 }, + + "acceleration_enabled": { "value": false }, + "acceleration_print": { "value": "machine_acceleration" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1250 / acceleration_print)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_print * 1000 / acceleration_print)" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1250 / acceleration_print)" }, + "acceleration_support": { "value": "acceleration_print" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_travel": { "value": "acceleration_print" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "adaptive_layer_height_variation": { "default_value": 0.1 }, + "adaptive_layer_height_variation_step": { "default_value": 0.05 }, + "adhesion_type": { "default_value": "skirt" }, + "expand_skins_expand_distance": { "value": "wall_line_width_0 + wall_line_count * wall_line_width_x" }, + "gradual_infill_step_height": { "value": "layer_height*10" }, + "gradual_support_infill_step_height": { "value": "layer_height*7" }, + "infill_before_walls": { "default_value": false }, + "infill_overlap": { "value": "0" }, + "infill_wipe_dist": { "value": "0" }, + "jerk_enabled": { "value": "False" }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_print": { "value": "25" }, + "jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" }, + "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, + "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" }, + "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" }, + "machine_min_cool_heat_time_window": { "value": "15" }, + "machine_nozzle_cool_down_speed": { "default_value": 0.50 }, + "machine_nozzle_heat_up_speed": { "default_value": 2.25 }, + "material_final_print_temperature": { "value": "material_print_temperature - 10" }, + "material_flow": { "default_value": 93 }, + "material_flow_layer_0": { "value": "math.ceil(material_flow*1)" }, + "material_initial_print_temperature": { "value": "material_print_temperature - 5" }, + "meshfix_maximum_resolution": { "value": "0.03" }, + "optimize_wall_printing_order": { "value": "True" }, + "prime_blob_enable": { "enabled": false, "default_value": false }, + "prime_tower_min_volume": { "default_value": 35 }, + "prime_tower_position_x": { "value": "machine_width/2 - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - 1" }, + "prime_tower_position_y": { "value": "machine_depth - prime_tower_size - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - 1" }, + "retraction_amount": { "default_value": 1.5 }, + "retraction_combing": { "default_value": "all" }, + "retraction_combing_max_distance": { "default_value": 5 }, + "retraction_count_max": { "default_value": 15 }, + "retraction_hop": { "value": "2" }, + "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, + "retraction_hop_only_when_collides": { "value": "True" }, + "retraction_min_travel": { "value": "3*line_width" }, + "retraction_prime_speed": { "value": "retraction_speed-10" }, + "retraction_speed": { "default_value": 25 }, + "skin_overlap": { "value": "10" }, + "skirt_brim_minimal_length": { "default_value": 333 }, + "speed_layer_0": { "value": "20" }, + "speed_travel_layer_0": { "value": "100" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": "50" }, + "speed_support": { "value": "speed_wall" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_topbottom": { "value": "math.ceil(speed_print * 20/35)" }, + "speed_travel": { "value": "150" }, + "speed_wall": { "value": "math.ceil(speed_print * 3/4)" }, + "speed_wall_0": { "value": "math.ceil(speed_wall * 2/3)" }, + "speed_wall_x": { "value": "speed_wall" }, + "support_angle": { "value": "50" }, + "support_bottom_distance": {"value": "extruderValue(support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr, 'support_z_distance/2') if support_type == 'everywhere' else 0", "maximum_value_warning": "machine_nozzle_size*1.5" }, + "support_interface_enable": { "default_value": true }, + "support_interface_height": { "value": "layer_height*3" }, + "support_interface_offset": { "value": "support_offset" }, + "support_top_distance": {"value": "extruderValue(support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr, 'support_z_distance')", "maximum_value_warning": "machine_nozzle_size*1.5" }, + "support_use_towers": { "default_value": true }, + "support_xy_distance": { "value": "line_width * 1.7" }, + "support_xy_distance_overhang": { "value": "wall_line_width_0" }, + "support_z_distance": { "value": "layer_height*2", "maximum_value_warning": "machine_nozzle_size*1.5" }, + "switch_extruder_prime_speed": { "value": "retraction_prime_speed" }, + "switch_extruder_retraction_amount": { "value": "7" }, + "switch_extruder_retraction_speeds": {"value": "retraction_retract_speed"}, + "top_bottom_thickness": { "value": "3*layer_height", "minimum_value_warning": "layer_height*2" }, + "top_thickness": { "value": "top_bottom_thickness" }, + "top_layers": { "value": "0 if infill_sparse_density == 100 else math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))"}, + "bottom_thickness": { "value": "top_bottom_thickness-2*layer_height+layer_height_0" }, + "bottom_layers": { "value": "999999 if infill_sparse_density == 100 else math.ceil(round(((bottom_thickness-resolveOrValue('layer_height_0')) / resolveOrValue('layer_height'))+1, 4))"}, + "travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" }, + "wall_thickness": { "value": "wall_line_width_0 + wall_line_width_x" } + } +} \ No newline at end of file diff --git a/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json new file mode 100644 index 0000000000..e4893cacac --- /dev/null +++ b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json @@ -0,0 +1,113 @@ +{ + "version": 2, + "name": "Discov3ry Complete", + "inherits": "fdmprinter", + "metadata": { + "author": "Andrew Finkle, CTO", + "manufacturer": "Structur3d.io", + "visible": true, + "file_formats": "text/x-gcode", + "platform": "ultimaker2_platform.obj", + "platform_texture": "Ultimaker2Plusbackplate.png", + "platform_offset": [0, 0, 0], + "has_materials": true, + "has_variants": true, + "variants_name": "Print core", + "preferred_variant_name": "0.84mm (Green)", + "preferred_material": "structur3d_dap100silicone", + "has_machine_quality": false, + "preferred_quality_type": "extra_fast", + "first_start_actions": [], + "supported_actions": [], + "machine_extruder_trains": + { + "0": "structur3d_discov3ry1_complete_um2plus_extruder_0" + }, + "firmware_file": "MarlinUltimaker2plus.hex" + }, + + "overrides": { + "machine_name": { "default_value": "Discov3ry Complete (Ultimaker 2+)" }, + "speed_infill": { + "value": "speed_print" + }, + "infill_sparse_density": { + "value": 100 + }, + "retraction_hop_enabled": { + "value": true + }, + "adhesion_type": { + "default_value": "skirt" + }, + "skirt_brim_minimal_length": { + "value": 1500 + }, + "speed_print": { + "value": 15 + }, + "speed_wall_x": { + "value": "speed_wall" + }, + "layer_height_0": { + "value": "round(machine_nozzle_size / 1.5, 2)" + }, + "line_width": { + "value": "round(machine_nozzle_size * 0.875, 2)" + }, + "speed_support": { + "value": "speed_wall_0" + }, + "machine_height": { + "default_value": 205 + }, + "machine_width": { + "default_value": 205 + }, + "machine_depth": { + "default_value": 205 + }, + "machine_show_variants": { + "default_value": true + }, + "gantry_height": { + "value": "52" + }, + "machine_nozzle_head_distance": { + "default_value": 5 + }, + "machine_nozzle_expansion_angle": { + "default_value": 45 + }, + "machine_heat_zone_length": { + "default_value": 20 + }, + "machine_head_with_fans_polygon": + { + "default_value": [ + [ -44, 14 ], + [ -44, -34 ], + [ 64, 14 ], + [ 64, -34 ] + ] + }, + "machine_disallowed_areas": { + "default_value": [ + [[-115, 112.5], [ -78, 112.5], [ -80, 102.5], [-115, 102.5]], + [[ 115, 112.5], [ 115, 102.5], [ 105, 102.5], [ 103, 112.5]], + [[-115, -112.5], [-115, -104.5], [ -84, -104.5], [ -82, -112.5]], + [[ 115, -112.5], [ 108, -112.5], [ 110, -104.5], [ 115, -104.5]] + ] + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "\n;Updated Firmware (.hex and Marlin .ino) for \n;Ultimaker 2+ with Discov3ry Extruder available at: \n;https://github.com/Structur3d/UM2.1Discov3ry-Firmware-beta \n;**Learn more at https://www.structur3d.io** \n \nM104 S{material_print_temperature} ;Start heating extruder \nM140 S{material_bed_temperature} ;Start heating bed \nG21 ;metric values \nG90 ;absolute positioning \nM82 ;set extruder to absolute mode \nM107 ;start with the fan off \nM302 ;allow cold extrusion \nM92 E2589 ;set extruder EEPROM steps/mm for paste \nG28 Z0 ;move Z to bottom endstops \nG28 X0 Y0 ;move X/Y to endstops \nG1 X15 Y0 F4000 ;move X/Y to front of printer \nG1 Z15.0 F9000 ;move the platform to 15mm \nG92 E0 ;zero the extruded length \nG1 F200 E10 ;extrude 10 mm of feed stock \nG92 E0 ;zero the extruded length again \nG1 F9000 \n;Put printing message on LCD screen \nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off \nM140 S0 ;heated bed heater off (if you have it) \nM92 E282 ;reset extruder EEPROM steps/mm for plastic filament \nG91 ;relative positioning \nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure \nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more \nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way \nM84 ;steppers off\nG90 ;absolute positioning" + } + + } +} diff --git a/resources/definitions/tam.def.json b/resources/definitions/tam.def.json index 0ed8d657a2..211049ca3d 100644 --- a/resources/definitions/tam.def.json +++ b/resources/definitions/tam.def.json @@ -1,6 +1,6 @@ { "version": 2, - "name": "Type A Machines Series 1 2014", + "name": "Series 1 2014", "inherits": "fdmprinter", "metadata": { "visible": true, @@ -32,12 +32,11 @@ "machine_heated_bed": { "default_value": true }, "machine_head_with_fans_polygon": { "default_value": [ [ -35, 65 ], [ -35, -55 ], [ 55, 65 ], [ 55, -55 ] ] }, - "gantry_height": { "default_value": 35 }, - "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "gantry_height": { "value": "35" }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_center_is_zero": { "default_value": false }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 200 }, "retraction_amount": { "default_value": 0.4 }, "retraction_speed": { "default_value": 35}, diff --git a/resources/definitions/tevo_blackwidow.def.json b/resources/definitions/tevo_blackwidow.def.json index 25e7a2620d..9e450067fb 100644 --- a/resources/definitions/tevo_blackwidow.def.json +++ b/resources/definitions/tevo_blackwidow.def.json @@ -44,7 +44,7 @@ }, "gantry_height": { - "default_value": 0 + "value": "0" }, "machine_gcode_flavor": { diff --git a/resources/definitions/tevo_tarantula.def.json b/resources/definitions/tevo_tarantula.def.json index ec4ae667d5..f4bf2b901e 100644 --- a/resources/definitions/tevo_tarantula.def.json +++ b/resources/definitions/tevo_tarantula.def.json @@ -23,7 +23,7 @@ "machine_height": { "default_value": 200 }, "machine_depth": { "default_value": 200 }, "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": + "machine_head_with_fans_polygon": { "default_value": [ @@ -33,7 +33,7 @@ [18, -18] ] }, - "gantry_height": { "default_value": 55 }, + "gantry_height": { "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_acceleration": { "default_value": 2650 }, "machine_max_jerk_xy": { "default_value": 15.0 }, diff --git a/resources/definitions/tevo_tornado.def.json b/resources/definitions/tevo_tornado.def.json index cb3a6c45bd..3b6c431feb 100644 --- a/resources/definitions/tevo_tornado.def.json +++ b/resources/definitions/tevo_tornado.def.json @@ -13,7 +13,7 @@ } }, "overrides": { - "machine_name": { + "machine_name": { "default_value": "Tevo Tornado" }, "machine_width": { @@ -25,10 +25,10 @@ "machine_depth": { "default_value": 300 }, - "machine_center_is_zero": { - "default_value": false + "machine_center_is_zero": { + "default_value": false }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-30, 34], [-30, -32], @@ -70,25 +70,43 @@ "default_value": true }, "gantry_height": { - "default_value": 30 + "value": "30" }, "acceleration_enabled": { - "default_value": false + "default_value": true }, - "machine_acceleration": { - "default_value": 1500 + "acceleration_print": { + "default_value": 500 + }, + "acceleration_travel": { + "value": 500 + }, + "acceleration_travel_layer_0": { + "value": 500 + }, + "machine_acceleration": { + "default_value": 1500 }, "jerk_enabled": { - "default_value": false + "default_value": true }, - "machine_max_jerk_xy": { - "default_value": 6 + "jerk_print": { + "default_value": 8 }, - "machine_gcode_flavor": { + "jerk_travel": { + "value": 8 + }, + "jerk_travel_layer_0": { + "value": 8 + }, + "machine_max_jerk_xy": { + "default_value": 6 + }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "; start_gcode\nM117 Start Clean ; Indicate nozzle clean in progress on LCD\n;\nM104 S[extruder0_temperature] \nM109 S[extruder0_temperature] \nM109 R[extruder0_temperature] \n;\nM107 ; Turn layer fan off\nG21 ; Set to metric [change to G20 if you want Imperial]\nG90 ; Force coordinates to be absolute relative to the origin\nG28 ; Home X/Y/Z axis\n;\nG1 X3 Y1 Z15 F9000 ; Move safe Z height to shear strings\nG0 X1 Y1 Z0.2 F9000 ; Move in 1mm from edge and up [z] 0.2mm\nG92 E0 ; Set extruder to [0] zero\nG1 X100 E12 F500 ; Extrude 30mm filiment along X axis 100mm long to prime and clean the nozzle\nG92 E0 ; Reset extruder to [0] zero end of cleaning run\nG1 E-1 F500 ; Retract filiment by 1 mm to reduce string effect\nG1 X180 F4000 ; quick wipe away from the filament line / purge\nM117 End Clean ; Indicate nozzle clean in progress on LCD\n;\nM117 Printing...\n; Begin printing with sliced GCode after here\n;" + "default_value": "; start_gcode\nM117 Start Clean ; Indicate nozzle clean in progress on LCD\n;\nM104 S{material_print_temperature_layer_0} \nM109 S{material_print_temperature_layer_0} \nM109 R{material_print_temperature_layer_0} \n;\nM107 ; Turn layer fan off\nG21 ; Set to metric [change to G20 if you want Imperial]\nG90 ; Force coordinates to be absolute relative to the origin\nG28 ; Home X/Y/Z axis\n;\nG1 X3 Y1 Z15 F9000 ; Move safe Z height to shear strings\nG0 X1 Y1 Z0.2 F9000 ; Move in 1mm from edge and up [z] 0.2mm\nG92 E0 ; Set extruder to [0] zero\nG1 X100 E12 F500 ; Extrude 30mm filiment along X axis 100mm long to prime and clean the nozzle\nG92 E0 ; Reset extruder to [0] zero end of cleaning run\nG1 E-1 F500 ; Retract filiment by 1 mm to reduce string effect\nG1 X180 F4000 ; quick wipe away from the filament line / purge\nM117 End Clean ; Indicate nozzle clean in progress on LCD\n;\nM117 Printing...\n; Begin printing with sliced GCode after here\n;" }, "machine_end_gcode": { "default_value": ";\n; end_gcode\nG92 E0 ; zero the extruded length\nG1 E-5 F9000 ; retract\nM104 S0 ; turn off temperature\nM140 S0 ; turn off bed\nG91 ; relative positioning\nG1 E-1 F300 ; retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+20 E-5 X-20 Y-20 F7200 ; move Z up a bit and retract filament even more\nG1 X320 Y150 F10000 ; move right mid\nM107 ; turn off layer fan\nM84 ; disable motors\nG90 ; absolute positioning\n;\n;EOF" diff --git a/resources/definitions/tizyx_evy.def.json b/resources/definitions/tizyx_evy.def.json index fe9a02a31c..57c7337196 100644 --- a/resources/definitions/tizyx_evy.def.json +++ b/resources/definitions/tizyx_evy.def.json @@ -10,13 +10,12 @@ "has_machine_quality": true, "has_materials": true, - "has_machine_materials": true, "has_variants": true, "preferred_variant_name": "0.4mm", "preferred_material": "tizyx_pla", "preferred_quality_type": "normal", - "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175","generic_pp", "generic_pva", "generic_pva_175", "generic_tpu", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ], + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175","generic_pp", "generic_pva", "generic_pva_175", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ], "machine_extruder_trains": { @@ -32,7 +31,7 @@ "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, - "gantry_height": { "default_value": 500 }, + "gantry_height": { "value": "500" }, "machine_height": { "default_value": 255 }, "machine_depth": { "default_value": 255 }, "machine_width": { "default_value": 255 }, @@ -51,13 +50,8 @@ "fill_outline_gaps": { "default_value": true}, "infill_sparse_density": { "default_value": 15}, "retraction_amount": { "default_value": 2.5}, - "retraction_min_travel": { "default_value": 2}, "retraction_speed": { "default_value": 30}, "speed_print": { "default_value": 60}, - "speed_topbottom": { "default_value": 50}, - "speed_wall_0": { "default_value": 40}, - "top_layers": { "default_value": 4}, - "wall_line_count": { "default_value": 2}, "cool_min_layer_time": { "default_value": 11}, "layer_height": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, "layer_height_0": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, @@ -69,6 +63,13 @@ "machine_end_gcode": { "default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84" - } + }, + + "acceleration_enabled": {"value": "False"}, + "acceleration_print": {"value": "1500"}, + "z_seam_type": {"default_value": "back"}, + "z_seam_x": {"value": "127.5"}, + "z_seam_y": {"value": "250"}, + "retraction_combing": {"default_value": "off"} } } diff --git a/resources/definitions/tizyx_evy_dual.def.json b/resources/definitions/tizyx_evy_dual.def.json new file mode 100644 index 0000000000..e06894139e --- /dev/null +++ b/resources/definitions/tizyx_evy_dual.def.json @@ -0,0 +1,63 @@ +{ + "name": "TiZYX EVY Dual", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "TiZYX", + "manufacturer": "TiZYX", + "file_formats": "text/x-gcode", + + "has_machine_quality": true, + "has_materials": true, + "has_variants": true, + "preferred_variant_name": "Classic Extruder", + + "preferred_material": "tizyx_pla", + "preferred_quality_type": "normal", + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_cpe_175", "generic_cpe_plus","generic_hips_175","generic_nylon_175", "generic_pc_175", "generic_pva_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ], + + "machine_extruder_trains": + { + "0": "tizyx_evy_dual_extruder_0", + "1": "tizyx_evy_dual_extruder_1" + }, + "platform": "tizyx_k25_platform.stl", + "platform_offset": [0, -4, 0], + "first_start_actions": ["MachineSettingsAction"], + "supported_actions": ["MachineSettingsAction"] + }, + + "overrides": { + "machine_extruder_count": { "default_value": 2 }, + "machine_heated_bed": { "default_value": true }, + "machine_center_is_zero": { "default_value": false }, + "gantry_height": { "value": "500" }, + "machine_height": { "default_value": 255 }, + "machine_depth": { "default_value": 255 }, + "machine_width": { "default_value": 255 }, + "machine_head_with_fans_polygon": { + "default_value": [ + [25, 49], + [25, -49], + [-25, -49], + [25, 49] + ] + }, + "machine_start_gcode": + { + "default_value": "M82\nG90\nG28 X\nG28 Y\nG28 Z\nG29\nG91\nG1 Z0\nG90\nM82\nG92 E0\nG1 X125 Y245 F3000\nG1 Z0" + }, + "machine_end_gcode": + { + "default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84" + }, + + "acceleration_enabled": {"value": "False"}, + "acceleration_print": {"value": "1500"}, + "z_seam_type": {"default_value": "back"}, + "z_seam_x": {"value": "127.5"}, + "z_seam_y": {"value": "250"}, + "retraction_combing": {"default_value": "off"} + } +} diff --git a/resources/definitions/tizyx_k25.def.json b/resources/definitions/tizyx_k25.def.json index d6a5ff5ecd..32fa9b331d 100644 --- a/resources/definitions/tizyx_k25.def.json +++ b/resources/definitions/tizyx_k25.def.json @@ -1,52 +1,60 @@ -{ - "version": 2, - "name": "TiZYX K25", - "inherits": "fdmprinter", - "metadata": - { - "visible": true, - "author": "TiZYX", - "manufacturer": "TiZYX", - "file_formats": "text/x-gcode", - "platform": "tizyx_k25_platform.stl", - "platform_offset": [0, -4, 0], - "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pla", "generic_pla_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ], - "preferred_material": "tizyx_pla", - "has_machine_quality": true, - "has_materials": true, - "has_variants": true, - "preferred_variant_name": "0.4 mm", - "machine_extruder_trains": - { - "0": "tizyx_k25_extruder_0" - } - }, - - "overrides": - { - "machine_name": { "default_value": "TiZYX K25" }, - "machine_heated_bed": { "default_value": true }, - "machine_width": { "default_value": 255 }, - "machine_height": { "default_value": 255 }, - "machine_depth": { "default_value": 255 }, - "machine_center_is_zero": { "default_value": false }, - "gantry_height": { "default_value": 500 }, - "machine_head_with_fans_polygon": { - "default_value": [ - [25, 49], - [25, -49], - [-25, -49], - [25, 49] - ] - }, - "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "machine_start_gcode": - { - "default_value": "M82\nG90\nG28 X\nG28 Y\nG28 Z\nG29\nG91\nG1 Z0\nG90\nM82\nG92 E0\nG1 X125 Y245 F3000\nG1 Z0" - }, - "machine_end_gcode": - { - "default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84" - } - } -} +{ + "version": 2, + "name": "TiZYX K25", + "inherits": "fdmprinter", + "metadata": + { + "visible": true, + "author": "TiZYX", + "manufacturer": "TiZYX", + "file_formats": "text/x-gcode", + "platform": "tizyx_k25_platform.stl", + "platform_offset": [0, -4, 0], + "exclude_materials": ["chromatik_pla", "dsm_arnitel2045_175", "dsm_novamid1070_175", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "generic_abs", "generic_abs_175", "generic_bam", "generic_cpe", "generic_cpe_175", "generic_cpe_plus", "generic_hips", "generic_hips_175", "generic_nylon", "generic_nylon_175", "generic_pc", "generic_pc_175", "generic_petg", "generic_petg_175", "generic_pla", "generic_pla_175", "generic_pp", "generic_pva", "generic_pva_175", "generic_tough_pla", "generic_tpu", "generic_tpu_175", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "ultimaker_abs_black", "ultimaker_abs_blue", "ultimaker_abs_green", "ultimaker_abs_grey", "ultimaker_abs_orange", "ultimaker_abs_pearl-gold", "ultimaker_abs_red", "ultimaker_abs_silver-metallic", "ultimaker_abs_white", "ultimaker_abs_yellow", "ultimaker_bam", "ultimaker_cpe_black", "ultimaker_cpe_blue", "ultimaker_cpe_dark-grey", "ultimaker_cpe_green", "ultimaker_cpe_light-grey", "ultimaker_cpe_plus_black", "ultimaker_cpe_plus_transparent", "ultimaker_cpe_plus_white", "ultimaker_cpe_red", "ultimaker_cpe_transparent", "ultimaker_cpe_white", "ultimaker_cpe_yellow", "ultimaker_nylon_black", "ultimaker_nylon_transparent", "ultimaker_pc_black", "ultimaker_pc_transparent", "ultimaker_pc_white", "ultimaker_pla_black", "ultimaker_pla_blue", "ultimaker_pla_green", "ultimaker_pla_magenta", "ultimaker_pla_orange", "ultimaker_pla_pearl-white", "ultimaker_pla_red", "ultimaker_pla_silver-metallic", "ultimaker_pla_transparent", "ultimaker_pla_white", "ultimaker_pla_yellow", "ultimaker_pp_transparent", "ultimaker_pva", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "ultimaker_tpu_black", "ultimaker_tpu_blue", "ultimaker_tpu_red", "ultimaker_tpu_white", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla" ], + "preferred_material": "tizyx_pla", + "has_machine_quality": true, + "has_materials": true, + "has_variants": true, + "preferred_variant_name": "0.4 mm", + "machine_extruder_trains": + { + "0": "tizyx_k25_extruder_0" + } + }, + + "overrides": + { + "machine_name": { "default_value": "TiZYX K25" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 255 }, + "machine_height": { "default_value": 255 }, + "machine_depth": { "default_value": 255 }, + "machine_center_is_zero": { "default_value": false }, + "gantry_height": { "value": "500" }, + "machine_head_with_fans_polygon": { + "default_value": [ + [25, 49], + [25, -49], + [-25, -49], + [25, 49] + ] + }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": + { + "default_value": "M82\nG90\nG28 X\nG28 Y\nG28 Z\nG29\nG91\nG1 Z0\nG90\nM82\nG92 E0\nG1 X125 Y245 F3000\nG1 Z0" + }, + "machine_end_gcode": + { + "default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84" + }, + + + "acceleration_enabled": {"value": "False"}, + "acceleration_print": {"value": "1500"}, + "z_seam_type": {"default_value": "back"}, + "z_seam_x": {"value": "127.5"}, + "z_seam_y": {"value": "250"}, + "retraction_combing": {"default_value": "off"} + } +} diff --git a/resources/definitions/ubuild-3d_mr_bot_280.def.json b/resources/definitions/ubuild-3d_mr_bot_280.def.json index 7eb65c3e78..255d8f032b 100644 --- a/resources/definitions/ubuild-3d_mr_bot_280.def.json +++ b/resources/definitions/ubuild-3d_mr_bot_280.def.json @@ -1,5 +1,4 @@ { - "id": "ubuild-3d_mr_bot_280", "version": 2, "name": "uBuild-3D Mr Bot 280", "inherits": "fdmprinter", @@ -24,17 +23,14 @@ "machine_height": { "default_value": 275 }, "machine_depth": { "default_value": 275 }, "machine_center_is_zero": { "default_value": false }, - "material_bed_temperature": { "default_value": 70 }, "layer_height_0": { "default_value": 0.1 }, "retraction_amount": { "default_value": 2 }, "retraction_speed": { "default_value": 50 }, - "retraction_retract_speed": { "default_value": 50 }, - "retraction_prime_speed": { "default_value": 30 }, "adhesion_type": { "default_value": "skirt" }, "machine_nozzle_heat_up_speed": { "default_value": 2 }, "machine_nozzle_cool_down_speed": { "default_value": 2 }, "machine_head_with_fans_polygon": { "default_value": [[-20,20],[10,10],[10,10],[10,10]] }, - "gantry_height": { "default_value": 275 }, + "gantry_height": { "value": "275" }, "machine_max_feedrate_z": { "default_value": 15 }, "machine_max_feedrate_e": { "default_value": 60 }, "machine_max_acceleration_z": { "default_value": 1000 }, diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index a980a1afdf..aec7907dbe 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -7,7 +7,7 @@ "manufacturer": "Ultimaker B.V.", "category": "Ultimaker", "visible": false, - "exclude_materials": [ "generic_hips", "generic_petg" ] + "exclude_materials": [ "generic_hips", "generic_petg", "structur3d_dap100silicone" ] }, "overrides": { "machine_max_feedrate_e": { diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index 4cc291ff45..40fbdaf709 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -14,9 +14,6 @@ "has_materials": false, "has_machine_quality": true, "preferred_variant_name": "0.4 mm", - "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white"], - "first_start_actions": ["UM2UpgradeSelection"], - "supported_actions":["UM2UpgradeSelection"], "machine_extruder_trains": { "0": "ultimaker2_extruder_0" @@ -56,7 +53,7 @@ "default_value": false }, "gantry_height": { - "default_value": 48 + "value": "48" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true @@ -91,9 +88,6 @@ }, "machine_acceleration": { "default_value": 3000 - }, - "machine_nozzle_temp_enabled": { - "default_value": false } } } diff --git a/resources/definitions/ultimaker2_extended_olsson.def.json b/resources/definitions/ultimaker2_extended_olsson.def.json new file mode 100644 index 0000000000..d2eb7f9a5d --- /dev/null +++ b/resources/definitions/ultimaker2_extended_olsson.def.json @@ -0,0 +1,12 @@ +{ + "version": 2, + "name": "Ultimaker 2 Extended with Olsson", + "inherits": "ultimaker2_extended", + "metadata": { + "has_variants": true + }, + + "overrides": { + "machine_name": { "default_value": "Ultimaker 2 Extended with Olsson" } + } +} diff --git a/resources/definitions/ultimaker2_go.def.json b/resources/definitions/ultimaker2_go.def.json index 9e374b2c88..774d215bef 100644 --- a/resources/definitions/ultimaker2_go.def.json +++ b/resources/definitions/ultimaker2_go.def.json @@ -11,7 +11,6 @@ "platform": "ultimaker2go_platform.obj", "platform_texture": "Ultimaker2Gobackplate.png", "platform_offset": [0, 0, 0], - "first_start_actions": [], "machine_extruder_trains": { "0": "ultimaker2_go_extruder_0" diff --git a/resources/definitions/ultimaker2_olsson.def.json b/resources/definitions/ultimaker2_olsson.def.json new file mode 100644 index 0000000000..2f8b877942 --- /dev/null +++ b/resources/definitions/ultimaker2_olsson.def.json @@ -0,0 +1,13 @@ +{ + "version": 2, + "name": "Ultimaker 2 with Olsson Block", + "inherits": "ultimaker2", + "metadata": { + "has_variants": true, + "quality_definition": "ultimaker2" + }, + + "overrides": { + "machine_name": { "default_value": "Ultimaker 2 with Olsson Block" } + } +} diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index 28fd2b71f9..633e50bdba 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -12,8 +12,8 @@ "preferred_variant_name": "0.4 mm", "has_variants": true, "has_materials": true, - "has_machine_materials": true, "has_machine_quality": true, + "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone" ], "first_start_actions": [], "supported_actions": [], "machine_extruder_trains": @@ -37,9 +37,6 @@ "line_width": { "value": "round(machine_nozzle_size * 0.875, 2)" }, - "speed_layer_0": { - "default_value": 20 - }, "speed_support": { "value": "speed_wall_0" }, @@ -50,7 +47,7 @@ "default_value": true }, "gantry_height": { - "default_value": 52 + "value": "52" }, "machine_nozzle_head_distance": { "default_value": 5 diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 72756de2a5..b34ff3bdba 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -12,8 +12,8 @@ "platform_offset": [0, 0, 0], "has_machine_quality": true, "has_materials": true, - "has_machine_materials": true, "has_variants": true, + "exclude_materials": [ "generic_hips", "generic_petg", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone" ], "preferred_variant_name": "AA 0.4", "preferred_quality_type": "normal", "variants_name": "Print core", @@ -25,15 +25,18 @@ "first_start_actions": [ "DiscoverUM3Action" ], "supported_actions": [ "DiscoverUM3Action" ], "supports_usb_connection": false, + "supports_network_connection": true, "firmware_update_info": { "id": 9066, "check_urls": [ - "http://software.ultimaker.com/jedi/releases/latest.version?utm_source=cura&utm_medium=software&utm_campaign=resources", - "http://software.ultimaker.com/releases/firmware/9066/stable/version.txt" + "https://software.ultimaker.com/releases/firmware/9066/stable/um-update.swu.version" ], "update_url": "https://ultimaker.com/firmware" - } + }, + "bom_numbers": [ + 9066 + ] }, @@ -62,7 +65,7 @@ "machine_max_feedrate_y": { "default_value": 300 }, "machine_max_feedrate_z": { "default_value": 40 }, "machine_acceleration": { "default_value": 3000 }, - "gantry_height": { "default_value": 60 }, + "gantry_height": { "value": "60" }, "machine_disallowed_areas": { "default_value": [ [[92.8, -53.4], [92.8, -97.5], [116.5, -97.5], [116.5, -53.4]], [[73.8, 107.5], [73.8, 100.5], [116.5, 100.5], [116.5, 107.5]], @@ -78,7 +81,7 @@ "prime_tower_position_x": { "value": "machine_depth - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) - 30" }, "prime_tower_wipe_enabled": { "default_value": false }, - "prime_blob_enable": { "enabled": true }, + "prime_blob_enable": { "enabled": true, "default_value": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" }, "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, @@ -118,7 +121,6 @@ "material_bed_temperature": { "maximum_value": "115" }, "material_bed_temperature_layer_0": { "maximum_value": "115" }, "material_standby_temperature": { "value": "100" }, - "meshfix_maximum_resolution": { "value": "0.04" }, "multiple_mesh_overlap": { "value": "0" }, "optimize_wall_printing_order": { "value": "True" }, "prime_tower_enable": { "default_value": true }, diff --git a/resources/definitions/ultimaker3_extended.def.json b/resources/definitions/ultimaker3_extended.def.json index 68f26969b7..ba9824896f 100644 --- a/resources/definitions/ultimaker3_extended.def.json +++ b/resources/definitions/ultimaker3_extended.def.json @@ -12,7 +12,6 @@ "platform_texture": "Ultimaker3Extendedbackplate.png", "platform_offset": [0, 0, 0], "has_machine_quality": true, - "has_machine_materials": true, "has_materials": true, "has_variants": true, "preferred_variant_name": "AA 0.4", @@ -28,11 +27,13 @@ "id": 9511, "check_urls": [ - "http://software.ultimaker.com/jedi/releases/latest.version?utm_source=cura&utm_medium=software&utm_campaign=resources", - "http://software.ultimaker.com/releases/firmware/9511/stable/version.txt" + "https://software.ultimaker.com/releases/firmware/9066/stable/um-update.swu.version" ], "update_url": "https://ultimaker.com/firmware" - } + }, + "bom_numbers": [ + 9511 + ] }, "overrides": { diff --git a/resources/definitions/ultimaker_original.def.json b/resources/definitions/ultimaker_original.def.json index 6a978c47cb..71130312e7 100644 --- a/resources/definitions/ultimaker_original.def.json +++ b/resources/definitions/ultimaker_original.def.json @@ -11,9 +11,9 @@ "platform": "ultimaker_platform.stl", "has_materials": true, "has_machine_quality": true, - "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white"], - "first_start_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel"], - "supported_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel"], + "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone" ], + "first_start_actions": ["UMOUpgradeSelection", "BedLevel"], + "supported_actions": ["UMOUpgradeSelection", "BedLevel"], "machine_extruder_trains": { "0": "ultimaker_original_extruder_0" @@ -46,7 +46,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true diff --git a/resources/definitions/ultimaker_original_dual.def.json b/resources/definitions/ultimaker_original_dual.def.json index 999650aa28..fd9b91e238 100644 --- a/resources/definitions/ultimaker_original_dual.def.json +++ b/resources/definitions/ultimaker_original_dual.def.json @@ -12,7 +12,7 @@ "has_materials": true, "has_machine_quality": true, "quality_definition": "ultimaker_original", - "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white"], + "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone" ], "machine_extruder_trains": { "0": "ultimaker_original_dual_1st", @@ -20,8 +20,8 @@ }, "firmware_file": "MarlinUltimaker-{baudrate}-dual.hex", "firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}-dual.hex", - "first_start_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel"], - "supported_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel"] + "first_start_actions": ["UMOUpgradeSelection", "BedLevel"], + "supported_actions": ["UMOUpgradeSelection", "BedLevel"] }, "overrides": { @@ -48,7 +48,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true diff --git a/resources/definitions/ultimaker_original_plus.def.json b/resources/definitions/ultimaker_original_plus.def.json index bdb8a3d788..949e2e8d0d 100644 --- a/resources/definitions/ultimaker_original_plus.def.json +++ b/resources/definitions/ultimaker_original_plus.def.json @@ -10,8 +10,8 @@ "platform": "ultimaker2_platform.obj", "platform_texture": "UltimakerPlusbackplate.png", "quality_definition": "ultimaker_original", - "first_start_actions": ["UMOCheckup", "BedLevel"], - "supported_actions": ["UMOCheckup", "BedLevel"], + "first_start_actions": ["BedLevel"], + "supported_actions": ["BedLevel"], "machine_extruder_trains": { "0": "ultimaker_original_plus_extruder_0" diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json new file mode 100644 index 0000000000..efdc7cca0a --- /dev/null +++ b/resources/definitions/ultimaker_s3.def.json @@ -0,0 +1,165 @@ +{ + "version": 2, + "name": "Ultimaker S3", + "inherits": "ultimaker", + "metadata": { + "author": "Ultimaker", + "manufacturer": "Ultimaker B.V.", + "category": "Ultimaker", + "visible": true, + "file_formats": "application/x-ufp;text/x-gcode", + "platform": "ultimaker_s3_platform.obj", + "platform_texture": "UltimakerS3backplate.png", + "platform_offset": [0, 0, 0], + "has_machine_quality": true, + "has_materials": true, + "has_variant_buildplates": false, + "has_variants": true, + "exclude_materials": [ "generic_hips", "generic_petg", "structur3d_dap100silicone" ], + "preferred_variant_name": "AA 0.4", + "preferred_quality_type": "normal", + "variants_name": "Print core", + "nozzle_offsetting_for_disallowed_areas": false, + "machine_extruder_trains": + { + "0": "ultimaker_s3_extruder_left", + "1": "ultimaker_s3_extruder_right" + }, + "first_start_actions": [ "DiscoverUM3Action" ], + "supported_actions": [ "DiscoverUM3Action" ], + "supports_usb_connection": false, + "weight": -1, + "firmware_update_info": { + "id": 213482, + "check_urls": ["https://software.ultimaker.com/releases/firmware/213482/stable/um-update.swu.version"], + "update_url": "https://ultimaker.com/firmware" + }, + "bom_numbers": [ + 213482 + ] + }, + + "overrides": { + "machine_name": { "default_value": "Ultimaker S3" }, + "machine_width": { "default_value": 230 }, + "machine_depth": { "default_value": 190 }, + "machine_height": { "default_value": 200 }, + "machine_heated_bed": { "default_value": true }, + "machine_nozzle_heat_up_speed": { "default_value": 1.4 }, + "machine_nozzle_cool_down_speed": { "default_value": 0.8 }, + "machine_head_with_fans_polygon": + { + "default_value": + [ + [ -41.4, -45.8 ], + [ -41.4, 36.0 ], + [ 63.3, 36.0 ], + [ 63.3, -45.8 ] + ] + }, + "machine_gcode_flavor": { "default_value": "Griffin" }, + "machine_max_feedrate_x": { "default_value": 300 }, + "machine_max_feedrate_y": { "default_value": 300 }, + "machine_max_feedrate_z": { "default_value": 40 }, + "machine_acceleration": { "default_value": 3000 }, + "gantry_height": { "value": "60" }, + "machine_extruder_count": { "default_value": 2 }, + "extruder_prime_pos_abs": { "default_value": true }, + "machine_start_gcode": { "default_value": "" }, + "machine_end_gcode": { "default_value": "" }, + "prime_blob_enable": { "enabled": true, "default_value": false }, + + "speed_travel": + { + "maximum_value": "150", + "value": "150" + }, + + "acceleration_enabled": { "value": "True" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_print": { "value": "4000" }, + "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" }, + "brim_width": { "value": "3" }, + "cool_fan_full_at_height": { "value": "layer_height_0 + 4 * layer_height" }, + "cool_fan_speed": { "value": "50" }, + "cool_fan_speed_max": { "value": "100" }, + "cool_min_speed": { "value": "5" }, + "infill_line_width": { "value": "round(line_width * 0.5 / 0.35, 2)" }, + "infill_overlap": { "value": "0" }, + "infill_pattern": { "value": "'triangles'" }, + "infill_wipe_dist": { "value": "0" }, + "jerk_enabled": { "value": "True" }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_print": { "value": "25" }, + "jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" }, + "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, + "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" }, + "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" }, + "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" }, + "line_width": { "value": "machine_nozzle_size * 0.875" }, + "machine_min_cool_heat_time_window": { "value": "15" }, + "default_material_print_temperature": { "value": "200" }, + "material_standby_temperature": { "value": "100" }, + "multiple_mesh_overlap": { "value": "0" }, + "prime_tower_enable": { "value": "True" }, + "raft_airgap": { "value": "0" }, + "raft_base_speed": { "value": "20" }, + "raft_base_thickness": { "value": "0.3" }, + "raft_interface_line_spacing": { "value": "0.5" }, + "raft_interface_line_width": { "value": "0.5" }, + "raft_interface_speed": { "value": "20" }, + "raft_interface_thickness": { "value": "0.2" }, + "raft_jerk": { "value": "jerk_layer_0" }, + "raft_margin": { "value": "10" }, + "raft_speed": { "value": "25" }, + "raft_surface_layers": { "value": "1" }, + "retraction_amount": { "value": "6.5" }, + "retraction_count_max": { "value": "10" }, + "retraction_extrusion_window": { "value": "1" }, + "retraction_hop": { "value": "2" }, + "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, + "retraction_hop_only_when_collides": { "value": "True" }, + "retraction_min_travel": { "value": "5" }, + "retraction_prime_speed": { "value": "15" }, + "skin_overlap": { "value": "10" }, + "speed_equalize_flow_enabled": { "value": "True" }, + "speed_layer_0": { "value": "20" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": "35" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" }, + "speed_wall": { "value": "math.ceil(speed_print * 30 / 35)" }, + "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 30)" }, + "speed_wall_x": { "value": "speed_wall" }, + "support_angle": { "value": "45" }, + "support_pattern": { "value": "'triangles'" }, + "support_use_towers": { "value": "False" }, + "support_xy_distance": { "value": "wall_line_width_0 * 2.5" }, + "support_xy_distance_overhang": { "value": "wall_line_width_0" }, + "support_z_distance": { "value": "0" }, + "switch_extruder_prime_speed": { "value": "15" }, + "switch_extruder_retraction_amount": { "value": "8" }, + "top_bottom_thickness": { "value": "1" }, + "travel_avoid_supports": { "value": "True" }, + "travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" }, + "wall_0_inset": { "value": "0" }, + "wall_line_width_x": { "value": "round(line_width * 0.3 / 0.35, 2)" }, + "wall_thickness": { "value": "1" }, + "meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" }, + "meshfix_maximum_deviation": { "value": "layer_height / 2" }, + "optimize_wall_printing_order": { "value": "True" }, + "retraction_combing": { "default_value": "all" }, + "initial_layer_line_width_factor": { "value": "120" }, + "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" } + } +} diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 310765dbc3..dcd44a371a 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s5", "version": 2, "name": "Ultimaker S5", "inherits": "ultimaker", @@ -14,7 +13,6 @@ "platform_offset": [0, -30, -10], "has_machine_quality": true, "has_materials": true, - "has_machine_materials": true, "has_variant_buildplates": true, "has_variants": true, "preferred_variant_name": "AA 0.4", @@ -30,12 +28,16 @@ "first_start_actions": [ "DiscoverUM3Action" ], "supported_actions": [ "DiscoverUM3Action" ], "supports_usb_connection": false, - "weight": -1, + "supports_network_connection": true, + "weight": -2, "firmware_update_info": { "id": 9051, - "check_urls": ["http://software.ultimaker.com/releases/firmware/9051/stable/version.txt"], + "check_urls": ["https://software.ultimaker.com/releases/firmware/9051/stable/um-update.swu.version"], "update_url": "https://ultimaker.com/firmware" - } + }, + "bom_numbers": [ + 9051, 214475 + ] }, "overrides": { @@ -44,6 +46,7 @@ "machine_depth": { "default_value": 240 }, "machine_height": { "default_value": 300 }, "machine_heated_bed": { "default_value": true }, + "machine_heated_build_volume": { "default_value": true }, "machine_nozzle_heat_up_speed": { "default_value": 1.4 }, "machine_nozzle_cool_down_speed": { "default_value": 0.8 }, "machine_head_with_fans_polygon": @@ -61,13 +64,11 @@ "machine_max_feedrate_y": { "default_value": 300 }, "machine_max_feedrate_z": { "default_value": 40 }, "machine_acceleration": { "default_value": 3000 }, - "gantry_height": { "default_value": 60 }, + "gantry_height": { "value": "60" }, "machine_extruder_count": { "default_value": 2 }, "extruder_prime_pos_abs": { "default_value": true }, "machine_start_gcode": { "default_value": "" }, "machine_end_gcode": { "default_value": "" }, - "prime_tower_position_x": { "default_value": 345 }, - "prime_tower_position_y": { "default_value": 222.5 }, "prime_blob_enable": { "enabled": true, "default_value": false }, "speed_travel": @@ -156,10 +157,12 @@ "wall_0_inset": { "value": "0" }, "wall_line_width_x": { "value": "round(line_width * 0.3 / 0.35, 2)" }, "wall_thickness": { "value": "1" }, - "meshfix_maximum_resolution": { "value": "0.04" }, + "meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" }, + "meshfix_maximum_deviation": { "value": "layer_height / 2" }, "optimize_wall_printing_order": { "value": "True" }, "retraction_combing": { "default_value": "all" }, "initial_layer_line_width_factor": { "value": "120" }, - "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" } + "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }, + "build_volume_temperature": { "maximum_value": 50 } } } diff --git a/resources/definitions/uni_print_3d.def.json b/resources/definitions/uni_print_3d.def.json index 427177176a..99d9eab1e0 100644 --- a/resources/definitions/uni_print_3d.def.json +++ b/resources/definitions/uni_print_3d.def.json @@ -1,5 +1,4 @@ { - "id": "uni_print_3d", "name": "UNI-PRINT-3D", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/uniqbot_one.def.json b/resources/definitions/uniqbot_one.def.json index 5a33500b75..ec8336ae50 100644 --- a/resources/definitions/uniqbot_one.def.json +++ b/resources/definitions/uniqbot_one.def.json @@ -30,7 +30,7 @@ "default_value": false }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/vertex_delta_k8800.def.json b/resources/definitions/vertex_delta_k8800.def.json index df24bd84fb..c92476da49 100644 --- a/resources/definitions/vertex_delta_k8800.def.json +++ b/resources/definitions/vertex_delta_k8800.def.json @@ -3,10 +3,10 @@ "version": 2, "inherits": "fdmprinter", "metadata": { - "manufacturer": "Velleman nv", + "manufacturer": "Velleman N.V.", "file_formats": "text/x-gcode", "visible": true, - "author": "Velleman", + "author": "Velleman N.V.", "has_machine_quality": true, "has_materials": true, "machine_extruder_trains": @@ -31,7 +31,7 @@ "default_value": "elliptic" }, "gantry_height": { - "default_value": 0 + "value": "0" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/vertex_k8400.def.json b/resources/definitions/vertex_k8400.def.json index a3a3777547..bbeb8510ba 100644 --- a/resources/definitions/vertex_k8400.def.json +++ b/resources/definitions/vertex_k8400.def.json @@ -4,7 +4,7 @@ "inherits": "fdmprinter", "metadata": { "visible": true, - "manufacturer": "Velleman", + "manufacturer": "Velleman N.V.", "file_formats": "text/x-gcode", "platform": "Vertex_build_panel.stl", "platform_offset": [0, -3, 0], @@ -20,12 +20,6 @@ "machine_heated_bed": { "default_value": true }, - "material_bed_temperature": { - "default_value": 0 - }, - "material_bed_temperature_layer_0": { - "default_value": 0 - }, "machine_width": { "default_value": 200 }, @@ -41,14 +35,6 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { - "default_value": [ - [-60, -18], - [-60, 40], - [18, 40], - [18, -18] - ] - }, "machine_head_with_fans_polygon": { "default_value": [ [-60, -40], @@ -58,16 +44,16 @@ ] }, "gantry_height": { - "default_value": 18 + "value": "18" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." + "default_value": "M104 T0 S{material_print_temperature_layer_0}\nG28 ;Home extruder\nG90 ;Absolute positioning\nM82 ;Extruder in absolute mode\nG1 Z1 F100\nG92 E0 ;Reset extruder position\nM109 T0 S{material_print_temperature_layer_0}\nG1 E20 F100\nG92 E0 ;Reset extruder position" }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + "default_value": "G1 X0 Y0 Z130 ;Get extruder out of way\nM107 ;Turn off fan\n;Disable all extruders\nG91 ;Relative positioning\nT0\nG1 E-1 ;Reduce filament pressure\nM104 T0 S0\nG90 ;Absolute positioning\nG92 E0 ;Reset extruder position\nM140 S0 ;Disable heated bed\nM84 ;Turn steppers off" } } } \ No newline at end of file diff --git a/resources/definitions/vertex_k8400_dual.def.json b/resources/definitions/vertex_k8400_dual.def.json index c7706135bd..498d550429 100644 --- a/resources/definitions/vertex_k8400_dual.def.json +++ b/resources/definitions/vertex_k8400_dual.def.json @@ -4,7 +4,7 @@ "inherits": "fdmprinter", "metadata": { "visible": true, - "manufacturer": "Velleman", + "manufacturer": "Velleman N.V.", "file_formats": "text/x-gcode", "platform": "Vertex_build_panel.stl", "platform_offset": [0, -3, 0], @@ -18,12 +18,6 @@ "machine_heated_bed": { "default_value": true }, - "material_bed_temperature": { - "default_value": 0 - }, - "material_bed_temperature_layer_0": { - "default_value": 0 - }, "machine_width": { "default_value": 223.7 }, @@ -42,14 +36,6 @@ "machine_use_extruder_offset_to_offset_coords": { "default_value": true }, - "machine_head_polygon": { - "default_value": [ - [-60, -18], - [-60, 40], - [18, 40], - [18, -18] - ] - }, "machine_head_with_fans_polygon": { "default_value": [ [-60, -40], @@ -59,7 +45,7 @@ ] }, "gantry_height": { - "default_value": 18 + "value": "18" }, "machine_extruder_count": { "default_value": 2 diff --git a/resources/definitions/vertex_nano_k8600.def.json b/resources/definitions/vertex_nano_k8600.def.json new file mode 100644 index 0000000000..ef9552caf3 --- /dev/null +++ b/resources/definitions/vertex_nano_k8600.def.json @@ -0,0 +1,77 @@ +{ + "version": 2, + "name": "Vertex K8600", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "manufacturer": "Velleman N.V.", + "file_formats": "text/x-gcode", + "supports_usb_connection": true, + "supported_actions": ["MachineSettingsAction"], + "machine_extruder_trains": { + "0": "vertex_nano_k8600_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "Vertex K8600" + }, + "machine_heated_bed": { + "default_value": false + }, + "machine_width": { + "default_value": 80 + }, + "machine_height": { + "default_value": 75 + }, + "machine_depth": { + "default_value": 80 + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "; Vertex Nano Start G-code M0 is my nozzle clean M400 G28 ; Home extruder G90 ; Absolute positioning M82 ; Extruder in absolute mode M104 T0 S{material_print_temperature} G92 E0 ; Reset extruder position G1 Z1 F800 M109 T0 S{material_print_temperature} M117 Priming nozzle... M83 G1 E20 F100 ; purge/prime nozzle M82 G92 E0 ; Reset extruder position G4 S3 ; Wait 3 seconds G1 Z5 F2000 M117 Vertex Nano is printing" + }, + "machine_end_gcode": { + "default_value": "; Vertex Nano end G-Code G91 ; Relative positioning T0 G1 E-1 F1500; Reduce filament pressure M104 T0 S0 G90 ; Absolute positioning G92 E0 ; Reset extruder position G28 M84 ; Turn steppers off" + }, + "line_width": { + "value": 0.35 + }, + "infill_line_width": { + "value": 0.35 + }, + "wall_thickness": { + "value": 0.7 + }, + "top_bottom_thickness": { + "value": 0.6 + }, + "infill_sparse_density": { + "value": 40 + }, + "infill_overlap": { + "value": 5 + }, + "min_infill_area": { + "value": 0.1 + }, + "retract_at_layer_change": { + "value": true + }, + "retraction_min_travel": { + "value": 1 + }, + "retraction_count_max": { + "value": 15 + }, + "retraction_extrusion_window": { + "value": 1 + } + } +} diff --git a/resources/definitions/wanhao_d6.def.json b/resources/definitions/wanhao_d6.def.json index c8a690d02c..eaaae54826 100644 --- a/resources/definitions/wanhao_d6.def.json +++ b/resources/definitions/wanhao_d6.def.json @@ -36,7 +36,7 @@ "default_value": true }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/wanhao_d9.def.json b/resources/definitions/wanhao_d9.def.json index 4e368f970f..ac4d41fa40 100644 --- a/resources/definitions/wanhao_d9.def.json +++ b/resources/definitions/wanhao_d9.def.json @@ -23,16 +23,14 @@ "machine_heated_bed": { "default_value": true }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{travel_speed} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{travel_speed} \n ;Put printing message on LCD screen\n M117 Printing..." + "default_value": "G21 ;metric values\n G90 ;absolute positioning\n M82 ;set extruder to absolute mode\n M107 ;start with the fan off\n G28 X0 Y0 ;move X/Y to min endstops\n G28 Z0 ;move Z to min endstops\n G1 Z15.0 F{speed_travel} ;move the platform down 15mm\n G92 E0 ;zero the extruded length\n G1 F200 E6 ;extrude 6 mm of feed stock\n G92 E0 ;zero the extruded length again\n G1 F{speed_travel} \n ;Put printing message on LCD screen\n M117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" + "default_value": "M104 S0 ;extruder heater off \n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning" }, "support_angle": { "default_value": 60 }, "support_enable": { "default_value": true }, "layer_height_0": { "default_value": 0.15 }, - "top_thickness": { "default_value": 0.6 }, - "material_print_temperature": { "default_value": 190 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 30 }, "adhesion_type": { "default_value": "raft" }, diff --git a/resources/definitions/winbo_dragonl4.def.json b/resources/definitions/winbo_dragonl4.def.json index 0ca68cdcee..bf52a785e9 100644 --- a/resources/definitions/winbo_dragonl4.def.json +++ b/resources/definitions/winbo_dragonl4.def.json @@ -37,7 +37,7 @@ "machine_max_feedrate_y": { "default_value": 300 }, "machine_max_feedrate_z": { "default_value": 40 }, "machine_acceleration": { "default_value": 2000 }, - "gantry_height": { "default_value": 80 }, + "gantry_height": { "value": "80" }, "machine_extruder_count": { "default_value": 1 }, "machine_start_gcode": { "default_value": "G21\nG90\nM82\nM107\nM9998\nG28 X0 Y0\nG28 Z0\nG1 F6000 Z0.3\nG92 E0\nG1 F800 X585 E12\nG92 E0" }, "machine_end_gcode": { "default_value": "M104 S0\nM140 S0\nG92 E2\nG1 E0 F200\nG28 X0 Y0\nM84 X Y E" }, @@ -126,7 +126,7 @@ "support_bottom_height": { "value": "max((0.15 if(0.15%layer_height==0) else layer_height*int((0.15+layer_height)/layer_height)),layer_height)" }, "support_bottom_pattern": { "value": "'zigzag'" }, "support_connect_zigzags": { "value": "False" }, - "support_infill_rate": { "value": "8" }, + "support_infill_rate": { "value": "8 if support_enable else 0 if support_tree_enable else 8" }, "support_interface_density": { "value": "80" }, "support_interface_enable": { "value": "True" }, "support_interface_height": { "value": "0.5" }, diff --git a/resources/definitions/winbo_mini2.def.json b/resources/definitions/winbo_mini2.def.json index 7393fdf910..f1c94ca07e 100644 --- a/resources/definitions/winbo_mini2.def.json +++ b/resources/definitions/winbo_mini2.def.json @@ -37,7 +37,7 @@ "machine_max_feedrate_y": { "default_value": 200 }, "machine_max_feedrate_z": { "default_value": 40 }, "machine_acceleration": { "default_value": 3000 }, - "gantry_height": { "default_value": 75 }, + "gantry_height": { "value": "75" }, "machine_extruder_count": { "default_value": 1 }, "machine_start_gcode": { "default_value": "G21\nG90\nM82\nM107\nG28 X0 Y0\nG28 Z0\nG1 F1000 Z3\nG1 F4000 X0\nG1 F4000 Y0\nG1 F1000 Z0.2\nG92 E0\nG1 F1000 X30 E8\nG92 E0\nM117 Printing." }, "machine_end_gcode": { "default_value": "M104 S0\nM140 S0\nG92 E2\nG1 E0 F200\nG28 X0 Y0\nM84 X Y E" }, @@ -126,7 +126,7 @@ "support_bottom_height": { "value": "max((0.15 if(0.15%layer_height==0) else layer_height*int((0.15+layer_height)/layer_height)),layer_height)" }, "support_bottom_pattern": { "value": "'zigzag'" }, "support_connect_zigzags": { "value": "False" }, - "support_infill_rate": { "value": "8" }, + "support_infill_rate": { "value": "8 if support_enable else 0 if support_tree_enable else 8" }, "support_interface_density": { "value": "80" }, "support_interface_enable": { "value": "True" }, "support_interface_height": { "value": "0.5" }, diff --git a/resources/definitions/winbo_superhelper105.def.json b/resources/definitions/winbo_superhelper105.def.json index 59e71fb446..ac78467a2a 100644 --- a/resources/definitions/winbo_superhelper105.def.json +++ b/resources/definitions/winbo_superhelper105.def.json @@ -37,7 +37,7 @@ "machine_max_feedrate_y": { "default_value": 200 }, "machine_max_feedrate_z": { "default_value": 40 }, "machine_acceleration": { "default_value": 2000 }, - "gantry_height": { "default_value": 200 }, + "gantry_height": { "value": "200" }, "machine_extruder_count": { "default_value": 1 }, "machine_start_gcode": { "default_value": "G21\nG90\nM82\nM107\nG28 X0 Y0\nG28 Z0\nG1 F6000 Z0.3\nG92 E0\nG1 F1000 X30 E8\nG92 E0\nM117 Printing." }, "machine_end_gcode": { "default_value": "M104 S0\nM140 S0\nG92 E2\nG1 E0 F200\nG28 X0 Y0\nM84 X Y E" }, @@ -115,7 +115,7 @@ "support_bottom_height": { "value": "max((0.15 if(0.15%layer_height==0) else layer_height*int((0.15+layer_height)/layer_height)),layer_height)" }, "support_bottom_pattern": { "value": "'zigzag'" }, "support_connect_zigzags": { "value": "False" }, - "support_infill_rate": { "value": "8" }, + "support_infill_rate": { "value": "8 if support_enable else 0 if support_tree_enable else 8" }, "support_interface_density": { "value": "80" }, "support_interface_enable": { "value": "True" }, "support_interface_height": { "value": "0.5" }, diff --git a/resources/definitions/z-bolt_classic.def.json b/resources/definitions/z-bolt_classic.def.json index d294de473a..f9212c9597 100644 --- a/resources/definitions/z-bolt_classic.def.json +++ b/resources/definitions/z-bolt_classic.def.json @@ -41,7 +41,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true diff --git a/resources/definitions/z-bolt_plus.def.json b/resources/definitions/z-bolt_plus.def.json index 57331df4c6..dace8ea300 100644 --- a/resources/definitions/z-bolt_plus.def.json +++ b/resources/definitions/z-bolt_plus.def.json @@ -41,7 +41,7 @@ ] }, "gantry_height": { - "default_value": 55 + "value": "55" }, "machine_use_extruder_offset_to_offset_coords": { "default_value": true diff --git a/resources/definitions/zone3d_printer.def.json b/resources/definitions/zone3d_printer.def.json index 328505e18a..4c72422788 100644 --- a/resources/definitions/zone3d_printer.def.json +++ b/resources/definitions/zone3d_printer.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Ultimaker", - "manufacturer": "Unknown", + "manufacturer": "Zone3D", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0], "machine_extruder_trains": @@ -16,9 +16,7 @@ "overrides": { "prime_tower_size": { "default_value": 10.350983390135314 }, - "material_print_temperature": { "default_value": 260 }, "layer_height": { "default_value": 0.14 }, - "speed_travel": { "default_value": 150 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/zyyx_agile.def.json b/resources/definitions/zyyx_agile.def.json index 17265bf6f6..a4b3c3ee8b 100644 --- a/resources/definitions/zyyx_agile.def.json +++ b/resources/definitions/zyyx_agile.def.json @@ -33,7 +33,7 @@ "machine_center_is_zero": { "default_value": true }, "machine_gcode_flavor": { "default_value": "Makerbot" }, "machine_head_with_fans_polygon": { "default_value": [ [ -37, 50 ], [ 25, 50 ], [ 25, -40 ], [ -37, -40 ] ] }, - "gantry_height": { "default_value": 10 }, + "gantry_height": { "value": "10" }, "machine_steps_per_mm_x": { "default_value": 88.888889 }, "machine_steps_per_mm_y": { "default_value": 88.888889 }, "machine_steps_per_mm_z": { "default_value": 400 }, diff --git a/resources/extruders/101Hero_extruder_0.def.json b/resources/extruders/101Hero_extruder_0.def.json index 82c06e40d6..21c892133c 100644 --- a/resources/extruders/101Hero_extruder_0.def.json +++ b/resources/extruders/101Hero_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "101Hero_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/3dator_extruder_0.def.json b/resources/extruders/3dator_extruder_0.def.json index 6749eb7bb4..97b03518f7 100644 --- a/resources/extruders/3dator_extruder_0.def.json +++ b/resources/extruders/3dator_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "3dator_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/Mark2_extruder1.def.json b/resources/extruders/Mark2_extruder1.def.json new file mode 100644 index 0000000000..27becf88ff --- /dev/null +++ b/resources/extruders/Mark2_extruder1.def.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "Mark2_for_Ultimaker2", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 } + } +} diff --git a/resources/extruders/Mark2_extruder2.def.json b/resources/extruders/Mark2_extruder2.def.json new file mode 100644 index 0000000000..ac654d9c00 --- /dev/null +++ b/resources/extruders/Mark2_extruder2.def.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "Mark2_for_Ultimaker2", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 } + } +} diff --git a/resources/extruders/abax_pri3_extruder_0.def.json b/resources/extruders/abax_pri3_extruder_0.def.json index 27e86d6042..618ca7f596 100644 --- a/resources/extruders/abax_pri3_extruder_0.def.json +++ b/resources/extruders/abax_pri3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "abax_pri3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/abax_pri5_extruder_0.def.json b/resources/extruders/abax_pri5_extruder_0.def.json index 842e76e5f3..4a96b5e12e 100644 --- a/resources/extruders/abax_pri5_extruder_0.def.json +++ b/resources/extruders/abax_pri5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "abax_pri5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/abax_titan_extruder_0.def.json b/resources/extruders/abax_titan_extruder_0.def.json index 79e1974def..078b9f0470 100644 --- a/resources/extruders/abax_titan_extruder_0.def.json +++ b/resources/extruders/abax_titan_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "abax_titan_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/alfawise_u20_extruder_0.def.json b/resources/extruders/alfawise_u20_extruder_0.def.json index 2fbe3f1772..6bb2bde534 100644 --- a/resources/extruders/alfawise_u20_extruder_0.def.json +++ b/resources/extruders/alfawise_u20_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "alfawise_u20_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/alfawise_u30_extruder_0.def.json b/resources/extruders/alfawise_u30_extruder_0.def.json index 37f59eb567..4014b5ab62 100644 --- a/resources/extruders/alfawise_u30_extruder_0.def.json +++ b/resources/extruders/alfawise_u30_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "alfawise_u30_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/alya3dp_extruder_0.def.json b/resources/extruders/alya3dp_extruder_0.def.json index 3676f01ad2..5e05210e2c 100644 --- a/resources/extruders/alya3dp_extruder_0.def.json +++ b/resources/extruders/alya3dp_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "alya3dp_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/creality_cr10_extruder_0.def.json b/resources/extruders/anet_a6_extruder_0.def.json similarity index 80% rename from resources/extruders/creality_cr10_extruder_0.def.json rename to resources/extruders/anet_a6_extruder_0.def.json index 3a259b672b..c87160a542 100644 --- a/resources/extruders/creality_cr10_extruder_0.def.json +++ b/resources/extruders/anet_a6_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "creality_cr10_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "creality_cr10", + "machine": "anet_a6", "position": "0" }, diff --git a/resources/extruders/anycubic_4max_extruder_0.def.json b/resources/extruders/anycubic_4max_extruder_0.def.json index 5c2ab8d479..9ea55928b8 100644 --- a/resources/extruders/anycubic_4max_extruder_0.def.json +++ b/resources/extruders/anycubic_4max_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "anycubic_4max_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/creality_cr10s4_extruder_0.def.json b/resources/extruders/anycubic_chiron_extruder_0.def.json similarity index 80% rename from resources/extruders/creality_cr10s4_extruder_0.def.json rename to resources/extruders/anycubic_chiron_extruder_0.def.json index 8a40c6431f..b4117c755a 100644 --- a/resources/extruders/creality_cr10s4_extruder_0.def.json +++ b/resources/extruders/anycubic_chiron_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "creality_cr10s4_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "creality_cr10s4", + "machine": "anycubic_chiron", "position": "0" }, diff --git a/resources/extruders/anycubic_i3_mega_extruder_0.def.json b/resources/extruders/anycubic_i3_mega_extruder_0.def.json index 6d9c330536..f15eab4829 100644 --- a/resources/extruders/anycubic_i3_mega_extruder_0.def.json +++ b/resources/extruders/anycubic_i3_mega_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "anycubic_i3_mega_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bfb_extruder_0.def.json b/resources/extruders/bfb_extruder_0.def.json index 88c81ee03e..6dd995d098 100644 --- a/resources/extruders/bfb_extruder_0.def.json +++ b/resources/extruders/bfb_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bfb_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bibo2_dual_extruder_0.def.json b/resources/extruders/bibo2_dual_extruder_0.def.json index f83801fa0c..91508ecc6d 100644 --- a/resources/extruders/bibo2_dual_extruder_0.def.json +++ b/resources/extruders/bibo2_dual_extruder_0.def.json @@ -1,46 +1,45 @@ { - "id": "BIBO1", - "version": 2, - "name": "Extruder 1", - "inherits": "fdmextruder", - "metadata": { - "machine": "BIBO2 dual", - "position": "0" - }, - "overrides": { - "extruder_nr": { - "default_value": 0, - "maximum_value": "1" - }, - "material_diameter": { - "default_value": 1.75 - }, - "machine_nozzle_size": { - "default_value": 0.4 - }, - "machine_nozzle_offset_x": { - "default_value": 0.0 - }, - "machine_nozzle_offset_y": { - "default_value": 0.0 - }, - "machine_extruder_start_pos_abs": { - "default_value": true - }, - "machine_extruder_start_pos_x": { - "value": "prime_tower_position_x" - }, - "machine_extruder_start_pos_y": { - "value": "prime_tower_position_y" - }, - "machine_extruder_end_pos_abs": { - "default_value": true - }, - "machine_extruder_end_pos_x": { - "value": "prime_tower_position_x" - }, - "machine_extruder_end_pos_y": { - "value": "prime_tower_position_y" - } - } + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "bibo2_dual", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": 0.0 + }, + "machine_nozzle_offset_y": { + "default_value": 0.0 + }, + "machine_extruder_start_pos_abs": { + "default_value": true + }, + "machine_extruder_start_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_start_pos_y": { + "value": "prime_tower_position_y" + }, + "machine_extruder_end_pos_abs": { + "default_value": true + }, + "machine_extruder_end_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_end_pos_y": { + "value": "prime_tower_position_y" + } + } } diff --git a/resources/extruders/bibo2_dual_extruder_1.def.json b/resources/extruders/bibo2_dual_extruder_1.def.json index 5f479ba54b..129ad27273 100644 --- a/resources/extruders/bibo2_dual_extruder_1.def.json +++ b/resources/extruders/bibo2_dual_extruder_1.def.json @@ -1,46 +1,45 @@ { - "id": "BIBO2", - "version": 2, - "name": "Extruder 2", - "inherits": "fdmextruder", - "metadata": { - "machine": "BIBO2 dual", - "position": "1" - }, - "overrides": { - "extruder_nr": { - "default_value": 1, - "maximum_value": "1" - }, - "material_diameter": { - "default_value": 1.75 - }, - "machine_nozzle_size": { - "default_value": 0.4 - }, - "machine_nozzle_offset_x": { - "default_value": 0.0 - }, - "machine_nozzle_offset_y": { - "default_value": 0.0 - }, - "machine_extruder_start_pos_abs": { - "default_value": true - }, - "machine_extruder_start_pos_x": { - "value": "prime_tower_position_x" - }, - "machine_extruder_start_pos_y": { - "value": "prime_tower_position_y" - }, - "machine_extruder_end_pos_abs": { - "default_value": true - }, - "machine_extruder_end_pos_x": { - "value": "prime_tower_position_x" - }, - "machine_extruder_end_pos_y": { - "value": "prime_tower_position_y" - } - } + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "bibo2_dual", + "position": "1" + }, + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": 0.0 + }, + "machine_nozzle_offset_y": { + "default_value": 0.0 + }, + "machine_extruder_start_pos_abs": { + "default_value": true + }, + "machine_extruder_start_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_start_pos_y": { + "value": "prime_tower_position_y" + }, + "machine_extruder_end_pos_abs": { + "default_value": true + }, + "machine_extruder_end_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_end_pos_y": { + "value": "prime_tower_position_y" + } + } } diff --git a/resources/extruders/bq_hephestos_2_extruder_0.def.json b/resources/extruders/bq_hephestos_2_extruder_0.def.json index 833907937d..d58d8d755a 100644 --- a/resources/extruders/bq_hephestos_2_extruder_0.def.json +++ b/resources/extruders/bq_hephestos_2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_hephestos_extruder_0.def.json b/resources/extruders/bq_hephestos_extruder_0.def.json index 753778f399..dc9b42d66d 100644 --- a/resources/extruders/bq_hephestos_extruder_0.def.json +++ b/resources/extruders/bq_hephestos_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_hephestos_xl_extruder_0.def.json b/resources/extruders/bq_hephestos_xl_extruder_0.def.json index 91cac04dc9..a52032f129 100644 --- a/resources/extruders/bq_hephestos_xl_extruder_0.def.json +++ b/resources/extruders/bq_hephestos_xl_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_xl_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_witbox_2_extruder_0.def.json b/resources/extruders/bq_witbox_2_extruder_0.def.json index 04107f4471..62fe62ad0b 100644 --- a/resources/extruders/bq_witbox_2_extruder_0.def.json +++ b/resources/extruders/bq_witbox_2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_witbox_2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_witbox_extruder_0.def.json b/resources/extruders/bq_witbox_extruder_0.def.json index d3a5c677af..37b1492676 100644 --- a/resources/extruders/bq_witbox_extruder_0.def.json +++ b/resources/extruders/bq_witbox_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_witbox_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_large_front.def.json b/resources/extruders/builder_premium_large_front.def.json index 4834bc8fd9..dc1c557304 100644 --- a/resources/extruders/builder_premium_large_front.def.json +++ b/resources/extruders/builder_premium_large_front.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_large_front", "version": 2, "name": "Front Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_large_rear.def.json b/resources/extruders/builder_premium_large_rear.def.json index f257749ea4..5dbe6d30c9 100644 --- a/resources/extruders/builder_premium_large_rear.def.json +++ b/resources/extruders/builder_premium_large_rear.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_large_rear", "version": 2, "name": "Rear Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_medium_front.def.json b/resources/extruders/builder_premium_medium_front.def.json index 05dcb3d49f..2d38e48aab 100644 --- a/resources/extruders/builder_premium_medium_front.def.json +++ b/resources/extruders/builder_premium_medium_front.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_medium_front", "version": 2, "name": "Front Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_medium_rear.def.json b/resources/extruders/builder_premium_medium_rear.def.json index 3461e07f09..0a789c38f1 100644 --- a/resources/extruders/builder_premium_medium_rear.def.json +++ b/resources/extruders/builder_premium_medium_rear.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_medium_rear", "version": 2, "name": "Rear Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_small_front.def.json b/resources/extruders/builder_premium_small_front.def.json index 7a1c352c73..b36c535aeb 100644 --- a/resources/extruders/builder_premium_small_front.def.json +++ b/resources/extruders/builder_premium_small_front.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_small_front", "version": 2, "name": "Front Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_small_rear.def.json b/resources/extruders/builder_premium_small_rear.def.json index 7085236a5c..8e00d0cc39 100644 --- a/resources/extruders/builder_premium_small_rear.def.json +++ b/resources/extruders/builder_premium_small_rear.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_small_rear", "version": 2, "name": "Rear Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_0.def.json b/resources/extruders/cartesio_extruder_0.def.json index 6d2b5f634e..ad27d4854c 100644 --- a/resources/extruders/cartesio_extruder_0.def.json +++ b/resources/extruders/cartesio_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_1.def.json b/resources/extruders/cartesio_extruder_1.def.json index 3d49a220c0..1699a9c6a8 100644 --- a/resources/extruders/cartesio_extruder_1.def.json +++ b/resources/extruders/cartesio_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_1", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_2.def.json b/resources/extruders/cartesio_extruder_2.def.json index 1f8f8b9ca9..2521ada681 100644 --- a/resources/extruders/cartesio_extruder_2.def.json +++ b/resources/extruders/cartesio_extruder_2.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_2", "version": 2, "name": "Extruder 3", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_3.def.json b/resources/extruders/cartesio_extruder_3.def.json index 0b1cfe493e..c844e7ce54 100644 --- a/resources/extruders/cartesio_extruder_3.def.json +++ b/resources/extruders/cartesio_extruder_3.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_3", "version": 2, "name": "Extruder 4", "inherits": "fdmextruder", diff --git a/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json b/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json index 26d847483d..dfa06c776a 100644 --- a/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json +++ b/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cocoon_create_modelmaker_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cr-x_extruder_0.def.json b/resources/extruders/cr-x_extruder_0.def.json index 8135815afb..d9b7b03021 100644 --- a/resources/extruders/cr-x_extruder_0.def.json +++ b/resources/extruders/cr-x_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "cr-x_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", "metadata": { - "machine": "Creality CR-X", + "machine": "creality_cr-x", "position": "0" }, diff --git a/resources/extruders/cr-x_extruder_1.def.json b/resources/extruders/cr-x_extruder_1.def.json index 9313f2ea78..8e763df64f 100644 --- a/resources/extruders/cr-x_extruder_1.def.json +++ b/resources/extruders/cr-x_extruder_1.def.json @@ -1,10 +1,9 @@ { - "id": "cr-x_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", "metadata": { - "machine": "Creality CR-X", + "machine": "creality_cr-x", "position": "1" }, diff --git a/resources/extruders/creality_cr10s5_extruder_0.def.json b/resources/extruders/creality_base_extruder_0.def.json similarity index 80% rename from resources/extruders/creality_cr10s5_extruder_0.def.json rename to resources/extruders/creality_base_extruder_0.def.json index 98b701ae2e..a173d1c2fa 100644 --- a/resources/extruders/creality_cr10s5_extruder_0.def.json +++ b/resources/extruders/creality_base_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "creality_cr10s5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "creality_cr10s5", + "machine": "creality_base", "position": "0" }, @@ -12,5 +11,6 @@ "extruder_nr": { "default_value": 0 }, "machine_nozzle_size": { "default_value": 0.4 }, "material_diameter": { "default_value": 1.75 } + } } diff --git a/resources/extruders/creatable_d3_extruder_0.def.json b/resources/extruders/creatable_d3_extruder_0.def.json index 7d45bb8e8a..95883d0f69 100644 --- a/resources/extruders/creatable_d3_extruder_0.def.json +++ b/resources/extruders/creatable_d3_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "creatable_d3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "Creatable_D3", + "machine": "creatable_d3", "position": "0" }, diff --git a/resources/extruders/cubicon_3dp_110f_extruder_0.def.json b/resources/extruders/cubicon_3dp_110f_extruder_0.def.json index 9c854fd2a1..048c12b992 100644 --- a/resources/extruders/cubicon_3dp_110f_extruder_0.def.json +++ b/resources/extruders/cubicon_3dp_110f_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_3dp_110f_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_3dp_210f_extruder_0.def.json b/resources/extruders/cubicon_3dp_210f_extruder_0.def.json index 8a8573760a..07fe7f3769 100644 --- a/resources/extruders/cubicon_3dp_210f_extruder_0.def.json +++ b/resources/extruders/cubicon_3dp_210f_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_3dp_210f_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_3dp_310f_extruder_0.def.json b/resources/extruders/cubicon_3dp_310f_extruder_0.def.json index 4edbbd5a6c..8dc336877f 100644 --- a/resources/extruders/cubicon_3dp_310f_extruder_0.def.json +++ b/resources/extruders/cubicon_3dp_310f_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_3dp_310f_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_dual_pro_a30_extruder_0.def.json b/resources/extruders/cubicon_dual_pro_a30_extruder_0.def.json new file mode 100644 index 0000000000..6c8993e799 --- /dev/null +++ b/resources/extruders/cubicon_dual_pro_a30_extruder_0.def.json @@ -0,0 +1,26 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "cubicon_dual_pro_a30", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": -27.3 + }, + "machine_nozzle_offset_y": { + "default_value": -19.9 + }, + "material_diameter": { + "default_value": 1.75 + } + } +} diff --git a/resources/extruders/cubicon_dual_pro_a30_extruder_1.def.json b/resources/extruders/cubicon_dual_pro_a30_extruder_1.def.json new file mode 100644 index 0000000000..ccdfdee1f7 --- /dev/null +++ b/resources/extruders/cubicon_dual_pro_a30_extruder_1.def.json @@ -0,0 +1,26 @@ +{ + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "cubicon_dual_pro_a30", + "position": "1" + }, + "overrides": { + "extruder_nr": { + "default_value": 1 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": -27.3 + }, + "machine_nozzle_offset_y": { + "default_value": -19.9 + }, + "material_diameter": { + "default_value": 1.75 + } + } +} diff --git a/resources/extruders/cubicon_style_plus_a15_extruder_0.def.json b/resources/extruders/cubicon_style_plus_a15_extruder_0.def.json new file mode 100644 index 0000000000..12d022cd1e --- /dev/null +++ b/resources/extruders/cubicon_style_plus_a15_extruder_0.def.json @@ -0,0 +1,26 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "cubicon_style_plus_a15", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": -4.00 + }, + "machine_nozzle_offset_y": { + "default_value": -7.00 + }, + "material_diameter": { + "default_value": 1.75 + } + } +} diff --git a/resources/extruders/custom_extruder_1.def.json b/resources/extruders/custom_extruder_1.def.json index 859c6a2f22..942f3e96b9 100644 --- a/resources/extruders/custom_extruder_1.def.json +++ b/resources/extruders/custom_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_1", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_2.def.json b/resources/extruders/custom_extruder_2.def.json index eecda5dfcd..cd43efa994 100644 --- a/resources/extruders/custom_extruder_2.def.json +++ b/resources/extruders/custom_extruder_2.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_2", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_3.def.json b/resources/extruders/custom_extruder_3.def.json index 77909ec05d..be5bdd0e6a 100644 --- a/resources/extruders/custom_extruder_3.def.json +++ b/resources/extruders/custom_extruder_3.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_3", "version": 2, "name": "Extruder 3", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_4.def.json b/resources/extruders/custom_extruder_4.def.json index be792c3a8e..ce1df0a5f5 100644 --- a/resources/extruders/custom_extruder_4.def.json +++ b/resources/extruders/custom_extruder_4.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_4", "version": 2, "name": "Extruder 4", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_5.def.json b/resources/extruders/custom_extruder_5.def.json index ea64605041..beb4786505 100644 --- a/resources/extruders/custom_extruder_5.def.json +++ b/resources/extruders/custom_extruder_5.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_5", "version": 2, "name": "Extruder 5", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_6.def.json b/resources/extruders/custom_extruder_6.def.json index fd27fadace..7f1e1a1343 100644 --- a/resources/extruders/custom_extruder_6.def.json +++ b/resources/extruders/custom_extruder_6.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_6", "version": 2, "name": "Extruder 6", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_7.def.json b/resources/extruders/custom_extruder_7.def.json index cf003d1a6b..e4239f35f0 100644 --- a/resources/extruders/custom_extruder_7.def.json +++ b/resources/extruders/custom_extruder_7.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_7", "version": 2, "name": "Extruder 7", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_8.def.json b/resources/extruders/custom_extruder_8.def.json index f418a55186..7671825792 100644 --- a/resources/extruders/custom_extruder_8.def.json +++ b/resources/extruders/custom_extruder_8.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_8", "version": 2, "name": "Extruder 8", "inherits": "fdmextruder", diff --git a/resources/extruders/delta_go_extruder_0.def.json b/resources/extruders/delta_go_extruder_0.def.json index 2262270dfb..330cde08bf 100644 --- a/resources/extruders/delta_go_extruder_0.def.json +++ b/resources/extruders/delta_go_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "delta_go_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/deltabot_extruder_0.def.json b/resources/extruders/deltabot_extruder_0.def.json index e13d6a6ee3..d4773ccf9f 100644 --- a/resources/extruders/deltabot_extruder_0.def.json +++ b/resources/extruders/deltabot_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "deltabot_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/deltacomb_extruder_0.def.json b/resources/extruders/deltacomb_extruder_0.def.json index 046becfd82..875655d5c7 100755 --- a/resources/extruders/deltacomb_extruder_0.def.json +++ b/resources/extruders/deltacomb_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "deltacomb_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", @@ -9,8 +8,10 @@ }, "overrides": { - "extruder_nr": { "default_value": 0 }, - "machine_nozzle_size": { "default_value": 0.4 }, - "material_diameter": { "default_value": 1.75 } + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 } } } diff --git a/resources/extruders/deltacomb_extruder_1.def.json b/resources/extruders/deltacomb_extruder_1.def.json new file mode 100755 index 0000000000..b1f30f4624 --- /dev/null +++ b/resources/extruders/deltacomb_extruder_1.def.json @@ -0,0 +1,17 @@ +{ + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "deltacomb", + "position": "1" + }, + + "overrides": { + "extruder_nr": { "default_value": 1 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 } + } +} diff --git a/resources/extruders/easyarts_ares_extruder_0.def.json b/resources/extruders/easyarts_ares_extruder_0.def.json index ec7ba81c57..4ddd476dbb 100644 --- a/resources/extruders/easyarts_ares_extruder_0.def.json +++ b/resources/extruders/easyarts_ares_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "easyarts_ares_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/creality_ender3_extruder_0.def.json b/resources/extruders/erzay3d_extruder_0.def.json similarity index 80% rename from resources/extruders/creality_ender3_extruder_0.def.json rename to resources/extruders/erzay3d_extruder_0.def.json index 431366c777..a9cea62897 100644 --- a/resources/extruders/creality_ender3_extruder_0.def.json +++ b/resources/extruders/erzay3d_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "creality_ender3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "creality_ender3", + "machine": "erzay3d", "position": "0" }, diff --git a/resources/extruders/fabtotum_extruder_0.def.json b/resources/extruders/fabtotum_extruder_0.def.json index 5ed4da6256..a763fbcc15 100644 --- a/resources/extruders/fabtotum_extruder_0.def.json +++ b/resources/extruders/fabtotum_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "fabtotum_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/felixpro2_dual_extruder_0.def.json b/resources/extruders/felixpro2_dual_extruder_0.def.json new file mode 100644 index 0000000000..4278a532f9 --- /dev/null +++ b/resources/extruders/felixpro2_dual_extruder_0.def.json @@ -0,0 +1,27 @@ +{ + "version": 2, + "name": "Left Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "felixpro2dual", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.35 }, + "material_diameter": { "default_value": 1.75 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" } + } +} diff --git a/resources/extruders/felixpro2_dual_extruder_1.def.json b/resources/extruders/felixpro2_dual_extruder_1.def.json new file mode 100644 index 0000000000..195aad474d --- /dev/null +++ b/resources/extruders/felixpro2_dual_extruder_1.def.json @@ -0,0 +1,27 @@ +{ + "version": 2, + "name": "Right Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "felixpro2dual", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "2" + }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.35 }, + "material_diameter": { "default_value": 1.75 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" } + } +} diff --git a/resources/extruders/felixtec4_dual_extruder_0.def.json b/resources/extruders/felixtec4_dual_extruder_0.def.json index 2a2d0468e1..1821b0e601 100644 --- a/resources/extruders/felixtec4_dual_extruder_0.def.json +++ b/resources/extruders/felixtec4_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "felixtec4_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/felixtec4_dual_extruder_1.def.json b/resources/extruders/felixtec4_dual_extruder_1.def.json index 5d7e9c74a3..37a99c5fb4 100644 --- a/resources/extruders/felixtec4_dual_extruder_1.def.json +++ b/resources/extruders/felixtec4_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "felixtec4_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/flsun_qq_extruder.def.json b/resources/extruders/flsun_qq_extruder.def.json new file mode 100644 index 0000000000..c7ca0ed6eb --- /dev/null +++ b/resources/extruders/flsun_qq_extruder.def.json @@ -0,0 +1,14 @@ +{ + "version": 2, + "name": "Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "flsun_qq", + "position": "0" + }, + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/flsun_qq_s_extruder_0.def.json b/resources/extruders/flsun_qq_s_extruder_0.def.json new file mode 100644 index 0000000000..e61056fcd3 --- /dev/null +++ b/resources/extruders/flsun_qq_s_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "flsun_qq_s", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/folgertech_FT-5_extruder_0.def.json b/resources/extruders/folgertech_FT-5_extruder_0.def.json index 8ba9d130c6..861b0e7a7e 100644 --- a/resources/extruders/folgertech_FT-5_extruder_0.def.json +++ b/resources/extruders/folgertech_FT-5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "folgertech_FT-5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/geeetech_a30_extruder_0.def.json b/resources/extruders/geeetech_a30_extruder_0.def.json new file mode 100644 index 0000000000..90cb496877 --- /dev/null +++ b/resources/extruders/geeetech_a30_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "geeetech_a30", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/gmax15plus_dual_extruder_0.def.json b/resources/extruders/gmax15plus_dual_extruder_0.def.json index d3146a0576..45f35dee1f 100644 --- a/resources/extruders/gmax15plus_dual_extruder_0.def.json +++ b/resources/extruders/gmax15plus_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/gmax15plus_dual_extruder_1.def.json b/resources/extruders/gmax15plus_dual_extruder_1.def.json index 7b7354d794..6d0d5db06f 100644 --- a/resources/extruders/gmax15plus_dual_extruder_1.def.json +++ b/resources/extruders/gmax15plus_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/gmax15plus_extruder_0.def.json b/resources/extruders/gmax15plus_extruder_0.def.json index 70389745b3..5b0889d46d 100644 --- a/resources/extruders/gmax15plus_extruder_0.def.json +++ b/resources/extruders/gmax15plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/grr_neo_extruder_0.def.json b/resources/extruders/grr_neo_extruder_0.def.json index 6d76c90796..a9f1fa4faa 100644 --- a/resources/extruders/grr_neo_extruder_0.def.json +++ b/resources/extruders/grr_neo_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "grr_neo_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/hBp_extruder_left.def.json b/resources/extruders/hBp_extruder_left.def.json index 7e71ca27a8..ce23f27c29 100644 --- a/resources/extruders/hBp_extruder_left.def.json +++ b/resources/extruders/hBp_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "hBp_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/hBp_extruder_right.def.json b/resources/extruders/hBp_extruder_right.def.json index acd2312268..170556a1fd 100644 --- a/resources/extruders/hBp_extruder_right.def.json +++ b/resources/extruders/hBp_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "hBp_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/hellbot_adonis_extruder.def.json b/resources/extruders/hellbot_adonis_extruder.def.json new file mode 100644 index 0000000000..4201f6b393 --- /dev/null +++ b/resources/extruders/hellbot_adonis_extruder.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "hellbot_adonis", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/hellbot_magna_dual_extruder_1.def.json b/resources/extruders/hellbot_magna_dual_extruder_1.def.json new file mode 100644 index 0000000000..a31a3fdd70 --- /dev/null +++ b/resources/extruders/hellbot_magna_dual_extruder_1.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "hellbot_magna_dual", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/hellbot_magna_dual_extruder_2.def.json b/resources/extruders/hellbot_magna_dual_extruder_2.def.json new file mode 100644 index 0000000000..651c39d53b --- /dev/null +++ b/resources/extruders/hellbot_magna_dual_extruder_2.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "hellbot_magna_dual", + "position": "1" + }, + + "overrides": { + "extruder_nr": { "default_value": 1 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/hellbot_magna_i_extruder.def.json b/resources/extruders/hellbot_magna_i_extruder.def.json new file mode 100644 index 0000000000..70117c2aed --- /dev/null +++ b/resources/extruders/hellbot_magna_i_extruder.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "hellbot_magna_I", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/hms434_tool_1.def.json b/resources/extruders/hms434_tool_1.def.json new file mode 100644 index 0000000000..3a1619d98b --- /dev/null +++ b/resources/extruders/hms434_tool_1.def.json @@ -0,0 +1,25 @@ +{ + "version": 2, + "name": "Tool 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "hms434", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "8" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { + "default_value": "\n;changing to tool1\nM109 T0 S{material_print_temperature}\nG1 X-18 Y-50 F9000\nG1 X150 Y10 F9000\n\n" + }, + "machine_extruder_end_code": { + "default_value": "\nG1 X150 Y10 F9000\nG1 X-20 Y-50 F9000\nG1 Y-100 F3000\n; ending tool1\n\n" + } + } +} diff --git a/resources/extruders/hms434_tool_2.def.json b/resources/extruders/hms434_tool_2.def.json new file mode 100644 index 0000000000..3a174f82b9 --- /dev/null +++ b/resources/extruders/hms434_tool_2.def.json @@ -0,0 +1,25 @@ +{ + "version": 2, + "name": "Tool 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "hms434", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "8" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { + "default_value": "\n;changing to tool2\nM109 T1 S{material_print_temperature}\nG1 X-18 Y-50 F9000\nG1 X150 Y10 F9000\n\n" + }, + "machine_extruder_end_code": { + "default_value": "\nG1 X150 Y10 F9000\nG1 X-20 Y-50 F9000\nG1 Y-100 F3000\n; ending tool2\n\n" + } + } +} diff --git a/resources/extruders/hms434_tool_3.def.json b/resources/extruders/hms434_tool_3.def.json new file mode 100644 index 0000000000..e1e237d332 --- /dev/null +++ b/resources/extruders/hms434_tool_3.def.json @@ -0,0 +1,25 @@ +{ + "version": 2, + "name": "Tool 3", + "inherits": "fdmextruder", + "metadata": { + "machine": "hms434", + "position": "2" + }, + + "overrides": { + "extruder_nr": { + "default_value": 2, + "maximum_value": "8" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { + "default_value": "\n;changing to tool3" + }, + "machine_extruder_end_code": { + "default_value": "\n;ending tool3" + } + } +} diff --git a/resources/extruders/hms434_tool_4.def.json b/resources/extruders/hms434_tool_4.def.json new file mode 100644 index 0000000000..1a68d5aff5 --- /dev/null +++ b/resources/extruders/hms434_tool_4.def.json @@ -0,0 +1,25 @@ +{ + "version": 2, + "name": "Tool 4", + "inherits": "fdmextruder", + "metadata": { + "machine": "hms434", + "position": "3" + }, + + "overrides": { + "extruder_nr": { + "default_value": 3, + "maximum_value": "8" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { + "default_value": "\n;changing to tool4" + }, + "machine_extruder_end_code": { + "default_value": "\n;ending tool4" + } + } +} diff --git a/resources/extruders/hms434_tool_5.def.json b/resources/extruders/hms434_tool_5.def.json new file mode 100644 index 0000000000..b56e8be84e --- /dev/null +++ b/resources/extruders/hms434_tool_5.def.json @@ -0,0 +1,25 @@ +{ + "version": 2, + "name": "Tool 5", + "inherits": "fdmextruder", + "metadata": { + "machine": "hms434", + "position": "4" + }, + + "overrides": { + "extruder_nr": { + "default_value": 4, + "maximum_value": "8" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { + "default_value": "\n;changing to tool5" + }, + "machine_extruder_end_code": { + "default_value": "\n;ending tool5" + } + } +} diff --git a/resources/extruders/hms434_tool_6.def.json b/resources/extruders/hms434_tool_6.def.json new file mode 100644 index 0000000000..b8c8cdf062 --- /dev/null +++ b/resources/extruders/hms434_tool_6.def.json @@ -0,0 +1,25 @@ +{ + "version": 2, + "name": "Tool 6", + "inherits": "fdmextruder", + "metadata": { + "machine": "hms434", + "position": "5" + }, + + "overrides": { + "extruder_nr": { + "default_value": 5, + "maximum_value": "8" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { + "default_value": "\n;changing to tool6" + }, + "machine_extruder_end_code": { + "default_value": "\n;ending tool6" + } + } +} diff --git a/resources/extruders/hms434_tool_7.def.json b/resources/extruders/hms434_tool_7.def.json new file mode 100644 index 0000000000..3fc04078fa --- /dev/null +++ b/resources/extruders/hms434_tool_7.def.json @@ -0,0 +1,25 @@ +{ + "version": 2, + "name": "Tool 7", + "inherits": "fdmextruder", + "metadata": { + "machine": "hms434", + "position": "6" + }, + + "overrides": { + "extruder_nr": { + "default_value": 6, + "maximum_value": "8" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { + "default_value": "\n;changing to tool7" + }, + "machine_extruder_end_code": { + "default_value": "\n;ending tool7" + } + } +} diff --git a/resources/extruders/hms434_tool_8.def.json b/resources/extruders/hms434_tool_8.def.json new file mode 100644 index 0000000000..faa6f36871 --- /dev/null +++ b/resources/extruders/hms434_tool_8.def.json @@ -0,0 +1,25 @@ +{ + "version": 2, + "name": "Tool 8", + "inherits": "fdmextruder", + "metadata": { + "machine": "hms434", + "position": "7" + }, + + "overrides": { + "extruder_nr": { + "default_value": 7, + "maximum_value": "8" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "material_diameter": { "default_value": 1.75 }, + "machine_extruder_start_code": { + "default_value": "\n;changing to tool8" + }, + "machine_extruder_end_code": { + "default_value": "\n;ending tool8" + } + } +} diff --git a/resources/extruders/imade3d_jellybox_2_extruder_0.def.json b/resources/extruders/imade3d_jellybox_2_extruder_0.def.json new file mode 100644 index 0000000000..ca25b62286 --- /dev/null +++ b/resources/extruders/imade3d_jellybox_2_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "imade3d_jellybox_2", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/imade3d_jellybox_extruder_0.def.json b/resources/extruders/imade3d_jellybox_extruder_0.def.json index feaa717ee6..69c6d87d79 100644 --- a/resources/extruders/imade3d_jellybox_extruder_0.def.json +++ b/resources/extruders/imade3d_jellybox_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "imade3d_jellybox_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/innovo_inventor_extruder_0.def.json b/resources/extruders/innovo_inventor_extruder_0.def.json index ed599463f2..8758f3d516 100644 --- a/resources/extruders/innovo_inventor_extruder_0.def.json +++ b/resources/extruders/innovo_inventor_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "innovo_inventor_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_a1_extruder_0.def.json b/resources/extruders/jgaurora_a1_extruder_0.def.json index 71742b734a..f67d8d553e 100644 --- a/resources/extruders/jgaurora_a1_extruder_0.def.json +++ b/resources/extruders/jgaurora_a1_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_a1_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_a3s_extruder_0.def.json b/resources/extruders/jgaurora_a3s_extruder_0.def.json new file mode 100644 index 0000000000..9a42d0da04 --- /dev/null +++ b/resources/extruders/jgaurora_a3s_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "jgaurora_a3s", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/jgaurora_a5_extruder_0.def.json b/resources/extruders/jgaurora_a5_extruder_0.def.json index fbc6ba77e6..5308c57934 100644 --- a/resources/extruders/jgaurora_a5_extruder_0.def.json +++ b/resources/extruders/jgaurora_a5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_a5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json b/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json new file mode 100644 index 0000000000..58beaa4cc8 --- /dev/null +++ b/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "jgaurora_jgmaker_magic", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/jgaurora_z_603s_extruder_0.def.json b/resources/extruders/jgaurora_z_603s_extruder_0.def.json index 987425b28a..647016d5ff 100644 --- a/resources/extruders/jgaurora_z_603s_extruder_0.def.json +++ b/resources/extruders/jgaurora_z_603s_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_z_603s_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/julia_extruder_0.def.json b/resources/extruders/julia_extruder_0.def.json index 53a569ccd8..ef0ca83ac4 100644 --- a/resources/extruders/julia_extruder_0.def.json +++ b/resources/extruders/julia_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "julia_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kemiq_q2_beta_extruder_0.def.json b/resources/extruders/kemiq_q2_beta_extruder_0.def.json index 0c7d1b7b50..79d55223f3 100644 --- a/resources/extruders/kemiq_q2_beta_extruder_0.def.json +++ b/resources/extruders/kemiq_q2_beta_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kemiq_q2_beta_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kemiq_q2_gama_extruder_0.def.json b/resources/extruders/kemiq_q2_gama_extruder_0.def.json index bb165ca35e..ad6e6372ee 100644 --- a/resources/extruders/kemiq_q2_gama_extruder_0.def.json +++ b/resources/extruders/kemiq_q2_gama_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kemiq_q2_gama_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/key3d_tyro_extruder_0.def.json b/resources/extruders/key3d_tyro_extruder_0.def.json new file mode 100644 index 0000000000..f08ae351ab --- /dev/null +++ b/resources/extruders/key3d_tyro_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "0.4mm Nozzle", + "inherits": "fdmextruder", + "metadata": { + "machine": "key3d_tyro", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/kossel_mini_extruder_0.def.json b/resources/extruders/kossel_mini_extruder_0.def.json index f57154e1a3..7da2cff3b1 100644 --- a/resources/extruders/kossel_mini_extruder_0.def.json +++ b/resources/extruders/kossel_mini_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kossel_mini_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kossel_pro_extruder_0.def.json b/resources/extruders/kossel_pro_extruder_0.def.json index 921e1d8bb4..48c1180f84 100644 --- a/resources/extruders/kossel_pro_extruder_0.def.json +++ b/resources/extruders/kossel_pro_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kossel_pro_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kupido_extruder_0.def.json b/resources/extruders/kupido_extruder_0.def.json index ef988d4fde..784e453bd1 100644 --- a/resources/extruders/kupido_extruder_0.def.json +++ b/resources/extruders/kupido_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kupido_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/leapfrog_bolt_pro_extruder_left.def.json b/resources/extruders/leapfrog_bolt_pro_extruder_left.def.json new file mode 100644 index 0000000000..4ec859a60c --- /dev/null +++ b/resources/extruders/leapfrog_bolt_pro_extruder_left.def.json @@ -0,0 +1,21 @@ +{ + "version": 2, + "name": "Left extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "leapfrog_bolt_pro", + "position": "1" + }, + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_head_distance": { "default_value": 22 }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "machine_extruder_start_code": { "default_value": "G1 Y-32 F12000\nG1 X6 F1000\nG1 X-32 F4000\nG1 X6" } + } +} diff --git a/resources/extruders/leapfrog_bolt_pro_extruder_right.def.json b/resources/extruders/leapfrog_bolt_pro_extruder_right.def.json new file mode 100644 index 0000000000..fe27106afd --- /dev/null +++ b/resources/extruders/leapfrog_bolt_pro_extruder_right.def.json @@ -0,0 +1,21 @@ +{ + "version": 2, + "name": "Right extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "leapfrog_bolt_pro", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_head_distance": { "default_value": 22 }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "machine_extruder_start_code": { "default_value": "G1 Y-32 F12000\nG1 X296 F1000\nG1 X334 F4000\nG1 X296"} + } +} diff --git a/resources/extruders/makeR_pegasus_extruder_0.def.json b/resources/extruders/makeR_pegasus_extruder_0.def.json index e37891abde..c17c51d599 100644 --- a/resources/extruders/makeR_pegasus_extruder_0.def.json +++ b/resources/extruders/makeR_pegasus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "makeR_pegasus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json b/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json index a80d4079cb..278981f355 100644 --- a/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json +++ b/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "makeR_prusa_tairona_i3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/makeblock_mcreate_extruder_0.def.json b/resources/extruders/makeblock_mcreate_extruder_0.def.json new file mode 100644 index 0000000000..060ea634f8 --- /dev/null +++ b/resources/extruders/makeblock_mcreate_extruder_0.def.json @@ -0,0 +1,20 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "makeblock_mcreate", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + } + } +} diff --git a/resources/extruders/makeit_dual_1st.def.json b/resources/extruders/makeit_dual_1st.def.json index 0f5a716e16..16374b40d1 100644 --- a/resources/extruders/makeit_dual_1st.def.json +++ b/resources/extruders/makeit_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_dual_1st", "version": 2, "name": "1st Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/makeit_dual_2nd.def.json b/resources/extruders/makeit_dual_2nd.def.json index f93d670c85..562cfcbc40 100644 --- a/resources/extruders/makeit_dual_2nd.def.json +++ b/resources/extruders/makeit_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_dual_2nd", "version": 2, "name": "2nd Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/makeit_l_dual_1st.def.json b/resources/extruders/makeit_l_dual_1st.def.json index 6a9e8e3fc1..8fbc2944b1 100644 --- a/resources/extruders/makeit_l_dual_1st.def.json +++ b/resources/extruders/makeit_l_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_l_dual_1st", "version": 2, "name": "1st Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/makeit_l_dual_2nd.def.json b/resources/extruders/makeit_l_dual_2nd.def.json index 72b86b22e4..e163e9565a 100644 --- a/resources/extruders/makeit_l_dual_2nd.def.json +++ b/resources/extruders/makeit_l_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_l_dual_2nd", "version": 2, "name": "2nd Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/maker_starter_extruder_0.def.json b/resources/extruders/maker_starter_extruder_0.def.json index ee94250248..76e2f74a4c 100644 --- a/resources/extruders/maker_starter_extruder_0.def.json +++ b/resources/extruders/maker_starter_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "maker_starter_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/makerbotreplicator_extruder_0.def.json b/resources/extruders/makerbotreplicator_extruder_0.def.json index 36a975ace1..595134d788 100644 --- a/resources/extruders/makerbotreplicator_extruder_0.def.json +++ b/resources/extruders/makerbotreplicator_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "makerbotreplicator_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/malyan_m180_extruder_0.def.json b/resources/extruders/malyan_m180_extruder_0.def.json index bdf5350b26..04bc70ce55 100644 --- a/resources/extruders/malyan_m180_extruder_0.def.json +++ b/resources/extruders/malyan_m180_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m180_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/malyan_m200_extruder_0.def.json b/resources/extruders/malyan_m200_extruder_0.def.json index 4a135aa72d..88d99fb426 100644 --- a/resources/extruders/malyan_m200_extruder_0.def.json +++ b/resources/extruders/malyan_m200_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m200_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json b/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json index 032a577022..4cb893336e 100644 --- a/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json +++ b/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "mankati_fullscale_xt_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/mendel90_extruder_0.def.json b/resources/extruders/mendel90_extruder_0.def.json index 3ee2fd2b10..2ea4d9a7de 100644 --- a/resources/extruders/mendel90_extruder_0.def.json +++ b/resources/extruders/mendel90_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "mendel90_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json b/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json index e4a899d7af..023bd6b27c 100644 --- a/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json +++ b/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v1_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json b/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json index b727cfce1f..79ba110701 100644 --- a/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json +++ b/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/nwa3d_a31_extruder_0.def.json b/resources/extruders/nwa3d_a31_extruder_0.def.json new file mode 100644 index 0000000000..de1938956a --- /dev/null +++ b/resources/extruders/nwa3d_a31_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Standard 0.4mm", + "inherits": "fdmextruder", + "metadata": { + "machine": "nwa3d_a31", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/nwa3d_a5_extruder_0.def.json b/resources/extruders/nwa3d_a5_extruder_0.def.json index 5c3cc6a127..9131480732 100644 --- a/resources/extruders/nwa3d_a5_extruder_0.def.json +++ b/resources/extruders/nwa3d_a5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "nwa3d_a5_extruder_0", "version": 2, "name": "Regular 0.4mm Nozzle", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_0.def.json b/resources/extruders/ord_extruder_0.def.json index 317ad70a3c..61317c4a17 100644 --- a/resources/extruders/ord_extruder_0.def.json +++ b/resources/extruders/ord_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_0", "version": 2, "name": "0", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_1.def.json b/resources/extruders/ord_extruder_1.def.json index 6e29ad2f2b..43bc11fa71 100644 --- a/resources/extruders/ord_extruder_1.def.json +++ b/resources/extruders/ord_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_1", "version": 2, "name": "1", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_2.def.json b/resources/extruders/ord_extruder_2.def.json index 849930c988..84bcbd5332 100644 --- a/resources/extruders/ord_extruder_2.def.json +++ b/resources/extruders/ord_extruder_2.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_2", "version": 2, "name": "2", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_3.def.json b/resources/extruders/ord_extruder_3.def.json index eb3676c14f..db81f82b78 100644 --- a/resources/extruders/ord_extruder_3.def.json +++ b/resources/extruders/ord_extruder_3.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_3", "version": 2, "name": "3", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_4.def.json b/resources/extruders/ord_extruder_4.def.json index 291e9e5501..2ca7609e06 100644 --- a/resources/extruders/ord_extruder_4.def.json +++ b/resources/extruders/ord_extruder_4.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_4", "version": 2, "name": "4", "inherits": "fdmextruder", diff --git a/resources/extruders/peopoly_moai_extruder_0.def.json b/resources/extruders/peopoly_moai_extruder_0.def.json index bbffd4ac4d..1acf5b499f 100644 --- a/resources/extruders/peopoly_moai_extruder_0.def.json +++ b/resources/extruders/peopoly_moai_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "peopoly_moai_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_play_extruder_0.def.json b/resources/extruders/printrbot_play_extruder_0.def.json index ef1284758b..682810c8d8 100644 --- a/resources/extruders/printrbot_play_extruder_0.def.json +++ b/resources/extruders/printrbot_play_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_play_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_play_heated_extruder_0.def.json b/resources/extruders/printrbot_play_heated_extruder_0.def.json index 0a3eeb3d06..72335e82d6 100644 --- a/resources/extruders/printrbot_play_heated_extruder_0.def.json +++ b/resources/extruders/printrbot_play_heated_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_play_heated_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_simple_extended_extruder_0.def.json b/resources/extruders/printrbot_simple_extended_extruder_0.def.json index 71c8863552..b50a142d2e 100644 --- a/resources/extruders/printrbot_simple_extended_extruder_0.def.json +++ b/resources/extruders/printrbot_simple_extended_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple_extended_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_simple_extruder_0.def.json b/resources/extruders/printrbot_simple_extruder_0.def.json index e97977e07e..4fa5d7fbf2 100644 --- a/resources/extruders/printrbot_simple_extruder_0.def.json +++ b/resources/extruders/printrbot_simple_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json b/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json index f002bb9cf5..a58195fdfb 100644 --- a/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json +++ b/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple_makers_kit_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/prusa_i3_extruder_0.def.json b/resources/extruders/prusa_i3_extruder_0.def.json index 11c52e062b..dbb01032b8 100644 --- a/resources/extruders/prusa_i3_extruder_0.def.json +++ b/resources/extruders/prusa_i3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/prusa_i3_mk2_extruder_0.def.json b/resources/extruders/prusa_i3_mk2_extruder_0.def.json index a56aae4300..e802687062 100644 --- a/resources/extruders/prusa_i3_mk2_extruder_0.def.json +++ b/resources/extruders/prusa_i3_mk2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3_mk2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/prusa_i3_mk3_extruder_0.def.json b/resources/extruders/prusa_i3_mk3_extruder_0.def.json new file mode 100644 index 0000000000..29156f0d70 --- /dev/null +++ b/resources/extruders/prusa_i3_mk3_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "prusa_i3_mk3", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} \ No newline at end of file diff --git a/resources/extruders/prusa_i3_xl_extruder_0.def.json b/resources/extruders/prusa_i3_xl_extruder_0.def.json index 5dc2ab3bc0..c4125b36ee 100644 --- a/resources/extruders/prusa_i3_xl_extruder_0.def.json +++ b/resources/extruders/prusa_i3_xl_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3_xl_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/punchtec_connect_xl_extruder_0.def.json b/resources/extruders/punchtec_connect_xl_extruder_0.def.json index 68c3d8c906..f286140167 100644 --- a/resources/extruders/punchtec_connect_xl_extruder_0.def.json +++ b/resources/extruders/punchtec_connect_xl_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "punchtec_connect_xl_extruder_0", "version": 2, "name": "0", "inherits": "fdmextruder", diff --git a/resources/extruders/punchtec_connect_xl_extruder_1.def.json b/resources/extruders/punchtec_connect_xl_extruder_1.def.json index a2e4b31714..47d28882cf 100644 --- a/resources/extruders/punchtec_connect_xl_extruder_1.def.json +++ b/resources/extruders/punchtec_connect_xl_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "punchtec_connect_xl_extruder_1", "version": 2, "name": "1", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_dual_extruder_0.def.json b/resources/extruders/raise3D_N2_dual_extruder_0.def.json index 48746969d3..9294a73933 100644 --- a/resources/extruders/raise3D_N2_dual_extruder_0.def.json +++ b/resources/extruders/raise3D_N2_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_dual_extruder_1.def.json b/resources/extruders/raise3D_N2_dual_extruder_1.def.json index 8ea6f95b16..e09cb6b9fc 100644 --- a/resources/extruders/raise3D_N2_dual_extruder_1.def.json +++ b/resources/extruders/raise3D_N2_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json b/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json index fc7531cf1b..d8821204f0 100644 --- a/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json +++ b/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_plus_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json b/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json index 83f949bb22..0a6ded63a3 100644 --- a/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json +++ b/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_plus_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_single_extruder_0.def.json b/resources/extruders/raise3D_N2_single_extruder_0.def.json index 08fedff99c..399d577110 100644 --- a/resources/extruders/raise3D_N2_single_extruder_0.def.json +++ b/resources/extruders/raise3D_N2_single_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_single_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/renkforce_rf100_extruder_0.def.json b/resources/extruders/renkforce_rf100_extruder_0.def.json index 6a7f883309..ff64e2f86a 100644 --- a/resources/extruders/renkforce_rf100_extruder_0.def.json +++ b/resources/extruders/renkforce_rf100_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "renkforce_rf100_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_3rdgen_extruder_0.def.json b/resources/extruders/rigid3d_3rdgen_extruder_0.def.json index e309086a72..edc87f695e 100644 --- a/resources/extruders/rigid3d_3rdgen_extruder_0.def.json +++ b/resources/extruders/rigid3d_3rdgen_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_3rdgen_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_extruder_0.def.json b/resources/extruders/rigid3d_extruder_0.def.json index e34987cd6e..eaac6b16a0 100644 --- a/resources/extruders/rigid3d_extruder_0.def.json +++ b/resources/extruders/rigid3d_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_hobby_extruder_0.def.json b/resources/extruders/rigid3d_hobby_extruder_0.def.json index 681aeecb43..68dd523af3 100644 --- a/resources/extruders/rigid3d_hobby_extruder_0.def.json +++ b/resources/extruders/rigid3d_hobby_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_hobby_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_mucit_extruder_0.def.json b/resources/extruders/rigid3d_mucit_extruder_0.def.json index af3f54e150..de72db7a33 100644 --- a/resources/extruders/rigid3d_mucit_extruder_0.def.json +++ b/resources/extruders/rigid3d_mucit_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_mucit_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_zero2_extruder_0.def.json b/resources/extruders/rigid3d_zero2_extruder_0.def.json index 30d1dbb3c4..051ce2384d 100644 --- a/resources/extruders/rigid3d_zero2_extruder_0.def.json +++ b/resources/extruders/rigid3d_zero2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_zero2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_zero_extruder_0.def.json b/resources/extruders/rigid3d_zero_extruder_0.def.json index 6c5ae10ddb..76a8fceaae 100644 --- a/resources/extruders/rigid3d_zero_extruder_0.def.json +++ b/resources/extruders/rigid3d_zero_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_zero_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigidbot_big_extruder_0.def.json b/resources/extruders/rigidbot_big_extruder_0.def.json index 2b07adaaaa..9ef72d5203 100644 --- a/resources/extruders/rigidbot_big_extruder_0.def.json +++ b/resources/extruders/rigidbot_big_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigidbot_big_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigidbot_extruder_0.def.json b/resources/extruders/rigidbot_extruder_0.def.json index 32ce3fc1c3..9155be0ff1 100644 --- a/resources/extruders/rigidbot_extruder_0.def.json +++ b/resources/extruders/rigidbot_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigidbot_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/robo_3d_r1_extruder_0.def.json b/resources/extruders/robo_3d_r1_extruder_0.def.json index 0872e91a11..60811842ac 100644 --- a/resources/extruders/robo_3d_r1_extruder_0.def.json +++ b/resources/extruders/robo_3d_r1_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "robo_3d_r1_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/seemecnc_artemis_extruder_0.def.json b/resources/extruders/seemecnc_artemis_extruder_0.def.json index a709a80cbf..a86e5eb2bd 100644 --- a/resources/extruders/seemecnc_artemis_extruder_0.def.json +++ b/resources/extruders/seemecnc_artemis_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "seemecnc_artemis_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/seemecnc_v32_extruder_0.def.json b/resources/extruders/seemecnc_v32_extruder_0.def.json index 5bd489e537..b223116be3 100644 --- a/resources/extruders/seemecnc_v32_extruder_0.def.json +++ b/resources/extruders/seemecnc_v32_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "seemecnc_v32_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/skriware_2_extruder_0.def.json b/resources/extruders/skriware_2_extruder_0.def.json new file mode 100644 index 0000000000..0569600094 --- /dev/null +++ b/resources/extruders/skriware_2_extruder_0.def.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "name": "Left Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "skriware_2", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/skriware_2_extruder_1.def.json b/resources/extruders/skriware_2_extruder_1.def.json new file mode 100644 index 0000000000..d6fa76e1a0 --- /dev/null +++ b/resources/extruders/skriware_2_extruder_1.def.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "name": "Right Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "skriware_2", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/stereotech_start_extruder_0.def.json b/resources/extruders/stereotech_start_extruder_0.def.json new file mode 100644 index 0000000000..b0a1e91d1c --- /dev/null +++ b/resources/extruders/stereotech_start_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "stereotech_start", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} \ No newline at end of file diff --git a/resources/extruders/stereotech_ste320_1st.def.json b/resources/extruders/stereotech_ste320_1st.def.json new file mode 100644 index 0000000000..8110775d33 --- /dev/null +++ b/resources/extruders/stereotech_ste320_1st.def.json @@ -0,0 +1,45 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "stereotech_ste320", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { + "default_value": 0.0 + }, + "machine_nozzle_offset_y": { + "default_value": 0.0 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_extruder_start_pos_abs": { + "default_value": true + }, + "machine_extruder_start_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_start_pos_y": { + "value": "prime_tower_position_y" + }, + "machine_extruder_end_pos_abs": { + "default_value": true + }, + "machine_extruder_end_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_end_pos_y": { + "value": "prime_tower_position_y" + } + } +} \ No newline at end of file diff --git a/resources/extruders/stereotech_ste320_2nd.def.json b/resources/extruders/stereotech_ste320_2nd.def.json new file mode 100644 index 0000000000..12a1479164 --- /dev/null +++ b/resources/extruders/stereotech_ste320_2nd.def.json @@ -0,0 +1,45 @@ +{ + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "stereotech_ste320", + "position": "1" + }, + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { + "default_value": 18.0 + }, + "machine_nozzle_offset_y": { + "default_value": 0.0 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_extruder_start_pos_abs": { + "default_value": true + }, + "machine_extruder_start_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_start_pos_y": { + "value": "prime_tower_position_y" + }, + "machine_extruder_end_pos_abs": { + "default_value": true + }, + "machine_extruder_end_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_end_pos_y": { + "value": "prime_tower_position_y" + } + } +} \ No newline at end of file diff --git a/resources/extruders/strateo3d_left_extruder.def.json b/resources/extruders/strateo3d_left_extruder.def.json new file mode 100644 index 0000000000..096b265030 --- /dev/null +++ b/resources/extruders/strateo3d_left_extruder.def.json @@ -0,0 +1,16 @@ +{ + "version": 2, + "name": "Left Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "strateo3d", + "position": "1" + }, + + "overrides": { + "extruder_nr": { "default_value": 1, "maximum_value": "1" }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 } + } +} \ No newline at end of file diff --git a/resources/extruders/strateo3d_right_extruder.def.json b/resources/extruders/strateo3d_right_extruder.def.json new file mode 100644 index 0000000000..24acdef8b5 --- /dev/null +++ b/resources/extruders/strateo3d_right_extruder.def.json @@ -0,0 +1,16 @@ +{ + "version": 2, + "name": "Right Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "strateo3d", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0, "maximum_value": "1" }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 } + } +} \ No newline at end of file diff --git a/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json b/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json new file mode 100644 index 0000000000..c63f740f11 --- /dev/null +++ b/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Discov3ry Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "structur3d_discov3ry1_complete_um2plus", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.84 }, + "material_diameter": { "default_value": 3.175 } + } +} diff --git a/resources/extruders/tam_extruder_0.def.json b/resources/extruders/tam_extruder_0.def.json index fc53efad3f..f487a6ff90 100644 --- a/resources/extruders/tam_extruder_0.def.json +++ b/resources/extruders/tam_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tam_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tevo_blackwidow_extruder_0.def.json b/resources/extruders/tevo_blackwidow_extruder_0.def.json index 125cf19c98..3450b36ac6 100644 --- a/resources/extruders/tevo_blackwidow_extruder_0.def.json +++ b/resources/extruders/tevo_blackwidow_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tevo_blackwidow_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tevo_tarantula_extruder_0.def.json b/resources/extruders/tevo_tarantula_extruder_0.def.json index bc43986814..a2ac48c06d 100644 --- a/resources/extruders/tevo_tarantula_extruder_0.def.json +++ b/resources/extruders/tevo_tarantula_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tevo_tarantula_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tevo_tornado_extruder_0.def.json b/resources/extruders/tevo_tornado_extruder_0.def.json index b47a757113..6c0c9f39b1 100644 --- a/resources/extruders/tevo_tornado_extruder_0.def.json +++ b/resources/extruders/tevo_tornado_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tevo_tornado_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON b/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON new file mode 100644 index 0000000000..282d9d2651 --- /dev/null +++ b/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON @@ -0,0 +1,17 @@ +{ + "version": 2, + "name": "Classic Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "tizyx_evy_dual", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON b/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON new file mode 100644 index 0000000000..69e4a60952 --- /dev/null +++ b/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON @@ -0,0 +1,17 @@ +{ + "version": 2, + "name": "Direct Drive", + "inherits": "fdmextruder", + "metadata": { + "machine": "tizyx_evy_dual", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/tizyx_evy_extruder_0.def.JSON b/resources/extruders/tizyx_evy_extruder_0.def.JSON index bd3c4c9792..4f93648491 100644 --- a/resources/extruders/tizyx_evy_extruder_0.def.JSON +++ b/resources/extruders/tizyx_evy_extruder_0.def.JSON @@ -1,5 +1,4 @@ { - "id": "tizyx_evy_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tizyx_k25_extruder_0.def.json b/resources/extruders/tizyx_k25_extruder_0.def.json index 409198d77c..626fedf434 100644 --- a/resources/extruders/tizyx_k25_extruder_0.def.json +++ b/resources/extruders/tizyx_k25_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tizyx_k25_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json b/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json index b04ca0dcbf..749a5ed77d 100644 --- a/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json +++ b/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ubuild-3d_mr_bot_280_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_extended_extruder_0.def.json b/resources/extruders/ultimaker2_extended_extruder_0.def.json index 6387ec72ed..cc7306a393 100644 --- a/resources/extruders/ultimaker2_extended_extruder_0.def.json +++ b/resources/extruders/ultimaker2_extended_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extended_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json b/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json index 39fc665ff2..337c120097 100644 --- a/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json +++ b/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extended_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_extruder_0.def.json b/resources/extruders/ultimaker2_extruder_0.def.json index 2daf57c73f..64ac8698f1 100644 --- a/resources/extruders/ultimaker2_extruder_0.def.json +++ b/resources/extruders/ultimaker2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_go_extruder_0.def.json b/resources/extruders/ultimaker2_go_extruder_0.def.json index 4c258e237e..5ddcfbd551 100644 --- a/resources/extruders/ultimaker2_go_extruder_0.def.json +++ b/resources/extruders/ultimaker2_go_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_go_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_plus_extruder_0.def.json b/resources/extruders/ultimaker2_plus_extruder_0.def.json index 13ab0c59ea..abf36c0b08 100644 --- a/resources/extruders/ultimaker2_plus_extruder_0.def.json +++ b/resources/extruders/ultimaker2_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extended_extruder_left.def.json b/resources/extruders/ultimaker3_extended_extruder_left.def.json index 2d81424bc6..fbc49a1f32 100644 --- a/resources/extruders/ultimaker3_extended_extruder_left.def.json +++ b/resources/extruders/ultimaker3_extended_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extended_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extended_extruder_right.def.json b/resources/extruders/ultimaker3_extended_extruder_right.def.json index 7cdd5876c1..fbe6bcc878 100644 --- a/resources/extruders/ultimaker3_extended_extruder_right.def.json +++ b/resources/extruders/ultimaker3_extended_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extended_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extruder_left.def.json b/resources/extruders/ultimaker3_extruder_left.def.json index 9f5ed34692..b18e2decfa 100644 --- a/resources/extruders/ultimaker3_extruder_left.def.json +++ b/resources/extruders/ultimaker3_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extruder_right.def.json b/resources/extruders/ultimaker3_extruder_right.def.json index 7298a552b7..4753fde489 100644 --- a/resources/extruders/ultimaker3_extruder_right.def.json +++ b/resources/extruders/ultimaker3_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_dual_1st.def.json b/resources/extruders/ultimaker_original_dual_1st.def.json index 3d837fc989..acc8168d94 100644 --- a/resources/extruders/ultimaker_original_dual_1st.def.json +++ b/resources/extruders/ultimaker_original_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_dual_1st", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_dual_2nd.def.json b/resources/extruders/ultimaker_original_dual_2nd.def.json index 80cc17c58d..7907571e66 100644 --- a/resources/extruders/ultimaker_original_dual_2nd.def.json +++ b/resources/extruders/ultimaker_original_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_dual_2nd", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_extruder_0.def.json b/resources/extruders/ultimaker_original_extruder_0.def.json index 4aab693212..30df96df58 100644 --- a/resources/extruders/ultimaker_original_extruder_0.def.json +++ b/resources/extruders/ultimaker_original_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_plus_extruder_0.def.json b/resources/extruders/ultimaker_original_plus_extruder_0.def.json index 91d0751861..fec40e93a9 100644 --- a/resources/extruders/ultimaker_original_plus_extruder_0.def.json +++ b/resources/extruders/ultimaker_original_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_s3_extruder_left.def.json b/resources/extruders/ultimaker_s3_extruder_left.def.json new file mode 100644 index 0000000000..7af6f7d0dc --- /dev/null +++ b/resources/extruders/ultimaker_s3_extruder_left.def.json @@ -0,0 +1,29 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "ultimaker_s3", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "default_value": 180 }, + "machine_extruder_start_pos_y": { "default_value": 180 }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "default_value": 180 }, + "machine_extruder_end_pos_y": { "default_value": 180 }, + "machine_nozzle_head_distance": { "default_value": 2.7 }, + "extruder_prime_pos_x": { "default_value": -3 }, + "extruder_prime_pos_y": { "default_value": 6 }, + "extruder_prime_pos_z": { "default_value": 2 } + } +} diff --git a/resources/extruders/ultimaker_s3_extruder_right.def.json b/resources/extruders/ultimaker_s3_extruder_right.def.json new file mode 100644 index 0000000000..7199710327 --- /dev/null +++ b/resources/extruders/ultimaker_s3_extruder_right.def.json @@ -0,0 +1,29 @@ +{ + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "ultimaker_s3", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 22 }, + "machine_nozzle_offset_y": { "default_value": 0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "default_value": 180 }, + "machine_extruder_start_pos_y": { "default_value": 180 }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "default_value": 180 }, + "machine_extruder_end_pos_y": { "default_value": 180 }, + "machine_nozzle_head_distance": { "default_value": 4.2 }, + "extruder_prime_pos_x": { "value": "machine_width + 3" }, + "extruder_prime_pos_y": { "default_value": 6 }, + "extruder_prime_pos_z": { "default_value": 2 } + } +} diff --git a/resources/extruders/ultimaker_s5_extruder_left.def.json b/resources/extruders/ultimaker_s5_extruder_left.def.json index 275f60bb31..24de85e9cc 100644 --- a/resources/extruders/ultimaker_s5_extruder_left.def.json +++ b/resources/extruders/ultimaker_s5_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s5_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_s5_extruder_right.def.json b/resources/extruders/ultimaker_s5_extruder_right.def.json index 92e08f5cc5..1e0ac3eace 100644 --- a/resources/extruders/ultimaker_s5_extruder_right.def.json +++ b/resources/extruders/ultimaker_s5_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s5_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/uni_print_3d_extruder_0.def.json b/resources/extruders/uni_print_3d_extruder_0.def.json index d0711fd458..747fb9e020 100644 --- a/resources/extruders/uni_print_3d_extruder_0.def.json +++ b/resources/extruders/uni_print_3d_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "uni_print_3d_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/uniqbot_one_extruder_0.def.json b/resources/extruders/uniqbot_one_extruder_0.def.json index 65436ee789..0a8982559d 100644 --- a/resources/extruders/uniqbot_one_extruder_0.def.json +++ b/resources/extruders/uniqbot_one_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "uniqbot_one_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_delta_k8800_extruder_0.def.json b/resources/extruders/vertex_delta_k8800_extruder_0.def.json index 5e09046faf..05a010222f 100644 --- a/resources/extruders/vertex_delta_k8800_extruder_0.def.json +++ b/resources/extruders/vertex_delta_k8800_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_delta_k8800_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_k8400_dual_1st.def.json b/resources/extruders/vertex_k8400_dual_1st.def.json index 86fb2266ba..947cfbc7d8 100644 --- a/resources/extruders/vertex_k8400_dual_1st.def.json +++ b/resources/extruders/vertex_k8400_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400_dual_1st", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_k8400_dual_2nd.def.json b/resources/extruders/vertex_k8400_dual_2nd.def.json index 306b2dcb7a..e606e46337 100644 --- a/resources/extruders/vertex_k8400_dual_2nd.def.json +++ b/resources/extruders/vertex_k8400_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400_dual_2nd", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_k8400_extruder_0.def.json b/resources/extruders/vertex_k8400_extruder_0.def.json index c03453b519..e0304f57bd 100644 --- a/resources/extruders/vertex_k8400_extruder_0.def.json +++ b/resources/extruders/vertex_k8400_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_nano_k8600_extruder_0.def.json b/resources/extruders/vertex_nano_k8600_extruder_0.def.json new file mode 100644 index 0000000000..cfb2d11217 --- /dev/null +++ b/resources/extruders/vertex_nano_k8600_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "vertex_nano_k8600", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.35 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/wanhao_d4s_extruder_0.def.json b/resources/extruders/wanhao_d4s_extruder_0.def.json index 9a750e072c..bd6023faf4 100644 --- a/resources/extruders/wanhao_d4s_extruder_0.def.json +++ b/resources/extruders/wanhao_d4s_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d4s_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_d6_extruder_0.def.json b/resources/extruders/wanhao_d6_extruder_0.def.json index a8a3bf15d3..093546eabf 100644 --- a/resources/extruders/wanhao_d6_extruder_0.def.json +++ b/resources/extruders/wanhao_d6_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d6_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_d6_plus_extruder_0.def.json b/resources/extruders/wanhao_d6_plus_extruder_0.def.json index b2b1e6ab05..acc5b66072 100644 --- a/resources/extruders/wanhao_d6_plus_extruder_0.def.json +++ b/resources/extruders/wanhao_d6_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d6_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_d9_extruder_0.def.json b/resources/extruders/wanhao_d9_extruder_0.def.json index 76d501e5a2..40fcf422f5 100644 --- a/resources/extruders/wanhao_d9_extruder_0.def.json +++ b/resources/extruders/wanhao_d9_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d9_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_duplicator5S_extruder_0.def.json b/resources/extruders/wanhao_duplicator5S_extruder_0.def.json index 74f47158a3..7274d5117e 100644 --- a/resources/extruders/wanhao_duplicator5S_extruder_0.def.json +++ b/resources/extruders/wanhao_duplicator5S_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_duplicator5S_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json b/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json index 8c91de4685..3479c94e35 100644 --- a/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json +++ b/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_duplicator5Smini_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_i3_extruder_0.def.json b/resources/extruders/wanhao_i3_extruder_0.def.json index 7d881079c4..387a456ff2 100644 --- a/resources/extruders/wanhao_i3_extruder_0.def.json +++ b/resources/extruders/wanhao_i3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_i3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_i3mini_extruder_0.def.json b/resources/extruders/wanhao_i3mini_extruder_0.def.json index c5abbd175e..2d52f0d126 100644 --- a/resources/extruders/wanhao_i3mini_extruder_0.def.json +++ b/resources/extruders/wanhao_i3mini_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_i3mini_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_i3plus_extruder_0.def.json b/resources/extruders/wanhao_i3plus_extruder_0.def.json index 0dae64ce63..103e3b9335 100644 --- a/resources/extruders/wanhao_i3plus_extruder_0.def.json +++ b/resources/extruders/wanhao_i3plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_i3plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/z-bolt_extruder_0.def.json b/resources/extruders/z-bolt_extruder_0.def.json index 70e9f6177c..04c8d10cbb 100644 --- a/resources/extruders/z-bolt_extruder_0.def.json +++ b/resources/extruders/z-bolt_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "z-bolt_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/zone3d_printer_extruder_0.def.json b/resources/extruders/zone3d_printer_extruder_0.def.json index ca024dd5c4..fb8f40d3e2 100644 --- a/resources/extruders/zone3d_printer_extruder_0.def.json +++ b/resources/extruders/zone3d_printer_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "zone3d_printer_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/zyyx_agile_extruder_0.def.json b/resources/extruders/zyyx_agile_extruder_0.def.json index edda9b3097..c01ffb59f3 100644 --- a/resources/extruders/zyyx_agile_extruder_0.def.json +++ b/resources/extruders/zyyx_agile_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "zyyx_agile_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index 1874604139..40a0c03721 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -8,17 +8,17 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -69,66 +69,52 @@ msgid "" "guide

" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "" "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "" +"A print is still in progress. Cura cannot start another print via USB until " +"the previous print has completed." msgstr "" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 @@ -143,6 +129,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "" #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "" @@ -164,7 +151,7 @@ msgid "Save to Removable Drive {0}" msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "" @@ -201,9 +188,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "" @@ -232,8 +219,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "" @@ -260,245 +248,172 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "" -"Connected over the network. Please approve the access request on the printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "" -"Access to the printer requested. Please approve the request on the printer" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "" -"There is an issue with the configuration of your Ultimaker, which makes it " -"impossible to start the print. Please resolve this issues before continuing." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "" -"There is a mismatch between the configuration or calibration of the printer " -"and Cura. For the best result, always slice for the PrintCores and materials " -"that are inserted in your printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "" -"Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "" -"Different PrintCore (Cura: {cura_printcore_name}, Printer: " -"{remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "" -"The PrintCores and/or materials on your printer differ from those within " -"your current project. For the best result, always slice for the PrintCores " -"and materials that are inserted in your printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "" +"New printers have been found connected to your account, you can find them in " +"your list of discovered printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "" +"You are attempting to connect to {0} but it is not the host of a group. You " +"can visit the web page to configure it as a group host." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "" +"You are attempting to connect to a printer that is not running Ultimaker " +"Connect. Please update the printer to the latest firmware." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "" +"Cura has detected material profiles that were not yet installed on the host " +"printer of group {0}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "" @@ -524,22 +439,28 @@ msgctxt "@action:button" msgid "How to update" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" msgstr "" @@ -553,39 +474,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "" -"Allow Cura to send anonymized usage statistics to help prioritize future " -"improvements to Cura. Some of your preferences and settings are sent, the " -"Cura version and a hash of the models you're slicing." -msgstr "" - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -616,24 +504,54 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "" "Unable to slice with the current material as it is incompatible with the " "selected machine or configuration." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "" @@ -641,7 +559,7 @@ msgid "" "errors: {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "" @@ -649,13 +567,13 @@ msgid "" "errors on one or more models: {error_labels}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "" "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "" @@ -663,20 +581,21 @@ msgid "" "%s." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" msgid "" -"Nothing to slice because none of the models fit the build volume. Please " -"scale or rotate models to fit." +"Nothing to slice because none of the models fit the build volume or are " +"assigned to a disabled extruder. Please scale or rotate models to fit, or " +"enable an extruder." msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "" @@ -691,14 +610,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "" @@ -709,13 +626,13 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "" @@ -724,7 +641,7 @@ msgid "" "instead." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "" @@ -739,24 +656,67 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "" "Make sure the g-code is suitable for your printer and printer configuration " "before sending the file to it. The g-code representation may not be accurate." msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -778,96 +738,44 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "" @@ -875,44 +783,45 @@ msgid "" "overwrite it?" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" +msgid "Invalid file URL:" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." msgid "" -"The selected material is incompatible with the selected machine or " -"configuration." +"Settings have been changed to match the current availability of extruders:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "" -"Settings have been changed to match the current availability of extruders: " -"[%s]" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "" "Failed to export profile to {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "" @@ -920,39 +829,44 @@ msgid "" "failure." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "" -"Failed to import profile from {0}: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "" +"Can't import profile from {0} before a printer is added." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "" @@ -960,166 +874,333 @@ msgid "" "import it." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "" -"The machine defined in profile {0} ({1}) doesn't match " -"with your current machine ({2}), could not import it." -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "" -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "" +"The visual profile is designed to print visual prototypes and models with " +"the intent of high visual and surface quality." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "" +"The engineering profile is designed to print functional prototypes and end-" +"use parts with the intent of better accuracy and for closer tolerances." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "" +"The draft profile is designed to print initial prototypes and concept " +"validation with the intent of significant print time reduction." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "" +"The printer(s) below cannot be connected because they are part of a group" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "" "The build volume height has been reduced due to the value of the \"Print " "Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "" -"Tried to restore a Cura backup that does not match your current version." +msgid "Tried to restore a Cura backup that is higher than the current version." msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" +msgid "Placing Objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

Oops, Ultimaker Cura has encountered something that doesn't seem right." @@ -1134,32 +1215,32 @@ msgid "" " " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

A fatal error has occurred in Cura. Please send us this Crash Report " @@ -1169,100 +1250,107 @@ msgid "" " " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "

  • OpenGL Version: {version}
  • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" +msgid "" +"User description (Note: Developers may not speak your language, please use " +"English if possible)" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "" "@info 'width', 'depth' and 'height' are variable names that must NOT be " @@ -1270,239 +1358,181 @@ msgctxt "" msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "" -"Distance from the left of the printhead to the center of the nozzle. Used to " -"prevent colissions between previous prints and the printhead when printing " -"\"One at a Time\"." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "" -"Distance from the front of the printhead to the center of the nozzle. Used " -"to prevent colissions between previous prints and the printhead when " -"printing \"One at a Time\"." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "" -"Distance from the right of the printhead to the center of the nozzle. Used " -"to prevent colissions between previous prints and the printhead when " -"printing \"One at a Time\"." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "" -"Distance from the rear of the printhead to the center of the nozzle. Used to " -"prevent colissions between previous prints and the printhead when printing " -"\"One at a Time\"." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "" -"The height difference between the tip of the nozzle and the gantry system (X " -"and Y axes). Used to prevent collisions between previous prints and the " -"gantry when printing \"One at a Time\"." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "" -"The nominal diameter of filament supported by the printer. The exact " -"diameter will be overridden by the material and/or the profile." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "" @@ -1513,68 +1543,81 @@ msgid "" "Could not connect to the Cura Package database. Please check your connection." msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" +msgid "Marketplace" msgstr "" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 @@ -1604,52 +1647,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "" @@ -1667,12 +1725,12 @@ msgid "" "Do you agree with the terms below?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "" @@ -1682,22 +1740,62 @@ msgctxt "@label" msgid "Featured" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "" @@ -1709,23 +1807,6 @@ msgid "" "adjustment." msgstr "" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1809,436 +1890,513 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "" -"This printer/group is already added to Cura. Please select another printer/" -"group." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your " "printer is connected to the network using a network cable or by connecting " "your printer to your WIFI network. If you don't connect Cura with your " "printer, you can still use a USB drive to transfer g-code files to your " -"printer.\n" -"\n" -"Select your printer from the list below:" +"printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "" "If your printer is not listed, read the network printing " "troubleshooting guide" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" +msgid "Preparing..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" +msgid "Aborting..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" +msgid "Pausing..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" +msgid "Printer selection" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "" -"The assigned printer, %1, requires the following configuration change(s):" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "" -"The printer %1 is assigned, but the job contains an unknown material " -"configuration." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "" -"Starting a print job with an incompatible configuration could damage your 3D " -"printer. Are you sure you want to override the configuration and print %1?" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" +msgid "Override" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "" +"The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "" +msgstr[1] "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "" +"The printer %1 is assigned, but the job contains an unknown material " +"configuration." msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "" +"Override will use the specified settings with the existing printer " +"configuration. This may result in a failed print." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" +msgid "Travels" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" +msgid "Helpers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" +msgid "Shell" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" +msgid "Infill" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "" @@ -2253,41 +2411,41 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" msgid "" -"Cura sends anonymous data to Ultimaker in order to improve the print quality " -"and user experience. Below is an example of all the data that is sent." +"Ultimaker Cura collects anonymous data in order to improve the print quality " +"and user experience. Below is an example of all the data that is shared:" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" +msgid "I don't want to send anonymous data" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" +msgid "Allow sending anonymous data" msgstr "" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 @@ -2338,15 +2496,10 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" msgid "" -"By default, white pixels represent high points on the mesh and black pixels " -"represent low points on the mesh. Change this option to reverse the behavior " -"such that black pixels represent high points on the mesh and white pixels " -"represent low points on the mesh." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" +"For lithophanes dark pixels should correspond to thicker locations in order " +"to block more light coming through. For height maps lighter pixels signify " +"higher terrain, so lighter pixels should correspond to thicker locations in " +"the generated 3D model." msgstr "" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 @@ -2354,6 +2507,11 @@ msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2364,81 +2522,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "" @@ -2454,20 +2611,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "" @@ -2478,104 +2640,199 @@ msgid "How should the conflict in the profile be resolved?" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" +msgid "My Backups" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "" +"You don't have any backups currently. Use the 'Backup Now' button to create " +"one." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "" +"During the preview phase, you'll be limited to 5 visible backups. Remove a " +"backup to see older ones." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "" +"You will need to restart Cura before your backup is restored. Do you want to " +"close Cura now?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "" "To make sure your prints will come out great, you can now adjust your " @@ -2583,7 +2840,7 @@ msgid "" "the different positions that can be adjusted." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "" "For every position; insert a piece of paper under the nozzle and adjust the " @@ -2591,121 +2848,26 @@ msgid "" "paper is slightly gripped by the tip of the nozzle." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "" -"It's a good idea to do a few sanity checks on your Ultimaker. You can skip " -"this step if you know your machine is functional" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2717,7 +2879,6 @@ msgid "Printer does not accept commands" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "" @@ -2728,19 +2889,16 @@ msgid "Lost connection with the printer" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "" @@ -2760,237 +2918,180 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "" "The new filament diameter is set to %1 mm, which is not compatible with the " "current extruder. Do you wish to continue?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "" "Could not import material %1: %2" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "" "Failed to export material to %1: %2" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "" @@ -3000,253 +3101,287 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "" "You will need to restart the application for these changes to have effect." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "" "Highlight unsupported areas of the model in red. Without support these areas " "will not print properly." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "" "Moves the camera so the model is in the center of the view when a model is " "selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "" +"Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "" "Should models on the platform be moved so that they no longer intersect?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "" "An model may appear extremely small if its unit is for example in meters " "rather than millimeters. Should these models be scaled up?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "" "Should a prefix based on the printer name be added to the print job name " "automatically?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "" "When you have made changes to a profile and switched to a different one, a " @@ -3254,44 +3389,51 @@ msgid "" "not, or you can choose a default behaviour and never show that dialog again." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "" "Default behavior for changed setting values when switching to a different " "profile: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "" "Should anonymous data about your print be sent to Ultimaker? Note, no " @@ -3299,386 +3441,204 @@ msgid "" "stored." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "" "This profile uses the defaults specified by the printer, so it has no " "settings/overrides in the list below." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" +msgid "Marketplace" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "" +"Are you sure you want to start a new project? This will clear the build " +"plate and any unsaved settings." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the " -"profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." +msgid "Search settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated " @@ -3687,29 +3647,36 @@ msgid "" "Click to make these settings visible." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "" +"This setting is not used because all the settings that it influences are " +"overridden." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "" "This setting is always shared between all extruders. Changing it here will " "change the value for all extruders." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3717,7 +3684,7 @@ msgid "" "Click to restore the value of the profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value " @@ -3726,79 +3693,182 @@ msgid "" "Click to restore the calculated value." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "" +"@label %1 is filled in with the type of a profile. %2 is filled with a list " +"of numbers (eg '1' or '1, 2')" +msgid "" +"There is no %1 profile for the configuration in extruder %2. The default " +"intent will be used instead" +msgid_plural "" +"There is no %1 profile for the configurations in extruders %2. The default " +"intent will be used instead" +msgstr[0] "" +msgstr[1] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "" +"Gradual infill will gradually increase the amount of infill towards the top." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "" +"Generate structures to support parts of the model which have overhangs. " +"Without these structures, such parts would collapse during printing." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "" +"Enable printing a brim or raft. This will add a flat area around or under " +"your object which is easy to cut off afterwards." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "" +"You have modified some profile settings. If you want to change these go to " +"custom mode." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the " +"profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "" "Send a custom G-code command to the connected printer. Press 'enter' to send " "the command." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "" "The target temperature of the hotend. The hotend will heat up or cool down " "towards this temperature. If this is 0, the hotend heating is turned off." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "" "Heat the hotend in advance before printing. You can continue adjusting your " @@ -3806,45 +3876,49 @@ msgid "" "up when you're ready to print." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "" "The target temperature of the heated bed. The bed will heat up or cool down " "towards this temperature. If this is 0, the bed heating is turned off." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "" "Heat the bed in advance before printing. You can continue adjusting your " @@ -3857,12 +3931,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "" @@ -3877,17 +3951,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "" @@ -3907,6 +4016,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3926,550 +4050,496 @@ msgctxt "@label" msgid "Number of Copies" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "" +"The configurations are not available because the printer is disconnected." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "" +"This configuration is not available because %1 is not recognized. Please " +"visit %2 to download the correct material profile." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "" -"Recommended Print Setup

    Print with the recommended settings " -"for the selected printer, material and quality." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "" -"Custom Print Setup

    Print with finegrained control over every " -"last bit of the slicing process." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." +msgid "&Marketplace" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "" -"We have found one or more project file(s) within the files you have " -"selected. You can open only one project file at a time. We suggest to only " -"import models from those files. Would you like to proceed?" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "" -"Are you sure you want to start a new project? This will clear the build " -"plate and any unsaved settings." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "" "We have found one or more G-Code files within the files you have selected. " @@ -4477,130 +4547,14 @@ msgid "" "file, please just select only one." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" +msgid "Add Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "" -"This quality profile is not available for you current material and nozzle " -"configuration. Please change these to enable this quality profile" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "" -"A custom profile is currently active. To enable the quality slider, choose a " -"default quality profile in Custom tab" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "" -"You have modified some profile settings. If you want to change these go to " -"custom mode." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "" -"Gradual infill will gradually increase the amount of infill towards the top." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "" -"Generate structures to support parts of the model which have overhangs. " -"Without these structures, such parts would collapse during printing." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "" -"Select which extruder to use for support. This will build up supporting " -"structures below the model to prevent the model from sagging or printing in " -"mid air." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "" -"Enable printing a brim or raft. This will add a flat area around or under " -"your object which is easy to cut off afterwards." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "" -"Need help improving your prints?
    Read the Ultimaker " -"Troubleshooting Guides" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 @@ -4610,80 +4564,513 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "" +"We have found one or more project file(s) within the files you have " +"selected. You can open only one project file at a time. We suggest to only " +"import models from those files. Would you like to proceed?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "" "This is a Cura project file. Would you like to open it as a project or " "import the models from it?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" +msgid "Empty" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" +msgid "Add a printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" +msgid "Add a networked printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" +msgid "Add a non-networked printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "" +"This printer cannot be added because it's an unknown printer or it's not the " +"host of a group." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "" +"Ultimaker Cura collects anonymous data to improve print quality and user " +"experience, including:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "" +"Data collected by Ultimaker Cura will not contain any personal information." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "" + #: MachineSettingsAction/plugin.json msgctxt "description" -msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgid "" +"Provides a way to change machine settings (such as build volume, nozzle " +"size, etc.)." msgstr "" #: MachineSettingsAction/plugin.json @@ -4733,7 +5120,9 @@ msgstr "" #: ModelChecker/plugin.json msgctxt "description" -msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgid "" +"Checks models and print configuration for possible printing issues and give " +"suggestions." msgstr "" #: ModelChecker/plugin.json @@ -4741,26 +5130,6 @@ msgctxt "name" msgid "Model Checker" msgstr "" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "" - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "" - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4771,19 +5140,20 @@ msgctxt "name" msgid "Firmware Updater" msgstr "" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." +msgid "Provides support for reading AMF files." msgstr "" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" +msgid "AMF Reader" msgstr "" #: USBPrinting/plugin.json msgctxt "description" -msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgid "" +"Accepts G-Code and sends them to a printer. Plugin can also update firmware." msgstr "" #: USBPrinting/plugin.json @@ -4791,26 +5161,6 @@ msgctxt "name" msgid "USB printing" msgstr "" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "" - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4853,12 +5203,12 @@ msgstr "" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." +msgid "Manages network connections to Ultimaker networked printers." msgstr "" #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" +msgid "Ultimaker Network Connection" msgstr "" #: MonitorStage/plugin.json @@ -4913,7 +5263,8 @@ msgstr "" #: SupportEraser/plugin.json msgctxt "description" -msgid "Creates an eraser mesh to block the printing of support in certain places" +msgid "" +"Creates an eraser mesh to block the printing of support in certain places" msgstr "" #: SupportEraser/plugin.json @@ -4921,6 +5272,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "" + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4981,6 +5342,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "" + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5001,6 +5372,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -5011,6 +5392,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "" + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -5021,6 +5412,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "" + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5051,6 +5452,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "" + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5061,6 +5472,16 @@ msgctxt "name" msgid "Image Reader" msgstr "" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "" + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5111,6 +5532,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "" + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -5131,9 +5562,21 @@ msgctxt "name" msgid "3MF Writer" msgstr "" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "" + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "" + #: UltimakerMachineActions/plugin.json msgctxt "description" -msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." +msgid "" +"Provides machine actions for Ultimaker machines (such as bed leveling " +"wizard, selecting upgrades, etc.)." msgstr "" #: UltimakerMachineActions/plugin.json @@ -5150,4 +5593,3 @@ msgstr "" msgctxt "name" msgid "Cura Profile Reader" msgstr "" - diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index 3433edc5bd..3b0073bc31 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-09-28 14:42+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: German\n" +"Project-Id-Version: Cura 4.4\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: German , German \n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Geräteeinstellungen" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-Code-Datei" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter unterstützt keinen Nicht-Textmodus." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Vor dem Exportieren bitte G-Code vorbereiten." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D-Modell-Assistent" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,68 +64,56 @@ msgid "" "

    {model_names}

    \n" "

    Find out how to ensure the best possible print quality and reliability.

    \n" "

    View print quality guide

    " -msgstr "

    Ein oder mehrere 3D-Modelle können möglicherweise aufgrund der Modellgröße und Materialkonfiguration nicht optimal gedruckt werden:

    \n

    {model_names}

    \n

    Erfahren Sie, wie Sie die bestmögliche Druckqualität und Zuverlässigkeit sicherstellen.

    \n

    Leitfaden zu Druckqualität anzeigen

    " - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Änderungsprotokoll anzeigen" +msgstr "" +"

    Ein oder mehrere 3D-Modelle können möglicherweise aufgrund der Modellgröße und Materialkonfiguration nicht optimal gedruckt werden:

    \n" +"

    {model_names}

    \n" +"

    Erfahren Sie, wie Sie die bestmögliche Druckqualität und Zuverlässigkeit sicherstellen.

    \n" +"

    Leitfaden zu Druckqualität anzeigen

    " #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Firmware aktualisieren" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Einstellungen Glätten aktiv" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF-Datei" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Das Profil wurde geglättet und aktiviert." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-Drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Über USB drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Über USB drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Über USB verbunden" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Ein USB-Druck wird ausgeführt. Das Schließen von Cura beendet diesen Druck. Sind Sie sicher?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G-Datei" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Druck wird bearbeitet. Cura kann keinen weiteren Druck via USB starten, bis der vorherige Druck abgeschlossen wurde." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Schreibt X3g in Dateien" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g-Datei" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Druck in Bearbeitung" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -139,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "GCodeWriter unterstützt keinen Textmodus." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Ultimaker Format Package" @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Auf Wechseldatenträger speichern {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Es sind keine Dateiformate zum Schreiben vorhanden!" @@ -197,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Konnte nicht auf dem Wechseldatenträger gespeichert werden {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Fehler" @@ -228,8 +217,9 @@ msgstr "Wechseldatenträger auswerfen {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Warnhinweis" @@ -256,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Wechseldatenträger" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Drucken über Netzwerk" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Drücken über Netzwerk" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Über Netzwerk verbunden." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Über Netzwerk verbunden. Geben Sie die Zugriffsanforderung für den Drucker frei." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Über Netzwerk verbunden. Kein Zugriff auf die Druckerverwaltung." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Zugriff auf Drucker erforderlich. Bestätigen Sie den Zugriff auf den Drucker" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Authentifizierungsstatus" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "Authentifizierungsstatus" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Erneut versuchen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Zugriffanforderung erneut senden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Zugriff auf den Drucker genehmigt" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "Kein Zugriff auf das Drucken mit diesem Drucker. Druckauftrag kann nicht gesendet werden." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Zugriff anfordern" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Zugriffsanforderung für den Drucker senden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "Es kann kein neuer Druckauftrag gestartet werden." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Es liegt ein Problem mit der Konfiguration Ihres Ultimaker vor, das den Druckstart verhindert. Lösen Sie dieses Problem bitte, bevor Sie fortfahren." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Konfiguration nicht übereinstimmend" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Möchten Sie wirklich mit der gewählten Konfiguration drucken?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Anforderungen zwischen der Druckerkonfiguration oder -kalibrierung und Cura stimmen nicht überein. Für optimale Ergebnisse schneiden Sie stets für die PrintCores und Materialien, die in Ihren Drucker eingelegt wurden." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "Das Senden neuer Aufträge ist (vorübergehend) blockiert; der vorherige Druckauftrag wird noch gesendet." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Daten werden zum Drucker gesendet" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Daten werden gesendet" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Abbrechen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "Kein PrintCore geladen in Steckplatz {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "Kein Material geladen in Steckplatz {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "Abweichender PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) für Extruder gewählt {extruder_id}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Abweichendes Material (Cura: {0}, Drucker: {1}) für Extruder {2} gewählt" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Synchronisieren Ihres Druckers" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Möchten Sie Ihre aktuelle Druckerkonfiguration in Cura verwenden?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Die PrintCores und/oder Materialien auf Ihrem Drucker unterscheiden sich von denen Ihres aktuellen Projekts. Für optimale Ergebnisse schneiden Sie stets für die PrintCores und Materialien, die in Ihren Drucker eingelegt wurden." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Über Netzwerk verbunden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "Der Druckauftrag wurde erfolgreich an den Drucker gesendet." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Daten gesendet" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "In Monitor überwachen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "Drucker '{printer_name}' hat '{job_name}' vollständig gedrückt." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "Der Druckauftrag '{job_name}' wurde ausgeführt." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Druck vollendet" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Anschluss über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Drucken über Netzwerk" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Drücken über Netzwerk" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Über Netzwerk verbunden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Bitte warten Sie, bis der aktuelle Druckauftrag gesendet wurde." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Druckfehler" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Neue Cloud-Drucker gefunden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Es wurden neue Drucker gefunden, die Sie zu Ihrem Konto hinzufügen können. Sie finden diese in der Liste gefundener Drucker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Diese Meldung nicht mehr anzeigen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Sie versuchen, sich mit {0} zu verbinden, aber dieser Drucker ist nicht der Host, der die Gruppe verwaltet. Besuchen Sie die Website, um den Drucker als Host der Gruppe zu konfigurieren." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Nicht Host-Drucker der Gruppe" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Gruppe konfigurieren" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Druckaufträge mithilfe Ihres Ultimaker-Kontos von einem anderen Ort aus senden und überwachen." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Verbinden mit Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Erste Schritte" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Druckauftrag senden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Druckauftrag wird vorbereitet." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Der Druckauftrag wurde erfolgreich an den Drucker gesendet." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Daten gesendet" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Sie versuchen, sich mit einem Drucker zu verbinden, auf dem Ultimaker Connect nicht läuft. Bitte aktualisieren Sie die Firmware des Druckers." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Drucker aktualisieren" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura hat Materialprofile entdeckt, die auf dem Host-Drucker der Gruppe {0} noch nicht installiert wurden." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Material an Drucker senden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Daten konnten nicht in Drucker geladen werden." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Netzwerkfehler" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "morgen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "heute" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Über Cloud drucken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Über Cloud drucken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Über Cloud verbunden" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Überwachen" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Zugriff auf Update-Informationen nicht möglich." @@ -503,22 +425,28 @@ msgctxt "@action:button" msgid "How to update" msgstr "Anleitung für die Aktualisierung" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Schichtenansicht" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura zeigt die Schichten nicht akkurat an, wenn Wire Printing aktiviert ist" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Simulationsansicht" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "Nachbearbeitung" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" msgstr "G-Code ändern" @@ -532,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "Erstellt ein Volumen, in dem keine Stützstrukturen gedruckt werden." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura erfasst anonymisierte Nutzungsstatistiken." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "Daten werden erfasst" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "Mehr Infos" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Siehe mehr Informationen dazu, was Cura sendet." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "Zulassen" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Damit lassen Sie zu, dass Cura anonymisierte Nutzungsstatistiken sendet, um zukünftige Verbesserungen für Cura zu definieren. Einige Ihrer Präferenzen und Einstellungen, die Cura-Version und ein Hash der Modelle, die Sie slicen, werden gesendet." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -592,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-Bilddatei" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Öffnen Sie das komprimierte Dreiecksnetz" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Slicing mit dem aktuellen Material nicht möglich, da es mit der gewählten Maschine oder Konfiguration nicht kompatibel ist." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "Slicing nicht möglich" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Die aktuellen Einstellungen lassen kein Schneiden (Slicing) zu. Die folgenden Einstellungen sind fehlerhaft:{0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Aufgrund der Pro-Modell-Einstellungen ist kein Schneiden (Slicing) möglich. Die folgenden Einstellungen sind für ein oder mehrere Modelle fehlerhaft: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Schneiden (Slicing) ist nicht möglich, da der Einzugsturm oder die Einzugsposition(en) ungültig ist (sind)." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "Schneiden (Slicing) ist nicht möglich, da Objekte vorhanden sind, die mit dem deaktivierten Extruder %s verbunden sind." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Es ist kein Objekt zum Schneiden vorhanden, da keines der Modelle der Druckabmessung entspricht. Bitte die Modelle passend skalieren oder drehen." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "Es ist kein Objekt zum Schneiden vorhanden, da keines der Modelle den Druckabmessungen entspricht oder weil sie einem deaktivierten Extruder zugewiesen wurden. Bitte die Modelle passend skalieren oder drehen." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "Schichten werden verarbeitet" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Informationen" @@ -656,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Pro Objekteinstellungen konfigurieren" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Empfohlen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Benutzerdefiniert" @@ -674,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-Datei" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Düse" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Projektdatei {0} enthält einen unbekannten Maschinentyp {1}. Importieren der Maschine ist nicht möglich. Stattdessen werden die Modelle importiert." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Projektdatei öffnen" @@ -701,22 +627,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G-Datei" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-Code parsen" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-Code-Details" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Stellen Sie sicher, dass der G-Code für Ihren Drucker und Ihre Druckerkonfiguration geeignet ist, bevor Sie die Datei senden. Der Darstellung des G-Codes ist möglicherweise nicht korrekt." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "Backups verwalten" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "Backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "Beim Versuch, Ihre Backups aufzulisten, trat ein Fehler auf." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "Beim Versuch, Ihr Backup wiederherzustellen, trat ein Fehler auf." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "Backups" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "Ihr Backup wird hochgeladen..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "Beim Versuch, Ihr Backup hochzuladen, trat ein Fehler auf." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "Ihr Backup wurde erfolgreich hochgeladen." + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -738,330 +707,452 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "Fehler beim Schreiben von 3MF-Datei." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "Vorschau" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Upgrades wählen" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Check-up" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Druckbett nivellieren" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Außenwand" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Innenwände" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Außenhaut" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Füllung" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Stützstruktur-Füllung" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Stützstruktur-Schnittstelle" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Stützstruktur" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Skirt" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Bewegungen" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Einzüge" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Sonstige" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Vorgeschnittene Datei {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "Login fehlgeschlagen" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Nicht unterstützt" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Datei bereits vorhanden" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Die Datei {0} ist bereits vorhanden. Soll die Datei wirklich überschrieben werden?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Nicht überschrieben" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Das gewählte Material ist mit der gewählten Maschine oder Konfiguration nicht kompatibel." +msgid "Invalid file URL:" +msgstr "Ungültige Datei-URL:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Material nicht kompatibel" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Die Einstellungen wurden an die aktuell verfügbaren Extruder angepasst:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "Die Einstellungen wurden passend für die aktuelle Verfügbarkeit der Extruder geändert: [%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Einstellungen aktualisiert" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "Extruder deaktiviert" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Unbekannt" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Export des Profils nach {0} fehlgeschlagen: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Export des Profils nach {0} fehlgeschlagen: Fehlermeldung von Writer-Plugin." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profil wurde nach {0} exportiert" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Export erfolgreich ausgeführt" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "Import des Profils aus Datei {0} fehlgeschlagen: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "Import des Profils aus Datei {0}: {1} fehlgeschlagen" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "Import des Profils aus Datei {0} kann erst durchgeführt werden, wenn ein Drucker hinzugefügt wurde." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Kein benutzerdefiniertes Profil für das Importieren in Datei {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Import des Profils aus Datei {0} fehlgeschlagen:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Dieses Profil {0} enthält falsche Daten, Importieren nicht möglich." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "Die Maschine, die im Profil {0} ({1}) definiert wurde, entspricht nicht Ihrer derzeitigen Maschine ({2}). Importieren nicht möglich." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Import des Profils aus Datei {0} fehlgeschlagen:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil erfolgreich importiert {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Datei {0} enthält kein gültiges Profil." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profil {0} hat einen unbekannten Dateityp oder ist beschädigt." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Benutzerdefiniertes Profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Für das Profil fehlt eine Qualitätsangabe." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Es konnte keine Qualitätsangabe {0} für die vorliegende Konfiguration gefunden werden." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Außenwand" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Innenwände" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Außenhaut" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Füllung" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Stützstruktur-Füllung" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Stützstruktur-Schnittstelle" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Stützstruktur" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Skirt" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "Einzugsturm" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Bewegungen" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Einzüge" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Sonstige" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Vorgeschnittene Datei {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "Weiter" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "Gruppe #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "Netzwerkfähige Drucker" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Schließen" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "Lokale Drucker" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Hinzufügen" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Abbrechen" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visuell" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Das visuelle Profil wurde für den Druck visueller Prototypen und Modellen entwickelt, bei denen das Ziel eine hohe visuelle Qualität und eine hohe Oberflächenqualität" +" ist." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Das Engineering-Profil ist für den Druck von Funktionsprototypen und Endnutzungsteilen gedacht, bei denen Präzision gefragt ist und engere Toleranzen gelten." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Entwurf" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Das Entwurfsprofil wurde für erste Prototypen und die Konzeptvalidierung entwickelt, um einen deutlich schnelleren Druck zu ermöglichen." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Nicht überschrieben" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Benutzerdefinierte Profile" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Alle unterstützten Typen ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Alle Dateien (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Benutzerdefiniertes Material" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Benutzerdefiniert" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Der/die nachfolgende(n) Drucker kann/können nicht verbunden werden, weil er/sie Teil einer Gruppe ist/sind" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Verfügbare vernetzte Drucker" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Die Höhe der Druckabmessung wurde aufgrund des Wertes der Einstellung „Druckreihenfolge“ reduziert, um eine Kollision der Brücke mit den gedruckten Modellen zu verhindern." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Produktabmessungen" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "Konnte kein Archiv von Benutzer-Datenverzeichnis {} erstellen" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "Backup" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "Versucht, ein Cura-Backup-Verzeichnis ohne entsprechende Daten oder Metadaten wiederherzustellen." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "Versucht, ein Cura-Backup zu erstellen, das nicht Ihrer aktuellen Version entspricht." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "Versucht, ein Cura-Backup wiederherzustellen, das eine höhere Version als die aktuelle hat." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "Antwort konnte nicht gelesen werden." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Der Ultimaker-Konto-Server konnte nicht erreicht werden." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Erteilen Sie bitte die erforderlichen Freigaben bei der Autorisierung dieser Anwendung." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Bei dem Versuch, sich anzumelden, trat ein unerwarteter Fehler auf. Bitte erneut versuchen." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Objekte vervielfältigen und platzieren" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "Objekt-Platzierung" +msgid "Placing Objects" +msgstr "Objekte platzieren" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Innerhalb der Druckabmessung für alle Objekte konnte keine Position gefunden werden" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "Objekt-Platzierung" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Neue Position für Objekte finden" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "Position finden" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Kann Position nicht finden" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Cura kann nicht starten" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1069,356 +1160,328 @@ msgid "" "

    Backups can be found in the configuration folder.

    \n" "

    Please send us this Crash Report to fix the problem.

    \n" " " -msgstr "

    Hoppla, bei Ultimaker Cura ist ein Problem aufgetreten.

    \n

    Beim Start ist ein nicht behebbarer Fehler aufgetreten. Er wurde möglicherweise durch einige falsche Konfigurationsdateien verursacht. Wir empfehlen ein Backup und Reset Ihrer Konfiguration.

    \n

    Backups sind im Konfigurationsordner abgelegt.

    \n

    Senden Sie uns diesen Absturzbericht bitte, um das Problem zu beheben.

    \n " +msgstr "" +"

    Hoppla, bei Ultimaker Cura ist ein Problem aufgetreten.

    \n" +"

    Beim Start ist ein nicht behebbarer Fehler aufgetreten. Er wurde möglicherweise durch einige falsche Konfigurationsdateien verursacht. Wir empfehlen ein Backup und Reset Ihrer Konfiguration.

    \n" +"

    Backups sind im Konfigurationsordner abgelegt.

    \n" +"

    Senden Sie uns diesen Absturzbericht bitte, um das Problem zu beheben.

    \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "Absturzbericht an Ultimaker senden" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "Detaillierten Absturzbericht anzeigen" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "Konfigurationsordner anzeigen" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "Backup und Reset der Konfiguration" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Crash-Bericht" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" "

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" " " -msgstr "

    Ein schwerer Fehler ist in Cura aufgetreten. Senden Sie uns diesen Absturzbericht, um das Problem zu beheben

    \n

    Verwenden Sie bitte die Schaltfläche „Bericht senden“, um den Fehlerbericht automatisch an unsere Server zu senden

    \n " +msgstr "" +"

    Ein schwerer Fehler ist in Cura aufgetreten. Senden Sie uns diesen Absturzbericht, um das Problem zu beheben

    \n" +"

    Verwenden Sie bitte die Schaltfläche „Bericht senden“, um den Fehlerbericht automatisch an unsere Server zu senden

    \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "Systeminformationen" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Unbekannt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Cura-Version" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "Plattform" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Qt Version" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "PyQt Version" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "Noch nicht initialisiert
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • OpenGL-Version: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • OpenGL-Anbieter: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • OpenGL-Renderer: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "Fehler-Rückverfolgung" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "Protokolle" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "Benutzerbeschreibung" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "Benutzerbeschreibung (Hinweis: Bitte schreiben Sie auf Englisch, da die Entwickler Ihre Sprache möglicherweise nicht beherrschen.)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Bericht senden" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Geräte werden geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Erstellungen werden eingerichtet ..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Die Szene wird eingerichtet..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Die Benutzeroberfläche wird geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Es kann nur jeweils ein G-Code gleichzeitig geladen werden. Wichtige {0} werden übersprungen." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Wenn G-Code geladen wird, kann keine weitere Datei geöffnet werden. Wichtige {0} werden übersprungen." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Das gewählte Modell war zu klein zum Laden." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Geräteeinstellungen" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Drucker" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Druckereinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (Breite)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Tiefe)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Höhe)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Druckbettform" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "Ausgang in Mitte" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "Heizbares Bett" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "Druckraum aufgeheizt" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "G-Code-Variante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Druckkopfeinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Abstand von der linken Seite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Abstand von der Vorderseite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X max." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Abstand von der rechten Seite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y max." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Abstand von der Rückseite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Brückenhöhe" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "Der Höhenunterschied zwischen der Düsenspitze und dem Brückensystem (X- und Y-Achsen). Wird verwendet, um Kollisionen zwischen vorherigen Drucken und der Brücke zu verhindern, wenn im Modus „Nacheinander“ gedruckt wird." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Anzahl Extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" -msgstr "Start G-code" +msgstr "Start G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "G-Code-Befehle, die zum Start ausgeführt werden sollen." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" -msgstr "Ende G-code" +msgstr "Ende G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "G-Code-Befehle, die am Ende ausgeführt werden sollen." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Drucker" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "Düseneinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Düsengröße" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Kompatibler Materialdurchmesser" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Der Nenndurchmesser des durch den Drucker unterstützten Filaments. Der exakte Durchmesser wird durch das Material und/oder das Profil überschrieben." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "X-Versatz Düse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Y-Versatz Düse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Kühllüfter-Nr." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "G-Code Extruder-Start" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "G-Code Extruder-Ende" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "Installieren" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Installiert" @@ -1428,69 +1491,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Verbindung zur Cura Paket-Datenbank konnte nicht hergestellt werden. Bitte überprüfen Sie Ihre Verbindung." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "Bewertungen" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plugins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materialien" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "Ihre Bewertung" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "Version" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "Zuletzt aktualisiert" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "Autor" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "Downloads" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Unbekannt" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "Anmeldung für Installation oder Update erforderlich" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "Materialspulen kaufen" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "Aktualisierung" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "Aktualisierung wird durchgeführt" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "Aktualisiert" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "Toolbox" +msgid "Marketplace" +msgstr "Marktplatz" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1517,52 +1593,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "Bestätigen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "Vor der Bewertung müssen Sie sich anmelden" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "Vor der Bewertung müssen Sie das Paket installierten" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "Cura muss neu gestartet werden, um die Änderungen der Pakete zu übernehmen." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Quit Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Community-Beiträge" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Community-Plugins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Generische Materialien" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "Installiert" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "Installiert nach Neustart" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "Anmeldung für Update erforderlich" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "Downgraden" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "Deinstallieren" @@ -1578,14 +1669,17 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "Dieses Plugin enthält eine Lizenz.\nSie müssen diese Lizenz akzeptieren, um das Plugin zu installieren.\nStimmen Sie den nachfolgenden Bedingungen zu?" +msgstr "" +"Dieses Plugin enthält eine Lizenz.\n" +"Sie müssen diese Lizenz akzeptieren, um das Plugin zu installieren.\n" +"Stimmen Sie den nachfolgenden Bedingungen zu?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Akzeptieren" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Ablehnen" @@ -1595,22 +1689,62 @@ msgctxt "@label" msgid "Featured" msgstr "Unterstützter" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Kompatibilität" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Gerät" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Druckbett" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Support" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Qualität" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "Technisches Datenblatt" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "Sicherheitsdatenblatt" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "Druckrichtlinien" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "Website" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "Pakete werden abgeholt..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "Website" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-Mail" @@ -1620,23 +1754,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "Einige Punkte bei diesem Druck könnten problematisch sein. Klicken Sie, um Tipps für die Anpassung zu erhalten." -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Änderungsprotokoll" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Schließen" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1712,423 +1829,504 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Die Firmware-Aktualisierung ist aufgrund von fehlender Firmware fehlgeschlagen." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "Benutzervereinbarung" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Drucker verwalten" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Vorhandene Verbindung" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Glas" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "Diese/r Drucker/Gruppe wurde bereits zu Cura hinzugefügt. Wählen Sie bitte eine/n andere/n Drucker/Gruppe." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Damit Sie die Warteschlange aus der Ferne verwalten können, müssen Sie die Druckfirmware aktualisieren." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "Die Webcam ist nicht verfügbar, weil Sie einen Cloud-Drucker überwachen." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "Lädt..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "Nicht verfügbar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "Nicht erreichbar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "Leerlauf" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "Unbenannt" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "Anonym" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "Erfordert Konfigurationsänderungen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "Details" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "Drucker nicht verfügbar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "Zuerst verfügbar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "In Warteschlange" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "Im Browser verwalten" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Die Warteschlange enthält keine Druckaufträge. Slicen Sie einen Auftrag und schicken Sie ihn ab, um ihn zur Warteschlange hinzuzufügen." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "Druckaufträge" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "Druckdauer insgesamt" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "Warten auf" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Anschluss an vernetzten Drucker" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n\nWählen Sie Ihren Drucker aus der folgenden Liste:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Um direkt auf Ihrem Drucker über das Netzwerk zu drucken, muss der Drucker über ein Netzwerkkabel oder per WLAN mit dem Netzwerk verbunden sein. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie G-Code-Dateien auf einen USB-Stick kopieren und diesen am Drucker anschließen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Hinzufügen" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Wählen Sie Ihren Drucker aus der folgenden Liste aus:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Bearbeiten" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Entfernen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Aktualisieren" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Wenn Ihr Drucker nicht aufgeführt ist, lesen Sie die Anleitung für Fehlerbehebung für Netzwerkdruck" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Typ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Firmware-Version" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Adresse" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Dieser Drucker ist nicht eingerichtet um eine Gruppe von Druckern anzusteuern." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Dieser Drucker steuert eine Gruppe von %1 Druckern an." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Der Drucker unter dieser Adresse hat nicht reagiert." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Verbinden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Ungültige IP-Adresse" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "Bitte eine gültige IP-Adresse eingeben." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Druckeradresse" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Geben Sie die IP-Adresse oder den Hostnamen Ihres Druckers auf dem Netzwerk ein." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "Geben Sie die IP-Adresse Ihres Druckers in das Netzwerk ein." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Drucken" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Drucken über Netzwerk" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "Druckerauswahl" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "Nicht verfügbar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "Nicht erreichbar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "Verfügbar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "Abgebrochen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Beendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "Vorbereitung" +msgid "Preparing..." +msgstr "Vorbereitung..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "Wird pausiert" +msgid "Aborting..." +msgstr "Wird abgebrochen..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "Wird fortgesetzt" +msgid "Pausing..." +msgstr "Wird pausiert..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "Pausiert" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "Wird fortgesetzt..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Handlung erforderlich" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 -msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "Warten auf: Drucker nicht verfügbar" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "Fertigstellung %1 auf %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "Warten auf: Ersten verfügbaren" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Drucken über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "Warten auf: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "Konfigurationsänderung" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "Der zugewiesene Drucker %1 erfordert die folgende(n) Konfigurationsänderung(en):" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "Der Drucker %1 wurde zugewiesen, allerdings enthält der Auftrag eine unbekannte Materialkonfiguration." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "Material %1 von %2 auf %3 wechseln." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "%3 als Material %1 laden (Dies kann nicht übergangen werden)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "Print Core %1 von %2 auf %3 wechseln." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "Druckplatte auf %1 wechseln (Dies kann nicht übergangen werden)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "Überschreiben" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "Das Starten eines Druckauftrags mit einer inkompatiblen Konfiguration kann Ihren 3D-Drucker beschädigen. Möchten Sie die Konfiguration wirklich überschreiben und %1 drucken?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "Konfiguration überschreiben und Druck starten" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "Glas" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "Aluminium" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "Warteschlange verwalten" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "In Warteschlange" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" msgstr "Drucken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "Drucker verwalten" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 +msgctxt "@label" +msgid "Printer selection" +msgstr "Druckerauswahl" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "Vorziehen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "Löschen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "Zurückkehren" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "Wird pausiert..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "Wird fortgesetzt..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "Pausieren" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "Wird abgebrochen..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "Abbrechen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "Soll dieser %1 wirklich an den Anfang der Warteschlange vorgezogen werden?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "Druckauftrag vorziehen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "Soll %1 wirklich gelöscht werden?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "Druckauftrag löschen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "Möchten Sie %1 wirklich abbrechen?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Drucken abbrechen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Mit einem Drucker verbinden" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "Konfigurationsänderungen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Konfiguration aktivieren" +msgid "Override" +msgstr "Überschreiben" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Die Druckerkonfiguration in Cura laden" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "Der zugewiesene Drucker %1 erfordert die folgende Konfigurationsänderung:" +msgstr[1] "Der zugewiesene Drucker %1 erfordert die folgenden Konfigurationsänderungen:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "Der Drucker %1 wurde zugewiesen, allerdings enthält der Auftrag eine unbekannte Materialkonfiguration." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "Material %1 von %2 auf %3 wechseln." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "%3 als Material %1 laden (Dies kann nicht übergangen werden)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "Print Core %1 von %2 auf %3 wechseln." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "Druckplatte auf %1 wechseln (Dies kann nicht übergangen werden)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "Überschreiben verwendet die definierten Einstellungen mit der vorhandenen Druckerkonfiguration. Dies kann zu einem fehlgeschlagenen Druck führen." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "Aluminium" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"Stellen Sie sicher, dass der Drucker verbunden ist:\n" +"– Prüfen Sie, ob der Drucker eingeschaltet ist.– Prüfen Sie, ob der Drucker mit dem Netzwerk verbunden ist.\n" +"– Prüfen Sie, ob Sie angemeldet sind, falls Sie über die Cloud verbundene Drucker suchen möchten." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "Verbinden Sie Ihren Drucker bitte mit dem Netzwerk." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "Benutzerhandbücher online anzeigen" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Farbschema" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materialfarbe" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Linientyp" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Vorschub" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Schichtdicke" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Kompatibilitätsmodus" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "Bewegungen anzeigen" +msgid "Travels" +msgstr "Bewegungen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "Helfer anzeigen" +msgid "Helpers" +msgstr "Helfer" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "Gehäuse anzeigen" +msgid "Shell" +msgstr "Gehäuse" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "Füllung anzeigen" +msgid "Infill" +msgstr "Füllung" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Nur obere Schichten anzeigen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "5 detaillierte Schichten oben anzeigen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Oben/Unten" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Innenwand" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "max." @@ -2143,40 +2341,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Skripts Nachbearbeitung" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Ein Skript hinzufügen" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Einstellungen" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Aktive Skripts Nachbearbeitung ändern" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "Weitere Informationen zur anonymen Datenerfassung" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura sendet anonyme Daten an Ultimaker, um die Druckqualität und Benutzererfahrung zu steigern. Nachfolgend ist ein Beispiel aller Daten, die gesendet werden." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura erfasst anonyme Daten, um die Druckqualität und Benutzererfahrung zu steigern. Nachfolgend ist ein Beispiel aller Daten, die geteilt werden:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "Ich möchte diese Daten nicht senden" +msgid "I don't want to send anonymous data" +msgstr "Ich möchte keine anonymen Daten senden" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Ich erlaube das Senden dieser Daten an Ultimaker, um Cura zu verbessern" +msgid "Allow sending anonymous data" +msgstr "Senden von anonymen Daten erlauben" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2225,19 +2423,19 @@ msgstr "Tiefe (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "Standardmäßig repräsentieren weiße Pixel hohe Punkte im Netz und schwarze Pixel repräsentieren niedrige Punkte im Netz. Ändern Sie diese Option um das Verhalten so umzukehren, dass schwarze Pixel hohe Punkte im Netz darstellen und weiße Pixel niedrige Punkte im Netz." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Heller ist höher" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "Für Lithophanien sollten dunkle Pixel dickeren Positionen entsprechen, um mehr einfallendes Licht zu blockieren. Für Höhenkarten stellen hellere Pixel höheres Terrain dar, sodass hellere Pixel dickeren Positionen im generierten 3D-Modell entsprechen sollten." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Dunkler ist höher" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Heller ist höher" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2248,81 +2446,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Glättung" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Mesh-Typ" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Normales Modell" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Als Stützstruktur drucken" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Keine Überlappung mit anderen Modellen unterstützen" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Einstellungen für Überlappung mit anderen Modellen bearbeiten" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Einstellungen für Füllung von anderen Modellen bearbeiten" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Einstellungen wählen" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Einstellungen für die benutzerdefinierte Anpassung dieses Modells wählen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtern..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Alle anzeigen" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Mesh-Typ" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Normales Modell" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Als Stützstruktur drucken" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Einstellungen für Überlappungen ändern" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Überlappungen nicht unterstützen" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Nur Füllungen" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Einstellungen wählen" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Projekt öffnen" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Vorhandenes aktualisieren" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Neu erstellen" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Zusammenfassung – Cura-Projekt" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Druckereinstellungen" @@ -2338,20 +2535,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Aktualisierung" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Neu erstellen" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Typ" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "Druckergruppe" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Profileinstellungen" @@ -2362,226 +2564,222 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Wie soll der Konflikt im Profil gelöst werden?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Name" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Nicht im Profil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 überschreiben" msgstr[1] "%1 überschreibt" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Ableitung von" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 überschreiben" msgstr[1] "%1, %2 überschreibt" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Materialeinstellungen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Wie soll der Konflikt im Material gelöst werden?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Sichtbarkeit einstellen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modus" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Sichtbare Einstellungen:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 von %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Das Laden eines Projekts entfernt alle Modelle von der Druckplatte." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Öffnen" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Drucker-Upgrades wählen" +msgid "My Backups" +msgstr "Meine Backups" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Wählen Sie bitte alle durchgeführten Upgrades für diesen Ultimaker 2." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "Sie verfügen derzeit über keine Backups. Verwenden Sie die Schaltfläche ‚Jetzt Backup erstellen‘, um ein Backup zu erstellen." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson-Block" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "In der Vorschau-Phase sind Sie auf 5 sichtbare Backups beschränkt. Ein Backup entfernen, um ältere anzusehen." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Ihre Cura-Einstellungen sichern und synchronisieren." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "Anmelden" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Cura-Backups" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Cura-Version" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "Maschinen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "Materialien" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "Profile" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "Plugins" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "Wiederherstellen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "Backup löschen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "Soll dieses Backup wirklich gelöscht werden? Der Vorgang kann nicht rückgängig gemacht werden." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "Backup wiederherstellen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "Cura muss neu gestartet werden, um Ihre Datensicherung wiederherzustellen. Möchten Sie Cura jetzt schließen?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "Möchten Sie mehr?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "Jetzt Backup durchführen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "Automatisches Backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "An jedem Tag, an dem Cura gestartet wird, ein automatisches Backup erstellen." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Nivellierung der Druckplatte" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Um sicherzustellen, dass Ihre Drucke hervorragend werden, können Sie nun Ihre Druckplatte justieren. Wenn Sie auf „Gehe zur nächsten Position“ klicken, bewegt sich die Düse zu den verschiedenen Positionen, die justiert werden können." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Legen Sie für jede Position ein Blatt Papier unter die Düse und stellen Sie die Höhe der Druckplatte ein. Die Höhe der Druckplatte ist korrekt, wenn das Papier von der Spitze der Düse leicht berührt wird." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Nivellierung der Druckplatte starten" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Gehe zur nächsten Position" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Wählen Sie bitte alle Upgrades für dieses Ultimaker-Original" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "Beheizte Druckplatte (offizielles Kit oder Eigenbau)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Drucker prüfen" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "Sie sollten einige Sanity Checks bei Ihrem Ultimaker durchführen. Sie können diesen Schritt überspringen, wenn Sie wissen, dass Ihr Gerät funktionsfähig ist" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Überprüfung des Druckers starten" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Verbindung: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Verbunden" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Nicht verbunden" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Min. Endstopp X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Funktionsfähig" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Nicht überprüft" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Min. Endstopp Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Min. Endstopp Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Temperaturprüfung der Düse: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Aufheizen stoppen" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Aufheizen starten" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Temperaturprüfung der Druckplatte:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Geprüft" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Alles ist in Ordnung! Der Check-up ist abgeschlossen." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2593,7 +2791,6 @@ msgid "Printer does not accept commands" msgstr "Drucker nimmt keine Befehle an" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In Wartung. Den Drucker überprüfen" @@ -2604,19 +2801,16 @@ msgid "Lost connection with the printer" msgstr "Verbindung zum Drucker wurde unterbrochen" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Es wird gedruckt..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Pausiert" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Vorbereitung läuft..." @@ -2636,233 +2830,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Soll das Drucken wirklich abgebrochen werden?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Änderungen verwerfen oder übernehmen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "Sie haben einige Profileinstellungen angepasst.\nMöchten Sie diese Einstellungen übernehmen oder verwerfen?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Profileinstellungen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Standard" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Angepasst" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Stets nachfragen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Verwerfen und zukünftig nicht mehr nachfragen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Übernehmen und zukünftig nicht mehr nachfragen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Verwerfen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Übernehmen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Neues Profil erstellen" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informationen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Änderung Durchmesser bestätigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Der neue Filament-Durchmesser wurde auf %1 mm eingestellt, was nicht kompatibel mit dem aktuellen Extruder ist. Möchten Sie fortfahren?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Namen anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marke" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Materialtyp" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Farbe" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Eigenschaften" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Dichte" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Durchmesser" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Filamentkosten" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Filamentgewicht" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Filamentlänge" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Kosten pro Meter" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Dieses Material ist mit %1 verknüpft und teilt sich damit einige seiner Eigenschaften." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Material trennen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Beschreibung" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Haftungsinformationen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Druckeinstellungen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Aktivieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Erstellen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Import" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Export" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Drucker" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Entfernen bestätigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Möchten Sie %1 wirklich entfernen? Dies kann nicht rückgängig gemacht werden!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Material importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Material konnte nicht importiert werden %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Material wurde erfolgreich importiert %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Material exportieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Exportieren des Materials nach %1: %2 schlug fehl" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material erfolgreich nach %1 exportiert" @@ -2872,817 +3009,784 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Sichtbarkeit einstellen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Alle prüfen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Berechnet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Einstellung" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Aktuell" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Einheit" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Allgemein" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Schnittstelle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Sprache:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Währung:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Thema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Die Anwendung muss neu gestartet werden, um die Änderungen zu übernehmen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Bei Änderung der Einstellungen automatisch schneiden." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatisch schneiden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Viewport-Verhalten" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Nicht gestützte Bereiche des Modells in rot hervorheben. Ohne Support werden diese Bereiche nicht korrekt gedruckt." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Überhang anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Bewegt die Kamera, bis sich das Modell im Mittelpunkt der Ansicht befindet, wenn ein Modell ausgewählt wurde" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Zentrieren Sie die Kamera, wenn das Element ausgewählt wurde" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Soll das standardmäßige Zoom-Verhalten von Cura umgekehrt werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Kehren Sie die Richtung des Kamera-Zooms um." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Soll das Zoomen in Richtung der Maus erfolgen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Das Zoomen in Richtung der Maus wird in der orthografischen Perspektive nicht unterstützt." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "In Mausrichtung zoomen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Sollen Modelle auf der Plattform so verschoben werden, dass sie sich nicht länger überschneiden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Stellen Sie sicher, dass die Modelle getrennt gehalten werden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Sollen Modelle auf der Plattform so nach unten verschoben werden, dass sie die Druckplatte berühren?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Setzt Modelle automatisch auf der Druckplatte ab" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Warnmeldung im G-Code-Reader anzeigen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Warnmeldung in G-Code-Reader" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Soll die Schicht in den Kompatibilitätsmodus gezwungen werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Schichtenansicht Kompatibilitätsmodus erzwingen (Neustart erforderlich)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Sollte Cura sich an der Stelle öffnen, an der das Programm geschlossen wurde?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Fensterposition beim Start wiederherstellen" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Welches Kamera-Rendering sollte verwendet werden?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Kamera-Rendering:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Ansicht" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Orthogonal" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Dateien öffnen und speichern" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Sollen Modelle an das Erstellungsvolumen angepasst werden, wenn sie zu groß sind?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Große Modelle anpassen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Ein Modell kann extrem klein erscheinen, wenn seine Maßeinheit z. B. in Metern anstelle von Millimetern angegeben ist. Sollen diese Modelle hoch skaliert werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Extrem kleine Modelle skalieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Sollten Modelle gewählt werden, nachdem sie geladen wurden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Modelle wählen, nachdem sie geladen wurden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Soll ein Präfix anhand des Druckernamens automatisch zum Namen des Druckauftrags hinzugefügt werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Geräte-Präfix zu Auftragsnamen hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Soll beim Speichern einer Projektdatei eine Zusammenfassung angezeigt werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Dialog Zusammenfassung beim Speichern eines Projekts anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Standardverhalten beim Öffnen einer Projektdatei" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Standardverhalten beim Öffnen einer Projektdatei: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Stets nachfragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Immer als Projekt öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Modelle immer importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Wenn Sie Änderungen für ein Profil vorgenommen haben und zu einem anderen Profil gewechselt sind, wird ein Dialog angezeigt, der hinterfragt, ob Sie Ihre Änderungen beibehalten möchten oder nicht; optional können Sie ein Standardverhalten wählen, sodass dieser Dialog nicht erneut angezeigt wird." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Standardverhalten für geänderte Einstellungswerte beim Wechsel zu einem anderen Profil: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Stets nachfragen" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Geänderte Einstellungen immer verwerfen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Geänderte Einstellungen immer auf neues Profil übertragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privatsphäre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Soll Cura bei Programmstart nach Updates suchen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Bei Start nach Updates suchen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Sollen anonyme Daten über Ihren Druck an Ultimaker gesendet werden? Beachten Sie, dass keine Modelle, IP-Adressen oder andere personenbezogene Daten gesendet oder gespeichert werden." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonyme) Druckinformationen senden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Mehr Informationen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "Experimentell" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Mehrfach-Druckplattenfunktion verwenden" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "Mehrfach-Druckplattenfunktion verwenden (Neustart erforderlich)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Drucker" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Umbenennen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Druckertyp:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Verbindung:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "Der Drucker ist nicht verbunden." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "Status:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "Warten auf einen Druckauftrag" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "Warten auf Räumen des Druckbeets" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Drucken wird abgebrochen..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Erstellen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Profil erstellen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "Geben Sie bitte einen Namen für dieses Profil an." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Profil duplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Profil umbenennen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Profil importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Profil exportieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Drucker: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Geschützte Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Benutzerdefinierte Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Profil mit aktuellen Einstellungen/Überschreibungen aktualisieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Aktuelle Änderungen verwerfen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Dieses Profil verwendet die vom Drucker festgelegten Standardeinstellungen, deshalb sind in der folgenden Liste keine Einstellungen/Überschreibungen enthalten." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Ihre aktuellen Einstellungen stimmen mit dem gewählten Profil überein." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Globale Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Drucker hinzufügen" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Druckername:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Drucker hinzufügen" +msgid "Marketplace" +msgstr "Marktplatz" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&Datei" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&Bearbeiten" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Ansicht" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "&Einstellungen" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "Er&weiterungen" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "E&instellungen" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "&Hilfe" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Neues Projekt" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Möchten Sie wirklich ein neues Projekt beginnen? Damit werden das Druckbett und alle nicht gespeicherten Einstellungen gelöscht." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "Unbenannt" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "Über Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "Version: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "Komplettlösung für den 3D-Druck mit geschmolzenem Filament." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "Cura wurde von Ultimaker B.V. in Zusammenarbeit mit der Community entwickelt.\nCura verwendet mit Stolz die folgenden Open Source-Projekte:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Grafische Benutzerschnittstelle" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Anwendungsrahmenwerk" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "G-Code-Generator" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Bibliothek Interprozess-Kommunikation" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Programmiersprache" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUI-Rahmenwerk" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "GUI-Rahmenwerk Einbindungen" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "C/C++ Einbindungsbibliothek" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Format Datenaustausch" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Support-Bibliothek für wissenschaftliche Berechnung" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Support-Bibliothek für schnelleres Rechnen" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Support-Bibliothek für die Handhabung von STL-Dateien" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "Support-Bibliothek für die Handhabung von ebenen Objekten" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "Support-Bibliothek für die Handhabung von dreieckigen Netzen" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "Support-Bibliothek für die Analyse von komplexen Netzwerken" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Support-Bibliothek für die Handhabung von 3MF-Dateien" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "Support-Bibliothek für Datei-Metadaten und Streaming" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Bibliothek für serielle Kommunikation" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "Bibliothek für ZeroConf-Erkennung" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Bibliothek für Polygon-Beschneidung" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Bibliothek für Python HTTP" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Schriftart" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "SVG-Symbole" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Distributionsunabhängiges Format für Linux-Anwendungen" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Profil:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Einige Einstellungs-/Überschreibungswerte unterscheiden sich von den im Profil gespeicherten Werten.\n\nKlicken Sie, um den Profilmanager zu öffnen." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Suchen..." +msgid "Search settings" +msgstr "Einstellungen durchsuchen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Werte für alle Extruder kopieren" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Alle geänderten Werte für alle Extruder kopieren" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Diese Einstellung weiterhin anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Sichtbarkeit einstellen wird konfiguriert..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "Alle verkleinern" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "Alle vergrößern" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Einige ausgeblendete Einstellungen verwenden Werte, die von ihren normalen, berechneten Werten abweichen.\n\nKlicken Sie, um diese Einstellungen sichtbar zu machen." +msgstr "" +"Einige ausgeblendete Einstellungen verwenden Werte, die von ihren normalen, berechneten Werten abweichen.\n" +"\n" +"Klicken Sie, um diese Einstellungen sichtbar zu machen." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "Diese Einstellung wird nicht verwendet, weil alle hierdurch beeinflussten Einstellungen aufgehoben werden." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Hat Einfluss auf" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Wird beeinflusst von" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Diese Einstellung wird stets zwischen allen Extrudern geteilt. Eine Änderung ändert den Wert für alle Extruder." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Der Wert wird von Pro-Extruder-Werten gelöst " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Diese Einstellung hat einen vom Profil abweichenden Wert.\n\nKlicken Sie, um den Wert des Profils wiederherzustellen." +msgstr "" +"Diese Einstellung hat einen vom Profil abweichenden Wert.\n" +"\n" +"Klicken Sie, um den Wert des Profils wiederherzustellen." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Diese Einstellung wird normalerweise berechnet; aktuell ist jedoch ein Absolutwert eingestellt.\n\nKlicken Sie, um den berechneten Wert wiederherzustellen." +msgstr "" +"Diese Einstellung wird normalerweise berechnet; aktuell ist jedoch ein Absolutwert eingestellt.\n" +"\n" +"Klicken Sie, um den berechneten Wert wiederherzustellen." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "Empfohlen" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "Benutzerdefiniert" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "Stufenweise Füllung" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "Die graduelle Füllung steigert die Menge der Füllung nach oben hin schrittweise." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "Stützstruktur" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Damit werden Strukturen zur Unterstützung von Modellteilen mit Überhängen generiert. Ohne diese Strukturen würden solche Teile während des Druckvorgangs zusammenfallen." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "Haftung" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Drucken eines Brim- oder Raft-Elements aktivieren. Es wird ein flacher Bereich rund um oder unter Ihrem Objekt hinzugefügt, das im Anschluss leicht abgeschnitten werden kann." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Sie haben einige Profileinstellungen geändert. Wenn Sie diese ändern möchten, wechseln Sie in den Modus „Benutzerdefiniert“." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "Ein" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "Aus" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimentell" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "Profil" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Einige Einstellungs-/Überschreibungswerte unterscheiden sich von den im Profil gespeicherten Werten.\n" +"\n" +"Klicken Sie, um den Profilmanager zu öffnen." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Benutzerdefinierte Profile" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "Druckeinrichtung ist deaktiviert. G-Code-Datei kann nicht geändert werden." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "Druckersteuerung" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "Tippposition" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "Tippdistanz" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "G-Code senden" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "Einen benutzerdefinierten G-Code-Befehl an den verbundenen Drucker senden. „Eingabe“ drücken, um den Befehl zu senden." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extruder" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Die Zieltemperatur des Hotend. Das Hotend wird auf diese Temperatur aufgeheizt oder abgekühlt. Wenn der Wert 0 beträgt, wird die Hotend-Heizung ausgeschaltet." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Die aktuelle Temperatur dieses Hotends." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Die Temperatur, auf die das Hotend vorgeheizt wird." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Vorheizen" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Heizen Sie das Hotend vor Druckbeginn auf. Sie können Ihren Druck während des Aufheizens weiter anpassen und müssen nicht warten, bis das Hotend aufgeheizt ist, wenn Sie druckbereit sind." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Die Farbe des Materials in diesem Extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Das Material in diesem Extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Die in diesem Extruder eingesetzte Düse." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "Der Drucker ist nicht verbunden." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Druckbett" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Die Zieltemperatur des heizbaren Betts. Das Bett wird auf diese Temperatur aufgeheizt oder abgekühlt. Wenn der Wert 0 beträgt, wird die Bettheizung ausgeschaltet." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Die aktuelle Temperatur des beheizten Betts." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Die Temperatur, auf die das Bett vorgeheizt wird." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Heizen Sie das Bett vor Druckbeginn auf. Sie können Ihren Druck während des Aufheizens weiter anpassen und müssen nicht warten, bis das Bett aufgeheizt ist, wenn Sie druckbereit sind." @@ -3692,12 +3796,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoriten" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Generisch" @@ -3712,17 +3816,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "Lokale Drucker" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&Ansicht" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "Dr&ucker" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&Material" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Als aktiven Extruder festlegen" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "Extruder aktivieren" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "Extruder deaktivieren" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Kameraposition" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Kameraansicht" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Ansicht" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Orthogonal" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "&Druckplatte" @@ -3742,6 +3881,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Sichtbarkeit einstellen verwalten..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "&Speichern..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&Exportieren..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "Auswahl exportieren..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3761,654 +3915,509 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Anzahl Kopien" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "Verfügbare Konfigurationen" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "Konfigurationen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "Extruder" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "Konfiguration wählen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "Ja" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "Konfigurationen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "Nein" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "Verfügbare Konfigurationen werden von diesem Drucker geladen..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "Die Konfigurationen sind nicht verfügbar, da der Drucker getrennt ist." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "Benutzerdefiniert" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "Drucker" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "Aktiviert" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "Für diese Materialkombination Kleber für eine bessere Haftung verwenden." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "Diese Konfigurationen sind nicht verfügbar, weil %1 nicht erkannt wird. Besuchen Sie bitte %2 für das Herunterladen des korrekten Materialprofils." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "Marktplatz" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "&Zuletzt geöffnet" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Druckeinrichtung" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "Druckeinrichtung deaktiviert\nG-Code-Dateien können nicht geändert werden" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00 Stunden 00 Minuten" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "Zeitangabe" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "Kostenangabe" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1 m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1 g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "Insgesamt:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Empfohlene Druckeinrichtung

    Drucken mit den empfohlenen Einstellungen für den gewählten Drucker, das gewählte Material und die gewählte Qualität." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Benutzerdefinierte Druckeinrichtung

    Druck mit Feineinstellung über jedem einzelnen Bereich des Schneidvorgangs." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Aktiver Druck" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Name des Auftrags" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Druckzeit" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Geschätzte verbleibende Zeit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "Typ anzeigen" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Objektliste" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "Hallo %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Ultimaker‑Konto" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "Abmelden" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "Anmelden" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "Der 3D-Druckablauf der nächsten Generation" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- Aufträge an Ultimaker-Drucker außerhalb Ihres lokalen Netzwerks senden\n" +"- Ihre Ultimaker Cura-Einstellungen für die Verwendung andernorts an die Cloud senden\n" +"- Exklusiven Zugang zu Druckprofilen von führenden Marken erhalten" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "Konto erstellen" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "Keine Zeitschätzung verfügbar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "Keine Kostenschätzung verfügbar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "Vorschau" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "Das Slicing läuft..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "Slicing nicht möglich" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "Verarbeitung läuft" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "Slice" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "Slicing-Vorgang starten" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "Abbrechen" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "Zeitschätzung" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "Materialschätzung" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "Verbundene Drucker" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "Voreingestellte Drucker" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "Drucker hinzufügen" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "Drucker verwalten" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "Online-Fehlerbehebung anzeigen" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Umschalten auf Vollbild-Modus" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Vollbildmodus beenden" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Rückgängig machen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Wiederholen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Beenden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "3D-Ansicht" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "Vorderansicht" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "Draufsicht" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "Ansicht von links" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "Ansicht von rechts" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura konfigurieren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Drucker hinzufügen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Dr&ucker verwalten..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Materialien werden verwaltet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Profil mit aktuellen Einstellungen/Überschreibungen aktualisieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Aktuelle Änderungen verwerfen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "P&rofil von aktuellen Einstellungen/Überschreibungen erstellen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profile verwalten..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Online-&Dokumentation anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "&Fehler melden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "Neuheiten" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "Über..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "Ausgewähltes Modell löschen" msgstr[1] "Ausgewählte Modelle löschen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Ausgewähltes Modell zentrieren" msgstr[1] "Ausgewählte Modelle zentrieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Ausgewähltes Modell multiplizieren" msgstr[1] "Ausgewählte Modelle multiplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Modell löschen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Modell auf Druckplatte ze&ntrieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Modelle &gruppieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Gruppierung für Modelle aufheben" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Modelle &zusammenführen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Modell &multiplizieren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Alle Modelle wählen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Druckplatte reinigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Alle Modelle neu laden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "Alle Modelle an allen Druckplatten anordnen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Alle Modelle anordnen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Anordnung auswählen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Alle Modellpositionen zurücksetzen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Alle Modelltransformationen zurücksetzen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Datei(en) öffnen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Neues Projekt..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Engine-&Protokoll anzeigen..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Konfigurationsordner anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "Pakete durchsuchen..." +msgid "&Marketplace" +msgstr "&Marktplatz" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "Seitenleiste vergrößern/verkleinern" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Bitte laden Sie ein 3D-Modell" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Bereit zum Slicen (Schneiden)" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Das Slicing läuft..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Bereit zum %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Slicing nicht möglich" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Slicing ist nicht verfügbar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "Aktuellen Druckauftrag slicen" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "Slicing-Vorgang abbrechen" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Vorbereiten" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Abbrechen" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Wählen Sie das aktive Ausgabegerät" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Datei(en) öffnen" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Es wurden eine oder mehrere Projektdatei(en) innerhalb der von Ihnen gewählten Dateien gefunden. Sie können nur eine Projektdatei auf einmal öffnen. Es wird empfohlen, nur Modelle aus diesen Dateien zu importieren. Möchten Sie fortfahren?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Alle als Modelle importieren" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&Datei" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "&Speichern..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&Exportieren..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "Auswahl exportieren..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&Bearbeiten" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "&Ansicht" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "&Konfiguration" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "Dr&ucker" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Material" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Als aktiven Extruder festlegen" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "Extruder aktivieren" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "Extruder deaktivieren" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Druckplatte" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profil" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "Er&weiterungen" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "&Toolbox" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "E&instellungen" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "&Hilfe" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Dieses Paket wird nach einem Neustart installiert." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Datei öffnen" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Neues Projekt" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Möchten Sie wirklich ein neues Projekt beginnen? Damit werden das Druckbett und alle nicht gespeicherten Einstellungen gelöscht." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura wird geschlossen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Möchten Sie Cura wirklich beenden?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Datei(en) öffnen" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Paket installieren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Datei(en) öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Es wurden eine oder mehrere G-Code-Datei(en) innerhalb der von Ihnen gewählten Dateien gefunden. Sie können nur eine G-Code-Datei auf einmal öffnen. Wenn Sie eine G-Code-Datei öffnen möchten wählen Sie bitte nur eine Datei." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Projekt speichern" +msgid "Add Printer" +msgstr "Drucker hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Druckplatte" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Extruder %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & Material" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Projektzusammenfassung beim Speichern nicht erneut anzeigen" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Speichern" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Schichtdicke" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "Dieses Qualitätsprofil ist für Ihr aktuelles Material und Ihre derzeitige Düsenkonfiguration nicht verfügbar. Bitte ändern Sie diese, um dieses Qualitätsprofil zu aktivieren" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Ein benutzerdefiniertes Profil ist derzeit aktiv. Wählen Sie ein voreingestelltes Qualitätsprofil aus der Registerkarte „Benutzerdefiniert“, um den Schieberegler für Qualität zu aktivieren" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Druckgeschwindigkeit" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Langsamer" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Schneller" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "Sie haben einige Profileinstellungen geändert. Wenn Sie diese ändern möchten, wechseln Sie in den Modus „Benutzerdefiniert“." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Füllung" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Die graduelle Füllung steigert die Menge der Füllung nach oben hin schrittweise." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Graduell aktivieren" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Stützstruktur generieren" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Damit werden Strukturen zur Unterstützung von Modellteilen mit Überhängen generiert. Ohne diese Strukturen würden solche Teile während des Druckvorgangs zusammenfallen." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Wählen Sie, welcher Extruder für die Unterstützung verwendet wird. Dient zum Konstruieren von Stützstrukturen unter dem Modell, damit dieses nicht absinkt oder frei schwebend gedruckt wird." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Druckplattenhaftung" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Drucken eines Brim- oder Raft-Elements aktivieren. Es wird ein flacher Bereich rund um oder unter Ihrem Objekt hinzugefügt, das im Anschluss leicht abgeschnitten werden kann." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "Sie benötigen Hilfe für Ihre Drucke?
    Lesen Sie die Ultimaker Anleitungen für Fehlerbehebung>" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "Neuheiten" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4417,75 +4426,503 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "Ausgewähltes Modell drucken mit %1" msgstr[1] "Ausgewählte Modelle drucken mit %1" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Änderungen verwerfen oder übernehmen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"Sie haben einige Profileinstellungen angepasst.\n" +"Möchten Sie diese Einstellungen übernehmen oder verwerfen?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Profileinstellungen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Standard" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Angepasst" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Verwerfen und zukünftig nicht mehr nachfragen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Übernehmen und zukünftig nicht mehr nachfragen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Verwerfen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Übernehmen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Neues Profil erstellen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Über Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "Version: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "Komplettlösung für den 3D-Druck mit geschmolzenem Filament." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura wurde von Ultimaker B.V. in Zusammenarbeit mit der Community entwickelt.\n" +"Cura verwendet mit Stolz die folgenden Open Source-Projekte:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Grafische Benutzerschnittstelle" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Anwendungsrahmenwerk" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "G-Code-Generator" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Bibliothek Interprozess-Kommunikation" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Programmiersprache" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUI-Rahmenwerk" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "GUI-Rahmenwerk Einbindungen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C/C++ Einbindungsbibliothek" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Format Datenaustausch" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Support-Bibliothek für wissenschaftliche Berechnung" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Support-Bibliothek für schnelleres Rechnen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Support-Bibliothek für die Handhabung von STL-Dateien" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "Support-Bibliothek für die Handhabung von ebenen Objekten" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "Support-Bibliothek für die Handhabung von dreieckigen Netzen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "Support-Bibliothek für die Analyse von komplexen Netzwerken" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Support-Bibliothek für die Handhabung von 3MF-Dateien" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "Support-Bibliothek für Datei-Metadaten und Streaming" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Bibliothek für serielle Kommunikation" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "Bibliothek für ZeroConf-Erkennung" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Bibliothek für Polygon-Beschneidung" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Bibliothek für Python HTTP" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Schriftart" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVG-Symbole" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Distributionsunabhängiges Format für Linux-Anwendungen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Es wurden eine oder mehrere Projektdatei(en) innerhalb der von Ihnen gewählten Dateien gefunden. Sie können nur eine Projektdatei auf einmal öffnen. Es wird empfohlen, nur Modelle aus diesen Dateien zu importieren. Möchten Sie fortfahren?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Alle als Modelle importieren" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Projekt speichern" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Extruder %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & Material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Projektzusammenfassung beim Speichern nicht erneut anzeigen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Speichern" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Projektdatei öffnen" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Dies ist eine Cura-Projektdatei. Möchten Sie diese als Projekt öffnen oder die Modelle hieraus importieren?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Meine Auswahl merken" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Als Projekt öffnen" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Modelle importieren" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Engine-Protokoll" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "Druckertyp" +msgid "Empty" +msgstr "Leer" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Material" +msgid "Add a printer" +msgstr "Einen Drucker hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "Für diese Materialkombination Kleber verwenden" +msgid "Add a networked printer" +msgstr "Einen vernetzten Drucker hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "Kompatibilität prüfen" +msgid "Add a non-networked printer" +msgstr "Einen unvernetzten Drucker hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Klicken Sie, um die Materialkompatibilität auf Ultimaker.com zu prüfen." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "Drucker nach IP-Adresse hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Nur aktuelle Druckplatte anzeigen" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Bitte geben Sie die IP-Adresse Ihres Druckers ein." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "An allen Druckplatten ausrichten" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "An aktueller Druckplatte ausrichten" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "Verbindung mit Drucker nicht möglich." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "Der Drucker unter dieser Adresse hat noch nicht reagiert." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "Dieser Drucker kann nicht hinzugefügt werden, weil es sich um einen unbekannten Drucker handelt oder er nicht im Host einer Gruppe enthalten ist." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "Zurück" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "Verbinden" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "Weiter" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "Benutzervereinbarung" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "Stimme zu" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "Ablehnen und schließen" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Helfen Sie uns, Ultimaker Cura zu verbessern" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura erfasst anonyme Daten, um die Druckqualität und Benutzererfahrung zu steigern. Dazu gehören:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "Gerätetypen" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "Materialverbrauch" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "Anzahl der Slices" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "Druckeinstellungen" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Die von Ultimaker Cura erfassten Daten enthalten keine personenbezogenen Daten." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "Mehr Informationen" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Neuheiten bei Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "Kein Drucker in Ihrem Netzwerk gefunden." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "Aktualisieren" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "Drucker nach IP hinzufügen" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "Störungen beheben" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "Druckername" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "Weisen Sie Ihrem Drucker bitte einen Namen zu" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "Der 3D-Druckablauf der nächsten Generation" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- Aufträge an Ultimaker-Drucker außerhalb Ihres lokalen Netzwerks senden" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Ihre Ultimaker Cura-Einstellungen für die Verwendung andernorts an die Cloud senden" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- Exklusiven Zugang zu Druckprofilen von führenden Marken erhalten" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "Beenden" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "Ein Konto erstellen" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Willkommen bei Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"Befolgen Sie bitte diese Schritte für das Einrichten von\n" +"Ultimaker Cura. Dies dauert nur wenige Sekunden." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "Erste Schritte" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3D-Ansicht" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Vorderansicht" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Draufsicht" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Ansicht von links" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Ansicht von rechts" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4547,26 +4984,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Modell-Prüfer" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Die Inhalte aller Einstellungen in eine HTML-Datei ausgeben." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Gott-Modus" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Zeigt die Änderungen seit der letzten geprüften Version an." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Änderungsprotokoll" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4577,15 +4994,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Firmware-Aktualisierungsfunktion" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Erstellt eine geglättete Qualität, verändert das Profil." +msgid "Provides support for reading AMF files." +msgstr "Ermöglicht das Lesen von AMF-Dateien." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Profilglättfunktion" +msgid "AMF Reader" +msgstr "AMF-Reader" #: USBPrinting/plugin.json msgctxt "description" @@ -4597,26 +5014,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB-Drucken" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "Den Benutzer einmalig fragen, ob er unsere Lizenz akzeptiert." - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "UserAgreement" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Ermöglicht das Speichern des resultierenden Slices als X3G-Datei, um Drucker zu unterstützen, die dieses Format lesen (Malyan, Makerbot und andere Sailfish-basierte Drucker)." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3G-Writer" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4659,13 +5056,13 @@ msgstr "Ausgabegerät-Plugin für Wechseldatenträger" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Verwaltet Netzwerkverbindungen zu Ultimaker 3-Druckern." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Verwaltet Netzwerkverbindungen zu Ultimaker-Netzwerkdruckern." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3-Netzwerkverbindung" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker-Netzwerkverbindung" #: MonitorStage/plugin.json msgctxt "description" @@ -4727,6 +5124,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Stützstruktur-Radierer" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Bietet Unterstützung für das Lesen von Ultimaker Format Packages." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "UFP-Reader" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4787,6 +5194,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Upgrade von Version 3.3 auf 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Aktualisiert Konfigurationen von Cura 4.3 auf Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Upgrade von Version 4.3 auf 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4807,6 +5224,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Upgrade von Version 2.7 auf 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Aktualisiert Konfigurationen von Cura 3.5 auf Cura 4.0." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "Upgrade von Version 3.5 auf 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4817,6 +5244,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "Upgrade von Version 3.4 auf 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Aktualisiert Konfigurationen von Cura 4.0 auf Cura 4.1." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "Upgrade von Version 4.0 auf 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4827,6 +5264,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Upgrade von Version 3.0 auf 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Aktualisiert Konfigurationen von Cura 4.1 auf Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Upgrade von Version 4.1 auf 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4857,6 +5304,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Upgrade von Version 2.2 auf 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Aktualisiert Konfigurationen von Cura 4.2 auf Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Upgrade von Version 4.2 auf 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4867,6 +5324,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Bild-Reader" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Unterstützt das Lesen von Modelldateien." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh Reader" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4917,6 +5384,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "G-Code-Reader" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "Sicherung und Wiederherstellen Ihrer Konfiguration." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Cura-Backups" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4937,6 +5414,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF-Writer" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Bietet eine Vorschaustufe in Cura." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "Vorschaustufe" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4957,9 +5444,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-Profil-Reader" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "Generieren Sie vor dem Speichern bitte einen G-Code." +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Einstellungen Glätten aktiv" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Das Profil wurde geglättet und aktiviert." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Schreibt X3g in Dateien" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g-Datei" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G-Datei" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Öffnen Sie das komprimierte Dreiecksnetz" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -4969,6 +5476,1032 @@ msgstr "Cura-Profil-Reader" #~ msgid "Profile Assistant" #~ msgstr "Profilassistent" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Erneut versuchen" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print Core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Keine Überlappung mit anderen Modellen unterstützen" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Einstellungen für Überlappung mit anderen Modellen bearbeiten" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Einstellungen für Füllung von anderen Modellen bearbeiten" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Vorhandenes aktualisieren" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Nicht unterstützt" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Zurück" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Tipp" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Druckexperiment" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Checkliste" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Wählen Sie bitte alle durchgeführten Upgrades für diesen Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson-Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Kamera-Rendering: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Mehrfach-Druckplattenfunktion verwenden" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Mehrfach-Druckplattenfunktion verwenden (Neustart erforderlich)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Standardprofile" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "Einstellungen durchsuchen" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Schichtdicke" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Dieses Qualitätsprofil ist für Ihr aktuelles Material und Ihre derzeitige Düsenkonfiguration nicht verfügbar. Bitte ändern Sie diese, um das Qualitätsprofil zu aktivieren." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Ein benutzerdefiniertes Profil ist derzeit aktiv. Wählen Sie ein voreingestelltes Qualitätsprofil aus der Registerkarte „Benutzerdefiniert“, um den Schieberegler für Qualität zu aktivieren" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Druckplatte" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Druckplatte" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Die Inhalte aller Einstellungen in eine HTML-Datei ausgeben." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Gott-Modus" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Erstellt eine geglättete Qualität, verändert das Profil." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Profilglättfunktion" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Ermöglichen Sie Materialherstellern die Erstellung neuer Material- und Qualitätsprofile, indem Sie eine Drop-In-Benutzerschnittstelle verwenden." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Druckprofil-Assistent" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Über Netzwerk verbunden." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Über Netzwerk verbunden. Geben Sie die Zugriffsanforderung für den Drucker frei." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Über Netzwerk verbunden. Kein Zugriff auf die Druckerverwaltung." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Zugriff auf Drucker erforderlich. Bestätigen Sie den Zugriff auf den Drucker" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Authentifizierungsstatus" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Authentifizierungsstatus" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Zugriffanforderung erneut senden" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Zugriff auf den Drucker genehmigt" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Kein Zugriff auf das Drucken mit diesem Drucker. Druckauftrag kann nicht gesendet werden." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Zugriff anfordern" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Zugriffsanforderung für den Drucker senden" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Es kann kein neuer Druckauftrag gestartet werden." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Es liegt ein Problem mit der Konfiguration Ihres Ultimaker vor, das den Druckstart verhindert. Lösen Sie dieses Problem bitte, bevor Sie fortfahren." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Konfiguration nicht übereinstimmend" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Möchten Sie wirklich mit der gewählten Konfiguration drucken?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Anforderungen zwischen der Druckerkonfiguration oder -kalibrierung und Cura stimmen nicht überein. Für optimale Ergebnisse schneiden Sie stets für die PrintCores und Materialien, die in Ihren Drucker eingelegt wurden." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Das Senden neuer Aufträge ist (vorübergehend) blockiert; der vorherige Druckauftrag wird noch gesendet." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Daten werden zum Drucker gesendet" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Daten werden gesendet" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Kein PrintCore geladen in Steckplatz {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Kein Material geladen in Steckplatz {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "Abweichender PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) für Extruder gewählt {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Abweichendes Material (Cura: {0}, Drucker: {1}) für Extruder {2} gewählt" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Synchronisieren Ihres Druckers" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Möchten Sie Ihre aktuelle Druckerkonfiguration in Cura verwenden?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Die PrintCores und/oder Materialien auf Ihrem Drucker unterscheiden sich von denen Ihres aktuellen Projekts. Für optimale Ergebnisse schneiden Sie stets für die PrintCores und Materialien, die in Ihren Drucker eingelegt wurden." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "In Monitor überwachen" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "Drucker '{printer_name}' hat '{job_name}' vollständig gedrückt." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "Der Druckauftrag '{job_name}' wurde ausgeführt." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Druck vollendet" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Leer" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Unbekannt" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Cloudfehler" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Druckauftrag konnte nicht exportiert werden." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Es liegt ein Fehler beim Verbinden mit der Cloud vor." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Über Ultimaker Cloud hochladen" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Verbinden mit Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Nicht mehr für diesen Drucker nachfragen." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Sie können jetzt Druckaufträge mithilfe Ihres Ultimaker-Kontos von einem anderen Ort aus senden und überwachen." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Verbunden!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Ihre Verbindung überprüfen" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "Die Maschine, die im Profil {0} ({1}) definiert wurde, entspricht nicht Ihrer derzeitigen Maschine ({2}). Importieren nicht möglich." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Import des Profils aus Datei {0} fehlgeschlagen:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Vorhandene Verbindung" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Diese/r Drucker/Gruppe wurde bereits zu Cura hinzugefügt. Wählen Sie bitte eine/n andere/n Drucker/Gruppe." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Geben Sie die IP-Adresse oder den Hostnamen Ihres Druckers auf dem Netzwerk ein." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Mit einem Drucker verbinden" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Anleitung für Cura-Einstellungen" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Das Zoomen in Mausrichtung wird in der Orthogonalansicht nicht unterstützt." + +#~ msgid "Orthogonal" +#~ msgstr "Orthogonal" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Verwaltet Netzwerkverbindungen zu Ultimaker 3-Druckern." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3-Netzwerkverbindung" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Bietet zusätzliche Informationen und Erklärungen zu den Einstellungen in Cura mit Abbildungen und Animationen." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Anleitung für Einstellungen" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Anleitung für Cura-Einstellungen" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Die Einstellungen wurden passend für die aktuelle Verfügbarkeit der Extruder geändert: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Benutzerbeschreibung" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Diese Optionen sind nicht verfügbar, weil Sie einen Cloud-Drucker überwachen." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Gehe zu Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Alle Aufträge wurden gedruckt." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Druckauftragshistorie anzeigen" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n" +#~ "\n" +#~ "Wählen Sie Ihren Drucker aus der folgenden Liste:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Stellen Sie bitte sicher, dass Ihr Drucker verbunden ist:\n" +#~ "- Prüfen Sie, ob Ihr Drucker eingeschaltet ist.\n" +#~ "- Prüfen Sie, ob der Drucker mit dem Netzwerk verbunden ist." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Nur aktuelle Druckplatte anzeigen" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "An allen Druckplatten ausrichten" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "An aktueller Druckplatte ausrichten" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Ermöglicht das Speichern des resultierenden Slices als X3G-Datei, um Drucker zu unterstützen, die dieses Format lesen (Malyan, Makerbot und andere Sailfish-basierte Drucker)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3G-Writer" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Liest SVG-Dateien als Werkzeugwege für die Fehlersuche bei Druckerbewegungen." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG-Werkzeugweg-Reader" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Änderungsprotokoll" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Änderungsprotokoll anzeigen" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "Daten werden zu Remote-Cluster gesendet" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Verbinden mit Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura erfasst anonymisierte Nutzungsstatistiken." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "Daten werden erfasst" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "Mehr Infos" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Siehe mehr Informationen dazu, was Cura sendet." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "Zulassen" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Damit lassen Sie zu, dass Cura anonymisierte Nutzungsstatistiken sendet, um zukünftige Verbesserungen für Cura zu definieren. Einige Ihrer Präferenzen und Einstellungen, die Cura-Version und ein Hash der Modelle, die Sie slicen, werden gesendet." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "Bewertung" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "Netzwerkfähige Drucker" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "Lokale Drucker" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "Versucht, ein Cura-Backup zu erstellen, das nicht Ihrer aktuellen Version entspricht." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Geräteeinstellungen" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Druckereinstellungen" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Ausgang in Mitte" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Heizbares Bett" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Druckkopfeinstellungen" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Abstand von der linken Seite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Abstand von der Vorderseite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Abstand von der rechten Seite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Abstand von der Rückseite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Brückenhöhe" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "Der Höhenunterschied zwischen der Düsenspitze und dem Brückensystem (X- und Y-Achsen). Wird verwendet, um Kollisionen zwischen vorherigen Drucken und der Brücke zu verhindern, wenn im Modus „Nacheinander“ gedruckt wird." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "Start G-code" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "G-Code-Befehle, die zum Start ausgeführt werden sollen." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "Ende G-code" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "G-Code-Befehle, die am Ende ausgeführt werden sollen." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Düseneinstellungen" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "Der Nenndurchmesser des durch den Drucker unterstützten Filaments. Der exakte Durchmesser wird durch das Material und/oder das Profil überschrieben." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "G-Code Extruder-Start" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "G-Code Extruder-Ende" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Änderungsprotokoll" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "Benutzervereinbarung" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Geben Sie die IP-Adresse oder den Hostnamen Ihres Druckers auf dem Netzwerk ein." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "Bitte einen mit dem Netzwerk verbunden Drucker für die Überwachung wählen." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Verbinden Sie Ihren Ultimaker-Drucker bitte mit Ihrem lokalen Netzwerk." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura sendet anonyme Daten an Ultimaker, um die Druckqualität und Benutzererfahrung zu steigern. Nachfolgend ist ein Beispiel aller Daten, die gesendet werden." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "Ich möchte diese Daten nicht senden" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Ich erlaube das Senden der Daten an Ultimaker, um Cura zu verbessern" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "Kein Druck ausgewählt" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "Standardmäßig repräsentieren weiße Pixel hohe Punkte im Netz und schwarze Pixel repräsentieren niedrige Punkte im Netz. Ändern Sie diese Option um das Verhalten so umzukehren, dass schwarze Pixel hohe Punkte im Netz darstellen und weiße Pixel niedrige Punkte im Netz." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Drucker-Upgrades wählen" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Wählen Sie, welcher Extruder für die Unterstützung verwendet wird. Dient zum Konstruieren von Stützstrukturen unter dem Modell, damit dieses nicht absinkt oder frei schwebend gedruckt wird." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Dieses Qualitätsprofil ist für Ihr aktuelles Material und Ihre derzeitige Düsenkonfiguration nicht verfügbar. Bitte ändern Sie diese, um das Qualitätsprofil zu aktivieren." + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "Druckeinrichtung ist deaktiviert. G-Code kann nicht geändert werden." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "Siehe Materialkompatibilitätstabelle" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "Typen anzeigen" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "Hallo " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- Aufträge an Ultimaker-Drucker außerhalb Ihres lokalen Netzwerks senden\n" +#~ "- Ihre Ultimaker Cura-Einstellungen für die Verwendung andernorts an die Cloud senden\n" +#~ "- Exklusiven Zugang zu Materialprofilen von führenden Marken erhalten" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "Slicing nicht möglich" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "Zeitangabe" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "Materialangabe" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Fügen Sie einen Drucker zu Cura hinzu" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "Wählen Sie den zu verwendenden Drucker aus der nachfolgenden Liste.\n" +#~ "\n" +#~ "Wenn Ihr Drucker nicht in der Liste aufgeführt ist, verwenden Sie „Benutzerdefinierter FFF-Drucker“ aus der Kategorie „Benutzerdefiniert“ und passen Sie die Einstellungen im folgenden Dialog passend für Ihren Drucker an." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "Hersteller" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "Druckername" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Drucker hinzufügen" + +#~ msgid "Modify G-Code" +#~ msgstr "G-Code ändern" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "Es ist kein Objekt zum Schneiden vorhanden, da keines der Modelle der Druckabmessung entspricht. Bitte die Modelle passend skalieren oder drehen." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "Das gewählte Material ist mit der gewählten Maschine oder Konfiguration nicht kompatibel." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Material nicht kompatibel" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Import des Profils aus Datei {0} fehlgeschlagen: {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "Toolbox" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "Nicht verfügbar" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "Nicht erreichbar" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "Verfügbar" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Vorbereitung" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "Wird pausiert" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "Wird fortgesetzt" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "Warten auf: Drucker nicht verfügbar" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "Warten auf: Ersten verfügbaren" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "Warten auf: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "Konfigurationsänderung" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "Der zugewiesene Drucker %1 erfordert die folgende(n) Konfigurationsänderung(en):" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "Überschreiben" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "Das Starten eines Druckauftrags mit einer inkompatiblen Konfiguration kann Ihren 3D-Drucker beschädigen. Möchten Sie die Konfiguration wirklich überschreiben und %1 drucken?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "Konfiguration überschreiben und Druck starten" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "Warteschlange verwalten" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "Drucken" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "Drucker verwalten" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Konfiguration aktivieren" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Die Druckerkonfiguration in Cura laden" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Bewegungen anzeigen" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Helfer anzeigen" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Gehäuse anzeigen" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Füllung anzeigen" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "Ich möchte diese Daten nicht senden" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Ich erlaube das Senden dieser Daten an Ultimaker, um Cura zu verbessern" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Druckertyp:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Verbindung:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "Status:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "Warten auf einen Druckauftrag" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "Warten auf Räumen des Druckbeets" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "Drucken wird abgebrochen..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Geschützte Profile" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Druckername:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Profil:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Suchen..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "Alle verkleinern" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "Alle vergrößern" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "Verfügbare Konfigurationen" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "Extruder" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "Nein" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Druckeinrichtung" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Druckeinrichtung deaktiviert\n" +#~ "G-Code-Dateien können nicht geändert werden" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00 Stunden 00 Minuten" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "Zeitangabe" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "Kostenangabe" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "Insgesamt:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Empfohlene Druckeinrichtung

    Drucken mit den empfohlenen Einstellungen für den gewählten Drucker, das gewählte Material und die gewählte Qualität." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Benutzerdefinierte Druckeinrichtung

    Druck mit Feineinstellung über jedem einzelnen Bereich des Schneidvorgangs." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "Engine-&Protokoll anzeigen..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "Pakete durchsuchen..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "Seitenleiste vergrößern/verkleinern" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Bitte laden Sie ein 3D-Modell" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Bereit zum Slicen (Schneiden)" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "Bereit zum %1" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "Slicing ist nicht verfügbar" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "Aktuellen Druckauftrag slicen" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "Slicing-Vorgang abbrechen" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Vorbereiten" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "Abbrechen" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Wählen Sie das aktive Ausgabegerät" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "&Ansicht" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "&Konfiguration" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "&Toolbox" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Datei öffnen" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Dieses Qualitätsprofil ist für Ihr aktuelles Material und Ihre derzeitige Düsenkonfiguration nicht verfügbar. Bitte ändern Sie diese, um dieses Qualitätsprofil zu aktivieren" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Druckgeschwindigkeit" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Langsamer" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Schneller" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Graduell aktivieren" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Stützstruktur generieren" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Druckplattenhaftung" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "Sie benötigen Hilfe für Ihre Drucke?
    Lesen Sie die Ultimaker Anleitungen für Fehlerbehebung>" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Engine-Protokoll" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "Druckertyp" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "Für diese Materialkombination Kleber verwenden" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Kompatibilität prüfen" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Klicken Sie, um die Materialkompatibilität auf Ultimaker.com zu prüfen." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Zeigt die Änderungen seit der letzten geprüften Version an." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Änderungsprotokoll" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Erstellt eine geglättete Qualität, verändert das Profil." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Profilglättfunktion" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "Den Benutzer einmalig fragen, ob er unsere Lizenz akzeptiert." + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "UserAgreement" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "Generieren Sie vor dem Speichern bitte einen G-Code." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Firmware aktualisieren" @@ -4993,22 +6526,6 @@ msgstr "Cura-Profil-Reader" #~ msgid "Confirm uninstall " #~ msgstr "Deinstallieren bestätigen " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "Pausiert" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "Zurück" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "Weiter" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "Tipp" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1m / ~ %2g / ~ %4 %3" @@ -5017,26 +6534,10 @@ msgstr "Cura-Profil-Reader" #~ msgid "%1m / ~ %2g" #~ msgstr "%1m / ~ %2g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "Druckexperiment" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "Checkliste" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "Firmware aktualisieren" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "Ermöglichen Sie Materialherstellern die Erstellung neuer Material- und Qualitätsprofile, indem Sie eine Drop-In-Benutzerschnittstelle verwenden." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "Druckprofil-Assistent" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Mit Doodle3D WLAN-Box drucken" @@ -5129,10 +6630,6 @@ msgstr "Cura-Profil-Reader" #~ msgid "Lost connection with the printer" #~ msgstr "Verbindung zum Drucker wurde unterbrochen" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "Nicht verfügbar" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "Unbekannt" diff --git a/resources/i18n/de_DE/fdmextruder.def.json.po b/resources/i18n/de_DE/fdmextruder.def.json.po index 77ffa5631d..cc39f59f72 100644 --- a/resources/i18n/de_DE/fdmextruder.def.json.po +++ b/resources/i18n/de_DE/fdmextruder.def.json.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: German\n" "Language: de_DE\n" @@ -83,8 +83,8 @@ msgstr "G-Code Extruder-Start" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "Starten Sie den G-Code jedes Mal, wenn Sie den Extruder einschalten." +msgid "Start g-code to execute when switching to this extruder." +msgstr "Auszuführenden G-Code beim Umschalten auf diesen Extruder starten." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -123,8 +123,8 @@ msgstr "G-Code Extruder-Ende" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "Beenden Sie den G-Code jedes Mal, wenn Sie den Extruder ausschalten." +msgid "End g-code to execute when switching away from this extruder." +msgstr "Auszuführenden G-Code beim Umschalten von diesem Extruder beenden." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -225,3 +225,11 @@ msgstr "Durchmesser" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Der Durchmesser des verwendeten Filaments wird angepasst. Stellen Sie hier den Durchmesser des verwendeten Filaments ein." + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "Starten Sie den G-Code jedes Mal, wenn Sie den Extruder einschalten." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "Beenden Sie den G-Code jedes Mal, wenn Sie den Extruder ausschalten." diff --git a/resources/i18n/de_DE/fdmprinter.def.json.po b/resources/i18n/de_DE/fdmprinter.def.json.po index 383a7a3886..aee5ae4ace 100644 --- a/resources/i18n/de_DE/fdmprinter.def.json.po +++ b/resources/i18n/de_DE/fdmprinter.def.json.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:57+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: German\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: German , German \n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,7 +57,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "G-Code-Befehle, die zu Beginn ausgeführt werden sollen – getrennt durch \n." +msgstr "" +"G-Code-Befehle, die zu Beginn ausgeführt werden sollen – getrennt durch \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -69,7 +71,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "G-Code-Befehle, die am Ende ausgeführt werden sollen – getrennt durch \n." +msgstr "" +"G-Code-Befehle, die am Ende ausgeführt werden sollen – getrennt durch \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -211,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Option für vorhandene beheizte Druckplatte." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Verfügt über Temperaturstabilisierung für den Druckraum" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Zeigt an, ob das Gerät die Temperatur im Druckraum stabilisieren kann." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -233,7 +247,7 @@ msgstr "Anzahl der Extruder-Elemente. Ein Extruder-Element ist die Kombination a #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "Anzahl der aktivierten Extruder" #: fdmprinter.def.json @@ -243,7 +257,7 @@ msgstr "Anzahl der aktivierten Extruder-Elemente; wird automatisch in der Softwa #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "Düsendurchmesser außen" #: fdmprinter.def.json @@ -253,7 +267,7 @@ msgstr "Der Außendurchmesser der Düsenspitze." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "Düsenlänge" #: fdmprinter.def.json @@ -263,7 +277,7 @@ msgstr "Der Höhenunterschied zwischen der Düsenspitze und dem untersten Bereic #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "Düsenwinkel" #: fdmprinter.def.json @@ -273,7 +287,7 @@ msgstr "Der Winkel zwischen der horizontalen Planfläche und dem konischen Teil #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "Heizzonenlänge" #: fdmprinter.def.json @@ -303,7 +317,7 @@ msgstr "Für die Temperatursteuerung von Cura. Schalten Sie diese Funktion aus, #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "Aufheizgeschwindigkeit" #: fdmprinter.def.json @@ -313,7 +327,7 @@ msgstr "Die Geschwindigkeit (°C/Sek.), mit der die Düse durchschnittlich bei n #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "Abkühlgeschwindigkeit" #: fdmprinter.def.json @@ -333,7 +347,7 @@ msgstr "Die Mindestzeit, die ein Extruder inaktiv sein muss, bevor die Düse abk #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "G-Code-Variante" #: fdmprinter.def.json @@ -398,7 +412,7 @@ msgstr "Definiert, ob Firmware-Einzugsbefehle (G10/G11) anstelle der E-Eigenscha #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "Unzulässige Bereiche" #: fdmprinter.def.json @@ -418,7 +432,7 @@ msgstr "Eine Liste mit Polygonen mit Bereichen, in welche die Düse nicht eintre #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "Gerätekopf Polygon" #: fdmprinter.def.json @@ -428,7 +442,7 @@ msgstr "Eine 2D-Shilhouette des Druckkopfes (ohne Lüfterkappen)." #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" +msgid "Machine Head & Fan Polygon" msgstr "Gerätekopf und Lüfter Polygon" #: fdmprinter.def.json @@ -438,7 +452,7 @@ msgstr "Eine 2D-Shilhouette des Druckkopfes (mit Lüfterkappen)." #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Brückenhöhe" #: fdmprinter.def.json @@ -468,7 +482,7 @@ msgstr "Der Innendurchmesser der Düse. Verwenden Sie diese Einstellung, wenn Si #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" +msgid "Offset with Extruder" msgstr "Versatz mit Extruder" #: fdmprinter.def.json @@ -1016,6 +1030,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Die Anzahl der unteren Schichten. Wenn diese anhand der unteren Dicke berechnet wird, wird der Wert auf eine ganze Zahl auf- oder abgerundet." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Erste untere Schichten" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Die Anzahl der ersten Schichten, die auf die Druckplatte aufgetragen werden. Wenn diese anhand der unteren Dicke berechnet werden, wird der Wert auf eine" +" ganze Zahl auf- oder abgerundet." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1266,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Schärfste Kante" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Position der Z-Naht" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "Die Position in der Nähe der Stelle, an der die einzelnen Teile einer Ebene gedruckt werden sollen." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Hinten links" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Zurück" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Hinten rechts" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Rechts" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Vorne rechts" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Vorne" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Vorne links" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Links" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1293,8 +1368,8 @@ msgstr "Präferenz Nahtkante" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Definieren Sie, ob Kanten am Modell-Umriss die Nahtposition beeinflussen. Keine bedeutet, dass Kanten keinen Einfluss auf die Nahtposition haben. Naht verbergen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden Kante auftreten. Naht offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer Außenkante auftreten. Naht verbergen oder offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden oder außenliegenden Kante auftreten." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Definieren Sie, ob Kanten am Modell-Umriss die Nahtposition beeinflussen. Keine bedeutet, dass Kanten keinen Einfluss auf die Nahtposition haben. Naht verbergen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden Kante auftreten. Naht offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer Außenkante auftreten. Naht verbergen oder offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden oder außenliegenden Kante auftreten. Intelligent verbergen lässt die Naht an innen- oder außenliegenden Kanten auftreten, verwendet aber – falls zweckmäßig – häufiger innenliegende Kanten." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1316,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Naht verbergen oder offenlegen" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Intelligent verbergen" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1328,13 +1408,13 @@ msgstr "Bei Aktivierung sind die Z-Naht-Koordinaten relativ zur Mitte der jeweil #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Schmale Z-Lücken ignorieren" +msgid "No Skin in Z Gaps" +msgstr "Keine Außenhaut in Z-Lücken" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Wenn das Modell schmale vertikale Lücken hat, kann etwa 5 % zusätzliche Rechenzeit aufgewendet werden, um eine obere und untere Außenhaut in diesen engen Räumen zu generieren. In diesem Fall deaktivieren Sie die Einstellung." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Wenn das Modell kleine, nur wenige Schichten hohe vertikale Lücken aufweist, sind diese normalerweise von einer Außenhaut bedeckt. Aktivieren Sie diese Einstellung, damit bei sehr kleinen Lücken keine Außenhaut gedruckt wird. Dies verkürzt die zum Drucken und Slicen benötigte Zeit, aber die Füllung bleibt der Luft ausgesetzt." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1353,8 +1433,8 @@ msgstr "Glätten aktivieren" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Gehen Sie ein weiteres Mal über die Oberfläche, jedoch ohne Extrusionsmaterial. Damit wird der Kunststoff auf der Oberfläche weiter geschmolzen, was zu einer glatteren Oberfläche führt." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Gehen Sie ein weiteres Mal über die Oberfläche, aber extrudieren Sie diesmal sehr wenig Material. Dadurch wird die oberste Kunststoffschicht geschmolzen und es entsteht eine glattere Oberfläche. Der Druck in der Düsenkammer bleibt weiterhin hoch, so dass Risse in der Oberfläche mit Material gefüllt werden." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1446,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Die maximale unmittelbare Geschwindigkeitsänderung während des Glättens." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Prozentsatz Außenhaut überlappen" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Justieren Sie die Überlappung zwischen den Wänden und den Außenhaut-Mittellinien bzw. den Endpunkten der Außenhaut-Mittellinien als Prozentwert der Linienbreite der Außenhautlinien und der inneren Wand. Eine geringe Überlappung ermöglicht die feste Verbindung der Wände mit der Außenhaut. Beachten Sie, dass bei einer einheitlichen Linienbreite von Außenhaut und Wand jeder Prozentwert über 50 % bereits dazu führen kann, dass die Außenhaut über die Wand hinausgeht, da in diesem Moment die Position der Düse des Außenhaut-Extruders möglicherweise bereits über die Wandmitte hinausgeht." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Außenhaut überlappen" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Justieren Sie die Überlappung zwischen den Wänden und den Außenhaut-Mittellinien bzw. den Endpunkten der Außenhaut-Mittellinien. Eine geringe Überlappung ermöglicht die feste Verbindung der Wände mit der Außenhaut. Beachten Sie, dass bei einer einheitlichen Linienbreite von Außenhaut und Wand jeder Wert über die Hälfte der Wandbreite bereits dazu führen kann, dass die Außenhaut über die Wand hinausgeht, da in diesem Moment die Position der Düse des Außenhaut-Extruders möglicherweise bereits über die Wandmitte hinausgeht." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1611,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Das Füllmuster wird um diese Distanz entlang der Y-Achse verschoben." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Füllstart randomisieren" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Randomisieren Sie, welche Fülllinie zuerst gedruckt wird. So wird vermieden, dass ein Segment am stärksten ist. Allerdings muss dafür eine zusätzliche Bewegung ausgeführt werden." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1631,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "Fügen Sie zusätzliche Wände um den Füllbereich hinzu. Derartige Wände können zu einem verringerten Absacken der oberen/unteren Außenhautlinien beitragen, was bedeutet, dass Sie weniger Außenhautschichten oben/unten bei derselben Qualität von Kosten für zusätzliches Material benötigen.\n Diese Funktion ist verknüpfbar mit „Füllungspolygone verbinden“, um alle Füllungen mit einem einzigen Extrusionspfad zu verbinden, ohne dass hierzu Vorwärtsbewegungen oder Rückzüge erforderlich sind, sofern die richtige Konfiguration gewählt wurde." +msgstr "" +"Fügen Sie zusätzliche Wände um den Füllbereich hinzu. Derartige Wände können zu einem verringerten Absacken der oberen/unteren Außenhautlinien beitragen, was bedeutet, dass Sie weniger Außenhautschichten oben/unten bei derselben Qualität von Kosten für zusätzliches Material benötigen.\n" +" Diese Funktion ist verknüpfbar mit „Füllungspolygone verbinden“, um alle Füllungen mit einem einzigen Extrusionspfad zu verbinden, ohne dass hierzu Vorwärtsbewegungen oder Rückzüge erforderlich sind, sofern die richtige Konfiguration gewählt wurde." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1663,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Das Ausmaß des Überlappens zwischen der Füllung und den Wänden. Ein leichtes Überlappen ermöglicht es den Wänden, eine solide Verbindung mit der Füllung herzustellen." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Prozentsatz Außenhaut überlappen" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Das Ausmaß des Überlappens zwischen der Außenhaut und den Wänden als Prozentwert der Außenhaut-Linienbreite. Ein leichtes Überlappen ermöglicht es den Wänden, eine solide Verbindung mit der Außenhaut herzustellen. Dies ist ein Prozentwert der durchschnittlichen Linienbreiten der Außenhautlinien und der innersten Wand." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Außenhaut überlappen" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "Das Ausmaß des Überlappens zwischen der Außenhaut und den Wänden. Ein leichtes Überlappen ermöglicht es den Wänden, eine solide Verbindung mit der Außenhaut herzustellen." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1863,6 +1955,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "Die für den Druck verwendete Standardtemperatur. Dies sollte die „Basis“-Temperatur eines Materials sein. Alle anderen Drucktemperaturen sollten anhand dieses Wertes einen Versatz verwenden" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "Temperatur Druckabmessung" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "Die Temperatur der Druckumgebung. Beträgt der Wert 0, wird die Druckraumtemperatur nicht angepasst." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1973,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Schrumpfungsverhältnis in Prozent." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Kristallines Material" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Lässt sich das Material im erhitzten Zustand leicht brechen (kristallin) oder bildet es lange, verflochtene Polymerketten (nicht kristallin)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Einzugsmaß für Sickerschutz" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Maß, um das das Material eingezogen werden muss, damit es nicht heraussickert." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Einzugsgeschwindigkeit für Sickerschutz" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Geschwindigkeit, mit der das Material beim Filamentwechsel eingezogen werden muss, damit es nicht heraussickert." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Einzugsmaß für Bruchvorbereitung" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Streckmaß für das Filament im erhitzten Zustand, bevor es bricht." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Einzugsgeschwindigkeit für Bruchvorbereitung" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Geschwindigkeit, mit der das Filament eingezogen werden muss, bevor es beim Einziehen abgebrochen wird." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Einzugsmaß für das Brechen" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Maß, um das das Filament eingezogen werden muss, damit es sauber abgebrochen werden kann." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Einzugsgeschwindigkeit für das Brechen" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "Geschwindigkeit, mit der das Filament eingezogen werden muss, damit es sauber abgebrochen werden kann." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Bruchtemperatur" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "Die Temperatur, bei der das Filament für eine saubere Bruchstelle gebrochen wird." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1983,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Fluss-Kompensation: Die extrudierte Materialmenge wird mit diesem Wert multipliziert." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Wandfluss" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Durchflusskompensation an Wandlinien." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Wandfluss außen" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Durchflusskompensation an der äußeren Wandlinie." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Wandfluss innen" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Durchflusskompensation an allen Wandlinien bis auf die äußere." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Fluss oben/unten" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Durchflusskompensation an oberen/unteren Linien." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Fluss Oberfläche Außenhaut" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Durchflusskompensation an Linien von Flächen an der Oberseite des Druckobjekts." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Fluss der Füllung" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Durchflusskompensation an Füllungslinien." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Skirt/Brim-Fluss" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Durchflusskompensation an Skirt- oder Brim-Linien." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Stützstruktur-Fluss" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Durchflusskompensation an Stützstrukturlinien." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Fluss Stützstruktur-Schnittstelle" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Durchflusskompensation an Dach- oder Bodenlinien der Stützstruktur." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Stützdachfluss" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Durchflusskompensation an Stützdachlinien." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Stützbodenfluss" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Durchflusskompensation an Stützbodenlinien." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Fluss Einzugsturm" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Durchflusskompensation an Einzugsturmlinien." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2100,7 +2402,7 @@ msgstr "Stützstruktur-Einzüge einschränken" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "Lassen Sie den Einzug beim Vorgehen von Stützstruktur zu Stützstruktur in einer geraden Linie aus. Die Aktivierung dieser Einstellung spart Druckzeit, kann jedoch zu übermäßigem Fadenziehen innerhalb der Stützstruktur führen." #: fdmprinter.def.json @@ -2120,8 +2422,8 @@ msgstr "Düsenschalter Einzugsabstand" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "Der Wert für den Einzug: 0 einstellen, um keinen Einzug zu erhalten. Dies sollte generell mit der Länge der Heizzone übereinstimmen." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "Der Wert für den Einzug beim Umstellen der Extruder: 0 einstellen, um keinen Einzug zu erhalten. Dies sollte generell mit der Länge der Heizzone übereinstimmen." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2153,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Die Geschwindigkeit, mit der das Filament während eines Düsenschaltereinzugs zurückgeschoben wird." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Zusätzliche Einzugsmenge bei Düsenwechsel" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Nach einem Düsenwechsel zusätzlich bereitzustellendes Material." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2344,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Die Geschwindigkeit, mit der die Skirt- und Brim-Elemente gedruckt werden. Normalerweise wird dafür die Geschwindigkeit der Basisschicht verwendet. In machen Fällen kann es jedoch vorteilhaft sein, das Skirt- oder Brim-Element mit einer anderen Geschwindigkeit zu drucken." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Maximale Z-Geschwindigkeit" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Sprunghöhe Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Die maximale Geschwindigkeit, mit der die Druckplatte bewegt wird. Eine Einstellung auf Null veranlasst die Verwendung der Firmware-Grundeinstellungen für die maximale Z-Geschwindigkeit." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Die Geschwindigkeit, mit der bei Z-Sprüngen die vertikale Bewegung (Z-Achse) erfolgt. Diese liegt in der Regel unterhalb der Druckgeschwindigkeit, da die Bewegung von Druckbett oder Brücke schwieriger ist." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2780,8 +3092,8 @@ msgstr "Combing-Modus" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "Durch Combing bleibt die Düse während der Bewegung innerhalb von bereits gedruckten Bereichen. Dies führt zu einer leicht verlängerten Bewegungszeit, reduziert jedoch die Notwendigkeit von Einzügen. Wenn Combing deaktiviert ist, wird das Material eingezogen und die Düse bewegt sich in einer geraden Linie zum nächsten Punkt. Es ist außerdem möglich, das Combing über die oberen/unteren Außenhautbereiche zu vermeiden, indem nur die Füllung berücksichtigt wird. Die Option „Innerhalb der Füllung“ verhält sich genauso wie die Option „Nicht in Außenhaut“ in früheren Cura Versionen." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "Durch Combing bleibt die Düse während der Bewegung innerhalb von bereits gedruckten Bereichen. Dies führt zu einer leicht verlängerten Bewegungszeit, reduziert jedoch die Notwendigkeit von Einzügen. Wenn Combing deaktiviert ist, wird das Material eingezogen und die Düse bewegt sich in einer geraden Linie zum nächsten Punkt. Es ist außerdem möglich, das Combing über die oberen/unteren Außenhautbereiche zu vermeiden, oder nur Combing innerhalb der Füllung auszuführen." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2853,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Der Abstand zwischen der Düse und den bereits gedruckten Teilen, wenn diese bei Bewegungen umgangen werden." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Startet Schichten mit demselben Teil" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Beginnen Sie in jeder Schicht mit dem Drucken des Objekts in der Nähe desselben Punkts, sodass keine neue Schicht begonnen wird, wenn das Teil gedruckt wird, mit dem die letzte Schicht geendet hat. Damit lassen sich Überhänge und kleine Teile besser herstellen, allerdings verlängert sich die Druckzeit." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2923,6 +3225,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "Nachdem das Gerät von einem Extruder zu einem anderen geschaltet hat, wird die Druckplatte abgesenkt, um einen Abstand zwischen der Düse und dem Druck zu bilden. Das verhindert, dass die Düse abgesondertes Material auf der Außenseite des Drucks hinterlässt." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "Z-Sprung nach Extruder-Schalterhöhe" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "Der Höhenunterschied bei Ausführung eines Z-Sprungs nach Extruder-Schalter." + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3193,6 +3505,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Quer" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "Gyroid" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3254,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Der Abstand zwischen der ursprünglichen gedruckten Stützstrukturlinien. Diese Einstellung wird anhand der Dichte der Stützstruktur berechnet." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Unterstützung Linienrichtung Füllung" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Ausrichtung des Füllmusters für Unterstützung. Das Füllmuster für Unterstützung wird in der horizontalen Planfläche gedreht." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Liste der zu verwendenden Linienrichtungen (in ganzen Zahlen). Die Elemente der Liste werden während des Aufbaus der Schichten der Reihe nach abgearbeitet. Wenn das Ende der Liste erreicht wird, wird wieder beim ersten Element begonnen. Die Listenobjekte werden durch Kommas getrennt und die gesamte Liste ist in eckige Klammern gesetzt. Standardmäßig ist eine leere Liste vorhanden, was bedeutet, dass der Standardwinkel von 0 Grad zu verwenden ist." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3390,8 +3707,8 @@ msgstr "Abstand für Zusammenführung der Stützstrukturen" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Der Maximalabstand zwischen Stützstrukturen in der X- und Y-Richtung. Wenn sich einzelne Strukturen näher aneinander befinden, als dieser Wert, werden diese Strukturen in eine einzige Struktur zusammengefügt." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "Der Maximalabstand zwischen Stützstrukturen in der X- und Y-Richtung. Wenn der Abstand einzelner Strukturen zueinander diesen Wert unterschreitet, werden diese Strukturen miteinander kombiniert und bilden eine Struktur." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3433,6 +3750,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "Die Höhe der Stützstruktur-Füllung einer bestimmten Dichte vor dem Umschalten auf die halbe Dichte." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "Mindestbereich Stützstruktur" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "Mindestflächenbreite für Stützstruktur-Polygone. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden nicht generiert." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3658,6 +3985,97 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Zickzack" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "Mindestbereich Stützstruktur-Schnittstelle" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Mindestflächenbreite für Stützstruktur-Schnittstellen-Polygone. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden als normale Stützstruktur" +" gedruckt." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "Mindestbereich Stützstrukturdach" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Mindestfläche für die Dächer der Stützstruktur. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden als normale Stützstruktur gedruckt." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "Mindestbereich Stützstrukturboden" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Mindestfläche für die Dächer der Stützstruktur. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden als normale Stützstruktur gedruckt." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "Horizontale Erweiterung Stützstruktur-Schnittstelle" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "Umfang des angewandten Versatzes für die Stützstruktur-Schnittstellen-Polygone." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "Horizontale Erweiterung Stützstrukturdach" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "Umfang des angewandten Versatzes für die Dächer der Stützstruktur." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "Horizontale Erweiterung Stützstrukturboden" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "Umfang des angewandten Versatzes für die Böden der Stützstruktur." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Richtungen der Verbindungslinien unterstützen" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Liste der zu verwendenden Linienrichtungen (in ganzen Zahlen). Die Elemente der Liste werden während des Aufbaus der Schichten der Reihe nach abgearbeitet. Wenn das Ende der Liste erreicht wird, wird wieder beim ersten Element begonnen. Die Listenobjekte werden durch Kommas getrennt und die gesamte Liste ist in eckige Klammern gesetzt. Standardmäßig ist eine leere Liste vorhanden, was bedeutet, dass herkömmliche Standardwinkel (zwischen 45 und 135- rad, falls die Verbindungsstellen ziemlich dick sind, oder 90 Grad) zu verwenden sind." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Richtungen der Dachlinien unterstützen" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Liste der zu verwendenden Linienrichtungen (in ganzen Zahlen). Die Elemente der Liste werden während des Aufbaus der Schichten der Reihe nach abgearbeitet. Wenn das Ende der Liste erreicht wird, wird wieder beim ersten Element begonnen. Die Listenobjekte werden durch Kommas getrennt und die gesamte Liste ist in eckige Klammern gesetzt. Standardmäßig ist eine leere Liste vorhanden, was bedeutet, dass herkömmliche Standardwinkel (zwischen 45 und 135- rad, falls die Verbindungsstellen ziemlich dick sind, oder 90 Grad) zu verwenden sind." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Richtungen der Bodenlinien unterstützen" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Liste der zu verwendenden Linienrichtungen (in ganzen Zahlen). Die Elemente der Liste werden während des Aufbaus der Schichten der Reihe nach abgearbeitet. Wenn das Ende der Liste erreicht wird, wird wieder beim ersten Element begonnen. Die Listenobjekte werden durch Kommas getrennt und die gesamte Liste ist in eckige Klammern gesetzt. Standardmäßig ist eine leere Liste vorhanden, was bedeutet, dass herkömmliche Standardwinkel (zwischen 45 und 135- rad, falls die Verbindungsstellen ziemlich dick sind, oder 90 Grad) zu verwenden sind." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3699,13 +4117,13 @@ msgid "The diameter of a special tower." msgstr "Der Durchmesser eines speziellen Pfeilers." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Mindestdurchmesser" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Maximaler Durchmesser für Stützpfeiler" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." msgstr "Der Mindestdurchmesser in den X/Y-Richtungen eines kleinen Bereichs, der durch einen speziellen Stützpfeiler gestützt wird." #: fdmprinter.def.json @@ -3828,7 +4246,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\nEs handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden mehrere Skirt-Linien in äußerer Richtung angebracht." +msgstr "" +"Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\n" +"Es handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden mehrere Skirt-Linien in äußerer Richtung angebracht." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4200,16 +4620,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Drucken Sie einen Turm neben dem Druck, der zum Einziehen des Materials nach jeder Düsenschaltung dient." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Einzugsturm kreisförmig" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Macht den Einzugsturm zu einer Kreisform." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4250,16 +4660,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Die Y-Koordinate der Position des Einzugsturms." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Fluss Einzugsturm" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Fluss-Kompensation: Die extrudierte Materialmenge wird mit diesem Wert multipliziert." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4270,6 +4670,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "Nach dem Drucken des Einzugsturms mit einer Düse wird das ausgetretene Material von der anderen Düse am Einzugsturm abgewischt." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "Brim Einzugsturm" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "Einzugstürme benötigen möglicherweise zusätzliche Haftung in Form eines Brims, auch wenn das Modell selbst dies nicht benötigt. Kann derzeit nicht mit dem „Raft“-Haftungstyp verwendet werden." + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4390,6 +4800,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Entfernen Sie die leeren Schichten unter der ersten gedruckten Schicht, sofern vorhanden. Die Deaktivierung dieser Einstellung kann zu leeren ersten Schichten führen, wenn die Einstellung der Slicing-Toleranz auf Exklusiv oder Mittel gesetzt wurde." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maximale Auflösung" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Die Mindestgröße eines Linienabschnitts nach dem Slicen. Wenn Sie diesen Wert erhöhen, führt dies zu einer niedrigeren Auslösung des Mesh. Damit kann der Drucker die erforderliche Geschwindigkeit für die Verarbeitung des G-Codes beibehalten; außerdem wird die Slice-Geschwindigkeit erhöht, indem Details des Mesh entfernt werden, die ohnehin nicht verarbeitet werden können." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Maximale Bewegungsauflösung" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Die maximale Größe eines Bewegungsliniensegments nach dem Slicen. Wenn Sie diesen Wert erhöhen, weisen die Fahrtbewegungen weniger glatte Kanten aus. Das ermöglicht dem Drucker, die für die Verarbeitung eines G-Codes erforderliche Geschwindigkeit aufrechtzuerhalten, allerdings kann das Modell damit auch weniger akkurat werden." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Maximale Abweichung" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "Die maximal zulässige Abweichung bei Reduzierung der maximalen Auflösung. Wenn Sie diesen Wert erhöhen, wird der Druck ungenauer, der G-Code wird jedoch kleiner. Die maximale Abweichung ist eine Grenze für die maximale Auflösung. Wenn die beiden Werte sich widersprechen, wird stets die maximale Abweichung eingehalten." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4552,8 +4992,8 @@ msgstr "Spiralisieren der äußeren Konturen glätten" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Glättet die spiralförmigen Konturen, um die Sichtbarkeit der Z-Naht zu reduzieren (die Z-Naht sollte auf dem Druck kaum sichtbar sein, ist jedoch in der Schichtenansicht erkennbar). Beachten Sie, dass das Glätten dazu neigt, feine Oberflächendetails zu verwischen." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Glättet die spiralförmigen Konturen, um die Sichtbarkeit der Z-Naht zu reduzieren (die Z-Naht sollte am Druckobjekt kaum sichtbar sein, ist jedoch in der Schichtenansicht erkennbar). Beachten Sie, dass beim Glätten feine Oberflächendetails verwischt werden." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4765,26 +5205,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Polygone in geschnittenen Schichten, die einen Umfang unter diesem Wert haben, werden ausgefiltert. Niedrigere Werte führen zu einem Mesh mit höherer Auflösung zulasten der Slicing-Zeit. Dies gilt in erster Linie für SLA-Drucker mit höherer Auflösung und sehr kleine 3D-Modelle mit zahlreichen Details." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Maximale Auflösung" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Die Mindestgröße eines Linienabschnitts nach dem Slicen. Wenn Sie diesen Wert erhöhen, führt dies zu einer niedrigeren Auslösung des Mesh. Damit kann der Drucker die erforderliche Geschwindigkeit für die Verarbeitung des G-Codes beibehalten; außerdem wird die Slice-Geschwindigkeit erhöht, indem Details des Mesh entfernt werden, die ohnehin nicht verarbeitet werden können." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Maximale Bewegungsauflösung" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Die maximale Größe eines Bewegungsliniensegments nach dem Slicen. Wenn Sie diesen Wert erhöhen, weisen die Fahrtbewegungen weniger glatte Kanten aus. Das ermöglicht dem Drucker, die für die Verarbeitung eines G-Codes erforderliche Geschwindigkeit aufrechtzuerhalten, allerdings kann das Modell damit auch weniger akkurat werden." - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4925,16 +5345,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Die Geschwindigkeit, mit der die Bewegung während des Coasting erfolgt, in Relation zur Geschwindigkeit des Extrusionswegs. Ein Wert leicht unter 100 % wird empfohlen, da während der Coasting-Bewegung der Druck in den Bowden-Röhren abfällt." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Wechselnde Rotation der Außenhaut" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Die Richtung, in welcher die oberen/unteren Schichten gedruckt werden, wird abgewechselt. Normalerweise werden diese nur diagonal gedruckt. Diese Einstellung fügt die Nur-X- und Nur-Y-Richtung zu." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5042,8 +5452,8 @@ msgstr "Konische Stützstruktur aktivieren" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Experimentelle Funktion: Macht die Bereiche der Stützstruktur am Boden kleiner als beim Überhang." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Macht die Bereiche der Stützstruktur am Boden kleiner als beim Überhang." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5107,23 +5517,24 @@ msgstr "Der durchschnittliche Abstand zwischen den willkürlich auf jedes Linien #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Ausgleich Durchflussrate max. Extrusionswirkung" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Die maximale Distanz in mm für den Ausgleich." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "Die maximale Strecke (in mm), die das Filament bewegt werden kann, um Änderungen der Durchflussrate zu kompensieren." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Ausgleichsfaktor Durchflussrate" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Der Multiplikationsfaktor für die Übersetzung Durchflussrate -> Distanz." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Wie weit das Filament bewegt werden kann, um Änderungen der Durchflussrate zu kompensieren – als Prozentsatz der Strecke, die das Filament sich während" +" einer Sekunde Extrusion bewegen würde." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5275,7 +5686,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Die Strecke einer Aufwärtsbewegung, die mit halber Geschwindigkeit extrudiert wird.\nDies kann zu einer besseren Haftung an vorhergehenden Schichten führen, während gleichzeitig ein Überhitzen des Materials in diesen Schichten vermieden wird. Dies gilt nur für das Drucken mit Drahtstruktur." +msgstr "" +"Die Strecke einer Aufwärtsbewegung, die mit halber Geschwindigkeit extrudiert wird.\n" +"Dies kann zu einer besseren Haftung an vorhergehenden Schichten führen, während gleichzeitig ein Überhitzen des Materials in diesen Schichten vermieden wird. Dies gilt nur für das Drucken mit Drahtstruktur." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5384,7 +5797,7 @@ msgstr "Der Abstand zwischen der Düse und den horizontalen Abwärtslinien. Bei #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "Anpassschichten verwenden" #: fdmprinter.def.json @@ -5394,7 +5807,7 @@ msgstr "Die Funktion Anpassschichten berechnet die Schichthöhe je nach Form des #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "Maximale Abweichung für Anpassschichten" #: fdmprinter.def.json @@ -5404,7 +5817,7 @@ msgstr "Die max. zulässige Höhendifferenz von der Basisschichthöhe." #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "Abweichung Schrittgröße für Anpassschichten" #: fdmprinter.def.json @@ -5414,13 +5827,14 @@ msgstr "Der Höhenunterscheid der nächsten Schichthöhe im Vergleich zur vorher #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "Schwellenwert Anpassschichten" +msgid "Adaptive Layers Topography Size" +msgstr "Topographische Größe der Anpassschichten" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Das ist der Schwellenwert, der definiert, ob eine kleinere Schicht verwendet wird oder nicht. Dieser Wert wird mit dem der stärksten Neigung in einer Schicht verglichen." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Horizontaler Abstand zwischen zwei angrenzenden Schichten. Bei Einstellung eines niedrigeren Werts werden dünnere Schichten aufgetragen, damit die Kanten" +" der Schichten enger aneinander liegen." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5429,8 +5843,9 @@ msgstr "Winkel für überhängende Wände" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Wände, die über diesen Winkel hinaus hängen, werden mithilfe der Einstellungen für Winkel für überhängende Wände gedruckt. Wenn der Wert 90 beträgt, werden keine Wände als überhängend behandelt." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Wände, die über diesen Winkel hinaus hängen, werden mithilfe der Einstellungen für Winkel für überhängende Wände gedruckt. Wenn der Wert 90 beträgt, werden" +" keine Wände als überhängend behandelt. Überhänge, die von Stützstrukturen gestützt werden, werden ebenfalls nicht als Überhang behandelt." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5632,6 +6047,198 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "Prozentwert der Lüfterdrehzahl für das Drucken der dritten Brücken-Außenhautschicht." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "Düse zwischen den Schichten abwischen" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "Option für das Einfügen eines G-Codes für das Abwischen der Düse zwischen den Schichten. Die Aktivierung dieser Einstellung könnte das Einzugsverhalten beim Schichtenwechsel beeinflussen. Verwenden Sie bitte die Einstellungen für Abwischen bei Einzug, um das Einziehen bei Schichten zu steuern, bei denen das Skript für Wischen aktiv wird." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "Materialmenge zwischen den Wischvorgängen" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "Die maximale Materialmenge, die extrudiert werden kann, bevor die Düse ein weiteres Mal abgewischt wird." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "Abwischen bei Einzug aktivieren" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "Das Filament wird eingezogen, wenn sich die Düse über einen nicht zu bedruckenden Bereich bewegt." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "Einzugsabstand für Abwischen" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "Wert, um den das Filament eingezogen wird, damit es während des Abwischens nicht austritt." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "Zusätzliche Zurückschiebemenge nach Einzug für Abwischen" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "Während einer Bewegung für den Abwischvorgang kann Material wegsickern, was hier kompensiert werden kann." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "Einzugsgeschwindigkeit für Abwischen" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "Die Geschwindigkeit, mit der das Filament während einer Einzugsbewegung eingezogen und während einer Einzugsbewegung für Abwischen zurückgeschoben wird." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "Einzugsgeschwindigkeit (Einzug) für Abwischen" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "Die Geschwindigkeit, mit der das Filament während einer Einzugsbewegung für Abwischen eingezogen wird." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Einzugsgeschwindigkeit (Einzug)" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "Die Geschwindigkeit, mit der das Filament während einer Einzugsbewegung vorbereitet wird." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "Abwischen pausieren" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "Pausieren nach Aufhebung des Einzugs." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "Z-Sprung beim Einziehen - Abwischen" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "Nach dem Einzug wird das Druckbett gesenkt, um einen Abstand zwischen Düse und Druck herzustellen. Das verhindert, dass die Düse den Druck während der Bewegungen anschlägt und verringert die Möglichkeit, dass der Druck vom Druckbett heruntergestoßen wird." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "Z-Sprung Höhe - Abwischen" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "Der Höhenunterschied bei Ausführung eines Z-Sprungs." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "Sprunghöhe - Abwischen" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "Geschwindigkeit für das Verfahren der Z-Achse während des Sprungs." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "X-Position für Bürste - Abwischen" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "X-Position, an der das Skript für Abwischen startet." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "Wiederholungszähler - Abwischen" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "Anzahl der Wiederholungen für das Bewegen der Düse über der Bürste." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "Abstand Wischbewegung" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "Die Strecke, die der Kopf durch Vorwärts- und Rückwärtsbewegung über die Bürste hinweg fährt." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Max. Lochdurchmesser" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Löcher und Teilkonturen mit einem kleineren Durchmesser werden mit Small Feature Speed gedruckt." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Max. Detaillänge" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Teile, die kleiner sind als dieser Wert, werden in Detailgeschwindigkeit gedruckt." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Detailgeschwindigkeit" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Bei kleinen Details wird die Geschwindigkeit auf diesen Prozentsatz der normalen Druckgeschwindigkeit gesetzt. Durch eine niedrigere Druckgeschwindigkeit" +" können die Haftung und die Genauigkeit verbessert werden." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Geschwindigkeit der ersten Schicht von Details" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Bei kleinen Details wird die Geschwindigkeit bei der ersten Schicht auf diesen Prozentsatz der normalen Druckgeschwindigkeit gesetzt. Durch eine niedrigere" +" Druckgeschwindigkeit können die Haftung und die Genauigkeit verbessert werden." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5692,6 +6299,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angewandt wird." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Mindestflächenbreite für Stützstruktur-Schnittstellen-Polygone. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden nicht generiert." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Mindestflächenbreite für die Dächer der Stützstruktur. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden nicht generiert." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Mindestflächenbreite für die Böden der Stützstruktur. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden nicht generiert." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Wechselnde Rotation der Außenhaut" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Die Richtung, in welcher die oberen/unteren Schichten gedruckt werden, wird abgewechselt. Normalerweise werden diese nur diagonal gedruckt. Diese Einstellung fügt die Nur-X- und Nur-Y-Richtung zu." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Ausgleich Durchflussrate max. Extrusionswirkung" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Die maximale Distanz in mm für den Ausgleich." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Ausgleichsfaktor Durchflussrate" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Der Multiplikationsfaktor für die Übersetzung Durchflussrate -> Distanz." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Schwellenwert Anpassschichten" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Das ist der Schwellenwert, der definiert, ob eine kleinere Schicht verwendet wird oder nicht. Dieser Wert wird mit dem der stärksten Neigung in einer Schicht verglichen." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Wände, die über diesen Winkel hinaus hängen, werden mithilfe der Einstellungen für Winkel für überhängende Wände gedruckt. Wenn der Wert 90 beträgt, werden keine Wände als überhängend behandelt." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Bei kleinen Details wird die Geschwindigkeit auf diesen Prozentsatz der normalen Druckgeschwindigkeit gesetzt. Durch eine niedrigere Druckgeschwindigkeit kann die Haftung und die Genauigkeit verbessert werden." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Geschwindigkeit für erste Schicht" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Bei kleinen Details wird die Geschwindigkeit bei der ersten Schicht auf diesen Prozentsatz der normalen Druckgeschwindigkeit gesetzt. Durch eine niedrigere Druckgeschwindigkeit kann die Haftung und die Genauigkeit verbessert werden." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Gehen Sie ein weiteres Mal über die Oberfläche, jedoch ohne Extrusionsmaterial. Damit wird der Kunststoff auf der Oberfläche weiter geschmolzen, was zu einer glatteren Oberfläche führt." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Startet Schichten mit demselben Teil" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Beginnen Sie in jeder Schicht mit dem Drucken des Objekts in der Nähe desselben Punkts, sodass keine neue Schicht begonnen wird, wenn das Teil gedruckt wird, mit dem die letzte Schicht geendet hat. Damit lassen sich Überhänge und kleine Teile besser herstellen, allerdings verlängert sich die Druckzeit." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Ausrichtung des Füllmusters für Unterstützung. Das Füllmuster für Unterstützung wird in der horizontalen Planfläche gedreht." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "Die maximal zulässige Abweichung bei Reduzierung der Auflösung für die Einstellung der maximalen Auflösung. Wenn Sie diesen Wert erhöhen, wird der Druck ungenauer, der G-Code wird jedoch kleiner." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-Code-Variante" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Definieren Sie, ob Kanten am Modell-Umriss die Nahtposition beeinflussen. Keine bedeutet, dass Kanten keinen Einfluss auf die Nahtposition haben. Naht verbergen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden Kante auftreten. Naht offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer Außenkante auftreten. Naht verbergen oder offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden oder außenliegenden Kante auftreten." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Schmale Z-Lücken ignorieren" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Wenn das Modell schmale vertikale Lücken hat, kann etwa 5 % zusätzliche Rechenzeit aufgewendet werden, um eine obere und untere Außenhaut in diesen engen Räumen zu generieren. In diesem Fall deaktivieren Sie die Einstellung." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "Die für die Druckabmessung verwendete Temperatur. Wenn dieser Wert 0 beträgt, wird die Temperatur der Druckabmessung nicht angepasst." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Lassen Sie den Einzug beim Vorgehen von Stützstruktur zu Stützstruktur in einer geraden Linie aus. Die Aktivierung dieser Einstellung spart Druckzeit, kann jedoch zu übermäßigem Fadenziehen innerhalb der Stützstruktur führen." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Maximale Z-Geschwindigkeit" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Die maximale Geschwindigkeit, mit der die Druckplatte bewegt wird. Eine Einstellung auf Null veranlasst die Verwendung der Firmware-Grundeinstellungen für die maximale Z-Geschwindigkeit." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Der Maximalabstand zwischen Stützstrukturen in der X- und Y-Richtung. Wenn sich einzelne Strukturen näher aneinander befinden, als dieser Wert, werden diese Strukturen in eine einzige Struktur zusammengefügt." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Mindestdurchmesser" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Der Mindestdurchmesser in den X/Y-Richtungen eines kleinen Bereichs, der durch einen speziellen Stützpfeiler gestützt wird." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Einzugsturm kreisförmig" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Macht den Einzugsturm zu einer Kreisform." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Fluss-Kompensation: Die extrudierte Materialmenge wird mit diesem Wert multipliziert." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Glättet die spiralförmigen Konturen, um die Sichtbarkeit der Z-Naht zu reduzieren (die Z-Naht sollte auf dem Druck kaum sichtbar sein, ist jedoch in der Schichtenansicht erkennbar). Beachten Sie, dass das Glätten dazu neigt, feine Oberflächendetails zu verwischen." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Experimentelle Funktion: Macht die Bereiche der Stützstruktur am Boden kleiner als beim Überhang." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "Anzahl der aktivierten Extruder" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Düsendurchmesser außen" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Düsenlänge" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Düsenwinkel" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Heizzonenlänge" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Aufheizgeschwindigkeit" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Abkühlgeschwindigkeit" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "G-Code-Variante" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "Unzulässige Bereiche" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Gerätekopf Polygon" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Gerätekopf und Lüfter Polygon" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Brückenhöhe" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Versatz mit Extruder" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "Anpassschichten verwenden" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "Maximale Abweichung für Anpassschichten" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "Abweichung Schrittgröße für Anpassschichten" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "Schwellenwert Anpassschichten" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Das Ausmaß des Überlappens zwischen der Außenhaut und den Wänden als Prozentwert der Außenhaut-Linienbreite. Ein leichtes Überlappen ermöglicht es den Wänden, eine solide Verbindung mit der Außenhaut herzustellen. Dies ist ein Prozentwert der durchschnittlichen Linienbreiten der Außenhautlinien und der innersten Wand." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "Das Ausmaß des Überlappens zwischen der Außenhaut und den Wänden. Ein leichtes Überlappen ermöglicht es den Wänden, eine solide Verbindung mit der Außenhaut herzustellen." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "Der Wert für den Einzug: 0 einstellen, um keinen Einzug zu erhalten. Dies sollte generell mit der Länge der Heizzone übereinstimmen." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "Durch Combing bleibt die Düse während der Bewegung innerhalb von bereits gedruckten Bereichen. Dies führt zu einer leicht verlängerten Bewegungszeit, reduziert jedoch die Notwendigkeit von Einzügen. Wenn Combing deaktiviert ist, wird das Material eingezogen und die Düse bewegt sich in einer geraden Linie zum nächsten Punkt. Es ist außerdem möglich, das Combing über die oberen/unteren Außenhautbereiche zu vermeiden, indem nur die Füllung berücksichtigt wird. Die Option „Innerhalb der Füllung“ verhält sich genauso wie die Option „Nicht in Außenhaut“ in früheren Cura Versionen." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "Außenhaut-Pfade oben/unten verbinden, wenn sie nebeneinander laufen. Bei konzentrischen Mustern reduziert die Aktivierung dieser Einstellung die Durchlaufzeit erheblich. Da die Verbindungen jedoch auf halbem Weg über der Füllung erfolgen können, kann diese Funktion die Oberflächenqualität reduzieren." diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po index e6b5867e39..f971746925 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-09-28 14:55+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Spanish\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Spanish , Spanish \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Ajustes de la máquina" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Archivo GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter no es compatible con el modo sin texto." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Prepare el Gcode antes de la exportación." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Asistente del modelo 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,68 +64,56 @@ msgid "" "

    {model_names}

    \n" "

    Find out how to ensure the best possible print quality and reliability.

    \n" "

    View print quality guide

    " -msgstr "

    Es posible que uno o más modelos 3D no se impriman correctamente debido al tamaño del modelo y la configuración del material:

    \n

    {model_names}

    \n

    Obtenga más información sobre cómo garantizar la mejor calidad y fiabilidad de impresión posible.

    \n

    Ver guía de impresión de calidad

    " - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Mostrar registro de cambios" +msgstr "" +"

    Es posible que uno o más modelos 3D no se impriman correctamente debido al tamaño del modelo y la configuración del material:

    \n" +"

    {model_names}

    \n" +"

    Obtenga más información sobre cómo garantizar la mejor calidad y fiabilidad de impresión posible.

    \n" +"

    Ver guía de impresión de calidad

    " #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Actualizar firmware" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Aplanar ajustes activos" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Archivo AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "El perfil se ha aplanado y activado." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impresión USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Conectado mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Se está realizando una impresión con USB, si cierra Cura detendrá la impresión. ¿Desea continuar?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Archivo X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Todavía hay una impresión en curso. Cura no puede iniciar otra impresión a través de USB hasta que se haya completado la impresión anterior." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Escribe X3g en archivos" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Archivo X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Impresión en curso" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -139,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "GCodeGzWriter no es compatible con el modo texto." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Paquete de formato Ultimaker" @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Guardar en unidad extraíble {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "¡No hay formatos de archivo disponibles con los que escribir!" @@ -197,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "No se pudo guardar en unidad extraíble {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Error" @@ -228,8 +217,9 @@ msgstr "Expulsar dispositivo extraíble {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Advertencia" @@ -256,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unidad extraíble" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Imprimir a través de la red" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Imprime a través de la red" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Conectado a través de la red." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Conectado a través de la red. Apruebe la solicitud de acceso en la impresora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Conectado a través de la red. No hay acceso para controlar la impresora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Acceso a la impresora solicitado. Apruebe la solicitud en la impresora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Estado de la autenticación" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "Estado de la autenticación" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Volver a intentar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Reenvía la solicitud de acceso" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Acceso a la impresora aceptado" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "No hay acceso para imprimir con esta impresora. No se puede enviar el trabajo de impresión." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Solicitar acceso" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Envía la solicitud de acceso a la impresora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "No se puede iniciar un nuevo trabajo de impresión." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Un problema con la configuración de Ultimaker impide iniciar la impresión. Soluciónelo antes de continuar." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Configuración desajustada" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "¿Seguro que desea imprimir con la configuración seleccionada?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "La configuración o calibración de la impresora y de Cura no coinciden. Para obtener el mejor resultado, segmente siempre los PrintCores y los materiales que se insertan en la impresora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "Envío de nuevos trabajos (temporalmente) bloqueado; se sigue enviando el trabajo de impresión previo." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Enviando datos a la impresora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Enviando datos" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancelar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "No se ha cargado ningún PrintCore en la ranura {slot_number}." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "No se ha cargado ningún material en la ranura {slot_number}." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "PrintCore distinto (Cura: {cura_printcore_name}, impresora: {remote_printcore_name}) seleccionado para extrusor {extruder_id}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Material distinto (Cura: {0}, impresora: {1}) seleccionado para extrusor {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Sincronizar con la impresora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "¿Desea utilizar la configuración actual de su impresora en Cura?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Los PrintCores o los materiales de la impresora difieren de los del proyecto actual. Para obtener el mejor resultado, segmente siempre los PrintCores y materiales que se hayan insertado en la impresora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Conectado a través de la red" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "El trabajo de impresión se ha enviado correctamente a la impresora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Fecha de envío" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Ver en pantalla" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} ha terminado de imprimir «{job_name}»." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "El trabajo de impresión '{job_name}' ha terminado." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Impresión terminada" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Conectar a través de la red" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Imprimir a través de la red" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Imprime a través de la red" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Conectado a través de la red" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Espere hasta que se envíe el trabajo actual." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Error de impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Se han encontrado nuevas impresoras en la nube" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Se han encontrado nuevas impresoras conectadas a tu cuenta; puedes verlas en la lista de impresoras descubiertas." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "No volver a mostrar este mensaje" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Está intentando conectarse a {0} pero ese no es el host de un grupo. Puede visitar la página web para configurarlo como host de grupo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "No es un host de grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Configurar grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Envíe y supervise sus trabajos de impresión desde cualquier lugar a través de su cuenta de Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Conectar a Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Empezar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Enviando trabajo de impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Cargando el trabajo de impresión a la impresora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "El trabajo de impresión se ha enviado correctamente a la impresora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Fecha de envío" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Está intentando conectarse a una impresora que no está ejecutando Ultimaker Connect. Actualice la impresora al firmware más reciente." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Actualice su impresora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura ha detectado perfiles de material que aún no estaban instalados en la impresora host del grupo {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Enviando materiales a la impresora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "No se han podido cargar los datos en la impresora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Error de red" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "mañana" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "hoy" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Imprimir mediante Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Imprimir mediante Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Conectado mediante Cloud" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Supervisar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "No se pudo acceder a la información actualizada." @@ -503,22 +425,28 @@ msgctxt "@action:button" msgid "How to update" msgstr "Cómo actualizar" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Vista de capas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura no muestra correctamente las capas si la impresión de alambre está habilitada" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Vista de simulación" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "Posprocesamiento" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" msgstr "Modificar GCode" @@ -532,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "Cree un volumen que no imprima los soportes." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura recopila estadísticas de uso de forma anónima." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "Recopilando datos" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "Más información" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Obtenga más información sobre qué datos envía Cura." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "Permitir" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Permitir a Cura enviar estadísticas de uso de forma anónima para ayudar a priorizar mejoras futuras para Cura. Se envían algunas de sus preferencias y ajustes, la versión de Cura y un resumen de los modelos que está fragmentando." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -592,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagen GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF binario" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF incrustado JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange comprimido" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "No se puede segmentar con el material actual, ya que es incompatible con el dispositivo o la configuración seleccionados." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "No se puede segmentar" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Los ajustes actuales no permiten la segmentación. Los siguientes ajustes contienen errores: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Los ajustes de algunos modelos no permiten la segmentación. Los siguientes ajustes contienen errores en uno o más modelos: {error_labels}." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "No se puede segmentar porque la torre auxiliar o la posición o posiciones de preparación no son válidas." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "No se puede segmentar porque hay objetos asociados al extrusor %s que está deshabilitado." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "No hay nada que segmentar porque ninguno de los modelos se adapta al volumen de impresión. Escale o rote los modelos para que se adapten." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "No hay nada que segmentar porque ninguno de los modelos se adapta al volumen de impresión o los modelos están asignados a un extrusor deshabilitado. Escale o rote los modelos para que se adapten o habilite un extrusor." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "Procesando capas" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Información" @@ -656,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Configurar ajustes por modelo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -674,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Archivo 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Tobera" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." -msgstr "El archivo del proyecto{0} contiene un tipo de máquina desconocida {1}. No se puede importar la máquina, en su lugar, se importarán los modelos." +msgstr "El archivo del proyecto {0} contiene un tipo de máquina desconocida {1}. No se puede importar la máquina, en su lugar, se importarán los modelos." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Abrir archivo de proyecto" @@ -701,22 +627,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Archivo G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analizar GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Datos de GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Asegúrese de que el GCode es adecuado para la impresora y para su configuración antes de enviar el archivo a la misma. Es posible que la representación del GCode no sea precisa." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "Administrar copias de seguridad" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "Copia de seguridad" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "Se ha producido un error al obtener sus copias de seguridad." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "Se ha producido un error al intentar restaurar su copia de seguridad." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "Copias de seguridad" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "Cargando su copia de seguridad..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "Se ha producido un error al cargar su copia de seguridad." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "Su copia de seguridad ha terminado de cargarse." + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -738,330 +707,453 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "Error al escribir el archivo 3MF." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "Vista previa" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Seleccionar actualizaciones" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Comprobación" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Nivelar placa de impresión" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Pared exterior" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Paredes interiores" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Forro" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Relleno" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Relleno de soporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interfaz de soporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Soporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Falda" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Desplazamiento" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retracciones" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Otro" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Archivo {0} presegmentado" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "Fallo de inicio de sesión" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "No compatible" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "El archivo ya existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "El archivo {0} ya existe. ¿Está seguro de que desea sobrescribirlo?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "No reemplazado" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "El material seleccionado no es compatible con la máquina o la configuración seleccionada." +msgid "Invalid file URL:" +msgstr "URL del archivo no válida:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Material incompatible" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "La configuración se ha cambiado para que coincida con los extrusores disponibles en este momento:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "La configuración se ha cambiado para que coincida con los extrusores disponibles en este momento: [%s]." - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Ajustes actualizados" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "Extrusores deshabilitados" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconocido" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Error al exportar el perfil a {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Error al exportar el perfil a {0}: Error en el complemento de escritura." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Perfil exportado a {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Exportación correcta" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "Error al importar el perfil de {0}: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "Error al importar el perfil de {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "No se puede importar el perfil de {0} antes de añadir una impresora." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" -msgstr "No hay ningún perfil personalizado para importar en el archivo {0}." +msgstr "No hay ningún perfil personalizado para importar en el archivo {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Error al importar el perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Este perfil {0} contiene datos incorrectos, no se han podido importar." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "El equipo definido en el perfil {0} ({1}) no coincide con el equipo actual ({2}), no se ha podido importar." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Error al importar el perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado correctamente" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "El archivo {0} no contiene ningún perfil válido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "El perfil {0} tiene un tipo de archivo desconocido o está corrupto." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Al perfil le falta un tipo de calidad." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "No se ha podido encontrar un tipo de calidad {0} para la configuración actual." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Pared exterior" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Paredes interiores" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Forro" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Relleno" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Relleno de soporte" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interfaz de soporte" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Soporte" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Falda" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "Torre auxiliar" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Desplazamiento" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retracciones" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Otro" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Archivo {0} presegmentado" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "Siguiente" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "N.º de grupo {group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "Impresoras de red habilitadas" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Cerrar" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "Impresoras locales" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Agregar" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visual" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "El perfil visual está diseñado para imprimir prototipos y modelos visuales con la intención de obtener una alta calidad visual y de superficies." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "El perfil de ingeniería ha sido diseñado para imprimir prototipos funcionales y piezas de uso final con la intención de obtener una mayor precisión y tolerancias" +" más precisas." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Boceto" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "El perfil del boceto ha sido diseñado para imprimir los prototipos iniciales y la validación del concepto con la intención de reducir el tiempo de impresión" +" de manera considerable." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "No reemplazado" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Perfiles personalizados" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Todos los tipos compatibles ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Todos los archivos (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Material personalizado" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Las siguientes impresoras no pueden conectarse porque forman parte de un grupo" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Impresoras en red disponibles" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "La altura del volumen de impresión se ha reducido debido al valor del ajuste «Secuencia de impresión» para evitar que el caballete colisione con los modelos impresos." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Volumen de impresión" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "No se ha podido crear el archivo desde el directorio de datos de usuario: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "Copia de seguridad" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "Se ha intentado restaurar una copia de seguridad de Cura sin tener los datos o metadatos adecuados." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "Se ha intentado restaurar una copia de seguridad de Cura que no coincide con la versión actual." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "Se ha intentado restaurar una copia de seguridad de Cura superior a la versión actual." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "No se ha podido leer la respuesta." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "No se puede acceder al servidor de cuentas de Ultimaker." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Conceda los permisos necesarios al autorizar esta aplicación." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Se ha producido un problema al intentar iniciar sesión, vuelva a intentarlo." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplicar y colocar objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "Colocando objeto" +msgid "Placing Objects" +msgstr "Colocando objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "No se puede encontrar una ubicación dentro del volumen de impresión para todos los objetos" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "Colocando objeto" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Buscando nueva ubicación para los objetos" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "Buscando ubicación" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "No se puede encontrar la ubicación" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Cura no puede iniciarse" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1069,356 +1161,328 @@ msgid "" "

    Backups can be found in the configuration folder.

    \n" "

    Please send us this Crash Report to fix the problem.

    \n" " " -msgstr "

    ¡Vaya! Ultimaker Cura ha encontrado un error.

    \n

    Hemos detectado un error irreversible durante el inicio, posiblemente como consecuencia de varios archivos de configuración erróneos. Le recomendamos que realice una copia de seguridad y que restablezca los ajustes.

    \n

    Las copias de seguridad se encuentran en la carpeta de configuración.

    \n

    Envíenos el informe de errores para que podamos solucionar el problema.

    \n " +msgstr "" +"

    ¡Vaya! Ultimaker Cura ha encontrado un error.

    \n" +"

    Hemos detectado un error irreversible durante el inicio, posiblemente como consecuencia de varios archivos de configuración erróneos. Le recomendamos que realice una copia de seguridad y que restablezca los ajustes.

    \n" +"

    Las copias de seguridad se encuentran en la carpeta de configuración.

    \n" +"

    Envíenos el informe de errores para que podamos solucionar el problema.

    \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "Enviar informe de errores a Ultimaker" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "Mostrar informe de errores detallado" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "Mostrar carpeta de configuración" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "Realizar copia de seguridad y restablecer configuración" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Informe del accidente" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" "

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" " " -msgstr "

    Se ha producido un error grave en Cura. Envíenos este informe de errores para que podamos solucionar el problema.

    \n

    Utilice el botón \"Enviar informe\" para publicar automáticamente el informe de errores en nuestros servidores.

    \n " +msgstr "" +"

    Se ha producido un error grave en Cura. Envíenos este informe de errores para que podamos solucionar el problema.

    \n" +"

    Utilice el botón \"Enviar informe\" para publicar automáticamente el informe de errores en nuestros servidores.

    \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "Información del sistema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Desconocido" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Versión de Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "Plataforma" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Versión Qt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "Versión PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "Aún no se ha inicializado
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • Versión de OpenGL: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • Proveedor de OpenGL: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • Representador de OpenGL: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "Rastreabilidad de errores" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "Registros" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "Descripción del usuario" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "Descripción del usuario (Nota: es posible que los desarrolladores no hablen su idioma; si es posible, utilice el inglés)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Enviar informe" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Cargando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Configurando preferencias...." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando escena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Cargando interfaz..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Solo se puede cargar un archivo GCode a la vez. Se omitió la importación de {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "No se puede abrir ningún archivo si se está cargando un archivo GCode. Se omitió la importación de {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "No se puede cargar el modelo seleccionado, es demasiado pequeño." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Ajustes de la máquina" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Impresora" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Ajustes de la impresora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (anchura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (profundidad)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (altura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Forma de la placa de impresión" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "Origen en el centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" -msgstr "Plataforma caliente" +msgstr "Plataforma calentada" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "Volumen de impresión calentado" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "Tipo de GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Ajustes del cabezal de impresión" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distancia desde la parte izquierda del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distancia desde la parte frontal del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distancia desde la parte derecha del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distancia desde la parte trasera del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" -msgstr "Altura del caballete" +msgid "Gantry Height" +msgstr "Altura del puente" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "Diferencia de altura entre la punta de la tobera y el sistema del puente (ejes X e Y). Se usa para evitar que colisionen la impresión anterior con el caballete al imprimir «de uno en uno»." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "Iniciar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "Los comandos de GCode que se ejecutarán justo al inicio." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "Finalizar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "Los comandos de GCode que se ejecutarán justo al final." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Impresora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "Ajustes de la tobera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Tamaño de la tobera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Diámetro del material compatible" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "El diámetro nominal del filamento compatible con la impresora. El diámetro exacto se sobrescribirá según el material o el perfil." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "Desplazamiento de la tobera sobre el eje X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Desplazamiento de la tobera sobre el eje Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Número de ventilador de enfriamiento" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "GCode inicial del extrusor" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "GCode final del extrusor" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "Instalar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" @@ -1428,69 +1492,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "No se ha podido conectar con la base de datos del Paquete Cura. Compruebe la conexión." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "calificaciones" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Complementos" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiales" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "Su calificación" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "Versión" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "Última actualización" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "Autor" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "Descargas" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Desconocido" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "Inicie sesión para realizar la instalación o la actualización" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "Comprar bobinas de material" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "Actualizar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "Actualizando" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "Actualizado" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "Cuadro de herramientas" +msgid "Marketplace" +msgstr "Marketplace" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1517,52 +1594,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "Perfiles" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "Confirmar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "Debe iniciar sesión antes de enviar sus calificaciones" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "Debe instalar el paquete antes de enviar sus calificaciones" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "Tendrá que reiniciar Cura para que los cambios de los paquetes surtan efecto." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Salir de Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Contribuciones de la comunidad" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Complementos de la comunidad" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Materiales genéricos" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "Instalado" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "Se instalará después de reiniciar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "Inicie sesión para realizar la actualización" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "Degradar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "Desinstalar" @@ -1578,14 +1670,17 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "Este complemento incluye una licencia.\nDebe aceptar dicha licencia para instalar el complemento.\n¿Acepta las condiciones que aparecen a continuación?" +msgstr "" +"Este complemento incluye una licencia.\n" +"Debe aceptar dicha licencia para instalar el complemento.\n" +"¿Acepta las condiciones que aparecen a continuación?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Aceptar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Rechazar" @@ -1595,22 +1690,62 @@ msgctxt "@label" msgid "Featured" msgstr "Destacado" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibilidad" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Máquina" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Placa de impresión" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Soporte" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Calidad" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "Especificaciones técnicas" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "Especificaciones de seguridad" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "Directrices de impresión" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "Sitio web" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "Buscando paquetes..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "Sitio web" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "Correo electrónico" @@ -1618,24 +1753,7 @@ msgstr "Correo electrónico" #: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.qml:22 msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." -msgstr "Algunos elementos pueden causar problemas durante la impresión. Haga clic para ver consejos sobre cómo ajustarla." - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Registro de cambios" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Cerrar" +msgstr "Algunos elementos pueden causar problemas durante la impresión. Haga clic para ver consejos sobre cómo ajustarlos." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" @@ -1712,423 +1830,505 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Se ha producido un error al actualizar el firmware porque falta el firmware." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "Acuerdo de usuario" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Administrar impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Conexión existente" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Vidrio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "Esta impresora o grupo de impresoras ya se ha añadido a Cura. Seleccione otra impresora o grupo de impresoras." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Actualice el firmware de la impresora para gestionar la cola de forma remota." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "La cámara web no se encuentra disponible porque está supervisando una impresora en la nube." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "Cargando..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "No disponible" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "No se puede conectar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "Sin actividad" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "Sin título" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "Anónimo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "Debe cambiar la configuración" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "Detalles" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "Impresora no disponible" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "Primera disponible" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "En cola" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "Gestionar en el navegador" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "No hay trabajos de impresión en la cola. Segmentar y enviar un trabajo para añadir uno." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "Trabajos de impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "Tiempo de impresión total" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "Esperando" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Conectar con la impresora en red" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "Para imprimir directamente en la impresora a través de la red, asegúrese de que esta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n\nSeleccione la impresora de la siguiente lista:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Para imprimir directamente a través de la red, asegúrese de que la impresora está conectada a la red mediante un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Agregar" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Seleccione la impresora en la lista siguiente:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Editar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Eliminar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Actualizar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Si la impresora no aparece en la lista, lea la guía de solución de problemas de impresión y red" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Versión de firmware" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Dirección" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Esta impresora no está configurada para alojar un grupo de impresoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Esta impresora aloja un grupo de %1 impresoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "La impresora todavía no ha respondido en esta dirección." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Conectar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Dirección IP no válida" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "Introduzca una dirección IP válida." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Dirección de la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Introduzca la dirección IP o el nombre de host de la impresora en red." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "Introduzca la dirección IP de la impresora en la red." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "Aceptar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimir" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Imprimir a través de la red" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "Selección de la impresora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "No disponible" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "No se puede conectar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "Disponible" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "Cancelado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Terminado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "Preparando" +msgid "Preparing..." +msgstr "Preparando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "Pausando" +msgid "Aborting..." +msgstr "Cancelando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "Reanudando" +msgid "Pausing..." +msgstr "Pausando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "En pausa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "Reanudando..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Acción requerida" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "Termina el %1 a las %2" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Imprimir a través de la red" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "Esperando: impresora no disponible" +msgid "Printer selection" +msgstr "Selección de la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "Esperando: primera disponible" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "Esperando: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "Cambio de configuración" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "Es necesario modificar la siguiente configuración de la impresora asignada %1:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "Se ha asignado la impresora 1%, pero el trabajo tiene una configuración de material desconocido." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "Cambiar material %1, de %2 a %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "Cargar %3 como material %1 (no se puede anular)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "Cambiar print core %1, de %2 a %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "Cambiar la placa de impresión a %1 (no se puede anular)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "Anular" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "Iniciar un trabajo de impresión con una configuración no compatible puede causar daños en su impresora 3D. ¿Seguro de que desea sobrescribir la configuración e imprimir %1?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "Sobrescribir la configuración e iniciar la impresión" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "Vidrio" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "Aluminio" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "Administrar cola" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "En cola" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "Imprimiendo" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "Administrar impresoras" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "Mover al principio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "Borrar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "Reanudar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "Pausando..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "Reanudando..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "Pausar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "Cancelando..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "¿Seguro que desea mover %1 al principio de la cola?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "Mover trabajo de impresión al principio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "¿Seguro que desea borrar %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "Borrar trabajo de impresión" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "¿Seguro que desea cancelar %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Cancela la impresión" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Conecta a una impresora" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "Cambios de configuración" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Activar configuración" +msgid "Override" +msgstr "Anular" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Carga la configuración de la impresora en Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "Es necesario realizar el siguiente cambio de configuración en la impresora asignada %1:" +msgstr[1] "Es necesario realizar los siguientes cambios de configuración en la impresora asignada %1:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "Se ha asignado la impresora %1, pero el trabajo tiene una configuración de material desconocido." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "Cambiar material %1, de %2 a %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "Cargar %3 como material %1 (no se puede anular)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "Cambiar print core %1, de %2 a %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "Cambiar la placa de impresión a %1 (no se puede anular)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "Al sobrescribir la configuración se usarán los ajustes especificados con la configuración de impresora existente. Esto podría provocar un fallo en la impresión." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "Aluminio" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"Asegúrese de que la impresora está conectada:\n" +"- Compruebe que la impresora está encendida.\n" +"- Compruebe que la impresora está conectada a la red.\n" +"- Compruebe que ha iniciado sesión para ver impresoras conectadas a la nube." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "Conecte su impresora a la red." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "Ver manuales de usuario en línea" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Combinación de colores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Color del material" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Tipo de línea" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Velocidad" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Grosor de la capa" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modo de compatibilidad" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "Mostrar desplazamientos" +msgid "Travels" +msgstr "Desplazamientos" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "Mostrar asistentes" +msgid "Helpers" +msgstr "Asistentes" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "Mostrar perímetro" +msgid "Shell" +msgstr "Perímetro" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "Mostrar relleno" +msgid "Infill" +msgstr "Relleno" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Mostrar solo capas superiores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Mostrar cinco capas detalladas en la parte superior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Superior o inferior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Pared interior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "mín." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "máx." @@ -2143,40 +2343,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Secuencias de comandos de posprocesamiento" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Añadir secuencia de comando" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Cambia las secuencias de comandos de posprocesamiento" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "Más información sobre la recopilación de datos anónimos" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura envía datos anónimos a Ultimaker para mejorar la calidad de impresión y la experiencia de usuario. A continuación, hay un ejemplo de todos los datos que se han enviado." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura recopila datos anónimos para mejorar la calidad de impresión y la experiencia de usuario. A continuación, hay un ejemplo de todos los datos que se comparten:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "No quiero enviar estos datos" +msgid "I don't want to send anonymous data" +msgstr "No deseo enviar datos anónimos" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Permita enviar estos datos a Ultimaker y ayúdenos a mejorar Cura" +msgid "Allow sending anonymous data" +msgstr "Permitir el envío de datos anónimos" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2225,19 +2425,19 @@ msgstr "Profundidad (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "De manera predeterminada, los píxeles blancos representan los puntos altos de la malla y los píxeles negros representan los puntos bajos de la malla. Cambie esta opción para invertir el comportamiento de tal manera que los píxeles negros representen los puntos altos de la malla y los píxeles blancos representen los puntos bajos de la malla." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Cuanto más claro más alto" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "Para las litofanías, los píxeles oscuros deben coincidir con ubicaciones más gruesas para bloquear la entrada de más luz. En los mapas de altura, los píxeles más claros se corresponden con un terreno más alto, por lo que dichos píxeles deben coincidir con ubicaciones más gruesas en el modelo 3D generado." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Cuanto más oscuro más alto" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Cuanto más claro más alto" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2248,81 +2448,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavizado" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Tipo de malla" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Modelo normal" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Imprimir como soporte" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "No crear soporte en otros modelos (por superposición)" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Modificar ajustes de otros modelos (por superposición)" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modificar ajustes del relleno de otros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Seleccionar ajustes" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Seleccionar ajustes o personalizar este modelo" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostrar todo" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo de malla" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Modelo normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimir como soporte" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modificar los ajustes de las superposiciones" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "No es compatible con superposiciones" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Solo relleno" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Seleccionar ajustes" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Abrir proyecto" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Actualizar existente" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Crear nuevo" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Resumen: proyecto de Cura" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Ajustes de la impresora" @@ -2338,20 +2537,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Actualizar" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Crear nuevo" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "Grupo de impresoras" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Ajustes del perfil" @@ -2362,226 +2566,222 @@ msgid "How should the conflict in the profile be resolved?" msgstr "¿Cómo debería solucionarse el conflicto en el perfil?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nombre" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "No está en el perfil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 sobrescrito" msgstr[1] "%1 sobrescritos" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivado de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 sobrescrito" msgstr[1] "%1, %2 sobrescritos" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Ajustes del material" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "¿Cómo debería solucionarse el conflicto en el material?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilidad de los ajustes" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Ajustes visibles:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 de un total de %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Si carga un proyecto, se borrarán todos los modelos de la placa de impresión." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Abrir" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Seleccionar actualizaciones de impresora" +msgid "My Backups" +msgstr "Mis copias de seguridad" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Seleccione cualquier actualización de este Ultimaker 2." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "Actualmente no posee ninguna copia de seguridad. Utilice el botón de Realizar copia de seguridad ahora para crear una." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Bloque Olsson" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "Durante la fase de vista previa, solo se mostrarán 5 copias de seguridad. Elimine una copia de seguridad para ver copias de seguridad antiguas." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Realice una copia de seguridad y sincronice sus ajustes de Cura." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "Iniciar sesión" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Copias de seguridad de Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Versión de Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "Máquinas" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "Materiales" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "Perfiles" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "Complementos" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "Restaurar" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "Eliminar copia de seguridad" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "¿Seguro que desea eliminar esta copia de seguridad? Esta acción no se puede deshacer." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "Restaurar copia de seguridad" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "Deberá reiniciar Cura para restaurar su copia de seguridad. ¿Desea cerrar Cura ahora?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "¿Desea obtener más información?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "Realizar copia de seguridad ahora" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "Copia de seguridad automática" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Crea una copia de seguridad de forma automática cada día que inicia Cura." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Nivelación de la placa de impresión" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Ahora puede ajustar la placa de impresión para asegurarse de que sus impresiones salgan muy bien. Al hacer clic en 'Mover a la siguiente posición', la tobera se trasladará a las diferentes posiciones que se pueden ajustar." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Para cada posición: inserte una hoja de papel debajo de la tobera y ajuste la altura de la placa de impresión. La altura de la placa de impresión es correcta cuando el papel queda ligeramente sujeto por la punta de la tobera." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Iniciar nivelación de la placa de impresión" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Mover a la siguiente posición" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Seleccione cualquier actualización de Ultimaker Original" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "Placa de impresión caliente (kit oficial o construida por usted mismo)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Comprobar impresora" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "Es una buena idea hacer un par de comprobaciones en su Ultimaker. Puede omitir este paso si usted sabe que su máquina funciona correctamente" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Iniciar comprobación de impresora" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Conexión: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Conectado" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Sin conexión" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Parada final mín. en X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Funciona" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Sin comprobar" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Parada final mín. en Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Parada final mín. en Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Comprobación de la temperatura de la tobera: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Detener calentamiento" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Iniciar calentamiento" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Comprobación de la temperatura de la placa de impresión:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Comprobada" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "¡Todo correcto! Ha terminado con la comprobación." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2593,7 +2793,6 @@ msgid "Printer does not accept commands" msgstr "La impresora no acepta comandos" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "En mantenimiento. Compruebe la impresora" @@ -2604,19 +2803,16 @@ msgid "Lost connection with the printer" msgstr "Se ha perdido la conexión con la impresora" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Imprimiendo..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "En pausa" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparando..." @@ -2636,233 +2832,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "¿Está seguro de que desea cancelar la impresión?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Descartar o guardar cambios" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "Ha personalizado parte de los ajustes del perfil.\n¿Desea descartar los cambios o guardarlos?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Ajustes del perfil" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Valor predeterminado" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Valor personalizado" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Preguntar siempre" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Descartar y no volver a preguntar" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Guardar y no volver a preguntar" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Descartar" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Guardar" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Crear nuevo perfil" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Información" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Confirmar cambio de diámetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "El nuevo diámetro del filamento está ajustado en %1 mm y no es compatible con el extrusor actual. ¿Desea continuar?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Mostrar nombre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marca" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Tipo de material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Color" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Propiedades" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Densidad" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diámetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Coste del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" -msgstr "Anchura del filamento" +msgstr "Peso del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Longitud del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Coste por metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Este material está vinculado a %1 y comparte alguna de sus propiedades." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Desvincular material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Descripción" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Información sobre adherencia" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Ajustes de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Activar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Crear" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplicado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Exportar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Impresora" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Confirmar eliminación" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "¿Seguro que desea eliminar %1? ¡Esta acción no se puede deshacer!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importar material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "No se pudo importar el material en %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "El material se ha importado correctamente en %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Exportar material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Se ha producido un error al exportar el material a %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "El material se ha exportado correctamente a %1" @@ -2872,817 +3011,784 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Visibilidad de los ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Comprobar todo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Calculado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Actual" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Unidad" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "General" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Interfaz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Moneda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Tendrá que reiniciar la aplicación para que estos cambios tengan efecto." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Segmentar automáticamente al cambiar los ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Segmentar automáticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamiento de la ventanilla" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Resaltar en rojo las áreas del modelo sin soporte. Sin soporte, estas áreas no se imprimirán correctamente." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Mostrar voladizos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Mueve la cámara de manera que el modelo se encuentre en el centro de la vista cuando se selecciona un modelo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centrar cámara cuando se selecciona elemento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "¿Se debería invertir el comportamiento predeterminado del zoom de cura?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Invertir la dirección del zoom de la cámara." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "¿Debería moverse el zoom en la dirección del ratón?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Hacer zoom en la dirección del ratón no es compatible con la perspectiva ortográfica." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Hacer zoom en la dirección del ratón" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "¿Deben moverse los modelos en la plataforma de modo que no se crucen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" -msgstr "Asegúrese de que lo modelos están separados" +msgstr "Asegúrese de que los modelos están separados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "¿Deben moverse los modelos del área de impresión de modo que no toquen la placa de impresión?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Arrastrar modelos a la placa de impresión de forma automática" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Se muestra el mensaje de advertencia en el lector de GCode." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Mensaje de advertencia en el lector de GCode" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "¿Debe forzarse el modo de compatibilidad de la capa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forzar modo de compatibilidad de la vista de capas (necesario reiniciar)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "¿Debería abrirse Cura en el lugar donde se cerró?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Restaurar la posición de la ventana al inicio" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "¿Qué tipo de renderizado de cámara debería usarse?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Renderizado de cámara:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspectiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ortográfica" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrir y guardar archivos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "¿Deben ajustarse los modelos al volumen de impresión si son demasiado grandes?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Escalar modelos de gran tamaño" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Un modelo puede mostrarse demasiado pequeño si su unidad son metros en lugar de milímetros, por ejemplo. ¿Deben escalarse estos modelos?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Escalar modelos demasiado pequeños" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "¿Se deberían seleccionar los modelos después de haberse cargado?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Seleccionar modelos al abrirlos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "¿Debe añadirse automáticamente un prefijo basado en el nombre de la impresora al nombre del trabajo de impresión?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Agregar prefijo de la máquina al nombre del trabajo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "¿Mostrar un resumen al guardar un archivo de proyecto?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Mostrar un cuadro de diálogo de resumen al guardar el proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamiento predeterminado al abrir un archivo del proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamiento predeterminado al abrir un archivo del proyecto: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Preguntar siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Abrir siempre como un proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importar modelos siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Si ha realizado cambios en un perfil y, a continuación, ha cambiado a otro, aparecerá un cuadro de diálogo que le preguntará si desea guardar o descartar los cambios. También puede elegir el comportamiento predeterminado, así ese cuadro de diálogo no volverá a aparecer." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Perfiles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Comportamiento predeterminado para los valores modificados al cambiar a otro perfil: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Preguntar siempre" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Descartar siempre los ajustes modificados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Transferir siempre los ajustes modificados al nuevo perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privacidad" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "¿Debe Cura buscar actualizaciones cuando se abre el programa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Buscar actualizaciones al iniciar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "¿Deben enviarse datos anónimos sobre la impresión a Ultimaker? Tenga en cuenta que no se envían ni almacenan modelos, direcciones IP ni otra información de identificación personal." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Enviar información (anónima) de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Más información" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "Experimental" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Utilizar funcionalidad de placa de impresión múltiple" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "Utilizar funcionalidad de placa de impresión múltiple (reinicio requerido)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Impresoras" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Cambiar nombre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Tipo de impresora:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Conexión:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "La impresora no está conectada." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "Estado:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "Esperando un trabajo de impresión" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "Esperando a que alguien limpie la placa de impresión" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Cancelando impresión..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfiles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Crear" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplicado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Crear perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "Introduzca un nombre para este perfil." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplicar perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Cambiar nombre de perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importar perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Exportar perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Impresora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Perfiles protegidos" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Perfiles personalizados" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Actualizar perfil con ajustes o sobrescrituras actuales" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Descartar cambios actuales" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Este perfil utiliza los ajustes predeterminados especificados por la impresora, por eso no aparece ningún ajuste o sobrescritura en la lista que se ve a continuación." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Los ajustes actuales coinciden con el perfil seleccionado." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Ajustes globales" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Agregar impresora" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Nombre de la impresora:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Agregar impresora" +msgid "Marketplace" +msgstr "Marketplace" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&Archivo" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&Edición" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Ver" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "A&justes" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "E&xtensiones" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "Pre&ferencias" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "A&yuda" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Nuevo proyecto" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "¿Está seguro de que desea iniciar un nuevo proyecto? Esto borrará la placa de impresión y cualquier ajuste no guardado." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "Sin título" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "Acerca de Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "versión: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "Solución completa para la impresión 3D de filamento fundido." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "Ultimaker B.V. ha desarrollado Cura en cooperación con la comunidad.\nCura se enorgullece de utilizar los siguientes proyectos de código abierto:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Interfaz gráfica de usuario (GUI)" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Entorno de la aplicación" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "Generador de GCode" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Biblioteca de comunicación entre procesos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Lenguaje de programación" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "Entorno de la GUI" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "Enlaces del entorno de la GUI" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "Biblioteca de enlaces C/C++" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Formato de intercambio de datos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Biblioteca de apoyo para cálculos científicos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Biblioteca de apoyo para cálculos más rápidos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Biblioteca de apoyo para gestionar archivos STL" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "Biblioteca de compatibilidad para trabajar con objetos planos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "Biblioteca de compatibilidad para trabajar con mallas triangulares" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "Biblioteca de compatibilidad para analizar redes complejas" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Biblioteca de compatibilidad para trabajar con archivos 3MF" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "Biblioteca de compatibilidad para metadatos y transmisión de archivos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Biblioteca de comunicación en serie" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "Biblioteca de detección para Zeroconf" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Biblioteca de recorte de polígonos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Biblioteca HTTP de Python" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Fuente" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "Iconos SVG" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Implementación de la aplicación de distribución múltiple de Linux" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Perfil:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Algunos valores de los ajustes o sobrescrituras son distintos a los valores almacenados en el perfil.\n\nHaga clic para abrir el administrador de perfiles." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Buscar..." +msgid "Search settings" +msgstr "Buscar ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copiar valor en todos los extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Copiar todos los valores cambiados en todos los extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "No mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar visibilidad de los ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "Contraer todo" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "Ampliar todo" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Algunos ajustes ocultos utilizan valores diferentes de los valores normales calculados.\n\nHaga clic para mostrar estos ajustes." +msgstr "" +"Algunos ajustes ocultos utilizan valores diferentes de los valores normales calculados.\n" +"\n" +"Haga clic para mostrar estos ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "Este ajuste no se utiliza porque los ajustes a los que afecta están sobrescritos." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Afecta a" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Afectado por" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Este ajuste siempre se comparte entre extrusores. Si lo modifica, modificará el valor de todos los extrusores." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "El valor se resuelve según los valores de los extrusores. " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Este ajuste tiene un valor distinto del perfil.\n\nHaga clic para restaurar el valor del perfil." +msgstr "" +"Este ajuste tiene un valor distinto del perfil.\n" +"\n" +"Haga clic para restaurar el valor del perfil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Este ajuste se calcula normalmente pero actualmente tiene un valor absoluto establecido.\n\nHaga clic para restaurar el valor calculado." +msgstr "" +"Este ajuste se calcula normalmente pero actualmente tiene un valor absoluto establecido.\n" +"\n" +"Haga clic para restaurar el valor calculado." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "Recomendado" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "Relleno gradual" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "Un relleno gradual aumentará gradualmente la cantidad de relleno hacia arriba." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "Soporte" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Generar estructuras para soportar piezas del modelo que tengan voladizos. Sin estas estructuras, estas piezas se romperían durante la impresión." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "Adherencia" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Habilita la impresión de un borde o una balsa. Esta opción agregará un área plana alrededor del objeto, que es fácil de cortar después." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Ha modificado algunos ajustes del perfil. Si desea cambiarlos, hágalo en el modo personalizado." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "Encendido" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "Apagado" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimental" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "Perfil" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Algunos valores de los ajustes o sobrescrituras son distintos a los valores almacenados en el perfil.\n" +"\n" +"Haga clic para abrir el administrador de perfiles." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Perfiles personalizados" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "Configuración de impresión deshabilitada. No se puede modificar el archivo GCode." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "Control de impresoras" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "Posición de desplazamiento" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "Distancia de desplazamiento" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "Enviar GCode" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "Envíe un comando de GCode personalizado a la impresora conectada. Pulse «Intro» para enviar el comando." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Temperatura objetivo del extremo caliente. El extremo caliente se calentará o enfriará en función de esta temperatura. Si el valor es 0, el calentamiento del extremo caliente se desactivará." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Temperatura actual de este extremo caliente." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Temperatura a la que se va a precalentar el extremo caliente." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Precalentar" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Caliente el extremo caliente antes de imprimir. Puede continuar ajustando la impresión durante el calentamiento, así no tendrá que esperar a que el extremo caliente se caliente para poder imprimir." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Color del material en este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Material en este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Tobera insertada en este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "La impresora no está conectada." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Temperatura objetivo de la plataforma calentada. La plataforma se calentará o enfriará en función de esta temperatura. Si el valor es 0, el calentamiento de la plataforma se desactivará." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Temperatura actual de la plataforma caliente." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Temperatura a la que se va a precalentar la plataforma." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Caliente la plataforma antes de imprimir. Puede continuar ajustando la impresión durante el calentamiento, así no tendrá que esperar a que la plataforma se caliente para poder imprimir." @@ -3692,12 +3798,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoritos" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Genérico" @@ -3712,17 +3818,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "Impresoras locales" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&Ver" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "&Impresora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&Material" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Definir como extrusor activo" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "Habilitar extrusor" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "Deshabilitar extrusor" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Posición de la cámara" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Vista de cámara" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Perspectiva" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Ortográfica" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "P&laca de impresión" @@ -3742,6 +3883,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Gestionar visibilidad de los ajustes..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "&Guardar..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&Exportar..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "Exportar selección..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3761,654 +3917,509 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Número de copias" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "Configuraciones disponibles" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "Configuraciones" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "Extrusor" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "Seleccionar configuración" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "Sí" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "Configuraciones" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "No" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "Cargando configuraciones disponibles desde la impresora..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "Las configuraciones no se encuentran disponibles porque la impresora no está conectada." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "Impresora" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "Habilitado" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "Utilice pegamento con esta combinación de materiales para lograr una mejor adhesión." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "Esta configuración no se encuentra disponible porque %1 es un perfil desconocido. Visite %2 para descargar el perfil de materiales correcto." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "Marketplace" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Abrir &reciente" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Configuración de impresión" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "Ajustes de impresión deshabilitados\nNo se pueden modificar los archivos GCode" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00 h 00 min" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "Especificación de tiempos" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "Especificación de costes" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1 m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1 g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "Total:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Configuración de impresión recomendada

    Imprimir con los ajustes recomendados para la impresora, el material y la calidad seleccionados." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Configuración de impresión personalizada

    Imprimir con un control muy detallado del proceso de segmentación." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Activar impresión" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Nombre del trabajo" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Tiempo de impresión" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Tiempo restante estimado" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "Ver tipo" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Lista de objetos" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "Hola, %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Cuenta de Ultimaker" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "Cerrar sesión" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "Iniciar sesión" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "El flujo de trabajo de impresión 3D de próxima generación" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- Envíe trabajos de impresión a impresoras Ultimaker fuera de su red local\n" +"- Guarde su configuración de Ultimaker Cura en la nube para poder usarla en cualquier lugar\n" +"- Disfrute de acceso exclusivo a perfiles de impresión de marcas líderes" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "Crear cuenta" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "Ningún cálculo de tiempo disponible" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "Ningún cálculo de costes disponible" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "Vista previa" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "Segmentando..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "No se puede segmentar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "Procesando" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "Segmentación" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "Iniciar el proceso de segmentación" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "Estimación de tiempos" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "Estimación de material" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "Impresoras conectadas" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "Impresoras preconfiguradas" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "Agregar impresora" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "Administrar impresoras" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "Mostrar Guía de resolución de problemas en línea" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Alternar pantalla completa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Salir de modo de pantalla completa" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Des&hacer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Rehacer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Salir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "Vista en 3D" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "Vista frontal" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "Vista superior" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "Vista del lado izquierdo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "Vista del lado derecho" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurar Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Agregar impresora..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Adm&inistrar impresoras ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Administrar materiales..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Actualizar perfil con ajustes o sobrescrituras actuales" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Descartar cambios actuales" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Crear perfil a partir de ajustes o sobrescrituras actuales..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Administrar perfiles..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Mostrar &documentación en línea" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Informar de un &error" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "Novedades" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "Acerca de..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "Eliminar modelo seleccionado" msgstr[1] "Eliminar modelos seleccionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Centrar modelo seleccionado" msgstr[1] "Centrar modelos seleccionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Multiplicar modelo seleccionado" msgstr[1] "Multiplicar modelos seleccionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Eliminar modelo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ce&ntrar modelo en plataforma" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "A&grupar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Desagrupar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Co&mbinar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Multiplicar modelo..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Seleccionar todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Borrar placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Recargar todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "Organizar todos los modelos en todas las placas de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Organizar todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Organizar selección" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Restablecer las posiciones de todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Restablecer las transformaciones de todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Abrir archivo(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nuevo proyecto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "&Mostrar registro del motor..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Mostrar carpeta de configuración" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "Examinar paquetes..." +msgid "&Marketplace" +msgstr "&Marketplace" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "Expandir/contraer barra lateral" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Cargue un modelo en 3D" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Preparado para segmentar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Segmentando..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Listo para %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "No se puede segmentar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "No se puede segmentar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "Fragmentar trabajo de impresión actual" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "Cancelar proceso de fragmentación" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Preparar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Cancelar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Seleccione el dispositivo de salida activo" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Abrir archivo(s)" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Hemos encontrado uno o más archivos del proyecto entre los archivos que ha seleccionado. Solo puede abrir los archivos de proyecto de uno en uno. Le recomendamos que solo importe modelos de esos archivos. ¿Desea continuar?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Importar todos como modelos" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&Archivo" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "&Guardar..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&Exportar..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "Exportar selección..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&Edición" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "&Ver" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "A&justes" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "&Impresora" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Material" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Definir como extrusor activo" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "Habilitar extrusor" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "Deshabilitar extrusor" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Placa de impresión" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Perfil" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "E&xtensiones" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "&Cuadro de herramientas" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "Pre&ferencias" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "A&yuda" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Este paquete se instalará después de reiniciar." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Abrir archivo" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Nuevo proyecto" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "¿Está seguro de que desea iniciar un nuevo proyecto? Esto borrará la placa de impresión y cualquier ajuste no guardado." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cerrando Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "¿Seguro que desea salir de Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Abrir archivo(s)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Instalar paquete" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir archivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Hemos encontrado uno o más archivos de GCode entre los archivos que ha seleccionado. Solo puede abrir los archivos GCode de uno en uno. Si desea abrir un archivo GCode, seleccione solo uno." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Guardar proyecto" +msgid "Add Printer" +msgstr "Agregar impresora" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Placa de impresión" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Extrusor %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 y material" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "No mostrar resumen de proyecto al guardar de nuevo" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Guardar" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Altura de capa" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "Este perfil de calidad no está disponible para la configuración de material y de tobera actual. Cámbiela para poder habilitar este perfil de calidad" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Hay un perfil personalizado activado en este momento. Para habilitar el control deslizante de calidad, seleccione un perfil de calidad predeterminado en la pestaña Personalizado" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Velocidad de impresión" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Más lento" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Más rápido" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "Ha modificado algunos ajustes del perfil. Si desea cambiarlos, hágalo en el modo personalizado." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Relleno" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Un relleno gradual aumentará gradualmente la cantidad de relleno hacia arriba." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Habilitar gradual" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Generar soporte" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Generar estructuras para soportar piezas del modelo que tengan voladizos. Sin estas estructuras, estas piezas se romperían durante la impresión." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Seleccione qué extrusor se utilizará como soporte. Esta opción formará estructuras de soporte por debajo del modelo para evitar que éste se combe o la impresión se haga en el aire." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Adherencia de la placa de impresión" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Habilita la impresión de un borde o una balsa. Esta opción agregará un área plana alrededor del objeto, que es fácil de cortar después." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "¿Necesita ayuda para mejorar sus impresiones?
    Lea las Guías de solución de problemas de Ultimaker" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "Novedades" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4417,75 +4428,503 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "Imprimir modelo seleccionado con %1" msgstr[1] "Imprimir modelos seleccionados con %1" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Descartar o guardar cambios" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"Ha personalizado parte de los ajustes del perfil.\n" +"¿Desea descartar los cambios o guardarlos?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Ajustes del perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Valor predeterminado" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Valor personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Descartar y no volver a preguntar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Guardar y no volver a preguntar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Descartar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Guardar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Crear nuevo perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Acerca de Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "versión: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "Solución completa para la impresión 3D de filamento fundido." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Ultimaker B.V. ha desarrollado Cura en cooperación con la comunidad.\n" +"Cura se enorgullece de utilizar los siguientes proyectos de código abierto:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Interfaz gráfica de usuario (GUI)" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Entorno de la aplicación" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "Generador de GCode" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Biblioteca de comunicación entre procesos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Lenguaje de programación" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "Entorno de la GUI" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "Enlaces del entorno de la GUI" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "Biblioteca de enlaces C/C++" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Formato de intercambio de datos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Biblioteca de apoyo para cálculos científicos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Biblioteca de apoyo para cálculos más rápidos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Biblioteca de apoyo para gestionar archivos STL" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "Biblioteca de compatibilidad para trabajar con objetos planos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "Biblioteca de compatibilidad para trabajar con mallas triangulares" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "Biblioteca de compatibilidad para analizar redes complejas" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Biblioteca de compatibilidad para trabajar con archivos 3MF" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "Biblioteca de compatibilidad para metadatos y transmisión de archivos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Biblioteca de comunicación en serie" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "Biblioteca de detección para Zeroconf" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Biblioteca de recorte de polígonos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Biblioteca HTTP de Python" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Fuente" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "Iconos SVG" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Implementación de la aplicación de distribución múltiple de Linux" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Hemos encontrado uno o más archivos del proyecto entre los archivos que ha seleccionado. Solo puede abrir los archivos de proyecto de uno en uno. Le recomendamos que solo importe modelos de esos archivos. ¿Desea continuar?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Importar todos como modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Guardar proyecto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Extrusor %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 y material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "No mostrar resumen de proyecto al guardar de nuevo" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Guardar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Abrir archivo de proyecto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Este es un archivo de proyecto Cura. ¿Le gustaría abrirlo como un proyecto o importar sus modelos?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Recordar mi selección" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Abrir como proyecto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Registro del motor" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "Tipo de impresora" +msgid "Empty" +msgstr "Vacío" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Material" +msgid "Add a printer" +msgstr "Agregar una impresora" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "Utilizar pegamento con esta combinación de materiales" +msgid "Add a networked printer" +msgstr "Agregar una impresora en red" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "Comprobar compatibilidad" +msgid "Add a non-networked printer" +msgstr "Agregar una impresora fuera de red" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Haga clic para comprobar la compatibilidad de los materiales en Utimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "Agregar impresora por dirección IP" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Ver solo placa de impresión actual" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Introduzca la dirección IP de su impresora." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Organizar todas las placas de impresión" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Agregar" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Organizar placa de impresión actual" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "No se ha podido conectar al dispositivo." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "La impresora todavía no ha respondido en esta dirección." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "No se puede agregar la impresora porque es desconocida o no aloja un grupo." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "Atrás" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "Conectar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "Siguiente" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "Acuerdo de usuario" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "Estoy de acuerdo" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "Rechazar y cerrar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Ayúdenos a mejorar Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura recopila datos anónimos para mejorar la calidad de impresión y la experiencia de usuario, entre otros:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "Tipos de máquina" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "Uso de material" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "Número de segmentos" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "Ajustes de impresión" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Los datos recopilados por Ultimaker Cura no contendrán información personal." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "Más información" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Novedades en Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "No se ha encontrado ninguna impresora en su red." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "Actualizar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "Agregar impresora por IP" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "Solución de problemas" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "Nombre de la impresora" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "Indique un nombre para su impresora" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "El flujo de trabajo de impresión 3D de próxima generación" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- Envíe trabajos de impresión a impresoras Ultimaker fuera de su red local" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Guarde su configuración de Ultimaker Cura en la nube para poder usarla en cualquier lugar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- Disfrute de acceso exclusivo a perfiles de impresión de marcas líderes" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "Finalizar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "Crear una cuenta" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Le damos la bienvenida a Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"Siga estos pasos para configurar\n" +"Ultimaker Cura. Solo le llevará unos minutos." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "Empezar" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Vista en 3D" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Vista frontal" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Vista superior" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Vista del lado izquierdo" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Vista del lado derecho" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4547,26 +4986,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Comprobador de modelos" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Vuelva el contenido de todas las configuraciones en un archivo HTML." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "God Mode" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Muestra los cambios desde la última versión comprobada." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Registro de cambios" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4577,15 +4996,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Actualizador de firmware" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Crear un perfil de cambios de calidad aplanado." +msgid "Provides support for reading AMF files." +msgstr "Proporciona asistencia para leer archivos AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Aplanador de perfil" +msgid "AMF Reader" +msgstr "Lector de AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -4597,26 +5016,6 @@ msgctxt "name" msgid "USB printing" msgstr "Impresión USB" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "Preguntar al usuario una vez si acepta la licencia." - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "UserAgreement" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Permite guardar el segmento resultante como un archivo X3G para dar compatibilidad a impresoras que leen este formato (Malyan, Makerbot y otras impresoras basadas en Sailfish)." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4659,13 +5058,13 @@ msgstr "Complemento de dispositivo de salida de unidad extraíble" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Gestiona las conexiones de red a las impresoras Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Gestiona las conexiones de red de las impresoras Ultimaker conectadas." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Conexión de red UM3" +msgid "Ultimaker Network Connection" +msgstr "Conexión en red de Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -4727,6 +5126,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Borrador de soporte" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Proporciona soporte para la lectura de paquetes de formato Ultimaker." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "Lector de UFP" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4787,6 +5196,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Actualización de la versión 3.3 a la 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Actualiza la configuración de Cura 4.3 a Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Actualización de la versión 4.3 a la 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4807,6 +5226,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Actualización de la versión 2.7 a la 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Actualiza la configuración de Cura 3.5 a Cura 4.0." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "Actualización de la versión 3.5 a la 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4817,6 +5246,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "Actualización de la versión 3.4 a la 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Actualiza la configuración de Cura 4.0 a Cura 4.1." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "Actualización de la versión 4.0 a la 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4827,6 +5266,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Actualización de la versión 3.0 a la 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Actualiza la configuración de Cura 4.1 a Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Actualización de la versión 4.1 a la 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4857,6 +5306,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Actualización de la versión 2.2 a la 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Actualiza la configuración de Cura 4.2 a Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Actualización de la versión 4.2 a la 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4867,6 +5326,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Lector de imágenes" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Proporciona asistencia para leer archivos 3D." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Lector Trimesh" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4917,6 +5386,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "Lector de GCode" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "Realice una copia de seguridad de su configuración y restáurela." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Copias de seguridad de Cura" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4937,6 +5416,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Escritor de 3MF" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Proporciona una fase de vista previa en Cura." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "Fase de vista previa" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4957,9 +5446,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lector de perfiles de Cura" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "Genere un G-code antes de guardar." +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Aplanar ajustes activos" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "El perfil se ha aplanado y activado." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Escribe X3g en archivos" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Archivo X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Archivo X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -4969,6 +5478,1032 @@ msgstr "Lector de perfiles de Cura" #~ msgid "Profile Assistant" #~ msgstr "Asistente del perfil" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Volver a intentar" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "No crear soporte en otros modelos (por superposición)" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Modificar ajustes de otros modelos (por superposición)" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modificar ajustes del relleno de otros modelos" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Actualizar existente" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "No compatible" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Anterior" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Consejo" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Ensayo de impresión" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Lista de verificación" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Seleccione cualquier actualización de este Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Bloque Olsson" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Renderizado de cámara: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Utilizar funcionalidad de placa de impresión múltiple" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Utilizar funcionalidad de placa de impresión múltiple (reinicio requerido)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Perfiles predeterminados" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "buscar ajustes" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Altura de capa" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Este perfil de calidad no se encuentra disponible para su configuración de material y tobera actual. Cámbielas para poder habilitar este perfil de calidad." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Hay un perfil personalizado activado en este momento. Para habilitar el control deslizante de calidad, seleccione un perfil de calidad predeterminado en la pestaña Personalizado" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Placa de impresión" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Perfil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Placa de impresión" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Vuelva el contenido de todas las configuraciones en un archivo HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "God Mode" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Crear un perfil de cambios de calidad aplanado." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Aplanador de perfil" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Permite a los fabricantes de material crear nuevos perfiles de material y calidad mediante una IU integrada." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Imprimir asistente del perfil" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Conectado a través de la red." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Conectado a través de la red. Apruebe la solicitud de acceso en la impresora." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Conectado a través de la red. No hay acceso para controlar la impresora." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Acceso a la impresora solicitado. Apruebe la solicitud en la impresora" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Estado de la autenticación" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Estado de la autenticación" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Reenvía la solicitud de acceso" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Acceso a la impresora aceptado" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "No hay acceso para imprimir con esta impresora. No se puede enviar el trabajo de impresión." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Solicitar acceso" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Envía la solicitud de acceso a la impresora" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "No se puede iniciar un nuevo trabajo de impresión." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Un problema con la configuración de Ultimaker impide iniciar la impresión. Soluciónelo antes de continuar." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Configuración desajustada" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "¿Seguro que desea imprimir con la configuración seleccionada?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "La configuración o calibración de la impresora y de Cura no coinciden. Para obtener el mejor resultado, segmente siempre los PrintCores y los materiales que se insertan en la impresora." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Envío de nuevos trabajos (temporalmente) bloqueado; se sigue enviando el trabajo de impresión previo." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Enviando datos a la impresora" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Enviando datos" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "No se ha cargado ningún PrintCore en la ranura {slot_number}." + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "No se ha cargado ningún material en la ranura {slot_number}." + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "PrintCore distinto (Cura: {cura_printcore_name}, impresora: {remote_printcore_name}) seleccionado para extrusor {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Material distinto (Cura: {0}, impresora: {1}) seleccionado para extrusor {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Sincronizar con la impresora" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "¿Desea utilizar la configuración actual de su impresora en Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Los PrintCores o los materiales de la impresora difieren de los del proyecto actual. Para obtener el mejor resultado, segmente siempre los PrintCores y materiales que se hayan insertado en la impresora." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Ver en pantalla" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} ha terminado de imprimir «{job_name}»." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "El trabajo de impresión '{job_name}' ha terminado." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Impresión terminada" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Vacío" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Desconocido" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Error de Cloud" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "No se ha podido exportar el trabajo de impresión." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Se ha producido un error al conectarse a la nube." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Cargando a través de Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Conectar a Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "No volver a preguntarme para esta impresora." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Ahora ya puede enviar y supervisar sus trabajos de impresión desde cualquier lugar a través de su cuenta de Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "¡Conectado!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Revise su conexión" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "El equipo definido en el perfil {0} ({1}) no coincide con el equipo actual ({2}), no se ha podido importar." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Error al importar el perfil de {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Conexión existente" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Esta impresora o grupo de impresoras ya se ha añadido a Cura. Seleccione otra impresora o grupo de impresoras." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Introduzca la dirección IP o el nombre de host de la impresora en la red." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Conecta a una impresora" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guía de ajustes de Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Hacer zoom en la dirección del ratón no es compatible con la perspectiva ortogonal." + +#~ msgid "Orthogonal" +#~ msgstr "Ortográfica" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Gestiona las conexiones de red a las impresoras Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Conexión de red UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Proporciona información y explicaciones adicionales sobre los ajustes de Cura con imágenes y animaciones." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Guía de ajustes" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guía de ajustes de Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "La configuración se ha cambiado para que coincida con los extrusores disponibles en este momento: [%s]." + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Descripción del usuario" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Estas opciones no se encuentran disponibles porque está supervisando una impresora en la nube." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Ir a Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Se han imprimido todos los trabajos." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Ver historial de impresión" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Para imprimir directamente en la impresora a través de la red, asegúrese de que ésta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n" +#~ "\n" +#~ "Seleccione la impresora de la siguiente lista:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Asegúrese de que su impresora está conectada:\n" +#~ "- Compruebe que la impresora está encendida.\n" +#~ "- Compruebe que la impresora está conectada a la red." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Ver solo placa de impresión actual" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Organizar todas las placas de impresión" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Organizar placa de impresión actual" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Permite guardar el segmento resultante como un archivo X3G para dar compatibilidad a impresoras que leen este formato (Malyan, Makerbot y otras impresoras basadas en Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Lee archivos SVG como trayectorias de herramienta para solucionar errores en los movimientos de la impresora." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Lector de trayectoria de herramienta de SVG" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Registro de cambios" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Mostrar registro de cambios" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "Enviando datos al clúster remoto" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Conectar a Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura recopila estadísticas de uso de forma anónima." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "Recopilando datos" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "Más información" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Obtenga más información sobre qué datos envía Cura." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "Permitir" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Permitir a Cura enviar estadísticas de uso de forma anónima para ayudar a priorizar mejoras futuras para Cura. Se envían algunas de sus preferencias y ajustes, la versión de Cura y un resumen de los modelos que está fragmentando." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "Evaluación" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "Impresoras de red habilitadas" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "Impresoras locales" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "Se ha intentado restaurar una copia de seguridad de Cura que no coincide con la versión actual." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Ajustes de la máquina" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Ajustes de la impresora" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Origen en el centro" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Plataforma caliente" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Ajustes del cabezal de impresión" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distancia desde la parte izquierda del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distancia desde la parte frontal del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distancia desde la parte derecha del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distancia desde la parte trasera del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Altura del caballete" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "Diferencia de altura entre la punta de la tobera y el sistema del puente (ejes X e Y). Se usa para evitar que colisionen la impresión anterior con el caballete al imprimir «de uno en uno»." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "Iniciar GCode" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "Los comandos de GCode que se ejecutarán justo al inicio." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "Finalizar GCode" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "Los comandos de GCode que se ejecutarán justo al final." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Ajustes de la tobera" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "El diámetro nominal del filamento compatible con la impresora. El diámetro exacto se sobrescribirá según el material o el perfil." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "GCode inicial del extrusor" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "GCode final del extrusor" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Registro de cambios" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "Acuerdo de usuario" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Introduzca la dirección IP o el nombre de host de la impresora en red." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "Seleccione la impresora conectada a la red que desee supervisar." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Conecte su impresora Ultimaker a su red local." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura envía datos anónimos a Ultimaker para mejorar la calidad de impresión y la experiencia de usuario. A continuación, hay un ejemplo de todos los datos que se han enviado." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "No deseo enviar estos datos" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Permita que estos datos se envíen a Ultimaker y ayúdenos a mejorar Cura" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "No ha seleccionado ninguna impresora" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "De manera predeterminada, los píxeles blancos representan los puntos altos de la malla y los píxeles negros representan los puntos bajos de la malla. Cambie esta opción para invertir el comportamiento de tal manera que los píxeles negros representen los puntos altos de la malla y los píxeles blancos representen los puntos bajos de la malla." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Seleccionar actualizaciones de impresora" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Seleccione qué extrusor se utilizará como soporte. Esta opción formará estructuras de soporte por debajo del modelo para evitar que éste se combe o la impresión se haga en el aire." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Este perfil de calidad no se encuentra disponible para su configuración de material y tobera actual. Cámbiela para poder habilitar este perfil de calidad." + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "Configuración de impresión deshabilitada. No se puede modificar el GCode." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "Ver el gráfico de compatibilidad de materiales" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "Ver tipos" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "Hola " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- Envíe trabajos de impresión a impresoras Ultimaker fuera de su red local\n" +#~ "- Guarde su configuración de Ultimaker Cura en la nube para poder usarla en cualquier lugar\n" +#~ "- Disfrute de acceso exclusivo a perfiles de materiales de marcas líderes" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "No se puede segmentar" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "Especificación de tiempos" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "Especificación de materiales" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Añadir una impresora a Cura" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "Seleccione la impresora que desee utilizar de la lista que se muestra a continuación.\n" +#~ "\n" +#~ "Si no encuentra su impresora en la lista, utilice la opción \"Custom FFF Printer\" (Impresora FFF personalizada) de la categoría Personalizado y configure los ajustes para adaptarlos a su impresora en el siguiente cuadro de diálogo." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "Fabricante" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "Nombre de la impresora" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Agregar impresora" + +#~ msgid "Modify G-Code" +#~ msgstr "Modificar GCode" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "No hay nada que segmentar porque ninguno de los modelos se adapta al volumen de impresión. Escale o rote los modelos para que se adapten." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "El material seleccionado no es compatible con la máquina o la configuración seleccionada." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Material incompatible" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Error al importar el perfil de {0}: {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "Cuadro de herramientas" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "No disponible" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "No se puede conectar" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "Disponible" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Preparando" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "Pausando" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "Reanudando" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "Esperando: impresora no disponible" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "Esperando: primera disponible" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "Esperando: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "Cambio de configuración" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "Es necesario modificar la siguiente configuración de la impresora asignada %1:" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "Anular" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "Iniciar un trabajo de impresión con una configuración no compatible puede causar daños en su impresora 3D. ¿Seguro de que desea sobrescribir la configuración e imprimir %1?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "Sobrescribir la configuración e iniciar la impresión" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "Administrar cola" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "Imprimiendo" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "Administrar impresoras" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Activar configuración" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Carga la configuración de la impresora en Cura" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Mostrar desplazamientos" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Mostrar asistentes" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Mostrar perímetro" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Mostrar relleno" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "No quiero enviar estos datos" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Permita enviar estos datos a Ultimaker y ayúdenos a mejorar Cura" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Tipo de impresora:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Conexión:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "Estado:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "Esperando un trabajo de impresión" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "Esperando a que alguien limpie la placa de impresión" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "Cancelando impresión..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Perfiles protegidos" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Nombre de la impresora:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Perfil:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Buscar..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "Contraer todo" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "Ampliar todo" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "Configuraciones disponibles" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "Extrusor" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "Sí" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "No" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Configuración de impresión" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Ajustes de impresión deshabilitados\n" +#~ "No se pueden modificar los archivos GCode" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00 h 00 min" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "Especificación de tiempos" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "Especificación de costes" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "Total:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Configuración de impresión recomendada

    Imprimir con los ajustes recomendados para la impresora, el material y la calidad seleccionados." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Configuración de impresión personalizada

    Imprimir con un control muy detallado del proceso de segmentación." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "&Mostrar registro del motor..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "Examinar paquetes..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "Expandir/contraer barra lateral" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Cargue un modelo en 3D" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Preparado para segmentar" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "Listo para %1" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "No se puede segmentar" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "Fragmentar trabajo de impresión actual" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "Cancelar proceso de fragmentación" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Preparar" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Seleccione el dispositivo de salida activo" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "&Ver" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "A&justes" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "&Cuadro de herramientas" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Abrir archivo" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Este perfil de calidad no está disponible para la configuración de material y de tobera actual. Cámbiela para poder habilitar este perfil de calidad" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Velocidad de impresión" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Más lento" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Más rápido" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Habilitar gradual" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Generar soporte" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Adherencia de la placa de impresión" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "¿Necesita ayuda para mejorar sus impresiones?
    Lea las Guías de solución de problemas de Ultimaker" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Registro del motor" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "Tipo de impresora" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "Utilizar pegamento con esta combinación de materiales" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Comprobar compatibilidad" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Haga clic para comprobar la compatibilidad de los materiales en Utimaker.com." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Muestra los cambios desde la última versión comprobada." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Registro de cambios" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Crear un perfil de cambios de calidad aplanado." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Aplanador de perfil" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "Preguntar al usuario una vez si acepta la licencia." + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "UserAgreement" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "Genere un G-code antes de guardar." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Actualizar firmware" @@ -4993,22 +6528,6 @@ msgstr "Lector de perfiles de Cura" #~ msgid "Confirm uninstall " #~ msgstr "Confirmar desinstalación " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "En pausa" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "Anterior" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "Siguiente" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "Consejo" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1 m/~ %2 g/~ %4 %3" @@ -5017,26 +6536,10 @@ msgstr "Lector de perfiles de Cura" #~ msgid "%1m / ~ %2g" #~ msgstr "%1 m/~ %2 g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "Ensayo de impresión" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "Lista de verificación" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "Actualización de firmware" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "Permite a los fabricantes de material crear nuevos perfiles de material y calidad mediante una IU integrada." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "Imprimir asistente del perfil" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Imprimir con un enrutador Doodle3D" @@ -5129,10 +6632,6 @@ msgstr "Lector de perfiles de Cura" #~ msgid "Lost connection with the printer" #~ msgstr "Se ha perdido la conexión con la impresora." -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "No disponible" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "Desconocido" @@ -5459,7 +6958,7 @@ msgstr "Lector de perfiles de Cura" #~ msgctxt "@title:window" #~ msgid "SolidWorks plugin: Configuration" -#~ msgstr "Complementos de SolidWorks: configuración" +#~ msgstr "Complemento de SolidWorks: configuración" #~ msgctxt "@title:tab" #~ msgid "Conversion settings" @@ -5551,7 +7050,7 @@ msgstr "Lector de perfiles de Cura" #~ msgctxt "description" #~ msgid "Helps you to install an 'export to Cura' button in Siemens NX." -#~ msgstr "Ayuda a instalar el botón para exportar a Cura en in Siemens NX." +#~ msgstr "Ayuda a instalar el botón para exportar a Cura en Siemens NX." #~ msgctxt "name" #~ msgid "Siemens NX Integration" diff --git a/resources/i18n/es_ES/fdmextruder.def.json.po b/resources/i18n/es_ES/fdmextruder.def.json.po index 3da8d5251f..5d849cfc50 100644 --- a/resources/i18n/es_ES/fdmextruder.def.json.po +++ b/resources/i18n/es_ES/fdmextruder.def.json.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -83,8 +83,8 @@ msgstr "GCode inicial del extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "Gcode inicial que se ejecuta cada vez que se enciende el extrusor." +msgid "Start g-code to execute when switching to this extruder." +msgstr "Iniciar GCode para ejecutarlo al cambiar a este extrusor." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -123,8 +123,8 @@ msgstr "GCode final del extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "Gcode final que se ejecuta cada vez que se apaga el extrusor." +msgid "End g-code to execute when switching away from this extruder." +msgstr "Finalizar GCode para ejecutarlo al cambiar desde este extrusor." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -225,3 +225,11 @@ msgstr "Diámetro" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Ajusta el diámetro del filamento utilizado. Este valor debe coincidir con el diámetro del filamento utilizado." + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "Gcode inicial que se ejecuta cada vez que se enciende el extrusor." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "Gcode final que se ejecuta cada vez que se apaga el extrusor." diff --git a/resources/i18n/es_ES/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po index bd4ad9fd7f..fbaf241481 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -1,21 +1,21 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:56+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Spanish\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Spanish , Spanish \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.3\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -57,7 +57,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "Los comandos de GCode que se ejecutarán justo al inicio separados por - \n." +msgstr "" +"Los comandos de GCode que se ejecutarán justo al inicio separados por - \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -69,7 +71,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "Los comandos de GCode que se ejecutarán justo al final separados por -\n." +msgstr "" +"Los comandos de GCode que se ejecutarán justo al final separados por -\n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -211,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Indica si la máquina tiene una placa de impresión caliente." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Tiene estabilización de temperatura del volumen de impresión" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Si la máquina puede estabilizar la temperatura del volumen de impresión." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -233,7 +247,7 @@ msgstr "Número de trenes extrusores. Un tren extrusor está formado por un alim #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "Número de extrusores habilitados" #: fdmprinter.def.json @@ -243,7 +257,7 @@ msgstr "Número de trenes extrusores habilitados y configurados en el software d #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "Diámetro exterior de la tobera" #: fdmprinter.def.json @@ -253,7 +267,7 @@ msgstr "Diámetro exterior de la punta de la tobera." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "Longitud de la tobera" #: fdmprinter.def.json @@ -263,7 +277,7 @@ msgstr "Diferencia de altura entre la punta de la tobera y la parte más baja de #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "Ángulo de la tobera" #: fdmprinter.def.json @@ -273,7 +287,7 @@ msgstr "Ángulo entre el plano horizontal y la parte cónica que hay justo encim #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "Longitud de la zona térmica" #: fdmprinter.def.json @@ -303,7 +317,7 @@ msgstr "Para controlar la temperatura desde Cura. Si va a controlar la temperatu #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "Velocidad de calentamiento" #: fdmprinter.def.json @@ -313,7 +327,7 @@ msgstr "Velocidad (°C/s) de calentamiento de la tobera calculada como una media #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "Velocidad de enfriamiento" #: fdmprinter.def.json @@ -333,7 +347,7 @@ msgstr "Tiempo mínimo que un extrusor debe permanecer inactivo antes de que la #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "Tipo de GCode" #: fdmprinter.def.json @@ -398,7 +412,7 @@ msgstr "Utilizar o no los comandos de retracción de firmware (G10/G11) en lugar #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "Áreas no permitidas" #: fdmprinter.def.json @@ -418,7 +432,7 @@ msgstr "Lista de polígonos con áreas en las que la tobera no tiene permitido e #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "Polígono del cabezal de la máquina" #: fdmprinter.def.json @@ -428,7 +442,7 @@ msgstr "Silueta 2D del cabezal de impresión (sin incluir las tapas del ventilad #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" +msgid "Machine Head & Fan Polygon" msgstr "Polígono del cabezal de la máquina y del ventilador" #: fdmprinter.def.json @@ -438,7 +452,7 @@ msgstr "Silueta 2D del cabezal de impresión (incluidas las tapas del ventilador #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Altura del puente" #: fdmprinter.def.json @@ -468,7 +482,7 @@ msgstr "Diámetro interior de la tobera. Cambie este ajuste cuando utilice un ta #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" +msgid "Offset with Extruder" msgstr "Desplazamiento con extrusor" #: fdmprinter.def.json @@ -1016,6 +1030,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Número de capas inferiores. Al calcularlo por el grosor inferior, este valor se redondea a un número entero." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Capas inferiores iniciales" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "El número de capas inferiores iniciales, desde la capa de impresión hacia arriba. Al calcularlo por el grosor inferior, este valor se redondea a un número" +" entero." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1266,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Esquina más pronunciada" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Posición de costura en Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "La posición cerca de donde comenzará la impresión de cada parte de una capa." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Posterior izquierda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Posterior" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Posterior derecha" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Derecha" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Delantera derecha" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Delantera" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Delantera izquierda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Izquierda" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1293,8 +1368,8 @@ msgstr "Preferencia de esquina de costura" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Controlar si las esquinas del contorno del modelo influyen en la posición de la costura. «Ninguno» significa que las esquinas no influyen en la posición de la costura. «Ocultar costura» significa que es probable que la costura se realice en una esquina interior. «Mostrar costura» significa que es probable que la costura sea en una esquina exterior. «Ocultar o mostrar costura» significa que es probable que la costura se realice en una esquina interior o exterior." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Controlar si las esquinas del contorno del modelo influyen en la posición de la costura. «Ninguno» significa que las esquinas no influyen en la posición de la costura. «Ocultar costura» significa que es probable que la costura se realice en una esquina interior. «Mostrar costura» significa que es probable que la costura se realice en una esquina exterior. «Ocultar o mostrar costura» significa que es probable que la costura se realice en una esquina interior o exterior. «Costura inteligente» permite realizar la costura en ambas esquinas, pero opta con más frecuencia por las esquinas interiores, si resulta oportuno." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1316,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Ocultar o mostrar costura" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Costura inteligente" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1328,13 +1408,13 @@ msgstr "Cuando se habilita, las coordenadas de la costura en z son relativas al #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ignorar los pequeños huecos en Z" +msgid "No Skin in Z Gaps" +msgstr "Sin forro en huecos en Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Cuando el modelo tiene pequeños huecos verticales, el tiempo de cálculo puede aumentar alrededor de un 5 % para generar el forro superior e inferior en estos espacios estrechos. En tal caso, desactive este ajuste." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Cuando el modelo tiene pequeños huecos verticales de solo unas pocas capas, normalmente suele haber forro alrededor de ellas en el espacio estrecho. Active este ajuste para no generar forro si el hueco vertical es muy pequeño. Esto mejora el tiempo de impresión y de segmentación, pero deja el relleno expuesto al aire." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1353,8 +1433,8 @@ msgstr "Habilitar alisado" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Pasar por la superficie superior una vez más, pero sin extruir material, para derretir la parte externa del plástico y crear una superficie más lisa." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Pasar por la superficie superior una vez más, pero esta vez extruyendo muy poco material, para derretir la capa superior del plástico y crear una superficie más lisa. La presión de la cámara en la boquilla se mantiene alta para que los pliegues de la superficie se llenen de material." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1446,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Cambio en la velocidad instantánea máxima durante el alisado." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Porcentaje de superposición del forro" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuste la cantidad de superposición entre las paredes y (los extremos de) las líneas centrales del forro, como un porcentaje de los anchos de las líneas del forro y la pared más profunda. Una ligera superposición permite que las paredes estén firmemente unidas al forro. Tenga en cuenta que, con un mismo ancho de la línea del forro y la pared, cualquier porcentaje superior al 50 % ya puede provocar que cualquier forro sobrepase la pared, debido a que en ese punto la posición de la tobera del extrusor del forro ya puede sobrepasar la mitad de la pared." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Superposición del forro" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuste la cantidad de superposición entre las paredes y (los extremos de) las líneas centrales del forro. Una ligera superposición permite que las paredes estén firmemente unidas al forro. Tenga en cuenta que, con un mismo ancho de la línea del forro y la pared, cualquier valor superior a la mitad del ancho de la pared ya puede provocar que cualquier forro sobrepase la pared, debido a que en ese punto la posición de la tobera del extrusor del forro ya puede sobrepasar la mitad de la pared." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1604,13 +1704,23 @@ msgstr "El patrón de relleno se mueve esta distancia a lo largo del eje X." #: fdmprinter.def.json msgctxt "infill_offset_y label" msgid "Infill Y Offset" -msgstr "Desplazamiento del relleno sobre el eje X" +msgstr "Desplazamiento del relleno sobre el eje Y" #: fdmprinter.def.json msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "El patrón de relleno se mueve esta distancia a lo largo del eje Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Comienzo de relleno aleatorio" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Determine qué línea de relleno se imprime primero. Esto evita que un segmento se convierta en el más fuerte, pero a expensas de un movimiento adicional." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1631,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "Agregar paredes adicionales alrededor del área de relleno. Estas paredes pueden hacer que las líneas del forro superior/inferior se aflojen menos, lo que significa que necesitaría menos capas de forro superior/inferior para obtener la misma calidad utilizando algo más de material.\nPuede utilizar esta función junto a la de Conectar polígonos de relleno para conectar todo el relleno en una única trayectoria de extrusión sin necesidad de desplazamientos ni retracciones si se configura correctamente." +msgstr "" +"Agregar paredes adicionales alrededor del área de relleno. Estas paredes pueden hacer que las líneas del forro superior/inferior se aflojen menos, lo que significa que necesitaría menos capas de forro superior/inferior para obtener la misma calidad utilizando algo más de material.\n" +"Puede utilizar esta función junto a la de Conectar polígonos de relleno para conectar todo el relleno en una única trayectoria de extrusión sin necesidad de desplazamientos ni retracciones si se configura correctamente." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1663,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Cantidad de superposición entre el relleno y las paredes. Una ligera superposición permite que las paredes conecten firmemente con el relleno." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Porcentaje de superposición del forro" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "La cantidad de superposición entre el forro y las paredes son un porcentaje del ancho de la línea de forro. Una ligera superposición permite que las paredes estén firmemente unidas al forro. Este es el porcentaje de la media de los anchos de las líneas del forro y la pared más profunda." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Superposición del forro" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "Cantidad de superposición entre el forro y las paredes. Una ligera superposición permite que las paredes conecten firmemente con el forro." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1863,6 +1955,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "La temperatura predeterminada que se utiliza para imprimir. Debería ser la temperatura básica del material. Las demás temperaturas de impresión deberían calcularse a partir de este valor" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "Temperatura de volumen de impresión" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "La temperatura del entorno de impresión. Si el valor es 0, la temperatura de volumen de impresión no se ajustará." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1973,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Índice de compresión en porcentaje." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Material cristalino" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "¿Es este el tipo de material que se desprende limpiamente cuando se calienta (cristalino) o el que produce largas cadenas de polímeros entrelazadas (no cristalino)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Velocidad de retracción antirrezumado" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Hasta dónde tiene que retraerse el material antes de detener el rezumado." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Velocidad de retracción antirrezumado" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Con qué velocidad tiene que retraerse el material durante un cambio de filamento para evitar el rezumado." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Posición retraída de preparación de rotura" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Hasta dónde puede estirarse el filamento antes de que se rompa mientras se calienta." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Velocidad de retracción de preparación de rotura" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Con qué velocidad debe retraerse el filamento justo antes de romperse en una retracción." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Posición retraída de rotura" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Hasta dónde debe retraerse el filamento para que se rompa limpiamente." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Velocidad de retracción de rotura" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "Velocidad a la que debe retraerse el filamento para que se rompa limpiamente." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatura de rotura" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "Temperatura a la que se rompe el filamento de forma limpia." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1983,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Compensación de flujo: la cantidad de material extruido se multiplica por este valor." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Flujo de pared" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Compensación de flujo en líneas de pared." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Flujo de pared exterior" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Compensación de flujo en la línea de pared más externa." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Flujo de pared o paredes interiores" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Compensación de flujo en líneas de pared para todas las líneas excepto la más externa." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Flujo superior o inferior" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Compensación de flujo en las líneas superiores o inferiores." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Flujo de forro de superficie superior" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Compensación de flujo en líneas de las áreas superiores de la impresión." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Flujo de relleno" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Compensación de flujo en líneas de relleno." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Flujo de falda/borde" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Compensación de flujo en líneas de falda o borde." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Flujo de soporte" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Compensación de flujo en líneas de estructura de soporte." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Flujo de interfaz de soporte" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Compensación de flujo en líneas de techo o suelo de soporte." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Flujo de techo de soporte" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Compensación de flujo en líneas de techo de soporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Flujo de suelo de soporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Compensación de flujo en líneas de suelo de soporte." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Flujo de la torre auxiliar" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Compensación de flujo en líneas de la torre auxiliar." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2100,7 +2402,7 @@ msgstr "Limitar las retracciones de soporte" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "Omitir la retracción al moverse de soporte a soporte en línea recta. Habilitar este ajuste ahorra tiempo de impresión pero puede ocasionar un encordado excesivo en la estructura de soporte." #: fdmprinter.def.json @@ -2120,8 +2422,8 @@ msgstr "Distancia de retracción del cambio de tobera" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "Distancia de la retracción: utilice el valor cero para que no haya retracción. Por norma general, este valor debe ser igual a la longitud de la zona de calentamiento." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "Distancia de la retracción al cambiar los extrusores. Utilice el valor 0 para que no haya retracción. Por norma general, este valor debe ser igual a la longitud de la zona de calentamiento." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2153,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Velocidad a la que se retrae el filamento durante una retracción del cambio de tobera." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Volumen de cebado adicional tras cambio de tobera" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Material adicional que debe cebarse tras el cambio de tobera." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2344,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Velocidad a la que se imprimen la falda y el borde. Normalmente, esto se hace a la velocidad de la capa inicial, pero a veces es posible que se prefiera imprimir la falda o el borde a una velocidad diferente." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Velocidad máxima de Z" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Velocidad del salto en Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Velocidad máxima a la que se mueve la placa de impresión. Definir este valor en 0 hace que la impresión utilice los valores predeterminados de la velocidad máxima de Z." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Velocidad a la que se realiza el movimiento vertical en la dirección Z para los saltos en Z. Suele ser inferior a la velocidad de impresión porque la placa de impresión o el puente de la máquina es más difícil de desplazar." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2780,8 +3092,8 @@ msgstr "Modo Peinada" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "La opción de peinada mantiene la tobera dentro de las áreas ya impresas al desplazarse. Esto ocasiona movimientos de desplazamiento ligeramente más largos, pero reduce la necesidad de realizar retracciones. Si se desactiva la opción de peinada, el material se retraerá y la tobera se moverá en línea recta hasta el siguiente punto. Otra posibilidad es evitar la peinada en áreas de forro superiores/inferiores y además peinar solo en el relleno. La opción de «Sobre el relleno» actúa exactamente igual que la «No está en el forro» de las versiones de Cura anteriores." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "La opción de peinada mantiene la tobera dentro de las áreas ya impresas al desplazarse. Esto ocasiona movimientos de desplazamiento ligeramente más largos, pero reduce la necesidad de realizar retracciones. Si se desactiva la opción de peinada, el material se retraerá y la tobera se moverá en línea recta hasta el siguiente punto. Otra posibilidad es evitar la peinada en áreas de forro superiores/inferiores o peinar solo en el relleno." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2853,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Distancia entre la tobera y las partes ya impresas, cuando se evita durante movimientos de desplazamiento." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Comenzar capas con la misma parte" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "En cada capa, comenzar imprimiendo el objeto cerca del mismo punto, de forma que no se comienza una capa imprimiendo la pieza en la que finalizó la capa anterior. Esto permite mejorar los voladizos y las partes pequeñas, a costa de un mayor tiempo de impresión." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2923,6 +3225,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "Cuando la máquina cambia de un extrusor a otro, la placa de impresión se baja para crear holgura entre la tobera y la impresión. Esto impide que el material rezumado quede fuera de la impresión." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "Salto en Z tras altura de cambio de extrusor" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "Diferencia de altura cuando se realiza un salto en Z después de un cambio de extrusor." + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3193,6 +3505,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Cruz" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "Giroide" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3254,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Distancia entre las líneas de estructuras del soporte de la capa inicial impresas. Este ajuste se calcula por la densidad del soporte." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Dirección de línea de relleno de soporte" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Orientación del patrón de relleno para soportes. El patrón de relleno de soporte se gira en el plano horizontal." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Una lista de los valores enteros de las direcciones de línea que se van a utilizar. Los elementos de la lista se usan secuencialmente a medida que avanzan las capas y cuando se alcanza el final de la lista, comienza de nuevo desde el principio. Los elementos de la lista están separados por comas y toda la lista aparece entre corchetes. El valor predeterminado es una lista vacía, lo que significa que se usa el ángulo predeterminado de 0 grados." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3390,8 +3707,8 @@ msgstr "Distancia de unión del soporte" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Distancia máxima entre las estructuras del soporte en las direcciones X/Y. Cuando estructuras separadas están más cerca entre sí que de este valor, las estructuras se combinan en una." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "Distancia máxima entre las estructuras del soporte en las direcciones X/Y. Cuando las estructuras separadas están más cerca entre sí que este valor, se combinan en una." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3433,6 +3750,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "Altura del relleno de soporte de una determinada densidad antes de cambiar a la mitad de la densidad." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "Área del soporte mínima" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "Tamaño del área mínima para los polígonos del soporte. No se generarán polígonos que posean un área de menor tamaño que este valor." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3658,6 +3985,97 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Zigzag" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "Área de la interfaz de soporte mínima" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamaño del área mínima para los polígonos de la interfaz de soporte. Los polígonos que posean un área de menor tamaño que este valor se imprimirán como" +" soporte normal." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "Área de los techos del soporte mínima" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamaño del área mínima para los techos del soporte. Los polígonos que posean un área de menor tamaño que este valor se imprimirán como soporte normal." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "Área de los suelos del soporte mínima" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamaño del área mínima para los suelos del soporte. Los polígonos que posean un área de menor tamaño que este valor se imprimirán como soporte normal." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "Expansión horizontal de la interfaz de soporte" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "Cantidad de desplazamiento aplicado a los polígonos de la interfaz de soporte." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "Expansión horizontal de los techos del soporte" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "Cantidad de desplazamiento aplicado a los techos del soporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "Expansión horizontal de los suelos de soporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "Cantidad de desplazamiento aplicado a los suelos del soporte." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Direcciones de línea de interfaz de soporte" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Una lista de los valores enteros de las direcciones de línea que se van a utilizar. Los elementos de la lista se usan secuencialmente a medida que avanzan las capas y cuando se alcanza el final de la lista, comienza de nuevo desde el principio. Los elementos de la lista están separados por comas y toda la lista aparece entre corchetes. El valor predeterminado es una lista vacía, lo que significa que se utilizan los ángulos estándar (que varían entre 45 y 135 grados si las interfaces son bastante gruesas o de 90 grados en otro caso)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Direcciones de línea del techo de soporte" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Una lista de los valores enteros de las direcciones de línea que se van a utilizar. Los elementos de la lista se usan secuencialmente a medida que avanzan las capas y cuando se alcanza el final de la lista, comienza de nuevo desde el principio. Los elementos de la lista están separados por comas y toda la lista aparece entre corchetes. El valor predeterminado es una lista vacía, lo que significa que se utilizan los ángulos estándar (que varían entre 45 y 135 grados si las interfaces son bastante gruesas o de 90 grados en otro caso)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Direcciones de línea del suelo de soporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Una lista de los valores enteros de las direcciones de línea que se van a utilizar. Los elementos de la lista se usan secuencialmente a medida que avanzan las capas y cuando se alcanza el final de la lista, comienza de nuevo desde el principio. Los elementos de la lista están separados por comas y toda la lista aparece entre corchetes. El valor predeterminado es una lista vacía, lo que significa que se utilizan los ángulos estándar (que varían entre 45 y 135 grados si las interfaces son bastante gruesas o de 90 grados en otro caso)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3699,14 +4117,14 @@ msgid "The diameter of a special tower." msgstr "Diámetro de una torre especial." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Diámetro mínimo" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Diámetro máximo soportado por la torre" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Diámetro mínimo en las direcciones X/Y de una pequeña área que soportará una torre de soporte especializada." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Diámetro máximo en las direcciones X/Y de una pequeña área que debe ser soportada por una torre de soporte especializada." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3828,7 +4246,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "La distancia horizontal entre la falda y la primera capa de la impresión.\nSe trata de la distancia mínima. Múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." +msgstr "" +"La distancia horizontal entre la falda y la primera capa de la impresión.\n" +"Se trata de la distancia mínima. Múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4200,16 +4620,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Imprimir una torre junto a la impresión que sirve para preparar el material tras cada cambio de tobera." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Torre auxiliar circular" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Hacer que la torre auxiliar sea circular." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4250,16 +4660,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Coordenada Y de la posición de la torre auxiliar." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Flujo de la torre auxiliar" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Compensación de flujo: la cantidad de material extruido se multiplica por este valor." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4270,6 +4670,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "Tras imprimir la torre auxiliar con una tobera, limpie el material rezumado de la otra tobera de la torre auxiliar." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "Borde de la torre auxiliar" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "Puede que las torres auxiliares necesiten la adherencia adicional que proporciona un borde, aunque no sea requisito del modelo. Actualmente, no se puede usar con el tipo de adherencia «balsa»." + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4390,6 +4800,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Eliminar (si las hubiera) las capas vacías por debajo de la primera capa impresa. Deshabilitar este ajuste puede hacer que aparezcan primeras capas vacías si el ajuste de tolerancia de segmentación está establecido en Exclusiva o Medio." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Resolución máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "El tamaño mínimo de un segmento de línea tras la segmentación. Si se aumenta, la resolución de la malla será menor. Esto puede permitir a la impresora mantener la velocidad que necesita para procesar GCode y aumentará la velocidad de segmentación al eliminar detalles de la malla que, de todas formas, no puede procesar." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Resolución de desplazamiento máximo" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "El tamaño mínimo de un segmento de línea de desplazamiento tras la segmentación. Si se aumenta, los movimientos de desplazamiento tendrán esquinas menos suavizadas. Esto puede le permite a la impresora mantener la velocidad que necesita para procesar GCode pero puede ocasionar que evitar el modelo sea menos preciso." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Desviación máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "La desviación máxima permitida al reducir la resolución en el ajuste de la resolución máxima. Si se aumenta el valor, la impresión será menos precisa pero el GCode será más pequeño. La desviación máxima es un límite para la resolución máxima, por lo que si las dos entran en conflicto, la desviación máxima siempre tendrá prioridad." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4552,8 +4992,8 @@ msgstr "Contornos espiralizados suaves" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Suavice los contornos espiralizados para reducir la visibilidad de la costura Z (la costura Z debería ser apenas visible en la impresora pero seguirá siendo visible en la vista de capas). Tenga en cuenta que la suavización tenderá a desdibujar detalles finos de la superficie." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Suaviza los contornos espiralizados para reducir la visibilidad de la costura Z (la costura Z debería ser apenas visible en la impresora pero seguirá siendo visible en la vista de capas). Tenga en cuenta que la suavización tenderá a desdibujar detalles finos de la superficie." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4765,26 +5205,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Se filtran los polígonos en capas segmentadas que tienen una circunferencia más pequeña que esta. Los valores más pequeños suponen una resolución de malla mayor a costa de un tiempo de segmentación. Está indicado, sobre todo, para impresoras SLA y modelos 3D muy pequeños con muchos detalles." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Resolución máxima" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "El tamaño mínimo de un segmento de línea tras la segmentación. Si se aumenta, la resolución de la malla será menor. Esto puede permitir a la impresora mantener la velocidad que necesita para procesar GCode y aumentará la velocidad de segmentación al eliminar detalles de la malla que, de todas formas, no puede procesar." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Resolución de desplazamiento máximo" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "El tamaño mínimo de un segmento de línea de desplazamiento tras la segmentación. Si se aumenta, los movimientos de desplazamiento tendrán esquinas menos suavizadas. Esto puede le permite a la impresora mantener la velocidad que necesita para procesar GCode pero puede ocasionar que evitar el modelo sea menos preciso." - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4925,16 +5345,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Velocidad a la que se desplaza durante el depósito por inercia con relación a la velocidad de la trayectoria de extrusión. Se recomienda un valor ligeramente por debajo del 100%, ya que la presión en el tubo guía disminuye durante el movimiento depósito por inercia." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Alternar la rotación del forro" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Alterna la dirección en la que se imprimen las capas superiores/inferiores. Normalmente, se imprimen únicamente en diagonal. Este ajuste añade las direcciones solo X y solo Y." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5042,8 +5452,8 @@ msgstr "Activar soporte cónico" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Función experimental: hace áreas de soporte más pequeñas en la parte inferior que en el voladizo." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Hace que las áreas de soporte sean más pequeñas en la parte inferior que en el voladizo." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5107,23 +5517,24 @@ msgstr "Distancia media entre los puntos aleatorios introducidos en cada segment #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Desplazamiento de extrusión máximo del factor de compensación del caudal" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Distancia máxima en mm que se va a compensar." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "La distancia máxima en mm para mover el filamento con el fin de compensar los cambios en el caudal." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Factor de compensación del caudal" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "La multiplicación factor por caudal da como resultado la conversión de distancia." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "La distancia para mover el filamento con el fin de compensar los cambios en el caudal, como porcentaje de la distancia a la que se movería el filamento" +" en un segundo de extrusión." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5275,7 +5686,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Distancia de un movimiento ascendente que se extrude a media velocidad.\nEsto puede causar una mejor adherencia a las capas anteriores, aunque no calienta demasiado el material en esas capas. Solo se aplica a la impresión de alambre." +msgstr "" +"Distancia de un movimiento ascendente que se extrude a media velocidad.\n" +"Esto puede causar una mejor adherencia a las capas anteriores, aunque no calienta demasiado el material en esas capas. Solo se aplica a la impresión de alambre." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5384,7 +5797,7 @@ msgstr "Distancia entre la tobera y líneas descendentes en horizontal. Cuanto m #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "Utilizar capas de adaptación" #: fdmprinter.def.json @@ -5394,7 +5807,7 @@ msgstr "Las capas de adaptación calculan las alturas de las capas dependiendo d #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "Variación máxima de las capas de adaptación" #: fdmprinter.def.json @@ -5404,7 +5817,7 @@ msgstr "La diferencia de altura máxima permitida en comparación con la altura #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "Tamaño de pasos de variación de las capas de adaptación" #: fdmprinter.def.json @@ -5414,13 +5827,14 @@ msgstr "La diferencia de altura de la siguiente altura de capa en comparación c #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "Umbral de las capas de adaptación" +msgid "Adaptive Layers Topography Size" +msgstr "Tamaño de la topografía de las capas de adaptación" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Umbral para usar o no una capa más pequeña. Este número se compara con el curtido de la pendiente más empinada de una capa." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Distancia horizontal objetivo entre dos capas adyacentes. Si se reduce este ajuste, se tendrán que utilizar capas más finas para acercar más los bordes" +" de las capas." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5429,8 +5843,9 @@ msgstr "Ángulo de voladizo de pared" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Las paredes con un ángulo de voladizo mayor que este se imprimirán con los ajustes de voladizo de pared. Cuando el valor sea 90, no se aplicará la condición de voladizo a la pared." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Las paredes con un ángulo de voladizo mayor que este se imprimirán con los ajustes de voladizo de pared. Cuando el valor sea 90, no se aplicará la condición" +" de voladizo a la pared. El voladizo que se apoya en el soporte tampoco se tratará como voladizo." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5632,6 +6047,197 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "Velocidad del ventilador en porcentaje que se utiliza para imprimir la tercera capa del forro del puente." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "Limpiar tobera entre capas" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "Posibilidad de incluir GCode de limpieza de tobera entre capas. Habilitar este ajuste puede influir en el comportamiento de retracción en el cambio de capa. Utilice los ajustes de retracción de limpieza para controlar la retracción en las capas donde la secuencia de limpieza estará en curso." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "Volumen de material entre limpiezas" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "Material máximo que puede extruirse antes de que se inicie otra limpieza de tobera." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "Habilitación de retracción de limpieza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "Retrae el filamento cuando la tobera se mueve sobre un área no impresa." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "Distancia de retracción de limpieza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "Cantidad para retraer el filamento para que no rezume durante la secuencia de limpieza." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "Cantidad de cebado adicional de retracción de limpieza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "Algunos materiales pueden rezumar durante el movimiento de un desplazamiento de limpieza, lo cual se puede corregir aquí." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "Velocidad de retracción de limpieza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "Velocidad a la que se retrae el filamento y se prepara durante un movimiento de retracción de limpieza." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "Velocidad de retracción en retracción de limpieza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "Velocidad a la que se retrae el filamento durante un movimiento de retracción de limpieza." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Velocidad de cebado de retracción" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "Velocidad a la que se prepara el filamento durante un movimiento de retracción de limpieza." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "Pausar limpieza" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "Pausa después de no haber retracción." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "Limpiar salto en Z en la retracción" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "Siempre que se realiza una retracción, la placa de impresión se baja para crear holgura entre la tobera y la impresión. Impide que la tobera golpee la impresión durante movimientos de desplazamiento, reduciendo las posibilidades de alcanzar la impresión de la placa de impresión." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "Limpiar altura del salto en Z" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "Diferencia de altura cuando se realiza un salto en Z." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "Limpiar velocidad de salto" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "Velocidad para mover el eje Z durante el salto." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "Limpiar posición X de cepillo" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "Ubicación X donde se iniciará la secuencia de limpieza." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "Recuento de repeticiones de limpieza" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "Número de movimientos de la tobera a lo largo del cepillo." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "Distancia de movimiento de limpieza" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "La distancia para mover el cabezal hacia adelante y hacia atrás a lo largo del cepillo." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Tamaño máximo de agujero pequeño" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Los agujeros y contornos de las piezas con un diámetro menor que estos se imprimen utilizando la función Velocidad de pequeñas partes." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Longitud máxima de pequeñas partes" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Los contornos de las partes que sean más cortos que esta longitud se imprimen utilizando la función Velocidad de pequeñas partes." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Velocidad de pequeñas partes" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Las pequeñas partes se imprimirán a este porcentaje de su velocidad de impresión normal. Una impresión más lenta puede mejorar la adhesión y la precisión." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Velocidad de la capa inicial de partes pequeñas" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Las pequeñas partes de la primera capa se imprimirán a este porcentaje de su velocidad de impresión normal. Una impresión más lenta puede mejorar la adhesión" +" y la precisión." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5692,6 +6298,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matriz de transformación que se aplicará al modelo cuando se cargue desde el archivo." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamaño del área mínima para los polígonos de la interfaz de soporte. No se generarán polígonos que posean un área de menor tamaño que este valor." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamaño del área mínima para los techos del soporte. No se generarán polígonos que posean un área de menor tamaño que este valor." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamaño del área mínima para los suelos del soporte. No se generarán polígonos que posean un área de menor tamaño que este valor." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Alternar la rotación del forro" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Alterna la dirección en la que se imprimen las capas superiores/inferiores. Normalmente, se imprimen únicamente en diagonal. Este ajuste añade las direcciones solo X y solo Y." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Desplazamiento de extrusión máximo del factor de compensación del caudal" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Distancia máxima en mm que se va a compensar." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Factor de compensación del caudal" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "La multiplicación factor por caudal da como resultado la conversión de distancia." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Umbral de las capas de adaptación" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Umbral para usar o no una capa más pequeña. Este número se compara con el curtido de la pendiente más empinada de una capa." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Las paredes con un ángulo de voladizo mayor que este se imprimirán con los ajustes de voladizo de pared. Cuando el valor sea 90, no se aplicará la condición de voladizo a la pared." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Las pequeñas partes se imprimirán a este porcentaje de su velocidad de impresión normal. Una impresión más lenta puede mejorar la adhesión y la precisión." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Velocidad de primera capa" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Las pequeñas partes de la primera capa se imprimirán a este porcentaje de su velocidad de impresión normal. Una impresión más lenta puede mejorar la adhesión y la precisión." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Pasar por la superficie superior una vez más, pero sin extruir material, para derretir la parte externa del plástico y crear una superficie más lisa." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Comenzar capas con la misma parte" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "En cada capa, comenzar imprimiendo el objeto cerca del mismo punto, de forma que no se comienza una capa imprimiendo la pieza en la que finalizó la capa anterior. Esto permite mejorar los voladizos y las partes pequeñas, a costa de un mayor tiempo de impresión." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Orientación del patrón de relleno para soportes. El patrón de relleno de soporte se gira en el plano horizontal." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "La desviación máxima permitida al reducir la resolución en el ajuste de resolución máxima. Si se aumenta el valor, la impresión será menos precisa pero el GCode será más pequeño." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Tipo de GCode" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Controlar si las esquinas del contorno del modelo influyen en la posición de la costura. «Ninguno» significa que las esquinas no influyen en la posición de la costura. «Ocultar costura» significa que es probable que la costura se realice en una esquina interior. «Mostrar costura» significa que es probable que la costura sea en una esquina exterior. «Ocultar o mostrar costura» significa que es probable que la costura se realice en una esquina interior o exterior." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ignorar los pequeños huecos en Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Cuando el modelo tiene pequeños huecos verticales, el tiempo de cálculo puede aumentar alrededor de un 5 % para generar el forro superior e inferior en estos espacios estrechos. En tal caso, desactive este ajuste." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "La temperatura utilizada para el volumen de impresión. Si el valor es 0, la temperatura de volumen de impresión no se ajustará." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Omitir la retracción al moverse de soporte a soporte en línea recta. Habilitar este ajuste ahorra tiempo de impresión pero puede ocasionar un encordado excesivo en la estructura de soporte." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Velocidad máxima de Z" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Velocidad máxima a la que se mueve la placa de impresión. Definir este valor en 0 hace que la impresión utilice los valores predeterminados de la velocidad máxima de Z." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Distancia máxima entre las estructuras del soporte en las direcciones X/Y. Cuando estructuras separadas están más cerca entre sí que de este valor, las estructuras se combinan en una." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Diámetro mínimo" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Diámetro mínimo en las direcciones X/Y de una pequeña área que soportará una torre de soporte especializada." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Torre auxiliar circular" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Hacer que la torre auxiliar sea circular." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Compensación de flujo: la cantidad de material extruido se multiplica por este valor." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Suavice los contornos espiralizados para reducir la visibilidad de la costura Z (la costura Z debería ser apenas visible en la impresora pero seguirá siendo visible en la vista de capas). Tenga en cuenta que la suavización tenderá a desdibujar detalles finos de la superficie." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Función experimental: hace áreas de soporte más pequeñas en la parte inferior que en el voladizo." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "Número de extrusores habilitados" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Diámetro exterior de la tobera" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Longitud de la tobera" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Ángulo de la tobera" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Longitud de la zona térmica" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Velocidad de calentamiento" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Velocidad de enfriamiento" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "Tipo de GCode" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "Áreas no permitidas" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Polígono del cabezal de la máquina" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Polígono del cabezal de la máquina y del ventilador" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Altura del puente" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Desplazamiento con extrusor" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "Utilizar capas de adaptación" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "Variación máxima de las capas de adaptación" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "Tamaño de pasos de variación de las capas de adaptación" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "Umbral de las capas de adaptación" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "La cantidad de superposición entre el forro y las paredes son un porcentaje del ancho de la línea de forro. Una ligera superposición permite que las paredes estén firmemente unidas al forro. Este es el porcentaje de la media de los anchos de las líneas del forro y la pared más profunda." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "Cantidad de superposición entre el forro y las paredes. Una ligera superposición permite que las paredes conecten firmemente con el forro." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "Distancia de la retracción: utilice el valor cero para que no haya retracción. Por norma general, este valor debe ser igual a la longitud de la zona de calentamiento." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "La opción de peinada mantiene la tobera dentro de las áreas ya impresas al desplazarse. Esto ocasiona movimientos de desplazamiento ligeramente más largos, pero reduce la necesidad de realizar retracciones. Si se desactiva la opción de peinada, el material se retraerá y la tobera se moverá en línea recta hasta el siguiente punto. Otra posibilidad es evitar la peinada en áreas de forro superiores/inferiores y además peinar solo en el relleno. La opción de «Sobre el relleno» actúa exactamente igual que la «No está en el forro» de las versiones de Cura anteriores." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "Conectar las trayectorias de forro superior/inferior cuando están próximas entre sí. Al habilitar este ajuste, en el patrón concéntrico se reduce considerablemente el tiempo de desplazamiento, pero las conexiones pueden producirse en mitad del relleno, con lo que la bajaría la calidad de la superficie superior." diff --git a/resources/i18n/fdmextruder.def.json.pot b/resources/i18n/fdmextruder.def.json.pot index fbb003f3c6..322be35b57 100644 --- a/resources/i18n/fdmextruder.def.json.pot +++ b/resources/i18n/fdmextruder.def.json.pot @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Uranium json setting files\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE\n" @@ -80,7 +80,7 @@ msgstr "" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." +msgid "Start g-code to execute when switching to this extruder." msgstr "" #: fdmextruder.def.json @@ -122,7 +122,7 @@ msgstr "" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." +msgid "End g-code to execute when switching away from this extruder." msgstr "" #: fdmextruder.def.json diff --git a/resources/i18n/fdmprinter.def.json.pot b/resources/i18n/fdmprinter.def.json.pot index 96071d82b8..89ff364e2d 100644 --- a/resources/i18n/fdmprinter.def.json.pot +++ b/resources/i18n/fdmprinter.def.json.pot @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Uranium json setting files\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE\n" @@ -218,6 +218,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "" +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "" + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -244,7 +254,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "" #: fdmprinter.def.json @@ -255,7 +265,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "" #: fdmprinter.def.json @@ -265,7 +275,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "" #: fdmprinter.def.json @@ -277,7 +287,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "" #: fdmprinter.def.json @@ -289,7 +299,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "" #: fdmprinter.def.json @@ -325,7 +335,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "" #: fdmprinter.def.json @@ -337,7 +347,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "" #: fdmprinter.def.json @@ -362,7 +372,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "" #: fdmprinter.def.json @@ -429,7 +439,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "" #: fdmprinter.def.json @@ -449,7 +459,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "" #: fdmprinter.def.json @@ -459,7 +469,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" +msgid "Machine Head & Fan Polygon" msgstr "" #: fdmprinter.def.json @@ -469,7 +479,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "" #: fdmprinter.def.json @@ -503,7 +513,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" +msgid "Offset with Extruder" msgstr "" #: fdmprinter.def.json @@ -1111,6 +1121,18 @@ msgid "" "value is rounded to a whole number." msgstr "" +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "" +"The number of initial bottom layers, from the build-plate upwards. When " +"calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "" + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1412,6 +1434,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1448,7 +1520,9 @@ msgid "" "seam. None means that corners have no influence on the seam position. Hide " "Seam makes the seam more likely to occur on an inside corner. Expose Seam " "makes the seam more likely to occur on an outside corner. Hide or Expose " -"Seam makes the seam more likely to occur at an inside or outside corner." +"Seam makes the seam more likely to occur at an inside or outside corner. " +"Smart Hiding allows both inside and outside corners, but chooses inside " +"corners more frequently, if appropriate." msgstr "" #: fdmprinter.def.json @@ -1471,6 +1545,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1486,15 +1565,17 @@ msgstr "" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" +msgid "No Skin in Z Gaps" msgstr "" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" msgid "" -"When the model has small vertical gaps, about 5% extra computation time can " -"be spent on generating top and bottom skin in these narrow spaces. In such " -"case, disable the setting." +"When the model has small vertical gaps of only a few layers, there should " +"normally be skin around those layers in the narrow space. Enable this " +"setting to not generate skin if the vertical gap is very small. This " +"improves printing time and slicing time, but technically leaves infill " +"exposed to the air." msgstr "" #: fdmprinter.def.json @@ -1518,9 +1599,10 @@ msgstr "" #: fdmprinter.def.json msgctxt "ironing_enabled description" msgid "" -"Go over the top surface one additional time, but without extruding material. " -"This is meant to melt the plastic on top further, creating a smoother " -"surface." +"Go over the top surface one additional time, but this time extruding very " +"little material. This is meant to melt the plastic on top further, creating " +"a smoother surface. The pressure in the nozzle chamber is kept high so that " +"the creases in the surface are filled with material." msgstr "" #: fdmprinter.def.json @@ -1621,6 +1703,39 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "" +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "" +"Adjust the amount of overlap between the walls and (the endpoints of) the " +"skin-centerlines, as a percentage of the line widths of the skin lines and " +"the innermost wall. A slight overlap allows the walls to connect firmly to " +"the skin. Note that, given an equal skin and wall line-width, any percentage " +"over 50% may already cause any skin to go past the wall, because at that " +"point the position of the nozzle of the skin-extruder may already reach past " +"the middle of the wall." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "" +"Adjust the amount of overlap between the walls and (the endpoints of) the " +"skin-centerlines. A slight overlap allows the walls to connect firmly to the " +"skin. Note that, given an equal skin and wall line-width, any value over " +"half the width of the wall may already cause any skin to go past the wall, " +"because at that point the position of the nozzle of the skin-extruder may " +"already reach past the middle of the wall." +msgstr "" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1809,6 +1924,19 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "" +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "" +"Randomize which infill line is printed first. This prevents one segment " +"becoming the strongest, but it does so at the cost of an additional travel " +"move." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1877,32 +2005,6 @@ msgid "" "allows the walls to connect firmly to the infill." msgstr "" -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "" -"The amount of overlap between the skin and the walls as a percentage of the " -"skin line width. A slight overlap allows the walls to connect firmly to the " -"skin. This is a percentage of the average line widths of the skin lines and " -"the innermost wall." -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "" -"The amount of overlap between the skin and the walls. A slight overlap " -"allows the walls to connect firmly to the skin." -msgstr "" - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -2136,6 +2238,18 @@ msgid "" "based on this value" msgstr "" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "" +"The temperature of the environment to print in. If this is 0, the build " +"volume temperature will not be adjusted." +msgstr "" + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -2259,6 +2373,94 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "" +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "" +"Is this material the type that breaks off cleanly when heated (crystalline), " +"or is it the type that produces long intertwined polymer chains (non-" +"crystalline)?" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "" +"How fast the material needs to be retracted during a filament switch to " +"prevent oozing." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "" +"How fast the filament needs to be retracted just before breaking it off in a " +"retraction." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "" +"The speed at which to retract the filament in order to break it cleanly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2271,6 +2473,127 @@ msgid "" "value." msgstr "" +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "" +"Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2407,7 +2730,7 @@ msgstr "" msgctxt "limit_support_retractions description" msgid "" "Omit retraction when moving from support to support in a straight line. " -"Enabling this setting saves print time, but can lead to excesive stringing " +"Enabling this setting saves print time, but can lead to excessive stringing " "within the support structure." msgstr "" @@ -2431,8 +2754,9 @@ msgstr "" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" msgid "" -"The amount of retraction: Set at 0 for no retraction at all. This should " -"generally be the same as the length of the heat zone." +"The amount of retraction when switching extruders. Set to 0 for no " +"retraction at all. This should generally be the same as the length of the " +"heat zone." msgstr "" #: fdmprinter.def.json @@ -2470,6 +2794,16 @@ msgid "" "retraction." msgstr "" +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "" + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2693,15 +3027,16 @@ msgid "" msgstr "" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" msgstr "" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" +msgctxt "speed_z_hop description" msgid "" -"The maximum speed with which the build plate is moved. Setting this to zero " -"causes the print to use the firmware defaults for the maximum z speed." +"The speed at which the vertical Z movement is made for Z Hops. This is " +"typically lower than the print speed since the build plate or machine's " +"gantry is harder to move." msgstr "" #: fdmprinter.def.json @@ -3184,9 +3519,7 @@ msgid "" "results in slightly longer travel moves but reduces the need for " "retractions. If combing is off, the material will retract and the nozzle " "moves in a straight line to the next point. It is also possible to avoid " -"combing over top/bottom skin areas and also to only comb within the infill. " -"Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' " -"option in earlier Cura releases." +"combing over top/bottom skin areas or to only comb within the infill." msgstr "" #: fdmprinter.def.json @@ -3267,20 +3600,6 @@ msgid "" "during travel moves." msgstr "" -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "" -"In each layer start with printing the object near the same point, so that we " -"don't start a new layer with printing the piece which the previous layer " -"ended with. This makes for better overhangs and small parts, but increases " -"printing time." -msgstr "" - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3354,6 +3673,16 @@ msgid "" "prevents the nozzle from leaving oozed material on the outside of a print." msgstr "" +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "" + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3676,6 +4005,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3751,15 +4085,18 @@ msgid "" msgstr "" #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "" #: fdmprinter.def.json -msgctxt "support_infill_angle description" +msgctxt "support_infill_angles description" msgid "" -"Orientation of the infill pattern for supports. The support infill pattern " -"is rotated in the horizontal plane." +"A list of integer line directions to use. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the default angle 0 degrees." msgstr "" #: fdmprinter.def.json @@ -3913,7 +4250,7 @@ msgstr "" msgctxt "support_join_distance description" msgid "" "The maximum distance between support structures in the X/Y directions. When " -"seperate structures are closer together than this value, the structures " +"separate structures are closer together than this value, the structures " "merge into one." msgstr "" @@ -3966,6 +4303,18 @@ msgid "" "density." msgstr "" +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "" +"Minimum area size for support polygons. Polygons which have an area smaller " +"than this value will not be generated." +msgstr "" + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -4221,6 +4570,120 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "" +"Minimum area size for support interface polygons. Polygons which have an " +"area smaller than this value will be printed as normal support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "" +"Minimum area size for the roofs of the support. Polygons which have an area " +"smaller than this value will be printed as normal support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "" +"Minimum area size for the floors of the support. Polygons which have an area " +"smaller than this value will be printed as normal support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "" +"A list of integer line directions to use. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the default angles (alternates between 45 and 135 degrees if " +"interfaces are quite thick or 90 degrees)." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "" +"A list of integer line directions to use. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the default angles (alternates between 45 and 135 degrees if " +"interfaces are quite thick or 90 degrees)." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "" +"A list of integer line directions to use. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the default angles (alternates between 45 and 135 degrees if " +"interfaces are quite thick or 90 degrees)." +msgstr "" + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -4269,14 +4732,14 @@ msgid "The diameter of a special tower." msgstr "" #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" msgstr "" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" +msgctxt "support_tower_maximum_supported_diameter description" msgid "" -"Minimum diameter in the X/Y directions of a small area which is to be " +"Maximum diameter in the X/Y directions of a small area which is to be " "supported by a specialized support tower." msgstr "" @@ -4851,16 +5314,6 @@ msgid "" "each nozzle switch." msgstr "" -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "" - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4903,18 +5356,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "" -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "" -"Flow compensation: the amount of material extruded is multiplied by this " -"value." -msgstr "" - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4927,6 +5368,18 @@ msgid "" "the other nozzle off on the prime tower." msgstr "" +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "" +"Prime-towers might need the extra adhesion afforded by a brim even if the " +"model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "" + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -5077,6 +5530,49 @@ msgid "" "setting is set to Exclusive or Middle." msgstr "" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "" +"The minimum size of a line segment after slicing. If you increase this, the " +"mesh will have a lower resolution. This may allow the printer to keep up " +"with the speed it has to process g-code and will increase slice speed by " +"removing details of the mesh that it can't process anyway." +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "" +"The minimum size of a travel line segment after slicing. If you increase " +"this, the travel moves will have less smooth corners. This may allow the " +"printer to keep up with the speed it has to process g-code, but it may cause " +"model avoidance to become less accurate." +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "" +"The maximum deviation allowed when reducing the resolution for the Maximum " +"Resolution setting. If you increase this, the print will be less accurate, " +"but the g-code will be smaller. Maximum Deviation is a limit for Maximum " +"Resolution, so if the two conflict the Maximum Deviation will always be held " +"true." +msgstr "" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -5274,7 +5770,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" msgid "" -"Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-" +"Smooth the spiralized contours to reduce the visibility of the Z seam (the Z " "seam should be barely visible on the print but will still be visible in the " "layer view). Note that smoothing will tend to blur fine surface details." msgstr "" @@ -5541,34 +6037,6 @@ msgid "" "and very tiny 3D models with a lot of details." msgstr "" -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "" -"The minimum size of a line segment after slicing. If you increase this, the " -"mesh will have a lower resolution. This may allow the printer to keep up " -"with the speed it has to process g-code and will increase slice speed by " -"removing details of the mesh that it can't process anyway." -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "" -"The minimum size of a travel line segment after slicing. If you increase " -"this, the travel moves will have less smooth corners. This may allow the " -"printer to keep up with the speed it has to process g-code, but it may cause " -"model avoidance to become less accurate." -msgstr "" - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5739,19 +6207,6 @@ msgid "" "coasting move the pressure in the bowden tube drops." msgstr "" -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "" -"Alternate the direction in which the top/bottom layers are printed. Normally " -"they are printed diagonally only. This setting adds the X-only and Y-only " -"directions." -msgstr "" - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5881,9 +6336,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "" -"Experimental feature: Make support areas smaller at the bottom than at the " -"overhang." +msgid "Make support areas smaller at the bottom than at the overhang." msgstr "" #: fdmprinter.def.json @@ -5965,22 +6418,27 @@ msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." +msgid "" +"The maximum distance in mm to move the filament to compensate for changes in " +"flow rate." msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." +msgid "" +"How far to move the filament in order to compensate for changes in flow " +"rate, as a percentage of how far the filament would move in one second of " +"extrusion." msgstr "" #: fdmprinter.def.json @@ -6298,7 +6756,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "" #: fdmprinter.def.json @@ -6310,7 +6768,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "" #: fdmprinter.def.json @@ -6320,7 +6778,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "" #: fdmprinter.def.json @@ -6332,14 +6790,15 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" +msgid "Adaptive Layers Topography Size" msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" msgid "" -"Threshold whether to use a smaller layer or not. This number is compared to " -"the tan of the steepest slope in a layer." +"Target horizontal distance between two adjacent layers. Reducing this " +"setting causes thinner layers to be used to bring the edges of the layers " +"closer together." msgstr "" #: fdmprinter.def.json @@ -6351,7 +6810,9 @@ msgstr "" msgctxt "wall_overhang_angle description" msgid "" "Walls that overhang more than this angle will be printed using overhanging " -"wall settings. When the value is 90, no walls will be treated as overhanging." +"wall settings. When the value is 90, no walls will be treated as " +"overhanging. Overhang that gets supported by support will not be treated as " +"overhang either." msgstr "" #: fdmprinter.def.json @@ -6584,6 +7045,222 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "" +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "" +"Whether to include nozzle wipe G-Code between layers. Enabling this setting " +"could influence behavior of retract at layer change. Please use Wipe " +"Retraction settings to control retraction at layers where the wipe script " +"will be working." +msgstr "" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "" +"Maximum material, that can be extruded before another nozzle wipe is " +"initiated." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "" +"Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "" +"Some material can ooze away during a wipe travel moves, which can be " +"compensated for here." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "" +"The speed at which the filament is retracted and primed during a wipe " +"retraction move." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "" +"The speed at which the filament is retracted during a wipe retraction move." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "" +"The speed at which the filament is primed during a wipe retraction move." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "" +"Whenever a retraction is done, the build plate is lowered to create " +"clearance between the nozzle and the print. It prevents the nozzle from " +"hitting the print during travel moves, reducing the chance to knock the " +"print from the build plate." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "" +"Holes and part outlines with a diameter smaller than this will be printed " +"using Small Feature Speed." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "" +"Feature outlines that are shorter than this length will be printed using " +"Small Feature Speed." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "" +"Small features will be printed at this percentage of their normal print " +"speed. Slower printing can help with adhesion and accuracy." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "" +"Small features on the first layer will be printed at this percentage of " +"their normal print speed. Slower printing can help with adhesion and " +"accuracy." +msgstr "" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" diff --git a/resources/i18n/fi_FI/cura.po b/resources/i18n/fi_FI/cura.po index 442500f21b..bfc110737f 100644 --- a/resources/i18n/fi_FI/cura.po +++ b/resources/i18n/fi_FI/cura.po @@ -1,13 +1,13 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Laitteen asetukset" @@ -38,23 +38,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "GCode-tiedosto" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,65 +64,49 @@ msgid "" "

    View print quality guide

    " msgstr "" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Näytä muutosloki" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Aktivoitujen asetusten tasoitus" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Profiili on tasoitettu ja aktivoitu." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-tulostus" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Tulosta USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Tulosta USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Yhdistetty USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G-tiedosto" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." msgstr "" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 @@ -137,6 +121,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "" #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "" @@ -158,7 +143,7 @@ msgid "Save to Removable Drive {0}" msgstr "Tallenna siirrettävälle asemalle {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "" @@ -195,9 +180,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Ei voitu tallentaa siirrettävälle asemalle {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Virhe" @@ -226,8 +211,9 @@ msgstr "Poista siirrettävä asema {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Varoitus" @@ -254,232 +240,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Siirrettävä asema" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Tulosta verkon kautta" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Tulosta verkon kautta" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Yhdistetty verkon kautta tulostimeen." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Yhdistetty verkon kautta. Hyväksy tulostimen käyttöoikeuspyyntö." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Yhdistetty verkon kautta tulostimeen. Ei käyttöoikeutta tulostimen hallintaan." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Tulostimen käyttöoikeutta pyydetty. Hyväksy tulostimen pyyntö" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Yritä uudelleen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Lähetä käyttöoikeuspyyntö uudelleen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Tulostimen käyttöoikeus hyväksytty" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "Tällä tulostimella tulostukseen ei ole käyttöoikeutta. Tulostustyön lähetys ei onnistu." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Pyydä käyttöoikeutta" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Lähetä tulostimen käyttöoikeuspyyntö" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Ristiriitainen määritys" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Haluatko varmasti tulostaa valitulla määrityksellä?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Tulostimen ja Curan määrityksen tai kalibroinnin välillä on ristiriita. Parhaat tulokset saavutetaan viipaloimalla aina tulostimeen asetetuille PrintCoreille ja materiaaleille." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "Uusien töiden lähettäminen (tilapäisesti) estetty, edellistä tulostustyötä lähetetään vielä." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Lähetetään tietoja tulostimeen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Lähetetään tietoja" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Peruuta" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Eri materiaali (Cura: {0}, tulostin: {1}) valittu suulakkeelle {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Synkronoi tulostimen kanssa" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Haluatko käyttää nykyistä tulostimen määritystä Curassa?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Tulostimen PrintCoret tai materiaalit eivät vastaa tulostettavan projektin asetuksia. Parhaat tulokset saavutetaan viipaloimalla aina tulostimeen asetetuille PrintCoreille ja materiaaleille." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} on tulostanut työn '{job_name}'." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Tulosta valmis" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Yhdistä verkon kautta" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Tulosta verkon kautta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Tulosta verkon kautta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Päivitystietoja ei löytynyt." @@ -501,24 +419,30 @@ msgctxt "@action:button" msgid "How to update" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Kerrosnäkymä" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura ei näytä kerroksia täsmällisesti, kun rautalankatulostus on käytössä" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" -msgstr "Muokkaa GCode-arvoa" +msgstr "" #: /home/ruben/Projects/Cura/plugins/SupportEraser/__init__.py:12 msgctxt "@label" @@ -530,36 +454,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "Kerätään tietoja" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "" - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -590,56 +484,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-kuva" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Viipalointi ei onnistu nykyisellä materiaalilla, sillä se ei sovellu käytettäväksi valitun laitteen tai kokoonpanon kanssa." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "Viipalointi ei onnistu" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Viipalointi ei onnistu nykyisten asetuksien ollessa voimassa. Seuraavissa asetuksissa on virheitä: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Viipalointi ei onnistu, koska esitäyttötorni tai esitäytön sijainti tai sijainnit eivät kelpaa." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Ei viipaloitavaa, koska mikään malleista ei sovellu tulostustilavuuteen. Skaalaa tai pyöritä mallia, kunnes se on sopiva." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "Käsitellään kerroksia" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Tiedot" @@ -654,14 +578,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Määritä mallikohtaiset asetukset" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Suositeltu" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Mukautettu" @@ -672,19 +594,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-tiedosto" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Suutin" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "" @@ -699,22 +621,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G File -tiedosto" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-coden jäsennys" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-coden tiedot" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Varmista, että G-code on tulostimelle ja sen tulostusasetuksille soveltuva, ennen kuin lähetät tiedoston siihen. G-coden esitys ei välttämättä ole tarkka." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -736,330 +701,451 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Valitse päivitykset" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Tarkastus" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Tasaa alusta" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Ulkoseinämä" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Sisäseinämät" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Pintakalvo" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Täyttö" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Tuen täyttö" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Tukiliittymä" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Tuki" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Helma" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Siirtoliike" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Takaisinvedot" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Muu" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Esiviipaloitu tiedosto {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Tiedosto on jo olemassa" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Tiedosto {0} on jo olemassa. Haluatko varmasti kirjoittaa sen päälle?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Valittu materiaali ei sovellu käytettäväksi valitun laitteen tai kokoonpanon kanssa." - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Yhteensopimaton materiaali" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" +msgid "Invalid file URL:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Tuntematon" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Profiilin vienti epäonnistui tiedostoon {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Profiilin vienti epäonnistui tiedostoon {0}: Kirjoitin-lisäosa ilmoitti virheestä." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profiili viety tiedostoon {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "Profiilin tuonti epäonnistui tiedostosta {0}: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Onnistuneesti tuotu profiili {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profiililla {0} on tuntematon tiedostotyyppi tai se on vioittunut." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Mukautettu profiili" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profiilista puuttuu laatutyyppi." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Laatutyyppiä {0} ei löydy nykyiselle kokoonpanolle." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Ulkoseinämä" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Sisäseinämät" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Pintakalvo" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Täyttö" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Tuen täyttö" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Tukiliittymä" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Tuki" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Helma" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Siirtoliike" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Takaisinvedot" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Muu" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Esiviipaloitu tiedosto {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Sulje" + +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Lisää" + +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Peruuta" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Mukautetut profiilit" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Mukautettu materiaali" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Mukautettu" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Tulostustilavuuden korkeutta on vähennetty tulostusjärjestysasetuksen vuoksi, jotta koroke ei osuisi tulostettuihin malleihin." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Tulostustilavuus" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." +msgid "Tried to restore a Cura backup that is higher than the current version." msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Kappaleiden kertominen ja sijoittelu" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "Sijoitetaan kappaletta" +msgid "Placing Objects" +msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Kaikille kappaleille ei löydy paikkaa tulostustilavuudessa." +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "Sijoitetaan kappaletta" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Uusien paikkojen etsiminen kappaleille" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "Etsitään paikkaa" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Paikkaa ei löydy" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1069,32 +1155,32 @@ msgid "" " " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Kaatumisraportti" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" @@ -1102,321 +1188,285 @@ msgid "" " " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ladataan laitteita..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Asetetaan näkymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ladataan käyttöliittymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Vain yksi G-code-tiedosto voidaan ladata kerralla. Tiedoston {0} tuonti ohitettiin." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Muita tiedostoja ei voida ladata, kun G-code latautuu. Tiedoston {0} tuonti ohitettiin." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Laitteen asetukset" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Tulostin" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" -msgstr "Tulostimen asetukset" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (leveys)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (syvyys)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (korkeus)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Alustan muoto" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" -msgstr "Alkukohta keskellä" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" -msgstr "Lämmitettävä pöytä" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" -msgstr "Tulostuspään asetukset" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X väh." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Etäisyys tulostuspään vasemmalta puolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y väh." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Etäisyys tulostuspään etupuolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X enint." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Etäisyys tulostuspään oikealta puolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y enint." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Etäisyys tulostuspään takapuolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" -msgstr "Korokkeen korkeus" +msgid "Gantry Height" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "Suuttimen kärjen ja korokejärjestelmän (X- ja Y-akselit) välinen korkeusero. Käytetään estämään aiempien tulosteiden ja korokkeen yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Suulakkeiden määrä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Tulostin" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" +msgid "Nozzle Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" -msgid "Nozzle Settings" -msgstr "Suutinasetukset" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Suuttimen koko" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Tulostimen tukema tulostuslangan nimellinen halkaisija. Materiaali ja/tai profiili korvaa tarkan halkaisijan." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "Suuttimen X-siirtymä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Suuttimen Y-siirtymä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Asennettu" @@ -1426,68 +1476,81 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiaalit" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Tuntematon" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" +msgid "Marketplace" msgstr "" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 @@ -1515,52 +1578,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "" @@ -1578,12 +1656,12 @@ msgid "" "Do you agree with the terms below?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Hyväksy" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Hylkää" @@ -1593,22 +1671,62 @@ msgctxt "@label" msgid "Featured" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "" @@ -1618,23 +1736,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Muutosloki" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Sulje" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1710,426 +1811,501 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Laiteohjelmiston päivitys epäonnistui puuttuvan laiteohjelmiston takia." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "Jonossa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Yhdistä verkkotulostimeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." msgstr "" -"Tulosta suoraan tulostimeen verkon kautta yhdistämällä tulostin verkkoon verkkokaapelilla tai yhdistämällä tulostin Wi-Fi-verkkoon. Jos Curaa ei yhdistetä tulostimeen, GCode-tiedostot voidaan silti siirtää tulostimeen USB-aseman avulla.\n" -"\n" -"Valitse tulostin alla olevasta luettelosta:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Lisää" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Muokkaa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Poista" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Päivitä" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Jos tulostinta ei ole luettelossa, lue verkkotulostuksen vianetsintäopas" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tyyppi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Laiteohjelmistoversio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Osoite" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Tämän osoitteen tulostin ei ole vielä vastannut." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Yhdistä" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Tulostimen osoite" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Anna verkon tulostimen IP-osoite tai isäntänimi." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Tulosta" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Tulosta verkon kautta" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Valmis" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "Valmistellaan" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 -msgctxt "@label:status" -msgid "Pausing" +msgid "Preparing..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Resuming" +msgid "Aborting..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 +msgctxt "@label:status" +msgid "Pausing..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Vaatii toimenpiteitä" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Tulosta verkon kautta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Tulosta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" +msgid "Printer selection" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "Jonossa" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "Tulostetaan" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Keskeytä tulostus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Yhdistä tulostimeen" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Aktivoi määritys" +msgid "Override" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Lataa tulostimen määritys Curaan" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "" +msgstr[1] "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Värimalli" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materiaalin väri" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Linjojen tyyppi" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Yhteensopivuustila" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "Näytä siirtoliikkeet" +msgid "Travels" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "Näytä avustimet" +msgid "Helpers" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "Näytä kuori" +msgid "Shell" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "Näytä täyttö" +msgid "Infill" +msgstr "Täyttö" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Näytä vain yläkerrokset" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Näytä 5 yksityiskohtaista kerrosta ylhäällä" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Yläosa/alaosa" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Sisäseinämä" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "" @@ -2144,39 +2320,39 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Jälkikäsittelykomentosarjat" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Lisää komentosarja" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Asetukset" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Muuta aktiivisia jälkikäsittelykomentosarjoja" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" +msgid "I don't want to send anonymous data" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" +msgid "Allow sending anonymous data" msgstr "" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 @@ -2226,19 +2402,19 @@ msgstr "Syvyys (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "Oletuksena valkoiset pikselit edustavat verkossa korkeita pisteitä ja mustat pikselit edustavat verkossa matalia pisteitä. Muuta asetus, jos haluat, että mustat pikselit edustavat verkossa korkeita pisteitä ja valkoiset pikselit edustavat verkossa matalia pisteitä." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Vaaleampi on korkeampi" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Tummempi on korkeampi" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Vaaleampi on korkeampi" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2249,81 +2425,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Tasoitus" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Valitse asetukset" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Valitse tätä mallia varten mukautettavat asetukset" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Suodatin..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Näytä kaikki" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Valitse asetukset" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Avaa projekti" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" -msgstr "Päivitä nykyinen" +msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" -msgstr "Luo uusi" +msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Yhteenveto – Cura-projekti" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Tulostimen asetukset" @@ -2339,20 +2514,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Luo uusi" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Tyyppi" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Profiilin asetukset" @@ -2363,226 +2543,222 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Miten profiilin ristiriita pitäisi ratkaista?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nimi" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Ei profiilissa" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 ohitus" msgstr[1] "%1 ohitusta" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Johdettu seuraavista" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 ohitus" msgstr[1] "%1, %2 ohitusta" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Materiaaliasetukset" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Miten materiaalin ristiriita pitäisi ratkaista?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Asetusten näkyvyys" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Tila" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Näkyvät asetukset:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1/%2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Avaa" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Valitse tulostimen päivitykset" +msgid "My Backups" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Valitse tähän Ultimaker 2 -laitteeseen tehdyt päivitykset." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block -lämmitysosa" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Alustan tasaaminen" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Voit säätää alustaa, jotta tulosteista tulisi hyviä. Kun napsautat \"Siirry seuraavaan positioon\", suutin siirtyy eri positioihin, joita voidaan säätää." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Laita paperinpala kussakin positiossa suuttimen alle ja säädä tulostusalustan korkeus. Tulostusalustan korkeus on oikea, kun suuttimen kärki juuri ja juuri osuu paperiin." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Aloita alustan tasaaminen" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Siirry seuraavaan positioon" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Valitse tähän Ultimaker Original -laitteeseen tehdyt päivitykset" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "Lämmitettävä alusta (virallinen sarja tai itse rakennettu)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Tarkista tulostin" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "Ultimakerille on hyvä tehdä muutamia toimintatarkastuksia. Voit jättää tämän vaiheen väliin, jos tiedät laitteesi olevan toimintakunnossa" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Aloita tulostintarkistus" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Yhteys: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Yhdistetty" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Ei yhteyttä" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Min. päätyraja X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Toimii" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Ei tarkistettu" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Min. päätyraja Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Min. päätyraja Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Suuttimen lämpötilatarkistus: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Lopeta lämmitys" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Aloita lämmitys" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Alustan lämpötilan tarkistus:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Tarkistettu" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Kaikki on kunnossa! CheckUp on valmis." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2594,7 +2770,6 @@ msgid "Printer does not accept commands" msgstr "Tulostin ei hyväksy komentoja" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Huolletaan. Tarkista tulostin" @@ -2605,19 +2780,16 @@ msgid "Lost connection with the printer" msgstr "Yhteys tulostimeen menetetty" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Tulostetaan..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Keskeytetty" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Valmistellaan..." @@ -2637,235 +2809,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Haluatko varmasti keskeyttää tulostuksen?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Hylkää tai säilytä muutokset" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"Olet mukauttanut profiilin asetuksia.\n" -"Haluatko säilyttää vai hylätä nämä asetukset?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Profiilin asetukset" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Oletusarvo" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Mukautettu" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Kysy aina" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Hylkää äläkä kysy uudelleen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Säilytä äläkä kysy uudelleen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Hylkää" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Säilytä" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Luo uusi profiili" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Tiedot" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Näytä nimi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Merkki" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Materiaalin tyyppi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Väri" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Ominaisuudet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Tiheys" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Läpimitta" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Tulostuslangan hinta" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Tulostuslangan paino" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Tulostuslangan pituus" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Hinta metriä kohden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Materiaali on linkitetty kohteeseen %1 ja niillä on joitain samoja ominaisuuksia." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Poista materiaalin linkitys" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Kuvaus" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Tarttuvuustiedot" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Tulostusasetukset" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Aktivoi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Luo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Jäljennös" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Tuo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Vie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Tuo materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Materiaalin tuominen epäonnistui: %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Materiaalin tuominen onnistui: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Vie materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Materiaalin vieminen epäonnistui kohteeseen %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiaalin vieminen onnistui kohteeseen %1" @@ -2875,669 +2988,521 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Näkyvyyden asettaminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Tarkista kaikki" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Laskettu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Asetus" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profiili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Nykyinen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Yksikkö" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Yleiset" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Käyttöliittymä" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Kieli:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Valuutta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Teema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Sovellus on käynnistettävä uudelleen, jotta nämä muutokset tulevat voimaan." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Viipaloi automaattisesti, kun asetuksia muutetaan." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Viipaloi automaattisesti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Näyttöikkunan käyttäytyminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Korosta mallin vailla tukea olevat alueet punaisella. Ilman tukea nämä alueet eivät tulostu kunnolla." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Näytä uloke" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Siirtää kameraa siten, että valittuna oleva malli on näkymän keskellä." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Keskitä kamera kun kohde on valittu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Pitääkö Curan oletusarvoinen zoom-toimintatapa muuttaa päinvastaiseksi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Käännä kameran zoomin suunta päinvastaiseksi." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Tuleeko zoomauksen siirtyä hiiren suuntaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomaa hiiren suuntaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Pitäisikö alustalla olevia malleja siirtää niin, etteivät ne enää leikkaa toisiaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Varmista, että mallit ovat erillään" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Pitäisikö tulostusalueella olevia malleja siirtää alas niin, että ne koskettavat tulostusalustaa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Pudota mallit automaattisesti alustalle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Pakotetaanko kerros yhteensopivuustilaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Pakota kerrosnäkymän yhteensopivuustila (vaatii uudelleenkäynnistyksen)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Tiedostojen avaaminen ja tallentaminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Pitäisikö mallit skaalata tulostustilavuuteen, jos ne ovat liian isoja?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Skaalaa suuret mallit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Malli voi vaikuttaa erittäin pieneltä, jos sen koko on ilmoitettu esimerkiksi metreissä eikä millimetreissä. Pitäisikö nämä mallit suurentaa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Skaalaa erittäin pienet mallit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Pitäisikö tulostustyön nimeen lisätä automaattisesti tulostimen nimeen perustuva etuliite?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Lisää laitteen etuliite työn nimeen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Näytetäänkö yhteenveto, kun projektitiedosto tallennetaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Näytä yhteenvetoikkuna, kun projekti tallennetaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Projektitiedoston avaamisen oletustoimintatapa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Projektitiedoston avaamisen oletustoimintatapa: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Avaa aina projektina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Tuo mallit aina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Kun olet tehnyt muutokset profiiliin ja vaihtanut toiseen, näytetään valintaikkuna, jossa kysytään, haluatko säilyttää vai hylätä muutokset. Tässä voit myös valita oletuskäytöksen, jolloin valintaikkunaa ei näytetä uudelleen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Kysy aina" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Tietosuoja" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Pitäisikö Curan tarkistaa saatavilla olevat päivitykset, kun ohjelma käynnistetään?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Tarkista päivitykset käynnistettäessä" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Pitäisikö anonyymejä tietoja tulosteesta lähettää Ultimakerille? Huomaa, että malleja, IP-osoitteita tai muita henkilökohtaisia tietoja ei lähetetä eikä tallenneta." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Lähetä (anonyymit) tulostustiedot" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Tulostimet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Nimeä uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Tulostimen tyyppi:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Yhteys:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "Tulostinta ei ole yhdistetty." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "Tila:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "Odotetaan tulostustyötä" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "Odotetaan tulostusalustan tyhjennystä" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Keskeytetään tulostus..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiilit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Luo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Jäljennös" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Luo profiili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Monista profiili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Nimeä profiili uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Profiilin tuonti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Profiilin vienti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Tulostin: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Suojatut profiilit" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Mukautetut profiilit" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Päivitä nykyiset asetukset tai ohitukset profiiliin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Hylkää tehdyt muutokset" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Tässä profiilissa käytetään tulostimen oletusarvoja, joten siinä ei ole alla olevan listan asetuksia tai ohituksia." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Nykyiset asetukset vastaavat valittua profiilia." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Yleiset asetukset" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Lisää tulostin" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Tulostimen nimi:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Lisää tulostin" +msgid "Marketplace" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "Tie&dosto" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&Muokkaa" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Näytä" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "Laa&jennukset" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "L&isäasetukset" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "&Ohje" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Uusi projekti" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Haluatko varmasti aloittaa uuden projektin? Se tyhjentää alustan ja kaikki tallentamattomat asetukset." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "Tietoja Curasta" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "Kokonaisvaltainen sulatettavan tulostuslangan 3D-tulostusratkaisu." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura-ohjelman on kehittänyt Ultimaker B.V. yhteistyössä käyttäjäyhteisön kanssa.\n" -"Cura hyödyntää seuraavia avoimeen lähdekoodiin perustuvia projekteja:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Graafinen käyttöliittymä" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Sovelluskehys" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Prosessien välinen tietoliikennekirjasto" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Ohjelmointikieli" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUI-kehys" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "GUI-kehyksen sidonnat" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "C/C++ -sidontakirjasto" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Data Interchange Format" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Tieteellisen laskennan tukikirjasto" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Nopeamman laskennan tukikirjasto" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "STL-tiedostojen käsittelyn tukikirjasto" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Tukikirjasto 3MF-tiedostojen käsittelyyn" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Sarjatietoliikennekirjasto" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "ZeroConf-etsintäkirjasto" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Monikulmion leikkauskirjasto" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Fontti" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "SVG-kuvakkeet" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Profiili:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Jotkut asetusten ja ohitusten arvot eroavat profiiliin tallennetuista arvoista.\n" -"\n" -"Avaa profiilin hallinta napsauttamalla." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Haku…" +msgid "Search settings" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Kopioi arvo kaikkiin suulakepuristimiin" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Piilota tämä asetus" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Älä näytä tätä asetusta" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pidä tämä asetus näkyvissä" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Määritä asetusten näkyvyys..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3548,27 +3513,32 @@ msgstr "" "\n" "Tee asetuksista näkyviä napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Koskee seuraavia:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Riippuu seuraavista:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Arvo perustuu suulakepuristimien arvoihin " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3579,7 +3549,7 @@ msgstr "" "\n" "Palauta profiilin arvo napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3590,116 +3560,212 @@ msgstr "" "\n" "Palauta laskettu arvo napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "Asteittainen täyttö lisää täytön tiheyttä vähitellen yläosaa kohti." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Muodosta rakenteita, jotka tukevat mallin ulokkeita sisältäviä osia. Ilman tukirakenteita kyseiset osat luhistuvat tulostuksen aikana." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Ota reunuksen tai pohjaristikon tulostus käyttöön. Tämä lisää kappaleen ympärille tai alle tasaisen alueen, joka on helppo leikata pois myöhemmin." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Jotkut asetusten ja ohitusten arvot eroavat profiiliin tallennetuista arvoista.\n" +"\n" +"Avaa profiilin hallinta napsauttamalla." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Suulake" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Kuuman pään kohdelämpötila. Kuuma pää lämpenee tai viilenee kohti tätä lämpötilaa. Jos asetus on 0, kuuman pään lämmitys sammutetaan." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Peruuta" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Esilämmitä" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Tämän suulakkeen materiaalin väri." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Tämän suulakkeen materiaali." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Tähän suulakkeeseen liitetty suutin." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "Tulostinta ei ole yhdistetty." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Alusta" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Lämmitettävän pöydän kohdelämpötila. Pöytä lämpenee tai viilenee kohti tätä lämpötilaa. Jos asetus on 0, pöydän lämmitys sammutetaan." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Lämmitettävän pöydän nykyinen lämpötila." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Lämmitettävän pöydän esilämmityslämpötila." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Lämmitä pöytä ennen tulostusta. Voit edelleen säätää tulostinta sen lämmitessä, eikä sinun tarvitse odottaa pöydän lämpiämistä, kun olet valmis tulostamaan." @@ -3709,12 +3775,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "" @@ -3729,17 +3795,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&Näytä" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "&Tulostin" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&Materiaali" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Aseta aktiiviseksi suulakepuristimeksi" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "" @@ -3759,6 +3860,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3778,657 +3894,507 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Kopioiden määrä" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Materiaali" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Avaa &viimeisin" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Tulostuksen asennus" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"Tulostuksen asennus ei käytössä\n" -"G-code-tiedostoja ei voida muokata" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Suositeltu tulostuksen asennus

    Tulosta valitun tulostimen, materiaalin ja laadun suositelluilla asetuksilla." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Mukautettu tulostuksen asennus

    Tulosta hallitsemalla täysin kaikkia viipalointiprosessin vaiheita." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Aktiivinen tulostustyö" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Työn nimi" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Tulostusaika" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Aikaa jäljellä arviolta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "Viipaloidaan..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Vaihda koko näyttöön" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Kumoa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "Tee &uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Lopeta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Määritä Curan asetukset..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "L&isää tulostin..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Tulostinten &hallinta..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Hallitse materiaaleja..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Päivitä nykyiset asetukset tai ohitukset profiiliin" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Hylkää tehdyt muutokset" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Luo profiili nykyisten asetusten tai ohitusten perusteella..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profiilien hallinta..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Näytä sähköinen &dokumentaatio" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Ilmoita &virheestä" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "Tietoja..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "Poista valittu malli" msgstr[1] "Poista valitut mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Keskitä valittu malli" msgstr[1] "Keskitä valitut mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Kerro valittu malli" msgstr[1] "Kerro valitut mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Poista malli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ke&skitä malli alustalle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Ryhmittele mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Poista mallien ryhmitys" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Yhdistä mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Kerro malli..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Valitse kaikki mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Tyhjennä tulostusalusta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Lataa kaikki mallit uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Järjestä kaikki mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Järjestä valinta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Määritä kaikkien mallien positiot uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Määritä kaikkien mallien muutokset uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Avaa tiedosto(t)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Uusi projekti..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Näytä moottorin l&oki" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Näytä määrityskansio" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." +msgid "&Marketplace" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Lataa 3D-malli" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Valmiina viipaloimaan" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Viipaloidaan..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Valmis: %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Viipalointi ei onnistu" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Viipalointi ei käytettävissä" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Valmistele" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Peruuta" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Valitse aktiivinen tulostusväline" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Avaa tiedosto(t)" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Löysimme vähintään yhden projektitiedoston valitsemiesi tiedostojen joukosta. Voit avata vain yhden projektitiedoston kerrallaan. Suosittelemme, että tuot vain malleja niistä tiedostoista. Haluatko jatkaa?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Tuo kaikki malleina" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "Tie&dosto" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&Muokkaa" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "&Näytä" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "&Asetukset" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "&Tulostin" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Materiaali" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Aseta aktiiviseksi suulakepuristimeksi" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profiili" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "Laa&jennukset" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "L&isäasetukset" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "&Ohje" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Avaa tiedosto" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Asetukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Uusi projekti" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Haluatko varmasti aloittaa uuden projektin? Se tyhjentää alustan ja kaikki tallentamattomat asetukset." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Avaa tiedosto(t)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Avaa tiedosto(t)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Löysimme vähintään yhden Gcode-tiedoston valitsemiesi tiedostojen joukosta. Voit avata vain yhden Gcode-tiedoston kerrallaan. Jos haluat avata Gcode-tiedoston, valitse vain yksi." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Tallenna projekti" +msgid "Add Printer" +msgstr "Lisää tulostin" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Suulake %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & materiaali" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Älä näytä projektin yhteenvetoa tallennettaessa" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Tallenna" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Kerroksen korkeus" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Tulostusnopeus" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Hitaammin" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Nopeammin" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Täyttö" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Asteittainen täyttö lisää täytön tiheyttä vähitellen yläosaa kohti." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Ota asteittainen käyttöön" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Muodosta tuki" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Muodosta rakenteita, jotka tukevat mallin ulokkeita sisältäviä osia. Ilman tukirakenteita kyseiset osat luhistuvat tulostuksen aikana." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Valitse tukena käytettävä suulakepuristin. Näin mallin alle rakennetaan tukirakenteita estämään mallin painuminen tai tulostuminen ilmaan." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Alustan tarttuvuus" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Ota reunuksen tai pohjaristikon tulostus käyttöön. Tämä lisää kappaleen ympärille tai alle tasaisen alueen, joka on helppo leikata pois myöhemmin." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "Tarvitsetko apua tulosteiden parantamiseen?
    Lue Ultimakerin vianmääritysoppaat" - #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" msgid "Print Selected Model with %1" @@ -4436,74 +4402,500 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "Tulosta valittu malli asetuksella %1" msgstr[1] "Tulosta valitut mallit asetuksella %1" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Hylkää tai säilytä muutokset" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"Olet mukauttanut profiilin asetuksia.\n" +"Haluatko säilyttää vai hylätä nämä asetukset?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Profiilin asetukset" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Oletusarvo" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Mukautettu" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Hylkää äläkä kysy uudelleen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Säilytä äläkä kysy uudelleen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Hylkää" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Säilytä" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Luo uusi profiili" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Tietoja Curasta" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "Kokonaisvaltainen sulatettavan tulostuslangan 3D-tulostusratkaisu." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura-ohjelman on kehittänyt Ultimaker B.V. yhteistyössä käyttäjäyhteisön kanssa.\n" +"Cura hyödyntää seuraavia avoimeen lähdekoodiin perustuvia projekteja:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Graafinen käyttöliittymä" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Sovelluskehys" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Prosessien välinen tietoliikennekirjasto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Ohjelmointikieli" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUI-kehys" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "GUI-kehyksen sidonnat" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C/C++ -sidontakirjasto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Data Interchange Format" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Tieteellisen laskennan tukikirjasto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Nopeamman laskennan tukikirjasto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "STL-tiedostojen käsittelyn tukikirjasto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Tukikirjasto 3MF-tiedostojen käsittelyyn" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Sarjatietoliikennekirjasto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "ZeroConf-etsintäkirjasto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Monikulmion leikkauskirjasto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Fontti" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVG-kuvakkeet" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Löysimme vähintään yhden projektitiedoston valitsemiesi tiedostojen joukosta. Voit avata vain yhden projektitiedoston kerrallaan. Suosittelemme, että tuot vain malleja niistä tiedostoista. Haluatko jatkaa?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Tuo kaikki malleina" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Tallenna projekti" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Suulake %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & materiaali" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Älä näytä projektin yhteenvetoa tallennettaessa" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Tallenna" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Avaa projektitiedosto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Tämä on Cura-projektitiedosto. Haluatko avata sen projektina vai tuoda siinä olevat mallit?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Muista valintani" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Avaa projektina" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Tuo mallit" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Moottorin loki" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" +msgid "Empty" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Materiaali" +msgid "Add a printer" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" +msgid "Add a networked printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" +msgid "Add a non-networked printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Napsauta ja tarkista materiaalin yhteensopivuus sivustolla Ultimaker.com." - -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" msgstr "" #: MachineSettingsAction/plugin.json @@ -4566,26 +4958,6 @@ msgctxt "name" msgid "Model Checker" msgstr "" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Vedosta kaikkien asetusten sisällöt HTML-tiedostoon." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Jumala-tila" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Näyttää viimeisimmän tarkistetun version jälkeen tapahtuneet muutokset." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Muutosloki" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4596,15 +4968,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Luo tasoitettu laatumuutosten profiili." +msgid "Provides support for reading AMF files." +msgstr "" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Profiilin tasoitus" +msgid "AMF Reader" +msgstr "" #: USBPrinting/plugin.json msgctxt "description" @@ -4616,26 +4988,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB-tulostus" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "" - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4678,13 +5030,13 @@ msgstr "Irrotettavan aseman tulostusvälineen laajennus" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." +msgid "Manages network connections to Ultimaker networked printers." msgstr "" #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3-verkkoyhteys" +msgid "Ultimaker Network Connection" +msgstr "" #: MonitorStage/plugin.json msgctxt "description" @@ -4746,6 +5098,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "" + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4806,6 +5168,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "" + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4826,6 +5198,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Päivitys versiosta 2.7 versioon 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4836,6 +5218,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "" + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4846,6 +5238,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "" + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4876,6 +5278,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Päivitys versiosta 2.2 versioon 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "" + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4886,6 +5298,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Kuvanlukija" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "" + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4936,6 +5358,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "GCode-lukija" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "" + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4956,6 +5388,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF-kirjoitin" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "" + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4976,6 +5418,447 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-profiilin lukija" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Aktivoitujen asetusten tasoitus" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Profiili on tasoitettu ja aktivoitu." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G-tiedosto" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Yritä uudelleen" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Päivitä nykyinen" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Valitse tähän Ultimaker 2 -laitteeseen tehdyt päivitykset." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block -lämmitysosa" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Kerroksen korkeus" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profiili" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Vedosta kaikkien asetusten sisällöt HTML-tiedostoon." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Jumala-tila" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Yhdistetty verkon kautta tulostimeen." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Yhdistetty verkon kautta. Hyväksy tulostimen käyttöoikeuspyyntö." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Yhdistetty verkon kautta tulostimeen. Ei käyttöoikeutta tulostimen hallintaan." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Tulostimen käyttöoikeutta pyydetty. Hyväksy tulostimen pyyntö" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Lähetä käyttöoikeuspyyntö uudelleen" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Tulostimen käyttöoikeus hyväksytty" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Tällä tulostimella tulostukseen ei ole käyttöoikeutta. Tulostustyön lähetys ei onnistu." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Pyydä käyttöoikeutta" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Lähetä tulostimen käyttöoikeuspyyntö" + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Ristiriitainen määritys" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Haluatko varmasti tulostaa valitulla määrityksellä?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Tulostimen ja Curan määrityksen tai kalibroinnin välillä on ristiriita. Parhaat tulokset saavutetaan viipaloimalla aina tulostimeen asetetuille PrintCoreille ja materiaaleille." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Uusien töiden lähettäminen (tilapäisesti) estetty, edellistä tulostustyötä lähetetään vielä." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Lähetetään tietoja tulostimeen" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Lähetetään tietoja" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Eri materiaali (Cura: {0}, tulostin: {1}) valittu suulakkeelle {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Synkronoi tulostimen kanssa" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Haluatko käyttää nykyistä tulostimen määritystä Curassa?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Tulostimen PrintCoret tai materiaalit eivät vastaa tulostettavan projektin asetuksia. Parhaat tulokset saavutetaan viipaloimalla aina tulostimeen asetetuille PrintCoreille ja materiaaleille." + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} on tulostanut työn '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Tulosta valmis" + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Yhdistä tulostimeen" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3-verkkoyhteys" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Tulosta suoraan tulostimeen verkon kautta yhdistämällä tulostin verkkoon verkkokaapelilla tai yhdistämällä tulostin Wi-Fi-verkkoon. Jos Curaa ei yhdistetä tulostimeen, GCode-tiedostot voidaan silti siirtää tulostimeen USB-aseman avulla.\n" +#~ "\n" +#~ "Valitse tulostin alla olevasta luettelosta:" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Näytä muutosloki" + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "Kerätään tietoja" + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Laitteen asetukset" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Tulostimen asetukset" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Alkukohta keskellä" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Lämmitettävä pöytä" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Tulostuspään asetukset" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Etäisyys tulostuspään vasemmalta puolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Etäisyys tulostuspään etupuolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Etäisyys tulostuspään oikealta puolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Etäisyys tulostuspään takapuolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Korokkeen korkeus" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "Suuttimen kärjen ja korokejärjestelmän (X- ja Y-akselit) välinen korkeusero. Käytetään estämään aiempien tulosteiden ja korokkeen yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Suutinasetukset" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "Tulostimen tukema tulostuslangan nimellinen halkaisija. Materiaali ja/tai profiili korvaa tarkan halkaisijan." + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Muutosloki" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Anna verkon tulostimen IP-osoite tai isäntänimi." + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "Oletuksena valkoiset pikselit edustavat verkossa korkeita pisteitä ja mustat pikselit edustavat verkossa matalia pisteitä. Muuta asetus, jos haluat, että mustat pikselit edustavat verkossa korkeita pisteitä ja valkoiset pikselit edustavat verkossa matalia pisteitä." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Valitse tulostimen päivitykset" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Valitse tukena käytettävä suulakepuristin. Näin mallin alle rakennetaan tukirakenteita estämään mallin painuminen tai tulostuminen ilmaan." + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "Viipalointi ei onnistu" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Lisää tulostin" + +#~ msgid "Modify G-Code" +#~ msgstr "Muokkaa GCode-arvoa" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "Ei viipaloitavaa, koska mikään malleista ei sovellu tulostustilavuuteen. Skaalaa tai pyöritä mallia, kunnes se on sopiva." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "Valittu materiaali ei sovellu käytettäväksi valitun laitteen tai kokoonpanon kanssa." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Yhteensopimaton materiaali" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Profiilin tuonti epäonnistui tiedostosta {0}: {1}" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Valmistellaan" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "Tulostetaan" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Aktivoi määritys" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Lataa tulostimen määritys Curaan" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Näytä siirtoliikkeet" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Näytä avustimet" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Näytä kuori" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Näytä täyttö" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Tulostimen tyyppi:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Yhteys:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "Tila:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "Odotetaan tulostustyötä" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "Odotetaan tulostusalustan tyhjennystä" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "Keskeytetään tulostus..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Suojatut profiilit" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Tulostimen nimi:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Profiili:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Haku..." + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Tulostuksen asennus" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Tulostuksen asennus ei käytössä\n" +#~ "G-code-tiedostoja ei voida muokata" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Suositeltu tulostuksen asennus

    Tulosta valitun tulostimen, materiaalin ja laadun suositelluilla asetuksilla." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Mukautettu tulostuksen asennus

    Tulosta hallitsemalla täysin kaikkia viipalointiprosessin vaiheita." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "Näytä moottorin l&oki" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Lataa 3D-malli" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Valmiina viipaloimaan" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "Valmis: %1" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "Viipalointi ei käytettävissä" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Valmistele" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "Peruuta" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Valitse aktiivinen tulostusväline" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "&Näytä" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "&Asetukset" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Avaa tiedosto" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Tulostusnopeus" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Hitaammin" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Nopeammin" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Ota asteittainen käyttöön" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Muodosta tuki" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Alustan tarttuvuus" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "Tarvitsetko apua tulosteiden parantamiseen?
    Lue Ultimakerin vianmääritysoppaat" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Moottorin loki" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Napsauta ja tarkista materiaalin yhteensopivuus sivustolla Ultimaker.com." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Näyttää viimeisimmän tarkistetun version jälkeen tapahtuneet muutokset." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Muutosloki" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Luo tasoitettu laatumuutosten profiili." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Profiilin tasoitus" + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Päivitä laiteohjelmisto" @@ -5106,7 +5989,7 @@ msgstr "Cura-profiilin lukija" #~ msgctxt "@title:menu menubar:file" #~ msgid "Save &As..." -#~ msgstr "Tallenna &nimellä…" +#~ msgstr "Tallenna &nimellä..." #~ msgctxt "description" #~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." diff --git a/resources/i18n/fi_FI/fdmextruder.def.json.po b/resources/i18n/fi_FI/fdmextruder.def.json.po index 07ccc2502e..86dd3b3474 100644 --- a/resources/i18n/fi_FI/fdmextruder.def.json.po +++ b/resources/i18n/fi_FI/fdmextruder.def.json.po @@ -1,13 +1,13 @@ # Cura JSON setting files -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" @@ -83,8 +83,8 @@ msgstr "Suulakkeen aloitus-GCode" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "Aloitus-GCode, joka suoritetaan suulakkeen käynnistyksen yhteydessä." +msgid "Start g-code to execute when switching to this extruder." +msgstr "" #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -123,8 +123,8 @@ msgstr "Suulakkeen lopetus-GCode" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "Lopetus-GCode, joka suoritetaan, kun suulake poistetaan käytöstä." +msgid "End g-code to execute when switching away from this extruder." +msgstr "" #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -225,3 +225,11 @@ msgstr "" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "" + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "Aloitus-GCode, joka suoritetaan suulakkeen käynnistyksen yhteydessä." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "Lopetus-GCode, joka suoritetaan, kun suulake poistetaan käytöstä." diff --git a/resources/i18n/fi_FI/fdmprinter.def.json.po b/resources/i18n/fi_FI/fdmprinter.def.json.po index 6a4e7390ad..3f1b71753b 100644 --- a/resources/i18n/fi_FI/fdmprinter.def.json.po +++ b/resources/i18n/fi_FI/fdmprinter.def.json.po @@ -1,13 +1,13 @@ # Cura JSON setting files -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" @@ -210,6 +210,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Sisältääkö laite lämmitettävän alustan." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "" + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -232,7 +242,7 @@ msgstr "Suulakeryhmien määrä. Suulakeryhmä on syöttölaitteen, Bowden-putke #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "" #: fdmprinter.def.json @@ -242,8 +252,8 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" -msgstr "Suuttimen ulkoläpimitta" +msgid "Outer Nozzle Diameter" +msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter description" @@ -252,8 +262,8 @@ msgstr "Suuttimen kärjen ulkoläpimitta." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" -msgstr "Suuttimen pituus" +msgid "Nozzle Length" +msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance description" @@ -262,8 +272,8 @@ msgstr "Suuttimen kärjen ja tulostuspään alimman osan välinen korkeusero." #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" -msgstr "Suuttimen kulma" +msgid "Nozzle Angle" +msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle description" @@ -272,8 +282,8 @@ msgstr "Vaakatason ja suuttimen kärjen yllä olevan kartiomaisen osan välinen #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" -msgstr "Lämpöalueen pituus" +msgid "Heat Zone Length" +msgstr "" #: fdmprinter.def.json msgctxt "machine_heat_zone_length description" @@ -302,8 +312,8 @@ msgstr "Lämpötilan hallinta Curan kautta. Kytke tämä pois, niin voit hallita #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" -msgstr "Lämpenemisnopeus" +msgid "Heat Up Speed" +msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed description" @@ -312,8 +322,8 @@ msgstr "Nopeus (°C/s), jolla suutin lämpenee, mitattuna keskiarvona normaaleis #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" -msgstr "Jäähdytysnopeus" +msgid "Cool Down Speed" +msgstr "" #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed description" @@ -332,7 +342,7 @@ msgstr "Minimiaika, jonka suulakkeen on oltava ei-aktiivinen, ennen kuin suutin #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "" #: fdmprinter.def.json @@ -397,8 +407,8 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" -msgstr "Kielletyt alueet" +msgid "Disallowed Areas" +msgstr "" #: fdmprinter.def.json msgctxt "machine_disallowed_areas description" @@ -417,8 +427,8 @@ msgstr "Monikulmioluettelo, jossa on alueet, joihin suutin ei saa siirtyä." #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" -msgstr "Laiteen pään monikulmio" +msgid "Machine Head Polygon" +msgstr "" #: fdmprinter.def.json msgctxt "machine_head_polygon description" @@ -427,8 +437,8 @@ msgstr "2D-siluetti tulostuspäästä (tuulettimen kannattimet pois lukien)" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" -msgstr "Laiteen pään ja tuulettimen monikulmio" +msgid "Machine Head & Fan Polygon" +msgstr "" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" @@ -437,8 +447,8 @@ msgstr "2D-siluetti tulostuspäästä (tuulettimen päät mukaan lukien)" #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" -msgstr "Korokkeen korkeus" +msgid "Gantry Height" +msgstr "" #: fdmprinter.def.json msgctxt "gantry_height description" @@ -467,8 +477,8 @@ msgstr "Suuttimen sisäläpimitta. Muuta tätä asetusta, kun käytössä on muu #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" -msgstr "Suulakkeen siirtymä" +msgid "Offset with Extruder" +msgstr "" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords description" @@ -1015,6 +1025,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Alakerrosten lukumäärä. Kun se lasketaan alaosan paksuudesta, arvo pyöristetään kokonaislukuun." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "" + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1265,6 +1285,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Terävin kulma" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1292,8 +1362,8 @@ msgstr "Saumakulmien asetus" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Määritä, vaikuttavatko mallin ulkolinjan kulmat sauman sijaintiin. Ei mitään tarkoittaa, että kulmilla ei ole vaikutusta sauman sijaintiin. Piilota sauma -valinnalla sauman sijainti sisäkulmassa on todennäköisempää. Paljasta sauma -valinnalla sauman sijainti ulkokulmassa on todennäköisempää. Piilota tai paljasta sauma -valinnalla sauman sijainti sisä- tai ulkokulmassa on todennäköisempää." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1315,6 +1385,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Piilota tai paljasta sauma" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1327,13 +1402,13 @@ msgstr "Kun tämä on käytössä, Z-sauman koordinaatit ovat suhteessa kunkin o #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ohita pienet Z-raot" +msgid "No Skin in Z Gaps" +msgstr "" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Kun mallissa on pieniä pystyrakoja, ylä- ja alapuolen pintakalvon tekemiseen näihin kapeisiin paikkoihin voi kulua noin 5 % ylimääräistä laskenta-aikaa. Poista siinä tapauksessa tämä asetus käytöstä." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "" #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1352,8 +1427,8 @@ msgstr "Ota silitys käyttöön" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Yläpinnan läpikäynti yhden ylimääräisen kerran ilman materiaalin pursotusta. Tämän tarkoitus on sulattaa yläosan muovia enemmän, jolloin saadaan sileämpi pinta." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1445,6 +1520,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Silityksen aikainen nopeuden hetkellinen maksimimuutos." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Pintakalvon limityksen prosentti" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Pintakalvon limitys" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1610,6 +1705,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "" +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1662,26 +1767,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Limityksen määrä täytön ja seinämien välillä. Pienellä limityksellä seinämät liittyvät tukevasti täyttöön." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Pintakalvon limityksen prosentti" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Pintakalvon limitys" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "Limityksen määrä pintakalvon ja seinämien välillä. Pienellä limityksellä seinämät liittyvät tukevasti pintakalvoon." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1862,6 +1947,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "Tulostuksessa käytettävä oletuslämpötila. Tämän tulee olla materiaalin ”pohjalämpötila”. Kaikkien muiden tulostuslämpötilojen tulee käyttää tähän arvoon perustuvia siirtymiä." +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "" + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1972,6 +2067,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "" +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1982,6 +2157,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Virtauksen kompensointi: pursotetun materiaalin määrä kerrotaan tällä arvolla." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Esitäyttötornin virtaus" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2099,7 +2394,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "" #: fdmprinter.def.json @@ -2119,8 +2414,8 @@ msgstr "Suuttimen vaihdon takaisinvetoetäisyys" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "Takaisinvedon määrä: 0 tarkoittaa, että takaisinvetoa ei ole lainkaan. Tämän on yleensä oltava sama kuin lämpöalueen pituus." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2152,6 +2447,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Nopeus, jolla tulostuslanka työnnetään takaisin suuttimen vaihdon takaisinvedon jälkeen." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "" + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2343,14 +2648,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Nopeus, jolla helma ja reunus tulostetaan. Yleensä se tehdään alkukerroksen nopeudella. Joskus helma tai reunus halutaan kuitenkin tulostaa eri nopeudella." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Z:n maksiminopeus" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Maksiminopeus, jolla alustaa liikutetaan. Jos tämä määritetään nollaan, tulostuksessa käytetään laiteohjelmiston oletusasetuksia Z:n maksiminopeudelle." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "" #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2779,7 +3084,7 @@ msgstr "Pyyhkäisytila" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." msgstr "" #: fdmprinter.def.json @@ -2852,16 +3157,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Suuttimen ja aiemmin tulostetun osan välinen etäisyys siirtoliikkeiden yhteydessä." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Aloita kerrokset samalla osalla" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Aloita tulostus jokaisessa kerroksessa tulostamalla kappale, joka on lähellä samaa pistettä, jotta uutta kerrosta ei aloiteta tulostamalla kappaletta, johon edellinen kerros päättyi. Näin saadaan aikaan paremmat ulokkeet ja pienet osat, mutta tulostus kestää kauemmin." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2922,6 +3217,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "Alustaa lasketaan koneen vaihdettua yhdestä suulakkeesta toiseen, jotta suuttimen ja tulosteen väliin jää tilaa. Tämä estää suutinta jättämästä tihkunutta ainetta tulosteen ulkopuolelle." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "" + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3192,6 +3497,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Risti" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3253,13 +3563,13 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "" #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." msgstr "" #: fdmprinter.def.json @@ -3389,8 +3699,8 @@ msgstr "Tuen liitosetäisyys" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Tukirakenteiden maksimietäisyys toisistaan X-/Y-suunnissa. Kun erilliset rakenteet ovat tätä arvoa lähempänä toisiaan, rakenteet sulautuvat toisiinsa." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "" #: fdmprinter.def.json msgctxt "support_offset label" @@ -3432,6 +3742,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "Tietyn tiheysarvon tuen täytön korkeus ennen puoleen tiheyteen vaihtamista." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "" + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3657,6 +3977,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Siksak" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "" + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3698,14 +4108,14 @@ msgid "The diameter of a special tower." msgstr "Erityistornin läpimitta." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Minimiläpimitta" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Erityisellä tukitornilla tuettavan pienen alueen minimiläpimitta X- ja Y-suunnissa." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "" #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4199,16 +4609,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Tulosta tulosteen viereen torni, jolla materiaali esitäytetään aina suuttimen vaihdon jälkeen." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "" - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4249,16 +4649,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Esitäyttötornin sijainnin Y-koordinaatti." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Esitäyttötornin virtaus" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Virtauksen kompensointi: pursotetun materiaalin määrä kerrotaan tällä arvolla." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4269,6 +4659,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "Kun esitäyttötorni on tulostettu yhdellä suuttimella, pyyhi toisesta suuttimesta tihkunut materiaali pois esitäyttötornissa." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "" + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4389,6 +4789,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4551,8 +4981,8 @@ msgstr "Kierukoitujen ääriviivojen tasoittaminen" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Vähennä Z-sauman näkyvyyttä tasoittamalla kierukoidut ääriviivat (Z-sauman pitäisi olla lähes näkymätön tulosteessa, mutta kerrosnäkymässä sen voi edelleen havaita). Ota huomioon, että tasoittaminen usein sumentaa pinnan pieniä yksityiskohtia." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "" #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4764,26 +5194,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "" -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "" - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4924,16 +5334,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Nopeus, jolla siirrytään vapaaliu'un aikana, suhteessa pursotusreitin nopeuteen. Arvoksi suositellaan hieman alle 100 %, sillä vapaaliukusiirron aikana paine Bowden-putkessa laskee." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Vuorottele pintakalvon pyöritystä" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Muuttaa ylä-/alakerrosten tulostussuuntaa. Normaalisti ne tulostetaan vain vinottain. Tämä asetus lisää vain X- ja vain Y -suunnat." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5041,8 +5441,8 @@ msgstr "Ota kartiomainen tuki käyttöön" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Kokeellinen ominaisuus: tekee tukialueet pienemmiksi alaosassa verrattuna ulokkeeseen." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "" #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5106,22 +5506,22 @@ msgstr "Keskimääräinen etäisyys kunkin linjasegmentin satunnaisten pisteiden #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." msgstr "" #: fdmprinter.def.json @@ -5385,7 +5785,7 @@ msgstr "Suuttimen ja vaakasuoraan laskevien linjojen välinen etäisyys. Suuremp #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "" #: fdmprinter.def.json @@ -5395,7 +5795,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "" #: fdmprinter.def.json @@ -5405,7 +5805,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "" #: fdmprinter.def.json @@ -5415,12 +5815,12 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" +msgid "Adaptive Layers Topography Size" msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." msgstr "" #: fdmprinter.def.json @@ -5430,7 +5830,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." msgstr "" #: fdmprinter.def.json @@ -5633,6 +6033,196 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "" +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5693,6 +6283,122 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Mallissa käytettävä muunnosmatriisi, kun malli ladataan tiedostosta." +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Vuorottele pintakalvon pyöritystä" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Muuttaa ylä-/alakerrosten tulostussuuntaa. Normaalisti ne tulostetaan vain vinottain. Tämä asetus lisää vain X- ja vain Y -suunnat." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Yläpinnan läpikäynti yhden ylimääräisen kerran ilman materiaalin pursotusta. Tämän tarkoitus on sulattaa yläosan muovia enemmän, jolloin saadaan sileämpi pinta." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Aloita kerrokset samalla osalla" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Aloita tulostus jokaisessa kerroksessa tulostamalla kappale, joka on lähellä samaa pistettä, jotta uutta kerrosta ei aloiteta tulostamalla kappaletta, johon edellinen kerros päättyi. Näin saadaan aikaan paremmat ulokkeet ja pienet osat, mutta tulostus kestää kauemmin." + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Määritä, vaikuttavatko mallin ulkolinjan kulmat sauman sijaintiin. Ei mitään tarkoittaa, että kulmilla ei ole vaikutusta sauman sijaintiin. Piilota sauma -valinnalla sauman sijainti sisäkulmassa on todennäköisempää. Paljasta sauma -valinnalla sauman sijainti ulkokulmassa on todennäköisempää. Piilota tai paljasta sauma -valinnalla sauman sijainti sisä- tai ulkokulmassa on todennäköisempää." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ohita pienet Z-raot" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Kun mallissa on pieniä pystyrakoja, ylä- ja alapuolen pintakalvon tekemiseen näihin kapeisiin paikkoihin voi kulua noin 5 % ylimääräistä laskenta-aikaa. Poista siinä tapauksessa tämä asetus käytöstä." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Z:n maksiminopeus" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Maksiminopeus, jolla alustaa liikutetaan. Jos tämä määritetään nollaan, tulostuksessa käytetään laiteohjelmiston oletusasetuksia Z:n maksiminopeudelle." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Tukirakenteiden maksimietäisyys toisistaan X-/Y-suunnissa. Kun erilliset rakenteet ovat tätä arvoa lähempänä toisiaan, rakenteet sulautuvat toisiinsa." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Minimiläpimitta" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Erityisellä tukitornilla tuettavan pienen alueen minimiläpimitta X- ja Y-suunnissa." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Virtauksen kompensointi: pursotetun materiaalin määrä kerrotaan tällä arvolla." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Vähennä Z-sauman näkyvyyttä tasoittamalla kierukoidut ääriviivat (Z-sauman pitäisi olla lähes näkymätön tulosteessa, mutta kerrosnäkymässä sen voi edelleen havaita). Ota huomioon, että tasoittaminen usein sumentaa pinnan pieniä yksityiskohtia." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Kokeellinen ominaisuus: tekee tukialueet pienemmiksi alaosassa verrattuna ulokkeeseen." + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Suuttimen ulkoläpimitta" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Suuttimen pituus" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Suuttimen kulma" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Lämpöalueen pituus" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Lämpenemisnopeus" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Jäähdytysnopeus" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "Kielletyt alueet" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Laiteen pään monikulmio" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Laiteen pään ja tuulettimen monikulmio" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Korokkeen korkeus" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Suulakkeen siirtymä" + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "Limityksen määrä pintakalvon ja seinämien välillä. Pienellä limityksellä seinämät liittyvät tukevasti pintakalvoon." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "Takaisinvedon määrä: 0 tarkoittaa, että takaisinvetoa ei ole lainkaan. Tämän on yleensä oltava sama kuin lämpöalueen pituus." + #~ msgctxt "infill_pattern option concentric_3d" #~ msgid "Concentric 3D" #~ msgstr "Samankeskinen 3D" diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index 9b1fff4124..3633753794 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-09-28 14:59+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: French\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: French , French \n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Paramètres de la machine" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Fichier GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter ne prend pas en charge le mode non-texte." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Veuillez préparer le G-Code avant d'exporter." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Assistant de modèle 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,68 +64,56 @@ msgid "" "

    {model_names}

    \n" "

    Find out how to ensure the best possible print quality and reliability.

    \n" "

    View print quality guide

    " -msgstr "

    Un ou plusieurs modèles 3D peuvent ne pas s'imprimer de manière optimale en raison de la taille du modèle et de la configuration matérielle :

    \n

    {model_names}

    \n

    Découvrez comment optimiser la qualité et la fiabilité de l'impression.

    \n

    Consultez le guide de qualité d'impression

    " - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Afficher le récapitulatif des changements" +msgstr "" +"

    Un ou plusieurs modèles 3D peuvent ne pas s'imprimer de manière optimale en raison de la taille du modèle et de la configuration matérielle :

    \n" +"

    {model_names}

    \n" +"

    Découvrez comment optimiser la qualité et la fiabilité de l'impression.

    \n" +"

    Consultez le guide de qualité d'impression

    " #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Mettre à jour le firmware" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Aplatir les paramètres actifs" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Fichier AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Le profil a été aplati et activé." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impression par USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimer via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimer via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Connecté via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Une impression USB est en cours, la fermeture de Cura arrêtera cette impression. Êtes-vous sûr ?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Fichier X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Une impression est encore en cours. Cura ne peut pas démarrer une autre impression via USB tant que l'impression précédente n'est pas terminée." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Écrit X3G dans des fichiers" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Fichier X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Impression en cours" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -139,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "GCodeGzWriter ne prend pas en charge le mode texte." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Ultimaker Format Package" @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Enregistrer sur un lecteur amovible {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Aucun format de fichier n'est disponible pour écriture !" @@ -197,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Impossible d'enregistrer sur le lecteur {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Erreur" @@ -228,8 +217,9 @@ msgstr "Ejecter le lecteur amovible {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Avertissement" @@ -256,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Lecteur amovible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Imprimer sur le réseau" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Imprimer sur le réseau" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Connecté sur le réseau." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Connecté sur le réseau. Veuillez approuver la demande d'accès sur l'imprimante." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Connecté sur le réseau. Pas d'accès pour commander l'imprimante." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Accès à l'imprimante demandé. Veuillez approuver la demande sur l'imprimante" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Statut d'authentification" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "Statut d'authentification" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Réessayer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Renvoyer la demande d'accès" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Accès à l'imprimante accepté" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "Aucun accès pour imprimer avec cette imprimante. Impossible d'envoyer la tâche d'impression." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Demande d'accès" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Envoyer la demande d'accès à l'imprimante" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "Impossible de démarrer une nouvelle tâche d'impression." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Un problème avec la configuration de votre Ultimaker empêche le démarrage de l'impression. Veuillez résoudre ce problème avant de continuer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Configuration différente" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Êtes-vous sûr(e) de vouloir imprimer avec la configuration sélectionnée ?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Problème de compatibilité entre la configuration ou l'étalonnage de l'imprimante et Cura. Pour un résultat optimal, découpez toujours pour les PrintCores et matériaux insérés dans votre imprimante." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "Envoi de nouvelles tâches (temporairement) bloqué, envoi de la tâche d'impression précédente en cours." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Envoi des données à l'imprimante" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Envoi des données" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Annuler" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "Pas de PrintCore inséré dans la fente {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "Aucun matériau inséré dans la fente {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "PrintCore différent (Cura : {cura_printcore_name}, Imprimante : {remote_printcore_name}) sélectionné pour l'extrudeuse {extruder_id}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Matériau différent (Cura : {0}, Imprimante : {1}) sélectionné pour l'extrudeuse {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Synchroniser avec votre imprimante" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Voulez-vous utiliser votre configuration d'imprimante actuelle dans Cura ?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Les PrintCores et / ou matériaux sur votre imprimante diffèrent de ceux de votre projet actuel. Pour un résultat optimal, découpez toujours pour les PrintCores et matériaux insérés dans votre imprimante." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Connecté sur le réseau" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "L'envoi de la tâche d'impression à l'imprimante a réussi." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Données envoyées" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Afficher sur le moniteur" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} a terminé d'imprimer '{job_name}'." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "La tâche d'impression '{job_name}' est terminée." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Impression terminée" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Connecter via le réseau" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Imprimer sur le réseau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Imprimer sur le réseau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Connecté sur le réseau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Veuillez patienter jusqu'à ce que la tâche en cours ait été envoyée." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Erreur d'impression" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Nouvelles imprimantes cloud trouvées" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "De nouvelles imprimantes ont été trouvées connectées à votre compte. Vous pouvez les trouver dans votre liste d'imprimantes découvertes." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Ne plus afficher ce message" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Vous tentez de vous connecter à {0} mais ce n'est pas l'hôte de groupe. Vous pouvez visiter la page Web pour la configurer en tant qu'hôte de groupe." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Pas un hôte de groupe" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Configurer le groupe" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Lancez et surveillez des impressions où que vous soyez avec votre compte Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Se connecter à Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Prise en main" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Lancement d'une tâche d'impression" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Téléchargement de la tâche d'impression sur l'imprimante." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "L'envoi de la tâche d'impression à l'imprimante a réussi." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Données envoyées" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Vous tentez de vous connecter à une imprimante qui n'exécute pas Ultimaker Connect. Veuillez mettre à jour l'imprimante avec le dernier micrologiciel." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Mettre à jour votre imprimante" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura a détecté des profils de matériau qui ne sont pas encore installés sur l'imprimante hôte du groupe {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Envoi de matériaux à l'imprimante" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Impossible de transférer les données à l'imprimante." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Erreur de réseau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "demain" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "aujourd'hui" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Imprimer via le cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Imprimer via le cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Connecté via le cloud" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Surveiller" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Impossible d'accéder aux informations de mise à jour." @@ -503,22 +425,28 @@ msgctxt "@action:button" msgid "How to update" msgstr "Comment effectuer la mise à jour" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Vue en couches" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura n'affiche pas les couches avec précision lorsque l'impression filaire est activée" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Vue simulation" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "Post-traitement" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" msgstr "Modifier le G-Code" @@ -532,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "Créer un volume dans lequel les supports ne sont pas imprimés." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura recueille des statistiques d'utilisation anonymes." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "Collecte des données" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "Plus d'informations" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Voir plus d'informations sur les données envoyées par Cura." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "Autoriser" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Autoriser Cura à envoyer des statistiques d'utilisation anonymes pour mieux prioriser les améliorations futures apportées à Cura. Certaines de vos préférences et paramètres sont envoyés, ainsi que la version du logiciel Cura et un hachage des modèles que vous découpez." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -592,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Image GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Ouvrir le maillage triangulaire compressé" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF binaire" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "JSON incorporé glTF" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Format Triangle de Stanford" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange compressé" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Impossible de découper le matériau actuel, car celui-ci est incompatible avec la machine ou la configuration sélectionnée." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "Impossible de découper" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Impossible de couper avec les paramètres actuels. Les paramètres suivants contiennent des erreurs : {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Impossible de couper en raison de certains paramètres par modèle. Les paramètres suivants contiennent des erreurs sur un ou plusieurs modèles : {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Impossible de couper car la tour primaire ou la (les) position(s) d'amorçage ne sont pas valides." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "Impossible de couper car il existe des objets associés à l'extrudeuse désactivée %s." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Rien à couper car aucun des modèles ne convient au volume d'impression. Mettez à l'échelle ou faites pivoter les modèles pour les faire correspondre." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "Rien à découper car les modèles ne conviennent pas au volume d'impression ou sont assignés à une extrudeuse désactivée. Mettez les modèles à l'échelle ou faites-les pivoter pour les faire correspondre, ou activez une extrudeuse." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "Traitement des couches" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Informations" @@ -656,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Configurer les paramètres par modèle" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Recommandé" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Personnalisé" @@ -674,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Fichier 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Buse" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Le fichier projet {0} contient un type de machine inconnu {1}. Impossible d'importer la machine. Les modèles seront importés à la place." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Ouvrir un fichier de projet" @@ -701,22 +627,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Fichier G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analyse du G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Détails G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Assurez-vous que le g-code est adapté à votre imprimante et à la configuration de l'imprimante avant d'y envoyer le fichier. La représentation du g-code peut ne pas être exacte." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "Gérer les sauvegardes" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "Sauvegarde" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "Une erreur s’est produite lors du listage de vos sauvegardes." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "Une erreur s’est produite lors de la tentative de restauration de votre sauvegarde." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "Sauvegardes" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "Téléchargement de votre sauvegarde..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "Une erreur s’est produite lors du téléchargement de votre sauvegarde." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "Le téléchargement de votre sauvegarde est terminé." + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -738,330 +707,452 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "Erreur d'écriture du fichier 3MF." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "Aperçu" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Sélectionner les mises à niveau" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Check-up" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Nivellement du plateau" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Paroi externe" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Parois internes" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Couche extérieure" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Remplissage" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Remplissage du support" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interface du support" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Support" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Jupe" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Déplacement" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Rétractions" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Autre" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Fichier {0} prédécoupé" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "La connexion a échoué" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Non pris en charge" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Le fichier existe déjà" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Le fichier {0} existe déjà. Êtes-vous sûr de vouloir le remplacer ?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Pas écrasé" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Le matériau sélectionné est incompatible avec la machine ou la configuration sélectionnée." +msgid "Invalid file URL:" +msgstr "URL de fichier invalide :" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Matériau incompatible" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Les paramètres ont été modifiés pour correspondre aux extrudeuses actuellement disponibles :" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "Les paramètres ont été modifiés pour correspondre aux extrudeuses actuellement disponibles : [%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Paramètres mis à jour" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "Extrudeuse(s) désactivée(s)" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Inconnu" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Échec de l'exportation du profil vers {0} : {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Échec de l'exportation du profil vers {0} : le plug-in du générateur a rapporté une erreur." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profil exporté vers {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "L'exportation a réussi" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "Échec de l'importation du profil depuis le fichier {0} : {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "Impossible d'importer le profil depuis {0} : {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "Impossible d'importer le profil depuis {0} avant l'ajout d'une imprimante." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Aucun profil personnalisé à importer dans le fichier {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Échec de l'importation du profil depuis le fichier {0} :" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Le profil {0} contient des données incorrectes ; échec de l'importation." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "La machine définie dans le profil {0} ({1}) ne correspond pas à votre machine actuelle ({2}) ; échec de l'importation." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Échec de l'importation du profil depuis le fichier {0} :" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Importation du profil {0} réussie" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Le fichier {0} ne contient pas de profil valide." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Le profil {0} est un type de fichier inconnu ou est corrompu." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Personnaliser le profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Il manque un type de qualité au profil." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Impossible de trouver un type de qualité {0} pour la configuration actuelle." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Paroi externe" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Parois internes" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Couche extérieure" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Remplissage" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Remplissage du support" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interface du support" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Support" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Jupe" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "Tour primaire" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Déplacement" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Rétractions" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Autre" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Fichier {0} prédécoupé" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "Suivant" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "Groupe nº {group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "Imprimantes réseau" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Fermer" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "Imprimantes locales" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Ajouter" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Annuler" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visuel" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Le profil visuel est conçu pour imprimer des prototypes et des modèles visuels dans le but d'obtenir une qualité visuelle et de surface élevée." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Le profil d'ingénierie est conçu pour imprimer des prototypes fonctionnels et des pièces finales dans le but d'obtenir une meilleure précision et des tolérances" +" plus étroites." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Ébauche" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "L'ébauche du profil est conçue pour imprimer les prototypes initiaux et la validation du concept dans le but de réduire considérablement le temps d'impression." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Pas écrasé" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Personnaliser les profils" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Tous les types supportés ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Tous les fichiers (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Matériau personnalisé" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Personnalisé" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Les imprimantes ci-dessous ne peuvent pas être connectées car elles font partie d'un groupe" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Imprimantes en réseau disponibles" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "La hauteur du volume d'impression a été réduite en raison de la valeur du paramètre « Séquence d'impression » afin d'éviter que le portique ne heurte les modèles imprimés." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume d'impression" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "Impossible de créer une archive à partir du répertoire de données de l'utilisateur : {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "Sauvegarde" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "A essayé de restaurer une sauvegarde Cura sans disposer de données ou de métadonnées appropriées." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "A essayé de restaurer une sauvegarde Cura qui ne correspond pas à votre version actuelle." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "A essayé de restaurer une sauvegarde Cura supérieure à la version actuelle." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "Impossible de lire la réponse." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Impossible d’atteindre le serveur du compte Ultimaker." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Veuillez donner les permissions requises lors de l'autorisation de cette application." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Une erreur s'est produite lors de la connexion, veuillez réessayer." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplication et placement d'objets" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "Placement de l'objet" +msgid "Placing Objects" +msgstr "Placement des objets" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Impossible de trouver un emplacement dans le volume d'impression pour tous les objets" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "Placement de l'objet" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Recherche d'un nouvel emplacement pour les objets" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "Recherche d'emplacement" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Impossible de trouver un emplacement" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Échec du démarrage de Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1069,356 +1160,328 @@ msgid "" "

    Backups can be found in the configuration folder.

    \n" "

    Please send us this Crash Report to fix the problem.

    \n" " " -msgstr "

    Oups, un problème est survenu dans Ultimaker Cura.

    \n

    Une erreur irrécupérable est survenue lors du démarrage. Elle peut avoir été causée par des fichiers de configuration incorrects. Nous vous suggérons de sauvegarder et de réinitialiser votre configuration.

    \n

    Les sauvegardes se trouvent dans le dossier de configuration.

    \n

    Veuillez nous envoyer ce rapport d'incident pour que nous puissions résoudre le problème.

    \n " +msgstr "" +"

    Oups, un problème est survenu dans Ultimaker Cura.

    \n" +"

    Une erreur irrécupérable est survenue lors du démarrage. Elle peut avoir été causée par des fichiers de configuration incorrects. Nous vous suggérons de sauvegarder et de réinitialiser votre configuration.

    \n" +"

    Les sauvegardes se trouvent dans le dossier de configuration.

    \n" +"

    Veuillez nous envoyer ce rapport d'incident pour que nous puissions résoudre le problème.

    \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "Envoyer le rapport de d'incident à Ultimaker" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "Afficher le rapport d'incident détaillé" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "Afficher le dossier de configuration" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "Sauvegarder et réinitialiser la configuration" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Rapport d'incident" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" "

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" " " -msgstr "

    Une erreur fatale est survenue dans Cura. Veuillez nous envoyer ce rapport d'incident pour résoudre le problème

    \n

    Veuillez utiliser le bouton « Envoyer rapport » pour publier automatiquement un rapport d'erreur sur nos serveurs

    \n " +msgstr "" +"

    Une erreur fatale est survenue dans Cura. Veuillez nous envoyer ce rapport d'incident pour résoudre le problème

    \n" +"

    Veuillez utiliser le bouton « Envoyer rapport » pour publier automatiquement un rapport d'erreur sur nos serveurs

    \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "Informations système" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Inconnu" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Version Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "Plate-forme" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Version Qt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "Version PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "Pas encore initialisé
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • Version OpenGL : {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • Revendeur OpenGL : {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • Moteur de rendu OpenGL : {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "Retraçage de l'erreur" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "Journaux" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "Description de l'utilisateur" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "Description de l'utilisateur (Remarque : les développeurs peuvent ne pas partler votre langue. Veuillez utiliser l'anglais si possible)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Envoyer rapport" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Chargement des machines..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Configuration des préférences..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Préparation de la scène..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Chargement de l'interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Un seul fichier G-Code peut être chargé à la fois. Importation de {0} sautée" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Impossible d'ouvrir un autre fichier si le G-Code est en cours de chargement. Importation de {0} sautée" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Le modèle sélectionné était trop petit pour être chargé." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Paramètres de la machine" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Imprimante" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Paramètres de l'imprimante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (Largeur)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profondeur)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Hauteur)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Forme du plateau" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "Origine au centre" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "Plateau chauffant" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "Volume de fabrication chauffant" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "Parfum G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Paramètres de la tête d'impression" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance entre la gauche de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance entre le devant de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance entre la droite de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance entre le dos de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Hauteur du portique" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "La différence de hauteur entre la pointe de la buse et le système de portique (axes X et Y). Permet d'empêcher les collisions entre les impressions précédentes et le portique lors d'une impression « Un à la fois »." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Nombre d'extrudeuses" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "G-Code de démarrage" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "Commandes G-Code à exécuter au tout début." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "G-Code de fin" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "Commandes G-Code à exécuter tout à la fin." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Imprimante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "Paramètres de la buse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Taille de la buse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Diamètre du matériau compatible" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Le diamètre nominal de filament pris en charge par l'imprimante. Le diamètre exact sera remplacé par le matériau et / ou le profil." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "Décalage buse X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Décalage buse Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Numéro du ventilateur de refroidissement" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "Extrudeuse G-Code de démarrage" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Extrudeuse G-Code de fin" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "Installer" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Installé" @@ -1428,69 +1491,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Impossible de se connecter à la base de données Cura Package. Veuillez vérifier votre connexion." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "évaluations" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plug-ins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Matériaux" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "Votre évaluation" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "Version" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "Dernière mise à jour" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "Auteur" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "Téléchargements" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Inconnu" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "Connexion nécessaire pour l'installation ou la mise à jour" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "Acheter des bobines de matériau" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "Mise à jour" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "Mise à jour" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "Mis à jour" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "Boîte à outils" +msgid "Marketplace" +msgstr "Marché en ligne" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1517,52 +1593,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "Profils" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "Confirmer" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "Vous devez être connecté avant de pouvoir effectuer une évaluation" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "Vous devez installer le paquet avant de pouvoir effectuer une évaluation" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "Vous devez redémarrer Cura pour que les changements apportés aux paquets ne prennent effet." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Quitter Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Contributions de la communauté" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Plug-ins de la communauté" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Matériaux génériques" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "Installé" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "S'installera au redémarrage" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "Connexion nécessaire pour effectuer la mise à jour" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "Revenir à une version précédente" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "Désinstaller" @@ -1578,14 +1669,17 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "Ce plug-in contient une licence.\nVous devez approuver cette licence pour installer ce plug-in.\nAcceptez-vous les clauses ci-dessous ?" +msgstr "" +"Ce plug-in contient une licence.\n" +"Vous devez approuver cette licence pour installer ce plug-in.\n" +"Acceptez-vous les clauses ci-dessous ?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Accepter" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Refuser" @@ -1595,22 +1689,62 @@ msgctxt "@label" msgid "Featured" msgstr "Fonctionnalités" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibilité" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Machine" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Plateau" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Support" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Qualité" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "Fiche technique" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "Fiche de sécurité" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "Directives d'impression" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "Site Internet" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "Récupération des paquets..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "Site Internet" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-mail" @@ -1620,23 +1754,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "Certains éléments pourraient causer des problèmes à cette impression. Cliquez pour voir les conseils d'ajustement." -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Récapitulatif des changements" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Fermer" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1712,423 +1829,504 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Échec de la mise à jour du firmware en raison du firmware manquant." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "Accord utilisateur" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Gérer l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Connexion existante" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Verre" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "Ce groupe / cette imprimante a déjà été ajouté à Cura. Veuillez sélectionner un autre groupe / imprimante." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Veuillez mettre à jour le Firmware de votre imprimante pour gérer la file d'attente à distance." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "La webcam n'est pas disponible car vous surveillez une imprimante cloud." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "Chargement..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "Indisponible" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "Injoignable" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "Inactif" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "Sans titre" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "Anonyme" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "Nécessite des modifications de configuration" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "Détails" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "Imprimante indisponible" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "Premier disponible" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "Mis en file d'attente" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "Gérer dans le navigateur" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Il n'y a pas de travaux d'impression dans la file d'attente. Découpez et envoyez une tache pour en ajouter une." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "Tâches d'impression" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "Temps total d'impression" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "Attente de" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Connecter à l'imprimante en réseau" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n\nSélectionnez votre imprimante dans la liste ci-dessous :" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Pour imprimer directement sur votre imprimante via le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble Ethernet ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Ajouter" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Sélectionnez votre imprimante dans la liste ci-dessous :" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Modifier" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Supprimer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Rafraîchir" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Si votre imprimante n'apparaît pas dans la liste, lisez le guide de dépannage de l'impression en réseau" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Type" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Version du firmware" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Adresse" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Cette imprimante n'est pas configurée pour héberger un groupe d'imprimantes." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Cette imprimante est l'hôte d'un groupe d'imprimantes %1." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "L'imprimante à cette adresse n'a pas encore répondu." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Connecter" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Adresse IP non valide" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "Veuillez saisir une adresse IP valide." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Adresse de l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Saisissez l'adresse IP ou le nom d'hôte de votre imprimante sur le réseau." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "Saisissez l'adresse IP de votre imprimante sur le réseau." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Imprimer sur le réseau" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "Sélection d'imprimantes" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "Non disponible" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "Injoignable" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "Disponible" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "Abandonné" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Terminé" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "Préparation" +msgid "Preparing..." +msgstr "Préparation..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "Mise en pause" +msgid "Aborting..." +msgstr "Abandon..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "Reprise" +msgid "Pausing..." +msgstr "Mise en pause..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "En pause" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "Reprise..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Action requise" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "Finit %1 à %2" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Imprimer sur le réseau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimer" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "En attente : imprimante non disponible" +msgid "Printer selection" +msgstr "Sélection d'imprimantes" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "En attente : première imprimante disponible" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "En attente : " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "Modification des configurations" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "L'imprimante assignée, %1, nécessite d'apporter la ou les modifications suivantes à la configuration :" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "L'imprimante %1 est assignée, mais le projet contient une configuration matérielle inconnue." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "Changer le matériau %1 de %2 à %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "Charger %3 comme matériau %1 (Ceci ne peut pas être remplacé)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "Changer le print core %1 de %2 à %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "Changer le plateau en %1 (Ceci ne peut pas être remplacé)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "Remplacer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "Le fait de démarrer un travail d'impression avec une configuration incompatible peut endommager votre imprimante 3D. Êtes-vous sûr de vouloir remplacer la configuration et imprimer %1 ?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "Remplacer la configuration et lancer l'impression" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "Verre" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "Aluminium" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "Gérer la file d'attente" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "Mis en file d'attente" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "Impression" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "Gérer les imprimantes" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "Déplacer l'impression en haut" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "Effacer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "Reprendre" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "Mise en pause..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "Reprise..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "Pause" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "Abandon..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "Abandonner" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "Êtes-vous sûr de vouloir déplacer %1 en haut de la file d'attente ?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "Déplacer l'impression en haut de la file d'attente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "Êtes-vous sûr de vouloir supprimer %1 ?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "Supprimer l'impression" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "Êtes-vous sûr de vouloir annuler %1 ?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Abandonner l'impression" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Connecter à une imprimante" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "Modifications de configuration" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Activer la configuration" +msgid "Override" +msgstr "Remplacer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Charger la configuration de l'imprimante dans Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "L'imprimante assignée, %1, nécessite la modification de configuration suivante :" +msgstr[1] "L'imprimante assignée, %1, nécessite les modifications de configuration suivantes :" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "L'imprimante %1 est assignée, mais le projet contient une configuration matérielle inconnue." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "Changer le matériau %1 de %2 à %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "Charger %3 comme matériau %1 (Ceci ne peut pas être remplacé)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "Changer le print core %1 de %2 à %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "Changer le plateau en %1 (Ceci ne peut pas être remplacé)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "Si vous sélectionnez « Remplacer », les paramètres de la configuration actuelle de l'imprimante seront utilisés. Cela peut entraîner l'échec de l'impression." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "Aluminium" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"Assurez-vous que votre imprimante est connectée :\n" +"- Vérifiez si l'imprimante est sous tension.\n" +"- Vérifiez si l'imprimante est connectée au réseau.- Vérifiez si vous êtes connecté pour découvrir les imprimantes connectées au cloud." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "Veuillez connecter votre imprimante au réseau." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "Voir les manuels d'utilisation en ligne" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Modèle de couleurs" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Couleur du matériau" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Type de ligne" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Taux d'alimentation" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Épaisseur de la couche" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Mode de compatibilité" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "Afficher les déplacements" +msgid "Travels" +msgstr "Déplacements" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "Afficher les aides" +msgid "Helpers" +msgstr "Aides" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "Afficher la coque" +msgid "Shell" +msgstr "Coque" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "Afficher le remplissage" +msgid "Infill" +msgstr "Remplissage" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Afficher uniquement les couches supérieures" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Afficher 5 niveaux détaillés en haut" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Haut / bas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Paroi interne" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "max." @@ -2143,40 +2341,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Scripts de post-traitement" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Ajouter un script" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Paramètres" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Modifier les scripts de post-traitement actifs" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "Plus d'informations sur la collecte de données anonymes" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura envoie des données anonymes à Ultimaker afin d'améliorer la qualité d'impression et l'expérience utilisateur. Voici un exemple de toutes les données envoyées." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura recueille des données anonymes afin d'améliorer la qualité d'impression et l'expérience utilisateur. Voici un exemple de toutes les données partagées :" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "Je ne veux pas envoyer ces données" +msgid "I don't want to send anonymous data" +msgstr "Je ne veux pas envoyer de données anonymes" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Permettre l'envoi de ces données à Ultimaker et nous aider à améliorer Cura" +msgid "Allow sending anonymous data" +msgstr "Autoriser l'envoi de données anonymes" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2225,19 +2423,19 @@ msgstr "Profondeur (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "Par défaut, les pixels blancs représentent les points hauts sur la maille tandis que les pixels noirs représentent les points bas sur la maille. Modifiez cette option pour inverser le comportement de manière à ce que les pixels noirs représentent les points hauts sur la maille et les pixels blancs les points bas." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Le plus clair est plus haut" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "Pour les lithophanies, les pixels foncés doivent correspondre à des emplacements plus épais afin d'empêcher la lumière de passer. Pour des cartes de hauteur, les pixels clairs signifient un terrain plus élevé, de sorte que les pixels clairs doivent correspondre à des emplacements plus épais dans le modèle 3D généré." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Le plus foncé est plus haut" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Le plus clair est plus haut" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2248,81 +2446,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Lissage" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Type de maille" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Modèle normal" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Imprimer comme support" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Ne pas prendre en charge le chevauchement avec d'autres modèles" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Modifier les paramètres de chevauchement avec d'autres modèles" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modifier les paramètres de remplissage d'autres modèles" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Sélectionner les paramètres" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Sélectionner les paramètres pour personnaliser ce modèle" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrer..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Afficher tout" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Type de maille" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Modèle normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimer comme support" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modifier les paramètres de chevauchement" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Ne prend pas en charge le chevauchement" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Remplissage uniquement" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Sélectionner les paramètres" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Ouvrir un projet" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Mettre à jour l'existant" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Créer" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Résumé - Projet Cura" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Paramètres de l'imprimante" @@ -2338,20 +2535,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Mise à jour" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Créer" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Type" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "Groupe d'imprimantes" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Paramètres de profil" @@ -2362,226 +2564,222 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Comment le conflit du profil doit-il être résolu ?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nom" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Absent du profil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 écrasent" msgstr[1] "%1 écrase" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Dérivé de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 écrasent" msgstr[1] "%1, %2 écrase" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Paramètres du matériau" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Comment le conflit du matériau doit-il être résolu ?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilité des paramètres" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Mode" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Paramètres visibles :" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 sur %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Le chargement d'un projet effacera tous les modèles sur le plateau." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Ouvrir" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Sélectionner les mises à niveau de l'imprimante" +msgid "My Backups" +msgstr "Mes sauvegardes" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Sélectionnez les mises à niveau disponibles pour cet Ultimaker 2." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "Vous n'avez actuellement aucune sauvegarde. Utilisez le bouton « Sauvegarder maintenant » pour en créer une." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Blocage Olsson" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "Pendant la phase de prévisualisation, vous ne pourrez voir qu'un maximum de 5 sauvegardes. Supprimez une sauvegarde pour voir les plus anciennes." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Sauvegardez et synchronisez vos paramètres Cura." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "Se connecter" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Sauvegardes Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Version Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "Machines" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "Matériaux" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "Profils" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "Plug-ins" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "Restaurer" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "Supprimer la sauvegarde" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "Êtes-vous sûr de vouloir supprimer cette sauvegarde ? Il est impossible d'annuler cette action." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "Restaurer la sauvegarde" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "Vous devez redémarrer Cura avant que votre sauvegarde ne soit restaurée. Voulez-vous fermer Cura maintenant ?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "Vous en voulez plus ?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "Sauvegarder maintenant" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "Sauvegarde automatique" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Créez automatiquement une sauvegarde chaque jour où Cura est démarré." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Nivellement du plateau" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Pour obtenir des résultats d'impression optimaux, vous pouvez maintenant régler votre plateau. Quand vous cliquez sur 'Aller à la position suivante', la buse se déplacera vers les différentes positions pouvant être réglées." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Pour chacune des positions ; glissez un bout de papier sous la buse et ajustez la hauteur du plateau. La hauteur du plateau est juste lorsque la pointe de la buse gratte légèrement le papier." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Démarrer le nivellement du plateau" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Aller à la position suivante" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Sélectionnez les mises à niveau disponibles pour cet Ultimaker Original" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "Plateau chauffant (kit officiel ou fabriqué soi-même)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Tester l'imprimante" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "Il est préférable de procéder à quelques tests de fonctionnement sur votre Ultimaker. Vous pouvez passer cette étape si vous savez que votre machine est fonctionnelle" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Démarrer le test de l'imprimante" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Connexion : " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Connecté" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Non connecté" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Fin de course X : " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Fonctionne" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Non testé" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Fin de course Y : " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Fin de course Z : " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Test de la température de la buse : " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Arrêter le chauffage" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Démarrer le chauffage" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Contrôle de la température du plateau :" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Contrôlée" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Tout est en ordre ! Vous avez terminé votre check-up." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2593,7 +2791,6 @@ msgid "Printer does not accept commands" msgstr "L'imprimante n'accepte pas les commandes" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "En maintenance. Vérifiez l'imprimante" @@ -2604,19 +2801,16 @@ msgid "Lost connection with the printer" msgstr "Connexion avec l'imprimante perdue" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Impression..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "En pause" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Préparation..." @@ -2636,233 +2830,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Êtes-vous sûr(e) de vouloir abandonner l'impression ?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Annuler ou conserver les modifications" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "Vous avez personnalisé certains paramètres du profil.\nSouhaitez-vous conserver ces changements, ou les annuler ?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Paramètres du profil" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Par défaut" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Personnalisé" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Toujours me demander" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Annuler et ne plus me demander" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Conserver et ne plus me demander" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Annuler" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Conserver" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Créer un nouveau profil" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informations" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Confirmer le changement de diamètre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Le nouveau diamètre de filament est réglé sur %1 mm, ce qui n'est pas compatible avec l'extrudeuse actuelle. Souhaitez-vous poursuivre ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Afficher le nom" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marque" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Type de matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Couleur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Propriétés" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Densité" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diamètre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Coût du filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Poids du filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Longueur du filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Coût au mètre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Ce matériau est lié à %1 et partage certaines de ses propriétés." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Délier le matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Description" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Informations d'adhérence" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Paramètres d'impression" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Activer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Créer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Dupliquer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Exporter" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Imprimante" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Confirmer la suppression" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Êtes-vous sûr de vouloir supprimer l'objet %1 ? Vous ne pourrez pas revenir en arrière !" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importer un matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Impossible d'importer le matériau %1 : %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Matériau %1 importé avec succès" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Exporter un matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Échec de l'exportation de matériau vers %1 : %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Matériau exporté avec succès vers %1" @@ -2872,817 +3009,784 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Visibilité des paramètres" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Vérifier tout" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Calculer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Actuel" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Unité" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Général" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Interface" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Langue :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Devise :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Thème :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Vous devez redémarrer l'application pour que ces changements prennent effet." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Découper automatiquement si les paramètres sont modifiés." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Découper automatiquement" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportement Viewport" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Surligne les parties non supportées du modèle en rouge. Sans ajouter de support, ces zones ne s'imprimeront pas correctement." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Mettre en surbrillance les porte-à-faux" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Déplace la caméra afin que le modèle sélectionné se trouve au centre de la vue" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centrer la caméra lorsqu'un élément est sélectionné" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Le comportement de zoom par défaut de Cura doit-il être inversé ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverser la direction du zoom de la caméra." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Le zoom doit-il se faire dans la direction de la souris ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Le zoom vers la souris n'est pas pris en charge dans la perspective orthographique." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomer vers la direction de la souris" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Les modèles dans la zone d'impression doivent-ils être déplacés afin de ne plus se croiser ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Veillez à ce que les modèles restent séparés" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Les modèles dans la zone d'impression doivent-ils être abaissés afin de toucher le plateau ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Abaisser automatiquement les modèles sur le plateau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Afficher le message d'avertissement dans le lecteur G-Code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Message d'avertissement dans le lecteur G-Code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "La couche doit-elle être forcée en mode de compatibilité ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forcer l'affichage de la couche en mode de compatibilité (redémarrage requis)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Est-ce que Cura devrait ouvrir à l'endroit où il a été fermé ?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Restaurer la position de la fenêtre au démarrage" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Quel type de rendu de la caméra doit-il être utilisé?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Rendu caméra :" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspective" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Orthographique" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Ouvrir et enregistrer des fichiers" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Les modèles doivent-ils être mis à l'échelle du volume d'impression s'ils sont trop grands ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Réduire la taille des modèles trop grands" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Un modèle peut apparaître en tout petit si son unité est par exemple en mètres plutôt qu'en millimètres. Ces modèles doivent-ils être agrandis ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Mettre à l'échelle les modèles extrêmement petits" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Les modèles doivent-ils être sélectionnés après leur chargement ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Sélectionner les modèles lorsqu'ils sont chargés" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Un préfixe basé sur le nom de l'imprimante doit-il être automatiquement ajouté au nom de la tâche d'impression ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Ajouter le préfixe de la machine au nom de la tâche" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Un résumé doit-il être affiché lors de l'enregistrement d'un fichier de projet ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Afficher la boîte de dialogue du résumé lors de l'enregistrement du projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportement par défaut lors de l'ouverture d'un fichier de projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportement par défaut lors de l'ouverture d'un fichier de projet : " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Toujours me demander" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Toujours ouvrir comme projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Toujours importer les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Lorsque vous apportez des modifications à un profil puis passez à un autre profil, une boîte de dialogue apparaît, vous demandant si vous souhaitez conserver les modifications. Vous pouvez aussi choisir une option par défaut, et le dialogue ne s'affichera plus." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profils" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Comportement par défaut pour les valeurs de paramètres modifiées lors du passage à un profil différent : " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Toujours me demander" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Toujours rejeter les paramètres modifiés" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Toujours transférer les paramètres modifiés dans le nouveau profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Confidentialité" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura doit-il vérifier les mises à jour au démarrage du programme ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Vérifier les mises à jour au démarrage" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Les données anonymes de votre impression doivent-elles être envoyées à Ultimaker ? Notez qu'aucun modèle, aucune adresse IP ni aucune autre information permettant de vous identifier personnellement ne seront envoyés ou stockés." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Envoyer des informations (anonymes) sur l'impression" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Plus d'informations" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "Expérimental" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Utiliser la fonctionnalité multi-plateau" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "Utiliser la fonctionnalité multi-plateau (redémarrage requis)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Imprimantes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Renommer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Type d'imprimante :" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Connexion :" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "L'imprimante n'est pas connectée." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "État :" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "En attente d'une tâche d'impression" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "En attente du dégagement du plateau" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Abandon de l'impression..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profils" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Créer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Dupliquer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Créer un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "Veuillez fournir un nom pour ce profil." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Dupliquer un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Renommer le profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importer un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Exporter un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Imprimante : %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Profils protégés" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Personnaliser les profils" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Mettre à jour le profil à l'aide des paramètres / forçages actuels" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Ignorer les modifications actuelles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Ce profil utilise les paramètres par défaut spécifiés par l'imprimante, de sorte qu'aucun paramètre / forçage n'apparaît dans la liste ci-dessous." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Vos paramètres actuels correspondent au profil sélectionné." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Paramètres généraux" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Ajouter une imprimante" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Nom de l'imprimante :" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Ajouter une imprimante" +msgid "Marketplace" +msgstr "Marché en ligne" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&Fichier" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&Modifier" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Visualisation" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "&Paramètres" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "E&xtensions" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "P&références" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "&Aide" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Nouveau projet" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Êtes-vous sûr(e) de souhaiter lancer un nouveau projet ? Cela supprimera les objets du plateau ainsi que tous paramètres non enregistrés." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "Sans titre" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "À propos de Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "version : %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "Solution complète pour l'impression 3D par dépôt de filament fondu." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\nCura est fier d'utiliser les projets open source suivants :" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Interface utilisateur graphique" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Cadre d'application" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "Générateur G-Code" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Bibliothèque de communication interprocess" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Langage de programmation" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "Cadre IUG" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "Liens cadre IUG" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "Bibliothèque C/C++ Binding" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Format d'échange de données" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Prise en charge de la bibliothèque pour le calcul scientifique" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Prise en charge de la bibliothèque pour des maths plus rapides" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Prise en charge de la bibliothèque pour le traitement des fichiers STL" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "Prise en charge de la bibliothèque pour le traitement des objets planaires" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "Prise en charge de la bibliothèque pour le traitement des mailles triangulaires" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "Prise en charge de la bibliothèque pour l'analyse de réseaux complexes" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Prise en charge de la bibliothèque pour le traitement des fichiers 3MF" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "Prise en charge de la bibliothèque pour les métadonnées et le streaming de fichiers" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Bibliothèque de communication série" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "Bibliothèque de découverte ZeroConf" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Bibliothèque de découpe polygone" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Bibliothèque Python HTTP" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Police" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "Icônes SVG" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Déploiement d'applications sur multiples distributions Linux" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Profil :" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n\nCliquez pour ouvrir le gestionnaire de profils." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Rechercher..." +msgid "Search settings" +msgstr "Paramètres de recherche" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copier la valeur vers tous les extrudeurs" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Copier toutes les valeurs modifiées vers toutes les extrudeuses" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Afficher ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurer la visibilité des paramètres..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "Réduire tout" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "Développer tout" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n\nCliquez pour rendre ces paramètres visibles." +msgstr "" +"Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n" +"\n" +"Cliquez pour rendre ces paramètres visibles." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "Ce paramètre n'est pas utilisé car tous les paramètres qu'il influence sont remplacés." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Touche" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Touché par" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Ce paramètre est toujours partagé par toutes les extrudeuses. Le modifier ici entraînera la modification de la valeur pour toutes les extrudeuses." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "La valeur est résolue à partir des valeurs par extrudeur " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Ce paramètre possède une valeur qui est différente du profil.\n\nCliquez pour restaurer la valeur du profil." +msgstr "" +"Ce paramètre possède une valeur qui est différente du profil.\n" +"\n" +"Cliquez pour restaurer la valeur du profil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n\nCliquez pour restaurer la valeur calculée." +msgstr "" +"Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n" +"\n" +"Cliquez pour restaurer la valeur calculée." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "Recommandé" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "Personnalisé" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "Remplissage graduel" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "Un remplissage graduel augmentera la quantité de remplissage vers le haut." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "Support" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Générer des structures pour soutenir les parties du modèle qui possèdent des porte-à-faux. Sans ces structures, ces parties s'effondreront durant l'impression." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "Adhérence" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Activez l'impression d'une bordure ou plaquette (Brim/Raft). Cela ajoutera une zone plate autour de ou sous votre objet qui est facile à découper par la suite." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Vous avez modifié certains paramètres du profil. Si vous souhaitez les modifier, allez dans le mode Personnaliser." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "On" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "Off" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Expérimental" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "Profil" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n" +"\n" +"Cliquez pour ouvrir le gestionnaire de profils." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Personnaliser les profils" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "Configuration d'impression désactivée. Le fichier G-Code ne peut pas être modifié." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "Contrôle de l'imprimante" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "Position de coupe" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "Distance de coupe" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "Envoyer G-Code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "Envoyer une commande G-Code personnalisée à l'imprimante connectée. Appuyez sur « Entrée » pour envoyer la commande." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extrudeuse" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Température cible de l'extrémité chauffante. L'extrémité chauffante sera chauffée ou refroidie pour tendre vers cette température. Si la valeur est 0, le chauffage de l'extrémité chauffante sera coupé." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Température actuelle de cette extrémité chauffante." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Température jusqu'à laquelle préchauffer l'extrémité chauffante." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annuler" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Préchauffer" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Préchauffez l'extrémité chauffante avant l'impression. Vous pouvez continuer l'ajustement de votre impression pendant qu'elle chauffe, ce qui vous évitera un temps d'attente lorsque vous serez prêt à lancer l'impression." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Couleur du matériau dans cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Matériau dans cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Buse insérée dans cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "L'imprimante n'est pas connectée." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Plateau" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Température cible du plateau chauffant. Le plateau sera chauffé ou refroidi pour tendre vers cette température. Si la valeur est 0, le chauffage du plateau sera éteint." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Température actuelle du plateau chauffant." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Température jusqu'à laquelle préchauffer le plateau." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Préchauffez le plateau avant l'impression. Vous pouvez continuer à ajuster votre impression pendant qu'il chauffe, et vous n'aurez pas à attendre que le plateau chauffe lorsque vous serez prêt à lancer l'impression." @@ -3692,12 +3796,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Matériau" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoris" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Générique" @@ -3712,17 +3816,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "Imprimantes locales" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&Visualisation" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "Im&primante" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&Matériau" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Définir comme extrudeur actif" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "Activer l'extrudeuse" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "Désactiver l'extrudeuse" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "Position de la &caméra" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Vue de la caméra" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Perspective" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Orthographique" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "&Plateau" @@ -3742,6 +3881,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Gérer la visibilité des paramètres..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "Enregi&strer..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&Exporter..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "Exporter la sélection..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3761,654 +3915,509 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Nombre de copies" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "Configurations disponibles" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "Configurations" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "Extrudeuse" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "Sélectionner la configuration" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "Oui" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "Configurations" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "Non" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "Chargement des configurations disponibles à partir de l'imprimante..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "Les configurations ne sont pas disponibles car l'imprimante est déconnectée." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "Personnalisé" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "Imprimante" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "Activé" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Matériau" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "Utiliser de la colle pour une meilleure adhérence avec cette combinaison de matériaux." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "Cette configuration n'est pas disponible car %1 n'est pas reconnu. Veuillez visiter %2 pour télécharger le profil matériel correct." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "Marché en ligne" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Ouvrir un fichier &récent" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Configuration de l'impression" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "Configuration de l'impression désactivée\nLes fichiers G-Code ne peuvent pas être modifiés" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00h 00min" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "Spécification de temps" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "Spécification de coût" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "Total :" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Configuration de l'impression recommandée

    Imprimer avec les paramètres recommandés pour l'imprimante, le matériau et la qualité sélectionnés." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Configuration de l'impression personnalisée

    Imprimer avec un contrôle fin de chaque élément du processus de découpe." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Activer l'impression" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Nom de la tâche" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Durée d'impression" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Durée restante estimée" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "Type d'affichage" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Liste d'objets" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "Bonjour %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Compte Ultimaker" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "Déconnexion" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "Se connecter" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "Le flux d'impression 3D de nouvelle génération" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- Envoyez des tâches d'impression à des imprimantes Ultimaker hors de votre réseau local\n" +"- Stockez vos paramètres Ultimaker Cura dans le cloud pour les utiliser où que vous soyez\n" +"- Obtenez un accès exclusif aux profils d'impression des principales marques" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "Créer un compte" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "Aucune estimation de la durée n'est disponible" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "Aucune estimation des coûts n'est disponible" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "Aperçu" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "Découpe en cours..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "Impossible de découper" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "Traitement" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "Découper" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "Démarrer le processus de découpe" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "Annuler" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "Estimation de durée" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "Estimation du matériau" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "Imprimantes connectées" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "Imprimantes préréglées" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "Ajouter une imprimante" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "Gérer les imprimantes" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "Afficher le guide de dépannage en ligne" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Passer en Plein écran" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Quitter le mode plein écran" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Annuler" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Rétablir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Quitter" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "Vue 3D" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "Vue de face" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "Vue du dessus" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "Vue latérale gauche" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "Vue latérale droite" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurer Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Ajouter une imprimante..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Gérer les &imprimantes..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Gérer les matériaux..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Mettre à jour le profil à l'aide des paramètres / forçages actuels" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Ignorer les modifications actuelles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Créer un profil à partir des paramètres / forçages actuels..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Gérer les profils..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Afficher la &documentation en ligne" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Notifier un &bug" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "Quoi de neuf" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "À propos de..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "Supprimer le modèle sélectionné" msgstr[1] "Supprimer les modèles sélectionnés" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Centrer le modèle sélectionné" msgstr[1] "Centrer les modèles sélectionnés" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Multiplier le modèle sélectionné" msgstr[1] "Multiplier les modèles sélectionnés" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Supprimer le modèle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ce&ntrer le modèle sur le plateau" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Grouper les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Dégrouper les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Fusionner les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Multiplier le modèle..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Sélectionner tous les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Supprimer les objets du plateau" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Recharger tous les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "Réorganiser tous les modèles sur tous les plateaux" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Réorganiser tous les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Réorganiser la sélection" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Réinitialiser toutes les positions des modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Réinitialiser tous les modèles et transformations" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Ouvrir le(s) fichier(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nouveau projet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Afficher le &journal du moteur..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Afficher le dossier de configuration" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "Parcourir les paquets..." +msgid "&Marketplace" +msgstr "&Marché en ligne" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "Déplier / replier la barre latérale" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Veuillez charger un modèle 3D" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Prêt à découper" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Découpe en cours..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Prêt à %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Impossible de découper" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Découpe indisponible" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "Découper la tâche d'impression en cours" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "Annuler le processus de découpe" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Préparer" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Annuler" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Sélectionner le périphérique de sortie actif" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Ouvrir le(s) fichier(s)" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Nous avons trouvé au moins un fichier de projet parmi les fichiers que vous avez sélectionnés. Vous ne pouvez ouvrir qu'un seul fichier de projet à la fois. Nous vous conseillons de n'importer que les modèles de ces fichiers. Souhaitez-vous continuer ?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Importer tout comme modèles" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&Fichier" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "Enregi&strer..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&Exporter..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "Exporter la sélection..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&Modifier" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "&Visualisation" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "&Paramètres" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "Im&primante" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Matériau" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Définir comme extrudeur actif" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "Activer l'extrudeuse" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "Désactiver l'extrudeuse" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "Plateau" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profil" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "E&xtensions" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "&Boîte à outils" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "P&références" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "&Aide" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Ce paquet sera installé après le redémarrage." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Ouvrir un fichier" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Paramètres" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Nouveau projet" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Êtes-vous sûr(e) de souhaiter lancer un nouveau projet ? Cela supprimera les objets du plateau ainsi que tous paramètres non enregistrés." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Fermeture de Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Êtes-vous sûr de vouloir quitter Cura ?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Ouvrir le(s) fichier(s)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Installer le paquet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Ouvrir le(s) fichier(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Nous avons trouvé au moins un fichier G-Code parmi les fichiers que vous avez sélectionné. Vous ne pouvez ouvrir qu'un seul fichier G-Code à la fois. Si vous souhaitez ouvrir un fichier G-Code, veuillez ne sélectionner qu'un seul fichier de ce type." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Enregistrer le projet" +msgid "Add Printer" +msgstr "Ajouter une imprimante" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Plateau" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Extrudeuse %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & matériau" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Ne pas afficher à nouveau le résumé du projet lors de l'enregistrement" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Enregistrer" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Hauteur de la couche" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "Ce profil de qualité n'est pas disponible pour votre matériau et configuration des buses actuels. Veuillez modifier ces derniers pour activer ce profil de qualité" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Un profil personnalisé est actuellement actif. Pour activer le curseur de qualité, choisissez un profil de qualité par défaut dans l'onglet Personnaliser" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Vitesse d’impression" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Ralentir" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Accélérer" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "Vous avez modifié certains paramètres du profil. Si vous souhaitez les modifier, allez dans le mode Personnaliser." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Remplissage" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Un remplissage graduel augmentera la quantité de remplissage vers le haut." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Permettre le remplissage graduel" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Générer les supports" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Générer des structures pour soutenir les parties du modèle qui possèdent des porte-à-faux. Sans ces structures, ces parties s'effondreront durant l'impression." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Sélectionnez l'extrudeur à utiliser comme support. Cela créera des structures de support sous le modèle afin de l'empêcher de s'affaisser ou de s'imprimer dans les airs." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Adhérence au plateau" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Activez l'impression d'une bordure ou plaquette (Brim/Raft). Cela ajoutera une zone plate autour de ou sous votre objet qui est facile à découper par la suite." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "Besoin d'aide pour améliorer vos impressions ?
    Lisez les Guides de dépannage Ultimaker" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "Quoi de neuf" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4417,75 +4426,503 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "Imprimer le modèle sélectionné avec %1" msgstr[1] "Imprimer les modèles sélectionnés avec %1" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Annuler ou conserver les modifications" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"Vous avez personnalisé certains paramètres du profil.\n" +"Souhaitez-vous conserver ces changements, ou les annuler ?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Paramètres du profil" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Par défaut" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Personnalisé" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Annuler et ne plus me demander" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Conserver et ne plus me demander" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Annuler" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Conserver" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Créer un nouveau profil" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "À propos de Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "version : %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "Solution complète pour l'impression 3D par dépôt de filament fondu." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\n" +"Cura est fier d'utiliser les projets open source suivants :" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Interface utilisateur graphique" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Cadre d'application" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "Générateur G-Code" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Bibliothèque de communication interprocess" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Langage de programmation" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "Cadre IUG" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "Liens cadre IUG" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "Bibliothèque C/C++ Binding" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Format d'échange de données" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Prise en charge de la bibliothèque pour le calcul scientifique" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Prise en charge de la bibliothèque pour des maths plus rapides" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Prise en charge de la bibliothèque pour le traitement des fichiers STL" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "Prise en charge de la bibliothèque pour le traitement des objets planaires" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "Prise en charge de la bibliothèque pour le traitement des mailles triangulaires" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "Prise en charge de la bibliothèque pour l'analyse de réseaux complexes" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Prise en charge de la bibliothèque pour le traitement des fichiers 3MF" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "Prise en charge de la bibliothèque pour les métadonnées et le streaming de fichiers" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Bibliothèque de communication série" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "Bibliothèque de découverte ZeroConf" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Bibliothèque de découpe polygone" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Bibliothèque Python HTTP" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Police" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "Icônes SVG" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Déploiement d'applications sur multiples distributions Linux" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Nous avons trouvé au moins un fichier de projet parmi les fichiers que vous avez sélectionnés. Vous ne pouvez ouvrir qu'un seul fichier de projet à la fois. Nous vous conseillons de n'importer que les modèles de ces fichiers. Souhaitez-vous continuer ?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Importer tout comme modèles" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Enregistrer le projet" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Extrudeuse %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & matériau" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "Matériau" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Ne pas afficher à nouveau le résumé du projet lors de l'enregistrement" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Enregistrer" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Ouvrir un fichier de projet" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Ceci est un fichier de projet Cura. Souhaitez-vous l'ouvrir comme projet ou en importer les modèles ?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Se souvenir de mon choix" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Ouvrir comme projet" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importer les modèles" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Journal du moteur" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "Type d'imprimante" +msgid "Empty" +msgstr "Vide" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Matériau" +msgid "Add a printer" +msgstr "Ajouter une imprimante" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "Utiliser de la colle avec cette combinaison de matériaux" +msgid "Add a networked printer" +msgstr "Ajouter une imprimante en réseau" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "Vérifier la compatibilité" +msgid "Add a non-networked printer" +msgstr "Ajouter une imprimante hors réseau" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Cliquez ici pour vérifier la compatibilité des matériaux sur Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "Ajouter une imprimante par adresse IP" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Afficher uniquement le plateau actuel" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Saisissez l'adresse IP de votre imprimante." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Réorganiser sur tous les plateaux" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Ajouter" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Réorganiser le plateau actuel" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "Impossible de se connecter à l'appareil." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "L'imprimante à cette adresse n'a pas encore répondu." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "Cette imprimante ne peut pas être ajoutée parce qu'il s'agit d'une imprimante inconnue ou de l'hôte d'un groupe." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "Précédent" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "Se connecter" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "Suivant" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "Accord utilisateur" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "Accepter" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "Décliner et fermer" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Aidez-nous à améliorer Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura recueille des données anonymes pour améliorer la qualité d'impression et l'expérience utilisateur, notamment :" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "Types de machines" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "Utilisation du matériau" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "Nombre de découpes" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "Paramètres d'impression" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Les données recueillies par Ultimaker Cura ne contiendront aucun renseignement personnel." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "Plus d'informations" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Quoi de neuf dans Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "Aucune imprimante n'a été trouvée sur votre réseau." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "Rafraîchir" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "Ajouter une imprimante par IP" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "Dépannage" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "Nom de l'imprimante" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "Veuillez donner un nom à votre imprimante" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "Le flux d'impression 3D de nouvelle génération" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- Envoyez des tâches d'impression à des imprimantes Ultimaker hors de votre réseau local" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Stockez vos paramètres Ultimaker Cura dans le cloud pour les utiliser où que vous soyez" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- Accédez en exclusivité aux profils d'impression des plus grandes marques" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "Fin" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "Créer un compte" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Bienvenue dans Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"Veuillez suivre ces étapes pour configurer\n" +"Ultimaker Cura. Cela ne prendra que quelques instants." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "Prise en main" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Vue 3D" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Vue de face" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Vue du dessus" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Vue gauche" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Vue droite" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4547,26 +4984,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Contrôleur de modèle" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Exporter les contenus de tous les paramètres vers un fichier HTML." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Mode God" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Affiche les changements depuis la dernière version." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Récapitulatif des changements" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4577,15 +4994,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Programme de mise à jour du firmware" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Créer un profil de changements de qualité aplati." +msgid "Provides support for reading AMF files." +msgstr "Fournit la prise en charge de la lecture de fichiers AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Aplatisseur de profil" +msgid "AMF Reader" +msgstr "Lecteur AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -4597,26 +5014,6 @@ msgctxt "name" msgid "USB printing" msgstr "Impression par USB" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "Demander à l'utilisateur une fois s'il appose son accord à notre licence." - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "UserAgreement" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Permet de sauvegarder la tranche résultante sous forme de fichier X3G, pour prendre en charge les imprimantes qui lisent ce format (Malyan, Makerbot et autres imprimantes basées sur Sailfish)." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4659,13 +5056,13 @@ msgstr "Plugin de périphérique de sortie sur disque amovible" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Gère les connexions réseau vers les imprimantes Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Gère les connexions réseau vers les imprimantes Ultimaker en réseau." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Connexion au réseau UM3" +msgid "Ultimaker Network Connection" +msgstr "Connexion réseau Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -4727,6 +5124,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Effaceur de support" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Fournit un support pour la lecture des paquets de format Ultimaker." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "Lecteur UFP" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4787,6 +5194,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Mise à niveau de 3.3 vers 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Configurations des mises à niveau de Cura 4.3 vers Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Mise à niveau de 4.3 vers 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4807,6 +5224,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Mise à niveau de version, de 2.7 vers 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Configurations des mises à niveau de Cura 3.5 vers Cura 4.0." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "Mise à niveau de 3.5 vers 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4817,6 +5244,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "Mise à niveau de 3.4 vers 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Configurations des mises à niveau de Cura 4.0 vers Cura 4.1." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "Mise à niveau de 4.0 vers 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4827,6 +5264,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Mise à niveau de version, de 3.0 vers 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Configurations des mises à jour de Cura 4.1 vers Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Mise à jour de 4.1 vers 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4857,6 +5304,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Mise à niveau de 2.2 vers 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Configurations des mises à jour de Cura 4.2 vers Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Mise à jour de 4.2 vers 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4867,6 +5324,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Lecteur d'images" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Fournit la prise en charge de la lecture de fichiers modèle 3D." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Lecteur de Trimesh" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4917,6 +5384,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "Lecteur G-Code" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "Sauvegardez et restaurez votre configuration." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Sauvegardes Cura" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4937,6 +5414,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Générateur 3MF" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Fournit une étape de prévisualisation dans Cura." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "Étape de prévisualisation" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4957,9 +5444,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lecteur de profil Cura" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "Veuillez générer le G-Code avant d'enregistrer." +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Aplatir les paramètres actifs" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Le profil a été aplati et activé." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Écrit X3G dans des fichiers" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Fichier X3G" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Fichier X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Ouvrir le maillage triangulaire compressé" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -4969,6 +5476,1032 @@ msgstr "Lecteur de profil Cura" #~ msgid "Profile Assistant" #~ msgstr "Assistant de profil" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Réessayer" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print Core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Ne pas prendre en charge le chevauchement avec d'autres modèles" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Modifier les paramètres de chevauchement avec d'autres modèles" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modifier les paramètres de remplissage d'autres modèles" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Mettre à jour l'existant" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Non pris en charge" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Précédent" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Astuce" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Test d'impression" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Liste de contrôle" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Sélectionnez les mises à niveau disponibles pour cet Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Blocage Olsson" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Rendu caméra : " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Utiliser la fonctionnalité multi-plateau" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Utiliser la fonctionnalité multi-plateau (redémarrage requis)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Profils par défaut" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "paramètres de recherche" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Hauteur de la couche" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Ce profil de qualité n'est pas disponible pour votre matériau et configuration des buses actuels. Veuillez modifier ces derniers pour activer ce profil de qualité." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Un profil personnalisé est actuellement actif. Pour activer le curseur de qualité, choisissez un profil de qualité par défaut dans l'onglet Personnaliser" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "Plateau" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Plateau" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Exporter les contenus de tous les paramètres vers un fichier HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Mode God" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Créer un profil de changements de qualité aplati." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Aplatisseur de profil" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Permet aux fabricants de matériaux de créer de nouveaux matériaux et profils de qualité à l'aide d'une interface utilisateur ad hoc." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Assistant de profil d'impression" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Connecté sur le réseau." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Connecté sur le réseau. Veuillez approuver la demande d'accès sur l'imprimante." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Connecté sur le réseau. Pas d'accès pour commander l'imprimante." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Accès à l'imprimante demandé. Veuillez approuver la demande sur l'imprimante" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Statut d'authentification" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Statut d'authentification" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Renvoyer la demande d'accès" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Accès à l'imprimante accepté" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Aucun accès pour imprimer avec cette imprimante. Impossible d'envoyer la tâche d'impression." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Demande d'accès" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Envoyer la demande d'accès à l'imprimante" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Impossible de démarrer une nouvelle tâche d'impression." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Un problème avec la configuration de votre Ultimaker empêche le démarrage de l'impression. Veuillez résoudre ce problème avant de continuer." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Configuration différente" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Êtes-vous sûr(e) de vouloir imprimer avec la configuration sélectionnée ?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Problème de compatibilité entre la configuration ou l'étalonnage de l'imprimante et Cura. Pour un résultat optimal, découpez toujours pour les PrintCores et matériaux insérés dans votre imprimante." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Envoi de nouvelles tâches (temporairement) bloqué, envoi de la tâche d'impression précédente en cours." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Envoi des données à l'imprimante" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Envoi des données" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Pas de PrintCore inséré dans la fente {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Aucun matériau inséré dans la fente {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "PrintCore différent (Cura : {cura_printcore_name}, Imprimante : {remote_printcore_name}) sélectionné pour l'extrudeuse {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Matériau différent (Cura : {0}, Imprimante : {1}) sélectionné pour l'extrudeuse {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Synchroniser avec votre imprimante" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Voulez-vous utiliser votre configuration d'imprimante actuelle dans Cura ?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Les PrintCores et / ou matériaux sur votre imprimante diffèrent de ceux de votre projet actuel. Pour un résultat optimal, découpez toujours pour les PrintCores et matériaux insérés dans votre imprimante." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Afficher sur le moniteur" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} a terminé d'imprimer '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "La tâche d'impression '{job_name}' est terminée." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Impression terminée" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Vide" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Inconnu" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Erreur de cloud" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Impossible d'exporter la tâche d'impression." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Une erreur s'est produite lors de la connexion au cloud." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Téléchargement via Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Se connecter à Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Ne plus me demander pour cette imprimante." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Vous pouvez maintenant lancer et surveiller des impressions où que vous soyez avec votre compte Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Connecté !" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Consulter votre connexion" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "La machine définie dans le profil {0} ({1}) ne correspond pas à votre machine actuelle ({2}) ; échec de l'importation." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Échec de l'importation du profil depuis le fichier {0} :" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Connexion existante" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Ce groupe / cette imprimante a déjà été ajouté à Cura. Veuillez sélectionner un autre groupe / imprimante." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Saisissez l'adresse IP ou le nom d'hôte de votre imprimante sur le réseau." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Connecter à une imprimante" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guide des paramètres de Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Zoom vers la souris n'est pas pris en charge dans la perspective orthogonale." + +#~ msgid "Orthogonal" +#~ msgstr "Orthogonale" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Gère les connexions réseau vers les imprimantes Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Connexion au réseau UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Fournit des informations et explications supplémentaires sur les paramètres de Cura, avec des images et des animations." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Guide des paramètres" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guide des paramètres de Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Les paramètres ont été modifiés pour correspondre aux extrudeuses actuellement disponibles : [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Description de l'utilisateur" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Ces options ne sont pas disponibles car vous surveillez une imprimante cloud." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Aller à Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Toutes les tâches ont été imprimées." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Voir l'historique d'impression" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n" +#~ "\n" +#~ "Sélectionnez votre imprimante dans la liste ci-dessous :" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Assurez-vous que votre imprimante est connectée :\n" +#~ "- Vérifiez si l'imprimante est sous tension.\n" +#~ "- Vérifiez si l'imprimante est connectée au réseau." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Afficher uniquement le plateau actuel" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Réorganiser sur tous les plateaux" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Réorganiser le plateau actuel" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Permet de sauvegarder la tranche résultante sous forme de fichier X3G, pour prendre en charge les imprimantes qui lisent ce format (Malyan, Makerbot et autres imprimantes basées sur Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Lit les fichiers SVG comme des Toolpaths, pour déboguer les mouvements de l'imprimante." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Lecteur de Toolpaths SVG" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Récapitulatif des changements" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Afficher le récapitulatif des changements" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "Envoi de données à un cluster distant" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Se connecter à Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura recueille des statistiques d'utilisation anonymes." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "Collecte des données" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "Plus d'informations" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Voir plus d'informations sur les données envoyées par Cura." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "Autoriser" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Autoriser Cura à envoyer des statistiques d'utilisation anonymes pour mieux prioriser les améliorations futures apportées à Cura. Certaines de vos préférences et paramètres sont envoyés, ainsi que la version du logiciel Cura et un hachage des modèles que vous découpez." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "Évaluation" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "Imprimantes réseau" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "Imprimantes locales" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "A essayé de restaurer une sauvegarde Cura qui ne correspond pas à votre version actuelle." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Paramètres de la machine" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Paramètres de l'imprimante" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Origine au centre" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Plateau chauffant" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Paramètres de la tête d'impression" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distance entre la gauche de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distance entre le devant de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distance entre la droite de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distance entre le dos de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Hauteur du portique" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "La différence de hauteur entre la pointe de la buse et le système de portique (axes X et Y). Permet d'empêcher les collisions entre les impressions précédentes et le portique lors d'une impression « Un à la fois »." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "G-Code de démarrage" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "Commandes G-Code à exécuter au tout début." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "G-Code de fin" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "Commandes G-Code à exécuter tout à la fin." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Paramètres de la buse" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "Le diamètre nominal de filament pris en charge par l'imprimante. Le diamètre exact sera remplacé par le matériau et / ou le profil." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "Extrudeuse G-Code de démarrage" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "Extrudeuse G-Code de fin" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Récapitulatif des changements" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "Accord utilisateur" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Saisissez l'adresse IP ou le nom d'hôte de votre imprimante sur le réseau." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "Veuillez sélectionner une imprimante à surveiller qui est connectée au réseau." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Veuillez connecter votre imprimante Ultimaker à votre réseau local." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura envoie des données anonymes à Ultimaker afin d'améliorer la qualité d'impression et l'expérience utilisateur. Voici un exemple de toutes les données envoyées." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "Je ne veux pas envoyer ces données" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Permettre l'envoi de ces données à Ultimaker et nous aider à améliorer Cura" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "Aucune impression sélectionnée" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "Par défaut, les pixels blancs représentent les points hauts sur la maille tandis que les pixels noirs représentent les points bas sur la maille. Modifiez cette option pour inverser le comportement de manière à ce que les pixels noirs représentent les points hauts sur la maille et les pixels blancs les points bas." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Sélectionner les mises à niveau de l'imprimante" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Sélectionnez l'extrudeur à utiliser comme support. Cela créera des structures de support sous le modèle afin de l'empêcher de s'affaisser ou de s'imprimer dans les airs." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Ce profil de qualité n'est pas disponible pour votre matériau et configuration des buses actuels. Veuillez modifier ces derniers pour activer ce profil de qualité." + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "Configuration d'impression désactivée. Le fichier G-Code ne peut pas être modifié." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "Voir le tableau de compatibilité des matériaux" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "Types d'affichages" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "Bonjour " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- Envoyez des tâches d'impression à des imprimantes Ultimaker hors de votre réseau local\n" +#~ "- Stockez vos paramètres Ultimaker Cura dans le cloud pour les utiliser où que vous soyez\n" +#~ "- Obtenez un accès exclusif aux profils de matériaux des principales marques" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "Impossible de découper" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "Spécification de durée" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "Spécification des matériaux" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Ajouter une imprimante à Cura" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "Sélectionnez l'imprimante que vous voulez utiliser dans la liste ci-dessous.\n" +#~ "\n" +#~ "Si votre imprimante n'est pas dans la liste, utilisez l'imprimante « Imprimante FFF personnalisée » de la catégorie « Personnalisé » et ajustez les paramètres pour qu'ils correspondent à votre imprimante dans le dialogue suivant." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "Fabricant" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "Nom de l'imprimante" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Ajouter une imprimante" + +#~ msgid "Modify G-Code" +#~ msgstr "Modifier le G-Code" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "Rien à couper car aucun des modèles ne convient au volume d'impression. Mettez à l'échelle ou faites pivoter les modèles pour les faire correspondre." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "Le matériau sélectionné est incompatible avec la machine ou la configuration sélectionnée." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Matériau incompatible" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Échec de l'importation du profil depuis le fichier {0} : {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "Boîte à outils" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "Non disponible" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "Injoignable" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "Disponible" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Préparation" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "Mise en pause" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "Reprise" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "En attente : imprimante non disponible" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "En attente : première imprimante disponible" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "En attente : " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "Modification des configurations" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "L'imprimante assignée, %1, nécessite d'apporter la ou les modifications suivantes à la configuration :" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "Remplacer" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "Le fait de démarrer un travail d'impression avec une configuration incompatible peut endommager votre imprimante 3D. Êtes-vous sûr de vouloir remplacer la configuration et imprimer %1 ?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "Remplacer la configuration et lancer l'impression" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "Gérer la file d'attente" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "Impression" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "Gérer les imprimantes" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Activer la configuration" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Charger la configuration de l'imprimante dans Cura" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Afficher les déplacements" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Afficher les aides" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Afficher la coque" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Afficher le remplissage" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "Je ne veux pas envoyer ces données" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Permettre l'envoi de ces données à Ultimaker et nous aider à améliorer Cura" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Type d'imprimante :" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Connexion :" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "État :" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "En attente d'une tâche d'impression" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "En attente du dégagement du plateau" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "Abandon de l'impression..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Profils protégés" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Nom de l'imprimante :" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Profil :" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Rechercher..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "Réduire tout" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "Développer tout" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "Configurations disponibles" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "Extrudeuse" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "Oui" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "Non" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Configuration de l'impression" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Configuration de l'impression désactivée\n" +#~ "Les fichiers G-Code ne peuvent pas être modifiés" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00h 00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "Spécification de temps" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "Spécification de coût" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "Total :" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Configuration de l'impression recommandée

    Imprimer avec les paramètres recommandés pour l'imprimante, le matériau et la qualité sélectionnés." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Configuration de l'impression personnalisée

    Imprimer avec un contrôle fin de chaque élément du processus de découpe." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "Afficher le &journal du moteur..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "Parcourir les paquets..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "Déplier / replier la barre latérale" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Veuillez charger un modèle 3D" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Prêt à découper" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "Prêt à %1" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "Découpe indisponible" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "Découper la tâche d'impression en cours" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "Annuler le processus de découpe" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Préparer" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "Annuler" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Sélectionner le périphérique de sortie actif" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "&Visualisation" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "&Paramètres" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "&Boîte à outils" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Ouvrir un fichier" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Ce profil de qualité n'est pas disponible pour votre matériau et configuration des buses actuels. Veuillez modifier ces derniers pour activer ce profil de qualité" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Vitesse d’impression" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Ralentir" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Accélérer" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Permettre le remplissage graduel" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Générer les supports" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Adhérence au plateau" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "Besoin d'aide pour améliorer vos impressions ?
    Lisez les Guides de dépannage Ultimaker" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Journal du moteur" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "Type d'imprimante" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "Utiliser de la colle avec cette combinaison de matériaux" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Vérifier la compatibilité" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Cliquez ici pour vérifier la compatibilité des matériaux sur Ultimaker.com." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Affiche les changements depuis la dernière version." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Récapitulatif des changements" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Créer un profil de changements de qualité aplati." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Aplatisseur de profil" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "Demander à l'utilisateur une fois s'il appose son accord à notre licence." + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "UserAgreement" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "Veuillez générer le G-Code avant d'enregistrer." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Mise à niveau du firmware" @@ -4993,22 +6526,6 @@ msgstr "Lecteur de profil Cura" #~ msgid "Confirm uninstall " #~ msgstr "Confirmer la désinstallation " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "En pause" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "Précédent" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "Suivant" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "Astuce" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1m / ~ %2g / ~ %4 %3" @@ -5017,26 +6534,10 @@ msgstr "Lecteur de profil Cura" #~ msgid "%1m / ~ %2g" #~ msgstr "%1m / ~ %2g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "Test d'impression" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "Liste de contrôle" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "Mise à niveau du firmware" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "Permet aux fabricants de matériaux de créer de nouveaux matériaux et profils de qualité à l'aide d'une interface utilisateur ad hoc." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "Assistant de profil d'impression" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Imprimer avec Doodle3D WiFi-Box" @@ -5129,10 +6630,6 @@ msgstr "Lecteur de profil Cura" #~ msgid "Lost connection with the printer" #~ msgstr "Connexion avec l'imprimante perdue" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "Indisponible" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "Inconnu" diff --git a/resources/i18n/fr_FR/fdmextruder.def.json.po b/resources/i18n/fr_FR/fdmextruder.def.json.po index 52969f511f..59ade887b6 100644 --- a/resources/i18n/fr_FR/fdmextruder.def.json.po +++ b/resources/i18n/fr_FR/fdmextruder.def.json.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -83,8 +83,8 @@ msgstr "Extrudeuse G-Code de démarrage" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "G-Code de démarrage à exécuter à chaque mise en marche de l'extrudeuse." +msgid "Start g-code to execute when switching to this extruder." +msgstr "Démarrer le G-Code à exécuter lors du passage à cette extrudeuse." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -123,8 +123,8 @@ msgstr "Extrudeuse G-Code de fin" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "G-Code de fin à exécuter à chaque arrêt de l'extrudeuse." +msgid "End g-code to execute when switching away from this extruder." +msgstr "Fin du G-Code à exécuter lors de l'abandon de l'extrudeuse." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -225,3 +225,11 @@ msgstr "Diamètre" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Ajuste le diamètre du filament utilisé. Faites correspondre cette valeur au diamètre du filament utilisé." + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "G-Code de démarrage à exécuter à chaque mise en marche de l'extrudeuse." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "G-Code de fin à exécuter à chaque arrêt de l'extrudeuse." diff --git a/resources/i18n/fr_FR/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po index 87aa9d5a27..9779482577 100644 --- a/resources/i18n/fr_FR/fdmprinter.def.json.po +++ b/resources/i18n/fr_FR/fdmprinter.def.json.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 15:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: French\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: French , French \n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,7 +57,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "Commandes G-Code à exécuter au tout début, séparées par \n." +msgstr "" +"Commandes G-Code à exécuter au tout début, séparées par \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -69,7 +71,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "Commandes G-Code à exécuter tout à la fin, séparées par \n." +msgstr "" +"Commandes G-Code à exécuter tout à la fin, séparées par \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -211,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Si la machine a un plateau chauffé présent." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Est dotée de la stabilisation de la température du volume d'impression" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Si la machine est capable de stabiliser la température du volume d'impression." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -233,7 +247,7 @@ msgstr "Nombre de trains d'extrudeuse. Un train d'extrudeuse est la combinaison #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "Nombre d'extrudeuses activées" #: fdmprinter.def.json @@ -243,7 +257,7 @@ msgstr "Nombre de trains d'extrusion activés ; automatiquement défini dans le #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "Diamètre extérieur de la buse" #: fdmprinter.def.json @@ -253,7 +267,7 @@ msgstr "Le diamètre extérieur de la pointe de la buse." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "Longueur de la buse" #: fdmprinter.def.json @@ -263,7 +277,7 @@ msgstr "La différence de hauteur entre la pointe de la buse et la partie la plu #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "Angle de la buse" #: fdmprinter.def.json @@ -273,7 +287,7 @@ msgstr "L'angle entre le plan horizontal et la partie conique juste au-dessus de #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "Longueur de la zone chauffée" #: fdmprinter.def.json @@ -303,7 +317,7 @@ msgstr "Contrôler ou non la température depuis Cura. Désactivez cette option #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "Vitesse de chauffage" #: fdmprinter.def.json @@ -313,7 +327,7 @@ msgstr "La vitesse (°C/s) à laquelle la buse chauffe, sur une moyenne de la pl #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "Vitesse de refroidissement" #: fdmprinter.def.json @@ -333,7 +347,7 @@ msgstr "La durée minimale pendant laquelle une extrudeuse doit être inactive a #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "Parfum G-Code" #: fdmprinter.def.json @@ -398,7 +412,7 @@ msgstr "S'il faut utiliser les commandes de rétraction du firmware (G10 / G11 #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "Zones interdites" #: fdmprinter.def.json @@ -418,7 +432,7 @@ msgstr "Une liste de polygones comportant les zones dans lesquelles le bec n'a p #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "Polygone de la tête de machine" #: fdmprinter.def.json @@ -428,8 +442,8 @@ msgstr "Une silhouette 2D de la tête d'impression (sans les capuchons du ventil #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" -msgstr "Tête de la machine et polygone du ventilateur" +msgid "Machine Head & Fan Polygon" +msgstr "Polygone de la tête de la machine et du ventilateur" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" @@ -438,7 +452,7 @@ msgstr "Une silhouette 2D de la tête d'impression (avec les capuchons du ventil #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Hauteur du portique" #: fdmprinter.def.json @@ -468,7 +482,7 @@ msgstr "Le diamètre intérieur de la buse. Modifiez ce paramètre si vous utili #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" +msgid "Offset with Extruder" msgstr "Décalage avec extrudeuse" #: fdmprinter.def.json @@ -1016,6 +1030,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Le nombre de couches inférieures. Lorsqu'elle est calculée par l'épaisseur du dessous, cette valeur est arrondie à un nombre entier." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Couches inférieures initiales" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Le nombre de couches inférieures initiales à partir du haut du plateau. Lorsqu'elle est calculée par l'épaisseur du dessous, cette valeur est arrondie" +" à un nombre entier." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1219,7 +1244,7 @@ msgstr "Imprimer les parties du modèle qui sont horizontalement plus fines que #: fdmprinter.def.json msgctxt "xy_offset label" msgid "Horizontal Expansion" -msgstr "Vitesse d’impression horizontale" +msgstr "Expansion horizontale" #: fdmprinter.def.json msgctxt "xy_offset description" @@ -1266,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Angle le plus aigu" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Position de la jointure en Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "La position près de laquelle démarre l'impression de chaque partie dans une couche." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Arrière gauche" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Précédent" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Arrière droit" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Droite" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Avant droit" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Avant" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Avant gauche" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Gauche" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1293,8 +1368,8 @@ msgstr "Préférence de jointure d'angle" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Vérifie si les angles du contour du modèle influencent l'emplacement de la jointure. « Aucune » signifie que les angles n'ont aucune influence sur l'emplacement de la jointure. « Masquer jointure » génère généralement le positionnement de la jointure sur un angle intérieur. « Exposer jointure » génère généralement le positionnement de la jointure sur un angle extérieur. « Masquer ou exposer jointure » génère généralement le positionnement de la jointure sur un angle intérieur ou extérieur." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Vérifie si les angles du contour du modèle influencent l'emplacement de la jointure. « Aucune » signifie que les angles n'ont aucune influence sur l'emplacement de la jointure. « Masquer la jointure » génère le positionnement de la jointure sur un angle intérieur. « Exposer la jointure » génère le positionnement de la jointure sur un angle extérieur. « Masquer ou exposer la jointure » génère le positionnement de la jointure sur un angle intérieur ou extérieur. « Jointure intelligente » autorise les angles intérieurs et extérieurs, mais choisit plus fréquemment les angles intérieurs, le cas échéant." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1316,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Masquer ou exposer jointure" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Masquage intelligent" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1328,13 +1408,13 @@ msgstr "Si cette option est activée, les coordonnées de la jointure z sont rel #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ignorer les petits trous en Z" +msgid "No Skin in Z Gaps" +msgstr "Aucune couche dans les trous en Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Quand le modèle présente de petits trous verticaux, environ 5 % de temps de calcul supplémentaire peut être alloué à la génération de couches du dessus et du dessous dans ces espaces étroits. Dans ce cas, désactivez ce paramètre." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Lorsque le modèle comporte de petits trous verticaux de quelques couches seulement, il doit normalement y avoir une couche autour de celles-ci dans l'espace étroit. Activez ce paramètre pour ne pas générer de couche si le trou vertical est très petit. Cela améliore le temps d'impression et le temps de découpage, mais laisse techniquement le remplissage exposé à l'air." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1353,8 +1433,8 @@ msgstr "Activer l'étirage" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Aller au-dessus de la surface supérieure une fois supplémentaire, mais sans extruder de matériau. Cela signifie de faire fondre le plastique en haut un peu plus, pour créer une surface lisse." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Allez au-dessus de la surface une fois supplémentaire, mais en extrudant très peu de matériau. Cela signifie de faire fondre le plastique en haut un peu plus, pour créer une surface lisse. La pression dans la chambre de la buse est maintenue élevée afin que les plis de la surface soient remplis de matériau." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1446,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Le changement instantané maximal de vitesse lors de l'étirage." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Pourcentage de chevauchement de la couche extérieure" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuster le degré de chevauchement entre les parois et les (extrémités des) lignes centrales de la couche extérieure, en pourcentage de la largeur des lignes de la couche extérieure et de la paroi intérieure. Un chevauchement léger permet de relier fermement les parois à la couche extérieure. Notez que, si la largeur de la couche extérieure est égale à celle de la ligne de la paroi, un pourcentage supérieur à 50 % peut déjà faire dépasser la couche extérieure de la paroi, car dans ce cas la position de la buse de l'extrudeuse peut déjà atteindre le milieu de la paroi." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Chevauchement de la couche extérieure" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuster le degré de chevauchement entre les parois et les (extrémités des) lignes centrales de la couche extérieure. Un chevauchement léger permet de relier fermement les parois à la couche extérieure. Notez que, si la largeur de la couche extérieure est égale à celle de la ligne de la paroi, une valeur supérieure à la moitié de la largeur de la paroi peut déjà faire dépasser la couche extérieure de la paroi, car dans ce cas la position de la buse de l'extrudeuse peut déjà atteindre le milieu de la paroi." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1611,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Le motif de remplissage est décalé de cette distance sur l'axe Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Randomiser le démarrage du remplissage" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Randomisez la ligne de remplissage qui est imprimée en premier. Cela empêche un segment de devenir plus fort, mais cela se fait au prix d'un déplacement supplémentaire." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1631,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "Ajoutez des parois supplémentaires autour de la zone de remplissage. De telles parois peuvent réduire l'affaissement des lignes de couche extérieure supérieure / inférieure, réduisant le nombre de couches extérieures supérieures / inférieures nécessaires pour obtenir la même qualité, au prix d'un peu de matériau supplémentaire.\nConfigurée correctement, cette fonctionnalité peut être combinée avec « Relier les polygones de remplissage » pour relier tous les remplissages en un seul mouvement d'extrusion sans avoir besoin de déplacements ou de rétractions." +msgstr "" +"Ajoutez des parois supplémentaires autour de la zone de remplissage. De telles parois peuvent réduire l'affaissement des lignes de couche extérieure supérieure / inférieure, réduisant le nombre de couches extérieures supérieures / inférieures nécessaires pour obtenir la même qualité, au prix d'un peu de matériau supplémentaire.\n" +"Configurée correctement, cette fonctionnalité peut être combinée avec « Relier les polygones de remplissage » pour relier tous les remplissages en un seul mouvement d'extrusion sans avoir besoin de déplacements ou de rétractions." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1663,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Le degré de chevauchement entre le remplissage et les parois. Un léger chevauchement permet de lier fermement les parois au remplissage." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Pourcentage de chevauchement de la couche extérieure" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Le montant de chevauchement entre la couche extérieure et les parois en pourcentage de la largeur de ligne de couche extérieure. Un chevauchement faible permet aux parois de se connecter fermement à la couche extérieure. Ce montant est un pourcentage des largeurs moyennes des lignes de la couche extérieure et de la paroi la plus intérieure." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Chevauchement de la couche extérieure" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "Le degré de chevauchement entre la couche extérieure et les parois. Un léger chevauchement permet de lier fermement les parois à la couche externe." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1863,6 +1955,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "La température par défaut utilisée pour l'impression. Il doit s'agir de la température de « base » d'un matériau. Toutes les autres températures d'impression doivent utiliser des décalages basés sur cette valeur" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "Température du volume d'impression" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "La température de l'environnement d'impression. Si cette valeur est 0, la température du volume d'impression ne sera pas ajustée." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1973,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Taux de contraction en pourcentage." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Matériau cristallin" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Ce matériau se casse-t-il proprement lorsqu'il est chauffé (cristallin) ou est-ce le type qui produit de longues chaînes polymères entrelacées (non cristallines) ?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Position anti-suintage rétractée" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Jusqu'où le matériau doit être rétracté avant qu'il cesse de suinter." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Vitesse de rétraction de l'anti-suintage" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "À quelle vitesse le matériau doit-il être rétracté lors d'un changement de filament pour empêcher le suintage." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Préparation de rupture Position rétractée" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Jusqu'où le filament peut être étiré avant qu'il ne se casse, pendant qu'il est chauffé." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Vitesse de rétraction de préparation de rupture" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "La vitesse à laquelle le filament doit être rétracté juste avant de le briser dans une rétraction." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Position rétractée de rupture" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Jusqu'où rétracter le filament afin de le casser proprement." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Vitesse de rétraction de rupture" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "La vitesse à laquelle rétracter le filament afin de le rompre proprement." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Température de rupture" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "La température à laquelle le filament est cassé pour une rupture propre." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1983,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Compensation du débit : la quantité de matériau extrudée est multipliée par cette valeur." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Débit de paroi" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Compensation de débit sur les lignes de la paroi." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Débit de paroi externe" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Compensation de débit sur la ligne de la paroi la plus à l'extérieur." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Débit de paroi(s) interne(s)" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Compensation de débit sur les lignes de la paroi pour toutes les lignes de paroi, à l'exception de la ligne la plus externe." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Débit du dessus/dessous" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Compensation de débit sur les lignes du dessus/dessous." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Débit de la surface du dessus" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Compensation de débit sur les lignes des zones en haut de l'impression." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Débit de remplissage" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Compensation de débit sur les lignes de remplissage." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Débit de la jupe/bordure" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Compensation de débit sur les lignes de jupe ou bordure." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Débit du support" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Compensation de débit sur les lignes de support." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Débit de l'interface de support" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Compensation de débit sur les lignes de plafond ou de bas de support." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Débit du plafond de support" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Compensation de débit sur les lignes du plafond de support." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Débit du bas de support" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Compensation de débit sur les lignes de bas de support." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Débit de la tour primaire" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Compensation de débit sur les lignes de la tour primaire." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2100,8 +2402,8 @@ msgstr "Limiter les rétractations du support" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Omettre la rétraction lors du passage entre supports en ligne droite. L'activation de ce paramètre permet de gagner du temps lors de l'impression, mais peut conduire à un cordage excessif à l'intérieur de la structure de support." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Omettre la rétraction lors du passage entre supports en ligne droite. L'activation de ce paramètre permet de gagner du temps lors de l'impression, mais peut conduire à un stringing excessif à l'intérieur de la structure de support." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2120,8 +2422,8 @@ msgstr "Distance de rétraction de changement de buse" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "La quantité de rétraction : définir à 0 pour aucune rétraction. Cette valeur doit généralement être égale à la longueur de la zone chauffée." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "Degré de rétraction lors de la commutation d'extrudeuses. Une valeur de 0 signifie qu'il n'y aura aucune rétraction. En général, cette valeur doit être équivalente à la longueur de la zone de chauffe." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2153,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "La vitesse à laquelle le filament est poussé vers l'arrière après une rétraction de changement de buse." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Montant de l'amorce supplémentaire lors d'un changement de buse" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Matériel supplémentaire à amorcer après le changement de buse." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2344,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "La vitesse à laquelle la jupe et la bordure sont imprimées. Normalement, cette vitesse est celle de la couche initiale, mais il est parfois nécessaire d’imprimer la jupe ou la bordure à une vitesse différente." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Vitesse Z maximale" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Vitesse du décalage en Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "La vitesse maximale à laquelle le plateau se déplace. Définir cette valeur sur zéro impose à l'impression d'utiliser les valeurs par défaut du firmware pour la vitesse z maximale." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "La vitesse à laquelle le mouvement vertical en Z est effectué pour des décalages en Z. Cette vitesse est généralement inférieure à la vitesse d'impression car le plateau ou le portique de la machine est plus difficile à déplacer." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2780,8 +3092,8 @@ msgstr "Mode de détours" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "Les détours maintiennent la buse dans les zones déjà imprimées lors des déplacements. Cela résulte en des déplacements légèrement plus longs mais réduit le recours aux rétractions. Si les détours sont désactivés, le matériau se rétractera et la buse se déplacera en ligne droite jusqu'au point suivant. Il est également possible d'éviter les détours sur les zones de la couche extérieure supérieure / inférieure et aussi de n'effectuer les détours que dans le remplissage. Notez que l'option « À l'intérieur du remplissage » se comporte exactement comme l'option « Pas dans la couche extérieure » dans les versions précédentes de Cura." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "Les détours maintiennent la buse dans les zones déjà imprimées lors des déplacements. Cela résulte en des déplacements légèrement plus longs mais réduit le recours aux rétractions. Si les détours sont désactivés, le matériau se rétractera et la buse se déplacera en ligne droite jusqu'au point suivant. Il est également possible d'éviter les détours sur les zones de la couche du dessus / dessous ou d'effectuer les détours uniquement dans le remplissage." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2853,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "La distance entre la buse et les pièces déjà imprimées lors du contournement pendant les déplacements." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Démarrer les couches avec la même partie" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Dans chaque couche, démarre l'impression de l'objet à proximité du même point, de manière à ce que nous ne commencions pas une nouvelle couche en imprimant la pièce avec laquelle la couche précédente s'est terminée. Cela renforce les porte-à-faux et les petites pièces, mais augmente le temps d'impression." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2923,6 +3225,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "Une fois que la machine est passée d'une extrudeuse à l'autre, le plateau s'abaisse pour créer un dégagement entre la buse et l'impression. Cela évite que la buse ne ressorte avec du matériau suintant sur l'extérieur d'une impression." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "Décalage en Z après changement de hauteur d'extrudeuse" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "La différence de hauteur lors de la réalisation d'un décalage en Z après changement d'extrudeuse." + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3193,6 +3505,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Entrecroisé" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "Gyroïde" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3254,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Distance entre les lignes de la structure de support de la couche initiale imprimée. Ce paramètre est calculé en fonction de la densité du support." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Direction de ligne de remplissage du support" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Orientation du motif de remplissage pour les supports. Le motif de remplissage du support pivote dans le plan horizontal." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser. Les éléments de la liste sont utilisés de manière séquentielle à mesure de l'avancement des couches. La liste reprend depuis le début lorsque la fin est atteinte. Les éléments de la liste sont séparés par des virgules et la liste entière est encadrée entre crochets. La valeur par défaut est une liste vide, ce qui signifie que l'angle par défaut est utilisé (0 degré)." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3390,8 +3707,8 @@ msgstr "Distance de jointement des supports" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "La distance maximale entre les supports dans les directions X/Y. Lorsque des supports séparés sont plus rapprochés que cette valeur, ils fusionnent." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "La distance maximale entre les supports dans les directions X/Y. Lorsque des modèle séparés sont plus rapprochés que cette valeur, ils fusionnent." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3433,6 +3750,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "La hauteur de remplissage de support d'une densité donnée avant de passer à la moitié de la densité." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "Surface minimale de support" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "Taille minimale de la surface des polygones de support : les polygones dont la surface est inférieure à cette valeur ne seront pas générés." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3658,6 +3985,98 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Zig Zag" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "Surface minimale de l'interface de support" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Taille minimale de la surface des polygones d'interface de support. Les polygones dont la surface est inférieure à cette valeur ne seront pas imprimés" +" comme support normal." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "Surface minimale du plafond de support" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Taille minimale de la surface des plafonds du support. Les polygones dont la surface est inférieure à cette valeur ne seront pas imprimés comme support" +" normal." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "Surface minimale du bas de support" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Taille minimale de la surface des bas du support. Les polygones dont la surface est inférieure à cette valeur ne seront pas imprimés comme support normal." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "Expansion horizontale de l'interface de support" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "Quantité de décalage appliquée aux polygones de l'interface de support." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "Expansion horizontale du plafond de support" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "Quantité de décalage appliqué aux plafonds du support." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "Expansion horizontale du bas de support" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "Quantité de décalage appliqué aux bas du support." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Direction de ligne d'interface du support" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser. Les éléments de la liste sont utilisés de manière séquentielle à mesure de l'avancement des couches. La liste reprend depuis le début lorsque la fin est atteinte. Les éléments de la liste sont séparés par des virgules et la liste entière est encadrée entre crochets. La valeur par défaut est une liste vide, ce qui signifie que les angles par défaut sont utilisés (alternative entre 45 et 135 degrés si les interfaces sont assez épaisses ou 90 degrés)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Direction de la ligne de plafond de support" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser. Les éléments de la liste sont utilisés de manière séquentielle à mesure de l'avancement des couches. La liste reprend depuis le début lorsque la fin est atteinte. Les éléments de la liste sont séparés par des virgules et la liste entière est encadrée entre crochets. La valeur par défaut est une liste vide, ce qui signifie que les angles par défaut sont utilisés (alternative entre 45 et 135 degrés si les interfaces sont assez épaisses ou 90 degrés)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Direction de la ligne de bas de support" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser. Les éléments de la liste sont utilisés de manière séquentielle à mesure de l'avancement des couches. La liste reprend depuis le début lorsque la fin est atteinte. Les éléments de la liste sont séparés par des virgules et la liste entière est encadrée entre crochets. La valeur par défaut est une liste vide, ce qui signifie que les angles par défaut sont utilisés (alternative entre 45 et 135 degrés si les interfaces sont assez épaisses ou 90 degrés)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3699,14 +4118,14 @@ msgid "The diameter of a special tower." msgstr "Le diamètre d’une tour spéciale." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Diamètre minimal" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Diamètre maximal supporté par la tour" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Le diamètre minimal sur les axes X/Y d’une petite zone qui doit être soutenue par une tour de soutien spéciale." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Le diamètre maximal sur les axes X/Y d’une petite zone qui doit être soutenue par une tour de soutien spéciale." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3828,7 +4247,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "La distance horizontale entre la jupe et la première couche de l’impression.\nIl s’agit de la distance minimale séparant la jupe de l’objet. Si la jupe a d’autres lignes, celles-ci s’étendront vers l’extérieur." +msgstr "" +"La distance horizontale entre la jupe et la première couche de l’impression.\n" +"Il s’agit de la distance minimale séparant la jupe de l’objet. Si la jupe a d’autres lignes, celles-ci s’étendront vers l’extérieur." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4200,16 +4621,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Imprimer une tour à côté de l'impression qui sert à amorcer le matériau après chaque changement de buse." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Tour primaire circulaire" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Réaliser la tour primaire en forme circulaire." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4250,16 +4661,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Les coordonnées Y de la position de la tour primaire." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Débit de la tour primaire" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Compensation du débit : la quantité de matériau extrudée est multipliée par cette valeur." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4270,6 +4671,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "Après l'impression de la tour primaire à l'aide d'une buse, nettoyer le matériau qui suinte de l'autre buse sur la tour primaire." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "Bordure de la tour primaire" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "Les tours primaires peuvent avoir besoin de l'adhérence supplémentaire d'une bordure, même si le modèle n'en a pas besoin. Ne peut actuellement pas être utilisé avec le type d'adhérence « Raft » (radeau)." + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4390,6 +4801,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Supprimer les couches vides sous la première couche imprimée si elles sont présentes. Le fait de désactiver ce paramètre peut entraîner l'apparition de premières couches vides si le paramètre Tolérance à la découpe est défini sur Exclusif ou Milieu." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Résolution maximum" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Taille minimum d'un segment de ligne après découpage. Si vous augmentez cette valeur, la maille aura une résolution plus faible. Cela peut permettre à l'imprimante de suivre la vitesse à laquelle elle doit traiter le G-Code et augmentera la vitesse de découpe en enlevant des détails de la maille que l'imprimante ne peut pas traiter de toute manière." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Résolution de déplacement maximum" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Taille minimale d'un segment de ligne de déplacement après la découpe. Si vous augmentez cette valeur, les mouvements de déplacement auront des coins moins lisses. Cela peut permettre à l'imprimante de suivre la vitesse à laquelle elle doit traiter le G-Code, mais cela peut réduire la précision de l'évitement du modèle." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Écart maximum" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "L'écart maximum autorisé lors de la réduction de la résolution pour le paramètre Résolution maximum. Si vous augmentez cette valeur, l'impression sera moins précise, mais le G-Code sera plus petit. L'écart maximum est une limite pour la résolution maximum. Donc si les deux entrent en conflit, l'Écart maximum restera valable." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4552,8 +4993,8 @@ msgstr "Lisser les contours spiralisés" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Lisser les contours spiralisés pour réduire la visibilité de la jointure en Z (la jointure en Z doit être à peine visible sur l'impression mais sera toujours visible dans la vue en couches). Veuillez remarquer que le lissage aura tendance à estomper les détails fins de la surface." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Lisser les contours spiralisés pour réduire la visibilité de la jointure en Z (la jointure en Z doit être à peine visible sur l'impression mais sera toujours visible dans la vue en couches). Veuillez remarquer que le lissage aura tendance à estomper les détails très fins de la surface." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4765,26 +5206,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Les polygones en couches tranchées dont la circonférence est inférieure à cette valeur seront filtrés. Des valeurs élevées permettent d'obtenir un maillage de meilleure résolution mais augmentent le temps de découpe. Cette option est principalement destinée aux imprimantes SLA haute résolution et aux modèles 3D de très petite taille avec beaucoup de détails." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Résolution maximum" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Taille minimum d'un segment de ligne après découpage. Si vous augmentez cette valeur, la maille aura une résolution plus faible. Cela peut permettre à l'imprimante de suivre la vitesse à laquelle elle doit traiter le G-Code et augmentera la vitesse de découpe en enlevant des détails de la maille que l'imprimante ne peut pas traiter de toute manière." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Résolution de déplacement maximum" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Taille minimale d'un segment de ligne de déplacement après la découpe. Si vous augmentez cette valeur, les mouvements de déplacement auront des coins moins lisses. Cela peut permettre à l'imprimante de suivre la vitesse à laquelle elle doit traiter le G-Code, mais cela peut réduire la précision de l'évitement du modèle." - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4925,16 +5346,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Vitesse de déplacement pendant une roue libre, par rapport à la vitesse de déplacement pendant l'extrusion. Une valeur légèrement inférieure à 100 % est conseillée car, lors du mouvement en roue libre, la pression dans le tube bowden chute." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Alterner la rotation dans les couches extérieures" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Alterne le sens d'impression des couches du dessus/dessous. Elles sont généralement imprimées uniquement en diagonale. Ce paramètre ajoute les sens X uniquement et Y uniquement." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5042,8 +5453,8 @@ msgstr "Activer les supports coniques" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Fonctionnalité expérimentale : rendre les aires de support plus petites en bas qu'au niveau du porte-à-faux à supporter." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Rendre les aires de support plus petites en bas qu'au niveau du porte-à-faux à supporter." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5107,23 +5518,24 @@ msgstr "Distance moyenne entre les points ajoutés aléatoirement sur chaque seg #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Décalage d'extrusion max. pour compensation du débit" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Distance de compensation maximum en mm." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "La distance maximale en mm pour déplacer le filament afin de compenser les variations du débit." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Facteur de compensation du débit" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Facteur de multiplication pour le débit -> translation de la distance." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "La distance de déplacement du filament pour compenser les variations du débit, en pourcentage de la distance de déplacement du filament en une seconde" +" d'extrusion." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5275,7 +5687,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Distance d’un déplacement ascendant qui est extrudé à mi-vitesse.\nCela peut permettre une meilleure adhérence aux couches précédentes sans surchauffer le matériau dans ces couches. Uniquement applicable à l'impression filaire." +msgstr "" +"Distance d’un déplacement ascendant qui est extrudé à mi-vitesse.\n" +"Cela peut permettre une meilleure adhérence aux couches précédentes sans surchauffer le matériau dans ces couches. Uniquement applicable à l'impression filaire." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5384,7 +5798,7 @@ msgstr "Distance entre la buse et les lignes descendantes horizontalement. Un es #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "Utiliser des couches adaptatives" #: fdmprinter.def.json @@ -5394,7 +5808,7 @@ msgstr "Cette option calcule la hauteur des couches en fonction de la forme du m #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "Variation maximale des couches adaptatives" #: fdmprinter.def.json @@ -5404,7 +5818,7 @@ msgstr "Hauteur maximale autorisée par rapport à la couche de base." #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "Taille des étapes de variation des couches adaptatives" #: fdmprinter.def.json @@ -5414,13 +5828,14 @@ msgstr "Différence de hauteur de la couche suivante par rapport à la précéde #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "Limite des couches adaptatives" +msgid "Adaptive Layers Topography Size" +msgstr "Taille de la topographie des couches adaptatives" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Limite indiquant d'utiliser ou non une couche plus petite. Ce nombre est comparé à la tangente de la pente la plus raide d'une couche." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Distance horizontale cible entre deux couches adjacentes. La réduction de ce paramètre entraîne l'utilisation de couches plus fines pour rapprocher les" +" bords des couches." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5429,8 +5844,9 @@ msgstr "Angle de parois en porte-à-faux" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Les parois ayant un angle supérieur à cette valeur seront imprimées en utilisant les paramètres de parois en porte-à-faux. Si la valeur est 90, aucune paroi ne sera considérée comme étant en porte-à-faux." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Les parois ayant un angle supérieur à cette valeur seront imprimées en utilisant les paramètres de parois en porte-à-faux. Si la valeur est 90, aucune" +" paroi ne sera considérée comme étant en porte-à-faux. La saillie soutenue par le support ne sera pas non plus considérée comme étant en porte-à-faux." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5632,6 +6048,198 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "Vitesse du ventilateur en pourcentage à utiliser pour l'impression de la troisième couche extérieure du pont." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "Essuyer la buse entre les couches" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "Inclure ou non le G-Code d'essuyage de la buse entre les couches. L'activation de ce paramètre peut influencer le comportement de la rétraction lors du changement de couche. Veuillez utiliser les paramètres de rétraction d'essuyage pour contrôler la rétraction aux couches où le script d'essuyage sera exécuté." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "Volume de matériau entre les essuyages" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "Le volume maximum de matériau qui peut être extrudé avant qu'un autre essuyage de buse ne soit lancé." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "Activation de la rétraction d'essuyage" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "Rétracte le filament quand la buse se déplace vers une zone non imprimée." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "Distance de rétraction d'essuyage" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "La distance de rétraction du filament afin qu'il ne suinte pas pendant la séquence d'essuyage." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "Degré supplémentaire de rétraction d'essuyage primaire" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "Du matériau peut suinter pendant un déplacement d'essuyage, ce qui peut être compensé ici." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "Vitesse de rétraction d'essuyage" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "La vitesse à laquelle le filament est rétracté et préparé pendant un déplacement de rétraction d'essuyage." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "Vitesse de rétraction d'essuyage" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "La vitesse à laquelle le filament est rétracté pendant un déplacement de rétraction d'essuyage." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Vitesse de rétraction primaire" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "La vitesse à laquelle le filament est préparé pendant un déplacement de rétraction d'essuyage." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "Pause d'essuyage" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "Pause après l'irrétraction." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "Décalage en Z d'essuyage lors d’une rétraction" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "À chaque rétraction, le plateau est abaissé pour créer un espace entre la buse et l'impression. Cela évite que la buse ne touche l'impression pendant les déplacements, réduisant ainsi le risque de heurter l'impression à partir du plateau." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "Hauteur du décalage en Z d'essuyage" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "La différence de hauteur lors de la réalisation d'un décalage en Z." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "Vitesse du décalage d'essuyage" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "Vitesse de déplacement de l'axe Z pendant le décalage." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "Position X de la brosse d'essuyage" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "Emplacement X où le script d'essuyage démarrera." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "Nombre de répétitions d'essuyage" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "Le nombre de déplacements de la buse à travers la brosse." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "Distance de déplacement d'essuyage" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "La distance de déplacement de la tête d'avant en arrière à travers la brosse." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Taille maximale des petits trous" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Les trous et les contours des pièces dont le diamètre est inférieur à celui-ci seront imprimés en utilisant l'option Vitesse de petite structure." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Longueur max de petite structure" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Les contours des structures dont le diamètre est inférieur à cette longueur seront imprimés en utilisant l'option Vitesse de petite structure." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Vitesse de petite structure" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Les petites structures seront imprimées à ce pourcentage de la vitesse d'impression normale. Une impression plus lente peut aider à l'adhésion et à la" +" précision." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Vitesse de la couche initiale de petite structure" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Les petites structures sur la première couche seront imprimées à ce pourcentage de la vitesse d'impression normale. Une impression plus lente peut aider" +" à l'adhésion et à la précision." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5692,6 +6300,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matrice de transformation à appliquer au modèle lors de son chargement depuis le fichier." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Taille minimale de la surface des polygones d'interface de support : les polygones dont la surface est inférieure à cette valeur ne seront pas générés." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Taille minimale de la surface des plafonds du support : les polygones dont la surface est inférieure à cette valeur ne seront pas générés." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Taille minimale de la surface des bas du support : les polygones dont la surface est inférieure à cette valeur ne seront pas générés." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Alterner la rotation dans les couches extérieures" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Alterne le sens d'impression des couches du dessus/dessous. Elles sont généralement imprimées uniquement en diagonale. Ce paramètre ajoute les sens X uniquement et Y uniquement." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Décalage d'extrusion max. pour compensation du débit" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Distance de compensation maximum en mm." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Facteur de compensation du débit" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Facteur de multiplication pour le débit -> translation de la distance." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Limite des couches adaptatives" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Limite indiquant d'utiliser ou non une couche plus petite. Ce nombre est comparé à la tangente de la pente la plus raide d'une couche." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Les parois ayant un angle supérieur à cette valeur seront imprimées en utilisant les paramètres de parois en porte-à-faux. Si la valeur est 90, aucune paroi ne sera considérée comme étant en porte-à-faux." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Les petites structures seront imprimées à ce pourcentage de la vitesse d'impression normale. Une impression plus lente peut aider à l'adhésion et à la précision." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Vitesse de la première couche" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Les petites structures sur la première couche seront imprimées à ce pourcentage de la vitesse d'impression normale. Une impression plus lente peut aider à l'adhésion et à la précision." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Aller au-dessus de la surface supérieure une fois supplémentaire, mais sans extruder de matériau. Cela signifie de faire fondre le plastique en haut un peu plus, pour créer une surface lisse." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Démarrer les couches avec la même partie" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Dans chaque couche, démarre l'impression de l'objet à proximité du même point, de manière à ce que nous ne commencions pas une nouvelle couche en imprimant la pièce avec laquelle la couche précédente s'est terminée. Cela renforce les porte-à-faux et les petites pièces, mais augmente le temps d'impression." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Orientation du motif de remplissage pour les supports. Le motif de remplissage du support pivote dans le plan horizontal." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "L'écart maximum autorisé lors de la réduction de la résolution pour le paramètre Résolution maximum. Si vous augmentez cette valeur, l'impression sera moins précise, mais le G-Code sera plus petit." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Parfum G-Code" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Vérifie si les angles du contour du modèle influencent l'emplacement de la jointure. « Aucune » signifie que les angles n'ont aucune influence sur l'emplacement de la jointure. « Masquer jointure » génère généralement le positionnement de la jointure sur un angle intérieur. « Exposer jointure » génère généralement le positionnement de la jointure sur un angle extérieur. « Masquer ou exposer jointure » génère généralement le positionnement de la jointure sur un angle intérieur ou extérieur." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ignorer les petits trous en Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Quand le modèle présente de petits trous verticaux, environ 5 % de temps de calcul supplémentaire peut être alloué à la génération de couches du dessus et du dessous dans ces espaces étroits. Dans ce cas, désactivez ce paramètre." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "La température utilisée pour le volume d'impression. Si cette valeur est 0, la température du volume d'impression ne sera pas ajustée." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Omettre la rétraction lors du passage entre supports en ligne droite. L'activation de ce paramètre permet de gagner du temps lors de l'impression, mais peut conduire à un cordage excessif à l'intérieur de la structure de support." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Vitesse Z maximale" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "La vitesse maximale à laquelle le plateau se déplace. Définir cette valeur sur zéro impose à l'impression d'utiliser les valeurs par défaut du firmware pour la vitesse z maximale." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "La distance maximale entre les supports dans les directions X/Y. Lorsque des supports séparés sont plus rapprochés que cette valeur, ils fusionnent." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Diamètre minimal" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Le diamètre minimal sur les axes X/Y d’une petite zone qui doit être soutenue par une tour de soutien spéciale." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Tour primaire circulaire" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Réaliser la tour primaire en forme circulaire." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Compensation du débit : la quantité de matériau extrudée est multipliée par cette valeur." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Lisser les contours spiralisés pour réduire la visibilité de la jointure en Z (la jointure en Z doit être à peine visible sur l'impression mais sera toujours visible dans la vue en couches). Veuillez remarquer que le lissage aura tendance à estomper les détails fins de la surface." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Fonctionnalité expérimentale : rendre les aires de support plus petites en bas qu'au niveau du porte-à-faux à supporter." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "Nombre d'extrudeuses activées" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Diamètre extérieur de la buse" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Longueur de la buse" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Angle de la buse" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Longueur de la zone chauffée" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Vitesse de chauffage" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Vitesse de refroidissement" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "Parfum G-Code" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "Zones interdites" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Polygone de la tête de machine" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Tête de la machine et polygone du ventilateur" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Hauteur du portique" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Décalage avec extrudeuse" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "Utiliser des couches adaptatives" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "Variation maximale des couches adaptatives" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "Taille des étapes de variation des couches adaptatives" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "Limite des couches adaptatives" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Le montant de chevauchement entre la couche extérieure et les parois en pourcentage de la largeur de ligne de couche extérieure. Un chevauchement faible permet aux parois de se connecter fermement à la couche extérieure. Ce montant est un pourcentage des largeurs moyennes des lignes de la couche extérieure et de la paroi la plus intérieure." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "Le degré de chevauchement entre la couche extérieure et les parois. Un léger chevauchement permet de lier fermement les parois à la couche externe." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "La quantité de rétraction : définir à 0 pour aucune rétraction. Cette valeur doit généralement être égale à la longueur de la zone chauffée." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "Les détours maintiennent la buse dans les zones déjà imprimées lors des déplacements. Cela résulte en des déplacements légèrement plus longs mais réduit le recours aux rétractions. Si les détours sont désactivés, le matériau se rétractera et la buse se déplacera en ligne droite jusqu'au point suivant. Il est également possible d'éviter les détours sur les zones de la couche extérieure supérieure / inférieure et aussi de n'effectuer les détours que dans le remplissage. Notez que l'option « À l'intérieur du remplissage » se comporte exactement comme l'option « Pas dans la couche extérieure » dans les versions précédentes de Cura." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "Relier les voies de couche extérieure supérieures / inférieures lorsqu'elles sont côte à côte. Pour le motif concentrique, ce paramètre réduit considérablement le temps de parcours, mais comme les liens peuvent se trouver à mi-chemin sur le remplissage, cette fonctionnalité peut réduire la qualité de la surface supérieure." diff --git a/resources/i18n/it_IT/cura.po b/resources/i18n/it_IT/cura.po index d285cbfdc3..b215eae599 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-09-28 15:01+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Italian\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0100\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Italian , Italian \n" "Language: it_IT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.1.1\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Impostazioni macchina" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "File G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter non supporta la modalità non di testo." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Preparare il codice G prima dell’esportazione." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Assistente modello 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,68 +64,56 @@ msgid "" "

    {model_names}

    \n" "

    Find out how to ensure the best possible print quality and reliability.

    \n" "

    View print quality guide

    " -msgstr "

    La stampa di uno o più modelli 3D può non avvenire in modo ottimale a causa della dimensioni modello e della configurazione materiale:

    \n

    {model_names}

    \n

    Scopri come garantire la migliore qualità ed affidabilità di stampa.

    \n

    Visualizza la guida alla qualità di stampa

    " - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Visualizza registro modifiche" +msgstr "" +"

    La stampa di uno o più modelli 3D può non avvenire in modo ottimale a causa della dimensioni modello e della configurazione materiale:

    \n" +"

    {model_names}

    \n" +"

    Scopri come garantire la migliore qualità ed affidabilità di stampa.

    \n" +"

    Visualizza la guida alla qualità di stampa

    " #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Aggiornamento firmware" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Impostazioni attive profilo appiattito" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "File AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Il profilo è stato appiattito e attivato." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Stampa USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Stampa tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Stampa tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Connesso tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Stampa tramite USB in corso, la chiusura di Cura interrompe la stampa. Confermare?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "File X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Stampa ancora in corso. Cura non può avviare un'altra stampa tramite USB finché la precedente non è stata completata." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Scrive X3g sui file" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "File X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Stampa in corso" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -139,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "GCodeGzWriter non supporta la modalità di testo." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Pacchetto formato Ultimaker" @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Salva su unità rimovibile {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Non ci sono formati di file disponibili per la scrittura!" @@ -197,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Impossibile salvare su unità rimovibile {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Errore" @@ -228,8 +217,9 @@ msgstr "Rimuovi il dispositivo rimovibile {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Avvertenza" @@ -256,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unità rimovibile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Stampa sulla rete" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Stampa sulla rete" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Collegato alla rete." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Collegato alla rete. Si prega di approvare la richiesta di accesso sulla stampante." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Collegato alla rete. Nessun accesso per controllare la stampante." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Richiesto accesso alla stampante. Approvare la richiesta sulla stampante" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Stato di autenticazione" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "Stato di autenticazione" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Riprova" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Invia nuovamente la richiesta di accesso" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Accesso alla stampante accettato" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "Nessun accesso per stampare con questa stampante. Impossibile inviare il processo di stampa." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Richiesta di accesso" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Invia la richiesta di accesso alla stampante" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "Impossibile avviare un nuovo processo di stampa." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "È presente un problema di configurazione della stampante che rende impossibile l’avvio della stampa. Risolvere il problema prima di continuare." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Mancata corrispondenza della configurazione" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Sei sicuro di voler stampare con la configurazione selezionata?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Le configurazioni o la calibrazione della stampante e di Cura non corrispondono. Per ottenere i migliori risultati, sezionare sempre per i PrintCore e i materiali inseriti nella stampante utilizzata." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "Invio nuovi processi (temporaneamente) bloccato, invio in corso precedente processo di stampa." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Invio dati alla stampante in corso" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Invio dati" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Annulla" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "Nessun PrintCore caricato nello slot {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "Nessun materiale caricato nello slot {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "PrintCore diverso (Cura: {cura_printcore_name}, Stampante: {remote_printcore_name}) selezionata per estrusore {extruder_id}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Materiale diverso (Cura: {0}, Stampante: {1}) selezionato per l’estrusore {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Sincronizzazione con la stampante" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Desideri utilizzare la configurazione corrente della tua stampante in Cura?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "I PrintCore e/o i materiali sulla stampante differiscono da quelli contenuti nel tuo attuale progetto. Per ottenere i risultati migliori, sezionare sempre per i PrintCore e i materiali inseriti nella stampante utilizzata." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Collegato alla rete" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "Processo di stampa inviato con successo alla stampante." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Dati inviati" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Visualizzazione in Controlla" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "La stampante '{printer_name}' ha finito di stampare '{job_name}'." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "Il processo di stampa '{job_name}' è terminato." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Stampa finita" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Collega tramite rete" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Stampa sulla rete" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Stampa sulla rete" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Collegato alla rete" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Attendere che sia stato inviato il processo corrente." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Errore di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Nuove stampanti in cloud rilevate" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Sono state trovate nuove stampanti collegate al tuo account. Puoi vederle nell'elenco delle stampanti rilevate." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Non mostrare nuovamente questo messaggio" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Tentativo di connessione a {0} in corso, che non è l'host di un gruppo. È possibile visitare la pagina web per configurarla come host del gruppo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Non host del gruppo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Configurare il gruppo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Invia e controlla i processi di stampa ovunque con l’account Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Connettiti a Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Per iniziare" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Invio di un processo di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Caricamento del processo di stampa sulla stampante." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Processo di stampa inviato con successo alla stampante." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Dati inviati" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Si sta tentando di connettersi a una stampante che non esegue Ultimaker Connect. Aggiornare la stampante con il firmware più recente." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Aggiornare la stampante" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura ha rilevato dei profili di materiale non ancora installati sulla stampante host del gruppo {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Invio dei materiali alla stampante" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Impossibile caricare i dati sulla stampante." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Errore di rete" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "domani" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "oggi" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Stampa tramite Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Stampa tramite Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Collegato tramite Cloud" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Controlla" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Non è possibile accedere alle informazioni di aggiornamento." @@ -503,24 +425,30 @@ msgctxt "@action:button" msgid "How to update" msgstr "Modalità di aggiornamento" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Visualizzazione strato" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura non visualizza in modo accurato gli strati se la funzione Wire Printing è abilitata" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Vista simulazione" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "Post-elaborazione" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" -msgstr "Modifica G-code" +msgstr "Modifica codice G" #: /home/ruben/Projects/Cura/plugins/SupportEraser/__init__.py:12 msgctxt "@label" @@ -532,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "Crea un volume in cui i supporti non vengono stampati." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura raccoglie statistiche di utilizzo in forma anonima." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "Acquisizione dati" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "Per saperne di più" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Vedere ulteriori informazioni sui dati inviati da Cura." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "Consenti" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Consente a Cura di inviare in forma anonima statistiche d’uso, riguardanti alcune delle preferenze e impostazioni, la versione cura e una serie di modelli in sezionamento, per aiutare a dare priorità a miglioramenti futuri in Cura." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -592,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Immagine GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Impossibile eseguire il sezionamento con il materiale corrente in quanto incompatibile con la macchina o la configurazione selezionata." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "Sezionamento impossibile" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Impossibile eseguire il sezionamento con le impostazioni attuali. Le seguenti impostazioni presentano errori: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Impossibile eseguire il sezionamento a causa di alcune impostazioni per modello. Le seguenti impostazioni presentano errori su uno o più modelli: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Impossibile eseguire il sezionamento perché la torre di innesco o la posizione di innesco non sono valide." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "Impossibile effettuare il sezionamento in quanto vi sono oggetti associati a Extruder %s disabilitato." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Nulla da sezionare in quanto nessuno dei modelli corrisponde al volume di stampa. Ridimensionare o ruotare i modelli secondo necessità." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "Nulla da sezionare in quanto nessuno dei modelli corrisponde al volume di stampa o è assegnato a un estrusore disabilitato. Ridimensionare o ruotare i modelli secondo necessità o abilitare un estrusore." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "Elaborazione dei livelli" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Informazioni" @@ -656,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Configura impostazioni per modello" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Consigliata" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizzata" @@ -674,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "File 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Ugello" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Il file di progetto {0} contiene un tipo di macchina sconosciuto {1}. Impossibile importare la macchina. Verranno invece importati i modelli." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Apri file progetto" @@ -701,22 +627,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "File G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Parsing codice G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Dettagli codice G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Verifica che il codice G sia idoneo alla tua stampante e alla sua configurazione prima di trasmettere il file. La rappresentazione del codice G potrebbe non essere accurata." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "Gestione backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "Backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "Si è verificato un errore nell’elenco dei backup." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "Si è verificato un errore cercando di ripristinare il backup." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "Backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "Caricamento backup in corso..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "Si è verificato un errore durante il caricamento del backup." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "Caricamento backup completato." + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -738,330 +707,453 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "Errore scrittura file 3MF." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "Anteprima" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Seleziona aggiornamenti" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Controllo" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Livella piano di stampa" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Parete esterna" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Pareti interne" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Rivestimento esterno" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Riempimento" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Riempimento del supporto" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interfaccia supporto" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Supporto" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Skirt" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Spostamenti" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrazioni" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Altro" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "File pre-sezionato {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "Login non riuscito" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Non supportato" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Il file esiste già" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Il file {0} esiste già. Sei sicuro di volerlo sovrascrivere?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Non sottoposto a override" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Il materiale selezionato è incompatibile con la macchina o la configurazione selezionata." +msgid "Invalid file URL:" +msgstr "File URL non valido:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Materiale incompatibile" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Le impostazioni sono state modificate in base all’attuale disponibilità di estrusori:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "Le impostazioni sono state modificate in base all’attuale disponibilità di estrusori: [%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Impostazioni aggiornate" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "Estrusore disabilitato" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Sconosciuto" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Impossibile esportare il profilo su {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Impossibile esportare il profilo su {0}: Rilevata anomalia durante scrittura plugin." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profilo esportato su {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Esportazione riuscita" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "Impossibile importare il profilo da {0}: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "Impossibile importare il profilo da {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "Impossibile importare il profilo da {0} prima di aggiungere una stampante." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Nessun profilo personalizzato da importare nel file {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Impossibile importare il profilo da {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Questo profilo {0} contiene dati errati, impossibile importarlo." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "La macchina definita nel profilo {0} ({1}) non corrisponde alla macchina corrente ({2}), impossibile importarla." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Impossibile importare il profilo da {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profilo importato correttamente {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Il file {0} non contiene nessun profilo valido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Il profilo {0} ha un tipo di file sconosciuto o corrotto." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Profilo personalizzato" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Il profilo è privo del tipo di qualità." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Impossibile trovare un tipo qualità {0} per la configurazione corrente." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Parete esterna" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Pareti interne" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Rivestimento esterno" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Riempimento" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Riempimento del supporto" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interfaccia supporto" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Supporto" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Skirt" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "Torre di innesco" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Spostamenti" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retrazioni" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Altro" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "File pre-sezionato {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "Avanti" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "Gruppo #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "Stampanti abilitate per la rete" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Chiudi" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "Stampanti locali" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Aggiungi" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Annulla" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visivo" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Il profilo visivo è destinato alla stampa di prototipi e modelli visivi, con l'intento di ottenere una qualità visiva e della superficie elevata." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Il profilo di progettazione è destinato alla stampa di prototipi funzionali e di componenti d'uso finale, allo scopo di ottenere maggiore precisione e" +" tolleranze strette." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Bozza" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Il profilo bozza è destinato alla stampa dei prototipi iniziali e alla convalida dei concept, con l'intento di ridurre in modo significativo il tempo di" +" stampa." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Non sottoposto a override" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Profili personalizzati" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Tutti i tipi supportati ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Tutti i file (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Materiale personalizzato" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Personalizzata" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Le stampanti riportate di seguito non possono essere collegate perché fanno parte di un gruppo" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Stampanti disponibili in rete" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "L’altezza del volume di stampa è stata ridotta a causa del valore dell’impostazione \"Sequenza di stampa” per impedire la collisione del gantry con i modelli stampati." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume di stampa" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "Impossibile creare un archivio dalla directory dei dati utente: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "Backup" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "Tentativo di ripristinare un backup di Cura senza dati o metadati appropriati." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "Tentativo di ripristinare un backup di Cura non corrispondente alla versione corrente." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "Tentativo di ripristinare un backup di Cura di versione superiore rispetto a quella corrente." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "Impossibile leggere la risposta." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Impossibile raggiungere il server account Ultimaker." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Fornire i permessi necessari al momento dell'autorizzazione di questa applicazione." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Si è verificato qualcosa di inatteso durante il tentativo di accesso, riprovare." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Moltiplicazione e collocazione degli oggetti" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "Sistemazione oggetto" +msgid "Placing Objects" +msgstr "Sistemazione oggetti" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Impossibile individuare una posizione nel volume di stampa per tutti gli oggetti" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "Sistemazione oggetto" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Ricerca nuova posizione per gli oggetti" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "Ricerca posizione" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Impossibile individuare posizione" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Impossibile avviare Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1069,356 +1161,328 @@ msgid "" "

    Backups can be found in the configuration folder.

    \n" "

    Please send us this Crash Report to fix the problem.

    \n" " " -msgstr "

    Oops, Ultimaker Cura ha rilevato qualcosa che non sembra corretto.

    \n

    Abbiamo riscontrato un errore irrecuperabile durante l’avvio. È stato probabilmente causato da alcuni file di configurazione errati. Suggeriamo di effettuare il backup e ripristinare la configurazione.

    \n

    I backup sono contenuti nella cartella configurazione.

    \n

    Si prega di inviare questo Rapporto su crash per correggere il problema.

    \n " +msgstr "" +"

    Oops, Ultimaker Cura ha rilevato qualcosa che non sembra corretto.

    \n" +"

    Abbiamo riscontrato un errore irrecuperabile durante l’avvio. È stato probabilmente causato da alcuni file di configurazione errati. Suggeriamo di effettuare il backup e ripristinare la configurazione.

    \n" +"

    I backup sono contenuti nella cartella configurazione.

    \n" +"

    Si prega di inviare questo Rapporto su crash per correggere il problema.

    \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "Inviare il rapporto su crash a Ultimaker" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "Mostra il rapporto su crash dettagliato" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "Mostra cartella di configurazione" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "Backup e reset configurazione" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Rapporto su crash" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" "

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" " " -msgstr "

    Si è verificato un errore fatale in Cura. Si prega di inviare questo Rapporto su crash per correggere il problema

    \n

    Usare il pulsante “Invia report\" per inviare automaticamente una segnalazione errore ai nostri server

    \n " +msgstr "" +"

    Si è verificato un errore fatale in Cura. Si prega di inviare questo Rapporto su crash per correggere il problema

    \n" +"

    Usare il pulsante “Invia report\" per inviare automaticamente una segnalazione errore ai nostri server

    \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "Informazioni di sistema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Sconosciuto" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Versione Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "Piattaforma" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Versione Qt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "Versione PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "Non ancora inizializzato
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • Versione OpenGL: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • Fornitore OpenGL: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • Renderer OpenGL: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "Analisi errori" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "Registri" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "Descrizione utente" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "Descrizione utente (Nota: gli sviluppatori potrebbero non parlare la lingua dell'utente. Se possibile, usare l'inglese)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Invia report" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Caricamento macchine in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Impostazione delle preferenze..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Impostazione scena in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Caricamento interfaccia in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "È possibile caricare un solo file codice G per volta. Importazione saltata {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Impossibile aprire altri file durante il caricamento del codice G. Importazione saltata {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Il modello selezionato è troppo piccolo per il caricamento." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Impostazioni macchina" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Stampante" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Impostazioni della stampante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (Larghezza)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profondità)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Altezza)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Forma del piano di stampa" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "Origine al centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "Piano riscaldato" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "Volume di stampa riscaldato" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "Versione codice G" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Impostazioni della testina di stampa" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distanza tra il lato sinistro della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distanza tra il lato anteriore della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distanza tra il lato destro della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distanza tra il lato posteriore della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Altezza gantry" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "La differenza di altezza tra la punta dell’ugello e il sistema gantry (assi X e Y). Utilizzata per evitare collisioni tra le stampe precedenti e il gantry durante la stampa \"Uno alla volta\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Numero di estrusori" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "Codice G avvio" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "Comandi codice G da eseguire all’avvio." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "Codice G fine" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "Comandi codice G da eseguire alla fine." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Stampante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "Impostazioni ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Dimensione ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Diametro del materiale compatibile" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Diametro nominale del filamento supportato dalla stampante. Il diametro esatto verrà sovrapposto dal materiale e/o dal profilo." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "Scostamento X ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Scostamento Y ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Numero ventola di raffreddamento" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "Codice G avvio estrusore" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Codice G fine estrusore" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "Installazione" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Installa" @@ -1428,69 +1492,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Impossibile connettersi al database pacchetto Cura. Verificare la connessione." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "valori" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plugin" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiali" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "I tuoi valori" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "Versione" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "Ultimo aggiornamento" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "Autore" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "Download" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Sconosciuto" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "Log in deve essere installato o aggiornato" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "Acquista bobine di materiale" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "Aggiorna" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "Aggiornamento in corso" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "Aggiornamento eseguito" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "Casella degli strumenti" +msgid "Marketplace" +msgstr "Mercato" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1517,52 +1594,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "Profili" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "Conferma" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "Prima della valutazione è necessario effettuare l’accesso" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "Prima della valutazione è necessario installare il pacchetto" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "Riavviare Cura per rendere effettive le modifiche apportate ai pacchetti." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Esci da Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Contributi della comunità" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Plugin della comunità" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Materiali generici" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "Installa" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "L'installazione sarà eseguita al riavvio" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "Log in deve essere aggiornato" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "Downgrade" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "Disinstalla" @@ -1578,14 +1670,17 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "Questo plugin contiene una licenza.\nÈ necessario accettare questa licenza per poter installare il plugin.\nAccetti i termini sotto riportati?" +msgstr "" +"Questo plugin contiene una licenza.\n" +"È necessario accettare questa licenza per poter installare il plugin.\n" +"Accetti i termini sotto riportati?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Accetto" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Non accetto" @@ -1595,22 +1690,62 @@ msgctxt "@label" msgid "Featured" msgstr "In primo piano" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibilità" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Macchina" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Piano di stampa" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Supporto" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Qualità" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "Scheda dati tecnici" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "Scheda dati di sicurezza" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "Linee guida di stampa" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "Sito web" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "Recupero dei pacchetti..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "Sito web" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-mail" @@ -1620,23 +1755,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "Alcune parti potrebbero risultare problematiche in questa stampa. Fare click per visualizzare i suggerimenti per la regolazione." -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Registro modifiche" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Chiudi" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1712,423 +1830,505 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Aggiornamento firmware non riuscito per firmware mancante." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "Contratto di licenza" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Gestione stampanti" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Collegamento esistente" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Vetro" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "Stampante/gruppo già aggiunto a Cura. Selezionare un’altra stampante o un altro gruppo." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Aggiornare il firmware della stampante per gestire la coda da remoto." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "La webcam non è disponibile perché si sta controllando una stampante cloud." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "Caricamento in corso..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "Non disponibile" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "Non raggiungibile" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "Ferma" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "Senza titolo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "Anonimo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "Richiede modifiche di configurazione" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "Dettagli" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "Stampante non disponibile" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "Primo disponibile" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "Coda di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "Gestisci nel browser" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Non sono presenti processi di stampa nella coda. Eseguire lo slicing e inviare un processo per aggiungerne uno." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "Processi di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "Tempo di stampa totale" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "In attesa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Collega alla stampante in rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se si collega Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante.\n\nSelezionare la stampante dall’elenco seguente:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se non si esegue il collegamento di Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Aggiungi" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Selezionare la stampante dall’elenco seguente:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Modifica" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Rimuovi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Aggiorna" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Se la stampante non è nell’elenco, leggere la guida alla risoluzione dei problemi per la stampa in rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Versione firmware" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Indirizzo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Questa stampante non è predisposta per comandare un gruppo di stampanti." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Questa stampante comanda un gruppo di %1 stampanti." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "La stampante a questo indirizzo non ha ancora risposto." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Collega" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Indirizzo IP non valido" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "Inserire un indirizzo IP valido." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Indirizzo stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Inserire l’indirizzo IP o l’hostname della stampante sulla rete." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "Inserire l'indirizzo IP della stampante in rete." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Stampa" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Stampa sulla rete" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "Selezione stampante" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "Non disponibile" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "Non raggiungibile" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "Disponibile" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "Interrotto" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Terminato" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "Preparazione in corso" +msgid "Preparing..." +msgstr "Preparazione in corso..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "Messa in pausa" +msgid "Aborting..." +msgstr "Interr. in corso..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "Ripresa" +msgid "Pausing..." +msgstr "Messa in pausa..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "In pausa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "Ripresa in corso..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Richiede un'azione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "Finisce %1 a %2" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Stampa sulla rete" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "In attesa: stampante non disponibile" +msgid "Printer selection" +msgstr "Selezione stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "In attesa della prima disponibile" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "In attesa: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "Modifica configurazione" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "La stampante assegnata, %1, richiede le seguenti modifiche di configurazione:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "La stampante %1 è assegnata, ma il processo contiene una configurazione materiale sconosciuta." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "Cambia materiale %1 da %2 a %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "Caricare %3 come materiale %1 (Operazione non annullabile)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "Cambia print core %1 da %2 a %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "Cambia piano di stampa a %1 (Operazione non annullabile)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "Override" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "L’avvio di un processo di stampa con una configurazione non compatibile potrebbe danneggiare la stampante 3D. Sei sicuro di voler annullare la configurazione e stampare %1?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "Annullare la configurazione e avviare la stampa" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "Vetro" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "Alluminio" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "Gestione coda di stampa" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "Coda di stampa" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "Stampa in corso" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "Gestione stampanti" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "Sposta in alto" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "Cancella" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "Riprendi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "Messa in pausa..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "Ripresa in corso..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "Pausa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "Interr. in corso..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "Interrompi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" -msgstr "Sei sicuro di voler spostare 1% all’inizio della coda?" +msgstr "Sei sicuro di voler spostare %1 all’inizio della coda?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "Sposta il processo di stampa in alto" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "Sei sicuro di voler cancellare %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "Cancella processo di stampa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "Sei sicuro di voler interrompere %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Interrompi la stampa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Collega a una stampante" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "Modifiche configurazione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Attiva la configurazione" +msgid "Override" +msgstr "Override" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Carica la configurazione della stampante in Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "La stampante assegnata, %1, richiede la seguente modifica di configurazione:" +msgstr[1] "La stampante assegnata, %1, richiede le seguenti modifiche di configurazione:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "La stampante %1 è assegnata, ma il processo contiene una configurazione materiale sconosciuta." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "Cambia materiale %1 da %2 a %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "Caricare %3 come materiale %1 (Operazione non annullabile)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "Cambia print core %1 da %2 a %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "Cambia piano di stampa a %1 (Operazione non annullabile)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "L’override utilizza le impostazioni specificate con la configurazione stampante esistente. Ciò può causare una stampa non riuscita." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "Alluminio" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"Accertarsi che la stampante sia collegata:\n" +"- Controllare se la stampante è accesa.\n" +"- Controllare se la stampante è collegata alla rete.\n" +"- Controllare se è stato effettuato l'accesso per rilevare le stampanti collegate al cloud." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "Collegare la stampante alla rete." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "Visualizza i manuali utente online" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Schema colori" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Colore materiale" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Tipo di linea" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Velocità" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Spessore strato" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modalità di compatibilità" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "Mostra spostamenti" +msgid "Travels" +msgstr "Spostamenti" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "Mostra helper" +msgid "Helpers" +msgstr "Helper" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "Mostra guscio" +msgid "Shell" +msgstr "Guscio" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "Mostra riempimento" +msgid "Infill" +msgstr "Riempimento" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Mostra solo strati superiori" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Mostra 5 strati superiori in dettaglio" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Superiore / Inferiore" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Parete interna" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "max." @@ -2143,40 +2343,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Script di post-elaborazione" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Aggiungi uno script" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Impostazioni" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Modifica script di post-elaborazione attivi" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "Maggiori informazioni sulla raccolta di dati anonimi" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura invia dati anonimi ad Ultimaker per migliorare la qualità di stampa e l'esperienza dell'utente. Di seguito è riportato un esempio dei dati inviati." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura acquisisce dati anonimi per migliorare la qualità di stampa e l'esperienza dell'utente. Di seguito è riportato un esempio dei dati condivisi:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "Non voglio inviare questi dati" +msgid "I don't want to send anonymous data" +msgstr "Non desidero inviare dati anonimi" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Il consenso all'invio di questi dati ad Ultimaker ci aiuta ad ottimizzare Cura" +msgid "Allow sending anonymous data" +msgstr "Consenti l'invio di dati anonimi" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2225,19 +2425,19 @@ msgstr "Profondità (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "Per impostazione predefinita, i pixel bianchi rappresentano i punti alti sulla griglia, mentre i pixel neri rappresentano i punti bassi sulla griglia. Modificare questa opzione per invertire la situazione in modo tale che i pixel neri rappresentino i punti alti sulla griglia e i pixel bianchi rappresentino i punti bassi." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Più chiaro è più alto" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "Per le litofanie, i pixel scuri devono corrispondere alle posizioni più spesse per bloccare maggiormente il passaggio della luce. Per le mappe con altezze superiori, i pixel più chiari indicano un terreno più elevato, quindi nel modello 3D generato i pixel più chiari devono corrispondere alle posizioni più spesse." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Più scuro è più alto" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Più chiaro è più alto" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2248,81 +2448,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Smoothing" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Tipo di maglia" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Modello normale" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Stampa come supporto" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Non supporta sovrapposizione con altri modelli" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Modifica impostazioni per sovrapposizione con altri modelli" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modifica impostazioni per riempimento di altri modelli" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Seleziona impostazioni" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Seleziona impostazioni di personalizzazione per questo modello" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtro..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostra tutto" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo di maglia" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Modello normale" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Stampa come supporto" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modificare le impostazioni per le sovrapposizioni" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Non supportano le sovrapposizioni" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Solo riempimento" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Seleziona impostazioni" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Apri progetto" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Aggiorna esistente" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Crea nuovo" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Riepilogo - Progetto Cura" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Impostazioni della stampante" @@ -2338,20 +2537,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Aggiorna" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Crea nuovo" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "Gruppo stampanti" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Impostazioni profilo" @@ -2362,226 +2566,222 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Come può essere risolto il conflitto nel profilo?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nome" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Non nel profilo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 override" msgstr[1] "%1 override" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivato da" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 override" msgstr[1] "%1, %2 override" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Impostazioni materiale" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Come può essere risolto il conflitto nel materiale?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Impostazione visibilità" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modalità" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Impostazioni visibili:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 su %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Il caricamento di un progetto annulla tutti i modelli sul piano di stampa." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Apri" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Seleziona gli aggiornamenti della stampante" +msgid "My Backups" +msgstr "I miei backup" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Seleziona qualsiasi aggiornamento realizzato per questa Ultimaker 2." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "Nessun backup. Usare il pulsante ‘Esegui backup adesso’ per crearne uno." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Blocco Olsson" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "Durante la fase di anteprima, saranno visibili solo 5 backup. Rimuovi un backup per vedere quelli precedenti." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Backup e sincronizzazione delle impostazioni Cura." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "Accedi" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Backup Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Versione Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "Macchine" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "Materiali" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "Profili" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "Plugin" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "Ripristina" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "Cancella backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "Sei sicuro di voler cancellare questo backup? Questa operazione non può essere annullata." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "Ripristina backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "Riavviare Cura prima di ripristinare il backup. Chiudere Cura adesso?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "Ulteriori informazioni?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "Esegui backup adesso" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "Backup automatico" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Crea automaticamente un backup ogni giorno in cui viene avviata Cura." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Livellamento del piano di stampa" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Per assicurarsi stampe di alta qualità, è ora possibile regolare il piano di stampa. Quando si fa clic su 'Spostamento alla posizione successiva' l'ugello si sposterà in diverse posizioni che è possibile regolare." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Per ciascuna posizione: inserire un pezzo di carta sotto l'ugello e regolare la stampa dell'altezza del piano di stampa. L'altezza del piano di stampa è corretta quando la carta sfiora la punta dell'ugello." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Avvio livellamento del piano di stampa" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Spostamento alla posizione successiva" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Seleziona qualsiasi aggiornamento realizzato per questa Ultimaker Original" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "Piano di stampa riscaldato (kit ufficiale o integrato)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Controllo stampante" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "È consigliabile eseguire alcuni controlli di integrità sulla Ultimaker. È possibile saltare questo passaggio se si è certi che la macchina funziona correttamente" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Avvia controllo stampante" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Collegamento: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Collegato" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Non collegato" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Endstop min. asse X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Funziona" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Controllo non selezionato" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Endstop min. asse Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Endstop min. asse Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Controllo temperatura ugello: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Arresto riscaldamento" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Avvio riscaldamento" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Controllo temperatura piano di stampa:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Controllo eseguito" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "È tutto in ordine! Controllo terminato." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2593,7 +2793,6 @@ msgid "Printer does not accept commands" msgstr "La stampante non accetta comandi" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In manutenzione. Controllare la stampante" @@ -2604,19 +2803,16 @@ msgid "Lost connection with the printer" msgstr "Persa connessione con la stampante" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Stampa in corso..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "In pausa" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparazione in corso..." @@ -2636,233 +2832,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Sei sicuro di voler interrompere la stampa?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Elimina o mantieni modifiche" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "Sono state personalizzate alcune impostazioni del profilo.\nMantenere o eliminare tali impostazioni?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Impostazioni profilo" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Valore predefinito" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Valore personalizzato" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Chiedi sempre" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Elimina e non chiedere nuovamente" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Mantieni e non chiedere nuovamente" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Elimina" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Mantieni" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Crea nuovo profilo" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informazioni" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Conferma modifica diametro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Il nuovo diametro del filamento impostato a %1 mm non è compatibile con l'attuale estrusore. Continuare?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Visualizza nome" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marchio" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Tipo di materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Colore" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Proprietà" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Densità" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diametro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Costo del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Peso del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Lunghezza del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Costo al metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Questo materiale è collegato a %1 e condivide alcune delle sue proprietà." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Scollega materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Descrizione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Informazioni sull’aderenza" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Impostazioni di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Attiva" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Crea" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplica" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Esporta" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Stampante" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Conferma rimozione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Sei sicuro di voler rimuovere %1? Questa operazione non può essere annullata!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importa materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Impossibile importare materiale {1}: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Materiale importato correttamente %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Esporta materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Impossibile esportare il materiale su %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiale esportato correttamente su %1" @@ -2872,817 +3011,784 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Impostazione visibilità" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Controlla tutto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Calcolato" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Corrente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Unità" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Generale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Interfaccia" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Lingua:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Valuta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Riavviare l'applicazione per rendere effettive le modifiche." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Seziona automaticamente alla modifica delle impostazioni." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Seziona automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento del riquadro di visualizzazione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Evidenzia in rosso le zone non supportate del modello. In assenza di supporto, queste aree non saranno stampate in modo corretto." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Visualizza sbalzo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Sposta la fotocamera in modo che il modello si trovi al centro della visualizzazione quando è selezionato" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centratura fotocamera alla selezione dell'elemento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Il comportamento dello zoom predefinito di Cura dovrebbe essere invertito?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverti la direzione dello zoom della fotocamera." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Lo zoom si muove nella direzione del mouse?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Nella prospettiva ortogonale lo zoom verso la direzione del mouse non è supportato." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoom verso la direzione del mouse" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "I modelli sull’area di stampa devono essere spostati per evitare intersezioni?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Assicurarsi che i modelli siano mantenuti separati" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "I modelli sull’area di stampa devono essere portati a contatto del piano di stampa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Rilascia automaticamente i modelli sul piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Visualizza il messaggio di avvertimento sul lettore codice G." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Messaggio di avvertimento sul lettore codice G" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Lo strato deve essere forzato in modalità di compatibilità?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forzare la modalità di compatibilità visualizzazione strato (riavvio necessario)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Aprire Cura nel punto in cui è stato chiuso?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Ripristinare la posizione della finestra all'avvio" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Quale tipo di rendering della fotocamera è necessario utilizzare?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Rendering fotocamera:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Prospettiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ortogonale" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Apertura e salvataggio file" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "I modelli devono essere ridimensionati al volume di stampa, se troppo grandi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Ridimensiona i modelli troppo grandi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Un modello può apparire eccessivamente piccolo se la sua unità di misura è espressa in metri anziché in millimetri. Questi modelli devono essere aumentati?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Ridimensiona i modelli eccessivamente piccoli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "I modelli devono essere selezionati dopo essere stati caricati?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Selezionare i modelli dopo il caricamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Al nome del processo di stampa deve essere aggiunto automaticamente un prefisso basato sul nome della stampante?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Aggiungi al nome del processo un prefisso macchina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Quando si salva un file di progetto deve essere visualizzato un riepilogo?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Visualizza una finestra di riepilogo quando si salva un progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamento predefinito all'apertura di un file progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamento predefinito all'apertura di un file progetto: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Chiedi sempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Apri sempre come progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importa sempre i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Dopo aver modificato un profilo ed essere passati a un altro, si apre una finestra di dialogo che chiede se mantenere o eliminare le modifiche oppure se scegliere un comportamento predefinito e non visualizzare più tale finestra di dialogo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Comportamento predefinito per i valori di impostazione modificati al passaggio a un profilo diverso: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Chiedi sempre" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Elimina sempre le impostazioni modificate" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Trasferisci sempre le impostazioni modificate a un nuovo profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura deve verificare la presenza di eventuali aggiornamenti all’avvio del programma?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Controlla aggiornamenti all’avvio" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "I dati anonimi sulla stampa devono essere inviati a Ultimaker? Nota, non sono trasmessi o memorizzati modelli, indirizzi IP o altre informazioni personali." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Invia informazioni di stampa (anonime)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Ulteriori informazioni" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "Sperimentale" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Utilizzare la funzionalità piano di stampa multiplo" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "Utilizzare la funzionalità piano di stampa multiplo (necessario riavvio)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Stampanti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Rinomina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Tipo di stampante:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Collegamento:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "La stampante non è collegata." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "Stato:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "In attesa di un processo di stampa" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "In attesa di qualcuno che cancelli il piano di stampa" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Interruzione stampa in corso..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Crea" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplica" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Crea profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "Indica un nome per questo profilo." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplica profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Rinomina profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importa profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Esporta profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Stampante: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Profili protetti" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Profili personalizzati" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Aggiorna il profilo con le impostazioni/esclusioni correnti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Elimina le modifiche correnti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Questo profilo utilizza le impostazioni predefinite dalla stampante, perciò non ci sono impostazioni/esclusioni nell’elenco riportato di seguito." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Le impostazioni correnti corrispondono al profilo selezionato." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Impostazioni globali" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Aggiungi stampante" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Nome stampante:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Aggiungi stampante" +msgid "Marketplace" +msgstr "Mercato" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&File" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&Modifica" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Visualizza" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "&Impostazioni" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "Es&tensioni" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "P&referenze" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "&Help" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Nuovo progetto" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Sei sicuro di voler aprire un nuovo progetto? Questo cancellerà il piano di stampa e tutte le impostazioni non salvate." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "Senza titolo" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "Informazioni su Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "versione: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "Soluzione end-to-end per la stampa 3D con filamento fuso." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "Cura è stato sviluppato da Ultimaker B.V. in cooperazione con la comunità.\nCura è orgogliosa di utilizzare i seguenti progetti open source:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Interfaccia grafica utente" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Struttura applicazione" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "Generatore codice G" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Libreria di comunicazione intra-processo" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Lingua di programmazione" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "Struttura GUI" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "Vincoli struttura GUI" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "Libreria vincoli C/C++" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Formato scambio dati" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Libreria di supporto per calcolo scientifico" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Libreria di supporto per calcolo rapido" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Libreria di supporto per gestione file STL" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "Libreria di supporto per gestione oggetti planari" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "Libreria di supporto per gestione maglie triangolari" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "Libreria di supporto per l’analisi di reti complesse" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Libreria di supporto per gestione file 3MF" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "Libreria di supporto per metadati file e streaming" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Libreria di comunicazione seriale" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "Libreria scoperta ZeroConf" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Libreria ritaglio poligono" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Libreria Python HTTP" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Font" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "Icone SVG" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Apertura applicazione distribuzione incrociata Linux" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Profilo:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n\nFare clic per aprire la gestione profili." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Ricerca..." +msgid "Search settings" +msgstr "Impostazioni ricerca" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copia valore su tutti gli estrusori" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Copia tutti i valori modificati su tutti gli estrusori" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mantieni visibile questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configura visibilità delle impostazioni..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "Comprimi tutto" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "Espandi tutto" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Alcune impostazioni nascoste utilizzano valori diversi dal proprio valore normale calcolato.\n\nFare clic per rendere visibili queste impostazioni." +msgstr "" +"Alcune impostazioni nascoste utilizzano valori diversi dal proprio valore normale calcolato.\n" +"\n" +"Fare clic per rendere visibili queste impostazioni." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "Questa impostazione non è utilizzata perché tutte le impostazioni che influenza sono sottoposte a override." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Influisce su" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Influenzato da" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Questa impostazione è sempre condivisa tra tutti gli estrusori. La sua modifica varierà il valore per tutti gli estrusori." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Questo valore è risolto da valori per estrusore " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Questa impostazione ha un valore diverso dal profilo.\n\nFare clic per ripristinare il valore del profilo." +msgstr "" +"Questa impostazione ha un valore diverso dal profilo.\n" +"\n" +"Fare clic per ripristinare il valore del profilo." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Questa impostazione normalmente viene calcolata, ma attualmente ha impostato un valore assoluto.\n\nFare clic per ripristinare il valore calcolato." +msgstr "" +"Questa impostazione normalmente viene calcolata, ma attualmente ha impostato un valore assoluto.\n" +"\n" +"Fare clic per ripristinare il valore calcolato." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "Consigliata" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "Personalizzata" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "Riempimento graduale" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "Un riempimento graduale aumenterà gradualmente la quantità di riempimento verso l'alto." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "Supporto" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Genera strutture per supportare le parti del modello a sbalzo. Senza queste strutture, queste parti collasserebbero durante la stampa." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "Adesione" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Abilita stampa di brim o raft. Questa funzione aggiunge un’area piana attorno o sotto l’oggetto, facile da tagliare successivamente." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Sono state modificate alcune impostazioni del profilo. Per modificarle, andare alla modalità personalizzata." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "Inserita" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "Disinserita" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Sperimentale" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "Profilo" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n" +"\n" +"Fare clic per aprire la gestione profili." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Profili personalizzati" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "Impostazione di stampa disabilitata. Il file G-code non può essere modificato." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "Comando stampante" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "Posizione Jog" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "Distanza Jog" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "Invia codice G" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "Invia un comando codice G personalizzato alla stampante connessa. Premere ‘invio’ per inviare il comando." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Estrusore" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Temperatura target dell'estremità riscaldata. L'estremità riscaldata si riscalderà o raffredderà sino a questo valore di temperatura. Se questo è 0, l'estremità riscaldata verrà spenta." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "La temperatura corrente di questa estremità calda." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "La temperatura di preriscaldo dell’estremità calda." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annulla" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Pre-riscaldo" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Riscalda l’estremità calda prima della stampa. È possibile continuare a regolare la stampa durante il riscaldamento e non è necessario attendere il riscaldamento dell’estremità calda quando si è pronti per la stampa." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Il colore del materiale di questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Il materiale di questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "L’ugello inserito in questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "La stampante non è collegata." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "La temperatura target del piano riscaldato. Il piano verrà riscaldato o raffreddato a questa temperatura. Se è 0, il riscaldamento del piano viene disattivato." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "La temperatura corrente del piano riscaldato." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "La temperatura di preriscaldo del piano." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Riscalda il piano prima della stampa. È possibile continuare a regolare la stampa durante il riscaldamento e non è necessario attendere il riscaldamento del piano quando si è pronti per la stampa." @@ -3692,12 +3798,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Materiale" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Preferiti" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Generale" @@ -3712,17 +3818,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "Stampanti locali" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&Visualizza" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "S&tampante" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "Ma&teriale" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Imposta come estrusore attivo" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "Abilita estrusore" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "Disabilita estrusore" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Posizione fotocamera" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Visualizzazione fotocamera" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Prospettiva" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Ortogonale" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "P&iano di stampa" @@ -3742,6 +3883,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Gestisci Impostazione visibilità..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "&Salva..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&Esporta..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "Esporta selezione..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3761,654 +3917,509 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Numero di copie" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "Configurazioni disponibili" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "Configurazioni" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "Estrusore" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "Seleziona configurazione" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "Sì" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "Configurazioni" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "No" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "Caricamento in corso configurazioni disponibili dalla stampante..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "Le configurazioni non sono disponibili perché la stampante è scollegata." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "Personalizzata" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "Stampante" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "Abilitato" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Materiale" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "Utilizzare la colla per una migliore adesione con questa combinazione di materiali." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "Questa configurazione non è disponibile perché %1 non viene riconosciuto. Visitare %2 per scaricare il profilo materiale corretto." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "Mercato" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Ap&ri recenti" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Impostazione di stampa" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "Impostazione di stampa disabilitata\nI file codice G non possono essere modificati" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00h 00min" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "Indicazioni di tempo" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "Indicazione di costo" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "Totale:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Impostazione di stampa consigliata

    Stampa con le impostazioni consigliate per la stampante, il materiale e la qualità selezionati." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Impostazione di stampa personalizzata

    Stampa con il controllo grana fine su ogni sezione finale del processo di sezionamento." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Stampa attiva" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Nome del processo" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Tempo di stampa" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Tempo residuo stimato" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "Visualizza tipo" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Elenco oggetti" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "Alto %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Account Ultimaker" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "Esci" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "Accedi" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "Flusso di stampa 3D di ultima generazione" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- Invia i processi di stampa alle stampanti Ultimaker esterne alla rete locale\n" +"- Invia le impostazioni Ultimaker Cura nel cloud per usarle ovunque\n" +"- Ottieni l’accesso esclusivo ai profili di stampa dai principali marchi" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "Crea account" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "Nessuna stima di tempo disponibile" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "Nessuna stima di costo disponibile" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "Anteprima" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "Sezionamento in corso..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "Sezionamento impossibile" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "Elaborazione in corso" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "Sezionamento" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "Avvia il processo di sezionamento" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "Annulla" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "Stima del tempo" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "Stima del materiale" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "Stampanti collegate" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "Stampanti preimpostate" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "Aggiungi stampante" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "Gestione stampanti" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "Mostra la Guida ricerca e riparazione dei guasti online" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Attiva/disattiva schermo intero" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Esci da schermo intero" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Annulla" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "Ri&peti" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Esci" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "Visualizzazione 3D" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "Visualizzazione frontale" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "Visualizzazione superiore" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "Visualizzazione lato sinistro" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "Visualizzazione lato destro" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configura Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Aggiungi stampante..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Gestione stampanti..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Gestione materiali..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Aggiorna il profilo con le impostazioni/esclusioni correnti" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Elimina le modifiche correnti" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Crea profilo dalle impostazioni/esclusioni correnti..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Gestione profili..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Mostra documentazione &online" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Se&gnala un errore" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "Scopri le novità" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "Informazioni..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "Cancella modello selezionato" msgstr[1] "Cancella modelli selezionati" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Centra modello selezionato" msgstr[1] "Centra modelli selezionati" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Moltiplica modello selezionato" msgstr[1] "Moltiplica modelli selezionati" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Elimina modello" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "C&entra modello su piattaforma" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Raggruppa modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Separa modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Unisci modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Mo<iplica modello..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Seleziona tutti i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Cancellare piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Ricarica tutti i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "Sistema tutti i modelli su tutti i piani di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Sistema tutti i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Sistema selezione" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Reimposta tutte le posizioni dei modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Reimposta tutte le trasformazioni dei modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Apri file..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nuovo Progetto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Mostra &log motore..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Mostra cartella di configurazione" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "Sfoglia i pacchetti..." +msgid "&Marketplace" +msgstr "&Mercato" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "Espandi/Riduci barra laterale" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Caricare un modello 3D" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Pronto per il sezionamento" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Sezionamento in corso..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Pronto a %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Sezionamento impossibile" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Sezionamento non disponibile" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "Seziona processo di stampa corrente" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "Annulla processo di sezionamento" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Prepara" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Annulla" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Seleziona l'unità di uscita attiva" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Apri file" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Rilevata la presenza di uno o più file progetto tra i file selezionati. È possibile aprire solo un file progetto alla volta. Si suggerisce di importare i modelli solo da tali file. Vuoi procedere?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Importa tutto come modelli" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&File" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "&Salva..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&Esporta..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "Esporta selezione..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&Modifica" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "&Visualizza" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "&Impostazioni" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "S&tampante" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "Ma&teriale" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Imposta come estrusore attivo" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "Abilita estrusore" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "Disabilita estrusore" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Piano di stampa" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profilo" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "Es&tensioni" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "&Casella degli strumenti" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "P&referenze" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "&Help" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Questo pacchetto sarà installato dopo il riavvio." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Apri file" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Impostazioni" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Nuovo progetto" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Sei sicuro di voler aprire un nuovo progetto? Questo cancellerà il piano di stampa e tutte le impostazioni non salvate." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Chiusura di Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Sei sicuro di voler uscire da Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Apri file" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Installa il pacchetto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Apri file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Rilevata la presenza di uno o più file codice G tra i file selezionati. È possibile aprire solo un file codice G alla volta. Se desideri aprire un file codice G, selezionane uno solo." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Salva progetto" +msgid "Add Printer" +msgstr "Aggiungi stampante" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Piano di stampa" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Estrusore %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & materiale" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Non mostrare il riepilogo di progetto alla ripetizione di salva" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Salva" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Altezza dello strato" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "Questo profilo di qualità non è disponibile per il materiale e la configurazione ugello corrente. Modificarli per abilitare questo profilo di qualità" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Un profilo personalizzato è attualmente attivo. Per attivare il cursore qualità, selezionare un profilo di qualità predefinito nella scheda Personalizza" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Velocità di stampa" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Più lenta" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Più veloce" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "Sono state modificate alcune impostazioni del profilo. Per modificarle, andare alla modalità personalizzata." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Riempimento" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Un riempimento graduale aumenterà gradualmente la quantità di riempimento verso l'alto." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Consenti variazione graduale" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Generazione supporto" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Genera strutture per supportare le parti del modello a sbalzo. Senza queste strutture, queste parti collasserebbero durante la stampa." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Seleziona l’estrusore da utilizzare per la stampa di strutture di supporto. Ciò consentirà di costruire strutture di supporto sotto il modello per evitare cedimenti del modello o di stampare a mezz'aria." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Adesione piano di stampa" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Abilita stampa di brim o raft. Questa funzione aggiunge un’area piana attorno o sotto l’oggetto, facile da tagliare successivamente." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "Serve aiuto per migliorare le tue stampe?
    Leggi la Guida alla ricerca e riparazione guasti Ultimaker" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "Scopri le novità" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4417,75 +4428,503 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "Stampa modello selezionato con %1" msgstr[1] "Stampa modelli selezionati con %1" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Elimina o mantieni modifiche" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"Sono state personalizzate alcune impostazioni del profilo.\n" +"Mantenere o eliminare tali impostazioni?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Impostazioni profilo" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Valore predefinito" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Valore personalizzato" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Elimina e non chiedere nuovamente" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Mantieni e non chiedere nuovamente" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Elimina" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Mantieni" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Crea nuovo profilo" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Informazioni su Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "versione: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "Soluzione end-to-end per la stampa 3D con filamento fuso." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura è stato sviluppato da Ultimaker B.V. in cooperazione con la comunità.\n" +"Cura è orgogliosa di utilizzare i seguenti progetti open source:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Interfaccia grafica utente" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Struttura applicazione" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "Generatore codice G" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Libreria di comunicazione intra-processo" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Lingua di programmazione" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "Struttura GUI" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "Vincoli struttura GUI" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "Libreria vincoli C/C++" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Formato scambio dati" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Libreria di supporto per calcolo scientifico" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Libreria di supporto per calcolo rapido" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Libreria di supporto per gestione file STL" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "Libreria di supporto per gestione oggetti planari" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "Libreria di supporto per gestione maglie triangolari" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "Libreria di supporto per l’analisi di reti complesse" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Libreria di supporto per gestione file 3MF" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "Libreria di supporto per metadati file e streaming" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Libreria di comunicazione seriale" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "Libreria scoperta ZeroConf" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Libreria ritaglio poligono" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Libreria Python HTTP" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Font" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "Icone SVG" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Apertura applicazione distribuzione incrociata Linux" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Rilevata la presenza di uno o più file progetto tra i file selezionati. È possibile aprire solo un file progetto alla volta. Si suggerisce di importare i modelli solo da tali file. Vuoi procedere?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Importa tutto come modelli" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Salva progetto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Estrusore %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & materiale" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "Materiale" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Non mostrare il riepilogo di progetto alla ripetizione di salva" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Salva" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Apri file progetto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Questo è un file progetto Cura. Vuoi aprirlo come progetto o importarne i modelli?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Ricorda la scelta" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Apri come progetto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importa i modelli" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Log motore" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "Tipo di stampante" +msgid "Empty" +msgstr "Vuoto" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Materiale" +msgid "Add a printer" +msgstr "Aggiungi una stampante" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "Utilizzare la colla con questa combinazione di materiali" +msgid "Add a networked printer" +msgstr "Aggiungi una stampante in rete" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "Controlla compatibilità" +msgid "Add a non-networked printer" +msgstr "Aggiungi una stampante non in rete" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Fai clic per verificare la compatibilità del materiale su Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "Aggiungi stampante per indirizzo IP" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Vedi solo il piano di stampa corrente" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Inserisci l'indirizzo IP della stampante." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Sistema su tutti i piani di stampa" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Aggiungi" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Sistema il piano di stampa corrente" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "Impossibile connettersi al dispositivo." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "La stampante a questo indirizzo non ha ancora risposto." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "Questa stampante non può essere aggiunta perché è una stampante sconosciuta o non è l'host di un gruppo." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "Indietro" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "Collega" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "Avanti" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "Contratto di licenza" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "Accetta" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "Rifiuta e chiudi" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Aiutaci a migliorare Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura acquisisce dati anonimi per migliorare la qualità di stampa e l'esperienza dell'utente, tra cui:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "Tipi di macchine" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "Utilizzo dei materiali" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "Numero di sezionamenti" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "Impostazioni di stampa" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "I dati acquisiti da Ultimaker Cura non conterranno alcuna informazione personale." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "Ulteriori informazioni" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Scopri le novità in Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "Non è stata trovata alcuna stampante sulla rete." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "Aggiorna" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "Aggiungi stampante per IP" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "Ricerca e riparazione dei guasti" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "Nome stampante" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "Assegna un nome alla stampante" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "Flusso di stampa 3D di ultima generazione" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- Invia i processi di stampa alle stampanti Ultimaker esterne alla rete locale" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Memorizza le impostazioni Ultimaker Cura nel cloud per usarle ovunque" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- Ottieni l'accesso esclusivo ai profili di stampa dai principali marchi" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "Fine" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "Crea un account" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Benvenuto in Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"Segui questa procedura per configurare\n" +"Ultimaker Cura. Questa operazione richiederà solo pochi istanti." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "Per iniziare" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Visualizzazione 3D" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Visualizzazione frontale" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Visualizzazione superiore" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Vista sinistra" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Vista destra" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4547,26 +4986,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Controllo modello" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Scarica contenuto di tutte le impostazioni in un file HTML." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Modalità God" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Mostra le modifiche dall'ultima versione selezionata." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Registro modifiche" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4577,15 +4996,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Aggiornamento firmware" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Crea un profilo appiattito." +msgid "Provides support for reading AMF files." +msgstr "Fornisce il supporto per la lettura di file 3MF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Appiattitore di profilo" +msgid "AMF Reader" +msgstr "Lettore 3MF" #: USBPrinting/plugin.json msgctxt "description" @@ -4597,26 +5016,6 @@ msgctxt "name" msgid "USB printing" msgstr "Stampa USB" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "Chiedere una volta all'utente se accetta la nostra licenza." - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "Contratto di licenza" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Consente di salvare il sezionamento risultante come un file X3G, per supportare le stampanti che leggono questo formato (Malyan, Makerbot ed altre stampanti basate su firmware Sailfish)." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4659,13 +5058,13 @@ msgstr "Plugin dispositivo di output unità rimovibile" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Gestisce le connessioni di rete alle stampanti Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Gestisce le connessioni di rete alle stampanti Ultimaker in rete." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Connessione di rete UM3" +msgid "Ultimaker Network Connection" +msgstr "Connessione di rete Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -4727,6 +5126,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Cancellazione supporto" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Fornisce il supporto per la lettura di pacchetti formato Ultimaker." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "Lettore UFP" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4787,6 +5196,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Aggiornamento della versione da 3.3 a 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Aggiorna le configurazioni da Cura 4.3 a Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Aggiornamento della versione da 4.3 a 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4807,6 +5226,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Aggiornamento della versione da 2.7 a 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Aggiorna le configurazioni da Cura 3.5 a Cura 4.0." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "Aggiornamento della versione da 3.5 a 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4817,6 +5246,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "Aggiornamento della versione da 3.4 a 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Aggiorna le configurazioni da Cura 4.0 a Cura 4.1." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "Aggiornamento della versione da 4.0 a 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4827,6 +5266,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Aggiornamento della versione da 3.0 a 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Aggiorna le configurazioni da Cura 4.1 a Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Aggiornamento della versione da 4.1 a 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4857,6 +5306,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Aggiornamento della versione da 2.2 a 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Aggiorna le configurazioni da Cura 4.2 a Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Aggiornamento della versione da 4.2 a 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4867,6 +5326,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Lettore di immagine" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Fornisce supporto per la lettura dei file modello." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh Reader" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4917,6 +5386,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "Lettore codice G" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "Effettua il backup o ripristina la configurazione." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Backup Cura" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4937,6 +5416,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Writer 3MF" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Fornisce una fase di anteprima in Cura." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "Fase di anteprima" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4957,9 +5446,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lettore profilo Cura" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "Generare il codice G prima di salvare." +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Impostazioni attive profilo appiattito" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Il profilo è stato appiattito e attivato." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Scrive X3g sui file" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "File X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "File X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -4969,6 +5478,1032 @@ msgstr "Lettore profilo Cura" #~ msgid "Profile Assistant" #~ msgstr "Assistente profilo" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Riprova" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print Core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Non supporta sovrapposizione con altri modelli" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Modifica impostazioni per sovrapposizione con altri modelli" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modifica impostazioni per riempimento di altri modelli" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Aggiorna esistente" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Non supportato" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Precedente" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Suggerimento" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Prova di stampa" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Lista di controllo" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Seleziona qualsiasi aggiornamento realizzato per questa Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Blocco Olsson" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Rendering fotocamera: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Utilizzare la funzionalità piano di stampa multiplo" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Utilizzare la funzionalità piano di stampa multiplo (necessario riavvio)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Profili predefiniti" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "impostazioni ricerca" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Altezza dello strato" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Questo profilo di qualità non è disponibile per la configurazione attuale del materiale e degli ugelli. Modificare tali configurazioni per abilitare il profilo di qualità desiderato." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Un profilo personalizzato è attualmente attivo. Per attivare il cursore qualità, selezionare un profilo di qualità predefinito nella scheda Personalizza" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Piano di stampa" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profilo" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Piano di stampa" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Scarica contenuto di tutte le impostazioni in un file HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Modalità God" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Crea un profilo appiattito di modifiche di qualità." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Appiattitore di profilo" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Consente ai produttori di materiali di creare nuovi profili materiale e di qualità utilizzando una UI drop-in." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Assistente profilo di stampa" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Collegato alla rete." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Collegato alla rete. Si prega di approvare la richiesta di accesso sulla stampante." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Collegato alla rete. Nessun accesso per controllare la stampante." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Richiesto accesso alla stampante. Approvare la richiesta sulla stampante" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Stato di autenticazione" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Stato di autenticazione" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Invia nuovamente la richiesta di accesso" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Accesso alla stampante accettato" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Nessun accesso per stampare con questa stampante. Impossibile inviare il processo di stampa." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Richiesta di accesso" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Invia la richiesta di accesso alla stampante" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Impossibile avviare un nuovo processo di stampa." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "È presente un problema di configurazione della stampante che rende impossibile l’avvio della stampa. Risolvere il problema prima di continuare." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Mancata corrispondenza della configurazione" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Sei sicuro di voler stampare con la configurazione selezionata?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Le configurazioni o la calibrazione della stampante e di Cura non corrispondono. Per ottenere i migliori risultati, sezionare sempre per i PrintCore e i materiali inseriti nella stampante utilizzata." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Invio nuovi processi (temporaneamente) bloccato, invio in corso precedente processo di stampa." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Invio dati alla stampante in corso" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Invio dati" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Nessun PrintCore caricato nello slot {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Nessun materiale caricato nello slot {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "PrintCore diverso (Cura: {cura_printcore_name}, Stampante: {remote_printcore_name}) selezionata per estrusore {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Materiale diverso (Cura: {0}, Stampante: {1}) selezionato per l’estrusore {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Sincronizzazione con la stampante" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Desideri utilizzare la configurazione corrente della tua stampante in Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "I PrintCore e/o i materiali sulla stampante differiscono da quelli contenuti nel tuo attuale progetto. Per ottenere i risultati migliori, sezionare sempre per i PrintCore e i materiali inseriti nella stampante utilizzata." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Visualizzazione in Controlla" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "La stampante '{printer_name}' ha finito di stampare '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "Il processo di stampa '{job_name}' è terminato." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Stampa finita" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Vuoto" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Sconosciuto" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Errore cloud" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Impossibile esportare il processo di stampa." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Si è verificato un errore di collegamento al cloud." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Caricamento tramite Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Collegato a Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Non chiedere nuovamente per questa stampante." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Ora è possibile inviare e controllare i processi di stampa ovunque con l’account Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Collegato!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Controlla collegamento" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "La macchina definita nel profilo {0} ({1}) non corrisponde alla macchina corrente ({2}), impossibile importarla." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Impossibile importare il profilo da {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Collegamento esistente" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Stampante/gruppo già aggiunto a Cura. Selezionare un’altra stampante o un altro gruppo." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Inserire l’indirizzo IP o l’hostname della stampante sulla rete." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Collega a una stampante" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guida alle impostazioni Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Nella prospettiva ortogonale lo zoom verso la direzione del mouse non è supportato." + +#~ msgid "Orthogonal" +#~ msgstr "Ortogonale" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Gestisce le connessioni di rete alle stampanti Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Connessione di rete UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Fornisce informazioni e spiegazioni aggiuntive sulle impostazioni in Cura, con immagini e animazioni." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Guida alle impostazioni" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guida alle impostazioni Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Le impostazioni sono state modificate in base all’attuale disponibilità di estrusori: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Descrizione utente" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Queste opzioni non sono disponibili perché si sta controllando una stampante cloud." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Vai a Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Tutti i processi sono stampati." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Visualizza cronologia di stampa" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se si collega Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante.\n" +#~ "\n" +#~ "Selezionare la stampante dall’elenco seguente:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Accertarsi che la stampante sia collegata:\n" +#~ "- Controllare se la stampante è accesa.\n" +#~ "- Controllare se la stampante è collegata alla rete." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Vedi solo il piano di stampa corrente" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Sistema su tutti i piani di stampa" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Sistema il piano di stampa corrente" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Consente di salvare il sezionamento risultante come un file X3G, per supportare le stampanti che leggono questo formato (Malyan, Makerbot ed altre stampanti basate su firmware Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Legge i file SVG come toolpath (percorsi utensile), per eseguire il debug dei movimenti della stampante." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Lettore di toolpath (percorso utensile) SVG" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Registro modifiche" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Visualizza registro modifiche" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "Invio dati al cluster remoto" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Collegato a Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura raccoglie statistiche di utilizzo in forma anonima." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "Acquisizione dati" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "Per saperne di più" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Vedere ulteriori informazioni sui dati inviati da Cura." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "Consenti" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Consente a Cura di inviare in forma anonima statistiche d’uso, riguardanti alcune delle preferenze e impostazioni, la versione cura e una serie di modelli in sezionamento, per aiutare a dare priorità a miglioramenti futuri in Cura." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "Valutazione" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "Stampanti abilitate per la rete" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "Stampanti locali" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "Tentativo di ripristinare un backup di Cura non corrispondente alla versione corrente." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Impostazioni macchina" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Impostazioni della stampante" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Origine al centro" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Piano riscaldato" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Impostazioni della testina di stampa" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distanza tra il lato sinistro della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distanza tra il lato anteriore della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distanza tra il lato destro della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distanza tra il lato posteriore della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Altezza gantry" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "La differenza di altezza tra la punta dell’ugello e il sistema gantry (assi X e Y). Utilizzata per evitare collisioni tra le stampe precedenti e il gantry durante la stampa \"Uno alla volta\"." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "Codice G avvio" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "Comandi codice G da eseguire all’avvio." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "Codice G fine" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "Comandi codice G da eseguire alla fine." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Impostazioni ugello" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "Diametro nominale del filamento supportato dalla stampante. Il diametro esatto verrà sovrapposto dal materiale e/o dal profilo." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "Codice G avvio estrusore" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "Codice G fine estrusore" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Registro modifiche" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "Contratto di licenza" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Inserire l’indirizzo IP o l’hostname della stampante sulla rete." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "Selezionare una stampante collegata alla rete per controllare." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Collegare la stampante Ultimaker alla rete locale." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura invia dati anonimi ad Ultimaker per migliorare la qualità di stampa e l'esperienza dell'utente. Di seguito è riportato un esempio dei dati inviati." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "Non desidero inviare questi dati" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Consenti l’invio di questi dati ad Ultimaker e aiutaci ad ottimizzare Cura" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "Nessuna stampante selezionata" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "Per impostazione predefinita, i pixel bianchi rappresentano i punti alti sulla griglia, mentre i pixel neri rappresentano i punti bassi sulla griglia. Modificare questa opzione per invertire la situazione in modo tale che i pixel neri rappresentino i punti alti sulla griglia e i pixel bianchi rappresentino i punti bassi." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Seleziona gli aggiornamenti della stampante" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Seleziona l’estrusore da utilizzare per la stampa di strutture di supporto. Ciò consentirà di costruire strutture di supporto sotto il modello per evitare cedimenti del modello o di stampare a mezz'aria." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Questo profilo di qualità non è disponibile per il materiale e la configurazione ugello corrente. Modificarli per abilitare questo profilo di qualità" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "Impostazione di stampa disabilitata. Impossibile modificare il file codice G." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "Vedere il grafico di compatibilità dei materiali" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "Visualizza tipi" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "Ciao " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- Invia i processi di stampa alle stampanti Ultimaker esterne alla rete locale\n" +#~ "- Invia le impostazioni Ultimaker Cura nel cloud per usarle ovunque\n" +#~ "- Ottieni l’accesso esclusivo ai profili materiale da marchi leader" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "Sezionamento impossibile" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "Indicazioni di tempo" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "Specifiche materiale" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Aggiungi una stampante a Cura" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "Seleziona la stampante da usare dell’elenco seguente.\n" +#~ "\n" +#~ "Se la stampante non è nell’elenco, usare la “Stampante FFF personalizzata\" dalla categoria “Personalizzata\" e regolare le impostazioni in modo che corrispondano alla stampante nella finestra di dialogo successiva." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "Produttore" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "Nome stampante" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Aggiungi stampante" + +#~ msgid "Modify G-Code" +#~ msgstr "Modifica G-code" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "Nulla da sezionare in quanto nessuno dei modelli corrisponde al volume di stampa. Ridimensionare o ruotare i modelli secondo necessità." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "Il materiale selezionato è incompatibile con la macchina o la configurazione selezionata." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Materiale incompatibile" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Impossibile importare il profilo da {0}: {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "Casella degli strumenti" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "Non disponibile" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "Non raggiungibile" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "Disponibile" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Preparazione in corso" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "Messa in pausa" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "Ripresa" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "In attesa: stampante non disponibile" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "In attesa della prima disponibile" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "In attesa: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "Modifica configurazione" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "La stampante assegnata, %1, richiede le seguenti modifiche di configurazione:" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "Override" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "L’avvio di un processo di stampa con una configurazione non compatibile potrebbe danneggiare la stampante 3D. Sei sicuro di voler annullare la configurazione e stampare %1?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "Annullare la configurazione e avviare la stampa" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "Gestione coda di stampa" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "Stampa in corso" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "Gestione stampanti" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Attiva la configurazione" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Carica la configurazione della stampante in Cura" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Mostra spostamenti" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Mostra helper" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Mostra guscio" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Mostra riempimento" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "Non voglio inviare questi dati" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Il consenso all'invio di questi dati ad Ultimaker ci aiuta ad ottimizzare Cura" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Tipo di stampante:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Collegamento:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "Stato:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "In attesa di un processo di stampa" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "In attesa di qualcuno che cancelli il piano di stampa" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "Interruzione stampa in corso..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Profili protetti" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Nome stampante:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Profilo:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Ricerca..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "Comprimi tutto" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "Espandi tutto" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "Configurazioni disponibili" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "Estrusore" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "Sì" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "No" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Impostazione di stampa" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Impostazione di stampa disabilitata\n" +#~ "I file codice G non possono essere modificati" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00h 00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "Indicazioni di tempo" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "Indicazione di costo" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "Totale:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Impostazione di stampa consigliata

    Stampa con le impostazioni consigliate per la stampante, il materiale e la qualità selezionati." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Impostazione di stampa personalizzata

    Stampa con il controllo grana fine su ogni sezione finale del processo di sezionamento." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "Mostra &log motore..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "Sfoglia i pacchetti..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "Espandi/Riduci barra laterale" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Caricare un modello 3D" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Pronto per il sezionamento" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "Pronto a %1" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "Sezionamento non disponibile" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "Seziona processo di stampa corrente" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "Annulla processo di sezionamento" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Prepara" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Seleziona l'unità di uscita attiva" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "&Visualizza" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "&Impostazioni" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "&Casella degli strumenti" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Apri file" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Questo profilo di qualità non è disponibile per il materiale e la configurazione ugello corrente. Modificarli per abilitare questo profilo di qualità" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Velocità di stampa" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Più lenta" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Più veloce" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Consenti variazione graduale" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Generazione supporto" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Adesione piano di stampa" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "Serve aiuto per migliorare le tue stampe?
    Leggi la Guida alla ricerca e riparazione guasti Ultimaker" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Log motore" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "Tipo di stampante" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "Utilizzare la colla con questa combinazione di materiali" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Controlla compatibilità" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Fai clic per verificare la compatibilità del materiale su Ultimaker.com." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Mostra le modifiche dall'ultima versione selezionata." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Registro modifiche" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Crea un profilo appiattito." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Appiattitore di profilo" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "Chiedere una volta all'utente se accetta la nostra licenza." + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "Contratto di licenza" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "Generare il codice G prima di salvare." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Aggiorna firmware" @@ -4993,22 +6528,6 @@ msgstr "Lettore profilo Cura" #~ msgid "Confirm uninstall " #~ msgstr "Conferma disinstalla " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "In pausa" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "Precedente" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "Avanti" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "Suggerimento" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1m / ~ %2g / ~ %4 %3" @@ -5017,26 +6536,10 @@ msgstr "Lettore profilo Cura" #~ msgid "%1m / ~ %2g" #~ msgstr "%1m / ~ %2g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "Prova di stampa" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "Lista di controllo" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "Aggiorna firmware" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "Consente ai produttori di materiali di creare nuovi profili materiale e di qualità utilizzando una UI drop-in." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "Assistente profilo di stampa" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Stampa con Doodle3D WiFi-Box" @@ -5129,10 +6632,6 @@ msgstr "Lettore profilo Cura" #~ msgid "Lost connection with the printer" #~ msgstr "Persa connessione con la stampante" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "Non disponibile" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "Sconosciuto" diff --git a/resources/i18n/it_IT/fdmextruder.def.json.po b/resources/i18n/it_IT/fdmextruder.def.json.po index aa170f18be..4d730ebf7c 100644 --- a/resources/i18n/it_IT/fdmextruder.def.json.po +++ b/resources/i18n/it_IT/fdmextruder.def.json.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -83,8 +83,8 @@ msgstr "Codice G avvio estrusore" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "Codice G di avvio da eseguire ogniqualvolta si accende l’estrusore." +msgid "Start g-code to execute when switching to this extruder." +msgstr "Inizio codice G da eseguire quando si passa a questo estrusore." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -123,8 +123,8 @@ msgstr "Codice G fine estrusore" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "Codice G di fine da eseguire ogniqualvolta si spegne l’estrusore." +msgid "End g-code to execute when switching away from this extruder." +msgstr "Fine codice G da eseguire quando si passa a questo estrusore." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -225,3 +225,11 @@ msgstr "Diametro" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Regolare il diametro del filamento utilizzato. Abbinare questo valore al diametro del filamento utilizzato." + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "Codice G di avvio da eseguire ogniqualvolta si accende l’estrusore." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "Codice G di fine da eseguire ogniqualvolta si spegne l’estrusore." diff --git a/resources/i18n/it_IT/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po index e2d013f74c..2f7a93df43 100644 --- a/resources/i18n/it_IT/fdmprinter.def.json.po +++ b/resources/i18n/it_IT/fdmprinter.def.json.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 15:02+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Italian\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Italian , Italian \n" "Language: it_IT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,7 +57,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "I comandi codice G da eseguire all’avvio, separati da \n." +msgstr "" +"I comandi codice G da eseguire all’avvio, separati da \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -69,7 +71,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "I comandi codice G da eseguire alla fine, separati da \n." +msgstr "" +"I comandi codice G da eseguire alla fine, separati da \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -211,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Indica se la macchina ha un piano di stampa riscaldato." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "È dotato della stabilizzazione della temperatura del volume di stampa" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Se la macchina è in grado di stabilizzare la temperatura del volume di stampa." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -233,7 +247,7 @@ msgstr "Il numero di treni di estrusori. Un treno di estrusori è la combinazion #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "Numero di estrusori abilitati" #: fdmprinter.def.json @@ -243,7 +257,7 @@ msgstr "Numero di treni di estrusori abilitati; impostato automaticamente nel so #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "Diametro esterno ugello" #: fdmprinter.def.json @@ -253,7 +267,7 @@ msgstr "Il diametro esterno della punta dell'ugello." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "Lunghezza ugello" #: fdmprinter.def.json @@ -263,7 +277,7 @@ msgstr "La differenza di altezza tra la punta dell’ugello e la parte inferiore #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "Angolo ugello" #: fdmprinter.def.json @@ -273,7 +287,7 @@ msgstr "L’angolo tra il piano orizzontale e la parte conica esattamente sopra #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "Lunghezza della zona di riscaldamento" #: fdmprinter.def.json @@ -303,7 +317,7 @@ msgstr "Per controllare la temperatura da Cura. Disattivare per controllare la t #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "Velocità di riscaldamento" #: fdmprinter.def.json @@ -313,7 +327,7 @@ msgstr "La velocità (°C/s) alla quale l’ugello si riscalda calcolando la med #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "Velocità di raffreddamento" #: fdmprinter.def.json @@ -333,8 +347,8 @@ msgstr "Il tempo minimo in cui un estrusore deve essere inattivo prima che l’u #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" -msgstr "Tipo di codice G" +msgid "G-code Flavor" +msgstr "Versione codice G" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" @@ -398,7 +412,7 @@ msgstr "Specifica se usare comandi di retrazione firmware (G10/G11) anziché uti #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "Aree non consentite" #: fdmprinter.def.json @@ -418,7 +432,7 @@ msgstr "Un elenco di poligoni con aree alle quali l’ugello non può accedere." #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "Poligono testina macchina" #: fdmprinter.def.json @@ -428,7 +442,7 @@ msgstr "Una silhouette 2D della testina di stampa (cappucci ventola esclusi)." #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" +msgid "Machine Head & Fan Polygon" msgstr "Poligono testina macchina e ventola" #: fdmprinter.def.json @@ -438,7 +452,7 @@ msgstr "Una silhouette 2D della testina di stampa (cappucci ventola inclusi)." #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Altezza gantry" #: fdmprinter.def.json @@ -468,7 +482,7 @@ msgstr "Il diametro interno dell’ugello. Modificare questa impostazione quando #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" +msgid "Offset with Extruder" msgstr "Offset con estrusore" #: fdmprinter.def.json @@ -1016,6 +1030,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Indica il numero degli strati inferiori. Quando calcolato mediante lo spessore dello strato inferiore, il valore viene arrotondato a numero intero." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Layer inferiori iniziali" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Il numero di layer inferiori iniziali, dal piano di stampa verso l'alto. Quando viene calcolato mediante lo spessore inferiore, questo valore viene arrotondato" +" a un numero intero." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1266,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Angolo più acuto" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Posizione della cucitura in Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "La posizione accanto al punto in cui avviare la stampa di ciascuna parte in uno layer." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Indietro a sinistra" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Indietro" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Indietro a destra" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Destra" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Avanti a destra" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Avanti" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Avanti a sinistra" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Sinistra" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1293,8 +1368,8 @@ msgstr "Preferenze angolo giunzione" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Controlla se gli angoli sul profilo del modello influenzano la posizione della giunzione. Nessuno significa che gli angoli non hanno alcuna influenza sulla posizione della giunzione. Nascondi giunzione favorisce la presenza della giunzione su un angolo interno. Esponi giunzione favorisce la presenza della giunzione su un angolo esterno. Nascondi o esponi giunzione favorisce la presenza della giunzione su un angolo interno o esterno." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Controlla se gli angoli sul profilo del modello influenzano la posizione della giunzione. Nessuno significa che gli angoli non hanno alcuna influenza sulla posizione della giunzione. Nascondi giunzione favorisce la presenza della giunzione su un angolo interno. Esponi giunzione favorisce la presenza della giunzione su un angolo esterno. Nascondi o esponi giunzione favorisce la presenza della giunzione su un angolo interno o esterno. Smart Hiding consente sia gli angoli interni che quelli esterni ma sceglie con maggiore frequenza gli angoli interni, se opportuno." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1316,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Nascondi o esponi giunzione" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Occultamento intelligente" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1328,13 +1408,13 @@ msgstr "Se abilitato, le coordinate della giunzione Z sono riferite al centro di #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ignora i piccoli interstizi a Z" +msgid "No Skin in Z Gaps" +msgstr "Nessun rivest. est. negli interstizi a Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Quando il modello presenta piccoli spazi vuoti verticali, circa il 5% del tempo di calcolo supplementare può essere utilizzato per la generazione di rivestimenti esterni superiori ed inferiori in questi interstizi. In questo caso disabilitare l’impostazione." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Quando il modello presenta piccoli spazi vuoti verticali composti da un numero ridotto di strati, intorno a questi strati di norma dovrebbe essere presente un rivestimento esterno nell'interstizio. Abilitare questa impostazione per non generare il rivestimento esterno se l'interstizio verticale è molto piccolo. Ciò consente di migliorare il tempo di stampa e il tempo di sezionamento, ma dal punto di vista tecnico lascia il riempimento esposto all'aria." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1353,8 +1433,8 @@ msgstr "Abilita stiratura" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Ulteriore passaggio sopra la superficie superiore, senza estrusione di materiale. Ha lo scopo di fondere ulteriormente la plastica alla sommità, creando una superficie più uniforme." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Andare ancora una volta sulla superficie superiore, questa volta estrudendo una piccolissima quantità di materiale. Lo scopo è quello di sciogliere ulteriormente la plastica sulla parte superiore, creando una superficie più liscia. La pressione nella camera dell'ugello viene mantenuta elevata, in modo che le grinze nella superficie siano riempite con il materiale." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1446,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Indica la variazione della velocità istantanea massima durante la stiratura." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Percentuale di sovrapposizione del rivestimento esterno" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Regolare l’entità della sovrapposizione tra le pareti e (i punti finali delle) linee centrali del rivestimento esterno espressa in percentuale delle larghezze delle linee del rivestimento esterno. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. Si noti che, data una larghezza uguale del rivestimento esterno e della linea perimetrale, qualsiasi percentuale superiore al 50% può già causare il superamento della parete da parte del rivestimento esterno in quanto, in quel punto, la posizione dell’ugello dell’estrusore del rivestimento esterno può già avere superato la parte centrale della parete." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Sovrapposizione del rivestimento esterno" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Regolare l’entità della sovrapposizione tra le pareti e (i punti finali delle) linee centrali del rivestimento esterno. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. Si noti che, data una larghezza uguale del rivestimento esterno e della linea perimetrale, qualsiasi percentuale superiore alla metà della parete può già causare il superamento della parete da parte del rivestimento esterno in quanto, in quel punto, la posizione dell’ugello dell’estrusore del rivestimento esterno può già aver superato la parte centrale della parete." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1611,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Il riempimento si sposta di questa distanza lungo l'asse Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Avvio con riempimento casuale" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Decidere in modo casuale quale sarà la linea di riempimento ad essere stampata per prima. In tal modo si evita che un segmento diventi il più resistente sebbene si esegua uno spostamento aggiuntivo." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1631,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "Aggiunge pareti supplementari intorno alla zona di riempimento. Queste pareti possono ridurre l’abbassamento delle linee del rivestimento esterno superiore/inferiore, pertanto saranno necessari meno strati di rivestimento esterno superiore/inferiore per ottenere la stessa qualità al costo del materiale supplementare.\nQuesta funzione può essere abbinata a Collega poligoni riempimento per collegare tutto il riempimento in un unico percorso di estrusione senza necessità di avanzamenti o arretramenti, se configurata correttamente." +msgstr "" +"Aggiunge pareti supplementari intorno alla zona di riempimento. Queste pareti possono ridurre l’abbassamento delle linee del rivestimento esterno superiore/inferiore, pertanto saranno necessari meno strati di rivestimento esterno superiore/inferiore per ottenere la stessa qualità al costo del materiale supplementare.\n" +"Questa funzione può essere abbinata a Collega poligoni riempimento per collegare tutto il riempimento in un unico percorso di estrusione senza necessità di avanzamenti o arretramenti, se configurata correttamente." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1663,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Indica la quantità di sovrapposizione tra il riempimento e le pareti. Una leggera sovrapposizione consente il saldo collegamento delle pareti al riempimento." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Percentuale di sovrapposizione del rivestimento esterno" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Entità della sovrapposizione tra il rivestimento e le pareti espressa in percentuale della larghezza della linea del rivestimento esterno. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. È una percentuale delle larghezze medie delle linee del rivestimento e della parete più interna." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Sovrapposizione del rivestimento esterno" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "Indica la quantità di sovrapposizione tra il rivestimento esterno e le pareti. Una leggera sovrapposizione consente il saldo collegamento delle pareti al rivestimento esterno." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1863,6 +1955,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "La temperatura preimpostata utilizzata per la stampa. Deve essere la temperatura “base” di un materiale. Tutte le altre temperature di stampa devono usare scostamenti basati su questo valore" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "Temperatura volume di stampa" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "La temperatura dell'ambiente in cui stampare. Se il valore è 0, la temperatura del volume di stampa non verrà regolata." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1973,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Il tasso di contrazione in percentuale." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Materiale cristallino" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Questo tipo di materiale è quello che si stacca in modo netto quando viene riscaldato (cristallino) oppure è il tipo che produce lunghe catene di polimeri intrecciati (non cristallino)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Posizione retratta anti fuoriuscita di materiale" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "La distanza alla quale deve essere retratto il materiale prima che smetta di fuoriuscire." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Velocità di retrazione anti fuoriuscita del materiale" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "La velocità a cui deve essere retratto il materiale durante un cambio di filamento per evitare la fuoriuscita di materiale." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Posizione di retrazione prima della rottura" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "La lunghezza massima di estensione del filamento prima che si rompa durante il riscaldamento." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Velocità di retrazione prima della rottura" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "La velocità massima di retrazione del filamento prima che si rompa durante questa operazione." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Posizione di retrazione per la rottura" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "La distanza di retrazione del filamento al fine di consentirne la rottura netta." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Velocità di retrazione per la rottura" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "La velocità alla quale retrarre il filamento al fine di romperlo in modo netto." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatura di rottura" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "La temperatura a cui il filamento viene rotto, con una rottura netta." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1983,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Determina la compensazione del flusso: la quantità di materiale estruso viene moltiplicata per questo valore." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Flusso della parete" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Compensazione del flusso sulle linee perimetrali." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Flusso della parete esterna" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Compensazione del flusso sulla linea perimetrale più esterna." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Flusso pareti interne" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Compensazione del flusso sulle linee perimetrali per tutte le linee perimetrali tranne quella più esterna." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Flusso superiore/inferiore" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Compensazione del flusso sulle linee superiore/inferiore." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Flusso rivestimento esterno superficie superiore" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Compensazione del flusso sulle linee delle aree nella parte superiore della stampa." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Flusso di riempimento" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Compensazione del flusso sulle linee di riempimento." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Flusso dello skirt/brim" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Compensazione del flusso sulle linee dello skirt o del brim." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Flusso del supporto" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Compensazione del flusso sulle linee di supporto." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Flusso interfaccia di supporto" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Compensazione del flusso sulle linee di supporto superiore o inferiore." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Flusso supporto superiore" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Compensazione del flusso sulle linee di supporto superiore." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Flusso supporto inferiore" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Compensazione del flusso sulle linee di supporto inferiore." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Flusso torre di innesco" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Compensazione del flusso sulle linee della torre di innesco." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2100,7 +2402,7 @@ msgstr "Limitazione delle retrazioni del supporto" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "Omettere la retrazione negli spostamenti da un supporto ad un altro in linea retta. L'abilitazione di questa impostazione riduce il tempo di stampa, ma può comportare un'eccessiva produzione di filamenti all'interno della struttura del supporto." #: fdmprinter.def.json @@ -2120,8 +2422,8 @@ msgstr "Distanza di retrazione cambio ugello" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "Indica il valore di retrazione: impostato a 0 per nessuna retrazione. Questo valore generalmente dovrebbe essere lo stesso della lunghezza della zona di riscaldamento." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "Indica il valore di retrazione alla commutazione degli estrusori. Impostato a 0 per nessuna retrazione. Questo valore generalmente dovrebbe essere lo stesso della lunghezza della zona di riscaldamento." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2153,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Indica la velocità alla quale il filamento viene sospinto indietro dopo la retrazione per cambio ugello." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Quantità di materiale extra della Prime Tower, al cambio ugello" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Materiale extra per l'innesco dopo il cambio dell'ugello." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2344,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Indica la velocità a cui sono stampati lo skirt ed il brim. Normalmente questa operazione viene svolta alla velocità di stampa dello strato iniziale, ma a volte è possibile che si desideri stampare lo skirt o il brim ad una velocità diversa." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Velocità massima Z" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Velocità di sollevamento Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Indica la velocità massima di spostamento del piano di stampa. L’impostazione di questo valore a zero causa l’utilizzo per la stampa dei valori preimpostati in fabbrica per la velocità massima Z." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Velocità alla quale viene eseguito il movimento Z verticale per i sollevamenti in Z. In genere è inferiore alla velocità di stampa, dal momento che il piano o il corpo di stampa della macchina sono più difficili da spostare." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2780,8 +3092,8 @@ msgstr "Modalità Combing" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "La funzione Combing tiene l’ugello all’interno delle aree già stampate durante lo spostamento. In tal modo le corse di spostamento sono leggermente più lunghe, ma si riduce l’esigenza di effettuare retrazioni. Se questa funzione viene disabilitata, il materiale viene retratto e l’ugello si sposta in linea retta al punto successivo. È anche possibile evitare il combing sopra le aree del rivestimento esterno superiore/inferiore effettuando il combing solo nel riempimento. Si noti che l’opzione ‘Nel riempimento' si comporta esattamente come l’opzione ‘Non nel rivestimento' delle precedenti versioni Cura." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "La funzione Combing tiene l’ugello all’interno delle aree già stampate durante lo spostamento. In tal modo le corse di spostamento sono leggermente più lunghe ma si riduce l’esigenza di effettuare retrazioni. Se questa funzione viene disabilitata, il materiale viene retratto e l’ugello si sposta in linea retta al punto successivo. È anche possibile evitare il combing sopra le aree del rivestimento esterno superiore/inferiore o effettuare il combing solo nel riempimento." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2853,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "La distanza tra l’ugello e le parti già stampate quando si effettua lo spostamento con aggiramento." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Avvio strati con la stessa parte" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "In ciascuno strato inizia la stampa dell’oggetto vicino allo stesso punto, in modo che non si inizia un nuovo strato con la stampa del pezzo con cui è terminato lo strato precedente. Questo consente di ottenere migliori sovrapposizioni e parti piccole, ma aumenta il tempo di stampa." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2923,6 +3225,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "Dopo il passaggio della macchina da un estrusore all’altro, il piano di stampa viene abbassato per creare uno spazio tra l’ugello e la stampa. In tal modo si previene il rilascio di materiale fuoriuscito dall’ugello sull’esterno di una stampa." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "Z Hop dopo cambio altezza estrusore" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "La differenza di altezza durante l'esecuzione di uno Z Hop dopo il cambio dell'estrusore." + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3193,6 +3505,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Incrociata" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "Gyroid" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3254,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Indica la distanza tra le linee della struttura di supporto dello strato iniziale stampato. Questa impostazione viene calcolata mediante la densità del supporto." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Direzione delle linee di riempimento supporto" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Indica l’orientamento della configurazione del riempimento per i supporti. La configurazione del riempimento del supporto viene ruotata sul piano orizzontale." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Elenco di direzioni linee intere da utilizzare. Gli elementi dall'elenco sono utilizzati in sequenza con il progredire dei layers e, al raggiungimento della fine dell'elenco, la sequenza ricomincia dall’inizio. Le voci elencate sono separate da virgole e l'intero elenco è racchiuso tra parentesi quadre. L’elenco predefinito è vuoto, vale a dire che utilizza l'angolo predefinito di 0 gradi." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3390,8 +3707,8 @@ msgstr "Distanza giunzione supporto" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Indica la distanza massima tra le strutture di supporto nelle direzioni X/Y. Quando la distanza tra le strutture è inferiore al valore indicato, le strutture convergono in una unica." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "La distanza massima tra le strutture di supporto nelle direzioni X/Y. Quando la distanza tra le strutture è inferiore al valore indicato, le strutture convergono in una unica." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3433,6 +3750,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "Indica l’altezza di riempimento del supporto di una data densità prima di passare a metà densità." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "Area minima supporto" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "Dimensioni minime area per i poligoni del supporto. I poligoni con un’area inferiore a questo valore non verranno generati." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3658,6 +3985,99 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Zig Zag" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "Area minima interfaccia supporto" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Dimensione minima dell'area per i poligoni dell'interfaccia di supporto. I poligoni con un'area più piccola rispetto a questo valore saranno stampati come" +" supporto normale." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "Area minima parti superiori supporto" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Dimensione minima dell'area per le parti superiori del supporto. I poligoni con un'area più piccola rispetto a questo valore saranno stampati come supporto" +" normale." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "Area minima parti inferiori supporto" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Dimensione minima dell'area per le parti inferiori del supporto. I poligoni con un'area più piccola rispetto a questo valore saranno stampati come supporto" +" normale." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "Espansione orizzontale interfaccia supporto" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "Entità di offset applicato ai poligoni di interfaccia del supporto." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "Espansione orizzontale parti superiori supporto" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "Entità di offset applicato alle parti superiori del supporto." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "Espansione orizzontale parti inferiori supporto" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "Entità di offset applicato alle parti inferiori del supporto." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Direzioni della linea dell'interfaccia di supporto" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Elenco di direzioni linee intere da utilizzare. Gli elementi dall'elenco sono utilizzati in sequenza con il progredire dei layers e, al raggiungimento della fine dell'elenco, la sequenza ricomincia dall’inizio. Le voci elencate sono separate da virgole e l'intero elenco è racchiuso tra parentesi quadre. L'elenco predefinito è vuoto, vale a dire che utilizza gli angoli predefiniti (alterna tra 45 e 135 gradi se le interfacce sono abbastanza spesse oppure 90 gradi)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Direzioni delle linee di supporto superiori" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Elenco di direzioni linee intere da utilizzare. Gli elementi dall'elenco sono utilizzati in sequenza con il progredire dei layers e, al raggiungimento della fine dell'elenco, la sequenza ricomincia dall’inizio. Le voci elencate sono separate da virgole e l'intero elenco è racchiuso tra parentesi quadre. L'elenco predefinito è vuoto, vale a dire che utilizza gli angoli predefiniti (alterna tra 45 e 135 gradi se le interfacce sono abbastanza spesse oppure 90 gradi)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Direzioni della larghezza della linea di supporto inferiore" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Elenco di direzioni linee intere da utilizzare. Gli elementi dall'elenco sono utilizzati in sequenza con il progredire dei layers e, al raggiungimento della fine dell'elenco, la sequenza ricomincia dall’inizio. Le voci elencate sono separate da virgole e l'intero elenco è racchiuso tra parentesi quadre. L'elenco predefinito è vuoto, vale a dire che utilizza gli angoli predefiniti (alterna tra 45 e 135 gradi se le interfacce sono abbastanza spesse oppure 90 gradi)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3699,14 +4119,14 @@ msgid "The diameter of a special tower." msgstr "Corrisponde al diametro di una torre speciale." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Diametro minimo" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Diametro supportato dalla torre" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "È il diametro minimo nelle direzioni X/Y di una piccola area, che deve essere sostenuta da una torre speciale." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "È il diametro massimo nelle direzioni X/Y di una piccola area, che deve essere sostenuta da una torre speciale." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3828,7 +4248,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "Indica la distanza orizzontale tra lo skirt ed il primo strato della stampa.\nQuesta è la distanza minima. Più linee di skirt aumenteranno tale distanza." +msgstr "" +"Indica la distanza orizzontale tra lo skirt ed il primo strato della stampa.\n" +"Questa è la distanza minima. Più linee di skirt aumenteranno tale distanza." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4200,16 +4622,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Stampa una torre accanto alla stampa che serve per innescare il materiale dopo ogni cambio ugello." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Torre di innesco circolare" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Conferisce alla torre di innesco una forma circolare." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4250,16 +4662,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Indica la coordinata Y della posizione della torre di innesco." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Flusso torre di innesco" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Determina la compensazione del flusso: la quantità di materiale estruso viene moltiplicata per questo valore." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4270,6 +4672,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "Dopo la stampa della torre di innesco con un ugello, pulisce il materiale fuoriuscito dall’altro ugello sulla torre di innesco." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "Brim torre di innesco" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "Le torri di innesco potrebbero richiedere un'adesione supplementare fornita da un bordo (brim), anche se il modello non lo prevede. Attualmente non può essere utilizzato con il tipo di adesione 'Raft'." + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4390,6 +4802,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Rimuovere gli strati vuoti sotto il primo strato stampato, se presenti. La disabilitazione di questa impostazione può provocare la presenza di primi strati vuoti, se l'impostazione di Tolleranza di sezionamento è impostata su Esclusiva o Intermedia." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Risoluzione massima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "La dimensione minima di un segmento di linea dopo il sezionamento. Se tale dimensione aumenta, la maglia avrà una risoluzione inferiore. Questo può consentire alla stampante di mantenere la velocità per processare il g-code ed aumenterà la velocità di sezionamento eliminando i dettagli della maglia che non è comunque in grado di processare." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Risoluzione massima di spostamento" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "La dimensione minima di un segmento lineare di spostamento dopo il sezionamento. Aumentando tale dimensione, le corse di spostamento avranno meno angoli arrotondati. La stampante può così mantenere la velocità per processare il g-code, ma si può verificare una riduzione della precisione di aggiramento del modello." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Deviazione massima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "La deviazione massima consentita quando si riduce la risoluzione per l'impostazione Risoluzione massima. Se si aumenta questo parametro, la stampa sarà meno precisa, ma il g-code sarà più piccolo. Deviazione massima rappresenta il limite per Risoluzione massima; pertanto se le due impostazioni sono in conflitto, verrà considerata vera l'impostazione Deviazione massima." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4552,8 +4994,8 @@ msgstr "Levigazione dei profili con movimento spiraliforme" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Leviga i profili con movimento spiraliforme per ridurre la visibilità della giunzione Z (la giunzione Z dovrebbe essere appena visibile sulla stampa, ma rimane visibile nella vista dello strato). Notare che la levigatura tende a rimuovere le bavature fini della superficie." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Leviga i profili con movimento spiraliforme per ridurre la visibilità della giunzione Z (la giunzione Z dovrebbe essere appena visibile sulla stampa, ma rimane visibile nella visualizzazione a strati). Notare che la levigatura tende a rimuovere le bavature fini della superficie." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4765,26 +5207,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "I poligoni in strati sezionati con una circonferenza inferiore a questo valore verranno scartati. I valori inferiori generano una maglia con risoluzione superiore al costo del tempo di sezionamento. È dedicata in particolare alle stampanti SLA ad alta risoluzione e a modelli 3D molto piccoli, ricchi di dettagli." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Risoluzione massima" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "La dimensione minima di un segmento di linea dopo il sezionamento. Se tale dimensione aumenta, la maglia avrà una risoluzione inferiore. Questo può consentire alla stampante di mantenere la velocità per processare il g-code ed aumenterà la velocità di sezionamento eliminando i dettagli della maglia che non è comunque in grado di processare." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Risoluzione massima di spostamento" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "La dimensione minima di un segmento lineare di spostamento dopo il sezionamento. Aumentando tale dimensione, le corse di spostamento avranno meno angoli arrotondati. La stampante può così mantenere la velocità per processare il g-code, ma si può verificare una riduzione della precisione di aggiramento del modello." - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4925,16 +5347,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "È la velocità a cui eseguire lo spostamento durante il Coasting, rispetto alla velocità del percorso di estrusione. Si consiglia di impostare un valore leggermente al di sotto del 100%, poiché durante il Coasting la pressione nel tubo Bowden scende." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Rotazione alternata del rivestimento esterno" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Alterna la direzione di stampa degli strati superiori/inferiori. Normalmente vengono stampati solo diagonalmente. Questa impostazione aggiunge le direzioni solo X e solo Y." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5042,8 +5454,8 @@ msgstr "Abilitazione del supporto conico" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Funzione sperimentale: realizza aree di supporto più piccole nella parte inferiore che in corrispondenza dello sbalzo." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Realizza aree di supporto più piccole nella parte inferiore che in corrispondenza dello sbalzo." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5107,23 +5519,24 @@ msgstr "Indica la distanza media tra i punti casuali introdotti su ciascun segme #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Offset massimo dell'estrusione di compensazione del flusso" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "La massima distanza in mm da compensare." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "Distanza massima in mm di spostamento del filamento per compensare le modifiche nella velocità di flusso." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Fattore di compensazione del flusso" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Il fattore di moltiplicazione per il flusso -> traslazione distanza." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Distanza di spostamento del filamento al fine di compensare le modifiche nella velocità di flusso, come percentuale della distanza di spostamento del filamento" +" in un secondo di estrusione." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5275,7 +5688,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Indica la distanza di uno spostamento verso l'alto con estrusione a velocità dimezzata.\nCiò può garantire una migliore adesione agli strati precedenti, senza eccessivo riscaldamento del materiale su questi strati. Applicabile solo alla funzione Wire Printing." +msgstr "" +"Indica la distanza di uno spostamento verso l'alto con estrusione a velocità dimezzata.\n" +"Ciò può garantire una migliore adesione agli strati precedenti, senza eccessivo riscaldamento del materiale su questi strati. Applicabile solo alla funzione Wire Printing." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5384,7 +5799,7 @@ msgstr "Indica la distanza tra l'ugello e le linee diagonali verso il basso. Un #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "Uso di strati adattivi" #: fdmprinter.def.json @@ -5394,7 +5809,7 @@ msgstr "Gli strati adattivi calcolano l’altezza degli strati in base alla form #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "Variazione massima strati adattivi" #: fdmprinter.def.json @@ -5404,7 +5819,7 @@ msgstr "La differenza di altezza massima rispetto all’altezza dello strato di #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "Dimensione variazione strati adattivi" #: fdmprinter.def.json @@ -5414,13 +5829,14 @@ msgstr "La differenza in altezza dello strato successivo rispetto al precedente. #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "Soglia strati adattivi" +msgid "Adaptive Layers Topography Size" +msgstr "Dimensione della topografia dei layer adattivi" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Soglia per l’utilizzo o meno di uno strato di dimensioni minori. Questo numero è confrontato al valore dell’inclinazione più ripida di uno strato." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Distanza orizzontale target tra due layer adiacenti. Riducendo questa impostazione, i layer più sottili verranno utilizzati per avvicinare i margini dei" +" layer." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5429,8 +5845,9 @@ msgstr "Angolo parete di sbalzo" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Le pareti che sbalzano oltre questo angolo verranno stampate utilizzando le impostazioni parete di sbalzo. Quando il valore è 90, nessuna parete sarà trattata come sbalzo." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Le pareti con uno sbalzo superiore a quest'angolo saranno stampate con le impostazioni per le pareti a sbalzo. Se il valore è 90, nessuna parete sarà trattata" +" come parete a sbalzo. Nemmeno lo sbalzo supportato dal supporto sarà trattato come tale." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5632,6 +6049,198 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "La velocità della ventola in percentuale da usare per stampare il terzo strato del rivestimento esterno ponte." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "Pulitura ugello tra gli strati" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "Se includere il codice G di pulitura ugello tra gli strati. Abilitare questa impostazione potrebbe influire sul comportamento di retrazione al cambio strato. Utilizzare le impostazioni di Retrazione per pulitura per controllare la retrazione in corrispondenza degli strati in cui lo script di pulitura sarà funzionante." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "Volume di materiale tra le operazioni di pulitura" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "Il massimo volume di materiale, che può essere estruso prima di iniziare la successiva operazione di pulitura ugello." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "Retrazione per pulitura abilitata" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "Ritrae il filamento quando l'ugello si sta muovendo su un'area non stampata." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "Distanza di retrazione per pulitura" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "L'entità di retrazione del filamento in modo che non fuoriesca durante la sequenza di pulitura." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "Entità di innesco supplementare dopo retrazione per pulitura" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "Qui è possibile compensare l’eventuale trafilamento di materiale che può verificarsi nel corso della pulitura durante il movimento." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "Velocità di retrazione per pulitura" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "Indica la velocità alla quale il filamento viene retratto e preparato durante un movimento di retrazione per pulitura." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "Velocità di retrazione per pulitura" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "Indica la velocità alla quale il filamento viene retratto durante un movimento di retrazione per pulitura." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Velocità di innesco dopo la retrazione" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "Indica la velocità alla quale il filamento viene preparato durante un movimento di retrazione per pulitura." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "Pausa pulitura" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "Pausa dopo ripristino." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "Z Hop pulitura durante retrazione" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "Ogniqualvolta avviene una retrazione, il piano di stampa viene abbassato per creare uno spazio tra l’ugello e la stampa. Questo impedisce l'urto dell'ugello sulla stampa durante gli spostamenti, riducendo la possibilità di far cadere la stampa dal piano." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "Altezza Z Hop pulitura" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "La differenza di altezza durante l’esecuzione di uno Z Hop." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "Velocità di sollevamento (Hop) per pulitura" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "Velocità di spostamento dell'asse z durante il sollevamento (Hop)." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "Posizione X spazzolino di pulitura" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "Posizione X in cui verrà avviato lo script di pulitura." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "Conteggio ripetizioni operazioni di pulitura" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "Numero di passaggi dell'ugello attraverso lo spazzolino." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "Distanza spostamento longitudinale di pulitura" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "La distanza dello spostamento longitudinale eseguito dalla testina attraverso lo spazzolino." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Dimensione massima foro piccolo" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "I fori e i profili delle parti con un diametro inferiore a quello indicato verranno stampati utilizzando Velocità Dettagli di piccole dimensioni." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Lunghezza massima dettagli di piccole dimensioni" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Profili di dettagli inferiori a questa lunghezza saranno stampati utilizzando Velocità Dettagli di piccole dimensioni." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Velocità dettagli piccole dimensioni" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "I dettagli di piccole dimensioni verranno stampati a questa percentuale della velocità di stampa normale. Una stampa più lenta può aiutare in termini di" +" adesione e precisione." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Velocità layer iniziale per dettagli di piccole dimensioni" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "I dettagli di piccole dimensioni sul primo layer saranno stampati a questa percentuale della velocità di stampa normale. Una stampa più lenta può aiutare" +" in termini di adesione e precisione." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5692,6 +6301,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Dimensioni minime area per i poligoni di interfaccia del supporto. I poligoni con un’area inferiore a questo valore non verranno generati." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Dimensioni minime area per le parti superiori del supporto. I poligoni con un’area inferiore a questo valore non verranno generati." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Dimensioni minime area per le parti inferiori del supporto. I poligoni con un’area inferiore a questo valore non verranno generati." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Rotazione alternata del rivestimento esterno" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Alterna la direzione di stampa degli strati superiori/inferiori. Normalmente vengono stampati solo diagonalmente. Questa impostazione aggiunge le direzioni solo X e solo Y." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Offset massimo dell'estrusione di compensazione del flusso" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "La massima distanza in mm da compensare." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Fattore di compensazione del flusso" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Il fattore di moltiplicazione per il flusso -> traslazione distanza." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Soglia strati adattivi" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Soglia per l’utilizzo o meno di uno strato di dimensioni minori. Questo numero è confrontato al valore dell’inclinazione più ripida di uno strato." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Le pareti che sbalzano oltre questo angolo verranno stampate utilizzando le impostazioni parete di sbalzo. Quando il valore è 90, nessuna parete sarà trattata come sbalzo." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "I dettagli di piccole dimensioni verranno stampati a questa percentuale della velocità di stampa normale. Una stampa più lenta può aiutare in termini di adesione e precisione." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Velocità primo layer" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "I dettagli di piccole dimensioni sul primo layer saranno stampati a questa percentuale della velocità di stampa normale. Una stampa più lenta può aiutare in termini di adesione e precisione." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Ulteriore passaggio sopra la superficie superiore, senza estrusione di materiale. Ha lo scopo di fondere ulteriormente la plastica alla sommità, creando una superficie più uniforme." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Avvio strati con la stessa parte" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "In ciascuno strato inizia la stampa dell’oggetto vicino allo stesso punto, in modo che non si inizia un nuovo strato con la stampa del pezzo con cui è terminato lo strato precedente. Questo consente di ottenere migliori sovrapposizioni e parti piccole, ma aumenta il tempo di stampa." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Indica l’orientamento della configurazione del riempimento per i supporti. La configurazione del riempimento del supporto viene ruotata sul piano orizzontale." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "La deviazione massima consentita quando si riduce la risoluzione per l'impostazione di Risoluzione massima. Se si aumenta questo parametro, la stampa sarà meno precisa, ma il codice g sarà più piccolo." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Tipo di codice G" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Controlla se gli angoli sul profilo del modello influenzano la posizione della giunzione. Nessuno significa che gli angoli non hanno alcuna influenza sulla posizione della giunzione. Nascondi giunzione favorisce la presenza della giunzione su un angolo interno. Esponi giunzione favorisce la presenza della giunzione su un angolo esterno. Nascondi o esponi giunzione favorisce la presenza della giunzione su un angolo interno o esterno." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ignora i piccoli interstizi a Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Quando il modello presenta piccoli spazi vuoti verticali, circa il 5% del tempo di calcolo supplementare può essere utilizzato per la generazione di rivestimenti esterni superiori ed inferiori in questi interstizi. In questo caso disabilitare l’impostazione." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "La temperatura utilizzata per il volume di stampa. Se il valore è 0, la temperatura del volume di stampa non verrà regolata." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Omettere la retrazione negli spostamenti da un supporto ad un altro in linea retta. L'abilitazione di questa impostazione riduce il tempo di stampa, ma può comportare un'eccessiva produzione di filamenti all'interno della struttura del supporto." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Velocità massima Z" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Indica la velocità massima di spostamento del piano di stampa. L’impostazione di questo valore a zero causa l’utilizzo per la stampa dei valori preimpostati in fabbrica per la velocità massima Z." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Indica la distanza massima tra le strutture di supporto nelle direzioni X/Y. Quando la distanza tra le strutture è inferiore al valore indicato, le strutture convergono in una unica." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Diametro minimo" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "È il diametro minimo nelle direzioni X/Y di una piccola area, che deve essere sostenuta da una torre speciale." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Torre di innesco circolare" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Conferisce alla torre di innesco una forma circolare." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Determina la compensazione del flusso: la quantità di materiale estruso viene moltiplicata per questo valore." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Leviga i profili con movimento spiraliforme per ridurre la visibilità della giunzione Z (la giunzione Z dovrebbe essere appena visibile sulla stampa, ma rimane visibile nella vista dello strato). Notare che la levigatura tende a rimuovere le bavature fini della superficie." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Funzione sperimentale: realizza aree di supporto più piccole nella parte inferiore che in corrispondenza dello sbalzo." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "Numero di estrusori abilitati" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Diametro esterno ugello" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Lunghezza ugello" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Angolo ugello" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Lunghezza della zona di riscaldamento" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Velocità di riscaldamento" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Velocità di raffreddamento" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "Tipo di codice G" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "Aree non consentite" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Poligono testina macchina" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Poligono testina macchina e ventola" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Altezza gantry" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Offset con estrusore" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "Uso di strati adattivi" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "Variazione massima strati adattivi" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "Dimensione variazione strati adattivi" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "Soglia strati adattivi" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Entità della sovrapposizione tra il rivestimento e le pareti espressa in percentuale della larghezza della linea del rivestimento esterno. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. È una percentuale delle larghezze medie delle linee del rivestimento e della parete più interna." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "Indica la quantità di sovrapposizione tra il rivestimento esterno e le pareti. Una leggera sovrapposizione consente il saldo collegamento delle pareti al rivestimento esterno." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "Indica il valore di retrazione: impostato a 0 per nessuna retrazione. Questo valore generalmente dovrebbe essere lo stesso della lunghezza della zona di riscaldamento." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "La funzione Combing tiene l’ugello all’interno delle aree già stampate durante lo spostamento. In tal modo le corse di spostamento sono leggermente più lunghe, ma si riduce l’esigenza di effettuare retrazioni. Se questa funzione viene disabilitata, il materiale viene retratto e l’ugello si sposta in linea retta al punto successivo. È anche possibile evitare il combing sopra le aree del rivestimento esterno superiore/inferiore effettuando il combing solo nel riempimento. Si noti che l’opzione ‘Nel riempimento' si comporta esattamente come l’opzione ‘Non nel rivestimento' delle precedenti versioni Cura." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "Collega i percorsi del rivestimento esterno superiore/inferiore quando corrono uno accanto all’altro. Per le configurazioni concentriche, l’abilitazione di questa impostazione riduce notevolmente il tempo di spostamento, tuttavia poiché i collegamenti possono aver luogo a metà del riempimento, con questa funzione la qualità della superficie superiore potrebbe risultare inferiore." diff --git a/resources/i18n/ja_JP/cura.po b/resources/i18n/ja_JP/cura.po index 13916ef1e2..def6a45abf 100644 --- a/resources/i18n/ja_JP/cura.po +++ b/resources/i18n/ja_JP/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-11-06 14:58+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Japanese\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-09-23 14:15+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Japanese , Japanese \n" "Language: ja_JP\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.1\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "プリンターの設定" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-codeファイル" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter は非テキストモードはサポートしていません。" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "エクスポートする前にG-codeの準備をしてください。" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3Dモデルアシスタント" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,67 +70,50 @@ msgstr "" "

    可能な限り最高の品質および信頼性を得る方法をご覧ください。

    \n" "

    印字品質ガイドを見る

    " -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Changelogの表示" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "ファームウェアアップデート" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "アクティブ設定を平らにします" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF ファイル" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -#, fuzzy -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "プロファイルが平らになり、アクティベートされました。" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USBプリンティング" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USBを使ってプリントする" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USBを使ってプリントする" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "USBにて接続する" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "USBプリントを実行しています。Cura を閉じるとこのプリントも停止します。実行しますか?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3Gファイル" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "現在印刷中です。Curaは、前の印刷が完了するまでUSBを介した次の印刷を開始できません。" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "X3Gをファイルに書き込む" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3Gファイル" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "現在印刷中" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -144,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "GCodeGzWriter はテキストモードをサポートしていません。" #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Ultimakerフォーマットパッケージ" @@ -165,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "リムーバブルドライブ{0}に保存" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "書き出すために利用可能な形式のファイルがありません!" @@ -202,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "リムーバブルドライブ{0}に保存することができませんでした: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "エラー" @@ -233,8 +217,9 @@ msgstr "リムーバブルデバイス{0}を取り出す" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "警告" @@ -261,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "リムーバブルドライブ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "ネットワーク上のプリント" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "ネットワークのプリント" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "ネットワーク上で接続。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "ネットワーク上で接続。プリンタへのリクエストを承認してください。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "ネットワーク上で接続。プリントを操作するアクセス権がありません。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "プリンターへのアクセスが申請されました。プリンタへのリクエストを承認してください" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "認証ステータス" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "認証ステータス" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "再試行" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "アクセスリクエストを再送信" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "プリンターへのアクセスが承認されました" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "このプリンターへのアクセスが許可されていないため、プリントジョブの送信ができませんでした。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "アクセスのリクエスト" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "アクセスのリクエスト送信" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "新しいプリントジョブを開始できません。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Ultimakerの設定に問題があるため、印刷が開始できません。問題を解消してからやり直してください。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "ミスマッチの構成" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "選択された構成にてプリントを開始してもいいですか。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "プリンターの設定、キャリブレーションとCuraの構成にミスマッチがあります。プリンターに設置されたプリントコア及びフィラメントを元にCuraをスライスすることで最良の印刷結果を出すことができます。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "新しいデータの送信 (temporarily) をブロックします、前のプリントジョブが送信中です。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "プリンターにプリントデータを送信中" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "プリントデータを送信中" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "キャンセル" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "プリントコアがスロット{slot_number}に入っていません。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "材料がスロット{slot_number}に入っていません。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "エクストルーダー {extruder_id} に対して異なるプリントコア(Cura: {cura_printcore_name}, プリンター: {remote_printcore_name})が選択されています。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "異なるフィラメントが入っています(Cura:{0}, プリンター{1})エクストルーダー{2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "プリンターと同期する" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Curaで設定しているプリンタ構成を使用されますか?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "プリンターのプリントコア及びフィラメントが現在のプロジェクトと異なります。最善な印刷結果のために、プリンタに装着しているプリントコア、フィラメントに合わせてスライスして頂くことをお勧めします。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "ネットワーク上で接続" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "プリントジョブは正常にプリンターに送信されました。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "データを送信しました" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "モニター表示" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "プリンター’{printer_name}’が’{job_name}’のプリントを終了しました。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "プリントジョブ '{job_name}' は完了しました。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "プリント終了" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "ネットワーク上にて接続" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "ネットワーク上のプリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "ネットワークのプリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "ネットワーク上で接続" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "現在のジョブが送信されるまで待機してください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "印刷エラー" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "新しいクラウドプリンターが見つかりました" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "アカウントに接続された新しいプリンターが見つかりました。検出されたプリンターのリストで確認できます。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "今後このメッセージを表示しない" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "{0}に接続を試みていますが、これはグループのホストではありません。グループホストとして設定するには、ウェブページを参照してください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "グループホストではありません" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "グループの設定" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Ultimaker のアカウントを使用して、どこからでも印刷ジョブを送信およびモニターします。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Ultimaker Cloud に接続する" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "はじめに" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "印刷ジョブ送信中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "プリントジョブをプリンターにアップロードしています。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "プリントジョブは正常にプリンターに送信されました。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "データを送信しました" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Ultimaker Connectを実行していないプリンターに接続しようとしています。プリンターを最新のファームウェアに更新してください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "プリンターの更新" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Curaはグループ{0}のホストプリンターにまだインストールされていない材料プロフィールを検出しました。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "プリンターに材料を送信しています" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "データをプリンタにアップロードできませんでした。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "ネットワークエラー" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "翌日" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "本日" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "クラウドからプリントする" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "クラウドからプリントする" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "クラウドを使って接続しました" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "モニター" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "必要なアップデートの情報にアクセスできません。" @@ -508,22 +425,28 @@ msgctxt "@action:button" msgid "How to update" msgstr "アップデートの仕方" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "レイヤービュー" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Curaはワイヤープリンティング設定中には正確にレイヤーを表示しません" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "シミュレーションビュー" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "後処理" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" msgstr "G-codeを修正" @@ -537,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "サポートが印刷されないボリュームを作成します。" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Curaは、匿名化した利用統計を収集します。" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "データを収集中" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "詳細" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Curaが送信するデータについて詳しくご覧ください。" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "許可" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Curaが匿名化した利用統計を送信することを許可し、Curaの将来の改善を優先的に行うことに貢献します。プレファレンスと設定の一部、Curaのバージョン、スライスしているモデルのハッシュが送信されます。" - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -597,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF画像" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "圧縮トライアングルメッシュを開く" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTFバイナリ" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF埋め込みJSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "圧縮COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "選ばれたプリンターまたは選ばれたプリント構成が異なるため進行中の材料にてスライスを完了できません。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "スライスできません" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "現在の設定でスライスが完了できません。以下の設定にエラーがあります: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "モデル別の設定があるためスライスできません。1つまたは複数のモデルで以下の設定にエラーが発生しました:{error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "プライムタワーまたはプライム位置が無効なためスライスできません。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "無効な Extruder %s に関連付けられている造形物があるため、スライスできません。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "モデルのデータがビルトボリュームに入っていないためスライスできるものがありません。スケールやローテーションにて合うように設定してください。" +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "ビルドモジュールに合うモデルがない、または無効なエクストルーダーに割り当てられているため、スライスできるものがありません。モデルが合うように拡張または回転させるか、エクストルーダーを有効にしてください。" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "レイヤーを処理しています" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "インフォメーション" @@ -661,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "各モデル構成設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "推奨" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "カスタム" @@ -679,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF ファイル" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "ノズル" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "プロジェクトファイル {0} に不明なマシンタイプ {1} があります。マシンをインポートできません。代わりにモデルをインポートします。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "プロジェクトファイルを開く" @@ -706,22 +627,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Gファイル" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-codeを解析" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-codeの詳細" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "データファイルを送信する前に、プリンターとプリンターの構成設定にそのG-codeが適応しているか確認してください。G-codeの表示が適切でない場合があります。" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "バックアップを管理する" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "バックアップ" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "バックアップのリスト作成時にエラーが発生しました。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "バックアップのリストア中にエラーが発生しました。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "バックアップ" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "バックアップをアップロードしています..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "バックアップのアップロード中にエラーが発生しました。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "バックアップのアップロードを完了しました。" + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -743,330 +707,451 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "3Mf ファイルの書き込みエラー。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "プレビュー" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "アップグレードを選択する" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "チェックアップ" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "ビルドプレートを調整する" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "アウターウォール" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "インナーウォール" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "スキン" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "インフィル" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "サポートイルフィル" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "サポートインターフェイス" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "サポート" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "スカート" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "移動" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "退却" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "他" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "スライス前ファイル {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "ログインに失敗しました" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "サポート対象外" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "すでに存在するファイルです" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "{0} は既に存在します。ファイルを上書きしますか?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "上書きできません" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "選択されたフィラメントはプリンターとそのプリント構成に適応しておりません。" +msgid "Invalid file URL:" +msgstr "無効なファイルのURL:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "不適合フィラメント" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "現在利用可能な次のエクストルーダーに合わせて設定が変更されました:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "現在利用可能なエクストルーダー [%s] に合わせて設定が変更されました。" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "設定が更新されました" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "エクストルーダーを無効にしました" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "不明" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "{0}にプロファイルを書き出すのに失敗しました: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "{0}にプロファイルを書き出すことに失敗しました。:ライタープラグイン失敗の報告。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "{0}にプロファイルを書き出しました" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "書き出し完了" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "{0}: {1}からプロファイルを取り込むことに失敗しました" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "{0}からプロファイルの取り込に失敗しました:{1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "プリンタを追加する前に、{0}からプロファイルの取り込はできません。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" -msgstr "ファイル{0}にはカスタムプロファイルがインポートされていません。" +msgstr "ファイル{0}にはカスタムプロファイルがインポートされていません" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "{0}からプロファイルの取り込に失敗しました。" +msgstr "{0}からプロファイルの取り込に失敗しました:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "このプロファイル{0}には、正しくないデータが含まれているため、インポートできません。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "プロファイル{0}の中で定義されているマシン({1})は、現在お使いのマシン({2})と一致しないため、インポートできませんでした。" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" -msgstr "{0}からプロファイルの取り込に失敗しました。" +msgstr "{0}からプロファイルの取り込みに失敗しました:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "プロファイル {0}の取り込み完了" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "ファイル{0}には、正しいプロファイルが含まれていません。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "プロファイル{0}は不特定なファイルまたは破損があります。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "カスタムプロファイル" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "プロファイルはクオリティータイプが不足しています。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "進行中のプリント構成にあったクオリティータイプ{0}が見つかりませんでした。" -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "アウターウォール" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "インナーウォール" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "スキン" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "インフィル" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "サポートイルフィル" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "サポートインターフェイス" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "サポート" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "スカート" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "プライムタワー" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "移動" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "退却" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "他" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "スライス前ファイル {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "次" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "グループ #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "ネットワーク対応プリンター" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "閉める" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "ローカルプリンター" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "追加" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "キャンセル" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "ビジュアル" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "ビジュアルプロファイルは、優れたビジュアルと表面品質を目的としたビジュアルプロトタイプやモデルをプリントするために設計されています。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "エンジニアリングプロファイルは、精度向上と公差の厳格対応を目的とした機能プロトタイプや最終用途部品をプリントするために設計されています。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "ドラフト" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "ドラフトプロファイルは、プリント時間の大幅短縮を目的とした初期プロトタイプとコンセプト検証をプリントするために設計されています。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "上書きできません" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "カスタムプロファイル" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "すべてのサポートのタイプ ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "全てのファイル" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "カスタムフィラメント" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "カスタム" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "下のプリンターはグループの一員であるため接続できません" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "ネットワークで利用可能なプリンター" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "プリントシークエンス設定値により、ガントリーと造形物の衝突を避けるため印刷データの高さを低くしました。" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "造形サイズ" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "ユーザーデータディレクトリからアーカイブを作成できません: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "バックアップ" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "適切なデータまたはメタデータがないのにCuraバックアップをリストアしようとしました。" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "現行バージョンと一致しないCuraバックアップをリストアしようとしました。" +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "現行バージョンより上の Cura バックアップをリストアしようとしました。" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "応答を読み取れません。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Ultimaker アカウントサーバーに到達できません。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "このアプリケーションの許可において必要な権限を与えてください。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "ログイン時に予期しないエラーが発生しました。やり直してください。" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "造形データを増やす、配置する" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" +msgid "Placing Objects" msgstr "造形データを配置" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "全ての造形物の造形サイズに対し、適切な位置が確認できません" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "造形データを配置" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "造形物のために新しい位置を探索中" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "位置確認" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "位置を確保できません" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Curaを開始できません" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1081,32 +1166,32 @@ msgstr "" "

    問題解決のために、このクラッシュ報告をお送りください。

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "クラッシュ報告をUltimakerに送信する" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "詳しいクラッシュ報告を表示する" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "コンフィグレーションのフォルダーを表示する" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "バックアップとリセットの設定" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "クラッシュ報告" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" @@ -1117,321 +1202,285 @@ msgstr "" "

    「レポート送信」ボタンを使用してバグレポートが自動的に当社サーバーに送られるようにしてください

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "システム情報" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "不明" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Curaバージョン" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "プラットフォーム" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Qtバージョン" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "PyQtバージョン" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "初期化されていません
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • OpenGLバージョン: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • OpenGLベンダー: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • OpenGLレンダラー: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "エラー・トレースバック" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "ログ" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "ユーザー詳細" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "ユーザー説明 (注: 開発者はユーザーの言語を理解できない場合があるため、可能な限り英語を使用してください)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "レポート送信" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "プリンターを読み込み中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "プレファレンスをセットアップ中..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "シーンをセットアップ中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "インターフェイスを読み込み中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "一度に一つのG-codeしか読み取れません。{0}の取り込みをスキップしました。" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "G-codeを読み込み中は他のファイルを開くことができません。{0}の取り込みをスキップしました。" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "選択したモデルは読み込むのに小さすぎます。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "プリンターの設定" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "プリンター" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "プリンターの設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X(幅)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (奥行き)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (高さ)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "ビルドプレート形" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "センターを出します" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "ヒーテッドドベッド" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "加熱式ビルドボリューム" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "G-codeフレーバー" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "プリントヘッド設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "プリントヘッド左側からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "プリントヘッド前部からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "最大X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "プリントヘッド右側からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "最大Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "プリントヘッド後部からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "ガントリーの高さ" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "(X 軸及びY軸)ノズルの先端とガントリーシステムの高さに相違があります。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "エクストルーダーの数" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "G-Codeの開始" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "G-codeコマンドが最初に実行されるようにします。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "G-codeの終了" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "G-codeコマンドが最後に実行されるようにします。" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "プリンター" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "ノズル設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "ノズルサイズ" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "適合する材料直径" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "プリンターに対応したフィラメントの直径。正確な直径はフィラメント及びまたはプロファイルに変動します。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "ノズルオフセットX" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "ノズルオフセットY" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "冷却ファンの番号" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "エクストルーダーがG-Codeを開始する" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "エクストルーダーがG-Codeを終了する" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "インストール" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "インストールした" @@ -1441,69 +1490,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Curaパッケージデータベースに接続できません。接続を確認してください。" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "評価" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "プラグイン" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "マテリアル" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "ユーザー評価" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "バージョン" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "最終更新日" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "著者" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "ダウンロード" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "不明" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "インストールまたはアップデートにはログインが必要です" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "材料スプールの購入" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "アップデート" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "更新中" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "更新済み" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "ツールボックス" +msgid "Marketplace" +msgstr "マーケットプレース" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1530,52 +1592,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "プロファイル" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "確認" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "評価する前にはログインが必要です" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "評価する前にはパッケージをインストールする必要があります" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "パッケージへの変更を有効にするためにCuraを再起動する必要があります。" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Curaを終了する" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "地域貢献" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "コミュニティプラグイン" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "汎用材料" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "インストールした" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "再起動時にインストール" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "アップデートにはログインが必要です" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "ダウングレード" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "アンインストール" @@ -1596,12 +1673,12 @@ msgstr "" "このプラグインをインストールするにはこのライセンスに同意する必要があります。\n" "下の利用規約に同意しますか?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "承認する" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "拒否する" @@ -1611,22 +1688,62 @@ msgctxt "@label" msgid "Featured" msgstr "特長" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "互換性" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "プリンター" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "ビルドプレート" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "サポート" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "品質" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "技術データシート" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "安全データシート" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "印刷ガイドライン" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "ウェブサイト" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "パッケージ取得中…" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "ウェブサイト" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "電子メール" @@ -1636,23 +1753,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "このプリントの何かが問題です。クリックして調整のヒントをご覧ください。" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Changelogの表示" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "閉める" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1728,423 +1828,503 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "ファームウェアが見つからず、ファームウェアアップデート失敗しました。" -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "ユーザー用使用許諾契約" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "プリンター管理" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "既存の接続" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "ガラス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "このプリンター/グループはすでにCuraに追加されています。別のプリンター/グループを選択しえください。" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "キューをリモートで管理するには、プリンターのファームウェアを更新してください。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "クラウドプリンタをモニタリングしている場合は、ウェブカムを利用できません。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "読み込み中..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "利用不可" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "到達不能" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "アイドル" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "無題" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "匿名" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "構成の変更が必要です" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "詳細" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "利用できないプリンター" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "次の空き" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "順番を待つ" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "ブラウザで管理する" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "キューに印刷ジョブがありません。追加するには、スライスしてジョブを送信します。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "プリントジョブ" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "合計印刷時間" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "待ち時間" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "ネットワーク上で繋がったプリンターに接続" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "ネットワーク接続にて直接プリントするためには、必ずケーブルまたはWifiネットワークにて繋がっていることを確認してください。Curaをプリンターに接続していない場合でも、USBメモリを使って直接プリンターにg-codeファイルをトランスファーできます。" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "印刷ジョブをネットワークを介してプリンターに直接送信するには、ネットワークケーブルを使用してプリンターを確実にネットワークに接続するか、プリンターを WIFI ネットワークに接続します。Cura をプリンタに接続していない場合でも、USB ドライブを使用して g コードファイルをプリンターに転送することはできます。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "追加" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "以下のリストからプリンタを選択します:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "編集" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "取り除く" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "更新" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "お持ちのプリンターがリストにない場合、ネットワーク・プリンティング・トラブルシューティング・ガイドを読んでください" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "タイプ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "ファームウェアバージョン" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "アドレス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "このプリンターは、プリンターのグループをホストするために設定されていません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "このプリンターは %1 プリンターのループのホストプリンターです。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "このアドレスのプリンターは応答していません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "接続" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "無効なIPアドレス" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "有効なIPアドレスを入力してください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "プリンターアドレス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "ネットワーク内のプリンターのIPアドレスまたはホストネームを入力してください。" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "ネットワーク内のプリンターのIPアドレスを入力してください。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "プリント" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "ネットワーク上のプリント" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "プリンターの選択" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "利用できません" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "到達不能" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "利用可能" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "中止しました" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "終了" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "準備中" +msgid "Preparing..." +msgstr "準備中..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "一時停止中" +msgid "Aborting..." +msgstr "中止しています..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "再開" +msgid "Pausing..." +msgstr "一時停止しています..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "一時停止" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "再開しています…" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "アクションが必要です" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "%1 を %2 に終了します" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "ネットワーク上のプリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "プリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "待ち時間: 利用できないプリンター" +msgid "Printer selection" +msgstr "プリンターの選択" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "待ち時間: 次の空き" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "待ち時間: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "構成の変更" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "割り当てられたプリンター %1 には以下の構成変更が必要です。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "プリンター %1 が割り当てられましたが、ジョブには不明な材料構成があります。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "材料 %1 を %2 から %3 に変更します。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "%3 を 材料 %1 にロードします(これは上書きできません)。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "プリントコア %1 を %2 から %3 に変更します。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "ビルドプレートを %1 に変更します(これは上書きできません)。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "上書き" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "互換性のない構成で印刷ジョブを開始すると3Dプリンターを損傷することがあります。構成と印刷 %1 を上書きしますか?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "構成を上書きしてから印刷を開始" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "ガラス" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "アルミニウム" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "キュー管理" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "順番を待つ" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "プリント中" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "プリンター管理" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "最上位に移動" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "削除" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "再開" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "一時停止しています..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "再開しています…" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "一時停止" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "中止しています..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "中止" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "%1 をキューの最上位に移動しますか?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "印刷ジョブを最上位に移動する" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "%1 を削除しますか?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "印刷ジョブの削除" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "%1 を中止してよろしいですか?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "プリント中止" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "プリンターにつなぐ" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "構成の変更" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "プリント構成をアクティベートする" +msgid "Override" +msgstr "上書き" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "プリンターの構成をCuraに取り入れる" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "割り当てられたプリンター %1 には以下の構成変更が必要です:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "プリンター %1 が割り当てられましたが、ジョブには不明な材料構成があります。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "材料 %1 を %2 から %3 に変更します。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "%3 を 材料 %1 にロードします(これは上書きできません)。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "プリントコア %1 を %2 から %3 に変更します。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "ビルドプレートを %1 に変更します(これは上書きできません)。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "上書きは、既存のプリンタ構成で指定された設定を使用します。これにより、印刷が失敗する場合があります。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "アルミニウム" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"プリンタが接続されているか確認し、以下を行います。\n" +"- プリンタの電源が入っているか確認します。\n" +"- プリンタがネットワークに接続されているかどうかを確認します。- クラウドに接続されたプリンタを検出するためにサインインしているかどうかを確認します。" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "プリンターをネットワークに接続してください。" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "ユーザーマニュアルをオンラインで見る" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "カラースキーム" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "フィラメントの色" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "ラインタイプ" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "送り速度" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "レイヤーの厚さ" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "コンパティビリティモード" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "移動を表示する" +msgid "Travels" +msgstr "移動" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "ヘルプを表示する" +msgid "Helpers" +msgstr "ヘルプ" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "シェルを表示する" +msgid "Shell" +msgstr "外郭" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "インフィルを表示する" +msgid "Infill" +msgstr "インフィル" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "トップのレイヤーを表示する" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "トップの5レイヤーの詳細を表示する" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "トップ/ボトム" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "インナーウォール" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "最小" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "最大" @@ -2159,40 +2339,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "スクリプトの処理後" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "スクリプトを加える" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "処理したスクリプトを変更する" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "匿名データの収集に関する詳細" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Curaは印刷の品質とユーザー体験を向上させるために匿名のデータをUltimakerに送信します。以下は送信される全テータの例です。" +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura は、印刷品質とユーザーエクスペリエンスを向上させるために匿名データを収集します。以下は、共有されるすべてのデータの例です:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "そのようなデータは送信しない" +msgid "I don't want to send anonymous data" +msgstr "匿名データは送信しない" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Ultimakerへのデータ送信を許可し、Curaの改善を手助けする" +msgid "Allow sending anonymous data" +msgstr "匿名データの送信を許可する" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2241,19 +2421,19 @@ msgstr "深さ(mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "デフォルトで、白ピクセルはメッシュの高いポイントを表し、黒ピクセルはメッシュの低いポイントを表します。このオプションをリバースするために変更し、黒ピクセルがメッシュの高いポイントを表し、白ピクセルがメッシュの低いポイントを表すようにする。" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "薄いほうを高く" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "リトフェインの場合、暗いピクセルは、より多くの光を通すために厚い場所に対応する必要があります。高さマップの場合、明るいピクセルは高い地形を表しているため、明るいピクセルは生成された3D モデルの厚い位置に対応する必要があります。" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "暗いほうを高く" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "薄いほうを高く" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2264,81 +2444,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "スムージング" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "メッシュタイプ" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "標準モデル" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "サポートとしてプリント" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "他のモデルとのオーバーラップは未サポート" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "他のモデルとのオーバーラップの設定を変更" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "他のモデルのインフィルの設定を変更" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "設定を選択する" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "このモデルをカスタマイズする設定を選択する" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "フィルター…" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "すべて表示する" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "メッシュタイプ" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "標準モデル" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "サポートとしてプリント" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "オーバーラップの設定を変更" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "オーバーラップをサポートしない" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "インフィルのみ" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "設定を選択する" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "プロジェクトを開く" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" -msgstr "existingをアップデートする" +msgstr "既存を更新する" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "新しいものを作成する" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "サマリーCuraプロジェクト" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "プリンターの設定" @@ -2354,20 +2533,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "アップデート" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "新しいものを作成する" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "タイプ" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "プリンターグループ" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "プロファイル設定" @@ -2378,28 +2562,34 @@ msgid "How should the conflict in the profile be resolved?" msgstr "このプロファイルの問題をどのように解決すればいいか?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "ネーム" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "プロファイル内にない" # Can’t edit the Japanese text -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1個の設定を上書き" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "次から引き出す" @@ -2407,199 +2597,189 @@ msgstr "次から引き出す" # can’t inset the japanese text # %1: print quality profile name # %2: number of overridden ssettings -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%2の%1個の設定を上書き" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "フィラメント設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "このフィラメントの問題をどのように解決すればいいか?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "視野設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "モード" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "ビジブル設定:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%2のうち%1" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "プロジェクトを読み込むとビルドプレート上のすべてのモデルがクリアされます。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "開く" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "プリンターアップグレードを選択する" +msgid "My Backups" +msgstr "マイ バックアップ" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "このUltimaker2に施したアップグレードを選択してください。" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "現在バックアップは存在しません。[今すぐバックアップする] を使用して作成してください。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "プレビューではバックアップは5つまでに制限されています。古いバックアップは削除してください。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Cura のバックアップおよび同期を設定します。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "サインイン" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Cura バックアップ" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Cura バージョン" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "プリンタ" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "材料" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "プロファイル" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "プラグイン" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "リストア" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "バックアップの削除" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "このバックアップを削除しますか?これは取り消しできません。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "バックアップのリストア" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "バックアップをリストアする前に Cura を再起動する必要があります。今すぐ Cura を閉じますか?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "詳しく知りたい?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "今すぐバックアップする" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "自動バックアップ" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Cura を起動した日は常にバックアップを自動生成します。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "ビルドプレートのレベリング" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "プリントの成功率を上げるために、ビルドプレートを今調整できます。’次のポジションに移動’をクリックすると。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." -msgstr "すべてのポジションに" +msgstr "すべてのポジションに。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "ビルドプレートのレベリングを開始する" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "次のポジションに移動" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "このUltimaker Originalに施されたアップグレートを選択する" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "ヒーティッドビルドプレート(オフィシャルキットまたはセルフビルド)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "プリンターチェック" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "お持ちのUltimkaerにてサニティーチェックを数回行うことは推奨します。もしプリンター機能に問題ない場合はこの項目をスキップしてください" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "プリンターチェックを開始する" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "コネクション: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "接続済" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "プリンターにつながっていません" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "エンドストップ X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "作品" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "チェックされていません" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "エンドストップ Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "エンドストップ Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "ノズル温度チェック: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "ヒーティングストップ" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "ヒーティング開始" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "ビルドプレートの温度チェック:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "チェック済" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "すべてに異常はありません。チェックアップを終了しました。" - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2611,7 +2791,6 @@ msgid "Printer does not accept commands" msgstr "今プリンタはコマンドを処理できません" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "メンテナンス。プリンターをチェックしてください" @@ -2622,19 +2801,16 @@ msgid "Lost connection with the printer" msgstr "プリンターへの接続が切断されました" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "プリント中…" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "一時停止しました" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "準備中…" @@ -2652,235 +2828,178 @@ msgstr "プリント中止" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:337 msgctxt "@label" msgid "Are you sure you want to abort the print?" -msgstr "本当にプリントを中止してもいいですか。" +msgstr "本当にプリントを中止してもいいですか?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "変更を取り消すか保存するか" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "プロファイル設定をカスタマイズしました。この設定をキープしますか、キャンセルしますか。" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "プロファイル設定" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "デフォルト" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "カスタマイズ" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "毎回確認する" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "取り消し、再度確認しない" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "キープし、再度確認しない" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "取り消す" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "キープする" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "新しいプロファイルを作る" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "インフォメーション" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "直径変更の確認" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "新しいフィラメントの直径は %1 mm に設定されています。これは現在のエクストルーダーに適応していません。続行しますか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "ディスプレイ名" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "ブランド" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "フィラメントタイプ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "色" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "プロパティ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "密度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "直径" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "フィラメントコスト" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "フィラメントの重さ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "フィラメントの長さ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "毎メーターコスト" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "このフィラメントは %1にリンクすプロパティーを共有する。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "フィラメントをリンクを外す" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "記述" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "接着のインフォメーション" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "プリント設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "アクティベート" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "作成する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "書き出す" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "プリンター" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "モデルを取り除きました" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" -msgstr "%1を取り外しますか?この作業はやり直しが効きません。" +msgstr "%1を取り外しますか?この作業はやり直しが効きません!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "フィラメントを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "%1フィラメントを取り込むことができない: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "フィラメント%1の取り込みに成功しました" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "フィラメントを書き出す" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "フィラメントの書き出しに失敗しました %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "フィラメントの%1への書き出しが完了ました" @@ -2890,666 +3009,521 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "視野設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "全てを調べる" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "計算された" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "プロファイル" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "現在" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "ユニット" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "一般" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "インターフェイス" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "言語:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "通貨:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "テーマ:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "それらの変更を有効にするためにはアプリケーションを再起動しなけらばなりません。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "セッティングを変更すると自動にスライスします。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "自動的にスライスする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "ビューポイント機能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "赤でサポートができないエリアをハイライトしてください。サポートがない場合、正確にプリントができない場合があります。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "ディスプレイオーバーハング" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "モデルの選択時にモデルがカメラの中心に見えるようにカメラを移動する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "アイテムを選択するとカメラが中心にきます" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Curaのデフォルトのズーム機能は変更できるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "カメラのズーム方向を反転する。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "ズームはマウスの方向に動くべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "マウスに対するズームは、正射投影ではサポートされていません。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "マウスの方向にズームする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "交差を避けるためにプラットホーム上のモデルを移動するべきですか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "モデルの距離が離れているように確認する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "プラットホーム上のモデルはブルドプレートに触れるように下げるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自動的にモデルをビルドプレートに落とす" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "G-codeリーダーに注意メッセージを表示します。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-codeリーダーに注意メッセージ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "レイヤーはコンパティビリティモードに強制されるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "レイヤービューコンパティビリティモードを強制する。(再起動が必要)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Curaを終了した場所で開くようにしますか?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "開始時にウィンドウの位置を復元" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "どのような種類のカメラレンダリングを使用する必要がありますか?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "カメラレンダリング:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "パースペクティブ表示" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "平行投影表示" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "ファイルを開くまた保存" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "モデルがビルドボリュームに対して大きすぎる場合はスケールされるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "大きなモデルをスケールする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "ユニット値がミリメートルではなくメートルの場合、モデルが極端に小さく現れる場合があります。モデルはスケールアップされるべきですか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "極端に小さなモデルをスケールアップする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "モデルはロード後に選択しますか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "ロード後にモデルを選択" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "プリンター名の敬称はプリントジョブの名前に自動的に加えられるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "プリンターの敬称をジョブネームに加える" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "プロジェクトファイルを保存時にサマリーを表示するべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "プロジェクトを保存時にダイアログサマリーを表示する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "プロジェクトファイルを開く際のデフォルト機能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "プロジェクトファイル開く際のデフォルト機能: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "毎回確認する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "常にプロジェクトとして開く" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "常にモデルを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "プロファイル内を変更し異なるプロファイルにしました、どこの変更点を保持、破棄したいのダイアログが表示されます、また何度もダイアログが表示されないようにデフォルト機能を選ぶことができます。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "プロファイル" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "プロファイル交換時に設定値を変更するためのデフォルト処理: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "毎回確認する" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "常に変更した設定を廃棄する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "常に変更した設定を新しいプロファイルに送信する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "プライバシー" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Curaのプログラム開始時にアップデートがあるかチェックしますか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "スタート時にアップデートあるかどうかのチェック" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "プリンターの不明なデータをUltimakerにおくりますか?メモ、モデル、IPアドレス、個人的な情報は送信されたり保存されたりはしません。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(不特定な) プリントインフォメーションを送信" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "詳細" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "実験" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "マルチビルドプレート機能を使用" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "マルチビルドプレート機能を使用 (再起動が必要)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "プリンター" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "名を変える" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "プリンタータイプ:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "コネクション:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "このプリンターはつながっていません。" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "ステート:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "プリントジョブの待機中" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "ビルドプレートの掃除を待つ" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "プリントを停止します…" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "プロファイル" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "作成する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "プロファイルを作る" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "このプロファイルの名前を指定してください。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "プロファイルを複製する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "プロファイル名を変える" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "プロファイルを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "プロファイルを書き出す" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "プリンター:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "保護されたプロファイル" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "カスタムプロファイル" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" -msgstr "プロファイルを現在のセッティング/" +msgstr "プロファイルを現在のセッティング" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "今の変更を破棄する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "このプロファイルはプリンターによりデフォルトを使用、従いこのプロファイルはセッティング/書き換えが以下のリストにありません。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "設定は選択したプロファイルにマッチしています。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "グローバル設定" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "プリンターを追加する" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "プリンター名:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "プリンターについて" +msgid "Marketplace" +msgstr "マーケットプレース" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&ファイル" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&編集" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&ビュー" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "&設定" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "拡張子" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "プレファレンス" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "ヘルプ" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "新しいプロジェクト" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "新しいプロジェクトを開始しますか?この作業では保存していない設定やビルドプレートをクリアします。" + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "無題" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "Curaについて" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "バージョン: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "熱溶解積層型3Dプリンティングのエンドtoエンドソリューション。" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "CuraはUltimakerB.Vのコミュニティの協力によって開発され、Curaはオープンソースで使えることを誇りに思います:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "グラフィックユーザーインターフェイス" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "アプリケーションフレームワーク" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "G-codeの生成" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "インタープロセスコミュニケーションライブラリー" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "プログラミング用語" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUIフレームワーク" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "GUIフレームワークバインディング" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "C/C++ バインディングライブラリー" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "データインターフェイスフォーマット" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "サイエンスコンピューティングを操作するためのライブラリーサポート" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "ファターマスを操作するためのライブラリーサポート" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "STLファイルを操作するためのライブラリーサポート" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "平面対象物を操作するためのライブラリーサポート" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "参画メッシュを操作するためのライブラリーサポート" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "複雑なネットワークを分析するためのライブラリーサポート" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "3MFファイルを操作するためのライブラリーサポート" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "ファイルメタデータとストリーミングのためのライブラリーサポート" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "シリアルコミュニケーションライブラリー" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "ZeroConfディスカバリーライブラリー" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "ポリゴンクリッピングライブラリー" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Python HTTPライブラリー" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "フォント" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "SVGアイコン" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Linux 分散アプリケーションの開発" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "プロファイル:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"いくらかの設定プロファイルにある値とことなる場合無効にします。\n" -"プロファイルマネージャーをクリックして開いてください。" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "検索…" +msgid "Search settings" +msgstr "検索設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "すべてのエクストルーダーの値をコピーする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "すべてのエクストルーダーに対して変更された値をコピーする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "この設定を非表示にする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "この設定を表示しない" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "常に見えるように設定する" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "視野のセッティングを構成する…" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "すべて折りたたむ" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "すべて展開する" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3559,27 +3533,32 @@ msgstr "" "いくらかの非表示設定は通常の計算された値と異なる値を使用します。\n" "表示されるようにクリックしてください。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "影響を与えるすべての設定がオーバーライドされるため、この設定は使用されません。" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "影響" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "次によって影響を受ける" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "この設定は常に全てのエクストルーダーに共有されています。ここですべてのエクストルーダーの数値を変更できます。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "この値は各エクストルーダーの値から取得します " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3589,7 +3568,7 @@ msgstr "" "この設定にプロファイルと異なった値があります。\n" "プロファイルの値を戻すためにクリックしてください。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3599,116 +3578,210 @@ msgstr "" "このセッティングは通常計算されます、今は絶対値に固定されています。\n" "計算された値に変更するためにクリックを押してください。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "推奨" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "カスタム" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "インフィル半減" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "グラデュアルインフィルはトップに向かうに従ってインフィルの量を増やします。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "サポート" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "オーバーハングがあるモデルにサポートを生成します。このサポート構造なしでは、プリント中にオーバーハングのパーツが崩壊してしまいます。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "密着性" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "ブリムまたはラフトのプリントの有効化。それぞれ、プリントの周り、また造形物の下に底面を加え切り取りやすくします。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "プロファイルの設定がいくつか変更されました。変更を有効にするにはカスタムモードに移動してください。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "オン" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "オフ" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "実験" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "プロファイル" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"いくらかの設定プロファイルにある値とことなる場合無効にします。\n" +"プロファイルマネージャーをクリックして開いてください。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "カスタムプロファイル" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "印刷設定は無効にされました。G-code ファイルは変更できません。" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "プリンターコントロール" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "ジョグの位置" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "ジョグの距離" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "G-codeの送信" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "カスタムG-codeコマンドを接続されているプリンターに送信します。「Enter」を押してコマンドを送信します。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "エクストルーダー" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "ホットエンドの目標温度。ホットエンドはこの温度に向けて上がったり下がったりします。これが0の場合、ホットエンドの加熱はオフになっています。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "このホットエンドの現在の温度です。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "ホットエンドをプリヒートする温度です。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "キャンセル" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "プレヒート" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "プリント開始前にホットエンドを加熱します。加熱中もプリントの調整を行えます、またホットエンドが加熱するまでプリント開始を待つ必要もありません。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "エクストルーダーのマテリアルの色。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "エクストルーダー入ったフィラメント。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "ノズルが入ったエクストルーダー。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "このプリンターはつながっていません。" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "ビルドプレート" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "ヒーティッドベッドの目標温度。ベッドはこの温度に向けて上がったり下がったりします。これが0の場合、ベッドの加熱はオフになっています。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "現在のヒーティッドベッドの温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "ベッドのプリヒート温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "プリント開始前にベッドを加熱します。加熱中もプリントの調整を行えます、またべットが加熱するまでプリント開始を待つ必要もありません。" @@ -3718,12 +3791,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "お気に入り" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "汎用" @@ -3738,17 +3811,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "ローカルプリンター" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&ビュー" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "&プリンター" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&フィラメント" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "アクティブエクストルーダーとしてセットする" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "エクストルーダーを有効にする" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "エクストルーダーを無効にする" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "カメラ位置 (&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "カメラビュー" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "パースペクティブ表示" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "平行投影表示" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "ビルドプレート (&B)" @@ -3768,6 +3876,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "視野のセッティングを管理する…" +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "&保存..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&エクスポート..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "選択エクスポート..." + # can’t enter japanese texts #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" @@ -3787,656 +3910,509 @@ msgctxt "@label" msgid "Number of Copies" msgstr "コピーの数" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "利用可能な構成" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "構成" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "エクストルーダー" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "構成の選択" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "はい" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "構成" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "いいえ" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "プリンタから利用可能な構成を読み込んでいます..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "プリンタが接続されていないため、構成は利用できません。" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "カスタム" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "プリンター" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "有効" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "フィラメント" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "この材料の組み合わせの接着に接着材を使用する。" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "%1 が認識されていないためこの構成は利用できません。%2 から適切な材料プロファイルをダウンロードしてください。" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "マーケットプレース" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "最近開いたファイルを開く" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "プリントセットアップ" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"プリントセットアップが無効\n" -"G-codeファイルを修正することができません" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00時間 00分" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "時間仕様" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "コスト仕様" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "合計:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "おすすめプリントセットアップ

    選択されたプリンターにておすすめの設定、フィラメント、質にてプリントしてください。" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "カスタムプリントセットアップ

    スライス処理のきめ細かなコントロールにてプリントする。" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "プリントをアクティベートする" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "ジョブネーム" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "プリント時間" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "残り時間" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "タイプ表示" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "オブジェクトリスト" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "高 %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Ultimaker アカウント" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "サインアウト" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "サインイン" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "次世代 3D 印刷ワークフロー" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"印刷ジョブをローカルネットワークの外の Ultimaker プリンタに送信します\n" +"- Ultimaker Cura の設定をクラウドに保管してどこからでも利用できるようにします\n" +"- 有名ブランドから印刷プロファイルへの例外アクセスを取得します" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "アカウントを作成する" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "時間予測がありません" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "コスト予測がありません" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "プレビュー" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "スライス中…" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "スライスできません" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "処理" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "スライス" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "スライス処理の開始" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "キャンセル" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "時間予測" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "材料予測" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "キャンセルしたプリンター" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "プリンターのプリセット" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "プリンターの追加" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "プリンター管理" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "オンラインでトラブルシューティングガイドを表示する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "留め金 フルスクリーン" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "全画面表示を終了する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&取り消す" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&やりなおす" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&やめる" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "3Dビュー" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "フロントビュー" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "トップビュー" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "左サイドビュー" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "右サイドビュー" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Curaを構成する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&プリンターを追加する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "プリンターを管理する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "フィラメントを管理する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&現在の設定/無効にプロファイルをアップデートする" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&変更を破棄する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&今の設定/無効からプロファイルを作成する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "プロファイルを管理する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "オンラインドキュメントを表示する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "報告&バグ" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "新情報" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "アバウト..." # can’t enter japanese text -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "&選択したモデルを削除" # can’t enter japanese text -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "選択したモデルを中央に移動" # can’t edit japanese text -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "選択した複数のモデル" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "モデルを消去する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "プラットホームの中心にモデルを配置" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&モデルグループ" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "モデルを非グループ化" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "モ&デルの合体" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&モデルを増倍する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "すべてのモデル選択" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "ビルドプレート上のクリア" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "すべてのモデルを読み込む" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "すべてのモデルをすべてのビルドプレートに配置" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "すべてのモデルをアレンジする" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "選択をアレンジする" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "すべてのモデルのポジションをリセットする" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "すべてのモデル&変更点をリセットする" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&ファイルを開く(s)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&新しいプロジェクト…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "エンジン&ログを表示する…" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "コンフィグレーションのフォルダーを表示する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "パッケージを見る…" +msgid "&Marketplace" +msgstr "&マーケットプレース" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "サイドバーを展開する/たたむ" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "3Dモデルをロードしてください" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "スライスの準備ができました" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "スライス中…" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "%1の準備完了" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "スライスできません" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "スライスが利用不可能" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "現在のプリントジョブをスライスします" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "スライスプロセスをキャンセルします" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "準備する" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "キャンセル" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "アクティブなアウトプットデバイスを選択する" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "ファイルを開く" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "選択したファイルの中に複数のプロジェクトが存在します。1ファイルのみ一度に開けます。ファイルからモデルを先に取り込むことをお勧めします。続けますか?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "すべてをモデルとして取り入れる" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&ファイル" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "&保存..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&エクスポート..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "選択エクスポート..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&編集" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "&ビュー" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "&設定" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "&プリンター" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&フィラメント" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "アクティブエクストルーダーとしてセットする" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "エクストルーダーを有効にする" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "エクストルーダーを無効にする" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "ビルドプレート (&B)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&プロファイル" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "拡張子" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "&ツールボックス" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "プレファレンス" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "ヘルプ" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "このパッケージは再起動後にインストールされます。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "ファイルを開く" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "新しいプロジェクト" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "新しいプロジェクトを開始しますか?この作業では保存していない設定やビルドプレートをクリアします。" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura を閉じる" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Cura を終了しますか?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "ファイルを開く" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "パッケージをインストール" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "ファイルを開く(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "選択したファイルの中に複数のG-codeが存在します。1つのG-codeのみ一度に開けます。G-codeファイルを開く場合は、1点のみ選んでください。" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "プロジェクトを保存" +msgid "Add Printer" +msgstr "プリンターを追加する" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "ビルドプレート" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "エクストルーダー%1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1とフィラメント" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "保存中のプロジェクトサマリーを非表示にする" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "保存" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "レイヤーの高さ" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "この品質プロファイルは現在の材料およびノズル構成では使用できません。この品質プロファイルを使用できるように変更してください" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "カスタムプロファイルが有効になっています。品質スライダーを有効にするには、カスタムタブでデフォルトの品質プロファイルを選択してください" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "プリントスピード" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "ゆっくり" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "早く" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "プロファイルの設定がいくつか変更されました。変更を有効にするにはカスタムモードに移動してください。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "インフィル" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "グラデュアルインフィルはトップに向かうに従ってインフィルの量を増やします。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "グラデュアルを有効にする" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "サポートを生成します" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "オーバーハングがあるモデルにサポートを生成します。このサポート構造なしでは、プリント中にオーバーハングのパーツが崩壊してしまいます。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "サポートに使うエクストルーダーを選択してください。モデルの垂れや中空プリントを避けるためにモデルの下にサポート構造を生成します。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "ビルドプレートの接着" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "ブリムまたはラフトのプリントの有効化。それぞれ、プリントの周り、また造形物の下に底面を加え切り取りやすくします。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "プリントにヘルプが必要ですか?
    Ultimakerトラブルシューティングガイドを読んでください" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "新情報" # can’t enter japanese #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 @@ -4445,75 +4421,499 @@ msgid "Print Selected Model with %1" msgid_plural "Print Selected Models with %1" msgstr[0] "選択したモデルを%1で印刷する" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "変更を取り消すか保存するか" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "プロファイル設定をカスタマイズしました。この設定をキープしますか、キャンセルしますか?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "プロファイル設定" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "デフォルト" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "カスタマイズ" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "取り消し、再度確認しない" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "キープし、再度確認しない" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "取り消す" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "キープする" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "新しいプロファイルを作る" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Curaについて" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "バージョン: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "熱溶解積層型3Dプリンティングのエンドtoエンドソリューション。" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "CuraはUltimakerB.Vのコミュニティの協力によって開発され、Curaはオープンソースで使えることを誇りに思います:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "グラフィックユーザーインターフェイス" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "アプリケーションフレームワーク" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "G-codeの生成" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "インタープロセスコミュニケーションライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "プログラミング用語" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUIフレームワーク" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "GUIフレームワークバインディング" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C/C++ バインディングライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "データインターフェイスフォーマット" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "サイエンスコンピューティングを操作するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "ファターマスを操作するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "STLファイルを操作するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "平面対象物を操作するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "参画メッシュを操作するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "複雑なネットワークを分析するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "3MFファイルを操作するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "ファイルメタデータとストリーミングのためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "シリアルコミュニケーションライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "ZeroConfディスカバリーライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "ポリゴンクリッピングライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTPライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "フォント" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVGアイコン" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Linux 分散アプリケーションの開発" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "選択したファイルの中に複数のプロジェクトが存在します。1ファイルのみ一度に開けます。ファイルからモデルを先に取り込むことをお勧めします。続けますか?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "すべてをモデルとして取り入れる" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "プロジェクトを保存" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "エクストルーダー%1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1とフィラメント" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "材料" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "保存中のプロジェクトサマリーを非表示にする" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "保存" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "プロジェクトを開く" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "これはCuraのプロジェクトファイルです。プロジェクトとしてあけますか、それともモデルのみ取り込みますか?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "選択を記憶させる" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "プロジェクトを開く" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "モデルを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "エンジンログ" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "プリンタータイプ" +msgid "Empty" +msgstr "空にする" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "フィラメント" +msgid "Add a printer" +msgstr "プリンターの追加" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "この材料の組み合わせで接着する" +msgid "Add a networked printer" +msgstr "ネットワークプリンターの追加" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "互換性の確認" +msgid "Add a non-networked printer" +msgstr "非ネットワークプリンターの追加" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Ultimaker.comにてマテリアルのコンパティビリティを調べるためにクリック。" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "IP アドレスでプリンターを追加" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "現在のビルドプレートのみを表示" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "プリンターの IP アドレスを入力してください。" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "すべてのビルドプレートに配置" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "追加" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "現在のビルドプレートを配置" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "デバイスに接続できません。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "このアドレスのプリンターは応答していません。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "このプリンタは不明なプリンタであるか、またはグループのホストではないため、追加できません。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "戻る" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "接続" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "次" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "ユーザー用使用許諾契約" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "同意する" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "拒否して閉じる" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Ultimaker Cura の改善にご協力ください" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura は、印刷品質とユーザーエクスペリエンスを向上させるために以下の匿名データを収集します:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "プリンターのタイプ" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "材料の利用状況" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "スライスの数" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "プリント設定" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Ultimaker Cura が収集したデータには個人データは含まれません。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "詳細" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Ultimaker Cura の新機能" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "ネットワークにプリンターはありません。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "更新" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "IP でプリンターを追加" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "トラブルシューティング" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "プリンター名" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "プリンター名を入力してください" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "次世代 3D 印刷ワークフロー" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- 印刷ジョブをローカルネットワークの外から Ultimaker プリンターに送信します" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Ultimaker Cura の設定をクラウドに保管してどこらでも利用でいるようにします" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- 有名ブランドから材料プロファイルへの例外アクセスを取得します" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "終わる" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "アカウント作成" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Ultimaker Cura にようこそ" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"以下の手順で\n" +"Ultimaker Cura を設定してください。数秒で完了します。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "はじめに" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3Dビュー" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "フロントビュー" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "トップビュー" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "左ビュー" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "右ビュー" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4575,26 +4975,6 @@ msgctxt "name" msgid "Model Checker" msgstr "モデルチェッカー" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "HTMLファイルに設定内容を放置する。" - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Godモード" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "最新の更新バージョンの変更点を表示する。" - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Changelog" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4605,15 +4985,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "ファームウェアアップデーター" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "プロファイルを変更するフラットエンドクオリティーを作成する。" +msgid "Provides support for reading AMF files." +msgstr "AMFファイルの読込みをサポートしています。" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "プロファイルフラットナー" +msgid "AMF Reader" +msgstr "AMFリーダー" #: USBPrinting/plugin.json msgctxt "description" @@ -4625,26 +5005,6 @@ msgctxt "name" msgid "USB printing" msgstr "USBプリンティング" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "ライセンスに同意するかどうかユーザーに1回だけ確認する。" - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "UserAgreement" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "結果スライスをX3Gファイルとして保存して、このフォーマット(Malyan、Makerbot、およびその他のSailfishベースのプリンター)を読むプリンターをサポートできるようにします。" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4687,13 +5047,13 @@ msgstr "取り外し可能なドライブアウトプットデバイスプラグ #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Ultimaker3のプリンターのネットワーク接続を管理する。" +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Ultimakerのネットワーク接属できるプリンターのネットワーク接続を管理します。" #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3ネットワークコネクション" +msgid "Ultimaker Network Connection" +msgstr "Ultimakerネットワーク接続" #: MonitorStage/plugin.json msgctxt "description" @@ -4755,6 +5115,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "サポート消去機能" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Ultimakerフォーマットパッケージの読み込みをサポートします。" + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "UFP リーダー" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4815,6 +5185,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "3.3から3.4にバージョンアップグレート" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Cura 4.3からCura 4.4へのコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "4.3から4.4にバージョンアップグレート" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4835,6 +5215,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "2.7から3.0にバージョンアップグレート" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Cura 3.5 から Cura 4.0 のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "3.5 から 4.0 にバージョンアップグレート" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4845,6 +5235,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "3.4 から 3.5 にバージョンアップグレート" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Cura 4.0 から Cura 4.1 のコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "4.0 から 4.1 にバージョンアップグレート" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4855,6 +5255,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "3.0から3.1にバージョンアップグレート" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "コンフィギュレーションを Cura 4.1 から Cura 4.2 にアップグレートする。" + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "4.0 から 4.1 にバージョンアップグレート" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4885,6 +5295,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "2.2 から2.4にバージョンアップグレート" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Cura 4.2からCura 4.3の設定をアップグレードします。" + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "4.2から4.3にバージョンをアップグレート" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4895,6 +5315,16 @@ msgctxt "name" msgid "Image Reader" msgstr "画像リーダー" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "モデルファイルを読み込むためのサポートを供給します。" + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimeshリーダー" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4945,6 +5375,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "G-codeリーダー" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "構成をバックアップしてリストアします。" + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Cura バックアップ" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4965,6 +5405,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MFリーダー" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Curaでプレビューステージを提供します。" + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "プレビューステージ" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4985,9 +5435,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Curaプロファイルリーダー" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "保存する前に G-code を生成してください。" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "アクティブ設定を平らにします" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "プロファイルが平らになり、アクティベートされました。" + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "X3Gをファイルに書き込む" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3Gファイル" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3Gファイル" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "圧縮トライアングルメッシュを開く" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -4997,6 +5467,1032 @@ msgstr "Curaプロファイルリーダー" #~ msgid "Profile Assistant" #~ msgstr "プロファイルアシスタント" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "再試行" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "プリントコア" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "他のモデルとのオーバーラップは未サポート" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "他のモデルとのオーバーラップの設定を変更" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "他のモデルのインフィルの設定を変更" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "現在のプロファイルに読み込む" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "サポート対象外" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "前" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "ヒント" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "試し印刷" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "チェックリスト" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "このUltimaker2に施したアップグレードを選択してください。" + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "カメラレンダリング: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "マルチビルドプレート機能を使用" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "マルチビルドプレート機能を使用 (再起動が必要)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "デフォルトプロファイル" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "検索設定" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "レイヤーの高さ" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "この品質プロファイルは、現在の材料およびノズル構成では使用できません。この品質プロファイルを有効にするには、これらを変更してください。" + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "カスタムプロファイルが有効になっています。品質スライダーを有効にするには、カスタムタブでデフォルトの品質プロファイルを選択してください" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "ビルドプレート (&B)" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&プロファイル" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "ビルドプレート" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "HTMLファイルに設定内容を放置する。" + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Godモード" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "プロファイルを変更するフラットエンドクオリティーを作成する。" + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "プロファイルフラッター" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "材料メーカーがドロップインUIを使用して新しい材料と品質のプロファイルを作成できるようにします。" + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "プリントプロファイルアシスタント" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "ネットワーク上で接続。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "ネットワーク上で接続。プリンタへのリクエストを承認してください。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "ネットワーク上で接続。プリントを操作するアクセス権がありません。" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "プリンターへのアクセスが申請されました。プリンタへのリクエストを承認してください" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "認証ステータス" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "認証ステータス" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "アクセスリクエストを再送信" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "プリンターへのアクセスが承認されました" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "このプリンターへのアクセスが許可されていないため、プリントジョブの送信ができませんでした。" + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "アクセスのリクエスト" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "アクセスのリクエスト送信" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "新しいプリントジョブを開始できません。" + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Ultimakerの設定に問題があるため、印刷が開始できません。問題を解消してからやり直してください。" + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "ミスマッチの構成" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "選択された構成にてプリントを開始してもいいですか?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "プリンターの設定、キャリブレーションとCuraの構成にミスマッチがあります。プリンターに設置されたプリントコア及びフィラメントを元にCuraをスライスすることで最良の印刷結果を出すことができます。" + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "新しいデータの送信 (temporarily) をブロックします、前のプリントジョブが送信中です。" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "プリンターにプリントデータを送信中" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "プリントデータを送信中" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "プリントコアがスロット{slot_number}に入っていません。" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "材料がスロット{slot_number}に入っていません。" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "エクストルーダー {extruder_id} に対して異なるプリントコア(Cura: {cura_printcore_name}, プリンター: {remote_printcore_name})が選択されています。" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "異なるフィラメントが入っています(Cura:{0}, プリンター{1})エクストルーダー{2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "プリンターと同期する" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Curaで設定しているプリンタ構成を使用されますか?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "プリンターのプリントコア及びフィラメントが現在のプロジェクトと異なります。最善な印刷結果のために、プリンタに装着しているプリントコア、フィラメントに合わせてスライスして頂くことをお勧めします。" + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "モニター表示" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "プリンター’{printer_name}’が’{job_name}’のプリントを終了しました。" + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "プリントジョブ '{job_name}' は完了しました。" + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "プリント終了" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "空にする" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "不明" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "クラウドエラー" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "印刷ジョブをエクスポートできませんでした。" + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "クラウドの接続時にエラーが発生しました。" + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud 経由でアップロード中" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud に接続する" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "このプリンタでは次回から質問しない。" + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Ultimaker のアカウントを使用して、どこからでも印刷ジョブを送信およびモニターできるようになりました。" + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "接続しました!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "接続の確認" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "プロファイル{0}の中で定義されているマシン({1})は、現在お使いのマシン({2})と一致しないため、インポートできませんでした。" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "{0}からプロファイルの取り込に失敗しました:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "既存の接続" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "このプリンター/グループはすでにCuraに追加されています。別のプリンター/グループを選択しえください。" + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "ネットワーク内のプリンターのIPアドレスまたはホストネームを入力してください。" + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "プリンターにつなぐ" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 設定ガイド" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "平行投影表示では、マウスの方向にズームする操作がサポートされていません。" + +#~ msgid "Orthogonal" +#~ msgstr "平行投影表示" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Ultimaker3のプリンターのネットワーク接続を管理する。" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3ネットワークコネクション" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "画像とアニメーションで、Cura の設定に関する追加情報と説明を提供します。" + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "設定ガイド" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 設定ガイド" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "現在利用可能なエクストルーダー [%s] に合わせて設定が変更されました。" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "ユーザー詳細" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "クラウドプリンタをモニタリングしている場合は、これらのオプションは利用できません。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Cura Connectに移動する" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "すべてのジョブが印刷されます。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "印刷履歴の表示" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "ネットワーク接続にて直接プリントするためには、必ずケーブルまたはWifiネットワークにて繋がっていることを確認してください。Curaをプリンターに接続していない場合でも、USBメモリを使って直接プリンターにg-codeファイルをトランスファーできます。\n" +#~ "\n" +#~ "下のリストからプリンターを選択してください:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "プリンタが接続されていること確認してください:\n" +#~ "- プリンタの電源が入っていることを確認してください。\n" +#~ "- プリンタがネットワークに接続されているか確認してください。" + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "現在のビルドプレートのみを表示" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "すべてのビルドプレートに配置" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "現在のビルドプレートを配置" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "結果スライスをX3Gファイルとして保存して、このフォーマット(Malyan、Makerbot、およびその他のSailfishベースのプリンター)を読むプリンターをサポートできるようにします。" + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "プリンターの動きをデバッグするためのツールパスとして SVG ファイルを読み込みます。" + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG ツールパスリーダー" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Changelog" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Changelogの表示" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "リモートクラスタにデータ送信中" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud に接続する" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Curaは、匿名化した利用統計を収集します。" + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "データを収集中" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "詳細" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Curaが送信するデータについて詳しくご覧ください。" + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "許可" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Curaが匿名化した利用統計を送信することを許可し、Curaの将来の改善を優先的に行うことに貢献します。プレファレンスと設定の一部、Curaのバージョン、スライスしているモデルのハッシュが送信されます。" + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "評価" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "ネットワーク対応プリンター" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "ローカルプリンター" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "現行バージョンと一致しないCuraバックアップをリストアしようとしました。" + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "プリンターの設定" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "プリンターの設定" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "センターを出します" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "ヒーテッドドベッド" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "プリントヘッド設定" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "プリントヘッド左側からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "プリントヘッド前部からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "プリントヘッド右側からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "プリントヘッド後部からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "ガントリーの高さ" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "(X 軸及びY軸)ノズルの先端とガントリーシステムの高さに相違があります。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "G-Codeの開始" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "G-codeコマンドが最初に実行されるようにします。" + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "G-codeの終了" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "G-codeコマンドが最後に実行されるようにします。" + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "ノズル設定" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "プリンターに対応したフィラメントの直径。正確な直径はフィラメント及びまたはプロファイルに変動します。" + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "エクストルーダーがG-Codeを開始する" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "エクストルーダーがG-Codeを終了する" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Changelogの表示" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "ユーザー用使用許諾契約" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "ネットワーク内のプリンターのIPアドレスまたはホストネームを入力してください。" + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "モニターするプリンタが接続されているネットワークを選択してください。" + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Ultimaker プリンタをローカルネットワークに接続してください。" + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Curaは印刷の品質とユーザー体験を向上させるために匿名のデータをUltimakerに送信します。以下は送信される全テータの例です。" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "このデータは送信しない" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Ultimakerへのデータ送信を許可し、Curaの改善を手助けする" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "プリンタが選択されていません" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "デフォルトで、白ピクセルはメッシュの高いポイントを表し、黒ピクセルはメッシュの低いポイントを表します。このオプションをリバースするために変更し、黒ピクセルがメッシュの高いポイントを表し、白ピクセルがメッシュの低いポイントを表すようにする。" + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "プリンターアップグレードを選択する" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "サポートに使うエクストルーダーを選択してください。モデルの垂れや中空プリントを避けるためにモデルの下にサポート構造を生成します。" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "この品質プロファイルは現在の材料およびノズル構成では使用できません。この品質プロファイルを使用できるように変更してください" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "印刷の設定を無効にしました。G コードファイルは変更できません。" + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "材料の適合性チャートをご覧ください" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "タイプ表示" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "こんにちわ " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- 印刷ジョブをローカルネットワークの外の Ultimaker プリンタに送信します\n" +#~ "- Ultimaker Cura の設定をクラウドに保管してどこからでも利用できるようにします\n" +#~ "- 有名ブランドから材料プロファイルへの例外アクセスを取得します" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "スライスできません" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "時間仕様" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "材料仕様" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "プリンターを Cura に追加" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "下のリストから使用するプリンターを選択します。\n" +#~ "\n" +#~ "プリンターがリストにない場合は、「カスタム」カテゴリの「カスタムFFFプリンター」を使用して、次のダイアログでプリンターに合う設定に調整します。" + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "製造元" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "プリンター名" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "プリンターについて" + +#~ msgid "Modify G-Code" +#~ msgstr "G-codeを修正" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "モデルのデータがビルトボリュームに入っていないためスライスできるものがありません。スケールやローテーションにて合うように設定してください。" + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "選択されたフィラメントはプリンターとそのプリント構成に適応しておりません。" + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "不適合フィラメント" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "{0}: {1}からプロファイルを取り込むことに失敗しました" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "ツールボックス" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "利用できません" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "到達不能" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "利用可能" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "準備中" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "一時停止中" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "再開" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "待ち時間: 利用できないプリンター" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "待ち時間: 次の空き" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "待ち時間: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "構成の変更" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "割り当てられたプリンター %1 には以下の構成変更が必要です。" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "上書き" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "互換性のない構成で印刷ジョブを開始すると3Dプリンターを損傷することがあります。構成と印刷 %1 を上書きしますか?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "構成を上書きしてから印刷を開始" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "キュー管理" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "プリント中" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "プリンター管理" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "プリント構成をアクティベートする" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "プリンターの構成をCuraに取り入れる" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "移動を表示する" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "ヘルプを表示する" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "シェルを表示する" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "インフィルを表示する" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "そのようなデータは送信しない" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Ultimakerへのデータ送信を許可し、Curaの改善を手助けする" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "プリンタータイプ:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "コネクション:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "ステート:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "プリントジョブの待機中" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "ビルドプレートの掃除を待つ" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "プリントを停止します…" + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "保護されたプロファイル" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "プリンター名:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "プロファイル:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "検索…" + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "すべて折りたたむ" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "すべて展開する" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "利用可能な構成" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "エクストルーダー" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "はい" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "いいえ" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "プリントセットアップ" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "プリントセットアップが無効\n" +#~ "G-codeファイルを修正することができません" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00時間 00分" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "時間仕様" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "コスト仕様" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "合計:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "おすすめプリントセットアップ

    選択されたプリンターにておすすめの設定、フィラメント、質にてプリントしてください。" + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "カスタムプリントセットアップ

    スライス処理のきめ細かなコントロールにてプリントする。" + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "エンジン&ログを表示する…" + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "パッケージを見る…" + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "サイドバーを展開する/たたむ" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "3Dモデルをロードしてください" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "スライスの準備ができました" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "%1の準備完了" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "スライスが利用不可能" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "現在のプリントジョブをスライスします" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "スライスプロセスをキャンセルします" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "準備する" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "キャンセル" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "アクティブなアウトプットデバイスを選択する" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "&ビュー" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "&設定" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "&ツールボックス" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "ファイルを開く" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "この品質プロファイルは現在の材料およびノズル構成では使用できません。この品質プロファイルを使用できるように変更してください" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "プリントスピード" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "ゆっくり" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "早く" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "グラデュアルを有効にする" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "サポートを生成します" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "ビルドプレートの接着" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "プリントにヘルプが必要ですか?
    Ultimakerトラブルシューティングガイドを読んでください" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "エンジンログ" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "プリンタータイプ" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "この材料の組み合わせで接着する" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "互換性の確認" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Ultimaker.comにてマテリアルのコンパティビリティを調べるためにクリック。" + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "最新の更新バージョンの変更点を表示する。" + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Changelog" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "プロファイルを変更するフラットエンドクオリティーを作成する。" + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "プロファイルフラットナー" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "ライセンスに同意するかどうかユーザーに1回だけ確認する。" + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "UserAgreement" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "保存する前に G-code を生成してください。" + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "ファームウェアをアップグレード" @@ -5021,22 +6517,6 @@ msgstr "Curaプロファイルリーダー" #~ msgid "Confirm uninstall " #~ msgstr "アンインストール確認 " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "一時停止" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "前" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "次" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "ヒント" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1m / ~ %2g / ~ %4 %3" @@ -5045,26 +6525,10 @@ msgstr "Curaプロファイルリーダー" #~ msgid "%1m / ~ %2g" #~ msgstr "%1m / ~ %2g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "試し印刷" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "チェックリスト" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "ファームウェアをアップグレード" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "材料メーカーがドロップインUIを使用して新しい材料と品質のプロファイルを作成できるようにします。" - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "プリントプロファイルアシスタント" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Doodle3D WiFi-Boxでプリントする" @@ -5157,10 +6621,6 @@ msgstr "Curaプロファイルリーダー" #~ msgid "Lost connection with the printer" #~ msgstr "プリンターへの接続が切断されました。" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "利用不可" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "不明" diff --git a/resources/i18n/ja_JP/fdmextruder.def.json.po b/resources/i18n/ja_JP/fdmextruder.def.json.po index 95f0382823..d2a33a2db3 100644 --- a/resources/i18n/ja_JP/fdmextruder.def.json.po +++ b/resources/i18n/ja_JP/fdmextruder.def.json.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 15:24+0200\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -84,8 +84,8 @@ msgstr "エクストルーダーがG-Codeを開始する" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "エクストルーダーを使う度にGコードを展開します。" +msgid "Start g-code to execute when switching to this extruder." +msgstr "このエクストルーダーに切り替えた時に G-Code の開始を実行します。" #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -124,8 +124,8 @@ msgstr "エクストルーダーがG-Codeを終了する" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "エクストルーダーを使用しないときにGコードを終了します。" +msgid "End g-code to execute when switching away from this extruder." +msgstr "このエクストルーダーから切り替えた時に G-Code の終了を実行します。" #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -226,3 +226,11 @@ msgstr "直径" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "使用するフィラメントの太さの調整 この値を使用するフィラメントの太さと一致させてください。" + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "エクストルーダーを使う度にGコードを展開します。" + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "エクストルーダーを使用しないときにGコードを終了します。" diff --git a/resources/i18n/ja_JP/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po index 3156e77288..a53f3de7ca 100644 --- a/resources/i18n/ja_JP/fdmprinter.def.json.po +++ b/resources/i18n/ja_JP/fdmprinter.def.json.po @@ -1,22 +1,22 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 15:27+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Japanese\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-09-23 14:15+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Japanese , Japanese \n" "Language: ja_JP\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.1\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -61,7 +61,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "最初に実行するG-codeコマンドは、\nで区切ります。" +msgstr "" +"最初に実行するG-codeコマンドは、\n" +"で区切ります。" #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -73,7 +75,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "最後に実行するG-codeコマンドは、\nで区切ります。" +msgstr "" +"最後に実行するG-codeコマンドは、\n" +"で区切ります。" #: fdmprinter.def.json msgctxt "material_guid label" @@ -227,6 +231,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "プリンターに加熱式ビルドプレートが付属しているかどうか。" +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "造形温度安定化処理有り" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "機器が造形温度を安定化処理できるかどうかです。" + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -251,7 +265,7 @@ msgstr "エクストルーダーの数。エクストルーダーの単位は、 #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "有効なエクストルーダーの数" #: fdmprinter.def.json @@ -261,7 +275,7 @@ msgstr "有効なエクストルーダートレインの数(ソフトウェア #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "ノズル外径" # msgstr "ノズル外径" @@ -272,7 +286,7 @@ msgstr "ノズルの外径。" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "ノズル長さ" # msgstr "ノズルの長さ" @@ -283,7 +297,7 @@ msgstr "ノズル先端とプリントヘッドの最下部との高さの差。 #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "ノズル角度" # msgstr "ノズル角度" @@ -294,7 +308,7 @@ msgstr "水平面とノズル直上の円錐部分との間の角度。" #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "ノズル加熱長さ" # msgstr "加熱範囲" @@ -325,7 +339,7 @@ msgstr "Curaから温度を制御するかどうか。これをオフにして #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "加熱速度" #: fdmprinter.def.json @@ -335,7 +349,7 @@ msgstr "ノズルが加熱する速度(℃/ s)は、通常の印刷時温度 #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "冷却速度" #: fdmprinter.def.json @@ -355,7 +369,7 @@ msgstr "ノズルが冷却される前にエクストルーダーが静止しな #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "G-codeフレーバー" #: fdmprinter.def.json @@ -425,10 +439,9 @@ msgctxt "machine_firmware_retract description" msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." msgstr "材料を引き戻すためにG1コマンドのEプロパティーを使用する代わりにファームウェア引き戻しコマンド (G10/G11) を使用するかどうか。" -# msgstr "Repetier" #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "拒否エリア" #: fdmprinter.def.json @@ -448,7 +461,7 @@ msgstr "ノズルが入ることができない領域を持つポリゴンのリ #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "プリントヘッドポリゴン" #: fdmprinter.def.json @@ -458,7 +471,7 @@ msgstr "プリントヘッドの2Dシルエット(ファンキャップは除 #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" +msgid "Machine Head & Fan Polygon" msgstr "プリントヘッドとファンポリゴン" #: fdmprinter.def.json @@ -468,8 +481,8 @@ msgstr "プリントヘッドの2Dシルエット(ファンキャップが含 #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" -msgstr "ガントリー高さ" +msgid "Gantry Height" +msgstr "ガントリーの高さ" #: fdmprinter.def.json msgctxt "gantry_height description" @@ -499,7 +512,7 @@ msgstr "ノズルの内径。標準以外のノズルを使用する場合は、 #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" +msgid "Offset with Extruder" msgstr "エクストルーダーのオフセット" #: fdmprinter.def.json @@ -1060,6 +1073,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "最底面のレイヤー数。下の厚さで計算すると、この値は整数に変換されます。" +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "初期底面レイヤー" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "ビルドプレートから上にある初期底面レイヤーの数。下の厚さで計算すると、この値は整数に変換されます。" + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1313,6 +1336,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "鋭い角" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Zシーム位置" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "レイヤー内の各パーツの印刷を開始する場所付近の位置。" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "後方左" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "戻る" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "後方右" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "右" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "前方右" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "前" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "前左" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "左" + # msgstr "最も鋭利な角" #: fdmprinter.def.json msgctxt "z_seam_x label" @@ -1322,7 +1395,9 @@ msgstr "ZシームX" #: fdmprinter.def.json msgctxt "z_seam_x description" msgid "The X coordinate of the position near where to start printing each part in a layer." -msgstr "レイヤー内の各印刷を開始するX座\n標の位置。" +msgstr "" +"レイヤー内の各印刷を開始するX座\n" +"標の位置。" #: fdmprinter.def.json msgctxt "z_seam_y label" @@ -1339,11 +1414,10 @@ msgctxt "z_seam_corner label" msgid "Seam Corner Preference" msgstr "シームコーナー設定" -# msgstr "薄層のプレファレンス" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "モデル輪郭のコーナーがシーム(縫い目)の位置に影響するかどうかを制御します。 Noneはコーナーがシームの位置に影響を与えないことを意味します。 Seam(縫い目)を非表示にすると、内側のコーナーでシームが発生しやすくなります。 Seamを表示すると、外側の角にシームが発生する可能性が高くなります。 シームを隠す、または表示するを選択することにより、内側または外側コーナーでシームを発生させる可能性が高くなります。" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "モデル輪郭の角がシームの位置に影響を及ぼすかどうかを制御します。[なし] は、角がシームの位置に影響を及ぼさないことを意味します。シームを隠すにすると、シームが内側の角に生じる可能性が高くなります。シームを外側にすると、シームが外側の角に生じる可能性が高くなります。シームを隠す/外側に出すは、シームが内側または外側の角に生じる可能性が高くなります。スマート・シームを使用すると、内外両側の角を使用できますが、適切な場合には内側の角が選択される頻度が高まります。" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1368,6 +1442,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "シーム表示/非表示" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "スマート・シーム" + # msgstr "シームを非表示または表示する" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1382,14 +1461,13 @@ msgstr "有効時は、Zシームは各パーツの真ん中に設定されま #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "小さいZギャップは無視" +msgid "No Skin in Z Gaps" +msgstr "Z 軸ギャップにスキンなし" -# msgstr "小さなZギャップを無視する" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "モデルに垂直方向のギャップが小さくある場合、これらの狭いスペースにおいて上部および下部スキンを生成するために、約5%の計算時間が追加されます。そのような場合は、設定を無効にしてください。" +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "モデルの垂直方向に少数層のみの小さなギャップがある場合、通常は、その狭いスペース内にある層の周囲にスキンが存在する必要があります。垂直方向のギャップが非常に小さい場合は、この設定を有効にしてスキンが生成されないようにします。これにより、印刷時間とスライス時間が向上しますが、技術的には空気にさらされたインフィルを残します。" #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1407,11 +1485,10 @@ msgctxt "ironing_enabled label" msgid "Enable Ironing" msgstr "アイロン有効" -# msgstr "アイロンを有効にする" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "ノズルから吐出せずに上部表面を再度動く機能。表面を溶かしてよりスムースにします。" +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "微量の材料のみを吐出して、再度上部表面を動きます。これにより上部のプラスティックが溶かされ、よりスムースな表面になります。ノズルチャンバーには高い圧力が保たれるため、表面上のしわが材料で埋められます。" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1513,6 +1590,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "アイロン時の最大加速度。" +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "表面公差量" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "壁とスキンの中央ライン(のエンドポイント)が交差する量(スキンラインのライン幅と壁の最内部に対する割合)を調整します。わずかな交差によって、壁がスキンにしっかりつながります。スキンと壁のライン幅が同じで、割合が50%を超えると、スキンが壁を通過している可能性があります。これは、その時点で、スキン押出機のノズルの位置が、すでに壁の真ん中を過ぎている可能性があるためです。" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "表面公差" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "壁とスキンの中央ライン(のエンドポイント)が交差する量を調整します。わずかな交差によって、壁がスキンにしっかりつながります。スキンと壁のライン幅が同じで、壁の幅が半分以上の値になると、スキンが壁を通過している可能性があります。これは、その時点で、スキン押出機のノズルの位置が、すでに壁の真ん中を過ぎている可能性があるためです。" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1685,6 +1782,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "インフィルパターンはY軸に沿ってこの距離を移動します。" +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "インフィル開始のランダム化" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "どのインフィルラインが最初に印刷されるかをランダム化します。これによって1つのセグメントが強くなることを回避しますが、追加の移動距離が必要となります。" + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1705,7 +1812,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "インフィルエリア周辺に外壁を追加します。このような壁は、上層/底層ラインにたるみを作ります。つまり、一部の外壁材料の費用で同じ品質を実現するためには、必要な上層/底層スキンが少ないことを意味します。\nこの機能は、インフィルポリゴン接合と組み合わせて、構成が正しい場合、移動または引き戻しが必要なく、すべてのインフィルを1つの押出経路に接続することができます。" +msgstr "" +"インフィルエリア周辺に外壁を追加します。このような壁は、上層/底層ラインにたるみを作ります。つまり、一部の外壁材料の費用で同じ品質を実現するためには、必要な上層/底層スキンが少ないことを意味します。\n" +"この機能は、インフィルポリゴン接合と組み合わせて、構成が正しい場合、移動または引き戻しが必要なく、すべてのインフィルを1つの押出経路に接続することができます。" #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1738,27 +1847,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "インフィルと壁が交差する量、わずかな交差によって壁がインフィルにしっかりつながります。" -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "表面公差量" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "スキンと壁のオーバーラップ量 (スキンライン幅に対する%)。少しのオーバーラップによって壁がスキンにしっかりつながります。これは、スキンライン幅の平均ライン幅と最内壁の%です。" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "表面公差" - -# msgstr "スキンオーバーラップ" -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "スキンと壁の間の交差した量 わずかなオーバーラップによって壁がスキンにしっかりつながります。" - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1808,7 +1896,9 @@ msgstr "インフィル優先" #: fdmprinter.def.json msgctxt "infill_before_walls description" msgid "Print the infill before printing the walls. Printing the walls first may lead to more accurate walls, but overhangs print worse. Printing the infill first leads to sturdier walls, but the infill pattern might sometimes show through the surface." -msgstr "壁より前にインフィルをプリントします はじめに壁をプリントするとより精密な壁になりますが、オーバーハングのプリントは悪化します\nはじめにインフィルをプリントすると丈夫な壁になりますが、インフィルの模様が時折表面から透けて表れます。" +msgstr "" +"壁より前にインフィルをプリントします はじめに壁をプリントするとより精密な壁になりますが、オーバーハングのプリントは悪化します\n" +"はじめにインフィルをプリントすると丈夫な壁になりますが、インフィルの模様が時折表面から透けて表れます。" #: fdmprinter.def.json msgctxt "min_infill_area label" @@ -1945,6 +2035,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "印刷中のデフォルトの温度。これはマテリアルの基本温度となります。他のすべての造形温度はこの値に基づいてオフセットする必要があります" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "造形温度" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "印刷するプリンタ内の温度。これがゼロ (0) の場合、造形温度は調整できません。" + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -2055,6 +2155,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "収縮率をパーセントで示す。" +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "結晶性材料" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "この材料は加熱時にきれいに分解するタイプ (結晶性) または長く絡み合ったポリマー鎖 (非結晶) を作り出すタイプのいずれですか?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "滲出防止引戻し位置" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "滲出を止めるには材料をどこまで引き戻す必要があるか。" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "滲出防止引戻し速度" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "滲出を防止するにはフィラメントスイッチ中に材料をどの程度速く引き戻す必要があるか。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "フィラメントの引き出し準備引戻し位置" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "加熱中にフィラメントの引き出しが生じる距離。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "フィラメント引き出し準備引戻し速度" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "フィラメントの引き出しが起こるための引き戻しの距離。" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "フィラメント引き出しの引戻し位置" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "フィラメントをきれいに引き出すにはフィラメントをどこまで引き戻すか。" + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "フィラメント引き出しの引戻し速度" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "フィラメントをきれいに引き出すために維持すべきフィラメントの引戻し速度。" + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "フィラメント引き出し温度" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "フィラメントがきれいに引き出される温度。" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2065,6 +2245,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "流れの補修: 押出されるマテリアルの量は、この値から乗算されます。" +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "壁のフロー" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "壁のフロー補正。" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "外壁のフロー" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "最外壁のフロー補正。" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "内壁のフロー" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "最外壁以外の壁のフロー補正。" + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "上面/下面フロー" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "上面/下面のフロー補正。" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "上部表面スキンフロー" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "印刷物の上部表面のフロー補正。" + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "インフィルフロー" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "インフィルのフロー補正。" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "スカート/ブリムのフロー" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "スカートまたはブリムのフロー補正。" + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "支持材のフロー" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "支持材のフロー補正。" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "支持材界面フロー" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "支持材の天井面または床面のフロー補正。" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "支持材天井面フロー" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "支持材天井面のフロー補正。" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "支持材床面フロー" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "支持材床面のフロー補正。" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "プライムタワーのフロー" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "プライムタワーのフロー補正。" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2182,8 +2482,8 @@ msgstr "サポート引き戻し限界" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "サポートからサポートに直線移動する場合は、引き戻しを省略します。この設定を有効にすると、印刷時間が短縮されますが、サポート構造内部の糸引きが多くなります。" +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "支持材から支持材に直線移動する場合は、引戻しを省略します。この設定を有効にすると、印刷時間は節約できますが、支持材内で過剰な糸引きが発生する可能性があります。" #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2202,8 +2502,8 @@ msgstr "ノズルスイッチ引き戻し距離" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "引き込み量:引き込みを行わない場合は0に設定します。これは通常、ヒートゾーンの長さと同じに設定します。" +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "エクストルーダー切り替え時の引き込み量。引き込みを行わない場合は0に設定します。これは通常、ヒートゾーンの長さと同じに設定します。" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2235,6 +2535,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "ノズル スイッチ後にフィラメントが押し戻される速度。" +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "ノズル切替え後のプライムに必要な余剰量" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "ノズル切替え後のプライムに必要な余剰材料。" + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2429,14 +2739,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "スカートとブリムのプリント速度 通常は一層目のスピードと同じですが、異なる速度でスカートやブリムをプリントしたい場合に設定してください。" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "最大Z速度" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Z 軸ホップ速度" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "ビルトプレートが移動する最高速度 この値を0に設定すると、ファームウェアのデフォルト値のZの最高速度が適用されます。" +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Z 軸ホップに対して垂直 Z 軸方向の動きが行われる速度。これは通常、ビルドプレートまたはマシンのガントリーが動きにくいため、印刷速度よりも低くなります。" #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2871,8 +3181,8 @@ msgstr "コーミングモード" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "コーミングは、移動時に印刷済みエリア内にノズルを保持します。この結果、移動距離が長くなりますが、引き戻しの必要性が軽減されます。コーミングがオフの場合は、材料を引き戻して、ノズルを次のポイントまで直線に移動します。コーミングが上層/底層スキンエリアを超えずに、インフィル内のみコーミングするようにできます。「インフィル内」オプションは、Cura の旧版の「スキン内にない」オプションと全く同じ動作をします。" +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "コーミングは、走行時にすでに印刷された領域内にノズルを保ちます。その結果、移動距離はわずかに長くなりますが、引き込みの必要性は減ります。コーミングがオフの場合、フィラメントの引き戻しを行い、ノズルは次のポイントまで直線移動します。また、インフィルのみにてコーミングすることにより、トップとボトムのスキン領域上での櫛通りを回避できます。" #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2944,17 +3254,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "ノズルが既に印刷された部分を移動する際の間隔。" -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "同じパーツでレイヤーを開始する" - -#: fdmprinter.def.json -#, fuzzy -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "各レイヤーの印刷は決まった場所近い距離のポイントにて印刷を始めます。そのため、前のレイヤーが終わった部分から新しいレイヤーのプリントを開始しません。これによりオーバーハングや小さなパーツの印刷改善されますが、その代わり印刷時間が長くなります。" - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3015,6 +3314,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "マシーンが1つのエクストルーダーからもう一つのエクストルーダーに切り替えられた際、ビルドプレートが下降して、ノズルと印刷物との間に隙間が形成される。これによりノズルが造形物の外側にはみ出たマテリアルを残さないためである。" +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "エクストルーダースイッチ高さ後のZホップ" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "エクストルーダースイッチ後のZホップを実行するときの高さの違い。" + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3051,7 +3360,6 @@ msgid "Regular Fan Speed" msgstr "標準ファン速度" #: fdmprinter.def.json -#, fuzzy msgctxt "cool_fan_speed_min description" msgid "The speed at which the fans spin before hitting the threshold. When a layer prints faster than the threshold, the fan speed gradually inclines towards the maximum fan speed." msgstr "しきい値に達する前のファンの回転スピード。プリント速度がしきい値より速くなると、ファンの速度は上がっていきます。" @@ -3082,7 +3390,6 @@ msgid "Initial Fan Speed" msgstr "初期ファン速度" #: fdmprinter.def.json -#, fuzzy msgctxt "cool_fan_speed_0 description" msgid "The speed at which the fans spin at the start of the print. In subsequent layers the fan speed is gradually increased up to the layer corresponding to Regular Fan Speed at Height." msgstr "プリント開始時にファンが回転する速度。後続のレイヤーでは、ファン速度は、高さに応じて早くなります。" @@ -3290,6 +3597,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "クロス" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "ジャイロイド" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3352,14 +3664,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "印刷した初期層間の距離が構造ライをサポートします。この設定は、対応濃度で算出されます。" #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "サポートインフィルラインの向き" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "対応するインフィルラインの向きです。サポートインフィルパターンは平面で回転します。" +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "使用する整数線の方向のリスト。リストの要素は、層が進行するにつれて順番に使用され、リストの終わりに達すると、最初から再び開始されます。リスト項目はコンマで区切られ、リスト全体は大括弧で囲まれています。デフォルトは空のリストであり、デフォルト角度の0度を使用します。" #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3489,8 +3801,8 @@ msgstr "サポート接合距離" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "X/Y方向のサポート構造間の最大距離。別の構造がこの値より近づいた場合、構造は 1 つにマージします。" +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "支持材間における X/Y 軸方向の最大距離。個別の支持材間の距離がこの値よりも近い場合、支持材は 1 つにマージされます。" #: fdmprinter.def.json msgctxt "support_offset label" @@ -3535,6 +3847,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "密度が半分に切り替える前の所定のサポートのインフィルの高さ。" +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "最小サポート領域" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "ポリゴンをサポートする最小領域サイズ。この領域よりポリゴンが小さい場合は生成されません。" + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3777,6 +4099,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "ジグザグ" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "最小サポートインターフェイス領域" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "サポートインターフェイスポリゴンの最小領域サイズ。この値より小さい領域のポリゴンは通常のサポートとしてプリントされます。" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "最小サポートルーフ領域" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "サポートのルーフの最小領域サイズ。この値より小さい領域のポリゴンは通常のサポートとしてプリントされます。" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "最小サポートフロア領域" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "サポートのフロアの最小領域サイズ。この値より小さい領域のポリゴンは通常のサポートとしてプリントされます。" + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "サポートインターフェイス水平展開" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "サポートインターフェイスポリゴンに適用されるオフセット量。" + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "サポートルーフ水平展開" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "サポートのルーフに適用されるオフセット量。" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "サポートフロア水平展開" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "サポートのフロアに適用されるオフセット量。" + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "サポート面のライン方向" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "使用する整数線の方向のリスト。リストの要素は、レイヤの層に合わせて順番に使用され、リストの末尾に達すると、最初から再び開始されます。リスト項目はコンマで区切られ、リスト全体は大括弧で囲まれています。デフォルトは空のリストとなり、デフォルトの角度を使用します(面がかなり厚い場合には45度と135度を交互に使用、それ以外では90度を使用)。" + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "サポートルーフライン方向" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "使用する整数線の方向のリスト。リストの要素は、レイヤの層に合わせて順番に使用され、リストの末尾に達すると、最初から再び開始されます。リスト項目はコンマで区切られ、リスト全体は大括弧で囲まれています。デフォルトは空のリストとなり、デフォルトの角度を使用します(面がかなり厚い場合には45度と135度を交互に使用、それ以外では90度を使用)。" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "サポートフロアライン方向" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "使用する整数線の方向のリスト。リストの要素は、レイヤの層に合わせて順番に使用され、リストの末尾に達すると、最初から再び開始されます。リスト項目はコンマで区切られ、リスト全体は大括弧で囲まれています。デフォルトは空のリストとなり、デフォルトの角度を使用します(面がかなり厚い場合には45度と135度を交互に使用、それ以外では90度を使用)。" + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3819,14 +4231,14 @@ msgid "The diameter of a special tower." msgstr "特別な塔の直径。" #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "最小直径" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "最大タワーサポート直径" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "特殊なサポート塔によって支持される小さな領域のX / Y方向の最小直径。" +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "特殊なサポートタワーにより支持される小さな領域のX / Y方向の最小直径。" #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3954,7 +4366,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "スカートと印刷の最初の層の間の水平距離。\nこれは最小距離です。複数のスカートラインがこの距離から外側に展開されます。" +msgstr "" +"スカートと印刷の最初の層の間の水平距離。\n" +"これは最小距離です。複数のスカートラインがこの距離から外側に展開されます。" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4326,16 +4740,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "印刷物の横にタワーを造形して、ノズル交換後にフィラメントの調整をします。" -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "円形プライムタワー" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "プライムタワーを円形にします。" - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4376,16 +4780,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "プライムタワーの位置のy座標。" -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "プライムタワーのフロー" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "吐出量: マテリアルの吐出量はこの値の乗算で計算されます。" - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4396,6 +4790,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "1本のノズルでプライムタワーを印刷した後、もう片方のノズルから滲み出した材料をプライムタワーが拭き取ります。" +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "プライムタワーブリム" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "モデルがない場合でも、プライムタワーには、ブリムによって与えられる追加の付着が必要なことがあります。現在は「ラフト」密着型では使用できません。" + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4516,6 +4920,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "最初に印刷したレイヤーの下に空のレイヤーがある場合は取り除きます。この設定を無効にすると、スライストレランスが「排他」または「中間」に設定されている場合に最初のレイヤーが空になる原因になります。" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "最大解像度" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "スライス後の線分の最小サイズ。これを増やすと、メッシュの解像度が低くなります。これにより、プリンタが g コードの処理速度に追いつくことができ、処理できないメッシュの詳細を取り除いてスライス速度を速めます。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "最大移動解像度" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "スライス後の移動線分の最小サイズ。これを増やすと、移動の跡が滑らかでなくなります。これにより、プリンタが g コードの処理速度に追いつくことができますが、精度が低下します。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "最大偏差" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "最大解像度設定の解像度を下げるときに許容される最大偏差です。これを大きくすると印刷の精度は低くなりますが、g-codeは小さくなります。最大偏差は最大解像度の限度であるため、最大偏差でこの2つが競合する場合には常にtrueとなります。" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4681,11 +5115,10 @@ msgctxt "smooth_spiralized_contours label" msgid "Smooth Spiralized Contours" msgstr "滑らかな輪郭" -# msgstr "滑らかならせん状の輪郭" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "らせん状の輪郭を滑らかにしてZシームの視認性を低下させます(Zシームは印刷物上でほとんどみえませんが、レイヤービューでは確認できます。)スムージングは​​細かいサーフェスの詳細をぼかす傾向があることに注意してください。" +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "らせん状の輪郭を滑らかにしてZシームの視認性を低下させます (Zシームは印刷物上でほとんどみえませんが、層ビューでは確認できます)。スムージングは、細かい表面の詳細をぼかす傾向があることに注意してください。" #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4705,7 +5138,7 @@ msgstr "実験" #: fdmprinter.def.json msgctxt "experimental description" msgid "experimental!" -msgstr "実験的" +msgstr "実験的!" #: fdmprinter.def.json msgctxt "support_tree_enable label" @@ -4903,26 +5336,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "この量よりも小さい円周を持つスライスレイヤーのポリゴンは、除外されます。値を小さくすると、スライス時間のコストで、メッシュの解像度が高くなります。つまり、ほとんどが高解像 SLA プリンター、極小多機能 3D モデルです。" -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "最大解像度" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "スライス後の線分の最小サイズ。これを増やすと、メッシュの解像度が低くなります。これにより、プリンタが g コードの処理速度に追いつくことができ、処理できないメッシュの詳細を取り除いてスライス速度を速めます。" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "最大移動解像度" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "スライス後の移動線分の最小サイズ。これを増やすと、移動の跡が滑らかでなくなります。これにより、プリンタが g コードの処理速度に追いつくことができますが、精度が低下します。" - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -5066,16 +5479,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "コースティング中の移動速度。印刷時の経路の速度設定に比例します。ボーデンチューブの圧力が低下するので、100%よりわずかに低い値が推奨される。" -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "レイヤー回転変更" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "トップ/ボトムのレイヤーが印刷される方向を変更します。通常、それらは斜めに印刷されます。この設定では、X方向のみとY方向のみが追加されます。" - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5191,8 +5594,8 @@ msgstr "円錐サポートを有効にする" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "実験的機能:オーバーハング部分よりも底面のサポート領域を小さくする。" +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "オーバーハング部分よりも底面の支持領域を小さくする。" #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5256,23 +5659,23 @@ msgstr "各線分に導入されたランダム点間の平均距離。ポリゴ #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "流量補正時の最大抽出オフセット" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "補正の最大距離をミリ単位で指定します。" +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "流量の変化を補正するためにフィラメントを移動する最大距離(mm)。" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "流量補正要因" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "流量を距離に変換する際の要因。" +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "流量の変化を補正するためにフィラメントを移動する距離。フィラメントが1秒の押出で移動する距離の割合として指定します。" #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5533,7 +5936,7 @@ msgstr "ノズルと水平方向に下向きの線間の距離。大きな隙間 #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "適応レイヤーの使用" #: fdmprinter.def.json @@ -5543,7 +5946,7 @@ msgstr "適応レイヤーは、レイヤーの高さをモデルの形状に合 #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "適応レイヤー最大差分" #: fdmprinter.def.json @@ -5553,7 +5956,7 @@ msgstr "基準レイヤー高さと比較して許容される最大の高さ。 #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "適応レイヤー差分ステップサイズ" #: fdmprinter.def.json @@ -5563,13 +5966,13 @@ msgstr "次のレイヤーの高さを前のレイヤーの高さと比べた差 #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "適応レイヤー閾値" +msgid "Adaptive Layers Topography Size" +msgstr "適応レイヤーのトポグラフィーサイズ" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "小さいレイヤーを使用するかどうかの閾値。この値が、レイヤー中の最も急な斜面のタンジェントと比較されます。" +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "隣接する2つのレイヤー間の目標水平距離。この設定を小さくすると、レイヤーのエッジが近づくように薄いレイヤーが使用されます。" #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5578,8 +5981,8 @@ msgstr "張り出し壁アングル" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "この角度以上に張り出した壁は、オーバーハング壁設定を使用して印刷されます。値が 90 の場合は、オーバーハング壁として処理されません。" +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "この角度以上に張り出した壁は、オーバーハング壁設定を使用してプリントされます。値が90の場合は、オーバーハング壁として処理されません。サポートによってサポートされているオーバーハングも、オーバーハングとして処理されません。" #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5781,6 +6184,196 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "サードブリッジのスキンレイヤーを印刷する際に使用するファン速度の割合。" +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "レイヤー間のノズル拭き取り" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "レイヤー間にノズル拭き取り G-Code を含むかどうか指定します。この設定を有効にすると、レイヤ変更時の引き戻し動作に影響する可能性があります。拭き取りスクリプトが動作するレイヤでの押し戻しを制御するには、ワイプリトラクト設定を使用してください。" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "ワイプ間の材料の量" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "別のノズル拭き取りを行う前に押し出せる材料の最大量。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "ワイプリトラクト有効" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "ノズルが印刷しないで良い領域を移動する際にフィラメントを引き戻す。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "ワイプリトラクト無効" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "拭き取りシーケンス中に出ないように押し戻すフィラメントの量。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "ワイプ引き戻し時の余分押し戻し量" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "いくつかの材料は、ワイプ移動中ににじみ出るためここで補償することができます。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "ワイプリトラクト速度" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "ワイプ引き戻し中にフィラメントが引き戻される時の速度。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "ワイプ引き戻し速度" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "ワイプ引き戻し移動時にフィラメントが引き戻される速度。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "押し戻し速度の取り消し" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "ワイプ引き戻し移動時にフィラメントが押し戻されるスピード。" + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "ワイプ一時停止" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "引き戻し前に一時停止します。" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "引き戻し時のワイプZホップ" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "引き戻しが完了すると、ビルドプレートが下降してノズルとプリントの間に隙間ができます。ノズルの走行中に造形物に当たるのを防ぎ、造形物をビルドプレートから剥がしてしまう現象を減らします。" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "ワイプZホップ高さ" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "Zホップを実行するときの高さ。" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "ワイプホップ速度" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "ホップ中に z 軸を移動する速度。" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "ワイプブラシXの位置" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "ワイプスクリプトを開始するX位置。" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "ワイプ繰り返し回数" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "ブラシ全体をノズルが移動する回数。" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "ワイプ移動距離" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "ブラシ全体でヘッド前後に動かす距離。" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "小さい穴の最大サイズ" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "これより直径が小さな輪郭の穴とパーツは、Small Feature Speedを使用して印刷されます。" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "小型形体の最大長さ" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "この長さより短い輪郭の形体は、Small Feature Speedを使用して印刷されます。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Small Feature Speed" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "小型形体は通常のプリント速度に対してこの割合でプリントされます。低速でプリントすると、接着と精度が向上します。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "小型形体の初期レイヤー速度" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "最初のレイヤーの小型形体は通常のプリント速度に対してこの割合でプリントされます。低速でプリントすると、接着と精度が向上します。" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5841,6 +6434,241 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "ファイルから読み込むときに、モデルに適用するトランスフォーメーションマトリックス。" +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "インターフェイスポリゴンをサポートする最小領域サイズ。この領域よりポリゴンが小さい場合は生成されません。" + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "サポートのルーフに対する最小領域サイズ。この領域よりポリゴンが小さい場合は生成されません。" + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "サポートのフロアに対する最小領域サイズ。この領域よりポリゴンが小さい場合は生成されません。" + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "レイヤー回転変更" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "トップ/ボトムのレイヤーが印刷される方向を変更します。通常、それらは斜めに印刷されます。この設定では、X方向のみとY方向のみが追加されます。" + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "流量補正時の最大抽出オフセット" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "補正の最大距離をミリ単位で指定します。" + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "流量補正要因" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "流量を距離に変換する際の要因。" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "適応レイヤーしきい値" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "小さいレイヤーを使用するかどうかの閾値。この値が、レイヤー中の最も急な斜面のタンジェントと比較されます。" + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "この角度以上に張り出した壁は、オーバーハング壁設定を使用して印刷されます。値が 90 の場合は、オーバーハング壁として処理されません。" + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "小型形体は通常の印刷速度よりこの割合で印刷されます。低速の印刷によって、接着と精度が向上します。" + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "最初のレイヤー速度" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "小型形体の最初のレイヤーは通常の印刷速度よりこの割合で印刷されます。低速の印刷によって、接着と精度が向上します。" + +# msgstr "アイロンを有効にする" +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "ノズルから吐出せずに上部表面を再度動く機能。表面を溶かしてよりスムースにします。" + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "同じパーツでレイヤーを開始する" + +#, fuzzy +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "各レイヤーの印刷は決まった場所近い距離のポイントにて印刷を始めます。そのため、前のレイヤーが終わった部分から新しいレイヤーのプリントを開始しません。これによりオーバーハングや小さなパーツの印刷改善されますが、その代わり印刷時間が長くなります。" + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "対応するインフィルラインの向きです。サポートインフィルパターンは平面で回転します。" + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "最大解像度設定の解像度を下げるときに許容される最大偏差です。これを大きくすると、印刷の精度は低くなりますが、g-code は小さくなります。" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-codeフレーバー" + +# msgstr "薄層のプレファレンス" +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "モデル輪郭のコーナーがシーム(縫い目)の位置に影響するかどうかを制御します。 Noneはコーナーがシームの位置に影響を与えないことを意味します。 Seam(縫い目)を非表示にすると、内側のコーナーでシームが発生しやすくなります。 Seamを表示すると、外側の角にシームが発生する可能性が高くなります。 シームを隠す、または表示するを選択することにより、内側または外側コーナーでシームを発生させる可能性が高くなります。" + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "小さいZギャップは無視" + +# msgstr "小さなZギャップを無視する" +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "モデルに垂直方向のギャップが小さくある場合、これらの狭いスペースにおいて上部および下部スキンを生成するために、約5%の計算時間が追加されます。そのような場合は、設定を無効にしてください。" + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "造形に使用した温度。これがゼロ (0) の場合、造形温度は調整できません。" + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "サポートからサポートに直線移動する場合は、引き戻しを省略します。この設定を有効にすると、印刷時間が短縮されますが、サポート構造内部の糸引きが多くなります。" + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "最大Z速度" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "ビルトプレートが移動する最高速度 この値を0に設定すると、ファームウェアのデフォルト値のZの最高速度が適用されます。" + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "X/Y方向のサポート構造間の最大距離。別の構造がこの値より近づいた場合、構造は 1 つにマージします。" + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "最小直径" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "特殊なサポート塔によって支持される小さな領域のX / Y方向の最小直径。" + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "円形プライムタワー" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "プライムタワーを円形にします。" + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "吐出量: マテリアルの吐出量はこの値の乗算で計算されます。" + +# msgstr "滑らかならせん状の輪郭" +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "らせん状の輪郭を滑らかにしてZシームの視認性を低下させます(Zシームは印刷物上でほとんどみえませんが、レイヤービューでは確認できます。)スムージングは​​細かいサーフェスの詳細をぼかす傾向があることに注意してください。" + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "実験的機能:オーバーハング部分よりも底面のサポート領域を小さくする。" + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "有効なエクストルーダーの数" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "ノズル外径" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "ノズル長さ" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "ノズル角度" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "ノズル加熱長さ" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "加熱速度" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "冷却速度" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "G-codeフレーバー" + +# msgstr "Repetier" +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "拒否エリア" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "プリントヘッドポリゴン" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "プリントヘッドとファンポリゴン" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "ガントリー高さ" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "エクストルーダーのオフセット" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "適応レイヤーの使用" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "適応レイヤー最大差分" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "適応レイヤー差分ステップサイズ" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "適応レイヤー閾値" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "スキンと壁のオーバーラップ量 (スキンライン幅に対する%)。少しのオーバーラップによって壁がスキンにしっかりつながります。これは、スキンライン幅の平均ライン幅と最内壁の%です。" + +# msgstr "スキンオーバーラップ" +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "スキンと壁の間の交差した量 わずかなオーバーラップによって壁がスキンにしっかりつながります。" + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "引き込み量:引き込みを行わない場合は0に設定します。これは通常、ヒートゾーンの長さと同じに設定します。" + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "コーミングは、移動時に印刷済みエリア内にノズルを保持します。この結果、移動距離が長くなりますが、引き戻しの必要性が軽減されます。コーミングがオフの場合は、材料を引き戻して、ノズルを次のポイントまで直線に移動します。コーミングが上層/底層スキンエリアを超えずに、インフィル内のみコーミングするようにできます。「インフィル内」オプションは、Cura の旧版の「スキン内にない」オプションと全く同じ動作をします。" + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "互いに次に実行する上層/底層スキンパスに接合します。同心円のパターンの場合、この設定を有効にすることにより、移動時間が短縮されますが、インフィルまでの途中で接合があるため、この機能で上層面の品質が損なわれることがあります。" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po index 6f32d46cd7..824cc276e8 100644 --- a/resources/i18n/ko_KR/cura.po +++ b/resources/i18n/ko_KR/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-11-06 15:00+0100\n" -"Last-Translator: Jinbuhm Kim \n" -"Language-Team: Jinbum Kim , Korean \n" +"Project-Id-Version: Cura 4.4\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-09-23 14:16+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Korean , Jinbum Kim , Korean \n" "Language: ko_KR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.1\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "기기 설정" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-code 파일" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter는 텍스트가 아닌 모드는 지원하지 않습니다." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "내보내기 전에 G-code를 준비하십시오." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D 모델 도우미" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,66 +70,50 @@ msgstr "" "

    인쇄 품질 및 안정성을 최고로 높이는 방법을 알아보십시오.

    \n" "

    인쇄 품질 가이드 보기

    " -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "변경 내역 표시" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "펌웨어 업데이트" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "활성 설정 병합" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF 파일" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "프로파일이 병합되고 활성화되었습니다." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 프린팅" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USB를 통해 프린팅" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USB를 통해 프린팅" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "USB를 통해 연결" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "USB 인쇄가 진행 중입니다. Cura를 닫으면 인쇄도 중단됩니다. 계속하시겠습니까?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G 파일" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "프린트가 아직 진행 중입니다. Cura는 이전 프린트가 완료될 때까지는 USB를 통해 다른 프린트를 시작할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "파일에 X3g 쓰기" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g 파일" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "프린트 진행 중" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -143,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "GCodeGzWriter는 텍스트 모드는 지원하지 않습니다." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Ultimaker 포맷 패키지" @@ -164,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "이동식 드라이브 {0}에 저장" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "쓸 수있는 파일 형식이 없습니다!" @@ -201,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "이동식 드라이브 {0}: {1} 에 저장할 수 없습니다 :" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "오류" @@ -232,8 +217,9 @@ msgstr "이동식 장치 {0} 꺼내기" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "경고" @@ -260,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "이동식 드라이브" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "네트워크를 통해 프린팅" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "네트워크를 통해 프린팅" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "네트워크를 통해 연결됨." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "네트워크를 통해 연결되었습니다. 프린터의 접근 요청을 승인하십시오." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "네트워크를 통해 연결되었습니다. 프린터를 제어할 수 있는 권한이 없습니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "요청된 프린터에 대한 액세스. 프린터에서 요청을 승인하십시오" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "인증 상태" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "인증 상태" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "재시도" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "접근 요청 다시 보내기" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "허용 된 프린터에 대한 접근 허용" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "이 프린터로 프린팅 할 수 없습니다. 프린팅 작업을 보낼 수 없습니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "접근 요청" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "프린터에 접근 요청 보내기" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "새 프린팅 작업을 시작할 수 없습니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Ultimaker의 설정에 문제가 있어 프린팅을 시작할 수 없습니다. 계속하기 전에 이 문제를 해결하십시오." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "일치하지 않는 구성" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "선택한 구성으로 프린팅 하시겠습니까?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "프린터와 Cura의 설정이 일치하지 않습니다. 최상의 결과를 얻으려면 프린터에 삽입 된 PrintCores 및 재료로 슬라이싱을 하십시오." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "새로운 작업 전송 (일시적)이 차단되어 이전 프린팅 작업을 계속 보냅니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "프린터로 데이터 보내기" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "데이터 전송 중" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "취소" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "{slot_number} 슬롯에 로드 된 프린터코어가 없음" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "{slot_number}에 로드 된 재료가 없음" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "익스트루더 {extruder_id}에 대해 다른 프린터코어 (Cura : {cura_printcore_name}, 프린터 : {remote_printcore_name})가 선택되었습니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "익스트루더 {2}에 다른 재료 (Cura : {0}, Printer : {1})가 선택됨" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "프린터와 동기화" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Cura에서 현재 프린터 구성을 사용 하시겠습니까?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "프린터의 PrintCores와 재료는 현재 프로젝트 내의 재료와 다릅니다. 최상의 결과를 얻으려면 프린터에 삽입 된 PrintCores 및 재료로 슬라이싱 하십시오." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "네트워크를 통해 연결됨" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "출력 작업이 프린터에 성공적으로 보내졌습니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "데이터 전송 됨" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "모니터에서 보기" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "'{printer_name} 프린터가 '{job_name}' 프린팅을 완료했습니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "인쇄 작업 ‘{job_name}’이 완료되었습니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "프린팅이 완료됨" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "네트워크를 통해 연결" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "네트워크를 통해 프린팅" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "네트워크를 통해 프린팅" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "네트워크를 통해 연결됨" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "현재 작업이 전송될 때까지 기다려주십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "프린트 오류" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "새 프린터를 찾을 수 없음" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "새 프린터가 계정에 연결되어 있습니다. 발견한 프린터를 목록에서 찾을 수 있습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "다시 메시지 표시 안 함" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "연결 시도 중인 {0}이(가) 그룹의 호스트가 아닙니다. 웹 페이지에서 그룹 호스트로 설정할 수 있습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "그룹 호스트 아님" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "그룹 설정" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Ultimaker 계정을 사용하여 어디에서든 인쇄 작업을 전송하고 모니터링하십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Ultimaker Cloud에 연결" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "시작하기" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "인쇄 작업 전송" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "프린트 작업을 프린터로 업로드하고 있습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "출력 작업이 프린터에 성공적으로 보내졌습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "데이터 전송 됨" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Ultimaker Connect를 실행하지 않는 프린터에 연결하려 합니다. 프린터를 최신 펌웨어로 업데이트해 주십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "프린터 업데이트" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura가 {0} 그룹의 호스트 프린터에 설치되지 않은 재료 프로파일을 감지했습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "재료를 프린터로 전송 중" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "데이터를 프린터로 업로드할 수 없음." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "네트워크 오류" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "내일" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "오늘" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Cloud를 통해 인쇄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Cloud를 통해 인쇄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Cloud를 통해 연결됨" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "모니터" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "업데이트 정보에 액세스 할 수 없습니다." @@ -507,22 +425,28 @@ msgctxt "@action:button" msgid "How to update" msgstr "업데이트하는 방법" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "레이어 뷰" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "와이어 프린팅이 활성화되어 있을 때 Cura는 레이어를 정확하게 표시하지 않습니다" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "시뮬레이션 뷰" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "후 처리" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" msgstr "G 코드 수정" @@ -536,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "서포트가 프린팅되지 않는 볼륨을 만듭니다." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura는 익명의 사용 통계를 수집합니다." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "데이터 수집" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "추가 정보" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Cura가 전송하는 데이터에 대한 추가 정보를 확인하십시오." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "허용" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Cura가 익명의 사용 통계를 보내 Cura에 대한 향후 개선을 우선화하는 데 도움을 줍니다. Cura 버전과 슬라이싱하는 모델의 해쉬 등 일부 환경설정 값이 발송됩니다." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -596,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 이미지" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "선택한 소재 또는 구성과 호환되지 않기 때문에 현재 소재로 슬라이스 할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "슬라이스 할 수 없습니다" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "현재 설정으로 슬라이스 할 수 없습니다. 다음 설정에는 오류가 있습니다 : {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "일부 모델별 설정으로 인해 슬라이스할 수 없습니다. 하나 이상의 모델에서 다음 설정에 오류가 있습니다. {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "프라임 타워 또는 위치가 유효하지 않아 슬라이스 할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "비활성화된 익스트루더 %s(와)과 연결된 개체가 있기 때문에 슬라이스할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "어떤 모델도 빌드 볼륨에 맞지 않으므로 슬라이스 할 수 없습니다. 크기에 맞게 모델을 회전하거나 회전하십시오." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "어떤 모델도 빌드 볼륨에 맞지 않으므로 슬라이스 할 수 없습니다. 크기에 맞게 모델을 위치시키거나 회전하거나, 또는 익스트루더를 활성화하십시오." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "레이어 처리 중" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "정보" @@ -660,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "모델 별 설정 구성" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "추천" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "사용자 정의" @@ -678,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 파일" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "노즐" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "프로젝트 파일 {0}에 알 수 없는 기기 유형 {1}이(가) 포함되어 있습니다. 기기를 가져올 수 없습니다. 대신 모델을 가져옵니다." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "프로젝트 파일 열기" @@ -705,22 +627,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G 파일" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G 코드 파싱" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-코드 세부 정보" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "파일을 보내기 전에 g-코드가 프린터 및 프린터 구성에 적합한 지 확인하십시오. g-코드가 정확하지 않을 수 있습니다." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "백업 관리" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "백업" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "백업 열거 중 오류가 있었습니다." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "백업 복원 시도 중 오류가 있었습니다." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "백업" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "백업 업로드 중..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "백업을 업로드하는 도중 오류가 있었습니다." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "백업이 업로드를 완료했습니다." + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -742,330 +707,451 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "3MF 파일 작성 중 오류." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "미리 보기" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "업그레이드 선택" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "검사" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "레벨 빌드 플레이트" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "외벽" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "내벽" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "스킨" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "내부채움" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "내부채움 서포트" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "지원하는 인터페이스" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "서포트" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "스커트" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "움직임 경로" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "리트랙션" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "다른" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "미리 슬라이싱한 파일 {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "로그인 실패" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "지원되지 않음" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "파일이 이미 있습니다" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "파일 {0}이 이미 있습니다. 덮어 쓰시겠습니까?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "재정의되지 않음" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "선택한 재료가 선택한 기기 또는 구성과 호환되지 않습니다." +msgid "Invalid file URL:" +msgstr "유효하지 않은 파일 URL:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "호환되지 않는 재료" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "익스트루더의 현재 가용성과 일치하도록 설정이 변경되었습니다:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "현재 사용가능한 익스트루더: [% s]에 맞도록 설정이 변경되었습니다" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "설정이 업데이트되었습니다" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "익스트루더 비활성화됨" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "알 수 없는" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "프로파일을 {0}: {1}로 내보내는데 실패했습니다" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "프로파일을 {0}로 내보내지 못했습니다. Writer 플러그인이 오류를 보고했습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "프로파일을 {0} 에 내보냅니다" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "내보내기 완료" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "{0}: {1} 에서 프로파일을 가져 오지 못했습니다" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "{0}에서 프로파일을 가져오지 못했습니다 {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "프린터가 추가되기 전 {0}에서 프로파일을 가져올 수 없습니다." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "{0}(으)로 가져올 사용자 정의 프로파일이 없습니다" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "{0}에서 프로파일을 가져오지 못했습니다:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "프로파일 {0}에는 정확하지 않은 데이터가 포함되어 있으므로, 불러올 수 없습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "프로필 {0}({1})에 정의된 제품이 현재 제품({2})과 일치하지 않으므로, 불러올 수 없습니다." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "{0}에서 프로파일을 가져오지 못했습니다:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "프로파일 {0}을 성공적으로 가져 왔습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "파일 {0}에 유효한 프로파일이 포함되어 있지 않습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "프로파일 {0}에 알 수 없는 파일 유형이 있거나 손상되었습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "사용자 정의 프로파일" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "프로파일에 품질 타입이 누락되었습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "현재 구성에 대해 품질 타입 {0}을 찾을 수 없습니다." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "외벽" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "내벽" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "스킨" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "내부채움" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "내부채움 서포트" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "지원하는 인터페이스" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "서포트" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "스커트" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "프라임 타워" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "움직임 경로" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "리트랙션" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "다른" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "미리 슬라이싱한 파일 {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "다음" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "그룹 #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "네트워크 프린터" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "닫기" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "로컬 프린터" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "추가" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "취소" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "뛰어난 외관" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "시각적 프로파일은 높은 시각적 및 표면 품질의 의도를 지니고 시각적 프로토타입과 모델을 인쇄하기 위해 설계되었습니다." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "엔지니어링 프로파일은 정확도를 개선하고 허용 오차를 좁히려는 의도로 기능 프로토타입 및 최종 사용 부품을 인쇄하도록 설계되었습니다." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "초안" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "초안 프로파일은 인쇄 시간을 상당히 줄이려는 의도로 초기 프로토타입과 컨셉트 확인을 인쇄하도록 설계되었습니다." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "재정의되지 않음" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "사용자 정의 프로파일" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "지원되는 모든 유형 ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "모든 파일 (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "사용자 정의 소재" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "사용자 정의" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "아래 프린터는 그룹에 속해 있기 때문에 연결할 수 없습니다" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "사용 가능한 네트워크 프린터" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "\"프린팅 순서\"설정 값으로 인해 갠트리가 프린팅 된 모델과 충돌하지 않도록 출력물 높이가 줄어 들었습니다." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "출력물 크기" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "사용자 데이터 디렉터리에서 압축 파일을 만들 수 없습니다: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "백업" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "적절한 데이터 또는 메타 데이터 없이 Cura 백업을 복원하려고 시도했습니다." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "현재 버전과 일치하지 않는 Cura 백업을 복원하려고 시도했습니다." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "현재 버전보다 높은 Cura 백업을 복원하려고 시도했습니다." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "응답을 읽을 수 없습니다." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Ultimaker 계정 서버에 도달할 수 없음." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "이 응용 프로그램을 인증할 때 필요한 권한을 제공하십시오." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "로그인을 시도할 때 예기치 못한 문제가 발생했습니다. 다시 시도하십시오." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "객체를 증가시키고 배치" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" +msgid "Placing Objects" msgstr "개체 배치 중" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "모든 개체가 출력할 수 있는 최대 사이즈 내에 위치할 수 없습니다" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "개체 배치 중" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "객체의 새 위치 찾기" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "위치 찾기" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "위치를 찾을 수 없음" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "큐라를 시작할 수 없습니다" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1080,32 +1166,32 @@ msgstr "" "                    

    문제를 해결하기 위해이 오류 보고서를 보내주십시오. \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "충돌 보고서를 Ultimaker에 보내기" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "충돌 리포트 보기" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "설정 폴더 보기" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "백업 및 리셋 설정" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "충돌 보고서" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" @@ -1116,321 +1202,285 @@ msgstr "" "

    \"보고서 전송\" 버튼을 사용하면 버그 보고서가 서버에 자동으로 전달됩니다

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "시스템 정보" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "알 수 없음" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Cura 버전" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "플랫폼" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Qt 버전" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "PyQt 버전" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "아직 초기화되지 않음
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • OpenGL 버전: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • OpenGL 공급업체: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • OpenGL Renderer: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "오류 추적" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "로그" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "사용자 설명" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "사용자 설명(참고: 개발자가 다른 언어 사용자일 수 있으므로 가능하면 영어를 사용하십시오.)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "보고서 전송" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "기기로드 중 ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "환경 설정을 설정하는 중..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "장면 설정 중..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "인터페이스 로드 중 ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "한 번에 하나의 G-코드 파일만 로드 할 수 있습니다. {0} 가져 오기를 건너 뛰었습니다." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "G-코드가 로드되어 있으면 다른 파일을 열 수 없습니다. {0} 가져 오기를 건너 뛰었습니다." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "선택한 모델이 너무 작아서 로드할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "기기 설정" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "프린터" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "프린터 설정" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (너비)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (깊이)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (높이)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "빌드 플레이트 모양" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "중앙이 원점" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "히트 베드" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "히팅 빌드 사이즈" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "Gcode 유형" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "프린트헤드 설정" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X 최소값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "프린트 헤드 왼쪽에서 노즐 중심까지의 거리. \"한 번에 하나\"를 프린팅 할 때 이전 프린팅물과 프린팅 헤드 사이의 충돌을 방지하는 데 사용됩니다." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y 최소값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "프린트 헤드 전면에서 노즐 중앙까지의 거리. \"한 번에 하나\"를 프린팅 할 때 이전 프린팅물과 프린팅 헤드 사이의 충돌을 방지하는 데 사용됩니다." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X 최대값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "프린트 헤드의 오른쪽에서 노즐 중앙까지의 거리. \"한 번에 하나\"를 프린팅 할 때 이전 프린팅물과 프린팅 헤드 사이의 충돌을 방지하는 데 사용됩니다." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y 최대값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "프린트 헤드의 뒤쪽에서 노즐 중심까지의 거리. \"한 번에 하나\"를 프린팅 할 때 이전 프린팅물과 프린팅 헤드 사이의 충돌을 방지하는 데 사용됩니다." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "갠트리 높이" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "노즐 끝과 갠트리 시스템 사이의 높이 차이 (X 및 Y 축). \"한 번에 하나\"를 프린팅 할 때 이전 프린팅물과 갠트리 사이의 충돌을 방지하는 데 사용됩니다." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "익스트루더의 수" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" -msgstr "시작 Gcode" +msgstr "시작 GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "시작시 Gcode 명령이 실행됩니다." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" -msgstr "종료 Gcode" +msgstr "End GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "Gcode 명령어가 맨 마지막에 실행됩니다." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "프린터" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "노즐 설정" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "노즐 크기" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "호환되는 재료의 직경" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "프린터가 지원하는 필라멘트의 직경. 정확한 직경은 소재 및 / 또는 프로파일에 의해 덮어써집니다." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "노즐 오프셋 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "노즐 오프셋 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "냉각 팬 번호" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "익스트루더 시작 Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "익스트루더 종료 Gcode" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "설치" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "설치됨" @@ -1440,69 +1490,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Cura 패키지 데이터베이스에 연결할 수 없습니다. 연결을 확인하십시오." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "평가" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "플러그인" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "재료" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "귀하의 평가" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "버전" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "마지막으로 업데이트한 날짜" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "원작자" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "다운로드" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "알 수 없는" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "설치 또는 업데이트에 로그인 필요" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "재료 스플 구입" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "업데이트" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "업데이트 중" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "업데이트됨" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "도구 상자" +msgid "Marketplace" +msgstr "시장" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1529,52 +1592,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "프로파일" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "확인" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "평가하기 전 먼저 로그인해야 함" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "평가하기 전 패키지를 설치해야 함" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "패키지의 변경 사항이 적용되기 전에 Cura를 다시 시작해야 합니다." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Cura 끝내기" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "커뮤니티 기여" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "커뮤니티 플러그인" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "일반 재료" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "설치됨" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "다시 시작 시 설치 예정" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "업데이트에 로그인 필요" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "다운그레이드" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "설치 제거" @@ -1595,12 +1673,12 @@ msgstr "" "이 플러그인을 설치하려면 이 라이선스를 수락해야 합니다.\n" "아래의 약관에 동의하시겠습니까?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "동의" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "거절" @@ -1610,22 +1688,62 @@ msgctxt "@label" msgid "Featured" msgstr "추천" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "호환성" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "기기" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "빌드 플레이트" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "서포트" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "품질" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "기술 데이터 시트" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "안전 데이터 시트" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "인쇄 가이드라인" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "웹 사이트" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "패키지 가져오는 중..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "웹 사이트" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "이메일" @@ -1635,23 +1753,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "이 출력물에는 문제가있을 수 있습니다. 조정을 위한 도움말을 보려면 클릭하십시오." -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "변경 내역" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "닫기" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1727,426 +1828,502 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "펌웨어 누락으로 인해 펌웨어 업데이트에 실패했습니다." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "사용자 계약" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "프린터 관리" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "기존 연결" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "유리" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "이 프린터/그룹은 이미 Cura에 추가되었습니다. 다른 프린터/그룹을 선택하십시오." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "대기열을 원격으로 관리하려면 프린터 펌웨어를 업데이트하십시오." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "Cloud 프린터를 모니터링하고 있기 때문에 웹캠을 사용할 수 없습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "로딩 중..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "사용불가" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "연결할 수 없음" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "대기 상태" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "제목 없음" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "익명" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "구성 변경 필요" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "세부 사항" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "사용할 수 없는 프린터" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "첫 번째로 사용 가능" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "대기 중" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "브라우저에서 관리" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "대기열에 프린팅 작업이 없습니다. 작업을 추가하려면 슬라이스하여 전송하십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "인쇄 작업" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "총 인쇄 시간" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "대기" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "네트워크 프린터에 연결" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"네트워크를 통해 프린터로 직접 프린팅하려면 네트워크 케이블을 사용하거나 프린터를 WIFI 네트워크에 연결하여 프린터가 네트워크에 연결되어 있는지 확인하십시오. Cura를 프린터에 연결하지 않은 경우에도 USB 드라이브를 사용하여 g 코드 파일을 프린터로 전송할 수 있습니다\n" -"\n" -"아래 목록에서 프린터를 선택하십시오:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "네트워크를 통해 프린터로 직접 프린팅하려면 네트워크 케이블을 사용하거나 프린터를 WIFI 네트워크에 연결하여 프린터가 네트워크에 연결되어 있는지 확인하십시오. Cura를 프린터에 연결하지 않은 경우에도 USB 드라이브를 사용하여 g-코드 파일을 프린터로 전송할 수 있습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "추가" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "아래 목록에서 프린터를 선택하십시오:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "편집" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "제거" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "새로고침" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "프린터가 목록에 없으면 네트워크 프린팅 문제 해결 가이드를 읽어보십시오" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "유형" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "펌웨어 버전" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "주소" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "이 프린터는 프린터 그룹을 호스트하도록 설정되어 있지 않습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." -msgstr "이 프린터는 1%개 프린터 그룹의 호스트입니다." +msgstr "이 프린터는 %1개 프린터 그룹의 호스트입니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "이 주소의 프린터가 아직 응답하지 않았습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "연결" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "잘못된 IP 주소" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "유효한 IP 주소를 입력하십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "프린터 주소" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "네트워크에 프린터의 IP 주소 또는 호스트 이름을 입력하십시오." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "네트워크에 있는 프린터의 IP 주소를 입력하십시오." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "확인" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "프린트" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "네트워크를 통해 프린팅" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "프린터 선택" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "사용 불가" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "연결할 수 없음" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "유효한" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "중단됨" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "끝마친" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "준비중인" +msgid "Preparing..." +msgstr "준비 중..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "일시 정지 중" +msgid "Aborting..." +msgstr "중지 중…" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "다시 시작" +msgid "Pausing..." +msgstr "일시 정지 중…" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "일시 중지됨" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "다시 시작..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "조치가 필요함" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "%2에서 %1 완료" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "네트워크를 통해 프린팅" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "프린트" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "대기: 사용할 수 없는 프린터" +msgid "Printer selection" +msgstr "프린터 선택" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "대기: 첫 번째로 사용 가능" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "대기: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "구성 변경" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "할당된 프린터 %1의 구성을 다음과 같이 변경해야 합니다:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "프린터 %1이(가) 할당되었으나 작업에 알 수 없는 재료 구성이 포함되어 있습니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "재료 %1을(를) %2에서 %3(으)로 변경합니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "%3을(를) 재료 %1(으)로 로드합니다(이 작업은 무효화할 수 없음)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "PrintCore %1을(를) %2에서 %3(으)로 변경합니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "빌드 플레이트를 %1(으)로 변경합니다(이 작업은 무효화할 수 없음)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "무시하기" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "호환되지 않는 구성이 있는 인쇄 작업을 시작하면 3D 프린터가 손상될 수 있습니다. 구성을 재정의하고 %1을(를) 인쇄하시겠습니까?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "구성 재정의 및 인쇄 시작" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "유리" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "알루미늄" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "대기열 관리" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "대기 중" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "프린팅" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "프린터 관리" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "맨 위로 이동" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "삭제" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "재개" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "일시 정지 중…" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "다시 시작..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "중지" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "중지 중…" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "중단" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "%1(을)를 대기열의 맨 위로 이동하시겠습니까?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "인쇄 작업을 맨 위로 이동" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "%1(을)를 삭제하시겠습니까?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "인쇄 작업 삭제" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "%1(을)를 정말로 중지하시겠습니까?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "프린팅 중단" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "프린터에 연결" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "구성 변경" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "설정 활성화" +msgid "Override" +msgstr "무시하기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Cura에 프린터 설정 로드" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "할당된 프린터 %1의 구성을 다음과 같이 변경해야 합니다:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "프린터 %1이(가) 할당되었으나 작업에 알 수 없는 재료 구성이 포함되어 있습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "재료 %1을(를) %2에서 %3(으)로 변경합니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "%3을(를) 재료 %1(으)로 로드합니다(이 작업은 무효화할 수 없음)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "PrintCore %1을(를) %2에서 %3(으)로 변경합니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "빌드 플레이트를 %1(으)로 변경합니다(이 작업은 무효화할 수 없음)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "무시하기는 기존 프린터 구성과 함께 지정된 설정을 사용하게 됩니다. 이는 인쇄 실패로 이어질 수 있습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "알루미늄" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"프린터에 연결이 있는지 확인하십시오.⏎- 프린터가 켜져 있는지 확인하십시오.\n" +"- 프린터가 네트워크에 연결되어 있는지 확인하십시오.⏎- 클라우드로 연결된 프린터를 탐색할 수 있도록 로그인되어 있는지 확인하십시오." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "프린터를 네트워크에 연결하십시오." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "사용자 매뉴얼 온라인 보기" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "색 구성표" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "재료 색상" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "라인 유형" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "이송 속도" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "레이어 두께" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "호환 모드" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "이동 표시" +msgid "Travels" +msgstr "이동" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "도움말 보이기" +msgid "Helpers" +msgstr "도움말" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "셸 표시" +msgid "Shell" +msgstr "외곽" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "내부채움 표시" +msgid "Infill" +msgstr "내부채움" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "상단 레이어 만 표시" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "상단에 5 개의 세부 레이어 표시" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "위 / 아래" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "내벽" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "최소" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "최대" @@ -2161,40 +2338,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "후처리 스크립트" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "스크립트 추가" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "설정" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "활성 사후 처리 스크립트 변경" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "익명 데이터 수집에 대한 추가 정보" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura는 인쇄 품질 및 사용자 환경을 개선하기 위해 익명 데이터를 Ultimaker로 전송합니다. 전송되는 모든 데이터에 대한 예는 다음과 같습니다." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura는 인쇄 품질과 사용자 경험을 개선하기 위해 익명 데이터를 수집합니다. 공유되는 모든 데이터의 예는 다음과 같습니다:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "이러한 데이터 전송을 원하지 않습니다" +msgid "I don't want to send anonymous data" +msgstr "익명 데이터 전송을 원하지 않습니다" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "이러한 데이터를 Ultimaker에 전송해 Cura 개선에 도움을 주고 싶습니다" +msgid "Allow sending anonymous data" +msgstr "익명 데이터 전송 허용" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2243,19 +2420,19 @@ msgstr "깊이 (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "기본적으로 흰색 픽셀은 메쉬에서 높은 점을 나타내고 검정색 픽셀은 메쉬에서 낮은 점을 나타냅니다. 이 옵션을 변경하면 검은 픽셀이 메쉬의 높은 점을 나타내고 흰색 픽셀은 메쉬의 낮은 점을 나타냅니다." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "밝을수록 높음" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "리쏘페인(투각)의 경우 들어오는 더 많은 빛을 차단하기 위해서는 다크 픽셀이 더 두꺼운 위치에 해당해야 합니다. 높이 지도의 경우 더 밝은 픽셀이 더 높은 지역을 나타냅니다. 따라서 생성된 3D 모델에서 더 밝은 픽셀이 더 두꺼운 위치에 해당해야 합니다." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "어두울수록 높음" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "밝을수록 높음" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2266,81 +2443,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "스무딩(smoothing)" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "메쉬 유형" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "일반 모델" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "서포터로 프린팅" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "다른 모델과 오버랩되도록 지원하지 않음" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "다른 모델과의 오버랩에 대한 설정 수정" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "다른 모델의 내부채움에 대한 설정 수정" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "설정 선택" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "이 모델에 맞게 사용자 정의 설정을 선택하십시오" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "필터..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "모두 보이기" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "메쉬 유형" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "일반 모델" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "서포터로 프린팅" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "오버랩 설정 수정" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "오버랩 지원 안함" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "내부채움 전용" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "설정 선택" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "프로젝트 열기" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "기존 업데이트" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "새로 만들기" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "요약 - Cura 프로젝트" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "프린터 설정" @@ -2356,20 +2532,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "업데이트" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "새로 만들기" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "유형" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "프린터 그룹" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "프로파일 설정" @@ -2380,224 +2561,220 @@ msgid "How should the conflict in the profile be resolved?" msgstr "프로파일의 충돌을 어떻게 해결해야합니까?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "이름" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "프로파일에 없음" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 무시" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivative from" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 무시" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "재료 설정" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "재료의 충돌은 어떻게 해결되어야합니까?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "표시 설정" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "종류" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "표시 설정 :" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "1 out of %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "프로젝트를 로드하면 빌드 플레이트의 모든 모델이 지워집니다." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "열기" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "프린터 업그레이드 선택" +msgid "My Backups" +msgstr "내 백업" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "이 Ultimaker 2 업그레이드를 선택하십시오." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "현재 백업이 없습니다. ‘지금 백업’ 버튼을 사용하여 생성하십시오." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "미리 보기 단계 중에는 보이는 백업 5개로 제한됩니다. 기존 백업을 보려면 백업을 제거하십시오." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Cura 설정을 백업, 동기화하십시오." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "로그인" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Cura 백업" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Cura 버전" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "기기" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "재료" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "프로파일" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "플러그인" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "복원" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "백업 삭제" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "이 백업을 삭제하시겠습니까? 이 작업을 완료할 수 없습니다." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "백업 복원" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "백업이 복원되기 전에 Cura를 다시 시작해야 합니다. 지금 Cura를 닫으시겠습니까?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "무엇을 더 하시겠습니까?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "지금 백업" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "자동 백업" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Cura가 시작되는 날마다 자동으로 백업을 생성하십시오." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "빌드 플레이트 레벨링" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "프린팅이 잘 되도록 빌드 플레이트를 조정할 수 있습니다. '다음 위치로 이동'을 클릭하면 노즐이 조정할 수있는 다른 위치로 이동합니다." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "모든 자리에; 노즐 아래에 종이 한 장을 넣고 프린팅 빌드 플레이트 높이를 조정하십시오. 빌드플레이드의 높이는 종이의 끝 부분이 노즐의 끝부분으로 살짝 닿을 때의 높이입니다." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "빌드플레이트 레벨링 시작하기" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "다음 위치로 이동" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "이 Ultimaker Original에 업그레이드 할 항목을 선택하십시오" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "히팅 빌드 플레이트 (공식 키트 또는 자체 조립식)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "프린터 확인" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "Ultimaker에서 몇 가지 검사를 하는 것이 좋습니다. 기기가 제대로 작동한다고 생각이 되면 이 단계를 건너 뛸 수 있습니다" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "프린터 체 시작" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "연결 " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "연결됨" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "연결되지 않음" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "최소 엔드 스톱 X " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "작업" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "확인되지 않음" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "최소 엔드 스톱 Y " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "최소 엔드 스톱 Z " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "노즐 온도 확인 " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "가열 중지" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "가열 시작" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "빌드 플레이트 온도 확인 :" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "체크 됨" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "모든 점검이 순조롭게 끝났습니다." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2609,7 +2786,6 @@ msgid "Printer does not accept commands" msgstr "프린터가 명령을 받아들이지 않습니다" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "유지 보수 중. 프린터를 확인하십시오" @@ -2620,19 +2796,16 @@ msgid "Lost connection with the printer" msgstr "프린터와의 연결이 끊어졌습니다" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "프린팅..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "일시 중지됨" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "준비 중..." @@ -2652,235 +2825,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "프린팅를 중단 하시겠습니까?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "변경 사항 삭제 또는 유지" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"일부 프로파일 설정을 수정했습니다.\n" -"이러한 설정을 유지하거나 삭제 하시겠습니까?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "프로파일 설정" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "기본값" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "사용자 정의" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "항상 묻기" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "최소하고 다시 묻지않기" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "계속하고 다시 묻지않기" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "버리기" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "유지" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "새 프로파일 만들기" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "정보" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "직경 변경 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "새 필라멘트의 직경은 %1 mm로 설정되었으며, 현재 압출기와 호환되지 않습니다. 계속하시겠습니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "표시 이름" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "상표" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "재료 유형" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "색깔" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "속성" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "밀도" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "직경" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "필라멘트 비용" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "필라멘트 무게" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "필라멘트 길이" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "미터 당 비용" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "이 재료는 %1에 연결되어 있으며 일부 속성을 공유합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "재료 연결 해제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "설명" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "접착 정보" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "프린팅 설정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "활성화" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "생성" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "복제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "가져오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "내보내기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "프린터" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "제거 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "%1을 제거 하시겠습니까? 이것은 취소 할 수 없습니다!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "재료 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "재료를 가져올 수 없습니다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "재료를 성공적으로 가져왔습니다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "재료 내보내기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "재료를 내보내는데 실패했습니다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "재료를 성공적으로 내보냈습니다" @@ -2890,669 +3004,521 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "보기 설정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "모두 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "계산된" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "설정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "프로파일" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "현재 설정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "단위" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "일반" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "인터페이스" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "언어:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "통화:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "테마:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "이러한 변경 사항을 적용하려면 응용 프로그램을 다시 시작해야합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "설정이 변경되면 자동으로 슬라이싱 합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "자동으로 슬라이싱" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "뷰포트 동작" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "지원되지 않는 모델 영역을 빨간색으로 강조 표시하십시오. 서포트가 없으면 이 영역이 제대로 프린팅되지 않습니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "오버행 표시" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "모델을 선택하면 모델이 뷰의 가운데에 오도록 카메라를 이동합니다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "항목을 선택하면 카메라를 중앙에 위치" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "큐라의 기본 확대 동작을 반전시켜야 합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "카메라 줌의 방향을 반전시키기." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "확대가 마우스 방향으로 이동해야 합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "정투영법 시점에서는 마우스 방향으로 확대가 지원되지 않습니다." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "마우스 방향으로 확대" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "모델을 더 이상 교차시키지 않도록 이동해야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "모델이 분리되어 있는지 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "모델을 빌드 플레이트에 닿도록 아래로 움직여야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "모델을 빌드 플레이트에 자동으로 놓기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "g-code 리더에 주의 메시지를 표시하기." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "g-code 리더의 주의 메시지" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "레이어가 호환 모드로 강제 설정되어야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "레이어 뷰 호환성 모드로 전환 (다시 시작해야 함)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "닫힌 위치에서 Cura를 열어야 합니까?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "시작 시 창 위치 복원" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "어떤 유형의 카메라 렌더링을 사용해야 합니까?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "카메라 렌더링:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "원근" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "정투영" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "파일 열기 및 저장" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "크기가 너무 큰 경우 모델을 빌드 볼륨에 맞게 조정해야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "큰 모델의 사이즈 수정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "단위가 밀리미터가 아닌 미터 단위 인 경우 모델이 매우 작게 나타날 수 있습니다. 이 모델을 확대할까요?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "매우 작은 모델의 크기 조정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "모델을 로드한 후에 선택해야 합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "로드된 경우 모델 선택" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "프린터 이름에 기반한 접두어가 프린팅 작업 이름에 자동으로 추가되어야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "작업 이름에 기기 접두어 추가" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "프로젝트 파일을 저장할 때 요약이 표시되어야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "프로젝트 저장시 요약 대화 상자 표시" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "프로젝트 파일을 열 때 기본 동작" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "프로젝트 파일을 열 때 기본 동작 " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "항상 묻기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "항상 프로젝트로 열기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "항상 모델 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "프로파일을 변경하고 다른 프로파일로 전환하면 수정 사항을 유지할지 여부를 묻는 대화 상자가 표시됩니다. 기본 행동을 선택하면 해당 대화 상자를 다시 표시 하지 않을 수 있습니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "프로파일" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "다른 프로파일로 변경하는 경우 변경된 설정값에 대한 기본 동작 " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "항상 묻기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "항상 변경된 설정 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "항상 변경된 설정을 새 프로파일로 전송" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "보안" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura가 프로그램이 시작될 때 업데이트를 확인할까요?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "시작시 업데이트 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "프린터에 대한 익명의 데이터를 Ultimaker로 보낼까요? 모델, IP 주소 또는 기타 개인 식별 정보는 전송되거나 저장되지 않습니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(익명) 프린터 정보 보내기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "추가 정보" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "실험적 설정" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "다수의 빌드 플레이트 사용하기" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "다수의 빌드 플레이트 사용하기(다시 시작해야 합니다)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "프린터" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "이름 바꾸기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "프린터 유형 :" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "연결:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "프린터가 연결되어 있지 않습니다." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "상태:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "프린팅작업을 기다리는 중" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "누군가가 빌드 플레이트를 치울 때까지 기다리는 중입니다" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "프린팅 중단 중 ..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "프로파일" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "생성" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "복제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "프로파일 생성하기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "이 프로파일에 대한 이름을 제공하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "프로파일 복제하기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "프로파일 이름 바꾸기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "프로파일 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "프로파일 내보내기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "프린터: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "보호 된 프로파일" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "사용자 정의 프로파일" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "현재 설정 / 재정의 프로파일 업데이트" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "현재 변경 사항 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "이 프로파일은 프린터에서 지정한 기본값을 사용하므로 아래 목록에 아무런 설정/재정의가 없습니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "현재 설정이 선택한 프로파일과 일치합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "전역 설정" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "프린터 추가" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "프린터 이름 :" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "프린터 추가" +msgid "Marketplace" +msgstr "시장" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "파일" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "편집(&E)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "보기(&V)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "설정" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "확장 프로그램(&X)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "환경설정(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "도움말(&H)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "새 프로젝트" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "새 프로젝트를 시작 하시겠습니까? 빌드 플레이트 및 저장하지 않은 설정이 지워집니다." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "제목 없음" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "Cura 소개" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "버전: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "3D 프린팅을 위한 엔드 투 엔트 솔루션." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura는 커뮤니티와 공동으로 Ultimaker B.V.에 의해 개발되었습니다.\n" -"Cura는 다음의 오픈 소스 프로젝트를 사용합니다:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "그래픽 사용자 인터페이스" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "애플리케이션 프레임 워크" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "GCode 생성기" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "프로세스간 통신 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "프로그래밍 언어" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUI 프레임 워크" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "GUI 프레임 워크 바인딩" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "C/C ++ 바인딩 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "데이터 교환 형식" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "과학 컴퓨팅을 위한 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "더 빠른 수학연산을 위한 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "STL 파일 처리를 위한 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "평면 개체 처리를 위한 지원 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "삼각형 메쉬 처리를 위한 지원 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "복잡한 네트워크 분석을 위한 지원 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "3MF 파일 처리를 위한 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "파일 메타데이터 및 스트리밍을 위한 지원 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "직렬 통신 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "ZeroConf discovery 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "다각형 클리핑 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Python HTTP 라이브러리" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "폰트" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "SVG 아이콘" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Linux 교차 배포 응용 프로그램 배포" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "프로파일:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"일부 설정/대체 값은 프로파일에 저장된 값과 다릅니다.\n" -"\n" -"프로파일 매니저를 열려면 클릭하십시오." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "찾기..." +msgid "Search settings" +msgstr "검색 설정" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "모든 익스트루더에 값 복사" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "변경된 사항을 모든 익스트루더에 복사" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "이 설정 숨기기" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "이 설정을 표시하지 않음" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "이 설정을 계속 표시하십시오" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "설정 보기..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "모두 축소" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "모두 확장" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3563,27 +3529,32 @@ msgstr "" "\n" "이 설정을 표시하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "영향을 미치는 모든 설정이 무효화되기 때문에 이 설정을 사용하지 않습니다." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "영향" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "영향을 받다" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "이 설정은 항상 모든 익스트루더 사이에 공유됩니다. 여기서 변경하면 모든 익스트루더에 대한 값이 변경됩니다." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "이 값은 익스트루더마다 결정됩니다 " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3594,7 +3565,7 @@ msgstr "" "\n" "프로파일 값을 복원하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3605,116 +3576,211 @@ msgstr "" "\n" "계산 된 값을 복원하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "추천" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "사용자 정의" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "점진적 내부채움" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "점차적인 내부채움은 점차적으로 빈 공간 채우기의 양을 증가시킵니다." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "서포트" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "오버행이 있는 모델 서포트를 생성합니다. 이러한 구조가 없으면 이러한 부분이 프린팅 중에 붕괴됩니다." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "부착" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "브림이나 라프트를 사용합니다. 이렇게하면 출력물 주변이나 아래에 평평한 영역이 추가되어 나중에 쉽게 자를 수 있습니다." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "일부 프로파일 설정을 수정했습니다. 이러한 설정을 변경하려면 사용자 지정 모드로 이동하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "유효한" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "비활성" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "실험적 설정" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "프로파일" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"일부 설정/대체 값은 프로파일에 저장된 값과 다릅니다.\n" +"\n" +"프로파일 매니저를 열려면 클릭하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "사용자 정의 프로파일" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "인쇄 설정 비활성화됨. G 코드 파일을 수정할 수 없습니다." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "프린터 제어" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "조그 위치" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "조그 거리" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "Gcode 보내기" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "연결된 프린터에 사용자 정의 G 코드 명령을 보냅니다. ‘Enter’키를 눌러 명령을 전송하십시오." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "익스트루더" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "핫 엔드의 설정 온도입니다. 핫 엔드는 이 온도를 향해 가열되거나 냉각됩니다. 이 값이 0이면 온열 가열이 꺼집니다." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "이 익스트루더의 현재 온도." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "노즐을 예열하기 위한 온도." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "취소" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "예열" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "프린팅하기 전에 노즐을 미리 가열하십시오. 가열되는 동안 계속해서 프린팅물을 조정할 수 있으며, 프린팅 준비가 되면 노즐이 가열 될 때까지 기다릴 필요가 없습니다." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "이 익스트루더의 재료 색." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "이 익스트루더의 재료." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "이 익스트루더에 삽입 된 노즐." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "프린터가 연결되어 있지 않습니다." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "빌드 플레이트" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "가열 된 베드의 설정 온도. 베드가 이 온도로 가열되거나 식을 것입니다. 이 값이 0이면 베드 가열이 꺼집니다." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "가열 된 베드의 현재 온도." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "베드를 예열하기 위한 온도." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "프린팅하기 전에 베드를 미리 가열하십시오. 가열되는 동안 계속해서 프린팅물을 조정할 수 있으며, 프린팅 준비가 되면 베드가 가열 될 때까지 기다릴 필요가 없습니다." @@ -3724,12 +3790,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "재료" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "즐겨찾기" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "일반" @@ -3744,17 +3810,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "로컬 프린터" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "보기(&V)" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "프린터(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "재료(&M)" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "활성 익스트루더로 설정" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "익스트루더 사용" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "익스트루더 사용하지 않음" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "카메라 위치(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "카메라 뷰" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "원근" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "직교" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "빌드 플레이트(&B)" @@ -3774,6 +3875,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "보기 설정 관리..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "저장(&S)..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "내보내기(&E)..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "내보내기 선택..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3791,653 +3907,506 @@ msgctxt "@label" msgid "Number of Copies" msgstr "복제할 수" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "설정 활성화" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "구성" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "익스트루더" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "구성 선택" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "예" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "구성" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "아니요" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "프린터에서 사용 가능한 구성 로딩 중..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "프린터가 연결되어 있지 않기 때문에 구성을 사용할 수 없습니다." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "사용자 정의" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "프린터" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "실행됨" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "재료" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "더 나은 접착력을 위해 이 재료 조합과 함께 접착제를 사용하십시오.." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "%1이(가) 인식되지 않기 때문에 이 구성을 사용할 수 없습니다. %2에 방문하여 올바른 재료 프로파일을 다운로드하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "시장" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "최근 열어본 파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "프린팅 설정" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"프린팅 설정 사용 안 함\n" -"G-코드 파일은 수정할 수 없습니다" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00시간 00분" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "시간 사양" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "비용 사양" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "총계:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "권장 프린팅 설정

    선택한 프린터, 재료 및 품질에 대한 권장 설정으로 프린팅하십시오." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "사용자 정의 프린팅 설정

    미세하게 슬라이싱 설정을 조절하여 프린팅하십시오." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "활성화된 프린트" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "작업 이름" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "프린팅 시간" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "예상 남은 시간" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "유형 보기" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "개체 목록" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "안녕하세요 %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Ultimaker 계정" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "로그아웃" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "로그인" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "차세대 3D 인쇄 워크플로" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- 인쇄 작업을 로컬 네트워크 외부의 Ultimaker 프린터로 전송하십시오\n" +"- Ultimaker Cura 설정을 어디에서든 사용할 수 있도록 Cloud에 저장하십시오\n" +"- 유수 브랜드의 인쇄 프로파일에 대한 독점적 액세스 권한을 얻으십시오" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "계정 생성" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "시간 추산 이용 불가" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "비용 추산 이용 불가" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "미리 보기" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "슬라이싱..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "슬라이스 할 수 없습니다" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "처리" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "슬라이스" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "슬라이싱 프로세스 시작" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "취소" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "시간 추산" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "재료 추산" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "연결된 프린터" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "프린터 사전 설정" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "프린터 추가" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "프린터 관리" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "온라인 문제 해결 가이드 표시" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "전채 화면 전환" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "전체 화면 종료" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "되돌리기(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "다시하기(&R)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "종료(&Q)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "3D 보기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "앞에서 보기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "위에서 보기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "왼쪽에서 보기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "오른쪽에서 보기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura 구성 ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "프린터 추가..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "프린터 관리 ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "재료 관리..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "현재 설정으로로 프로파일 업데이트" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "현재 변경 사항 무시" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "현재 설정으로 프로파일 생성..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "프로파일 관리..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "온라인 문서 표시" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "버그 리포트" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "새로운 기능" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "소개..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "선택한 모델 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "선택한 모델 중심에 놓기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "선택한 모델 복제" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "모델 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "플랫폼중심에 모델 위치하기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "모델 그룹화" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "모델 그룹 해제" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "모델 합치기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "모델 복제..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "모든 모델 선택" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "빌드 플레이트 지우기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "모든 모델 다시 로드" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "모든 모델을 모든 빌드 플레이트에 정렬" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "모든 모델 정렬" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "선택한 모델 정렬" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "모든 모델의 위치 재설정" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "모든 모델의 변환 재설정" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "파일 열기..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "새로운 프로젝트..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "엔진 로그 표시..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "설정 폴더 표시" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "패키지 찾아보기..." +msgid "&Marketplace" +msgstr "&시장" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "사이드바 확장/축소" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "3D 모델을 로드하십시오" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "슬라이스 준비 완료" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "슬라이싱..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "%1 준비 완료" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "슬라이스 할 수 없음" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "슬라이스 사용 불가" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "현재 프린트작업 슬라이스" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "슬라이싱 프로세스 취소" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "준비" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "취소" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "활성 출력 장치 선택" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "파일 열기" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "선택한 파일 내에 하나 이상의 프로젝트 파일이 있습니다. 한 번에 하나의 프로젝트 파일 만 열 수 있습니다. 해당 파일에서 모델 만 가져 오기를 권장합니다. 계속 하시겠습니까?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "모두 모델로 가져 오기" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "파일" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "저장(&S)..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "내보내기(&E)..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "내보내기 선택..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "편집(&E)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "보기(&V)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "설정(&S)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "프린터(&P)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "재료(&M)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "활성 익스트루더로 설정" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "익스트루더 사용" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "익스트루더 사용하지 않음" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "빌드 플레이트(&B)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "프로파일(&P)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "확장 프로그램(&X)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "도구 상자(&T)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "환경설정(&R)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "도움말(&H)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "다시 시작한 후에 이 패키지가 설치됩니다." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "파일 열기" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "설정" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "새 프로젝트" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "새 프로젝트를 시작 하시겠습니까? 빌드 플레이트 및 저장하지 않은 설정이 지워집니다." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura 닫기" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Cura를 정말로 종료하시겠습니까?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "파일 열기" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "패키지 설치" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "선택한 파일 내에 하나 이상의 G-코드 파일이 있습니다. 한 번에 하나의 G-코드 파일 만 열 수 있습니다. G-코드 파일을 열려면 하나만 선택하십시오." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "프로젝트 저장" +msgid "Add Printer" +msgstr "프린터 추가" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "빌드 플레이트" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "%1익스트루더" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & 재료" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "프로젝트 요약을 다시 저장하지 마십시오" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "저장" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "레이어 높이" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "이 품질 프로파일은 현재 재료 및 노즐 설정에 사용할 수 없습니다. 이 품질 프로파일을 사용하려면 이 값을 변경하십시오" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "사용자 지정 프로파일이 현재 활성 상태입니다. 품질 슬라이더를 실행하려면 사용자 지정 탭에서 기본 품질 프로파일을 선택하십시오" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "프린팅 속도" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "천천히" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "빨리" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "일부 프로파일 설정을 수정했습니다. 이러한 설정을 변경하려면 사용자 지정 모드로 이동하십시오." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "내부채움" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "점차적인 내부채움은 점차적으로 빈 공간 채우기의 양을 증가시킵니다." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "점진적으로 사용" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "서포트 생성" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "오버행이 있는 모델 서포트를 생성합니다. 이러한 구조가 없으면 이러한 부분이 프린팅 중에 붕괴됩니다." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "서포트에 사용할 익스트루더를 선택하십시오. 이렇게 하면 모형 아래에 지지 구조가 만들어져 모델이 중간 공기에서 처지거나 프린팅되는 것을 방지합니다." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "빌드 플레이트 고정" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "브림이나 라프트를 사용합니다. 이렇게하면 출력물 주변이나 아래에 평평한 영역이 추가되어 나중에 쉽게 자를 수 있습니다." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "프린팅물 개선에 도움이 필요하십니까?Ultimaker Troubleshooting Guides 읽기" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "새로운 기능" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4445,75 +4414,501 @@ msgid "Print Selected Model with %1" msgid_plural "Print Selected Models with %1" msgstr[0] "선택한 모델을 %1로 프린팅하십시오" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "변경 사항 삭제 또는 유지" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"일부 프로파일 설정을 수정했습니다.\n" +"이러한 설정을 유지하거나 삭제 하시겠습니까?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "프로파일 설정" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "기본값" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "사용자 정의" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "최소하고 다시 묻지않기" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "계속하고 다시 묻지않기" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "버리기" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "유지" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "새 프로파일 만들기" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Cura 소개" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "버전: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "3D 프린팅을 위한 엔드 투 엔트 솔루션." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura는 커뮤니티와 공동으로 Ultimaker B.V.에 의해 개발되었습니다.\n" +"Cura는 다음의 오픈 소스 프로젝트를 사용합니다:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "그래픽 사용자 인터페이스" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "애플리케이션 프레임 워크" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "GCode 생성기" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "프로세스간 통신 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "프로그래밍 언어" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUI 프레임 워크" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "GUI 프레임 워크 바인딩" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C/C ++ 바인딩 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "데이터 교환 형식" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "과학 컴퓨팅을 위한 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "더 빠른 수학연산을 위한 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "STL 파일 처리를 위한 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "평면 개체 처리를 위한 지원 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "삼각형 메쉬 처리를 위한 지원 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "복잡한 네트워크 분석을 위한 지원 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "3MF 파일 처리를 위한 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "파일 메타데이터 및 스트리밍을 위한 지원 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "직렬 통신 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "ZeroConf discovery 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "다각형 클리핑 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTP 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "폰트" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVG 아이콘" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Linux 교차 배포 응용 프로그램 배포" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "선택한 파일 내에 하나 이상의 프로젝트 파일이 있습니다. 한 번에 하나의 프로젝트 파일 만 열 수 있습니다. 해당 파일에서 모델 만 가져 오기를 권장합니다. 계속 하시겠습니까?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "모두 모델로 가져 오기" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "프로젝트 저장" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "%1익스트루더" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & 재료" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "재료" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "프로젝트 요약을 다시 저장하지 마십시오" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "저장" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "프로젝트 파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "이 파일은 Cura 프로젝트 파일입니다. 프로젝트로 열거나 모델을 가져 오시겠습니까?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "선택 기억하기" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "프로젝트로 열기" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "모델 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "엔진 로그" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "프린터 유형" +msgid "Empty" +msgstr "비어 있음" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "재료" +msgid "Add a printer" +msgstr "프린터 추가" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "이 재료 조합과 함께 접착제를 사용하십시오" +msgid "Add a networked printer" +msgstr "네트워크 프린터 추가" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "호환성 확인" +msgid "Add a non-networked printer" +msgstr "비 네트워크 프린터 추가" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Ultimaker.com의 재료 호환성을 확인하려면 클릭하십시오." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "IP 주소로 프린터 추가" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "현재의 빌드 플레이트만 보기" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "프린터의 IP 주소를 입력하십시오." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "모든 빌드 플레이트 정렬" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "추가" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "현재의 빌드 플레이트 정렬" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "장치에 연결할 수 없습니다." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "이 주소의 프린터가 아직 응답하지 않았습니다." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "알 수 없는 프린터이거나 그룹의 호스트가 아니기 때문에 이 프린터를 추가할 수 없습니다." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "뒤로" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "연결" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "다음 것" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "사용자 계약" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "동의" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "거절 및 닫기" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Ultimaker Cura를 개선하는 데 도움을 주십시오" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura는 인쇄 품질과 사용자 경험을 개선하기 위해 다음과 같은 익명 데이터를 수집합니다:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "기기 유형" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "재료 사용" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "슬라이드 수" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "인쇄 설정" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Ultimaker Cura가 수집하는 데이터에는 개인 정보가 포함되어 있지 않습니다." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "추가 정보" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Ultimaker Cura의 새로운 기능" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "네트워크에서 검색된 프린터가 없습니다." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "새로고침" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "IP로 프린터 추가" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "문제 해결" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "프린터 이름" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "프린터의 이름을 설정하십시오" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "차세대 3D 인쇄 워크플로" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- 로컬 네트워크 외부의 Ultimaker 프린터로 인쇄 작업 전송" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- 어디에서든 사용할 수 있도록 클라우드에 Ultimaker Cura 설정 저장" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- 유수 브랜드의 인쇄 프로파일에 대한 독점적인 액세스 권한 얻기" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "종료" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "계정 생성" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Ultimaker Cura에 오신 것을 환영합니다" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "Ultimaker Cura를 설정하려면 다음 단계를 따르십시오. 오래 걸리지 않습니다." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "시작하기" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3D 보기" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "앞에서 보기" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "위에서 보기" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "왼쪽 보기" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "오른쪽 보기" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4575,26 +4970,6 @@ msgctxt "name" msgid "Model Checker" msgstr "모델 검사기" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "모든 설정의 내용을 HTML 파일로 덤프하십시오." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "God 모드" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "최신 체크 버전 이후로 변경 사항을 표시합니다." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "변경 내역" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4605,15 +4980,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "펌웨어 업데이터" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Create a flattend quality changes profile." +msgid "Provides support for reading AMF files." +msgstr "AMF 파일 읽기가 지원됩니다." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Profile flatener" +msgid "AMF Reader" +msgstr "AMF 리더" #: USBPrinting/plugin.json msgctxt "description" @@ -4625,26 +5000,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB 프린팅" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "사용자에게 라이선스에 동의하는지 한 번 묻습니다." - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "사용자 계약" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "결과로 생성된 슬라이스를 X3G 파일로 저장해, 이 형식을 읽는 프린터를 지원합니다(Malyan, Makerbot 및 다른 Sailfish 기반 프린터)." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4687,13 +5042,13 @@ msgstr "이동식 드라이브 출력 장치 플러그인" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Ultimaker 3 프린터에 대한 네트워크 연결을 관리합니다." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Ultimaker 네트워크 연결 프린터에 대한 네트워크 연결을 관리합니다." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3 네트워크 연결" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker 네트워크 연결" #: MonitorStage/plugin.json msgctxt "description" @@ -4755,6 +5110,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Support Eraser" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Ultimaker 포맷 패키지 읽기를 지원합니다." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "UFP 리더기" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4815,6 +5180,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "버전 업그레이드 3.3에서 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Cura 4.3에서 Cura 4.4로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "4.3에서 4.4로 버전 업그레이드" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4835,6 +5210,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "2.7에서 3.0으로 버전 업그레이드" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Cura 3.5에서 Cura 4.0으로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "버전 업그레이드 3.5에서 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4845,6 +5230,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "3.4에서 3.5로 버전 업그레이드" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Cura 4.0에서 Cura 4.1로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "버전 업그레이드 4.0에서 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4855,6 +5250,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "3.0에서 3.1로 버전 업그레이드" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Cura 4.1에서 Cura 4.2로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "4.1에서 4.2로 버전 업그레이드" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4885,6 +5290,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "2.2에서 2.4로 버전 업그레이드" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Cura 4.2에서 Cura 4.3으로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "4.2에서 4.3로 버전 업그레이드" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4895,6 +5310,16 @@ msgctxt "name" msgid "Image Reader" msgstr "이미지 리더" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "모델 파일 읽기 기능을 제공합니다." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh 리더" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4945,6 +5370,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "G-코드 리더" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "구성을 백업하고 복원합니다." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Cura 백업" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4965,6 +5400,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF 기록기" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Cura에서 미리 보기 단계를 제공합니다." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "미리 보기 단계" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4985,9 +5430,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 프로파일 리더" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "저장하기 전에 G-code를 생성하십시오." +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "활성 설정 병합" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "프로파일이 병합되고 활성화되었습니다." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "파일에 X3g 쓰기" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g 파일" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G 파일" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -4997,6 +5462,1032 @@ msgstr "Cura 프로파일 리더" #~ msgid "Profile Assistant" #~ msgstr "프로파일 어시스턴트" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "재시도" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "프린트 코어" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "다른 모델과 오버랩되도록 지원하지 않음" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "다른 모델과의 오버랩에 대한 설정 수정" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "다른 모델의 내부채움에 대한 설정 수정" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "기존 업데이트" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "지원되지 않음" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "이전" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "팁" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "인쇄 실험" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "체크리스트" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "이 Ultimaker 2 업그레이드를 선택하십시오." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "카메라 렌더링: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "다수의 빌드 플레이트 사용하기" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "다수의 빌드 플레이트 사용하기(다시 시작해야 합니다)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "기본 프로파일" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "검색 설정" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "레이어 높이" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "현재 재료 및 노즐 구성에 대해 이 품질 프로파일을 사용할 수 없습니다. 이 품질 프로파일을 활성화하려면 이를 변경하십시오." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "사용자 지정 프로파일이 현재 활성 상태입니다. 품질 슬라이더를 실행하려면 사용자 지정 탭에서 기본 품질 프로파일을 선택하십시오" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "빌드 플레이트(&B)" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "프로파일(&P)" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "빌드 플레이트" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "모든 설정의 내용을 HTML 파일로 덤프하십시오." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "God 모드" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "평평한 품질 변경 프로필을 만듭니다." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "프로필 플래트너" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "재료 제조사가 드롭 인 UI를 사용하여 새로운 재료와 품질 프로파일을 만들 수 있게 합니다." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "프린트 프로파일 어시스턴트" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "네트워크를 통해 연결됨." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "네트워크를 통해 연결되었습니다. 프린터의 접근 요청을 승인하십시오." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "네트워크를 통해 연결되었습니다. 프린터를 제어할 수 있는 권한이 없습니다." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "요청된 프린터에 대한 액세스. 프린터에서 요청을 승인하십시오" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "인증 상태" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "인증 상태" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "접근 요청 다시 보내기" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "허용 된 프린터에 대한 접근 허용" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "이 프린터로 프린팅 할 수 없습니다. 프린팅 작업을 보낼 수 없습니다." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "접근 요청" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "프린터에 접근 요청 보내기" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "새 프린팅 작업을 시작할 수 없습니다." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Ultimaker의 설정에 문제가 있어 프린팅을 시작할 수 없습니다. 계속하기 전에 이 문제를 해결하십시오." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "일치하지 않는 구성" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "선택한 구성으로 프린팅 하시겠습니까?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "프린터와 Cura의 설정이 일치하지 않습니다. 최상의 결과를 얻으려면 프린터에 삽입 된 PrintCores 및 재료로 슬라이싱을 하십시오." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "새로운 작업 전송 (일시적)이 차단되어 이전 프린팅 작업을 계속 보냅니다." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "프린터로 데이터 보내기" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "데이터 전송 중" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "{slot_number} 슬롯에 로드 된 프린터코어가 없음" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "{slot_number}에 로드 된 재료가 없음" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "익스트루더 {extruder_id}에 대해 다른 프린터코어 (Cura : {cura_printcore_name}, 프린터 : {remote_printcore_name})가 선택되었습니다." + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "익스트루더 {2}에 다른 재료 (Cura : {0}, Printer : {1})가 선택됨" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "프린터와 동기화" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Cura에서 현재 프린터 구성을 사용 하시겠습니까?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "프린터의 PrintCores와 재료는 현재 프로젝트 내의 재료와 다릅니다. 최상의 결과를 얻으려면 프린터에 삽입 된 PrintCores 및 재료로 슬라이싱 하십시오." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "모니터에서 보기" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "'{printer_name} 프린터가 '{job_name}' 프린팅을 완료했습니다." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "인쇄 작업 ‘{job_name}’이 완료되었습니다." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "프린팅이 완료됨" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "비어 있음" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "알 수 없음" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Cloud 오류" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "인쇄 작업을 내보낼 수 없음." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Cloud 연결 시 오류가 있었습니다." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud를 통해 업로드하는 중" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud에 연결" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "이 프린터에 대해 다시 물어보지 마십시오." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "이제 Ultimaker 계정을 사용하여 어디에서든 인쇄 작업을 전송하고 모니터링할 수 있습니다." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "연결됨!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "연결 검토" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "프로필 {0}({1})에 정의된 제품이 현재 제품({2})과 일치하지 않으므로, 불러올 수 없습니다." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "{0}에서 프로파일을 가져오지 못했습니다:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "기존 연결" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "이 프린터/그룹은 이미 Cura에 추가되었습니다. 다른 프린터/그룹을 선택하십시오." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "네트워크에 프린터의 IP 주소 또는 호스트 이름을 입력하십시오." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "프린터에 연결" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 설정 가이드" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "직교 시점에서는 마우스 방향으로 확대가 지원되지 않습니다." + +#~ msgid "Orthogonal" +#~ msgstr "직교" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Ultimaker 3 프린터에 대한 네트워크 연결을 관리합니다." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3 네트워크 연결" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "이미지 및 애니메이션과 함께 Cura 설정에 대한 추가 정보와 설명을 제공합니다." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "설정 가이드" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 설정 가이드" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "현재 사용가능한 익스트루더: [% s]에 맞도록 설정이 변경되었습니다" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "사용자 설명" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Cloud 프린터를 모니터링하고 있기 때문에 이 옵션을 사용할 수 없습니다." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Cura Connect로 이동" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "모든 작업이 인쇄됩니다." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "인쇄 내역 보기" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "네트워크를 통해 프린터로 직접 프린팅하려면 네트워크 케이블을 사용하거나 프린터를 WIFI 네트워크에 연결하여 프린터가 네트워크에 연결되어 있는지 확인하십시오. Cura를 프린터에 연결하지 않은 경우에도 USB 드라이브를 사용하여 g 코드 파일을 프린터로 전송할 수 있습니다\n" +#~ "\n" +#~ "아래 목록에서 프린터를 선택하십시오:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "프린터에 연결이 있는지 확인하십시오.\n" +#~ "- 프린터가 켜져 있는지 확인하십시오.\n" +#~ "- 프린터가 네트워크에 연결되어 있는지 확인하십시오." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "현재의 빌드 플레이트만 보기" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "모든 빌드 플레이트 정렬" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "현재의 빌드 플레이트 정렬" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "결과로 생성된 슬라이스를 X3G 파일로 저장해, 이 형식을 읽는 프린터를 지원합니다(Malyan, Makerbot 및 다른 Sailfish 기반 프린터)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "프린터 이동 디버깅을 위해 Toolpath로 SVG 파일을 읽습니다." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG Toolpath 리더기" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "변경 내역" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "변경 내역 표시" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "원격 클러스터로 데이터 전송 중" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud에 연결" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura는 익명의 사용 통계를 수집합니다." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "데이터 수집" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "추가 정보" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Cura가 전송하는 데이터에 대한 추가 정보를 확인하십시오." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "허용" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Cura가 익명의 사용 통계를 보내 Cura에 대한 향후 개선을 우선화하는 데 도움을 줍니다. Cura 버전과 슬라이싱하는 모델의 해쉬 등 일부 환경설정 값이 발송됩니다." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "평가" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "네트워크 프린터" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "로컬 프린터" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "현재 버전과 일치하지 않는 Cura 백업을 복원하려고 시도했습니다." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "기기 설정" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "프린터 설정" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "중앙이 원점" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "히트 베드" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "프린트헤드 설정" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "프린트 헤드 왼쪽에서 노즐 중심까지의 거리. \"한 번에 하나\"를 프린팅 할 때 이전 프린팅물과 프린팅 헤드 사이의 충돌을 방지하는 데 사용됩니다." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "프린트 헤드 전면에서 노즐 중앙까지의 거리. \"한 번에 하나\"를 프린팅 할 때 이전 프린팅물과 프린팅 헤드 사이의 충돌을 방지하는 데 사용됩니다." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "프린트 헤드의 오른쪽에서 노즐 중앙까지의 거리. \"한 번에 하나\"를 프린팅 할 때 이전 프린팅물과 프린팅 헤드 사이의 충돌을 방지하는 데 사용됩니다." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "프린트 헤드의 뒤쪽에서 노즐 중심까지의 거리. \"한 번에 하나\"를 프린팅 할 때 이전 프린팅물과 프린팅 헤드 사이의 충돌을 방지하는 데 사용됩니다." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "갠트리 높이" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "노즐 끝과 갠트리 시스템 사이의 높이 차이 (X 및 Y 축). \"한 번에 하나\"를 프린팅 할 때 이전 프린팅물과 갠트리 사이의 충돌을 방지하는 데 사용됩니다." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "시작 Gcode" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "시작시 Gcode 명령이 실행됩니다." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "종료 Gcode" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "Gcode 명령어가 맨 마지막에 실행됩니다." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "노즐 설정" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "프린터가 지원하는 필라멘트의 직경. 정확한 직경은 소재 및 / 또는 프로파일에 의해 덮어써집니다." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "익스트루더 시작 Gcode" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "익스트루더 종료 Gcode" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "변경 내역" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "사용자 계약" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "네트워크에 프린터의 IP 주소 또는 호스트 이름을 입력하십시오." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "네트워크 연결 프린터를 선택하여 모니터링하십시오." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Ultimaker 프린터를 로컬 네트워크에 연결하십시오." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura는 인쇄 품질 및 사용자 환경을 개선하기 위해 익명 데이터를 Ultimaker로 전송합니다. 전송되는 모든 데이터에 대한 예는 다음과 같습니다." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "이 데이터 전송을 원하지 않습니다" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "이 데이터를 Ultimaker에 전송해 Cura 개선에 도움을 주고 싶습니다" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "선택한 인쇄 없음" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "기본적으로 흰색 픽셀은 메쉬에서 높은 점을 나타내고 검정색 픽셀은 메쉬에서 낮은 점을 나타냅니다. 이 옵션을 변경하면 검은 픽셀이 메쉬의 높은 점을 나타내고 흰색 픽셀은 메쉬의 낮은 점을 나타냅니다." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "프린터 업그레이드 선택" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "서포트에 사용할 익스트루더를 선택하십시오. 이렇게 하면 모형 아래에 지지 구조가 만들어져 모델이 중간 공기에서 처지거나 프린팅되는 것을 방지합니다." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "현재 재료 및 노즐 구성에 대해 이 품질 프로파일을 사용할 수 없습니다. 이 품질 프로파일을 활성화하려면 이를 변경하십시오" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "인쇄 설정 비활성화됨. G 코드 파일을 수정할 수 없습니다." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "재료 호환성 차트 보기" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "유형 보기" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "안녕하세요 " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- 인쇄 작업을 로컬 네트워크 외부의 Ultimaker 프린터로 전송하십시오\n" +#~ "- Ultimaker Cura 설정을 어디에서든 사용할 수 있도록 Cloud에 저장하십시오\n" +#~ "- 유수 브랜드의 재료 프로파일에 대한 독점적 액세스 권한을 얻으십시오" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "슬라이스 할 수 없음" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "시간 사양" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "재료 사양" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Cura에 프린터 추가" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "아래 목록에서 사용하고자 하는 프린터를 선택하십시오.\n" +#~ "\n" +#~ "프린터가 목록에 없을 경우 “사용자 정의” 범주에서 “사용자 정의 FFF 프린터\"를 사용하고 다음 대화 상자의 프린터와 일치하도록 설정을 조정하십시오." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "제조업체" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "프린터 이름" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "프린터 추가" + +#~ msgid "Modify G-Code" +#~ msgstr "G 코드 수정" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "어떤 모델도 빌드 볼륨에 맞지 않으므로 슬라이스 할 수 없습니다. 크기에 맞게 모델을 회전하거나 회전하십시오." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "선택한 재료가 선택한 기기 또는 구성과 호환되지 않습니다." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "호환되지 않는 재료" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "{0}: {1} 에서 프로파일을 가져 오지 못했습니다" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "도구 상자" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "사용 불가" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "연결할 수 없음" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "유효한" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "준비중인" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "일시 정지 중" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "다시 시작" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "대기: 사용할 수 없는 프린터" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "대기: 첫 번째로 사용 가능" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "대기: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "구성 변경" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "할당된 프린터 %1의 구성을 다음과 같이 변경해야 합니다:" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "무시하기" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "호환되지 않는 구성이 있는 인쇄 작업을 시작하면 3D 프린터가 손상될 수 있습니다. 구성을 재정의하고 %1을(를) 인쇄하시겠습니까?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "구성 재정의 및 인쇄 시작" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "대기열 관리" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "프린팅" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "프린터 관리" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "설정 활성화" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Cura에 프린터 설정 로드" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "이동 표시" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "도움말 보이기" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "셸 표시" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "내부채움 표시" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "이러한 데이터 전송을 원하지 않습니다" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "이러한 데이터를 Ultimaker에 전송해 Cura 개선에 도움을 주고 싶습니다" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "프린터 유형 :" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "연결:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "상태:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "프린팅작업을 기다리는 중" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "누군가가 빌드 플레이트를 치울 때까지 기다리는 중입니다" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "프린팅 중단 중 ..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "보호 된 프로파일" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "프린터 이름 :" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "프로파일:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "찾기..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "모두 축소" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "모두 확장" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "설정 활성화" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "익스트루더" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "예" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "아니요" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "프린팅 설정" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "프린팅 설정 사용 안 함\n" +#~ "G-코드 파일은 수정할 수 없습니다" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00시간 00분" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "시간 사양" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "비용 사양" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "총계:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "권장 프린팅 설정

    선택한 프린터, 재료 및 품질에 대한 권장 설정으로 프린팅하십시오." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "사용자 정의 프린팅 설정

    미세하게 슬라이싱 설정을 조절하여 프린팅하십시오." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "엔진 로그 표시..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "패키지 찾아보기..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "사이드바 확장/축소" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "3D 모델을 로드하십시오" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "슬라이스 준비 완료" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "%1 준비 완료" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "슬라이스 사용 불가" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "현재 프린트작업 슬라이스" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "슬라이싱 프로세스 취소" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "준비" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "취소" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "활성 출력 장치 선택" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "보기(&V)" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "설정(&S)" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "도구 상자(&T)" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "파일 열기" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "이 품질 프로파일은 현재 재료 및 노즐 설정에 사용할 수 없습니다. 이 품질 프로파일을 사용하려면 이 값을 변경하십시오" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "프린팅 속도" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "천천히" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "빨리" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "점진적으로 사용" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "서포트 생성" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "빌드 플레이트 고정" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "프린팅물 개선에 도움이 필요하십니까?Ultimaker Troubleshooting Guides 읽기" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "엔진 로그" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "프린터 유형" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "이 재료 조합과 함께 접착제를 사용하십시오" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "호환성 확인" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Ultimaker.com의 재료 호환성을 확인하려면 클릭하십시오." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "최신 체크 버전 이후로 변경 사항을 표시합니다." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "변경 내역" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Create a flattend quality changes profile." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Profile flatener" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "사용자에게 라이선스에 동의하는지 한 번 묻습니다." + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "사용자 계약" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "저장하기 전에 G-code를 생성하십시오." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "펌웨어 업그레이드" @@ -5021,22 +6512,6 @@ msgstr "Cura 프로파일 리더" #~ msgid "Confirm uninstall " #~ msgstr "제거 확인 " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "일시 중지됨" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "이전" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "다음" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "팁" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1m / ~ %2g / ~ %4 %3" @@ -5045,26 +6520,10 @@ msgstr "Cura 프로파일 리더" #~ msgid "%1m / ~ %2g" #~ msgstr "%1m / ~ %2g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "인쇄 실험" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "체크리스트" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "펌웨어 업그레이드" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "재료 제조사가 드롭 인 UI를 사용하여 새로운 재료와 품질 프로파일을 만들 수 있게 합니다." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "프린트 프로파일 어시스턴트" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Doodle3D WiFi-Box로 프린팅" @@ -5123,7 +6582,7 @@ msgstr "Cura 프로파일 리더" #~ msgctxt "@label" #~ msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -#~ msgstr "이 프린터는 1% Ultimaker 3 프린터 그룹의 호스트입니다." +#~ msgstr "이 프린터는 %1 Ultimaker 3 프린터 그룹의 호스트입니다." #~ msgctxt "@label: arg 1 is group name" #~ msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" @@ -5157,10 +6616,6 @@ msgstr "Cura 프로파일 리더" #~ msgid "Lost connection with the printer" #~ msgstr "프린터와의 연결이 끊어졌습니다" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "사용불가" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "알 수 없음" diff --git a/resources/i18n/ko_KR/fdmextruder.def.json.po b/resources/i18n/ko_KR/fdmextruder.def.json.po index bbfe9429fb..944cbf0e15 100644 --- a/resources/i18n/ko_KR/fdmextruder.def.json.po +++ b/resources/i18n/ko_KR/fdmextruder.def.json.po @@ -1,15 +1,15 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" -"Last-Translator: Jinbuhm Kim \n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" +"Last-Translator: Korean \n" "Language-Team: Jinbum Kim , Korean \n" "Language: ko_KR\n" "MIME-Version: 1.0\n" @@ -85,8 +85,8 @@ msgstr "익스트루더 스타트 G 코드" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "익스트루더를 켤 때마다 실행할 스타드 g 코드." +msgid "Start g-code to execute when switching to this extruder." +msgstr "이 익스트루더로 전환 시 실행할 G 코드를 시작하십시오." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -125,8 +125,8 @@ msgstr "익스트루더 엔드 G 코드" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "익스트루더를 끌 때마다 실행할 엔드 g 코드." +msgid "End g-code to execute when switching away from this extruder." +msgstr "이 익스트루더에서 전환 시 실행할 G 코드를 종료하십시오." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -227,3 +227,11 @@ msgstr "직경" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "사용 된 필라멘트의 직경을 조정합니다. 이 값을 사용 필라멘트의 직경과 일치시킵니다." + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "익스트루더를 켤 때마다 실행할 스타드 g 코드." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "익스트루더를 끌 때마다 실행할 엔드 g 코드." diff --git a/resources/i18n/ko_KR/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po index 37392395ef..4aa764bcce 100644 --- a/resources/i18n/ko_KR/fdmprinter.def.json.po +++ b/resources/i18n/ko_KR/fdmprinter.def.json.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-10-01 14:10+0100\n" -"Last-Translator: Jinbuhm Kim \n" -"Language-Team: Jinbum Kim , Korean \n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Korean , Jinbum Kim , Korean \n" "Language: ko_KR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -58,7 +58,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "시작과 동시에형실행될 G 코드 명령어 \n." +msgstr "" +"시작과 동시에형실행될 G 코드 명령어 \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,7 +72,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "맨 마지막에 실행될 G 코드 명령 \n." +msgstr "" +"맨 마지막에 실행될 G 코드 명령 \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -212,6 +216,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "기기에 히팅 빌드 플레이트가 있는지 여부." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "빌드 볼륨 온도 안정화" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "기기의 빌드 볼륨 온도 안정화 지원 여부입니다." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -234,7 +248,7 @@ msgstr "익스트루더의 수. 익스트루더는 피더, 보우 덴 튜브 및 #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "활성화된 익스트루더의 수" #: fdmprinter.def.json @@ -244,8 +258,8 @@ msgstr "사용 가능한 익스트루더 수; 소프트웨어로 자동 설정" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" -msgstr "노즐의 외경" +msgid "Outer Nozzle Diameter" +msgstr "외부 노즐의 외경" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter description" @@ -254,7 +268,7 @@ msgstr "노즐 끝의 외경." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "노즐 길이" #: fdmprinter.def.json @@ -264,7 +278,7 @@ msgstr "노즐의 끝과 프린트 헤드의 가장 낮은 부분 사이의 높 #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "노즐 각도" #: fdmprinter.def.json @@ -274,7 +288,7 @@ msgstr "노즐 끝 바로 위의 수평면과 원뿔 부분 사이의 각도입 #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "가열 영역 길이" #: fdmprinter.def.json @@ -304,7 +318,7 @@ msgstr "Cura에서 온도를 제어할지 여부. Cura 외부에서 노즐 온 #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "가열 속도" #: fdmprinter.def.json @@ -314,7 +328,7 @@ msgstr "노즐이 가열되는 속도 (°C/s)는 일반적인 프린팅 온도 #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "냉각 속도" #: fdmprinter.def.json @@ -334,7 +348,7 @@ msgstr "노즐이 냉각되기 전에 익스트루더가 비활성이어야하 #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "Gcode 유형" #: fdmprinter.def.json @@ -399,7 +413,7 @@ msgstr "재료를 리트렉션하는 G1 명령어에서 E 속성을 사용하는 #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "허용되지 않는 지역" #: fdmprinter.def.json @@ -419,7 +433,7 @@ msgstr "노즐이 위치할 수 없는 구역의 목록입니다." #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "머신 헤드 폴리곤" #: fdmprinter.def.json @@ -429,7 +443,7 @@ msgstr "프린트 헤드의 2D 실루엣 (팬 캡 제외)." #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" +msgid "Machine Head & Fan Polygon" msgstr "머신 헤드 및 팬 폴리곤" #: fdmprinter.def.json @@ -439,7 +453,7 @@ msgstr "프린트 헤드의 2D 실루엣 (팬 뚜껑 포함)." #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "갠트리 높이" #: fdmprinter.def.json @@ -469,7 +483,7 @@ msgstr "노즐의 내경. 비표준 노즐 크기를 사용할 때 이 설정을 #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" +msgid "Offset with Extruder" msgstr "익스트루더로 오프셋" #: fdmprinter.def.json @@ -1017,6 +1031,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "아래층의 수. 바닥 두께로 계산을 할때 이 값은 벽 두께로 계산할 때 이 값은 반올림됩니다." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "초기 하단 레이어" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "빌드 플레이트에서 위를 향하는 초기 하단 레이어 수. 하단 두께로 계산할 경우, 이 값이 전체 값으로 반올림됩니다." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1267,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "날카로운 모서리" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Z 경계 위치" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "레이어에서 각 부품의 프린팅이 시작할 위치 근처입니다." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "후면 왼쪽" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "뒤로" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "후면 오른쪽" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "오른쪽" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "전면 오른쪽" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "전면" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "전면 왼쪽" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "왼쪽" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1294,8 +1368,8 @@ msgstr "솔기 코너 환경 설정" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "모델 외곽선의 모서리가 솔기의 위치에 영향을 줄지 여부를 제어합니다. 이것은 코너가 솔기 위치에 영향을 미치지 않는다는 것을 의미하지 않습니다. 솔기 숨기기는 이음새가 안쪽 모서리에서 발생할 가능성을 높입니다. 솔기 노출은 솔기이 외부 모서리에서 발생할 가능성을 높입니다. 솔기 숨기기 또는 노출은 솔기이 내부나 외부 모서리에서 발생할 가능성을 높입니다." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "모델 외곽선의 모서리가 이음선의 위치에 영향을 주는지 여부를 제어합니다. 이것은 모서리가 이음선 위치에 영향을 미치지 않는다는 것을 의미하지 않습니다. 이음선 숨김은 이음선이 안쪽 모서리에서 발생할 가능성을 높입니다. 이음선 노출은 이음선이 외부 모서리에서 발생할 가능성을 높입니다. 이음선 숨김 또는 노출은 이음선이 내부나 외부 모서리에서 발생할 가능성을 높입니다. 스마트 숨김은 내외부 모서리 모두 가능하지만, 적절하다면 내부 모서리를 더욱 빈번하게 선택합니다." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1317,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "솔기 숨기기 또는 노출" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "스마트 숨김" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1329,13 +1408,13 @@ msgstr "활성화 된 경우 z 솔기 좌표는 각 부품의 중심을 기준 #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "작은 Z 간격 무시" +msgid "No Skin in Z Gaps" +msgstr "Z 간격에 스킨 없음" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "모델에 수직 간격이 작으면 이 좁은 공간에서 상단 및 하단 스킨을 생성하는 데 약 5%의 추가적인 계산시간을 소비 할 수 있습니다. 이 경우 설정을 해제하십시오." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "모델의 몇 가지 레이어에만 수직 간격이 작을 경우 보통 좁은 공간의 본 레이어 주위에도 스킨이 있어야 합니다. 수직 간격이 매우 작을 경우 스킨을 생성하지 않도록 이 설정을 활성화합니다. 이렇게 하면 프린팅 시간과 슬라이싱 시간은 개선되지만 기술적으로 내부채움이 공기 중에 노출된 상태로 남게 됩니다." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1354,8 +1433,8 @@ msgstr "다림질 사용" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "상단 표면을 한 번 더 이동하지만 재료를 익스트루딩 시키지 않습니다. 이것은 맨 위의 플라스틱을 녹여 부드러운 표면을 만듭니다." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "상단 표면을 한 번 더 이동하지만 재료를 아주 약간만 압출 성형합니다. 따라서 맨 위의 플라스틱이 녹아 부드러운 표면을 만듭니다. 노즐 챔버 내의 압력이 고압으로 유지되므로 표면상의 주름이 재료로 채워집니다." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1447,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "다림질을하는 동안 최대 순간 속도 변화." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "스킨 겹침 비율" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "벽과 스킨-센터라인(종점) 사이의 겹침 양을 스킨 라인과 가장 안쪽 벽의 라인 폭 비율로 조정하십시오. 약간의 겹침으로 벽이 스킨에 확실하게 연결될 수 있습니다. 동일한 스킨 및 벽 라인-폭을 고려할 때 비율이 50%가 넘는다면, 그 지점에서 스킨-익스트루더의 노즐 위치가 이미 벽 중앙을 지나 도달할 수 있기 때문에 이미 스킨이 벽을 지나치고 있을 수 있습니다." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "스킨 겹침" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "벽과 스킨-센터라인(종점) 사이의 겹침 양을 조정하십시오. 약간의 겹침으로 벽이 스킨에 확실하게 연결될 수 있습니다. 동일한 스킨 및 벽 라인-폭을 고려할 때 값이 벽 폭의 절반을 넘는다면, 그 지점에서 스킨-익스트루더의 노즐 위치가 이미 벽 중앙을 지나 도달할 수 있기 때문에 이미 스킨이 벽을 지나치고 있을 수 있습니다." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1612,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "내부채움 패턴이 Y축을 따라 이 거리만큼 이동합니다." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "무작위 충전 시작" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "가장 먼저 프린트되는 충전 선을 무작위로 결정합니다. 이렇게 하면 특정 세그먼트가 가장 강한 세그먼트가 되는 일이 없지만, 추가 이동이 발생하지 않게 됩니다." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1632,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "내부채움 영역 주변에 여분의 벽을 추가합니다. 이러한 벽은 상단/하단 스킨 라인이 늘어지는 것을 줄여줄 수 있습니다. 일부 여분 재료를 사용해도 같은 품질을 유지하는 데 필요한 필요한 상단/하단 스킨 층이 감소한다는 의미입니다.\n이 기능을 올바르게 구성하는 경우 내부채움 다각형 연결과 함께 사용해 이동 또는 리트랙션없이 모든 내부채움을 단일 돌출 경로에 연결할 수 있습니다." +msgstr "" +"내부채움 영역 주변에 여분의 벽을 추가합니다. 이러한 벽은 상단/하단 스킨 라인이 늘어지는 것을 줄여줄 수 있습니다. 일부 여분 재료를 사용해도 같은 품질을 유지하는 데 필요한 필요한 상단/하단 스킨 층이 감소한다는 의미입니다.\n" +"이 기능을 올바르게 구성하는 경우 내부채움 다각형 연결과 함께 사용해 이동 또는 리트랙션없이 모든 내부채움을 단일 돌출 경로에 연결할 수 있습니다." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1664,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "내부채움과 벽 사이의 겹침 정도. 약간 겹치면 벽이 내부채움에 단단히 연결됩니다." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "스킨 겹침 비율" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "스킨 라인 폭의 비율인 스킨과 벽 사이의 오버랩 양. 약간의 오버랩으로 벽이 스킨과 확실하게 체결됩니다. 이것은 스킨 라인과 가장 안쪽 벽과의 평균 라인 폭의 비율입니다." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "스킨 겹침" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "스킨와 벽 사이의 겹침 정도. 약간 겹치면 벽이 스킨에 단단히 연결됩니다." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1864,6 +1955,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "프린팅에 사용되는 기본 온도입니다. 이것은 재료의 \"기본\"온도 이여야 합니다. 다른 모든 프린팅 온도는 이 값을 기준으로 오프셋을 사용해야합니다" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "빌드 볼륨 온도" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "프린팅되는 환경의 온도입니다. 이 값이 0인 경우 빌드 볼륨 온도는 조정되지 않습니다." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1974,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "수축 비율 퍼센트." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "결정형 소재" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "이 소재는 가열 시 깔끔하게 분리되는 유형(결정형)입니까? 아니면 길게 얽힌 폴리머 체인을 생성하는 유형(비결정형)입니까?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "흐름 방지 리트랙션 위치" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "흐름이 멈추기 전에 소재가 후퇴해야 하는 거리입니다." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "흐름 방지 리트랙션 속도" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "흐름을 방지하기 위해 필라멘트 스위치 중 소재가 후퇴해야 하는 속도입니다." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "파단 준비 리트랙션 위치" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "가열 시 파단되기 전까지 필라멘트가 늘어날 수 있는 거리입니다." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "파단 준비 리트랙션 속도" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "리트랙션 시 파단되기 직전까지 필라멘트가 후퇴해야 하는 속도입니다." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "파단 리트랙션 위치" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "필라멘트가 깔끔하게 파단되기 위해 후퇴해야 하는 거리입니다." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "파단 리트랙션 속도" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "필라멘트가 깔끔하게 파단되기 위해 후퇴해야 하는 속도입니다." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "파단 온도" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "필라멘트가 깔끔하게 파단되는 온도입니다." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1984,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "압출량 보상: 압출 된 재료의 양에 이 값을 곱합니다." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "벽 압출량" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "벽 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "외벽 압출량" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "가장 외측 벽 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "내벽 압출량" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "가장 외측 벽을 제외한 모든 벽 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "상단/하단 압출량" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "상단/하단 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "상단 표면 스킨 압출량" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "프린트 상단 부분 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "내부채움 압출량" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "내부채움 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "스커트/브림 압출량" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "스커트 또는 브림 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "지지대 압출량" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "지지대 구조 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "지지대 인터페이스 압출량" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "지지대 지붕 또는 바닥 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "지지대 지붕 압출량" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "지지대 지붕 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "지지대 바닥 압출량" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "지지대 바닥 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "프라임 타워 압출량" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "프라임 타워 라인의 압출 보상입니다." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2101,8 +2402,8 @@ msgstr "지지대 후퇴 제한" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "직선으로 지지대 사이를 이동하는 경우 후퇴는 불가능합니다. 이 설정을 사용하면 인쇄 시간은 절약할 수 있지만, 지지 구조물 내에 스트링이 과도하게 증가할 수 있습니다." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "직선으로 지지대 사이를 이동하는 경우 리트랙션은 생략합니다. 이 설정을 사용하면 프린팅 시간은 절약할 수 있지만, 지지대 구조물 내에 스트링이 과도하게 증가할 수 있습니다." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2121,8 +2422,8 @@ msgstr "노즐 스위치 리트렉션 거리" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "리트렉션 양 : 리트렉션이 전혀없는 경우 0으로 설정합니다. 일반적으로 히팅 영역의 길이와 같아야합니다." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "익스트루더 전환 시 리트렉션 양. 리트렉션이 전혀 없는 경우 0으로 설정하십시오. 이는 일반적으로 열 영역의 길이와 같아야 합니다." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2154,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "노즐 스위치 리트렉션 후 필라멘트가 뒤로 밀리는 속도." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "노즐 스위치 엑스트라 프라임 양" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "노즐 스위치 후 프라이밍하는 추가 소재의 양입니다." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2345,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "스커트와 브림이 프린팅되는 속도입니다. 일반적으로 이것은 초기 레이어 속도에서 수행되지만 때로는 스커트나 브림을 다른 속도로 프린팅하려고 할 수 있습니다." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "최대 Z 속도" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Z 홉 속도" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "빌드 플레이트가 움직이는 최대 속도. 이 값을 0으로 설정하면 프린팅시 최대 z 속도의 펌웨어 기본값이 사용됩니다." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Z 홉을 위해 수직 Z 이동이 이루어지는 속도입니다. 빌드 플레이트 또는 기기의 갠트리를 움직이기가 더 어렵기 때문에 프린트 속도보다 낮은 것이 일반적입니다." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2781,8 +3092,8 @@ msgstr "Combing 모드" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "Combing은 이동할 때 이미 인쇄 된 영역 내에 노즐을 유지합니다. 이로 인해 이동이 약간 더 길어 지지만 리트렉션의 필요성은 줄어 듭니다. Combing이 꺼져 있으면 재료가 후퇴하고 노즐이 직선으로 다음 점으로 이동합니다. 또한 내부채움 내에서만 빗질하여 상단/하단 스킨 영역을 Combing하는 것을 피할 수 있습니다. '내부채움 내' 옵션은 이전 Cura 릴리즈에서 '스킨에 없음' 옵션과 정확하게 동일한 동작을 합니다." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "Combing은 이동할 때 이미 인쇄 된 영역 내에 노즐을 유지합니다. 이로 인해 이동이 약간 더 길어 지지만 리트렉션의 필요성은 줄어듭니다. Combing이 꺼져 있으면 재료가 후퇴하고 노즐이 직선으로 다음 점으로 이동합니다. 또한 상단/하단 스킨 영역을 Combing하거나 내부채움 내에서만 빗질하는 것을 피할 수 있습니다." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2854,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "이동 중 출력물을 피할 때 노즐과 이미 프린팅 된 부분 사이의 거리." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "같은 부분으로 레이어 시작" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "각 레이어에서 같은 지점 근처에서 개체를 프린팅, 새 레이어는 이전 레이어가 끝난 부분에서 프린팅을 하지 않는다.. 이것은 오버행 및 작은 부분을 개선하지만 프린팅 시간을 증가시킵니다." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2924,6 +3225,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "기기가 하나의 익스트루더에서 다른 익스트루더로 전환 된 후, 빌드 플레이트가 내려가 노즐과 출력물 사이에 간격이 생깁니다. 이렇게 하면 프린트 물 바깥쪽에서 노즐로 부터 필라멘트가 흐르는 것을 방지합니다." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "익스트루더 스위치 높이 후 Z 홉" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "익스트루더 스위치 후 Z 홉을 수행할 때의 높이 차이." + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3194,6 +3505,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "십자" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "자이로이드" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3255,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "인쇄된 초기 레이어 서포트 구조 선 사이의 거리. 이 설정은 서포트 밀도로 계산됩니다." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "서포트 내부채움 선 방향" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "서포트에 대한 내부채움 패턴 방향. 서포트 내부채움 패턴은 수평면에서 회전합니다." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "사용할 정수 선 방향 리스트입니다. 리스트의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 리스트의 끝에 도달하면 처음부터 다시 시작됩니다. 리스트 항목은 쉼표로 구분되며 전체 리스트는 대괄호 안에 들어 있습니다. 기본값은 빈 목록입니다. 즉 기본 각도인 0도를 사용합니다." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3391,8 +3707,8 @@ msgstr "서포트 Join 거리" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "X/Y 방향으로서포트 구조물 사이의 최대 거리. 별도의 구조가 이 값보다 가깝게 있으면 구조가 하나로 합쳐집니다." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "X/Y 방향으로 지지대 구조물 사이의 최대 거리입니다. 별도의 구조가 이 값보다 가깝게 있으면 구조가 하나로 합쳐집니다." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3434,6 +3750,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "밀도의 절반으로 전환하기 전에 주어진 밀도의 서포트 채움 높이." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "최소 서포트 지역" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "서포트 영역에 대한 최소 지역 크기. 이 값보다 작은 지역을 갖는 영역은 생성되지 않습니다." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3659,6 +3985,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "지그재그" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "최소 서포트 인터페이스 지역" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "지원 인터페이스 다각형의 최소 영역 크기입니다. 이 값보다 작은 영역을 갖는 다각형은 정상적인 지원으로 인쇄됩니다." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "최소 서포트 지붕 지역" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "서포트 지붕에 대한 최소 면적 크기입니다. 이 값보다 작은 영역을 갖는 다각형은 정상적인 지원으로 인쇄됩니다." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "최소 서포트 바닥 지역" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "지원 바닥의 최소 면적 크기입니다. 이 값보다 작은 영역을 갖는 다각형은 정상적인 지원으로 인쇄됩니다." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "서포트 인터페이스 수평 확장" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "서포트 인터페이스 영역에 적용되는 오프셋 양." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "서포트 지붕 수평 확장" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "서포트 지붕에 적용되는 오프셋 양." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "서포트 바닥 수평 확장" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "서포트 바닥에 적용되는 오프셋 양." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "서포트 인터페이스 선 방향" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "사용할 정수 선 방향 리스트입니다. 리스트의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 리스트의 끝에 도달하면 처음부터 다시 시작됩니다. 리스트 항목은 쉼표로 구분되며 전체 리스트는 대괄호 안에 들어 있습니다. 기본값은 빈 목록입니다. 즉 기본 각도인 0도를 사용합니다(인터페이스가 상당히 두껍거나 90도라면 45도와 135도를 번갈아 사용)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "서포트 지붕 선 방향" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "사용할 정수 선 방향 리스트입니다. 리스트의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 리스트의 끝에 도달하면 처음부터 다시 시작됩니다. 리스트 항목은 쉼표로 구분되며 전체 리스트는 대괄호 안에 들어 있습니다. 기본값은 빈 목록입니다. 즉 기본 각도인 0도를 사용합니다(인터페이스가 상당히 두껍거나 90도라면 45도와 135도를 번갈아 사용)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "바닥 지붕 선 방향" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "사용할 정수 선 방향 리스트입니다. 리스트의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 리스트의 끝에 도달하면 처음부터 다시 시작됩니다. 리스트 항목은 쉼표로 구분되며 전체 리스트는 대괄호 안에 들어 있습니다. 기본값은 빈 목록입니다. 즉 기본 각도인 0도를 사용합니다(인터페이스가 상당히 두껍거나 90도라면 45도와 135도를 번갈아 사용)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3700,14 +4116,14 @@ msgid "The diameter of a special tower." msgstr "특수 타워의 지름." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "최소 지름" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "최대 타워 지지 직경" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "특수 서포트 타워에 의해서 서포트 될 작은 영역의 X/Y 방향의 최소 직경." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "특수 지지대 타워에 의해서 지지될 작은 영역의 X/Y 방향의 최대 직경입니다." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3829,7 +4245,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "프린트의 스커트와 첫 번째 레이어 사이의 수평 거리입니다.\n이것은 최소 거리입니다. 여러 개의 스커트 선이 이 거리에서 바깥쪽으로 연장됩니다." +msgstr "" +"프린트의 스커트와 첫 번째 레이어 사이의 수평 거리입니다.\n" +"이것은 최소 거리입니다. 여러 개의 스커트 선이 이 거리에서 바깥쪽으로 연장됩니다." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4201,16 +4619,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "각 노즐을 교체 한 후에 재료를 프라이밍(Priming)하는 프린팅 옆에 타워를 프린팅하십시오." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "원형 프라임 타워" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "프라임 타워를 원형으로 만들기." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4251,16 +4659,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "프라임 타워 위치의 y 좌표입니다." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "프라임 타워 압출량" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "압출량 보정 : 압출된 재료의 양에 이 값을 곱합니다." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4271,6 +4669,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "하나의 노즐로 프라임 타워를 프린팅 한 후, 다른 타워의 이물질을 프라임 타워에서 닦아냅니다." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "프라임 타워 브림" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "프라임 타워는 모델이 제공하지 않더라도 브림이 제공하는 추가 접착이 필요할 수 있습니다. 현재 '래프트' 접착 유형을 사용할 수 없습니다." + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4391,6 +4799,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "첫 번째로 프린팅된 레이어 바로 아래의 비어 있는 레이어를 제거합니다. 이 설정을 해제하면 슬라이싱 허용 오차 설정을 배타 또는 중간으로 설정할 경우 첫 번째 레이어가 비어 있게 될 수 있습니다." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "최대 해상도" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "슬라이딩 후의 선분의 최소 크기입니다. 이 값을 높이면 메쉬의 해상도가 낮아집니다. 그러면 프린터가 G 코드를 처리하는 데 필요한 속도를 유지할 수 있으며 처리할 수 없는 메쉬의 디테일이 제거되므로 슬라이드 속도가 높아집니다." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "최대 이동 해상도" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "슬라이딩 후의 이동 선분의 최소 크기입니다. 이 값을 높이면 코너에서 매끄럽게 이동하는 정도가 감소합니다. 프린터가 G 코드를 처리하는 데 필요한 속도를 유지할 수 있지만, 모델을 피하기 때문에 정확도가 감소합니다." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "최대 편차" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "최대 해상도 설정에 대한 해상도를 낮추면 최대 편차를 사용할 수 있습니다. 최대 편차를 높이면 프린트의 정확도는 감소하지만, G 코드도 감소합니다. 최대 편차는 최대 해상도의 한계이며, 따라서 두 항목이 충돌하면 항상 최대 편차가 우선합니다." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4553,8 +4991,8 @@ msgstr "부드러운 나선형 윤곽" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "나선형 윤곽선을 부드럽게하여 Z 솔기의 가시성을 줄입니다. (Z- 솔기는 출력물에서는 거의 보이지 않지만 레이어 뷰에서는 여전히 보임). 매끄러움은 표면의 세부 묘사를 흐릿하게하는 경향이 있습니다." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "나선형 윤곽선을 부드럽게 하여 Z 이음선이 잘 보이지 않도록 합니다(Z- 이음선은 출력물에서는 거의 보이지 않지만 레이어 뷰에서는 여전히 보임). 매끄러움은 표면의 세부 묘사를 흐릿하게 만드는 경향이 있습니다." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4766,26 +5204,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "레이어가 슬라이스 된, 이 값보다 둘레가 작은 다각형은 필터링됩니다. 값을 낮을수록 슬라이스가 느려지지만, 해상도 메쉬가 높아집니다. 주로 고해상도 SLA 프린터 및 세부 사항이 많은 매우 작은 3D 모델에 적합합니다." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "최대 해상도" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "슬라이딩 후의 선분의 최소 크기입니다. 이 값을 높이면 메쉬의 해상도가 낮아집니다. 그러면 프린터가 G 코드를 처리하는 데 필요한 속도를 유지할 수 있으며 처리할 수 없는 메쉬의 디테일이 제거되므로 슬라이드 속도가 높아집니다." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "최대 이동 해상도" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "슬라이딩 후의 이동 선분의 최소 크기입니다. 이 값을 높이면 코너에서 매끄럽게 이동하는 정도가 감소합니다. 프린터가 G 코드를 처리하는 데 필요한 속도를 유지할 수 있지만, 모델을 피하기 때문에 정확도가 감소합니다." - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4926,16 +5344,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "코스팅(Coasting)시 이동 속도. 압출 경로의 속도에 상대적입니다. 코스팅(Coasting) 이동 중에 보우 덴 튜브의 압력이 떨어지기 때문에 100% 보다 약간 작은 값을 권합니다." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "대체 스킨 회전" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "위쪽/아래쪽 레이어가 프린팅되는 방향을 바꿉니다. 보통 대각선으로 만 프린팅됩니다. 이 설정은 X 전용 및 Y 전용 방향을 추가합니다." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5043,8 +5451,8 @@ msgstr "원추형 서포트 사용" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "실험적 기능 : 오버행보다 하단에서 서포트 영역을 작게 만듭니다." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "오버행보다 하단에서 지지대 영역을 작게 만듭니다." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5108,23 +5516,23 @@ msgstr "각 선분에 있는 임의의 점 사이의 평균 거리입니다. 다 #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "압출 속도 보상 최대 압출 오프셋" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "최대 보상 거리입니다(단위: mm)." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "압출 속도를 보상하기 위해 필라멘트를 이동하는 최대 거리(mm)." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "압출 속도 보상 배율" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "압출 속도를 거리로 변환하는 증배율입니다." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "압출 속도 변화를 보상하기 위해 필라멘트를 이동하는 거리(1초 압출 시 필라멘트가 이동할 수 있는 거리의 백분율)." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5385,7 +5793,7 @@ msgstr "노즐과 수평 아래쪽 라인 사이의 거리. 거리가 클수록 #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "어댑티브 레이어 사용" #: fdmprinter.def.json @@ -5395,7 +5803,7 @@ msgstr "어댑티브 레이어는 모델의 모양에 따라 레이어의 높이 #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "어댑티브 레이어 최대 변화" #: fdmprinter.def.json @@ -5405,7 +5813,7 @@ msgstr "기본 레이어 높이와 다른 최대 허용 높이." #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "어댑티브 레이어 변화 단계 크기" #: fdmprinter.def.json @@ -5415,13 +5823,13 @@ msgstr "이전 높이와 비교되는 다음 레이어 높이의 차이." #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "어댑티브 레이어 임계 값" +msgid "Adaptive Layers Topography Size" +msgstr "어댑티브 레이어 지형 크기" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "더 작은 레이어를 사용할지 여부에 대한 임계 값. 이 숫자는 레이어의 가장 급한 경사의 탄젠트와 비교됩니다." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "두 개의 인접 레이어 사이의 대상 수평 거리. 이러한 설정을 줄이면 레이어들의 가장자리를 더 가깝게 하도록 보다 얇은 레이어들을 사용하게 됩니다." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5430,8 +5838,8 @@ msgstr "오버행된 벽 각도" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "이 각도를 초과해 오버행된 벽은 오버행된 벽 설정을 사용해 인쇄됩니다. 값이 90인 경우 벽이 오버행된 것으로 간주하지 않습니다." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "이 각도보다 놓은 오버행(경사면)의 벽은 오버행 벽 설정을 사용해 인쇄됩니다. 값이 90이면 오버행(경사면)으로 처리되는 벽이 없습니다. 서포트로 지지되는 오버행(경사면)도 오버행(경사면)으로 처리되지 않습니다." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5633,6 +6041,196 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "세번째 브리지 벽과 스킨을 인쇄 할 때 사용하는 팬 속도 백분율." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "레이어 사이의 와이프 노즐" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "레이어 사이에 노즐 와이프 G 코드를 포함할지 여부를 결정합니다. 이 설정을 활성화하면 레이어 변경 시 리트렉트 동작에 영향을 줄 수 있습니다. 와이프 스크립트가 작동하는 레이어에서 리트랙션을 제어하려면 와이프 리트렉션 설정을 사용하십시오." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "와이프 사이의 재료 볼륨" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "다른 노즐 와이프를 시작하기 전에 압출할 수 있는 최대 재료입니다." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "와이프 리트랙션 활성화" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "노즐이 프린팅되지 않은 영역 위로 움직일 때 필라멘트를 리트렉션합니다." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "와이프 리트랙션 거리" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "필라멘트를 리트렉션하는 양으로 와이프 순서 동안 새어 나오지 않습니다." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "와이프 리트랙션 추가 초기 양" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "와이프 이동 중에 재료가 새어 나올 수 있습니다. 이 재료는 여기에서 보상받을 수 있습니다." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "와이프 리트랙션 속도" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "와이프 리트랙션 이동 중에 필라멘트가 리트렉션 및 준비되는 속도입니다." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "와이프 리트랙션 리트렉트 속도" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "와이프 리트랙션 이동 중에 필라멘트가 리트렉트되는 속도입니다." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "리트렉션 초기 속도" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "와이프 리트랙션 이동 중에 필라멘트가 초기화되는 속도입니다." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "와이프 일시 정지" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "리트랙트를 실행 취소한 후 일시 정지합니다." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "리트렉션했을 때의 와이프 Z 홉" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "리트렉션이 일어날 때마다 빌드 플레이트가 낮아져 노즐과 출력물 사이에 여유 공간이 생깁니다. 이동 중에 노즐이 인쇄물에 부딪치지 않도록 하여 인쇄물이 빌드 플레이트와 부딪힐 가능성을 줄여줍니다." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "화이프 Z 홉 높이" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "Z 홉을 수행할 때의 높이 차이." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "와이프 홉 속도" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "홉 중에 z축을 이동하는 속도입니다." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "와이프 브러시 X 위치" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "와이프 스크립트가 시작되는 X 위치입니다." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "와이프 반복 횟수" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "브러시 전체에 노즐을 이동하는 횟수입니다." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "와이프 이동 거리" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "브러시 전체에 헤드를 앞뒤로 이동하는 거리입니다." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "소형 구멍 최대 크기" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "이 수치보다 직경이 작은 구멍 및 부품 윤곽은 소형 피처 속도 기능을 이용해 프린트합니다." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "소형 피처 최대 길이" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "이 수치보다 길이가 짧은 피처 윤곽은 소형 피처 속도 기능을 이용해 프린트합니다." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "소형 피처 속도" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "소형 피처는 정상적인 프린트 속도의 이 비율로 프린팅됩니다. 프린트 속도가 느리면 부착과 정확도가 개선됩니다." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "소형 피처 초기 레이어 속도" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "첫 번째 레이어의 소형 피처는 정상적인 프린트 속도의 이 비율로 프린팅됩니다. 프린트 속도가 느리면 부착과 정확도가 개선됩니다." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5693,6 +6291,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "파일로부터 로드 하는 경유, 모델에 적용될 변환 행렬입니다." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "지원 인터페이스 영역에 대한 최소 지역 크기. 이 값보다 작은 지역을 갖는 영역은 생성되지 않습니다." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "서포트 지붕에 대한 최소 지역 크기. 이 값보다 작은 지역을 갖는 영역은 생성되지 않습니다." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "서포트 바닥에 대한 최소 지역 크기. 이 값보다 작은 지역을 갖는 영역은 생성되지 않습니다." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "대체 스킨 회전" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "위쪽/아래쪽 레이어가 프린팅되는 방향을 바꿉니다. 보통 대각선으로 만 프린팅됩니다. 이 설정은 X 전용 및 Y 전용 방향을 추가합니다." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "압출 속도 보상 최대 압출 오프셋" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "최대 보상 거리입니다(단위: mm)." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "압출 속도 보상 배율" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "압출 속도를 거리로 변환하는 증배율입니다." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "어댑티브 레이어 임계 값" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "더 작은 레이어를 사용할지 여부에 대한 임계 값. 이 숫자는 레이어의 가장 급한 경사의 탄젠트와 비교됩니다." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "이 각도를 초과해 오버행된 벽은 오버행된 벽 설정을 사용해 인쇄됩니다. 값이 90인 경우 벽이 오버행된 것으로 간주하지 않습니다." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "소형 피처는 정상적인 프린트 속도의 이 비율로 프린팅됩니다. 프린트 속도가 느리면 착력과 정확도가 개선됩니다." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "첫 번째 레이어 속도" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "첫 번째 레이어의 소형 피처는 정상적인 프린트 속도의 이 비율로 프린팅됩니다. 프린트 속도가 느리면 접착력과 정확도가 개선됩니다." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "상단 표면을 한 번 더 이동하지만 재료를 익스트루딩 시키지 않습니다. 이것은 맨 위의 플라스틱을 녹여 부드러운 표면을 만듭니다." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "같은 부분으로 레이어 시작" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "각 레이어에서 같은 지점 근처에서 개체를 프린팅, 새 레이어는 이전 레이어가 끝난 부분에서 프린팅을 하지 않는다.. 이것은 오버행 및 작은 부분을 개선하지만 프린팅 시간을 증가시킵니다." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "서포트에 대한 내부채움 패턴 방향. 서포트 내부채움 패턴은 수평면에서 회전합니다." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "최대 해상도 설정에 대한 해상도를 낮추면 최대 편차를 사용할 수 있습니다. 최대 편차를 높이면 프린트의 정확도는 감소하지만, G 코드도 감소합니다." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-code Flavour" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "모델 외곽선의 모서리가 솔기의 위치에 영향을 줄지 여부를 제어합니다. 이것은 코너가 솔기 위치에 영향을 미치지 않는다는 것을 의미하지 않습니다. 솔기 숨기기는 이음새가 안쪽 모서리에서 발생할 가능성을 높입니다. 솔기 노출은 솔기이 외부 모서리에서 발생할 가능성을 높입니다. 솔기 숨기기 또는 노출은 솔기이 내부나 외부 모서리에서 발생할 가능성을 높입니다." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "작은 Z 간격 무시" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "모델에 수직 간격이 작으면 이 좁은 공간에서 상단 및 하단 스킨을 생성하는 데 약 5%의 추가적인 계산시간을 소비 할 수 있습니다. 이 경우 설정을 해제하십시오." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "빌드 볼륨에 사용되는 온도입니다. 0인 경우 빌드 볼륨 온도는 조정되지 않습니다." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "직선으로 지지대 사이를 이동하는 경우 후퇴는 불가능합니다. 이 설정을 사용하면 인쇄 시간은 절약할 수 있지만, 지지 구조물 내에 스트링이 과도하게 증가할 수 있습니다." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "최대 Z 속도" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "빌드 플레이트가 움직이는 최대 속도. 이 값을 0으로 설정하면 프린팅시 최대 z 속도의 펌웨어 기본값이 사용됩니다." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "X/Y 방향으로서포트 구조물 사이의 최대 거리. 별도의 구조가 이 값보다 가깝게 있으면 구조가 하나로 합쳐집니다." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "최소 지름" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "특수 서포트 타워에 의해서 서포트 될 작은 영역의 X/Y 방향의 최소 직경." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "원형 프라임 타워" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "프라임 타워를 원형으로 만들기." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "압출량 보정 : 압출된 재료의 양에 이 값을 곱합니다." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "나선형 윤곽선을 부드럽게하여 Z 솔기의 가시성을 줄입니다. (Z- 솔기는 출력물에서는 거의 보이지 않지만 레이어 뷰에서는 여전히 보임). 매끄러움은 표면의 세부 묘사를 흐릿하게하는 경향이 있습니다." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "실험적 기능 : 오버행보다 하단에서 서포트 영역을 작게 만듭니다." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "활성화된 익스트루더의 수" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "노즐의 외경" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "노즐 길이" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "노즐 각도" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "가열 영역 길이" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "가열 속도" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "냉각 속도" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "Gcode 유형" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "허용되지 않는 지역" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "머신 헤드 폴리곤" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "머신 헤드 및 팬 폴리곤" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "갠트리 높이" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "익스트루더로 오프셋" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "어댑티브 레이어 사용" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "어댑티브 레이어 최대 변화" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "어댑티브 레이어 변화 단계 크기" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "어댑티브 레이어 임계 값" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "스킨 라인 폭의 비율인 스킨과 벽 사이의 오버랩 양. 약간의 오버랩으로 벽이 스킨과 확실하게 체결됩니다. 이것은 스킨 라인과 가장 안쪽 벽과의 평균 라인 폭의 비율입니다." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "스킨와 벽 사이의 겹침 정도. 약간 겹치면 벽이 스킨에 단단히 연결됩니다." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "리트렉션 양 : 리트렉션이 전혀없는 경우 0으로 설정합니다. 일반적으로 히팅 영역의 길이와 같아야합니다." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "Combing은 이동할 때 이미 인쇄 된 영역 내에 노즐을 유지합니다. 이로 인해 이동이 약간 더 길어 지지만 리트렉션의 필요성은 줄어 듭니다. Combing이 꺼져 있으면 재료가 후퇴하고 노즐이 직선으로 다음 점으로 이동합니다. 또한 내부채움 내에서만 빗질하여 상단/하단 스킨 영역을 Combing하는 것을 피할 수 있습니다. '내부채움 내' 옵션은 이전 Cura 릴리즈에서 '스킨에 없음' 옵션과 정확하게 동일한 동작을 합니다." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "스킨 경로가 나란히 이어지는 상단/하단 스킨 경로를 연결합니다. 동심원 패턴의 경우 이 설정을 사용하면 이동 시간이 크게 감소하지만, 내부채움의 중간에 연결될 수 있기 때문에 이 기능은 상단 표면 품질을 저하시킬 수 있습니다." diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index 60b7671e6c..2f9ffe5802 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-11-06 15:03+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Dutch\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Dutch , Dutch \n" "Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.6\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Machine-instellingen" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-code-bestand" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter ondersteunt geen non-tekstmodus." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Bereid voorafgaand aan het exporteren G-code voor." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D-modelassistent" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,66 +70,50 @@ msgstr "" "

    Ontdek hoe u de best mogelijke printkwaliteit en betrouwbaarheid verkrijgt.

    \n" "

    Handleiding printkwaliteit bekijken

    " -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Wijzigingenlogboek Weergeven" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Firmware bijwerken" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Actieve instellingen platmaken" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF-bestand" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Profiel is platgemaakt en geactiveerd." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-printen" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Printen via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Via USB Printen" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Aangesloten via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Er wordt momenteel via USB geprint. Wanneer u Cura afsluit, wordt het printen gestopt. Weet u zeker dat u wilt afsluiten?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G-bestand" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Er wordt nog een print afgedrukt. Cura kan pas een nieuwe print via USB starten zodra de vorige print is voltooid." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Schrijft X3g naar bestanden" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g-bestand" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Bezig met printen" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -143,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "GCodeGzWriter ondersteunt geen tekstmodus." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Ultimaker Format Package" @@ -164,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Opslaan op Verwisselbaar Station {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Er zijn geen bestandsindelingen beschikbaar om te schrijven!" @@ -201,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Kan niet opslaan op verwisselbaar station {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Fout" @@ -232,8 +217,9 @@ msgstr "Verwisselbaar station {0} uitwerpen" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Waarschuwing" @@ -260,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Verwisselbaar Station" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Printen via netwerk" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Printen via netwerk" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Via het netwerk verbonden." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Via het netwerk verbonden. Keur de aanvraag goed op de printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Via het netwerk verbonden. Kan de printer niet beheren." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Er is een toegangsaanvraag voor de printer verstuurd. Keur de aanvraag goed op de printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Verificatiestatus" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "Verificatiestatus" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Opnieuw proberen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "De toegangsaanvraag opnieuw verzenden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Toegang tot de printer is geaccepteerd" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "Kan geen toegang verkrijgen om met deze printer te printen. Kan de printtaak niet verzenden." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Toegang aanvragen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Toegangsaanvraag naar de printer verzenden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "Er kan geen nieuwe taak worden gestart." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Er is een probleem met de configuratie van de Ultimaker waardoor het niet mogelijk is het printen te starten. Los het probleem op voordat u verder gaat." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "De configuratie komt niet overeen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Weet u zeker dat u met de geselecteerde configuratie wilt printen?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "De configuratie of kalibratie van de printer komt niet overeen met de configuratie van Cura. Slice voor het beste resultaat altijd voor de PrintCores en materialen die in de printer zijn ingevoerd." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "Het verzenden van nieuwe taken is (tijdelijk) geblokkeerd. Nog bezig met het verzenden van de vorige printtaak." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "De gegevens worden naar de printer verzonden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Gegevens Verzenden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Annuleren" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "Er is geen PrintCore geladen in de sleuf {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "Er is geen materiaal geladen in de sleuf {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "Er is een afwijkende PrintCore (Cura: {cura_printcore_name}, printer: {remote_printcore_name}) geselecteerd voor de extruder {extruder_id}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Afwijkend materiaal (Cura: {0}, Printer: {1}) geselecteerd voor de extruder {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Synchroniseren met de printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Wilt u uw huidige printerconfiguratie gebruiken in Cura?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "De PrintCores en/of materialen in de printer wijken af van de PrintCores en/of materialen in uw huidige project. Slice voor het beste resultaat altijd voor de PrintCores en materialen die in de printer zijn ingevoerd." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Via het netwerk verbonden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "De printtaak is naar de printer verzonden." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Gegevens verzonden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "In monitor weergeven" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "Printer '{printer_name}' is klaar met het printen van '{job_name}'." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "De printtaak '{job_name}' is voltooid." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Print klaar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Verbinding Maken via Netwerk" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Printen via netwerk" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Printen via netwerk" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Via het netwerk verbonden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Wacht tot de huidige taak is verzonden." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Printfout" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Nieuwe cloudprinters gevonden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Er zijn nieuwe printers gedetecteerd die zijn verbonden met uw account. U kunt ze vinden in uw lijst met gedetecteerde printers." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Dit bericht niet meer weergeven" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "U probeert verbinding te maken met {0}, maar deze is niet de host van een groep. U kunt de webpagina bezoeken om deze als groephost te configureren." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Geen groephost" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Groep configureren" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Verzend en controleer overal printtaken met uw Ultimaker-account." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Verbinden met Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Aan de slag" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Printtaak verzenden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Printtaak naar printer aan het uploaden." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "De printtaak is naar de printer verzonden." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Gegevens verzonden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "U probeert verbinding te maken met een printer waarop Ultimaker Connect niet wordt uitgevoerd. Werk de printer bij naar de nieuwste firmware." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Uw printer bijwerken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura heeft materiaalprofielen gedetecteerd die nog niet op de hostprinter van groep {0} zijn geïnstalleerd." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "De materialen worden naar de printer verzonden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Kan de gegevens niet uploaden naar de printer." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Netwerkfout" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "morgen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "vandaag" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Printen via Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Printen via Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Verbonden via Cloud" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Controleren" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Geen toegang tot update-informatie." @@ -507,22 +425,28 @@ msgctxt "@action:button" msgid "How to update" msgstr "Instructies voor bijwerken" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Laagweergave" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Als draadprinten is ingeschakeld, geeft Cura lagen niet nauwkeurig weer" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Simulatieweergave" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "Nabewerking" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" msgstr "G-code wijzigen" @@ -536,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "Maak een volume waarin supportstructuren niet worden geprint." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura verzamelt geanonimiseerde gebruiksstatistieken." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "Gegevens verzamelen" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "Meer informatie" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Lees meer over welke gegevens Cura verzendt." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "Toestaan" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Cura toestaan geanonimiseerde gebruiksstatistieken te verzenden om toekomstige verbeteringen aan Cura te helpen prioriteren. Onder de verzonden gegevens bevindt zich informatie over uw voorkeuren en instellingen, de Cura-versie en een selectie van de modellen die u slicet." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -596,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-afbeelding" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Gecomprimeerde driehoeksnet openen" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF-binair" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF-ingesloten JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford-driehoeksformaat" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Gecomprimeerde COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Met het huidige materiaal is slicen niet mogelijk, omdat het materiaal niet compatibel is met de geselecteerde machine of configuratie." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "Kan niet slicen" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Met de huidige instellingen is slicing niet mogelijk. De volgende instellingen bevatten fouten: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Slicing is niet mogelijk vanwege enkele instellingen per model. De volgende instellingen bevatten fouten voor een of meer modellen: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Slicen is niet mogelijk omdat de terugduwpijler of terugduwpositie(s) ongeldig zijn." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "Slicen is niet mogelijk omdat er objecten gekoppeld zijn aan uitgeschakelde Extruder %s." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Er valt niets te slicen omdat geen van de modellen in het bouwvolume past. Schaal of roteer de modellen totdat deze passen." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "Er kan niets worden geslicet omdat geen van de modellen in het bouwvolume past of omdat de modellen toegewezen zijn aan een uitgeschakelde extruder. Schaal of roteer de modellen totdat deze passen of schakel een extruder in." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "Lagen verwerken" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Informatie" @@ -660,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Instellingen per Model configureren" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Aanbevolen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Aangepast" @@ -678,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-bestand" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Projectbestand {0} bevat een onbekend type machine {1}. Kan de machine niet importeren. In plaats daarvan worden er modellen geïmporteerd." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Projectbestand Openen" @@ -705,22 +627,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G-bestand" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-code parseren" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Details van de G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Zorg ervoor dat de G-code geschikt is voor uw printer en de printerconfiguratie voordat u het bestand verzendt. Mogelijk is de weergave van de G-code niet nauwkeurig." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "Back-ups beheren" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "Back-up" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "Er is een fout opgetreden tijdens het vermelden van uw back-ups." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "Er is een fout opgetreden tijdens het herstellen van uw back-up." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "Back-ups" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "Uw back-up wordt geüpload..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "Er is een fout opgetreden tijdens het uploaden van uw back-up." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "Uw back-up is geüpload." + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -742,330 +707,451 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "Fout bij het schrijven van het 3mf-bestand." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "Voorbeeld" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Upgrades selecteren" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Controle" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Platform kalibreren" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Buitenwand" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Binnenwanden" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Skin" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Vulling" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Supportvulling" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Verbindingsstructuur" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Supportstructuur" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Skirt" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Beweging" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Intrekkingen" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Overig(e)" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Vooraf geslicet bestand {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "Inloggen mislukt" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Niet ondersteund" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Het Bestand Bestaat Al" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Het bestand {0} bestaat al. Weet u zeker dat u dit bestand wilt overschrijven?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Niet overschreven" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Het geselecteerde materiaal is niet compatibel met de geselecteerde machine of configuratie." +msgid "Invalid file URL:" +msgstr "Ongeldige bestands-URL:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Niet-compatibel materiaal" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "De instellingen zijn gewijzigd zodat deze overeenkomen met de huidige beschikbaarheid van extruders:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "De instellingen zijn gewijzigd zodat deze overeenkomen met de huidige beschikbaarheid van de extruders: [%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "De instellingen zijn bijgewerkt" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "Extruder(s) uitgeschakeld" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Onbekend" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Kan het profiel niet exporteren als {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Kan het profiel niet exporteren als {0}: Invoegtoepassing voor de schrijver heeft een fout gerapporteerd." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Het profiel is geëxporteerd als {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "De export is voltooid" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "Kan het profiel niet importeren uit {0}: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "Kan het profiel niet importeren uit {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "Kan het profiel niet importeren uit {0} voordat een printer toegevoegd is." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Er is geen aangepast profiel om in het bestand {0} te importeren" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Kan het profiel niet importeren uit {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Dit profiel {0} bevat incorrecte gegevens. Kan het profiel niet importeren." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "De machine die is vastgelegd in het profiel {0} ({1}), komt niet overeen met uw huidige machine ({2}). Kan het profiel niet importeren." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Kan het profiel niet importeren uit {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Het profiel {0} is geïmporteerd" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Het bestand {0} bevat geen geldig profiel." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Het profiel {0} heeft een onbekend bestandstype of is beschadigd." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Aangepast profiel" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Er ontbreekt een kwaliteitstype in het profiel." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Kan geen kwaliteitstype {0} vinden voor de huidige configuratie." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Buitenwand" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Binnenwanden" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Skin" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Vulling" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Supportvulling" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Verbindingsstructuur" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Supportstructuur" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Skirt" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "Primepijler" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Beweging" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Intrekkingen" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Overig(e)" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Vooraf geslicet bestand {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "Volgende" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "Groepsnummer {group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "Netwerkprinters" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Sluiten" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "Lokale printers" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Toevoegen" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Annuleren" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visueel" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Het visuele profiel is ontworpen om visuele prototypen en modellen te printen met als doel een hoge visuele en oppervlaktekwaliteit te creëren." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Het engineeringprofiel is ontworpen om functionele prototypen en onderdelen voor eindgebruik te printen met als doel een grotere precisie en nauwere toleranties." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Ontwerp" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Het ontwerpprofiel is ontworpen om initiële prototypen en conceptvalidatie te printen met als doel de printtijd aanzienlijk te verkorten." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Niet overschreven" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Aangepaste profielen" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Alle Ondersteunde Typen ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Alle Bestanden (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Aangepast materiaal" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Aangepast" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Kan de onderstaande printer(s) niet verbinden omdat deze deel uitmaakt/uitmaken van een groep" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Beschikbare netwerkprinters" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "De hoogte van het bouwvolume is verminderd wegens de waarde van de instelling “Printvolgorde”, om te voorkomen dat de rijbrug tegen geprinte modellen botst." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Werkvolume" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "Kan geen archief maken van gegevensmap van gebruiker: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "Back-up" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "Geprobeerd een Cura-back-up te herstellen zonder correcte gegevens of metadata." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "Geprobeerd een Cura-back-up te herstellen die niet overeenkomt met uw huidige versie." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "Geprobeerd een Cura-back-up te herstellen van een versie die hoger is dan de huidige versie." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "Kan het antwoord niet lezen." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Kan de Ultimaker-accountserver niet bereiken." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Verleen de vereiste toestemmingen toe bij het autoriseren van deze toepassing." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Er heeft een onverwachte gebeurtenis plaatsgevonden bij het aanmelden. Probeer het opnieuw." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Objecten verveelvoudigen en plaatsen" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "Object plaatsen" +msgid "Placing Objects" +msgstr "Objecten plaatsen" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Kan binnen het werkvolume niet voor alle objecten een locatie vinden" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "Object plaatsen" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Nieuwe locatie vinden voor objecten" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "Locatie vinden" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Kan locatie niet vinden" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Cura kan niet worden gestart" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1080,32 +1166,32 @@ msgstr "" "

    Stuur ons dit crashrapport om het probleem op te lossen.

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "Het crashrapport naar Ultimaker verzenden" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "Gedetailleerd crashrapport weergeven" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "Open Configuratiemap" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "Back-up maken en herstellen van configuratie" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Crashrapport" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" @@ -1116,336 +1202,285 @@ msgstr "" "

    Druk op de knop \"Rapport verzenden\" om het foutenrapport automatisch naar onze servers te verzenden

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "Systeeminformatie" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Onbekend" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Cura-versie" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "Platform" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Qt version" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "PyQt version" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "Nog niet geïnitialiseerd
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • OpenGL-versie: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • OpenGL-leverancier: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • OpenGL-renderer: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "Traceback van fout" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "Logboeken" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "Gebruikersbeschrijving" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "Gebruikersbeschrijving (opmerking: ontwikkelaars spreken uw taal mogelijk niet; gebruik indien mogelijk Engels)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Rapport verzenden" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Machines laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Voorkeuren instellen..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Scene instellen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Interface laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Er kan slechts één G-code-bestand tegelijkertijd worden geladen. Het importeren van {0} is overgeslagen" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Kan geen ander bestand openen als G-code wordt geladen. Het importeren van {0} is overgeslagen" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Het geselecteerde model is te klein om te laden." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Machine-instellingen" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Printer" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Printerinstellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (Breedte)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Diepte)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Hoogte)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Vorm van het platform" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "Centraal oorsprongpunt" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "Verwarmd bed" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "Verwarmde werkvolume" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "Versie G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" -msgstr "Instellingen Printkop" +msgstr "Printkopinstellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Afstand van de linkerkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Afstand van de voorkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Afstand van de rechterkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Afstand van de achterkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" -msgstr "Hoogte rijbrug" +msgid "Gantry Height" +msgstr "Rijbrughoogte" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "Het hoogteverschil tussen de punt van de nozzle en het rijbrugsysteem (X- en Y-as). Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en het rijbrugsysteem te voorkomen." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Aantal extruders" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "Start G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "G-code-opdrachten die aan het begin worden uitgevoerd." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "Eind G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "G-code-opdrachten die aan het eind worden uitgevoerd." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Printer" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "Nozzle-instellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Maat nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Compatibele materiaaldiameter" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "De nominale diameter van het filament dat wordt ondersteund door de printer. De exacte diameter wordt overschreven door het materiaal en/of het profiel." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "Nozzle-offset X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Nozzle-offset Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Nummer van koelventilator" -# 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. -# -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-13 17:41+0200\n" -"PO-Revision-Date: 2016-09-29 13:44+0200\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" -msgstr "Start-G-code van Extruder" +msgstr "Start-G-code van extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" -msgstr "Eind-G-code van Extruder" +msgstr "Eind-G-code van extruder" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "Installeren" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Geïnstalleerd" @@ -1455,69 +1490,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Kan geen verbinding maken met de Cura Package-database. Controleer uw verbinding." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "beoordelingen" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Invoegtoepassingen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materialen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "Uw beoordeling" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "Versie" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "Laatst bijgewerkt" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "Auteur" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "Downloads" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Onbekend" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "Aanmelden is vereist voor installeren of bijwerken" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "Materiaalspoelen kopen" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "Bijwerken" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "Bijwerken" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "Bijgewerkt" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "Werkset" +msgid "Marketplace" +msgstr "Marktplaats" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1544,52 +1592,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "Profielen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "Bevestigen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "U moet zich aanmelden voordat u een beoordeling kunt geven" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "U moet het package installeren voordat u een beoordeling kunt geven" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "U moet Cura opnieuw starten voordat wijzigingen in packages van kracht worden." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Cura sluiten" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Community-bijdragen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Community-invoegtoepassingen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Standaard materialen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "Geïnstalleerd" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "Wordt geïnstalleerd na opnieuw starten" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "Aanmelden is vereist voor het bijwerken" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "Downgraden" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "De-installeren" @@ -1610,12 +1673,12 @@ msgstr "" "U moet akkoord gaan met deze licentie om deze invoegtoepassing te mogen installeren.\n" "Gaat u akkoord met de onderstaande voorwaarden?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Ja, ik ga akkoord" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Nee, ik ga niet akkoord" @@ -1625,22 +1688,62 @@ msgctxt "@label" msgid "Featured" msgstr "Functies" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibiliteit" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Machine" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Platform" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Supportstructuur" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Kwaliteit" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "Technisch informatieblad" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "Veiligheidsinformatieblad" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "Richtlijnen voor printen" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "Website" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "Packages ophalen..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "Website" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-mail" @@ -1650,23 +1753,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "In deze print kunnen problemen ontstaan. Klik om tips voor aanpassingen te bekijken." -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Wijzigingenlogboek" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Sluiten" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1742,426 +1828,505 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Firmware-update mislukt door ontbrekende firmware." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "Gebruikersovereenkomst" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Printer beheren" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Bestaande verbinding" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Glas" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "Deze printer/groep is al aan Cura toegevoegd. Selecteer een andere printer/groep." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Werk de firmware van uw printer bij om de wachtrij op afstand te beheren." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "De webcam is niet beschikbaar omdat u een cloudprinter controleert." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "Laden..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "Niet beschikbaar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "Onbereikbaar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "Inactief" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "Zonder titel" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "Anoniem" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "Hiervoor zijn configuratiewijzigingen vereist" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "Details" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "Niet‑beschikbare printer" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "Eerst beschikbaar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "In wachtrij" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "Beheren in browser" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Er staan geen afdruktaken in de wachtrij. Slice een taak en verzend deze om er een toe te voegen." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "Printtaken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "Totale printtijd" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "Wachten op" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Verbinding Maken met Printer in het Netwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"Als u rechtstreeks via het netwerk wilt printen naar de printer, moet u ervoor zorgen dat de printer met een netwerkkabel is verbonden met het netwerk of moet u verbinding maken met de printer via het wifi-netwerk. Als u geen verbinding maakt tussen Cura en de printer, kunt u een USB-station gebruiken om g-code-bestanden naar de printer over te zetten.\n" -"\n" -"Selecteer uw printer in de onderstaande lijst:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Als u rechtstreeks via het netwerk wilt printen naar de printer, moet u ervoor zorgen dat de printer met een netwerkkabel is verbonden met het netwerk of moet u verbinding maken met de printer via het wifi-netwerk. Als u geen verbinding maakt tussen Cura en de printer, kunt u een USB-station gebruiken om G-code-bestanden naar de printer over te zetten." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Toevoegen" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Selecteer uw printer in de onderstaande lijst:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Bewerken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Verwijderen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Vernieuwen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Raadpleeg de handleiding voor probleemoplossing bij printen via het netwerk als uw printer niet in de lijst wordt vermeld" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Type" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Firmwareversie" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Adres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Deze printer is niet ingesteld voor het hosten van een groep printers." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Deze printer is de host voor een groep van %1 printers." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "De printer op dit adres heeft nog niet gereageerd." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Verbinden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Ongeldig IP-adres" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "Voer een geldig IP-adres in." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Printeradres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Voer het IP-adres of de hostnaam van de printer in het netwerk in." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "Voer het IP-adres van uw printer in het netwerk in." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Printen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Printen via netwerk" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "Printerselectie" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "Niet beschikbaar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "Niet bereikbaar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "Beschikbaar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "Afgebroken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Gereed" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "Voorbereiden" +msgid "Preparing..." +msgstr "Voorbereiden..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "Pauzeren" +msgid "Aborting..." +msgstr "Afbreken..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "Hervatten" +msgid "Pausing..." +msgstr "Pauzeren..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "Gepauzeerd" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "Hervatten..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Handeling nodig" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 -msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "Wachten op: Niet-beschikbare printer" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "Voltooit %1 om %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "Wachten op: Eerst beschikbare" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Printen via netwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "Wachten op: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "Configuratiewijziging" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "Voor de toegewezen printer, 1%, is/zijn de volgende configuratiewijziging/configuratiewijzigingen vereist:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "De printer 1% is toegewezen. De taak bevat echter een onbekende materiaalconfiguratie." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "Wijzig het materiaal %1 van %2 in %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "Laad %3 als materiaal %1 (kan niet worden overschreven)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "Wijzig de print core %1 van %2 in %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "Wijzig het platform naar %1 (kan niet worden overschreven)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "Overschrijven" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "Als u een printtaak met een incompatibele configuratie start, kan dit leiden tot schade aan de 3D-printer. Weet u zeker dat u de configuratie en print %1 wilt overschrijven?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "Configuratie overschrijven en printen starten" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "Glas" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "Aluminium" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "Wachtrij beheren" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "In wachtrij" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" msgstr "Printen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "Printers beheren" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 +msgctxt "@label" +msgid "Printer selection" +msgstr "Printerselectie" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "Plaats bovenaan" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "Verwijderen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "Hervatten" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "Pauzeren..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "Hervatten..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "Pauzeren" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "Afbreken..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "Afbreken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "Weet u zeker dat u %1 bovenaan de wachtrij wilt plaatsen?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "Plaats printtaak bovenaan" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "Weet u zeker dat u %1 wilt verwijderen?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "Printtaak verwijderen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "Weet u zeker dat u %1 wilt afbreken?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Printen afbreken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Verbinding maken met een printer" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "Configuratiewijzigingen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Configuratie Activeren" +msgid "Override" +msgstr "Overschrijven" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "De configuratie van de printer in Cura laden" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "Voor de toegewezen printer, %1, is de volgende configuratiewijziging vereist:" +msgstr[1] "Voor de toegewezen printer, %1, zijn de volgende configuratiewijzigingen vereist:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "De printer %1 is toegewezen. De taak bevat echter een onbekende materiaalconfiguratie." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "Wijzig het materiaal %1 van %2 in %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "Laad %3 als materiaal %1 (kan niet worden overschreven)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "Wijzig de print core %1 van %2 in %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "Wijzig het platform naar %1 (kan niet worden overschreven)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "Met het overschrijven worden de opgegeven instellingen gebruikt met de bestaande printerconfiguratie. De print kan hierdoor mislukken." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "Aluminium" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"Controleer of de printer verbonden is:\n" +"- Controleer of de printer ingeschakeld is.\n" +"- Controleer of de printer verbonden is met het netwerk.\n" +"- Controleer of u bent aangemeld om met de cloud verbonden printers te detecteren." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "Verbind uw printer met het netwerk." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "Gebruikershandleidingen online weergegeven" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Kleurenschema" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materiaalkleur" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Lijntype" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Doorvoersnelheid" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Laagdikte" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Compatibiliteitsmodus" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "Bewegingen weergeven" +msgid "Travels" +msgstr "Bewegingen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "Helpers weergeven" +msgid "Helpers" +msgstr "Helpers" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "Shell weergeven" +msgid "Shell" +msgstr "Shell" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "Vulling weergeven" +msgid "Infill" +msgstr "Vulling" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Alleen bovenlagen weergegeven" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "5 gedetailleerde lagen bovenaan weergeven" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Boven-/onderkant" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Binnenwand" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "max." @@ -2176,40 +2341,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Scripts voor Nabewerking" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Een script toevoegen" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Instellingen" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Actieve scripts voor nabewerking wijzigen" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "Meer informatie over anonieme gegevensverzameling" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura verzendt anonieme gegevens naar Ultimaker om de printkwaliteit en gebruikerservaring te verbeteren. Hieronder ziet u een voorbeeld van alle gegevens die worden verzonden." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura verzamelt anonieme gegevens om de printkwaliteit en gebruikerservaring te verbeteren. Hieronder ziet u een voorbeeld van alle gegevens die worden gedeeld:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "Ik wil deze gegevens niet verzenden" +msgid "I don't want to send anonymous data" +msgstr "Ik wil geen anonieme gegevens verzenden" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Verzenden van deze gegevens naar Ultimaker toestaan en ons helpen Cura te verbeteren" +msgid "Allow sending anonymous data" +msgstr "Verzenden van anonieme gegevens toestaan" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2258,19 +2423,19 @@ msgstr "Diepte (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "Standaard staan witte pixels voor hoge en zwarte pixels voor lage punten in het raster. U kunt dit omdraaien, zodat zwarte pixels voor hoge en witte pixels voor lage punten in het raster staan." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Lichter is hoger" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "Bij lithofanen dienen donkere pixels overeen te komen met de dikkere plekken om meer licht tegen te houden. Bij hoogtekaarten geven lichtere pixels hoger terrein aan. Lichtere pixels dienen daarom overeen te komen met dikkere plekken in het gegenereerde 3D-model." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Donkerder is hoger" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Lichter is hoger" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2281,81 +2446,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Effenen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Rastertype" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Normaal model" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Printen als supportstructuur" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Supportstructuur niet laten overlappen met andere modellen" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Instellingen aanpassen voor overlapping met andere modellen" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Instellingen aanpassen voor vulling van andere modellen" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Instellingen selecteren" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Instellingen Selecteren om Dit Model Aan te Passen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filteren..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Alles weergeven" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Rastertype" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Normaal model" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Printen als supportstructuur" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Instellingen aanpassen voor overlapping" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Supportstructuur niet laten overlappen" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Alleen vulling" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Instellingen selecteren" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Project openen" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Bestaand(e) bijwerken" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Nieuw maken" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Samenvatting - Cura-project" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Printerinstellingen" @@ -2371,20 +2535,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Bijwerken" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Nieuw maken" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Type" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "Printergroep" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Profielinstellingen" @@ -2395,225 +2564,221 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Hoe dient het conflict in het profiel te worden opgelost?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Naam" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Niet in profiel" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 overschrijving" msgstr[1] "%1 overschrijvingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Afgeleide van" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 overschrijving" msgstr[1] "%1, %2 overschrijvingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Materiaalinstellingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Hoe dient het materiaalconflict te worden opgelost?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Zichtbaarheid instellen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modus" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Zichtbare instellingen:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 van %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Als u een project laadt, worden alle modellen van het platform gewist." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Openen" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Printerupgrades Selecteren" +msgid "My Backups" +msgstr "Mijn back-ups" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Selecteer eventuele upgrades die op deze Ultimaker 2 zijn uitgevoerd." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "U hebt momenteel geen back-ups. Gebruik de knop 'Nu back-up maken' om een back-up te maken." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson-blok" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "Tijdens de voorbeeldfase zijn er maximaal 5 back-ups zichtbaar. Verwijder een back-up als u oudere back-ups wilt bekijken." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Maak een back-up van uw Cura-instellingen en synchroniseer deze." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "Aanmelden" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Cura-back-ups" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Cura-versie" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "Machines" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "Materialen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "Profielen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "Invoegtoepassingen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "Herstellen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "Back-up verwijderen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "Weet u zeker dat u deze back-up wilt verwijderen? Dit kan niet ongedaan worden gemaakt." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "Back-up herstellen" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "U moet Cura opnieuw starten voordat uw back-up wordt hersteld. Wilt u Cura nu sluiten?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "Wilt u meer?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "Nu back-up maken" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "Auto back-up" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Maak elke dag dat Cura wordt gestart, automatisch een back-up." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Platform Kalibreren" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Je kan nu je platform afstellen, zodat uw prints er altijd fantastisch uitzien. Als u op 'Naar de volgende positie bewegen' klikt, beweegt de nozzle naar de verschillende instelbare posities." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Voor elke positie legt u een stukje papier onder de nozzle en past u de hoogte van het printplatform aan. De hoogte van het printplatform is goed wanneer het papier net door de punt van de nozzle wordt meegenomen." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Kalibratie Platform Starten" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Beweeg Naar de Volgende Positie" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Selecteer eventuele upgrades die op deze Ultimaker Original zijn uitgevoerd" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" -msgstr "Verwarmd Platform (officiële kit of eigenbouw)" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Printer Controleren" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "Het wordt aangeraden een controle uit te voeren op de Ultimaker. U kunt deze stap overslaan als u zeker weet dat de machine correct functioneert" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Printercontrole Starten" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Verbinding: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Aangesloten" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Niet aangesloten" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Min. eindstop X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Werkt" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Niet gecontroleerd" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Min. eindstop Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Min. eindstop Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Temperatuurcontrole nozzle: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Verwarmen Stoppen" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Verwarmen Starten" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Temperatuurcontrole platform:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Gecontroleerd" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Alles is in orde! De controle is voltooid." +msgstr "Verwarmd Platform (officiële kit of zelf gebouwd)" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" @@ -2626,7 +2791,6 @@ msgid "Printer does not accept commands" msgstr "Printer accepteert geen opdrachten" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In onderhoud. Controleer de printer" @@ -2637,19 +2801,16 @@ msgid "Lost connection with the printer" msgstr "Verbinding met de printer is verbroken" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Printen..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Gepauzeerd" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Voorbereiden..." @@ -2669,235 +2830,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Weet u zeker dat u het printen wilt afbreken?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Wijzigingen verwijderen of behouden" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"U hebt enkele profielinstellingen aangepast.\n" -"Wilt u deze instellingen behouden of verwijderen?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Profielinstellingen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Standaard" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Aangepast" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Altijd vragen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Verwijderen en nooit meer vragen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Behouden en nooit meer vragen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Verwijderen" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Behouden" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Nieuw profiel maken" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informatie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Diameterwijziging bevestigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Het nieuwe filament is ingesteld op %1 mm. Dit is niet compatibel met de huidige extruder. Wilt u verder gaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Naam" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Merk" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Type Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Kleur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Eigenschappen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Dichtheid" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diameter" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Kostprijs Filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Gewicht filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Lengte filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Kostprijs per meter" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Dit materiaal is gekoppeld aan %1 en deelt hiermee enkele eigenschappen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Materiaal ontkoppelen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Beschrijving" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Gegevens Hechting" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Instellingen voor printen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Activeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Maken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Dupliceren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Exporteren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Printer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Verwijderen Bevestigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Weet u zeker dat u %1 wilt verwijderen? Deze bewerking kan niet ongedaan worden gemaakt!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Materiaal Importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Kon materiaal %1 niet importeren: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Materiaal %1 is geïmporteerd" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Materiaal Exporteren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Exporteren van materiaal naar %1 is mislukt: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiaal is geëxporteerd naar %1" @@ -2907,669 +3009,521 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Zichtbaarheid Instellen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Alles aanvinken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Berekend" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Instelling" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profiel" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Huidig" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Eenheid" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Algemeen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Interface" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Taal:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Valuta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Thema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "U moet de toepassing opnieuw starten voordat deze wijzigingen van kracht worden." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Automatisch slicen bij wijzigen van instellingen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatisch slicen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Gedrag kijkvenster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Geef niet-ondersteunde gedeelten van het model een rode markering. Zonder ondersteuning zullen deze gedeelten niet goed worden geprint." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Overhang weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Verplaatst de camera zodanig dat wanneer een model wordt geselecteerd, het model in het midden van het beeld wordt weergegeven" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Camera centreren wanneer een item wordt geselecteerd" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Moet het standaard zoomgedrag van Cura worden omgekeerd?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Keer de richting van de camerazoom om." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Moet het zoomen in de richting van de muis gebeuren?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Zoomen in de richting van de muis wordt niet ondersteund in het orthografische perspectief." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomen in de richting van de muis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Moeten modellen op het platform zodanig worden verplaatst dat ze elkaar niet meer doorsnijden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Modellen gescheiden houden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Moeten modellen in het printgebied omlaag worden gebracht zodat ze het platform raken?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Modellen automatisch op het platform laten vallen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Toon het waarschuwingsbericht in de G-code-lezer." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Waarschuwingsbericht in de G-code-lezer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Moet de laag in de compatibiliteitsmodus worden geforceerd?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Compatibiliteitsmodus voor laagweergave forceren (opnieuw opstarten vereist)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Moet Cura openen op de locatie waar het gesloten werd?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Herstel de vensterpositie bij het opstarten" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Welk type cameraweergave moet worden gebruikt?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Cameraweergave:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspectief" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Orthografisch" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Bestanden openen en opslaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Moeten modellen worden geschaald naar het werkvolume als ze te groot zijn?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Grote modellen schalen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Een model wordt mogelijk extreem klein weergegeven als de eenheden bijvoorbeeld in meters zijn in plaats van in millimeters. Moeten dergelijke modellen worden opgeschaald?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Extreem kleine modellen schalen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Moeten modellen worden geselecteerd nadat ze zijn geladen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Modellen selecteren wanneer ze geladen zijn" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Moet er automatisch een op de printernaam gebaseerde voorvoegsel aan de naam van de printtaak worden toegevoegd?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Machinevoorvoegsel toevoegen aan taaknaam" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Dient er een samenvatting te worden weergegeven wanneer een projectbestand wordt opgeslagen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Dialoogvenster voor samenvatting weergeven tijdens het opslaan van een project" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Standaardgedrag tijdens het openen van een projectbestand" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Standaardgedrag tijdens het openen van een projectbestand: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Altijd vragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Altijd als project openen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Altijd modellen importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Wanneer u wijzigingen hebt aangebracht aan een profiel en naar een ander profiel wisselt, wordt een dialoogvenster weergegeven waarin u wordt gevraagd of u de aanpassingen wilt behouden. U kunt ook een standaardgedrag kiezen en het dialoogvenster nooit meer laten weergeven." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profielen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Standaardgedrag voor gewijzigde instellingen wanneer er naar een ander profiel wordt overgeschakeld: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Altijd vragen" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Gewijzigde instellingen altijd verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Gewijzigde instellingen altijd naar nieuw profiel overbrengen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Moet Cura op updates controleren wanneer het programma wordt gestart?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Bij starten op updates controleren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Mogen anonieme gegevens over uw print naar Ultimaker worden verzonden? Opmerking: er worden geen modellen, IP-adressen of andere persoonlijk identificeerbare gegevens verzonden of opgeslagen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonieme) printgegevens verzenden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Meer informatie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "Experimenteel" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Functionaliteit voor meerdere platformen gebruiken" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "Functionaliteit voor meerdere platformen gebruiken (opnieuw opstarten vereist)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Printers" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Hernoemen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Type printer:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Verbinding:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "Er is geen verbinding met de printer." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "Status:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "Wachten op een printtaak" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "Wachten totdat iemand het platform leegmaakt" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Printen afbreken..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profielen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Maken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Dupliceren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Profiel Maken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "Geef een naam op voor dit profiel." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Profiel Dupliceren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Profiel Hernoemen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Profiel Importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Profiel Exporteren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Printer: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Beschermde profielen" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Aangepaste profielen" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Profiel bijwerken met huidige instellingen/overschrijvingen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Huidige wijzigingen verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Dit profiel gebruikt de standaardinstellingen die door de printer zijn opgegeven, dus er zijn hiervoor geen instellingen/overschrijvingen in de onderstaande lijst." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Uw huidige instellingen komen overeen met het geselecteerde profiel." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Algemene Instellingen" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Printer Toevoegen" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Printernaam:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Printer Toevoegen" +msgid "Marketplace" +msgstr "Marktplaats" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&Bestand" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "B&ewerken" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "Beel&d" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "In&stellingen" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "E&xtensies" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "Voo&rkeuren" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "&Help" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Nieuw project" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Weet u zeker dat u een nieuw project wilt starten? Hiermee wordt het platform leeggemaakt en worden eventuele niet-opgeslagen instellingen verwijderd." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "Zonder titel" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "Over Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "versie: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "End-to-end-oplossing voor fused filament 3D-printen." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura is ontwikkeld door Ultimaker B.V. in samenwerking met de community.\n" -"Cura maakt met trots gebruik van de volgende opensourceprojecten:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Grafische gebruikersinterface (GUI)" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Toepassingskader" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "G-code-generator" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "InterProcess Communication-bibliotheek" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Programmeertaal" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUI-kader" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "Bindingen met GUI-kader" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "Bindingenbibliotheek C/C++" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Indeling voor gegevensuitwisseling" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Ondersteuningsbibliotheek voor wetenschappelijke berekeningen" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Ondersteuningsbibliotheek voor snellere berekeningen" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Ondersteuningsbibliotheek voor het verwerken van STL-bestanden" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "Ondersteuningsbibliotheek voor het verwerken van tweedimensionale objecten" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "Ondersteuningsbibliotheek voor het verwerken van driehoekig rasters" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "Ondersteuningsbibliotheek voor de analyse van complexe netwerken" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Ondersteuningsbibliotheek voor het verwerken van 3MF-bestanden" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "Ondersteuningsbibliotheek voor bestandsmetadata en streaming" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Seriële-communicatiebibliotheek" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "ZeroConf-detectiebibliotheek" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Bibliotheek met veelhoeken" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Python HTTP-bibliotheek" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Lettertype" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "SVG-pictogrammen" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Implementatie van Linux-toepassing voor kruisdistributie" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Profiel:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Sommige waarden of aanpassingen van instellingen zijn anders dan de waarden die in het profiel zijn opgeslagen.\n" -"\n" -"Klik om het profielbeheer te openen." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Zoeken..." +msgid "Search settings" +msgstr "instellingen zoeken" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Waarde naar alle extruders kopiëren" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Alle gewijzigde waarden naar alle extruders kopiëren" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Deze instelling zichtbaar houden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Zichtbaarheid Instelling Configureren..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "Alles samenvouwen" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "Alles uitvouwen" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3580,27 +3534,32 @@ msgstr "" "\n" "Klik om deze instellingen zichtbaar te maken." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "Deze instelling wordt niet gebruikt omdat alle instellingen waarop deze invloed heeft, worden overschreven." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Beïnvloedt" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Beïnvloed door" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Deze instelling wordt altijd door alle extruders gedeeld. Als u hier de instelling wijzigt, wordt de waarde voor alle extruders gewijzigd." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "De waarde wordt afgeleid van de waarden per extruder " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3611,7 +3570,7 @@ msgstr "" "\n" "Klik om de waarde van het profiel te herstellen." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3622,116 +3581,212 @@ msgstr "" "\n" "Klik om de berekende waarde te herstellen." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "Aanbevolen" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "Aangepast" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "Geleidelijke vulling" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "Met geleidelijke vulling neemt de hoeveelheid vulling naar boven toe." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "Supportstructuur" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Genereer structuren om delen van het model met overhang te ondersteunen. Zonder deze structuren zakken dergelijke delen in tijdens het printen." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "Hechting" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Het printen van een brim of raft inschakelen. Deze optie zorgt ervoor dat er extra materiaal rondom of onder het object wordt neergelegd, dat er naderhand eenvoudig kan worden afgesneden." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "U hebt enkele profielinstellingen aangepast. Ga naar de aangepaste modus als u deze wilt wijzigen." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "Aan" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "Uit" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimenteel" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "Profiel" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Sommige waarden of aanpassingen van instellingen zijn anders dan de waarden die in het profiel zijn opgeslagen.\n" +"\n" +"Klik om het profielbeheer te openen." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Aangepaste profielen" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "De printinstelling is uitgeschakeld. Het G-code-bestand kan niet worden gewijzigd." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "Printerbediening" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "Jog-positie" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "Jog-afstand" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "G-code verzenden" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "Verzend een aangepaste G-code-opdracht naar de verbonden printer. Druk op Enter om de opdracht te verzenden." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extruder" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "De doeltemperatuur van de hot-end. De hot-end wordt verwarmd of afgekoeld totdat deze temperatuur bereikt is. Als deze waarde ingesteld is op 0, wordt de verwarming van de hot-end uitgeschakeld." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "De huidige temperatuur van dit hotend." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "De temperatuur waarnaar het hotend moet worden voorverwarmd." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annuleren" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Voorverwarmen" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Verwarm het hotend voordat u gaat printen. U kunt doorgaan met het aanpassen van uw print terwijl het hotend wordt verwarmd. Zo hoeft u niet te wachten totdat het hotend is opgewarmd wanneer u gereed bent om te printen." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "De kleur van het materiaal in deze extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Het materiaal in deze extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "De nozzle die in deze extruder geplaatst is." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "Er is geen verbinding met de printer." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Platform" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "De doeltemperatuur van het verwarmde bed. Het bed wordt verwarmd of afgekoeld totdat deze temperatuur bereikt is. Als deze waarde ingesteld is op 0, wordt de verwarming van het bed uitgeschakeld." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "De huidige temperatuur van het verwarmde bed." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "De temperatuur waarnaar het bed moet worden voorverwarmd." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Verwarm het bed voordat u gaat printen. U kunt doorgaan met het aanpassen van uw print terwijl het bed wordt verwarmd. Zo hoeft u niet te wachten totdat het bed opgewarmd is wanneer u gereed bent om te printen." @@ -3741,12 +3796,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favorieten" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Standaard" @@ -3761,17 +3816,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "Lokale printers" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "Beel&d" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "&Printer" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&Materiaal" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Instellen als Actieve Extruder" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "Extruder inschakelen" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "Extruder uitschakelen" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Camerapositie" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Camerabeeld" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Perspectief" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Orthografisch" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "&Platform" @@ -3791,6 +3881,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Instelling voor zichtbaarheid beheren..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "&Opslaan..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&Exporteren..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "Selectie Exporteren..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3810,656 +3915,509 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Aantal exemplaren" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "Beschikbare configuraties" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "Configuraties" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "Extruder" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "Configuratie selecteren" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "Ja" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "Configuraties" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "Nee" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "Beschikbare configuraties laden vanaf de printer..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "De configuraties zijn niet beschikbaar omdat de printer niet verbonden is." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "Aangepast" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "Printer" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "Ingeschakeld" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Materiaal" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "Gebruik lijm bij deze combinatie van materialen voor een betere hechting." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "Deze configuratie is niet beschikbaar omdat %1 niet wordt herkend. Ga naar %2 om het juiste materiaalprofiel te downloaden." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "Marktplaats" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "&Recente bestanden openen" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Instelling voor Printen" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"Instelling voor printen uitgeschakeld\n" -"G-code-bestanden kunnen niet worden aangepast" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00u 00min" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "Tijdspecificatie" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "Kostenspecificatie" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1 m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1 g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "Totaal:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Aanbevolen instellingen voor printen

    Print met de aanbevolen instellingen voor de geselecteerde printer en kwaliteit, en het geselecteerde materiaal." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Aangepaste instellingen voor printen

    Print met uiterst precieze controle over elk detail van het slice-proces." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Actieve print" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Taaknaam" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Printtijd" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Geschatte resterende tijd" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "Type weergeven" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Lijst met objecten" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "Hallo %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Ultimaker-account" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "Afmelden" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "Aanmelden" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "De 3D-printworkflow van de volgende generatie" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- Printtaken verzenden naar Ultimaker-printers buiten uw lokale netwerk\n" +"- Ultimaker Cura-instellingen opslaan in de cloud zodat u ze overal kunt gebruiken\n" +"- Exclusieve toegang verkrijgen tot printprofielen van toonaangevende merken" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "Account maken" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "Geen tijdschatting beschikbaar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "Geen kostenraming beschikbaar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "Voorbeeld" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "Slicen..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "Kan niet slicen" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "Verwerken" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "Slicen" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "Het sliceproces starten" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "Annuleren" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "Tijdschatting" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "Materiaalschatting" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "Verbonden printers" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "Vooraf ingestelde printers" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "Printer toevoegen" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "Printers beheren" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "Online gids voor probleemoplossing weergegeven" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Volledig Scherm In-/Uitschakelen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Volledig scherm sluiten" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Ongedaan &Maken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Opnieuw" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Afsluiten" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "3D-weergave" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "Weergave voorzijde" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "Weergave bovenzijde" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "Weergave linkerzijde" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "Weergave rechterzijde" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura Configureren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Printer Toevoegen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Pr&inters Beheren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Materialen Beheren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "Profiel bijwerken met h&uidige instellingen/overschrijvingen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "Hui&dige wijzigingen verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "Profiel maken op basis van huidige instellingen/overs&chrijvingen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profielen Beheren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Online &Documentatie Weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Een &Bug Rapporteren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "Nieuwe functies" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "Over..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "Geselecteerd model verwijderen" msgstr[1] "Geselecteerde modellen verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Geselecteerd model centreren" msgstr[1] "Geselecteerde modellen centreren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Geselecteerd model verveelvoudigen" msgstr[1] "Geselecteerde modellen verveelvoudigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Model Verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Model op Platform Ce&ntreren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Modellen &Groeperen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Groeperen van Modellen Opheffen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Modellen Samen&voegen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Model verveelvoudigen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Alle Modellen Selecteren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Platform Leegmaken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Alle Modellen Opnieuw Laden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "Alle modellen schikken op alle platformen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Alle modellen schikken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Selectie schikken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Alle Modelposities Herstellen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Alle Modeltransformaties Herstellen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "Bestand(en) &openen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nieuw project..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Engine-&logboek Weergeven..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Open Configuratiemap" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "Door packages bladeren..." +msgid "&Marketplace" +msgstr "&Marktplaats" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "Zijbalk uitbreiden/samenvouwen" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Laad een 3D-model" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Gereed om te slicen" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Slicen..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Gereed voor %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Kan Niet Slicen" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Slicen is niet beschikbaar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "Huidige printtaak slicen" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "Slicen annuleren" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Voorbereiden" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Annuleren" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Actief Uitvoerapparaat Selecteren" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Bestand(en) openen" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Binnen de door u geselecteerde bestanden zijn een of meer projectbestanden aangetroffen. U kunt slechts één projectbestand tegelijk openen. Het wordt aangeraden alleen modellen uit deze bestanden te importeren. Wilt u verdergaan?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Allemaal als model importeren" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&Bestand" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "&Opslaan..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&Exporteren..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "Selectie Exporteren..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "B&ewerken" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "Beel&d" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "In&stellingen" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "&Printer" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Materiaal" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Instellen als Actieve Extruder" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "Extruder inschakelen" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "Extruder uitschakelen" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Platform" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profiel" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "E&xtensies" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "Werkse&t" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "Voo&rkeuren" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "&Help" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Dit package wordt na opnieuw starten geïnstalleerd." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Bestand Openen" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Instellingen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Nieuw project" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Weet u zeker dat u een nieuw project wilt starten? Hiermee wordt het platform leeggemaakt en worden eventuele niet-opgeslagen instellingen verwijderd." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura afsluiten" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Weet u zeker dat u Cura wilt verlaten?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Bestand(en) openen" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Package installeren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Bestand(en) openen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Binnen de door u geselecteerde bestanden zijn een of meer G-code-bestanden aangetroffen. U kunt maximaal één G-code-bestand tegelijk openen. Selecteer maximaal één bestand als u dit wilt openen als G-code-bestand." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Project opslaan" +msgid "Add Printer" +msgstr "Printer Toevoegen" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Platform" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Extruder %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 &materiaal" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Bij opnieuw opslaan projectsamenvatting niet weergeven" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Opslaan" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Laaghoogte" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "Dit kwaliteitsprofiel is niet beschikbaar voor uw huidige materiaal- en nozzleconfiguratie. Breng hierin wijzigingen aan om gebruik van dit kwaliteitsprofiel mogelijk te maken" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Er is momenteel een aangepast profiel actief. Als u de kwaliteitsschuifregelaar wilt gebruiken, kiest u een standaard kwaliteitsprofiel op het tabblad Aangepast" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Printsnelheid" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Langzamer" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Sneller" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "U hebt enkele profielinstellingen aangepast. Ga naar de aangepaste modus als u deze wilt wijzigen." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Vulling" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Met geleidelijke vulling neemt de hoeveelheid vulling naar boven toe." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Geleidelijke vulling" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Support genereren" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Genereer structuren om delen van het model met overhang te ondersteunen. Zonder deze structuren zakken dergelijke delen in tijdens het printen." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Selecteren welke extruder voor support wordt gebruikt. Deze optie zorgt ervoor dat onder het model ondersteuning wordt geprint, om te voorkomen dat dit doorzakt of dat er midden in de lucht moet worden geprint." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Hechting aan platform" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Het printen van een brim of raft inschakelen. Deze optie zorgt ervoor dat er extra materiaal rondom of onder het object wordt neergelegd, dat er naderhand eenvoudig kan worden afgesneden." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "Hebt u hulp nodig om betere prints te krijgen?
    Lees de Ultimaker Troubleshooting Guides (Handleiding voor probleemoplossing)" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "Nieuwe functies" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4468,75 +4426,503 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "Geselecteerd model printen met %1" msgstr[1] "Geselecteerde modellen printen met %1" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Wijzigingen verwijderen of behouden" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"U hebt enkele profielinstellingen aangepast.\n" +"Wilt u deze instellingen behouden of verwijderen?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Profielinstellingen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Standaard" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Aangepast" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Verwijderen en nooit meer vragen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Behouden en nooit meer vragen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Verwijderen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Behouden" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Nieuw profiel maken" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Over Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "versie: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "End-to-end-oplossing voor fused filament 3D-printen." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura is ontwikkeld door Ultimaker B.V. in samenwerking met de community.\n" +"Cura maakt met trots gebruik van de volgende opensourceprojecten:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Grafische gebruikersinterface (GUI)" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Toepassingskader" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "G-code-generator" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "InterProcess Communication-bibliotheek" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Programmeertaal" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUI-kader" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "Bindingen met GUI-kader" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "Bindingenbibliotheek C/C++" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Indeling voor gegevensuitwisseling" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Ondersteuningsbibliotheek voor wetenschappelijke berekeningen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Ondersteuningsbibliotheek voor snellere berekeningen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Ondersteuningsbibliotheek voor het verwerken van STL-bestanden" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "Ondersteuningsbibliotheek voor het verwerken van tweedimensionale objecten" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "Ondersteuningsbibliotheek voor het verwerken van driehoekig rasters" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "Ondersteuningsbibliotheek voor de analyse van complexe netwerken" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Ondersteuningsbibliotheek voor het verwerken van 3MF-bestanden" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "Ondersteuningsbibliotheek voor bestandsmetadata en streaming" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Seriële-communicatiebibliotheek" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "ZeroConf-detectiebibliotheek" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Bibliotheek met veelhoeken" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTP-bibliotheek" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Lettertype" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVG-pictogrammen" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Implementatie van Linux-toepassing voor kruisdistributie" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Binnen de door u geselecteerde bestanden zijn een of meer projectbestanden aangetroffen. U kunt slechts één projectbestand tegelijk openen. Het wordt aangeraden alleen modellen uit deze bestanden te importeren. Wilt u verdergaan?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Allemaal als model importeren" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Project opslaan" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Extruder %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 &materiaal" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "Materiaal" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Bij opnieuw opslaan projectsamenvatting niet weergeven" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Opslaan" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Projectbestand openen" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Dit is een Cura-projectbestand. Wilt u dit openen als project of de modellen eruit importeren?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Mijn keuze onthouden" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Openen als project" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Modellen importeren" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Engine-logboek" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "Type printer" +msgid "Empty" +msgstr "Leeg" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Materiaal" +msgid "Add a printer" +msgstr "Een printer toevoegen" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "Gebruik lijm bij deze combinatie van materialen" +msgid "Add a networked printer" +msgstr "Een netwerkprinter toevoegen" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "Compatibiliteit controleren" +msgid "Add a non-networked printer" +msgstr "Een niet-netwerkprinter toevoegen" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Klik om de materiaalcompatibiliteit te controleren op Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "Een printer toevoegen op IP-adres" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Alleen huidig platform weergeven" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Voer het IP-adres van uw printer in." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Schikken naar alle platformen" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Toevoegen" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Huidig platform schikken" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "Kan geen verbinding maken met het apparaat." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "De printer op dit adres heeft nog niet gereageerd." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "Kan de printer niet toevoegen omdat het een onbekende printer is of omdat het niet de host in een groep is." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "Terug" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "Verbinding maken" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "Volgende" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "Gebruikersovereenkomst" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "Akkoord" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "Afwijzen en sluiten" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Help ons Ultimaker Cura te verbeteren" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura verzamelt anonieme gegevens om de printkwaliteit en gebruikerservaring te verbeteren, waaronder:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "Machinetypen" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "Materiaalgebruik" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "Aantal slices" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "Instellingen voor printen" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "De gegevens die Ultimaker Cura verzamelt, bevatten geen persoonlijke informatie." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "Meer informatie" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Nieuwe functies in Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "Kan in uw netwerk geen printer vinden." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "Vernieuwen" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "Printer toevoegen op IP" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "Probleemoplossing" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "Printernaam" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "Voer een naam in voor uw printer" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "De 3D-printworkflow van de volgende generatie" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- Printtaken verzenden naar Ultimaker-printers buiten uw lokale netwerk" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Ultimaker Cura-instellingen opslaan in de cloud zodat u ze overal kunt gebruiken" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- Exclusieve toegang tot printprofielen van toonaangevende merken" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "Voltooien" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "Een account maken" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Welkom bij Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"Volg deze stappen voor het instellen van\n" +"Ultimaker Cura. Dit duurt slechts even." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "Aan de slag" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3D-weergave" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Weergave voorzijde" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Weergave bovenzijde" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Linkeraanzicht" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Rechteraanzicht" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4598,26 +4984,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Modelcontrole" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Dump de inhoud van alle instellingen naar een HTML-bestand." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Godmodus" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Hiermee geeft u de wijzigingen weer ten opzichte van de laatst gecontroleerde versie." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Wijzigingenlogboek" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4628,15 +4994,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Firmware-updater" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Hiermee maakt u een afgevlakte versie van het gewijzigde profiel." +msgid "Provides support for reading AMF files." +msgstr "Biedt ondersteuning voor het lezen van AMF-bestanden." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Profielvlakker" +msgid "AMF Reader" +msgstr "AMF-lezer" #: USBPrinting/plugin.json msgctxt "description" @@ -4648,26 +5014,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB-printen" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "Vraag de gebruiker één keer of deze akkoord gaat met de licentie." - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "UserAgreement" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Hiermee slaat u de resulterende slice op als X3G-bestand, om printers te ondersteunen die deze indeling lezen (Malyan, Makerbot en andere Sailfish-gebaseerde printers)." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3G-schrijver" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4710,13 +5056,13 @@ msgstr "Invoegtoepassing voor Verwijderbaar uitvoerapparaat" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Hiermee beheert u netwerkverbindingen naar Ultimaker 3-printers." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Hiermee beheert u netwerkverbindingen naar Ultimaker-netwerkprinters." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3-netwerkverbinding" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker-netwerkverbinding" #: MonitorStage/plugin.json msgctxt "description" @@ -4778,6 +5124,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Supportwisser" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Deze optie biedt ondersteuning voor het lezen van Ultimaker Format Packages." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "UFP-lezer" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4838,6 +5194,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Versie-upgrade van 3.3 naar 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 4.3 naar Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Versie-upgrade van 4.3 naar 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4858,6 +5224,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Versie-upgrade van 2.7 naar 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 3.5 naar Cura 4.0." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "Versie-upgrade van 3.5 naar 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4868,6 +5244,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "Versie-upgrade van 3.4 naar 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 4.0 naar Cura 4.1." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "Versie-upgrade van 4.0 naar 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4878,6 +5264,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Versie-upgrade van 3.0 naar 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 4.1 naar Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Versie-upgrade van 4.1 naar 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4908,6 +5304,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Versie-upgrade van 2.2 naar 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 4.2 naar Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Versie-upgrade van 4.2 naar 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4918,6 +5324,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Afbeeldinglezer" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Biedt ondersteuning voor het lezen van modelbestanden." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh-lezer" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4968,6 +5384,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "G-code-lezer" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "Een back-up maken van uw configuratie en deze herstellen." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Cura-back-ups" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4988,6 +5414,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF-schrijver" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Deze optie biedt een voorbeeldstadium in Cura." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "Voorbeeldstadium" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -5008,9 +5444,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-profiellezer" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "Genereer G-code voordat u het bestand opslaat." +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Actieve instellingen platmaken" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Profiel is platgemaakt en geactiveerd." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Schrijft X3g naar bestanden" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g-bestand" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G-bestand" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Gecomprimeerde driehoeksnet openen" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -5020,6 +5476,1032 @@ msgstr "Cura-profiellezer" #~ msgid "Profile Assistant" #~ msgstr "Profielassistent" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Opnieuw proberen" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Supportstructuur niet laten overlappen met andere modellen" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Instellingen aanpassen voor overlapping met andere modellen" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Instellingen aanpassen voor vulling van andere modellen" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Bestaand(e) bijwerken" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Niet ondersteund" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Vorige" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Tip" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Print experiment" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Checklist" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Selecteer eventuele upgrades die op deze Ultimaker 2 zijn uitgevoerd." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson-blok" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Cameraweergave: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Functionaliteit voor meerdere platformen gebruiken" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Functionaliteit voor meerdere platformen gebruiken (opnieuw opstarten vereist)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Standaardprofielen" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "instellingen zoeken" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Laaghoogte" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Dit kwaliteitsprofiel is niet beschikbaar voor uw huidige materiaal- en nozzleconfiguratie. Breng hierin wijzigingen aan om gebruik van dit kwaliteitsprofiel mogelijk te maken." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Er is momenteel een aangepast profiel actief. Als u de kwaliteitsschuifregelaar wilt gebruiken, kiest u een standaard kwaliteitsprofiel op het tabblad Aangepast" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Platform" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profiel" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Platform" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Dump de inhoud van alle instellingen naar een HTML-bestand." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Godmodus" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Hiermee maakt u een afgevlakte versie van het gewijzigde profiel." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Profielvlakker" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Maakt het fabrikanten mogelijk nieuwe materiaal- en kwaliteitsprofielen aan te maken met behulp van een drop-in-gebruikersinterface." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Profielassistent afdrukken" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Via het netwerk verbonden." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Via het netwerk verbonden. Keur de aanvraag goed op de printer." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Via het netwerk verbonden. Kan de printer niet beheren." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Er is een toegangsaanvraag voor de printer verstuurd. Keur de aanvraag goed op de printer" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Verificatiestatus" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Verificatiestatus" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "De toegangsaanvraag opnieuw verzenden" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Toegang tot de printer is geaccepteerd" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Kan geen toegang verkrijgen om met deze printer te printen. Kan de printtaak niet verzenden." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Toegang aanvragen" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Toegangsaanvraag naar de printer verzenden" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Er kan geen nieuwe taak worden gestart." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Er is een probleem met de configuratie van de Ultimaker waardoor het niet mogelijk is het printen te starten. Los het probleem op voordat u verder gaat." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "De configuratie komt niet overeen" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Weet u zeker dat u met de geselecteerde configuratie wilt printen?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "De configuratie of kalibratie van de printer komt niet overeen met de configuratie van Cura. Slice voor het beste resultaat altijd voor de PrintCores en materialen die in de printer zijn ingevoerd." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Het verzenden van nieuwe taken is (tijdelijk) geblokkeerd. Nog bezig met het verzenden van de vorige printtaak." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "De gegevens worden naar de printer verzonden" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Gegevens Verzenden" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Er is geen PrintCore geladen in de sleuf {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Er is geen materiaal geladen in de sleuf {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "Er is een afwijkende PrintCore (Cura: {cura_printcore_name}, printer: {remote_printcore_name}) geselecteerd voor de extruder {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Afwijkend materiaal (Cura: {0}, Printer: {1}) geselecteerd voor de extruder {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Synchroniseren met de printer" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Wilt u uw huidige printerconfiguratie gebruiken in Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "De PrintCores en/of materialen in de printer wijken af van de PrintCores en/of materialen in uw huidige project. Slice voor het beste resultaat altijd voor de PrintCores en materialen die in de printer zijn ingevoerd." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "In monitor weergeven" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "Printer '{printer_name}' is klaar met het printen van '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "De printtaak '{job_name}' is voltooid." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Print klaar" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Leeg" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Onbekend" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Cloud-fout" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Kan de printtaak niet exporteren." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Er is een fout opgetreden tijdens het verbinden met de cloud." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Uploaden via Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Verbinden met Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Niet opnieuw vragen voor deze printer." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "U kunt nu overal vandaan printtaken verzenden en controleren met uw Ultimaker-account." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Verbonden!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Uw verbinding controleren" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "De machine die is vastgelegd in het profiel {0} ({1}), komt niet overeen met uw huidige machine ({2}). Kan het profiel niet importeren." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Kan het profiel niet importeren uit {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Bestaande verbinding" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Deze printer/groep is al aan Cura toegevoegd. Selecteer een andere printer/groep." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Voer het IP-adres of de hostnaam van de printer in het netwerk in." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Verbinding maken met een printer" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura-instellingengids" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Zoomen in de richting van de muis wordt niet ondersteund in het orthogonale perspectief." + +#~ msgid "Orthogonal" +#~ msgstr "Orthografisch" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Hiermee beheert u netwerkverbindingen naar Ultimaker 3-printers." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3-netwerkverbinding" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Biedt extra informatie en uitleg over instellingen in Cura, voorzien van afbeeldingen en animaties." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Instellingengids" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura-instellingengids" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "De instellingen zijn gewijzigd zodat deze overeenkomen met de huidige beschikbaarheid van de extruders: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Gebruikersbeschrijving" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Deze opties zijn niet beschikbaar omdat u een cloudprinter controleert." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Ga naar Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Alle taken zijn geprint." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Printgeschiedenis weergeven" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Als u rechtstreeks via het netwerk wilt printen naar de printer, moet u ervoor zorgen dat de printer met een netwerkkabel is verbonden met het netwerk of moet u verbinding maken met de printer via het wifi-netwerk. Als u geen verbinding maakt tussen Cura en de printer, kunt u een USB-station gebruiken om G-code-bestanden naar de printer over te zetten.\n" +#~ "\n" +#~ "Selecteer uw printer in de onderstaande lijst:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Controleer of de printer verbonden is:\n" +#~ "- Controleer of de printer ingeschakeld is.\n" +#~ "- Controleer of de printer verbonden is met het netwerk." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Alleen huidig platform weergeven" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Schikken naar alle platformen" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Huidig platform schikken" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Hiermee slaat u de resulterende slice op als X3G-bestand, om printers te ondersteunen die deze indeling lezen (Malyan, Makerbot en andere Sailfish-gebaseerde printers)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3G-schrijver" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Hiermee leest u SVG-bestanden als gereedschapsbanen, voor probleemoplossing in printerverplaatsingen." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG-gereedschapsbaanlezer" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Wijzigingenlogboek" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Wijzigingenlogboek Weergeven" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "Gegevens naar een extern cluster verzenden" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Verbinden met Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura verzamelt geanonimiseerde gebruiksstatistieken." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "Gegevens verzamelen" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "Meer informatie" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Lees meer over welke gegevens Cura verzendt." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "Toestaan" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Cura toestaan geanonimiseerde gebruiksstatistieken te verzenden om toekomstige verbeteringen aan Cura te helpen prioriteren. Onder de verzonden gegevens bevindt zich informatie over uw voorkeuren en instellingen, de Cura-versie en een selectie van de modellen die u slicet." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "Evaluatie" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "Netwerkprinters" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "Lokale printers" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "Geprobeerd een Cura-back-up te herstellen die niet overeenkomt met uw huidige versie." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Machine-instellingen" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Printerinstellingen" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Centraal oorsprongpunt" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Verwarmd bed" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Instellingen Printkop" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Afstand van de linkerkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Afstand van de voorkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Afstand van de rechterkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Afstand van de achterkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Hoogte rijbrug" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "Het hoogteverschil tussen de punt van de nozzle en het rijbrugsysteem (X- en Y-as). Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en het rijbrugsysteem te voorkomen." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "Start G-code" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "G-code-opdrachten die aan het begin worden uitgevoerd." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "Eind G-code" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "G-code-opdrachten die aan het eind worden uitgevoerd." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Nozzle-instellingen" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "De nominale diameter van het filament dat wordt ondersteund door de printer. De exacte diameter wordt overschreven door het materiaal en/of het profiel." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "Start-G-code van Extruder" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "Eind-G-code van Extruder" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Wijzigingenlogboek" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "Gebruikersovereenkomst" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Voer het IP-adres of de hostnaam van de printer in het netwerk in." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "Selecteer een met een netwerk verbonden printer om te controleren." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Verbind uw Ultimaker-printer met uw lokale netwerk." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura verzendt anonieme gegevens naar Ultimaker om de printkwaliteit en gebruikerservaring te verbeteren. Hieronder ziet u een voorbeeld van alle gegevens die worden verzonden." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "Ik wil deze gegevens niet verzenden" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Verzenden van deze gegevens naar Ultimaker toestaan en ons helpen Cura te verbeteren" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "Er is geen print geselecteerd" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "Standaard staan witte pixels voor hoge en zwarte pixels voor lage punten in het raster. U kunt dit omdraaien, zodat zwarte pixels voor hoge en witte pixels voor lage punten in het raster staan." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Printerupgrades Selecteren" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Selecteren welke extruder voor support wordt gebruikt. Deze optie zorgt ervoor dat onder het model ondersteuning wordt geprint, om te voorkomen dat dit doorzakt of dat er midden in de lucht moet worden geprint." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Dit kwaliteitsprofiel is niet beschikbaar voor uw huidige materiaal- en nozzleconfiguratie. Breng hierin wijzigingen aan om gebruik van dit kwaliteitsprofiel mogelijk te maken" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "Printinstelling is uitgeschakeld. Het G-code-bestand kan niet worden gewijzigd." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "Zie de materiaalcompatibiliteitsgrafiek" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "Typen weergeven" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "Hallo " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- Printtaken verzenden naar Ultimaker-printers buiten uw lokale netwerk\n" +#~ "- Ultimaker Cura-instellingen opslaan in de cloud zodat u ze overal kunt gebruiken\n" +#~ "- Exclusieve toegang verkrijgen tot materiaalprofielen van toonaangevende merken" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "Kan Niet Slicen" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "Tijdspecificatie" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "Materiaalspecificatie" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Een printer aan Cura toevoegen" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "Selecteer de printer die u wilt gebruiken, uit de onderstaande lijst.\n" +#~ "\n" +#~ "Als uw printer niet in de lijst wordt weergegeven, gebruikt u de 'Custom FFF Printer' (Aangepaste FFF-printer) uit de categorie 'Custom' (Aangepast) en past u in het dialoogvenster dat wordt weergegeven, de instellingen aan zodat deze overeenkomen met uw printer." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "Fabrikant" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "Printernaam" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Printer Toevoegen" + +#~ msgid "Modify G-Code" +#~ msgstr "G-code wijzigen" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "Er valt niets te slicen omdat geen van de modellen in het bouwvolume past. Schaal of roteer de modellen totdat deze passen." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "Het geselecteerde materiaal is niet compatibel met de geselecteerde machine of configuratie." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Niet-compatibel materiaal" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Kan het profiel niet importeren uit {0}: {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "Werkset" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "Niet beschikbaar" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "Niet bereikbaar" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "Beschikbaar" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Voorbereiden" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "Pauzeren" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "Hervatten" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "Wachten op: Niet-beschikbare printer" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "Wachten op: Eerst beschikbare" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "Wachten op: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "Configuratiewijziging" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "Voor de toegewezen printer, %1, is/zijn de volgende configuratiewijziging/configuratiewijzigingen vereist:" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "Overschrijven" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "Als u een printtaak met een incompatibele configuratie start, kan dit leiden tot schade aan de 3D-printer. Weet u zeker dat u de configuratie en print %1 wilt overschrijven?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "Configuratie overschrijven en printen starten" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "Wachtrij beheren" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "Printen" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "Printers beheren" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Configuratie Activeren" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "De configuratie van de printer in Cura laden" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Bewegingen weergeven" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Helpers weergeven" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Shell weergeven" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Vulling weergeven" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "Ik wil deze gegevens niet verzenden" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Verzenden van deze gegevens naar Ultimaker toestaan en ons helpen Cura te verbeteren" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Type printer:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Verbinding:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "Status:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "Wachten op een printtaak" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "Wachten totdat iemand het platform leegmaakt" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "Printen afbreken..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Beschermde profielen" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Printernaam:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Profiel:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Zoeken..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "Alles samenvouwen" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "Alles uitvouwen" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "Beschikbare configuraties" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "Extruder" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "Nee" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Instelling voor Printen" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Instelling voor printen uitgeschakeld\n" +#~ "G-code-bestanden kunnen niet worden aangepast" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00u 00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "Tijdspecificatie" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "Kostenspecificatie" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "Totaal:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Aanbevolen instellingen voor printen

    Print met de aanbevolen instellingen voor de geselecteerde printer en kwaliteit, en het geselecteerde materiaal." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Aangepaste instellingen voor printen

    Print met uiterst precieze controle over elk detail van het slice-proces." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "Engine-&logboek Weergeven..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "Door packages bladeren..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "Zijbalk uitbreiden/samenvouwen" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Laad een 3D-model" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Gereed om te slicen" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "Gereed voor %1" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "Slicen is niet beschikbaar" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "Huidige printtaak slicen" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "Slicen annuleren" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Voorbereiden" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Actief Uitvoerapparaat Selecteren" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "Beel&d" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "In&stellingen" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "Werkse&t" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Bestand Openen" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Dit kwaliteitsprofiel is niet beschikbaar voor uw huidige materiaal- en nozzleconfiguratie. Breng hierin wijzigingen aan om gebruik van dit kwaliteitsprofiel mogelijk te maken" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Printsnelheid" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Langzamer" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Sneller" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Geleidelijke vulling" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Support genereren" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Hechting aan platform" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "Hebt u hulp nodig om betere prints te krijgen?
    Lees de Ultimaker Troubleshooting Guides (Handleiding voor probleemoplossing)" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Engine-logboek" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "Type printer" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "Gebruik lijm bij deze combinatie van materialen" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Compatibiliteit controleren" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Klik om de materiaalcompatibiliteit te controleren op Ultimaker.com." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Hiermee geeft u de wijzigingen weer ten opzichte van de laatst gecontroleerde versie." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Wijzigingenlogboek" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Hiermee maakt u een afgevlakte versie van het gewijzigde profiel." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Profielvlakker" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "Vraag de gebruiker één keer of deze akkoord gaat met de licentie." + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "UserAgreement" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "Genereer G-code voordat u het bestand opslaat." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Firmware-upgrade Uitvoeren" @@ -5044,22 +6526,6 @@ msgstr "Cura-profiellezer" #~ msgid "Confirm uninstall " #~ msgstr "Bevestig de-installeren " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "Gepauzeerd" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "Vorige" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "Volgende" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "Tip" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1 m / ~ %2 g / ~ %4 %3" @@ -5068,26 +6534,10 @@ msgstr "Cura-profiellezer" #~ msgid "%1m / ~ %2g" #~ msgstr "%1 m / ~ %2 g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "Print experiment" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "Checklist" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "Firmware-upgrade Uitvoeren" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "Maakt het fabrikanten mogelijk nieuwe materiaal- en kwaliteitsprofielen aan te maken met behulp van een drop-in-gebruikersinterface." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "Profielassistent afdrukken" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Printen via Doodle3D WiFi-Box" @@ -5180,10 +6630,6 @@ msgstr "Cura-profiellezer" #~ msgid "Lost connection with the printer" #~ msgstr "Verbinding met de printer is verbroken" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "Niet beschikbaar" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "Onbekend" diff --git a/resources/i18n/nl_NL/fdmextruder.def.json.po b/resources/i18n/nl_NL/fdmextruder.def.json.po index 9dfe5e859e..9d264238b7 100644 --- a/resources/i18n/nl_NL/fdmextruder.def.json.po +++ b/resources/i18n/nl_NL/fdmextruder.def.json.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -83,8 +83,8 @@ msgstr "Start-G-code van Extruder" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "Start-g-code die wordt uitgevoerd wanneer de extruder wordt ingeschakeld." +msgid "Start g-code to execute when switching to this extruder." +msgstr "Start-g-code die wordt uitgevoerd wanneer naar deze extruder wordt gewisseld." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -123,8 +123,8 @@ msgstr "Eind-G-code van Extruder" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "Eind-g-code die wordt uitgevoerd wanneer de extruder wordt uitgeschakeld." +msgid "End g-code to execute when switching away from this extruder." +msgstr "Eind-g-code die wordt uitgevoerd wanneer naar een andere extruder wordt gewisseld." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -225,3 +225,11 @@ msgstr "Diameter" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Bepaalt de diameter van het gebruikte filament. Pas deze waarde aan de diameter van het gebruikte filament aan." + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "Start-g-code die wordt uitgevoerd wanneer de extruder wordt ingeschakeld." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "Eind-g-code die wordt uitgevoerd wanneer de extruder wordt uitgeschakeld." diff --git a/resources/i18n/nl_NL/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po index 1733d1830e..d145a50f7c 100644 --- a/resources/i18n/nl_NL/fdmprinter.def.json.po +++ b/resources/i18n/nl_NL/fdmprinter.def.json.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-11-06 15:03+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Dutch\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Dutch , Dutch \n" "Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -123,7 +123,7 @@ msgstr "Materiaaltemperatuur invoegen" #: fdmprinter.def.json msgctxt "material_print_temp_prepend description" msgid "Whether to include nozzle temperature commands at the start of the gcode. When the start_gcode already contains nozzle temperature commands Cura frontend will automatically disable this setting." -msgstr "Hiermee bepaalt u of aan het begin van de g-code opdrachten voor de nozzletemperatuur moeten worden ingevoegd. Wanneer de start-g-code al opdrachten voor de nozzletemperatuur bevat, wordt deze instelling automatisch uitgeschakeld door de Cura-frontend." +msgstr "Hiermee bepaalt u of aan het begin van de G-code opdrachten voor de nozzletemperatuur moeten worden ingevoegd. Wanneer de start-g-code al opdrachten voor de nozzletemperatuur bevat, wordt deze instelling automatisch uitgeschakeld door de Cura-frontend." #: fdmprinter.def.json msgctxt "material_bed_temp_prepend label" @@ -133,7 +133,7 @@ msgstr "Platformtemperatuur invoegen" #: fdmprinter.def.json msgctxt "material_bed_temp_prepend description" msgid "Whether to include build plate temperature commands at the start of the gcode. When the start_gcode already contains build plate temperature commands Cura frontend will automatically disable this setting." -msgstr "Hiermee bepaalt u of aan het begin van de g-code opdrachten voor de platformtemperatuur moeten worden ingevoegd. Wanneer de start-g-code al opdrachten voor de platformtemperatuur bevat, wordt deze instelling automatisch uitgeschakeld door de Cura-frontend." +msgstr "Hiermee bepaalt u of aan het begin van de G-code opdrachten voor de platformtemperatuur moeten worden ingevoegd. Wanneer de start-g-code al opdrachten voor de platformtemperatuur bevat, wordt deze instelling automatisch uitgeschakeld door de Cura-frontend." #: fdmprinter.def.json msgctxt "machine_width label" @@ -215,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Hiermee geeft u aan of een verwarmd platform aanwezig is." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Heeft temperatuurstabilisatie van werkvolume" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Of de machine in staat is de temperatuur van het werkvolume te stabiliseren." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -237,8 +247,8 @@ msgstr "Aantal extruder trains. Een extruder train is de combinatie van een feed #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" -msgstr "Het aantal extruders dat ingeschakeld is" +msgid "Number of Extruders That Are Enabled" +msgstr "Aantal ingeschakelde extruders" #: fdmprinter.def.json msgctxt "extruders_enabled_count description" @@ -247,7 +257,7 @@ msgstr "Het aantal extruder trains dat ingeschakeld is; automatisch ingesteld in #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "Buitendiameter nozzle" #: fdmprinter.def.json @@ -257,7 +267,7 @@ msgstr "De buitendiameter van de punt van de nozzle." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "Nozzlelengte" #: fdmprinter.def.json @@ -267,7 +277,7 @@ msgstr "Het hoogteverschil tussen de punt van de nozzle en het laagste deel van #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "Nozzlehoek" #: fdmprinter.def.json @@ -277,7 +287,7 @@ msgstr "De hoek tussen het horizontale vlak en het conische gedeelte boven de pu #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "Lengte verwarmingszone" #: fdmprinter.def.json @@ -307,7 +317,7 @@ msgstr "Hiermee geeft u aan of u de temperatuur wilt reguleren vanuit Cura. Scha #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "Verwarmingssnelheid" #: fdmprinter.def.json @@ -317,7 +327,7 @@ msgstr "De snelheid (°C/s) waarmee de nozzle wordt verwarmd, gemiddeld over het #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "Afkoelsnelheid" #: fdmprinter.def.json @@ -337,7 +347,7 @@ msgstr "De minimale tijd die een extruder inactief moet zijn, voordat de nozzle #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "Versie G-code" #: fdmprinter.def.json @@ -402,7 +412,7 @@ msgstr "Hiermee bepaalt u of u voor het intrekken van materiaal firmwareopdracht #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "Verboden gebieden" #: fdmprinter.def.json @@ -422,7 +432,7 @@ msgstr "Een lijst polygonen met gebieden waarin de nozzle niet mag komen." #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "Machinekoppolygoon" #: fdmprinter.def.json @@ -432,8 +442,8 @@ msgstr "Een 2D-silouette van de printkop (exclusief ventilatorkappen)." #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" -msgstr "Machinekop- en Ventilatorpolygoon" +msgid "Machine Head & Fan Polygon" +msgstr "Machinekop- en ventilatorpolygoon" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" @@ -442,7 +452,7 @@ msgstr "Een 2D-silouette van de printkop (inclusief ventilatorkappen)." #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Rijbrughoogte" #: fdmprinter.def.json @@ -472,8 +482,8 @@ msgstr "De binnendiameter van de nozzle. Verander deze instelling wanneer u een #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" -msgstr "Offset met Extruder" +msgid "Offset with Extruder" +msgstr "Offset met extruder" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords description" @@ -1020,6 +1030,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Het aantal bodemlagen. Wanneer deze waarde wordt berekend aan de hand van de dikte van de bodem, wordt deze afgerond naar een geheel getal." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Eerste onderste lagen" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Het aantal initiële onderste lagen, vanaf de bouwplaat naar boven. Wanneer deze waarde wordt berekend aan de hand van de dikte van de bodem, wordt deze" +" afgerond naar een geheel getal." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1270,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Scherpste hoek" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Z-naadpositie" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "De positie nabij waar met het printen van elk deel van een laag moet worden begonnen." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Linksachter" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Achter" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Rechtsachter" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Rechts" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Rechtsvoor" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Voor" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Linksvoor" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Links" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1297,8 +1368,8 @@ msgstr "Voorkeur van naad en hoek" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Instellen of hoeken in het model invloed hebben op de positie van de naad. Geen wil zeggen dat hoeken geen invloed hebben op de positie van de naad. Met Naad verbergen is de kans groter dat de naad op een binnenhoek komt. Met Naad zichtbaar maken is de kans groter dat de naad op een buitenhoek komt. Met Naad verbergen of Naad zichtbaar maken is de kans groter dat de naad op een binnen- of buitenhoek komt." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Instellen of hoeken in het model invloed hebben op de positie van de naad. Geen wil zeggen dat hoeken geen invloed hebben op de positie van de naad. Met Naad Verbergen is de kans groter dat de naad op een binnenhoek komt. Met Naad Zichtbaar Maken is de kans groter dat de naad op een buitenhoek komt. Met Naad Verbergen of Naad Zichtbaar Maken is de kans groter dat de naad op een binnen- of buitenhoek komt. Met Slim Verbergen zijn zowel binnen- als buitenhoeken mogelijk, maar wordt er vaker (indien van toepassing) gebruikgemaakt van binnenhoeken." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1320,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Naad verbergen of zichtbaar maken" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Slim verbergen" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1332,13 +1408,13 @@ msgstr "Als deze optie ingeschakeld is, zijn de Z-naadcoördinaten relatief ten #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Kleine Z-gaten Negeren" +msgid "No Skin in Z Gaps" +msgstr "Geen skin in Z-gaten" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Wanneer het model kleine verticale gaten heeft, kan er circa 5% berekeningstijd extra worden besteed aan het genereren van de boven- en onderskin in deze kleine ruimten. Indien u dit wenst, schakelt u de instelling uit." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Als het model kleine verticale gaten van slechts een paar lagen heeft, bevindt er zich doorgaans een skin rond die lagen in de kleine ruimte. Schakel deze instelling in om geen skin te genereren als de verticale tussenruimte erg klein is. Zo verloopt printen en slicen sneller, maar technisch nadeel is dat de vulling aan de lucht wordt blootgesteld." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1357,8 +1433,8 @@ msgstr "Strijken inschakelen" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Ga nog een extra keer over de bovenlaag, echter zonder materiaal door te voeren. Hierdoor wordt de kunststof aan de bovenkant verder gesmolten, waardoor een gladder oppervlak wordt verkregen." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Nog een extra keer over de bovenlaag gaan, dit keer zonder veel materiaal te extruderen. Hierdoor wordt de kunststof aan de bovenkant verder gesmolten, waardoor een gladder oppervlak wordt verkregen. De kamerdruk in de nozzle wordt hoog gehouden zodat de spleten in het oppervlak met materiaal worden gevuld." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1450,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "De maximale onmiddellijke snelheidsverandering tijdens het strijken." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Overlappercentage Skin" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Pas de mate van overlap tussen de wanden en (de eindpunten van) de skin-middellijnen aan, als percentage van de lijnbreedtes van de skin-lijnen en de binnenste wand. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Houd er rekening mee dat met een gelijke lijnbreedte voor skin en wand, skin buiten de wand kan treden bij een percentage hoger dan 50%, omdat de nozzle van de skin-extruder op deze positie al voorbij het midden van de wand kan zijn." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Overlap Skin" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Pas de mate van overlap tussen de wanden en (de eindpunten van) de skin-middellijnen aan. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Houd er rekening mee dat met een gelijke lijnbreedte voor skin en wand, skin buiten de wand kan treden bij een waarde groter dan de halve wandbreedte, omdat de nozzle van de skin-extruder op deze positie het midden van de wand al kan hebben bereikt." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1615,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Het vulpatroon wordt over deze afstand verplaatst langs de Y-as." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Start willekeurig invullen" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Bepaal willekeurig welke invullijn het eerst wordt geprint. Dit voorkomt dat één segment het sterkst wordt, maar gaat ten koste van een extra beweging." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1669,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "De mate van overlap tussen de vulling en de wanden. Met een lichte overlap kunnen de wanden goed hechten aan de vulling." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Overlappercentage Skin" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "De mate van overlap tussen de skin en de wanden als percentage van de lijnbreedte van de skin. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Dit is een percentage van de gemiddelde lijnbreedte van de skinlijnen en de binnenste wand." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Overlap Skin" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "De mate van overlap tussen de skin en de wanden. Met een lichte overlap kunnen de wanden goed hechten aan de skin." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1869,6 +1955,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "De standaardtemperatuur waarmee wordt geprint. Dit moet overeenkomen met de basistemperatuur van een materiaal. Voor alle andere printtemperaturen moet een offset worden gebruikt die gebaseerd is op deze waarde" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "Temperatuur werkvolume" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "De omgevingstemperatuur waarin wordt geprint. Als deze waarde is ingesteld op 0, wordt de temperatuur van het werkvolume niet aangepast." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1979,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Krimpverhouding in procenten." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Kristallijnmateriaal" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Breekt dit materiaal recht af wanneer het wordt verwarmd (kristallijn) of produceert het lange, met elkaar verweven polymeerketens (niet-kristallijn)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Intrekpositie voor niet-uitlopen" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Hoe ver het materiaal moet worden ingetrokken voordat het niet meer uitloopt." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Intreksnelheid voor niet-uitlopen" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Hoe snel het materiaal moet worden ingetrokken tijdens het wisselen van een filament om uitlopen te voorkomen." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Intrekpositie voor voorbereiding van afbreken" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Hoe ver het filament kan worden uitgerekt voordat het afbreekt, wanneer het wordt verwarmd." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Intreksnelheid voor voorbereiding van afbreken" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Hoe snel het filament moet worden ingetrokken voordat het bij het intrekken afbreekt." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Intrekpositie voor afbreken" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Hoe ver het filament moet worden ingetrokken om het recht af te breken." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Intreksnelheid voor afbreken" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "De snelheid waarmee het filament wordt ingetrokken om het recht af te breken." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatuur voor afbreken" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "De temperatuur waarbij het filament wordt afgebroken om het recht af te breken." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1989,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Doorvoercompensatie: de hoeveelheid materiaal die wordt doorgevoerd, wordt vermenigvuldigd met deze waarde." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Wanddoorvoer" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Doorvoercompensatie op wandlijnen." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Buitenste wanddoorvoer" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Doorvoercompensatie op de buitenste wandlijn." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Doorvoer binnenwand(en)" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Doorvoercompensatie op wandlijnen voor alle wandlijnen behalve de buitenste." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Doorvoer boven/onder" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Doorvoercompensatie op bovenste/onderste lijn." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Bovenste oppervlak skindoorvoer" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Doorvoercompensatie op lijnen van de gebieden bovenaan de print." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Doorvoer vulling" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Doorvoercompensatie op vullijnen." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Doorvoer skirt/brim" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Doorvoercompensatie op skirt- of brimlijnen." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Doorvoer support" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Doorvoercompensatie op de supportstructuurlijnen." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Doorvoer supportinterface" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Doorvoercompensatie op de lijnen van supportdak of de supportvloer." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Doorvoer supportdak" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Doorvoercompensatie op supportdaklijnen." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Doorvoer supportvloer" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Doorvoercompensatie op de supportvloerlijnen." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Doorvoer Primepijler" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Doorvoercompensatie op primepijlerlijnen." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2106,7 +2402,7 @@ msgstr "Supportintrekkingen beperken" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "Sla intrekking over tijdens bewegingen in een rechte lijn van support naar support. Deze instelling verkort de printtijd, maar kan leiden tot overmatige draadvorming in de supportstructuur." #: fdmprinter.def.json @@ -2126,8 +2422,8 @@ msgstr "Intrekafstand bij Wisselen Nozzles" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "De intrekafstand: indien u deze optie instelt op 0, wordt er niet ingetrokken. Deze waarde dient doorgaans gelijk te zijn aan de lengte van de verwarmingszone." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "De intrekafstand wanneer de extruders worden gewisseld. Als u deze optie instelt op 0, wordt er niet ingetrokken. Deze waarde dient doorgaans gelijk te zijn aan de lengte van de verwarmingszone." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2159,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "De snelheid waarmee het filament tijdens een intrekbeweging na het wisselen van de nozzles wordt geprimed." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Extra primehoeveelheid na wisselen van nozzle" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Extra primemateriaal na het wisselen van de nozzle." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2350,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "De snelheid waarmee de skirt en de brim worden geprint. Normaal gebeurt dit met dezelfde snelheid als de snelheid van de eerste laag, maar in sommige situaties wilt u de skirt of de brim mogelijk met een andere snelheid printen." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Maximale Z-snelheid" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Snelheid Z-sprong" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "De maximale snelheid waarmee het platform wordt bewogen. Wanneer u deze optie instelt op 0, worden voor het printen de standaardwaarden voor de maximale Z-snelheid gebruikt." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "De snelheid waarmee de verticale Z-beweging wordt gemaakt voor Z-sprongen. Dit is meestal lager dan de printsnelheid, omdat het platform of de rijbrug van de machine moeilijker te verplaatsen is." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2786,8 +3092,8 @@ msgstr "Combing-modus" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "Met combing blijft de nozzle tijdens bewegingen binnen eerder geprinte delen. Hierdoor zijn de bewegingen iets langer, maar hoeft het filament minder vaak te worden ingetrokken. Als combing uitgeschakeld is, wordt het materiaal ingetrokken en beweegt de nozzle in een rechte lijn naar het volgende punt. Het is ook mogelijk om combing over boven-/onderskingedeelten te voorkomen en ook om alleen combing te gebruiken binnen de vulling. Houd er rekening mee dat de optie 'Binnen Vulling' precies dezelfde uitwerking heeft als de optie 'Niet in skin' in eerdere versies van Cura." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "Met combing blijft de nozzle tijdens bewegingen binnen eerder geprinte delen. Hierdoor zijn de bewegingen iets langer, maar hoeft het filament minder vaak te worden ingetrokken. Als combing is uitgeschakeld, wordt het materiaal ingetrokken en beweegt de nozzle in een rechte lijn naar het volgende punt. Het is ook mogelijk om combing over boven-/onderskingedeelten te voorkomen of combing alleen binnen de vulling te gebruiken." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2859,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "De afstand tussen de nozzle en geprinte delen wanneer deze tijdens bewegingen worden gemeden." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Lagen beginnen met hetzelfde deel" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Begin het printen van elke laag van het object bij hetzelfde punt, zodat we geen nieuwe laag beginnen met het printen van het deel waarmee de voorgaande laag is geëindigd. Hiermee wordt de kwaliteit van overhangende gedeelten en kleine delen verbeterd, maar duurt het printen langer." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2922,13 +3218,23 @@ msgstr "Het hoogteverschil dat wordt aangehouden tijdens een Z-sprong." #: fdmprinter.def.json msgctxt "retraction_hop_after_extruder_switch label" msgid "Z Hop After Extruder Switch" -msgstr "Z-beweging na Wisselen Extruder" +msgstr "Z-sprong na Wisselen Extruder" #: fdmprinter.def.json msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "Nadat de machine van de ene extruder naar de andere is gewisseld, wordt het platform omlaag gebracht om ruimte te creëren tussen de nozzle en de print. Hiermee wordt voorkomen dat de nozzle doorgevoerd materiaal achterlaat op de buitenzijde van een print." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "Hoogte Z-sprong na wisselen extruder" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "Het hoogteverschil dat wordt aangehouden tijdens een Z-sprong na wisselen extruder." + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3199,6 +3505,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Kruis" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "Gyroïde" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3260,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Afstand tussen de lijnen van de supportstructuur voor de eerste laag. Deze wordt berekend op basis van de dichtheid van de supportstructuur." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Lijnrichting Vulling Supportstructuur" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Richting van het vulpatroon voor supportstructuren. Het vulpatroon voor de supportstructuur wordt in het horizontale vlak gedraaid." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst bereikt is, wordt deze weer van voren af aan gestart. De lijstitems zijn gescheiden door komma's en de hele lijst is binnen vierkante haken geplaatst. Standaard wordt een lege lijst gebruikt, wat inhoudt dat de standaardhoek van 0 graden wordt gebruikt." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3396,7 +3707,7 @@ msgstr "Samenvoegafstand Supportstructuur" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." msgstr "De maximale afstand tussen de supportstructuren in de X- en Y-richting. Wanneer afzonderlijke structuren dichter bij elkaar staan dan deze waarde, worden deze samengevoegd tot één structuur." #: fdmprinter.def.json @@ -3439,6 +3750,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "De hoogte van de supportvulling van een bepaalde dichtheid voordat de dichtheid wordt gehalveerd." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "Minimumgebied supportstructuur" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "Minimumgebied voor steunpolygonen. Polygonen met een gebied dat kleiner is dan deze waarde, worden niet gegenereerd." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3664,6 +3985,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Zigzag" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "Minimumgebied verbindingsstructuur" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimumgebied voor verbindingspolygonen. Polygonen met een gebied dat kleiner is dan deze waarde worden geprint als normale ondersteuning." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "Minimumgebied supportdak" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimumgebied voor de supportdaken. Polygonen met een gebied dat kleiner is dan deze waarde worden geprint als normale ondersteuning." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "Minimumgebied supportvloer" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimumgebied voor de supportvloeren. Polygonen met een gebied dat kleiner is dan deze waarde worden geprint als normale ondersteuning." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "Supportstructuur horizontale uitbreiding" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "De mate van offset die wordt toegepast op de verbindingspolygonen." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "Supportdak horizontale uitbreiding" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "De mate van offset die wordt toegepast op de supportdaken." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "Supportvloer horizontale uitbreiding" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "De mate van offset die wordt toegepast op de supportvloeren." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Lijnrichting interface supportstructuur" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst bereikt is, wordt deze weer van voren af aan gestart. De lijstitems zijn gescheiden door komma's en de hele lijst is binnen vierkante haken geplaatst. Standaard wordt een lege lijst gebruikt, wat inhoudt dat de standaardhoeken (variërend tussen 45 en 135 graden als interfaces vrij dik of 90 graden zijn) worden gebruikt." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Lijnrichting supportdak" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst bereikt is, wordt deze weer van voren af aan gestart. De lijstitems zijn gescheiden door komma's en de hele lijst is binnen vierkante haken geplaatst. Standaard wordt een lege lijst gebruikt, wat inhoudt dat de standaardhoeken (variërend tussen 45 en 135 graden als interfaces vrij dik of 90 graden zijn) worden gebruikt." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Lijnrichting supportvloer" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst bereikt is, wordt deze weer van voren af aan gestart. De lijstitems zijn gescheiden door komma's en de hele lijst is binnen vierkante haken geplaatst. Standaard wordt een lege lijst gebruikt, wat inhoudt dat de standaardhoeken (variërend tussen 45 en 135 graden als interfaces vrij dik of 90 graden zijn) worden gebruikt." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3705,14 +4116,14 @@ msgid "The diameter of a special tower." msgstr "De diameter van een speciale pijler." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Minimale Diameter" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Maximale pijler-ondersteunde diameter" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "De minimale diameter in de X- en Y-richting van een kleiner gebied dat moet worden ondersteund door een speciale steunpijler." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "De maximale diameter in de X- en Y-richting van een kleiner gebied dat moet worden ondersteund door een speciale steunpijler." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4208,16 +4619,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Print een pijler naast de print, waarop het materiaal na iedere nozzlewisseling wordt ingespoeld." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Ronde primepijler" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Geef de primepijler een ronde vorm." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4258,16 +4659,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "De Y-coördinaat van de positie van de primepijler." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Doorvoer Primepijler" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Doorvoercompensatie: de hoeveelheid materiaal die wordt doorgevoerd, wordt vermenigvuldigd met deze waarde." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4278,6 +4669,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "Veeg na het printen van de primepijler met één nozzle het doorgevoerde materiaal van de andere nozzle af aan de primepijler." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "Brim primepijler" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "Primepijlers hebben mogelijk de extra hechting van een brim nodig, ook als het model dit niet nodig heeft. Kan momenteel niet worden gebruikt met het hechtingstype 'Raft'." + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4398,6 +4799,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Hiermee worden de lege lagen onder de eerste geprinte laag verwijderd, indien aanwezig. Als u deze instelling uitschakelt, kunnen lege eerste lagen ontstaan als de Slicetolerantie is ingesteld op Exclusief of Midden." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maximale resolutie" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Het minimale formaat van een lijnsegment na het slicen. Als u deze waarde verhoogt, wordt het model met een lagere resolutie geprint. Hiermee kan de printer de verwerkingssnelheid van de G-code bijhouden en wordt de slicesnelheid verhoogd doordat details van het raster worden verwijderd die niet kunnen worden verwerkt." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Maximale bewegingsresolutie" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Het minimale formaat van een bewegingslijnsegment na het slicen. Als u deze waarde verhoogt, hebben de bewegingen minder vloeiende hoeken. Hiermee kan de printer de verwerkingssnelheid van de G-code bijhouden, maar kan het model door vermijding minder nauwkeurig worden." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Maximale afwijking" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "De maximaal toegestane afwijking tijdens het verlagen van de resolutie voor de instelling Maximale resolutie. Als u deze waarde verhoogt, wordt de print minder nauwkeurig, maar wordt de G-code kleiner. Maximale afwijking is een limiet voor Maximale resolutie, dus als de twee tegenstrijdig zijn, wordt de Maximale afwijking altijd aangehouden." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4560,7 +4991,7 @@ msgstr "Gespiraliseerde contouren effenen" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Maak de gespiraliseerde contouren vlak om de zichtbaarheid van de Z-naad te verminderen (de Z-naad mag in de print nauwelijks zichtbaar zijn, maar is nog wel zichtbaar in de laagweergave). Houd er rekening mee dat fijne oppervlaktedetails worden vervaagd door het effenen." #: fdmprinter.def.json @@ -4773,26 +5204,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Polygonen in geslicete lagen, die een kleinere omtrek hebben dan deze waarde, worden eruit gefilterd. Bij lagere waarden krijgt het raster een hogere resolutie, waardoor het slicen langer duurt. Dit is voornamelijk bedoeld voor SLA-printers met een hoge resolutie en zeer kleine 3D-modellen die veel details bevatten." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Maximale resolutie" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Het minimale formaat van een lijnsegment na het slicen. Als u deze waarde verhoogt, wordt het model met een lagere resolutie geprint. Hiermee kan de printer de verwerkingssnelheid van de G-code bijhouden en wordt de slicesnelheid verhoogd doordat details van het raster worden verwijderd die niet kunnen worden verwerkt." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Maximale bewegingsresolutie" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Het minimale formaat van een bewegingslijnsegment na het slicen. Als u deze waarde verhoogt, hebben de bewegingen minder vloeiende hoeken. Hiermee kan de printer de verwerkingssnelheid van de G-code bijhouden, maar kan het model door vermijding minder nauwkeurig worden." - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4933,16 +5344,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "De snelheid waarmee de printkop tijdens coasting beweegt ten opzichte van de snelheid voor het doorvoerpad. Hiervoor wordt een waarde van iets minder dan 100% aangeraden, omdat de druk in de bowden-buis zakt tijdens een coasting-beweging." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Skinrotatie Wisselen" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Wissel de richting af waarin de boven-/onderlagen worden geprint. Normaal worden deze alleen diagonaal geprint. Met deze instelling worden de alleen-X- en alleen-Y-richtingen toegevoegd." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5050,8 +5451,8 @@ msgstr "Conische supportstructuur inschakelen" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Experimentele functie: maak draagvlakken aan de onderkant kleiner dan bij de overhang." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Maak draagvlakken aan de onderkant kleiner dan bij de overhang." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5115,23 +5516,24 @@ msgstr "De gemiddelde afstand tussen de willekeurig geplaatste punten op elk lij #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Maximale extrusieoffset voor doorvoercompensatie" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "De maximale afstand in mm die moet worden gecompenseerd." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "De maximale afstand in mm om het filament te verplaatsen om veranderingen in de stroomsnelheid te compenseren." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Doorvoercompensatiefactor" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "De vermenigvuldigingsfactor voor de vertaling doorvoer -> afstand." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Hoe ver het filament moet worden verplaatst om veranderingen in de stroomsnelheid te compenseren, als een percentage van hoe ver het filament in één seconde" +" extrusie zou bewegen." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5394,7 +5796,7 @@ msgstr "De afstand tussen de nozzle en horizontaal neergaande lijnen. Een groter #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "Adaptieve lagen gebruiken" #: fdmprinter.def.json @@ -5404,7 +5806,7 @@ msgstr "Met adaptieve lagen berekent u de laaghoogte afhankelijk van de vorm van #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "Maximale variatie adaptieve lagen" #: fdmprinter.def.json @@ -5414,7 +5816,7 @@ msgstr "De maximaal toegestane hoogte ten opzichte van de grondlaaghoogte." #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "Stapgrootte variatie adaptieve lagen" #: fdmprinter.def.json @@ -5424,13 +5826,14 @@ msgstr "Het hoogteverschil tussen de hoogte van de volgende laag ten opzichte va #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "Drempel adaptieve lagen" +msgid "Adaptive Layers Topography Size" +msgstr "Topografieformaat aanpasbare lagen" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "De drempel of er al dan niet een kleinere laag moet worden gebruikt. Deze waarde wordt vergeleken met de waarde van de steilste helling in een laag." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Horizontale doelafstand tussen twee aangrenzende lagen. Als u deze instelling verkleint, worden dunnere lagen gebruikt om de randen van de lagen dichter" +" bij elkaar te brengen." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5439,8 +5842,9 @@ msgstr "Hoek Overhangende Wand" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Wanden die overhangen in een hoek groter dan deze waarde, worden geprint met instellingen voor overhangende wanden. Wanneer de waarde 90 is, wordt een wand niet als een overhangende wand gezien." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Wanden die overhangen in een hoek groter dan deze waarde, worden geprint met instellingen voor overhangende wanden. Wanneer de waarde 90 is, wordt een" +" wand niet als een overhangende wand gezien. Een overhang die wordt ondersteund door ondersteuning wordt ook niet als overhang gezien." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5642,6 +6046,198 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "Percentage ventilatorsnelheid tijdens het printen van de derde brugskinlaag." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "Nozzle afvegen tussen lagen" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "Hiermee bepaalt u of u het afvegen van de nozzle tussen lagen wilt opnemen in de G-code. Het inschakelen van deze instelling kan het gedrag van het intrekken tijdens de laagwissel beïnvloeden. Gebruik de instelling voor intrekken bij afvegen om het intrekken te controleren bij lagen waarop afveegscript van toepassing is." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "Materiaalvolume tussen afvegen" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "Maximale materiaalhoeveelheid die kan worden doorgevoerd voordat de nozzle opnieuw wordt afgeveegd." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "Intrekken voor afvegen inschakelen" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "Hiermee wordt het filament ingetrokken wanneer de nozzle over een niet-printbaar gebied gaat." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "Intrekafstand voor afvegen" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "Volume filament dat moet worden ingetrokken om te voorkomen dat filament verloren gaat tijdens het afvegen." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "Extra primehoeveelheid na intrekken voor afvegen" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "Tijdens veegbewegingen kan materiaal verloren gaan, wat met deze optie kan worden gecompenseerd." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "Intreksnelheid voor afvegen" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "De snelheid waarmee het filament tijdens een intrekbeweging voor afvegen wordt ingetrokken en geprimed." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "Intreksnelheid voor afvegen (intrekken)" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "De snelheid waarmee het filament tijdens een intrekbeweging voor afvegen wordt ingetrokken." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Intreksnelheid (primen)" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "De snelheid waarmee het filament tijdens een intrekbeweging voor afvegen wordt geprimed." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "Afvegen pauzeren" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "Pauzeren na het ongedaan maken van intrekken." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "Z-sprong wanneer ingetrokken voor afvegen" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "Tijdens het intrekken wordt het platform omlaag gebracht om ruimte te creëren tussen de nozzle en de print. Hiermee wordt voorkomen dat de nozzle de print raakt tijdens een beweging en wordt de kans verkleind dat de print van het platform wordt gestoten." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "Hoogte Z-sprong voor afvegen" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "Het hoogteverschil dat wordt aangehouden tijdens een Z-sprong." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "Sprongsnelheid voor afvegen" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "Snelheid waarmee de Z-as wordt verplaatst tijdens de sprong." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "X-positie afveegborstel" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "X-positie waar afveegscript start." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "Aantal afveegbewegingen" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "Aantal keren dat de nozzle over de borstel beweegt." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "Verplaatsingsafstand voor afvegen" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "De afstand die de kop heen en weer wordt bewogen over de borstel." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Maximale grootte kleine gaten" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Gaten en contouren van onderdelen met een kleinere diameter dan deze worden afgedrukt met behulp van Klein kenmerksnelheid." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Maximale lengte klein kenmerk" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Kenmerkcontouren die korter zijn dan deze lengte, worden afgedrukt met behulp van Klein kenmerksnelheid." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Klein kenmerksnelheid" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Kleine kernmerken worden geprint met een snelheid die gelijk is aan dit percentage van hun normale printsnelheid. Langzamer printen kan de hechting en" +" nauwkeurigheid verbeteren." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Kleine kenmerken eerste laagsnelheid" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Kleine kenmerken op de eerste laag worden geprint met een snelheid die gelijk is aan dit percentage van hun normale printsnelheid. Langzamer printen kan" +" de hechting en nauwkeurigheid verbeteren." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5702,6 +6298,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Omzettingsmatrix die moet worden toegepast op het model wanneer dit wordt geladen vanuit een bestand." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimumgebied voor verbindingspolygonen. Polygonen met een gebied dat kleiner is dan deze waarde, worden niet gegenereerd." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimumgebied voor de supportdaken. Polygonen met een gebied dat kleiner is dan deze waarde, worden niet gegenereerd." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimumgebied voor de supportvloeren. Polygonen met een gebied dat kleiner is dan deze waarde, worden niet gegenereerd." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Skinrotatie Wisselen" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Wissel de richting af waarin de boven-/onderlagen worden geprint. Normaal worden deze alleen diagonaal geprint. Met deze instelling worden de alleen-X- en alleen-Y-richtingen toegevoegd." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Maximale extrusieoffset voor doorvoercompensatie" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "De maximale afstand in mm die moet worden gecompenseerd." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Doorvoercompensatiefactor" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "De vermenigvuldigingsfactor voor de vertaling doorvoer -> afstand." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Drempelwaarde adaptieve lagen" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "De drempel of er al dan niet een kleinere laag moet worden gebruikt. Deze waarde wordt vergeleken met de waarde van de steilste helling in een laag." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Wanden die overhangen in een hoek groter dan deze waarde, worden geprint met instellingen voor overhangende wanden. Wanneer de waarde 90 is, wordt een wand niet als een overhangende wand gezien." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Kleine kenmerken worden geprint met een snelheid die gelijk is aan dit percentage van hun normale printsnelheid. Langzamer printen kan de hechting en nauwkeurigheid verbeteren." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Eerste laagsnelheid" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Kleine kenmerken op de eerste laag worden geprint met een snelheid die gelijk is aan dit percentage van hun normale printsnelheid. Langzamer printen kan de hechting en nauwkeurigheid verbeteren." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Ga nog een extra keer over de bovenlaag, echter zonder materiaal door te voeren. Hierdoor wordt de kunststof aan de bovenkant verder gesmolten, waardoor een gladder oppervlak wordt verkregen." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Lagen beginnen met hetzelfde deel" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Begin het printen van elke laag van het object bij hetzelfde punt, zodat we geen nieuwe laag beginnen met het printen van het deel waarmee de voorgaande laag is geëindigd. Hiermee wordt de kwaliteit van overhangende gedeelten en kleine delen verbeterd, maar duurt het printen langer." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Richting van het vulpatroon voor supportstructuren. Het vulpatroon voor de supportstructuur wordt in het horizontale vlak gedraaid." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "De maximaal toegestane afwijking tijdens het verlagen van de resolutie voor de instelling Maximale resolutie. Als u deze waarde verhoogt, wordt de print minder nauwkeurig, maar wordt de G-code kleiner." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Versie G-code" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Instellen of hoeken in het model invloed hebben op de positie van de naad. Geen wil zeggen dat hoeken geen invloed hebben op de positie van de naad. Met Naad verbergen is de kans groter dat de naad op een binnenhoek komt. Met Naad zichtbaar maken is de kans groter dat de naad op een buitenhoek komt. Met Naad verbergen of Naad zichtbaar maken is de kans groter dat de naad op een binnen- of buitenhoek komt." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Kleine Z-gaten Negeren" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Wanneer het model kleine verticale gaten heeft, kan er circa 5% berekeningstijd extra worden besteed aan het genereren van de boven- en onderskin in deze kleine ruimten. Indien u dit wenst, schakelt u de instelling uit." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "De temperatuur van het werkvolume. Als deze waarde is ingesteld op 0, wordt de temperatuur van het werkvolume niet aangepast." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Sla intrekking over tijdens bewegingen in een rechte lijn van support naar support. Deze instelling verkort de printtijd, maar kan leiden tot overmatige draadvorming in de supportstructuur." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Maximale Z-snelheid" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "De maximale snelheid waarmee het platform wordt bewogen. Wanneer u deze optie instelt op 0, worden voor het printen de standaardwaarden voor de maximale Z-snelheid gebruikt." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "De maximale afstand tussen de supportstructuren in de X- en Y-richting. Wanneer afzonderlijke structuren dichter bij elkaar staan dan deze waarde, worden deze samengevoegd tot één structuur." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Minimale Diameter" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "De minimale diameter in de X- en Y-richting van een kleiner gebied dat moet worden ondersteund door een speciale steunpijler." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Ronde primepijler" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Geef de primepijler een ronde vorm." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Doorvoercompensatie: de hoeveelheid materiaal die wordt doorgevoerd, wordt vermenigvuldigd met deze waarde." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Maak de gespiraliseerde contouren vlak om de zichtbaarheid van de Z-naad te verminderen (de Z-naad mag in de print nauwelijks zichtbaar zijn, maar is nog wel zichtbaar in de laagweergave). Houd er rekening mee dat fijne oppervlaktedetails worden vervaagd door het effenen." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Experimentele functie: maak draagvlakken aan de onderkant kleiner dan bij de overhang." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "Het aantal extruders dat ingeschakeld is" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Buitendiameter nozzle" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Nozzlelengte" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Nozzlehoek" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Lengte verwarmingszone" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Verwarmingssnelheid" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Afkoelsnelheid" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "Versie G-code" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "Verboden gebieden" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Machinekoppolygoon" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Machinekop- en Ventilatorpolygoon" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Rijbrughoogte" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Offset met Extruder" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "Adaptieve lagen gebruiken" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "Maximale variatie adaptieve lagen" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "Stapgrootte variatie adaptieve lagen" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "Drempel adaptieve lagen" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "De mate van overlap tussen de skin en de wanden als percentage van de lijnbreedte van de skin. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Dit is een percentage van de gemiddelde lijnbreedte van de skinlijnen en de binnenste wand." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "De mate van overlap tussen de skin en de wanden. Met een lichte overlap kunnen de wanden goed hechten aan de skin." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "De intrekafstand: indien u deze optie instelt op 0, wordt er niet ingetrokken. Deze waarde dient doorgaans gelijk te zijn aan de lengte van de verwarmingszone." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "Met combing blijft de nozzle tijdens bewegingen binnen eerder geprinte delen. Hierdoor zijn de bewegingen iets langer, maar hoeft het filament minder vaak te worden ingetrokken. Als combing uitgeschakeld is, wordt het materiaal ingetrokken en beweegt de nozzle in een rechte lijn naar het volgende punt. Het is ook mogelijk om combing over boven-/onderskingedeelten te voorkomen en ook om alleen combing te gebruiken binnen de vulling. Houd er rekening mee dat de optie 'Binnen Vulling' precies dezelfde uitwerking heeft als de optie 'Niet in skin' in eerdere versies van Cura." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "Skinpaden aan boven-/onderkant verbinden waar ze naast elkaar lopen. Met deze instelling wordt bij concentrische patronen de bewegingstijd aanzienlijk verkort. Dit kan echter ten koste gaan van de kwaliteit van de bovenste laag aangezien de verbindingen in het midden van de vulling kunnen komen te liggen." diff --git a/resources/i18n/pl_PL/cura.po b/resources/i18n/pl_PL/cura.po index 2d11edabff..27f6acbe12 100644 --- a/resources/i18n/pl_PL/cura.po +++ b/resources/i18n/pl_PL/cura.po @@ -1,24 +1,25 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" -"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-09-21 20:52+0200\n" -"Last-Translator: 'Jaguś' Paweł Jagusiak, Andrzej 'anraf1001' Rafalski and Jakub 'drzejkopf' Świeciński\n" -"Language-Team: reprapy.pl\n" +"Project-Id-Version: Cura 4.3\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-11-15 15:23+0100\n" +"Last-Translator: Mariusz Matłosz \n" +"Language-Team: Mariusz Matłosz , reprapy.pl\n" "Language: pl_PL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.1.1\n" +"X-Generator: Poedit 2.2.4\n" +"X-Poedit-SourceCharset: UTF-8\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Ustawienia drukarki" @@ -40,23 +41,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Pliki G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "Zapisywacz G-code nie obsługuje trybu nietekstowego." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." -msgstr "" +msgstr "Przygotuj G-code przed eksportem." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Asystent Modelu 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,66 +71,50 @@ msgstr "" "

    Dowiedz się, jak zapewnić najlepszą możliwą jakość oraz niezawodnośc wydruku.

    \n" "

    Zobacz przewodnik po jakości wydruku (strona w języku angielskim)

    " -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Pokaż Dziennik" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" -msgstr "" +msgstr "Aktualizacja Oprogramowania Sprzętowego" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Spłaszczyć aktywne ustawienia" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Plik AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Profil został spłaszczony i aktywowany." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Drukowanie USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Drukuj przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Drukuj przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Połączono przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Trwa drukowanie przez USB, zamknięcie Cura spowoduje jego zatrzymanie. Jesteś pewien?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Plik X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Nadal trwa drukowanie. Cura nie może rozpocząć kolejnego wydruku przez USB, dopóki poprzedni wydruk nie zostanie zakończony." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Zapisuje do plików X3g" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Plik X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Drukowanie w toku" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -143,6 +128,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "Zapisywacz skompresowanego G-code nie obsługuje trybu tekstowego." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Pakiet Formatu Ultimaker" @@ -164,7 +150,7 @@ msgid "Save to Removable Drive {0}" msgstr "Zapisz na dysk wymienny {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Nie ma żadnych formatów plików do zapisania!" @@ -201,9 +187,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Nie można zapisać na wymiennym dysku {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Błąd" @@ -232,8 +218,9 @@ msgstr "Wyjmij urządzenie wymienne {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Ostrzeżenie" @@ -260,232 +247,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Dysk wymienny" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Drukuj przez sieć" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Drukuj przez sieć" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Połączono przez sieć." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Połączono przez sieć. Proszę zatwierdzić żądanie dostępu na drukarce." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Połączono przez sieć. Brak dostępu do sterowania drukarką." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Wymagany dostęp do drukarki. Proszę zatwierdzić prośbę na drukarce" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Status uwierzytelniania" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "Status Uwierzytelniania" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Spróbuj ponownie" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Prześlij ponownie żądanie dostępu" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Dostęp do drukarki został zaakceptowany" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "Brak dostępu do tej drukarki. Nie można wysłać zadania drukowania." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Poproś o dostęp" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Wyślij żądanie dostępu do drukarki" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "Nie można uruchomić nowego zadania drukowania." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Wystąpił problem z konfiguracją twojego Ultimaker'a, przez który nie można rozpocząć wydruku. Proszę rozwiąż te problemy przed kontynuowaniem." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Niedopasowana konfiguracja" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Czy na pewno chcesz drukować z wybraną konfiguracją?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Występuje niezgodność między konfiguracją lub kalibracją drukarki a Curą. Aby uzyskać najlepszy rezultat, zawsze tnij dla Print core'ów i materiałów włożonych do drukarki." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "Wysyłanie nowych zadań (tymczasowo) zostało zablokowane, dalej wysyłane jest poprzednie zadanie." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Wysyłanie danych do drukarki" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Wysyłanie danych" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Anuluj" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "Brak Printcore'a w slocie {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "Brak załadowanego materiału w slocie {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "Inny PrintCore (Cura: {cura_printcore_name}, Drukarka: {remote_printcore_name}) wybrany dla extrudera {extruder_id}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Różne materiały (Cura: {0}, Drukarka: {1}) wybrane do dzyszy {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Synchronizuj się z drukarką" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Czy chcesz używać bieżącej konfiguracji drukarki w programie Cura?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "PrintCore'y i/lub materiały w drukarce różnią się od tych w obecnym projekcie. Dla najlepszego rezultatu, zawsze tnij dla wybranych PrinCore'ów i materiałów, które są umieszczone w drukarce." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Połączone przez sieć" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "Zadanie drukowania zostało pomyślnie wysłane do drukarki." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Dane Wysłane" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Zobacz w Monitorze" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} skończyła drukowanie '{job_name}'." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "Zadanie '{job_name}' zostało zakończone." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Drukowanie zakończone" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Połącz przez sieć" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Drukuj przez sieć" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Drukuj przez sieć" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Połączone przez sieć" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Poczekaj, aż bieżące zadanie zostanie wysłane." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Błąd druku" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Znaleziono nowe drukarki w chmurze" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Nowe drukarki podłączone do Twojego konta zostały znalezione, można je odszukać na liście wykrytych drukarek." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Nie pokazuj tego komunikatu ponownie" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Próbujesz połączyć się z {0}, ale nie jest to gospodarz grupy. Możesz odwiedzić stronę internetową, aby skonfigurować jako gospodarza." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Nie jest gospodarzem grupy" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Konfiguruj grupę" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Wyślij i nadzoruj zadania druku z każdego miejsca, używając konta Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Połacz z Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Rozpocznij" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Wysyłanie zadania druku" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Przesyłanie zadania do drukarki." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Zadanie drukowania zostało pomyślnie wysłane do drukarki." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Dane Wysłane" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Próbujesz połączyć się z drukarką, na której nie działa Ultimaker Connect. Zaktualizuj drukarkę do najnowszej wersji firmware." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Zaktualizuj swoją drukarkę" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura wykryła profile materiałów, które nie zostały jeszcze zainstalowane na gospodarzu grupy {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Wysyłanie materiałów do drukarki" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Nie można wgrać danych do drukarki." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Błąd sieci" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "jutro" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "dziś" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Drukuj przez Chmurę" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Drukuj przez Chmurę" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Połączony z Chmurą" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Monitor" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Nie można uzyskać dostępu do informacji o aktualizacji." @@ -507,24 +426,30 @@ msgctxt "@action:button" msgid "How to update" msgstr "Jak zaktualizować" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Widok warstwy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura nie wyświetla dokładnie warstw kiedy drukowanie przewodowe jest włączone" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Widok symulacji" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "Przetwarzanie końcowe" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" -msgstr "Modyfikuj G-Code" +msgstr "Modyfikuj G-code" #: /home/ruben/Projects/Cura/plugins/SupportEraser/__init__.py:12 msgctxt "@label" @@ -536,36 +461,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "Stwórz obszar, w którym podpory nie będą drukowane." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura zbiera anonimowe dane statystyczne." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "Zbieranie Danych" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "Więcej informacji" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Zobacz więcej informacji o tym, jakie dane przesyła Cura." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "Zezwól" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Zezwól Cura na wysyłanie anonimowych danych statystycznych, aby pomóc w wyborze przyszłych usprawnień Cura. Część twoich ustawień i preferencji jest wysyłana, a także wersja Cury i kod modelu który tniesz." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -596,56 +491,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Obraz GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Otwórz skompresowaną siatkę trójkątów" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "Cyfrowa wymiana zasobów COLLADA" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "Biblioteka glTF" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "Załączony JSON glTF" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Format trójkątów Stanforda" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Skompresowana cyfrowa wymiana zasobów COLLADA" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Nie można pociąć z obecnym materiałem, ponieważ nie jest on kompatybilny z wybraną maszyną lub konfiguracją." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "Nie można pociąć" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Nie można pociąć z bieżącymi ustawieniami. Następujące ustawienia mają błędy: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Nie można pokroić przez ustawienia osobne dla modelu. Następujące ustawienia mają błędy w jednym lub więcej modeli: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Nie można pociąć, ponieważ wieża czyszcząca lub jej pozycja(e) są niewłaściwe." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "Nie można pociąć, ponieważ obecne są obiekty powiązane z wyłączonym ekstruderem %s." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Nic do pocięcia, ponieważ żaden z modeli nie pasuje do obszaru roboczego. Proszę o przeskalowanie lub obrócenie modelu, żeby pasował." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "Nic do pocięcia, ponieważ żaden z modeli nie mieści się w obszarze roboczym lub jest przypisany do wyłączonego ekstrudera. Skaluj lub obróć modele, aby dopasować lub włącz ekstruder." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "Przetwarzanie warstw" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Informacja" @@ -660,14 +585,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Konfiguruj ustawienia każdego modelu z osobna" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Zalecane" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Niestandardowe" @@ -678,19 +601,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Plik 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Dysza" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Plik projektu {0} zawiera nieznany typ maszyny {1}. Nie można zaimportować maszyny. Zostaną zaimportowane modele." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Otwórz Plik Projektu" @@ -705,22 +628,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Plik G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analizowanie G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Szczegóły G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Przed wysłaniem pliku upewnij się, że G-code jest odpowiedni do konfiguracji drukarki. Przedstawienie G-kodu może nie być dokładne." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "Zarządzaj kopiami zapasowymi" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "Kopia zapasowa" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "Wystąpił błąd z listą kopii zapasowych." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "Wystąpił błąd podczas próby przywrócenia kopii zapasowej." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "Kopie zapasowe" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "Wgrywanie kopii zapasowej..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "Wystąpił błąd podczas wgrywania kopii zapasowej." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "Wgrywanie kopii zapasowej zakończone." + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -742,330 +708,451 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "Błąd zapisu pliku 3mf." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "Podgląd" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Wybierz aktualizacje" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Sprawdzanie" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Wypoziomuj stół" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Zewnętrzna ściana" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Ściany wewnętrzne" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Skin" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Wypełnienie" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Wypełnienie podpór" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Łączenie podpory" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Podpory" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Obwódka" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Ruch jałowy" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrakcja" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Inny" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Plik pocięty wcześniej {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" -msgstr "" +msgstr "Logowanie nie powiodło się" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Niewspierany" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Domyślne" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Plik już istnieje" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Plik {0} już istnieje. Czy na pewno chcesz go nadpisać?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Nie zastąpione" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Wybrany materiał jest niezgodny z wybranym urządzeniem lub konfiguracją." +msgid "Invalid file URL:" +msgstr "Nieprawidłowy adres URL pliku:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Niekompatybilny Materiał" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Ustawienia zostały zmienione w celu dopasowania do bieżącej dostępności ekstruderów:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "Ustawienia został zmienione, aby pasowały do obecnej dostępności extruderów: [%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Ustawienia zostały zaaktualizowane" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "Ekstruder(y) wyłączony(/e)" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Nieznany" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Nie udało się wyeksportować profilu do {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Nie można eksportować profilu do {0}: Wtyczka pisarza zgłosiła błąd." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Wyeksportowano profil do {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Eksport udany" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "Nie udało się zaimportować profilu z {0}: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "Nie powiódł się import profilu z {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "Nie można importować profilu z {0} przed dodaniem drukarki." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" -msgstr "" +msgstr "Brak niestandardowego profilu do importu w pliku {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Nie powiódł się import profilu z {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." -msgstr "" +msgstr "Profil {0} zawiera błędne dane, nie można go importować." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" -msgstr "" +msgstr "Błąd importu profilu z {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil zaimportowany {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Plik {0} nie zawiera żadnego poprawnego profilu." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profil {0} ma nieznany typ pliku lub jest uszkodzony." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Niestandardowy profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profilowi brakuje typu jakości." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Nie można znaleźć typu jakości {0} dla bieżącej konfiguracji." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Zewnętrzna ściana" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Ściany wewnętrzne" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Skin" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Wypełnienie" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Wypełnienie podpór" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Łączenie podpory" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Podpory" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Obwódka" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "Wieża czyszcząca" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Ruch jałowy" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retrakcja" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Inny" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Plik pocięty wcześniej {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "Następny" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "Grupa #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "Drukarki dostępne w sieci" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Zamknij" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "Drukarki lokalne" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Dodaj" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Anuluj" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Domyślne" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Wizualny" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Profil wizualny jest przeznaczony do drukowania prototypów i modeli z zamiarem podkreślenia wysokiej jakości wizualnej i powierzchni." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Inżynieria" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Profil inżynieryjny jest przeznaczony do drukowania prototypów funkcjonalnych i części końcowych z naciskiem na lepszą dokładność i lepszą tolerancję." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Szkic" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Profil szkicu służy do drukowania początkowych prototypów i weryfikacji koncepcji z naciskiem na krótki czasu drukowania." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Nie zastąpione" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Profile niestandardowe" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Wszystkie Wspierane Typy ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Wszystkie Pliki (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Niestandardowy materiał" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Niestandardowy" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Poniższa drukarka nie może być podłączona, ponieważ jest częścią grupy" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Dostępne drukarki sieciowe" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Wysokość obszaru roboczego została zmniejszona ze względu na wartość ustawienia Print Sequence (Sekwencja wydruku), aby zapobiec kolizji z wydrukowanymi modelami." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Obszar Roboczy" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "Nie można utworzyć archiwum z folderu danych użytkownika: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "Kopia zapasowa" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "Podjęto próbę przywrócenia kopii zapasowej Cura na podstawie niepoprawnych danych lub metadanych." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "Podjęto próbę przywrócenia kopii zapasowej Cura, która nie odpowiada obecnej wersji programu." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "Próbowano przywrócić kopię zapasową Cura, nowszą od aktualnej wersji." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "Nie można odczytać odpowiedzi." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Nie można uzyskać dostępu do serwera kont Ultimaker." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Proszę nadać wymagane uprawnienia podczas autoryzacji tej aplikacji." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Coś nieoczekiwanego się stało, podczas próby logowania, spróbuj ponownie." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Zwielokrotnienie i umieszczanie przedmiotów" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "Rozmieszczenie Obiektów" +msgid "Placing Objects" +msgstr "Umieść Obiekty" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Nie można znaleźć lokalizacji w obrębie obszaru roboczego dla wszystkich obiektów" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "Rozmieszczenie Obiektów" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Znajdowanie nowej lokalizacji obiektów" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "Szukanie Lokalizacji" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Nie można Znaleźć Lokalizacji" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Cura nie może się uruchomić" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1080,32 +1167,32 @@ msgstr "" "

    Proszę wyślij do nas ten Raport Błędu, aby rozwiązać problem.

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "Wyślij raport błędu do Ultimaker" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "Pokaż szczegółowy raport błędu" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "Pokaż folder konfiguracyjny" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "Zrób Backup i Zresetuj Konfigurację" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Raport Błędu" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" @@ -1116,321 +1203,285 @@ msgstr "" "

    Proszę użyj przycisku \"Wyślij raport\", aby wysłać raport błędu automatycznie na nasze serwery

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "Informacje o systemie" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Nieznany" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Wersja Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "Platforma" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Wersja Qt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "Wersja PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "Jeszcze nie uruchomiono
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • Wersja OpenGL: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • Wydawca OpenGL: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • OpenGL Renderer: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "Śledzenie błedu" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "Logi" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "Opis użytkownika" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "Opis użytkownika (Uwaga: programiści mogą nie mówić w Twoim języku, w miarę możliwości używaj angielskiego)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Wyślij raport" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ładowanie drukarek..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Ustawianie preferencji..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Ustawianie sceny ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ładowanie interfejsu ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Jednocześnie można załadować tylko jeden plik G-code. Pominięto importowanie {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Nie można otworzyć żadnego innego pliku, jeśli ładuje się G-code. Pominięto importowanie {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Wybrany model był zbyta mały do załadowania." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Ustawienia Drukarki" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Drukarka" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Ustawienia drukarki" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (Szerokość)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Głębokość)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Wysokość)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Kształt stołu roboczego" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "Początek na środku" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "Podgrzewany stół" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "Grzany obszar roboczy" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "Wersja G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" -msgstr "Ustawienia głowic drukujących" +msgstr "Ustawienia głowicy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Odległość od lewej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Odległość od przedniej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Odległość od prawej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Odległość od tylnej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" -msgstr "Wysokość ramy" +msgid "Gantry Height" +msgstr "Wysokość wózka" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "Różnica w wysokości pomiędzy końcówką dyszy i systemem suwnym (osie X i Y). Używane do unikania kolizji z poprzednimi wydrukami podczas drukowania \"Jeden na Raz\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Liczba ekstruderów" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "Początkowy G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "Komedy G-code, które są wykonywane na samym początku." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "Końcowy G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "Komendy G-code, które są wykonywane na samym końcu." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Drukarka" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "Ustawienia dyszy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Rozmiar dyszy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Kompatybilna średnica materiału" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Nominalna średnica filamentu wspierana przez drukarkę. Dokładna średnica będzie nadpisana przez materiał i/lub profil." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "Korekcja dyszy X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Korekcja dyszy Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" -msgstr "" +msgstr "Numer Wentylatora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" -msgstr "Początkowy G-code Ekstrudera" +msgstr "Początkowy G-code ekstrudera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" -msgstr "Końcowy G-code Ekstrudera" +msgstr "Końcowy G-code ekstrudera" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "Instaluj" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Zainstalowane" @@ -1440,69 +1491,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Nie można połączyć się z bazą danych pakietów Cura. Sprawdź swoje połączenie z internetem." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "oceny" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Wtyczki" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiał" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "Twoja ocena" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "Wersja" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "Ostatnia aktualizacja" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "Autor" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "Pobrań" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Nieznany" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "Zaloguj aby zainstalować lub aktualizować" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "Kup materiał na szpulach" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "Aktualizuj" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "Aktualizowanie" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "Zaktualizowano" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "Narzędzia" +msgid "Marketplace" +msgstr "Marketplace" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1512,7 +1576,7 @@ msgstr "Powrót" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:20 msgctxt "@title:window" msgid "Confirm uninstall" -msgstr "" +msgstr "Potwierdź deinstalację" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:50 msgctxt "@text:window" @@ -1529,52 +1593,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "Potwierdź" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "Musisz być zalogowany aby ocenić" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "Musisz zainstalować pakiety zanim będziesz mógł ocenić" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "Należy uruchomić ponownie Cura, aby zmiany w pakietach przyniosły efekt." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Zakończ Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Udział Społeczności" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Wtyczki Społeczności" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Materiały Podstawowe" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "Zainstalowano" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "Zostanie zainstalowane po ponownym uruchomieniu" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "Zaloguj aby aktualizować" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "Zainstaluj poprzednią wersję" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "Odinstaluj" @@ -1595,12 +1674,12 @@ msgstr "" "Musisz zaakceptować tę licencję, aby zainstalować ten plugin.\n" "Akceptujesz poniższe postanowienia?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Akceptuj" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Odrzuć" @@ -1610,22 +1689,62 @@ msgctxt "@label" msgid "Featured" msgstr "Polecane" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Zgodność" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Drukarka" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Stół roboczy" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Podpory" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Jakość" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "Dane Techniczne" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "Dane Bezpieczeństwa" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "Wskazówki Drukowania" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "Strona Internetowa" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "Uzyskiwanie pakietów..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "Strona internetowa" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-mail" @@ -1635,27 +1754,10 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "Niektóre rzeczy mogą być problematyczne podczas tego wydruku. Kliknij, aby zobaczyć porady dotyczące regulacji." -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Dziennik" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Zamknij" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" -msgstr "" +msgstr "Aktualizacja Oprogramowania Sprzętowego" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:39 msgctxt "@label" @@ -1680,12 +1782,12 @@ msgstr "Prześlij niestandardowe oprogramowanie" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:83 msgctxt "@label" msgid "Firmware can not be updated because there is no connection with the printer." -msgstr "" +msgstr "Oprogramowanie sprzętowe nie może być zaktualizowane, ponieważ nie ma połączenia z drukarką." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:91 msgctxt "@label" msgid "Firmware can not be updated because the connection with the printer does not support upgrading firmware." -msgstr "" +msgstr "Oprogramowanie sprzętowe nie może być zaktualizowane, ponieważ połączenie z drukarką nie wspiera usługi." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:98 msgctxt "@title:window" @@ -1727,426 +1829,505 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Aktualizacja oprogramowania nie powiodła się z powodu utraconego oprogramowania." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "Zgoda Użytkownika" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Zarządzaj drukarkami" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Istniejące Połączenie" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Szkło" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "Ta drukarka/grupa jest już dodana do Cura. Proszę wybierz inną drukarkę/grupę." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Zaktualizuj oprogramowanie drukarki, aby zdalnie zarządzać kolejką." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "Kamera nie jest dostępna, ponieważ nadzorujesz drukarkę w chmurze." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "Wczytywanie..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "Niedostępne" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "Nieosiągalna" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "Zajęta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "Bez tytułu" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "Anonimowa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "Wymaga zmian konfiguracji" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "Szczegóły" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "Drukarka niedostępna" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "Pierwsza dostępna" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "W kolejce" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "Zarządzaj w przeglądarce" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "W kolejce nie ma zadań drukowania. Potnij i wyślij zadanie, aby dodać." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "Zadania druku" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "Łączny czas druku" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "Oczekiwanie na" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Połącz się z drukarką sieciową" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"Aby drukować bezpośrednio w drukarce w sieci, upewnij się, że drukarka jest podłączona do sieci przy użyciu kabla sieciowego lub sieci WIFI. Jeśli nie podłączasz Cury do drukarki, możesz nadal używać dysku USB do przesyłania plików g-code do drukarki.\n" -"\n" -"Wybierz drukarkę z poniższej listy:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Aby drukować bezpośrednio na drukarce przez sieć, upewnij się, że drukarka jest podłączona do sieci za pomocą kabla sieciowego lub do sieci WIFI. Jeśli nie podłączysz Cury do drukarki, możesz nadal używać napędu USB do przesyłania plików G-Code do drukarki." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Dodaj" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Wybierz swoją drukarkę z poniższej listy:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Edycja" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Usunąć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Odśwież" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Jeżeli twojej drukarki nie ma na liście, przeczytaj poradnik o problemach z drukowaniem przez sieć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Rodzaj" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Wersja oprogramowania" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Adres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Ta drukarka nie jest skonfigurowana jako host dla grupy drukarek." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Ta drukarka jest hostem grupy %1 drukarek." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Drukarka pod tym adresem jeszcze nie odpowiedziała." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Połącz" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Nieprawidłowy adres IP" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "Proszę podać poprawny adres IP." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Adres drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Wpisz adres IP lub nazwę hosta drukarki w sieci." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "Wprowadź adres IP drukarki." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Drukuj" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Drukuj przez sieć" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "Wybór drukarki" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "Niedostępny" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "Nieosiągalny" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "Dostępny" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "Anulowano" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Zakończono" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "Przygotowywanie" +msgid "Preparing..." +msgstr "Przygotowyję..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "Wstrzymywanie" +msgid "Aborting..." +msgstr "Przerywanie..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "Wznawianie" +msgid "Pausing..." +msgstr "Zatrzymywanie..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "Wstrzymana" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "Przywracanie..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Konieczne są działania" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "Zakończone %1 z %2" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Drukuj przez sieć" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Drukuj" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "Oczekiwanie na: Niedostępną drukarkę" +msgid "Printer selection" +msgstr "Wybór drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "Oczekiwanie na: Pierwszą dostępną" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "Oczekiwanie na: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "Zarządzaj kolejką" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "W kolejce" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "Drukowanie" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "Zarządzaj drukarkami" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "Przesuń na początek" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "Usuń" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "Ponów" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "Zatrzymywanie..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "Przywracanie..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "Wstrzymaj" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "Przerywanie..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "Anuluj" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "Czy jesteś pewien, że chcesz przesunąć %1 na początek kolejki?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "Przesuń zadanie drukowania na początek" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "Czy jesteś pewien, że chcesz usunąć %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "Usuń zadanie drukowania" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "Czy jesteś pewien, że chcesz anulować %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Anuluj wydruk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Podłącz do drukarki" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "Zmiany konfiguracji" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Uaktywnij konfigurację" +msgid "Override" +msgstr "Nadpisz" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Załaduj konfigurację drukarki do Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "Przypisana drukarka, %1, wymaga następującej zmiany konfiguracji:" +msgstr[1] "Przypisana drukarka, %1, wymaga następujących zmian konfiguracji:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "Drukarka %1 jest przypisana, ale zadanie zawiera nieznaną konfigurację materiału." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "Zmień materiał %1 z %2 na %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "Załaduj %3 jako materiał %1 (Nie można nadpisać)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "Zmień rdzeń drukujący %1 z %2 na %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "Zmień stół na %1 (Nie można nadpisać)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "Nadpisanie spowoduje użycie określonych ustawień w istniejącej konfiguracji drukarki. Może to spowodować niepowodzenie druku." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "Aluminum" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"Upewnij się, że drukarka ma połączenie:\n" +"- Sprawdź, czy drukarka jest włączona.\n" +"- Sprawdź, czy drukarka jest podłączona do sieci.\n" +"- Sprawdź, czy jesteś zalogowany, aby znaleźć drukarki podłączone do chmury." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "Podłącz drukarkę do sieci." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "Pokaż instrukcję użytkownika online" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Schemat kolorów" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Kolor materiału" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Rodzaj linii" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Szybkość Posuwu" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Grubość warstwy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Tryb zgodności" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "Pokaż ruch jałowy" +msgid "Travels" +msgstr "Ruchy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "Pokaż pomocnik" +msgid "Helpers" +msgstr "Pomoce" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "Pokaż powłokę" +msgid "Shell" +msgstr "Obrys" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "Pokaż wypełnienie" +msgid "Infill" +msgstr "Wypełnienie" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Pokaż tylko najwyższe warstwy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Pokaż 5 Szczegółowych Warstw" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Góra/ Dół" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Wewnętrzna ściana" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "max" @@ -2161,40 +2342,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Skrypty post-processingu" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Dodaj skrypt" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Ustawienia" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Zmień aktywne skrypty post-processingu" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "Wiećej informacji o zbieraniu anonimowych danych" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura wysyła anonimowe dane do Ultimaker w celu polepszenia jakości wydruków oraz interakcji z użytkownikiem. Poniżej podano przykład wszystkich danych, jakie mogą być przesyłane." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura zbiera anonimowe dane w celu poprawy jakości druku i komfortu użytkowania. Poniżej znajduje się przykład wszystkich udostępnianych danych:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "Nie chcę przesyłać tych danych" +msgid "I don't want to send anonymous data" +msgstr "Nie chcę wysyłać anonimowych danych" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Zezwól na przesyłanie tych danych do Ultimaker i pomóż nam ulepszać Cura" +msgid "Allow sending anonymous data" +msgstr "Pozwól na wysyłanie anonimowych danych" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2243,19 +2424,19 @@ msgstr "Głębokość (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "Domyślnie białe piksele przedstawiają wysokie punkty na siatce, a czarne piksele przedstawiają niskie punkty na siatce. Zmień tę opcję, aby odwrócić takie zachowanie, tak żeby czarne piksele przedstawiają wysokie punkty na siatce, a białe piksele przedstawiają niskie punkty na siatce." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Jaśniejszy jest wyższy" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "Dla litofanów ciemne piksele powinny odpowiadać grubszym miejscom, aby zablokować więcej światła. Dla zaznaczenia wysokości map, jaśniejsze piksele oznaczają wyższy teren, więc jaśniejsze piksele powinny odpowiadać wyższym położeniom w wygenerowanym modelu 3D." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Ciemniejsze jest wyższe" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Jaśniejszy jest wyższy" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2266,81 +2447,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Wygładzanie" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Typ siatki" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Normalny model" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Drukuj jako podpora" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Nie wspieraj nałożeń z innymi modelami" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Modyfikuj ustawienia nakładania z innymi modelami" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modyfikuj ustawienia wypełnienia innych modeli" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Wybierz ustawienia" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Wybierz Ustawienia, aby dostosować ten model" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtr..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Pokaż wszystko" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Typ siatki" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Normalny model" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Drukuj jako podpora" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modyfikuj ustawienia nakładania" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Nie wspieraj nałożenia" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Tylko wypełnienie" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Wybierz ustawienia" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Otwórz projekt" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Zaktualizuj istniejące" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Utwórz nowy" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Podsumowanie - Projekt Cura" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Ustawienia drukarki" @@ -2356,20 +2536,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Aktualizacja" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Utwórz nowy" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Typ" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "Grupa drukarek" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Ustawienia profilu" @@ -2380,226 +2565,222 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Jak powinien zostać rozwiązany problem z profilem?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nazwa" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Cel" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Nie w profilu" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 nadpisanie" msgstr[1] "%1 Zastępuje" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Pochodna z" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 nadpisanie" msgstr[1] "%1, %2 zastępuje" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Ustawienia materiału" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Jak powinien zostać rozwiązany problem z materiałem?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Ustawienie widoczności" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Tryb" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Widoczne ustawienie:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 poza %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Ładowanie projektu usunie wszystkie modele z platformy roboczej." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Otwórz" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Wybierz ulepszenia drukarki" +msgid "My Backups" +msgstr "Moje Kopie Zapasowe" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Proszę wybrać ulepszenia w tym Ultimaker 2." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "Nie masz żadnych kopii zapasowych. Użyj przycisku „Utwórz kopię zapasową”, aby go utworzyć." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "Podczas fazy podglądu będziesz ograniczony do 5 widocznych kopii zapasowych. Usuń kopię zapasową, aby zobaczyć starsze." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Wykonaj kopię zapasową i zsynchronizuj ustawienia Cura." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "Zaloguj" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Kopie zapasowe cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Wersja Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "Drukarki" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "Materiały" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "Profile" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "Pluginy" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "Przywróć" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "Usuń kopię zapasową" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "Czy na pewno chcesz usunąć tę kopię zapasową? Tej czynności nie można cofnąć." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "Przywróć kopię zapasową" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "Musisz zrestartować Curę przed przywróceniem kopii zapasowej. Czy chcesz teraz zamknąć Curę?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "Chcesz więcej?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "Utwórz kopię zapasową" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "Automatyczne tworzenie kopii zapasowej" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Automatycznie twórz kopie zapasowe każdego dnia, w którym uruchomiono Curę." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Poziomowanie stołu" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Aby upewnić się, że wydruki będą wychodziły świetne, możesz teraz wyregulować stół. Po kliknięciu przycisku \"Przejdź do następnego położenia\" dysza będzie się poruszać do różnych pozycji, które można wyregulować." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Dla każdej pozycji; Włóż kartkę papieru pod dyszę i wyreguluj wysokość stołu roboczego. Wysokość stołu jest prawidłowa, gdy papier stawia lekki opór." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Rozpocznij poziomowanie stołu roboczego" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Przejdź do następnego położenia" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Proszę wybrać ulepszenia wykonane w tym Ultimaker Original" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "Płyta grzewcza (zestaw oficjalny lub własnej roboty)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Sprawdź drukarkę" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "Dobrym pomysłem jest zrobienie kilku testów na swoim Ultimakera. Możesz pominąć ten krok, jeśli wiesz, że urządzenie jest funkcjonalne" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Rozpocznij sprawdzanie drukarki" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Połączenie: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Połączono" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Nie połączono" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Krańcówka min. X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Pracuje" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Niesprawdzone" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Krańcówka min. Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Krańcówka min. Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Sprawdzanie temperatury dyszy: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Zatrzymaj ogrzewanie" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Rozpocznij ogrzewanie" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Kontrola temperatury płyty konstrukcyjnej:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Sprawdzone" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Wszystko w porządku! Skończono sprawdzenie." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2611,7 +2792,6 @@ msgid "Printer does not accept commands" msgstr "Drukarka nie akceptuje poleceń" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "W naprawie. Sprawdź drukarkę" @@ -2622,19 +2802,16 @@ msgid "Lost connection with the printer" msgstr "Utracone połączenie z drukarką" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Drukowanie..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Wstrzymano" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Przygotowywanie ..." @@ -2654,235 +2831,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Czy na pewno chcesz przerwać drukowanie?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Odrzuć lub zachowaj zmiany" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"Dostosowałeś ustawienia profilu.\n" -"Chcesz zachować, czy usunąć te ustawienia?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Ustawienia profilu" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Domyślne" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Dostosowane" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Zawsze pytaj o to" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Odrzuć i nigdy nie pytaj" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Zachowaj i nigdy nie pytaj" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Odrzuć" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Zachowaj" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Utwórz nowy profil" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informacja" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Potwierdź Zmianę Średnicy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Średnica nowego filamentu została ustawiona na %1mm, i nie jest kompatybilna z bieżącym ekstruderem. Czy chcesz kontynuować?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Wyświetlana nazwa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marka" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Typ Materiału" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Kolor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Właściwości" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Gęstość" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Średnica" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Koszt Filamentu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Waga filamentu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Długość Filamentu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Koszt na metr" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Ten materiał jest powiązany z %1 i dzieli się niekórymi swoimi właściwościami." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Odłącz materiał" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Opis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Informacje dotyczące przyczepności" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Ustawienia druku" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Aktywuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Stwórz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplikuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Eksportuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Drukarka" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Potwierdź Usunięcie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Czy na pewno chcesz usunąć %1? Nie można tego cofnąć!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importuj Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Nie można zaimportować materiału %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Udało się zaimportować materiał %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Eksportuj Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Nie udało się wyeksportować materiału do %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Udało się wyeksportować materiał do %1" @@ -2892,669 +3010,521 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Widoczność ustawienia" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Zaznacz wszystko" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Przeliczone" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Ustawienie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Aktualny" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Jednostka" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Ogólny" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Interfejs" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Język:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Waluta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Motyw:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Musisz zrestartować aplikację, aby te zmiany zaczęły obowiązywać." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Tnij automatycznie podczas zmiany ustawień." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatyczne Cięcie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Zachowanie okna edycji" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Zaznacz nieobsługiwane obszary modelu na czerwono. Bez wsparcia te obszary nie będą drukowane prawidłowo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Wyświetl zwis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Przenosi kamerę, aby model był w centrum widoku, gdy wybrano model" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Wyśrodkuj kamerę kiedy przedmiot jest zaznaczony" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Czy domyślne zachowanie zoomu powinno zostać odwrócone?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Odwróć kierunek zoomu kamery." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Czy przybliżanie powinno poruszać się w kierunku myszy?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Powiększanie w kierunku myszy nie jest obsługiwane w danej perspektywie." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Przybliżaj w kierunku myszy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Czy modele na platformie powinny być przenoszone w taki sposób, aby nie przecinały się?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Upewnij się, że modele są oddzielone" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Czy modele na platformie powinny być przesunięte w dół, aby dotknęły stołu roboczego?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Automatycznie upuść modele na stół roboczy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Pokaż wiadomości ostrzegawcze w czytniku g-code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Wiadomość ostrzegawcza w czytniku g-code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Czy warstwa powinna być wymuszona w trybie zgodności?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Wymuszenie widoku warstw w trybie zgodności (wymaga ponownego uruchomienia)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Czy Cura powinna się otwierać w miejscu, w którym została zamknięta?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Przywróć pozycję okna przy starcie" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Jakiego rodzaju kamery należy użyć do renderowania?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Renderowanie z kamery: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspektywiczny" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Rzut ortograficzny" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Otwieranie i zapisywanie plików" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Czy modele powinny być skalowane do wielkości obszaru roboczego, jeśli są zbyt duże?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Skaluj duże modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Model może wydawać się bardzo mały, jeśli jego jednostka jest na przykład w metrach, a nie w milimetrach. Czy takie modele powinny być skalowane?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Skaluj bardzo małe modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Czy modele powinny zostać zaznaczone po załadowaniu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Zaznaczaj modele po załadowaniu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Czy przedrostek oparty na nazwie drukarki powinien być automatycznie dodawany do nazwy zadania?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Dodaj przedrostek maszyny do nazwy zadania" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Czy podsumowanie powinno być wyświetlane podczas zapisu projektu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Pokaż okno podsumowania podczas zapisywaniu projektu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Domyślne zachowanie podczas otwierania pliku projektu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Domyślne zachowanie podczas otwierania pliku projektu: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Zawsze pytaj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Zawsze otwieraj jako projekt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Zawsze importuj modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Kiedy dokonasz zmian w profilu i przełączysz się na inny, zostanie wyświetlone okno z pytaniem, czy chcesz zachować twoje zmiany, czy nie. Możesz też wybrać domyślne zachowanie, żeby to okno już nigdy nie było pokazywane." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Domyślne zachowanie dla zmienionych ustawień podczas zmiany profilu na inny: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Zawsze pytaj o to" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Zawsze odrzucaj wprowadzone zmiany" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Zawsze przenoś wprowadzone zmiany do nowego profilu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Prywatność" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Czy Cura ma sprawdzać dostępność aktualizacji podczas uruchamiania programu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Sprawdź, dostępność aktualizacji podczas uruchamiania" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Czy anonimowe dane na temat wydruku mają być wysyłane do Ultimaker? Uwaga. Żadne modele, adresy IP, ani żadne inne dane osobiste nie będą wysyłane i/lub przechowywane." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Wyślij (anonimowe) informacje o drukowaniu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Więcej informacji" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "Eksperymentalne" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Użyj funkcji wielu pól roboczych" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "Użyj funkcji wielu pól roboczych (wymagany restart)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Drukarki" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Zmień nazwę" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Typ drukarki:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Połączenie:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "Drukarka nie jest podłączona." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "Stan:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "Oczekiwanie na zadanie drukowania" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "Oczekiwanie na wyczyszczenie stołu roboczego" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Przerywanie drukowania..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Stwórz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplikuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Stwórz profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "Podaj nazwę tego profilu." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplikuj profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Zmień nazwę profilu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importuj Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Eksportuj Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Drukarka: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Chronione profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Profile niestandardowe" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Aktualizuj profil z bieżącymi ustawieniami" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Odrzuć bieżące zmiany" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Ten profil używa ustawień domyślnych określonych przez drukarkę, dlatego nie ma żadnych ustawień z poniższej liście." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Aktualne ustawienia odpowiadają wybranemu profilowi." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Ustawienia ogólne" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Dodaj drukarkę" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Nazwa drukarki:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Dodaj drukarkę" +msgid "Marketplace" +msgstr "Marketplace" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&Plik" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&Edytuj" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Widok" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "Opcje" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "&Rozszerzenia" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "Preferencje" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "P&omoc" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Nowy projekt" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Czy na pewno chcesz rozpocząć nowy projekt? Spowoduje to wyczyszczenie stołu i niezapisanych ustawień." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "Bez tytułu" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "O Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "version: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "Kompletne rozwiązanie do druku przestrzennego." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura jest rozwijana przez firmę Ultimaker B.V. we współpracy ze społecznością.\n" -"Cura z dumą korzysta z następujących projektów open source:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Graficzny interfejs użytkownika" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Struktura aplikacji" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "Generator g-code" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Biblioteka komunikacji międzyprocesowej" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Język programowania" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "Framework GUI" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "Powiązania Frameworka GUI" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "Biblioteka Powiązań C/C++" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Format wymiany danych" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Wsparcie biblioteki do obliczeń naukowych" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Wsparcie biblioteki dla szybszej matematyki" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Wsparcie biblioteki do obsługi plików STL" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Wsparcie biblioteki do obsługi plików 3MF" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Biblioteka komunikacji szeregowej" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "Bilbiotek poszukująca Zeroconf" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Biblioteka edytująca pola" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Biblioteka Python HTTP" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Czcionka" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "Ikony SVG" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Wdrożenie aplikacji pomiędzy dystrybucjami Linux" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Profil:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Niektóre wartości ustawień różnią się od wartości zapisanych w profilu.\n" -"\n" -"Kliknij, aby otworzyć menedżer profili." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Szukanie..." +msgid "Search settings" +msgstr "Ustawienia wyszukiwania" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Skopiuj wartość do wszystkich ekstruderów" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Skopiuj wszystkie zmienione wartości do wszystkich ekstruderów" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ukryj tę opcję" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nie pokazuj tej opcji" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pozostaw tę opcję widoczną" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Skonfiguruj widoczność ustawień ..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "Schowaj wszystkie" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "Rozwiń wszystkie" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3565,27 +3535,32 @@ msgstr "" "\n" "Kliknij, aby te ustawienia były widoczne." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "To ustawienie nie jest używane, ponieważ wszystkie ustawienia, na które wpływa, są nadpisane." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Wpływać" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Pod wpływem" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "To ustawienie jest dzielone pomiędzy wszystkimi ekstruderami. Zmiana tutaj spowoduje zmianę dla wszystkich ekstruderów." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Wartość jest pobierana z osobna dla każdego ekstrudera " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3596,7 +3571,7 @@ msgstr "" "\n" "Kliknij, aby przywrócić wartość z profilu." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3607,116 +3582,212 @@ msgstr "" "\n" "Kliknij, aby przywrócić wartość obliczoną." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "Nie ma profilu %1 dla konfiguracji w ekstruderze %2. Zamiast tego zostaną użyte domyślne cale" +msgstr[1] "Nie ma profilu %1 dla konfiguracji w ekstruderach %2. Zamiast tego zostaną użyte domyślne cale" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "Polecane" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "Niestandardowe" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "Stopniowe wypełnienie" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "Stopniowe wypełnienie stopniowo zwiększa ilość wypełnień w górę." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "Podpory" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Generuje podpory wspierające części modelu, które mają zwis. Bez tych podpór takie części mogłyby spaść podczas drukowania." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "Przyczepność" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Włącz drukowanie obrysu lub tratwy. Spowoduje to dodanie płaskiej powierzchni wokół lub pod Twoim obiektem, która jest łatwa do usunięcia po wydruku." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Zmodyfikowałeś ustawienia profilu. Jeżeli chcesz je zmienić, przejdź do trybu niestandardowego." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "Wł" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "Wył" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Eksperymentalne" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "Profil" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Niektóre wartości ustawień różnią się od wartości zapisanych w profilu.\n" +"\n" +"Kliknij, aby otworzyć menedżer profili." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Profile niestandardowe" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "Ustawienia druku niedostępne. Plik .gcode nie może być modyfikowany." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "Kontrola drukarką" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "Pozycja Swobodnego Ruchu" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "Dystans Swobodnego Ruchu" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "Wyślij G-code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "Wyślij niestandardową komendę G-code do podłączonej drukarki. Naciśnij 'enter', aby wysłać komendę." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Ekstruder" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Docelowa temperatura głowicy. Głowica będzie się rozgrzewać lub chłodzić do tej temperatury. Jeżeli jest równe 0, grzanie głowicy będzie wyłączone." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Aktualna temperatura tej głowicy." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Temperatura do wstępnego podgrzewania głowicy." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Anuluj" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Podgrzewanie wstępne" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Podgrzej głowicę przed drukowaniem. Możesz w dalszym ciągu dostosowywać drukowanie podczas podgrzewania i nie będziesz musiał czekać na podgrzanie głowicy kiedy będziesz gotowy." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Kolor materiału w tym ekstruderze." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Materiał w głowicy drukującej." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Dysza włożona do tego ekstrudera." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "Drukarka nie jest podłączona." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Stół roboczy" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Temperatura docelowa podgrzewanego stołu. Stół rozgrzeje się lub schłodzi w kierunku tej temperatury. Jeśli ustawione jest 0, grzanie stołu jest wyłączone." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Bieżąca temperatura podgrzewanego stołu." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Temperatura do wstępnego podgrzewania stołu." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Przed drukowaniem podgrzej stół. W dalszym ciągu można dostosowywać druk podczas nagrzewania, a nie będziesz musiał czekać na rozgrzanie stołu, gdy będziesz gotowy do drukowania." @@ -3726,12 +3797,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Ulubione" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Podstawowe" @@ -3746,17 +3817,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "Drukarki lokalne" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&Widok" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "&Drukarka" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&Materiał" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Ustaw jako aktywną głowicę" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "Włącz Ekstruder" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "Wyłącz Ekstruder" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Pozycja kamery" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Widok z kamery" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Perspektywiczny" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Rzut ortograficzny" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "P&ole robocze" @@ -3776,6 +3882,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Ustaw Widoczność Ustawień..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "&Zapisz..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&Eksportuj..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "Eksportuj Zaznaczenie..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3795,656 +3916,509 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Liczba kopii" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "Dostępne konfiguracje" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "Konfiguracje" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "Ekstruder" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "Wybierz konfigurację" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "Tak" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "Konfiguracje" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "Nie" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "Ładowanie dostępnych konfiguracji z drukarki..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "Konfiguracje są niedostępne, ponieważ drukarka jest odłączona." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "Niestandardowe" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "Drukarka" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "Włączona" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Materiał" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "Użyj kleju dla lepszej przyczepności dla tej kombinacji materiałów." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "Ta konfiguracja jest niedostępna, ponieważ %1 jest nierozpoznany. Przejdź do %2, aby pobrać prawidłowy profil materiału." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "Marketplace" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Otwórz &ostatnio używane" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Ustawienia druku" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"Konfiguracja wydruku jest wyłączona\n" -"Pliki G-code nie mogą zostać zmodyfikowane" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00godz. 00min." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "Specyfikacja czasu" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "Szacowanie kosztów" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "Razem:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Zalecana konfiguracja wydruku

    Drukowanie z zalecanymi ustawieniami dla wybranej drukarki, materiału i jakości." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Niestandardowa konfiguracja wydruku

    Drukowanie z precyzyjną kontrolą nad każdym elementem procesu cięcia." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Aktywny wydruk" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Nazwa pracy" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Czas druku" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Szacowany czas pozostały" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "Typ widoku" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Lista obiektów" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "Cześć %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Konto Ultimaker" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "Wyloguj" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "Zaloguj" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "Nowa generacja systemu drukowania 3D" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- Wysyłaj zadania druku do drukarek Ultimaker poza siecią lokalną\n" +"- Przechowuj ustawienia Ultimaker Cura w chmurze, aby używać w każdym miejscu\n" +"- Uzyskaj wyłączny dostęp do profili materiałów wiodących marek" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "Utwórz konto" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "Szacunkowy czas niedostępny" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "Szacunkowy koszt niedostępny" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "Podgląd" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "Cięcie..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "Nie można pociąć" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "Przetwarzanie" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "Potnij" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "Rozpocznij proces cięcia" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "Anuluj" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "Szacunkowy czas" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "Szacunkowy materiał" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "Podłączone drukarki" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "Zdefiniowane drukarki" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "Dodaj drukarkę" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "Zarządzaj drukarkami" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "Pokaż przewodnik rozwiązywania problemów online" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Przełącz tryb pełnoekranowy" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Wyłącz tryb pełnoekranowy" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Cofnij" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Ponów" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Zamknij" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "Widok 3D" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "Widok z przodu" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "Widok z góry" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "Widok z lewej strony" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "Widok z prawej strony" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Konfiguruj Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Dodaj drukarkę..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Zarządzaj drukarkami..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Zarządzaj materiałami..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Aktualizuj profil z bieżącymi ustawieniami" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Odrzuć bieżące zmiany" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Utwórz profil z bieżących ustawień..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Zarządzaj profilami..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Pokaż dokumentację internetową" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Zgłoś błąd" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "Co nowego" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "O..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "Usuń wybrany model" msgstr[1] "Usuń wybrane modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Wyśrodkuj wybrany model" msgstr[1] "Wyśrodkuj wybrane modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Rozmnóż wybrany model" msgstr[1] "Rozmnóż wybrane modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Usuń model" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Wyśrodkuj model na platformie" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Grupuj modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Rozgrupuj modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Połącz modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Powiel model..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Wybierz wszystkie modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Wyczyść stół" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Przeładuj wszystkie modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "Rozłóż Wszystkie Modele na Wszystkie Platformy Robocze" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Ułóż wszystkie modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Wybór ułożenia" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Zresetuj wszystkie pozycje modelu" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Zresetuj wszystkie przekształcenia modelu" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Otwórz plik(i)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nowy projekt..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Pokaż &dziennik silnika..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Pokaż folder konfiguracji" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "Przeglądaj pakiety..." +msgid "&Marketplace" +msgstr "&Marketplace" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "Rozłóż/Schowaj Pasek Boczny" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Proszę załaduj model 3D" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Gotowy do cięcia" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Cięcie..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Gotowy do %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Nie można pociąć" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Cięcie niedostępne" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "Potnij aktualny wydruk" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "Przerwij proces cięcia" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Przygotuj" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Anuluj" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Wybierz aktywne urządzenie wyjściowe" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Otwórz plik(i)" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Znaleziono jeden lub więcej plików projektu w wybranych plikach. Możesz otwierać tylko jeden plik projektu na raz. Proponujemy importowanie tylko modeli z tych plików. Czy chcesz kontynuować?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Importuj wszystkie jako modele" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Cura Ultimaker" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&Plik" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "&Zapisz..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&Eksportuj..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "Eksportuj Zaznaczenie..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&Edytuj" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "&Widok" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "&Ustawienia" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "&Drukarka" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Materiał" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Ustaw jako aktywną głowicę" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "Włącz Ekstruder" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "Wyłącz Ekstruder" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Pole robocze" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profil" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "&Rozszerzenia" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "&Narzędzia" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "Preferencje" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "P&omoc" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Ten pakiet zostanie zainstalowany po ponownym uruchomieniu." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Otwórz plik" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ustawienia" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Nowy projekt" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Czy na pewno chcesz rozpocząć nowy projekt? Spowoduje to wyczyszczenie stołu i niezapisanych ustawień." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Zamykanie Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Czy jesteś pewien, że chcesz zakończyć Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Otwórz plik(i)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Instaluj pakiety" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Otwórz plik(i)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Znaleziono jeden lub więcej plików G-code w wybranych plikach. Możesz otwierać tylko jeden plik G-code jednocześnie. Jeśli chcesz otworzyć plik G-code, proszę wybierz tylko jeden." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Zapisz projekt" +msgid "Add Printer" +msgstr "Dodaj drukarkę" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Pole robocze" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Ekstruder %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & materiał" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Nie pokazuj podsumowania projektu podczas ponownego zapisywania" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Zapisz" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Wysokość warstwy" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "Ten profil jakości nie jest dostępny dla wybranego materiału i konfiguracji dyszy. Proszę to zmienić, aby włączyć ten profil jakości" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Niestandardowy profil jest obecnie aktywny. Aby włączyć pasek jakości, wybierz domyślny profil w zakładce Niestandardowe" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Prędkość Druku" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Wolniej" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Szybciej" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "Zmodyfikowałeś ustawienia profilu. Jeżeli chcesz je zmienić, przejdź do trybu niestandardowego." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Wypełnienie" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Stopniowe wypełnienie stopniowo zwiększa ilość wypełnień w górę." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Włącz stopniowane" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Generuj podpory" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Generuje podpory wspierające części modelu, które mają zwis. Bez tych podpór takie części mogłyby spaść podczas drukowania." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Wybierz, który ekstruder ma służyć do drukowania podpór. Powoduje to tworzenie podpór poniżej modelu, aby zapobiec spadaniu lub drukowaniu modelu w powietrzu." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Popraw przycz. modelu" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Włącz drukowanie obrysu lub tratwy. Spowoduje to dodanie płaskiej powierzchni wokół lub pod Twoim obiektem, która jest łatwa do usunięcia po wydruku." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "Potrzebujesz pomocy w ulepszaniu wydruków?
    Przeczytaj instrukcje dotyczące rozwiązywania problemów" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "Co nowego" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4453,75 +4427,503 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "Drukuj Wybrany Model z %1" msgstr[1] "Drukuj Wybrane Modele z %1" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Odrzuć lub zachowaj zmiany" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"Dostosowałeś ustawienia profilu.\n" +"Chcesz zachować, czy usunąć te ustawienia?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Ustawienia profilu" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Domyślne" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Dostosowane" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Odrzuć i nigdy nie pytaj" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Zachowaj i nigdy nie pytaj" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Odrzuć" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Zachowaj" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Utwórz nowy profil" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "O Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "version: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "Kompletne rozwiązanie do druku przestrzennego." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura jest rozwijana przez firmę Ultimaker B.V. we współpracy ze społecznością.\n" +"Cura z dumą korzysta z następujących projektów open source:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Graficzny interfejs użytkownika" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Struktura aplikacji" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "Generator g-code" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Biblioteka komunikacji międzyprocesowej" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Język programowania" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "Framework GUI" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "Powiązania Frameworka GUI" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "Biblioteka Powiązań C/C++" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Format wymiany danych" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Wsparcie biblioteki do obliczeń naukowych" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Wsparcie biblioteki dla szybszej matematyki" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Wsparcie biblioteki do obsługi plików STL" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "Biblioteka pomocnicza do obsługi obiektów płaskich" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "Biblioteka pomocnicza do obsługi siatek trójkątów" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "Biblioteka pomocnicza do analizy złożonych sieci" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Wsparcie biblioteki do obsługi plików 3MF" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "Biblioteka pomocy dla metadanych plików i przesyłania strumieniowego" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Biblioteka komunikacji szeregowej" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "Bilbiotek poszukująca Zeroconf" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Biblioteka edytująca pola" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Biblioteka Python HTTP" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Czcionka" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "Ikony SVG" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Wdrożenie aplikacji pomiędzy dystrybucjami Linux" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Znaleziono jeden lub więcej plików projektu w wybranych plikach. Możesz otwierać tylko jeden plik projektu na raz. Proponujemy importowanie tylko modeli z tych plików. Czy chcesz kontynuować?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Importuj wszystkie jako modele" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Zapisz projekt" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Ekstruder %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & materiał" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "Materiał" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Nie pokazuj podsumowania projektu podczas ponownego zapisywania" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Zapisz" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Otwórz plik projektu" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Jest to plik projektu Cura. Czy chcesz otworzyć go jako projekt, czy zaimportować z niego modele?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Zapamiętaj mój wybór" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Otwórz jako projekt" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importuj modele" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Dziennik silnika" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "Typ drukarki" +msgid "Empty" +msgstr "Pusty" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Materiał" +msgid "Add a printer" +msgstr "Dodaj drukarkę" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "Użyj kleju z tą kombinacją materiałów" +msgid "Add a networked printer" +msgstr "Dodaj drukarkę sieciową" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "Sprawdź kompatybilność" +msgid "Add a non-networked printer" +msgstr "Dodaj drukarkę niesieciową" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Kliknij, aby sprawdzić zgodność materiału na Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "Dodaj drukarkę przez IP" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Pokaż tylko aktualną platformę roboczą" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Wprowadź adres IP drukarki." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Rozłóż na wszystkich platformach roboczych" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Dodaj" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Rozłóż na obecnej platformie roboczej" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "Nie można połączyć się z urządzeniem." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "Drukarka pod tym adresem jeszcze nie odpowiedziała." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "Ta drukarka nie może zostać dodana, ponieważ jest nieznana lub nie jest hostem grupy." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "Wstecz" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "Połącz" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "Dalej" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "Umowa z użytkownikiem" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "Zgadzam się" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "Odrzuć i zamknij" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Pomóż nam ulepszyć Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura zbiera anonimowe dane w celu poprawy jakości druku i komfortu użytkownika, w tym:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "Typy maszyn" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "Zużycie materiału" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "Ilość warstw" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "Ustawienia druku" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Dane zebrane przez Ultimaker Cura nie będą zawierać żadnych prywatnych danych osobowych." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "Więcej informacji" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Co nowego w Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "Nie znaleziono drukarki w Twojej sieci." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "Odśwież" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "Dodaj drukarkę przez IP" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "Rozwiązywanie problemów" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "Nazwa drukarki" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "Podaj nazwę drukarki" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Chmura Ultimaker" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "Nowa generacja systemu drukowania 3D" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- Wysyłaj zadania druku do drukarek Ultimaker poza siecią lokalną" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Przechowuj ustawienia Ultimaker Cura w chmurze, aby używać w każdym miejscu" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- Uzyskaj wyłączny dostęp do profili materiałów wiodących marek" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "Koniec" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "Stwórz konto" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Witaj w Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"Wykonaj poniższe kroki, aby skonfigurować\n" +"Ultimaker Cura. To zajmie tylko kilka chwil." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "Rozpocznij" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Widok 3D" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Widok z przodu" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Widok z góry" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Widok z lewej strony" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Widok z prawej strony" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4583,45 +4985,25 @@ msgctxt "name" msgid "Model Checker" msgstr "Sprawdzacz Modelu" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Wsypuje zawartość wszystkich ustawień do pliku HTML." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Tryb Boga" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Pokazuje zmiany od ostatniej sprawdzonej wersji." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Lista zmian" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "Dostarcza działanie, pozwalające na aktualizację oprogramowania sprzętowego." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "Aktualizacja oprogramowania sprzętowego" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Utwórz charakterystyczny profil zmiany jakości." +msgid "Provides support for reading AMF files." +msgstr "Zapewnia wsparcie dla czytania plików AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Charakterystyka Profilu" +msgid "AMF Reader" +msgstr "Czytnik AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -4633,26 +5015,6 @@ msgctxt "name" msgid "USB printing" msgstr "Drukowanie USB" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "Zapytaj użytkownika jednokrotnie, czy zgadza się z warunkami naszej licencji." - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "ZgodaUżytkownika" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Umożliwia zapisanie wyników cięcia jako plik X3G, aby wspierać drukarki obsługujące ten format (Malyan, Makerbot oraz inne oparte o oprogramowanie Sailfish)." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "Zapisywacz X3G" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4691,17 +5053,17 @@ msgstr "Zapewnia wsparcie dla podłączania i zapisywania dysków zewnętrznych. #: RemovableDriveOutputDevice/plugin.json msgctxt "name" msgid "Removable Drive Output Device Plugin" -msgstr "Wtyczka Urządzenia Wyjścia Dysku Zewn." +msgstr "Wtyczka Urządzenia Wyjścia Dysku Zewnętrznego" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Zarządza ustawieniami połączenia sieciowego z drukarkami Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Zarządza połączeniami z sieciowymi drukarkami Ultimaker." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Połączenie Sieciowe UM3" +msgid "Ultimaker Network Connection" +msgstr "Połączenie sieciowe Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -4763,6 +5125,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Usuwacz Podpór" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Zapewnia obsługę odczytu pakietów formatu Ultimaker." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "Czytnik UFP" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4823,6 +5195,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Ulepszenie Wersji z 3.3 do 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Uaktualnia konfiguracje z Cura 4.3 to Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Uaktualnij wersję 4.3 do 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4843,6 +5225,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Ulepszenie Wersji 2.7 do 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Uaktualnia konfiguracje z Cura 3.5 to Cura 4.0." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "Uaktualnij wersję 3.5 do 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4853,6 +5245,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "Ulepszenie Wersji z 3.4 do 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Uaktualnia konfiguracje z Cura 4.0 to Cura 4.1." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "Uaktualnij wersję 4.0 do 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4863,6 +5265,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Ulepszenie Wersji 3.0 do 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Uaktualnia konfiguracje z Cura 4.1 to Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Uaktualnij wersję 4.1 do 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4893,6 +5305,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Ulepszenie Wersji z 2.2 do 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Uaktualnia konfiguracje z Cura 4.2 to Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Uaktualnij wersję 4.2 do 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4903,6 +5325,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Czytnik Obrazu" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Zapewnia wsparcie dla czytania plików modeli." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Czytnik siatki trójkątów" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4953,6 +5385,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "Czytnik G-code" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "Utwórz kopię zapasową i przywróć konfigurację." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Kopie zapasowe Cura" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4973,6 +5415,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF Writer" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Dostarcza podgląd w Cura." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "Podgląd" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4993,9 +5445,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Czytnik Profili Cura" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "Wygeneruj G-code przed zapisem." +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Spłaszczyć aktywne ustawienia" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Profil został spłaszczony i aktywowany." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Zapisuje do plików X3g" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Plik X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Plik X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Otwórz skompresowaną siatkę trójkątów" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -5005,6 +5477,1005 @@ msgstr "Czytnik Profili Cura" #~ msgid "Profile Assistant" #~ msgstr "Asystent Profilu" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Spróbuj ponownie" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Rdzeń drukujący" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Nie wspieraj nałożeń z innymi modelami" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Modyfikuj ustawienia nakładania z innymi modelami" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modyfikuj ustawienia wypełnienia innych modeli" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Zaktualizuj istniejące" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Niewspierany" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Poprzedni" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Końcówka" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Próbny wydruk" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Lista kontrolna" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Proszę wybrać ulepszenia w tym Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Renderowanie z kamery: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Użyj funkcji wielu pól roboczych" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Użyj funkcji wielu pól roboczych (wymagany restart)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Domyślne profile" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "ustawienia wyszukiwania" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Wysokość warstwy" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Ten profil jakości nie jest dostępny dla bieżącej konfiguracji materiałów i dysz. Zmień ją, aby włączyć ten profil jakości." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Niestandardowy profil jest obecnie aktywny. Aby włączyć pasek jakości, wybierz domyślny profil w zakładce Niestandardowe" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Pole robocze" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Pole robocze" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Wsypuje zawartość wszystkich ustawień do pliku HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Tryb Boga" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Stwórz spłaszczony profil zmian jakości." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Spłaszcz profil" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Pozwala twórcą materiałów na tworzenie nowych profili materiałów i jakości używając rozwijanego menu." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Asystent Profilów Druku" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Połączono przez sieć." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Połączono przez sieć. Proszę zatwierdzić żądanie dostępu na drukarce." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Połączono przez sieć. Brak dostępu do sterowania drukarką." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Wymagany dostęp do drukarki. Proszę zatwierdzić prośbę na drukarce" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Status uwierzytelniania" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Status Uwierzytelniania" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Prześlij ponownie żądanie dostępu" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Dostęp do drukarki został zaakceptowany" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Brak dostępu do tej drukarki. Nie można wysłać zadania drukowania." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Poproś o dostęp" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Wyślij żądanie dostępu do drukarki" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Nie można uruchomić nowego zadania drukowania." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Wystąpił problem z konfiguracją twojego Ultimaker'a, przez który nie można rozpocząć wydruku. Proszę rozwiąż te problemy przed kontynuowaniem." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Niedopasowana konfiguracja" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Czy na pewno chcesz drukować z wybraną konfiguracją?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Występuje niezgodność między konfiguracją lub kalibracją drukarki a Curą. Aby uzyskać najlepszy rezultat, zawsze tnij dla Print core'ów i materiałów włożonych do drukarki." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Wysyłanie nowych zadań (tymczasowo) zostało zablokowane, dalej wysyłane jest poprzednie zadanie." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Wysyłanie danych do drukarki" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Wysyłanie danych" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Brak Printcore'a w slocie {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Brak załadowanego materiału w slocie {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "Inny PrintCore (Cura: {cura_printcore_name}, Drukarka: {remote_printcore_name}) wybrany dla extrudera {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Różne materiały (Cura: {0}, Drukarka: {1}) wybrane do dzyszy {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Synchronizuj się z drukarką" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Czy chcesz używać bieżącej konfiguracji drukarki w programie Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "PrintCore'y i/lub materiały w drukarce różnią się od tych w obecnym projekcie. Dla najlepszego rezultatu, zawsze tnij dla wybranych PrinCore'ów i materiałów, które są umieszczone w drukarce." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Zobacz w Monitorze" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} skończyła drukowanie '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "Zadanie '{job_name}' zostało zakończone." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Drukowanie zakończone" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Pusty" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Nieznany" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Błąd Chmury" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Nie można eksportować zadania druku." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Wystąpił błąd połączenia z chmurą." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Przesyłanie z Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Połącz z Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Nie pytaj więcej dla tej drukarki." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Możesz teraz wysłać i nadzorować zadania druku z każdego miejsca, używając konta Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Połączono!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Odnów połączenie" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "Drukarka zdefiniowana w profilu {0} ({1}) nie jest zgodna z bieżącą drukarką ({2}), nie można jej importować." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Nie powiódł się import profilu z {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Istniejące Połączenie" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Ta drukarka/grupa jest już dodana do Cura. Proszę wybierz inną drukarkę/grupę." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Podaj adres IP lub nazwę hosta drukarki w sieci." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Podłącz do drukarki" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Przewodnik po ustawieniach Cura" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Zarządza ustawieniami połączenia sieciowego z drukarkami Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Połączenie Sieciowe UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Zawiera dodatkowe informacje i objaśnienia dotyczące ustawień w Cura, z obrazami i animacjami." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Przewodnik po ustawieniach" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Przewodnik po ustawieniach Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Ustawienia został zmienione, aby pasowały do obecnej dostępności extruderów: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Opis użytkownika" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Te opcje nie są dostępne, ponieważ nadzorujesz drukarkę w chmurze." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Idź do Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Wszystkie zadania są drukowane." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Poważ historię druku" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Aby drukować bezpośrednio w drukarce w sieci, upewnij się, że drukarka jest podłączona do sieci przy użyciu kabla sieciowego lub sieci WIFI. Jeśli nie podłączasz Cury do drukarki, możesz nadal używać dysku USB do przesyłania plików g-code do drukarki.\n" +#~ "\n" +#~ "Wybierz drukarkę z poniższej listy:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Upewnij się czy drukarka jest połączona:\n" +#~ "- Sprawdź czy drukarka jest włączona.\n" +#~ "- Sprawdź czy drukarka jest podłączona do sieci." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Pokaż tylko aktualną platformę roboczą" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Rozłóż na wszystkich platformach roboczych" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Rozłóż na obecnej platformie roboczej" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Umożliwia zapisanie wyników cięcia jako plik X3G, aby wspierać drukarki obsługujące ten format (Malyan, Makerbot oraz inne oparte o oprogramowanie Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "Zapisywacz X3G" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Czyta pliki SVG jako ścieżki, do debugowania ruchów drukarki." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Czytnik ścieżek SVG" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Lista zmian" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Pokaż Dziennik" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "Wysyłanie danych do zdalnego klastra" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Połącz z Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura zbiera anonimowe dane statystyczne." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "Zbieranie Danych" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "Więcej informacji" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Zobacz więcej informacji o tym, jakie dane przesyła Cura." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "Zezwól" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Zezwól Cura na wysyłanie anonimowych danych statystycznych, aby pomóc w wyborze przyszłych usprawnień Cura. Część twoich ustawień i preferencji jest wysyłana, a także wersja Cury i kod modelu który tniesz." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "Obliczanie" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "Drukarki dostępne w sieci" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "Drukarki lokalne" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "Podjęto próbę przywrócenia kopii zapasowej Cura, która nie odpowiada obecnej wersji programu." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Ustawienia Drukarki" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Ustawienia drukarki" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Początek na środku" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Podgrzewany stół" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Ustawienia głowic drukujących" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Odległość od lewej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Odległość od przedniej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Odległość od prawej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Odległość od tylnej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Wysokość ramy" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "Różnica w wysokości pomiędzy końcówką dyszy i systemem suwnym (osie X i Y). Używane do unikania kolizji z poprzednimi wydrukami podczas drukowania \"Jeden na Raz\"." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "Początkowy G-code" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "Komedy G-code, które są wykonywane na samym początku." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "Końcowy G-code" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "Komendy G-code, które są wykonywane na samym końcu." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Ustawienia dyszy" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "Nominalna średnica filamentu wspierana przez drukarkę. Dokładna średnica będzie nadpisana przez materiał i/lub profil." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "Początkowy G-code Ekstrudera" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "Końcowy G-code Ekstrudera" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Dziennik" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "Zgoda Użytkownika" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Wpisz adres IP lub nazwę hosta drukarki w sieci." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "Wybierz drukarkę połączoną z siecią, aby nadzorować." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Połącz drukarkę Ultimaker z twoją siecią lokalną." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura wysyła anonimowe dane do Ultimaker w celu polepszenia jakości wydruków oraz interakcji z użytkownikiem. Poniżej podano przykład wszystkich danych, jakie mogą być przesyłane." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "Nie chcę wysyłać danych" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Pozwól wysłać te dane do Ultimakera i pomóż nam ulepszyć Curę" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "Żaden wydruk nie jest zaznaczony" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "Domyślnie białe piksele przedstawiają wysokie punkty na siatce, a czarne piksele przedstawiają niskie punkty na siatce. Zmień tę opcję, aby odwrócić takie zachowanie, tak żeby czarne piksele przedstawiają wysokie punkty na siatce, a białe piksele przedstawiają niskie punkty na siatce." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Wybierz ulepszenia drukarki" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Wybierz, który ekstruder ma służyć do drukowania podpór. Powoduje to tworzenie podpór poniżej modelu, aby zapobiec spadaniu lub drukowaniu modelu w powietrzu." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Ten profil jakości nie jest dostępny dla bieżącej konfiguracji materiałów i dysz. Zmień je, aby włączyć ten profil jakości" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "Ustawienia druku niedostępne. Plik .gcode nie może być modyfikowany." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "Zobacz tabelę kompatybilności materiałów" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "Typy widoków" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "Cześć " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- Wysyłaj zadania druku do drukarek Ultimaker poza siecią lokalną\n" +#~ "- Przechowuj ustawienia Ultimaker Cura w chmurze, aby używać w każdym miejscu\n" +#~ "- Uzyskaj wyłączny dostęp do profili materiałów wiodących marek" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "Nie można pociąć" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "Specyfikacja czasu" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "Specyfikacja materiału" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Dodaj drukarkę do Cura" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "Z poniższej listy wybierz drukarkę, której chcesz użyć.\n" +#~ "\n" +#~ "Jeśli drukarki nie ma na liście, użyj „Niestandardowa drukarka FFF” z kategorii „Niestandardowy” i dostosuj ustawienia, aby pasowały do drukarki w następnym oknie dialogowym." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "Producent" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "Nazwa drukarki" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Dodaj drukarkę" + +#~ msgid "Modify G-Code" +#~ msgstr "Modyfikuj G-Code" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "Nic do pocięcia, ponieważ żaden z modeli nie pasuje do obszaru roboczego. Proszę o przeskalowanie lub obrócenie modelu, żeby pasował." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "Wybrany materiał jest niezgodny z wybranym urządzeniem lub konfiguracją." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Niekompatybilny Materiał" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Nie udało się zaimportować profilu z {0}: {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "Narzędzia" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "Niedostępny" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "Nieosiągalny" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "Dostępny" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Przygotowywanie" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "Wstrzymywanie" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "Wznawianie" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "Oczekiwanie na: Niedostępną drukarkę" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "Oczekiwanie na: Pierwszą dostępną" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "Oczekiwanie na: " + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "Zarządzaj kolejką" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "Drukowanie" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "Zarządzaj drukarkami" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Uaktywnij konfigurację" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Załaduj konfigurację drukarki do Cura" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Pokaż ruch jałowy" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Pokaż pomocnik" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Pokaż powłokę" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Pokaż wypełnienie" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "Nie chcę przesyłać tych danych" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Zezwól na przesyłanie tych danych do Ultimaker i pomóż nam ulepszać Cura" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Typ drukarki:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Połączenie:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "Stan:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "Oczekiwanie na zadanie drukowania" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "Oczekiwanie na wyczyszczenie stołu roboczego" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "Przerywanie drukowania..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Chronione profile" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Nazwa drukarki:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Profil:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Szukanie..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "Schowaj wszystkie" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "Rozwiń wszystkie" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "Dostępne konfiguracje" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "Ekstruder" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "Tak" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "Nie" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Ustawienia druku" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Konfiguracja wydruku jest wyłączona\n" +#~ "Pliki G-code nie mogą zostać zmodyfikowane" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00godz. 00min." + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "Specyfikacja czasu" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "Szacowanie kosztów" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "Razem:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Zalecana konfiguracja wydruku

    Drukowanie z zalecanymi ustawieniami dla wybranej drukarki, materiału i jakości." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Niestandardowa konfiguracja wydruku

    Drukowanie z precyzyjną kontrolą nad każdym elementem procesu cięcia." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "Pokaż &dziennik silnika..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "Przeglądaj pakiety..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "Rozłóż/Schowaj Pasek Boczny" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Proszę załaduj model 3D" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Gotowy do cięcia" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "Gotowy do %1" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "Cięcie niedostępne" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "Potnij aktualny wydruk" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "Przerwij proces cięcia" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Przygotuj" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Wybierz aktywne urządzenie wyjściowe" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "&Widok" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "&Ustawienia" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "&Narzędzia" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Otwórz plik" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Ten profil jakości nie jest dostępny dla wybranego materiału i konfiguracji dyszy. Proszę to zmienić, aby włączyć ten profil jakości" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Prędkość Druku" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Wolniej" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Szybciej" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Włącz stopniowane" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Generuj podpory" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Popraw przycz. modelu" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "Potrzebujesz pomocy w ulepszaniu wydruków?
    Przeczytaj instrukcje dotyczące rozwiązywania problemów" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Dziennik silnika" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "Typ drukarki" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "Użyj kleju z tą kombinacją materiałów" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Sprawdź kompatybilność" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Kliknij, aby sprawdzić zgodność materiału na Ultimaker.com." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Pokazuje zmiany od ostatniej sprawdzonej wersji." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Lista zmian" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Utwórz charakterystyczny profil zmiany jakości." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Charakterystyka Profilu" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "Zapytaj użytkownika jednokrotnie, czy zgadza się z warunkami naszej licencji." + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "ZgodaUżytkownika" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "Wygeneruj G-code przed zapisem." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Uaktualnij oprogramowanie układowe" @@ -5029,22 +6500,6 @@ msgstr "Czytnik Profili Cura" #~ msgid "Confirm uninstall " #~ msgstr "Potwierdź odinstalowanie " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "Wstrzymana" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "Poprzedni" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "Następny" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "Końcówka" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1m / ~ %2g / ~ %4 %3" @@ -5053,26 +6508,10 @@ msgstr "Czytnik Profili Cura" #~ msgid "%1m / ~ %2g" #~ msgstr "%1m / ~ %2g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "Próbny wydruk" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "Lista kontrolna" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "Uaktualnij oprogramowanie" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "Pozwala twórcą materiałów na tworzenie nowych profili materiałów i jakości używając rozwijanego menu." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "Asystent Profilów Druku" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Drukuj z Doodle3D WiFi-Box" @@ -5161,10 +6600,6 @@ msgstr "Czytnik Profili Cura" #~ msgid "Lost connection with the printer" #~ msgstr "Utracono połączenie z drukarką" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "Niedostępne" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "Nieznane" diff --git a/resources/i18n/pl_PL/fdmextruder.def.json.po b/resources/i18n/pl_PL/fdmextruder.def.json.po index 02527d4849..3983ca9326 100644 --- a/resources/i18n/pl_PL/fdmextruder.def.json.po +++ b/resources/i18n/pl_PL/fdmextruder.def.json.po @@ -1,22 +1,22 @@ # Cura JSON setting files -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.3\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-03-30 20:33+0200\n" -"Last-Translator: 'Jaguś' Paweł Jagusiak and Andrzej 'anraf1001' Rafalski\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" +"Last-Translator: Mariusz 'Virgin71' Matłosz \n" "Language-Team: reprapy.pl\n" "Language: pl_PL\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==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.1.1\n" #: fdmextruder.def.json msgctxt "machine_settings label" @@ -85,8 +85,8 @@ msgstr "Początkowy G-code Ekstrudera" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "Początkowy G-code wywoływany kiedy ekstruder uruchamia się." +msgid "Start g-code to execute when switching to this extruder." +msgstr "Początkowy G-code do wykonania przy przełączeniu na ten ekstruder." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -125,8 +125,8 @@ msgstr "Końcowy G-code Ekstrudera" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "Końcowy G-code, który jest wywoływany, kiedy ekstruder jest wyłączany." +msgid "End g-code to execute when switching away from this extruder." +msgstr "Końcowy G-code do wykonania przy przełączeniu na ten ekstruder." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -171,12 +171,12 @@ msgstr "Współrzędna Z, w której dysza jest czyszczona na początku wydruku." #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number label" msgid "Extruder Print Cooling Fan" -msgstr "" +msgstr "Wentylator ekstrudera" #: fdmextruder.def.json msgctxt "machine_extruder_cooling_fan_number description" msgid "The number of the print cooling fan associated with this extruder. Only change this from the default value of 0 when you have a different print cooling fan for each extruder." -msgstr "" +msgstr "Numer wentylatora przypisanego do ekstrudera. Zmień z domyślnej wartości 0, tylko w przypadku, kiedy posiadasz oddzielny wentylator dla każdego ekstrudera." #: fdmextruder.def.json msgctxt "platform_adhesion label" @@ -227,3 +227,11 @@ msgstr "Średnica" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Dostosuj średnicę użytego filamentu. Dopasuj tę wartość do średnicy używanego filamentu." + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "Początkowy G-code wywoływany kiedy ekstruder uruchamia się." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "Końcowy G-code, który jest wywoływany, kiedy ekstruder jest wyłączany." diff --git a/resources/i18n/pl_PL/fdmprinter.def.json.po b/resources/i18n/pl_PL/fdmprinter.def.json.po index a684c98068..b6ebd6474a 100644 --- a/resources/i18n/pl_PL/fdmprinter.def.json.po +++ b/resources/i18n/pl_PL/fdmprinter.def.json.po @@ -1,21 +1,21 @@ # Cura JSON setting files -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.3\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-21 21:52+0200\n" -"Last-Translator: 'Jaguś' Paweł Jagusiak, Andrzej 'anraf1001' Rafalski and Jakub 'drzejkopf' Świeciński\n" -"Language-Team: reprapy.pl\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-11-15 15:34+0100\n" +"Last-Translator: Mariusz Matłosz \n" +"Language-Team: Mariusz Matłosz , reprapy.pl\n" "Language: pl_PL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.1.1\n" +"X-Generator: Poedit 2.2.4\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -45,7 +45,7 @@ msgstr "Pokaż Warianty Maszyny" #: fdmprinter.def.json msgctxt "machine_show_variants description" msgid "Whether to show the different variants of this machine, which are described in separate json files." -msgstr "Czy wyświetlać różna warianty drukarki, które są opisane w oddzielnych plikach JSON?" +msgstr "Określa czy wyświetlać różne warianty drukarki, które są opisane w oddzielnych plikach JSON." #: fdmprinter.def.json msgctxt "machine_start_gcode label" @@ -213,7 +213,17 @@ msgstr "Posiada Podgrzewany Stół" #: fdmprinter.def.json msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." -msgstr "Czy maszyna ma podgrzewany stół?" +msgstr "Określa czy maszyna posiada podgrzewany stół." + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Posiada komorę stabilizacji temperatury" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Określa czy drukarka posiada zamkniętą komorę stabilizującą temperaturę." #: fdmprinter.def.json msgctxt "machine_center_is_zero label" @@ -237,7 +247,7 @@ msgstr "Liczba zespołów esktruderów. Zespół ekstrudera to kombinacja podajn #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "Liczba Ekstruderów, które są dostępne" #: fdmprinter.def.json @@ -247,8 +257,8 @@ msgstr "Liczba zespołów ekstruderów, które są dostępne; automatycznie usta #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" -msgstr "Zewn. średnica dyszy" +msgid "Outer Nozzle Diameter" +msgstr "Zew. średnica dyszy" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter description" @@ -257,7 +267,7 @@ msgstr "Zewnętrzna średnica końcówki dyszy." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "Długość dyszy" #: fdmprinter.def.json @@ -267,7 +277,7 @@ msgstr "Różnica w wysokości pomiędzy końcówką dyszy a najniższą częśc #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "Kąt dyszy" #: fdmprinter.def.json @@ -277,7 +287,7 @@ msgstr "Kąt pomiędzy poziomą powierzchnią a częścią stożkową bezpośred #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "Długość strefy cieplnej" #: fdmprinter.def.json @@ -307,7 +317,7 @@ msgstr "Czy kontrolować temperaturę przez Cura? Wyłącz tę funkcję, aby kon #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "Prędkość nagrzewania" #: fdmprinter.def.json @@ -317,8 +327,8 @@ msgstr "Szybkość (° C/s.), z którą dysza ogrzewa się - średnia z normlane #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" -msgstr "Prędkość Chłodzenia" +msgid "Cool Down Speed" +msgstr "Prędkość chłodzenia" #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed description" @@ -337,8 +347,8 @@ msgstr "Minimalny czas, w jakim ekstruder musi być nieużywany, aby schłodzić #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" -msgstr "Wersja G-code" +msgid "G-code Flavor" +msgstr "Smak G-code" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" @@ -402,8 +412,8 @@ msgstr "Używaj komend retrakcji (G10/G11) zamiast używać współrzędną E w #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" -msgstr "Zakazane obszary" +msgid "Disallowed Areas" +msgstr "Niedozwolone obszary" #: fdmprinter.def.json msgctxt "machine_disallowed_areas description" @@ -422,8 +432,8 @@ msgstr "Lista obszarów, w które dysze nie mogą wjeżdżać." #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" -msgstr "Obszar Głowicy Drukarki" +msgid "Machine Head Polygon" +msgstr "Obszar głowicy drukarki" #: fdmprinter.def.json msgctxt "machine_head_polygon description" @@ -432,8 +442,8 @@ msgstr "Sylwetka 2D głowicy drukującej (bez nasadki wentylatora)." #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" -msgstr "Obszar Głowicy i Wentylatora Drukarki" +msgid "Machine Head & Fan Polygon" +msgstr "Obszar głowicy i wentylatora drukarki" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" @@ -442,8 +452,8 @@ msgstr "Sylwetka 2D głowicy drukującej (z nasadką wentylatora)." #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" -msgstr "Wysokość Suwnicy (Gantry)" +msgid "Gantry Height" +msgstr "Wysokość wózka" #: fdmprinter.def.json msgctxt "gantry_height description" @@ -472,8 +482,8 @@ msgstr "Wewnętrzna średnica dyszy. Użyj tego ustawienia, jeśli używasz dysz #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" -msgstr "Przesunięcie Ekstrudera" +msgid "Offset with Extruder" +msgstr "Przesunięcie ekstrudera" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords description" @@ -763,7 +773,7 @@ msgstr "Szerokość jednej linii ściany." #: fdmprinter.def.json msgctxt "wall_line_width_0 label" msgid "Outer Wall Line Width" -msgstr "Szerokość Linii Ściany Zewn." +msgstr "Szerokość Linii Ścian(y) Zewnętrznych" #: fdmprinter.def.json msgctxt "wall_line_width_0 description" @@ -773,7 +783,7 @@ msgstr "Szerokość zewnętrznej linii ściany. Przez obniżenie tej wartości w #: fdmprinter.def.json msgctxt "wall_line_width_x label" msgid "Inner Wall(s) Line Width" -msgstr "Szerokość Linii Ściany Wewn." +msgstr "Szerokość Linii Ścian(y) Wewnętnych" #: fdmprinter.def.json msgctxt "wall_line_width_x description" @@ -793,7 +803,7 @@ msgstr "Szerokość pojedynczej górnej/dolnej linii." #: fdmprinter.def.json msgctxt "infill_line_width label" msgid "Infill Line Width" -msgstr "Szerokość Linii Wypełn." +msgstr "Szerokość Linii Wypełnienia" #: fdmprinter.def.json msgctxt "infill_line_width description" @@ -853,7 +863,7 @@ msgstr "Szerokość pojedynczej linii podłoża podpory." #: fdmprinter.def.json msgctxt "prime_tower_line_width label" msgid "Prime Tower Line Width" -msgstr "Szerokość Linii Wieży Czyszcz." +msgstr "Szerokość Linii Wieży Czyszczczenia" #: fdmprinter.def.json msgctxt "prime_tower_line_width description" @@ -893,7 +903,7 @@ msgstr "Ekstruder używany do drukowania ścian. Używane w multi-esktruzji." #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" -msgstr "Esktruder Zewn. Ściany" +msgstr "Esktruder Zew. Ściany" #: fdmprinter.def.json msgctxt "wall_0_extruder_nr description" @@ -903,7 +913,7 @@ msgstr "Esktruder używany do drukowania zewn. ściany. Używane w multi-ekstruz #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" msgid "Inner Wall Extruder" -msgstr "Ekstruder Wewn. Linii" +msgstr "Ekstruder Wew. Linii" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" @@ -933,7 +943,7 @@ msgstr "Liczba ścian. Przy obliczaniu za pomocą grubości ściany, ta wartoś #: fdmprinter.def.json msgctxt "wall_0_wipe_dist label" msgid "Outer Wall Wipe Distance" -msgstr "Długość Czyszczenia Zewn. Ściana" +msgstr "Długość Czyszczenia Zew. Ściana" #: fdmprinter.def.json msgctxt "wall_0_wipe_dist description" @@ -1020,6 +1030,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Liczba dolnych warstw. Przy obliczaniu grubości dołu ta wartość jest zaokrąglana do liczby całkowitej." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Początkowej warstwy dolne" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Liczba początkowych dolnych warstw, od stołu w górę. Obliczona na podstawie grubości spodu, wartość ta jest zaokrąglana do liczby całkowitej." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1078,7 +1098,7 @@ msgstr "Połącz Górne/Dolne Wieloboki" #: fdmprinter.def.json msgctxt "connect_skin_polygons description" msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality." -msgstr "" +msgstr "Połącz górne/dolne ścieżki, które przebiegają koło siebie. Włączenie tej opcji powoduje ograniczenie czasu ruchów jałowych dla wzorca koncentrycznego, ale ze względu na możliwość pojawienia się połączeń w połowie ścieżki wypełnienia, opcja ta może obniżyć jakość górnego wykończenia." #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1093,7 +1113,7 @@ msgstr "Lista całkowitych kierunków linii używana kiedy górne/dolne warstwy #: fdmprinter.def.json msgctxt "wall_0_inset label" msgid "Outer Wall Inset" -msgstr "Wkład Zewn. Ściany" +msgstr "Wkład Zew. Ściany" #: fdmprinter.def.json msgctxt "wall_0_inset description" @@ -1113,7 +1133,7 @@ msgstr "Optymalizuje kolejność, w jakiej będą drukowane ścianki w celu zred #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" -msgstr "Zewn. Ściany przed Wewn." +msgstr "Zew. Ściany Przed Wew" #: fdmprinter.def.json msgctxt "outer_inset_first description" @@ -1143,7 +1163,7 @@ msgstr "Kompensuje przepływ dla części, których ściana jest drukowana kiedy #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_0_enabled label" msgid "Compensate Outer Wall Overlaps" -msgstr "Komp. Zewn. Nakład. się Ścian" +msgstr "Komp. Zew. Nakład. się Ścian" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_0_enabled description" @@ -1153,7 +1173,7 @@ msgstr "Kompensuje przepływ dla części, których zewnętrzna ściana jest dru #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_x_enabled label" msgid "Compensate Inner Wall Overlaps" -msgstr "Komp. Wewn. Nakład. się Ścian" +msgstr "Komp. Wew. Nakład. się Ścian" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_x_enabled description" @@ -1270,6 +1290,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Najostrzejszy róg" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Pozycja szwu osi Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "Najbliższa pozycja startu druku każdej warstwy." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Lewy tył" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Tył" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Prawy tył" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Prawa" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Prawy przód" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Przód" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Lewy przód" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Lewa" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1297,8 +1367,8 @@ msgstr "Wybór Rogu Szwu" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Kontroluje, czy rogi na zewn. linii modelu wpływają na pozycję szwu. Brak oznacza, że rogi nie mają wpływu na pozycję szwu. Ukryj Szew powoduje, że szew będzie się bardziej pojawiał na wewn. rogach. Pokaż Szew powoduje, że szew będzie się bardziej pojawiał na zewn. rogach. Ukryj lub Pokaż Szew powoduje, że szew będzie się bardziej pojawiał na wewn. lub zewn. rogach." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Kontroluj, czy narożniki obrysu wpływają na położenie szwu. Brak oznacza, że rogi nie mają wpływu na tę pozycję. Ukryj szew zwiększa prawdopodobieństwo pojawienia się szwu w wewnętrznym rogu. Ujawnij szew zwiększa prawdopodobieństwo pojawienia się szwu w narożniku zewnętrznym. Ukryj lub odsłoń szew zwiększa prawdopodobieństwo, że szew pojawi się w rogu wewnętrznym lub zewnętrznym. Inteligentne ukrywanie odsłania zarówno narożniki wewnętrzne, jak i zewnętrzne, ale w miarę potrzeby wybiera wewnętrzne narożniki." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1320,6 +1390,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Ukryj lub Pokaż Szew" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Inteligentne ukrywanie" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1332,13 +1407,13 @@ msgstr "Kiedy włączone, współrzędne szwu są względne do każdego środka #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Zignoruj Małe Luki Z" +msgid "No Skin in Z Gaps" +msgstr "Brak wypełnienia w lukach osi Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Jeśli model ma małe, pionowe szczeliny, to można wykorzystać dodatkowe 5% mocy obliczeniowej do wygenerowania górnej i dolnej skóry w wąskich przestrzeniach. W takim wypadku, wyłącz tę opcję." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Gdy model ma małe pionowe szczeliny składające się z kilku warstw, powinna pojawić się powierzchnia zewnętrzna wokół tych warstw w wąskiej przestrzeni. Włącz, aby nie generować powierzchni zewnętrznej, jeśli odstęp pionowy jest bardzo mały. Poprawia to czas drukowania i czas cięcia, ale technicznie pozostawia wypełnienie bez wykończenia." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1357,8 +1432,8 @@ msgstr "Włącz Prasowanie" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Przejedź nad górną powierzchnią dodatkowy raz, ale bez ekstrudowania materiału. Topi to plastyk na górze, co powoduje gładszą powierzchnię." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Ponowne przejście po górnej powierzchni, tym razem wytłaczając bardzo mało materiału. Ma to na celu lepsze stopienie tworzywa na wierzchu, tworząc gładsze wykończenie. Ciśnienie w dyszy jest utrzymywane na wysokim poziomie, aby szczeliny na powierzchni były wypełnione materiałem." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1450,6 +1525,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Maksymalna nagła zmiana prędkości podczas przeprowadzania prasowania." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Procent Nakładania się Skóry" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Dostosuj zachodzenie pomiędzy ścianami, a (punktami końcowymi) linią obrysu, jako procent szerokości linii obrysu i najbardziej wewnętrznej ściany. Niewielkie zachodzenie na siebie pozwala ścianom połączyć się mocno z obrysem. Zauważ, że przy równej szerokości obrysu i szerokości ściany, każdy procent powyżej 50% może spowodować przekroczenie ściany przez obrys, ponieważ pozycja dyszy ekstrudera obrysu może sięgać poza środek ściany." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Nakładanie się Skóry" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Dostosuj zachodzenie pomiędzy ścianami, a (punktami końcowymi) linią obrysu. Niewielkie zachodzenie na siebie pozwala ścianom połączyć się mocno z obrysem. Zauważ, że przy równej szerokości obrysu i szerokości ściany, każdy procent powyżej 50% może spowodować przekroczenie ściany przez obrys, ponieważ pozycja dyszy ekstrudera obrysu może sięgać poza środek ściany." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1463,7 +1558,7 @@ msgstr "Wypełnienie" #: fdmprinter.def.json msgctxt "infill_extruder_nr label" msgid "Infill Extruder" -msgstr "Ekstruder Wypełn." +msgstr "Ekstruder Wypełnienia" #: fdmprinter.def.json msgctxt "infill_extruder_nr description" @@ -1473,7 +1568,7 @@ msgstr "Ekstruder używany do drukowania wypełnienia. Używane w multi-ekstruzj #: fdmprinter.def.json msgctxt "infill_sparse_density label" msgid "Infill Density" -msgstr "Gęstość Wypełn." +msgstr "Gęstość Wypełnnienia" #: fdmprinter.def.json msgctxt "infill_sparse_density description" @@ -1483,7 +1578,7 @@ msgstr "Dostosowuje gęstość wypełnienia wydruku." #: fdmprinter.def.json msgctxt "infill_line_distance label" msgid "Infill Line Distance" -msgstr "Odstęp Linii Wypełn." +msgstr "Odstęp Linii Wypełnienia" #: fdmprinter.def.json msgctxt "infill_line_distance description" @@ -1493,12 +1588,12 @@ msgstr "Odległość między drukowanymi liniami wypełnienia. To ustawienie jes #: fdmprinter.def.json msgctxt "infill_pattern label" msgid "Infill Pattern" -msgstr "Wzór Wypełn." +msgstr "Wzorzec Wypełnienia" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Gyroid, cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Wzorzec wypełnienia wydruku. Kierunek zamiany linii i zygzaka na alternatywnych warstwach, zmniejsza koszty materiałów. Wzorzec siatki, trójkąta, sześcianu, oktetu, ćwiartki sześciennej, krzyżyka i koncentryczny, są w pełni drukowane na każdej warstwie. Gyroid, sześcian, świartka sześcienna i oktet zmienia się z każdą warstwą, aby zapewnić bardziej równomierny rozkład sił w każdym kierunku." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1563,7 +1658,7 @@ msgstr "Krzyż 3D" #: fdmprinter.def.json msgctxt "infill_pattern option gyroid" msgid "Gyroid" -msgstr "" +msgstr "Gyroid" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" @@ -1588,7 +1683,7 @@ msgstr "Łączy ścieżki wypełnienia, gdy są one prowadzone obok siebie. Dla #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" -msgstr "Kierunek Linii Wypełn." +msgstr "Kierunek Linii Wypełnienia" #: fdmprinter.def.json msgctxt "infill_angles description" @@ -1615,6 +1710,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Wzór wypełnienia jest przesunięty o tę odległość wzdłuż osi Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Losowy punkt startu wypełnienia" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Losuje, która linia wypełnienia jest drukowana jako pierwsza. Dzięki temu nie ma zjawiska, kiedy jeden segment jest mocniejszy. Kosztem jest dodatkowy ruchu jałowy." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1652,7 +1757,7 @@ msgstr "Dodatek do promienia od środka każdej kostki, aby sprawdzić granicę #: fdmprinter.def.json msgctxt "infill_overlap label" msgid "Infill Overlap Percentage" -msgstr "Procent Nałożenia Wypełn." +msgstr "Procent Zachodzenia Wypełnienia" #: fdmprinter.def.json msgctxt "infill_overlap description" @@ -1662,37 +1767,17 @@ msgstr "Ilość nałożenia pomiędzy wypełnieniem i ścianami w procentach sze #: fdmprinter.def.json msgctxt "infill_overlap_mm label" msgid "Infill Overlap" -msgstr "Nałożenie Wypełn." +msgstr "Zachodzenie Wypełnienia" #: fdmprinter.def.json msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Ilość nałożenia pomiędzy wypełnieniem a ścianami. Nieznaczne nałożenie pozwala ściśle łączyć się z wypełnieniem." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Procent Nakładania się Skóry" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Ilość nałożenia pomiędzy skórą a ścianami w procentach szerokości linii skóry. Delikatne nałożenie pozawala na lepsze połączenie się ścian ze skórą. Jest to procent średniej szerokości linii skóry i wewnętrznej ściany." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Nakładanie się Skóry" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "Ilość nakładania się skóry i ścian. Lekkie nałożenie pozwala ściśle łączyć się ze skórą." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" -msgstr "Dług. Czyszczenia Wypełn." +msgstr "Długość Czyszczenia Wypełnienia" #: fdmprinter.def.json msgctxt "infill_wipe_dist description" @@ -1702,7 +1787,7 @@ msgstr "Odległość ruchu jałowego pomiędzy każdą linią wypełnienia, aby #: fdmprinter.def.json msgctxt "infill_sparse_thickness label" msgid "Infill Layer Thickness" -msgstr "Grubość Warstwy Wypełn." +msgstr "Grubość Warstwy Wypełnienia" #: fdmprinter.def.json msgctxt "infill_sparse_thickness description" @@ -1712,7 +1797,7 @@ msgstr "Grubość na warstwe materiału wypełniającego. Ta wartość powinna z #: fdmprinter.def.json msgctxt "gradual_infill_steps label" msgid "Gradual Infill Steps" -msgstr "Stopnie Stopniowego Wypełn." +msgstr "Stopniowe Kroki Wypełnienia" #: fdmprinter.def.json msgctxt "gradual_infill_steps description" @@ -1722,7 +1807,7 @@ msgstr "Liczba redukcji wypełnienia o połowę podczas drukowania poniżej gór #: fdmprinter.def.json msgctxt "gradual_infill_step_height label" msgid "Gradual Infill Step Height" -msgstr "Wys. Stopnia Stopniowego Wypełn." +msgstr "Wysokość Kroku Stopniowego Wypełnienia" #: fdmprinter.def.json msgctxt "gradual_infill_step_height description" @@ -1742,7 +1827,7 @@ msgstr "Wydrukuj wypełnienie przed wydrukowaniem ścian. Drukowanie ścian jako #: fdmprinter.def.json msgctxt "min_infill_area label" msgid "Minimum Infill Area" -msgstr "Min. Obszar Wypełn." +msgstr "Min. Obszar Wypełnienia" #: fdmprinter.def.json msgctxt "min_infill_area description" @@ -1869,6 +1954,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "Domyślna temperatura używana do drukowania. Powinno to być \"podstawowa\" temperatura materiału. Wszystkie inne temperatury powinny wykorzystywać przesunięcie względem tej wartości" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "Temperatura obszaru roboczego" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "Temperatura otoczenia druku. Jeśli ustawione jest 0, temperatura komory nie będzie ustawiana." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1979,6 +2074,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Współczynnik skurczu w procentach." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Materiał krystaliczny" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Czy ten rodzaj materiału odłamuje się łatwo po podgrzaniu (krystaliczny), czy też jest to tworzywo, które wytwarza długie splecione łańcuchy polimerowe (niekrystaliczne)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Odległość retrakcji anty-wyciekom" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Jak daleko materiał musi zostać wycofany, aby przestał wyciekać." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Szybkość retrakcji anty-wyciekom" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Jak szybko materiał musi zostać wycofany podczas zmiany filamentu, aby przestał wyciekać." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Odległość pęknięcia przy retrakcji" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Jak bardzo filament może być rozciągnięty, zanim pęknie, podczas ogrzewania." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Szybkość pękania przy retrakcji" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Jak szybko filament musi zostać wycofany, aby pękł podczas cofania." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Odległość łamania retrakcji" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Jak daleko wycofać filament, aby go złamać na czysto." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Szybkość łamania retrakcji" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "Jak szybko wycofać filament, aby go złamać na czysto." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatura pękania" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "Temperatura, w której filament można złamać na czysto." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1989,6 +2164,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Kompensacja przepływu: ilość ekstrudowanego materiału jest mnożona przez tę wartość." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Przepływ ścianek" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Ustawienie przepływu na liniach ścianek." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Przepływu ścianek zewnętrznych" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Ustawienie przepływu na liniach ścianek zewnętrznych." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Przepływu ścianek wewnętrznych" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Ustawienie przepływu na liniach ścianek wewnętrznych." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Przepływ warstwy górnej i dolnej" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Ustawienie przepływu na warstwie górnej i dolnej." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Przepływ ostatniej warstwy górnej" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Ustawienie przepływu na ostatniej warstwie górnej." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Przepływ wypełnienia" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Ustawienie przepływu wypełnienia." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Przepływ warstwy adhezyjnej" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Ustawienie przepływu warstwy adhezyjnej." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Przepływ podpór" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Ustawienie przepływu podpór." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Przepływ podłoża podpór" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Ustawienie przepływu podłoża podpór." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Przepływ dachów podpór" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Ustawienie przepływu podłoża ostatniej warstwy podpór." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Przepływ podstawy podpór" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Ustawienie przepływu pierwszej warstwy podpór." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Przepływ Wieży Czyszczącej" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Przepływ linii wieży podporowej." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2106,8 +2401,8 @@ msgstr "Ogranicz Retrakcje Pomiędzy Podporami" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Unikaj retrakcji podczas poruszania się od podpory do podpory w linii prostej. Załączenie tej funkcji spowoduje skrócenie czasu druku, lecz może prowadzić do nadmiernego nitkowania wewnątrz struktur podporowych." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Pomiń retrakcję, przechodząc od podpory do podpory w linii prostej. Włączenie tego ustawienia oszczędza czas drukowania, ale może prowadzić do nadmiernego ciągnięcia filamentu w strukturze nośnej." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2126,8 +2421,8 @@ msgstr "Długość Retrakcji przy Zmianie Dyszy" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "Długość retrakcji: Ustaw na 0, aby wyłączyć retrkację. To powinno ogólnie być takie samo jak długość strefy grzewczej." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "Wielkość retrakcji przy przełączaniu ekstruderów. Ustaw na 0, aby wyłączyć retrakcję. Powinno być ustawione tak samo jak długość strefy grzania." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2159,6 +2454,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Prędkość, z jaką filament jest cofany podczas retrakcji po zmianie dyszy." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Dodatkowa ekstruzja po zmianie dyszy" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Ilość dodatkowego materiału do podania po zmianie dyszy." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2182,7 +2487,7 @@ msgstr "Prędkość druku." #: fdmprinter.def.json msgctxt "speed_infill label" msgid "Infill Speed" -msgstr "Prędkość Wypełn." +msgstr "Prędkość Wypełnienia" #: fdmprinter.def.json msgctxt "speed_infill description" @@ -2202,7 +2507,7 @@ msgstr "Prędkość drukowania ścian." #: fdmprinter.def.json msgctxt "speed_wall_0 label" msgid "Outer Wall Speed" -msgstr "Prędkość Zewn. Ściany" +msgstr "Prędkość Zew. Ściany" #: fdmprinter.def.json msgctxt "speed_wall_0 description" @@ -2212,7 +2517,7 @@ msgstr "Szybkość, z jaką drukowane są ściany zewnętrzne. Drukując zewnęt #: fdmprinter.def.json msgctxt "speed_wall_x label" msgid "Inner Wall Speed" -msgstr "Prędkość Wewn. Ściany" +msgstr "Prędkość Wew. Ściany" #: fdmprinter.def.json msgctxt "speed_wall_x description" @@ -2292,7 +2597,7 @@ msgstr "Prędkość, z jaką drukowane jest podłoże podpory. Drukowanie z niż #: fdmprinter.def.json msgctxt "speed_prime_tower label" msgid "Prime Tower Speed" -msgstr "Prędkość Wieży Czyszcz." +msgstr "Prędkość Wieży Czyszczenia" #: fdmprinter.def.json msgctxt "speed_prime_tower description" @@ -2350,14 +2655,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Prędkość, z jaką jest drukowana obwódka i obrys. Zwykle jest to wykonywane przy szybkości początkowej warstwy, ale czasami możesz chcieć drukować obwódkę lub obrys z inną prędkością." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Maksymalna Prędk. Z" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Prędkość skoku Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Maksymalna prędkość przesuwu stołu. Ustawienie na zero powoduje, że druk używa domyślnych ustawień oprogramowania dla maksymalnej prędkości z." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Szybkość, z jaką wykonuje się pionowy ruch skoku Z. Jest to zwykle mniej niż prędkość drukowania, ponieważ trudniej się porusza stołem drukarki." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2432,7 +2737,7 @@ msgstr "Przyspieszenie, z jakim drukowane są ściany." #: fdmprinter.def.json msgctxt "acceleration_wall_0 label" msgid "Outer Wall Acceleration" -msgstr "Przyspieszenie Ściany Zewn." +msgstr "Przyspieszenie Ściany Zew" #: fdmprinter.def.json msgctxt "acceleration_wall_0 description" @@ -2442,7 +2747,7 @@ msgstr "Przyspieszenia, z jakim drukowane są ściany zewn." #: fdmprinter.def.json msgctxt "acceleration_wall_x label" msgid "Inner Wall Acceleration" -msgstr "Przyspieszenie Ściany Wewn." +msgstr "Przyspieszenie Ściany Wew" #: fdmprinter.def.json msgctxt "acceleration_wall_x description" @@ -2622,7 +2927,7 @@ msgstr "Maksymalna zmiana prędkości chwilowej z jaką drukowane są ściany." #: fdmprinter.def.json msgctxt "jerk_wall_0 label" msgid "Outer Wall Jerk" -msgstr "Zryw Zewn. Ścian" +msgstr "Zryw Zew. Ścian" #: fdmprinter.def.json msgctxt "jerk_wall_0 description" @@ -2632,7 +2937,7 @@ msgstr "Maksymalna zmiana prędkości chwilowej z jaką drukowane są zewnętrzn #: fdmprinter.def.json msgctxt "jerk_wall_x label" msgid "Inner Wall Jerk" -msgstr "Zryw Wewn. Ścian" +msgstr "Zryw Wew. Ścian" #: fdmprinter.def.json msgctxt "jerk_wall_x description" @@ -2786,8 +3091,8 @@ msgstr "Tryb Kombinowania" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "Kombinowanie utrzymuje dyszę w już zadrukowanych obszarach podczas ruchu jałowego. Powoduje to nieco dłuższe ruchy jałowe, ale zmniejsza potrzebę retrakcji. Jeśli kombinowanie jest wyłączone, materiał się cofa, a dysza przemieszcza się w linii prostej do następnego punktu. Można też unikać kombinowania na górnych/dolnych obszarach powłoki, a także kombinować tylko wewnątrz wypełnienia. Opcja \"Wewnątrz Wypełnienia\" wymusza takie samo zachowanie, jak opcja \"Nie w Powłoce\" we wcześniejszych wydaniach Cura." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "Combing utrzymuje dyszę w obszarach wydruku podczas poruszania. Powoduje to nieco dłuższe ruchy, ale zmniejsza potrzebę retrakcji. Jeśli Combing jest wyłączone, następuje retrakcja, a dysza przesuwa się w linii prostej do następnego punktu. Możliwe jest wyłączenie opcji górnych / dolnych obszarach obrysu lub utrzymanie dyszy w obrębie wypełnienia." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2822,7 +3127,7 @@ msgstr "Przy wartości niezerowej, kombinowane ruchy jałowe o dystansie większ #: fdmprinter.def.json msgctxt "travel_retract_before_outer_wall label" msgid "Retract Before Outer Wall" -msgstr "Cofnij Przed Zewn. Ścianą" +msgstr "Cofnij Przed Zew. Ścianą" #: fdmprinter.def.json msgctxt "travel_retract_before_outer_wall description" @@ -2859,16 +3164,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Odległość między dyszą a już wydrukowanym elementem, gdy są one omijane podczas ruchu jałowego." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Rozp. Warstwy w tym Samym Punkcie" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Na każdej warstwie rozpocznij drukowanie obiektu blisko tego samego punktu, abyśmy nie rozpoczynali nowej warstwy w miejscu gdzie skończyła się poprzednia warstwa. Powoduje to lepsze nawisy i małe elementy, ale wydłuża czas druku." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2929,6 +3224,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "Po przełączeniu maszyny z jednego ekstrudera na drugi, stół jest opuszczany, aby utworzyć luz pomiędzy dyszą a drukiem. Zapobiega to pozostawianiu wypływającego materiału na powierzchni wydruku." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "Skok Z po zmianie wysokości ekstrudera" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "Różnica wysokości podczas wykonywania skoku Z po zmianie ekstrudera." + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3199,6 +3504,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Krzyż" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "Gyroid" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3260,44 +3570,44 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Odległość między drukowanymi liniami struktury podpory w początkowej warstwie. To ustawienie jest obliczane na podstawie gęstości podpory." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Kierunek Linii Wypełnienia Podpory" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Orientacja wzoru wypełnienia dla podpór. Wzór podpory jest obracany w płaszczyźnie poziomej." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Lista kierunków linii całkowitych do użycia. Elementy z listy są używane sekwencyjnie w miarę postępu warstw, a po osiągnięciu końca listy zaczyna się od początku. Elementy listy są oddzielone przecinkami, a cała lista jest zawarta w nawiasach kwadratowych. Domyślnie lista jest pusta, co oznacza użycie domyślnego kąta 0 stopni." #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "" +msgstr "Włącz Obrys Podpór" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "" +msgstr "Generuj obrys w obszarach wypełnienia podpory pierwszej warstwy. Obrys jest drukowany pod podporą, a nie wokół. Włączenie tej opcji zwiększa przyczepność podpór do stołu." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "" +msgstr "Szerokość Obrysu Podpór" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Szerokość obrysu, który ma być wydrukowany pod podporami. Szerszy obrys to większa przyczepność do stołu, kosztem zużytego materiału." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "" +msgstr "Ilość Linii Obrysu Podpór" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "" +msgstr "Liczba linii używanych do obrysu podpór. Większa ilość linii obrysu to większa przyczepność do stołu, kosztem zużytego materiału." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3396,8 +3706,8 @@ msgstr "Odległość Łączenia Podpór" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Maksymalna odległość między podporami w kierunkach X/Y. Gdy oddzielne struktury są bliżej siebie niż ta wartość, struktury łączą się w jedną." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "Maksymalna odległość między konstrukcjami wspornymi w kierunkach X/Y. Kiedy oddzielne struktury są bliżej siebie niż ta wartość, struktury łączą się w jedną." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3439,6 +3749,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "Wysokość wypełnienia podpory o danej gęstości przed przełączeniem na połowę gęstości." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "Minimalna Powierzchnia Podpór" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "Minimalny rozmiar powierzchni dla podpór. Obszary, które mają mniejszą powierzchnię od tej wartości, nie będą generowane." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3664,6 +3984,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Zygzak" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "Minimalna Powierzchnia Interfejsu Podpór" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimalny rozmiar obszaru dla wielokątów interfejsu podpór. Wielokąty, których powierzchnia jest mniejsza niż ta wartość, zostaną wydrukowane jako normalne podpory." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "Minimalna Powierzchnia Dachu Podpór" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimalny rozmiar obszaru dla dachu podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, zostaną wydrukowane jako normalne podpory." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "Minimalna Powierzchnia Podłoża Podpór" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimalny rozmiar obszaru dla podłoża podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, zostaną wydrukowane jako normalne podpory." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "Rozrost Poziomy Interfejsu Podpór" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "Wartość przesunięcia zastosowana do obszaru interfejsu podpór." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "Rozrost Poziomy Dachu Podpór" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "Wartość przesunięcia zastosowana do obszaru dachu podpór." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "Rozrost Poziomy Podłoża Podpór" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "Wartość przesunięcia zastosowana do obszaru podłoża podpór." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Kierunek linii podłoża podpór" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Lista kierunków linii całkowitych do użycia. Elementy z listy są używane sekwencyjnie w miarę postępu warstw, a po osiągnięciu końca listy zaczyna się od początku. Elementy listy są oddzielone przecinkami, a cała lista jest zawarta w nawiasach kwadratowych. Domyślnie lista jest pusta, co oznacza użycie domyślnych kątów (na przemian między 45 a 135 stopni, jeśli interfejsy są dość grube lub 90 stopni)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Kierunek linii dachu podpór" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Lista kierunków linii całkowitych do użycia. Elementy z listy są używane sekwencyjnie w miarę postępu warstw, a po osiągnięciu końca listy zaczyna się od początku od nowa. Elementy listy są oddzielone przecinkami, a cała lista jest zawarta w nawiasach kwadratowych. Domyślnie lista jest pusta, co oznacza użycie domyślnych kątów (na przemian między 45 a 135 stopni, jeśli interfejsy są dość grube lub 90 stopni)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Kierunek linii podstawy podpór" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Lista kierunków linii całkowitych do użycia. Elementy z listy są używane sekwencyjnie w miarę postępu warstw, a po osiągnięciu końca listy zaczyna się od początku od nowa. Elementy listy są oddzielone przecinkami, a cała lista jest zawarta w nawiasach kwadratowych. Domyślnie lista jest pusta, co oznacza użycie domyślnych kątów (na przemian między 45 a 135 stopni, jeśli interfejsy są dość grube lub 90 stopni)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3672,7 +4082,7 @@ msgstr "Nadpisanie Prędkości Wentylatora" #: fdmprinter.def.json msgctxt "support_fan_enable description" msgid "When enabled, the print cooling fan speed is altered for the skin regions immediately above the support." -msgstr "Gdy załączone, prędkość wentylatora chłodzącego wydruk jest zmieniana dla obszarów leżących bezpośrednio ponad podporami," +msgstr "Gdy włączone, prędkość wentylatora chłodzącego wydruk jest zmieniana dla obszarów leżących bezpośrednio ponad podporami." #: fdmprinter.def.json msgctxt "support_supported_skin_fan_speed label" @@ -3705,14 +4115,14 @@ msgid "The diameter of a special tower." msgstr "Średnica wieży specjalnej." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Minimalna Średnica" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Maksymalna średnica obsługiwana przez wieżę podporową" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Minimalna średnica w kierunkach X/Y o małej powierzchni, który jest wspierana przez specjalną wieżę wspierającą." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Maksymalna średnica w kierunkach X/Y obszaru, który ma być podtrzymywana przez specjalistyczną wieżę podporową." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3747,7 +4157,7 @@ msgstr "Przyczepność" #: fdmprinter.def.json msgctxt "prime_blob_enable label" msgid "Enable Prime Blob" -msgstr "Włącz Czyszcz. \"Blob\"" +msgstr "Włącz Czyszczenie \"Blob”ów" #: fdmprinter.def.json msgctxt "prime_blob_enable description" @@ -3777,7 +4187,7 @@ msgstr "Współrzędna Y, w której dysza jest czyszczona na początku wydruku." #: fdmprinter.def.json msgctxt "adhesion_type label" msgid "Build Plate Adhesion Type" -msgstr "Typ Ulepszenia Przyczepności" +msgstr "Typ Zwiększenia Przyczepności" #: fdmprinter.def.json msgctxt "adhesion_type description" @@ -3807,7 +4217,7 @@ msgstr "Brak" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr label" msgid "Build Plate Adhesion Extruder" -msgstr "Ekstruder Drukujący Ułatw. Przyczep." +msgstr "Ekstruder Adhezji Pola Roboczego" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr description" @@ -3871,17 +4281,17 @@ msgstr "Liczba linii używana dla obrysu. Więcej linii obrysu poprawia przyczep #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "" +msgstr "Podpory Zastąp Obrysem" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "" +msgstr "Wymuś drukowanie obrysu wokół modelu, nawet jeśli powierzchnia byłaby zajęta przez podpory. Zastępuje obszary podpór przez obrys. Dotyczy pierwszej warstwy." #: fdmprinter.def.json msgctxt "brim_outside_only label" msgid "Brim Only on Outside" -msgstr "Obrys Tylko na Zewn." +msgstr "Obrys Tylko na Zew" #: fdmprinter.def.json msgctxt "brim_outside_only description" @@ -3906,7 +4316,7 @@ msgstr "Wygładzanie Tratwy" #: fdmprinter.def.json msgctxt "raft_smoothing description" msgid "This setting controls how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." -msgstr "To ustawienie kontroluje jak bardzo wewn. narożniki w zewn. krawędzi tratwy mają być zaokrąglone. Wewn. narożniki są zaokrąglane do półokręgów o promieniu równym wartości podanej tutaj. To ustawienie usuwa także otwory w zewn. krawędzi tratwy, które są mniejsze niż taki okrąg." +msgstr "To ustawienie kontroluje jak bardzo wewn. narożniki w zewn. krawędzi tratwy mają być zaokrąglone. Wew. narożniki są zaokrąglane do półokręgów o promieniu równym wartości podanej tutaj. To ustawienie usuwa także otwory w zewn. krawędzi tratwy, które są mniejsze niż taki okrąg." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -4201,27 +4611,17 @@ msgstr "Ustawienia używane do drukowania wieloma głowicami." #: fdmprinter.def.json msgctxt "prime_tower_enable label" msgid "Enable Prime Tower" -msgstr "Włącz Wieżę Czyszcz." +msgstr "Włącz Wieżę Czyszczącą" #: fdmprinter.def.json msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Wydrukuj wieżę obok wydruku, która służy do zmiany materiału po każdym przełączeniu dyszy." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Okrągła Wieża Czyszcząca" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Twórz wieżę czyszczącą o okrągłym kształcie." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" -msgstr "Rozmiar Wieży Czyszcz." +msgstr "Rozmiar Wieży Czyszczącej" #: fdmprinter.def.json msgctxt "prime_tower_size description" @@ -4231,7 +4631,7 @@ msgstr "Szerokość wieży czyszczącej." #: fdmprinter.def.json msgctxt "prime_tower_min_volume label" msgid "Prime Tower Minimum Volume" -msgstr "Min. Objętość Wieży Czyszcz." +msgstr "Min. Objętość Wieży Czyszczącej" #: fdmprinter.def.json msgctxt "prime_tower_min_volume description" @@ -4258,26 +4658,26 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Współrzędna Y położenia wieży czyszczącej." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Przepływ Wieży Czyszcz." - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Kompensacja przepływu: ilość ekstrudowanego materiału jest mnożona przez tę wartość." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" -msgstr "Wytrzyj Nieuż. Dyszą o Wieże Czyszcz." +msgstr "Wytrzyj Nieużywaną Dyszę o Wieżę Czyszczącą" #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "Po wydrukowaniu podstawowej wieży jedną dyszą, wytrzyj wytłoczony materiał z drugiej dyszy o wieżę czyszczącą." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "Obrys wieży czyszczącej" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "Wieże czyszczące mogą potrzebować dodatkowej adhezji zapewnionej przez obrys, nawet jeśli model nie potrzebuje. Nie można używać z typem przyczepności „tratwa”." + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4351,7 +4751,7 @@ msgstr "Szerokie szwy próbują zszywać otwarte otwory w siatce przez zamknięc #: fdmprinter.def.json msgctxt "meshfix_keep_open_polygons label" msgid "Keep Disconnected Faces" -msgstr "Zachowaj Rozłączone Pow." +msgstr "Zachowaj Rozłączone Powierzchnie" #: fdmprinter.def.json msgctxt "meshfix_keep_open_polygons description" @@ -4398,6 +4798,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Usuń puste warstwy poniżej pierwszej drukowanej warstwy jeżeli takie występują. Wyłączenie tego ustawienia może powodować puste pierwsze warstwy jeżeli Tolerancja Cięcia jest ustawiona na Włącznie lub Środek." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maksymalna Rozdzielczość" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Minimalny rozmiar linii segmentu po pocięciu. Jeżeli to zwiększysz, siatka będzie miała mniejszą rozdzielczość. Może to spowodować przyspieszenie prędkości przetwarzania g-code i przyspieszenie prędkości cięcia poprzez usunięcie detali siatki, których tak czy tak nie można przetworzyć." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Maksymalna Rozdzielczość Ruchów Jałowych" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Minimalny rozmiar segmentu linii ruchu jałowego po pocięciu. Jeżeli ta wartość zostanie zwiększona, ruch jałowy będzie miał mniej gładkie zakręty. Może to spowodować przyspieszenie prędkości przetwarzania g-code, ale unikanie modelu może być mniej dokładne." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Maksymalne odchylenie" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "Maksymalne odchylenie dozwolone przy zmniejszaniu rozdzielczości dla ustawienia maksymalnej rozdzielczości. Jeśli to zwiększysz, wydruk będzie mniej dokładny, ale g-code będzie mniejszy. Maksymalne odchylenie jest limitem dla maksymalnej rozdzielczości, więc wystąpi konflikt, maksymalne odchylenie zawsze będzie używane." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4431,7 +4861,7 @@ msgstr "Jeden na raz" #: fdmprinter.def.json msgctxt "infill_mesh label" msgid "Infill Mesh" -msgstr "Siatka Wypełn." +msgstr "Siatka Wypełnienia" #: fdmprinter.def.json msgctxt "infill_mesh description" @@ -4441,7 +4871,7 @@ msgstr "Użyj tej siatki, aby zmodyfikować wypełnienie innych siatek, z który #: fdmprinter.def.json msgctxt "infill_mesh_order label" msgid "Infill Mesh Order" -msgstr "Porządek Siatki Wypełn." +msgstr "Porządek Siatki Wypełnienia" #: fdmprinter.def.json msgctxt "infill_mesh_order description" @@ -4546,7 +4976,7 @@ msgstr "Oba" #: fdmprinter.def.json msgctxt "magic_spiralize label" msgid "Spiralize Outer Contour" -msgstr "Spiralizuj Zewn. Kontur" +msgstr "Spiralizuj Zew. Kontur" #: fdmprinter.def.json msgctxt "magic_spiralize description" @@ -4560,8 +4990,8 @@ msgstr "Wygładź Spiralne Kontury" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Wygładź spiralny kontur, aby zmniejszyć widoczność szwu Z (szew Z powinien być ledwo widoczny na wydruku, ale nadal będzie widoczny w widoku warstwy). Należy pamiętać, że wygładzanie będzie miało tendencję do rozmycia drobnych szczegółów powierzchni." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Wygładź spiralne kontury, aby zmniejszyć widoczność szwu Z (szew Z powinien być ledwo widoczny na wydruku, ale nadal będzie widoczny w widoku warstwy). Pamiętaj, że wygładzanie będzie powodować rozmycie drobnych szczegółów powierzchni." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4773,26 +5203,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Wieloboki w pociętych warstwach mające obwód mniejszy, niż podany, będą odfiltrowane. Mniejsze wartości dają wyższą rozdzielczość siatki kosztem czasu cięcia. Funkcja ta jest przeznaczona głównie dla drukarek wysokiej rozdzielczości SLA oraz bardzo małych modeli z dużą ilością detali." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Maksymalna Rozdzielczość" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Minimalny rozmiar linii segmentu po pocięciu. Jeżeli to zwiększysz, siatka będzie miała mniejszą rozdzielczość. Może to spowodować przyspieszenie prędkości przetwarzania g-code i przyspieszenie prędkości cięcia poprzez usunięcie detali siatki, których tak czy tak nie można przetworzyć." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Maksymalna Rozdzielczość Ruchów Jałowych" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Minimalny rozmiar segmentu linii ruchu jałowego po pocięciu. Jeżeli ta wartość zostanie zwiększona, ruch jałowy będzie miał mniej gładkie zakręty. Może to spowodować przyspieszenie prędkości przetwarzania g-code, ale unikanie modelu może być mniej dokładne." - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4933,16 +5343,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Prędkość poruszania się podczas Wypływania, w stosunku do prędkości ścieżki ekstruzji. Zaleca się wartość nieco poniżej 100%, ponieważ podczas Wypływania ciśnienie w rurce bowden spada." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Zmień Kierunek Skóry" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Zmień kierunek, w jakim drukowane są górne/dolne warstwy. Zazwyczaj są one drukowane na ukos. Ustawienie to dodaje kierunek \"tylko X\" i \"tylko Y\"." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5050,8 +5450,8 @@ msgstr "Włącz Podpory Stożkowe" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Opcja eksperymentalna: W dolnym obszarze podpory powinny być mniejsze niż na zwisie." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Zmniejsz obszary podparcia na podłożu pod zwisem." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5115,23 +5515,23 @@ msgstr "Średnia odległość między losowymi punktami wprowadzonymi w każdym #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" -msgstr "Maks. offset ekstruzji do kompensowania przepływu" +msgid "Flow Rate Compensation Max Extrusion Offset" +msgstr "Maksymalna kompensowania przepływu" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Maksymalna odległość w mm do skompensowania." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "Maksymalna odległość w mm do przesuwania filamentu w celu kompensacji zmian wielkości przepływu." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Współczynnik kompensacji przepływu" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Współczynnik mnożący przepływu -> tłumaczenie odległości." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Jak bardzo przesunąć filament, aby skompensować zmiany wielkości przepływu, jako procent odległości, o jaką filament poruszyłby się w ciągu jednej sekundy wytłaczania." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5375,7 +5775,7 @@ msgstr "Długość końcówki wewnętrznej linii, która jest rozciągana podcza #: fdmprinter.def.json msgctxt "wireframe_roof_outer_delay label" msgid "WP Roof Outer Delay" -msgstr "DD Opóźnienie Zewn. Dachu" +msgstr "DD Opóźnienie Zew. Dachu" #: fdmprinter.def.json msgctxt "wireframe_roof_outer_delay description" @@ -5394,7 +5794,7 @@ msgstr "Odległość między dyszą a liniami skierowanymi w dół. Większe prz #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "Użyj zmiennych warstw" #: fdmprinter.def.json @@ -5404,7 +5804,7 @@ msgstr "Zmienne warstwy obliczają wysokości warstw w zależności od kształtu #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "Maks. zmiana zmiennych warstw" #: fdmprinter.def.json @@ -5414,7 +5814,7 @@ msgstr "Maksymalna dozwolona różnica wysokości względem bazowej wysokości w #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "Krok zmian zmiennych warstw" #: fdmprinter.def.json @@ -5424,13 +5824,13 @@ msgstr "Różnica w wysokości pomiędzy następną wysokością warstwy i poprz #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "Opóźnienie zmiennych warstw" +msgid "Adaptive Layers Topography Size" +msgstr "Rozmiar topografii warstw adaptacyjnych" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Opóźnienie w wyborze, czy użyć mniejszej warstwy, czy nie. Ta liczba jest porównywana do najbardziej stromego nachylenia na warstwie." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Docelowa odległość pozioma między dwiema sąsiadującymi warstwami. Zmniejszenie tego ustawienia powoduje użycie cieńszych warstw w celu przybliżenia krawędzi warstw." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5439,8 +5839,8 @@ msgstr "Kąt Nawisającej Ścianki" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Ścianka o większym kącie nawisu niż podany będzie drukowana z użyciem ustawień nawisającej ścianki. Przy wartości 90°, żadna ścianka nie będzie traktowana jako ścianka nawisająca." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Ściany, które wystają więcej niż zadany kont, zostaną wydrukowane przy użyciu ustawień wystających ścian. Gdy wartość wynosi 90, żadne ściany nie będą traktowane jako wystające. Zwis, który jest obsługiwany przez podpory, nie będzie również traktowany jako zwis." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5642,6 +6042,196 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "Procent prędkości wentylatora używany podczas drukowania trzeciej warstwy skóry most." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "Wytrzyj dyszę pomiędzy warstwami" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "Włącza w G-Code wycieranie dyszy między warstwami. Włączenie tego ustawienia może wpłynąć na zachowanie retrakcji przy zmianie warstwy. Użyj ustawień „Czyszczenie przy retrakcji”, aby kontrolować retrakcję na warstwach, na których będzie działał skrypt czyszczenia." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "Objętość materiału między czyszczeniem" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "Maksymalna ilość materiału, który można wytłoczyć przed zainicjowaniem kolejnego czyszczenia dyszy." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "Włącz Czyszczenie przy retrakcji" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "Cofnij filament, gdy dysza porusza się nad obszarem, w którym nie ma drukować." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "Długość czyszczenia przy retrakcji" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "Ilość filamentu do retrakcji, aby nie wyciekał podczas czyszczenia." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "Dodatkowa wartość czyszczenia dla Czyszczenia przy retrakcji" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "Niektóre materiały mogą wyciekać podczas ruchów czyszczenia, można to tutaj skompensować." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "Prędkość Czyszczenia przy retrakcji" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "Prędkość, z jaką jest wykonywana i dopełniana retrakcja podczas ruchu czyszczenia przy retrakcji." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "Prędkość retrakcji Czyszczenia przy retrakcji" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "Prędkość, z jaką jest wykonywana retrakcja podczas ruchu czyszczenia przy retrakcji." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Prędkość retrakcji Czyszczenia" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "Prędkość, z jaką jest wykonywana dodatkowa retrakcja podczas ruchu czyszczenia przy retrakcji." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "Wstrzymaj czyszczenie" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "Wstrzymaj czyszczenie, jeśli brak retrakcji." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "Czyszczący skok Z jeśli jest retrakcja" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "Zawsze, gdy następuje retrakcja, stół roboczy jest opuszczany w celu utworzenia luzu między dyszą a drukiem. Zapobiega to uderzeniu dyszy podczas ruchu jałowego, co zmniejsza szanse uderzenia wydruku na stole." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "Wysokość skoku Z przy czyszczeniu" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "Różnica w wysokości podczas przeprowadzania Skoku Z." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "Prędkość czyszczącego skoku Z" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "Szybkość przesuwania osi Z podczas skoku." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "X pozycji czyszczenia" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "Pozycja X, w której skrypt zaczyna." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "Ilość powtórzeń czyszczenia" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "Ilość powtórzeń przesunięcia dyszy po szczotce." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "Odległość ruchu czyszczenia" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "Odległość, którą głowica musi pokonać w tę i z powrotem po szczotce." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Maksymalny rozmiar małych otworów" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Otwory i kontury części o średnicy mniejszej niż podana zostaną wydrukowane przy małej szybkości operacji." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Maksymalna długość małych elementów" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Kontury obiektów, które są krótsze niż podana długość, zostaną wydrukowane przy użyciu funkcji małej prędkości." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Prędkość małych elementów" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Małe obiekty zostaną wydrukowane z zadanym procentem ich normalnej prędkości drukowania. Wolniejsze drukowanie może poprawić przyczepność i dokładność." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Prędkość początkowej warstwy małych obiektów" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Pierwsza warstwa małych obiektów zostanie wydrukowana z zadanym procentem ich normalnej prędkości drukowania. Wolniejsze drukowanie może poprawić przyczepność i dokładność." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5702,6 +6292,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Forma przesunięcia, która ma być zastosowana do modelu podczas ładowania z pliku." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimalny rozmiar obszaru dla interfejsu podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, nie będą generowane." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimalny rozmiar obszaru dla dachu podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, nie będą generowane." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimalny rozmiar obszaru dla podłoża podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, nie będą generowane." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Zmień Kierunek Skóry" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Zmień kierunek, w jakim drukowane są górne/dolne warstwy. Zazwyczaj są one drukowane na ukos. Ustawienie to dodaje kierunek \"tylko X\" i \"tylko Y\"." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Maks. offset ekstruzji do kompensowania przepływu" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Maksymalna odległość w mm do skompensowania." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Współczynnik kompensacji przepływu" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Współczynnik mnożący przepływu -> tłumaczenie odległości." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Próg zmiany warstw" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Opóźnienie w wyborze, czy użyć mniejszej warstwy, czy nie. Ta liczba jest porównywana do najbardziej stromego nachylenia na warstwie." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Ścianka o większym kącie nawisu niż podany będzie drukowana z użyciem ustawień nawisającej ścianki. Przy wartości 90°, żadna ścianka nie będzie traktowana jako ścianka nawisająca." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Małe obiekty zostaną wydrukowane z podanym procentem ich normalnej prędkości drukowania. Wolniejsze drukowanie może pomóc w zachowaniu dokładności." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Prędkość pierwszej warstwy" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Małe elementy na pierwszej warstwie zostaną wydrukowane z podanym procentem ich normalnej prędkości drukowania. Wolniejsze drukowanie może pomóc w zachowaniu dokładności i dokładności." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Przejedź nad górną powierzchnią dodatkowy raz, ale bez ekstrudowania materiału. Topi to plastyk na górze, co powoduje gładszą powierzchnię." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Rozp. Warstwy w tym Samym Punkcie" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Na każdej warstwie rozpocznij drukowanie obiektu blisko tego samego punktu, abyśmy nie rozpoczynali nowej warstwy w miejscu gdzie skończyła się poprzednia warstwa. Powoduje to lepsze nawisy i małe elementy, ale wydłuża czas druku." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Orientacja wzoru wypełnienia dla podpór. Wzór podpory jest obracany w płaszczyźnie poziomej." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "Maksymalne odchylenie dozwolone przy zmniejszaniu rozdzielczości dla ustawienia „Maksymalna rozdzielczość”. Jeśli to zwiększysz, wydruk będzie mniej dokładny, ale G-Code będzie mniejszy." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Wersja G-code" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Kontroluje, czy rogi na zewn. linii modelu wpływają na pozycję szwu. Brak oznacza, że rogi nie mają wpływu na pozycję szwu. Ukryj Szew powoduje, że szew będzie się bardziej pojawiał na wewn. rogach. Pokaż Szew powoduje, że szew będzie się bardziej pojawiał na zewn. rogach. Ukryj lub Pokaż Szew powoduje, że szew będzie się bardziej pojawiał na wewn. lub zewn. rogach." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Zignoruj Małe Luki Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Jeśli model ma małe, pionowe szczeliny, to można wykorzystać dodatkowe 5% mocy obliczeniowej do wygenerowania górnej i dolnej skóry w wąskich przestrzeniach. W takim wypadku, wyłącz tę opcję." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "Temperatura stosowana dla obszaru roboczego. Jeżeli jest ustawione 0, temperatura nie będzie ustawiona." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Unikaj retrakcji podczas poruszania się od podpory do podpory w linii prostej. Załączenie tej funkcji spowoduje skrócenie czasu druku, lecz może prowadzić do nadmiernego nitkowania wewnątrz struktur podporowych." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Maksymalna Prędk. Z" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Maksymalna prędkość przesuwu stołu. Ustawienie na zero powoduje, że druk używa domyślnych ustawień oprogramowania dla maksymalnej prędkości z." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Maksymalna odległość między podporami w kierunkach X/Y. Gdy oddzielne struktury są bliżej siebie niż ta wartość, struktury łączą się w jedną." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Minimalna Średnica" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Minimalna średnica w kierunkach X/Y o małej powierzchni, który jest wspierana przez specjalną wieżę wspierającą." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Okrągła Wieża Czyszcząca" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Twórz wieżę czyszczącą o okrągłym kształcie." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Kompensacja przepływu: ilość ekstrudowanego materiału jest mnożona przez tę wartość." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Wygładź spiralny kontur, aby zmniejszyć widoczność szwu Z (szew Z powinien być ledwo widoczny na wydruku, ale nadal będzie widoczny w widoku warstwy). Należy pamiętać, że wygładzanie będzie miało tendencję do rozmycia drobnych szczegółów powierzchni." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Opcja eksperymentalna: W dolnym obszarze podpory powinny być mniejsze niż na zwisie." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "Liczba Ekstruderów, które są dostępne" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Zew. średnica dyszy" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Długość dyszy" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Kąt dyszy" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Długość strefy cieplnej" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Prędkość nagrzewania" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Prędkość Chłodzenia" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "Wersja G-code" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "Zakazane obszary" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Obszar Głowicy Drukarki" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Obszar Głowicy i Wentylatora Drukarki" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Wysokość Suwnicy (Gantry)" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Przesunięcie Ekstrudera" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "Użyj zmiennych warstw" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "Maks. zmiana zmiennych warstw" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "Krok zmian zmiennych warstw" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "Opóźnienie zmiennych warstw" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Ilość nałożenia pomiędzy skórą a ścianami w procentach szerokości linii skóry. Delikatne nałożenie pozawala na lepsze połączenie się ścian ze skórą. Jest to procent średniej szerokości linii skóry i wewnętrznej ściany." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "Ilość nakładania się skóry i ścian. Lekkie nałożenie pozwala ściśle łączyć się ze skórą." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "Długość retrakcji: Ustaw na 0, aby wyłączyć retrkację. To powinno ogólnie być takie samo jak długość strefy grzewczej." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "Kombinowanie utrzymuje dyszę w już zadrukowanych obszarach podczas ruchu jałowego. Powoduje to nieco dłuższe ruchy jałowe, ale zmniejsza potrzebę retrakcji. Jeśli kombinowanie jest wyłączone, materiał się cofa, a dysza przemieszcza się w linii prostej do następnego punktu. Można też unikać kombinowania na górnych/dolnych obszarach powłoki, a także kombinować tylko wewnątrz wypełnienia. Opcja \"Wewnątrz Wypełnienia\" wymusza takie samo zachowanie, jak opcja \"Nie w Powłoce\" we wcześniejszych wydaniach Cura." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "Łączy górne/dolne ścieżki powłoki, gdy są one prowadzone obok siebie. Przy wzorze koncentrycznym, załączenie tego ustawienia znacznie zredukuje czas ruchów jałowych, ale ze względu na to, że połączenie może nastąpić w połowie drogi ponad wypełnieniem, ta fukncja może pogorszyć jakość górnej powierzchni." diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index 73b8d759ce..b5f81cfbf2 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-11-06 02:20-0300\n" -"Last-Translator: Cláudio Sampaio \n" -"Language-Team: Cláudio Sampaio \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-11-15 16:30-0300\n" +"Last-Translator: Cláudio Sampaio \n" +"Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Ajustes da Máquina" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Arquivo G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "O GCodeWriter não suporta modo binário." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Por favor prepare o G-Code antes de exportar." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Assistente de Modelo 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,66 +70,50 @@ msgstr "" "

    Descubra como assegurar a melhor qualidade de impressão e confiabilidade possível.

    \n" "

    Ver guia de qualidade de impressão

    " -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Exibir registro de alterações" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Atualizar Firmware" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Achatar os ajustes ativos" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Arquivo AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "O perfil foi achatado & ativado." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impressão USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir pela USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir pela USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Conectado via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Uma impressão USB está em progresso, fechar o Cura interromperá esta impressão. Tem certeza?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Arquivo X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Uma impressão ainda está em progresso. O Cura não pode iniciar outra impressão via USB até que a impressão anterior tenha completado." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Grava em formato X3g" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Arquivo X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Impressão em Progresso" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -143,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "O GCodeGzWriter não suporta modo binário." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Pacote de Formato da Ultimaker" @@ -164,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Salvar em Unidade Removível {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Não há formatos de arquivo disponíveis com os quais escrever!" @@ -201,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Não foi possível salvar em unidade removível {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Erro" @@ -232,8 +217,9 @@ msgstr "Ejetar dispositivo removível {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Aviso" @@ -260,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unidade Removível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Imprimir pela rede" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Imprime pela rede" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Conectado pela rede." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Conectado pela rede. Por favor aprove a requisição de acesso na impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Conectado pela rede. Sem acesso para controlar a impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Acesso à impressora solicitado. Por favor aprove a requisição na impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Status da autenticação" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "Status da Autenticação" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Tentar novamente" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Reenvia o pedido de acesso" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Acesso à impressora confirmado" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "Sem acesso para imprimir por esta impressora. Incapaz de enviar o trabalho de impressão." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Solicitar acesso" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Envia pedido de acesso à impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "Incapaz de iniciar novo trabalho de impressão." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Há um problema com a configuração de sua Ultimaker, o que torna impossível iniciar a impressão. Por favor resolva este problema antes de continuar." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Configuração conflitante" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Tem certeza que quer imprimir com a configuração selecionada?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Há divergências entre a configuração ou calibração da impressora e do Cura. Para melhores resultados, sempre fatie com os PrintCores e materiais que estão carregados em sua impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "Envio de novos trabalhos (temporariamente) bloqueado, ainda enviando o trabalho de impressão anterior." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Enviando dados à impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Enviando Dados" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancelar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "Printcore não carregado no slot {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "Nenhum material carregado no slot {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "PrintCore Diferente (Cura: {cura_printcore_name}, Impressora: {remote_printcore_name}) selecionado para o extrusor {extruder_id}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Material diferente (Cura: {0}, Impressora: {1}) selecionado para o extrusor {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Sincronizar com a impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Deseja usar a configuração atual de sua impressora no Cura?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Os PrintCores e/ou materiais da sua impressora diferem dos que estão dentro de seu projeto atual. Para melhores resultados, sempre fatie para os PrintCores e materiais que estão na sua impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Conectado pela rede" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "Trabalho de impressão enviado à impressora com sucesso." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Dados Enviados" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Ver no Monitor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} acabou de imprimir '{job_name}'." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "O trabalho de impressão '{job_name}' terminou." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Impressão Concluída" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Conectar pela rede" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Imprimir pela rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Imprime pela rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Conectado pela rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Por favor espere até que o trabalho atual tenha sido enviado." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Erro de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Novas impressoras de nuvem encontradas" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Novas impressoras foram encontradas conectadas à sua conta; você as pode ver na sua lista de impressoras descobertas." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Não mostrar essa mensagem novamente" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Você está tentando conectar a {0} mas ele não é host de um grupo. Você pode visitar a página web para configurá-lo como host de grupo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Não é host de grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Configurar grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Envia e monitora trabalhos de impressão de qualquer lugar usando sua conta Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Conectar à Nuvem Ultimaker" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Começar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Enviando Trabalho de Impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Transferindo trabalho de impressão para a impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Trabalho de impressão enviado à impressora com sucesso." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Dados Enviados" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Você está tentando conectar a uma impressora que não está rodando Ultimaker Connect. Por favor atualiza a impressora para o firmware mais recente." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Atualize sua impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "O Cura detectou perfis de material que não estão instalados ainda na impressora host do grupo {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Enviando material para a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Não foi possível transferir os dados para a impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Erro de rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "amanhã" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "hoje" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Imprimir por Nuvem" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Imprimir por Nuvem" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Conectado por Nuvem" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Monitor" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Não foi possível acessar informação de atualização." @@ -507,22 +425,28 @@ msgctxt "@action:button" msgid "How to update" msgstr "Como atualizar" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Visão de Camadas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "O Cura não mostra as camadas corretamente quando Impressão em Arame estiver habilitada" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Visão Simulada" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "Pós-Processamento" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" msgstr "Modificar G-Code" @@ -536,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "Cria um volume em que os suportes não são impressos." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "O Cura coleta estatísticas anônimas de uso." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "Coletando Dados" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "Mais informações" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Ver mais informações sobre os dados enviados pelo Cura." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "Permitir" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Permite que o Cura envie estatísticas anônimas de uso para ajudar a priorizar futuras melhorias ao software. Algumas de suas preferências e ajustes são enviados junto à versão atual do Cura e um hash dos modelos que estão sendo fatiados." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -596,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagem GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "Câmbio de Ativos Digitais COLLADA" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "Binário glTF" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "JSON Embutido glTF" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Formato de Triângulos de Stanford" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Câmbio de Ativos Digitais COLLADA Comprimido" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "Incapaz de fatiar com o material atual visto que é incompatível com a máquina ou configuração selecionada." +msgstr "Não foi possível fatiar com o material atual visto que é incompatível com a máquina ou configuração selecionada." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" -msgstr "Incapaz de fatiar" +msgstr "Não foi possível fatiar" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" -msgstr "Incapaz de fatiar com os ajustes atuais. Os seguintes ajustes têm erros: {0}" +msgstr "Não foi possível fatiar com os ajustes atuais. Os seguintes ajustes têm erros: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" -msgstr "Incapaz de fatiar devido a alguns ajustes por modelo. Os seguintes ajustes têm erros em um dos modelos ou mais: {error_labels}" +msgstr "Não foi possível fatiar devido a alguns ajustes por modelo. Os seguintes ajustes têm erros em um dos modelos ou mais: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." -msgstr "Incapaz de fatiar porque a torre de purga ou posição de purga são inválidas." +msgstr "Não foi possível fatiar porque a torre de purga ou posição de purga são inválidas." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." -msgstr "Incapaz de fatiar porque há objetos associados com o Extrusor desabilitado %s." +msgstr "Não foi possível fatiar porque há objetos associados com o Extrusor desabilitado %s." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Nada a fatiar porque nenhum dos modelos cabe no volume de impressão. Por favor redimensione ou rotacione os modelos para caberem." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "Nada a fatiar porque nenhum dos modelos cabe no volume de construção ou está associado a um extrusor desabilitado. Por favor redimensione ou rotacione os modelos para caber, ou habilite um extrusor." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "Processando Camadas" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Informação" @@ -660,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Configurar ajustes por Modelo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -678,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Arquivo 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Bico" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "O arquivo de projeto {0} contém um tipo de máquina desconhecido {1}. Não foi possível importar a máquina. Os modelos serão importados ao invés dela." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Abrir Arquivo de Projeto" @@ -705,21 +627,64 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Arquivo G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Interpretando G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Detalhes do G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." -msgstr "Assegure-se que o g-code é adequado para sua impressora e configuração antes de enviar o arquivo. A representação de g-code pode não ser acurada." +msgstr "Certifique que o g-code é adequado para sua impressora e configuração antes de enviar o arquivo. A representação de g-code pode não ser acurada." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "Gerenciar backups" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "Backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "Houve um erro ao listar seus backups." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "Houve um erro ao tentar restaurar seu backup." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "Backups" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "Enviando seu backup..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "Houve um erro ao transferir seu backup." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "Seu backup terminou de ser enviado." #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 @@ -742,330 +707,451 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "Erro ao escrever arquivo 3mf." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "Pré-visualização" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Selecionar Atualizações" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Verificação" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Nivelar mesa" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Parede Externa" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Paredes Internas" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Contorno" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Preenchimento" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Preenchimento de Suporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interface de Suporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Suporte" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Skirt (Saia)" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Percurso" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrações" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Outros" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Arquivo pré-fatiado {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "Login falhou" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Não Suportado" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "O Arquivo Já Existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "O arquivo {0} já existe. Tem certeza que quer sobrescrevê-lo?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Não sobreposto" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "O material selecionado é incompatível com a máquina ou configuração selecionada." +msgid "Invalid file URL:" +msgstr "URL de arquivo inválida:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Material Incompatível" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Os ajustes foram alterados para seguir a disponibilidade de extrusores atuais:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "Os ajustes foram mudados para atender à atual disponibilidade de extrusores: [%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Ajustes atualizados" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "Extrusor(es) Desabilitado(s)" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Falha ao exportar perfil para {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Falha ao exportar perfil para {0}: complemento escritor relatou erro." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Perfil exportado para {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Exportação concluída" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "Falha ao importa perfil de {0}: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "Falha ao importar perfil de {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "Não foi possível importar perfil de {0} antes de uma impressora ser adicionada." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Não há perfil personalizado a importar no arquivo {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Erro ao importar perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Este perfil {0} contém dados incorretos, não foi possível importá-lo." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "A máquina definida no perfil {0} ({1}) não equivale à sua máquina atual ({2}), não foi possível importá-lo." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Erro ao importar perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado com sucesso" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Arquivo {0} não contém nenhum perfil válido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "O Perfil {0} tem tipo de arquivo desconhecido ou está corrompido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Falta um tipo de qualidade ao Perfil." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Não foi possível encontrar tipo de qualidade {0} para a configuração atual." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Parede Externa" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Paredes Internas" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Contorno" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Preenchimento" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Preenchimento de Suporte" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interface de Suporte" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Suporte" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Skirt (Saia)" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "Torre de Prime" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Percurso" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retrações" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Outros" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Arquivo pré-fatiado {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "Próximo" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "Grupo #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "Impressoras habilitadas em rede" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Fechar" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "Impressoras locais" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Adicionar" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visual" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "O perfil visual é projetado para imprimir protótipos e modelos virtuais com o objetivo de alta qualidade visual e de superfície." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engenharia" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "O perfil de engenharia é projetado para imprimir protótipos funcionais e partes de uso final com o objetivo de melhor precisão e tolerâncias mais estritas." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Rascunho" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "O perfil de rascunho é projetado para imprimir protótipos iniciais e validações de conceito com o objetivo de redução significativa de tempo de impressão." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Não sobreposto" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Perfis personalizados" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Todos Os Tipos Suportados ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Todos Os Arquivos (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Material Personalizado" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "As impressoras abaixo não podem ser conectadas por serem parte de um grupo" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Impressoras de rede disponíveis" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "A altura do volume de impressão foi reduzida para que o valor da \"Sequência de Impressão\" impeça o eixo de colidir com os modelos impressos." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume de Impressão" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "Não pude criar arquivo do diretório de dados de usuário: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "Backup" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "Tentativa de restauração de backup do Cura sem dados ou metadados apropriados." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "Tentativa de restauração de backup do Cura que não corresponde à versão atual." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "Tentativa de restauração de backup do Cura de versão maior que a atual." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "Não foi possível ler a resposta." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Não foi possível contactar o servidor de contas da Ultimaker." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Por favor dê as permissões requeridas ao autorizar esta aplicação." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Algo inesperado aconteceu ao tentar login, por favor tente novamente." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplicando e colocando objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 +msgctxt "@info:title" +msgid "Placing Objects" +msgstr "Colocando Objetos" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 +msgctxt "@info:status" +msgid "Unable to find a location within the build volume for all objects" +msgstr "Não foi possível achar um lugar dentro do volume de construção para todos os objetos" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Colocando Objeto" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "Incapaz de achar um lugar dentro do volume de construção para todos os objetos" - #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Achando novos lugares para objetos" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "Buscando Localização" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Não Foi Encontrada Localização" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "O Cura não consegue iniciar" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1080,32 +1166,32 @@ msgstr "" "

    Por favor nos envie este Relatório de Falha para consertar o problema.

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "Enviar relatório de falha à Ultimaker" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "Exibir relatório de falha detalhado" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "Mostrar a pasta de configuração" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "Salvar e Restabelecer Configuração" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Relatório de Problema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" @@ -1116,321 +1202,285 @@ msgstr "" "

    Por favor use o botão \"Enviar relatório\" para publicar um relatório de erro automaticamente em nossos servidores

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "Informação do Sistema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Desconhecida" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Versão do Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "Plataforma" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Versão do Qt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "Versão do PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "Ainda não inicializado
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • Versão da OpenGL: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • Fornecedor da OpenGL: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • Renderizador da OpenGL: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "Traceback do erro" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "Registros" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "Descrição do usuário" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "Descrição do usuário (Nota: Os desenvolvedores podem não falar sua língua, por favor use inglês se possível)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Enviar relatório" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Carregando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Ajustando preferências..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando cena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Carregando interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Somente um arquivo G-Code pode ser carregado por vez. Pulando importação de {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Não é possível abrir nenhum outro arquivo se G-Code estiver sendo carregado. Pulando importação de {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "O modelo selecionado é pequenos demais para carregar." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Ajustes da Máquina" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Impressora" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" -msgstr "Ajustes da Impressora" +msgstr "Ajustes de Impressora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (largura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profundidade)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Altura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Forma da plataforma de impressão" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "Origem no centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "Mesa aquecida" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "Volume de construção aquecido" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "Sabor de G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Ajustes da Cabeça de Impressão" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distância da esquerda da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distância da frente da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distância da direita da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distância da traseira da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" -msgstr "Altura do eixo" +msgid "Gantry Height" +msgstr "Altura do Eixo" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "A diferença de altura entre a ponta do bico e o sistema de eixos X e Y. Usado para prevenir colisões entre impressões e a cabeça ao imprimir \"Um de cada Vez\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de Extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "G-Code Inicial" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "Comandos de G-Code a serem executados no início da impressão." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "G-Code Final" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "Comandos de G-Code a serem executados no final da impressão." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Impressora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "Ajustes do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Tamanho do bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Diâmetro de material compatível" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "O diâmetro nominal do filamento suportado pela impressora. O diâmetro exato será sobreposto pelo material e/ou perfil." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "Deslocamento X do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Deslocamento Y do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Número da Ventoinha de Resfriamento" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "G-Code Inicial do Extrusor" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "G-Code Final do Extrusor" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "Instalar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" @@ -1440,69 +1490,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Não foi possível conectar-se à base de dados de Pacotes do Cura. Por favor verifique sua conexão." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "notas" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Complementos" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiais" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "Sua nota" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "Versão" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "Última atualização" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "Autor" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "Downloads" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Desconhecido" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "Entrar na conta é necessário para instalar ou atualizar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "Comprar rolos de material" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "Atualizar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "Atualizando" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "Atualizado" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "Ferramentas" +msgid "Marketplace" +msgstr "Mercado" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1529,52 +1592,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "Confirmar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "Você precisa entrar em sua conta para dar notas" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "Você precisa instalar o pacote para dar notas" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "Você precisará reiniciar o Cura para que as alterações tenham efeito." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Sair do Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Contribuições da Comunidade" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Complementos da Comunidade" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Materiais Genéricos" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "Instalado" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "Será instalado ao reiniciar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "Entrar na conta é necessário para atualizar" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "Downgrade" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "Desinstalar" @@ -1595,12 +1673,12 @@ msgstr "" "Você precisa aceitar esta licença para instalar este complemento.\n" "Você concorda com os termos abaixo?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Aceitar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Recusar" @@ -1610,22 +1688,62 @@ msgctxt "@label" msgid "Featured" msgstr "Em destaque" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibilidade" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Máquina" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Plataforma de Impressão" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Suporte" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Qualidade" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "Documento de Dados Técnicos" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "Documento de Dados de Segurança" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "Diretrizes de Impressão" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "Sítio Web" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "Obtendo pacotes..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "Sítio Web" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "Email" @@ -1635,23 +1753,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "Algumas coisas podem ser problemáticas nesta impressão. Clique para ver dicas de correção." -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Registro de alterações" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Fechar" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1727,426 +1828,505 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "A atualização de firmware falhou devido a firmware não encontrado." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "Termos de Acordo do Usuário" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Gerir Impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Conexão Existente" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Vidro" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "Esta impressora ou grupo já foi adicionada ao Cura. Por favor selecione outra impressora ou grupo." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Por favor atualize o firmware de sua impressora parar gerir a fila remotamente." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "A webcam não está disponível porque você está monitorando uma impressora de nuvem." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "Carregando..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "Indisponível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "Inacessivel" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "Ocioso" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "Sem Título" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "Anônimo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "Requer mudanças na configuração" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "Detalhes" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "Impressora indisponível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "Primeira disponível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "Enfileirados" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "Gerir no navegador" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Não há trabalhos de impressão na fila. Fatie e envie um trabalho para adicioná-lo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "Trabalhos de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "Tempo total de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "Esperando por" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Conectar a Impressora de Rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"Para imprimir diretamente para sua impressora pela rede, por favor se certifique que a impressora esteja conectada na rede usando um cabo de rede ou conectando sua impressora na rede WIFI. Se você não conectar o Cura à sua impressora, você ainda pode usar uma unidade USB para transferir arquivos G-Code para sua impressora.\n" -"\n" -"Selecione sua impressora da lista abaixo:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Para imprimir diretamente na sua impressora pela rede, certifique-se que ela esteja conectada à rede usando um cabo de rede ou conectando sua impressora à sua WIFI. Se você não conectar Cura à sua impressora, você ainda pode usar um drive USB ou SDCard para transferir arquivos G-Code a ela." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Adicionar" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Selecione sua impressora da lista abaixo:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Editar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Remover" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Atualizar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Se sua impressora não está listada, leia o guia de resolução de problemas de impressão em rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Versão do firmware" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Endereço" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Esta impressora não está configurada para hospedar um grupo de impressoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Esta impressora é a hospedeira de um grupo de %1 impressoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "A impressora neste endereço ainda não respondeu." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Conectar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Endereço IP inválido" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "Por favor entre um endereço IP válido." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Endereço da Impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Introduza o endereço IP ou hostname da sua impressora na rede." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "Entre o endereço IP da sua impressora na rede." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "Ok" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimir" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Imprimir pela rede" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "Seleção de impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "Não disponível" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "Inacessível" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "Disponível" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "Abortado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Finalizado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "Preparando" +msgid "Preparing..." +msgstr "Preparando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "Pausando" +msgid "Aborting..." +msgstr "Abortando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "Continuando" +msgid "Pausing..." +msgstr "Pausando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "Pausado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "Continuando..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Necessária uma ação" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "Termina %1 em %2" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Imprimir pela rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "Aguardando por: Impressora indisponível" +msgid "Printer selection" +msgstr "Seleção de impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "Aguardando por: A primeira disponível" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "Aguardando por: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "Alteração de configuração" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "A impressora atribuída, %1, requer as seguintes alterações de configuração:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "A impressora %1 está atribuída, mas o trabalho contém configuração de material desconhecida." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "Alterar material %1 de %2 para %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "Carregar %3 como material %1 (isto não pode ser sobreposto)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "Alterar núcleo de impressão %1 de %2 para %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "Alterar mesa de impressão para %1 (Isto não pode ser sobreposto)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "Sobrepôr" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "Iniciar um trabalho de impressão com configuração incompatível pode danificar sua impressora 3D. Voce tem certeza que quer sobrepôr a configuração e imprimir %1?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "Sobrepôr configuração e iniciar impressão" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "Vidro" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "Alumínio" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "Gerenciar fila" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "Enfileirados" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "Imprimindo" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "Gerenciar impressoras" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "Mover para o topo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "Remover" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "Continuar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "Pausando..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "Continuando..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "Pausar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "Abortando..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "Abortar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "Você tem certeza que quer mover %1 para o topo da fila?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "Move o trabalho de impressão para o topo da fila" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "Você tem certeza que quer remover %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "Remover trabalho de impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "Você tem certeza que quer abortar %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Abortar impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Conecta a uma impressora" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "Alterações de Configuração" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Ativar Configuração" +msgid "Override" +msgstr "Sobrepor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Carrega a configuração da impressora no Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "A impressora associada, %1, requer a seguinte alteração de configuração:" +msgstr[1] "A impressora associada, %1, requer as seguintes alterações de configuração:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "A impressora %1 está associada, mas o trabalho contém configuração de material desconhecida." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "Alterar material %1 de %2 para %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "Carregar %3 como material %1 (isto não pode ser sobreposto)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "Alterar núcleo de impressão %1 de %2 para %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "Alterar mesa de impressão para %1 (Isto não pode ser sobreposto)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "Sobrepor irá usar os ajustes especificados com a configuração existente da impressora. Isto pode causar falha da impressão." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "Alumínio" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"Por favor certifique-se que sua impressora está conectada>\n" +"- Verifique se ela está ligada.\n" +"- Verifique se ela está conectada à rede.\n" +"- Verifique se você está logado para descobrir impressoras conectadas à nuvem." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "Por favor conecte sua impressora à rede." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "Ver manuais de usuário online" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Esquema de Cores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Cor do Material" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Tipo de Linha" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Taxa de alimentação" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Largura de camada" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modo de Compatibilidade" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "Exibir Percursos" +msgid "Travels" +msgstr "Percursos" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "Exibir Assistentes" +msgid "Helpers" +msgstr "Assistentes" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "Exibir Perímetro" +msgid "Shell" +msgstr "Perímetro" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "Exibir Preenchimento" +msgid "Infill" +msgstr "Preenchimento" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Somente Exibir Camadas Superiores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Exibir 5 Camadas Superiores Detalhadas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Topo / Base" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Parede Interna" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "mín" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "máx" @@ -2161,40 +2341,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Scripts de Pós-Processamento" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Adicionar um script" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Troca os scripts de pós-processamento ativos" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "Mais informações em coleção anônima de dados" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "O Cura envia dados anonimamente para a Ultimaker de modo a aprimorar a qualidade de impressão e experiência de usuário. Abaixo há um exemplo de todos os dados que são enviados." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "O Ultimaker Cura coleta dados anônimos para poder aprimorar a qualidade de impressão e experiência do usuário. Abaixo segue um exemplo de todos os dados que são compartilhados:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "Eu não quero enviar estes dados" +msgid "I don't want to send anonymous data" +msgstr "Recusar enviar dados anônimos" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Permite o envio destes dados para a Ultimaker e nos auxilia a aprimorar o Cura" +msgid "Allow sending anonymous data" +msgstr "Permitir enviar dados anônimos" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2243,19 +2423,19 @@ msgstr "Profundidade (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "Por default, pixels brancos representam pontos altos da malha e pontos pretos representam pontos baixos da malha. Altere esta opção para inverter o comportamento tal que pixels pretos representem pontos altos da malha e pontos brancos representam pontos baixos da malha." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Mais claro é mais alto" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "Para litofanos, pixels escuros devem corresponder a locais mais espessos para conseguir bloquear mais luz. Para mapas de altura, pixels mais claros significam terreno mais alto, portanto tais pixels devem corresponder a locais mais espessos no modelo 3d gerado." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Mais escuro é mais alto" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Mais claro é mais alto" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2266,81 +2446,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavização" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Tipo de Malha" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Modelo normal" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Imprimir como suporte" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Não suportar sobreposição com outros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Modificar ajustes para sobrepor com outros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modificar ajustes para preenchimento de outros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Selecionar ajustes" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Selecionar Ajustes a Personalizar para este modelo" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Exibir tudo" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo de Malha" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Modelo normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimir como suporte" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modificar ajustes para sobreposições" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Não suportar sobreposições" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Preenchimento apenas" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Selecionar ajustes" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Abrir Projeto" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" -msgstr "Atualizar existente" +msgstr "Atualizar existentes" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" -msgstr "Criar novo" +msgstr "Criar novos" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Resumo - Projeto do Cura" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Ajustes da impressora" @@ -2356,20 +2535,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Atualizar" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Criar novo" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "Grupo de Impressora" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Ajustes de perfil" @@ -2380,226 +2564,222 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Como o conflito no perfil deve ser resolvido?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nome" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Objetivo" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Ausente no perfil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 sobreposto" msgstr[1] "%1 sobrepostos" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivado de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 sobreposição" msgstr[1] "%1, %2 sobreposições" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Ajustes de material" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Como o conflito no material deve ser resolvido?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilidade dos ajustes" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Ajustes visíveis:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 de %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Carregar um projeto limpará todos os modelos da mesa de impressão." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Abrir" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Seleccionar Atualizações da Impressora" +msgid "My Backups" +msgstr "Meus backups" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Por favor selecione quaisquer atualizações feitas nesta Ultimaker 2." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "Você não tem nenhum backup atualmente. Use o botão 'Backup Agora' para criar um." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Bloco Olsson" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "Durante a fase de pré-visualização, você estará limitado a 5 backups visíveis. Remova um backup para ver os mais antigos." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Fazer backup e sincronizar os ajustes do Cura." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "Entrar" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Backups do Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Versão do Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "Máquinas" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "Materiais" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "Perfis" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "Complementos" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "Restaurar" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "Apagar o Backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "Você tem certeza que deseja apagar este backup? Isto não pode ser desfeito." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "Restaurar Backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "Você precisará reiniciar o Cura antes que seu backup seja restaurado. Deseja fechar o Cura agora?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "Quer mais?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "Backup Agora" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "Auto Backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Criar um backup automaticamente toda vez que o Cura iniciar." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Nivelamento da mesa de impressão" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Para garantir que suas impressões saiam ótimas, você deve agora ajustar sua mesa de impressão. Quando você clicar em 'Mover para a Posição Seguinte', o bico se moverá para posições diferentes que podem ser ajustadas." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Para cada posição; insira um pedaço de papel abaixo do bico e ajuste a altura da mesa de impressão. A altura da mesa de impressão está adequada quando o papel for levemente pressionado pela ponta do bico." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Iniciar Nivelamento da Mesa de Impressão" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Mover pra a Posição Seguinte" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Por favor selecionar quaisquer atualizações feitas nesta Ultimaker Original" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "Mesa de Impressão Aquecida (kit Oficial ou auto-construído)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Verificar Impressora" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "É uma boa idéia fazer algumas verificações de sanidade em sua Ultimaker. Você pode pular este passo se você sabe que sua máquina está funcional" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Iniciar Verificação da Impressora" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Conexão: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Conectado" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Desconectado" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Fim de curso mín. em X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Funciona" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Não verificado" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Fim de curso mín. em Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Fim de curso mín. em Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Verificação da temperatura do bico: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Parar Aquecimento" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Iniciar Aquecimento" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Verificação da temperatura da mesa de impressão:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Verificado" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Tudo está em ordem! A verificação terminou." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2611,7 +2791,6 @@ msgid "Printer does not accept commands" msgstr "A impressora não aceita comandos" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Em manutenção. Por favor verifique a impressora" @@ -2622,19 +2801,16 @@ msgid "Lost connection with the printer" msgstr "A conexão à impressora foi perdida" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Imprimindo..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Pausado" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparando..." @@ -2654,235 +2830,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Tem certeza que deseja abortar a impressão?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Descartar ou Manter alterações" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"Você personalizou alguns ajustes de perfil.\n" -"Gostaria de manter ou descartar estes ajustes?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Ajustes de perfil" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Default" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Personalizado" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Sempre perguntar" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Descartar e não perguntar novamente" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Manter e não perguntar novamente" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Descartar" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Manter" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Criar Novo Perfil" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informação" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Confirmar Mudança de Diâmetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "O novo diâmetro de filamento está ajustado em %1 mm, que não é compatível com o extrusor atual. Você deseja continuar?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Exibir Nome" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marca" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Tipo de Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Cor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Propriedades" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Densidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diâmetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Custo do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Peso do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Comprimento do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Custo por Metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Este material está vinculado a %1 e compartilha algumas de suas propriedades." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Desvincular Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Descrição" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Informação sobre Aderência" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Ajustes de impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Ativar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Criar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplicar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Exportar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Confirmar Remoção" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Tem certeza que deseja remover %1? Isto não poderá ser desfeito!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Não foi possível importar material %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Material %1 importado com sucesso" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Exportar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Falha em exportar material para %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material exportado para %1 com sucesso" @@ -2892,700 +3009,557 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Visibilidade dos Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Verificar tudo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Calculado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Atual" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Unidade" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Geral" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Interface" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Moeda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Você precisará reiniciar a aplicação para que essas mudanças tenham efeito." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Fatiar automaticamente quando mudar ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Fatiar automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento da área de visualização" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Ressaltar áreas sem suporte do modelo em vermelho. Sem suporte, estas áreas não serão impressas corretamente." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Exibir seções pendentes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Move a câmera de modo que o modelo fique no centro da visão quando for selecionado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centralizar câmera quanto o item é selecionado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "O comportamento default de ampliação deve ser invertido?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverter a direção da ampliação de câmera." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "A ampliação (zoom) deve se mover na direção do mouse?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Ampliar com o mouse não é suportado na perspectiva ortográfica." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Ampliar na direção do mouse" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Os modelos devem ser movidos na plataforma de modo que não se sobreponham?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Assegurar que os modelos sejam mantidos separados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Os modelos devem ser movidos pra baixo pra se assentar na plataforma de impressão?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Automaticamente fazer os modelos caírem na mesa de impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Exibir mensagem de alerta no leitor de G-Code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Mensagem de alera no leitor de G-Code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "A Visão de Camada deve ser forçada a ficar em modo de compatibilidade?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forçar modo de compatibilidade da visão de camadas (requer reinício)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "O Cura deve abrir no lugar onde foi fechado?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Restaurar posição da janela no início" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Que tipo de renderização de câmera deve ser usada?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Renderização de câmera:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspectiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ortográfica" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrindo e salvando arquivos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Os modelos devem ser redimensionados dentro do volume de impressão se forem muito grandes?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Redimensionar modelos grandes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Um modelo pode ser carregado diminuto se sua unidade for por exemplo em metros ao invés de milímetros. Devem esses modelos ser redimensionados?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Redimensionar modelos minúsculos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Os modelos devem ser selecionados após serem carregados?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Selecionar modelos ao carregar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Um prefixo baseado no nome da impressora deve ser adicionado ao nome do trabalho de impressão automaticamente?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Adicionar prefixo de máquina ao nome do trabalho" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Um resumo deve ser exibido ao salvar um arquivo de projeto?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Exibir diálogo de resumo ao salvar projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamento default ao abrir um arquivo de projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamento default ao abrir um arquivo de projeto: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Sempre me perguntar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Sempre abrir como projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Sempre importar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Quando você faz alterações em um perfil e troca para um diferent, um diálogo aparecerá perguntando se você quer manter ou aplicar suas modificações, ou você pode forçar um comportamento default e não ter o diálogo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Comportamento default para valores de configuração alterados ao mudar para um perfil diferente: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Sempre perguntar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Sempre descartar alterações da configuração" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Sempre transferir as alterações para o novo perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privacidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "O Cura deve verificar novas atualizações quando o programa for iniciado?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Verificar atualizações na inicialização" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Dados anônimos sobre sua impressão podem ser enviados para a Ultimaker? Nota: nenhuma informação pessoalmente identificável, modelos ou endereços IP são enviados ou armazenados." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Enviar informação (anônima) de impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Mais informações" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "Experimental" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Usar funcionalidade de plataforma múltipla de impressão" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "Usar funcionalidade de plataforma múltipla de impressão (reinício requerido)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Impressoras" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Renomear" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Tipo de impressora:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Conexão:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "A impressora não está conectada." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "Estado:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "Esperando um trabalho de impressão" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "Esperando que alguém esvazie a mesa de impressão" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Abortando impressão..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Criar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplicar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Criar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "Por favor dê um nome a este perfil." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplicar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Renomear Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Exportar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Impressora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Perfis Protegidos" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Perfis personalizados" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Atualizar perfil com ajustes/sobreposições atuais" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Descartar ajustes atuais" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Este perfil usa os defaults especificados pela impressora, portanto não tem ajustes/sobreposições na lista abaixo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Seus ajustes atuais coincidem com o perfil selecionado." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Ajustes globais" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Adicionar Impressora" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Nome da Impressora:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Adicionar Impressora" +msgid "Marketplace" +msgstr "Mercado" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "Arquivo (&F)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&Editar" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Ver" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "Aju&stes" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "E&xtensões" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "P&referências" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "Ajuda (&H)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Novo projeto" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Tem certeza que quer iniciar novo projeto? Isto esvaziará a mesa de impressão e quaisquer ajustes não salvos." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "Sem Título" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "Sobre o Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "versão: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "Solução completa para impressão 3D com filamento fundido." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura é desenvolvido pela Ultimaker B.V. em cooperação com a comunidade.\n" -"Cura orgulhosamente usa os seguintes projetos open-source:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Interface Gráfica de usuário" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Framework de Aplicações" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "Gerador de G-Code" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Biblioteca de comunicação interprocessos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Linguagem de Programação" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "Framework Gráfica" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "Ligações da Framework Gráfica" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "Biblioteca de Ligações C/C++" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Formato de Intercâmbio de Dados" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Bibliteca de suporte para computação científica" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Biblioteca de suporte para matemática acelerada" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Biblioteca de suporte para manuseamento de arquivos STL" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Biblioteca de suporte para manuseamento de arquivos 3MF" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Biblioteca de comunicação serial" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "Biblioteca de descoberta 'ZeroConf'" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Biblioteca de recorte de polígonos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Biblioteca de HTTP Python" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Fonte" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "Ícones SVG" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Implementação de aplicação multidistribuição em Linux" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Perfil:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Alguns ajustes/sobreposições têm valores diferentes dos que estão armazenados no perfil.\n" -"\n" -"Clique para abrir o gerenciador de perfis." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Buscar..." +msgid "Search settings" +msgstr "Ajustes de busca" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copiar valor para todos os extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Copiar todos os valores alterados para todos os extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Não exibir este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Manter este ajuste visível" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar a visibilidade dos ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "Encolher Todos" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "Expandir Todos" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." msgstr "" -"Alguns ajustes ocultados usam valores diferentes de seu valor calculado normal.\n" +"Alguns ajustes ocultos usam valores diferentes de seu valor calculado normal.\n" "\n" "Clique para tornar estes ajustes visíveis." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "Este ajuste não é usado porque todos os ajustes que ele influencia estão sobrepostos." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Afeta" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Afetado Por" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Este ajuste é sempre compartilhado entre todos os extrusores. Modificá-lo aqui mudará o valor para todos." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "O valor é resolvido de valores específicos de cada extrusor " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3596,7 +3570,7 @@ msgstr "" "\n" "Clique para restaurar o valor do perfil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3607,116 +3581,212 @@ msgstr "" "\n" "Clique para restaurar o valor calculado." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "Não há perfil %1 para a configuração no extrusor %2. O objetivo default será usado no lugar dele" +msgstr[1] "Não há perfis %1 para a configurações nos extrusores %2. O objetivo default será usado no lugar deles" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "Recomendado" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "Preenchimento gradual" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "Preenchimento gradual aumentará gradualmente a quantidade de preenchimento em direção ao topo." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "Suporte" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Gera estrutura que suportarão partes do modelo que têm seções pendentes. Sem estas estruturas, tais partes desabariam durante a impressão." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "Aderência" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Habilita imprimir um brim (bainha) ou raft (jangada). Adicionará uma área chata em volta ou sob o objeto que é fácil de remover após a impressão ter finalizado." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Você modificou alguns ajustes de perfil. Se você quiser alterá-los, use o modo personalizado." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "On" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "Off" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimental" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "Perfil" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Alguns ajustes/sobreposições têm valores diferentes dos que estão armazenados no perfil.\n" +"\n" +"Clique para abrir o gerenciador de perfis." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Perfis personalizados" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "Configuração de Impressão desabilitada. O arquivo de G-Code não pode ser modificado." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "Controle da Impressora" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "Posição de Trote" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "Distância de Trote" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "Enviar G-Code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "Enviar comando G-Code personalizado para a impressora conectada. Pressione 'enter' para enviar o comando." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "A temperatura-alvo do hotend. O hotend vai aquecer ou esfriar na direção desta temperatura. Se for zero, o aquecimento de hotend é desligado." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "A temperatura atual deste hotend." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "A temperatura com a qual pré-aquecer o hotend." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Pré-aquecer" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Aquece o hotend com antecedência antes de imprimir. Você pode continuar ajustando sua impressão enquanto está aquecendo e não terá que esperar que o hotend termine o aquecimento quando estiver pronto para imprimir." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "A cor do material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "O material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "O bico inserido neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "A impressora não está conectada." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Mesa de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "A temperatura-alvo da mesa aquecida. A mesa aquecerá ou resfriará para esta temperatura. Se for zero, o aquecimento é desligado." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "A temperatura atual da mesa aquecida." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "A temperatura em que pré-aquecer a mesa." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Aquecer a mesa antes de imprimir. Você pode continuar ajustando sua impressão enquanto ela está aquecendo, e não terá que esperar o aquecimento quando estiver pronto pra imprimir." @@ -3726,12 +3796,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoritos" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Genérico" @@ -3746,17 +3816,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "Impressoras locais" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&Ver" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "Im&pressora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&Material" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Definir Como Extrusor Ativo" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "Habilitar Extrusor" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "Desabilitar Extrusor" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "Posição da &câmera" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Visão de câmera" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Perspectiva" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Ortográfico" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "Plataforma de Impressão (&B)" @@ -3776,6 +3881,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Gerenciar Visibilidade dos Ajustes..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "&Salvar..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&Exportar..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "Exportar Seleção..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3795,656 +3915,509 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Número de Cópias" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "Configurações disponíveis" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "Configurações" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "Extrusor" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "Selecione configuração" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "Sim" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "Configurações" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "Não" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "Carregando configurações disponíveis da impressora..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "As configurações não estão disponíveis porque a impressora está desconectada." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "Impressora" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "Habilitado" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "Use cola para melhor aderência com essa combinação de materiais." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "Esta configuração não está disponível porque %1 não foi reconhecido. Por favor visite %2 para baixar o perfil de materil correto." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "Mercado" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Abrir &Recente" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Configuração de Impressão" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"Configuração de Impressão desabilitada\n" -"Arquivos G-Code não podem ser modificados" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00h 00min" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "Especificação de tempo" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "Especificação de custo" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "Total:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Configuração Recomendada de Impressão

    Imprimir com os ajustes recomendados para a impressora, material e qualidade selecionados." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Configuração de Impressão Personalizada

    Imprimir com controle fino sobre cada parte do processo de fatiamento." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Impressão ativa" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Nome do Trabalho" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Tempo de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Tempo restante estimado" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "Tipo de Visão" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Lista de objetos" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "Oi, %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Conta da Ultimaker" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "Sair da conta" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "Entrar" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "O fluxo de trabalho da próxima geração de impressão 3D" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- Envia trabalho de impressão às impressoras Ultimaker fora da sua rede local\n" +"- Armazena seus ajustes do Ultimaker Cura na nuvem para uso de qualquer lugar\n" +"- Consegue acesso exclusivo a perfis de impressão das melhores marcas" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "Criar conta" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "Sem estimativa de tempo disponível" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "Sem estimativa de custo disponível" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "Pré-visualização" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "Fatiando..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "Não foi possível fatiar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "Processando" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "Fatiar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "Inicia o processo de fatiamento" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "Estimativa de tempo" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "Estimativa de material" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "Impressoras conectadas" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "Impressoras pré-ajustadas" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "Adicionar impressora" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "Gerenciar impressoras" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "Mostra Guia de Resolução de Problemas Online" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Alternar Tela Cheia" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Sair da Tela Cheia" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Desfazer (&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Refazer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "Sair (&Q)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "Visão &3D" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "Visão Frontal" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "Visão Superior" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "Visão do Lado Esquerdo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "Visão do Lado Direito" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurar Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Adicionar Impressora..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Adm&inistrar Impressoras..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Administrar Materiais..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "At&ualizar perfil com valores e sobreposições atuais" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Descartar ajustes atuais" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Criar perfil a partir de ajustes/sobreposições atuais..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Administrar perfis..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Exibir &Documentação Online" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Relatar um &Bug" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "Novidades" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "Sobre..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "Remover Modelo Selecionado" msgstr[1] "Remover Modelos Selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Centralizar Modelo Selecionado" msgstr[1] "Centralizar Modelos Selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Multiplicar Modelo Selecionado" msgstr[1] "Multiplicar Modelos Selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Remover Modelo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ce&ntralizar Modelo na Mesa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "A&grupar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Desagrupar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Co&mbinar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Multiplicar Modelo..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Selecionar Todos Os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Esvaziar a Mesa de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Recarregar Todos Os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "Posicionar Todos os Modelos em Todas as Plataformas de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Posicionar Todos os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Posicionar Seleção" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Reestabelecer as Posições de Todos Os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Remover as Transformações de Todos Os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "Abrir Arquiv&o(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Novo Projeto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Exibir o Registro do Motor de Fatiamento (&L)..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Exibir Pasta de Configuração" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "Navegar pacotes..." +msgid "&Marketplace" +msgstr "&Mercado" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "Expandir/Encolher Barra Lateral" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Por favor carregue um modelo 3D" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Pronto para fatiar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Fatiando..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Pronto para %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Incapaz de Fatiar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Fatiamento indisponível" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "Fatiar trabalho de impressão atual" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "Cancelar processo de fatiamento" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Preparar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Cancelar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Selecione o dispositivo de saída ativo" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Abrir arquivo(s)" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Encontramos um ou mais arquivo(s) de projeto entre os arquivos que você selecionou. Você só pode abrir um arquivo de projeto por vez. Sugerimos que somente importe modelos destes arquivos. Gostaria de prosseguir?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Importar todos como modelos" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "Arquivo (&F)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "&Salvar..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&Exportar..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "Exportar Seleção..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&Editar" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "&Ver" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "Aju&stes" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "Im&pressora" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Material" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Definir Como Extrusor Ativo" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "Habilitar Extrusor" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "Desabilitar Extrusor" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "Plataforma de Impressão (&B)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Perfil" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "E&xtensões" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "Ferramen&tas" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "P&referências" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "Ajuda (&H)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Este pacote será instalado após o reinício." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Abrir arquivo" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Novo projeto" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Tem certeza que quer iniciar novo projeto? Isto esvaziará a mesa de impressão e quaisquer ajustes não salvos." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Fechando o Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Você tem certeza que deseja sair do Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Abrir arquivo(s)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Instalar Pacote" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir Arquivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Encontramos um ou mais arquivos de G-Code entre os arquivos que você selecionou. Você só pode abrir um arquivo de G-Code por vez. Se você quiser abrir um arquivo de G-Code, por favor selecione somente um." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Salvar Projeto" +msgid "Add Printer" +msgstr "Adicionar Impressora" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Plataforma de Impressão" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Extrusor %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & material" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Não exibir resumo do projeto ao salvar novamente" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Salvar" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Altura de Camada" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "Este perfil de qualidade não está disponível para seu material e sua configuração de bicos atuais. Por favor altere-os para abilitar este perfil de qualidade" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Um perfil personalizado está atualmente ativo. Para habilitar o controle deslizante de qualidade, escolha um perfil de qualidade default na aba Personalizado" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Velocidade de Impressão" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Mais Lento" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Mais Rápido" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "Você modificou alguns ajustes de perfil. Se você quiser alterá-los, use o modo personalizado." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Preenchimento" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Preenchimento gradual aumentará gradualmente a quantidade de preenchimento em direção ao topo." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Habilitar gradual" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Gerar Suportes" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Gera estrutura que suportarão partes do modelo que têm seções pendentes. Sem estas estruturas, tais partes desabariam durante a impressão." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Selecione qual extrusor a usar para o suporte. Isto construirá estruturas de suportes abaixo do modelo para prevenir que o modelo desabe ou seja impresso no ar." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Aderência à Mesa de Impressão" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Habilita imprimir um brim (bainha) ou raft (jangada). Adicionará uma área chata em volta ou sob o objeto que é fácil de remover após a impressão ter finalizado." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "Precisa de ajuda para melhorar sua impressões?
    Leia os Guias de Resolução de Problema da Ultimaker" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "Novidades" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4453,75 +4426,503 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "Imprimir Modelo Selecionado com %1" msgstr[1] "Imprimir Modelos Selecionados com %1" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Descartar ou Manter alterações" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"Você personalizou alguns ajustes de perfil.\n" +"Gostaria de manter ou descartar estes ajustes?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Ajustes de perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Descartar e não perguntar novamente" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Manter e não perguntar novamente" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Descartar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Manter" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Criar Novo Perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Sobre o Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "versão: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "Solução completa para impressão 3D com filamento fundido." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura é desenvolvido pela Ultimaker B.V. em cooperação com a comunidade.\n" +"Cura orgulhosamente usa os seguintes projetos open-source:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Interface Gráfica de usuário" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Framework de Aplicações" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "Gerador de G-Code" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Biblioteca de comunicação interprocessos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Linguagem de Programação" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "Framework Gráfica" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "Ligações da Framework Gráfica" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "Biblioteca de Ligações C/C++" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Formato de Intercâmbio de Dados" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Bibliteca de suporte para computação científica" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Biblioteca de suporte para matemática acelerada" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Biblioteca de suporte para manuseamento de arquivos STL" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "Biblioteca de suporte para manuseamento de objetos planares" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "Biblioteca de suporte para manuseamento de malhas triangulares" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "Biblioteca de suporte para análises de redes complexas" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Biblioteca de suporte para manuseamento de arquivos 3MF" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "Biblioteca de suporte para streaming e metadados de arquivo" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Biblioteca de comunicação serial" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "Biblioteca de descoberta 'ZeroConf'" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Biblioteca de recorte de polígonos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Biblioteca de HTTP Python" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Fonte" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "Ícones SVG" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Implementação de aplicação multidistribuição em Linux" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Encontramos um ou mais arquivo(s) de projeto entre os arquivos que você selecionou. Você só pode abrir um arquivo de projeto por vez. Sugerimos que somente importe modelos destes arquivos. Gostaria de prosseguir?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Importar todos como modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Salvar Projeto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Extrusor %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Não exibir resumo do projeto ao salvar novamente" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Salvar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Abrir arquivo de projeto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Este é um arquivo de projeto do Cura. Gostaria de abri-lo como um projeto ou importar os modelos dele?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Lembrar minha escolha" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Abrir como projeto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Registro do Motor de Fatiamento" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "Tipo de impressora" +msgid "Empty" +msgstr "Vazio" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Material" +msgid "Add a printer" +msgstr "Adicionar uma impressora" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "Use cola com esta combinação de materiais" +msgid "Add a networked printer" +msgstr "Adicionar uma impressora de rede" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "Verificar compatibilidade" +msgid "Add a non-networked printer" +msgstr "Adicionar uma impressora local" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Clique para verificar a compatibilidade do material em Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "Adicionar impressora por endereço IP" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Ver somente a plataforma de impressão atual" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Por favor entre o endereço IP da sua impressora." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Posicionar em todas as plataformas de impressão" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Adicionar" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Reposicionar a plataforma de impressão atual" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "Não foi possível conectar ao dispositivo." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "A impressora neste endereço ainda não respondeu." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "Esta impressora não pode ser adicionada porque é uma impressora desconhecida ou porque não é o host do grupo." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "Voltar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "Conectar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "Próximo" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "Contrato de Usuário" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "Concordo" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "Rejeitar e fechar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Nos ajude a melhor o Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "O Ultimaker Cura coleta dados anônimos para melhor a qualidade de impressão e experiência do usuário, incluindo:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "Tipos de máquina" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "Uso do material" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "Número de fatias" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "Ajustes de impressão" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Dados coletados pelo Ultimaker Cura não conterão nenhuma informação pessoal." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "Mais informações" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "O que há de novo no Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "Não foi encontrada nenhuma impressora em sua rede." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "Atualizar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "Adicionar impressora por IP" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "Resolução de problemas" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "Nome da impressora" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "Por favor dê um nome à sua impressora" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "O fluxo de trabalho da nova geração de impressão 3D" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- Enviar trabalhos de impressão a impressoras Ultimaker fora da sua rede local" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Armazenar seus ajustes do Ultimaker Cura na nuvem para uso em qualquer local" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- Conseguir acesso exclusivo a perfis de impressão das melhores marcas" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "Finalizar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "Criar uma conta" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Bem-vindo ao Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"Por favor sigue esses passos para configurar\n" +"o Ultimaker Cura. Isto tomará apenas alguns momentos." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "Começar" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Visão 3D" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Viso de Frente" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Visão de Cima" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Visão à Esquerda" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Visão à Direita" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4583,45 +4984,25 @@ msgctxt "name" msgid "Model Checker" msgstr "Verificador de Modelo" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Descarrega o conteúdo de todas as configurações em um arquivo HTML." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Modo Deus" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Mostra alterações desde a última versão verificada." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Registro de Alterações" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." -msgstr "" +msgstr "Provê ações de máquina para atualização do firmware." #: FirmwareUpdater/plugin.json msgctxt "name" msgid "Firmware Updater" -msgstr "" +msgstr "Atualizador de Firmware" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Cria um perfil de alterações achatado." +msgid "Provides support for reading AMF files." +msgstr "Provê suporta à leitura de arquivos AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Achatador de Perfil" +msgid "AMF Reader" +msgstr "Leitor AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -4633,26 +5014,6 @@ msgctxt "name" msgid "USB printing" msgstr "Impressão USB" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "Perguntar ao usuário uma vez se concorda com nossa licença." - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "Acordo de Usuário" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Permite salvar a fatia resultante como um arquivo X3G, para suportar impressoras que leem este formato (Malyan, Makerbot e outras impressoras baseadas em Sailfish)." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "Gerador de X3G" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4695,13 +5056,13 @@ msgstr "Complemento de Dispositivo de Escrita Removível" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Gerencia conexões de rede a impressoras Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Administra conexões de rede a impressora Ultimaker conectadas." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Conexão de Rede UM3" +msgid "Ultimaker Network Connection" +msgstr "Conexão de Rede Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -4763,6 +5124,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Apagador de Suporte" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Provê suporte a leitura de Pacotes de Formato Ultimaker (UFP)." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "Leitor UFP" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4823,6 +5194,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Atualização de Versão de 3.3 para 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Atualiza configurações do Cura 4.3 para o Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Atualização de Versão de 4.3 para 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4843,6 +5224,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Atualização de Versão de 2.7 para 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Atualiza configuração do Cura 3.5 para o Cura 4.0." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "Atualização de Versão de 3.5 para 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4853,6 +5244,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "Atualização de Versão de 3.4 para 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Atualiza configurações do Cura 4.0 para o Cura 4.1." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "Atualização de Versão 4.0 para 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4863,6 +5264,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Atualização de Versão 3.0 para 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Atualiza configurações do Cura 4.1 para o Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Atualização de Versão 4.1 para 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4893,6 +5304,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Atualização de Versão de 2.2 para 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Atualiza configurações do Cura 4.2 para o Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Atualização de Versão de 4.2 para 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4903,6 +5324,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Leitor de Imagens" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Provê suporta a ler arquivos de modelo." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Leitor Trimesh" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4953,6 +5384,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "Leitor de G-Code" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "Permite backup e restauração da configuração." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Backups Cura" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4973,6 +5414,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Gerador de 3MF" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Provê uma etapa de pré-visualização ao Cura." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "Estágio de Pré-visualização" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4993,9 +5444,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Leitor de Perfis do Cura" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "Por favor gere o G-Code antes de salvar." +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Achatar os ajustes ativos" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "O perfil foi achatado & ativado." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Grava em formato X3g" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Arquivo X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Arquivo X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Malha Comprimida de Triângulos Aberta" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -5005,6 +5476,1032 @@ msgstr "Leitor de Perfis do Cura" #~ msgid "Profile Assistant" #~ msgstr "Assistente de Perfil" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Tentar novamente" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Núcleo de Impressão" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Não suportar sobreposição com outros modelos" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Modificar ajustes para sobrepor com outros modelos" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modificar ajustes para preenchimento de outros modelos" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Atualizar existente" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Não suportado" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Anterior" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Dica" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Imprimir experimento" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Lista de verificação" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Por favor selecione quaisquer atualizações feitas nesta Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Bloco Olsson" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Renderização de câmera:" + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Usar funcionalidade de plataforma múltipla de impressão" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Usar funcionalidade de plataforma múltipla de impressão (reinício requerido)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Perfis default" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "procurar nos ajustes" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Altura de Camada" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Este perfil de qualidade não está disponível para seu material e configuração de bico atuais. Por favor, altere-os para habilitar este perfil de qualidade." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Um perfil personalizado está atualmente ativo. Para habilitar o controle deslizante de qualidade, escolha um perfil de qualidade default na aba Personalizado" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "Plataforma de Impressão (&B)" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Perfil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Plataforma de Impressão" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Descarrega o conteúdo de todas as configurações em um arquivo HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Modo Deus" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Cria um perfil de mudanças de qualidade achatado." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Achatador de Perfil" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Permite que fabricantes de material criem novos perfis de material e qualidade usando uma interface drop-in." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Assistente de Perfil de Impressão" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Conectado pela rede." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Conectado pela rede. Por favor aprove a requisição de acesso na impressora." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Conectado pela rede. Sem acesso para controlar a impressora." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Acesso à impressora solicitado. Por favor aprove a requisição na impressora" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Status da autenticação" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Status da Autenticação" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Reenvia o pedido de acesso" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Acesso à impressora confirmado" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Sem acesso para imprimir por esta impressora. Não foi possível enviar o trabalho de impressão." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Solicitar acesso" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Envia pedido de acesso à impressora" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Não foi possível iniciar novo trabalho de impressão." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Há um problema com a configuração de sua Ultimaker, o que torna impossível iniciar a impressão. Por favor resolva este problema antes de continuar." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Configuração conflitante" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Tem certeza que quer imprimir com a configuração selecionada?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Há divergências entre a configuração ou calibração da impressora e do Cura. Para melhores resultados, sempre fatie com os PrintCores e materiais que estão carregados em sua impressora." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Envio de novos trabalhos (temporariamente) bloqueado, ainda enviando o trabalho de impressão anterior." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Enviando dados à impressora" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Enviando Dados" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Printcore não carregado no slot {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Nenhum material carregado no slot {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "PrintCore Diferente (Cura: {cura_printcore_name}, Impressora: {remote_printcore_name}) selecionado para o extrusor {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Material diferente (Cura: {0}, Impressora: {1}) selecionado para o extrusor {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Sincronizar com a impressora" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Deseja usar a configuração atual de sua impressora no Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Os PrintCores e/ou materiais da sua impressora diferem dos que estão dentro de seu projeto atual. Para melhores resultados, sempre fatie para os PrintCores e materiais que estão na sua impressora." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Ver no Monitor" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} acabou de imprimir '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "O trabalho de impressão '{job_name}' terminou." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Impressão Concluída" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Vazio" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Desconhecido" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Erro de nuvem" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Não foi possível exportar o trabalho de impressão." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Houve um erro ao conectar à nuvem." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Transferindo via Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Conectar à Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Não me pergunte novamente para esta impressora." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Você agora pode enviar e monitorar trabalhoas de impressão de qualquer lugar usando sua conta Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Conectado!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Rever sua conexão" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "A máquina definida no perfil {0} ({1}) não equivale à sua máquina atual ({2}), não foi possível importá-lo." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Erro ao importar perfil de {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Conexão Existente" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Esta impressora ou grupo já foi adicionada ao Cura. Por favor selecione outra impressora ou grupo." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Entre o endereço IP ou nome de sua impressora na rede." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Conecta a uma impressora" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guia de Ajustes do Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Ampliar na direção do mouse não é suportado na perspectiva ortogonal." + +#~ msgid "Orthogonal" +#~ msgstr "Ortogonal" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Gerencia conexões de rede a impressoras Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Conexão de Rede UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Provê informação extra e explicações sobre ajustes do Cura com imagens e animações." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Guia de Ajustes" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guia de Ajustes do Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Os ajustes foram mudados para atender à atual disponibilidade de extrusores: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Descrição do usuário" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Estas opçÕes não estão disponíveis porque você está monitorando uma impressora de nuvem." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Ir ao Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Todos os trabalhos foram impressos." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Ver histórico de impressão" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Para imprimir diretamente para sua impressora pela rede, por favor se certifique que a impressora esteja conectada na rede usando um cabo de rede ou conectando sua impressora na rede WIFI. Se você não conectar o Cura à sua impressora, você ainda pode usar uma unidade USB para transferir arquivos G-Code para sua impressora.\n" +#~ "\n" +#~ "Selecione sua impressora da lista abaixo:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Por favor certifique-se que sua impressora está conectada:\n" +#~ "- Verifique se a impressora está ligada.\n" +#~ "- Verifique se a impressora está conectada à rede." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Ver somente a plataforma de impressão atual" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Posicionar em todas as plataformas de impressão" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Reposicionar a plataforma de impressão atual" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Permite salvar a fatia resultante como um arquivo X3G, para suportar impressoras que leem este formato (Malyan, Makerbot e outras impressoras baseadas em Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "Gerador de X3G" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Lê arquivos SVG como caminhos do extrusor, para depurar movimentos da impressora." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Leitor de Toolpath SVG" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Registro de Alterações" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Exibir registro de alterações" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "Enviando dados ao cluster remoto" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Conectar à Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "O Cura coleta estatísticas anônimas de uso." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "Coletando Dados" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "Mais informações" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Ver mais informações sobre os dados enviados pelo Cura." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "Permitir" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Permite que o Cura envie estatísticas anônimas de uso para ajudar a priorizar futuras melhorias ao software. Algumas de suas preferências e ajustes são enviados junto à versão atual do Cura e um hash dos modelos que estão sendo fatiados." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "Avaliação" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "Impressoras habilitadas em rede" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "Impressoras locais" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "Tentativa de restauração de backup do Cura que não corresponde à versão atual." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Ajustes da Máquina" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Ajustes da Impressora" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Origem no centro" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Mesa aquecida" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Ajustes da Cabeça de Impressão" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distância da esquerda da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distância da frente da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distância da direita da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distância da traseira da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Altura do eixo" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "A diferença de altura entre a ponta do bico e o sistema de eixos X e Y. Usado para prevenir colisões entre impressões e a cabeça ao imprimir \"Um de cada Vez\"." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "G-Code Inicial" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "Comandos de G-Code a serem executados no início da impressão." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "G-Code Final" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "Comandos de G-Code a serem executados no final da impressão." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Ajustes do Bico" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "O diâmetro nominal do filamento suportado pela impressora. O diâmetro exato será sobreposto pelo material e/ou perfil." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "G-Code Inicial do Extrusor" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "G-Code Final do Extrusor" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Registro de alterações" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "Termos de Acordo do Usuário" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Introduza o endereço IP ou hostname da sua impressora na rede." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "Por favor selecione uma impressora conectada à rede para monitorar." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Por favor conecte sua impressora Ultimaker à sua rede local." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "O Cura envia dados anonimamente para a Ultimaker de modo a aprimorar a qualidade de impressão e experiência de usuário. Abaixo há um exemplo de todos os dados que são enviados." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "Não desejo enviar estes dados" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Permitir enviar estes dados à Ultimaker para ajudar a melhorar o Cura" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "Nenhuma impressão selecionada" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "Por default, pixels brancos representam pontos altos da malha e pontos pretos representam pontos baixos da malha. Altere esta opção para inverter o comportamento tal que pixels pretos representem pontos altos da malha e pontos brancos representam pontos baixos da malha." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Seleccionar Atualizações da Impressora" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Selecione qual extrusor a usar para o suporte. Isto construirá estruturas de suportes abaixo do modelo para prevenir que o modelo desabe ou seja impresso no ar." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Este perfil de qualidade não está disponível para sua configuração atual de material e bico. Por favor altere-os para habilitar este perfil de qualidade" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "Configuração de impressão desabilitada. Arquivo de G-Code não pode ser modificado." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "Veja o diagrama de compatibilidade de material" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "Ver tipos" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "Oi " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- Envia trabalhos de impressão para impressoras Ultimaker fora da sua rede local\n" +#~ "- Guarda seus ajustes do Ultimaker Cura na nuvem para uso em qualquer lugar\n" +#~ "- Obtém acesso exclusivo a perfis de material de marcas reconhecidas" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "Não Foi Possível Fatiar" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "Especificação de tempo" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "Especificação de material" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Adiciona uma impressora ao Cura" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "Selecione a impressora que deseja usar da lista abaixo.\n" +#~ "\n" +#~ "Se sua impressora não está na lista, use a \"Impressora FFF Personalizada\" da categoria \"Personalizado\" e ajuste de acordo com a sua impressora no diálogo a seguir." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "Fabricante" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "Nome da Impressora" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Adicionar Impressora" + +#~ msgid "Modify G-Code" +#~ msgstr "Modificar G-Code" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "Nada a fatiar porque nenhum dos modelos cabe no volume de impressão. Por favor redimensione ou rotacione os modelos para caberem." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "O material selecionado é incompatível com a máquina ou configuração selecionada." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Material Incompatível" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Falha ao importa perfil de {0}: {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "Ferramentas" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "Não disponível" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "Inacessível" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "Disponível" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Preparando" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "Pausando" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "Continuando" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "Aguardando por: Impressora indisponível" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "Aguardando por: A primeira disponível" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "Aguardando por: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "Alteração de configuração" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "A impressora atribuída, %1, requer as seguintes alterações de configuração:" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "Sobrepôr" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "Iniciar um trabalho de impressão com configuração incompatível pode danificar sua impressora 3D. Voce tem certeza que quer sobrepôr a configuração e imprimir %1?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "Sobrepôr configuração e iniciar impressão" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "Gerenciar fila" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "Imprimindo" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "Gerenciar impressoras" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Ativar Configuração" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Carrega a configuração da impressora no Cura" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Exibir Percursos" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Exibir Assistentes" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Exibir Perímetro" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Exibir Preenchimento" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "Eu não quero enviar estes dados" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Permite o envio destes dados para a Ultimaker e nos auxilia a aprimorar o Cura" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Tipo de impressora:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Conexão:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "Estado:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "Esperando um trabalho de impressão" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "Esperando que alguém esvazie a mesa de impressão" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "Abortando impressão..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Perfis Protegidos" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Nome da Impressora:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Perfil:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Buscar..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "Encolher Todos" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "Expandir Todos" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "Configurações disponíveis" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "Extrusor" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "Sim" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "Não" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Configuração de Impressão" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Configuração de Impressão desabilitada\n" +#~ "Arquivos G-Code não podem ser modificados" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00h 00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "Especificação de tempo" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "Especificação de custo" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "Total:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Configuração Recomendada de Impressão

    Imprimir com os ajustes recomendados para a impressora, material e qualidade selecionados." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Configuração de Impressão Personalizada

    Imprimir com controle fino sobre cada parte do processo de fatiamento." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "Exibir o Registro do Motor de Fatiamento (&L)..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "Navegar pacotes..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "Expandir/Encolher Barra Lateral" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Por favor carregue um modelo 3D" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Pronto para fatiar" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "Pronto para %1" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "Fatiamento indisponível" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "Fatiar trabalho de impressão atual" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "Cancelar processo de fatiamento" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Preparar" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Selecione o dispositivo de saída ativo" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "&Ver" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "Aju&stes" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "Ferramen&tas" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Abrir arquivo" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Este perfil de qualidade não está disponível para seu material e sua configuração de bicos atuais. Por favor altere-os para abilitar este perfil de qualidade" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Velocidade de Impressão" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Mais Lento" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Mais Rápido" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Habilitar gradual" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Gerar Suportes" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Aderência à Mesa de Impressão" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "Precisa de ajuda para melhorar sua impressões?
    Leia os Guias de Resolução de Problema da Ultimaker" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Registro do Motor de Fatiamento" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "Tipo de impressora" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "Use cola com esta combinação de materiais" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Verificar compatibilidade" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Clique para verificar a compatibilidade do material em Ultimaker.com." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Mostra alterações desde a última versão verificada." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Registro de Alterações" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Cria um perfil de alterações achatado." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Achatador de Perfil" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "Perguntar ao usuário uma vez se concorda com nossa licença." + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "Acordo de Usuário" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "Por favor gere o G-Code antes de salvar." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Atualizar Firmware" @@ -5029,22 +6526,6 @@ msgstr "Leitor de Perfis do Cura" #~ msgid "Confirm uninstall " #~ msgstr "Confirme a deinstalação" -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "Pausado" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "Anterior" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "Próximo" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "Dica" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1m / ~ %2g / ~ %4 %3" @@ -5053,26 +6534,10 @@ msgstr "Leitor de Perfis do Cura" #~ msgid "%1m / ~ %2g" #~ msgstr "%1m / ~ %2g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "Imprimir experimento" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "Lista de verificação" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "Atualizar Firmware" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "Permite que fabricantes de material criem novos perfis de material e qualidade usando uma interface drop-in." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "Assistente de Perfil de Impressão" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Imprimir com a WiFi-Box do Doodle3D" @@ -5165,10 +6630,6 @@ msgstr "Leitor de Perfis do Cura" #~ msgid "Lost connection with the printer" #~ msgstr "Conexão à impressora perdida" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "Indisponível" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "Desconhecido" diff --git a/resources/i18n/pt_BR/fdmextruder.def.json.po b/resources/i18n/pt_BR/fdmextruder.def.json.po index 10db723a69..2a89e4eb5d 100644 --- a/resources/i18n/pt_BR/fdmextruder.def.json.po +++ b/resources/i18n/pt_BR/fdmextruder.def.json.po @@ -1,21 +1,22 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-11-06 04:00-0300\n" -"Last-Translator: Cláudio Sampaio \n" -"Language-Team: Cláudio Sampaio \n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-11-16 11:22-0300\n" +"Last-Translator: Cláudio Sampaio \n" +"Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.1.1\n" #: fdmextruder.def.json msgctxt "machine_settings label" @@ -84,8 +85,8 @@ msgstr "G-Code Inicial do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "G-Code Inicial a ser executado sempre que o extrusor for ligado." +msgid "Start g-code to execute when switching to this extruder." +msgstr "G-Code inicial a executar quando mudar para este extrusor." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -124,8 +125,8 @@ msgstr "G-Code Final do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "G-Code a ser executado antes de desligar o extrusor." +msgid "End g-code to execute when switching away from this extruder." +msgstr "G-Code final a executar quando mudar deste extrusor para outro." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -226,3 +227,11 @@ msgstr "Diâmetro" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Ajusta o diâmetro do filamento usado. Use o valor medido do diâmetro do filamento atual." + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "G-Code Inicial a ser executado sempre que o extrusor for ligado." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "G-Code a ser executado antes de desligar o extrusor." diff --git a/resources/i18n/pt_BR/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po index bd55d331ae..14f83b63b0 100644 --- a/resources/i18n/pt_BR/fdmprinter.def.json.po +++ b/resources/i18n/pt_BR/fdmprinter.def.json.po @@ -1,22 +1,22 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-10-06 04:30-0300\n" -"Last-Translator: Cláudio Sampaio \n" -"Language-Team: Cláudio Sampaio \n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-11-16 07:10-0300\n" +"Last-Translator: Cláudio Sampaio \n" +"Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.3\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -216,6 +216,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Indica se a plataforma de impressão pode ser aquecida." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Tem Estabilização de Temperatura do Volume de Impressão" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Indica se a máquina consegue estabilizar a temperatura do volume de construção." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -238,8 +248,8 @@ msgstr "Número de extrusores. Um extrusor é a combinação de um alimentador/t #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" -msgstr "Número de Extrusores habilitados" +msgid "Number of Extruders That Are Enabled" +msgstr "Número de Extrusores Habilitados" #: fdmprinter.def.json msgctxt "extruders_enabled_count description" @@ -248,8 +258,8 @@ msgstr "O número de carros extrusores que estão habilitados; automaticamente a #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" -msgstr "Diametro externo do bico" +msgid "Outer Nozzle Diameter" +msgstr "Diâmetro Externo do Bico" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter description" @@ -258,8 +268,8 @@ msgstr "Diâmetro exterior do bico (a ponta do hotend)." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" -msgstr "Comprimento do bico" +msgid "Nozzle Length" +msgstr "Comprimento do Bico" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance description" @@ -268,8 +278,8 @@ msgstr "Diferença de altura entre a ponta do bico e a parte mais baixa da cabe #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" -msgstr "Ângulo do bico" +msgid "Nozzle Angle" +msgstr "Ângulo do Bico" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle description" @@ -278,8 +288,8 @@ msgstr "Ângulo entre o plano horizontal e a parte cônica logo acima da ponta d #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" -msgstr "Comprimento da zona de aquecimento" +msgid "Heat Zone Length" +msgstr "Comprimento da Zona de Aquecimento" #: fdmprinter.def.json msgctxt "machine_heat_zone_length description" @@ -308,8 +318,8 @@ msgstr "Se a temperatura deve ser controlada pelo Cura. Desligue para controlar #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" -msgstr "Velocidade de aquecimento" +msgid "Heat Up Speed" +msgstr "Velocidade de Aquecimento" #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed description" @@ -318,8 +328,8 @@ msgstr "Velocidade (°C/s) pela qual o bico aquece tirada pela média na janela #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" -msgstr "Velocidade de resfriamento" +msgid "Cool Down Speed" +msgstr "Velocidade de Resfriamento" #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed description" @@ -338,7 +348,7 @@ msgstr "Tempo mínimo em que um extrusor precisará estar inativo antes que o bi #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "Sabor de G-Code" #: fdmprinter.def.json @@ -403,8 +413,8 @@ msgstr "Usar ou não comandos de retração de firmware (G10/G11) ao invés de u #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" -msgstr "Áreas proibidas" +msgid "Disallowed Areas" +msgstr "Áreas Proibidas" #: fdmprinter.def.json msgctxt "machine_disallowed_areas description" @@ -423,8 +433,8 @@ msgstr "Uma lista de polígonos com áreas em que o bico é proibido de entrar." #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" -msgstr "Polígono da cabeça da máquina" +msgid "Machine Head Polygon" +msgstr "Polígono Da Cabeça da Máquina" #: fdmprinter.def.json msgctxt "machine_head_polygon description" @@ -433,8 +443,8 @@ msgstr "Uma silhueta 2D da cabeça de impressão (sem os suportes de ventoinhas) #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" -msgstr "Polígono da cabeça da máquina e da ventoinha" +msgid "Machine Head & Fan Polygon" +msgstr "Polígono da Cabeça com Ventoinha" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" @@ -443,8 +453,8 @@ msgstr "Silhueta da cabeça de impressão com os suportes de ventoinhas inclusos #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" -msgstr "Altura do eixo" +msgid "Gantry Height" +msgstr "Altura do Eixo" #: fdmprinter.def.json msgctxt "gantry_height description" @@ -473,8 +483,8 @@ msgstr "O diâmetro interior do bico (o orifício). Altere este ajuste quanto es #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" -msgstr "Deslocamento do Extrusor" +msgid "Offset with Extruder" +msgstr "Deslocamento com o Extrusor" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords description" @@ -1021,6 +1031,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "O número de camadas inferiores. Quando calculado da espessura inferior, este valor é arredondado para um inteiro." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Camadas Inferiores Iniciais" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "O número de camadas inferiores iniciais da plataforma de impressão pra cima. Quanto calculado a partir da espessura inferior, esse valor é arrendado para um número inteiro." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1271,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Canto Mais Agudo" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Posição da Costura Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "A posição perto da qual se inicia a impressão de cada parte em uma camada." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Atrás à Esquerda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Atrás" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Atrás à Direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Frente à Direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Frente" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Frente à Esquerda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Esquerda" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1298,8 +1368,8 @@ msgstr "Preferência do Canto da Costura" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Controla se cantos no contorno do modelo influenciam a posição da costura. Nenhum significa que cantos não têm influência na posição da costura. Esconder Costura torna mais provável que ela ocorra em um canto interior. Expor Costura torna mais provável que ela ocorra em um canto exterior. Esconder ou Expor Costura torna mais provável que ocorra em um canto, externo ou externo." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Controla se os cantos do contorno do modelo influenciam a posição da costura. Nenhum significa que os cantos não terão influência na posição da costura. Ocultar Costura torna mais provável que a costura ocorra em um canto interior. Expôr Costura torna mais provável que a costura ocorra em um canto exterior. Ocultar ou Expôr Costura torna mais provável que a costura ocorra em um canto interior ou exterior. Ocultação Inteligente permite tanto cantos interiores quanto exteriores, mas escolhe os interiores mais frequentemente se apropriado." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1309,17 +1379,22 @@ msgstr "Nenhum" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "Esconder Costura" +msgstr "Ocultar Costura" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "Expor Costura" +msgstr "Expôr Costura" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "Esconder ou Expor Costura" +msgstr "Ocultar ou Expor Costura" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Ocultação Inteligente" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1333,13 +1408,13 @@ msgstr "Quando habilitado, as coordenadas da costura Z são relativas ao centro #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ignorar Pequenas Lacunas em Z" +msgid "No Skin in Z Gaps" +msgstr "Sem Contorno nas Lacunas Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Quando o modelo tem pequenas lacunas verticais, aproximadamente 5% de tempo de computação adicional pode ser gasto ao gerar camada externa superior e inferior nestes espaços estreitos. Em tal caso, desabilite este ajuste." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Quando o modelo tem pequenas lacunas verticais de apenas umas poucas camadas, normalmente há contorno em volta dessas camadas no espaço estreito. Habilite este ajuste para não gerar o contorno se a lacuna vertical for bem pequena. Isso melhora o tempo de impressão e fatiamento, mas tecnicamente deixa preenchimento exposto ao ar." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1358,8 +1433,8 @@ msgstr "Habilitar Passar a Ferro" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Passar sobre a superfície superior depois de impressa, mas sem extrudar material. A idéia é derreter o plástico do topo ainda mais, criando uma superfície mais lisa." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Passa sobre a superfície superior uma vez a mais, mas extrudando muito pouco material. Isto serve para derreter mais o plástico em cima, criando uma superfície lisa. A pressão na câmara do bico é mantida alta tal que as rugas na superfície são preenchidas com material." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1451,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "A máxima mudança de velocidade instantânea em uma direção com que o recurso de passar a ferro é feito." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Porcentagem de Sobreposição do Contorno" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajusta a quantidade de sobreposição entre as paredes e (os extremos de) linhas centrais do contorno, como uma porcentagem das larguras de filete de contorno e a parede mais interna. Uma sobreposição leve permite que as paredes se conectem firmemente ao contorno. Note que, dadas uma largura de contorno e filete de parede iguais, qualquer porcentagem acima de 50% pode fazer com que algum contorno ultrapasse a parede, pois a este ponto a posição do bico do extrusor de contorno pode já ter passado do meio da parede." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Sobreposição do Contorno" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajusta a quantidade de sobreposição entre as paredes e (os extermos de) linhas centrais do contorno. Uma sobreposição pequena permite que as paredes se conectem firmemente ao contorno. Note que, dados uma largura de contorno e filete de parede iguais, qualquer valor maior que metade da largura da parede pode fazer com que o contorno ultrapasse a parede, pois a este ponto a posição do bico do extrusor de contorno pode já ter passado do meio da parede." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1616,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "O padrão de preenchimento é movido por esta distância no eixo Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Aleatorizar o Começo do Preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Aleatoriza qual linha do preenchimento é impressa primeiro. Isto evita que um segmento seja mais forte que os outros, mas ao custo de um percurso adicional." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1670,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "A quantidade de sobreposição entre o preenchimento e as paredes. Uma leve sobreposição permite que as paredes se conectem firmemente ao preenchimento." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Porcentagem de Sobreposição do Contorno" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "A quantidade de sobreposição entre o contorno e as paredes como uma porcentagem da largura de extrusão do contorno. Uma leve sobreposição permite que as paredes se conectem firmemente ao contorno. É uma porcentagem das larguras de extrusão médias das linhas de contorno e a parede mais interna." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Sobreposição do Contorno" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "A quantidade de sobreposição entre o contorno e as paredes. Uma leve sobreposição permite às paredes ficarem firmemente aderidas ao contorno." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1870,6 +1955,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "A temperatura default usada para a impressão. Esta deve ser a temperatura \"base\" de um material. Todas as outras temperaturas de impressão devem usar diferenças baseadas neste valor" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "Temperatura do Volume de Impressão" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "A temperatura do ambiente em que imprimir. Se este valor for 0, a temperatura de volume de impressão não será ajustada." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1980,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Raio de contração do material em porcentagem." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Material Cristalino" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Este material é do tipo que se destaca completamente quando aquecido (cristalino), ou é o tipo que produz cadeias de polímero entrelaçadas (não-cristalino)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Posição Retraída Anti-escorrimento" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "De quanto o material precisa ser retraído antes que pare de escorrer." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Velocidade de Retração Anti-escorrimento" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Qual a velocidade do material para que seja retraído durante a troca de filamento sem escorrimento." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Posição Retraída de Preparação de Quebra" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Quanto o filamento pode ser esticado antes que quebre, quando aquecido." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Velocidade de Retração de Preparação de Quebra" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Qual a velocidade do material para que seja retraído antes de quebrar em uma retração." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Posição Retraída de Quebra" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "De quanto o filamento deve ser retraído para se destacar completamente." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Velocidade de Retração de Quebra" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "A velocidade com a qual retrair o filamento para que se destaque completamente." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatura de Quebra" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "A temperatura em que o filamento é destacado completamente." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1990,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Compensação de fluxo: a quantidade de material extrudado é multiplicado por este valor." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Fluxo de Parede" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Compensação de fluxo em filetes das paredes." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Fluxo da Parede Externa" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Compensação de fluxo no filete de parede mais externo." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Fluxo da(s) Parede(s) Interna(s)" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Compensação de fluxo em todos os filetes de parede excetuando o mais externo." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Fluxo de Topo/Base" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Compensação de fluxo em filetes do topo e base." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Fluxo do Contorno da Superfície Superior" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Compensação de Fluxo em filetes das áreas no topo da impressão." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Fluxo de Preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Compensação de fluxo em filetes de preenchimento." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Fluxo de Skirt/Brim" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Compensação de Fluxo em filetes de Skirt e Brim." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Fluxo de Suporte" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Compensação de fluxo em filetes de estruturas de suporte." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Fluxo de Interface de Suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Compensação de fluxo em filetes do teto ou base do suporte." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Fluxo do Teto de Suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Compensação de fluxo em filetes do teto de suporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Fluxo da Base de Suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Compensação de fluxo nos filetes da base do suporte." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Fluxo da Torre de Purga" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Compensação de fluxo em filetes de torre de purga." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2107,8 +2402,8 @@ msgstr "Limitar Retrações de Suporte" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Omitir retrações quando mudar de suporte a suporte em linha reta. Habilitar este ajuste economiza tempo de impressão, mas pode levar a fiapos entremeados à estrutura de suporte." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Omitir a retração ao mover de suporte a suporte em linha reta. Habilitar este ajuste economiza tempo de impressão, mas pode levar a fiapos excessivos na estrutura de suporte." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2127,8 +2422,8 @@ msgstr "Distância de Retração da Troca de Bico" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "A quantidade de retração: coloque em '0' para nenhuma retração. Isto deve geralmente ser o mesmo que o comprimento da zona de aquecimento dentro do hotend." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "A quantidade de retração ao mudar extrusores. Coloque em 0 para não haver retração. Isto deve geralmente ser o mesmo que o comprimento da zona de aquecimento do hotend." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2160,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "A velocidade em que o filamento é empurrado para a frente depois de uma retração de troca de bico." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Quantidade de Avanço Extra da Troca de Bico" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Material extra a avançar depois da troca de bico." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2351,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Velocidade em que o Brim (Bainha) e Skirt (Saia) são impressos. Normalmente isto é feito na velocidade de camada inicial, mas você pode querer imprimi-los em velocidade diferente." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Velocidade Máxima em Z" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Velocidade do Salto Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "A velocidade máxima com que o eixo Z é movido. Colocar isto em zero faz com que a impressão use os defaults de firmware para a velocidade máxima de Z." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "A velocidade em que o movimento Z vertical é feito para os saltos Z. Tipicamente mais baixa que a velocidade de impressão já que mover a mesa de impressão ou eixos da máquina é mais difícil." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2787,8 +3092,8 @@ msgstr "Modo de Combing" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "O Combing (penteamento) mantém o bico dentro de áreas já impressas durante os percursos. Isto resulta em movimentações um pouco mais amplas mas reduz a necessidade de retrações. Se o combing for desligado, o material sofrerá retração e o bico se moverá em linha reta ao próximo ponto. É também possível evitar combing sobre áreas de contorno de topo e base e ainda só fazer combing no preenchimento. Note que a opção 'Dentro do Preenchimento' se comporta exatamente como a 'Não no Contorno' em versões anteriores do Cura." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "O Combing mantém o bico dentro de áreas já impressas ao fazer o percurso. Isto causa movimentações de percurso um pouco mais demoradas mas reduz a necessidade de retrações. Se o combing estiver desligado, o material sofrerá retração eo bico se moverá em linha reta até o próximo ponto. É possível também evitar combing sobre contornos inferiores e superiores ou somente fazer combing dentro do preenchimento." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2860,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "A distância entre o bico e as partes já impressas quando evitadas durante o percurso." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Iniciar Camadas com a Mesma Parte" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Em cada camada iniciar imprimindo o objeto próximo ao mesmo ponto, de modo que não comecemos uma nova camada quando imprimir a peça com que a camada anterior terminou. Isso permite seções pendentes e partes pequenas melhores, mas aumenta o tempo de impressão." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2930,6 +3225,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "Quando a máquina troca de um extrusor para o outro, sobe-se um pouco em Z para criar um espaço entre o bico e a impressão. Isso impede que o bico escorra material em cima da impressão." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "Salto Z Após Troca de Altura do Extrusor" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "A diferença de altura ao executar um Salto Z após trocar extrusores." + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3200,6 +3505,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Cruzado" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "Giróide" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3261,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Distância entre os filetes da camada inicial da camada de suporte. Este ajuste é calculado pela densidade de suporte." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Direção de Filete do Preenchimento de Suporte" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Orientação do padrão de preenchimento para suportes. O padrão de preenchimento do suporte é rotacionado no plano horizontal." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Uma lista de direções inteiras de filete. Elementos da lista são usados sequencialmente à medida que as camadas progridem e quando o fim da lista é alcançado, ela recomeça do início. Os itens da lista são separados por vírgulas e a lista inteira é contida em colchetes. O default é uma lista vazia, o que significa usar o ângulo default de 0 graus." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3397,8 +3707,8 @@ msgstr "Distância de União do Suporte" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Distância máxima entre as estruturas de suporte nas direções X/Y. Quando estrutura separadas estão mais perto que este valor, as estruturas são combinadas em uma única." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "A distância máxima entre as estruturas de suporte nas direções X/Y. Quando estruturas separadas estão mais próximas que este valor, elas são fundidas em uma só." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3440,6 +3750,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "A altura do preenchimento de suporte de dada densidade antes de trocar para metade desta densidade." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "Área Mínima de Suporte" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "Área mínima para polígonos de suporte. Polígonos que tiverem uma área menor que essa não serão gerados." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3665,6 +3985,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Ziguezague" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "Área Mínima de Interface de Suporte" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Área mínima para os polígonos da interface de suporte. Polígonos que têm área menor que este valor serão impressos como suporte normal." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "Área Mínima de Teto de Suporte" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Área mínima para os tetos do suporte. Polígonos que têm área menor que este valor serão impressos como suporte normal." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "Área Mínima de Base de Suporte" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Área mínima para as bases do suport. Polígonos que têm área menor que este valor serão impressos como suporte normal." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "Expansão Horizontal da Interface de Suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "Quantidade de deslocamento aplicado aos polígonos da interface de suporte." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "Expansão Horizontal do Teto de Suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "Quantidade de deslocamento aplicado aos tetos do suporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "Expansão Horizontal da Base do Suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "Quantidade de deslocamento aplicado às bases do suporte." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Direções do Filete de Interface de Suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Uma lista de direções inteiras de filete. Elementos da lista são usados sequencialmente à medida que as camadas progridem e quando o fim da lista é alcançado, ela recomeça do início. Os itens da lista são separados por vírgulas e a lista inteira é contida em colchetes. O default é uma lista vazia, o que significa usar os ângulos default (alternando entre 45 e 135 graus se as interfaces forem grossas, ou 90 se não)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Direções de Filete do Teto do Suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Uma lista de direções inteiras de filete. Elementos da lista são usados sequencialmente à medida que as camadas progridem e quando o fim da lista é alcançado, ela recomeça do início. Os itens da lista são separados por vírgulas e a lista inteira é contida em colchetes. O default é uma lista vazia, o que significa usar os ângulos default (alternando entre 45 e 135 graus se as interfaces forem grossas, ou 90 se não)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Direções de Filete da Base do Suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Uma lista de direções inteiras de filete. Elementos da lista são usados sequencialmente à medida que as camadas progridem e quando o fim da lista é alcançado, ela recomeça do início. Os itens da lista são separados por vírgulas e a lista inteira é contida em colchetes. O default é uma lista vazia, o que significa usar os ângulos default (alternando entre 45 e 135 graus se as interfaces forem grossas, ou 90 se não)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3706,14 +4116,14 @@ msgid "The diameter of a special tower." msgstr "O diâmetro da torre especial." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Diâmetro mínimo" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Diâmetro Máximo Suportado por Torres" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Diâmeto mínimo nas direções X/Y de uma área pequena que deverá ser suportada por uma torre de suporte especial." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Diâmetro máximo nas direções X e Y da pequena área que será suportada por uma torre especializada de suporte." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3783,7 +4193,7 @@ msgstr "Tipo de Aderência da Mesa de Impressão" #: fdmprinter.def.json msgctxt "adhesion_type description" msgid "Different options that help to improve both priming your extrusion and adhesion to the build plate. Brim adds a single layer flat area around the base of your model to prevent warping. Raft adds a thick grid with a roof below the model. Skirt is a line printed around the model, but not connected to the model." -msgstr "Diferentes opções que ajudam a melhorar a extrusão e a aderência à plataforma de construção. Brim (bainha) adiciona uma camada única e chata em volta da base de seu modelo para impedir warping. Raft (balsa) adiciona uma grade densa com 'teto' abaixo do modelo. Skirt (saia) é uma linha impressa em volta do modelo, mas não conectada ao modelo, para apenas iniciar o processo de extrusão." +msgstr "Diferentes opções que ajudam a melhorar a extrusão e a aderência à plataforma de impressão. Brim (bainha) adiciona uma camada única e chata em volta da base de seu modelo para impedir warping. Raft (balsa) adiciona uma grade densa com 'teto' abaixo do modelo. Skirt (saia) é uma linha impressa em volta do modelo, mas não conectada ao modelo, para apenas iniciar o processo de extrusão." #: fdmprinter.def.json msgctxt "adhesion_type option skirt" @@ -4209,16 +4619,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Imprimir uma torre próxima à impressão que serve para purgar o material a cada troca de bico." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Torre de Prime Circular" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Faz a torre de prime na forma circular." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4259,16 +4659,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "A coordenada Y da posição da torre de purga." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Fluxo da Torre de Purga" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Compensação de Fluxo: a quantidade de material extrudado é multiplicado por este valor." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4279,6 +4669,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "Depois de imprimir a torre de purga com um bico, limpar o material escorrendo do outro bico na torre de purga." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "Brim da Torre de Purga" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "Torres de Prime podem precisar de aderência extra dada por um brim mesmo se o modelo não precisar. No momento não pode ser usado com o tipo de aderência 'Raft'." + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4399,6 +4799,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Remove camadas vazias entre a primeira camada impressa se estiverem presentes. Desabilitar este ajuste pode criar camadas iniciais vazias se a Tolerância de Fatiamento estiver configurada para Exclusivo ou Meio." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Resolução Máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "O tamanho mínimo de um segmento de linha após o fatiamento. Se você aumentar este valor, a malha terá uma resolução menor. Isto pode permitir que a impressora mantenha a velocidade que precisa para processar o G-Code e aumentará a velocidade de fatiamento ao remover detalhes da malha que não poderia processar de qualquer jeito." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Máxima Resolução de Percurso" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "O tamanho mínimo de um segmento de linha de percurso após o fatiamento. Se o valor aumenta, os movimentos de percurso terão cantos menos suaves. Isto pode permitir que a impressora mantenha a velocidade necessária para processar o G-Code, mas pode fazer com que evitar topar no modelo fique menos preciso." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Desvio Máximo" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "O desvio máximo permitido ao reduzir a resolução para o ajuste de Máxima Resolução. Se você aumentar isto, a impressão será menos precisa, mas o G-Code será menor. O Desvio Máximo é um limite para Resolução Máxima, portanto se os dois conflitarem o Desvio Máximo sempre será o valor dominante." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4561,8 +4991,8 @@ msgstr "Suavizar Contornos Espiralizados" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Suaviza os contornos espiralizados para reduzir a visibilidade da costura em Z (esta costura será quase invisível na impressão mas ainda pode ser vista na visão de camadas). Note que suavizar tenderá a remover detalhes finos de superfície." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Suavizar os contornos espiralizados para reduzir a visibilidade da costura Z (a costura Z deve ser quase invisível na impressão mas ainda será visível na visão de camadas). Note que a suavização tenderá a embaçar detalhes finos de superfície." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4774,26 +5204,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Polígonos em camadas fatiadas que tiverem uma circunferência menor que esta quantia serão excluídos. Menores valores levam a malha de maior resolução ao custo de tempo de fatiamento. Serve melhor para impressoras SLA de alta resolução e pequenos modelos 3D com muitos detalhes." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Resolução Máxima" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "O tamanho mínimo de um segmento de linha após o fatiamento. Se você aumentar este valor, a malha terá uma resolução menor. Isto pode permitir que a impressora mantenha a velocidade que precisa para processar o G-Code e aumentará a velocidade de fatiamento ao remover detalhes da malha que não poderia processar de qualquer jeito." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Máxima Resolução de Percurso" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "O tamanho mínimo de um segmento de linha de percurso após o fatiamento. Se o valor aumenta, os movimentos de percurso terão cantos menos suaves. Isto pode permitir que a impressora mantenha a velocidade necessária para processar o G-Code, mas pode fazer com que evitar topar no modelo fique menos preciso." - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4934,16 +5344,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "A velocidade pela qual se mover durante a desengrenagem, relativa à velocidade do caminho de extrusão. Um valor ligeiramente menor que 100% é sugerido, já que durante a desengrenagem a pressão dentro do hotend cai." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Alterna a Rotação do Contorno" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Alterna a direção em que as camadas superiores e inferiores são impressas. Normalmente elas são impressas somente na diagonal. Este ajuste permite direções somente no X e somente no Y." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5051,8 +5451,8 @@ msgstr "Habilitar Suporte Cônico" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Recurso experimental: Faz as áreas de suporte menores na base que na seção pendente." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Faz as áreas de suporte menores na base que na seção pendente." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5116,23 +5516,23 @@ msgstr "A distância média entre os pontos aleatórios introduzidos em cada seg #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" -msgstr "Deslocamento de extrusão máxima da compensação de taxa de fluxo" +msgid "Flow Rate Compensation Max Extrusion Offset" +msgstr "Máximo Deslocamento de Extrusão de Compensação de Taxa de Fluxo" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "A distância máxima em mm a compensar." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "A distância máxima em mm para mover o filamento para compensar mudanças na taxa de fluxo." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" -msgstr "Fator de compensaçõ de taxa de fluxo" +msgid "Flow Rate Compensation Factor" +msgstr "Fator de Compensação da Taxa de Fluxo" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "O fator de multiplicação para a tradução entre taxa de fluxo -> distância." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Em quanto mover o filamento para compensar mudanças na taxa de fluxo, como uma porcentagem da distância que o filamento seria movido em um segundo de extrusão." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5395,8 +5795,8 @@ msgstr "Distância entre o bico e os filetes descendentes horizontais. Espaços #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" -msgstr "Usar camadas adaptativas" +msgid "Use Adaptive Layers" +msgstr "Usar Camadas Adaptativas" #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled description" @@ -5405,8 +5805,8 @@ msgstr "Camadas adaptativas fazem a computação das alturas de camada depender #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" -msgstr "Variação máxima das camadas adaptativas" +msgid "Adaptive Layers Maximum Variation" +msgstr "Máximo Variação das Camadas Adaptativas" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation description" @@ -5415,8 +5815,8 @@ msgstr "A variação de altura máxima permitida para a camada de base." #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" -msgstr "Tamanho de passo da variação das camadas adaptativas" +msgid "Adaptive Layers Variation Step Size" +msgstr "Tamanho de Passo da Variação das Camadas Adaptativas" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step description" @@ -5425,13 +5825,13 @@ msgstr "A diferença em tamanho da próxima camada comparada à anterior." #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "Limite das camadas adaptativas" +msgid "Adaptive Layers Topography Size" +msgstr "Tamanho da Topografia de Camadas Adaptativas" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Limite até onde se usa uma camada menor ou não. Este número é comparado à tangente da ladeira mais vertical da camada." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Trata da distância horizontal entre duas camadas adjacentes. Reduzir este ajuste faz com que camadas mais finas sejam usadas para reunir as bordas das camadas mais perto uma da outra." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5440,8 +5840,8 @@ msgstr "Ângulo de Parede Pendente" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Paredes que têm inclinação maior que este ângulo serão impressas usando ajustes de seção pendente de parede. Quando o valor for 90, nenhuma parede será tratada como seção pendente." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Paredes que pendem por mais do que esse ângulo serão impressas usando ajustes de paredes pendentes. Quando este valor for 90, nenhuma parede será tratada como pendente. Seções pendentes que têm suportes também não serão tratadas como pendentes." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5643,6 +6043,196 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "Porcentagem da velocidade da ventoinha a usar quando se imprimir a terceira camada de contorno da ponte." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "Limpar o Bico Entre Camadas" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "Incluir ou não o G-Code para movimento de limpeza de bico (wipe) entre camadas. Habilitar este ajuste pode influenciar o comportamento de retração na mudança de camadas. Por favor use os ajustes de Retração de Limpeza para controlar retração nas camadas onde o script de limpeza funcionará." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "Volume de Material Entre Limpezas" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "Material máximo que pode ser extrudado antes que outra limpeza do bico seja iniciada." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "Habilitar Retração de Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "Retrair o filamento quando o bico se mover sobre uma área não impressa." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "Distância de Retração da Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "Quantidade a retrair do filamento tal que ele não escorra durante a sequência de limpeza." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "Quantidade Extra de Purga da Retração de Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "Um pouco de material pode escorrer durante os movimentos do percurso de limpeza e isso pode ser compensado neste ajuste." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "Velocidade da Retração de Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "A velocidade com que o filamento é retraído e purgado durante um movimento de limpeza de retração." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "Velocidade da Retração da Retração de Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "A velocidade com que o filamento é retraído durante um movimento de retração de limpeza." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Velocidade de Purga da Retração" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "A velocidade com que o filamento é purgado durante um movimento de retração de limpeza." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "Pausa de Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "Pausa após desfazimento da retração." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "Salto Z da Limpeza Quando Retraída" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "Sempre que uma retração é feita, a posição Z do extrusor é aumentada para aumentar a distância entre o bico e a impressão. Isso evita que o bico bata na impressão durante movimentos de percurso, reduzindo a chance de descolar a impressão da plataforma." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "Altura do Salto Z da Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "A diferença de altura ao executar um Salto Z." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "Velocidade do Salto de Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "Velocidade com que mover o eixo Z durante o salto." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "Posição X da Varredura de Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "Localização X onde o script de limpeza iniciará." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "Contagem de Repetições de Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "Número de vezes com que mover o bico através da varredura." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "Distância de Movimentação da Limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "A distância com que mover a cabeça pra frente e pra trás durante a varredura." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Tamanho Máximo de Furos Pequenos" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Furos e contornos de partes com diâmetro menor que este serão impressos usando a Velocidade de Aspecto Pequeno." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Comprimento Máximo do Aspecto Pequeno" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Contornos de aspectos menores que este comprimento serão impressos usando a Velocidade de Aspecto Pequeno." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Velocidade de Aspecto Pequeno" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Aspectos pequenos serão impressos nessa porcentagem da velocidade normal. Impressão mais lenta pode ajudar com aderência e precisão." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Velocidade de Camada Inicial de Aspecto Pequeno" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Aspectos pequenos na primeira camada serão impressos nesta porcentagem de sua velocidade de impressão normal. Impressão mais lenta pode ajudar com aderência e precisão." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5703,6 +6293,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matriz de transformação a ser aplicada ao modelo após o carregamento do arquivo." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Área mínima para polígonos de interface de suporte. Polígonos que tiverem uma área menor que este valor não serão gerados." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Área mínima para os tetos do suporte. Polígonos que tiverem área menor que este valor são serão gerados." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Área mínima para as bases do suporte. Polígonos que tiverem uma área menor que este valor não serão gerados." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Alterna a Rotação do Contorno" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Alterna a direção em que as camadas superiores e inferiores são impressas. Normalmente elas são impressas somente na diagonal. Este ajuste permite direções somente no X e somente no Y." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Deslocamento de extrusão máxima da compensação de taxa de fluxo" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "A distância máxima em mm a compensar." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Fator de compensaçõ de taxa de fluxo" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "O fator de multiplicação para a tradução entre taxa de fluxo -> distância." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Limite das Camadas Adaptativas" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Limite até onde se usa uma camada menor ou não. Este número é comparado à tangente da ladeira mais vertical da camada." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Paredes que têm inclinação maior que este ângulo serão impressas usando ajustes de seção pendente de parede. Quando o valor for 90, nenhuma parede será tratada como seção pendente." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Pequenos aspectos serão impressos com esta porcentagem de sua velocidade normal de impressão. Impressão mais lenta pode ajudar com aderência e precisão." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Velocidade da Primeira Camada" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Aspectos pequenos na primeira camada serão impressos nesta porcentagem de sua velocidade normal de impressão. Impressão mais lenta pode ajudar com aderência e precisão." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Passar sobre a superfície superior depois de impressa, mas sem extrudar material. A idéia é derreter o plástico do topo ainda mais, criando uma superfície mais lisa." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Iniciar Camadas com a Mesma Parte" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Em cada camada iniciar imprimindo o objeto próximo ao mesmo ponto, de modo que não comecemos uma nova camada quando imprimir a peça com que a camada anterior terminou. Isso permite seções pendentes e partes pequenas melhores, mas aumenta o tempo de impressão." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Orientação do padrão de preenchimento para suportes. O padrão de preenchimento do suporte é rotacionado no plano horizontal." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "O valor máximo de desvio permitido ao reduzir a resolução para o ajuste de Resolução Máxima. Se você aumenta este número, a impressão terá menos acuidade, mas o G-Code será menor." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Sabor de G-Code" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Controla se cantos no contorno do modelo influenciam a posição da costura. Nenhum significa que cantos não têm influência na posição da costura. Esconder Costura torna mais provável que ela ocorra em um canto interior. Expor Costura torna mais provável que ela ocorra em um canto exterior. Esconder ou Expor Costura torna mais provável que ocorra em um canto, externo ou externo." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ignorar Pequenas Lacunas em Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Quando o modelo tem pequenas lacunas verticais, aproximadamente 5% de tempo de computação adicional pode ser gasto ao gerar camada externa superior e inferior nestes espaços estreitos. Em tal caso, desabilite este ajuste." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "A temperatura usada para o volume de construção. Se o valor for zero, a temperatura de volume de impressão não será ajustada." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Omitir retrações quando mudar de suporte a suporte em linha reta. Habilitar este ajuste economiza tempo de impressão, mas pode levar a fiapos entremeados à estrutura de suporte." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Velocidade Máxima em Z" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "A velocidade máxima com que o eixo Z é movido. Colocar isto em zero faz com que a impressão use os defaults de firmware para a velocidade máxima de Z." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Distância máxima entre as estruturas de suporte nas direções X/Y. Quando estrutura separadas estão mais perto que este valor, as estruturas são combinadas em uma única." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Diâmetro mínimo" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Diâmeto mínimo nas direções X/Y de uma área pequena que deverá ser suportada por uma torre de suporte especial." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Torre de Purga Circular" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Faz a torre de purga na forma circular." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Compensação de Fluxo: a quantidade de material extrudado é multiplicado por este valor." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Suaviza os contornos espiralizados para reduzir a visibilidade da costura em Z (esta costura será quase invisível na impressão mas ainda pode ser vista na visão de camadas). Note que suavizar tenderá a remover detalhes finos de superfície." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Recurso experimental: Faz as áreas de suporte menores na base que na seção pendente." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "Número de Extrusores habilitados" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Diametro externo do bico" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Comprimento do bico" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Ângulo do bico" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Comprimento da zona de aquecimento" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Velocidade de aquecimento" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Velocidade de resfriamento" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "Sabor de G-Code" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "Áreas proibidas" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Polígono da cabeça da máquina" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Polígono da cabeça da máquina e da ventoinha" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Altura do eixo" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Deslocamento do Extrusor" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "Usar camadas adaptativas" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "Variação máxima das camadas adaptativas" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "Tamanho de passo da variação das camadas adaptativas" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "Limite das camadas adaptativas" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "A quantidade de sobreposição entre o contorno e as paredes como uma porcentagem da largura de extrusão do contorno. Uma leve sobreposição permite que as paredes se conectem firmemente ao contorno. É uma porcentagem das larguras de extrusão médias das linhas de contorno e a parede mais interna." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "A quantidade de sobreposição entre o contorno e as paredes. Uma leve sobreposição permite às paredes ficarem firmemente aderidas ao contorno." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "A quantidade de retração: coloque em '0' para nenhuma retração. Isto deve geralmente ser o mesmo que o comprimento da zona de aquecimento dentro do hotend." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "O Combing (penteamento) mantém o bico dentro de áreas já impressas durante os percursos. Isto resulta em movimentações um pouco mais amplas mas reduz a necessidade de retrações. Se o combing for desligado, o material sofrerá retração e o bico se moverá em linha reta ao próximo ponto. É também possível evitar combing sobre áreas de contorno de topo e base e ainda só fazer combing no preenchimento. Note que a opção 'Dentro do Preenchimento' se comporta exatamente como a 'Não no Contorno' em versões anteriores do Cura." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "Conectar camihos de contorno do topo e base onde se situarem próximos. Habilitar para o padrão concêntrico reduzirá bastante o tempo de percurso, mas visto que as conexões podem acontecer sobre o preenchimento no meio do caminho, este recurso pode reduzir a qualidade da superfície superior." diff --git a/resources/i18n/pt_PT/cura.po b/resources/i18n/pt_PT/cura.po index bcfa154d11..a7765c66a3 100644 --- a/resources/i18n/pt_PT/cura.po +++ b/resources/i18n/pt_PT/cura.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-10-01 13:15+0100\n" -"Last-Translator: Paulo Miranda \n" -"Language-Team: Paulo Miranda , Portuguese \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0100\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Portuguese , Paulo Miranda , Portuguese \n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.7\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Definições da Máquina" @@ -40,24 +40,24 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Ficheiro G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "O GCodeWriter não suporta modo sem texto." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Prepare um G-code antes de exportar." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Assistente de Modelos 3D" # rever! -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -65,71 +65,56 @@ msgid "" "

    {model_names}

    \n" "

    Find out how to ensure the best possible print quality and reliability.

    \n" "

    View print quality guide

    " -msgstr "

    Um, ou mais, dos modelos 3D podem ter menos qualidade de impressão devido à dimensão do modelo 3D e definição de material:

    \n

    {model_names}

    \n

    Descubra como assegurar a melhor qualidade e fiabilidade possível da impressão.

    \n

    Ver o guia de qualidade da impressão

    " - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Mostrar Lista das Alterações de cada Versão" +msgstr "" +"

    Um, ou mais, dos modelos 3D podem ter menos qualidade de impressão devido à dimensão do modelo 3D e definição de material:

    \n" +"

    {model_names}

    \n" +"

    Descubra como assegurar a melhor qualidade e fiabilidade possível da impressão.

    \n" +"

    Ver o guia de qualidade da impressão

    " #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Atualizar firmware" -# rever! -# flatten -ver contexto! -# nivelar? -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Nivelar Definições Ativas" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Ficheiro AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "O perfil foi nivelado & ativado." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impressão USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir por USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir por USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Ligado via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Existe uma impressão por USB em curso; fechar o Cura irá interromper esta impressão. Tem a certeza?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Ficheiro X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Existe uma impressão em curso. O Cura não consegue iniciar outra impressão via USB até a impressão anterior ser concluída." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Grava X3g num ficheiro" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Ficheiro X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Impressão em curso" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -143,6 +128,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "O GCodeGzWriter não suporta modo de texto." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Arquivo Ultimaker Format" @@ -166,7 +152,7 @@ msgstr "Guardar no Disco Externo {0}" # rever! # contexto #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Não existem quaisquer formatos disponíveis para gravar o ficheiro!" @@ -203,9 +189,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Não foi possível guardar no Disco Externo {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Erro" @@ -237,8 +223,9 @@ msgstr "Ejetar Disco Externo {0}" # Atenção? #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Aviso" @@ -265,241 +252,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Disco Externo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Imprimir através da rede" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Imprimir através da rede" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Ligado através da rede." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Ligado através da rede. Por favor aprove o pedido de acesso, na impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Ligado através da rede. Sem autorização para controlar a impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Acesso à impressora solicitado. Por favor aprove o pedido de acesso, na impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Estado da autenticação" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "Estado da autenticação" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Tentar de Novo" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Reenviar a solicitação de acesso" - -# rever! -# aceite? -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Acesso à impressora confirmado" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "Sem autorização para imprimir com esta impressora. Não foi possível enviar o trabalho de impressão." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Solicitar Acesso" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Enviar pedido de acesso para a impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "Não é possível iniciar um novo trabalho de impressão." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Existe um problema com a configuração da sua Ultimaker, o qual impede o inicio da impressão. Por favor resolva este problema antes de continuar." - -# rever! -# ver contexto! pode querer dizer -# Configuração incompatível -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Divergência de Configuração" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Tem a certeza de que deseja imprimir com a configuração selecionada?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Existe uma divergência entre a configuração ou calibração da impressora e o Cura. Para se obter os melhores resultados, o seccionamento (no Cura) deve ser sempre feito para os núcleos de impressão e para os materiais que estão introduzidos na impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "O envio de novos trabalhos está (temporariamente) bloqueado; o trabalho de impressão anterior ainda está a ser enviado." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "A enviar dados para a impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "A Enviar Dados" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancelar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "Nenhum PrintCore instalado na ranhura {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "Nenhum material carregado na ranhura {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "PrintCore diferente (Cura: {cura_printcore_name}, Impressora: {remote_printcore_name}) selecionado para o extrusor {extruder_id}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Material diferente (Cura: {0}, Impressora: {1}) selecionado para o extrusor {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Sincronizar com a impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Deseja utilizar a configuração atual da impressora no Cura?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Os núcleos de impressão e/ou materiais na sua impressora são diferentes dos definidos no seu projeto atual. Para se obter os melhores resultados, o seccionamento (no Cura) deve ser sempre feito para os núcleos de impressão e para os materiais que estão introduzidos na impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Ligado através da rede" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "O trabalho de impressão foi enviado com sucesso para a impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Dados Enviados" - -# rever! -# contexto -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Ver no Monitor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "A impressora {printer_name} terminou a impressão de \"{job_name}\"." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "O trabalho de impressão '{job_name}' terminou." - -# rever! -# Concluída? -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Impressão terminada" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Ligar Através da Rede" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Imprimir através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Imprimir através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Ligado através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Aguarde até o trabalho atual ter sido enviado." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Erro de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Encontradas novas impressoras na cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Foram encontradas novas impressoras associadas à sua conta. Pode encontrá-las na sua lista de impressoras detetadas." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Não mostrar esta mensagem novamente" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Está a tentar ligar a {0}, mas esta não é Host de um grupo. Pode visitar a página Web para a configurar como Host do grupo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Não é Host do grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Configurar grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Envie e monitorize trabalhos de impressão a partir de qualquer lugar através da sua conta Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Ligar à cloud da Ultimaker" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Iniciar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "A enviar trabalho de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Carregar um trabalho de impressão na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "O trabalho de impressão foi enviado com sucesso para a impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Dados Enviados" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Está a tentar ligar a uma impressora que não tem o Ultimaker Connect. Atualize a impressora para o firmware mais recente." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Atualizar a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "O Cura detetou perfis de material que ainda não estavam instalados na impressora que aloja o grupo {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Enviar materiais para a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Não foi possível carregar os dados para a impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Erro de rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "amanhã" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "hoje" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Imprimir através da cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Imprimir através da cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Ligada através da cloud" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Monitorizar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Não foi possível aceder às informações de atualização." @@ -521,24 +431,30 @@ msgctxt "@action:button" msgid "How to update" msgstr "Como atualizar" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Vista Camadas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Quando a opção \"Wire Printing\" está ativa, o Cura não permite visualizar as camadas de uma forma precisa" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Visualização por Camadas" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "Pós-Processamento" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" -msgstr "Modificar G-code" +msgstr "Modificar G-Code" #: /home/ruben/Projects/Cura/plugins/SupportEraser/__init__.py:12 msgctxt "@label" @@ -550,36 +466,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "Criar um volume dentro do qual não são impressos suportes." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "O Cura recolhe, de forma anónima, estatísticas sobre as opções usadas." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "A Recolher Dados" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "Mais informação" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Saiba mais sobre que informação o Cura envia." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "Permitir" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Permitir que o Cura envie de forma anónima, estatísticas sobre as opções usadas, para nos ajudar a estabelecer as prioridades para os futuros desenvolvimentos do Cura. São enviadas apenas algumas das preferências e definições usadas, a versão do Cura e um valor \"hash\" dos modelos que está a seccionar." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -610,62 +496,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagem GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Não é possível seccionar com o material atual, uma vez que é incompatível com a impressora ou configuração selecionada." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "Não é possível Seccionar" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Não é possível seccionar com as definições atuais. As seguintes definições apresentam erros: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Não é possível seccionar devido a algumas definições por modelo. As seguintes definições apresentam erros num ou mais modelos: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Não é possível seccionar porque a torre de preparação ou a(s) posição(ões) de preparação é(são) inválidas." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." -msgstr "Não é possível seccionar porque existem objetos associados à extrusora %s desativada." +msgstr "Não é possível seccionar porque existem objetos associados ao extrusor %s desativado." -# rever! -# models fit the -# dentro do? -# contido pelo -# se adapta? -# cabem no...? -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Sem conteúdo para seccionar porque nenhum dos modelos está dentro do volume de construção. Por favor redimensione, mova ou rode os modelos para os adaptar ao volume de construção." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "Sem conteúdo para segmentar porque nenhum dos modelos está dentro do volume de construção ou porque os mesmos estão atribuídos a um extrusor desativado. Dimensione ou rode os modelos para os adaptar ou ative o extrusor." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "A Processar Camadas" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Informações" @@ -680,14 +590,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Configurar definições individuais Por-Modelo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -698,19 +606,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Ficheiro 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "O ficheiro de projeto {0} contém um tipo de máquina desconhecido {1}. Não é possível importar a máquina. Em vez disso, serão importados os modelos." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Abrir ficheiro de projeto" @@ -725,22 +633,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Ficheiro G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "A analisar G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Detalhes do G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Certifique-se de que este g-code é apropriado para a sua impressora e respetiva configuração, antes de enviar o ficheiro para a impressora. A representação do g-code poderá não ser exata." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "Gerir cópias de segurança" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "Backup" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "Ocorreu um erro ao listar as suas cópias de segurança." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "Ocorreu um erro ao tentar restaurar a sua cópia de segurança." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "Cópias de segurança" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "A carregar a sua cópia de segurança..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "Ocorreu um erro ao carregar a sua cópia de segurança." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "A cópia de segurança terminou o seu carregamento." + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -762,333 +713,457 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "Erro ao gravar ficheiro 3mf." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "Pré-visualizar" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Selecionar atualizações" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Checkup" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Nivelar base de construção" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Parede Exterior" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Paredes Interiores" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Revestimento" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Enchimento" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Enchimento dos Suportes" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interface dos Suportes" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Suportes" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Contorno" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Deslocação" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrações" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Outro" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Ficheiro pré-seccionado {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "Falha no início de sessão" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Não suportado" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "O Ficheiro Já Existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "O ficheiro {0} já existe. Tem a certeza de que deseja substituí-lo?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Manter" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "O material selecionado é incompatível com a máquina ou a configuração selecionada." +msgid "Invalid file URL:" +msgstr "URL de ficheiro inválido:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Material incompatível" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "As definições foram alteradas de forma a corresponder aos extrusores disponíveis de momento:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "As definições foram alteradas de forma a corresponder aos extrusores disponíveis de momento: [%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Definições atualizadas" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "Extrusor(es) desativado(s)" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Falha ao exportar perfil para {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Falha ao exportar perfil para {0}: O plug-in de gravação comunicou uma falha." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Perfil exportado para {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Exportação bem-sucedida" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "Falha ao importar perfil de {0}: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "Falha ao importar perfil de {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "Não é possível importar o perfil de {0} antes de ser adicionada uma impressora." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Nenhum perfil personalizado para importar no ficheiro {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Falha ao importar perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "O perfil {0} contém dados incorretos, não foi possível importá-lo." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "A máquina definida no perfil {0} ({1}) não corresponde à sua máquina atual ({2}), não foi possível importá-la." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Falha ao importar perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado com êxito" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "O ficheiro {0} não contém qualquer perfil válido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "O perfil {0} é de um formato de ficheiro desconhecido ou está corrompido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "O perfil não inclui qualquer tipo de qualidade." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Não foi possível encontrar um tipo de qualidade {0} para a configuração atual." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Parede Exterior" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Paredes Interiores" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Revestimento" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Enchimento" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Enchimento dos Suportes" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interface dos Suportes" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Suportes" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Contorno" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "Torre de preparação" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Deslocação" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retrações" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Outro" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Ficheiro pré-seccionado {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "Seguinte" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "Grupo #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "Impressoras em rede" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Fechar" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "Impressoras locais" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Adicionar" + +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Acabamento" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "O perfil de acabamento foi criado para imprimir modelos e protótipos finais com o objetivo de se obter uma elevada qualidade de acabamento da superfície" +" em termos visuais." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "O perfil de engenharia foi criado para imprimir protótipos funcionais e peças finais com o objetivo de se obter uma maior precisão dimensional assim como" +" tolerâncias menores." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Rascunho" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "O perfil de rascunho foi concebido para imprimir protótipos de teste e de validação de conceitos com o objetivo de se obter uma redução significativa do" +" tempo de impressão." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Manter" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Perfis personalizados" # rever! # contexto -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Todos os Formatos Suportados ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Todos os Ficheiros (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Material Personalizado" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Não é possível ligar a(s) impressora(s) abaixo porque faz(em) parte de um grupo" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Impressoras em rede disponíveis" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "A altura do volume de construção foi reduzida devido ao valor da definição \"Sequência de impressão\" para impedir que o pórtico colida com os modelos impressos." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume de construção" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "Não é possível criar um arquivo a partir do directório de dados do utilizador: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "Backup" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "Tentou restaurar um Cura backup sem existirem dados ou metadados correctos." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "Tentou restaurar um Cura backup que não corresponde á sua versão actual." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "Tentativa de reposição de uma cópia de segurança do Cura que é superior à versão atual." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "Não foi possível ler a resposta." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Não é possível aceder ao servidor da conta Ultimaker." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Forneça as permissões necessárias ao autorizar esta aplicação." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Ocorreu algo inesperado ao tentar iniciar sessão, tente novamente." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplicar e posicionar objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "A Posicionar Objeto" +msgid "Placing Objects" +msgstr "A posicionar objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Não é possível posicionar todos os objetos dentro do volume de construção" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "A Posicionar Objeto" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "A procurar nova posição para os objetos" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "A Procurar Posição" # rever! -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Não é Possível Posicionar" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Não é possível iniciar o Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1096,360 +1171,332 @@ msgid "" "

    Backups can be found in the configuration folder.

    \n" "

    Please send us this Crash Report to fix the problem.

    \n" " " -msgstr "

    Ups, o Ultimaker Cura encontrou um possível problema.

    \n

    Foi encontrado um erro irrecuperável durante o arranque da aplicação. Este pode ter sido causado por alguns ficheiros de configuração incorrectos. Sugerimos que faça um backup e reponha a sua configuração.

    \n

    Os backups estão localizados na pasta de configuração.

    \n

    Por favor envie-nos este Relatório de Falhas para podermos resolver o problema.

    \n " +msgstr "" +"

    Ups, o Ultimaker Cura encontrou um possível problema.

    \n" +"

    Foi encontrado um erro irrecuperável durante o arranque da aplicação. Este pode ter sido causado por alguns ficheiros de configuração incorrectos. Sugerimos que faça um backup e reponha a sua configuração.

    \n" +"

    Os backups estão localizados na pasta de configuração.

    \n" +"

    Por favor envie-nos este Relatório de Falhas para podermos resolver o problema.

    \n" +" " # rever! # button size? -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "Enviar relatório de falhas para a Ultimaker" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "Mostrar relatório de falhas detalhado" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" -msgstr "Abrir pasta de configuração" +msgstr "Mostrar pasta de configuração" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "Backup e Repor a Configuração" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Relatório de Falhas" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" "

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" " " -msgstr "

    Ocorreu um erro fatal no Cura. Por favor envie-nos este Relatório de Falhas para podermos resolver o problema

    \n

    Por favor utilize o botão \"Enviar relatório\" para publicar um relatório de erros automaticamente nos nossos servidores

    \n " +msgstr "" +"

    Ocorreu um erro fatal no Cura. Por favor envie-nos este Relatório de Falhas para podermos resolver o problema

    \n" +"

    Por favor utilize o botão \"Enviar relatório\" para publicar um relatório de erros automaticamente nos nossos servidores

    \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "Informações do sistema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Desconhecido" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Versão do Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "Plataforma" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Versão Qt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "Versão PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "Ainda não inicializado
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • Versão do OpenGL: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • Vendedor do OpenGL: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • Processador do OpenGL: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "Determinação da origem do erro" # rever! # Registos? -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "Relatórios" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "Descrição do utilizador" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "Descrição do utilizador (Nota: os programadores podem não falar a sua língua, pelo que, se possível, deve utilizar o inglês)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Enviar relatório" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "A carregar máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "A configurar as preferências..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "A configurar cenário..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "A carregar interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Apenas pode ser carregado um ficheiro G-code de cada vez. Importação {0} ignorada" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Não é possível abrir outro ficheiro enquanto o G-code estiver a carregar. Importação {0} ignorada" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "O modelo selecionado era demasiado pequeno para carregar." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Definições da máquina" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Impressora" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" -msgstr "Definições da Impressora" +msgstr "Definições da impressora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (Largura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profundidade)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Altura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Forma da base de construção" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "Origem no centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "Base aquecida" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "Volume de construção aquecido" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "Variante do G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" -msgstr "Definições Cabeça de Impressão" +msgstr "Definições da cabeça de impressão" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X mín" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distância desde a parte esquerda da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y mín" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distância desde a parte frontal da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X máx" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distância desde a parte direita da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y máx" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distância desde a parte posterior da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Altura do pórtico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "A diferença de altura entre a ponta do nozzle e o sistema de pórtico (eixos X e Y). Utilizado para impedir colisões entre as impressões anteriores e o pórtico ao imprimir \"Individualmente\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de Extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" -msgstr "G-code Inicial" +msgstr "G-code inicial" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "Comandos G-code a serem executados no início." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" -msgstr "G-code Final" +msgstr "G-code final" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "Comandos G-code a serem executados no final." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Impressora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" -msgstr "Definições do Nozzle" +msgstr "Definições do nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Tamanho do nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Diâmetro do material compatível" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "O diâmetro nominal do filamento suportado pela impressora. O diâmetro exato será substituído pelo material e/ou perfil." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "Desvio X do Nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Desvio Y do Nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Número de ventoinha de arrefecimento" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" -msgstr "G-code Inicial do Extrusor" +msgstr "G-code inicial do extrusor" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" -msgstr "G-code Final do Extrusor" +msgstr "G-code final do extrusor" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "Instalar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" @@ -1459,69 +1506,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Não foi possível aceder á base de dados de Pacotes do Cura. Por favor verifique a sua ligação." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "classificações" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plug-ins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiais" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "A sua classificação" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "Versão" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "Actualizado em" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "Autor" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "Transferências" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Desconhecido" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "É necessário Log in para instalar ou atualizar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "Comprar bobinas de material" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "Atualizar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "A Actualizar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "Atualizado" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "Toolbox" +msgid "Marketplace" +msgstr "Mercado" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1548,52 +1608,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "Confirmar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "É necessário iniciar sessão antes de atribuir a classificação" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "É necessário instalar o pacote antes de atribuir a classificação" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "É necessário reiniciar o Cura para que as alterações dos pacotes sejam aplicadas." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Sair do Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Contribuições comunitárias" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Plug-ins comunitários" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Materiais genéricos" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "Instalado" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "Será instalado após reiniciar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "É necessário Log in para atualizar" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "Repor Versão Anterior" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "Desinstalar" @@ -1609,14 +1684,17 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "Este plug-in contém uma licença.\nÉ necessário aceitar esta licença para instalar o plug-in.\nConcorda com os termos abaixo?" +msgstr "" +"Este plug-in contém uma licença.\n" +"É necessário aceitar esta licença para instalar o plug-in.\n" +"Concorda com os termos abaixo?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Aceitar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Rejeitar" @@ -1626,22 +1704,62 @@ msgctxt "@label" msgid "Featured" msgstr "Em Destaque" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibilidade" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Máquina" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Base de construção" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Suportes" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Qualidade" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "Ficha técnica" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "Ficha de segurança" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "Instruções de impressão" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "Site" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "A obter pacotes..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "Site" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-mail" @@ -1651,23 +1769,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "Alguns factores podem vir a ser problemáticos nesta impressão. Clique para ver algumas sugestões para melhorar a qualidade da impressão." -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Lista das Alterações" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Fechar" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1744,408 +1845,487 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "A atualização de firmware falhou devido à ausência de firmware." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "Contrato de Utilizador" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Gerir impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Ligação Existente" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Vidro" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "Esta impressora/grupo já foi adicionada ao Cura. Por favor selecione outra impressora/grupo." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Atualize o firmware da impressora para gerir a fila remotamente." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "Esta webcam não está disponível pois está a monitorizar uma impressora na cloud." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "A carregar..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "Indisponível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "Inacessível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "Inativa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "Sem título" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "Anónimo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "Requer alterações na configuração" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "Detalhes" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "Impressora indisponível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "Primeira disponível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "Em fila" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "Gerir no browser" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Não existem trabalhos de impressão na fila. Para adicionar um trabalho, seccione e envie." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "Trabalhos em Impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "Tempo de impressão total" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "A aguardar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Ligar a uma Impressora em Rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "Para imprimir diretamente para a sua impressora através da rede, certifique-se de que a sua impressora está ligada à rede por meio de um cabo de rede ou através de ligação à rede Wi-Fi. Se não ligar o Cura por rede à impressora, poderá ainda assim utilizar uma unidade USB para transferir ficheiros g-code para a impressora.\n\nSelecione a sua impressora na lista em baixo:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Para imprimir diretamente para a sua impressora através da rede, certifique-se de que a impressora está ligada à rede através de um cabo de rede ou através de ligação à rede Wi-Fi. Se não ligar o Cura por rede à impressora, poderá ainda assim utilizar uma unidade USB para transferir ficheiros g-code para a impressora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Adicionar" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Selecione a impressora a partir da lista abaixo:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Editar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Remover" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Atualizar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Se a sua impressora não estiver na lista, por favor, consulte o guia de resolução de problemas de impressão em rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Versão de Firmware" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Endereço" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Esta impressora não está configurada para alojar um grupo de impressoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Esta impressora aloja um grupo de %1 impressoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "A impressora neste endereço ainda não respondeu." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Ligar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Endereço IP inválido" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "Introduza um endereço IP válido." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Endereço da Impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Introduza o endereço IP ou o hostname da sua impressora na rede." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "Introduza o endereço IP da sua impressora na rede." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimir" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Imprimir Através da Rede" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "Seleção de Impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "Não disponível" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "Inacessível" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "Disponível" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "Cancelado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Impressão terminada" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "A preparar" +msgid "Preparing..." +msgstr "A preparar..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "A colocar em pausa" +msgid "Aborting..." +msgstr "A cancelar..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "A Recomeçar" +msgid "Pausing..." +msgstr "A colocar em pausa..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "Em Pausa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "A recomeçar..." # rever! # ver contexto! -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Ação necessária" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "Termina %1 a %2" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Imprimir Através da Rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "A aguardar: Impressora indisponível" +msgid "Printer selection" +msgstr "Seleção de Impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "A aguardar: Primeira disponível" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "A aguardar: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "Configuração alterada" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "A impressora atribuída %1 requer as seguintes alterações de configuração:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "A impressora %1 está atribuída, mas o trabalho tem uma configuração de material desconhecida." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "Alterar o material %1 de %2 para %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "Carregar %3 como material %1 (isto não pode ser substituído)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "Substituir o núcleo de impressão %1 de %2 para %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "Alterar placa de construção para %1 (isto não pode ser substituído)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "Ignorar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "Iniciar um trabalho de impressão com uma configuração incompatível pode danificar a impressora 3D. Tem a certeza de que pretende ignorar a configuração e imprimir %1?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "Ignorar configuração e iniciar impressão" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "Vidro" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "Alumínio" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "Gerir fila" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "Em fila" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "A Imprimir" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "Gerir impressoras" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "Mover para o topo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "Eliminar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "Retomar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "A colocar em pausa..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "A recomeçar..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "Colocar em pausa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "A cancelar..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "Tem a certeza de que pretende mover %1 para o topo da fila?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "Mover trabalho de impressão para o topo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "Tem a certeza de que pretende eliminar %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "Eliminar trabalho de impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "Tem a certeza de que deseja cancelar %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Cancelar impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Ligar a uma impressora" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "Alterações na configuração" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Ativar Configuração" +msgid "Override" +msgstr "Ignorar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Importar a configuração da impressora para o Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "A impressora atribuída %1 requer a seguinte alteração na configuração:" +msgstr[1] "A impressora atribuída %1 requer as seguintes alterações na configuração:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "A impressora %1 está atribuída, mas o trabalho tem uma configuração de material desconhecida." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "Alterar o material %1 de %2 para %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "Carregar %3 como material %1 (isto não pode ser substituído)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "Substituir o print core %1 de %2 para %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "Alterar base de construção para %1 (isto não pode ser substituído)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "Ignorar utilizará as definições especificadas com a configuração da impressora existente. Tal pode resultar numa falha de impressão." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "Alumínio" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"Certifique-se de que é possível estabelecer ligação com a impressora:\n" +"- Verifique se a impressora está ligada.\n" +"- Verifique se a impressora está ligada à rede.\n" +"- Verifique se tem sessão iniciada para encontrar impressoras ligadas através da cloud." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "Ligue a impressora à sua rede." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "Ver manuais do utilizador online" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Esquema de cores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Cor do Material" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Tipo de Linha" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Velocidade de Alimentação" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Espessura da Camada" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modo Compatibilidade" -# rever! -# Mostrar...? -# Ver...? -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" +msgid "Travels" msgstr "Deslocações" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" +msgid "Helpers" msgstr "Auxiliares" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" +msgid "Shell" msgstr "Invólucro" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" +msgid "Infill" msgstr "Enchimento" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Só Camadas Superiores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "5 Camadas Superiores Detalhadas" @@ -2153,22 +2333,22 @@ msgstr "5 Camadas Superiores Detalhadas" # rever! # todas as strings com a frase # Topo / Base ?? -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Superior / Inferior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Parede Interior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "mín" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "máx" @@ -2183,40 +2363,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Scripts de pós-processamento" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Adicionar um script" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Definições" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Alterar scripts de pós-processamento ativos" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" -msgstr "Mais informação sobre a recolha anónima de dados" +msgstr "Mais informações sobre a recolha anónima de dados" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "O Cura envia informação anónima para a Ultimaker, para nos ajudar a aperfeiçoar a qualidade da impressão e a melhorar a experiência do utilizador. De seguida pode ver um exemplo com toda a informação enviada." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "O Ultimaker Cura recolhe dados anónimos para melhorar a qualidade da impressão e a experiência do utilizador. Segue-se um exemplo de todos os dados partilhados:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "Eu não quero enviar estes dados" +msgid "I don't want to send anonymous data" +msgstr "Não pretendo enviar dados anónimos" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Permitir enviar estes dados para a Ultimaker para melhorar o Cura" +msgid "Allow sending anonymous data" +msgstr "Permitir o envio de dados anónimos" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2266,19 +2446,19 @@ msgstr "Profundidade (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "Por predefinição, os pixels brancos representam os pontos altos do objecto e os pixels pretos representam os pontos baixos do objecto. Altere esta opção para inverter o comportamento de forma que os pixels pretos representem os pontos altos do objecto e os pixels brancos representem os pontos baixos do objecto." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Mais claro é mais alto" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "Para litofanias, os pixels escuros devem corresponder a localizações mais espessas para bloquear mais a passagem da luz. Para mapas de altura, os pixels mais claros significam um terreno mais alto, por isso, os pixels mais claros devem corresponder a localizações mais espessas no modelo 3D gerado." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Mais escuro é mais alto" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Mais claro é mais alto" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2289,81 +2469,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavização" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Tipo de Objecto" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Modelo normal" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Imprimir como suporte" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Retirar suportes na intercepção com outros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Alterar as definições dos objetos que intercepta" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modificar definições do enchimento de outros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Selecionar definições" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Selecionar definições a personalizar para este modelo" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostrar tudo" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo de Objecto" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Modelo normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimir como suporte" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modificar definições para sobreposições" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Não suportar sobreposições" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Apenas enchimento" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Selecionar definições" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Abrir Projeto" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Atualizar existente" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Criar nova" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Resumo – Projeto Cura" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Definições da impressora" @@ -2379,20 +2558,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Atualizar" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Criar nova" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "Grupo da Impressora" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Definições do perfil" @@ -2403,235 +2587,224 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Como deve ser resolvido o conflito no perfil?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nome" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Inexistente no perfil" # rever! # contexto?! -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 substituição" msgstr[1] "%1 substituições" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivado de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 substituição" msgstr[1] "%1, %2 substituições" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Definições de material" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Como deve ser resolvido o conflito no material?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilidade das definições" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Definições visíveis:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 de %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Abrir um projeto irá apagar todos os modelos na base de construção." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Abrir" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Selecionar Atualizações da Impressora" +msgid "My Backups" +msgstr "As minhas cópias de segurança" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Selecione quaisquer atualizações realizadas a esta Ultimaker 2." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "Atualmente não existem quaisquer cópias de segurança. Utilize o botão \"Efetuar cópia de segurança agora\" para criar uma." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "Durante a fase de pré-visualização, terá um limite de 5 cópias de segurança visíveis. Remova uma cópia de segurança para ver as antigas." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Efetue a cópia de segurança e sincronize as suas definições do Cura." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "Iniciar sessão" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Cópias de segurança do Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Versão do Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "Máquinas" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "Materiais" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "Perfis" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "Plug-ins" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "Restaurar" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "Eliminar cópia de segurança" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "Tem a certeza de que pretende eliminar esta cópia de segurança? Esta ação não pode ser anulada." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "Restaurar cópia de segurança" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "É necessário reiniciar o Cura para restaurar a sua cópia de segurança. Pretende fechar o Cura agora?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "Deseja mais?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "Efetuar cópia de segurança agora" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "Efetuar cópia de segurança automaticamente" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Criar automaticamente uma cópia de segurança sempre que o Cura é iniciado." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Nivelamento da Base de Construção" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Para assegurar uma boa qualidade das suas impressões, pode agora ajustar a base de construção. Quando clica em \"Avançar para a posição seguinte\", o nozzle irá deslocar-se para as diferentes posições que podem ser ajustadas." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Para cada posição, introduza um pedaço de papel debaixo do nozzle e ajuste a altura da base de construção. A altura da base de construção está correta quando o papel fica ligeiramente preso pelo nozzle." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Iniciar Nivelamento da base de construção" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Avançar para Posição Seguinte" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Selecione quaisquer atualizações realizadas a esta Ultimaker Original" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "Base de Construção Aquecida (kit oficial ou de construção própria)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Verificar Impressora" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "É recomendado efetuar algumas verificações de teste à sua Ultimaker. Pode ignorar este passo se souber que a sua máquina está funcional" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Iniciar Verificação da Impressora" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Ligação: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Ligado" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Sem ligação" - -# rever! -# contexto?! -# X mín. de posição final: -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Mín. endstop X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Trabalhos" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Não verificado" - -# rever! -# contexto?! -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Mín. endstop Y: " - -# rever! -# contexto?! -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Mín. endstop Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Verificação da temperatura do nozzle: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Parar Aquecimento" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Iniciar Aquecimento" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Verificação da temperatura da base de construção:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Verificado" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Está tudo em ordem! A verificação está concluída." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2643,7 +2816,6 @@ msgid "Printer does not accept commands" msgstr "A impressora não aceita comandos" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Em manutenção. Verifique a impressora" @@ -2654,19 +2826,16 @@ msgid "Lost connection with the printer" msgstr "Perdeu-se a ligação com a impressora" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "A imprimir..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Em pausa" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "A preparar..." @@ -2686,233 +2855,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Tem a certeza de que deseja cancelar a impressão?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Descartar ou Manter as alterações" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "Alterou algumas das definições do perfil.\nGostaria de manter ou descartar essas alterações?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Definições do perfil" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Predefinição" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Personalizado" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Perguntar sempre isto" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Descartar e não perguntar novamente" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Manter e não perguntar novamente" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Descartar" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Manter" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Criar novo perfil" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informações" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Confirmar Alteração de Diâmetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "O novo diâmetro do filamento está definido como %1 mm, o que não é compatível com o extrusor actual. Pretende prosseguir?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Nome" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marca" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Tipo de Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Cor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Propriedades" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Densidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diâmetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Custo do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Peso do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Comprimento do filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Custo por Metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Este material está associado a %1 e partilha algumas das suas propriedades." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Desassociar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Descrição" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Informações de Aderência" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Definições de impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Ativar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Criar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplicar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Exportar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Confirmar Remoção" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Tem a certeza de que deseja remover o perfil %1? Não é possível desfazer esta ação!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importar material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Não foi possível importar o material %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Material %1 importado com êxito" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Exportar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Falha ao exportar material para %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material exportado com êxito para %1" @@ -2922,698 +3034,560 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Visibilidade das Definições" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Selecionar tudo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Calculado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Definição" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Atual" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Unidade" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Geral" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Interface" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Moeda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "É necessário reiniciar a aplicação para que estas alterações sejam aplicadas." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Seccionar automaticamente ao alterar as definições." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Seccionar automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento da janela" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Realçar, a vermelho, as áreas do modelo sem apoio. Sem suporte, estas áreas podem não ser impressas correctamente." # rever! # consolas? -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Mostrar Saliências (Overhangs)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Move a câmara de forma que o modelo fique no centro da visualização quando é selecionado um modelo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centrar câmara ao selecionar item" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "O comportamento de zoom predefinido do Cura deve ser invertido?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverta a direção do zoom da câmera." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "O zoom deve deslocar-se na direção do rato?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Fazer zoom em direção ao rato não é suportado na perspetiva ortográfica." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Fazer Zoom na direção do rato" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Os modelos, na plataforma, devem ser movidos para que não se intersectem?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Garantir que os modelos não se interceptam" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Pousar os modelos na base de construção?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Pousar automaticamente os modelos na base de construção" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Mostrar mensagem de aviso no leitor de g-code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Mensagem de aviso no leitor de g-code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "A vista por camada deve ser forçada a utilizar o modo de compatibilidade?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forçar o modo de compatibilidade na visualização por camada (é necessário reiniciar)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "O Cura deve abrir na localização onde foi fechado?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Restaurar posição da janela ao iniciar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Que tipo de composição de câmara deve ser utilizado?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Composição de câmara:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspetiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ortográfica" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrir e guardar ficheiros" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Os modelos devem ser redimensionados até ao volume de construção se forem demasiado grandes?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Redimensionar modelos demasiado grandes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Um modelo pode parecer extremamente pequeno se, por exemplo, este tiver sido criado em metros e não em milímetros. Estes modelos devem ser redimensionados?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Redimensionar modelos extremamente pequenos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Selecionar os modelos depois de abertos?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Selecionar os modelos depois de abertos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Deve um prefixo com base no nome da impressora ser adicionado ao nome do trabalho de impressão automaticamente?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Adicionar prefixo da máquina ao nome do trabalho" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Deve ser apresentado um resumo ao guardar um ficheiro de projeto?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Mostrar caixa de diálogo de resumo ao guardar projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamento predefinido ao abrir um ficheiro de projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamento predefinido ao abrir um ficheiro de projeto: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Perguntar sempre isto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Abrir sempre como projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importar sempre modelos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Quando tiver realizado alterações a um perfil e mudado para outro, será apresentada uma caixa de diálogo a perguntar se pretende manter as alterações. Caso contrário, pode escolher um comportamento predefinido, sendo que a caixa de diálogo nunca mais é apresentada." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Comportamento predefinido para valores de definição alterados ao mudar para um perfil diferente: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Perguntar sempre isto" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Descartar sempre definições alteradas" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Transferir sempre definições alteradas para o novo perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privacidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "O Cura deve procurar atualizações quando o programa é iniciado?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Procurar atualizações ao iniciar" # rever! # legal wording -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Podem alguns dados anónimos sobre a impressão ser enviados para a Ultimaker? Não são enviadas, nem armazenadas, quaisquer informações pessoais, incluindo modelos, endereços IP ou outro tipo de identificação pessoal." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Enviar dados (anónimos) sobre a impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" -msgstr "Mais informação" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "Experimental" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Usar a funcionalidade de múltiplas bases de construção" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "Usar a funcionalidade de múltiplas bases de construção (é necessário reiniciar)" +msgstr "Mais informações" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Impressoras" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Mudar Nome" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Tipo de impressora:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Ligação:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "A impressora não está ligada." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "Estado:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "A aguardar por um trabalho de impressão" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "A aguardar que alguém limpe a base de construção" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "A cancelar impressão..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Criar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplicar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Criar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "Forneça um nome para este perfil." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplicar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Mudar Nome do Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Exportar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Impressora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Perfis protegidos" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Perfis personalizados" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Atualizar perfil com as definições/substituições atuais" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Descartar alterações atuais" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Este perfil utiliza as predefinições especificadas pela impressora, pelo que não tem quaisquer definições/substituições na lista seguinte." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "As suas definições atuais correspondem ao perfil selecionado." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Definições Globais" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Adicionar Impressora" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Nome da Impressora:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Adicionar Impressora" +msgid "Marketplace" +msgstr "Mercado" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&Ficheiro" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&Editar" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Visualizar" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "&Definições" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "E&xtensões" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "P&referências" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "&Ajuda" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Novo projeto" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Tem a certeza de que deseja iniciar um novo projeto? Isto irá apagar tudo na base de construção assim como quaisquer definições que não tenham sido guardadas." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "Sem título" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "Sobre o Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "versão: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "A Solução completa para a impressão 3D por filamento fundido." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "O Cura foi desenvolvido pela Ultimaker B.V. em colaboração com a comunidade.\nO Cura tem o prazer de utilizar os seguintes projetos open source:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Interface gráfica do utilizador" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Framework da aplicação" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "Gerador de G-code" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Biblioteca de comunicação interprocessual" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Linguagem de programação" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUI framework" - -# rever! -# use eng programing terms? -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "Ligações de estrutura da GUI" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "Biblioteca de ligações C/C++" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Formato de intercâmbio de dados" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Biblioteca de apoio para computação científica" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Biblioteca de apoio para cálculos mais rápidos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Biblioteca de apoio para processamento de ficheiros STL" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "Biblioteca de apoio para processamento de objetos planos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "Biblioteca de apoio para processamento de malhas triangulares" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "Biblioteca de apoio para análise de redes complexas" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Biblioteca de apoio para processamento de ficheiros 3MF" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "Biblioteca de apoio para transmissões de fluxo e metadados de ficheiros" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Biblioteca de comunicação em série" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "Biblioteca de deteção ZeroConf" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Biblioteca de recortes de polígonos" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Biblioteca de HTTP Python" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Tipo de letra" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "Ícones SVG" - -# rever! -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Implementação da aplicação de distribuição cruzada Linux" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Perfil:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Alguns valores de definição/substituição são diferentes dos valores armazenados no perfil.\n\nClique para abrir o gestor de perfis." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Procurar..." +msgid "Search settings" +msgstr "Procurar definições" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copiar valor para todos os extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Copiar todos os valores alterados para todos os extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Esconder esta definição" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Não mostrar esta definição" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Manter esta definição visível" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar visibilidade das definições..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "Esconder Tudo" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "Mostrar Tudo" - # rever! # ocultas? # escondidas? # valor normal? automatico? -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Algumas das definições invisíveis têm valores diferentes dos valores normais calculados automaticamente.\n\nClique para tornar estas definições visíveis." +msgstr "" +"Algumas das definições invisíveis têm valores diferentes dos valores normais calculados automaticamente.\n" +"\n" +"Clique para tornar estas definições visíveis." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "Esta definição não é utilizada porque todas as definições influenciadas foram substituídas." # rever! # Afeta? # Influencia? # Altera? # Modifica? -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Modifica" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Modificado Por" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Esta definição é sempre partilhada entre todos os extrusores. Ao alterá-la aqui, o valor será alterado em todos os extrusores." @@ -3622,28 +3596,130 @@ msgstr "Esta definição é sempre partilhada entre todos os extrusores. Ao alte # contexto?! # resolvido? # por-extrusor -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "O valor é calculado com base nos valores por-extrusor " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Esta definição tem um valor que é diferente do perfil.\n\nClique para restaurar o valor do perfil." +msgstr "" +"Esta definição tem um valor que é diferente do perfil.\n" +"\n" +"Clique para restaurar o valor do perfil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Normalmente, o valor desta definição é calculado, mas atualmente tem definido um valor diferente.\n\nClique para restaurar o valor calculado." +msgstr "" +"Normalmente, o valor desta definição é calculado, mas atualmente tem definido um valor diferente.\n" +"\n" +"Clique para restaurar o valor calculado." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "Recomendado" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "Enchimento gradual" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "O enchimento gradual irá aumentar progressivamente a densidade do enchimento em direção ao topo." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "Suportes" + +# rever! +# collapse ? +# desmoronar? desabar? +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Criar estruturas para suportar partes do modelo, suspensas ou com saliências. Sem estas estruturas, essas partes do modelo podem desmoronar durante a impressão." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "Aderência à Base de Construção" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Permite a impressão de uma aba ou raft. Isto irá adicionar, respetivamente, uma área plana em torno ou sob a base do seu objeto, que são fáceis de retirar posteriormente." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Algumas definições do perfil foram modificadas. Se pretender alterá-las, aceda ao modo Personalizado." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "Ligado" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "Desligado" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimental" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "Perfil" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Alguns valores de definição/substituição são diferentes dos valores armazenados no perfil.\n" +"\n" +"Clique para abrir o gestor de perfis." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Perfis personalizados" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "Configuração de impressão desativada. O ficheiro G-code não pode ser modificado." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "Controlo da impressora" @@ -3651,17 +3727,17 @@ msgstr "Controlo da impressora" # rever! # contexto?! # Jog? -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "Posição de deslocação" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" @@ -3669,96 +3745,99 @@ msgstr "Z" # rever! # contexto?! # Jog? -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "Distância de deslocação" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "Enviar G-code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "Enviar um comando G-code personalizado para a impressora ligada. Prima \"Enter\" para enviar o comando." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "A temperatura-alvo do extrusor. O extrusor irá aquecer ou arrefecer até esta temperatura. Se esta opção for definida como 0, o aquecimento do extrusor será desligado." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "A temperatura atual deste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "A temperatura-alvo de preaquecimento do extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Preaquecer" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Aquecer o extrusor com antecedência antes de imprimir. Pode continuar a ajustar as definições de impressão durante o aquecimento e não precisará de esperar que o extrusor aqueça quando começar a impressão." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "A cor do material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "O material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "O nozzle inserido neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "A impressora não está ligada." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Base de construção" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "A temperatura desejada da base aquecida. A base irá aquecer ou arrefecer até esta temperatura. Se esta opção for definida como 0, o aquecimento da base será desligado." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "A temperatura atual da base aquecida." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "A temperatura de pré-aquecimento da base." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Aqueçer a base com antecedência antes de imprimir. Pode continuar a ajustar as definições de impressão durante o aquecimento e não precisará de esperar que a base aqueça quando começar a impressão." @@ -3768,12 +3847,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoritos" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Genérico" @@ -3788,20 +3867,55 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "Impressoras locais" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&Visualizar" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "&Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&Material" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Definir como Extrusor Ativo" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "Ativar Extrusor" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "Desativar Extrusor" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Posição da câmara" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Vista da câmara" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Perspetiva" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Ortográfica" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" -msgstr "&Base de impressão" +msgstr "&Base de construção" #: /home/ruben/Projects/Cura/resources/qml/Menus/SettingVisibilityPresetsMenu.qml:13 msgctxt "@action:inmenu" @@ -3818,6 +3932,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Gerir Visibilidade das Definições..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "&Guardar..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&Exportar..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "Exportar seleção..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3837,673 +3966,511 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Número de Cópias" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "Configurações disponíveis" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "Configurações" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "Extrusor" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "Selecionar configuração" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "Sim" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "Configurações" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "Não" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "A carregar as configurações disponíveis da impressora..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "As configurações não estão disponíveis porque a impressora está desligada." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "Impressora" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "Ativado" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "Utilizar cola para melhor aderência com esta combinação de materiais." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "Esta configuração não está disponível porque não foi possível reconhecer %1. Visite %2 para transferir o perfil de material correto." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "Mercado" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Abrir &Recente" -# rever! -# Configuração da Impressão? -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Configurar a Impressão" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "Configuração da Impressão desativada\nOs ficheiros G-code não podem ser modificados" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00h00min" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "Especificação de tempo" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "Especificação de custos" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1 m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1 g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "Total:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Configuração de Impressão Recomendada

    Imprimir com as definições recomendadas para a Impressora, Material e Qualidade selecionadas." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Configuração de Impressão Personalizada

    Imprimir com um controlo detalhado de todas as definições específicas de cada uma das etapas do processo de seccionamento." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Impressão ativa" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Nome do trabalho" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Tempo de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Tempo restante estimado" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "Ver tipo" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Lista de objetos" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "Olá, %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Conta Ultimaker" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "Terminar sessão" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "Iniciar sessão" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "O fluxo de trabalho de impressão 3D da próxima geração" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- Envie trabalhos de impressão para impressoras Ultimaker fora da sua rede local\n" +"- Guarde as definições do seu Ultimaker Cura na cloud para utilizar em qualquer lugar\n" +"- Obtenha acesso exclusivo a perfis de impressão de marcas de referência" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "Criar conta" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "Nenhuma estimativa de tempo disponível" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "Nenhuma estimativa de custos disponível" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "Pré-visualizar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "A Seccionar..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "Não é possível seccionar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "A processar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "Segmentação" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "Iniciar o processo de segmentação" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "Estimativa de tempo" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "Estimativa de material" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "Impressoras ligadas" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "Impressoras predefinidas" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "Adicionar Impressora" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "Gerir impressoras" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "Mostrar Guia de resolução de problemas online" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Alternar para ecrã inteiro" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Sair do Ecrã Inteiro" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Desfazer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Refazer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Sair" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "Vista 3D" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "Vista Frente" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "Vista Cima" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "Vista Lado Esquerdo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "Vista Lado Direito" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurar Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Adicionar Impressora..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Gerir Im&pressoras..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Gerir Materiais..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Atualizar perfil com as definições/substituições atuais" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Descartar alterações atuais" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Criar perfil a partir das definições/substituições atuais..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Gerir Perfis..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Mostrar &documentação online" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Reportar um &erro" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "Novidades" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "Sobre..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "Apagar Modelo Selecionado" msgstr[1] "Apagar Modelos Selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Centrar modelo selecionado" msgstr[1] "Centrar modelos selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Multiplicar modelo selecionado" msgstr[1] "Multiplicar modelos selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Apagar Modelo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ce&ntrar Modelo na Base" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Agrupar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Desagrupar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Combinar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Multiplicar Modelo..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Selecionar todos os modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Limpar base de construção" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Recarregar todos os modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "Dispor todos os modelos em todas as bases de construção" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Dispor todos os modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Dispor seleção" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Repor todas as posições de modelos" # rever! # Cancelar todas? -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Repor Todas as Transformações do Modelo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Abrir Ficheiro(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Novo Projeto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Mostrar ®isto de motor..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Mostrar pasta de configuração" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "Procurar pacotes..." +msgid "&Marketplace" +msgstr "&Mercado" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "Mostrar/Esconder Barra Lateral" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Por favor abra um Modelo 3D ou Projeto" - -# rever! -# Pronto para? -# Preparado para? -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Disponível para seccionar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "A Seccionar..." - -# rever! -# Pronto para? -# Preparado para? -# Disponível para? -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Pronto para %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Não é possível Seccionar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Seccionamento indisponível" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "Seccionar o trabalho de impressão atual" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "Cancelar o processo de seccionamento" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Preparar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Cancelar" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Selecione o dispositivo de saída" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Abrir ficheiro(s)" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Encontrámos um ou mais projetos do Cura nos ficheiros selecionados. Só é possível abrir um Projeto do Cura, de cada vez. Sugerimos importar apenas os modelos 3D desses Projetos do Cura. Deseja continuar?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Importar tudo como modelos 3D" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&Ficheiro" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "&Guardar..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&Exportar..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "Exportar seleção..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&Editar" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "&Visualizar" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "&Definições" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "&Impressora" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Material" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Definir como Extrusor Ativo" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "Ativar Extrusor" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "Desativar Extrusor" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Base de construção" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Perfil" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "E&xtensões" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "&Toolbox" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "P&referências" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "&Ajuda" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Este pacote será instalado após reiniciar." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Abrir ficheiro" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Definições" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Novo projeto" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Tem a certeza de que deseja iniciar um novo projeto? Isto irá apagar tudo na base de construção assim como quaisquer definições que não tenham sido guardadas." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Fechar Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Tem a certeza de que deseja sair do Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Abrir ficheiro(s)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Instalar Pacote" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir ficheiro(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Encontrámos um ou mais ficheiros G-code nos ficheiros selecionados. Só é possível abrir um ficheiro G-code de cada vez. Se pretender abrir um ficheiro G-code, selecione apenas um." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Guardar projeto" +msgid "Add Printer" +msgstr "Adicionar Impressora" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Base de construção" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Extrusor %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & material" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Não mostrar novamente o resumo do projeto ao guardar" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Guardar" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Espessura da Camada" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "Este perfil de qualidade não está disponível para a sua atual configuração de nozzle e material. Por favor altere-a para poder ativar este perfil de qualidade" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "De momento está ativo um perfil personalizado. Para poder ativar o controlo de qualidade, por favor selecione um dos perfis de qualidade predefinidos no modo Personalizado" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Velocidade Impressão" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Mais Lenta" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Mais Rápida" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "Algumas definições do perfil foram modificadas. Se pretender alterá-las, aceda ao modo Personalizado." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Enchimento" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "O enchimento gradual irá aumentar progressivamente a densidade do enchimento em direção ao topo." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Enchimento Gradual" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Criar Suportes" - -# rever! -# collapse ? -# desmoronar? desabar? -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Criar estruturas para suportar partes do modelo, suspensas ou com saliências. Sem estas estruturas, essas partes do modelo podem desmoronar durante a impressão." - -# rever! -# mid air? no ar? no meio do ar? -# sagging? deformar? -# Isto irá construir estruturas de suporte debaixo do modelo para impedir a deformação de partes suspensas do modelo ou que a impressão seja feita no ar. -# a utilizar? usado? -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Selecionar qual o extrusor usado para imprimir os suportes. Isto irá construir estruturas de suporte por debaixo do modelo para impedir que as partes suspensas do modelo se deformem ou que sejam impressas no ar." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Aderência à Base" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Permite a impressão de uma Aba (Brim) ou Raft. Isto irá adicionar, respectivamente, uma área plana em torno ou sob a base do seu objeto, que são fáceis de retirar posteriormente." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "Precisa de ajuda para melhorar as suas impressões?
    Por favor leia os Guias Ultimaker de Resolução de Problemas" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "Novidades" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4512,80 +4479,506 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "Imprimir Modelo Selecionado com o %1" msgstr[1] "Imprimir Modelos Selecionados com o %1" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Descartar ou Manter as alterações" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"Alterou algumas das definições do perfil.\n" +"Gostaria de manter ou descartar essas alterações?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Definições do perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Predefinição" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Descartar e não perguntar novamente" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Manter e não perguntar novamente" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Descartar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Manter" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Criar novo perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Sobre o Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "versão: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "A Solução completa para a impressão 3D por filamento fundido." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"O Cura foi desenvolvido pela Ultimaker B.V. em colaboração com a comunidade.\n" +"O Cura tem o prazer de utilizar os seguintes projetos open source:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Interface gráfica do utilizador" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Framework da aplicação" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "Gerador de G-code" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Biblioteca de comunicação interprocessual" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Linguagem de programação" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUI framework" + +# rever! +# use eng programing terms? +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "Ligações de estrutura da GUI" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "Biblioteca de ligações C/C++" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Formato de intercâmbio de dados" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Biblioteca de apoio para computação científica" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Biblioteca de apoio para cálculos mais rápidos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Biblioteca de apoio para processamento de ficheiros STL" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "Biblioteca de apoio para processamento de objetos planos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "Biblioteca de apoio para processamento de malhas triangulares" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "Biblioteca de apoio para análise de redes complexas" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Biblioteca de apoio para processamento de ficheiros 3MF" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "Biblioteca de apoio para transmissões de fluxo e metadados de ficheiros" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Biblioteca de comunicação em série" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "Biblioteca de deteção ZeroConf" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Biblioteca de recortes de polígonos" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Biblioteca de HTTP Python" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Tipo de letra" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "Ícones SVG" + +# rever! +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Implementação da aplicação de distribuição cruzada Linux" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Encontrámos um ou mais projetos do Cura nos ficheiros selecionados. Só é possível abrir um Projeto do Cura, de cada vez. Sugerimos importar apenas os modelos 3D desses Projetos do Cura. Deseja continuar?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Importar tudo como modelos 3D" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Guardar projeto" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Extrusor %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Não mostrar novamente o resumo do projeto ao guardar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Guardar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Abrir ficheiro de projeto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Este ficheiro é um Projeto do Cura. Pretende abrir como Projeto ou só importar os modelos 3D incluídos no Projeto?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Memorizar a minha escolha" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Abrir como projeto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" -# rever! -# contexto?! -# Relatório? -# Registo de motor? -# use english string? -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Engine Log" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "Tipo de impressora" +msgid "Empty" +msgstr "Vazio" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Material" +msgid "Add a printer" +msgstr "Adicionar uma impressora" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "Utilizar cola com esta combinação de materiais" +msgid "Add a networked printer" +msgstr "Adicionar uma impressora em rede" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "Compatibilidade entre Materiais" +msgid "Add a non-networked printer" +msgstr "Adicionar uma impressora sem rede" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Clique para verificar a compatibilidade entre os materiais em Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "Adicionar impressora por endereço IP" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Ver só a base de construção ativa" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Introduza o endereço IP da sua impressora." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Dispor em todas as bases" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Adicionar" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Dispor só na base ativa" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "Não foi possível ligar ao dispositivo." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "A impressora neste endereço ainda não respondeu." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "Não foi possível adicionar esta impressora porque é uma impressora desconhecida ou não aloja um grupo." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "Anterior" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "Ligar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "Seguinte" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "Contrato de utilizador" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "Concordar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "Rejeitar e fechar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Ajude-nos a melhorar o Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "O Ultimaker Cura recolhe dados anónimos para melhorar a qualidade da impressão e a experiência do utilizador, incluindo:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "Tipos de máquina" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "Utilização do material" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "Número de segmentos" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "Definições de impressão" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Os dados recolhidos pelo Ultimaker Cura não conterão quaisquer informações pessoais." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "Mais informações" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Novidades no Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "Não foi encontrada nenhuma impressora na sua rede." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "Atualizar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "Adicionar impressora por IP" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "Resolução de problemas" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "Nome da impressora" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "Atribua um nome à sua impressora" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "O fluxo de trabalho de impressão 3D da próxima geração" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- Envie trabalhos de impressão para impressoras Ultimaker fora da sua rede local" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Guarde as definições do seu Ultimaker Cura na cloud para utilizar em qualquer lugar" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- Obtenha acesso exclusivo a perfis de impressão de marcas de referência" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "Concluir" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "Criar uma conta" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Bem-vindo ao Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"Siga estes passos para configurar o\n" +"Ultimaker Cura. Este processo deverá demorar apenas alguns momentos." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "Iniciar" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Vista 3D" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Vista Frente" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Vista Cima" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Vista esquerda" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Vista direita" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4647,26 +5040,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Verificador de Modelos" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Descarregar o conteúdo de todas as definições para um ficheiro HTML." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Modo God" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Mostra as novas alterações efetuadas desde a última versão." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Lista das Alterações" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4677,18 +5050,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Atualizador de firmware" -# rever! -# contexto! -# flattend - aplanado? nivelado? limpo? basico? -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Criar um perfil de qualidade aplanado." +msgid "Provides support for reading AMF files." +msgstr "Fornece suporte para ler ficheiros AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Aplanador de perfis" +msgid "AMF Reader" +msgstr "Leitor de AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -4698,32 +5068,7 @@ msgstr "Aceita G-Codes e envia-os para uma impressora. O plug-in também pode at #: USBPrinting/plugin.json msgctxt "name" msgid "USB printing" -msgstr "Impressão através de USB" - -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "Perguntar, uma vez, ao utilizador, se concorda com a nossa licença." - -# rever! -# check the legal term in pt -# licença? -# acordo? -# use the same term for label and description -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "Contrato de Utilizador" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Permite guardar o resultado do seccionamento como um ficheiro X3G, para poder ser usado com impressoras 3D que usam este formato (Kalyan, Makerbot e outras impressoras baseadas no Sailfish)." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" +msgstr "Impressão USB" #: GCodeGzWriter/plugin.json msgctxt "description" @@ -4767,13 +5112,13 @@ msgstr "Plug-in de dispositivo de saída da unidade amovível" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Gere as ligações de rede com as impressoras Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Gere as ligações de rede com as impressoras em rede Ultimaker." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Ligação de rede UM3" +msgid "Ultimaker Network Connection" +msgstr "Ligação de rede Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -4804,7 +5149,7 @@ msgstr "Permite a visualização por camadas." #: SimulationView/plugin.json msgctxt "name" msgid "Simulation View" -msgstr "Vista Camadas" +msgstr "Visualização por camadas" #: GCodeGzReader/plugin.json msgctxt "description" @@ -4836,6 +5181,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Eliminador de suportes" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Fornece suporte para ler pacotes de formato Ultimaker." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "Leitor de UFP" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4896,6 +5251,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Atualização da versão 3.3 para 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Configurações de atualizações do Cura 4.3 para o Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Atualização da versão 4.3 para 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4916,6 +5281,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Atualização da versão 2.7 para 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Atualiza as configurações do Cura 3.5 para o Cura 4.0." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "Atualização da versão 3.5 para 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4926,6 +5301,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "Atualização da versão 3.4 para 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Atualiza as configurações do Cura 4.0 para o Cura 4.1." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "Atualização da versão 4.0 para 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4936,6 +5321,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Atualização da versão 3.0 para 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Atualiza as configurações do Cura 4.1 para o Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Atualização da versão 4.1 para 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4966,6 +5361,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Atualização da versão 2.2 para 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Atualiza as configurações do Cura 4.2 para o Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Atualização da versão 4.2 para 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4976,6 +5381,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Leitor de imagens" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Fornece suporte para a leitura de ficheiros modelo." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Leitor de Trimesh" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5026,6 +5441,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "Leitor de G-code" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "Efetua uma cópia de segurança e repõe a sua configuração." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Cópias de segurança do Cura" + # rever! # Fornece suporte para exportar perfis Cura. #: CuraProfileWriter/plugin.json @@ -5048,6 +5473,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Gravador 3MF" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Fornece uma fase de pré-visualização no Cura." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "Fase de pré-visualização" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -5068,9 +5503,32 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Leitor de Perfis Cura" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "Crie um G-code antes de guardar." +# rever! +# flatten -ver contexto! +# nivelar? +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Nivelar Definições Ativas" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "O perfil foi nivelado & ativado." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Grava X3g num ficheiro" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Ficheiro X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Ficheiro X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -5080,6 +5538,1077 @@ msgstr "Leitor de Perfis Cura" #~ msgid "Profile Assistant" #~ msgstr "Assistente de perfis" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Tentar de Novo" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print Core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Retirar suportes na intercepção com outros modelos" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Alterar as definições dos objetos que intercepta" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modificar definições do enchimento de outros modelos" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Atualizar existente" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Não suportado" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Anterior" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Sugestão" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Experimento de impressão" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Lista de verificação" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Selecione quaisquer atualizações realizadas a esta Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Composição de câmara: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Usar a funcionalidade de múltiplas bases de construção" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Usar a funcionalidade de múltiplas bases de construção (é necessário reiniciar)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Perfis predefinidos" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "procurar definições" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Espessura das Camadas" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Este perfil de qualidade não se encontra disponível para a sua configuração atual de material e de nozzle. Altere-a para ativar este perfil de qualidade." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "De momento está ativo um perfil personalizado. Para poder ativar o controlo de qualidade, por favor selecione um dos perfis de qualidade predefinidos no modo Personalizado" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Base de construção" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Perfil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Base de construção" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Descarregar o conteúdo de todas as definições para um ficheiro HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Modo God" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Cria um perfil de alterações de qualidade aplanado." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Aplanador de perfis" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Permite aos fabricantes de materiais criar novos materiais e perfis de qualidade utilizando uma IU de fácil acesso." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Assistente de perfis de impressão" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Ligado através da rede." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Ligado através da rede. Por favor aprove o pedido de acesso, na impressora." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Ligado através da rede. Sem autorização para controlar a impressora." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Acesso à impressora solicitado. Por favor aprove o pedido de acesso, na impressora" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Estado da autenticação" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Estado da autenticação" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Reenviar a solicitação de acesso" + +# rever! +# aceite? +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Acesso à impressora confirmado" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Sem autorização para imprimir com esta impressora. Não foi possível enviar o trabalho de impressão." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Solicitar Acesso" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Enviar pedido de acesso para a impressora" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Não é possível iniciar um novo trabalho de impressão." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Existe um problema com a configuração da sua Ultimaker, o qual impede o inicio da impressão. Por favor resolva este problema antes de continuar." + +# rever! +# ver contexto! pode querer dizer +# Configuração incompatível +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Divergência de Configuração" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Tem a certeza de que deseja imprimir com a configuração selecionada?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Existe uma divergência entre a configuração ou calibração da impressora e o Cura. Para se obter os melhores resultados, o seccionamento (no Cura) deve ser sempre feito para os núcleos de impressão e para os materiais que estão introduzidos na impressora." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "O envio de novos trabalhos está (temporariamente) bloqueado; o trabalho de impressão anterior ainda está a ser enviado." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "A enviar dados para a impressora" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "A Enviar Dados" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Nenhum PrintCore instalado na ranhura {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Nenhum material carregado na ranhura {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "PrintCore diferente (Cura: {cura_printcore_name}, Impressora: {remote_printcore_name}) selecionado para o extrusor {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Material diferente (Cura: {0}, Impressora: {1}) selecionado para o extrusor {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Sincronizar com a impressora" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Deseja utilizar a configuração atual da impressora no Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Os núcleos de impressão e/ou materiais na sua impressora são diferentes dos definidos no seu projeto atual. Para se obter os melhores resultados, o seccionamento (no Cura) deve ser sempre feito para os núcleos de impressão e para os materiais que estão introduzidos na impressora." + +# rever! +# contexto +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Ver no Monitor" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "A impressora {printer_name} terminou a impressão de \"{job_name}\"." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "O trabalho de impressão '{job_name}' terminou." + +# rever! +# Concluída? +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Impressão terminada" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Vazio" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Desconhecido" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Erro da cloud" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Não foi possível exportar o trabalho de impressão." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Ocorreu um erro na ligação à cloud." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "A carregar através da cloud do Ultimaker" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ligar à cloud do Ultimaker" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Não perguntar novamente sobre esta impressora." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Agora pode enviar e monitorizar trabalhos de impressão a partir de qualquer lugar através da sua conta Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Ligada!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Reveja a sua ligação" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "A máquina definida no perfil {0} ({1}) não corresponde à sua máquina atual ({2}), não foi possível importá-la." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Falha ao importar perfil de {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Ligação Existente" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Esta impressora/grupo já foi adicionada ao Cura. Por favor selecione outra impressora/grupo." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Introduza o endereço IP ou o nome de anfitrião da sua impressora na rede." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Ligar a uma impressora" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guia de definições do Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Fazer zoom em direção ao rato não é suportado na perspetiva ortogonal." + +#~ msgid "Orthogonal" +#~ msgstr "Ortogonal" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Gere as ligações de rede com as impressoras Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Ligação de rede UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Fornece informações e explicações adicionais sobre as definições do Cura, com imagens e animações." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Guia de definições" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guia de definições do Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "As definições foram alteradas de forma a corresponder aos extrusores disponíveis de momento: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Descrição do utilizador" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Estas opções não estão disponíveis pois está a monitorizar uma impressora na cloud." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Ir para o Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Todos os trabalhos foram impressos." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Ver histórico de impressão" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Para imprimir diretamente para a sua impressora através da rede, certifique-se de que a sua impressora está ligada à rede por meio de um cabo de rede ou através de ligação à rede Wi-Fi. Se não ligar o Cura por rede à impressora, poderá ainda assim utilizar uma unidade USB para transferir ficheiros g-code para a impressora.\n" +#~ "\n" +#~ "Selecione a sua impressora na lista em baixo:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Certifique-se de que é possível estabelecer ligação com a impressora:\n" +#~ "- Verifique se a impressora está ligada.\n" +#~ "- Verifique se a impressora está ligada à rede." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Ver só a base de construção ativa" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Dispor em todas as bases" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Dispor só na base ativa" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Permite guardar o resultado do seccionamento como um ficheiro X3G, para poder ser usado com impressoras 3D que usam este formato (Kalyan, Makerbot e outras impressoras baseadas no Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Lê ficheiros SVG como caminhos de ferramenta para efeitos de depuração dos movimentos da impressora." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Leitor de caminhos de ferramenta SVG" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Lista das Alterações" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Mostrar Lista das Alterações de cada Versão" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "A enviar dados para o cluster remoto" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ligar à Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "O Cura recolhe, de forma anónima, estatísticas sobre as opções usadas." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "A Recolher Dados" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "Mais informação" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Saiba mais sobre que informação o Cura envia." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "Permitir" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Permitir que o Cura envie de forma anónima, estatísticas sobre as opções usadas, para nos ajudar a estabelecer as prioridades para os futuros desenvolvimentos do Cura. São enviadas apenas algumas das preferências e definições usadas, a versão do Cura e um valor \"hash\" dos modelos que está a seccionar." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "Avaliação" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "Impressoras em rede" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "Impressoras locais" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "Tentou restaurar um Cura backup que não corresponde á sua versão actual." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Definições da máquina" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Definições da Impressora" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Origem no centro" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Base aquecida" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Definições Cabeça de Impressão" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distância desde a parte esquerda da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distância desde a parte frontal da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distância desde a parte direita da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Distância desde a parte posterior da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Altura do pórtico" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "A diferença de altura entre a ponta do nozzle e o sistema de pórtico (eixos X e Y). Utilizado para impedir colisões entre as impressões anteriores e o pórtico ao imprimir \"Individualmente\"." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "G-code Inicial" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "Comandos G-code a serem executados no início." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "G-code Final" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "Comandos G-code a serem executados no final." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Definições do Nozzle" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "O diâmetro nominal do filamento suportado pela impressora. O diâmetro exato será substituído pelo material e/ou perfil." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "G-code Inicial do Extrusor" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "G-code Final do Extrusor" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Lista das Alterações" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "Contrato de Utilizador" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Introduza o endereço IP ou o hostname da sua impressora na rede." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "Selecione uma impressora ligada à rede para monitorizar." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Ligue a sua impressora Ultimaker à sua rede local." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "O Cura envia informação anónima para a Ultimaker, para nos ajudar a aperfeiçoar a qualidade da impressão e a melhorar a experiência do utilizador. De seguida pode ver um exemplo com toda a informação enviada." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "Não pretendo enviar estes dados" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Permita o envio destes dados ao Ultimaker e ajude-nos a melhorar o Cura" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "Nenhuma impressão selecionada" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "Por predefinição, os pixels brancos representam os pontos altos do objecto e os pixels pretos representam os pontos baixos do objecto. Altere esta opção para inverter o comportamento de forma que os pixels pretos representem os pontos altos do objecto e os pixels brancos representem os pontos baixos do objecto." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Selecionar Atualizações da Impressora" + +# rever! +# mid air? no ar? no meio do ar? +# sagging? deformar? +# Isto irá construir estruturas de suporte debaixo do modelo para impedir a deformação de partes suspensas do modelo ou que a impressão seja feita no ar. +# a utilizar? usado? +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Selecionar qual o extrusor usado para imprimir os suportes. Isto irá construir estruturas de suporte por debaixo do modelo para impedir que as partes suspensas do modelo se deformem ou que sejam impressas no ar." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Este perfil de qualidade não se encontra disponível para a sua configuração atual de material e de bocal. Altere-a para ativar este perfil de qualidade" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "Configuração de impressão desativada. O ficheiro G-code não pode ser modificado." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "Ver o gráfico de compatibilidade de materiais" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "Ver tipos" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "Olá " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- Envie trabalhos de impressão para impressoras Ultimaker fora da sua rede local\n" +#~ "- Guarde as definições do seu Ultimaker Cura na cloud para utilizar em qualquer lugar\n" +#~ "- Obtenha acesso exclusivo a perfis de materiais de marcas de referência" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "Não é possível Seccionar" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "Especificação de tempo" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "Especificação do material" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Adicionar uma impressora ao Cura" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "Selecione a impressora que deseja utilizar da lista abaixo.\n" +#~ "\n" +#~ "Se a sua impressora não constar da lista, utilize a opção \"Impressora FFF personalizada\" da categoria \"Personalizado\" e ajuste as definições para corresponder à sua impressora na próxima caixa de diálogo." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "Fabricante" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "Nome da impressora" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Adicionar Impressora" + +#~ msgid "Modify G-Code" +#~ msgstr "Modificar G-code" + +# rever! +# models fit the +# dentro do? +# contido pelo +# se adapta? +# cabem no...? +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "Sem conteúdo para seccionar porque nenhum dos modelos está dentro do volume de construção. Por favor redimensione, mova ou rode os modelos para os adaptar ao volume de construção." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "O material selecionado é incompatível com a máquina ou a configuração selecionada." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Material incompatível" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Falha ao importar perfil de {0}: {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "Toolbox" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "Não disponível" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "Inacessível" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "Disponível" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "A preparar" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "A colocar em pausa" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "A Recomeçar" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "A aguardar: Impressora indisponível" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "A aguardar: Primeira disponível" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "A aguardar: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "Configuração alterada" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "A impressora atribuída %1 requer as seguintes alterações de configuração:" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "Ignorar" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "Iniciar um trabalho de impressão com uma configuração incompatível pode danificar a impressora 3D. Tem a certeza de que pretende ignorar a configuração e imprimir %1?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "Ignorar configuração e iniciar impressão" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "Gerir fila" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "A Imprimir" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "Gerir impressoras" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Ativar Configuração" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Importar a configuração da impressora para o Cura" + +# rever! +# Mostrar...? +# Ver...? +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Deslocações" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Auxiliares" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Invólucro" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Enchimento" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "Eu não quero enviar estes dados" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Permitir enviar estes dados para a Ultimaker para melhorar o Cura" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Tipo de impressora:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Ligação:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "Estado:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "A aguardar por um trabalho de impressão" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "A aguardar que alguém limpe a base de construção" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "A cancelar impressão..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Perfis protegidos" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Nome da Impressora:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Perfil:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Procurar..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "Esconder Tudo" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "Mostrar Tudo" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "Configurações disponíveis" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "Extrusor" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "Sim" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "Não" + +# rever! +# Configuração da Impressão? +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Configurar a Impressão" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Configuração da Impressão desativada\n" +#~ "Os ficheiros G-code não podem ser modificados" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00h00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "Especificação de tempo" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "Especificação de custos" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "Total:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Configuração de Impressão Recomendada

    Imprimir com as definições recomendadas para a Impressora, Material e Qualidade selecionadas." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Configuração de Impressão Personalizada

    Imprimir com um controlo detalhado de todas as definições específicas de cada uma das etapas do processo de seccionamento." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "Mostrar ®isto de motor..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "Procurar pacotes..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "Mostrar/Esconder Barra Lateral" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Por favor abra um Modelo 3D ou Projeto" + +# rever! +# Pronto para? +# Preparado para? +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Disponível para seccionar" + +# rever! +# Pronto para? +# Preparado para? +# Disponível para? +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "Pronto para %1" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "Seccionamento indisponível" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "Seccionar o trabalho de impressão atual" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "Cancelar o processo de seccionamento" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Preparar" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Selecione o dispositivo de saída" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "&Visualizar" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "&Definições" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "&Toolbox" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Abrir ficheiro" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Este perfil de qualidade não está disponível para a sua atual configuração de nozzle e material. Por favor altere-a para poder ativar este perfil de qualidade" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Velocidade Impressão" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Mais Lenta" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Mais Rápida" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Enchimento Gradual" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Criar Suportes" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Aderência à Base" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "Precisa de ajuda para melhorar as suas impressões?
    Por favor leia os Guias Ultimaker de Resolução de Problemas" + +# rever! +# contexto?! +# Relatório? +# Registo de motor? +# use english string? +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Engine Log" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "Tipo de impressora" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "Utilizar cola com esta combinação de materiais" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Compatibilidade entre Materiais" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Clique para verificar a compatibilidade entre os materiais em Ultimaker.com." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Mostra as novas alterações efetuadas desde a última versão." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Lista das Alterações" + +# rever! +# contexto! +# flattend - aplanado? nivelado? limpo? basico? +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Criar um perfil de qualidade aplanado." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Aplanador de perfis" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "Perguntar, uma vez, ao utilizador, se concorda com a nossa licença." + +# rever! +# check the legal term in pt +# licença? +# acordo? +# use the same term for label and description +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "Contrato de Utilizador" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "Crie um G-code antes de guardar." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Atualizar firmware" @@ -5104,22 +6633,6 @@ msgstr "Leitor de Perfis Cura" #~ msgid "Confirm uninstall " #~ msgstr "Confirmar desinstalação " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "Em Pausa" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "Anterior" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "Seguinte" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "Sugestão" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1 m / ~ %2 g / ~ %4 %3" @@ -5128,26 +6641,10 @@ msgstr "Leitor de Perfis Cura" #~ msgid "%1m / ~ %2g" #~ msgstr "%1 m / ~ %2 g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "Experimento de impressão" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "Lista de verificação" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "Atualizar Firmware" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "Permite aos fabricantes de materiais criar novos materiais e perfis de qualidade utilizando uma IU de fácil acesso." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "Assistente de perfis de impressão" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Imprimir com a Doodle3D WiFi-Box" @@ -5240,10 +6737,6 @@ msgstr "Leitor de Perfis Cura" #~ msgid "Lost connection with the printer" #~ msgstr "Perdeu-se a ligação com a impressora" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "Indisponível" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "Desconhecida" diff --git a/resources/i18n/pt_PT/fdmextruder.def.json.po b/resources/i18n/pt_PT/fdmextruder.def.json.po index 6d0d26b34c..96925ac2d9 100644 --- a/resources/i18n/pt_PT/fdmextruder.def.json.po +++ b/resources/i18n/pt_PT/fdmextruder.def.json.po @@ -1,15 +1,15 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" -"Last-Translator: Paulo Miranda \n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-14 14:15+0100\n" +"Last-Translator: Portuguese \n" "Language-Team: Paulo Miranda , Portuguese \n" "Language: pt_PT\n" "MIME-Version: 1.0\n" @@ -85,8 +85,8 @@ msgstr "G-Code Inicial do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "G-Code inicial a ser executado sempre que o extrusor for ligado." +msgid "Start g-code to execute when switching to this extruder." +msgstr "G-code inicial para executar ao mudar para este extrusor." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -125,8 +125,8 @@ msgstr "G-Code Final do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "G-Code final a ser executado sempre que o extrusor for desligado." +msgid "End g-code to execute when switching away from this extruder." +msgstr "G-code final para executar ao mudar deste extrusor." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -227,3 +227,11 @@ msgstr "Diâmetro" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Ajusta o diâmetro do filamento utilizado. Faça corresponder este valor com o diâmetro do filamento utilizado." + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "G-Code inicial a ser executado sempre que o extrusor for ligado." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "G-Code final a ser executado sempre que o extrusor for desligado." diff --git a/resources/i18n/pt_PT/fdmprinter.def.json.po b/resources/i18n/pt_PT/fdmprinter.def.json.po index 4e33fedb36..5e4b070c5f 100644 --- a/resources/i18n/pt_PT/fdmprinter.def.json.po +++ b/resources/i18n/pt_PT/fdmprinter.def.json.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-10-01 14:15+0100\n" -"Last-Translator: Paulo Miranda \n" -"Language-Team: Paulo Miranda , Portuguese \n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0100\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Portuguese , Paulo Miranda , Portuguese \n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -58,7 +58,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "Comandos G-code a serem executados no início – separados por \n." +msgstr "" +"Comandos G-code a serem executados no início – separados por \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,7 +72,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "Comandos G-code a serem executados no fim – separados por \n." +msgstr "" +"Comandos G-code a serem executados no fim – separados por \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -105,7 +109,7 @@ msgstr "Introduzir ou não um comando para esperar até que a temperatura da bas #: fdmprinter.def.json msgctxt "material_print_temp_wait label" msgid "Wait for Nozzle Heatup" -msgstr "Esperar pelo Aquecimento do Nozzle" +msgstr "Esperar pelo aquecimento do nozzle" #: fdmprinter.def.json msgctxt "material_print_temp_wait description" @@ -120,7 +124,7 @@ msgstr "Incluir Temperaturas do Material" #: fdmprinter.def.json msgctxt "material_print_temp_prepend description" msgid "Whether to include nozzle temperature commands at the start of the gcode. When the start_gcode already contains nozzle temperature commands Cura frontend will automatically disable this setting." -msgstr "Incluir ou não os comandos de temperatura do nozzle no início do gcode. Se o gcode_inicial já incluir os comandos de temperatura do nozzle, o front-end do Cura desativará automaticamente esta definição." +msgstr "Incluir ou não os comandos de temperatura do nozzle no início do G-code. Se o gcode_inicial já incluir os comandos de temperatura do nozzle, o front-end do Cura desativará automaticamente esta definição." #: fdmprinter.def.json msgctxt "material_bed_temp_prepend label" @@ -212,6 +216,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Se a máquina tem ou não uma base de construção aquecida." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Tem estabilização da temperatura do volume de construção" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Se a máquina consegue ou não estabilizar a temperatura do volume de construção." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -236,8 +250,8 @@ msgstr "Número de núcleos de extrusão. Um núcleo de extrusão é o conjunto #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" -msgstr "O numero de Extrusores que estão activos" +msgid "Number of Extruders That Are Enabled" +msgstr "Número de extrusores ativos" #: fdmprinter.def.json msgctxt "extruders_enabled_count description" @@ -246,7 +260,7 @@ msgstr "Número de núcleos de extrusão que estão activos; definido automatica #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "Diâmetro externo do nozzle" #: fdmprinter.def.json @@ -256,7 +270,7 @@ msgstr "O diâmetro externo da ponta do nozzle." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "Comprimento do nozzle" #: fdmprinter.def.json @@ -266,7 +280,7 @@ msgstr "A diferença de altura entre a ponta do nozzle e o extremo inferior da c #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "Ângulo do nozzle" #: fdmprinter.def.json @@ -276,7 +290,7 @@ msgstr "O ângulo entre o plano horizontal e a parte cónica imediatamente acima #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "Comprimento da zona de aquecimento" #: fdmprinter.def.json @@ -297,7 +311,7 @@ msgstr "A distância, a partir da ponta do nozzle, à qual o filamento deve ser #: fdmprinter.def.json msgctxt "machine_nozzle_temp_enabled label" msgid "Enable Nozzle Temperature Control" -msgstr "Ativar Controlo da Temperatura do Nozzle" +msgstr "Ativar controlo de temperatura do nozzle" #: fdmprinter.def.json msgctxt "machine_nozzle_temp_enabled description" @@ -306,7 +320,7 @@ msgstr "Controlar ou não a temperatura a partir do Cura. Desative esta opção #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "Velocidade de aquecimento" # intervalo? @@ -317,7 +331,7 @@ msgstr "A velocidade média (°C/s) a que o nozzle é aquecido, média calculada #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "Velocidade de arrefecimento" # intervalo? @@ -338,13 +352,13 @@ msgstr "O tempo mínimo durante o qual um extrusor tem de estar inativo antes de #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" -msgstr "Variante de G-code" +msgid "G-code Flavor" +msgstr "Variante do G-code" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" msgid "The type of g-code to be generated." -msgstr "O tipo de g-code a ser gerado." +msgstr "O tipo de G-code a ser gerado." #: fdmprinter.def.json msgctxt "machine_gcode_flavor option RepRap (Marlin/Sprinter)" @@ -403,7 +417,7 @@ msgstr "Se se deve utilizar os comandos de retração do firmware (G10/G11), em #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "Áreas não permitidas" #: fdmprinter.def.json @@ -423,7 +437,7 @@ msgstr "Uma lista de polígonos com áreas onde o nozzle não pode entrar." #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "Polígono da cabeça da máquina" #: fdmprinter.def.json @@ -433,8 +447,8 @@ msgstr "Uma silhueta 2D da cabeça de impressão (excluindo tampas do(s) ventila #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" -msgstr "Polígono da cabeça e ventilador da máquina" +msgid "Machine Head & Fan Polygon" +msgstr "Polígono da cabeça e do ventilador da máquina" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" @@ -443,7 +457,7 @@ msgstr "Uma silhueta 2D da cabeça de impressão (incluindo tampas do(s) ventila #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Altura do pórtico" #: fdmprinter.def.json @@ -473,8 +487,8 @@ msgstr "O diâmetro interno do nozzle. Altere esta definição quando utilizar u #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" -msgstr "Desviar com Extrusor" +msgid "Offset with Extruder" +msgstr "Desviar com extrusor" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords description" @@ -729,7 +743,7 @@ msgstr "Todas as definições que influenciam a resolução da impressão. Estas #: fdmprinter.def.json msgctxt "layer_height label" msgid "Layer Height" -msgstr "Espessura das Camadas (Layers)" +msgstr "Espessura das Camadas" # Valores? ou numeros? ou espessura? # mais elevadas ou maiores? @@ -815,7 +829,7 @@ msgstr "O diâmetro de uma única linha de enchimento." #: fdmprinter.def.json msgctxt "skirt_brim_line_width label" msgid "Skirt/Brim Line Width" -msgstr "Diâmetro Linha Contorno / Aba" +msgstr "Diâmetro Linha Contorno/Aba" #: fdmprinter.def.json msgctxt "skirt_brim_line_width description" @@ -1035,6 +1049,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "O número de camadas inferiores. Quando calculado através da Espessura Inferior, este valor é arredondado para um número inteiro." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Camadas inferiores iniciais" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "O número de camadas inferiores iniciais, a partir da base de construção no sentido ascendente. Quando calculado pela espessura inferior, este valor é arredondado" +" para um número inteiro." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1236,7 +1261,7 @@ msgstr "Descartar Folgas Mínimas" #: fdmprinter.def.json msgctxt "filter_out_tiny_gaps description" msgid "Filter out tiny gaps to reduce blobs on outside of model." -msgstr "Descartar folgas muito pequenas, entre paredes, para reduzir \"blobs\" no exterior da impressão." +msgstr "Descartar folgas muito pequenas, entre paredes, para reduzir \"blobs\" (borrões) no exterior da impressão." #: fdmprinter.def.json msgctxt "fill_outline_gaps label" @@ -1303,6 +1328,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Canto mais Acentuado" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Posição da Junta-Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "A posição próxima do local onde a impressão de cada parte de uma camada será iniciada." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Posterior esquerda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Anterior" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Posterior direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Frontal direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Frontal" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Frontal esquerda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Esquerda" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1330,13 +1405,10 @@ msgctxt "z_seam_corner label" msgid "Seam Corner Preference" msgstr "Preferência Canto Junta" -# rever! -# torna mais provável que esta surja num canto -# aconteça? surja? apareça? #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Controla se os cantos do contorno do modelo influenciam a posição da junta. Nenhum significa que os cantos não influenciam a posição da junta. Ocultar Junta faz com que seja mais provável que a junta surja num canto interior. Expor Junta faz com que seja mais provável que a junta aconteça num canto exterior. Ocultar ou Expor Junta faz com que seja mais provável que a junta aconteça num canto interior ou exterior." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Controla se os cantos do contorno do modelo influenciam a posição da junta. Nenhum significa que os cantos não influenciam a posição da junta. Ocultar Junta faz com que seja mais provável que a junta surja num canto interior. Expor Junta faz com que seja mais provável que a junta aconteça num canto exterior. Ocultar ou Expor Junta faz com que seja mais provável que a junta aconteça num canto interior ou exterior. Ocultação Inteligente permite os cantos interiores e exteriores, mas opta pelos cantos interiores com mais frequência, se apropriado." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1364,6 +1436,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Ocultar ou Expor Junta" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Ocultação Inteligente" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1374,17 +1451,15 @@ msgctxt "z_seam_relative description" msgid "When enabled, the z seam coordinates are relative to each part's centre. When disabled, the coordinates define an absolute position on the build plate." msgstr "Quando ativado, as coordenadas da junta-Z são relativas ao centro de cada peça. Quando desativado, as coordenadas definem uma posição absoluta na base de construção." -# rever! -# gaps? Espaços? intervalos? folgas? #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ignorar Pequenos Espaços Z" +msgid "No Skin in Z Gaps" +msgstr "Sem Revestimento nos Espaços Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Quando o modelo tem pequenos espaços verticais, cerca de mais 5% de tempo de cálculo pode ser despendido na criação das superfícies de revestimentos superior e inferior nestes pequenos espaços. Nesse caso desative esta definição." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Quando o modelo tem pequenos espaços verticais de apenas algumas camadas, deverá normalmente existir revestimento à volta dessas camadas no espaço estreito. Ative esta definição para não gerar revestimento se o espaço vertical for muito pequeno. Isto melhora o tempo de impressão e o tempo de seccionamento, mas deixa tecnicamente o enchimento exposto ao ar." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1405,11 +1480,10 @@ msgctxt "ironing_enabled label" msgid "Enable Ironing" msgstr "Ativar Engomar (Ironing)" -# O objetivo é derreter mais o plástico das superfícies superiores, criando uma superfície mais uniforme. #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Passar com o nozzle uma vez mais, sobre as superfícies superiores, mas sem extrudir material. O objetivo é criar superfícies mais suaves/lisas, ao derreter (\"engomar\") o plástico das superfícies superiores." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Passar novamente sobre o revestimento superior, mas desta vez extrudindo muito pouco material. O objetivo é derreter mais o plástico da camada superior, criando uma superfície mais suave. A pressão na câmara do nozzle é mantida elevada de modo que os vincos existentes na superfície sejam preenchidos com material." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1505,6 +1579,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "A mudança de velocidade instantânea máxima ao engomar." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Sobreposição Revestimento (%)" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuste a quantidade de sobreposição entre as paredes e (as extremidades) das linhas centrais de revestimento, como percentagem das larguras de linha das linhas de revestimento e da parede mais interna. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Observe que no caso de um revestimento e uma largura de revestimento da parede iguais, qualquer percentagem acima de 50% pode fazer com que o revestimento ultrapasse a parede, visto que a posição do nozzle do extrusor de revestimento pode já ultrapassar o centro da parede neste ponto." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Sobreposição Revestimento (mm)" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuste a quantidade de sobreposição entre as paredes e (as extremidades) das linhas centrais de revestimento. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Observe que no caso de um revestimento e uma largura de revestimento da parede iguais, qualquer valor acima da metade da largura da parede pode fazer com que o revestimento ultrapasse a parede, visto que a posição do nozzle do extrusor de revestimento pode já ultrapassar o centro da parede." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1675,6 +1769,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "O padrão geométrico de enchimento é deslocado por esta distância ao longo do eixo Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Início aleatório do enchimento" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "A linha de enchimento que é impressa primeiro é aleatória. Isso impede que um segmento se torne o mais forte, mas exige um movimento adicional." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1695,7 +1799,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "Adicionar paredes adicionais em torno da área de enchimento. Essas paredes podem fazer com que as linhas de revestimento superiores/inferiores desçam menos, o que significa que são necessárias menos camadas de revestimento superior/inferior para a mesma qualidade à custa de algum material adicional.\nEsta funcionalidade pode ser combinada com a opção Ligar polígonos de enchimento para unir todo o enchimento num único caminho de extrusão sem necessidade de deslocações ou retrações, se configurado corretamente." +msgstr "" +"Adicionar paredes adicionais em torno da área de enchimento. Essas paredes podem fazer com que as linhas de revestimento superiores/inferiores desçam menos, o que significa que são necessárias menos camadas de revestimento superior/inferior para a mesma qualidade à custa de algum material adicional.\n" +"Esta funcionalidade pode ser combinada com a opção Ligar polígonos de enchimento para unir todo o enchimento num único caminho de extrusão sem necessidade de deslocações ou retrações, se configurado corretamente." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1727,26 +1833,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "A distância em milímetros da sobreposição entre o enchimento e as paredes. Uma ligeira sobreposição permite que as paredes se unam firmemente ao enchimento." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Sobreposição Revestimento (%)" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "A sobreposição entre o revestimento e as paredes, como percentagem do diâmetro da linha do revestimento. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Esta é uma percentagem da média dos diâmetros das linhas de revestimento e da parede mais interior." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Sobreposição Revestimento (mm)" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "A distância em milímetros da sobreposição entre o revestimento e as paredes. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1932,6 +2018,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "A temperatura predefinida utilizada para a impressão. Esta deve ser a temperatura \"base\" de um material. Todas as outras temperaturas de impressão devem ser baseadas neste valor" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "Temperatura do volume de construção" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "A temperatura do ambiente para a impressão. Se este valor for 0, a temperatura do volume de construção não será ajustada." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -2042,6 +2138,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Proporção de Contração em percentagem." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Material Cristalino" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Este tipo de material é daquele que se separa de forma regular quando aquecido (cristalino) ou daquele que cria longas cadeias de polímero entrelaçado (não cristalino)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Posição Retraída Antiescorrimento" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "A distância a que o material tem de ser retraído antes de parar o escorrimento." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Velocidade de Retração Antiescorrimento" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "A velocidade a que o material tem de ser retraído durante uma substituição de filamentos para evitar o escorrimento." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Posição Retraída de Preparação da Separação" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "A distância a que o filamento pode ser esticado antes de se separar, enquanto é aquecido." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Velocidade de Retração de Preparação da Separação" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "A velocidade a que o filamento tem de ser retraído imediatamente antes de se separar numa retração." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Posição Retraída de Separação" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "A distância de retração do filamento para separá-lo de forma regular." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Velocidade de Retração de Separação" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "A velocidade de retração do filamento para separá-lo de forma regular." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatura de Separação" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "A temperatura a que o filamento se quebra para uma separação regular." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2052,6 +2228,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Fluxo da Parede" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Compensação de fluxo nas linhas de parede." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Fluxo de Parede Exterior" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Compensação de fluxo na linha de parede exterior." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Parede de Parede(s) Interior(es)" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "A compensação de fluxo nas linhas de parede para todas as linhas de parede exceto a mais exterior." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Fluxo Superior/Inferior" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Compensação de fluxo nas linhas superiores/inferiores." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Fluxo de Revestimento da Superfície Superior" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Compensação de fluxo nas linhas das áreas na parte superior da impressora." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Fluxo de Enchimento" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Compensação de fluxo nas linhas de enchimento." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Fluxo de Contorno/Aba" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Compensação de fluxo nas linhas de contorno ou abas." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Fluxo de Suporte" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Compensação de fluxo nas linhas das estruturas de suporte." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Fluxo da Interface do Suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Compensação de fluxo nas linhas de suporte do teto ou do chão." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Fluxo do Teto do Suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Compensação de fluxo nas linhas do teto do suporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Fluxo do Chão do Suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Compensação de fluxo nas linhas do chão do suporte." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Fluxo da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Compensação de fluxo nas linhas da torre de preparação." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2125,7 +2421,7 @@ msgstr "A velocidade a que o filamento é retraído durante um movimento de retr #: fdmprinter.def.json msgctxt "retraction_prime_speed label" msgid "Retraction Prime Speed" -msgstr "Velocidade Preparar na Retração" +msgstr "Velocidade de preparação na retração" #: fdmprinter.def.json msgctxt "retraction_prime_speed description" @@ -2180,8 +2476,8 @@ msgstr "Limitar Retrações de Suportes" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Eliminar a retração quando o movimento de suporte para suporte é em linha recta. Ativar esta definição reduz o tempo de impressão, mas pode levar a que aja um excessivo numero de fios nas estruturas de suporte." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Eliminar a retração quando o movimento de suporte para suporte é em linha reta. Ativar esta definição reduz o tempo de impressão, mas pode levar a que aja um excessivo numero de fios nas estruturas de suporte." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2202,8 +2498,8 @@ msgstr "Distância de retração de substituição do nozzle" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "A quantidade de retração: defina como 0 para não obter qualquer retração. Normalmente, esta deve ser a mesma que o comprimento da zona de aquecimento." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "A quantidade de retração ao mudar de extrusor. Defina como 0 para não obter qualquer retração. Normalmente, esta deve ser a mesma que o comprimento da zona de aquecimento." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2235,6 +2531,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "A velocidade a que o filamento é empurrado após uma retração de substituição do nozzle." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Quantidade de Preparação Extra de Substituição do Nozzle" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Material extra a preparar após a substituição do nozzle." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2432,7 +2738,7 @@ msgstr "A velocidade dos movimentos de deslocação na camada inicial. É recome #: fdmprinter.def.json msgctxt "skirt_brim_speed label" msgid "Skirt/Brim Speed" -msgstr "Velocidade Contorno / Aba" +msgstr "Velocidade Contorno/Aba" #: fdmprinter.def.json msgctxt "skirt_brim_speed description" @@ -2440,15 +2746,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "A velocidade a que o contorno e a aba são impressos. Geralmente, isto é efetuado à velocidade de camada inicial, mas, por vezes, pode preferir imprimir o contorno ou a aba a uma velocidade diferente." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Velocidade Z máxima" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Velocidade do Salto Z" -# a que a base de construção é movida. Defini-la como zero #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "A velocidade máxima do movimento da base de construção. Definir esta como zero faz com que a impressão utilize as predefinições de firmware para a velocidade Z máxima." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "A velocidade a que o movimento Z vertical é efetuado para Saltos Z. Este valor é geralmente inferior à velocidade de impressão, uma vez que é mais difícil mover a base de construção ou o pórtico da máquina." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2663,7 +2968,7 @@ msgstr "A aceleração dos movimentos de deslocação na camada inicial." #: fdmprinter.def.json msgctxt "acceleration_skirt_brim label" msgid "Skirt/Brim Acceleration" -msgstr "Aceleração Contorno / Aba" +msgstr "Aceleração Contorno/Aba" #: fdmprinter.def.json msgctxt "acceleration_skirt_brim description" @@ -2862,7 +3167,7 @@ msgstr "A aceleração dos movimentos de deslocação na camada inicial." #: fdmprinter.def.json msgctxt "jerk_skirt_brim label" msgid "Skirt/Brim Jerk" -msgstr "Jerk de Contorno / Aba" +msgstr "Jerk de Contorno/Aba" #: fdmprinter.def.json msgctxt "jerk_skirt_brim description" @@ -2893,8 +3198,8 @@ msgstr "Modo de Combing" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "Combing mantém o bocal em áreas já impressas durante a deslocação. Isto resulta em movimentos de deslocação ligeiramente mais longos, mas reduz a necessidade de retrações. Se o combing estiver desativado, o material será retraído e o bocal irá deslocar-se em linha reta para o próximo ponto. Também é possível evitar o combing em áreas de revestimento superiores/inferiores e também apenas efetuar o combing no enchimento. Observe que a opção \"No enchimento\" tem o mesmo comportamento que a opção \"Não no Revestimento\" em versões anteriores do Cura." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "Combing mantém o nozzle em áreas já impressas durante a deslocação. Isto resulta em movimentos de deslocação ligeiramente mais longos, mas reduz a necessidade de retrações. Se o combing estiver desativado, o material será retraído e o nozzle irá deslocar-se em linha reta para o próximo ponto. Também é possível evitar o combing em áreas de revestimento superiores/inferiores ou apenas efetuar o combing no enchimento." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2966,16 +3271,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "A distância entre o nozzle e as peças já impressas ao evitá-las durante os movimentos de deslocação." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Começar Camadas Mesmo Objecto" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Em cada camada, começar a imprimir o objeto perto do mesmo ponto, para não se começar a imprimir uma nova camada com a peça com a qual se terminou a camada anterior. O que resulta em melhores impressões de saliências e de pequenos objectos, mas aumenta o tempo de impressão." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2999,7 +3294,7 @@ msgstr "A coordenada Y da posição do local onde se situa a peça pela qual ini #: fdmprinter.def.json msgctxt "retraction_hop_enabled label" msgid "Z Hop When Retracted" -msgstr "Salto-Z ao Retrair" +msgstr "Salto Z ao retrair" #: fdmprinter.def.json msgctxt "retraction_hop_enabled description" @@ -3019,12 +3314,12 @@ msgstr "Efetua um salto Z apenas ao deslocar-se sobre as peças impressas que n #: fdmprinter.def.json msgctxt "retraction_hop label" msgid "Z Hop Height" -msgstr "Altura do Salto-Z" +msgstr "Altura do salto Z" #: fdmprinter.def.json msgctxt "retraction_hop description" msgid "The height difference when performing a Z Hop." -msgstr "A diferença de altura ao efetuar um Salto-Z." +msgstr "A diferença de altura ao efetuar um salto Z." # rever! # Salto? @@ -3033,7 +3328,7 @@ msgstr "A diferença de altura ao efetuar um Salto-Z." #: fdmprinter.def.json msgctxt "retraction_hop_after_extruder_switch label" msgid "Z Hop After Extruder Switch" -msgstr "Salto-Z Após Mudança Extrusor" +msgstr "Salto Z após mudança extrusor" # rever! #: fdmprinter.def.json @@ -3041,6 +3336,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "Após a máquina mudar de um extrusor para outro, a base de construção é rebaixada para criar uma folga entre o nozzle e a impressão. Desta forma, evita-se que o nozzle deixe, na parte exterior de uma impressão, algum material que possa escorrer quando acaba de imprimir." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "Altura do salto Z após mudança do extrusor" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "A diferença de altura ao efetuar um salto Z após uma mudança do extrusor." + # rever! # todoas as strings de Arrefecimento # limiar? @@ -3189,7 +3494,7 @@ msgstr "Criar Suportes" #: fdmprinter.def.json msgctxt "support_enable description" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Criar estruturas para suportar partes do modelo, suspensas ou com saliências. Sem estas estruturas, essas partes do modelo podem deformar-se ou mesmo desmoronar durante a impressão." +msgstr "Criar estruturas para suportar partes do modelo, suspensas ou com saliências. Sem estas estruturas, essas partes do modelo podem desmoronar durante a impressão." #: fdmprinter.def.json msgctxt "support_extruder_nr label" @@ -3321,6 +3626,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Cruz" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "Gyroid" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3385,44 +3695,44 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Distância entre as linhas da estrutura de suporte da camada inicial impressas. Esta definição é calculada pela densidade do suporte." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Direção da linha de enchimento do suporte" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Orientação do padrão de enchimento para suportes. O padrão de enchimento do suporte gira no plano horizontal." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Lista de ângulos (números inteiros) relativos às direções de linha a utilizar. Os valores da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é escrita entre parênteses retos. Por defeito, a lista está vazia, o que significa a utilização dos ângulos predefinidos de 0 graus." #: fdmprinter.def.json msgctxt "support_brim_enable label" msgid "Enable Support Brim" -msgstr "Ativar borda de suporte" +msgstr "Ativar aba de suporte" #: fdmprinter.def.json msgctxt "support_brim_enable description" msgid "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate." -msgstr "Gera uma borda dentro das regiões de enchimento do suporte da primeira camada. Esta borda é impressa na parte por baixo do suporte e não em torno do mesmo. Ativar esta definição aumenta a aderência do suporte à placa de construção." +msgstr "Gera uma aba dentro das regiões de enchimento do suporte da primeira camada. Esta aba é impressa na parte por baixo do suporte e não em torno do mesmo. Ativar esta definição aumenta a aderência do suporte à base de construção." #: fdmprinter.def.json msgctxt "support_brim_width label" msgid "Support Brim Width" -msgstr "Largura da borda do suporte" +msgstr "Largura da aba do suporte" #: fdmprinter.def.json msgctxt "support_brim_width description" msgid "The width of the brim to print underneath the support. A larger brim enhances adhesion to the build plate, at the cost of some extra material." -msgstr "A largura da borda para imprimir na parte por baixo do suporte. Uma borda mais larga melhora a aderência à placa de construção à custa de algum material adicional." +msgstr "A largura da aba para imprimir na parte por baixo do suporte. Uma aba mais larga melhora a aderência à base de construção à custa de algum material adicional." #: fdmprinter.def.json msgctxt "support_brim_line_count label" msgid "Support Brim Line Count" -msgstr "Contagem de linhas da borda do suporte" +msgstr "Contagem de linhas da aba do suporte" #: fdmprinter.def.json msgctxt "support_brim_line_count description" msgid "The number of lines used for the support brim. More brim lines enhance adhesion to the build plate, at the cost of some extra material." -msgstr "O número de linhas utilizado para a borda do suporte. Uma borda com mais linhas melhora a aderência à placa de construção à custa de algum material adicional." +msgstr "O número de linhas utilizado para a aba do suporte. Uma aba com mais linhas melhora a aderência à base de construção à custa de algum material adicional." #: fdmprinter.def.json msgctxt "support_z_distance label" @@ -3521,7 +3831,7 @@ msgstr "Distância da junção do suporte" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." msgstr "A distância máxima entre as estruturas de suporte nas direções X/Y. Quando a distância entre as estruturas de suporte for menor do que este valor, as estruturas fundem-se numa só." #: fdmprinter.def.json @@ -3564,6 +3874,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "A altura do enchimento de suporte de uma determinada densidade antes de mudar para metade da densidade." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "Área de suporte mínimo" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "Tamanho mínimo da área para polígonos de suporte. Os polígonos com uma área inferior a este valor não serão gerados." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3792,6 +4112,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Ziguezague" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "Área mínima da interface de suporte" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamanho mínimo da área para polígonos da interface do suporte. Os polígonos com uma área inferior a este valor serão impressos como suporte normal." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "Área mínima do teto de suporte" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamanho mínimo da área para os tetos do suporte. Os polígonos com uma área inferior a este valor serão impressos como suporte normal." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "Área mínima do piso de suporte" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamanho mínimo da área para os pisos do suporte. Os polígonos com uma área inferior a este valor serão impressos como suporte normal." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "Expansão horizontal da interface de suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "Quantidade do desvio aplicado aos polígonos da interface de suporte." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "Expansão horizontal do teto de suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "Quantidade do desvio aplicado aos tetos de suporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "Expansão horizontal do piso de suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "Quantidade do desvio aplicado aos pisos de suporte." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Direções da linha da interface do suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Lista de ângulos (números inteiros) relativos às direções de linha a utilizar. Os valores da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é escrita entre parênteses retos. Por defeito, a lista está vazia, o que significa a utilização dos ângulos predefinidos (que alternam entre 45 e 135 graus se as interfaces forem bastante espessas ou 90 graus)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Direções da linha do teto do suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Uma lista de ângulos (números inteiros) relativos às direções de linha a utilizar. Os valores da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é escrita entre parênteses retos. Por defeito, a lista está vazia, o que significa a utilização dos ângulos predefinidos (que alternam entre 45 e 135 graus se as interfaces forem bastante espessas ou 90 graus)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Direções da linha do piso do suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Lista de ângulos (números inteiros) relativos às direções de linha a utilizar. Os valores da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é escrita entre parênteses retos. Por defeito, a lista está vazia, o que significa a utilização dos ângulos predefinidos (que alternam entre 45 e 135 graus se as interfaces forem bastante espessas ou 90 graus)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3833,14 +4243,14 @@ msgid "The diameter of a special tower." msgstr "O diâmetro de uma torre especial." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Diâmetro mínimo" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Diâmetro Máximo Suportado pela Torre" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "O diâmetro mínimo nas direções X/Y de uma pequena área que deverá ser suportada por uma torre de suporte especializada." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "O diâmetro máximo nas direções X/Y de uma pequena área que deverá ser suportada por uma torre de suporte especializada." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3913,17 +4323,17 @@ msgstr "Modos de Aderência" #: fdmprinter.def.json msgctxt "adhesion_type description" msgid "Different options that help to improve both priming your extrusion and adhesion to the build plate. Brim adds a single layer flat area around the base of your model to prevent warping. Raft adds a thick grid with a roof below the model. Skirt is a line printed around the model, but not connected to the model." -msgstr "Diferentes modos que ajudam a melhorar a aderência à base de construção, assim como a preparação inicial da extrusão.

    Contorno (Skirt) imprime uma linha paralela ao perímetro do modelo.
    Aba (Brim) acrescenta uma única camada em torno da base do modelo para prevenir empenos ou deformações na parte inferior dos modelos.
    Raft adiciona uma plataforma, composta por uma grelha espessa e um tecto, entre o modelo e a base de construção." +msgstr "Diferentes modos que ajudam a melhorar a aderência à base de construção, assim como a preparação inicial da extrusão. \"Aba\" acrescenta uma única camada em torno da base do modelo para prevenir empenos ou deformações na parte inferior dos modelos. \"Raft\" adiciona uma plataforma, composta por uma grelha espessa e um teto, entre o modelo e a base de construção. \"Contorno\" é uma linha impressa à volta do modelo, mas que não está ligada ao modelo." #: fdmprinter.def.json msgctxt "adhesion_type option skirt" msgid "Skirt" -msgstr "Contorno (Skirt)" +msgstr "Contorno" #: fdmprinter.def.json msgctxt "adhesion_type option brim" msgid "Brim" -msgstr "Aba (Brim)" +msgstr "Aba" #: fdmprinter.def.json msgctxt "adhesion_type option raft" @@ -3943,7 +4353,7 @@ msgstr "Extrusor para Aderência" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr description" msgid "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion." -msgstr "O núcleo de extrusão utilizado para imprimir o Contorno / Aba / Raft. Definição usada com múltiplos extrusores." +msgstr "O núcleo de extrusão utilizado para imprimir o Contorno/Aba/Raft. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "skirt_line_count label" @@ -3965,7 +4375,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "A distância horizontal entre o contorno e o perímetro exterior da primeira camada da impressão.\nEsta é a distância mínima. Linhas múltiplas de contorno serão impressas para o exterior." +msgstr "" +"A distância horizontal entre o contorno e o perímetro exterior da primeira camada da impressão.\n" +"Esta é a distância mínima. Linhas múltiplas de contorno serão impressas para o exterior." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4000,12 +4412,12 @@ msgstr "O número de linhas utilizado para uma aba. Um maior número de linhas d #: fdmprinter.def.json msgctxt "brim_replaces_support label" msgid "Brim Replaces Support" -msgstr "A borda substitui o suporte" +msgstr "A aba substitui o suporte" #: fdmprinter.def.json msgctxt "brim_replaces_support description" msgid "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions." -msgstr "Aplicar a borda para ser impressa em torno do modelo, mesmo se esse espaço fosse ocupado de outra forma pelo suporte. Isto substitui algumas regiões da primeira camada do suporte por regiões de borda." +msgstr "Aplicar a aba para ser impressa em torno do modelo, mesmo se esse espaço fosse ocupado de outra forma pelo suporte. Isto substitui algumas regiões da primeira camada do suporte por regiões de aba." #: fdmprinter.def.json msgctxt "brim_outside_only label" @@ -4066,7 +4478,7 @@ msgstr "Camadas Superiores do Raft" #: fdmprinter.def.json msgctxt "raft_surface_layers description" msgid "The number of top layers on top of the 2nd raft layer. These are fully filled layers that the model sits on. 2 layers result in a smoother top surface than 1." -msgstr "O número de camadas superiores impressas em cima da camada do meio do raft. Estas são as camadas, totalmente preenchidas, onde o modelo assenta. Duas camadas resultam numa superfície superior mais uniforme, do que só uma camada." +msgstr "O número de camadas superiores impressas em cima da camada do meio do raft. Estas são as camadas, totalmente preenchidas, onde o modelo assenta. Duas camadas resultam numa superfície superior mais uniforme do que só uma camada." #: fdmprinter.def.json msgctxt "raft_surface_thickness label" @@ -4338,16 +4750,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Imprime uma torre próxima da impressão que prepara o material depois de cada substituição do nozzle." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Torre de preparação circular" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Faça a torre de preparação como uma forma circular." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4388,16 +4790,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "A coordenada Y da posição da torre de preparação." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Fluxo da torre de preparação" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4408,6 +4800,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "Após a impressão da torre de preparação com um nozzle, limpe o material que vazou do nozzle para a torre de preparação." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "Aba da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "As torres de preparação poderão necessitar de uma aderência adicional concedida por uma aba, ainda que o modelo não o necessite. Atualmente, não é possível utilizá-la com o tipo de aderência \"Raft\"." + # rever! #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" @@ -4545,6 +4947,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Remove as camadas vazias por baixo da primeira camada impressa, se existirem. Desativar esta definição pode causar primeiras camadas vazias, se a definição Tolerância de Seccionamento estiver definida como Exclusivo ou Centro." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Resolução Máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "O tamanho mínimo de um segmento após o seccionamento. Se aumentar este valor, a malha terá uma resolução menor. Isto poderá permitir que a impressora acompanhe a velocidade que tem para processar o G-code e irá aumentar a velocidade de seccionamento ao remover os detalhes da malha que não podem ser processados." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Resolução Máxima Deslocação" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "O tamanho mínimo de um segmento de deslocação após o seccionamento. Se aumentar este valor, o movimento de deslocação nos cantos será menos suave. Isto poderá permitir que a impressora acompanhe a velocidade que tem para processar o G-code, mas pode reduzir a precisão do movimento ao evitar as peças já impressas." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Desvio máximo" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "O desvio máximo permitido ao reduzir a resolução da definição de Resolução máxima. Se aumentar esta definição, a impressão será menos precisa, mas o G-code será menor. O Desvio máximo é um limite para a Resolução máxima, pelo que, se estiverem em conflito, o Desvio máximo é sempre considerado verdadeiro." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4715,8 +5147,8 @@ msgstr "\"Spiralize\" Suavizar Contornos" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Suaviza os contornos, criados pelo \"Spiralize\", para reduzir a visibilidade da junta Z (a junta Z deve ser praticamente imperceptível na impressão, mas continuará a ser visível na visualização por camadas). Ter em conta que a suavização tenderá a reduzir/desfocar pequenos detalhes da superfície." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Suaviza os contornos, criados pelo \"Spiralize\", para reduzir a visibilidade da junta Z (a junta Z deve ser praticamente impercetível na impressão, mas continuará a ser visível na visualização por camadas). Tenha em conta que a suavização tenderá a reduzir/desfocar pequenos detalhes da superfície." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4726,7 +5158,7 @@ msgstr "Extrusão relativa" #: fdmprinter.def.json msgctxt "relative_extrusion description" msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the g-code. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any g-code script is output." -msgstr "Utilizar a extrusão relativa em vez da extrusão absoluta. A utilização de passos-E relativos facilita o pós-processamento do g-code. Contudo, isto não é compatível com todas as impressoras e poderá produzir ligeiros desvios na quantidade de material depositado em comparação com os passos-E absolutos. Não considerando esta definição, o modo de extrusão será sempre definido como absoluto antes da exportação de qualquer script g-code." +msgstr "Utilizar a extrusão relativa em vez da extrusão absoluta. A utilização de passos-E relativos facilita o pós-processamento do G-code. Contudo, isto não é compatível com todas as impressoras e poderá produzir ligeiros desvios na quantidade de material depositado em comparação com os passos-E absolutos. Não considerando esta definição, o modo de extrusão será sempre definido como absoluto antes da exportação de qualquer script g-code." #: fdmprinter.def.json msgctxt "experimental label" @@ -4930,26 +5362,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Os polígonos em camadas seccionadas que apresentem uma circunferência mais pequena do que este valor serão filtrados. Valores mais reduzidos originam malhas de resolução superior à custa do tempo de seccionamento. Destina-se principalmente a impressoras SLA de alta resolução e a modelos 3D muito pequenos com muitos detalhes." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Resolução Máxima" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "O tamanho mínimo de um segmento após o seccionamento. Se aumentar este valor, a malha terá uma resolução menor. Isto poderá permitir que a impressora acompanhe a velocidade que tem para processar o g-code e irá aumentar a velocidade de seccionamento ao remover os detalhes da malha que não podem ser processados." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Resolução Máxima Deslocação" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "O tamanho mínimo de um segmento de deslocação após o seccionamento. Se aumentar este valor, o movimento de deslocação nos cantos será menos suave. Isto poderá permitir que a impressora acompanhe a velocidade que tem para processar o g-code, mas pode reduzir a precisão do movimento ao evitar as peças já impressas." - # rever! # Is the english string correct? for the label? # -Break up @@ -5104,16 +5516,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "A velocidade de movimento durante a desaceleração, relativa à velocidade do caminho de extrusão. É recomendado um valor ligeiramente abaixo de 100%, uma vez que durante o movimento de desaceleração, a pressão no tubo Bowden diminui." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Alternar Rotação Revestimento" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Alterna a direção na qual as camadas superiores/inferiores são impressas. Geralmente, estas são impressas apenas na diagonal. Esta definição adiciona também as direções só em X e só em Y." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5221,8 +5623,8 @@ msgstr "Ativar suporte cónico" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Funcionalidade experimental: torna as áreas de suporte mais reduzidas na parte inferior do que na saliência." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Torna as áreas de suporte mais reduzidas na parte inferior do que na saliência." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5286,23 +5688,24 @@ msgstr "A distância média entre os pontos aleatórios introduzidos em cada seg #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Desvio de extrusão máximo de compensação da taxa de fluxo" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "A distância máxima em milímetros a ser compensada." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "A distância máxima em mm de deslocação do filamento para compensar alterações na taxa de fluxo." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Fator de compensação da taxa de fluxo" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "O fator de multiplicação da taxa de fluxo -> translação de distância." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Até que distância o filamento se deve mover para compensar as alterações na taxa de fluxo, como uma percentagem da distância que o filamento iria percorrer" +" num segundo de extrusão." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5454,7 +5857,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "A distância de um movimento ascendente que é extrudido a metade da velocidade.\nIsto pode causar melhor aderência às camadas anteriores, sendo que o material nessas camadas não é demasiado aquecido. Aplica-se apenas à impressão de fios." +msgstr "" +"A distância de um movimento ascendente que é extrudido a metade da velocidade.\n" +"Isto pode causar melhor aderência às camadas anteriores, sendo que o material nessas camadas não é demasiado aquecido. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5563,8 +5968,8 @@ msgstr "Distância entre o nozzle e as linhas horizontais descendentes. Uma maio #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" -msgstr "Camadas Adaptáveis" +msgid "Use Adaptive Layers" +msgstr "Utilizar camadas adaptáveis" #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled description" @@ -5573,8 +5978,8 @@ msgstr "Camadas Adaptáveis calcula as espessuras das camadas conforme a forma d #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" -msgstr "Variação Máxima Camadas Adaptáveis" +msgid "Adaptive Layers Maximum Variation" +msgstr "Variação máxima das camadas adaptáveis" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation description" @@ -5583,8 +5988,8 @@ msgstr "A diferença máxima de espessura permitida em relação ao valor base d #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" -msgstr "Variação Degraus Camadas Adaptáveis" +msgid "Adaptive Layers Variation Step Size" +msgstr "Tamanho da fase de variação das camadas adaptáveis" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step description" @@ -5593,13 +5998,14 @@ msgstr "A diferença de espessura da camada seguinte em comparação com a anter #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "Limiar Camadas Adaptáveis" +msgid "Adaptive Layers Topography Size" +msgstr "Dimensão da topografia das camadas adaptáveis" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "O limiar em que se deve usar, ou não, uma menor espessura de camada. Este número é comparado com a tangente da inclinação mais acentuada numa camada." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Distância horizontal pretendida entre duas camadas adjacentes. Reduzir o valor desta definição faz com que camadas mais finas sejam utilizadas para juntar" +" mais os contornos das camadas." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5608,8 +6014,9 @@ msgstr "Ângulo da parede de saliências" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "As paredes que se salientam mais do que este ângulo serão impressas utilizando definições de parede de saliências. Quando o valor é 90, nenhuma parede será tratada como saliente." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "As paredes com saliências que ultrapassem este ângulo serão impressas utilizando definições de parede de saliências. Quando o valor é 90, nenhuma parede" +" é considerada como sendo uma saliência. As saliências suportadas por suporte também não serão consideradas como saliências." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5639,7 +6046,7 @@ msgstr "Comprimento mínimo da parede de Bridge" #: fdmprinter.def.json msgctxt "bridge_wall_min_length description" msgid "Unsupported walls shorter than this will be printed using the normal wall settings. Longer unsupported walls will be printed using the bridge wall settings." -msgstr "Paredes sem suporte com comprimento menor que este valor serão impressas utilizando as definições de parede normais. Paredes sem suporte mais longas serão impressas utilizando as definições da parede de Bridge." +msgstr "Paredes sem suporte com comprimento menor que este valor serão impressas utilizando as definições de parede normais. Paredes sem suporte mais longas serão impressas utilizando as definições da parede de Bridge." #: fdmprinter.def.json msgctxt "bridge_skin_support_threshold label" @@ -5659,7 +6066,7 @@ msgstr "Desaceleração da parede de Bridge" #: fdmprinter.def.json msgctxt "bridge_wall_coast description" msgid "This controls the distance the extruder should coast immediately before a bridge wall begins. Coasting before the bridge starts can reduce the pressure in the nozzle and may produce a flatter bridge." -msgstr "Isto controla a distância que a extrusora deve desacelerar imediatamente antes do início de uma parede de Bridge. Desacelerar antes do início de Bridge pode reduzir a pressão no bocal e poderá produzir um vão mais liso." +msgstr "Isto controla a distância que o extrusor deve desacelerar imediatamente antes do início de uma parede de Bridge. Desacelerar antes do início de Bridge pode reduzir a pressão no nozzle e poderá produzir um vão mais liso." #: fdmprinter.def.json msgctxt "bridge_wall_speed label" @@ -5811,6 +6218,198 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "Percentagem da velocidade da ventoinha a ser utilizada ao imprimir a terceira camada do revestimento de Bridge." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "Limpar nozzle entre camadas" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "Incluir ou não o G-code de limpeza do nozzle entre as camadas. Ativar esta definição poderá influenciar o comportamento de retração na mudança de camada. Utilize as definições de Retração de limpeza para controlar a retração nas camadas onde o script de limpeza estará em funcionamento." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "Volume de material entre limpezas" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "Material máximo que pode ser extrudido antes de ser iniciada outra limpeza do nozzle." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "Retração de limpeza ativada" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "Retrai o filamento quando o nozzle está em movimento numa área sem impressão." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "Distância de retração da limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "Quantidade de filamento a retrair para não escorrer durante a sequência de limpeza." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "Quantidade de preparação adicional de retração de limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "Pode ocorrer escorrimento de material durante um movimento de deslocação de limpeza, o qual pode ser compensado aqui." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "Velocidade de retração de limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "A velocidade a que o filamento é retraído e preparado durante um movimento de retração de limpeza." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "Velocidade de retração na retração de limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "A velocidade a que o filamento é retraído durante um movimento de retração de limpeza." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Velocidade de preparação na retração" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "A velocidade a que o filamento é preparado durante um movimento de retração de limpeza." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "Pausa na limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "Coloca a limpeza em pausa após anular a retração." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "Salto Z de limpeza ao retrair" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "Sempre que for efetuada uma retração, a base de construção é baixada para criar uma folga entre o nozzle e a impressão. Desta forma, evita-se que o nozzle atinja a impressão durante os movimentos de deslocação, reduzindo a probabilidade de derrubar a impressão da base de construção." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "Altura do salto Z de limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "A diferença de altura ao efetuar um salto Z." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "Velocidade do salto de limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "Velocidade para mover o eixo Z durante o salto." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "Posição X da escova de limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "Localização X onde o script de limpeza será iniciado." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "Contagem de repetições de limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "Número de vezes que o nozzle deve ser passado pela escova." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "Distância do movimento de limpeza" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "A distância de deslocação da cabeça para trás e para a frente pela escova." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Tamanho máximo do buraco pequeno" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Os buracos e os contornos das peças com um diâmetro inferior a este valor serão impressos à Velocidade de elemento pequeno." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Comprimento máximo do elemento pequeno" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Os contornos do elemento com um comprimento inferior a este serão impressos à Velocidade de elemento pequeno." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Velocidade de elemento pequeno" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Os elementos pequenos serão impressos a esta percentagem da respetiva velocidade de impressão normal. Uma impressão mais lenta pode ajudar em termos de" +" aderência e precisão." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Velocidade da camada inicial de partes pequenas" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Os elementos pequenos na primeira camada serão impressos a esta percentagem da respetiva velocidade de impressão normal. Uma impressão mais lenta pode" +" ajudar em termos de aderência e precisão." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5871,6 +6470,241 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matriz de transformação a ser aplicada ao modelo quando abrir o ficheiro." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamanho mínimo da área para polígonos da interface de suporte. Os polígonos com uma área inferior a este valor não serão gerados." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamanho mínimo da área para os tetos de suporte. Os polígonos com uma área inferior a este valor não serão gerados." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamanho mínimo da área para os pisos de suporte. Os polígonos com uma área inferior a este valor não serão gerados." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Alternar Rotação Revestimento" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Alterna a direção na qual as camadas superiores/inferiores são impressas. Geralmente, estas são impressas apenas na diagonal. Esta definição adiciona também as direções só em X e só em Y." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Desvio de extrusão máximo de compensação da taxa de fluxo" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "A distância máxima em milímetros a ser compensada." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Fator de compensação da taxa de fluxo" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "O fator de multiplicação da taxa de fluxo -> translação de distância." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Limiar das camadas adaptáveis" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "O limiar em que se deve usar, ou não, uma menor espessura de camada. Este número é comparado com a tangente da inclinação mais acentuada numa camada." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "As paredes que se salientam mais do que este ângulo serão impressas utilizando definições de parede de saliências. Quando o valor é 90, nenhuma parede será tratada como saliente." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Os elementos pequenos serão impressos a esta percentagem da velocidade de impressão normal. A impressão mais lenta poderá contribuir para uma maior aderência e precisão." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Velocidade da primeira camada" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Os elementos pequenos da primeira camada serão impressos a esta percentagem da velocidade de impressão normal. A impressão mais lenta poderá contribuir para uma maior aderência e precisão." + +# O objetivo é derreter mais o plástico das superfícies superiores, criando uma superfície mais uniforme. +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Passar com o nozzle uma vez mais, sobre as superfícies superiores, mas sem extrudir material. O objetivo é criar superfícies mais suaves/lisas, ao derreter (\"engomar\") o plástico das superfícies superiores." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Começar Camadas Mesmo Objecto" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Em cada camada, começar a imprimir o objeto perto do mesmo ponto, para não se começar a imprimir uma nova camada com a peça com a qual se terminou a camada anterior. O que resulta em melhores impressões de saliências e de pequenos objectos, mas aumenta o tempo de impressão." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Orientação do padrão de enchimento para suportes. O padrão de enchimento do suporte gira no plano horizontal." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "O desvio máximo permitido ao reduzir a resolução da definição de Resolução máxima. Se aumentar esta definição, a impressão será menos precisa, mas o G-code será inferior." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Variante de G-code" + +# rever! +# torna mais provável que esta surja num canto +# aconteça? surja? apareça? +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Controla se os cantos do contorno do modelo influenciam a posição da junta. Nenhum significa que os cantos não influenciam a posição da junta. Ocultar Junta faz com que seja mais provável que a junta surja num canto interior. Expor Junta faz com que seja mais provável que a junta aconteça num canto exterior. Ocultar ou Expor Junta faz com que seja mais provável que a junta aconteça num canto interior ou exterior." + +# rever! +# gaps? Espaços? intervalos? folgas? +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ignorar Pequenos Espaços Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Quando o modelo tem pequenos espaços verticais, cerca de mais 5% de tempo de cálculo pode ser despendido na criação das superfícies de revestimentos superior e inferior nestes pequenos espaços. Nesse caso desative esta definição." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "A temperatura utilizada para o volume de construção. Se for 0, a temperatura do volume de construção não será ajustada." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Eliminar a retração quando o movimento de suporte para suporte é em linha recta. Ativar esta definição reduz o tempo de impressão, mas pode levar a que aja um excessivo numero de fios nas estruturas de suporte." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Velocidade Z máxima" + +# a que a base de construção é movida. Defini-la como zero +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "A velocidade máxima do movimento da base de construção. Definir esta como zero faz com que a impressão utilize as predefinições de firmware para a velocidade Z máxima." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "A distância máxima entre as estruturas de suporte nas direções X/Y. Quando a distância entre as estruturas de suporte for menor do que este valor, as estruturas fundem-se numa só." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Diâmetro mínimo" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "O diâmetro mínimo nas direções X/Y de uma pequena área que deverá ser suportada por uma torre de suporte especializada." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Torre de preparação circular" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Faça a torre de preparação como uma forma circular." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Suaviza os contornos, criados pelo \"Spiralize\", para reduzir a visibilidade da junta Z (a junta Z deve ser praticamente imperceptível na impressão, mas continuará a ser visível na visualização por camadas). Ter em conta que a suavização tenderá a reduzir/desfocar pequenos detalhes da superfície." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Funcionalidade experimental: torna as áreas de suporte mais reduzidas na parte inferior do que na saliência." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "O numero de Extrusores que estão activos" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Diâmetro externo do nozzle" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Comprimento do nozzle" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Ângulo do nozzle" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Comprimento da zona de aquecimento" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Velocidade de aquecimento" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Velocidade de arrefecimento" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "Variante de G-code" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "Áreas não permitidas" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Polígono da cabeça da máquina" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Polígono da cabeça e ventilador da máquina" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Altura do pórtico" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Desviar com Extrusor" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "Camadas Adaptáveis" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "Variação Máxima Camadas Adaptáveis" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "Variação Degraus Camadas Adaptáveis" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "Limiar Camadas Adaptáveis" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "A sobreposição entre o revestimento e as paredes, como percentagem do diâmetro da linha do revestimento. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Esta é uma percentagem da média dos diâmetros das linhas de revestimento e da parede mais interior." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "A distância em milímetros da sobreposição entre o revestimento e as paredes. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "A quantidade de retração: defina como 0 para não obter qualquer retração. Normalmente, esta deve ser a mesma que o comprimento da zona de aquecimento." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "Combing mantém o bocal em áreas já impressas durante a deslocação. Isto resulta em movimentos de deslocação ligeiramente mais longos, mas reduz a necessidade de retrações. Se o combing estiver desativado, o material será retraído e o bocal irá deslocar-se em linha reta para o próximo ponto. Também é possível evitar o combing em áreas de revestimento superiores/inferiores e também apenas efetuar o combing no enchimento. Observe que a opção \"No enchimento\" tem o mesmo comportamento que a opção \"Não no Revestimento\" em versões anteriores do Cura." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "Ligar caminhos de revestimento superiores/inferiores quando as trajetórias são paralelas. Para o padrão concêntrico, ativar esta definição reduz consideravelmente o tempo de deslocação mas, uma vez que as ligações podem suceder num ponto intermediário sobre o enchimento, esta funcionalidade pode reduzir a qualidade da superfície superior." diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index c5fe8b331f..a8bab05fd7 100644 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-11-06 15:29+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Ruslan Popov , Russian \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Russian , Ruslan Popov , Russian \n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.3\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Параметры принтера" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Файл G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "Средство записи G-кода (GCodeWriter) не поддерживает нетекстовый режим." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Подготовьте G-код перед экспортом." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Помощник по 3D-моделям" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,66 +70,50 @@ msgstr "" "

    Узнайте, как обеспечить максимально возможное качество и высокую надежность печати.

    \n" "

    Ознакомиться с руководством по качеству печати

    " -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Показать журнал изменений" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Обновить прошивку" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Сбросить текущие параметры к стандартным значениям" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Файл AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Профиль был нормализован и активирован." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Печать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Печатать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Печатать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Подключено через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Выполняется печать через USB, закрытие Cura остановит эту печать. Вы уверены?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Файл X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Печать еще выполняется. Cura не может начать другую печать через USB, пока предыдущая печать не будет завершена." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Записывает X3g в файлы" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Файл X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Идет печать" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -143,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "Средство записи G-кода с расширением GZ (GCodeGzWriter) не поддерживает текстовый режим." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Пакет формата Ultimaker" @@ -164,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Сохранить на внешний носитель {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Ни один из форматов файлов не доступен для записи!" @@ -201,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Невозможно сохранить на внешний носитель {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Ошибка" @@ -232,8 +217,9 @@ msgstr "Извлекает внешний носитель {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Внимание" @@ -260,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Внешний носитель" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Печать через сеть" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Печать через сеть" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Подключен по сети." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Подключен по сети. Пожалуйста, подтвердите запрос на принтере." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Подключен по сети. Нет доступа к управлению принтером." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Запрошен доступ к принтеру. Пожалуйста, подтвердите запрос на принтере" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Состояние аутентификации" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "Состояние аутентификации" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Повторить" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Послать запрос доступа ещё раз" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Доступ к принтеру получен" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "Нет доступа к использованию этого принтера. Невозможно отправить задачу на печать." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Запросить доступ" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Отправить запрос на доступ к принтеру" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "Не удалось начать новое задание печати." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Возникла проблема конфигурации Ultimaker, из-за которой невозможно начать печать. Перед продолжением работы решите возникшую проблему." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Несовпадение конфигурации" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Вы уверены, что желаете печатать с использованием выбранной конфигурации?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Есть несовпадение между конфигурацией или калибровкой принтера и Cura. Для лучшего результата, всегда производите слайсинг для PrintCore и материала, которые установлены в вашем принтере." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "Отправка новых заданий (временно) заблокирована, идёт отправка предыдущего задания." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Отправка данных на принтер" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Отправка данных" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Отмена" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "Модуль экструдера PrintCore не загружен в слот {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "Материал не загружен в слот {slot_number}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "Другой модуль экструдера PrintCore (Cura: {cura_printcore_name}, принтер: {remote_printcore_name}) выбран для экструдера {extruder_id}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Разный материал (Cura: {0}, Принтер: {1}) выбран для экструдера {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Синхронизация с вашим принтером" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Желаете использовать текущую конфигурацию принтера в Cura?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Модуль PrintCore и/или материал в вашем принтере отличается от тех, что вы используете в текущем проекте. Для наилучшего результата всегда указывайте правильный модуль PrintCore и материалы, которые вставлены в ваш принтер." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Подключен по сети" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "Задание печати успешно отправлено на принтер." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Данные отправлены" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Просмотр на мониторе" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} завершил печать '{job_name}'." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "Задание печати '{job_name}' выполнено." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Печать завершена" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Подключиться через сеть" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Печать через сеть" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Печать через сеть" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Подключен по сети" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Дождитесь окончания отправки текущего задания." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Ошибка печати" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Обнаружены новые облачные принтеры" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Обнаружены новые принтеры, подключенные к вашей учетной записи; вы можете найти их в списке обнаруженных принтеров." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Больше не показывать это сообщение" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Вы пытаетесь подключиться к {0}, но это не главный принтер группы. Откройте веб-страницу, чтобы настроить его в качестве главного принтера группы." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Не главный принтер группы" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Настроить группу" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Отправляйте и отслеживайте задания печати из любого места с помощью вашей учетной записи Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Подключиться к облаку Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Приступить" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Отправка задания печати" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Загрузка задания печати в принтер." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Задание печати успешно отправлено на принтер." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Данные отправлены" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Вы пытаетесь подключиться к принтеру, на котором не работает Ultimaker Connect. Обновите прошивку принтера до последней версии." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Обновите свой принтер" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura обнаружены профили материалов, которые пока не установлены в главном принтере группы {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Отправка материалов на принтер" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Облако не залило данные на принтер." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Ошибка сети" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "завтра" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "сегодня" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Печать через облако" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Печать через облако" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Подключено через облако" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Монитор" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Не могу получить информацию об обновлениях." @@ -507,22 +425,28 @@ msgctxt "@action:button" msgid "How to update" msgstr "Порядок обновления" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Просмотр слоёв" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura не аккуратно отображает слои при использовании печати через кабель" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Вид моделирования" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "Пост-обработка" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" msgstr "Изменить G-код" @@ -536,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "Создание объема без печати элементов поддержки." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura собирает анонимизированную статистику об использовании." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "Сбор данных" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "Дополнительно" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Ознакомьтесь с дополнительной информацией о данных, отправляемых Cura." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "Разрешить" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Разрешить Cura отправлять анонимизированную статистику об использовании, чтобы помочь назначить приоритеты будущим улучшениям в Cura. Отправлены некоторые ваши настройки и параметры, включая версию Cura и хэш моделей, разделяемых на слои." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -596,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF изображение" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Невозможно нарезать модель, используя текущий материал, так как он несовместим с выбранной машиной или конфигурацией." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "Невозможно нарезать" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Не могу выполнить слайсинг на текущих настройках. Проверьте следующие настройки: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Не удалось выполнить слайсинг из-за настроек модели. Следующие настройки ошибочны для одной или нескольких моделей: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Слайсинг невозможен, так как черновая башня или её позиция неверные." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "Невозможно разделить на слои из-за наличия объектов, связанных с отключенным экструдером %s." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Нечего нарезать, так как ни одна модель не попадает в объём принтера. Пожалуйста, отмасштабируйте или поверните модель." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "Нечего нарезать, так как ни одна модель не попадает в объем принтера либо она назначена отключенному экструдеру. Отмасштабируйте/поверните модели либо включите экструдер." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "Обработка слоёв" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Информация" @@ -660,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Правка параметров модели" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Рекомендованная" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Своя" @@ -678,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Файл 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Сопло" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Файл проекта {0} содержит неизвестный тип принтера {1}. Не удалось импортировать принтер. Вместо этого будут импортированы модели." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Открыть файл проекта" @@ -705,22 +627,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Файл G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Обработка G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Параметры G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Перед отправкой G-code на принтер удостоверьтесь в его соответствии вашему принтеру и его настройкам. Возможны неточности в G-code." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "Управление резервными копиями" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "Резервное копирование" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "При составлении списка ваших резервных копий возникла ошибка." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "При попытке восстановления данных из резервной копии возникла ошибка." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "Резервные копии" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "Выполняется заливка вашей резервной копии..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "При заливке вашей резервной копии возникла ошибка." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "Заливка вашей резервной копии завершена." + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -742,330 +707,451 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "Ошибка в ходе записи файла 3MF." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "Предварительный просмотр" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Выбор обновлений" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Проверка" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Выравнивание стола" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Внешняя стенка" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Внутренние стенки" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Покрытие" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Заполнение" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Заполнение поддержек" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Связующий слой поддержек" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Поддержки" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Юбка" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Перемещение" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Откаты" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Другое" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Предообратка файла {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "Вход не выполнен" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Не поддерживается" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Файл уже существует" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Файл {0} уже существует. Вы уверены, что желаете перезаписать его?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Не переопределен" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Выбранный материал несовместим с выбранным принтером или конфигурацией." +msgid "Invalid file URL:" +msgstr "Неправильный URL-адрес файла:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Несовместимый материал" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Настройки изменены в соответствии с текущей доступностью экструдеров:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "Настройки изменены в соответствии с текущей доступностью экструдеров: [%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Настройки обновлены" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "Экструдер (-ы) отключен (-ы)" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Неизвестно" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Невозможно экспортировать профиль в {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Невозможно экспортировать профиль в {0}: Плагин записи уведомил об ошибке." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Экспортирование профиля в {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Экспорт успешно завершен" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "Невозможно импортировать профиль из {0}: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "Не удалось импортировать профиль из {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "Невозможно импортировать профиль из {0}, пока не добавлен принтер." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Отсутствует собственный профиль для импорта в файл {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Не удалось импортировать профиль из {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Данный профиль {0} содержит неверные данные, поэтому его невозможно импортировать." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "Принтер, заданный в профиле {0} ({1}), не совпадает с вашим текущим принтером ({2}), поэтому его невозможно импортировать." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Не удалось импортировать профиль из {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Успешно импортирован профиль {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "В файле {0} нет подходящих профилей." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Профиль {0} имеет неизвестный тип файла или повреждён." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Собственный профиль" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "У профайла отсутствует тип качества." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Невозможно найти тип качества {0} для текущей конфигурации." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Внешняя стенка" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Внутренние стенки" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Покрытие" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Заполнение" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Заполнение поддержек" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Связующий слой поддержек" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Поддержки" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Юбка" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "Черновая башня" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Перемещение" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Откаты" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Другое" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Предообратка файла {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "Следующий" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "Группа #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "Подключенные к сети принтеры" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Закрыть" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "Локальные принтеры" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Добавить" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Отмена" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Визуальный" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Визуальный профиль предназначен для печати визуальных прототипов и моделей, для которых требуется высокое качество поверхности и внешнего вида." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Инженерный профиль предназначен для печати функциональных прототипов и готовых деталей, для которых требуется высокая точность и малые допуски." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Черновой" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Черновой профиль предназначен для печати начальных прототипов и проверки концепции, где приоритетом является скорость печати." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Не переопределен" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Собственные профили" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Все поддерживаемые типы ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Все файлы (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Собственный материал" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Своё" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Перечисленные ниже принтеры невозможно подключить, поскольку они входят в состав группы" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Доступные сетевые принтеры" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Высота печатаемого объёма была уменьшена до значения параметра \"Последовательность печати\", чтобы предотвратить касание портала за напечатанные детали." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Объём печати" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "Не удалось создать архив из каталога с данными пользователя: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "Резервное копирование" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "Попытка восстановить резервную копию Cura при отсутствии необходимых данных или метаданных." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "Попытка восстановить резервную копию Cura, не совпадающую с вашей текущей версией." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "Выполнена попытка восстановить резервную копию Cura с более поздней версией, чем текущая." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "Не удалось прочитать ответ." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Нет связи с сервером учетных записей Ultimaker." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Дайте необходимые разрешения при авторизации в этом приложении." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Возникла непредвиденная ошибка при попытке входа в систему. Повторите попытку." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Размножение и размещение объектов" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "Размещение объекта" +msgid "Placing Objects" +msgstr "Размещение объектов" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Невозможно разместить все объекты внутри печатаемого объёма" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "Размещение объекта" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Поиск места для новых объектов" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "Поиск места" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Не могу найти место" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Не удалось запустить Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1080,32 +1166,32 @@ msgstr "" "

    Отправьте нам этот отчет о сбое для устранения проблемы.

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "Отправить отчет о сбое в Ultimaker" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "Показать подробный отчет о сбое" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "Показать конфигурационный каталог" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "Резервное копирование и сброс конфигурации" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Отчёт о сбое" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" @@ -1116,321 +1202,285 @@ msgstr "" "

    Нажмите кнопку «Отправить отчет», чтобы автоматически опубликовать отчет об ошибке на наших серверах

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "Информация о системе" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Неизвестно" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Версия Cura" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "Платформа" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Версия Qt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "Версия PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "Еще не инициализировано
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • Версия OpenGL: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • Поставщик OpenGL: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • Средство визуализации OpenGL: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "Обратное отслеживание ошибки" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "Журналы" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "Описание пользователя" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "Пользовательское описание (примечание: по возможности пишите на английском языке, так как разработчики могут не знать вашего языка)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Отправить отчёт" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Загрузка принтеров..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Настройка параметров..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Настройка сцены..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Загрузка интерфейса..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f мм" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Только один G-code файла может быть загружен в момент времени. Пропускаю импортирование {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Невозможно открыть любой другой файл, если G-code файл уже загружен. Пропускаю импортирование {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Выбранная модель слишком мала для загрузки." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Параметры принтера" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Принтер" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Параметры принтера" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (Ширина)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "мм" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Глубина)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Высота)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Форма стола" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "Начало координат в центре" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "Нагреваемый стол" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "Подогреваемый объем печати" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "Вариант G-кода" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Параметры головы" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X минимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Расстояние от левого края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y минимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Расстояние от переднего края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X максимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Расстояние от правого края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y максимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Расстояние от заднего края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Высота портала" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "Разница в высоте от кончика сопла до портала (по осям X и Y). Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Количество экструдеров" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "Стартовый G-код" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "Команды в G-коде, которые будут выполнены в самом начале." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "Завершающий G-код" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "Команды в G-коде, которые будут выполнены в самом конце." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Принтер" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "Параметры сопла" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Диаметр сопла" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Диаметр совместимого материала" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Номинальный диаметр материала, поддерживаемый принтером. Точный диаметр будет указан в материале и/или в профиле." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "Смещение сопла по оси X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Смещение сопла по оси Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Номер охлаждающего вентилятора" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "Стартовый G-код экструдера" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Завершающий G-код экструдера" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "Установить" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Установлено" @@ -1440,69 +1490,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Не удалось подключиться к базе данных пакета Cura. Проверьте свое подключение." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "оценки" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Плагины" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Материалы" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "Ваша оценка" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "Версия" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "Последнее обновление" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "Автор" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "Загрузки" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Неизвестно" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "Для выполнения установки или обновления необходимо войти" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "Приобретение катушек с материалом" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "Обновить" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "Обновление" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "Обновлено" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "Панель инструментов" +msgid "Marketplace" +msgstr "Магазин" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1529,52 +1592,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "Профили" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "Подтвердить" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "Для оценивания необходимо войти в систему" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "Для оценивания необходимо установить пакет" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "Вам потребуется перезапустить Cura для активации изменений в пакетах." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Выйти из Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Вклад в развитие сообщества" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Плагины сообщества" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Универсальные материалы" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "Установлено" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "Установка выполнится при перезагрузке" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "Для выполнения обновления необходимо войти" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "Переход на более раннюю версию" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "Удалить" @@ -1595,12 +1673,12 @@ msgstr "" "Чтобы установить этот плагин, необходимо принять условия лицензии.\n" "Принять приведенные ниже условия?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Принять" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Отклонить" @@ -1610,22 +1688,62 @@ msgctxt "@label" msgid "Featured" msgstr "Рекомендуемые" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Совместимость" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Принтер" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Рабочий стол" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Поддержки" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Качество" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "Таблица технических характеристик" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "Паспорт безопасности" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "Инструкции по печати" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "Веб-сайт" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "Выборка пакетов..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "Веб-сайт" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "Электронная почта" @@ -1635,23 +1753,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "С этой печатью могут быть связаны некоторые проблемы. Щелкните для просмотра советов по регулировке." -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Журнал изменений" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Закрыть" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1727,426 +1828,506 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Обновление прошивки не удалось из-за её отсутствия." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "Пользовательское соглашение" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Управление принтером" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Текущее подключение" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Стекло" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "Этот принтер/группа уже добавлен (-а) в Cura. Выберите другой (-ую) принтер/группу." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Для удаленного управления очередью необходимо обновить программное обеспечение принтера." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "Веб-камера недоступна, поскольку вы отслеживаете облачный принтер." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "Загрузка..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "Недоступен" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "Недостижимо" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "Простой" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "Без имени" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "Анонимн" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "Необходимо внести изменения конфигурации" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "Подробности" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "Недоступный принтер" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "Первое доступное" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "Запланировано" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "Управление через браузер" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "В очереди нет заданий печати. Выполните нарезку и отправьте задание." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "Задания печати" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "Общее время печати" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "Ожидание" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Подключение к сетевому принтеру" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"Для печати на вашем принтере через сеть, пожалуйста, удостоверьтесь, что ваш принтер подключен к сети с помощью кабеля или через WiFi. Если вы не подключили Cura к вашему принтеру, вы по-прежнему можете использовать USB флешку для переноса G-Code файлов на ваш принтер.\n" -"\n" -"Укажите ваш принтер в списке ниже:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Для печати непосредственно на принтере через сеть необходимо подключить принтер к сети с помощью сетевого кабеля или подключить его к сети Wi-Fi. Если вы не подключили Cura к принтеру, вы можете использовать USB-накопитель для переноса файлов G-Code на принтер." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Добавить" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Выберите свой принтер из приведенного ниже списка:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Правка" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Удалить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Обновить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Если ваш принтер отсутствует в списке, обратитесь к руководству по решению проблем с сетевой печатью" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Тип" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Версия прошивки" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Адрес" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Данный принтер не настроен для управления группой принтеров." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Данный принтер управляет группой из %1 принтера (-ов)." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Принтер по этому адресу ещё не отвечал." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Подключить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Недействительный IP-адрес" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "Введите действительный IP-адрес." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Адрес принтера" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Введите IP-адрес принтера или его имя в сети." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "Введите IP-адрес принтера в сети." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Печать" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Печать через сеть" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "Выбор принтера" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "Недоступно" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "Недостижимо" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "Доступен" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "Прервано" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Завершено" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "Подготовка" +msgid "Preparing..." +msgstr "Подготовка..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "Приостановка" +msgid "Aborting..." +msgstr "Прерывается..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "Возобновляется" +msgid "Pausing..." +msgstr "Приостановка..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "Приостановлено" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "Возобновляется..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Необходимое действие" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 -msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "Ожидание: недоступный принтер" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "Завершение %1 в %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "Ожидание: первое доступное" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Печать через сеть" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "Ожидание: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "Изменение конфигурации" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "Для назначенного принтера %1 требуются следующие изменения конфигурации:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "Принтер %1 назначен, однако в задании указана неизвестная конфигурация материала." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "Изменить материал %1 с %2 на %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "Загрузите %3 как материал %1 (переопределение этого действия невозможно)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "Изменить экструдер %1 с %2 на %3." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "Заменить рабочий стол на %1 (переопределение этого действия невозможно)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "Переопределить" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "Начало задания печати с несовместимой конфигурацией может привести к повреждению 3D-принтера. Действительно переопределить конфигурацию и печатать %1?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "Переопределить конфигурацию и начать печать" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "Стекло" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "Алюминий" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "Управление очередью" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "Запланировано" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" msgstr "Печать" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "Управление принтерами" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 +msgctxt "@label" +msgid "Printer selection" +msgstr "Выбор принтера" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "Переместить в начало" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "Удалить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "Продолжить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "Приостановка..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "Возобновляется..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "Пауза" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "Прерывается..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "Прервать" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "Вы уверены, что хотите переместить %1 в начало очереди?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "Переместить задание печати в начало очереди" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "Вы уверены, что хотите удалить %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "Удалить задание печати" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "Вы уверены, что хотите прервать %1?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Прервать печать" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Подключение к принтеру" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "Изменения конфигурации" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Активировать конфигурацию" +msgid "Override" +msgstr "Переопределить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Загрузка конфигурации принтера в Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "Для назначенного принтера %1 требуется следующее изменение конфигурации:" +msgstr[1] "Для назначенного принтера %1 требуются следующие изменения конфигурации:" +msgstr[2] "Для назначенного принтера %1 требуются следующие изменения конфигурации:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "Принтер %1 назначен, однако в задании указана неизвестная конфигурация материала." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "Изменить материал %1 с %2 на %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "Загрузите %3 как материал %1 (переопределение этого действия невозможно)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "Изменить экструдер %1 с %2 на %3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "Заменить рабочий стол на %1 (переопределение этого действия невозможно)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "При переопределении к имеющейся конфигурации принтера будут применены указанные настройки. Это может привести к ошибке печати." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "Алюминий" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"Проверьте наличие подключения к принтеру:\n" +"- Убедитесь, что принтер включен.\n" +"- Убедитесь, что принтер подключен к сети.\n" +"- Убедитесь, что вы вошли в систему (это необходимо для поиска принтеров, подключенных к облаку)." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "Подключите принтер к сети." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "Просмотр руководств пользователей онлайн" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Цветовая схема" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Цвет материала" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Тип линии" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Скорость подачи" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Толщина слоя" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Режим совместимости" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "Показать движения" +msgid "Travels" +msgstr "Перемещения" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "Показать поддержку" +msgid "Helpers" +msgstr "Помощники" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "Показать стенки" +msgid "Shell" +msgstr "Ограждение" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "Показать заполнение" +msgid "Infill" +msgstr "Заполнение" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Показать только верхние слои" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Показать 5 детализированных слоёв сверху" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Дно / крышка" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "Внутренняя стенка" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "мин." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "макс." @@ -2161,40 +2342,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Скрипты пост-обработки" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Добавить скрипт" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Изменить активные скрипты пост-обработки" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "Дополнительная информация о сборе анонимных данных" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura отправляет анонимные данные в Ultimaker для повышения качества печати и взаимодействия с пользователем. Ниже приведен пример всех отправляемых данных." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura собирает анонимные данные для повышения качества печати и улучшения взаимодействия с пользователем. Ниже приведен пример всех передаваемых данных:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "Не хочу отправлять описанные данные" +msgid "I don't want to send anonymous data" +msgstr "Не хочу отправлять анонимные данные" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Разрешить отправку описанных данных в Ultimaker для улучшения Cura" +msgid "Allow sending anonymous data" +msgstr "Разрешить отправку анонимных данных" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2243,19 +2424,19 @@ msgstr "Глубина (мм)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "По умолчанию, светлые пиксели представлены высокими точками на объекте, а тёмные пиксели представлены низкими точками на объекте. Измените эту опцию для изменения данного поведения, таким образом тёмные пиксели будут представлены высокими точками, а светлые - низкими." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Светлые выше" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "Для литофании темные пиксели должны соответствовать более толстым частям, чтобы сильнее задерживать проходящий свет. Для схем высот более светлые пиксели обозначают более высокий участок. Поэтому более светлые пиксели должны соответствовать более толстым местам в созданной 3D-модели." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Тёмные выше" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Светлые выше" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2266,81 +2447,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Сглаживание" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Тип объекта" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Нормальная модель" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Печать в качестве поддержки" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Не поддерживать перекрытие с другими моделями" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Изменять настройки для перекрытия с другими моделями" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Изменять настройки для заполнения других моделей" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Выберите параметры" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Выберите параметр для изменения этой модели" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Фильтр..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Показать всё" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Тип объекта" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Нормальная модель" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Печать в качестве поддержки" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Изменить настройки для перекрытий" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Не поддерживать перекрытия" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Только заполнение" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Выберите параметры" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Открытие проекта" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Обновить существующий" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Создать новый" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Сводка - Проект Cura" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Параметры принтера" @@ -2356,20 +2536,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Обновить" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Создать новый" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Тип" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "Группа принтеров" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Параметры профиля" @@ -2380,21 +2565,27 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Как следует решать конфликт в профиле?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Название" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Вне профиля" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2402,12 +2593,12 @@ msgstr[0] "%1 перекрыт" msgstr[1] "%1 перекрыто" msgstr[2] "%1 перекрыто" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Производное от" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" @@ -2415,193 +2606,183 @@ msgstr[0] "%1, %2 перекрыто" msgstr[1] "%1, %2 перекрыто" msgstr[2] "%1, %2 перекрыто" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Параметры материала" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Как следует решать конфликт в материале?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Видимость параметров" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Режим" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Видимые параметры:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 из %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Загрузка проекта приведет к удалению всех моделей на рабочем столе." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Открыть" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Выбор компонентов для обновления" +msgid "My Backups" +msgstr "Мои резервные копии" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Пожалуйста, укажите любые изменения, внесённые в Ultimaker 2." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "В данный момент у вас отсутствуют резервные копии. Для создания резервной копии нажмите кнопку «Создать резервную копию»." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Блок Олссона" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "На этапе предварительного просмотра отображается только 5 резервных копий. Для просмотра предыдущих резервных копий удалите одну копию." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Резервное копирование и синхронизация ваших параметров Cura." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "Войти" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Резервные копии Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Версия Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "Принтеры" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "Материалы" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "Профили" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "Плагины" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "Восстановить" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "Удалить резервную копию" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "Вы уверены, что хотите удалить указанную резервную копию? Данное действие невозможно отменить." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "Восстановить резервную копию" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "Вам потребуется перезапустить Cura, прежде чем данные будут восстановлены из резервной копии. Вы действительно хотите закрыть Cura прямо сейчас?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "Желаете большего?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "Создать резервную копию" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "Автоматическое резервное копирование" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Автоматически создавать резервную копию в день запуска Cura." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Выравнивание стола" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Сейчас вы можете отрегулировать ваш стол, чтобы быть уверенным в качестве последующей печати. При нажатии на кнопку «Перейти к следующей позиции» сопло перейдёт на другую позиции, которую можно будет отрегулировать." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Для каждой позиции, вставьте кусок бумаги под сопло и отрегулируйте высоту стола. Когда кончик сопла немного прижимает бумагу к столу, значит вы выставили правильную высоту стола." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Начало выравнивания стола" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Перейти к следующей позиции" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Пожалуйста, укажите любые изменения, внесённые в Ultimaker Original" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "Нагреваемый стол (официальный набор или самодельный)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Проверка принтера" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "Хорошей идеей будет выполнить несколько проверок вашего Ultimaker. Вы можете пропустить этот шаг, если уверены в функциональности своего принтера" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Начать проверку принтера" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Соединение: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Подключен" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Не подключен" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Минимальный концевик на оси X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Работает" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Не проверен" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Минимальный концевик на оси Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Минимальный концевик на оси Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Проверка температуры сопла: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Завершение нагрева" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Начало нагрева" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Проверка температуры стола:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Проверена" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Всё в порядке! Проверка завершена." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2613,7 +2794,6 @@ msgid "Printer does not accept commands" msgstr "Принтер не принимает команды" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "В режиме обслуживания. Пожалуйста, проверьте принтер" @@ -2624,19 +2804,16 @@ msgid "Lost connection with the printer" msgstr "Потеряно соединение с принтером" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Печать..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Приостановлен" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Подготовка..." @@ -2656,235 +2833,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Вы уверены, что желаете прервать печать?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Сбросить или сохранить изменения" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"Вы изменили некоторые параметры профиля.\n" -"Желаете сохранить их или вернуть к прежним значениям?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Параметры профиля" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "По умолчанию" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Свой" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Всегда спрашивать меня" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Сбросить и никогда больше не спрашивать" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Сохранить и никогда больше не спрашивать" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Сбросить" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Сохранить" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Создать новый профиль" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Информация" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Подтвердить изменение диаметра" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Установлен новый диаметр пластиковой нити %1 мм. Это значение несовместимо с текущим экструдером. Продолжить?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Отображаемое имя" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Брэнд" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Тип материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Цвет" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Свойства" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Плотность" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Диаметр" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Стоимость материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Вес материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Длина материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Стоимость метра" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Данный материал привязан к %1 и имеет ряд его свойств." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Отвязать материал" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Описание" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Информация об адгезии" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Параметры печати" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Активировать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Создать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Дублировать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Импорт" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Экспорт" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Принтер" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Подтвердите удаление" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Вы уверены, что желаете удалить %1? Это нельзя будет отменить!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Импортировать материал" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Не могу импортировать материал %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Успешно импортированный материал %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Экспортировать материал" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Не могу экспортировать материал %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Материал успешно экспортирован в %1" @@ -2894,669 +3012,521 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Видимость параметров" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Выбрать все" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Вычислено" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Параметр" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Текущий" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Единица" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Общее" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Интерфейс" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Язык:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Валюта:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Тема:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Для применения данных изменений вам потребуется перезапустить приложение." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Нарезать автоматически при изменении настроек." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Нарезать автоматически" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Поведение окна" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Подсвечивать красным области модели, требующие поддержек. Без поддержек эти области не будут напечатаны правильно." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Отобразить нависания" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Перемещать камеру так, чтобы выбранная модель помещалась в центр экрана" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Центрировать камеру на выбранном объекте" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Следует ли инвертировать стандартный способ увеличения в Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Инвертировать направление увеличения камеры." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Увеличивать по мере движения мышкой?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "В ортогональной проекции изменение масштаба мышью не поддерживается." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Увеличивать по движению мышки" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Следует ли размещать модели на столе так, чтобы они больше не пересекались?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Удостовериться, что модели размещены рядом" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Следует ли опустить модели на стол?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Автоматически опускать модели на стол" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Показывать предупреждающее сообщение в средстве считывания G-кода." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Предупреждающее сообщение в средстве считывания G-кода" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Должен ли слой быть переведён в режим совместимости?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Просматривать слои в режиме совместимости (требуется перезапуск)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Открыть Cura на том месте, где вы остановились в прошлый раз?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Восстановить положение окна при запуске" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Рендеринг камеры какого типа следует использовать?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Рендеринг камеры:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Перспективная" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ортографическая" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Открытие и сохранение файлов" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Масштабировать ли модели для размещения внутри печатаемого объёма, если они не влезают в него?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Масштабировать большие модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Модель может показаться очень маленькой, если её размерность задана в метрах, а не миллиметрах. Следует ли масштабировать такие модели?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Масштабировать очень маленькие модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Выбрать модели после их загрузки?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Выбрать модели при загрузке" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Надо ли автоматически добавлять префикс, основанный на имени принтера, к названию задачи на печать?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Добавить префикс принтера к имени задачи" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Показывать сводку при сохранении файла проекта?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Показывать сводку при сохранении проекта" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Стандартное поведение при открытии файла проекта" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Стандартное поведение при открытии файла проекта: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Всегда спрашивать меня" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Всегда открывать как проект" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Всегда импортировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "При внесении изменений в профиль и переключении на другой, будет показан диалог, запрашивающий ваше решение о сохранении ваших изменений, или вы можете указать стандартное поведение и не показывать такой диалог." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Профили" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Поведение по умолчанию для измененных значений настройки при переключении на другой профиль: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Всегда спрашивать меня" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Всегда сбрасывать измененные настройки" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Всегда передавать измененные настройки новому профилю" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Приватность" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Должна ли Cura проверять обновления программы при старте?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Проверять обновления при старте" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Можно ли отправлять анонимную информацию о вашей печати в Ultimaker? Следует отметить, что ни модели, ни IP-адреса и никакая другая персональная информация не будет отправлена или сохранена." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Отправлять (анонимно) информацию о печати" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Дополнительная информация" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "Экспериментальное" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Использовать функционал нескольких рабочих столов" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "Использовать функционал нескольких рабочих столов (требуется перезапуск)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Принтеры" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Переименовать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Тип принтера:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Соединение:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "Принтер не подключен." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "Состояние:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "Ожидаем задание на печать" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "Ожидаем, чтобы кто-нибудь освободил стол" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Прерывание печати…" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Профили" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Создать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Дублировать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Создать профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "Укажите имя для данного профиля." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Скопировать профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Переименовать профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Импорт профиля" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Экспорт профиля" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Принтер: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Защищённые профили" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Собственные профили" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Обновить профиль текущими параметрами" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Сбросить текущие параметры" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Данный профиль использует настройки принтера по умолчанию, поэтому список ниже пуст." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Ваши текущие параметры совпадают с выбранным профилем." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Общие параметры" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Добавление принтера" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Имя принтера:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Добавить принтер" +msgid "Marketplace" +msgstr "Магазин" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "Файл" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "Правка" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "Вид" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "&Параметры" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "Расширения" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "Настройки" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "Справка" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Новый проект" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Вы действительно желаете начать новый проект? Это действие очистит область печати и сбросит все несохранённые настройки." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "Без имени" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "О Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "версия: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "Полное решение для 3D печати методом наплавления материала." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura разработана компанией Ultimaker B.V. совместно с сообществом.\n" -"Cura использует следующие проекты с открытым исходным кодом:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Графический интерфейс пользователя" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Фреймворк приложения" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "Генератор G-кода" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Библиотека межпроцессного взаимодействия" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Язык программирования" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "Фреймворк GUI" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "Фреймворк GUI, интерфейс" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "C/C++ библиотека интерфейса" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Формат обмена данными" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Вспомогательная библиотека для научных вычислений" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Вспомогательная библиотека для быстрых расчётов" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Вспомогательная библиотека для работы с STL файлами" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "Вспомогательная библиотека для работы с плоскими объектами" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "Вспомогательная библиотека для работы с треугольными сетками" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "Вспомогательная библиотека для анализа сложных сетей" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Вспомогательная библиотека для работы с 3MF файлами" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "Вспомогательная библиотека для метаданных файла и потоковой передачи" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Библиотека последовательного интерфейса" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "Библиотека ZeroConf" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Библиотека обрезки полигонов" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Библиотека Python HTTP" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Шрифт" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "Иконки SVG" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Развертывание приложений для различных дистрибутивов Linux" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Профиль:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Значения некоторых параметров отличаются от значений профиля.\n" -"\n" -"Нажмите для открытия менеджера профилей." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Поиск..." +msgid "Search settings" +msgstr "Параметры поиска" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Скопировать значение для всех экструдеров" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Копировать все измененные значения для всех экструдеров" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Спрятать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Не показывать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Оставить этот параметр видимым" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." -msgstr "Видимость параметров…" +msgstr "Видимость параметров..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "Свернуть все" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "Развернуть все" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3567,27 +3537,32 @@ msgstr "" "\n" "Щёлкните, чтобы сделать эти параметры видимыми." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "Этот параметр не используется, поскольку все параметры, на которые он влияет, переопределяются." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Влияет на" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Зависит от" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Данная настройка всегда используется совместно всеми экструдерами. Изменение данного значения приведет к изменению значения для всех экструдеров." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Значение получается из параметров каждого экструдера " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3598,7 +3573,7 @@ msgstr "" "\n" "Щёлкните для восстановления значения из профиля." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3609,116 +3584,213 @@ msgstr "" "\n" "Щёлкните для восстановления вычисленного значения." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "Рекомендован" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "Свое" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "Постепенное заполнение" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "Постепенное заполнение будет постепенно увеличивать объём заполнения по направлению вверх." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "Поддержки" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Генерация структур для поддержки нависающих частей модели. Без этих структур такие части будут складываться во время печати." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "Прилипание" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Разрешает печать каймы или подложки. Это добавляет плоскую область вокруг или под вашим объектом, которую легко удалить после печати." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "В некоторые настройки профиля были внесены изменения. Если их необходимо изменить, перейдите в пользовательский режим." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "Вкл" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "Выкл" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Экспериментальное" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "Профиль" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Значения некоторых параметров отличаются от значений профиля.\n" +"\n" +"Нажмите для открытия менеджера профилей." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Собственные профили" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "Настройка печати отключена. Невозможно изменить файл с G-кодом." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "Управление принтером" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "Положение толчковой подачи" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "Расстояние толчковой подачи" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "Отправить G-код" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "Отправить свою команду в G-коде подключенному принтеру. Нажмите Enter (Ввод) для отправки команды." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Экструдер" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Целевая температура сопла. Сопло будет нагрето или остужено до указанной температуры. Если значение равно 0, то нагрев будет отключен." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Текущая температура данного сопла." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Температура предварительного нагрева сопла." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Отмена" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Преднагрев" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Нагрев сопла перед печатью. Можно продолжать настройки вашей печати во время нагрева, и вам не понадобится ждать нагрева сопла, когда вы будете готовы приступить к печати." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Цвет материала в данном экструдере." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Материал в данном экструдере." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Сопло, вставленное в данный экструдер." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "Принтер не подключен." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Рабочий стол" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Целевая температура горячего стола. Стол будет нагреваться и охлаждаться, оставаясь на этой температуре. Если установлена в 0, значит нагрев стола отключен." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Текущая температура горячего стола." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Температура преднагрева горячего стола." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Нагрев горячего стола перед печатью. Вы можете продолжать настройки вашей печати, пока стол нагревается, и вам не понадобится ждать нагрева стола для старта печати." @@ -3728,12 +3800,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Избранные" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Универсальные" @@ -3748,17 +3820,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "Локальные принтеры" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "Вид" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "Принтер" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "Материал" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Установить как активный экструдер" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "Включить экструдер" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "Отключить экструдер" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "Положение камеры" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Вид камеры" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Перспективная" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Ортографическая" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "Рабочий стол" @@ -3776,7 +3883,22 @@ msgstr "Показывать все настройки" #: /home/ruben/Projects/Cura/resources/qml/Menus/SettingVisibilityPresetsMenu.qml:53 msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." -msgstr "Управление видимостью настроек…" +msgstr "Управление видимостью настроек..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "&Сохранить..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&Экспорт..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "Экспорт выбранного..." #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" @@ -3799,208 +3921,343 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Количество копий" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "Доступные конфигурации" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "Конфигурации" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "Экструдер" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "Выберите конфигурации" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "Да" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "Конфигурации" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "Нет" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "Загрузка доступных конфигураций из принтера..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "Конфигурации недоступны, поскольку принтер отключен." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "Свое" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "Принтер" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "Включено" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Материал" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "Использовать клей для лучшего прилипания с этой комбинацией материалов." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "Данная конфигурация недоступна, поскольку %1 не распознан. Посетите %2 и загрузите подходящий профиль материала." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "Магазин" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Открыть недавние" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Настройка печати" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"Настройка принтера отключена\n" -"G-code файлы нельзя изменять" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00 ч 00 мин" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "Настройка расчета времени" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "Настройка расчета стоимости" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1 м" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1 г" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "Итого:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Рекомендованные параметры печати

    Печатайте с рекомендованными параметрами для выбранных принтера, материала и качества." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Свои параметры печати

    Печатайте с полным контролем над каждой особенностью процесса слайсинга." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Идёт печать" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "Имя задачи" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Время печати" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Осталось примерно" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "Просмотр типа" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Список объектов" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "Приветствуем, %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Учетная запись Ultimaker" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "Выйти" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "Войти" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "Рабочий процесс трехмерной печати следующего поколения" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- Отправляйте задания печати на принтеры Ultimaker за пределами вашей локальной сети\n" +"- Храните параметры Ultimaker Cura в облаке, чтобы применять их из любого места\n" +"- Получайте эксклюзивный доступ к профилям печати от ведущих брендов" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "Создать учетную запись" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "Оценка времени недоступна" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "Оценка расходов недоступна" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "Предварительный просмотр" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "Нарезка на слои..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "Невозможно нарезать" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "Обработка" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "Нарезка на слои" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "Запустить нарезку на слои" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "Отмена" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "Оценка времени" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "Оценка материала" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 м" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 г" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "Подключенные принтеры" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "Предварительно настроенные принтеры" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "Добавить принтер" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "Управление принтерами" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "Показать онлайн-руководство по решению проблем" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Полный экран" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Выйти из полноэкранного режима" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Отмена" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "Возврат" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "Выход" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "Трехмерный вид" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "Вид спереди" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "Вид сверху" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "Вид слева" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "Вид справа" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." -msgstr "Настроить Cura…" +msgstr "Настроить Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "Добавить принтер..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Управление принтерами..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." -msgstr "Управление материалами…" +msgstr "Управление материалами..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "Обновить профиль текущими параметрами" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "Сбросить текущие параметры" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." -msgstr "Создать профиль из текущих параметров…" +msgstr "Создать профиль из текущих параметров..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Управление профилями..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Показать онлайн документацию" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Отправить отчёт об ошибке" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "Что нового" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "О Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" @@ -4008,7 +4265,7 @@ msgstr[0] "Удалить выбранную модель" msgstr[1] "Удалить выбранные модели" msgstr[2] "Удалить выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" @@ -4016,7 +4273,7 @@ msgstr[0] "Центрировать выбранную модель" msgstr[1] "Центрировать выбранные модели" msgstr[2] "Центрировать выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" @@ -4024,434 +4281,152 @@ msgstr[0] "Размножить выбранную модель" msgstr[1] "Размножить выбранные модели" msgstr[2] "Размножить выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Удалить модель" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Поместить модель по центру" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Сгруппировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Разгруппировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Объединить модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Дублировать модель..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Выбрать все модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Очистить стол" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Перезагрузить все модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "Выровнять все модели по всем рабочим столам" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Выровнять все модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Выровнять выбранные" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Сбросить позиции всех моделей" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Сбросить преобразования всех моделей" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "Открыть файл(ы)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "Новый проект..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Показать журнал движка..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Показать конфигурационный каталог" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "Обзор пакетов..." +msgid "&Marketplace" +msgstr "&Магазин" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "Развернуть/свернуть боковую панель" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Пожалуйста, загрузите 3D модель" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Готов к нарезке" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Нарезка на слои..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Готов к %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Невозможно нарезать" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Нарезка недоступна" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "Разделить на слои текущее задание на печать" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "Отмена разделения на слои" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Подготовка" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Отмена" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Выберите активное целевое устройство" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Открыть файл(ы)" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Мы нашли один или более проектных файлов среди выбранных вами. Вы можете открыть только один файл проекта. Мы предлагаем импортировать только модели их этих файлов. Желаете продолжить?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Импортировать всё как модели" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "Файл" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "&Сохранить…" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&Экспорт…" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "Экспорт выбранного…" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "Правка" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "Вид" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "Параметры" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "Принтер" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "Материал" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Установить как активный экструдер" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "Включить экструдер" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "Отключить экструдер" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "Рабочий стол" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "Профиль" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "Расширения" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "&Панель инструментов" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "Настройки" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "Справка" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Этот пакет будет установлен после перезапуска." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Открыть файл" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Новый проект" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Вы действительно желаете начать новый проект? Это действие очистит область печати и сбросит все несохранённые настройки." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Закрытие Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Вы уверены, что хотите выйти из Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Открыть файл(ы)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Установить пакет" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Открыть файл(ы)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Среди выбранных файлов мы нашли несколько файлов с G-кодом. Вы можете открыть только один файл за раз. Измените свой выбор, пожалуйста." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Сохранить проект" +msgid "Add Printer" +msgstr "Добавление принтера" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Рабочий стол" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Экструдер %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 и материал" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Больше не показывать сводку по проекту" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Сохранить" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Высота слоя" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "Этот профиль качества недоступен для вашей текущей конфигурации материала и сопла. Измените эти настройки для задействования данного профиля качества" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "В настоящее время активен пользовательский профиль. Чтобы включить ползунок качества, на вкладке «Пользовательские» выберите профиль качества по умолчанию" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Скорость печати" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Медленнее" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Быстрее" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "В некоторые настройки профиля были внесены изменения. Если их необходимо изменить, перейдите в пользовательский режим." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Заполнение" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Постепенное заполнение будет постепенно увеличивать объём заполнения по направлению вверх." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Постепенное" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Генерация поддержек" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Генерация структур для поддержки нависающих частей модели. Без этих структур такие части будут складываться во время печати." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Выбирает, какой экструдер следует использовать для поддержек. Будут созданы поддерживающие структуры под моделью для предотвращения проседания краёв или печати в воздухе." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Тип прилипания к столу" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Разрешает печать каймы или подложки. Это добавляет плоскую область вокруг или под вашим объектом, которую легко удалить после печати." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "Требуется помощь в улучшении вашей печати?
    Обратитесь к Руководству Ultimaker по решению проблем" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "Что нового" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4461,75 +4436,503 @@ msgstr[0] "Печатать выбранную модель с %1" msgstr[1] "Печатать выбранные модели с %1" msgstr[2] "Печатать выбранные модели с %1" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Сбросить или сохранить изменения" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"Вы изменили некоторые параметры профиля.\n" +"Желаете сохранить их или вернуть к прежним значениям?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Параметры профиля" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "По умолчанию" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Свой" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Сбросить и никогда больше не спрашивать" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Сохранить и никогда больше не спрашивать" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Сбросить" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Сохранить" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Создать новый профиль" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "О Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "версия: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "Полное решение для 3D печати методом наплавления материала." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura разработана компанией Ultimaker B.V. совместно с сообществом.\n" +"Cura использует следующие проекты с открытым исходным кодом:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Графический интерфейс пользователя" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Фреймворк приложения" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "Генератор G-кода" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Библиотека межпроцессного взаимодействия" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Язык программирования" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "Фреймворк GUI" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "Фреймворк GUI, интерфейс" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C/C++ библиотека интерфейса" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Формат обмена данными" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Вспомогательная библиотека для научных вычислений" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Вспомогательная библиотека для быстрых расчётов" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Вспомогательная библиотека для работы с STL файлами" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "Вспомогательная библиотека для работы с плоскими объектами" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "Вспомогательная библиотека для работы с треугольными сетками" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "Вспомогательная библиотека для анализа сложных сетей" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Вспомогательная библиотека для работы с 3MF файлами" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "Вспомогательная библиотека для метаданных файла и потоковой передачи" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Библиотека последовательного интерфейса" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "Библиотека ZeroConf" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Библиотека обрезки полигонов" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Библиотека Python HTTP" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Шрифт" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "Иконки SVG" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Развертывание приложений для различных дистрибутивов Linux" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Мы нашли один или более проектных файлов среди выбранных вами. Вы можете открыть только один файл проекта. Мы предлагаем импортировать только модели их этих файлов. Желаете продолжить?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Импортировать всё как модели" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Сохранить проект" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Экструдер %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 и материал" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "Материал" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Больше не показывать сводку по проекту" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Сохранить" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Открыть файл проекта" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Это проект Cura. Следует открыть его как проект или просто импортировать из него модели?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Запомнить мой выбор" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Открыть как проект" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Импортировать модели" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Журнал движка" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "Тип принтера" +msgid "Empty" +msgstr "Пусто" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Материал" +msgid "Add a printer" +msgstr "Добавить принтер" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "Использовать клей с этой комбинацией материалов" +msgid "Add a networked printer" +msgstr "Добавить сетевой принтер" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "Проверить совместимость" +msgid "Add a non-networked printer" +msgstr "Добавить принтер, не подключенный к сети" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Нажмите для проверки совместимости материала на Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "Добавить принтер по IP-адресу" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Показывать только текущий рабочий стол" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Введите IP-адрес своего принтера." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Выровнять для всех рабочих столов" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Добавить" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Выровнять текущий рабочий стол" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "Не удалось подключиться к устройству." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "От принтера с этим адресом еще не поступал ответ." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "Этот принтер невозможно добавить, поскольку это неизвестный принтер либо он не управляет группой." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "Назад" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "Подключить" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "Следующий" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "Пользовательское соглашение" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "Принимаю" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "Отклонить и закрыть" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Помогите нам улучшить Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura собирает анонимные данные для повышения качества печати и улучшения взаимодействия с пользователем, включая перечисленные ниже:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "Типы принтера" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "Использование материала" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "Количество слоев" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "Параметры печати" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Данные, собранные Ultimaker Cura, не содержат каких-либо персональных данных." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "Дополнительная информация" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Что нового в Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "В вашей сети не найден принтер." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "Обновить" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "Добавить принтер по IP-адресу" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "Поиск и устранение неисправностей" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "Имя принтера" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "Присвойте имя принтеру" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "Рабочий процесс трехмерной печати следующего поколения" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- Отправляйте задания печати на принтеры Ultimaker за пределами вашей локальной сети" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Храните параметры Ultimaker Cura в облаке, чтобы применять их из любого места" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- Получайте эксклюзивный доступ к профилям печати от ведущих брендов" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "Завершить" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "Создать учетную запись" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Приветствуем в Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"Выполните указанные ниже действия для настройки\n" +"Ultimaker Cura. Это займет немного времени." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "Приступить" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Трехмерный вид" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Вид спереди" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Вид сверху" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Вид слева" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Вид справа" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4591,26 +4994,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Средство проверки моделей" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Запись содержимого всех настроек в виде HTML файла." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Режим бога" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Показывает изменения со времени последней отмеченной версии." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Журнал изменений" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4621,15 +5004,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Средство обновления прошивки" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Создаёт профиль со стандартными настройками." +msgid "Provides support for reading AMF files." +msgstr "Обеспечивает поддержку чтения файлов AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Нормализация профиля" +msgid "AMF Reader" +msgstr "Средство чтения AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -4641,26 +5024,6 @@ msgctxt "name" msgid "USB printing" msgstr "Печать через USB" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "Запрашивает согласие пользователя с условиями лицензии." - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "UserAgreement" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Разрешить сохранение результирующего слоя в формате X3G для поддержки принтеров, считывающих этот формат (Malyan, Makerbot и другие принтеры на базе Sailfish)." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4703,13 +5066,13 @@ msgstr "Плагин для работы с внешним носителем" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Управляет сетевыми соединениями с принтерами Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Управляет сетевыми соединениями с сетевыми принтерами Ultimaker 3." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Соединение с сетью UM3" +msgid "Ultimaker Network Connection" +msgstr "Соединение с сетью Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -4771,6 +5134,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Средство стирания элемента поддержки" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Предоставляет поддержку для чтения пакетов формата Ultimaker." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "Средство считывания UFP" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4831,6 +5204,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Обновление версии 3.3 до 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Обновляет конфигурации Cura 4.3 до Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Обновление версии 4.3 до 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4851,6 +5234,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Обновление версии 2.7 до 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Обновляет конфигурации Cura 3.5 до Cura 4.0." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "Обновление версии 3.5 до 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4861,6 +5254,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "Обновление версии 3.4 до 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Обновляет конфигурации Cura 4.0 до Cura 4.1." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "Обновление версии 4.0 до 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4871,6 +5274,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Обновление версии 3.0 до 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Обновляет конфигурации Cura 4.1 до Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Обновление версии 4.1 до 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4901,6 +5314,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Обновление версии 2.2 до 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Обновляет конфигурации Cura 4.2 до Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Обновление версии 4.2 до 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4911,6 +5334,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Чтение изображений" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Предоставляет поддержку для чтения файлов моделей." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Средство чтения Trimesh" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4961,6 +5394,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "Чтение G-code" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "Резервное копирование и восстановление конфигурации." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Резервные копии Cura" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4981,6 +5424,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Запись 3MF" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Обеспечивает действия на этапе предварительного просмотра в Cura." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "Этап предварительного просмотра" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -5001,9 +5454,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Чтение профиля Cura" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "Сгенерируйте G-код перед сохранением." +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Сбросить текущие параметры к стандартным значениям" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Профиль был нормализован и активирован." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Записывает X3g в файлы" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Файл X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Файл X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -5013,6 +5486,1032 @@ msgstr "Чтение профиля Cura" #~ msgid "Profile Assistant" #~ msgstr "Помощник по профилю" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Повторить" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Экструдер" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Не поддерживать перекрытие с другими моделями" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Изменять настройки для перекрытия с другими моделями" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Изменять настройки для заполнения других моделей" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Обновить существующий" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Не поддерживается" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Предыдущий" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Кончик" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Пробная печать" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Контрольный список" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Пожалуйста, укажите любые изменения, внесённые в Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Блок Олссона" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Рендеринг камеры: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Использовать функционал нескольких рабочих столов" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Использовать функционал нескольких рабочих столов (требуется перезапуск)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Профили по умолчанию" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "параметры поиска" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Высота слоя" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Этот профиль качества недоступен для вашей текущей конфигурации материала и сопла. Измените эти параметры для задействования данного профиля качества." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "В настоящее время активен пользовательский профиль. Чтобы включить ползунок качества, на вкладке «Пользовательские» выберите профиль качества по умолчанию" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "Рабочий стол" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "Профиль" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Рабочий стол" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Запись содержимого всех настроек в виде HTML файла." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Режим бога" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Создание нормализованного профиля с изменениями качества." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Нормализатор профиля" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Позволяет производителям материалов создавать новые профили материалов и качества с помощью дружественного интерфейса." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Помощник по профилю печати" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Подключен по сети." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Подключен по сети. Пожалуйста, подтвердите запрос на принтере." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Подключен по сети. Нет доступа к управлению принтером." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Запрошен доступ к принтеру. Пожалуйста, подтвердите запрос на принтере" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Состояние аутентификации" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Состояние аутентификации" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Послать запрос доступа ещё раз" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Доступ к принтеру получен" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Нет доступа к использованию этого принтера. Невозможно отправить задачу на печать." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Запросить доступ" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Отправить запрос на доступ к принтеру" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Не удалось начать новое задание печати." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Возникла проблема конфигурации Ultimaker, из-за которой невозможно начать печать. Перед продолжением работы решите возникшую проблему." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Несовпадение конфигурации" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Вы уверены, что желаете печатать с использованием выбранной конфигурации?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Есть несовпадение между конфигурацией или калибровкой принтера и Cura. Для лучшего результата, всегда производите слайсинг для PrintCore и материала, которые установлены в вашем принтере." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Отправка новых заданий (временно) заблокирована, идёт отправка предыдущего задания." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Отправка данных на принтер" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Отправка данных" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Модуль экструдера PrintCore не загружен в слот {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Материал не загружен в слот {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "Другой модуль экструдера PrintCore (Cura: {cura_printcore_name}, принтер: {remote_printcore_name}) выбран для экструдера {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Разный материал (Cura: {0}, Принтер: {1}) выбран для экструдера {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Синхронизация с вашим принтером" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Желаете использовать текущую конфигурацию принтера в Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Модуль PrintCore и/или материал в вашем принтере отличается от тех, что вы используете в текущем проекте. Для наилучшего результата всегда указывайте правильный модуль PrintCore и материалы, которые вставлены в ваш принтер." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Просмотр на мониторе" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} завершил печать '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "Задание печати '{job_name}' выполнено." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Печать завершена" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Пусто" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Неизвестн" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Ошибка облака" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Облако не экспортировало задание печати." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "При подключении к облаку возникла ошибка." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Заливка через облако Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Подключиться к облаку Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Не спрашивать меня снова для этого принтера." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Теперь вы можете отправлять и отслеживать задания печати из любого места с помощью вашей учетной записи Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Подключено!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Проверьте свое подключение" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "Принтер, заданный в профиле {0} ({1}), не совпадает с вашим текущим принтером ({2}), поэтому его невозможно импортировать." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Не удалось импортировать профиль из {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Текущее подключение" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Этот принтер/группа уже добавлен (-а) в Cura. Выберите другой (-ую) принтер/группу." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Введите IP-адрес принтера или его имя в сети." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Подключение к принтеру" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Руководство по параметрам Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "В ортогональной проекции изменение масштаба мышью не поддерживается." + +#~ msgid "Orthogonal" +#~ msgstr "Ортогональная" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Управляет сетевыми соединениями с принтерами Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Соединение с сетью UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Предоставляет дополнительную информацию и пояснения относительно параметров Cura с изображениями и анимацией." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Руководство по параметрам" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Руководство по параметрам Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Настройки изменены в соответствии с текущей доступностью экструдеров: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Описание пользователя" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Указанные опции недоступны, поскольку вы отслеживаете облачный принтер." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Перейти к Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Все задания печати выполнены." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Просмотреть архив печати" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Для печати на вашем принтере через сеть, пожалуйста, удостоверьтесь, что ваш принтер подключен к сети с помощью кабеля или через WiFi. Если вы не подключили Cura к вашему принтеру, вы по-прежнему можете использовать USB флешку для переноса G-Code файлов на ваш принтер.\n" +#~ "\n" +#~ "Укажите ваш принтер в списке ниже:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Проверьте наличие подключения к принтеру:\n" +#~ "- Убедитесь, что принтер включен.\n" +#~ "- Проверьте, подключен ли принтер к сети." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Показывать только текущий рабочий стол" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Выровнять для всех рабочих столов" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Выровнять текущий рабочий стол" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Разрешить сохранение результирующего слоя в формате X3G для поддержки принтеров, считывающих этот формат (Malyan, Makerbot и другие принтеры на базе Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Считывает файлы SVG как пути инструментов для отладки движений принтера." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Средство считывания путей инструментов SVG" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Журнал изменений" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Показать журнал изменений" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "Отправка данных на удаленный кластер" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Подключиться к Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura собирает анонимизированную статистику об использовании." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "Сбор данных" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "Дополнительно" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Ознакомьтесь с дополнительной информацией о данных, отправляемых Cura." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "Разрешить" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Разрешить Cura отправлять анонимизированную статистику об использовании, чтобы помочь назначить приоритеты будущим улучшениям в Cura. Отправлены некоторые ваши настройки и параметры, включая версию Cura и хэш моделей, разделяемых на слои." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "Оценивание" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "Подключенные к сети принтеры" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "Локальные принтеры" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "Попытка восстановить резервную копию Cura, не совпадающую с вашей текущей версией." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Параметры принтера" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Параметры принтера" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Начало координат в центре" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Нагреваемый стол" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Параметры головы" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Расстояние от левого края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Расстояние от переднего края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Расстояние от правого края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Расстояние от заднего края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Высота портала" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "Разница в высоте от кончика сопла до портала (по осям X и Y). Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "Стартовый G-код" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "Команды в G-коде, которые будут выполнены в самом начале." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "Завершающий G-код" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "Команды в G-коде, которые будут выполнены в самом конце." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Параметры сопла" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "Номинальный диаметр материала, поддерживаемый принтером. Точный диаметр будет указан в материале и/или в профиле." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "Стартовый G-код экструдера" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "Завершающий G-код экструдера" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Журнал изменений" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "Пользовательское соглашение" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Введите IP-адрес принтера или его имя в сети." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "Выберите принтер, подключенный к сети, который необходимо отслеживать." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Подключите ваш принтер Ultimaker к своей локальной сети." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura отправляет анонимные данные в Ultimaker для повышения качества печати и взаимодействия с пользователем. Ниже приведен пример всех отправляемых данных." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "Не хочу отправлять описанные данные" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Разрешить отправку описанных данных в Ultimaker для улучшения Cura" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "Печать не выбрана" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "По умолчанию, светлые пиксели представлены высокими точками на объекте, а тёмные пиксели представлены низкими точками на объекте. Измените эту опцию для изменения данного поведения, таким образом тёмные пиксели будут представлены высокими точками, а светлые - низкими." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Выбор компонентов для обновления" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Выбирает, какой экструдер следует использовать для поддержек. Будут созданы поддерживающие структуры под моделью для предотвращения проседания краёв или печати в воздухе." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Этот профиль качества недоступен для вашей текущей конфигурации материала и сопла. Измените эти настройки для задействования данного профиля качества" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "Настройка печати отключена. Невозможно изменить файл с G-кодом." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "См. таблицу совместимости материалов" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "Просмотр типов" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "Приветствуем! " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- Отправляйте задания печати на принтеры Ultimaker за пределами вашей локальной сети\n" +#~ "- Храните параметры Ultimaker Cura в облаке, чтобы применять их из любого места\n" +#~ "- Получите эксклюзивный доступ к профилям материалов от лидирующих производителей" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "Невозможно нарезать" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "Настройка расчета времени" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "Характеристики материала" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Добавить принтер к Cura" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "Выберите желаемый принтер в списке ниже.\n" +#~ "\n" +#~ "Если принтер отсутствует в списке, воспользуйтесь опцией «Собственный принтер FFF» из категории «Свое». Затем в открывшемся диалоговом окне настройте параметры в соответствии с характеристиками вашего принтера." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "Производитель" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "Имя принтера" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Добавить принтер" + +#~ msgid "Modify G-Code" +#~ msgstr "Изменить G-код" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "Нечего нарезать, так как ни одна модель не попадает в объём принтера. Пожалуйста, отмасштабируйте или поверните модель." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "Выбранный материал несовместим с выбранным принтером или конфигурацией." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Несовместимый материал" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Невозможно импортировать профиль из {0}: {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "Панель инструментов" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "Недоступно" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "Недостижимо" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "Доступен" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Подготовка" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "Приостановка" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "Возобновляется" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "Ожидание: недоступный принтер" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "Ожидание: первое доступное" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "Ожидание: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "Изменение конфигурации" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "Для назначенного принтера %1 требуются следующие изменения конфигурации:" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "Переопределить" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "Начало задания печати с несовместимой конфигурацией может привести к повреждению 3D-принтера. Действительно переопределить конфигурацию и печатать %1?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "Переопределить конфигурацию и начать печать" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "Управление очередью" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "Печать" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "Управление принтерами" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Активировать конфигурацию" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Загрузка конфигурации принтера в Cura" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Показать движения" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Показать поддержку" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Показать стенки" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Показать заполнение" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "Не хочу отправлять описанные данные" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Разрешить отправку описанных данных в Ultimaker для улучшения Cura" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Тип принтера:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Соединение:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "Состояние:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "Ожидаем задание на печать" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "Ожидаем, чтобы кто-нибудь освободил стол" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "Прерывание печати..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Защищённые профили" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Имя принтера:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Профиль:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Поиск..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "Свернуть все" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "Развернуть все" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "Доступные конфигурации" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "Экструдер" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "Да" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "Нет" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Настройка печати" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Настройка принтера отключена\n" +#~ "G-code файлы нельзя изменять" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00 ч 00 мин" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "Настройка расчета времени" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "Настройка расчета стоимости" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "Итого:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Рекомендованные параметры печати

    Печатайте с рекомендованными параметрами для выбранных принтера, материала и качества." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Свои параметры печати

    Печатайте с полным контролем над каждой особенностью процесса слайсинга." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "Показать журнал движка..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "Обзор пакетов..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "Развернуть/свернуть боковую панель" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Пожалуйста, загрузите 3D модель" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Готов к нарезке" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "Готов к %1" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "Нарезка недоступна" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "Разделить на слои текущее задание на печать" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "Отмена разделения на слои" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Подготовка" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Выберите активное целевое устройство" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "Вид" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "Параметры" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "&Панель инструментов" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Открыть файл" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Этот профиль качества недоступен для вашей текущей конфигурации материала и сопла. Измените эти настройки для задействования данного профиля качества" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Скорость печати" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Медленнее" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Быстрее" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Постепенное" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Генерация поддержек" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Тип прилипания к столу" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "Требуется помощь в улучшении вашей печати?
    Обратитесь к Руководству Ultimaker по решению проблем" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Журнал движка" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "Тип принтера" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "Использовать клей с этой комбинацией материалов" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Проверить совместимость" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Нажмите для проверки совместимости материала на Ultimaker.com." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Показывает изменения со времени последней отмеченной версии." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Журнал изменений" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Создаёт профиль со стандартными настройками." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Нормализация профиля" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "Запрашивает согласие пользователя с условиями лицензии." + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "UserAgreement" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "Сгенерируйте G-код перед сохранением." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Обновление прошивки" @@ -5037,22 +6536,6 @@ msgstr "Чтение профиля Cura" #~ msgid "Confirm uninstall " #~ msgstr "Подтвердить удаление " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "Приостановлено" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "Предыдущий" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "Следующий" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "Кончик" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1 м / ~ %2 г / ~ %4 %3" @@ -5061,26 +6544,10 @@ msgstr "Чтение профиля Cura" #~ msgid "%1m / ~ %2g" #~ msgstr "%1 м / ~ %2 г" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "Пробная печать" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "Контрольный список" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "Обновление прошивки" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "Позволяет производителям материалов создавать новые профили материалов и качества с помощью дружественного интерфейса." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "Помощник по профилю печати" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Печать через Doodle3D WiFi-Box" @@ -5173,10 +6640,6 @@ msgstr "Чтение профиля Cura" #~ msgid "Lost connection with the printer" #~ msgstr "Потеряно соединение с принтером" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "Недоступен" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "Неизвестно" @@ -6944,7 +8407,7 @@ msgstr "Чтение профиля Cura" #~ msgctxt "@action:inmenu menubar:profile" #~ msgid "&Create profile from current settings..." -#~ msgstr "Создать профиль из текущих параметров…" +#~ msgstr "Создать профиль из текущих параметров..." #~ msgctxt "@action:inmenu" #~ msgid "&Duplicate Model" diff --git a/resources/i18n/ru_RU/fdmextruder.def.json.po b/resources/i18n/ru_RU/fdmextruder.def.json.po index 65e6698016..15c5decf0a 100644 --- a/resources/i18n/ru_RU/fdmextruder.def.json.po +++ b/resources/i18n/ru_RU/fdmextruder.def.json.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Ruslan Popov , Russian \n" "Language: ru_RU\n" @@ -85,8 +85,8 @@ msgstr "Стартовый G-код экструдера" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "Стартовый G-код, который выполняется при включении экструдера." +msgid "Start g-code to execute when switching to this extruder." +msgstr "Стартовый G-код, запускающийся при переключении на данный экструдер." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -125,8 +125,8 @@ msgstr "Завершающий G-код экструдера" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "Завершающий G-код, который выполняется при отключении экструдера." +msgid "End g-code to execute when switching away from this extruder." +msgstr "Завершающий G-код, запускающийся при переключении с данного экструдера." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -228,6 +228,14 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Укажите диаметр используемой нити." +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "Стартовый G-код, который выполняется при включении экструдера." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "Завершающий G-код, который выполняется при отключении экструдера." + #~ msgctxt "resolution label" #~ msgid "Quality" #~ msgstr "Качество" diff --git a/resources/i18n/ru_RU/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po index 58dde033be..f9f16b4d46 100644 --- a/resources/i18n/ru_RU/fdmprinter.def.json.po +++ b/resources/i18n/ru_RU/fdmprinter.def.json.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-11-06 15:29+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Ruslan Popov , Russian \n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Russian , Ruslan Popov , Russian \n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -216,6 +216,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Имеет ли принтер подогреваемый стол." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Есть стабилизация температуры для объема печати" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Имеет ли принтер возможность стабилизации температуры для объема печати." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -238,7 +248,7 @@ msgstr "Количество экструдеров. Экструдер - это #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "Количество включенных экструдеров" #: fdmprinter.def.json @@ -248,7 +258,7 @@ msgstr "Количество включенных экструдеров; это #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "Внешний диаметр сопла" #: fdmprinter.def.json @@ -258,7 +268,7 @@ msgstr "Внешний диаметр кончика сопла." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "Длина сопла" #: fdmprinter.def.json @@ -268,7 +278,7 @@ msgstr "Высота между кончиком сопла и нижней ча #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "Угол сопла" #: fdmprinter.def.json @@ -278,7 +288,7 @@ msgstr "Угол между горизонтальной плоскостью и #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "Длина зоны нагрева" #: fdmprinter.def.json @@ -308,7 +318,7 @@ msgstr "Следует ли управлять температурой из Cur #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "Скорость нагрева" #: fdmprinter.def.json @@ -318,7 +328,7 @@ msgstr "Скорость (°C/сек.), с которой сопло греет, #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "Скорость охлаждения" #: fdmprinter.def.json @@ -338,7 +348,7 @@ msgstr "Минимальное время, которое экструдер д #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "Вариант G-кода" #: fdmprinter.def.json @@ -403,8 +413,8 @@ msgstr "Определяет, использовать ли команды от #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" -msgstr "Запрещённые области" +msgid "Disallowed Areas" +msgstr "Запрещенные области" #: fdmprinter.def.json msgctxt "machine_disallowed_areas description" @@ -423,8 +433,8 @@ msgstr "Список полигонов с областями, в которые #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" -msgstr "Полигон головы принтера" +msgid "Machine Head Polygon" +msgstr "Полигон головки принтера" #: fdmprinter.def.json msgctxt "machine_head_polygon description" @@ -433,8 +443,8 @@ msgstr "2D контур головы принтера (исключая крыш #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" -msgstr "Полигон головы принтера и вентилятора" +msgid "Machine Head & Fan Polygon" +msgstr "Полигон головки принтера и вентилятора" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" @@ -443,7 +453,7 @@ msgstr "2D контур головы принтера (включая крышк #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "Высота портала" #: fdmprinter.def.json @@ -473,8 +483,8 @@ msgstr "Внутренний диаметр сопла. Измените это #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" -msgstr "Смещение экструдера" +msgid "Offset with Extruder" +msgstr "Смещение с экструдером" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords description" @@ -1021,6 +1031,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Количество слоёв в дне. При вычислении толщины дна это значение округляется до целого." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Начальные слои дна" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Количество начальных слоев дна, вверх от рабочего стола. При вычислении толщины дна это значение округляется до целого." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1271,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Острейший угол" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Позиция Z шва" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "Позиция, рядом с которой следует начинать путь на каждом слое." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Сзади слева" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Назад" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Сзади справа" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Справа" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Спереди справа" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Спереди" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Спереди слева" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Слева" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1298,8 +1368,8 @@ msgstr "Настройки угла шва" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Управляет влиянием углов на контуре модели на позицию шва. Нет означает отсутствие влияния. Спрятать шов означает по возможности перенести шов внутрь угла. Показать шов означает по возможности перенести шов наружу. Спрятать или показать означает выбор по ситуации." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Управляет влиянием углов на контуре модели на позицию шва. «Нет» означает отсутствие влияния. «Спрятать шов» означает размещение шва с наибольшей вероятностью внутри угла. «Показать шов» означает размещение шва с наибольшей вероятностью снаружи угла. «Спрятать или показать» означает выбор варианта в зависимости от ситуации. Функция «Интеллектуальное скрытие» допускает размещение швов как внутри, так и снаружи углов, но чаще размещает их внутри." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1321,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Спрятать или показать" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Интеллектуальное скрытие" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1333,13 +1408,13 @@ msgstr "Когда включено, координаты Z шва привяз #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Игнорирование Z зазоров" +msgid "No Skin in Z Gaps" +msgstr "Нет оболочки в Z-зазорах" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Когда модель имеет небольшие вертикальные зазоры, около 5% дополнительного времени будет потрачено на вычисления верхних и нижних оболочек в этих узких пространствах. В этом случае, отключите данный параметр." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Если у модели имеются небольшие вертикальные зазоры, состоящие всего из нескольких слоев, вокруг этих слоев в узком пространстве, как правило, присутствует оболочка. Выбор данного параметра предотвратит создание оболочки в ситуациях, когда вертикальные зазоры очень маленькие. Это позволит сократить время печати и нарезки, но с технической точки зрения область заполнения останется открытой." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1358,8 +1433,8 @@ msgstr "Разрешить разглаживание" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Проходить по верхней оболочке ещё раз, но без выдавливания материала. Это приводит к плавлению пластика, что создаёт более гладкую поверхность." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Проходить по верхней оболочке еще раз, но на этот раз выдавливая очень мало материала. Это приводит к плавлению пластика, что создает более гладкую поверхность. Давление в камере сопла поддерживается на высоком уровне, благодаря чему складки на поверхности заполняются материалом." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1451,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Изменение максимальной мгновенной скорости, с которой выполняется разглаживание." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Процент перекрытия оболочек" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Настройте величину перекрытия между стенками и центральными линиями оболочки (конечными точками) в виде процентного отношения значений ширины линии для линий оболочки и внутренней стенки. Небольшое перекрытие позволяет стенкам надежно соединяться с оболочкой. Обратите внимание, что при одинаковой толщине оболочки и ширине линии стенки любое процентное значение, превышающее 50%, может привести к размещению любой оболочки за пределами стенки. Это обусловлено тем, что в этот момент расположение сопла экструдера оболочки может сместиться за середину стенки." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Перекрытие оболочек" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Настройте величину перекрытия между стенками и центральными линиями оболочки (конечными точками). Небольшое перекрытие позволяет стенкам надежно соединяться с оболочкой. Обратите внимание, что при одинаковой толщине оболочки и ширине линии стенки любое значение, превышающее половину ширины стенки, может привести к размещению любой оболочки за пределами стенки. Это обусловлено тем, что в этот момент расположение сопла экструдера оболочки может сместиться за середину стенки." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1616,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Расстояние перемещения шаблона заполнения по оси Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Рандомизация начала заполнения" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Рандомизировать, какая линия заполнения печатается первой. Это препятствует тому, чтобы один сегмент стал самым сильным, но делает это за счет дополнительного перемещения." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1670,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Величина перекрытия между заполнением и стенками. Небольшое перекрытие позволяет стенкам плотно соединиться с заполнением." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Процент перекрытия оболочек" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Величина перекрытия между оболочкой и стенками в виде процентного отношения от ширины линии оболочки. Небольшое перекрытие позволяет стенкам надежно соединяться с оболочкой. Это значение является процентным отношением от средней ширины линии оболочки и внутренней стенки." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Перекрытие оболочек" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "Величина перекрытия между оболочкой и стенками. Небольшое перекрытие позволяет стенкам плотно соединиться с оболочкой." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1870,6 +1955,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "Стандартная температура сопла, используемая при печати. Значением должна быть \"базовая\" температура для материала. Все другие температуры печати должны быть выражены смещениями от основного значения" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "Температура для объема печати" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "Температура среды печати. Если это значение равно 0, температура для объема печати не будет регулироваться." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1980,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Коэффициент усадки в процентах." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Кристаллический материал" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Это материал, который при нагревании легко ломается по четким линиям (кристаллический) или образует длинные сплетающиеся полимерные цепочки (некристаллический)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Положение отката для защиты от капель" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Насколько далеко необходимо убрать материал, чтобы он перестал капать." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Скорость отката для защиты от капель" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Насколько быстро необходимо убрать материал во время его замены, чтобы не допустить появления капель." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Положение отката для подготовки к отламыванию" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Насколько сильно можно растянуть материал при нагревании, до тех пор пока он не отломится." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Скорость отката для подготовки к отламыванию" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Насколько быстро следует убирать материал, чтобы он отломился." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Положение отката для отламывания" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Насколько далеко следует убрать материал, чтобы он отломился чисто." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Скорость отката для отламывания" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "Скорость, при которой убираемый материал отломится чисто." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Температура отламывания" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "Температура, при которой материал отломится чисто." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1990,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Компенсация потока: объём выдавленного материала умножается на этот коэффициент." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Поток для стенки" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Компенсация потока на линиях стенки." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Поток для внешней стенки" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Компенсация потока на внешней линии стенки." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Поток для внутренних стенок" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Компенсация потока на линиях стенки для всех линий, за исключением внешней." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Поток для верхних/нижних линий" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Компенсация потока на верхних/нижних линиях." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Поток для верхней оболочки" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Компенсация потока на линиях наверху печатаемой детали." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Поток для заполнения" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Компенсация потока на линиях заполнения." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Поток для юбки/каймы" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Компенсация потока на линиях юбки или каймы." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Поток для поддержек" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Компенсация потока на линиях структуры поддержек." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Поток для связующего слоя поддержек" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Компенсация потока на линиях крыши или низа поддержек." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Поток для крыши поддержек" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Компенсация потока на линиях крыши поддержек." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Поток для низа поддержек" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Компенсация потока на линиях низа поддержек." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Поток черновой башни" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Компенсация потока на линиях черновой башни." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2053,7 +2348,7 @@ msgstr "Скорость с которой нить будет извлечен #: fdmprinter.def.json msgctxt "retraction_prime_speed label" msgid "Retraction Prime Speed" -msgstr "Скорость возврата в начале печати" +msgstr "Скорость заправки при откате" #: fdmprinter.def.json msgctxt "retraction_prime_speed description" @@ -2107,8 +2402,8 @@ msgstr "Ограничить откаты поддержки" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Избежание отката при перемещении от поддержки к поддержке по прямой. Активация этой настройки сокращает время печати, однако может привести к излишней строчности в поддерживающей структуре." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Пропустить откат при переходе от поддержки к поддержке по прямой линии. Включение этого параметра обеспечивает экономию времени печати, но может привести к чрезмерной строчности структуры поддержек." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2127,8 +2422,8 @@ msgstr "Величина отката при смене экструдера" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "Величина отката: Установите 0 для отключения отката. Обычно соответствует длине зоны нагрева." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "Величина отката при переключении экструдеров. Установите 0 для отключения отката. Обычно соответствует длине зоны нагрева." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2160,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Скорость, с которой материал будет возвращён обратно при смене экструдера." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Дополнительно заполняемый объем при смене экструдера" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Дополнительный объем материала для заполнения после смены экструдера." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2351,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Скорость, на которой происходит печать юбки и каймы. Обычно, их печать происходит на скорости печати первого слоя, но иногда вам может потребоваться печатать юбку или кайму на другой скорости." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Максимальная скорость по оси Z" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Скорость поднятия оси Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Максимальная скорость, с которой движется ось Z. Установка нуля в качестве значения, приводит к использованию скорости прописанной в прошивке." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Скорость вертикального движения по оси Z. Обычно она ниже, чем скорость печати, поскольку рабочий стол или портал машины тяжелее сдвинуть." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2787,8 +3092,8 @@ msgstr "Режим комбинга" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "Комбинг удерживает сопло внутри напечатанных зон при перемещении. Это выражается в небольшом увеличении пути, но уменьшает необходимость в откатах. При отключенном комбинге выполняется откат материала, а сопло передвигается в следующую точку по прямой. Также можно не применять комбинг над верхними/нижними областями оболочки, разрешив комбинг только в области заполнения. Обратите внимание, что опция «В области заполнения» предполагает те же действия, что и опция «Не в оболочке» более ранних выпусков Cura." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "Комбинг удерживает сопло внутри напечатанных зон при перемещении. Это выражается в небольшом увеличении пути, но уменьшает необходимость в откатах. При отключенном комбинге выполняется откат материала, а сопло передвигается в следующую точку по прямой. Также можно не применять комбинг над верхними/нижними областями оболочки либо разрешить комбинг только в области заполнения." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2860,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Дистанция между соплом и уже напечатанными частями, выдерживаемая при перемещении." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Начинать печать в одном месте" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "На каждом слое печать начинается вблизи одной и той же точки, таким образом, мы не начинаем новый слой на том месте, где завершилась печать предыдущего слоя. Это улучшает печать нависаний и мелких частей, но увеличивает длительность процесса." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2930,6 +3225,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "При переключении принтера на другой экструдер между соплом и печатаемой деталью создаётся зазор. Это предотвращает возможность вытекания материала и его прилипание к внешней части печатаемой модели." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "Высота поднятия оси Z после смены экструдера" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "Высота, на которую приподнимается ось Z после смены экструдера." + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3200,6 +3505,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Крест" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "Гироид" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3261,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Дистанция между напечатанными линиями структуры поддержек первого слоя. Этот параметр вычисляется по плотности поддержек." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Направление линии заполнения поддержек" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Ориентация шаблона заполнения для поддержек. Шаблон заполнения поддержек вращается в горизонтальной плоскости." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Список целочисленных направлений линии. Элементы списка используются последовательно по мере печати слоев, и, когда конец списка будет достигнут, он начнется сначала. Элементы списка отделяются запятыми, и сам список заключен в квадратные скобки. По умолчанию список пустой, что означает использование стандартного угла 0 градусов." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3397,8 +3707,8 @@ msgstr "Расстояние объединения поддержки" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Максимальное расстояние между структурами поддержки по осям X/Y. Если отдельные структуры находятся ближе, чем определено данным значением, то такие структуры объединяются в одну." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "Максимальное расстояние между структурами поддержек по осям X/Y. Если отдельные структуры находятся ближе, чем определено данным значением, они объединяются в одну." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3440,6 +3750,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "Высота заполнения поддержек, по достижению которой происходит снижение плотности." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "Минимальная зона поддержек" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "Минимальная площадь зоны для полигонов поддержек. Полигоны с площадью меньше данного значения не будут генерироваться." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3665,6 +3985,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Зигзаг" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "Минимальная зона связующего слоя" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Минимальная площадь зоны для полигонов связующего слоя. Полигоны с площадью меньше данного значения будут печататься как поддержки нормали." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "Минимальная зона верхней части поддержек" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Минимальная площадь зоны для верхних частей поддержек. Полигоны с площадью меньше данного значения будут печататься как поддержки нормали." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "Минимальная зона нижней части поддержек" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Минимальная площадь зоны для нижних частей поддержек. Полигоны с площадью меньше данного значения будут печататься как поддержки нормали." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "Горизонтальное расширение связующего слоя" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "Величина смещения, применяемая к полигонам связующего слоя." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "Горизонтальное расширение верхней части поддержек" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "Величина смещения, применяемая к верхней части поддержек." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "Горизонтальное расширение нижней части поддержек" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "Величина смещения, применяемая к нижней части поддержек." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Направления линии связующего слоя поддержек" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Список целочисленных направлений линии. Элементы списка используются последовательно по мере печати слоев, и, когда конец списка будет достигнут, он начнется сначала. Элементы списка отделяются запятыми, и сам список заключен в квадратные скобки. По умолчанию список пустой, что означает использование стандартных углов (45 либо 135 градусов, если связующий слой довольно толстый, или 90 градусов)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Направления линии крыши поддержек" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Список целочисленных направлений линии. Элементы списка используются последовательно по мере печати слоев, и, когда конец списка будет достигнут, он начнется сначала. Элементы списка отделяются запятыми, и сам список заключен в квадратные скобки. По умолчанию список пустой, что означает использование стандартных углов (45 либо 135 градусов, если связующий слой довольно толстый, или 90 градусов)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Направления линии низа поддержек" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Список целочисленных направлений линии. Элементы списка используются последовательно по мере печати слоев, и, когда конец списка будет достигнут, он начнется сначала. Элементы списка отделяются запятыми, и сам список заключен в квадратные скобки. По умолчанию список пустой, что означает использование стандартных углов (45 либо 135 градусов, если связующий слой довольно толстый, или 90 градусов)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3706,14 +4116,14 @@ msgid "The diameter of a special tower." msgstr "Диаметр специальных башен." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Минимальный диаметр" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Максимальный диаметр, поддерживаемый башней" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Минимальный диаметр по осям X/Y небольшой области, которая будет поддерживаться с помощью специальных башен." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Максимальный диаметр по осям X/Y небольшой области, который должен поддерживаться определенной башней." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3927,7 +4337,7 @@ msgstr "Z наложение первого слоя" #: fdmprinter.def.json msgctxt "layer_0_z_overlap description" msgid "Make the first and second layer of the model overlap in the Z direction to compensate for the filament lost in the airgap. All models above the first model layer will be shifted down by this amount." -msgstr "Приводит к наложению первого и второго слоёв модели по оси Z для компенсации потерь материала в воздушном зазоре. Все слои модели выше первого будут смешены чуть ниже на указанное значение." +msgstr "Приводит к наложению первого и второго слоёв модели по оси Z для компенсации потерь материала в воздушном зазоре. Все слои модели выше первого будут смещены чуть ниже на указанное значение." #: fdmprinter.def.json msgctxt "raft_surface_layers label" @@ -4209,16 +4619,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Печатает башню перед печатью модели, чем помогает выдавить старый материал после смены экструдера." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Цилиндрическая черновая башня" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Делает черновую башню цилиндрической формы." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4259,16 +4659,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Y координата позиции черновой башни." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Поток черновой башни" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Компенсация потока: объём выдавленного материала умножается на этот коэффициент." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4279,6 +4669,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "После печати черновой башни одним соплом, вытирает вытекший материал из другого сопла об эту башню." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "Кайма черновой башни" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "Для черновых башен может потребоваться дополнительная адгезия с помощью каймы, даже если для модели это не требуется. В данный момент не может использоваться с типом адгезии с подложкой." + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4399,6 +4799,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Удаление пустых слоёв под первым печатаемым слоем, если они имеются. Отключение этой функции может привести к созданию первых пустых слоев, если для параметра «Допуск слайсинга» установлено значение «Включение» или «Середина»." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Максимальное разрешение" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Минимальный размер сегмента линии после слайсинга. Увеличение значения этого параметра понизит разрешение модели. Это может позволить принтеру поддерживать скорость обработки кода G и увеличит скорость слайсинга за счет удаления деталей модели, которые он в любом случае не сможет обработать." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Максимальное разрешение перемещения" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Минимальный размер сегмента линии перемещения после разделения на слои. При увеличении этого значения углы при перемещении будут менее сглаженными. Это может помочь принтеру поддерживать скорость обработки G-кода, однако при этом может снизиться точность избегания моделей." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Максимальное отклонение" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "Максимальное допустимое отклонение при снижении разрешения для параметра максимального разрешения. Увеличение этого значения понизит точность печати и уменьшит значение G-кода. Максимальное отклонение является пределом для максимального разрешения, поэтому, если они конфликтуют, истинным считается максимальное отклонение." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4561,8 +4991,8 @@ msgstr "Сглаживать спиральные контуры" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Сглаживает спиральные контуры для уменьшения видимости шва по оси Z (такой шов должен быть едва виден при печати, но по-прежнему виден при послойном просмотре). Следует отметить, что сглаживание ведёт к размыванию мелких деталей поверхности." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Сглаживает спиральные контуры для уменьшения видимости шва по оси Z (такой шов должен быть едва виден при печати, но виден при послойном просмотре). Следует отметить, что сглаживание ведет к размыванию мелких деталей поверхности." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4774,26 +5204,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Полигоны в разделенных слоях, длина окружности которых меньше указанной величины, будут отфильтрованы. Пониженные значения приводят к увеличению разрешения объекта за счет времени разделения. Это предназначено главным образом для принтеров SLA с высоким разрешением и миниатюрных 3D-моделей с множеством деталей." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Максимальное разрешение" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Минимальный размер сегмента линии после слайсинга. Увеличение значения этого параметра понизит разрешение модели. Это может позволить принтеру поддерживать скорость обработки кода G и увеличит скорость слайсинга за счет удаления деталей модели, которые он в любом случае не сможет обработать." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Максимальное разрешение перемещения" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Минимальный размер сегмента линии перемещения после разделения на слои. При увеличении этого значения углы при перемещении будут менее сглаженными. Это может помочь принтеру поддерживать скорость обработки G-кода, однако при этом может снизиться точность избегания моделей." - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4934,16 +5344,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Скорость, с которой производятся движения во время наката, относительно скорости печати. Рекомендуется использовать значение чуть меньше 100%, так как во время наката давление в боудене снижается." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Чередование вращения оболочек" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Изменить направление, в котором печатаются слои крышки/дна. Обычно, они печатаются по диагонали. Данный параметр добавляет направления X-только и Y-только." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5051,8 +5451,8 @@ msgstr "Конические поддержки" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Экспериментальная возможность: Нижняя часть поддержек становится меньше, чем верхняя." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Нижняя часть поддержек становится меньше, чем верхняя." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5116,23 +5516,24 @@ msgstr "Среднее расстояние между случайными то #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Макс. смещение экструзии для компенсации расхода" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Максимальное компенсируемое расстояние в миллиметрах." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "Максимальное расстояние (в мм) перемещения материала для компенсации изменения расхода." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Коэффициент компенсации расхода" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Коэффициент перевода расхода в расстояние." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Означает, насколько далеко следует переместить материал, чтобы компенсировать изменение расхода, в процентах от расстояния, на которое перемещается материал" +" за одну секунду экструзии." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5395,7 +5796,7 @@ msgstr "Зазор между соплом и горизонтально нис #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "Использовать адаптивные слои" #: fdmprinter.def.json @@ -5405,7 +5806,7 @@ msgstr "В случае адаптивных слоев расчет высот #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "Максимальная вариация адаптивных слоев" #: fdmprinter.def.json @@ -5415,7 +5816,7 @@ msgstr "Максимальная разрешенная высота по сра #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "Размер шага вариации адаптивных слоев" #: fdmprinter.def.json @@ -5425,13 +5826,14 @@ msgstr "Разница между высотой следующего слоя #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "Порог для адаптивных слоев" +msgid "Adaptive Layers Topography Size" +msgstr "Размер топографии адаптивных слоев" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Пороговое значение, при достижении которого будет использоваться меньший слой. Это число сравнивается с тангенсом наиболее крутого наклона в слое." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Целевое расстояние по горизонтали между двумя соседними слоями. Уменьшение этого значения приведет к сокращению толщины слоев, и края слоев станут ближе" +" друг к другу." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5440,8 +5842,9 @@ msgstr "Угол нависающей стенки" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Стенки, нависающие под углом, который больше указанного, будут напечатаны с использованием настроек нависающей стенки. Если значение составляет 90, стенки не считаются нависающими." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Стенки, выступающие под углом больше указанного, будут напечатаны с использованием настроек выступающей стенки. Если значение составляет 90, стенки не" +" считаются выступающими. Выступающие элементы, для которых имеется поддержка, также не считаются выступающими." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5643,6 +6046,198 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "Скорость вентилятора в процентах, с которой печатается слой третьей оболочки мостика." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "Очистка сопла между слоями" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "Следует ли добавлять G-код очистки сопла между слоями. Включение этого параметра может повлиять на ход отката при смене слоя. Используйте параметры отката с очисткой для управления откатом на слоях, для которых используется скрипт очистки." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "Объем материала между очистками" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "Максимальный объем материала, который можно выдавить перед очередной очисткой сопла." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "Включение отката с очисткой" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "Откат нити при движении сопла вне зоны печати." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "Расстояние отката с очисткой" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "Величина отката нити, предотвращающего просачивание во время последовательности очистки." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "Дополнительно заполняемый объем при откате с очисткой" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "Небольшое количество материала может просочиться при перемещении во время очистки, что можно скомпенсировать с помощью данного параметра." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "Скорость отката с очисткой" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "Скорость, с которой нить будет втягиваться и заправляться при откате с очисткой." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "Скорость отката при откате с очисткой" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "Скорость, с которой нить будет втягиваться при откате с очисткой." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Скорость заправки при откате" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "Скорость, с которой нить заправляется при откате с очисткой." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "Приостановка очистки" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "Приостановка после отмены отката." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "Поднятие оси Z с очисткой при откате" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "При каждом откате рабочий стол опускается для создания зазора между соплом и печатаемой деталью. Это предотвращает соударение сопла и печатаемой детали во время движений, снижая вероятность смещения печатаемой детали на рабочем столе." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "Высота поднятия оси Z при очистке" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "Расстояние, на которое приподнимается ось Z." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "Скорость поднятия при очистке" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "Скорость перемещения оси Z во время поднятия." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "Позиция X очистной щетки" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "Расположение X, в котором запустится скрипт очистки." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "Количество повторов очистки" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "Количество перемещений сопла поперек щетки." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "Расстояние перемещения при очистке" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "Расстояние перемещения головки назад и вперед поперек щетки." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Максимальный размер малого отверстия" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Отверстия и контуры деталей с диаметром меньше этого значения будут напечатаны с использованием функции «Скорость для малых элементов»." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Максимальная длина малого элемента" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Контуры элементов с длиной меньше этого значения будут напечатаны с использованием функции «Скорость для малых элементов»." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Скорость для малых элементов" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Малые элементы будут напечатаны со скоростью, составляющей этот процент от их нормальной скорости печати. Более медленная печать может улучшить адгезию" +" и точность." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Скорость первого слоя для небольших объектов" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Малые элементы на первом слое будут напечатаны со скоростью, составляющей этот процент от их нормальной скорости печати. Более медленная печать может улучшить" +" адгезию и точность." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5703,6 +6298,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Матрица преобразования, применяемая к модели при её загрузке из файла." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Минимальная площадь зоны для полигонов связующего слоя. Полигоны с площадью меньше данного значения не будут генерироваться." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Минимальная площадь зоны для верхних частей поддержек. Полигоны с площадью меньше данного значения не будут генерироваться." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Минимальная площадь зоны для нижних частей поддержек. Полигоны с площадью меньше данного значения не будут генерироваться." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Чередование вращения оболочек" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Изменить направление, в котором печатаются слои крышки/дна. Обычно, они печатаются по диагонали. Данный параметр добавляет направления X-только и Y-только." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Макс. смещение экструзии для компенсации расхода" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Максимальное компенсируемое расстояние в миллиметрах." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Коэффициент компенсации расхода" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Коэффициент перевода расхода в расстояние." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Порог для адаптивных слоев" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Пороговое значение, при достижении которого будет использоваться меньший слой. Это число сравнивается с тангенсом наиболее крутого наклона в слое." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Стенки, нависающие под углом, который больше указанного, будут напечатаны с использованием настроек нависающей стенки. Если значение составляет 90, стенки не считаются нависающими." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Малые элементы будут напечатаны со скоростью, составляющей этот процент от их нормальной скорости печати. Более медленная печать может улучшить адгезию и точность." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Скорость первого слоя" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Малые элементы на первом слое будут напечатаны со скоростью, составляющей этот процент от их нормальной скорости печати. Более медленная печать может улучшить адгезию и точность." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Проходить по верхней оболочке ещё раз, но без выдавливания материала. Это приводит к плавлению пластика, что создаёт более гладкую поверхность." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Начинать печать в одном месте" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "На каждом слое печать начинается вблизи одной и той же точки, таким образом, мы не начинаем новый слой на том месте, где завершилась печать предыдущего слоя. Это улучшает печать нависаний и мелких частей, но увеличивает длительность процесса." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Ориентация шаблона заполнения для поддержек. Шаблон заполнения поддержек вращается в горизонтальной плоскости." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "Максимальное допустимое отклонение при снижении разрешения для параметра максимального разрешения. Увеличение этого значения уменьшит точность печати и значение G-кода." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Вариант G-кода" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Управляет влиянием углов на контуре модели на позицию шва. Нет означает отсутствие влияния. Спрятать шов означает по возможности перенести шов внутрь угла. Показать шов означает по возможности перенести шов наружу. Спрятать или показать означает выбор по ситуации." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Игнорирование Z зазоров" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Когда модель имеет небольшие вертикальные зазоры, около 5% дополнительного времени будет потрачено на вычисления верхних и нижних оболочек в этих узких пространствах. В этом случае, отключите данный параметр." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "Температура, используемая для объема печати. Если значение равно 0, температура для объема печати не будет регулироваться." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Избежание отката при перемещении от поддержки к поддержке по прямой. Активация этой настройки сокращает время печати, однако может привести к излишней строчности в поддерживающей структуре." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Максимальная скорость по оси Z" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Максимальная скорость, с которой движется ось Z. Установка нуля в качестве значения, приводит к использованию скорости прописанной в прошивке." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Максимальное расстояние между структурами поддержки по осям X/Y. Если отдельные структуры находятся ближе, чем определено данным значением, то такие структуры объединяются в одну." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Минимальный диаметр" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Минимальный диаметр по осям X/Y небольшой области, которая будет поддерживаться с помощью специальных башен." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Цилиндрическая черновая башня" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Делает черновую башню цилиндрической формы." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Компенсация потока: объём выдавленного материала умножается на этот коэффициент." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Сглаживает спиральные контуры для уменьшения видимости шва по оси Z (такой шов должен быть едва виден при печати, но по-прежнему виден при послойном просмотре). Следует отметить, что сглаживание ведёт к размыванию мелких деталей поверхности." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Экспериментальная возможность: Нижняя часть поддержек становится меньше, чем верхняя." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "Количество включенных экструдеров" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Внешний диаметр сопла" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Длина сопла" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Угол сопла" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Длина зоны нагрева" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Скорость нагрева" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Скорость охлаждения" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "Вариант G-кода" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "Запрещённые области" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Полигон головы принтера" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Полигон головы принтера и вентилятора" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Высота портала" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Смещение экструдера" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "Использовать адаптивные слои" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "Максимальная вариация адаптивных слоев" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "Размер шага вариации адаптивных слоев" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "Порог для адаптивных слоев" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Величина перекрытия между оболочкой и стенками в виде процентного отношения от ширины линии оболочки. Небольшое перекрытие позволяет стенкам надежно соединяться с оболочкой. Это значение является процентным отношением от средней ширины линии оболочки и внутренней стенки." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "Величина перекрытия между оболочкой и стенками. Небольшое перекрытие позволяет стенкам плотно соединиться с оболочкой." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "Величина отката: Установите 0 для отключения отката. Обычно соответствует длине зоны нагрева." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "Комбинг удерживает сопло внутри напечатанных зон при перемещении. Это выражается в небольшом увеличении пути, но уменьшает необходимость в откатах. При отключенном комбинге выполняется откат материала, а сопло передвигается в следующую точку по прямой. Также можно не применять комбинг над верхними/нижними областями оболочки, разрешив комбинг только в области заполнения. Обратите внимание, что опция «В области заполнения» предполагает те же действия, что и опция «Не в оболочке» более ранних выпусков Cura." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "Соединение верхних/нижних путей оболочки на участках, где они проходят рядом. При использовании концентрического шаблона активация данной настройки значительно сокращает время перемещения, но, учитывая возможность наличия соединений на полпути над заполнением, эта функция может ухудшить качество верхней оболочки." diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index f801db7f78..b58a394a66 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-11-06 15:33+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Turkish\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Turkish , Turkish \n" "Language: tr_TR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.6\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Makine Ayarları" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-code dosyası" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter metin dışı modu desteklemez." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Lütfen dışa aktarmadan önce G-code'u hazırlayın." -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D Model Yardımcısı" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,66 +70,50 @@ msgstr "" "

    En iyi kalite ve güvenilirliği nasıl elde edeceğinizi öğrenin.

    \n" "

    Yazdırma kalitesi kılavuzunu görüntüleyin

    " -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Değişiklik Günlüğünü Göster" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Aygıt Yazılımını Güncelle" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Düzleştirme aktif ayarları" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF Dosyası" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Profil düzleştirilmiş ve aktifleştirilmiştir." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB yazdırma" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USB ile yazdır" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USB ile yazdır" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "USB ile bağlı" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "USB’den yazdırma devam ediyor, Cura’yı kapatmanız bu yazdırma işlemini durduracak. Emin misiniz?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G Dosyası" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Devam eden bir baskı var. Cura, önceki baskı tamamlanmadan USB aracılığıyla başka bir baskı işi başlatamaz." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Dosyalara X3g yazar" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g Dosyası" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Baskı Sürüyor" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -143,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "GCodeGzWriter yazı modunu desteklemez." #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Ultimaker Biçim Paketi" @@ -164,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Çıkarılabilir Sürücüye Kaydediliyor {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Yazılacak dosya biçimleri mevcut değil!" @@ -201,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Çıkarılabilir aygıta {0} kaydedilemedi: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Hata" @@ -232,8 +217,9 @@ msgstr "Çıkarılabilir aygıtı çıkar {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Uyarı" @@ -260,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Çıkarılabilir Sürücü" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Ağ üzerinden yazdır" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Ağ üzerinden yazdır" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Ağ üzerinden bağlandı." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Ağ üzerinden bağlandı. Lütfen yazıcıya erişim isteğini onaylayın." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Ağ üzerinden bağlandı. Yazıcıyı kontrol etmek için erişim yok." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "İstenen yazıcıya erişim. Lütfen yazıcı isteğini onaylayın" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Kimlik doğrulama durumu" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "Kimlik Doğrulama Durumu" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "Yeniden dene" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Erişim talebini yeniden gönder" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Kabul edilen yazıcıya erişim" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "Bu yazıcıyla yazdırmaya erişim yok. Yazdırma işi gönderilemedi." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Erişim Talep Et" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Yazıcıya erişim talebi gönder" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "Yeni bir yazdırma işi başlatılamıyor." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Ultimaker’ın yapılandırmasında yazdırmayı başlatmayı imkansız kılan bir sorun var. Devam etmeden önce lütfen bu sorunu çözün." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Uyumsuz yapılandırma" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Seçilen yapılandırma ile yazdırmak istediğinizden emin misiniz?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Yazıcı yapılandırması veya kalibrasyonu ile Cura arasında eşleşme sorunu var. En iyi sonucu almak istiyorsanız her zaman PrintCore ve yazıcıya eklenen malzemeler için dilimleme yapın." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "Yeni işlerin gönderilmesi (geçici olarak) engellenmiştir, hala bir önceki yazdırma işi gönderiliyor." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Veriler yazıcıya gönderiliyor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Veri gönderiliyor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "İptal Et" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "{slot_number} yuvasına Printcore yüklenmedi" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "{slot_number} yuvasına malzeme yüklenmedi" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "Farklı PrintCore (Cura: {cura_printcore_name}, Yazıcı: ekstruder {extruder_id} için {remote_printcore_name}) seçildi" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Farklı malzeme (Cura: {0}, Yazıcı: {1}), ekstrüder {2} için seçildi" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Yazıcınız ile eşitleyin" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Cura’da geçerli yazıcı yapılandırmanızı kullanmak istiyor musunuz?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "Yazıcınızda bulunan PrintCore’lar ve/veya malzemeler geçerli projenizde bulunandan farklı. En iyi sonucu almak istiyorsanız, her zaman PrintCore ve yazıcıya eklenen malzemeler için dilimleme yapın." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Ağ üzerinden bağlandı" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "Yazdırma işi yazıcıya başarıyla gönderildi." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Veri Gönderildi" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Monitörde Görüntüle" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name}, '{job_name}' yazdırmayı tamamladı." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "Yazdırma işi '{job_name}' tamamlandı." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "Baskı tamamlandı" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Ağ ile Bağlan" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Ağ üzerinden yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Ağ üzerinden yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Ağ üzerinden bağlandı" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Mevcut iş gönderilene kadar bekleyin." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Baskı hatası" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Yeni bulut yazıcılar bulundu" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Hesabınıza bağlı yeni yazıcılar bulundu. Keşfedilen yazıcılar listenizde bunları görüntüleyebilirsiniz." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Bu mesajı bir daha gösterme" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "{0} ile bağlantı kurmayı deniyorsunuz ancak cihaz bir grubun ana makinesi değil. Bu cihazı grup ana makinesi olarak yapılandırmak için web sayfasını ziyaret edebilirsiniz." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Grup ana makinesi değil" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Grubu yapılandır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Ultimaker hesabınızı kullanarak yazdırma görevlerini dilediğiniz yerden gönderin ve görüntüleyin." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Ultimaker Cloud Platformuna Bağlan" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Başlayın" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Yazdırma İşi Gönderiliyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Baskı işi yazıcıya yükleniyor." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Yazdırma işi yazıcıya başarıyla gönderildi." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Veri Gönderildi" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Ultimaker Connect çalıştırmayan bir yazıcıya bağlanmaya çalışıyorsunuz. Lütfen yazıcının donanım yazılımını son sürüme güncelleyin." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Yazıcınızı güncelleyin" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura, henüz {0} grubunun ana yazıcısına yüklenmemiş malzeme profilleri tespit etti." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Malzemeler yazıcıya gönderiliyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Veri yazıcıya yüklenemedi." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Ağ hatası" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "yarın" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "bugün" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Bulut üzerinden yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Bulut üzerinden yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Bulut üzerinden bağlı" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Görüntüle" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Güncelleme bilgilerine erişilemedi." @@ -507,24 +425,30 @@ msgctxt "@action:button" msgid "How to update" msgstr "Nasıl güncellenir" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Katman görünümü" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Tel Yazma etkinleştirildiğinde, Cura katmanları doğru olarak görüntülemez" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Simülasyon Görünümü" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "Son İşleme" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" -msgstr "GCode Değiştir" +msgstr "G-Code Öğesini Değiştir" #: /home/ruben/Projects/Cura/plugins/SupportEraser/__init__.py:12 msgctxt "@label" @@ -536,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "Desteklerin yazdırılmadığı bir hacim oluşturun." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura anonimleştirilmiş kullanım istatistikleri toplar." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "Veri Toplanıyor" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "Daha fazla bilgi" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "Cura’nın gönderdiği veriler hakkında daha fazla bilgi alın." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "İzin Verme" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "Programın gelecek sürümlerinin iyileştirilmesine yardımcı olmak için Cura’ya anonimleştirilmiş kullanım istatistikleri gönderme izni verin. Tercih ve ayarlarınızın bazıları, Cura sürümü ve dilimlere ayırdığınız modellerin sağlaması gönderilir." - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -596,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF Resmi" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Mevcut malzeme, seçilen makine veya yapılandırma ile uyumlu olmadığından mevcut malzeme ile dilimlenemedi." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "Dilimlenemedi" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Geçerli ayarlarla dilimlenemiyor. Şu ayarlarda hata var: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Modele özgü ayarlar nedeniyle dilimlenemedi. Şu ayarlar bir veya daha fazla modelde hataya yol açıyor: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "İlk direk veya ilk konum(lar) geçersiz olduğu için dilimlenemiyor." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "Etkisizleştirilmiş Extruder %s ile ilgili nesneler olduğundan dilimleme yapılamıyor." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Modeller yapı hacmine sığmadığı için dilimlenecek bir şey yok. Lütfen sığdırmak için modelleri ölçeklendirin veya döndürün." +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "Modeller yapı hacmine sığmadığı veya devre dışı bırakılmış bir ekstrüdere atandığı için dilimlenecek öğe yok. Modellerin sığması için lütfen ölçeklendirin veya döndürün ya da ekstrüderi etkinleştirin." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "Katmanlar İşleniyor" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "Bilgi" @@ -660,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Model Başına Ayarları Yapılandır" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Önerilen Ayarlar" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Özel" @@ -678,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF Dosyası" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Nozül" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Proje dosyası {0} bilinmeyen bir makine tipi içeriyor: {1}. Makine alınamıyor. Bunun yerine modeller alınacak." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Proje Dosyası Aç" @@ -705,22 +627,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G Dosyası" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-code ayrıştırma" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code Ayrıntıları" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Dosya göndermeden önce g-code’un yazıcınız ve yazıcı yapılandırmanız için uygun olduğundan emin olun. G-code temsili doğru olmayabilir." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "Yedeklemeleri yönet" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "Yedekle" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "Yedeklemeleriniz listelenirken bir hata oluştu." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "Yedeklemeniz geri yüklenirken bir hata oluştu." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "Yedeklemeler" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "Yedeklemeniz yükleniyor..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "Yedeklemeniz yüklenirken bir hata oluştu." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "Yedeklemenizin yüklenmesi tamamlandı." + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -742,330 +707,451 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "3mf dosyasını yazarken hata oluştu." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "Önizleme" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Yükseltmeleri seçin" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Kontrol" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "Yapı levhasını dengele" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Dış Duvar" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "İç Duvarlar" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Yüzey Alanı" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Dolgu" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Destek Dolgusu" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Destek Arayüzü" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "Destek" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Etek" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Hareket" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Geri Çekmeler" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "Diğer" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Önceden dilimlenmiş dosya {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "Giriş başarısız" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "Desteklenmiyor" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Dosya Zaten Mevcut" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Dosya {0} zaten mevcut. Üstüne yazmak istediğinizden emin misiniz?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "Geçersiz kılınmadı" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Seçilen malzeme, seçilen makine veya yapılandırma ile uyumlu değil." +msgid "Invalid file URL:" +msgstr "Geçersiz dosya URL’si:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "Uyumsuz Malzeme" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Ayarlar, ekstrüderlerin mevcut kullanılabilirliğine uyacak şekilde değiştirildi:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "Ayarlar, ekstruderlerin mevcut kullanılabilirliğine uyacak şekilde değiştirildi: [%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Ayarlar güncellendi" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "Ekstrüder(ler) Devre Dışı Bırakıldı" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Bilinmiyor" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Profilin {0} dosyasına aktarımı başarısız oldu: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Profilin {0} dosyasına aktarımı başarısız oldu: Yazıcı eklentisinde rapor edilen hata." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profil {0} dosyasına aktarıldı" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Dışa aktarma başarılı" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "{0} dosyasından profil içe aktarımı başarısız oldu: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "{0} dosyasından profil içe aktarımı başarısız oldu: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "Yazıcı eklenmeden önce profil, {0} dosyasından içe aktarılamaz." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "{0} dosyasında içe aktarılabilecek özel profil yok" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "{0} dosyasından profil içe aktarımı başarısız oldu:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Bu {0} profili yanlış veri içeriyor, içeri aktarılamadı." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "{0} ({1}) profilinde tanımlanan makine, mevcut makineniz ({2}) ile eşleşmiyor, içe aktarılamadı." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "{0} dosyasından profil içe aktarımı başarısız oldu:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil başarıyla içe aktarıldı {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Dosya {0} geçerli bir profil içermemekte." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profil {0} öğesinde bilinmeyen bir dosya türü var veya profil bozuk." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Özel profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profilde eksik bir kalite tipi var." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Mevcut yapılandırma için bir kalite tipi {0} bulunamıyor." -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Dış Duvar" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "İç Duvarlar" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Yüzey Alanı" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Dolgu" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Destek Dolgusu" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Destek Arayüzü" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "Destek" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Etek" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "Astarlama Direği" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Hareket" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Geri Çekmeler" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "Diğer" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Önceden dilimlenmiş dosya {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "Sonraki" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "Grup #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "Ağ etkin yazıcılar" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "Kapat" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "Yerel yazıcılar" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "Ekle" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "İptal Et" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Görsel" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Görsel profili, yüksek görsel ve yüzey kalitesi oluşturmak amacıyla, görsel prototipler ve modeller basılması için tasarlanmıştır." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Mühendislik profili, daha yüksek doğruluk ve daha yakın toleranslar sağlamak amacıyla, işlevsel prototipler ve son kullanım parçaları basılması için tasarlanmıştır." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Taslak" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Taslak profili, baskı süresinin önemli ölçüde kısaltılması amacıyla, birincil prototipler basılması ve konsept doğrulaması yapılması için tasarlanmıştır." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Geçersiz kılınmadı" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Özel profiller" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Tüm desteklenen türler ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Tüm Dosyalar (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Özel Malzeme" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Özel" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Aşağıdaki yazıcı(lar) bir grubun parçası olmadıkları için bağlanamıyor" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Mevcut ağ yazıcıları" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Portalın yazdırılan modeller ile çarpışmasını önlemek için yapı hacmi yüksekliği “Sıralamayı Yazdır” ayarı nedeniyle azaltıldı." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Yapı Disk Bölümü" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "Kullanıcı veri dizininden arşiv oluşturulamadı: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "Yedekle" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "Uygun veri veya meta veri olmadan Cura yedeği geri yüklenmeye çalışıldı." -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "Geçerli sürümünüzle eşleşmeyen bir Cura yedeği geri yüklenmeye çalışıldı." +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "Geçerli sürümünüzden yüksek bir sürüme sahip bir Cura yedeği geri yüklenmeye çalışıldı." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "Yanıt okunamadı." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "Ultimaker hesabı sunucusuna ulaşılamadı." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "Lütfen bu başvuruya yetki verirken gerekli izinleri verin." + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "Oturum açmaya çalışırken beklenmeyen bir sorun oluştu, lütfen tekrar deneyin." + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Nesneler çoğaltılıyor ve yerleştiriliyor" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "Nesne Yerleştiriliyor" +msgid "Placing Objects" +msgstr "Nesneler Yerleştiriliyor" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Yapılan hacim içinde tüm nesneler için konum bulunamadı" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "Nesne Yerleştiriliyor" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Nesneler için yeni konum bulunuyor" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "Konumu Buluyor" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "Konum Bulunamıyor" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Cura başlatılamıyor" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1080,32 +1166,32 @@ msgstr "" "

    Sorunu düzeltmek için lütfen bu Çökme Raporunu bize gönderin.

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "Çökme raporunu Ultimaker’a gönder" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "Ayrıntılı çökme raporu göster" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "Yapılandırma Klasörünü Göster" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "Yapılandırmayı Yedekle ve Sıfırla" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "Çökme Raporu" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" @@ -1116,321 +1202,285 @@ msgstr "" "

    Sunucularımıza otomatik olarak bir hata raporu yüklemek için lütfen \"Rapor gönder\" düğmesini kullanın

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "Sistem bilgileri" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Bilinmiyor" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Cura sürümü" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "Platform" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Qt Sürümü" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "PyQt Sürümü" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "Henüz başlatılmadı
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • OpenGL Sürümü: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • OpenGL Satıcısı: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • OpenGL Oluşturucusu: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "Hata geri izleme" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "Günlükler" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "Kullanıcı açıklaması" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "Kullanıcı açıklaması (Not: Geliştiriciler dilinizi konuşamıyor olabilir, lütfen mümkünse İngilizce kullanın)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "Rapor gönder" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Makineler yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Tercihler ayarlanıyor..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Görünüm ayarlanıyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Arayüz yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Aynı anda yalnızca bir G-code dosyası yüklenebilir. {0} içe aktarma atlandı" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "G-code yüklenirken başka bir dosya açılamaz. {0} içe aktarma atlandı" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Seçilen model yüklenemeyecek kadar küçüktü." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Makine Ayarları" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Yazıcı" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "Yazıcı Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (Genişlik)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Derinlik)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Yükseklik)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "Yapı levhası şekli" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "Merkez nokta" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "Isıtılmış yatak" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "Isıtılmış yapı hacmi" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "G-code türü" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "Yazıcı Başlığı Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Yazıcı başlığının solundan nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Yazıcı başlığının ön kısmından nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X maks" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Yazıcı başlığının sağından nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y maks" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Yazıcı başlığının arkasından nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" -msgstr "Portal yüksekliği" +msgid "Gantry Height" +msgstr "Portal Yüksekliği" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "Nozül ucu ve portal sistemi (X ve Y aksları) arasındaki yükseklik farkı. “Birer birer” çıktı alırken önceki çıktılar ile portalın çakışmasını önlemek için kullanılır." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Ekstrüder Sayısı" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "G-code’u Başlat" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "Başlangıçta yürütülecek G-code komutları." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "G-code’u Sonlandır" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "Bitişte yürütülecek G-code komutları." +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Yazıcı" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "Nozül Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "Nozzle boyutu" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "Uyumlu malzeme çapı" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Yazıcı tarafından desteklenen nominal filaman çapı. Tam çap malzeme ve/veya profil tarafından etkisiz kılınacaktır." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "Nozül X ofseti" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Nozül Y ofseti" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Soğutma Fanı Numarası" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "Ekstruder G-Code'u Başlatma" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Ekstruder G-Code'u Sonlandırma" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "Yükle" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Yüklü" @@ -1440,69 +1490,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "Cura Paket veri tabanına bağlanılamadı. Lütfen bağlantınızı kontrol edin." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "derecelendirmeler" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Eklentiler" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Malzemeler" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "Derecelendirmeniz" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "Sürüm" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "Son güncelleme" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "Yazar" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "İndirmeler" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "Bilinmiyor" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "Yükleme ve güncelleme yapabilmek için oturum açın" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "Malzeme makarası satın al" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "Güncelle" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "Güncelleniyor" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "Güncellendi" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "Araç kutusu" +msgid "Marketplace" +msgstr "Mağaza" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1529,52 +1592,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "Profiller" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "Onayla" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "Derecelendirme yapabilmek için önce oturum açmalısınız" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "Derecelendirme yapabilmek için önce paketi kurmalısınız" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "Pakette değişikliklerin geçerli olması için Cura’yı yeniden başlatmalısınız." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "Cura’dan Çıkın" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Topluluk Katkıları" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Topluluk Eklentileri" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Genel Materyaller" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "Yüklü" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "Yeniden başlatıldığında kurulacak" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "Güncelleme yapabilmek için oturum açın" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "Eski Sürümü Yükle" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "Kaldır" @@ -1595,12 +1673,12 @@ msgstr "" "Bu eklentiyi yüklemek için bu lisansı kabul etmeniz gerekir.\n" "Aşağıdaki koşulları kabul ediyor musunuz?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "Kabul et" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "Reddet" @@ -1610,22 +1688,62 @@ msgctxt "@label" msgid "Featured" msgstr "Öne Çıkan" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Uyumluluk" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Makine" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Baskı tepsisi" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Destek" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Kalite" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "Teknik Veri Sayfası" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "Güvenlik Veri Sayfası" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "Yazdırma Talimatları" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "Web sitesi" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "Paketler alınıyor..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "Web sitesi" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "E-posta" @@ -1635,23 +1753,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "Bu yazdırmada bazı şeyler sorunlu olabilir. Ayarlama için ipuçlarını görmek için tıklayın." -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Değişiklik Günlüğü" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Kapat" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1727,426 +1828,505 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Eksik aygıt yazılımı nedeniyle aygıt yazılımı güncellemesi başarısız oldu." -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "Kullanıcı Anlaşması" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Yazıcıyı yönet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Mevcut Bağlantı" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "Cam" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "Bu yazıcı/grup Cura’ya zaten eklenmiş. Lütfen başka bir yazıcı/grup seçin." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "Kuyruğu uzaktan yönetmek için lütfen yazıcının donanım yazılımını güncelleyin." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "Görüntülediğiniz yazıcı bulut yazıcısı olduğundan web kamerasını kullanamazsınız." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "Yükleniyor..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "Mevcut değil" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "Ulaşılamıyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "Boşta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "Başlıksız" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "Anonim" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "Yapılandırma değişiklikleri gerekiyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "Detaylar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "Kullanım dışı yazıcı" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "İlk kullanılabilen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "Kuyrukta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "Tarayıcıda yönet" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Kuyrukta baskı işi yok. Bir iş eklemek için dilimleme yapın ve gönderin." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "Yazdırma görevleri" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "Toplam yazdırma süresi" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "Bekleniyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Ağ Yazıcısına Bağlan" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"Yazıcınıza ağ üzerinden doğrudan bağlamak için, lütfen yazıcınızın ağ kablosu kullanan bir ağa bağlı olduğundan emin olun veya yazıcınızı WiFi ağına bağlayın. Cura'ya yazıcınız ile bağlanamıyorsanız g-code dosyalarını yazıcınıza aktarmak için USB sürücüsü kullanabilirsiniz.\n" -"\n" -"Aşağıdaki listeden yazıcınızı seçin:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Yazıcınıza ağ üzerinden doğrudan baskı göndermek için lütfen yazıcınızın ağ kablosuyla ağa bağlı olduğundan veya yazıcınızı WiFi ağınıza bağladığınızdan emin olun. Yazıcınız ile Cura'ya bağlanamıyorsanız g-code dosyalarını yazıcınıza aktarmak için USB sürücüsü kullanabilirsiniz." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "Ekle" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Aşağıdaki listeden yazıcınızı seçin:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Düzenle" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Kaldır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Yenile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Yazıcınız listede yoksa ağ yazdırma sorun giderme kılavuzunu okuyun" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tür" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Üretici yazılımı sürümü" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Adres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Bu yazıcı, bir yazıcı grubunu barındırmak için ayarlı değildir." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Bu yazıcı, %1 yazıcı grubunun ana makinesidir." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Bu adresteki yazıcı henüz yanıt vermedi." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Bağlan" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "Geçersiz IP adresi" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "Lütfen geçerli bir IP adresi girin." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Yazıcı Adresi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "IP adresini veya yazıcınızın ağ üzerindeki ana bilgisayar adını girin." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "Ağdaki yazıcınızın IP adresini girin." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "Tamam" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Yazdır" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Ağ üzerinden yazdır" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "Yazıcı seçimi" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "Mevcut değil" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "Ulaşılamıyor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "Mevcut" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "Durduruldu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "Tamamlandı" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "Hazırlanıyor" +msgid "Preparing..." +msgstr "Hazırlanıyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "Duraklatılıyor" +msgid "Aborting..." +msgstr "İptal ediliyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "Devam ediliyor" +msgid "Pausing..." +msgstr "Duraklatılıyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "Duraklatıldı" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "Devam ediliyor..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "Eylem gerekli" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "%1 bitiş tarihi: %2" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Ağ üzerinden yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "Bekleniyor: Kullanım dışı yazıcı" +msgid "Printer selection" +msgstr "Yazıcı seçimi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "Bekleniyor: İlk mevcut olan" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "Bekleniyor: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "Yapılandırma değişikliği" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "Atanan yazıcı %1, aşağıdaki yapılandırma değişikliklerini gerektiriyor:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "Yazıcı %1 atandı, fakat iş bilinmeyen bir malzeme yapılandırması içeriyor." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "%2 olan %1 malzemesini %3 yapın." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "%3 malzemesini %1 malzemesi olarak yükleyin (Bu işlem geçersiz kılınamaz)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "%2 olan %1 print core'u %3 yapın." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "Baskı tablasını %1 olarak değiştirin (Bu işlem geçersiz kılınamaz)." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "Geçersiz kıl" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "Bir yazdırma işini uyumsuz bir yapılandırmayla başlatmak 3D yazıcınıza zarar verebilir. Yapılandırmayı geçersiz kılmak ve %1 öğesini yazdırmak istediğinizden emin misiniz?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "Yapılandırmayı geçersiz kıl ve yazdırmayı başlat" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "Cam" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "Alüminyum" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "Kuyruğu yönet" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "Kuyrukta" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "Yazdırma" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "Yazıcıları yönet" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "En üste taşı" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "Sil" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "Devam et" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "Duraklatılıyor..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "Devam ediliyor..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "Duraklat" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "İptal ediliyor..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "Durdur" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "%1 öğesini kuyruğun en üstüne taşımak ister misiniz?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "Yazdırma işini en üste taşı" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "%1 öğesini silmek istediğinizden emin misiniz?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "Yazdırma işini sil" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "%1 öğesini durdurmak istediğinizden emin misiniz?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "Yazdırmayı durdur" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Yazıcıya Bağlan" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "Yapılandırma Değişiklikleri" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Yapılandırmayı Etkinleştir" +msgid "Override" +msgstr "Geçersiz kıl" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Yazıcı yapılandırmasını Cura’ya yükle" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "Atanan yazıcı %1, şu yapılandırma değişikliğini gerektiriyor:" +msgstr[1] "Atanan yazıcı %1, şu yapılandırma değişikliklerini gerektiriyor:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "Yazıcı %1 atandı, fakat iş bilinmeyen bir malzeme yapılandırması içeriyor." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "%2 olan %1 malzemesini %3 yapın." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "%3 malzemesini %1 malzemesi olarak yükleyin (Bu işlem geçersiz kılınamaz)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "%2 olan %1 print core'u %3 yapın." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "Baskı tablasını %1 olarak değiştirin (Bu işlem geçersiz kılınamaz)." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "Geçersiz kıl seçeneği mevcut yazıcı yapılandırmasındaki ayarları kullanacaktır. Yazdırma işlemi başarısız olabilir." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "Alüminyum" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"Lütfen yazıcınızda bağlantı olduğundan emin olun:\n" +"- Yazıcının açık olup olmadığını kontrol edin.\n" +"- Yazıcının ağa bağlı olup olmadığını kontrol edin.\n" +"- Buluta bağlı yazıcıları keşfetmek için giriş yapıp yapmadığınızı kontrol edin." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "Lütfen yazıcınızı ağa bağlayın." + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "Kullanım kılavuzlarını çevrimiçi olarak görüntüle" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "Renk şeması" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "Malzeme Rengi" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "Çizgi Tipi" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Besleme hızı" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Katman kalınlığı" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "Uyumluluk Modu" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "Geçişleri Göster" +msgid "Travels" +msgstr "Geçişler" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "Yardımcıları Göster" +msgid "Helpers" +msgstr "Yardımcılar" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "Kabuğu Göster" +msgid "Shell" +msgstr "Kabuk" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "Dolguyu Göster" +msgid "Infill" +msgstr "Dolgu" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Yalnızca Üst Katmanları Göster" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "En Üstteki 5 Ayrıntılı Katmanı Göster" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "Üst / Alt" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "İç Duvar" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "min" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "maks" @@ -2161,40 +2341,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Son İşleme Dosyaları" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "Dosya ekle" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "Ayarlar" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Etkin son işleme dosyalarını değiştir" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "Anonim veri toplama hakkında daha fazla bilgi" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura, yazdırma kalitesini ve kullanıcı deneyimini iyileştirmek için Ultimaker’a anonim veri gönderir. Aşağıda, gönderilen tüm veriler örneklenmiştir." +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura, yazdırma kalitesini ve kullanıcı deneyimini iyileştirmek için anonim veri toplar. Aşağıda, paylaşılan tüm verilerin bir örneği verilmiştir:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "Bu verileri göndermek istemiyorum" +msgid "I don't want to send anonymous data" +msgstr "Anonim veri göndermek istemiyorum" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "Bu verilen Ultimaker’a gönderilmesine izin verin ve Cura’yı geliştirmemize yardım edin" +msgid "Allow sending anonymous data" +msgstr "Anonim veri gönderilmesine izin ver" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2243,19 +2423,19 @@ msgstr "Derinlik (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "Varsayılan olarak, beyaz pikseller ızgara üzerindeki yüksek noktaları ve siyah pikseller ızgara üzerindeki alçak noktaları gösterir. Bu durumu tersine çevirmek için bu seçeneği değiştirin, böylece siyah pikseller ızgara üzerindeki yüksek noktaları ve beyaz pikseller ızgara üzerindeki alçak noktaları gösterir." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Daha açık olan daha yüksek" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "Litofanlar için, daha fazla ışığın girmesini engellemek amacıyla koyu renk pikseller daha kalın olan bölgelere denk gelmelidir. Yükseklik haritaları için daha açık renk pikseller daha yüksek araziyi ifade eder; bu nedenle daha açık renk piksellerin oluşturulan 3D modelde daha kalın bölgelere denk gelmesi gerekir." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "Daha koyu olan daha yüksek" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Daha açık olan daha yüksek" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2266,81 +2446,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Düzeltme" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Ağ Tipi" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Normal model" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Destek olarak yazdır" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Diğer modellerle örtüşmeyi destekleme" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Diğer modellerle örtüşme ayarlarını değiştir" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Diğer modellerle doldurma ayarlarını değiştir" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Ayarları seçin" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Bu modeli Özelleştirmek için Ayarları seçin" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrele..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Tümünü göster" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Ağ Tipi" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Normal model" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Destek olarak yazdır" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Çakışma ayarlarını değiştir" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Çakışmaları destekleme" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Yalnızca dolgu" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Ayarları seçin" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Proje Aç" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Var olanları güncelleştir" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Yeni oluştur" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Özet - Cura Projesi" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "Yazıcı ayarları" @@ -2356,20 +2535,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Güncelle" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Yeni oluştur" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "Tür" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "Yazıcı Grubu" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Profil ayarları" @@ -2380,226 +2564,222 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Profildeki çakışma nasıl çözülmelidir?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "İsim" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Profilde değil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 geçersiz kılma" msgstr[1] "%1 geçersiz kılmalar" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Kaynağı" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 geçersiz kılma" msgstr[1] "%1, %2 geçersiz kılmalar" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Malzeme ayarları" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Malzemedeki çakışma nasıl çözülmelidir?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Görünürlük ayarı" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Mod" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Görünür ayarlar:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 / %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Bir projenin yüklenmesi derleme levhasındaki tüm modelleri siler." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Aç" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Yazıcı Yükseltmelerini seçin" +msgid "My Backups" +msgstr "Yedeklemelerim" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Ultimaker 2 için yapılan herhangi bir yükseltmeyi seçiniz." +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "Şu anda yedeklemeniz yok. Oluşturmak için “Şimdi Yedekle” düğmesini kullanın." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Bloku" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "Önizleme aşamasında en fazla 5 yedekleme görüntüleyebilirsiniz. Önceki yedeklemeleri görmek için mevcut yedeklemelerden birini kaldırın." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "Cura ayarlarınızı yedekleyin ve senkronize edin." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "Giriş yap" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Cura Yedeklemeleri" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Cura Sürümü" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "Makineler" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "Malzemeler" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "Profiller" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "Eklentiler" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "Geri Yükle" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "Yedeklemeyi Sil" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "Bu yedeklemeyi silmek istediğinizden emin misiniz? Bu eylem geri alınamaz." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "Yedeklemeyi Geri Yükle" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "Yedeklemeniz geri yüklenmeden öne Cura’yı yeniden başlatmalısınız. Cura’yı şimdi kapatmak istiyor musunuz?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "Daha fazla seçenek görüntülemek ister misiniz?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "Şimdi Yedekle" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "Otomatik Yedekle" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "Cura’nın başlatıldığı günlerde otomatik olarak yedekleme yapar." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "Yapı Levhası Dengeleme" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "Baskılarınızın düzgün çıktığından emin olmak için yapı levhanızı ayarlayabilirsiniz. “Sonraki Konuma Taşı” seçeneğine tıkladığınızda, nozül ayarlanabilen farklı konumlara taşınacak." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "Her konum için nozülün altına bir kağıt yerleştirin ve yazdırma yapı levhasının yüksekliğini ayarlayın. Kağıt nozülün ucundan yavaşça geçerse yazdırma yapı levhasının yüksekliği doğrudur." -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "Yapı Levhasını Dengelemeyi Başlat" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "Sonraki Konuma Taşı" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "Lütfen Ultimaker Original’e yapılan herhangi bir yükseltmeyi seçin" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "Isıtılmış Yapı Levhası (orijinal donanım veya şahsen yapılan)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Yazıcıyı kontrol et" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "Ultimaker’ınızda birkaç uygunluk testi yapmak faydalı olabilir. Makinenizin işlevlerini yerine getirdiğini düşünüyorsanız bu adımı atlayabilirsiniz" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Yazıcı Kontrolünü Başlat" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Bağlantı: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Bağlı" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Bağlı değil" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Min. Kapama X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "İşlemler" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Kontrol edilmedi" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Min. kapama Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Min. kapama Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Nozül sıcaklık kontrolü: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Isıtmayı Durdur" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Isıtmayı Başlat" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Yapı levhası sıcaklık kontrolü:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Kontrol edildi" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Her şey yolunda! Kontrol işlemini tamamladınız." - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2611,7 +2791,6 @@ msgid "Printer does not accept commands" msgstr "Yazıcı komutları kabul etmiyor" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Bakımda. Lütfen yazıcıyı kontrol edin" @@ -2622,19 +2801,16 @@ msgid "Lost connection with the printer" msgstr "Yazıcı bağlantısı koptu" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Yazdırılıyor..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Duraklatıldı" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Hazırlanıyor..." @@ -2654,235 +2830,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Yazdırmayı iptal etmek istediğinizden emin misiniz?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Değişiklikleri iptal et veya kaydet" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"Bazı profil ayarlarını özelleştirdiniz.\n" -"Bu ayarları kaydetmek veya iptal etmek ister misiniz?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Profil ayarları" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Varsayılan" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Özelleştirilmiş" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Her zaman sor" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "İptal et ve bir daha sorma" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Kaydet ve bir daha sorma" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "İptal" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Kaydet" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Yeni Profil Oluştur" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Bilgi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Çap Değişikliğini Onayla" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Yeni filaman çapı %1 mm olarak ayarlandı ve bu değer, geçerli ekstrüder ile uyumlu değil. Devam etmek istiyor musunuz?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Görünen Ad" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marka" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Malzeme Türü" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Renk" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Özellikler" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Yoğunluk" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Çap" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Filaman masrafı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Filaman ağırlığı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Filaman uzunluğu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Metre başına maliyet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Bu malzeme %1’e bağlıdır ve özelliklerinden bazılarını paylaşır." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Malzemeyi Ayır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Tanım" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Yapışma Bilgileri" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Yazdırma ayarları" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Etkinleştir" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Oluştur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Çoğalt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "İçe Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "Dışa Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Yazıcı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Kaldırmayı Onayla" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "%1’i kaldırmak istediğinizden emin misiniz? Bu eylem geri alınamaz!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Malzemeyi İçe Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Malzeme %1 dosyasına içe aktarılamadı: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Malzeme %1 dosyasına başarıyla içe aktarıldı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Malzemeyi Dışa Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Malzemenin %1 dosyasına dışa aktarımı başarısız oldu: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Malzeme %1 dosyasına başarıyla dışa aktarıldı" @@ -2892,669 +3009,521 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "Görünürlüğü Ayarlama" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "Tümünü denetle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Hesaplanmış" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Ayar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Geçerli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Birim" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "Genel" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "Arayüz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Dil:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Para Birimi:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Bu değişikliklerinin geçerli olması için uygulamayı yeniden başlatmanız gerekecektir." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Ayarlar değiştirilirken otomatik olarak dilimle." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Otomatik olarak dilimle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Görünüm şekli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Modelin desteklenmeyen alanlarını kırmızı ile gösterin. Destek alınmadan bu alanlar düzgün bir şekilde yazdırılmayacaktır." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Dışarıda kalan alanı göster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Bir model seçildiğinde bu model görüntünün ortasında kalacak şekilde kamera hareket eder" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Öğeyi seçince kamerayı ortalayın" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Cura’nın varsayılan yakınlaştırma davranışı tersine çevrilsin mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Kamera yakınlaştırma yönünü ters çevir." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Yakınlaştırma farenin hareket yönüne uygun olsun mu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Fareye doğru yakınlaştırma yapılması ortografik perspektifte desteklenmez." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Farenin hareket yönüne göre yakınlaştır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Platformun üzerindeki öğeler kesişmemeleri için hareket ettirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Modellerin birbirinden ayrı olduğundan emin olduğundan emin olun" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Platformun üzerindeki modeller yapı levhasına değmeleri için indirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Modelleri otomatik olarak yapı tahtasına indirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "G-code okuyucuda uyarı mesajı göster." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-code okuyucuda uyarı mesajı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Katman, uyumluluk moduna zorlansın mı?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Katman görünümünü uyumluluk moduna zorla (yeniden başlatma gerekir)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Cura kapatıldığı yerden mi başlatılsın?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Başlangıçtaki pencere konumuna dönülsün" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Ne tür bir kamera oluşturma işlemi kullanılmalıdır?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Kamera oluşturma:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspektif" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ortografik" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Dosyaların açılması ve kaydedilmesi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Modeller çok büyükse yapı hacmine göre ölçeklendirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Büyük modelleri ölçeklendirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Bir modelin birimi milimetre değil de metre ise oldukça küçük görünebilir. Bu modeller ölçeklendirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Çok küçük modelleri ölçeklendirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Yüklendikten sonra modeller seçilsin mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Yüklendiğinde modelleri seç" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Yazıcı adına bağlı bir ön ek otomatik olarak yazdırma işinin adına eklenmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Makine ön ekini iş adına ekleyin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Bir proje dosyasını kaydederken özet gösterilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Projeyi kaydederken özet iletişim kutusunu göster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Bir proje dosyası açıldığında varsayılan davranış" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Bir proje dosyası açıldığında varsayılan davranış: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Her zaman sor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Her zaman proje olarak aç" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Her zaman modelleri içe aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Bir profil üzerinde değişiklik yapıp farklı bir profile geçtiğinizde, değişikliklerin kaydedilmesini isteyip istemediğinizi soran bir iletişim kutusu açılır. Alternatif olarak bu işleve yönelik varsayılan bir davranış seçebilir ve bu iletişim kutusunun bir daha görüntülenmemesini tercih edebilirsiniz." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profiller" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Farklı bir profile geçerken değişen ayar değerleriyle ilgili varsayılan davranış: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Her zaman sor" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Değiştirilen ayarları her zaman at" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Değiştirilen ayarları her zaman yeni profile taşı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Gizlilik" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura, program başladığında güncellemeleri kontrol etmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Başlangıçta güncellemeleri kontrol edin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Yazdırmanızdaki anonim veriler Ultimaker’a gönderilmeli mi? Unutmayın; hiçbir model, IP adresi veya diğer kişiye özgü bilgiler gönderilmez veya saklanmaz." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonim) yazdırma bilgisi gönder" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Daha fazla bilgi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "Deneysel" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Çok yapılı levha fonksiyonelliğini kullan" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "Çok yapılı levha fonksiyonelliğini kullan (yeniden başlatma gerektirir)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Yazıcılar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Yeniden adlandır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "Yazıcı türü:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "Bağlantı:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "Yazıcı bağlı değil." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "Durum:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "Yazdırma işlemi bekleniyor" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "Yapı levhasının temizlenmesi bekleniyor" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Yazdırma durduruluyor..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiller" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Oluştur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Çoğalt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Profil Oluştur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "Bu profil için lütfen bir ad girin." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Profili Çoğalt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Profili Yeniden Adlandır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Profili İçe Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Profili Dışa Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Yazıcı: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Korunan profiller" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Özel profiller" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Profili geçerli ayarlar/geçersiz kılmalar ile güncelle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Geçerli değişiklikleri iptal et" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Bu profil yazıcının belirlediği varsayılan ayarları kullanır; dolayısıyla aşağıdaki listede bulunan ayarları/geçersiz kılmaları içermez." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Geçerli ayarlarınız seçilen profille uyumlu." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Küresel Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Yazıcı Ekle" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Yazıcı Adı:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "Yazıcı Ekle" +msgid "Marketplace" +msgstr "Mağaza" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&Dosya" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "Düz&enle" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "&Ayarlar" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "Uzantılar" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "Tercihler" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "&Yardım" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "Yeni proje" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Yeni bir proje başlatmak istediğinizden emin misiniz? Bu işlem yapı levhasını ve kaydedilmemiş tüm ayarları silecektir." + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "Başlıksız" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "Cura hakkında" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "sürüm: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "Kaynaşık filaman 3B yazdırma için kalıcı çözüm." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura, topluluk iş birliği ile Ultimaker B.V. tarafından geliştirilmiştir.\n" -"Cura aşağıdaki açık kaynak projelerini gururla kullanmaktadır:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Grafik kullanıcı arayüzü" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "Uygulama çerçevesi" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "G-code oluşturucu" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "İşlemler arası iletişim kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "Programlama dili" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUI çerçevesi" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "GUI çerçeve bağlantıları" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "C/C++ Bağlantı kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Veri değişim biçimi" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Bilimsel bilgi işlem için destek kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Daha hızlı matematik için destek kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "STL dosyalarının işlenmesi için destek kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "Düzlemsel nesnelerin işlenmesi için destek kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "Üçgen birleşimlerin işlenmesi için destek kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "Karmaşık ağların analizi için destek kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "3MF dosyalarının işlenmesi için destek kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "Dosya meta verileri ve akış için destek kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Seri iletişim kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "ZeroConf keşif kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Poligon kırpma kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Python HTTP kitaplığı" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "Yazı tipi" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "SVG simgeleri" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Linux çapraz-dağıtım uygulama dağıtımı" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "Profil:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Bazı ayar/geçersiz kılma değerleri profilinizde saklanan değerlerden farklıdır.\n" -"\n" -"Profil yöneticisini açmak için tıklayın." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "Ara..." +msgid "Search settings" +msgstr "Arama ayarları" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Değeri tüm ekstruderlere kopyala" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Tüm değiştirilmiş değerleri tüm ekstruderlere kopyala" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Bu ayarı gizle" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Bu ayarı gösterme" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Bu ayarı görünür yap" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Görünürlük ayarını yapılandır..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "Tümünü Daralt" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "Tümünü Genişlet" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3565,27 +3534,32 @@ msgstr "" "\n" "Bu ayarları görmek için tıklayın." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "Etkilediği tüm ayarlar geçersiz kılındığı için bu ayar kullanılmamaktadır." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Etkileri" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr ".........den etkilenir" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Bu ayar her zaman, tüm ekstrüderler arasında paylaşılır. Buradan değiştirildiğinde tüm ekstrüderler için değer değiştirir." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Değer, her bir ekstruder değerinden alınır. " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3596,7 +3570,7 @@ msgstr "" "\n" "Profil değerini yenilemek için tıklayın." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3607,116 +3581,212 @@ msgstr "" "\n" "Hesaplanan değeri yenilemek için tıklayın." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "Önerilen" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "Özel" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "Aşamalı dolgu" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "Kademeli dolgu, yukarıya doğru dolgu miktarını kademeli olarak yükselecektir." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "Destek" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Modellerin askıda kalan kısımlarını destekleyen yapılar oluşturun. Bu yapılar olmadan, yazdırma sırasında söz konusu kısımlar düşebilir." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "Yapıştırma" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Bir kenar veya radye yazdırın. Bu nesnenizin etrafına veya altına daha sonra kesilmesi kolay olan düz bir alan sağlayacak." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Bazı profil ayarlarını değiştirdiniz. Bunları değişiklikleri kaydetmek istiyorsanız, özel moda gidin." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "Açık" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "Kapalı" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Deneysel" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "Profil" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Bazı ayar/geçersiz kılma değerleri profilinizde saklanan değerlerden farklıdır.\n" +"\n" +"Profil yöneticisini açmak için tıklayın." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Özel profiller" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "Yazıcı kurulumu devre dışı bırakıldı. G-code dosyası düzenlenemez." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "Yazıcı kontrolü" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "Jog Konumu" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "Jog Mesafesi" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "G-code Gönder" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "Bağlı yazıcıya özel bir G-code komutu gönderin. Komutu göndermek için 'enter' tuşuna basın." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Ekstrüder" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Sıcak ucun hedef sıcaklığı. Sıcak uç, bu sıcaklığa doğru ısıtılır veya soğutulur. Bu ayar 0 olarak belirlenirse sıcak uç ısıtma kapatılır." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Bu sıcak ucun geçerli sıcaklığı." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Sıcak ucun ön ısıtma sıcaklığı." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "İptal Et" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Ön ısıtma" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Yazdırma öncesinde sıcak ucu ısıt. Isıtma sırasında yazdırma işinizi ayarlamaya devam edebilirsiniz. Böylece yazdırmaya hazır olduğunuzda sıcak ucun ısınmasını beklemeniz gerekmez." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Bu ekstruderdeki malzemenin rengi." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Bu ekstruderdeki malzeme." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Bu ekstrudere takılan nozül." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "Yazıcı bağlı değil." + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "Yapı levhası" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Isıtılmış yatağın hedef sıcaklığı. Yatak, bu sıcaklığa doğru ısıtılır veya soğutulur. Bu ayar 0 olarak belirlenirse yatak ısıtma kapatılır." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Isıtılmış yatağın geçerli sıcaklığı." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Yatağın ön ısıtma sıcaklığı." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Yazdırma öncesinde yatağı ısıt. Isıtma sırasında yazdırma işinizi ayarlamaya devam edebilirsiniz. Böylece yazdırmaya hazır olduğunuzda yatağın ısınmasını beklemeniz gerekmez." @@ -3726,12 +3796,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoriler" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Genel" @@ -3746,17 +3816,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "Yerel yazıcılar" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&Görünüm" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "&Yazıcı" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&Malzeme" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Etkin Ekstruder olarak ayarla" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "Ekstruderi Etkinleştir" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "Ekstruderi Devre Dışı Bırak" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Kamera konumu" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Kamera görüşü" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Perspektif" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Ortografik" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "&Yapı levhası" @@ -3776,6 +3881,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Ayar Görünürlüğünü Yönet..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "&Kaydet..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "&Dışa Aktar..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "Seçimi Dışa Aktar..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3795,656 +3915,509 @@ msgctxt "@label" msgid "Number of Copies" msgstr "Kopya Sayısı" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "Kullanılabilir yapılandırmalar" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "Yapılandırmalar" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "Ekstrüder" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "Yapılandırma seç" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "Evet" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "Yapılandırmalar" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "Hayır" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "Kullanılabilir yapılandırmalar yazıcıdan yükleniyor..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "Yazıcı bağlı olmadığından yapılandırmalar kullanılamıyor." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "Özel" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "Yazıcı" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "Etkin" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "Malzeme" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "Bu malzeme kombinasyonuyla daha iyi yapıştırma için yapıştırıcı kullanın." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "%1 tanınmadığından bu yapılandırma kullanılamaz. Doğru malzeme profilini indirmek için lütfen %2 bölümünü ziyaret edin." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "Mağaza" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "En Son Öğeyi Aç" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Yazıcı Ayarları" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"Yazdırma Ayarı devre dışı\n" -"G-code dosyaları üzerinde değişiklik yapılamaz" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00sa 00dk" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "Zaman Özellikleri" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "Maliyet koşulları" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1 m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1 g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "Toplam:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "Önerilen Yazıcı Ayarları

    Seçilen yazıcı, malzeme ve kalite için önerilen ayarları kullanarak yazdırın." - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "Özel Yazıcı Ayarları

    Dilimleme işleminin her bir bölümünü detaylıca kontrol ederek yazdırın." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "Geçerli yazdırma" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "İşin Adı" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "Yazdırma süresi" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "Kalan tahmini süre" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "Görüntüleme tipi" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Nesne listesi" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "Merhaba %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Ultimaker hesabı" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "Çıkış yap" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "Giriş yap" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "Yeni nesil 3D yazdırma iş akışı" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- Yerel ağınız dışındaki Ultimaker yazıcılarına yazdırma görevleri gönderin\n" +"- Dilediğiniz yerde kullanmak üzere Ultimaker Cura ayarlarınızı bulutta depolayın\n" +"- Lider markalardan yazdırma profillerine özel erişim sağlayın" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "Hesap oluştur" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "Süre tahmini yok" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "Maliyet tahmini yok" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "Önizleme" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "Dilimleniyor..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "Dilimlenemedi" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "İşleme" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "Dilimle" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "Dilimleme sürecini başlat" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "İptal" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "Süre tahmini" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "Malzeme tahmini" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "Bağlı yazıcılar" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "Önayarlı yazıcılar" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "Yazıcı ekle" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "Yazıcıları yönet" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "Çevrimiçi Sorun Giderme Kılavuzunu" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "Tam Ekrana Geç" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Tam Ekrandan Çık" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Geri Al" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Yinele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Çıkış" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "3 Boyutlu Görünüm" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "Önden Görünüm" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "Yukarıdan Görünüm" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "Sol Taraftan Görünüm" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "Sağ Taraftan Görünüm" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura’yı yapılandır..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Yazıcı Ekle..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Yazıcıları Yönet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Malzemeleri Yönet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Profili geçerli ayarlar/geçersiz kılmalar ile güncelle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Geçerli değişiklikleri iptal et" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "G&eçerli ayarlardan/geçersiz kılmalardan profil oluştur..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profilleri Yönet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Çevrimiçi Belgeleri Göster" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Hata Bildir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "Yenilikler" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "Hakkında..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "Seçili Modeli Sil" msgstr[1] "Seçili Modelleri Sil" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Seçili Modeli Ortala" msgstr[1] "Seçili Modelleri Ortala" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Seçili Modeli Çoğalt" msgstr[1] "Seçili Modelleri Çoğalt" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Modeli Sil" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Modeli Platformda Ortala" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Modelleri Gruplandır" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Model Grubunu Çöz" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Modelleri Birleştir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Modeli Çoğalt..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "Tüm modelleri Seç" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "Yapı Levhasını Temizle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "Tüm Modelleri Yeniden Yükle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "Tüm Modelleri Tüm Yapı Levhalarına Yerleştir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Tüm Modelleri Düzenle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Seçimi Düzenle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Tüm Model Konumlarını Sıfırla" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "Tüm Model ve Dönüşümleri Sıfırla" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Dosya Aç..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Yeni Proje..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Motor Günlüğünü Göster..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Yapılandırma Klasörünü Göster" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "Paketlere gözat..." +msgid "&Marketplace" +msgstr "&Mağazayı Göster" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "Kenar Çubuğunu Genişlet/Daralt" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Lütfen bir 3D model yükleyin" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Dilimlemeye hazır" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Dilimleniyor..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "%1 Hazır" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Dilimlenemedi" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Dilimleme kullanılamıyor" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "Mevcut yazdırma görevini dilimlere ayır" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "Dilimleme sürecini iptal et" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Hazırla" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "İptal Et" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Etkin çıkış aygıtını seçin" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Dosya aç" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "Seçtiğiniz dosyalar arasında bir veya daha fazla proje dosyası bulduk. Tek seferde sadece bir proje dosyası açabilirsiniz. Sadece bu dosyalarda bulunan modelleri içe aktarmanızı öneririz. Devam etmek istiyor musunuz?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Tümünü model olarak içe aktar" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&Dosya" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "&Kaydet..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "&Dışa Aktar..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "Seçimi Dışa Aktar..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "Düz&enle" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "&Görünüm" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "&Ayarlar" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "&Yazıcı" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Malzeme" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Etkin Ekstruder olarak ayarla" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "Ekstruderi Etkinleştir" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "Ekstruderi Devre Dışı Bırak" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Yapı levhası" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profil" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "Uzantılar" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "&Araç kutusu" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "Tercihler" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "&Yardım" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Bu paket yeniden başlatmanın ardından kurulacak." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "Dosya Aç" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "Yeni proje" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Yeni bir proje başlatmak istediğinizden emin misiniz? Bu işlem yapı levhasını ve kaydedilmemiş tüm ayarları silecektir." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura Kapatılıyor" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Cura’dan çıkmak istediğinizden emin misiniz?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Dosya aç" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Paketi Kur" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Dosya Aç" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Seçtiğiniz dosyalar arasında bir veya daha fazla G-code dosyası bulduk. Tek seferde sadece bir G-code dosyası açabilirsiniz. Bir G-code dosyası açmak istiyorsanız, sadece birini seçiniz." -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "Projeyi Kaydet" +msgid "Add Printer" +msgstr "Yazıcı Ekle" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Baskı tepsisi" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Ekstruder %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & malzeme" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Kaydederken proje özetini bir daha gösterme" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "Kaydet" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "Katman Yüksekliği" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "Bu kalite profili mevcut malzemeniz ve nozül yapılandırması için kullanılamaz. Bu kalite profilini etkinleştirmek için lütfen bunları değiştirin" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Özel bir profil şu anda aktif. Kalite kaydırıcısını etkinleştirmek için Özel sekmesinde varsayılan bir kalite seçin" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "Yazdırma Hızı" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "Daha yavaş" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "Daha Hızlı" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "Bazı profil ayarlarını değiştirdiniz. Bunları değişiklikleri kaydetmek istiyorsanız, özel moda gidin." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "Dolgu" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Kademeli dolgu, yukarıya doğru dolgu miktarını kademeli olarak yükselecektir." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "Kademeli özelliği etkinleştir" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "Oluşturma Desteği" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Modellerin askıda kalan kısımlarını destekleyen yapılar oluşturun. Bu yapılar olmadan, yazdırma sırasında söz konusu kısımlar düşebilir." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Destek için kullanacağınız ekstruderi seçin. Bu, modelin havadayken düşmesini veya yazdırılmasını önlemek için modelin altındaki destekleyici yapıları güçlendirir." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Yapı Levhası Yapıştırması" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Bir kenar veya radye yazdırın. Bu nesnenizin etrafına veya altına daha sonra kesilmesi kolay olan düz bir alan sağlayacak." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "Yazıcı çıktılarınızı iyileştirmek için yardıma mı ihtiyacınız var?
    Ultimaker Sorun Giderme Kılavuzlarını okuyun" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "Yenilikler" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4453,75 +4426,503 @@ msgid_plural "Print Selected Models with %1" msgstr[0] "Seçili Modeli %1 ile Yazdır" msgstr[1] "Seçili Modelleri %1 ile Yazdır" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Değişiklikleri iptal et veya kaydet" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"Bazı profil ayarlarını özelleştirdiniz.\n" +"Bu ayarları kaydetmek veya iptal etmek ister misiniz?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Profil ayarları" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Varsayılan" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Özelleştirilmiş" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "İptal et ve bir daha sorma" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Kaydet ve bir daha sorma" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "İptal" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Kaydet" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Yeni Profil Oluştur" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Cura hakkında" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "sürüm: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "Kaynaşık filaman 3B yazdırma için kalıcı çözüm." + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura, topluluk iş birliği ile Ultimaker B.V. tarafından geliştirilmiştir.\n" +"Cura aşağıdaki açık kaynak projelerini gururla kullanmaktadır:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Grafik kullanıcı arayüzü" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "Uygulama çerçevesi" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "G-code oluşturucu" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "İşlemler arası iletişim kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "Programlama dili" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUI çerçevesi" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "GUI çerçeve bağlantıları" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C/C++ Bağlantı kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Veri değişim biçimi" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Bilimsel bilgi işlem için destek kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Daha hızlı matematik için destek kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "STL dosyalarının işlenmesi için destek kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "Düzlemsel nesnelerin işlenmesi için destek kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "Üçgen birleşimlerin işlenmesi için destek kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "Karmaşık ağların analizi için destek kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "3MF dosyalarının işlenmesi için destek kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "Dosya meta verileri ve akış için destek kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Seri iletişim kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "ZeroConf keşif kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Poligon kırpma kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTP kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "Yazı tipi" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVG simgeleri" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Linux çapraz-dağıtım uygulama dağıtımı" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Seçtiğiniz dosyalar arasında bir veya daha fazla proje dosyası bulduk. Tek seferde sadece bir proje dosyası açabilirsiniz. Sadece bu dosyalarda bulunan modelleri içe aktarmanızı öneririz. Devam etmek istiyor musunuz?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Tümünü model olarak içe aktar" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Projeyi Kaydet" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Ekstruder %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & malzeme" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "Malzeme" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Kaydederken proje özetini bir daha gösterme" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "Kaydet" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Proje dosyası aç" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Bu bir Cura proje dosyasıdır. Bir proje olarak açmak mı yoksa içindeki modelleri içe aktarmak mı istiyorsunuz?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "Seçimimi hatırla" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Proje olarak aç" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Modelleri içe aktar" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Motor Günlüğü" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "Yazıcı türü" +msgid "Empty" +msgstr "Boş" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "Malzeme" +msgid "Add a printer" +msgstr "Bir yazıcı ekleyin" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "Bu malzeme kombinasyonuyla yapışkan kullan" +msgid "Add a networked printer" +msgstr "Bir ağ yazıcısı ekleyin" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "Uyumluluğu Kontrol Et" +msgid "Add a non-networked printer" +msgstr "Ağ dışı bir yazıcı ekleyin" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Malzemenin uyumluluğunu Ultimaker.com üzerinden kontrol etmek için tıklayın." +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "IP adresine göre bir yazıcı ekleyin" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Sadece mevcut yapı levhasını görüntüle" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "Lütfen yazıcınızın IP adresini girin." -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "Tüm yapı levhalarına yerleştir" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "Ekle" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "Sadece mevcut yapı levhasına yerleştir" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "Cihaza bağlanılamadı." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "Bu adresteki yazıcı henüz yanıt vermedi." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "Bu yazıcı bilinmeyen bir yazıcı olduğu veya bir grubun ana makinesi olmadığı için eklenemiyor." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "Geri" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "Bağlan" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "Sonraki" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "Kullanıcı Anlaşması" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "Kabul ediyorum" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "Reddet ve kapat" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "Ultimaker Cura'yı geliştirmemiz yardım edin" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura, yazdırma kalitesini ve kullanıcı deneyimini iyileştirmek için anonim veri toplar. Bu veriler aşağıdakileri içerir:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "Makine türleri" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "Malzeme kullanımı" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "Dilim sayısı" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "Yazdırma ayarları" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Ultimaker Cura tarafından toplanan veriler herhangi bir kişisel bilgi içermeyecektir." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "Daha fazla bilgi" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Ultimaker Cura'daki yenilikler" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "Ağınızda yazıcı bulunamadı." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "Yenile" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "IP'ye göre bir yazıcı ekleyin" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "Sorun giderme" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "Yazıcı adı" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "Lütfen yazıcınıza bir isim verin" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "Yeni nesil 3D yazdırma iş akışı" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- Yerel ağınızın dışındaki Ultimaker yazıcılara yazdırma işi gönderin" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- Ultimaker Cura ayarlarınızı her yerde kullanabilmek için bulutta saklayın" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- Lider markalara ait yazdırma profillerine özel erişim sağlayın" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "Bitir" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "Bir hesap oluşturun" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "Ultimaker Cura'ya hoş geldiniz" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"Ultimaker Cura'yı kurmak\n" +" için lütfen aşağıdaki adımları izleyin. Bu sadece birkaç saniye sürecektir." + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "Başlayın" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3 Boyutlu Görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Önden Görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Yukarıdan Görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Sol görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Sağ görünüm" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4583,26 +4984,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Model Kontrol Edici" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Tüm ayarların içeriklerini bir HTML dosyasına aktarır." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Tanrı Modu" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Son kontrol edilen versiyondan bu yana yapılan değişiklikleri gösterir." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Değişiklik Günlüğü" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4613,15 +4994,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Aygıt Yazılımı Güncelleyici" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Düzleştirilmiş kalitede değişiklik profili oluşturur." +msgid "Provides support for reading AMF files." +msgstr "AMF dosyalarının okunması için destek sağlar." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "Profil düzleştirici" +msgid "AMF Reader" +msgstr "AMF Okuyucu" #: USBPrinting/plugin.json msgctxt "description" @@ -4633,26 +5014,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB yazdırma" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "Kullanıcıya bir kez lisansımızı kabul edip etmediğini sorun." - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "UserAgreement" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Bu formatı okuyan yazıcıları (Malyan, Makerbot ve diğer Sailfish tabanlı yazıcılar) desteklemek için Ortaya çıkacak parçanın X3G dosyası olarak kaydedilmesine izin verir." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4695,13 +5056,13 @@ msgstr "Çıkarılabilir Sürücü Çıkış Cihazı Eklentisi" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Ultimaker 3 yazıcıları için ağ bağlantılarını yönetir." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Ultimaker ağındaki yazıcılar için ağ bağlantılarını yönetir." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3 Ağ Bağlantısı" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker Ağ Bağlantısı" #: MonitorStage/plugin.json msgctxt "description" @@ -4763,6 +5124,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "Destek Silici" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "Ultimaker Biçim Paketlerinin okunması için destek sağlar." + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "UFP Okuyucu" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4823,6 +5194,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "3.3'dan 3.4'e Sürüm Yükseltme" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Yapılandırmaları Cura 4.3'ten Cura 4.4'e yükseltir." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "4.3'ten 4.4'e Sürüm Yükseltme" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4843,6 +5224,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "2.7’den 3.0’a Sürüm Yükseltme" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "Yapılandırmaları Cura 3.5’ten Cura 4.0’a yükseltir." + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "3.5’ten 4.0’a Sürüm Yükseltme" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4853,6 +5244,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "3.4’ten 3.5’e Sürüm Yükseltme" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "Yapılandırmaları Cura 4.0’dan Cura 4.1’e yükseltir." + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "4.0’dan 4.1’e Sürüm Yükseltme" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4863,6 +5264,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "3.0'dan 3.1'e Sürüm Yükseltme" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Yapılandırmaları Cura 4.1'den Cura 4.2'ye yükseltir." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Sürüm 4.1'den 4.2'ye Yükseltme" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4893,6 +5304,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "2.2’den 2.4’e Sürüm Yükseltme" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Yapılandırmaları Cura 4.2'den Cura 4.3'e yükseltir." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "4.2'den 4.3'e Sürüm Yükseltme" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4903,6 +5324,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Resim Okuyucu" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Model dosyalarını okuma desteği sağlar." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh Okuyucu" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4953,6 +5384,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "G-code Okuyucu" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "Yapılandırmanızı yedekleyin ve geri yükleyin." + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Cura Yedeklemeleri" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4973,6 +5414,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF Yazıcı" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "Cura’da ön izleme aşaması sunar." + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "Öz İzleme Aşaması" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4993,9 +5444,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura Profil Okuyucu" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "Lütfen kaydetmeden önce G-code oluşturun." +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Düzleştirme aktif ayarları" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Profil düzleştirilmiş ve aktifleştirilmiştir." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Dosyalara X3g yazar" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g Dosyası" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G Dosyası" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -5005,6 +5476,1032 @@ msgstr "Cura Profil Okuyucu" #~ msgid "Profile Assistant" #~ msgstr "Profil Asistanı" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Yeniden dene" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Baskı Hücresi" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Diğer modellerle örtüşmeyi destekleme" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Diğer modellerle örtüşme ayarlarını değiştir" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Diğer modellerle doldurma ayarlarını değiştir" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Var olanları güncelleştir" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Desteklenmiyor" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Önceki" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "İpucu" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Yazdırma denemesi" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Kontrol listesi" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Ultimaker 2 için yapılan herhangi bir yükseltmeyi seçiniz." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Bloku" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Kamera oluşturma: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Çok yapılı levha fonksiyonelliğini kullan" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Çok yapılı levha fonksiyonelliğini kullan (yeniden başlatma gerektirir)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Varsayılan profiller" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "arama ayarları" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Katman Yüksekliği" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Bu kalite profili mevcut malzemeniz ve nozül yapılandırması için kullanılamaz. Bu kalite profilini etkinleştirmek için lütfen bu öğeleri değiştirin." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Özel bir profil şu anda aktif. Kalite kaydırıcısını etkinleştirmek için Özel sekmesinde varsayılan bir kalite seçin" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Yapı levhası" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Baskı tepsisi" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Tüm ayarların içeriklerini bir HTML dosyasına aktarır." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Tanrı Modu" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Düzleştirilmiş kalitede değiştirilmiş bir profil oluşturun." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Profil Düzleştirici" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Malzeme üreticilerine bir drop-in UI kullanarak yeni malzeme ve kalite profili oluşturma imkanı sunar." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Baskı Profili Asistanı" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Ağ üzerinden bağlandı." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Ağ üzerinden bağlandı. Lütfen yazıcıya erişim isteğini onaylayın." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Ağ üzerinden bağlandı. Yazıcıyı kontrol etmek için erişim yok." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "İstenen yazıcıya erişim. Lütfen yazıcı isteğini onaylayın" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Kimlik doğrulama durumu" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Kimlik Doğrulama Durumu" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Erişim talebini yeniden gönder" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Kabul edilen yazıcıya erişim" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Bu yazıcıyla yazdırmaya erişim yok. Yazdırma işi gönderilemedi." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Erişim Talep Et" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Yazıcıya erişim talebi gönder" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Yeni bir yazdırma işi başlatılamıyor." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Ultimaker’ın yapılandırmasında yazdırmayı başlatmayı imkansız kılan bir sorun var. Devam etmeden önce lütfen bu sorunu çözün." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Uyumsuz yapılandırma" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Seçilen yapılandırma ile yazdırmak istediğinizden emin misiniz?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Yazıcı yapılandırması veya kalibrasyonu ile Cura arasında eşleşme sorunu var. En iyi sonucu almak istiyorsanız her zaman PrintCore ve yazıcıya eklenen malzemeler için dilimleme yapın." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Yeni işlerin gönderilmesi (geçici olarak) engellenmiştir, hala bir önceki yazdırma işi gönderiliyor." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Veriler yazıcıya gönderiliyor" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Veri gönderiliyor" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "{slot_number} yuvasına Printcore yüklenmedi" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "{slot_number} yuvasına malzeme yüklenmedi" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "Farklı PrintCore (Cura: {cura_printcore_name}, Yazıcı: ekstruder {extruder_id} için {remote_printcore_name}) seçildi" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Farklı malzeme (Cura: {0}, Yazıcı: {1}), ekstrüder {2} için seçildi" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Yazıcınız ile eşitleyin" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Cura’da geçerli yazıcı yapılandırmanızı kullanmak istiyor musunuz?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Yazıcınızda bulunan PrintCore’lar ve/veya malzemeler geçerli projenizde bulunandan farklı. En iyi sonucu almak istiyorsanız, her zaman PrintCore ve yazıcıya eklenen malzemeler için dilimleme yapın." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Monitörde Görüntüle" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name}, '{job_name}' yazdırmayı tamamladı." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "Yazdırma işi '{job_name}' tamamlandı." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Baskı tamamlandı" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Boş" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Bilinmiyor" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Bulut hatası" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Yazdırma görevi dışa aktarılamadı." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Buluta bağlanırken hata oluştu." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud İle Yükleniyor" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud Platformuna Bağlan" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Bu yazıcı için bir daha sorma." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Artık, Ultimaker hesabınızı kullanarak yazdırma görevlerini dilediğiniz yerden gönderebilir ve görüntüleyebilirsiniz." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Bağlı!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Bağlantınızı inceleyin" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "{0} ({1}) profilinde tanımlanan makine, mevcut makineniz ({2}) ile eşleşmiyor, içe aktarılamadı." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "{0} dosyasından profil içe aktarımı başarısız oldu:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Mevcut Bağlantı" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Bu yazıcı/grup Cura’ya zaten eklenmiş. Lütfen başka bir yazıcı/grup seçin." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "IP adresini veya yazıcınızın ağ üzerindeki ana bilgisayar adını girin." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Yazıcıya Bağlan" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura Ayarlar Kılavuzu" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Fareye doğru yakınlaştırma yapılması ortografik perspektifte desteklenmez." + +#~ msgid "Orthogonal" +#~ msgstr "Ortografik" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Ultimaker 3 yazıcıları için ağ bağlantılarını yönetir." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3 Ağ Bağlantısı" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Resim ve animasyonlar yardımıyla Cura'daki ayarlarla ilgili ekstra bilgi ve açıklama sunar." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Ayarlar Kılavuzu" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura Ayarlar Kılavuzu" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Ayarlar, ekstruderlerin mevcut kullanılabilirliğine uyacak şekilde değiştirildi: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Kullanıcı açıklaması" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Görüntülediğiniz yazıcı bulut yazıcısı olduğundan bu seçenekleri kullanamazsınız." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Cura Connect’e git" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Tüm işler yazdırıldı." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Yazdırma geçmişini görüntüle" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Yazıcınıza ağ üzerinden doğrudan bağlamak için, lütfen yazıcınızın ağ kablosu kullanan bir ağa bağlı olduğundan emin olun veya yazıcınızı WiFi ağına bağlayın. Cura'ya yazıcınız ile bağlanamıyorsanız g-code dosyalarını yazıcınıza aktarmak için USB sürücüsü kullanabilirsiniz.\n" +#~ "\n" +#~ "Aşağıdaki listeden yazıcınızı seçin:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Lütfen yazıcınızın bağlı olduğunu kontrol edin:\n" +#~ "- Yazıcının açık olduğunu kontrol edin.\n" +#~ "- Yazıcının ağa bağlı olduğunu kontrol edin." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Sadece mevcut yapı levhasını görüntüle" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Tüm yapı levhalarına yerleştir" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Sadece mevcut yapı levhasına yerleştir" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Bu formatı okuyan yazıcıları (Malyan, Makerbot ve diğer Sailfish tabanlı yazıcılar) desteklemek için Ortaya çıkacak parçanın X3G dosyası olarak kaydedilmesine izin verir." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Yazıcı hareketlerinde hata ayıklaması yapmak için takım yolu olarak SVG dosyalarını okur." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG Takım Yolu Okuyucu" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "Değişiklik Günlüğü" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "Değişiklik Günlüğünü Göster" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "Veri uzak kümeye gönderiliyor" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud Platformuna Bağlan" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura anonimleştirilmiş kullanım istatistikleri toplar." + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "Veri Toplanıyor" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "Daha fazla bilgi" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "Cura’nın gönderdiği veriler hakkında daha fazla bilgi alın." + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "İzin Verme" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "Programın gelecek sürümlerinin iyileştirilmesine yardımcı olmak için Cura’ya anonimleştirilmiş kullanım istatistikleri gönderme izni verin. Tercih ve ayarlarınızın bazıları, Cura sürümü ve dilimlere ayırdığınız modellerin sağlaması gönderilir." + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "Değerlendirme" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "Ağ etkin yazıcılar" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "Yerel yazıcılar" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "Geçerli sürümünüzle eşleşmeyen bir Cura yedeği geri yüklenmeye çalışıldı." + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "Makine Ayarları" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "Yazıcı Ayarları" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "Merkez nokta" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "Isıtılmış yatak" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "Yazıcı Başlığı Ayarları" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Yazıcı başlığının solundan nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Yazıcı başlığının ön kısmından nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Yazıcı başlığının sağından nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "Yazıcı başlığının arkasından nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "Portal yüksekliği" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "Nozül ucu ve portal sistemi (X ve Y aksları) arasındaki yükseklik farkı. “Birer birer” çıktı alırken önceki çıktılar ile portalın çakışmasını önlemek için kullanılır." + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "G-code’u Başlat" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "Başlangıçta yürütülecek G-code komutları." + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "G-code’u Sonlandır" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "Bitişte yürütülecek G-code komutları." + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "Nozül Ayarları" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "Yazıcı tarafından desteklenen nominal filaman çapı. Tam çap malzeme ve/veya profil tarafından etkisiz kılınacaktır." + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "Ekstruder G-Code'u Başlatma" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "Ekstruder G-Code'u Sonlandırma" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "Değişiklik Günlüğü" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "Kullanıcı Anlaşması" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "IP adresini veya yazıcınızın ağ üzerindeki ana bilgisayar adını girin." + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "Görüntülemek için lütfen ağa bağlı bir yazıcı seçin." + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "Lütfen Ultimaker yazıcınızı yerel ağınıza bağlayın." + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura, yazdırma kalitesini ve kullanıcı deneyimini iyileştirmek için Ultimaker’a anonim veri gönderir. Aşağıda, gönderilen tüm veriler örneklenmiştir." + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "Bu veriyi göndermek istemiyorum" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "Bu verinin Ultimaker’a gönderilmesine izin verin ve Cura’yı iyileştirmemize yardım edin" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "Yazdırma seçilmedi" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "Varsayılan olarak, beyaz pikseller ızgara üzerindeki yüksek noktaları ve siyah pikseller ızgara üzerindeki alçak noktaları gösterir. Bu durumu tersine çevirmek için bu seçeneği değiştirin, böylece siyah pikseller ızgara üzerindeki yüksek noktaları ve beyaz pikseller ızgara üzerindeki alçak noktaları gösterir." + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "Yazıcı Yükseltmelerini seçin" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "Destek için kullanacağınız ekstruderi seçin. Bu, modelin havadayken düşmesini veya yazdırılmasını önlemek için modelin altındaki destekleyici yapıları güçlendirir." + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Bu kalite profili mevcut malzemeniz ve nozül yapılandırması için kullanılamaz. Bu kalite profilini etkinleştirmek için lütfen bu öğeleri değiştirin" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "Yazıcı kurulumu devre dışı bırakıldı. G Code dosyası düzenlenemez." + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "Malzeme uyumluluğu çizelgesini göster" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "Türleri görüntüle" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "Merhaba " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- Yerel ağınız dışındaki Ultimaker yazıcılarına yazdırma görevleri gönderin\n" +#~ "- Dilediğiniz yerde kullanmak üzere Ultimaker Cura ayarlarınızı bulutta depolayın\n" +#~ "- Lider markalardan malzeme profillerine özel erişim sağlayın" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "Dilimlenemedi" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "Zaman özellikleri" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "Malzeme özellikleri" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "Cura’ya bir yazıcı ekleyin" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "Aşağıdaki listeden kullanmak istediğiniz yazıcıyı seçin.\n" +#~ "\n" +#~ "Yazıcınız listede yoksa “Özel” kategorisinden “Özel FFF Yazıcı” seçeneğini kullanın ve sonraki iletişim kutusunda ayarları yazıcınıza göre düzenleyin." + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "Üretici" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "Yazıcı Adı" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "Yazıcı Ekle" + +#~ msgid "Modify G-Code" +#~ msgstr "GCode Değiştir" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "Modeller yapı hacmine sığmadığı için dilimlenecek bir şey yok. Lütfen sığdırmak için modelleri ölçeklendirin veya döndürün." + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "Seçilen malzeme, seçilen makine veya yapılandırma ile uyumlu değil." + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "Uyumsuz Malzeme" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "{0} dosyasından profil içe aktarımı başarısız oldu: {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "Araç kutusu" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "Mevcut değil" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "Ulaşılamıyor" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "Mevcut" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Hazırlanıyor" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "Duraklatılıyor" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "Devam ediliyor" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "Bekleniyor: Kullanım dışı yazıcı" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "Bekleniyor: İlk mevcut olan" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "Bekleniyor: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "Yapılandırma değişikliği" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "Atanan yazıcı %1, aşağıdaki yapılandırma değişikliklerini gerektiriyor:" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "Geçersiz kıl" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "Bir yazdırma işini uyumsuz bir yapılandırmayla başlatmak 3D yazıcınıza zarar verebilir. Yapılandırmayı geçersiz kılmak ve %1 öğesini yazdırmak istediğinizden emin misiniz?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "Yapılandırmayı geçersiz kıl ve yazdırmayı başlat" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "Kuyruğu yönet" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "Yazdırma" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "Yazıcıları yönet" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "Yapılandırmayı Etkinleştir" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "Yazıcı yapılandırmasını Cura’ya yükle" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "Geçişleri Göster" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "Yardımcıları Göster" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "Kabuğu Göster" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "Dolguyu Göster" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "Bu verileri göndermek istemiyorum" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "Bu verilen Ultimaker’a gönderilmesine izin verin ve Cura’yı geliştirmemize yardım edin" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "Yazıcı türü:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "Bağlantı:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "Durum:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "Yazdırma işlemi bekleniyor" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "Yapı levhasının temizlenmesi bekleniyor" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "Yazdırma durduruluyor..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "Korunan profiller" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "Yazıcı Adı:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "Profil:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "Ara..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "Tümünü Daralt" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "Tümünü Genişlet" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "Kullanılabilir yapılandırmalar" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "Ekstrüder" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "Evet" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "Hayır" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "Yazıcı Ayarları" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "Yazdırma Ayarı devre dışı\n" +#~ "G-code dosyaları üzerinde değişiklik yapılamaz" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00sa 00dk" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "Zaman Özellikleri" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "Maliyet koşulları" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "Toplam:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "Önerilen Yazıcı Ayarları

    Seçilen yazıcı, malzeme ve kalite için önerilen ayarları kullanarak yazdırın." + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "Özel Yazıcı Ayarları

    Dilimleme işleminin her bir bölümünü detaylıca kontrol ederek yazdırın." + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "Motor Günlüğünü Göster..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "Paketlere gözat..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "Kenar Çubuğunu Genişlet/Daralt" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "Lütfen bir 3D model yükleyin" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "Dilimlemeye hazır" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "%1 Hazır" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "Dilimleme kullanılamıyor" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "Mevcut yazdırma görevini dilimlere ayır" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "Dilimleme sürecini iptal et" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "Hazırla" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "İptal Et" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "Etkin çıkış aygıtını seçin" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "&Görünüm" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "&Ayarlar" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "&Araç kutusu" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "Dosya Aç" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "Bu kalite profili mevcut malzemeniz ve nozül yapılandırması için kullanılamaz. Bu kalite profilini etkinleştirmek için lütfen bunları değiştirin" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "Yazdırma Hızı" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "Daha yavaş" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "Daha Hızlı" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "Kademeli özelliği etkinleştir" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "Oluşturma Desteği" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "Yapı Levhası Yapıştırması" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "Yazıcı çıktılarınızı iyileştirmek için yardıma mı ihtiyacınız var?
    Ultimaker Sorun Giderme Kılavuzlarını okuyun" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "Motor Günlüğü" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "Yazıcı türü" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "Bu malzeme kombinasyonuyla yapışkan kullan" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Uyumluluğu Kontrol Et" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "Malzemenin uyumluluğunu Ultimaker.com üzerinden kontrol etmek için tıklayın." + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "Son kontrol edilen versiyondan bu yana yapılan değişiklikleri gösterir." + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "Değişiklik Günlüğü" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "Düzleştirilmiş kalitede değişiklik profili oluşturur." + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "Profil düzleştirici" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "Kullanıcıya bir kez lisansımızı kabul edip etmediğini sorun." + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "UserAgreement" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "Lütfen kaydetmeden önce G-code oluşturun." + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "Aygıt Yazılımını Yükselt" @@ -5029,22 +6526,6 @@ msgstr "Cura Profil Okuyucu" #~ msgid "Confirm uninstall " #~ msgstr "Kaldırmayı onayla " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "Duraklatıldı" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "Önceki" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "Sonraki" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "İpucu" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1 m / ~ %2 g / ~ %4 %3" @@ -5053,26 +6534,10 @@ msgstr "Cura Profil Okuyucu" #~ msgid "%1m / ~ %2g" #~ msgstr "%1 m / ~ %2 g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "Yazdırma denemesi" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "Kontrol listesi" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "Aygıt Yazılımını Yükselt" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "Malzeme üreticilerine bir drop-in UI kullanarak yeni malzeme ve kalite profili oluşturma imkanı sunar." - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "Baskı Profili Asistanı" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "Doodle3D WiFi-Box ile yazdır" @@ -5165,10 +6630,6 @@ msgstr "Cura Profil Okuyucu" #~ msgid "Lost connection with the printer" #~ msgstr "Yazıcı bağlantısı koptu" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "Mevcut değil" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "Bilinmiyor" diff --git a/resources/i18n/tr_TR/fdmextruder.def.json.po b/resources/i18n/tr_TR/fdmextruder.def.json.po index f9519e7e68..43cfbf076c 100644 --- a/resources/i18n/tr_TR/fdmextruder.def.json.po +++ b/resources/i18n/tr_TR/fdmextruder.def.json.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -83,8 +83,8 @@ msgstr "Ekstruder G-Code'u Başlatma" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "Ekstruderi her açtığınızda g-code'u başlatın." +msgid "Start g-code to execute when switching to this extruder." +msgstr "Bu ekstrüdere geçiş yaparken çalıştırmak üzere G Code’u başlatın." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -123,8 +123,8 @@ msgstr "Ekstruder G-Code'u Sonlandırma" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "Ekstruderi her kapattığınızda g-code'u sonlandırın." +msgid "End g-code to execute when switching away from this extruder." +msgstr "Bu ekstrüderden geçiş yaparken çalıştırmak üzere G Code’u sonlandırın." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -225,3 +225,11 @@ msgstr "Çap" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Kullanılan filamanın çapını ayarlar. Bu değeri kullanılan filaman çapı ile eşitleyin." + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "Ekstruderi her açtığınızda g-code'u başlatın." + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "Ekstruderi her kapattığınızda g-code'u sonlandırın." diff --git a/resources/i18n/tr_TR/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po index 955eab686a..4b8b49454d 100644 --- a/resources/i18n/tr_TR/fdmprinter.def.json.po +++ b/resources/i18n/tr_TR/fdmprinter.def.json.po @@ -1,21 +1,21 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-11-06 15:36+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Turkish\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0100\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Turkish , Turkish \n" "Language: tr_TR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.1.1\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -59,7 +59,7 @@ msgid "" "." msgstr "" " \n" -" ile ayrılan, başlangıçta yürütülecek G-code komutları." +" ile ayrılan, başlangıçta yürütülecek G-code komutları" #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -73,7 +73,7 @@ msgid "" "." msgstr "" " \n" -" ile ayrılan, bitişte yürütülecek G-code komutları." +" ile ayrılan, bitişte yürütülecek G-code komutları" #: fdmprinter.def.json msgctxt "material_guid label" @@ -215,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Makinenin mevcut yapı levhasını ısıtıp ısıtmadığı." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Yapı Hacmi Sıcaklığı Dengesi Mevcut" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Makinenin yapı hacmi sıcaklığını dengeleyip dengelemediği." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -237,8 +247,8 @@ msgstr "Ekstruder dişli çarklarının sayısı. Ekstruder dişli çarkı besle #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" -msgstr "Etkinleştirilmiş Ekstruder sayısı" +msgid "Number of Extruders That Are Enabled" +msgstr "Etkinleştirilmiş Ekstruder Sayısı" #: fdmprinter.def.json msgctxt "extruders_enabled_count description" @@ -247,8 +257,8 @@ msgstr "Etkinleştirilmiş ekstruder dişli çarklarının sayısı; yazılımda #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" -msgstr "Dış nozül çapı" +msgid "Outer Nozzle Diameter" +msgstr "Dış Nozül Çapı" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter description" @@ -257,8 +267,8 @@ msgstr "Nozül ucunun dış çapı." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" -msgstr "Nozül uzunluğu" +msgid "Nozzle Length" +msgstr "Nozül Uzunluğu" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance description" @@ -267,8 +277,8 @@ msgstr "Nozül ucu ve yazıcı başlığının en alt parçası arasındaki yük #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" -msgstr "Nozül açısı" +msgid "Nozzle Angle" +msgstr "Nozül Açısı" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle description" @@ -277,8 +287,8 @@ msgstr "Yatay düzlem ve nozül ucunun sağ üzerinde bulunan konik parça aras #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" -msgstr "Isı bölgesi uzunluğu" +msgid "Heat Zone Length" +msgstr "Isı Bölgesi Uzunluğu" #: fdmprinter.def.json msgctxt "machine_heat_zone_length description" @@ -307,8 +317,8 @@ msgstr "Cura üzerinden sıcaklığın kontrol edilip edilmeme ayarı. Nozül s #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" -msgstr "Isınma hızı" +msgid "Heat Up Speed" +msgstr "Isınma Hızı" #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed description" @@ -317,7 +327,7 @@ msgstr "Ortalama nozül ısınmasının normal yazdırma sıcaklıkları ve bekl #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "Soğuma hızı" #: fdmprinter.def.json @@ -337,7 +347,7 @@ msgstr "Nozül soğumadan önce ekstruderin etkin olmaması gerektiği minimum s #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "G-code türü" #: fdmprinter.def.json @@ -402,8 +412,8 @@ msgstr "Malzemeyi geri çekmek için G1 komutlarında E özelliği yerine aygıt #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" -msgstr "İzin verilmeyen alanlar" +msgid "Disallowed Areas" +msgstr "İzin Verilmeyen Alanlar" #: fdmprinter.def.json msgctxt "machine_disallowed_areas description" @@ -422,8 +432,8 @@ msgstr "Nozülün girmesine izin verilmeyen alanlara sahip poligon listesi." #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" -msgstr "Makinenin ana poligonu" +msgid "Machine Head Polygon" +msgstr "Makinenin Ana Poligonu" #: fdmprinter.def.json msgctxt "machine_head_polygon description" @@ -432,8 +442,8 @@ msgstr "Yazıcı başlığının 2B taslağı (fan başlıkları hariç)." #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" -msgstr "Makinenin başlığı ve Fan poligonu" +msgid "Machine Head & Fan Polygon" +msgstr "Makinenin Başlığı ve Fan Poligonu" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" @@ -442,8 +452,8 @@ msgstr "Yazıcı başlığının 2B taslağı (fan başlıkları dahil)." #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" -msgstr "Portal yüksekliği" +msgid "Gantry Height" +msgstr "Portal Yüksekliği" #: fdmprinter.def.json msgctxt "gantry_height description" @@ -472,7 +482,7 @@ msgstr "Nozül iç çapı. Standart olmayan nozül boyutu kullanırken bu ayarı #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" +msgid "Offset with Extruder" msgstr "Ekstruder Ofseti" #: fdmprinter.def.json @@ -1020,6 +1030,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Alt katman sayısı. Bu değer, alt kalınlığıyla hesaplandığında tam sayıya yuvarlanır." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "İlk Alt Katmanlar" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Yapı plakasından itibaren ilk alt katman sayısı Bu değer, alt kalınlığıyla hesaplandığında tam sayıya yuvarlanır." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1270,6 +1290,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "En Keskin Köşe" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Z Dikişi Konumu" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "Bir katmandaki her kısmın basılmaya başlanacağı yere yakın konum." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Sol Arka" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Geri" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Sağ Arka" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Sağ" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Sağ Ön" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Ön" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Sol Ön" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Sol" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1297,8 +1367,8 @@ msgstr "Dikiş Köşesi Tercihi" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Modelin ana hatlarında yer alan köşelerin dikişin konumunu etkileyip etkilemediğini kontrol edin. Hiçbiri, köşelerin dikişin konumunu etkilemediği anlamına gelir. Dikişi Gizle, dikişin daha büyük olasılıkla bir iç köşe üzerinde oluşmasını sağlar. Dikişi Açığa Çıkar, dikişin daha büyük olasılıkla bir dış köşe üzerinde oluşmasını sağlar. Dikişi Gizle veya Açığa Çıkar, dikişin daha büyük olasılıkla bir iç veya dış köşe üzerinde oluşmasını sağlar." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Modelin ana hatlarında yer alan köşelerin dikişin konumunu etkileyip etkilemediğini kontrol edin. Hiçbiri, köşelerin dikişin konumunu etkilemediği anlamına gelir. Dikişi Gizle, dikişin daha büyük olasılıkla bir iç köşe üzerinde oluşmasını sağlar. Dikişi Açığa Çıkar, dikişin daha büyük olasılıkla bir dış köşe üzerinde oluşmasını sağlar. Dikişi Gizle veya Açığa Çıkar, dikişin daha büyük olasılıkla bir iç veya dış köşe üzerinde oluşmasını sağlar. Akıllı Gizleme, hem iç hem de dış köşelere izin verir ancak uygun olduğu durumlarda iç köşeleri daha sık seçer." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1320,6 +1390,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Dikişi Gizle veya Açığa Çıkar" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Akıllı Gizleme" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1332,13 +1407,13 @@ msgstr "Etkin olduğunda, z dikişi koordinatları her parçanın merkezine gör #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Küçük Z Açıklıklarını Yoksay" +msgid "No Skin in Z Gaps" +msgstr "Z Boşluklarında Dış Katman Oluşturma" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Modelde küçük dikey açıklıklar varsa bu dar yerlerdeki üst ve alt yüzeyleri oluşturmak için %5 oranında ek hesaplama süresi verilebilir. Bu gibi bir durumda ayarı devre dışı bırakın." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Modelde yalnızca birkaç katmanda küçük dikey boşluklar varsa normal şartlarda dar alandaki bu katmanların etrafında dış bir katman olmalıdır. Dikey boşluğun çok küçük olduğu durumlarda dış katman oluşturulmaması için bu ayarı etkinleştirin. Böylece baskı ve dilimleme süresi kısalır ancak teknik olarak bakıldığında havayla temasa açık dolgular kalır." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1357,8 +1432,8 @@ msgstr "Ütülemeyi Etkinleştir" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Malzeme ekstrude edilmeden önce üst yüzey üzerinden bir kere daha geçilir. Bu işlem en üstte bulunan plastiği eriterek daha pürüzsüz bir yüzey elde etmek için kullanılır." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Üst yüzey üzerinden bir kere daha geçilir, ancak bu defa çok küçük malzeme ekstrüde edilir. Bu işlem en üstte bulunan plastiği eriterek daha pürüzsüz bir yüzey oluşturur. Nozül haznesindeki baskı yüksek tutularak yüzeydeki kıvrımların malzemeyle dolması sağlanır." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1450,6 +1525,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Ütüleme sırasında oluşan maksimum anlık hız değişimi." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Yüzey Çakışma Oranı" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Duvarlar ile yüzey ekseni (uçları) arasındaki çakışma miktarını yüzey hatlarının hat genişliği ile en içteki duvarın bir yüzdesi olarak ayarlayın. Az miktar çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Eşit yüzey ve duvar hattı genişliği söz konusu olduğunda, %50’nin üstündeki yüzdelerde bu noktada yüzey ekstrüderinin nozül konumu halihazırda duvarın ortasına ulaşmış olacağından yüzeyin duvarı geçmiş olabileceğini unutmayın." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Yüzey Çakışması" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Duvarlar ile yüzey ekseni (uçları) arasındaki çakışma miktarını ayarlayın. Az miktar çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Eşit yüzey ve duvar hattı genişliği söz konusu olduğunda, duvar kalınlığının yarısından fazla değerlerde bu noktada yüzey ekstrüderinin nozül konumu halihazırda duvarın ortasına ulaşmış olacağından yüzeyin duvarı geçmiş olabileceğini unutmayın." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1615,6 +1710,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Dolgu şekli Y ekseni boyunca bu mesafe kadar kaydırılır." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Rastgele Boşluk Doldurma Başlat" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Önce hangi boşluk doldurma hattının yapılacağını rastgele belirler. Böylece tek bir segmentin en güçlü yapıda olması önlenir ancak bu işlem ilave gezinti hamlelerine neden olabilir." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1669,26 +1774,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Dolgu ve duvarlar arasındaki çakışma miktarı. Hafif bir çakışma duvarların dolguya sıkıca bağlanmasını sağlar." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Yüzey Çakışma Oranı" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Yüzey hattı genişliğinin yüzdesi olarak yüzey ve duvar çakışmasının miktarı. Ufak bir çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Bu, yüzey ve en iç duvar hat eninin ortalama yüzdesidir." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Yüzey Çakışması" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "Yüzey ve duvarlar arasındaki çakışma miktarı. Hafif bir çakışma duvarların yüzeye sıkıca bağlanmasını sağlar." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1869,6 +1954,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "Yazdırma için kullanılan varsayılan sıcaklık. Bu sıcaklık malzemenin “temel” sıcaklığı olmalıdır. Diğer tüm yazıcı sıcaklıkları bu değere dayanan ofsetler kullanmalıdır" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "Yapı Disk Bölümü Sıcaklığı" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "Baskı yapılacak ortamın sıcaklığı. Bu değer 0 ise yapı hacminin sıcaklığı ayarlanmaz." + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1979,6 +2074,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Yüzde cinsinden çekme oranı." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Kristalli Malzeme" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Bu malzeme ısıtıldığında temiz bir şekilde parçalanan tür de mi (kristalli) yoksa uzun iç içe polimer zincirler (kristal olmayan) oluşturan türde mi?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Sızma Önleme Geri Çekme Mesafesi" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Malzemenin sızma yapmaması için gereken geri çekilme mesafesidir." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Sızma Önleme Geri Çekme Hızı" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Filament değişimi sırasında malzemenin sızma yapmaması için gereken geri çekilme hızıdır." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Geri Çekme Pozisyonunda Durma Mesafesi" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Filamentin ısıtıldığında kopmadan esneyebileceği mesafedir." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Durma Payına Uygun Geri Çekme Hızı" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Filamentin kopmadan ne kadar hızlı geri çekilmesi gerektiğidir." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Kopma Geri Çekme Mesafesi" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Sorunsuz kopması için filamentin geri çekilmesi gereken mesafedir." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Kopma Geri Çekme Hızı" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "Sorunsuz kopması için filamentin geri çekilmesi gereken hızdır." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Kopma Sıcaklığı" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "Sorunsuz kopması için filament koptuğundaki sıcaklık değeridir." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1989,6 +2164,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Akış dengeleme: sıkıştırılan malzeme miktarı bu değerle çoğaltılır." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Duvar Akışı" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Duvar hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Dış Duvar Akışı" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "En dıştaki duvar hattının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "İç Duvar Akışı" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "En dıştaki duvar hattı hariç diğer duvar hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Üst/Alt Akış" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Üst/alt hatların akış telafisidir." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Üst Yüzeyin Dış Katman Akışı" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Baskının üst bölümlerindeki hatların akış telafisidir." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Dolgu Akışı" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Dolgu hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Etek/Kenar Akışı" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Etek veya kenar hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Destek Akışı" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Destek yapı hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Destek Ara Yüzeyi Akışı" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Destek çatı ve zemin hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Destek Çatı Akışı" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Destek çatı hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Destek Zemin Akışı" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Destek zemin hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "İlk Direk Akışı" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Temel kule hatlarının akış telafisidir." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2106,8 +2401,8 @@ msgstr "Destek Geri Çekmelerini Sınırlandır" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Düz çizgi üzerinde destekler arasında hareket ederken geri çekmeyi atla. Bu ayarın etkinleştirilmesi yazdırma süresi tasarrufu sağlar ancak destek yapısı içinde aşırı dizilime yol açabilir." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Düz hat üzerinde destekler arasında hareket ederken geri çekmeyi atlayın. Bu ayarın etkinleştirilmesi baskı süresini kısaltır ancak destek yapısında ölçüsüz dizilime yol açabilir." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2126,8 +2421,8 @@ msgstr "Nozül Anahtarı Geri Çekme Mesafesi" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "Geri çekme miktarı: Hiçbir geri çekme yapılmaması için 0’a ayarlayın. Bu genellikle ısı bölgesi uzunluğu ile aynıdır." +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "Ekstrüderler değiştirilirken oluşan geri çekme miktarı. Geri çekme yoksa 0 olarak ayarlayın. Bu genellikle ısı bölgesinin uzunluğuna eşittir." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2159,6 +2454,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Nozül değişiminin çekmesi sonucunda filamanın geriye doğru itildiği hız." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Nozül Değişimiyle Çalışmaya Hazırlanacak Ek Miktar" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Nozül değişiminin ardından çalışmaya hazırlanacak ek malzemedir." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2350,14 +2655,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Etek ve kenarın yazdırıldığı hız. Bu işlem normalde ilk katman hızında yapılır, ama etek ve kenarı farklı hızlarda yazdırmak isteyebilirsiniz." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Maksimum Z Hızı" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Z Atlama Hızı" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Yapı levhasının hareket ettiği maksimum hız. Bu hızı 0’a ayarlamak yazdırmanın maksimum z hızı için aygıt yazılımı kullanmasına neden olur." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Z Atlamaları için yapılan dikey Z hareketinin gerçekleştirileceği hızdır. Yapı plakasının veya makine tezgahının hareket etmesi daha zor olduğundan genelde baskı hızından daha düşüktür." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2786,8 +3091,8 @@ msgstr "Tarama Modu" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "Tarama, hareket sırasında nozülü daha önce yazdırılmış alanlarda tutar. Bu durum hareketleri biraz uzatır ancak geri çekme ihtiyacını azaltır. Tarama kapalıysa materyal geri çekilecektir, nozül de bir sonraki noktaya düz bir çizgi üzerinden gider. Üst/alt yüzey alanlarının üzerinde tarama yapmayarak sadece dolgu içerisinde tarama yapılabilir. “Dolgu İçinde” seçeneğinin daha önceki Cura sürümlerinde bulunan “Yüzey Alanında Değil” seçeneğiyle tamamen aynı davranışı gösterdiğini unutmayın." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "Tarama, hareket sırasında nozülü daha önce yazdırılmış alanlarda tutar. Bu durum hareketleri biraz uzatır ancak geri çekme ihtiyacını azaltır. Tarama kapalıysa malzeme geri çekilecektir, nozül ise bir sonraki noktaya düz bir çizgi üzerinden gider. Üst/alt yüzey alanlarının üzerinde tarama yapılmayabilir veya sadece dolgu içerisinde tarama yapılabilir." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2859,16 +3164,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Hareket esnasında atlama yaparken nozül ve daha önce yazdırılmış olan bölümler arasındaki mesafe." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Katmanları Aynı Bölümle Başlatın" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Bir önceki katmanın bitirdiği bir parçayı yeni bir katmanla tekrar yazdırmamak için, her bir katmanda nesneyi yazdırmaya aynı noktanın yakınından başlayın. Bu şekilde daha iyi çıkıntılar ve küçük parçalar oluşturulur, ancak yazdırma süresi uzar." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2929,6 +3224,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "Makine bir ekstruderden diğerine geçtikten sonra, nozül ve baskı arasında açıklık oluşması için yapı levhası indirilir. Nozülün baskı dışına malzeme sızdırmasını önler." +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "Ekstruder Yüksekliği Değişimi Sonrasındaki Z Sıçraması" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "Ekstruder değişiminden sonra Z Sıçraması yapılırken oluşan yükseklik farkı." + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3199,6 +3504,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "Çapraz" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "Gyroid" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3260,14 +3570,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Yazdırılan ilk katman destek yapı hatları arasındaki mesafedir. Bu ayar destek yoğunluğuna göre hesaplanır." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Destek Dolgu Hattı Yönü" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Destekler için dolgu şeklinin döndürülmesi. Destek dolgu şekli yatay düzlemde döndürülür." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Kullanılacak tam hat yönlerinin listesi. Katmanlar ilerledikçe listedeki öğeler sırayla kullanılır ve listenin sonuna gelindiğinde tekrar baştan başlanır. Liste öğeleri virgülle ayrılır ve listenin tamamı köşeli paranteze alınır. Varsayılan ayar listenin boş olmasıdır ve bu durumda varsayılan açı 0'dır." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3396,8 +3706,8 @@ msgstr "Destek Birleşme Mesafesi" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "X/Y yönündeki destek yapıları arasındaki maksimum mesafe. Ayrı yapılar birbirlerine bu değerden daha yakınsa yapılar birleşip tek olur." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "X/Y yönlerinde destek yapıları arasındaki maksimum mesafedir. Ayrı yapılar birbirlerine bu değerden daha yakınsa yapılar birleşerek tek bir yapı haline gelir." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3439,6 +3749,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "Yoğunluğun yarısına inmeden önce belirli bir yoğunluktaki destek dolgusunun yüksekliği." +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "Minimum Destek Bölgesi" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "Destek poligonları için minimum alan boyutu. Alanı bu değerden daha düşük olan poligonlar oluşturulmayacaktır." + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3664,6 +3984,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Zikzak" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "Minimum Destek Arayüzü Bölgesi" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Destek arayüzü çokgenlerinin minimum alan boyutu. Alanı bu değerden küçük olan poligonlar normal destekle basılacaktır." + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "Minimum Destek Çatısı Bölgesi" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Destek çatılarının minimum alan boyutu. Alanı bu değerden küçük olan poligonlar normal destekle basılacaktır." + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "Minimum Destek Zemini Bölgesi" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Destek tabanlarının minimum alan boyutu. Alanı bu değerden küçük olan poligonlar normal destekle basılacaktır." + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "Destek Arayüzü Yatay Büyüme" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "Destek arayüzü poligonlarına uygulanan ofset miktarı." + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "Destek Çatısı Yatay Büyüme" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "Destek çatılarına uygulanan ofset miktarı." + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "Destek Zemini Yatay Büyüme" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "Destek zeminlerine uygulanan ofset miktarı." + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Destek Arabirim Hattı Yönleri" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Kullanılacak tam hat yönlerinin listesi. Katmanlar ilerledikçe listedeki öğeler sırayla kullanılır ve listenin sonuna gelindiğinde tekrar baştan başlanır. Liste öğeleri virgülle ayrılır ve listenin tamamı köşeli paranteze alınır. Varsayılan ayar, varsayılan açıların kullanıldığı (ara birimler biraz kalınsa 45 ile 135 derece arasında değişir veya 90 derecedir) boş listedir." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Destek Çatı Hattı Yönleri" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Kullanılacak tam hat yönlerinin listesi. Katmanlar ilerledikçe listedeki öğeler sırayla kullanılır ve listenin sonuna gelindiğinde tekrar baştan başlanır. Liste öğeleri virgülle ayrılır ve listenin tamamı köşeli paranteze alınır. Varsayılan ayar, varsayılan açıların kullanıldığı (ara birimler biraz kalınsa 45 ile 135 derece arasında değişir veya 90 derecedir) boş listedir." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Destek Zemin Hattı Yönleri" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Kullanılacak tam hat yönlerinin listesi. Listedeki öğeler katmanlar ilerledikçe sırayla kullanılır ve listenin sonuna gelindiğinde tekrar baştan başlanır. Liste öğeleri virgülle ayrılır ve listenin tamamı köşeli paranteze alınır. Varsayılan ayar, varsayılan açıların kullanıldığı (ara birimler biraz kalınsa 45 ile 135 derece arasında değişir veya 90 derecedir) boş listedir." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3705,14 +4115,14 @@ msgid "The diameter of a special tower." msgstr "Özel bir direğin çapı." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Minimum Çap" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Kule Destekli Maksimum Çap" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Özel bir destek direği ile desteklenecek küçük bir alanın X/Y yönündeki minimum çapı." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Özel bir destek kulesiyle desteklenecek küçük bir alanın X/Y yönlerindeki maksimum çapıdır." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4208,16 +4618,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Malzemenin hazırlanmasına yardımcı olan yazıcının yanındaki direği her nozül değişiminden sonra yazdırın." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Dairesel İlk Direk" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "İlk direği dairesel bir şekil olarak yapın." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4258,16 +4658,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "İlk direk konumunun y koordinatı." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "İlk Direk Akışı" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Akış dengeleme: sıkıştırılan malzeme miktarı bu değerle çoğaltılır." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4278,6 +4668,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "Bir nozül ile ilk direği yazdırdıktan sonra, diğer nozülden ilk direğe sızdırılan malzemeyi silin." +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "Astarlama Direği Kenarı" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "Model ihtiyaç duymasa da astarlama direkleri bir kenarın sağladığı ekstra yapışkanlığa ihtiyaç duyabilir. Şu anda \"radye\" yapışma tipi ile birlikte kullanılamamaktadır." + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4398,6 +4798,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Basılan ilk katmanın altındaki varsa boş katmanları kaldır. Bu ayarın devre dışı bırakılması, Dilimleme Toleransı Dışlayıcı veya Ortalayıcı olarak ayarlanmışsa, boş ilk katmanlar oluşmasına neden olabilir." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maksimum Çözünürlük" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Bir çizginin dilimlemeden sonraki minimum boyutu. Bu değer artırıldıktan sonra örgünün çözünürlüğü düşer. Bu, yazıcının g-kodunu işlemek için gereken hıza yetişmesine olanak tanır ve örtünün zaten işlenemeyecek ayrıntılarını kaldırarak dilimleme hızını artırır." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Maksimum Hareket Çözünürlüğü" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Bir hareket çizgisinin dilimlemeden sonraki minimum boyutu. Bunu artırmanız durumunda, hareketlerde köşelerin yumuşaklığı azalır. Bu seçenek, yazıcının g-code işlemek için gereken hızı yakalamasına olanak tanıyabilir ancak model kaçınmasının doğruluğunu azaltabilir." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Maksimum Sapma" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "Maksimum Çözünürlük ayarı için çözünürlük azaltıldığında izin verilen maksimum sapma. Bu değeri artırırsanız baskının doğruluğu azalacak ancak g kodu daha küçük olacaktır. Maksimum Sapma, Maksimum Çözünürlük için sınırdır, dolayısıyla iki değer çelişirse Maksimum Sapma her zaman doğru kabul edilir." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4560,8 +4990,8 @@ msgstr "Helezon Şeklinde Düzeltme" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Z dikişinin görünürlüğünü azaltmak için helezon şeklinde konturları düzeltin (Z-dikişi yazdırma durumunda çok az görünür olmalı, ancak tabaka görünümünde halen görünür olmalıdır). Düzeltme işleminin ince yüzey detaylarında bulanıklığa neden olabileceğini unutmayınız." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Z dikişinin görünürlüğünü azaltmak için helezon şeklindeki konturları düzeltin (Z dikişi baskıda zor görünmeli ancak katman görünümünde görünür olmalıdır). Düzeltme işleminin ince yüzey detaylarında bulanıklığa neden olabileceğini göz önünde bulundurun." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4773,26 +5203,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Bu miktardan daha kısa çevre uzunluğuna sahip dilimlenmiş katmanlardaki poligonlar filtre ile elenecektir. Daha düşük değerler dilimleme süresini uzatacak ancak daha yüksek çözünürlükte bir ağ oluşturacaktır. Genellikle yüksek çözünürlüklü SLA yazıcılarına yöneliktir ve çok fazla detay içeren çok küçük 3D modellerinde kullanılır." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Maksimum Çözünürlük" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Bir çizginin dilimlemeden sonraki minimum boyutu. Bu değer artırıldıktan sonra örgünün çözünürlüğü düşer. Bu, yazıcının g-kodunu işlemek için gereken hıza yetişmesine olanak tanır ve örtünün zaten işlenemeyecek ayrıntılarını kaldırarak dilimleme hızını artırır." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Maksimum Hareket Çözünürlüğü" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Bir hareket çizgisinin dilimlemeden sonraki minimum boyutu. Bunu artırmanız durumunda, hareketlerde köşelerin yumuşaklığı azalır. Bu seçenek, yazıcının g-code işlemek için gereken hızı yakalamasına olanak tanıyabilir ancak model kaçınmasının doğruluğunu azaltabilir." - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4933,16 +5343,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Ekstrüzyon yolu hızına göre tarama sırasındaki hareket hızı. Tarama hareketi sırasında bowden tüpündeki basınç düştüğü için değerin %100’ün altında olması öneriliyor." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Dış Katman Rotasyonunu Değiştir" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Üst/alt katmanların yazdırıldığı yönü değiştirin. Normal koşullarda sadece çapraz şekilde yazdırılırlar. Bu ayar sadece-X ve sadece-Y yönlerini ekler." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5050,8 +5450,8 @@ msgstr "Konik Desteği Etkinleştir" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Deneysel Özellik: Destek alanlarını alt kısımlarda çıkıntılardakinden daha küçük yapar." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Alttaki destek alanlarını çıkıntıda olanlardan daha küçük yapın." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5115,23 +5515,24 @@ msgstr "Her bir hat dilimine tanıtılan rastgele noktalar arasındaki ortalama #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Akış hızı dengelemesi maksimum ekstrüzyon kayması" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Dengelenecek, mm cinsinden maksimum mesafe." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "Akış hızındaki değişiklikleri telafi etmek için filamentin hareket ettirileceği mm cinsinden maksimum mesafe." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Akış hızı dengeleme çarpanı" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Akış hızından -> mesafeye dönüştürme için çarpan." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Akış hızındaki değişiklikleri telafi edebilmek için filamentin bir saniyelik ekstrüzyonda hareket ettirileceği mesafenin yüzdesi olarak filamentin ne kadar" +" uzağa hareket ettirileceği." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5394,7 +5795,7 @@ msgstr "Nozül ve aşağı yöndeki hatlar arasındaki mesafe. Daha büyük aç #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "Uyarlanabilir Katmanların Kullanımı" #: fdmprinter.def.json @@ -5404,8 +5805,8 @@ msgstr "Uyarlanabilir katmanlar modelin şekline bağlı olarak katman yüksekli #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" -msgstr "Uyarlanabilir katmanların azami değişkenliği" +msgid "Adaptive Layers Maximum Variation" +msgstr "Uyarlanabilir Katmanların Azami Değişkenliği" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation description" @@ -5414,8 +5815,8 @@ msgstr "Taban katmanı yüksekliğine göre izin verilen azami yükseklik." #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" -msgstr "Uyarlanabilir katmanların değişkenlik adım boyu" +msgid "Adaptive Layers Variation Step Size" +msgstr "Uyarlanabilir Katmanların Değişkenlik Adım Boyu" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step description" @@ -5424,13 +5825,14 @@ msgstr "Bir önceki ve bir sonraki katman yüksekliği arasındaki yükseklik fa #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "Uyarlanabilir katman eşiği" +msgid "Adaptive Layers Topography Size" +msgstr "Uyarlanabilir Katman Topografisi Boyutu" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Daha küçük bir katmanın kullanılıp kullanılmayacağını belirleyen eşik. Bu rakam bir katmandaki en dik eğimin tanjantına eşittir." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "İki bitişik katman arasındaki hedef yatay mesafe. Bu ayarın azaltılması, katmanların kenarlarını birbirine yakınlaştırmak için daha ince katmanlar kullanılmasına" +" neden olur." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5439,8 +5841,9 @@ msgstr "Çıkıntılı Duvar Açısı" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Bu açıdan daha fazla çıkıntı yapan duvarlar çıkıntılı duvar ayarları kullanılarak yazdırılacaktır. Değer 90 ise hiçbir duvar çıkıntılı kabul edilmeyecektir." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Bu açıdan daha yüksek çıkıntıya sahip duvarlar çıkıntılı duvar ayarları kullanılarak basılacaktır. Değer 90 ise hiçbir duvarda çıkıntı olmadığı varsayılacaktır." +" Destek ile desteklenen çıkıntılar da çıkıntı olarak değerlendirilmeyecektir." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5642,6 +6045,196 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "Üçüncü köprü yüzey alanı katmanı yazdırılırken kullanılacak yüzde fan hızı." +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "Katmanlar Arasındaki Sürme Nozülü" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "Katmanlar arasına sürme nozülü G-code'unun dahil edilip edilmeyeceği. Bu ayarın etkinleştirilmesi katman değişiminde geri çekme davranışını etkileyebilir. Sürme komutunun çalıştığı katmanlarda geri çekmeyi kontrol etmek için lütfen Sürme Geri Çekme ayarlarını kullanın." + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "Sürme Hareketleri Arasındaki Malzeme Hacmi" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "Başka bir sürme nozülü başlatılmadan önce ekstrude edilebilecek maksimum malzeme miktarı." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "Sürme Geri Çekmenin Etkinleştirilmesi" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "Nozül yazdırılamayan alana doğru hareket ettiğinde filamanı geri çeker." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "Sürme Geri Çekme Mesafesi" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "Filamanın sürme dizisi sırasında sızıntı yapmaması için filanın geri çekilme miktarı." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "Sürme Geri Çekme Sırasındaki İlave Astar Miktarı" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "Sürme hareketi sırasında bazı malzemeler eksilebilir; bu malzemeler burada telafi edebilir." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "Sürme Geri Çekme Hızı" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "Filamanın geri çekildiği ve sürme geri çekme hareketi sırasında astarlandığı hız." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "Sürme Geri Çekme Sırasındaki Çekim Hızı" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "Filamanın sürme geri çekme hareketi sırasında geri çekildiği hız." + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Geri Çekme Sırasındaki Astar Hızı" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "Filamanın sürme geri çekme hareketi sırasında astarlandığı hız." + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "Sürmeyi Durdurma" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "Geri çekmenin geri alınmasından sonraki duraklama." + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "Geri Çekildiğinde Sürme Z Sıçraması" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "Bir geri çekme işlemi yapıldığında baskı tepsisi nozül ve baskı arasında açıklık oluşturmak üzere alçaltılır. Bu, hareket sırasında nozülün baskıya çarpmasını önleyerek baskının devrilip baskı tepsisinden düşmesini önler." + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "Sürme Z Sıçraması Yüksekliği" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "Z Sıçraması yapılırken oluşan yükseklik farkı." + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "Sürme Sıçrama Hızı" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "Sıçrama sırasında z eksenini hareket ettirmek için gerekli hız." + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "Sürme Fırçası X Konumu" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "Sürme komutunun başlatılacağı X konumu." + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "Sürme Tekrar Sayısı" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "Nozülün fırçadan geçirilme sayısı." + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "Sürme Hareket Mesafesi" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "Başlığı fırçada ileri ve geri hareket ettirme mesafesi." + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Maksimum Küçük Delik Boyutu" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Bu değerden daha küçük çaptaki delik ve parça ana hatları Küçük Özellik Hızı kullanılarak basılacaktır." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Maksimum Küçük Özellik Uzunluğu" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Bu uzunluktan kısa olan özellik ana hatları Kısa Özellik Hızı kullanılarak basılacaktır." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Küçük Özellik Hızı" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Küçük özellikler normal baskı hızının bu yüzdesinde basılacaktır. Daha yavaş baskı, yapışma ve doğruluğu artırmaya yardımcı olabilir." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Küçük Özellik İlk Katman Hızı" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "İlk katman üzerindeki küçük özellikler normal baskı hızının bu yüzdesinde basılacaktır. Daha yavaş baskı, yapışma ve doğruluğu artırmaya yardımcı olabilir." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5702,6 +6295,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Modeli dosyadan indirirken modele uygulanacak olan dönüşüm matrisi." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Destek arayüzü poligonları için minimum alan boyutu. Alanı bu değerden daha düşük olan poligonlar oluşturulmayacaktır." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Destek çatıları için minimum alan boyutu. Alanı bu değerden daha düşük olan poligonlar oluşturulmayacaktır." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Destek zeminleri için minimum alan boyutu. Alanı bu değerden daha düşük olan poligonlar oluşturulmayacaktır." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Dış Katman Rotasyonunu Değiştir" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Üst/alt katmanların yazdırıldığı yönü değiştirin. Normal koşullarda sadece çapraz şekilde yazdırılırlar. Bu ayar sadece-X ve sadece-Y yönlerini ekler." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Akış hızı dengelemesi maksimum ekstrüzyon kayması" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Dengelenecek, mm cinsinden maksimum mesafe." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Akış hızı dengeleme çarpanı" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Akış hızından -> mesafeye dönüştürme için çarpan." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Uyarlanabilir Katman Eşiği" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Daha küçük bir katmanın kullanılıp kullanılmayacağını belirleyen eşik. Bu rakam bir katmandaki en dik eğimin tanjantına eşittir." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Bu açıdan daha fazla çıkıntı yapan duvarlar çıkıntılı duvar ayarları kullanılarak yazdırılacaktır. Değer 90 ise hiçbir duvar çıkıntılı kabul edilmeyecektir." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Küçük özellikler normal baskı hızının bu yüzdesinde basılacaktır. Daha yavaş baskı, yapışma ve doğruluğu artırmaya yardımcı olabilir." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "İlk Katman Hızı" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "İlk katman üzerindeki küçük özellikler normal baskı hızının bu yüzdesinde basılacaktır. Daha yavaş baskı, yapışma ve doğruluğu artırmaya yardımcı olabilir." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Malzeme ekstrude edilmeden önce üst yüzey üzerinden bir kere daha geçilir. Bu işlem en üstte bulunan plastiği eriterek daha pürüzsüz bir yüzey elde etmek için kullanılır." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Katmanları Aynı Bölümle Başlatın" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Bir önceki katmanın bitirdiği bir parçayı yeni bir katmanla tekrar yazdırmamak için, her bir katmanda nesneyi yazdırmaya aynı noktanın yakınından başlayın. Bu şekilde daha iyi çıkıntılar ve küçük parçalar oluşturulur, ancak yazdırma süresi uzar." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Destekler için dolgu şeklinin döndürülmesi. Destek dolgu şekli yatay düzlemde döndürülür." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "Maksimum Çözünürlük ayarı için çözünürlüğü azaltırken izin verilen maksimum sapma. Bunu arttırırsanız baskının doğruluğu azalacak fakat g-code daha küçük olacaktır." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-code Türü" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Modelin ana hatlarında yer alan köşelerin dikişin konumunu etkileyip etkilemediğini kontrol edin. Hiçbiri, köşelerin dikişin konumunu etkilemediği anlamına gelir. Dikişi Gizle, dikişin daha büyük olasılıkla bir iç köşe üzerinde oluşmasını sağlar. Dikişi Açığa Çıkar, dikişin daha büyük olasılıkla bir dış köşe üzerinde oluşmasını sağlar. Dikişi Gizle veya Açığa Çıkar, dikişin daha büyük olasılıkla bir iç veya dış köşe üzerinde oluşmasını sağlar." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Küçük Z Açıklıklarını Yoksay" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Modelde küçük dikey açıklıklar varsa bu dar yerlerdeki üst ve alt yüzeyleri oluşturmak için %5 oranında ek hesaplama süresi verilebilir. Bu gibi bir durumda ayarı devre dışı bırakın." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "Yapı disk bölümü için kullanılan sıcaklık. Bu 0 olursa yapı disk bölümü sıcaklığı ayarlanmaz." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Düz çizgi üzerinde destekler arasında hareket ederken geri çekmeyi atla. Bu ayarın etkinleştirilmesi yazdırma süresi tasarrufu sağlar ancak destek yapısı içinde aşırı dizilime yol açabilir." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Maksimum Z Hızı" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Yapı levhasının hareket ettiği maksimum hız. Bu hızı 0’a ayarlamak yazdırmanın maksimum z hızı için aygıt yazılımı kullanmasına neden olur." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "X/Y yönündeki destek yapıları arasındaki maksimum mesafe. Ayrı yapılar birbirlerine bu değerden daha yakınsa yapılar birleşip tek olur." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Minimum Çap" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Özel bir destek direği ile desteklenecek küçük bir alanın X/Y yönündeki minimum çapı." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Dairesel İlk Direk" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "İlk direği dairesel bir şekil olarak yapın." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Akış dengeleme: sıkıştırılan malzeme miktarı bu değerle çoğaltılır." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Z dikişinin görünürlüğünü azaltmak için helezon şeklinde konturları düzeltin (Z-dikişi yazdırma durumunda çok az görünür olmalı, ancak tabaka görünümünde halen görünür olmalıdır). Düzeltme işleminin ince yüzey detaylarında bulanıklığa neden olabileceğini unutmayınız." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Deneysel Özellik: Destek alanlarını alt kısımlarda çıkıntılardakinden daha küçük yapar." + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "Etkinleştirilmiş Ekstruder sayısı" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "Dış nozül çapı" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "Nozül uzunluğu" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "Nozül açısı" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "Isı bölgesi uzunluğu" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "Isınma hızı" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "Soğuma hızı" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "G-code türü" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "İzin verilmeyen alanlar" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "Makinenin ana poligonu" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "Makinenin başlığı ve Fan poligonu" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "Portal yüksekliği" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "Ekstruder Ofseti" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "Uyarlanabilir Katmanların Kullanımı" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "Uyarlanabilir katmanların azami değişkenliği" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "Uyarlanabilir katmanların değişkenlik adım boyu" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "Uyarlanabilir katman eşiği" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Yüzey hattı genişliğinin yüzdesi olarak yüzey ve duvar çakışmasının miktarı. Ufak bir çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Bu, yüzey ve en iç duvar hat eninin ortalama yüzdesidir." + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "Yüzey ve duvarlar arasındaki çakışma miktarı. Hafif bir çakışma duvarların yüzeye sıkıca bağlanmasını sağlar." + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "Geri çekme miktarı: Hiçbir geri çekme yapılmaması için 0’a ayarlayın. Bu genellikle ısı bölgesi uzunluğu ile aynıdır." + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "Tarama, hareket sırasında nozülü daha önce yazdırılmış alanlarda tutar. Bu durum hareketleri biraz uzatır ancak geri çekme ihtiyacını azaltır. Tarama kapalıysa materyal geri çekilecektir, nozül de bir sonraki noktaya düz bir çizgi üzerinden gider. Üst/alt yüzey alanlarının üzerinde tarama yapmayarak sadece dolgu içerisinde tarama yapılabilir. “Dolgu İçinde” seçeneğinin daha önceki Cura sürümlerinde bulunan “Yüzey Alanında Değil” seçeneğiyle tamamen aynı davranışı gösterdiğini unutmayın." + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "Üst/alt yüzey yollarını yan yana ise bağla. Eş merkezli şekil için bu ayarı etkinleştirmek hareket süresini önemli ölçüde kısaltır; ancak bağlantılar dolgunun üzerinde meydana gelebileceğinden bu özellik üst yüzeyin kalitesini düşürebilir." diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index cecca58cdd..dc4252852f 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-11-06 15:38+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: PCDotFan , Bothof \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0100\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Chinese , PCDotFan , Chinese \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.1.1\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "打印机设置" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "GCode 文件" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter 不支持非文本模式。" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "导出前请先准备 G-code。" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "三维模型的助理" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,66 +70,50 @@ msgstr "" "

    找出如何确保最好的打印质量和可靠性.

    \n" "

    查看打印质量指南

    " -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "显示更新日志" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "更新固件" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "合并有效设置" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF 文件" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "配置文件已被合并并激活。" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 联机打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "通过 USB 联机打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "通过 USB 联机打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "通过 USB 连接" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "正在进行 USB 打印,关闭 Cura 将停止此打印。您确定吗?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G 文件" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "正在进行打印在上一次打印完成之前,Cura 无法通过 USB 启动另一次打印。" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "写入 X3g 到文件" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g 文件" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "正在进行打印" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -143,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "GCodeGzWriter 不支持文本模式。" #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Ultimaker 格式包" @@ -164,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "保存到可移动磁盘 {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "没有可进行写入的文件格式!" @@ -201,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "无法保存到可移动磁盘 {0}:{1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "错误" @@ -232,8 +217,9 @@ msgstr "弹出可移动设备 {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "警告" @@ -260,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "可移动磁盘" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "通过网络打印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "通过网络打印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "已通过网络连接。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "已通过网络连接。请在打印机上接受访问请求。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "已通过网络连接,但没有打印机的控制权限。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "已发送打印机访问请求,请在打印机上批准该请求" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "身份验证状态" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "身份验证状态" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "重试" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "重新发送访问请求" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "打印机接受了访问请求" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "无法使用本打印机进行打印,无法发送打印作业。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "请求访问" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "向打印机发送访问请求" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "无法启动新的打印作业。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Ultimaker 配置存在问题,导致无法开始打印。请解决此问题,然后再继续。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "配置不匹配" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "您确定要使用所选配置进行打印吗?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "打印机的配置或校准与 Cura 之间不匹配。为了获得最佳打印效果,请务必切换打印头和打印机中插入的材料。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "发送新作业(暂时)受阻,仍在发送前一份打印作业。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "向打印机发送数据" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "正在发送数据" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "取消" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "插槽 {slot_number} 中未加载 Printcore" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "插槽 {slot_number} 中未加载材料" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "为挤出机 {extruder_id} 选择了不同的 PrintCore(Cura: {cura_printcore_name},打印机:{remote_printcore_name})" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "您为挤出机 {2} 选择了不同的材料(Cura:{0},打印机:{1})" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "与您的打印机同步" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "您想在 Cura 中使用当前的打印机配置吗?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "打印机上的打印头和/或材料与当前项目中的不同。 为获得最佳打印效果,请始终使用已插入打印机的打印头和材料进行切片。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "已通过网络连接" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "打印作业已成功发送到打印机。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "数据已发送" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "在监控器中查看" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "打印机 '{printer_name}' 完成了打印任务 '{job_name}'。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "打印作业 '{job_name}' 已完成。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "打印完成" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "通过网络连接" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "通过网络打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "通过网络打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "已通过网络连接" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "请等待当前作业完成发送。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "打印错误" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "发现新的云打印机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "发现有新打印机连接到您的帐户。您可以在已发现的打印机列表中查找新连接的打印机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "不再显示此消息" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "您正在尝试连接到 {0},但它不是组中的主机。您可以访问网页,将其配置为组主机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "非组中的主机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "配置组" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "使用您的 Ultimaker account 帐户从任何地方发送和监控打印作业。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "连接到 Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "开始" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "发送打印作业" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "正在将打印作业上传至打印机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "打印作业已成功发送到打印机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "数据已发送" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "您正在尝试连接未运行 Ultimaker Connect 的打印机。请将打印机更新至最新固件。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "请更新升级打印机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura 已检测到材料配置文件尚未安装到组 {0} 中的主机打印机上。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "正在将材料发送到打印机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "无法将数据上传到打印机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "网络错误" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "明天" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "今天" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "通过云打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "通过云打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "通过云连接" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "监控" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "无法获取更新信息。" @@ -507,24 +425,30 @@ msgctxt "@action:button" msgid "How to update" msgstr "如何更新" -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "分层视图" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "当单线打印(Wire Printing)功能开启时,Cura 将无法准确地显示打印层(Layers)" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "仿真视图" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "后期处理" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" -msgstr "修改 G-Code 文件" +msgstr "修改 G-Code" #: /home/ruben/Projects/Cura/plugins/SupportEraser/__init__.py:12 msgctxt "@label" @@ -536,36 +460,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "创建一个不打印支撑的体积。" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura 将收集匿名的使用统计数据。" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "正在收集数据" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "详细信息" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "请参阅更多关于Cura发送的数据的信息。" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "允许" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "允许 Cura 发送匿名的使用统计数据,以帮助确定将来 Cura 的改进优先顺序。已发送您的一些偏好和设置,Cura 版本和您正在切片的模型的散列值。" - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -596,56 +490,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 图像" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "打开压缩三角网格" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA 数据资源交换" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF 二进制" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF 嵌入式 JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "斯坦福三角格式" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "压缩 COLLADA 数据资源交换" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "无法使用当前材料进行切片,因为该材料与所选机器或配置不兼容。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "无法切片" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "无法使用当前设置进行切片。以下设置存在错误:{0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "因部分特定模型设置而无法切片。 以下设置在一个或多个模型上存在错误: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "无法切片(原因:主塔或主位置无效)。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "无法切片,因为存在与已禁用挤出机 %s 相关联的对象。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "无法执行,因为没有一个模型符合成形空间体积。请缩放或旋转模型以适应打印平台。" +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "无法切片,因为没有一个模型适合成形空间体积或被分配至已禁用的挤出机。请缩放或旋转模型以匹配,或启用挤出机。" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "正在处理层" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "信息" @@ -660,14 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "设置对每个模型的单独设定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "推荐" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "自定义" @@ -678,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 文件" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "喷嘴" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "项目文件 {0} 包含未知机器类型 {1}。无法导入机器。将改为导入模型。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "打开项目文件" @@ -705,22 +627,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G 文件" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "解析 G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code 详细信息" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "发送文件之前,请确保 G-code 适用于当前打印机和打印机配置。当前 G-code 文件可能不准确。" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "管理备份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "备份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "列出您的备份时出错。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "尝试恢复您的备份时出错。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "备份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "正在上传您的备份..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "上传您的备份时出错。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "您的备份已完成上传。" + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -742,330 +707,451 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "写入 3mf 文件时出错。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "预览" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "选择升级" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "检查" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "调平打印平台" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "外壁" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "内壁" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "表层" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "填充" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "支撑填充" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "支撑接触面" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "支撑" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "Skirt" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "移动" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "回抽" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "其它" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "预切片文件 {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "登录失败" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "不支持" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "文件已存在" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "文件 {0} 已存在。您确定要覆盖它吗?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "未覆盖" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "所选材料与所选机器或配置不兼容。" +msgid "Invalid file URL:" +msgstr "文件 URL 无效:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "不兼容材料" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "已根据挤出机的当前可用性更改设置:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "已根据挤出机的当前可用性更改设置:[%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "设置已更新" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "挤出机已禁用" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "未知" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "无法将配置文件导出至 {0} {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "无法将配置文件导出至 {0} : 写入器插件报告故障。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "配置文件已导出至: {0} " -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "导出成功" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "无法从 {0} 导入配置文件: {1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "无法从 {0} 导入配置文件:{1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "无法在添加打印机前从 {0} 导入配置文件。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "没有可导入文件 {0} 的自定义配置文件" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "无法从 {0} 导入配置文件:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "此配置文件 {0} 包含错误数据,无法导入。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "配置文件 {0} ({1}) 中定义的机器与当前机器 ({2}) 不匹配,无法导入。" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "无法从 {0} 导入配置文件:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "已成功导入配置文件 {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "文件 {0} 不包含任何有效的配置文件。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "配置 {0} 文件类型未知或已损坏。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "自定义配置文件" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "配置文件缺少打印质量类型定义。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "无法为当前配置找到质量类型 {0}。" -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "外壁" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "内壁" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "表层" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "填充" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "支撑填充" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "支撑接触面" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "支撑" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Skirt" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "装填塔" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "移动" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "回抽" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "其它" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "预切片文件 {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "下一步" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "组 #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "网络打印机" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "关闭" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "本地打印机" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "添加" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "取消" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "视觉" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "视觉配置文件用于打印视觉原型和模型,可实现出色的视觉效果和表面质量。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "工程配置文件用于打印功能性原型和最终用途部件,可提高准确性和减小公差。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "草稿" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "草稿配置文件用于打印初始原型和概念验证,可大大缩短打印时间。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "未覆盖" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "自定义配置文件" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "所有支持的文件类型 ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "所有文件 (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "自定义材料" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "自定义" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "无法连接到下列打印机,因为这些打印机已在组中" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "可用的网络打印机" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "由于“打印序列”设置的值,成形空间体积高度已被减少,以防止十字轴与打印模型相冲突。" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "成形空间体积" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "不能从用户数据目录创建存档: {}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "备份" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "试图在没有适当数据或元数据的情况下恢复Cura备份。" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "试图恢复与您当前版本不匹配的Cura备份。" +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "尝试恢复的 Cura 备份版本高于当前版本。" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "无法读取响应。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "无法连接 Ultimaker 帐户服务器。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "在授权此应用程序时,须提供所需权限。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "尝试登录时出现意外情况,请重试。" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "复制并放置模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" +msgid "Placing Objects" msgstr "放置模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "无法在成形空间体积内放下全部模型" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "放置模型" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "正在为模型寻找新位置" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "正在寻找位置" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "找不到位置" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Cura 无法启动" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1080,32 +1166,32 @@ msgstr "" "

    请向我们发送此错误报告,以便解决问题。

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "向 Ultimaker 发送错误报告" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "显示详细的错误报告" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "显示配置文件夹" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "备份并重置配置" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "错误报告" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" @@ -1116,321 +1202,285 @@ msgstr "" "

    请使用“发送报告”按钮将错误报告自动发布到我们的服务器

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "系统信息" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "未知" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Cura 版本" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "平台" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Qt 版本" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "PyQt 版本" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "尚未初始化
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • OpenGL 版本: {version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • OpenGL 供应商: {vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • OpenGL 渲染器: {renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "错误追溯" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "日志" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "用户说明" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "用户说明(注意:为避免开发人员可能不熟悉您的语言,请尽量使用英语)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "发送报告" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "正在载入打印机..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "正在设置偏好设置..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "正在设置场景..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "正在载入界面…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "一次只能加载一个 G-code 文件。{0} 已跳过导入" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "如果加载 G-code,则无法打开其他任何文件。{0} 已跳过导入" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "所选模型过小,无法加载。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "打印机设置" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "打印机" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "打印机设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (宽度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (深度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (高度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "打印平台形状" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "置中" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "加热床" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "加热的构建体积" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "G-code 风格" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "打印头设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "打印头左侧至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "打印头前端至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "打印头右侧至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "打印头后部至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "十字轴高度" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "喷嘴尖端与十字轴系统(X 轴和 Y 轴)之间的高度差。 用于防止“排队”打印时之前的打印品与十字轴发生碰撞。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "挤出机数目" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "开始 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "将在开始时执行的 G-code 命令。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "结束 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "将在结束时执行的 G-code 命令。" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "打印机" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "喷嘴设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "喷嘴孔径" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "兼容的材料直径" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "打印机所支持耗材的公称直径。 材料和/或配置文件将覆盖精确直径。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "喷嘴偏移 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "喷嘴偏移 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "冷却风扇数量" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "挤出机的开始 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "挤出机的结束 G-code" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "安装" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "已安装" @@ -1440,69 +1490,82 @@ msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." msgstr "无法连接到Cura包数据库。请检查您的连接。" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "评分" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "插件" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "材料" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "您的评分" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "版本" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "更新日期" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "作者" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "下载项" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "未知" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "安装或更新需要登录" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "购买材料线轴" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "更新" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "更新" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "更新" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "工具箱" +msgid "Marketplace" +msgstr "市场" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1529,52 +1592,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "配置文件" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "确认" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "您需要登录才能评分" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "您需要安装程序包才能评分" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." msgstr "在包装更改生效之前,您需要重新启动Cura。" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "退出 Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "社区贡献" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "社区插件" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "通用材料" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "安装" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "将安装后重新启动" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "更新需要登录" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "降级" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "卸载" @@ -1595,12 +1673,12 @@ msgstr "" "您需要接受此许可才能安装此插件。\n" "是否同意下列条款?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "接受" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "拒绝" @@ -1610,22 +1688,62 @@ msgctxt "@label" msgid "Featured" msgstr "精选" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "兼容性" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "机器" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "打印平台" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "支持" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "质量" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "技术数据表" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "安全数据表" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "打印指南" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "网站" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." msgstr "获取包……" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "网站" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "电子邮件" @@ -1635,23 +1753,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "此次打印可能出现了某些问题。点击查看调整提示。" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "更新日志" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "关闭" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1727,426 +1828,504 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "由于固件丢失,导致固件升级失败。" -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "用户协议" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "管理打印机" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "现有连接" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "玻璃" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "此打印机/打印机组已添加到 Cura。请选择其他打印机/打印机组。" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "请及时更新打印机固件以远程管理打印队列。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "网络摄像头不可用,因为您正在监控云打印机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "正在加载..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "不可用" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "无法连接" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "空闲" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "未命名" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "匿名" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "需要更改配置" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "详细信息" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "不可用的打印机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "第一个可用" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "已排队" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "请于浏览器中进行管理" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "队列中无打印任务。可通过切片和发送添加任务。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "打印作业" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "总打印时间" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "等待" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "连接到网络打印机" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"要通过网络向打印机发送打印请求,请确保您的打印机已通过网线或 WIFI 连接到网络。若您不能连接 Cura 与打印机,您仍然可以使用 USB 设备将 G-code 文件传输到打印机。\n" -"\n" -"从以下列表中选择您的打印机:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "欲通过网络向打印机发送打印请求,请确保您的打印机已通过网线或 WIFI 连接至网络。若不能连接 Cura 与打印机,亦可通过使用 USB 设备将 G-code 文件传输到打印机。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "添加" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "请从以下列表中选择您的打印机:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "编辑" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "删除" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "刷新" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "如果您的打印机未列出,请阅读网络打印故障排除指南" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "类型" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "固件版本" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "地址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "这台打印机未设置为运行一组打印机。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "这台打印机是一组共 %1 台打印机的主机。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "该网络地址的打印机尚未响应。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "连接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "IP 地址无效" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "请输入有效的 IP 地址。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "打印机网络地址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "输入打印机在网络上的 IP 地址或主机名。" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "请输入打印机在网络上的 IP 地址。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "确定" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "打印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "通过网络打印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "打印机选择" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "不可用" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "无法连接" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "可用" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "已中止" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "已完成" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "准备" +msgid "Preparing..." +msgstr "正在准备..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "暂停" +msgid "Aborting..." +msgstr "正在中止..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "恢复" +msgid "Pausing..." +msgstr "正在暂停..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "已暂停" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "正在恢复..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "需要采取行动" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 -msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "等待:不可用的打印机" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "完成 %1 于 %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "等待:第一个可用的" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "通过网络打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "等待: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "配置更改" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "分配的打印机 %1 需要以下配置更改:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "已向打印机 %1 分配作业,但作业包含未知的材料配置。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "将材料 %1 从 %2 更改为 %3。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "将 %3 作为材料 %1 进行加载(此操作无法覆盖)。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "将 Print Core %1 从 %2 更改为 %3。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "将打印平台更改为 %1(此操作无法覆盖)。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "覆盖" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "使用不兼容的配置启动打印作业可能会损坏 3D 打印机。您确定要覆盖配置并打印 %1 吗?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "覆盖配置并开始打印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "玻璃" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "铝" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "管理队列" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "已排队" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" msgstr "打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "管理打印机" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 +msgctxt "@label" +msgid "Printer selection" +msgstr "打印机选择" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "移至顶部" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "删除" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "恢复" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "正在暂停..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "正在恢复..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "暂停" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "正在中止..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "中止" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "您确定要将 %1 移至队列顶部吗?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "将打印作业移至顶部" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "您确定要删除 %1 吗?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "删除打印作业" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "您确定要中止 %1 吗?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "中止打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "连接到打印机" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "配置更改" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "应用配置" +msgid "Override" +msgstr "覆盖" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "将打印机配置导入 Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "分配的打印机 %1 需要以下配置更改:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "已向打印机 %1 分配作业,但作业包含未知的材料配置。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "将材料 %1 从 %2 更改为 %3。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "将 %3 作为材料 %1 进行加载(此操作无法覆盖)。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "将 Print Core %1 从 %2 更改为 %3。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "将打印平台更改为 %1(此操作无法覆盖)。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "覆盖将使用包含现有打印机配置的指定设置。这可能会导致打印失败。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "铝" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"请确保您的打印机已连接:\n" +"- 检查打印机是否已启动。\n" +"- 检查打印机是否连接至网络。\n" +"- 检查您是否已登录查找云连接的打印机。" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "请将打印机连接到网络。" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "查看联机用户手册" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "颜色方案" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "材料颜色" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "走线类型" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "进给速度" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "层厚度" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "兼容模式" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "显示移动轨迹" +msgid "Travels" +msgstr "空驶" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "显示打印辅助结构" +msgid "Helpers" +msgstr "打印辅助结构" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "显示外壳" +msgid "Shell" +msgstr "外壳" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "显示填充" +msgid "Infill" +msgstr "填充" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "只显示顶层" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "在顶部显示 5 层打印细节" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "顶 / 底层" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "内壁" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "最小" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "最大" @@ -2161,40 +2340,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "后期处理脚本" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "添加一个脚本" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "设置" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "更改目前启用的后期处理脚本" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "更多关于匿名数据收集的信息" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura向最终用户发送匿名数据,以提高打印质量和用户体验。下面是发送的所有数据的一个示例。" +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "为了改善打印质量和用户体验,Ultimaker Cura 会收集匿名数据。以下是所有数据分享的示例:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "我不想发送这些数据" +msgid "I don't want to send anonymous data" +msgstr "我不想发送匿名数据" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "允许将这些数据发送到最后一个,帮助我们改进Cura" +msgid "Allow sending anonymous data" +msgstr "允许发送匿名数据" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2243,19 +2422,19 @@ msgstr "深度 (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "默认情况下,白色像素表示网格上的高点,黑色像素表示网格上的低点。若更改此选项将反其道而行之,相当于图像编辑软件中的「反相」操作。" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "颜色越浅厚度越大" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "在影像浮雕中,为了阻挡更多光源通过,深色像素应对应于较厚的位置。在高度图中,浅色像素代表着更高的地形,因此浅色像素对应于生成的 3D 模型中较厚的位置。" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "颜色越深厚度越大" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "颜色越浅厚度越大" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2266,81 +2445,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "平滑" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "网格类型" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "正常模式" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "打印为支撑" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "不支持与其他模型重叠" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "修改与其他模型重叠的设置" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "修改其他模型填充物的设置" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "选择设置" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "选择对此模型的自定义设置" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "筛选…" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "显示全部" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "网格类型" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "正常模式" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "打印为支撑" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "修改重叠设置" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "不支持重叠" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "仅填充" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "选择设置" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "打开项目" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "更新已有配置" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "新建" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "摘要 - Cura 项目" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "打印机设置" @@ -2356,20 +2534,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "更新" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "新建" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "类型" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "打印机组" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "配置文件设置" @@ -2380,224 +2563,220 @@ msgid "How should the conflict in the profile be resolved?" msgstr "配置文件中的冲突如何解决?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "名字" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "不在配置文件中" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 重写" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "衍生自" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 重写" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "材料设置" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "材料的设置冲突应如何解决?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "设置可见性" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "模式" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "可见设置:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 / %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "加载项目将清除打印平台上的所有模型。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "打开" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "选择打印机升级" +msgid "My Backups" +msgstr "我的备份" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "请选择适用于 Ultimaker 2 的升级文件。" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "您目前没有任何备份。使用“立即备份”按钮创建一个备份。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "在预览阶段,将限制为 5 个可见备份。移除一个备份以查看更早的备份。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "备份并同步您的 Cura 设置。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "登录" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Cura 备份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Cura 版本" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "机器" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "材料" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "配置文件" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "插件" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "恢复" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "删除备份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "您确定要删除此备份吗?此操作无法撤销。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "恢复备份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "您需要重新启动 Cura 才能恢复备份。您要立即关闭 Cura 吗?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "想要更多?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "立即备份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "自动备份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "在 Cura 每天启动时自动创建备份。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "打印平台调平" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "为了确保打印质量出色,您现在可以开始调整您的打印平台。当您点击「移动到下一个位置」时,喷嘴将移动到可以调节的不同位置。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "在打印头停止的每一个位置下方插入一张纸,并调整平台高度。当纸张恰好被喷嘴的尖端轻微压住时,此时打印平台的高度已被正确校准。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "开始进行打印平台调平" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "移动到下一个位置" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "请选择适用于 Ultimaker Original 的升级文件" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "热床(官方版本或自制)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "检查打印机" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "对 Ultimaker 进行几项正确性检查是很好的做法。如果您知道您的机器功能正常,则可跳过此步骤" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "开始打印机检查" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "连接: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "已连接" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "未连接" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "X Min 限位开关: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "工作" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "未检查" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Y Min 限位开关: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Z Min 限位开关: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "检查喷嘴温度: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "停止加热" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "开始加热" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "打印平台温度检查:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "已检查" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "一切正常!你已经完成检查。" - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2609,7 +2788,6 @@ msgid "Printer does not accept commands" msgstr "打印机不接受命令" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "维护中。请检查打印机" @@ -2620,19 +2798,16 @@ msgid "Lost connection with the printer" msgstr "与打印机的连接中断" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "打印中..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "已暂停" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "初始化中..." @@ -2652,235 +2827,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "您确定要中止打印吗?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "舍弃或保留更改" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"您已自定义某些配置文件设置。\n" -"您想保留或舍弃这些设置吗?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "配置文件设置" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "默认" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "自定义" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "总是询问" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "舍弃更改,并不再询问此问题" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "保留更改,并不再询问此问题" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "舍弃" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "保留" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "创建新配置文件" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "确认直径更改" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "新的灯丝直径被设置为%1毫米,这与当前的挤出机不兼容。你想继续吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "显示名称" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "品牌" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "材料类型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "颜色" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "属性" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "密度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "直径" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "耗材成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "耗材重量" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "耗材长度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "每米成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "此材料与 %1 相关联,并共享其某些属性。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "解绑材料" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "描述" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "粘附信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "打印设置" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "激活" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "创建" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "复制" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "导入" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "导出" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "打印机" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "确认删除" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "您确认要删除 %1?该操作无法恢复!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "导入配置" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "无法导入材料 %1%2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "成功导入材料 %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "导出材料" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "无法导出材料至 %1%2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "成功导出材料至: %1" @@ -2890,669 +3006,521 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "设置可见性" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "全部勾选" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "已计算" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "设置" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "当前" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "单位" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "基本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "接口" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "语言:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "币种:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "主题:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "需重新启动 Cura,新的设置才能生效。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "当设置被更改时自动进行切片。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "自动切片" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "视区行为" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "以红色突出显示模型需要增加支撑结构的区域。没有支撑,这些区域将无法正确打印。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "显示悬垂(Overhang)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "当模型被选中时,视角将自动调整到最合适的观察位置(模型处于正中央)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "当项目被选中时,自动对中视角" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "需要令 Cura 的默认缩放操作反转吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "反转视角变焦方向。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "是否跟随鼠标方向进行缩放?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "正交透视不支持通过鼠标进行缩放。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "跟随鼠标方向缩放" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "需要移动平台上的模型,使它们不再相交吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "确保每个模型都保持分离" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "需要转动模型,使它们接触打印平台吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自动下降模型到打印平台" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "在 G-code 读取器中显示警告信息。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-code 读取器中的警告信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "层视图要强制进入兼容模式吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "强制层视图兼容模式(需要重新启动)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Cura 是否应该在关闭的位置打开?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "恢复初始窗口位置" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "应使用哪种类型的摄像头进行渲染?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "摄像头渲染:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "透视" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "正交" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "打开并保存文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "当模型的尺寸过大时,是否将模型自动缩小至成形空间体积?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "缩小过大模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "当模型以米而不是毫米为单位时,模型可能会在打印平台中显得非常小。在此情况下是否进行放大?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "放大过小模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "模型是否应该在加载后被选中?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "选择模型时加载" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "打印机名是否自动作为打印作业名称的前缀?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "将机器前缀添加到作业名称中" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "保存项目文件时是否显示摘要?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "保存项目时显示摘要对话框" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "打开项目文件时的默认行为" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "打开项目文件时的默认行为: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "总是询问" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "始终作为一个项目打开" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "始终导入模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "当您对配置文件进行更改并切换到其他配置文件时将显示一个对话框,询问您是否要保留修改。您也可以选择一个默认行为并令其不再显示该对话框。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "切换到不同配置文件时对设置值更改的默认操作: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "总是询问" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "总是舍失更改的设置" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "总是将更改的设置传输至新配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "隐私" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "当 Cura 启动时,是否自动检查更新?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "启动时检查更新" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "您愿意将关于您的打印数据以匿名形式发送到 Ultimaker 吗?注意:我们不会记录/发送任何模型、IP 地址或其他私人数据。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(匿名)发送打印信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "详细信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "实验性" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "使用多打印平台功能" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "使用多打印平台功能(需要重启)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "打印机" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "重命名" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "打印机类型:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "连接:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "尚未连接到打印机。" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "状态:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "等待打印作业" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "等待清理打印平台" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "中止打印..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "创建" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "复制" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "创建配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "请为此配置文件提供名称。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "复制配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "重命名配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "导入配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "导出配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "打印机:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "受保护的配置文件" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "自定义配置文件" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "使用当前设置 / 重写值更新配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "舍弃当前更改" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "此配置文件使用打印机指定的默认值,因此在下面的列表中没有此设置项。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "您当前的设置与选定的配置文件相匹配。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "全局设置" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "新增打印机" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "打印机名称:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "新增打印机" +msgid "Marketplace" +msgstr "市场" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "文件(&F)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "编辑(&E)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "视图(&V)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "设置(&S)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "扩展(&X)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "偏好设置(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "帮助(&H)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "新建项目" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "你确定要开始一个新项目吗?这将清除打印平台及任何未保存的设置。" + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "未命名" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "关于 Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "版本: %1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "熔丝 3D 打印技术的的端对端解决方案。" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura 由 Ultimaker B.V. 与社区合作开发。\n" -"Cura 使用以下开源项目:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "图形用户界面" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "应用框架" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "G-code 生成器" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "进程间通信交互使用库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "编程语言" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUI 框架" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "GUI 框架绑定" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "C / C++ 绑定库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "数据交换格式" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "科学计算支持库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "高速运算支持库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "用于处理 STL 文件的支持库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "用于处理平面对象的支持库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "用于处理三角网格的支持库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "用于分析复杂网络的支持库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "用于处理 3MF 文件的支持库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "用于文件元数据和流媒体的支持库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "串口通讯库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "ZeroConf 发现库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "多边形剪辑库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Python HTTP 库" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "字体" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "SVG 图标" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Linux 交叉分布应用程序部署" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "配置文件:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"某些设置/重写值与存储在配置文件中的值不同。\n" -"\n" -"点击打开配置文件管理器。" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "搜索..." +msgid "Search settings" +msgstr "搜索设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "将值复制到所有挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "将所有修改值复制到所有挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "隐藏此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "不再显示此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "保持此设置可见" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "配置设定可见性..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "全部折叠" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "全部展开" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3563,27 +3531,32 @@ msgstr "" "\n" "单击以使这些设置可见。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "未使用此设置,因为受其影响的所有设置均已覆盖。" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "影响" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "受影响项目" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "此设置始终在所有挤出机之间共享。在此处更改它将改变所有挤出机的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "该值将会根据每一个挤出机的设置而确定 " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3594,7 +3567,7 @@ msgstr "" "\n" "单击以恢复配置文件的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3605,116 +3578,211 @@ msgstr "" "\n" "单击以恢复自动计算的值。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "推荐" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "自定义" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "渐层填充" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "渐层填充(Gradual infill)将随着打印高度的提升而逐渐加大填充密度。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "支持" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "在模型的悬垂(Overhangs)部分生成支撑结构。若不这样做,这些部分在打印时将倒塌。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "附着" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "允许打印 Brim 或 Raft。这将在您的对象周围或下方添加一个容易切断的平面区域。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "您已修改部分配置文件设置。 如果您想对其进行更改,请转至自定义模式。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "开" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "关" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "实验性" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "配置文件" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"某些设置/重写值与存储在配置文件中的值不同。\n" +"\n" +"点击打开配置文件管理器。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "自定义配置文件" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "打印设置已禁用。无法修改 G code 文件。" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "打印机控制" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "垛齐位置" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "垛齐距离" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "发送 G-code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "向连接的打印机发送自定义 G-code 命令。按“Enter”发送命令。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "挤出机" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "热端的目标温度。 热端将加热或冷却至此温度。 如果目标温度为 0,则热端加热将关闭。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "该热端的当前温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "热端的预热温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "预热" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "打印前请预热热端。您可以在热端加热时继续调整打印机,而不必等待热端加热完毕再做好打印准备。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "该挤出机中材料的颜色。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "该挤出机中的材料。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "该挤出机所使用的喷嘴。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "尚未连接到打印机。" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "打印平台" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "热床的目标温度。热床将加热或冷却至此温度。若设置为 0,则不使用热床。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "热床当前温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "热床的预热温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "打印前请预热热床。您可以在热床加热时继续调整相关项,让您在准备打印时不必等待热床加热完毕。" @@ -3724,12 +3792,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "收藏" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "通用" @@ -3744,17 +3812,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "本地打印机" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "视图(&V)" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "打印机(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "材料(&M)" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "设为主要挤出机" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "启用挤出机" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "禁用挤出机" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "摄像头位置(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "摄像头视图" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "透视" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "正交" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "打印平台(&B)" @@ -3774,6 +3877,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "管理设置可见性..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "保存(&S)..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "导出(&E)..." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "导出选择..." + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3791,653 +3909,506 @@ msgctxt "@label" msgid "Number of Copies" msgstr "复制个数" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "可用配置" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "配置" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "挤出机" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "选择配置" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "是" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "配置" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "不是" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "正在从打印机加载可用配置..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "该配置不可用,因为打印机已断开连接。" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "自定义" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "打印机" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "已启用" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "材料" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "用胶粘和此材料组合以产生更好的附着。" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "此配置不可用,因为 %1 未被识别。请访问 %2 以下载正确的材料配置文件。" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "市场" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "打开最近使用过的文件(&R)" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "打印设置" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"打印设置已禁用\n" -"G-code 文件无法被修改" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00 小时 00 分" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "时间规格" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "成本规定" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "总计:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "推荐的打印设置

    使用针对所选打印机、材料和质量的推荐设置进行打印。" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "自定义打印设置

    对切片过程中的每一个细节进行精细控制。" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "正在打印" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "作业名" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "打印时间" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "预计剩余时间" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "查看类型" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "对象列表" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "%1,您好" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Ultimaker 帐户" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "注销" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "登录" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "下一代 3D 打印工作流程" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- 将打印作业发送到局域网外的 Ultimaker 打印机\n" +"- 将 Ultimaker Cura 设置存储到云以便在任何地方使用\n" +"- 获得来自领先品牌的打印配置文件的独家访问权限" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "创建账户" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "无可用时间估计" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "无可用成本估计" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "预览" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "正在切片..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "无法切片" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "正在处理中" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "切片" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "开始切片流程" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "取消" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "预计时间" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "预计材料" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "已连接的打印机" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "预设打印机" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "添加打印机" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "管理打印机" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "显示联机故障排除指南" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "切换完整界面" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "退出完整界面" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "撤销(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "重做(&R)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "退出(&Q)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "3D 视图" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "正视图" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "顶视图" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "左视图" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "右视图" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "配置 Cura…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "新增打印机(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "管理打印机(&I)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "管理材料…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "使用当前设置 / 重写值更新配置文件(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "舍弃当前更改(&D)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "从当前设置 / 重写值创建配置文件(&C)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "管理配置文件.." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "显示在线文档(&D)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "BUG 反馈(&B)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "新增功能" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "关于…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "删除所选模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "居中所选模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "复制所选模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "删除模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "使模型居于平台中央(&N)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "绑定模型(&G)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "拆分模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "合并模型(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "复制模型…(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "选择所有模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "清空打印平台" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "重新载入所有模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "将所有模型编位到所有打印平台" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "编位所有的模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "为所选模型编位" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "复位所有模型的位置" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "复位所有模型的变动" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "打开文件(&O)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "新建项目(&N)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "显示引擎日志(&L)..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "显示配置文件夹" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "浏览包……" +msgid "&Marketplace" +msgstr "市场(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "展开/折叠侧边栏" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "请载入一个 3D 模型" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "切片已准备就绪" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "正在切片..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "%1 已准备就绪" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "无法切片" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "切片不可用" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "分割当前打印作业" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "取消切片流程" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "准备" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "取消" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "选择活动的输出装置" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "打开文件" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "我们已经在您所选择的文件中找到一个或多个项目文件,但一次只能打开一个项目文件。我们建议只从那些文件中导入模型而不打开项目。您要继续操作吗?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "导入所有模型" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "文件(&F)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "保存(&S)..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "导出(&E)..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "导出选择..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "编辑(&E)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "视图(&V)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "设置(&S)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "打印机(&P)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "材料(&M)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "设为主要挤出机" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "启用挤出机" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "禁用挤出机" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "打印平台(&B)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "配置文件(&P)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "扩展(&X)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "&工具箱" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "偏好设置(&R)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "帮助(&H)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." msgstr "这个包将在重新启动后安装。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "打开文件" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "设置" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "新建项目" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "你确定要开始一个新项目吗?这将清除打印平台及任何未保存的设置。" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "关闭 Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "您确定要退出 Cura 吗?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "打开文件" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "安装包" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "打开文件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "我们已经在您选择的文件中找到一个或多个 G-Code 文件。您一次只能打开一个 G-Code 文件。若需打开 G-Code 文件,请仅选择一个。" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "保存项目" +msgid "Add Printer" +msgstr "新增打印机" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "打印平台" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "挤出机 %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & 材料" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "保存时不再显示项目摘要" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "保存" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "层高" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "此质量配置文件不适用于当前材料和喷嘴配置。请更改配置以便启用此配置文件" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "自定义配置文件目前处于活动状态。 如要启用质量滑块,请在“自定义”选项卡中选择一个默认质量配置文件" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "打印速度" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "更慢" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "更快" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "您已修改部分配置文件设置。 如果您想对其进行更改,请转至自定义模式。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "填充" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "渐层填充(Gradual infill)将随着打印高度的提升而逐渐加大填充密度。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "启用渐层" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "生成支撑" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "在模型的悬垂(Overhangs)部分生成支撑结构。若不这样做,这些部分在打印时将倒塌。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "选择用于支撑的挤出机。该挤出机将在模型之下建立支撑结构,以防止模型下垂或在空中打印。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "打印平台附着" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "允许打印 Brim 或 Raft。这将在您的对象周围或下方添加一个容易切断的平面区域。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "需要帮助改善您的打印?
    阅读 Ultimaker 故障排除指南" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "新增功能" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4445,75 +4416,503 @@ msgid "Print Selected Model with %1" msgid_plural "Print Selected Models with %1" msgstr[0] "用 %1 打印所选模型" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "舍弃或保留更改" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"您已自定义某些配置文件设置。\n" +"您想保留或舍弃这些设置吗?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "配置文件设置" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "默认" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "自定义" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "舍弃更改,并不再询问此问题" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "保留更改,并不再询问此问题" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "舍弃" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "保留" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "创建新配置文件" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "关于 Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "版本: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "熔丝 3D 打印技术的的端对端解决方案。" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura 由 Ultimaker B.V. 与社区合作开发。\n" +"Cura 使用以下开源项目:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "图形用户界面" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "应用框架" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "G-code 生成器" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "进程间通信交互使用库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "编程语言" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUI 框架" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "GUI 框架绑定" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C / C++ 绑定库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "数据交换格式" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "科学计算支持库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "高速运算支持库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "用于处理 STL 文件的支持库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "用于处理平面对象的支持库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "用于处理三角网格的支持库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "用于分析复杂网络的支持库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "用于处理 3MF 文件的支持库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "用于文件元数据和流媒体的支持库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "串口通讯库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "ZeroConf 发现库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "多边形剪辑库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTP 库" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "字体" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVG 图标" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Linux 交叉分布应用程序部署" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "我们已经在您所选择的文件中找到一个或多个项目文件,但一次只能打开一个项目文件。我们建议只从那些文件中导入模型而不打开项目。您要继续操作吗?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "导入所有模型" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "保存项目" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "挤出机 %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & 材料" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "材料" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "保存时不再显示项目摘要" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "保存" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "打开项目文件" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "这是一个 Cura 项目文件。您想将其作为一个项目打开还是从中导入模型?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "记住我的选择" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "作为项目打开" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "导入模型" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "引擎日志" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "打印机类型" +msgid "Empty" +msgstr "空" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "材料" +msgid "Add a printer" +msgstr "添加打印机" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "用胶粘和此材料组合" +msgid "Add a networked printer" +msgstr "添加已联网打印机" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "检查兼容性" +msgid "Add a non-networked printer" +msgstr "添加未联网打印机" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "点击查看 Ultimaker.com 上的材料兼容情况。" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "按 IP 地址添加打印机" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "只能看到当前的打印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "打印机 IP 地址输入栏。" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "编位到所有打印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "添加" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "编位当前打印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "无法连接到设备。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "该网络地址的打印机尚未响应。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "由于是未知打印机或不是组内主机,无法添加该打印机。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "返回" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "连接" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "下一步" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "用户协议" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "同意" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "拒绝并关闭" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "帮助我们改进 Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "为了改善打印质量和用户体验,Ultimaker Cura 会收集匿名数据,这些数据包括:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "机器类型" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "材料使用" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "切片数量" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "打印设置" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Ultimaker Cura 收集的数据不会包含任何个人信息。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "更多信息" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Ultimaker Cura 新增功能" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "未找到网络内打印机。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "刷新" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "按 IP 添加打印机" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "故障排除" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "打印机名称" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "请指定打印机名称" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "下一代 3D 打印工作流程" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- 将打印作业发送到局域网外的 Ultimaker 打印机" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- 将 Ultimaker Cura 设置存储到云以便在任何地方使用" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- 获得来自领先品牌的打印配置文件的独家访问权限" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "完成" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "创建帐户" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "欢迎使用 Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"请按照以下步骤设置\n" +"Ultimaker Cura。此操作只需要几分钟时间。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "开始" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3D 视图" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "正视图" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "顶视图" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "左视图" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "右视图" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4575,26 +4974,6 @@ msgctxt "name" msgid "Model Checker" msgstr "模型检查器" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "将所有设置内容转储至 HTML 文件。" - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "God 模式" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "显示最新版本改动。" - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "更新日志" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4605,15 +4984,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "固件更新程序" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "创建一份合并质量变化配置文件。" +msgid "Provides support for reading AMF files." +msgstr "提供对读取 AMF 文件的支持。" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "配置文件合并器" +msgid "AMF Reader" +msgstr "AMF 读取器" #: USBPrinting/plugin.json msgctxt "description" @@ -4625,26 +5004,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB 联机打印" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "询问用户是否同意我们的许可证。" - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "用户协议" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "允许将产生的切片保存为X3G文件,以支持读取此格式的打印机(Malyan、Makerbot和其他基于sailfish打印机的打印机)。" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3G写" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4687,13 +5046,13 @@ msgstr "可移动磁盘输出设备插件" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "管理与最后的3个打印机的网络连接。" +msgid "Manages network connections to Ultimaker networked printers." +msgstr "管理与 Ultimaker 网络打印机的网络连接。" #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3 网络连接" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker 网络连接" #: MonitorStage/plugin.json msgctxt "description" @@ -4755,6 +5114,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "支持橡皮擦" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "支持读取 Ultimaker 格式包。" + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "UFP 读取器" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4815,6 +5184,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "版本升级3.3到3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "将配置从 Cura 4.3 升级至 Cura 4.4。" + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "版本自 4.3 升级至 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4835,6 +5214,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "版本自 2.7 升级到 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "将配置从 Cura 3.5 版本升级至 4.0 版本。" + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "版本自 3.5 升级到 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4845,6 +5234,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "版本自 3.4 升级到 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "将配置从 Cura 4.0 版本升级至 4.1 版本。" + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "版本自 4.0 升级到 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4855,6 +5254,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "版本自 3.0 升级到 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "请将配置从 Cura 4.1 升级至 Cura 4.2。" + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "版本自 4.1 升级到 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4885,6 +5294,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "版本自 2.2 升级到 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "请将配置从 Cura 4.2 升级至 Cura 4.3。" + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "版本自 4.2 升级至 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4895,6 +5314,16 @@ msgctxt "name" msgid "Image Reader" msgstr "图像读取器" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "提供对读取模型文件的支持。" + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh 阅读器" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4945,6 +5374,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "G-code 读取器" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "备份和还原配置。" + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Cura 备份" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4965,6 +5404,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF 写入器" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "在 Cura 中提供预览阶段。" + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "预览阶段" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4985,9 +5434,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 配置文件读取器" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "保存之前,请生成 G-code。" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "合并有效设置" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "配置文件已被合并并激活。" + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "写入 X3g 到文件" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g 文件" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G 文件" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "打开压缩三角网格" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -4997,6 +5466,1032 @@ msgstr "Cura 配置文件读取器" #~ msgid "Profile Assistant" #~ msgstr "配置文件助手" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "重试" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "打印芯" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "不支持与其他模型重叠" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "修改与其他模型重叠的设置" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "修改其他模型填充物的设置" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "更新已有配置" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "不支持" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "上一步" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "提示" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "打印试验" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "检查表" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "请选择适用于 Ultimaker 2 的升级文件。" + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "摄像头渲染: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "使用多打印平台功能" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "使用多打印平台功能(需要重启)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "默认配置文件" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "搜索设置" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "层高" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "此质量配置文件不适用于当前材料和喷嘴配置。请进行更改以便启用此质量配置文件。" + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "自定义配置文件目前处于活动状态。 如要启用质量滑块,请在“自定义”选项卡中选择一个默认质量配置文件" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "打印平台(&B)" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "配置文件(&P)" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "打印平台" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "将所有设置内容转储至 HTML 文件。" + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "God 模式" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "创建一份合并质量变化配置文件。" + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "配置文件合并器" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "允许材料制造商使用下拉式 UI 创建新的材料和质量配置文件。" + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "打印配置文件助手" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "已通过网络连接。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "已通过网络连接。请在打印机上接受访问请求。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "已通过网络连接,但没有打印机的控制权限。" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "已发送打印机访问请求,请在打印机上批准该请求" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "身份验证状态" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "身份验证状态" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "重新发送访问请求" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "打印机接受了访问请求" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "无法使用本打印机进行打印,无法发送打印作业。" + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "请求访问" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "向打印机发送访问请求" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "无法启动新的打印作业。" + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Ultimaker 配置存在问题,导致无法开始打印。请解决此问题,然后再继续。" + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "配置不匹配" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "您确定要使用所选配置进行打印吗?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "打印机的配置或校准与 Cura 之间不匹配。为了获得最佳打印效果,请务必切换打印头和打印机中插入的材料。" + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "发送新作业(暂时)受阻,仍在发送前一份打印作业。" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "向打印机发送数据" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "正在发送数据" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "插槽 {slot_number} 中未加载 Printcore" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "插槽 {slot_number} 中未加载材料" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "为挤出机 {extruder_id} 选择了不同的 PrintCore(Cura: {cura_printcore_name},打印机:{remote_printcore_name})" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "您为挤出机 {2} 选择了不同的材料(Cura:{0},打印机:{1})" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "与您的打印机同步" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "您想在 Cura 中使用当前的打印机配置吗?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "打印机上的打印头和/或材料与当前项目中的不同。 为获得最佳打印效果,请始终使用已插入打印机的打印头和材料进行切片。" + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "在监控器中查看" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "打印机 '{printer_name}' 完成了打印任务 '{job_name}'。" + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "打印作业 '{job_name}' 已完成。" + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "打印完成" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "空" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "云错误" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "无法导出打印作业。" + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "连接到云时出错。" + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "通过 Ultimaker Cloud 上传" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "连接到 Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "对此打印机不再询问。" + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "您现在可以使用您的 Ultimaker account 帐户从任何地方发送和监控打印作业。" + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "已连接!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "查看您的连接" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "配置文件 {0} ({1}) 中定义的机器与当前机器 ({2}) 不匹配,无法导入。" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "无法从 {0} 导入配置文件:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "现有连接" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "此打印机/打印机组已添加到 Cura。请选择其他打印机/打印机组。" + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "输入打印机在网络上的 IP 地址或主机名。" + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "连接到打印机" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 设置向导" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "正交透视中不支持通过鼠标缩放。" + +#~ msgid "Orthogonal" +#~ msgstr "正交" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "管理与最后的3个打印机的网络连接。" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3 网络连接" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "提供关于 Cura 设置的额外信息和说明,并附上图片及动画。" + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "设置向导" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 设置向导" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "已根据挤出机的当前可用性更改设置:[%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "用户说明" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "这些选项不可用,因为您正在监控云打印机。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "转到 Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "已完成所有打印工作。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "查看打印历史" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "要通过网络向打印机发送打印请求,请确保您的打印机已通过网线或 WIFI 连接到网络。若您不能连接 Cura 与打印机,您仍然可以使用 USB 设备将 G-code 文件传输到打印机。\n" +#~ "\n" +#~ "从以下列表中选择您的打印机:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "请确保您的打印机已连接:\n" +#~ "- 检查打印机是否已启动。\n" +#~ "- 检查打印机是否连接到网络。" + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "只能看到当前的打印平台" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "编位到所有打印平台" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "编位当前打印平台" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "允许将产生的切片保存为X3G文件,以支持读取此格式的打印机(Malyan、Makerbot和其他基于sailfish打印机的打印机)。" + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3G写" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "读取 SVG 文件的刀具路径,调试打印机活动。" + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG 刀具路径读取器" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "更新日志" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "显示更新日志" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "发送数据至远程群集" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "连接到 Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura 将收集匿名的使用统计数据。" + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "正在收集数据" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "详细信息" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "请参阅更多关于Cura发送的数据的信息。" + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "允许" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "允许 Cura 发送匿名的使用统计数据,以帮助确定将来 Cura 的改进优先顺序。已发送您的一些偏好和设置,Cura 版本和您正在切片的模型的散列值。" + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "评估" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "网络打印机" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "本地打印机" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "试图恢复与您当前版本不匹配的Cura备份。" + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "打印机设置" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "打印机设置" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "置中" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "加热床" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "打印头设置" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "打印头左侧至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "打印头前端至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "打印头右侧至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "打印头后部至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "十字轴高度" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "喷嘴尖端与十字轴系统(X 轴和 Y 轴)之间的高度差。 用于防止“排队”打印时之前的打印品与十字轴发生碰撞。" + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "开始 G-code" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "将在开始时执行的 G-code 命令。" + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "结束 G-code" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "将在结束时执行的 G-code 命令。" + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "喷嘴设置" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "打印机所支持耗材的公称直径。 材料和/或配置文件将覆盖精确直径。" + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "挤出机的开始 G-code" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "挤出机的结束 G-code" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "更新日志" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "用户协议" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "输入打印机在网络上的 IP 地址或主机名。" + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "请选择已连接网络的打印机进行监控。" + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "请将 Ultimaker 打印机连接到您的局域网。" + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura向最终用户发送匿名数据,以提高打印质量和用户体验。下面是发送的所有数据的一个示例。" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "我不想发送此数据" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "允许向 Ultimaker 发送此数据并帮助我们改善 Cura" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "未选择打印" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "默认情况下,白色像素表示网格上的高点,黑色像素表示网格上的低点。若更改此选项将反其道而行之,相当于图像编辑软件中的「反相」操作。" + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "选择打印机升级" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "选择用于支撑的挤出机。该挤出机将在模型之下建立支撑结构,以防止模型下垂或在空中打印。" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "此质量配置文件不适用于当前材料和喷嘴配置。请更改配置以便启用此配置文件" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "打印设置已禁用。无法修改 G code 文件。" + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "查看材料兼容性图表" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "查看类型" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "您好 " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- 发送打印作业到局域网外的 Ultimaker 打印机\n" +#~ "- 将 Ultimaker Cura 设置存储到云以便在任何地方使用\n" +#~ "- 获得来自领先品牌的材料配置文件的独家访问权限" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "无法切片" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "时间规格" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "材料规格" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "添加打印机到 Cura" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "从以下列表中选择您要使用的打印机。\n" +#~ "\n" +#~ "如果您的打印机不在列表中,使用“自定义”类别中的“自定义 FFF 打印机”,并在下一个对话框中调整设置以匹配您的打印机。" + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "制造商" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "打印机名称" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "新增打印机" + +#~ msgid "Modify G-Code" +#~ msgstr "修改 G-Code 文件" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "无法执行,因为没有一个模型符合成形空间体积。请缩放或旋转模型以适应打印平台。" + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "所选材料与所选机器或配置不兼容。" + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "不兼容材料" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "无法从 {0} 导入配置文件: {1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "工具箱" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "不可用" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "无法连接" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "可用" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "准备" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "暂停" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "恢复" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "等待:不可用的打印机" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "等待:第一个可用的" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "等待: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "配置更改" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "分配的打印机 %1 需要以下配置更改:" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "覆盖" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "使用不兼容的配置启动打印作业可能会损坏 3D 打印机。您确定要覆盖配置并打印 %1 吗?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "覆盖配置并开始打印" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "管理队列" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "打印" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "管理打印机" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "应用配置" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "将打印机配置导入 Cura" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "显示移动轨迹" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "显示打印辅助结构" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "显示外壳" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "显示填充" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "我不想发送这些数据" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "允许将这些数据发送到最后一个,帮助我们改进Cura" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "打印机类型:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "连接:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "状态:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "等待打印作业" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "等待清理打印平台" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "中止打印..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "受保护的配置文件" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "打印机名称:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "配置文件:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "搜索..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "全部折叠" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "全部展开" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "可用配置" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "挤出机" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "是" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "不是" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "打印设置" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "打印设置已禁用\n" +#~ "G-code 文件无法被修改" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00 小时 00 分" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "时间规格" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "成本规定" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "总计:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "推荐的打印设置

    使用针对所选打印机、材料和质量的推荐设置进行打印。" + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "自定义打印设置

    对切片过程中的每一个细节进行精细控制。" + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "显示引擎日志(&L)..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "浏览包……" + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "展开/折叠侧边栏" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "请载入一个 3D 模型" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "切片已准备就绪" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "%1 已准备就绪" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "切片不可用" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "分割当前打印作业" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "取消切片流程" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "准备" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "选择活动的输出装置" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "视图(&V)" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "设置(&S)" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "&工具箱" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "打开文件" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "此质量配置文件不适用于当前材料和喷嘴配置。请更改配置以便启用此配置文件" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "打印速度" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "更慢" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "更快" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "启用渐层" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "生成支撑" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "打印平台附着" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "需要帮助改善您的打印?
    阅读 Ultimaker 故障排除指南" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "引擎日志" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "打印机类型" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "用胶粘和此材料组合" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "检查兼容性" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "点击查看 Ultimaker.com 上的材料兼容情况。" + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "显示最新版本改动。" + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "更新日志" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "创建一份合并质量变化配置文件。" + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "配置文件合并器" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "询问用户是否同意我们的许可证。" + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "用户协议" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "保存之前,请生成 G-code。" + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "升级固件" @@ -5021,22 +6516,6 @@ msgstr "Cura 配置文件读取器" #~ msgid "Confirm uninstall " #~ msgstr "确认卸载 " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "已暂停" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "上一步" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "下一步" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "提示" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1m / ~ %2g / ~ %4 %3" @@ -5045,26 +6524,10 @@ msgstr "Cura 配置文件读取器" #~ msgid "%1m / ~ %2g" #~ msgstr "%1m / ~ %2g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "打印试验" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "检查表" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "升级固件" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "允许材料制造商使用下拉式 UI 创建新的材料和质量配置文件。" - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "打印配置文件助手" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "使用 Doodle3D WiFi-Box 打印" @@ -5157,10 +6620,6 @@ msgstr "Cura 配置文件读取器" #~ msgid "Lost connection with the printer" #~ msgstr "与打印机的连接中断" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "不可用" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "未知" diff --git a/resources/i18n/zh_CN/fdmextruder.def.json.po b/resources/i18n/zh_CN/fdmextruder.def.json.po index cddfeae984..c829558fe3 100644 --- a/resources/i18n/zh_CN/fdmextruder.def.json.po +++ b/resources/i18n/zh_CN/fdmextruder.def.json.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-09-28 14:25+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" "Language: zh_CN\n" @@ -85,8 +85,8 @@ msgstr "挤出机的开始 G-code" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "打开挤出机将执行此段 G-code。" +msgid "Start g-code to execute when switching to this extruder." +msgstr "在切换到此挤出机时执行的开始 G-code。" #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -125,8 +125,8 @@ msgstr "挤出机的结束 G-code" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "在关闭挤出机时,执行结束 G-code。" +msgid "End g-code to execute when switching away from this extruder." +msgstr "在切离此挤出机时执行的结束 G-code。" #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -227,3 +227,11 @@ msgstr "直径" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "调整所用耗材的直径。 将此值与所用耗材的直径匹配。" + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "打开挤出机将执行此段 G-code。" + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "在关闭挤出机时,执行结束 G-code。" diff --git a/resources/i18n/zh_CN/fdmprinter.def.json.po b/resources/i18n/zh_CN/fdmprinter.def.json.po index 3a85b1b454..2de81b585d 100644 --- a/resources/i18n/zh_CN/fdmprinter.def.json.po +++ b/resources/i18n/zh_CN/fdmprinter.def.json.po @@ -1,21 +1,21 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-11-06 15:38+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: PCDotFan , Bothof \n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-09-23 14:18+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Chinese , PCDotFan , Chinese \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=1; plural=0;\n" #: fdmprinter.def.json @@ -216,6 +216,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "机器是否有加热打印平台。" +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "具有构建体积温度稳定性" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "机器是否能够稳定构建体积温度。" + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -238,7 +248,7 @@ msgstr "挤出机组数目。 挤出机组是指进料装置、鲍登管和喷 #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "已启用的挤出机数目" #: fdmprinter.def.json @@ -248,7 +258,7 @@ msgstr "已启用的挤出机组数目;软件自动设置" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "喷嘴外径" #: fdmprinter.def.json @@ -258,7 +268,7 @@ msgstr "喷嘴尖端的外径。" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "喷嘴长度" #: fdmprinter.def.json @@ -268,7 +278,7 @@ msgstr "喷嘴尖端与打印头最低部分之间的高度差。" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "喷嘴角度" #: fdmprinter.def.json @@ -278,7 +288,7 @@ msgstr "水平面与喷嘴尖端上部圆锥形之间的角度。" #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "加热区长度" #: fdmprinter.def.json @@ -308,7 +318,7 @@ msgstr "是否从 Cura 控制温度。 关闭此选项,从 Cura 外部控制 #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "升温速度" #: fdmprinter.def.json @@ -318,7 +328,7 @@ msgstr "喷嘴升温到平均超过正常打印温度和待机温度范围的速 #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "冷却速度" #: fdmprinter.def.json @@ -338,7 +348,7 @@ msgstr "挤出机必须保持不活动以便喷嘴冷却的最短时间。 挤 #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "G-code 风格" #: fdmprinter.def.json @@ -403,7 +413,7 @@ msgstr "是否使用固件收回命令 (G10/G11) 而不是使用 G1 命令中的 #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" +msgid "Disallowed Areas" msgstr "不允许区域" #: fdmprinter.def.json @@ -423,7 +433,7 @@ msgstr "包含不允许喷嘴进入区域的多边形列表。" #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "机器头多边形" #: fdmprinter.def.json @@ -433,7 +443,7 @@ msgstr "打印头 2D 轮廓图(不包含风扇盖)。" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" +msgid "Machine Head & Fan Polygon" msgstr "机器头和风扇多边形" #: fdmprinter.def.json @@ -443,7 +453,7 @@ msgstr "打印头 2D 轮廓图(包含风扇盖)。" #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "十字轴高度" #: fdmprinter.def.json @@ -473,7 +483,7 @@ msgstr "喷嘴内径,在使用非标准喷嘴尺寸时需更改此设置。" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" +msgid "Offset with Extruder" msgstr "挤出机偏移量" #: fdmprinter.def.json @@ -1021,6 +1031,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "底层的数量。 在按底层厚度计算时,该值舍入为整数。" +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "初始底层数" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "从构建板向上算起的初始底层数。在按底层厚度计算时,该值四舍五入为整数。" + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1271,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "最尖角" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Z 缝位置" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "在该位置附近开始打印层中各个部分。" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "左后方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "返回" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "右后方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "右侧" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "右前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "左前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "左侧" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1298,8 +1368,8 @@ msgstr "缝隙角偏好设置" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "控制模型轮廓上的各个角是否影响缝隙的位置。 “无”意味着各个角不影响缝隙位置。 “隐藏缝隙”会使缝隙更可能出现在内侧角上。 “外露缝隙”会使缝隙更可能出现在外侧角上。 “隐藏或外露缝隙”会使缝隙更可能出现在内侧或外侧角上。" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "控制模型轮廓上的角是否影响缝隙的位置。“无”表示各个角不影响缝隙位置。“隐藏缝隙”会使缝隙更可能出现在内侧角上。“外露缝隙”会使缝隙更可能出现在外侧角上。“隐藏或外露缝隙”会使缝隙更可能出现在内侧或外侧角上。“智能隐藏”允许缝隙出现在内侧和外侧角上,如适当,会更多地出现在内侧角上。" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1321,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "隐藏或外露缝隙" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "智能隐藏" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1333,13 +1408,13 @@ msgstr "启用时,Z 缝坐标为相对于各个部分中心的值。 禁用时 #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "忽略小 Z 间隙" +msgid "No Skin in Z Gaps" +msgstr "Z 间隙内无表层" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "当模型具有小的垂直间隙时,可能会花费大约 5% 的额外计算时间来生成这些狭窄空间中的顶部和底部皮肤。 这种情况下,禁用该设置。" +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "当模型中只有几个分层有微小垂直间隙时,通常狭窄空间的分层周围应有表层。如果垂直间隙非常小,则启用此设置不生成表层。这缩短了打印时间和切片时间,但从技术方面看,会使填充物暴露在空气中。" #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1358,8 +1433,8 @@ msgstr "启用熨平" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "再一次经过顶部表面,但不挤出材料。 这是为了进一步融化顶部的塑料,打造更平滑的表面。" +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "再次经过顶部表面,但这次挤出的材料非常少。这意味着将进一步熔化顶部的塑料,形成更平滑的表面。喷嘴室中的压力保持很高,确保表面折痕中也能填充材料,以保证细节。" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1451,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "执行熨平时的最大瞬时速度变化。" +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "皮肤重叠百分比" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "调整壁和皮肤中心线的(端点)之间的重叠量,以皮肤线走线和最内壁的线宽度的百分比表示。稍微重叠可让各个壁与皮肤牢固连接。请注意,对于相等的皮肤和壁线宽度,任何超过 50% 的百分比可能已经导致任何皮肤越过壁,因为在该点,皮肤挤出机的喷嘴位置可能已经达到越过壁中间的位置。" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "皮肤重叠" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "调整壁和皮肤中心线的(端点)之间的重叠量。稍微重叠可让各个壁与皮肤牢固连接。请注意,对于相等的皮肤和壁线宽度,任何超过壁宽度一半的值可能已经导致任何皮肤越过壁,因为在该点,皮肤挤出机的喷嘴位置可能已经达到越过壁中间的位置。" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1616,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "填充图案沿 Y 轴移动此距离。" +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "开始随机化填充" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "先随机化打印哪条填充线。这可以防止一个部分变强,但会导致一次额外的空驶。" + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1670,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "填充物和壁之间的重叠量。 稍微重叠可让各个壁与填充物牢固连接。" -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "皮肤重叠百分比" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "皮肤和壁之间的重叠量占皮肤走线宽度的百分比。稍微重叠可让各个壁与皮肤牢固连接。这是皮肤走线和最内壁的平均走线宽度的百分比。" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "皮肤重叠" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "皮肤和壁之间的重叠量。 稍微重叠可让各个壁与皮肤牢固连接。" - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1870,6 +1955,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "用于打印的默认温度。 应为材料的\"基本\"温度。 所有其他打印温度均应使用基于此值的偏移量" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "打印体积温度" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "打印环境温度。若为 0,将不会调整构建体积温度。" + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1980,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "百分比收缩率。" +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "晶体材料" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "该材料为受热后脱落干净的类型(晶体),还是会产生长交织状聚合物链的类型(非晶体)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "防渗出回抽位置" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "材料在停止渗出前所需的回抽长度。" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "防渗出回抽速度" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "在耗材用于防渗出过程中材料所需的回抽速率。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "断裂缓冲期回抽位置" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "耗材受热拉伸但不断裂的极限长度。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "断裂缓冲期回抽速度" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "耗材在回抽过程中恰好折断的回抽速率。" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "断裂回抽位置" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "为完全脱落耗材而抽回耗材的长度。" + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "断裂回抽速度" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "为完全脱落耗材而抽回耗材的速度。" + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "折断温度" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "耗材在完全脱落时的温度。" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1990,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "流量补偿:挤出的材料量乘以此值。" +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "壁流量" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "壁走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "外壁流量" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "最外壁走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "内壁流量" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "适用于所有壁走线(最外壁走线除外)的流量补偿。" + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "顶部/底部流量" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "顶部/底部走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "顶部表层流量" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "打印顶部区域走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "填充流量" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "填充走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "裙边/边缘流量" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "裙边或边缘走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "支撑流量" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "支撑结构走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "支撑接触面流量" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "支撑顶板或底板走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "支撑顶板流量" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "支撑顶板走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "支撑底板流量" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "支撑底板走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "装填塔流量" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "装填塔走线的流量补偿。" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2107,8 +2402,8 @@ msgstr "支撑限制被撤销" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "当从支撑移动到支撑直线时,省略撤回。启用这个设置可以节省打印时间,但是可以在支撑结构中产生出色的字符串。" +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "当在各个支撑间直线移动时,省略回抽。启用这个设置可以节省打印时间,但会在支撑结构中产生过多穿线。" #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2127,8 +2422,8 @@ msgstr "喷嘴切换回抽距离" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "回抽量: 设为 0,不进行任何回抽。 该值通常应与加热区的长度相同。" +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "切换挤出机时的回抽量。设为 0,不进行任何回抽。该值通常应与加热区的长度相同。" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2160,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "喷嘴切换回抽后耗材被推回的速度。" +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "喷嘴切换额外装填量" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "喷嘴切换后的额外装填材料。" + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2351,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "打印 skirt 和 brim 的速度。 一般情况是以起始层速度打印这些部分,但有时候您可能想要以不同速度来打印 skirt 或 brim。" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "最大 Z 速度" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Z 抬升速度" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "打印平台移动的最大速度。 将该值设为零会使打印为最大 Z 速度采用固件默认值。" +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Z 垂直移动实现抬升的速度。一般小于打印速度,因为打印平台或打印机的十字轴较难移动。" #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2787,8 +3092,8 @@ msgstr "梳理模式" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "梳理可在空驶时让喷嘴保持在已打印区域内。这会使空驶距离稍微延长,但可减少回抽需求。如果关闭梳理,则材料将回抽,且喷嘴沿着直线移动到下一个点。也可以避免顶部/底部皮肤区域的梳理和仅在填充物内进行梳理。请注意,“在填充物内”选项的操作方式与较早 Cura 版本中的“不在皮肤中”选项完全相同。" +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "梳理可在空驶时让喷嘴保持在已打印区域内。这会使空驶距离稍微延长,但可减少回抽需求。如果关闭梳理,则材料将回抽,且喷嘴沿着直线移动到下一个点。也可以避免顶部/底部皮肤区域的梳理或仅在填充物内进行梳理。" #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2860,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "喷嘴和已打印部分之间在空驶时避让的距离。" -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "开始具有相同部分的层" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "每一层都在相同点附近开始打印模型,这样我们就不用在开始新层时打印上一层结束的部分。 这会打印出更好的悬垂和较小的部分,但会增加打印时间。" - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2930,6 +3225,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "当机器从一个挤出机切换到另一个时,打印平台会降低以便在喷嘴和打印品之间形成空隙。 这将防止喷嘴在打印品外部留下渗出物。" +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "挤出机切换后的 Z 抬升高度" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "挤出机切换后执行 Z 抬升的高度差。" + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3200,6 +3505,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "交叉" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "螺旋二十四面体" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3261,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "已打印起始层支撑结构走线之间的距离。该设置通过支撑密度计算。" #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "支撑填充走线方向" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "用于支撑的填充图案的方向。支撑填充图案在水平面中旋转。" +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "要使用的整数走线方向列表。列表中的元素随层的进度依次使用,当达到列表末尾时将从头开始。列表项以逗号分隔,整个列表包含在方括号中。“默认“是一个空列表,即意味着使用默认角度 0 度。" #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3397,8 +3707,8 @@ msgstr "支撑结合部距离" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "支撑结构间在 X/Y 方向的最大距离。 当分离结构之间的距离小于此值时,这些结构将合并为一个。" +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "支撑结构间在 X/Y 方向的最大距离。当分离结构之间的距离小于此值时,这些结构将合并为一体。" #: fdmprinter.def.json msgctxt "support_offset label" @@ -3440,6 +3750,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "在切换至密度的一半前指定密度的支撑填充高度。" +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "最小支撑面积" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "支撑多边形的最小面积。将不会生成面积小于此值的多边形。" + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3665,6 +3985,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "锯齿形" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "最小支撑接触面面积" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撑接触面多边形的最小面积。面积小于此值的多边形将打印为一般支撑。" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "最小支撑顶板面积" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撑顶板的最小面积。面积小于此值的多边形将打印为一般支撑。" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "最小支撑底板面积" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撑底板的最小面积。面积小于此值的多边形将打印为一般支撑。" + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "支撑接触面水平扩展" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "应用到支撑接触面多边形的偏移量。" + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "支撑顶板水平扩展" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "应用到支撑顶板的偏移量。" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "支撑底板水平扩展" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "应用到支撑底板的偏移量。" + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "支撑接触面走线方向" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的整数走线方向列表。列表中的元素随层的进度依次使用,当达到列表末尾时将从头开始。列表项以逗号分隔,整个列表包含在方括号中。“默认“为一个空列表,即意味着使用默认角度(如果接触面很厚或为 90 度,则在 45 度和 135 度之间交替)。" + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "支撑顶板走线方向" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的整数走线方向列表。列表中的元素随层的进度依次使用,当达到列表末尾时将从头开始。列表项以逗号分隔,整个列表包含在方括号中。“默认“为一个空列表,即意味着使用默认角度(如果接触面很厚或为 90 度,则在 45 度和 135 度之间交替)。" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "支撑底板走线方向" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的整数走线方向列表。列表中的元素随层的进度依次使用,当达到列表末尾时将从头开始。列表项以逗号分隔,整个列表包含在方括号中。“默认“为一个空列表,即意味着使用默认角度(如果接触面很厚或为 90 度,则在 45 度和 135 度之间交替)。" + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3706,14 +4116,14 @@ msgid "The diameter of a special tower." msgstr "特殊塔的直径。" #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "最小直径" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "最大塔支撑直径" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "将由专门的支撑塔支撑的小区域 X/Y 轴方向的最小直径。" +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "将由专门的支撑塔支撑的小区域 X/Y 轴方向的最大直径。" #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3836,7 +4246,7 @@ msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." msgstr "" -"skirt 和打印第一层之间的水平距离。\n" +"skirt 和打印第一层之间的水平距离。\n" "这是最小距离。多个 skirt 走线将从此距离向外延伸。" #: fdmprinter.def.json @@ -4209,16 +4619,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "在打印品相邻处打印一个塔,用于在每个喷嘴切换后装填材料。" -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "圆形装填塔" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "使装填塔成圆形。" - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4259,16 +4659,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "装填塔位置的 y 坐标。" -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "装填塔流量" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "流量补偿:挤出的材料量乘以此值。" - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4279,6 +4669,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "在用一个喷嘴打印装填塔后,从装填塔上的另一个喷嘴擦去渗出的材料。" +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "装填塔 Brim" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "装填塔可能需要 Brim 提供额外附着力,无论模型是否需要。目前不可与 'Raft' 附着类型配合使用。" + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4399,6 +4799,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "移除第一个打印层下方的空白层(如果存在)。如果“切片公差”设置被设为“独占”或“中间”,禁用此设置可能导致空白第一层。" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "最大分辨率" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "走线部分在切片后的最小尺寸。如果提高此值,网格的分辨率将降低。这可让打印机保持处理 g-code 所需的速度,并将通过移除无法处理的网格细节提高切片速度。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "空走的最大分辨率" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "切片后的旅行线路段的最小尺寸。如果你增加了这个,旅行的移动就会变得不那么平滑了。这可能使打印机能够跟上它处理g代码的速度,但是它可能导致模型的避免变得不那么准确。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "最大偏移量" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "降低“最大分辨率”设置的分辨率时允许的最大偏移量。如果增加该值,打印作业的准确性将降低,但 g-code 将减小。“最大偏移量”是“最大分辨率”的限制,因此如果两者冲突,则“最大偏移量”将始终保持有效。" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4561,8 +4991,8 @@ msgstr "平滑螺旋轮廓" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "平滑螺旋轮廓以减少 Z 缝的可见性(Z 缝应在打印品上几乎看不到,但在层视图中仍然可见)。 请注意,平滑操作将倾向于模糊精细的表面细节。" +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "平滑螺旋轮廓以减少 Z 缝的可见性(Z 缝于打印品上几乎不可见,但在层视图中仍然可见)。注意:平滑操作将模糊精细的表面细节。" #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4774,26 +5204,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "切片层中周长小于此数值的多边形将被滤除。以切片时间为代价,较低的值可实现较高分辨率的网格。它主要用于高分辨率 SLA 打印机和包含大量细节的极小 3D 模型。" -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "最大分辨率" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "走线部分在切片后的最小尺寸。如果提高此值,网格的分辨率将降低。这可让打印机保持处理 g-code 所需的速度,并将通过移除无法处理的网格细节提高切片速度。" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "空走的最大分辨率" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "切片后的旅行线路段的最小尺寸。如果你增加了这个,旅行的移动就会变得不那么平滑了。这可能使打印机能够跟上它处理g代码的速度,但是它可能导致模型的避免变得不那么准确。" - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4934,16 +5344,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "滑行期间的移动速度,相对于挤出路径的速度。 建议采用略低于 100% 的值,因为在滑行移动期间鲍登管中的压力会下降。" -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "交替皮肤旋转" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "交替打印顶部/底部层的方向。 通常它们只进行对角线打印。 此设置添加仅限 X 和仅限 Y 的方向。" - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5051,8 +5451,8 @@ msgstr "启用锥形支撑" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "实验性功能: 让底部的支撑区域小于悬垂处的支撑区域。" +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "使底部的支撑区域小于悬垂处的支撑区域。" #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5116,23 +5516,23 @@ msgstr "在每个走线部分引入的随机点之间的平均距离。 注意 #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "流量补偿最大挤出偏移值" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "以毫米为单位的最大补偿距离。" +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "移动线材以补偿流量变化的最大距离(以毫米为单位)。" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "流量补偿因子" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "流量的倍增因子-> 距离转换。" +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "为补偿流量变化而将线材移动的距离,在挤出一秒钟的情况下占线材移动距离的百分比。" #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5395,7 +5795,7 @@ msgstr "喷嘴和水平下行线之间的距离。 较大的间隙会让斜下 #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" +msgid "Use Adaptive Layers" msgstr "使用自适应图层" #: fdmprinter.def.json @@ -5405,7 +5805,7 @@ msgstr "自适应图层根据模型形状计算图层高度。" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" +msgid "Adaptive Layers Maximum Variation" msgstr "自适应图层最大变化" #: fdmprinter.def.json @@ -5415,7 +5815,7 @@ msgstr "最大允许高度与基层高度不同。" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" +msgid "Adaptive Layers Variation Step Size" msgstr "自适应图层变化步长" #: fdmprinter.def.json @@ -5425,13 +5825,13 @@ msgstr "下一层与前一层的高度差。" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "自适应图层阈值" +msgid "Adaptive Layers Topography Size" +msgstr "自适应图层地形尺寸" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "决定是否使用较小图层的阈值。该数字相当于一层中最大坡度的切线。" +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "两个相邻图层之间的目标水平距离。减小此设置的值会使要使用的图层变薄,从而使图层的边缘距离更近。" #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5440,8 +5840,8 @@ msgstr "悬垂壁角度" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "悬垂超过此角度的壁将使用悬垂壁设置打印。该值为 90 时,不会将任何壁视为悬垂。" +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "悬垂超过此角度的壁将使用悬垂壁设置打印。该值为 90 时,不会将任何壁视为悬垂。受到支撑支持的悬垂也不会被视为悬垂。" #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5643,6 +6043,196 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "打印桥梁第三层表面时使用的风扇百分比速度。" +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "图层切换后擦拭喷嘴" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "是否包括图层切换后擦拭喷嘴的 G-Code。启用此设置可能会影响图层变化时的回抽。请使用“擦拭回抽”设置来控制擦拭脚本将在其中工作的图层回抽。" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "擦拭之间的材料量" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "开始下一轮喷嘴擦拭前,可挤出的最大材料量。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "启用擦拭回抽" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "当喷嘴移动到非打印区域上方时回抽耗材。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "擦拭回抽距离" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "耗材回抽量,可避免耗材在擦拭期间渗出。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "擦拭回抽额外装填量" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "有些材料可能会在擦拭空驶过程中渗出,可以在这里进行补偿。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "擦拭回抽速度" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "擦拭回抽移动期间耗材回抽和装填的速度。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "擦拭回抽期间的回抽速度" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "擦拭回抽移动期间耗材回抽的速度。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "回抽装填速度" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "擦拭回抽移动期间耗材装填的速度。" + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "擦拭暂停" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "在未回抽后暂停。" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "回抽后擦拭 Z 抬升" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "回抽完成时,打印平台会下降以便在喷嘴和打印品之间形成空隙。进而防止喷嘴在空驶过程中撞到打印品,降低打印品滑出打印平台的几率。" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "擦拭 Z 抬升高度" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "执行 Z 抬升的高度差。" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "擦拭抬升速度" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "抬升期间移动 Z 轴的速度。" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "擦拭刷 X 轴坐标" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "擦拭开始处的 X 轴坐标。" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "擦拭重复计数" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "在擦拭刷上移动喷嘴的次数。" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "擦拭移动距离" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "在擦拭刷上来回移动喷嘴头的距离。" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "小孔最大尺寸" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "将使用微小特征速度打印直径小于此尺寸的孔和零件轮廓。" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "微小特征最大长度" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "将使用微小特征速度打印小于此长度的特征轮廓。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "微小特征速度" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "微小特征将按正常打印速度的百分比进行打印。缓慢打印有助于粘合和提高准确性。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "微小特征初始层速度" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "第一层的微小特征将按正常打印速度的百分比进行打印。缓慢打印有助于粘合和提高准确性。" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5703,6 +6293,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撑接触面多边形的最小面积。将不会生成面积小于此值的多边形。" + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撑顶板的最小面积。将不会生成面积小于此值的多边形。" + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撑底板的最小面积。将不会生成面积小于此值的多边形。" + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "交替皮肤旋转" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "交替打印顶部/底部层的方向。 通常它们只进行对角线打印。 此设置添加仅限 X 和仅限 Y 的方向。" + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "流量补偿最大挤出偏移值" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "以毫米为单位的最大补偿距离。" + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "流量补偿因子" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "流量的倍增因子-> 距离转换。" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "自适应图层阈值" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "决定是否使用较小图层的阈值。该数字相当于一层中最大坡度的切线。" + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "悬垂超过此角度的壁将使用悬垂壁设置打印。该值为 90 时,不会将任何壁视为悬垂。" + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "微小特征将按正常打印速度的百分比进行打印。缓慢打印有助于粘合和提高准确性。" + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "第一层速度" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "第一层的微小特征将按正常打印速度的百分比进行打印。缓慢打印有助于粘合和提高准确性。" + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "再一次经过顶部表面,但不挤出材料。 这是为了进一步融化顶部的塑料,打造更平滑的表面。" + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "开始具有相同部分的层" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "每一层都在相同点附近开始打印模型,这样我们就不用在开始新层时打印上一层结束的部分。 这会打印出更好的悬垂和较小的部分,但会增加打印时间。" + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "用于支撑的填充图案的方向。支撑填充图案在水平面中旋转。" + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "在最大分辨率设置中减小分辨率时,允许的最大偏移量。如果增加该值,打印作业的准确性将降低,G-code 将减小。" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-code 风格" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "控制模型轮廓上的各个角是否影响缝隙的位置。 “无”意味着各个角不影响缝隙位置。 “隐藏缝隙”会使缝隙更可能出现在内侧角上。 “外露缝隙”会使缝隙更可能出现在外侧角上。 “隐藏或外露缝隙”会使缝隙更可能出现在内侧或外侧角上。" + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "忽略小 Z 间隙" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "当模型具有小的垂直间隙时,可能会花费大约 5% 的额外计算时间来生成这些狭窄空间中的顶部和底部皮肤。 这种情况下,禁用该设置。" + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "用于打印体积的温度。如果该值为 0,将不会调整打印体积温度。" + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "当从支撑移动到支撑直线时,省略撤回。启用这个设置可以节省打印时间,但是可以在支撑结构中产生出色的字符串。" + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "最大 Z 速度" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "打印平台移动的最大速度。 将该值设为零会使打印为最大 Z 速度采用固件默认值。" + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "支撑结构间在 X/Y 方向的最大距离。 当分离结构之间的距离小于此值时,这些结构将合并为一个。" + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "最小直径" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "将由专门的支撑塔支撑的小区域 X/Y 轴方向的最小直径。" + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "圆形装填塔" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "使装填塔成圆形。" + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "流量补偿:挤出的材料量乘以此值。" + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "平滑螺旋轮廓以减少 Z 缝的可见性(Z 缝应在打印品上几乎看不到,但在层视图中仍然可见)。 请注意,平滑操作将倾向于模糊精细的表面细节。" + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "实验性功能: 让底部的支撑区域小于悬垂处的支撑区域。" + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "已启用的挤出机数目" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "喷嘴外径" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "喷嘴长度" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "喷嘴角度" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "加热区长度" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "升温速度" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "冷却速度" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "G-code 风格" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "不允许区域" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "机器头多边形" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "机器头和风扇多边形" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "十字轴高度" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "挤出机偏移量" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "使用自适应图层" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "自适应图层最大变化" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "自适应图层变化步长" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "自适应图层阈值" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "皮肤和壁之间的重叠量占皮肤走线宽度的百分比。稍微重叠可让各个壁与皮肤牢固连接。这是皮肤走线和最内壁的平均走线宽度的百分比。" + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "皮肤和壁之间的重叠量。 稍微重叠可让各个壁与皮肤牢固连接。" + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "回抽量: 设为 0,不进行任何回抽。 该值通常应与加热区的长度相同。" + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "梳理可在空驶时让喷嘴保持在已打印区域内。这会使空驶距离稍微延长,但可减少回抽需求。如果关闭梳理,则材料将回抽,且喷嘴沿着直线移动到下一个点。也可以避免顶部/底部皮肤区域的梳理和仅在填充物内进行梳理。请注意,“在填充物内”选项的操作方式与较早 Cura 版本中的“不在皮肤中”选项完全相同。" + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "在顶部/底部皮肤路径互相紧靠运行的地方连接它们。对于同心图案,启用此设置可大大减少空驶时间,但因为连接可在填充中途发生,此功能可能会降低顶部表面质量。" diff --git a/resources/i18n/zh_TW/cura.po b/resources/i18n/zh_TW/cura.po index c27349ffe3..d82ada3caa 100644 --- a/resources/i18n/zh_TW/cura.po +++ b/resources/i18n/zh_TW/cura.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" -"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0100\n" -"PO-Revision-Date: 2018-11-06 15:39+0100\n" +"Project-Id-Version: Cura 4.3\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-11-10 21:31+0800\n" "Last-Translator: Zhang Heh Ji \n" "Language-Team: Zhang Heh Ji \n" "Language: zh_TW\n" @@ -16,9 +16,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:22 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "印表機設定" @@ -40,23 +40,23 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-code 檔案" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "G-code 寫入器不支援非文字模式。" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "匯出前請先將 G-code 準備好。" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:30 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:31 msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D 模型助手" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:80 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -70,66 +70,50 @@ msgstr "" "

    了解如何確保最佳的列印品質和可靠性。

    \n" "

    閱讀列印品質指南

    " -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:32 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "顯示更新日誌" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "更新韌體" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "合併有效設定" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF 檔案" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "列印參數已被合併並啟用。" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:32 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:33 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "透過 USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:34 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "透過 USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:69 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "透過 USB 連接" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:92 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "USB 列印正在進行中,關閉 Cura 將停止此列印工作。你確定要繼續嗎?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G 檔案" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "列印仍在進行中。列印完成前,Cura 無法透過 USB 開始另一次列印。" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "將 X3g 寫入檔案" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g 檔案" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "列印正在進行中" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -143,6 +127,7 @@ msgid "GCodeGzWriter does not support text mode." msgstr "G-code GZ 寫入器不支援非文字模式。" #: /home/ruben/Projects/Cura/plugins/UFPWriter/__init__.py:28 +#: /home/ruben/Projects/Cura/plugins/UFPReader/__init__.py:22 msgctxt "@item:inlistbox" msgid "Ultimaker Format Package" msgstr "Ultimaker 格式的封包" @@ -164,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "儲存到行動裝置 {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "沒有可供寫入的檔案格式!" @@ -201,9 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "無法儲存到行動裝置 {0}:{1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:133 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:140 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1607 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "錯誤" @@ -232,8 +217,9 @@ msgstr "卸載行動裝置 {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1597 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1695 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "警告" @@ -260,232 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "行動裝置" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:88 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "網路連線列印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:74 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:89 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "網路連線列印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:87 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "已透過網路連接。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:90 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "已透過網路連接。請在印表機上接受存取請求。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:92 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "已透過網路連接,但沒有印表機的控制權限。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:97 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "已發送印表機存取請求,請在印表機上批准該請求" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:100 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "認証狀態" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:102 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:112 -msgctxt "@info:title" -msgid "Authentication Status" -msgstr "認証狀態" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:103 -msgctxt "@action:button" -msgid "Retry" -msgstr "重試" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:104 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "重新發送存取請求" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:107 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "印表機接受了存取請求" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:111 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "無法使用本印表機進行列印,無法發送列印作業。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:113 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:33 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:70 -msgctxt "@action:button" -msgid "Request Access" -msgstr "請求存取" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:34 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "向印表機發送存取請求" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:200 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "無法開始新的列印作業。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:202 -msgctxt "@label" -msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." -msgstr "Ultimaker 的設定有問題導致無法開始列印。請在繼續之前解決這個問題。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:208 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:230 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "設定不匹配" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:222 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "你確定要使用所選設定進行列印嗎?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:224 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "印表機的設定或校正與 Cura 之間不匹配。為了獲得最佳列印效果,請使用印表機的 PrintCores 和耗材設定進行切片。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:251 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:199 -msgctxt "@info:status" -msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "前一列印作業傳送中,暫停傳送新列印作業。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:258 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:218 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:234 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "正在向印表機發送資料" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:219 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:235 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "發送資料中" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:260 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:236 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:80 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:381 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:20 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:143 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:391 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:279 -msgctxt "@action:button" -msgid "Cancel" -msgstr "取消" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:323 -#, python-brace-format -msgctxt "@info:status" -msgid "No Printcore loaded in slot {slot_number}" -msgstr "Slot {slot_number} 中沒有載入 Printcore" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:329 -#, python-brace-format -msgctxt "@info:status" -msgid "No material loaded in slot {slot_number}" -msgstr "Slot {slot_number} 中沒有載入耗材" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:352 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" -msgstr "擠出機 {extruder_id} 選擇了不同的 PrintCore(Cura:{cura_printcore_name},印表機:{remote_printcore_name})" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:361 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "擠出機 {2} 選擇了不同的耗材(Cura:{0},印表機:{1})" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:547 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "與你的印表機同步" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:549 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "你想在 Cura 中使用目前的印表機設定嗎?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:551 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "印表機上的 PrintCores 和/或耗材與目前專案中的不同。為獲得最佳列印效果,請使用目前印表機的 PrintCores 和耗材設定進行切片。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:91 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "透過網路連接" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:303 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "列印作業已成功傳送到印表機。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:305 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "資料傳送" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:306 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "使用監控觀看" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:422 -#, python-brace-format -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "印表機 '{printer_name}' 已完成列印 '{job_name}'。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:424 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "列印作業 '{job_name}' 已完成。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:425 -msgctxt "@info:status" -msgid "Print finished" -msgstr "列印已完成" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:26 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "透過網路連接" -#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:13 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "網路連線列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "網路連線列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "透過網路連接" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "請等待目前作業傳送完成。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "列印錯誤" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "找到新的雲端印表機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "新找到的印表機已連接到你的帳戶,你可以在已發現的印表機清單中找到它們。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "不要再顯示這個訊息" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "你正在嘗試連接到 {0},但它不是印表機群組的管理者。你可以透過網頁將其設定為印表機群組的管理者。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "不是印表機群組管理者" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "設定印表機群組" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "利用你的 Ultimaker 帳號在任何地方傳送和監控列印作業。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "連接到 Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "開始" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "正在傳送列印作業" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "正在上傳列印作業到印表機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "列印作業已成功傳送到印表機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "資料傳送" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "你正在嘗試連接到一台未安裝 Ultimaker Connect 的印表機。請將印表機更新至最新版本的韌體。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "更新你印表機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura 偵測到群組 {0} 的管理主機上未安裝的耗材參數。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "向印表機傳送耗材參數中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "雲端服務未上傳資料到印表機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "網路錯誤" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "明天" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "今天" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "透過雲端服務列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "透過雲端服務列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "透過雲端服務連接" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "監控" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:119 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "無法存取更新資訊。" @@ -508,22 +426,28 @@ msgid "How to update" msgstr "如何更新" # Added manually to fix a string that was changed after string freeze. -#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:15 msgctxt "@item:inlistbox" msgid "Layer view" msgstr "分層檢視" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:113 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "當鐵絲網列印(Wire Printing)功能開啟時,Cura 將無法準確地顯示列印層(Layers)" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "模擬檢視" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:35 +msgctxt "@item:inmenu" +msgid "Post Processing" +msgstr "後處理" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:36 +msgctxt "@item:inmenu" msgid "Modify G-Code" msgstr "修改 G-Code 檔案" @@ -537,36 +461,6 @@ msgctxt "@info:tooltip" msgid "Create a volume in which supports are not printed." msgstr "建立一塊不列印支撐的空間。" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:52 -msgctxt "@info" -msgid "Cura collects anonymized usage statistics." -msgstr "Cura 以匿名方式蒐集使用狀況統計資料。" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:55 -msgctxt "@info:title" -msgid "Collecting Data" -msgstr "收集資料中" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:57 -msgctxt "@action:button" -msgid "More info" -msgstr "更多資訊" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:58 -msgctxt "@action:tooltip" -msgid "See more information on what data Cura sends." -msgstr "檢視更多關於 Cura 傳送資料的資訊。" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:60 -msgctxt "@action:button" -msgid "Allow" -msgstr "允許" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:61 -msgctxt "@action:tooltip" -msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." -msgstr "允許 Cura 以匿名方式傳送使用狀況統計資料,用來協助 Cura 的未來改善工作。你的部份偏好設定和參數,Cura 的版本及你切片模型的雜湊值會被傳送。" - #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" @@ -597,56 +491,86 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 圖片" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "無法使用目前耗材切片,因為它與所選機器或設定不相容。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:332 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:363 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:387 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:396 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:405 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:414 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 msgctxt "@info:title" msgid "Unable to slice" msgstr "無法切片" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:362 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:361 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "無法使用目前設定進行切片。以下設定存在錯誤:{0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:386 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:385 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "因部份模型設定問題無法進行切片。部份模型的下列設定有錯誤:{error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:394 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "無法切片(原因:換料塔或主位置無效)。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:404 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:403 #, python-format msgctxt "@info:status" msgid "Unable to slice because there are objects associated with disabled Extruder %s." msgstr "有物件使用了被停用的擠出機 %s ,因此無法進行切片。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:413 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:412 msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "沒有模型可進行切片,因為模型超出了列印範圍。請縮放或旋轉模型, 讓模型可置入列印範圍。" +msgid "Nothing to slice because none of the models fit the build volume or are assigned to a disabled extruder. Please scale or rotate models to fit, or enable an extruder." +msgstr "因沒有模型符合列印範圍或是被分配到停用的擠出機,無模型可進行切片。請縮放或旋轉模型以符合列印範圍,或是啟用擠出機。" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:status" msgid "Processing Layers" msgstr "正在處理層" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:255 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:256 msgctxt "@info:title" msgid "Information" msgstr "資訊" @@ -661,14 +585,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "設定對每個模型的單獨設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:575 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "推薦" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:580 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "自訂選項" @@ -679,19 +601,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 檔案" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:190 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:714 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "噴頭" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:468 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "專案檔案 {0} 包含未知的機器類型 {1}。機器無法被匯入,但模型將被匯入。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:471 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "開啟專案檔案" @@ -706,22 +628,65 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G 檔案" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:324 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "正在解析 G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:326 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:474 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code 細項設定" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:472 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "發送檔案之前,請確保 G-code 適用於目前印表機和印表機設定。目前 G-code 檔案可能不準確。" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 +msgctxt "@item:inmenu" +msgid "Manage backups" +msgstr "管理備份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:113 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:104 +msgctxt "@info:title" +msgid "Backup" +msgstr "備份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:55 +msgctxt "@info:backup_status" +msgid "There was an error listing your backups." +msgstr "列出備份時發生錯誤。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DriveApiService.py:132 +msgctxt "@info:backup_status" +msgid "There was an error trying to restore your backup." +msgstr "嘗試恢復備份時發生錯誤。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:15 +msgctxt "@info:title" +msgid "Backups" +msgstr "備份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:27 +msgctxt "@info:backup_status" +msgid "Uploading your backup..." +msgstr "正在上傳你的備份..." + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:36 +msgctxt "@info:backup_status" +msgid "There was an error while uploading your backup." +msgstr "上傳你的備份時發生錯誤。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/UploadBackupJob.py:39 +msgctxt "@info:backup_status" +msgid "Your backup has finished uploading." +msgstr "你的備份上傳完成。" + #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -743,330 +708,451 @@ msgctxt "@error:zip" msgid "Error writing 3mf file." msgstr "寫入 3mf 檔案發生錯誤。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:17 +#: /home/ruben/Projects/Cura/plugins/PreviewStage/__init__.py:13 +msgctxt "@item:inmenu" +msgid "Preview" +msgstr "預覽" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "選擇升級" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "檢查" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21 msgctxt "@action" msgid "Level build plate" msgstr "調平列印平台" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:82 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "外壁" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:83 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "內壁" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:84 -msgctxt "@tooltip" -msgid "Skin" -msgstr "表層" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:85 -msgctxt "@tooltip" -msgid "Infill" -msgstr "填充" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:86 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "支撐填充" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:87 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "支撐介面" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 -msgctxt "@tooltip" -msgid "Support" -msgstr "支撐" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 -msgctxt "@tooltip" -msgid "Skirt" -msgstr "外圍" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 -msgctxt "@tooltip" -msgid "Travel" -msgstr "移動" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "回抽" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 -msgctxt "@tooltip" -msgid "Other" -msgstr "其它" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:310 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "預切片檔案 {0}" - -#: /home/ruben/Projects/Cura/cura/API/Account.py:71 +#: /home/ruben/Projects/Cura/cura/API/Account.py:82 msgctxt "@info:title" msgid "Login failed" msgstr "登入失敗" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:201 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 +msgctxt "@info:not supported profile" +msgid "Not supported" +msgstr "不支援" + +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "預設值" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "檔案已經存在" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:202 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "檔案 {0} 已存在。你確定要覆蓋掉它嗎?" +msgstr "檔案 {0} 已存在。你確定要覆蓋掉它嗎?" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:212 -msgctxt "@menuitem" -msgid "Not overridden" -msgstr "不覆寫" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "所選耗材與所選機器或設定不相容。" +msgid "Invalid file URL:" +msgstr "無效的檔案網址:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 -msgctxt "@info:title" -msgid "Incompatible Material" -msgstr "不相容的耗材" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "設定已被更改為符合目前擠出機:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:866 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" -msgstr "設定已改為與目前擠出機性能相匹配:[%s]" - -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:868 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "設定更新" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 +msgctxt "@info:title" +msgid "Extruder(s) Disabled" +msgstr "擠出機已停用" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "未知" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "無法將列印參數匯出至 {0}{1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "無法將列印參數匯出至 {0}:寫入器外掛報告故障。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "列印參數已匯出至:{0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "匯出成功" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" -msgid "Failed to import profile from {0}: {1}" -msgstr "無法從 {0} 匯入列印參數:{1}" +msgctxt "@info:status Don't translate the XML tags !" +msgid "Failed to import profile from {0}: {1}" +msgstr "無法從 {0} 匯入列印參數:{1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" +msgid "Can't import profile from {0} before a printer is added." +msgstr "在加入印表機前,無法從 {0} 匯入列印參數。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "檔案 {0} 內沒有自訂列印參數可匯入" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "從 {0} 匯入列印參數失敗:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "列印參數 {0} 含有不正確的資料,無法匯入。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "列印參數 {0} 內定義的機器({1})與你目前的機器({2})不匹配, 無法匯入。" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:312 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "從 {0} 匯入列印參數失敗:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:315 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "已成功匯入列印參數 {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:318 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "檔案 {0} 內未含有效的列印參數。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "列印參數 {0} 檔案類型未知或已損壞。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:339 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "自訂列印參數" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:355 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "列印參數缺少列印品質類型定義。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "無法為目前設定找到品質類型 {0}。" -#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:63 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:76 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "外壁" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:77 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "內壁" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:78 +msgctxt "@tooltip" +msgid "Skin" +msgstr "表層" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:79 +msgctxt "@tooltip" +msgid "Infill" +msgstr "填充" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:80 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "支撐填充" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:81 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "支撐介面" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:82 +msgctxt "@tooltip" +msgid "Support" +msgstr "支撐" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:83 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "外圍" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:84 +msgctxt "@tooltip" +msgid "Prime Tower" +msgstr "裝填塔" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:85 +msgctxt "@tooltip" +msgid "Travel" +msgstr "移動" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:86 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "回抽" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:87 +msgctxt "@tooltip" +msgid "Other" +msgstr "其它" + +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "預切片檔案 {0}" + +#: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 +msgctxt "@action:button" +msgid "Next" +msgstr "下一步" + +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" msgstr "群組 #{group_nr}" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:65 -msgctxt "@info:title" -msgid "Network enabled printers" -msgstr "網路印表機" +#: /home/ruben/Projects/Cura/cura/UI/WhatsNewPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:482 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 +msgctxt "@action:button" +msgid "Close" +msgstr "關閉" -#: /home/ruben/Projects/Cura/cura/Machines/Models/MachineManagementModel.py:80 -msgctxt "@info:title" -msgid "Local printers" -msgstr "本機印表機" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 +msgctxt "@action:button" +msgid "Add" +msgstr "增加" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "取消" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "預設值" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "外觀" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "外觀參數是設計來列印較高品質形狀和表面的視覺性原型和模型。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "工程" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "工程參數是設計來列印較高精度和較小公差的功能性原型和實際使用零件。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "草稿" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "草稿參數是設計來縮短時間,快速列印初始原型和概念驗證。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "不覆寫" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "自訂列印參數" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "所有支援的類型 ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "所有檔案 (*)" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:636 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "自訂耗材" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:637 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "自訂" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "下列印表機因為是群組的一部份導致無法連接" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "可用的網路印表機" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "由於「列印序列」設定的值,成形列印範圍高度已被減少,以防止龍門與列印模型相衝突。" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "列印範圍" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:98 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:99 msgctxt "@info:backup_failed" msgid "Could not create archive from user data directory: {}" msgstr "無法從使用者資料目錄建立備份檔:{}" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:103 -msgctxt "@info:title" -msgid "Backup" -msgstr "備份" - -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:113 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:114 msgctxt "@info:backup_failed" msgid "Tried to restore a Cura backup without having proper data or meta data." msgstr "嘗試復原沒有正確資料或 meta data 的 Cura 備份。" -#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:123 +#: /home/ruben/Projects/Cura/cura/Backups/Backup.py:125 msgctxt "@info:backup_failed" -msgid "Tried to restore a Cura backup that does not match your current version." -msgstr "嘗試復原版本不符的 Cura 備份。" +msgid "Tried to restore a Cura backup that is higher than the current version." +msgstr "嘗試復原的 Cura 備份的版本比目前的軟體版本新。" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationHelpers.py:79 +msgctxt "@message" +msgid "Could not read response." +msgstr "雲端沒有讀取回應。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +msgctxt "@info" +msgid "Unable to reach the Ultimaker account server." +msgstr "無法連上 Ultimaker 帳號伺服器。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 +msgctxt "@message" +msgid "Please give the required permissions when authorizing this application." +msgstr "核准此應用程式時,請給予所需的權限。" + +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 +msgctxt "@message" +msgid "Something unexpected happened when trying to log in, please try again." +msgstr "嘗試登入時出現意外狀況,請再試一次。" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "正在複製並放置模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" -msgid "Placing Object" -msgstr "擺放物件中" +msgid "Placing Objects" +msgstr "正在放置模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:96 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "無法在列印範圍內放下全部物件" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "擺放物件中" + #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:30 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:67 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:66 msgctxt "@info:status" msgid "Finding new location for objects" msgstr "正在為物件尋找新位置" #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:34 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:71 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:70 msgctxt "@info:title" msgid "Finding Location" msgstr "尋找位置中" -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:97 -#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:151 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:104 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:150 msgctxt "@info:title" msgid "Can't Find Location" msgstr "無法找到位置" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:87 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:83 msgctxt "@title:window" msgid "Cura can't start" msgstr "Cura 無法啟動" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:89 msgctxt "@label crash message" msgid "" "

    Oops, Ultimaker Cura has encountered something that doesn't seem right.

    \n" @@ -1081,32 +1167,32 @@ msgstr "" "

    請將錯誤報告傳送給我們以修正此問題。

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" msgid "Send crash report to Ultimaker" msgstr "傳送錯誤報告給 Ultimaker" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 msgctxt "@action:button" msgid "Show detailed crash report" msgstr "顯示詳細的錯誤報告" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:105 msgctxt "@action:button" msgid "Show configuration folder" msgstr "顯示設定資料夾" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:120 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 msgctxt "@action:button" msgid "Backup and Reset Configuration" msgstr "備份和重置設定" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:149 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:145 msgctxt "@title:window" msgid "Crash Report" msgstr "錯誤報告" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:169 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:165 msgctxt "@label crash message" msgid "" "

    A fatal error has occurred in Cura. Please send us this Crash Report to fix the problem

    \n" @@ -1117,321 +1203,285 @@ msgstr "" "

    請用\"送出報告\"按鈕自動發出一份錯誤報告到我們的伺服器

    \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:177 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" msgid "System information" msgstr "系統資訊" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:181 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "未知" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:183 msgctxt "@label Cura version number" msgid "Cura version" msgstr "Cura 版本" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:188 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:184 msgctxt "@label Type of platform" msgid "Platform" msgstr "平台" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:189 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:185 msgctxt "@label" msgid "Qt version" msgstr "Qt 版本" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:190 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:186 msgctxt "@label" msgid "PyQt version" msgstr "PyQt 版本" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:191 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:187 msgctxt "@label OpenGL version" msgid "OpenGL" msgstr "OpenGL" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:204 msgctxt "@label" msgid "Not yet initialized
    " msgstr "尚未初始化
    " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:211 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:207 #, python-brace-format msgctxt "@label OpenGL version" msgid "
  • OpenGL Version: {version}
  • " msgstr "
  • OpenGL 版本:{version}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:212 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
  • OpenGL Vendor: {vendor}
  • " msgstr "
  • OpenGL 供應商:{vendor}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:213 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:209 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
  • OpenGL Renderer: {renderer}
  • " msgstr "
  • OpenGL 渲染器:{renderer}
  • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:222 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:218 msgctxt "@title:groupbox" msgid "Error traceback" msgstr "錯誤追溯" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:303 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:299 msgctxt "@title:groupbox" msgid "Logs" msgstr "日誌" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:326 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:322 msgctxt "@title:groupbox" -msgid "User description" -msgstr "使用者描述" +msgid "User description (Note: Developers may not speak your language, please use English if possible)" +msgstr "使用者描述(注意:開發人員可能不會說您的語言,請盡可能使用英語)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:345 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:342 msgctxt "@action:button" msgid "Send report" msgstr "送出報告" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:473 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "正在載入印表機..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:775 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "正在設定偏好設定..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "正在設定場景..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:811 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "正在載入介面…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1037 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1596 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "一次只能載入一個 G-code 檔案。{0} 已跳過匯入" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1606 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "如果載入 G-code,則無法開啟其他任何檔案。{0} 已跳過匯入" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1694 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "選擇的模型太小無法載入。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:61 -msgctxt "@title" -msgid "Machine Settings" -msgstr "印表機設定" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:80 -msgctxt "@title:tab" -msgid "Printer" -msgstr "印表機" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:99 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 +msgctxt "@title:label" msgid "Printer Settings" msgstr "印表機設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:110 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:70 msgctxt "@label" msgid "X (Width)" msgstr "X (寬度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:111 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:121 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:131 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:237 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:386 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:402 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:428 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:440 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:896 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:120 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:84 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (深度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:98 msgctxt "@label" msgid "Z (Height)" msgstr "Z (高度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:142 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:112 msgctxt "@label" msgid "Build plate shape" msgstr "列印平台形狀" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:151 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:125 +msgctxt "@label" msgid "Origin at center" msgstr "原點位於中心" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:159 -msgctxt "@option:check" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:137 +msgctxt "@label" msgid "Heated bed" msgstr "熱床" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:170 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 +msgctxt "@label" +msgid "Heated build volume" +msgstr "熱箱" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 msgctxt "@label" msgid "G-code flavor" msgstr "G-code 類型" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:183 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 +msgctxt "@title:label" msgid "Printhead Settings" msgstr "列印頭設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:193 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:194 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "列印頭左側至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:204 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "列印頭前端至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:213 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:214 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "列印頭右側至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:224 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "列印頭後部至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" -msgid "Gantry height" -msgstr "龍門高度" +msgid "Gantry Height" +msgstr "吊車高度" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:238 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "噴頭尖端與龍門系統(X 軸和 Y 軸)之間的高度差。用於防止「排隊列印」時之前的列印品與龍門發生碰撞。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:257 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "擠出機數目" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:313 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 +msgctxt "@title:label" msgid "Start G-code" msgstr "起始 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:323 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very start." -msgstr "開始時最先執行的 G-code 命令。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:332 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 +msgctxt "@title:label" msgid "End G-code" msgstr "結束 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:342 -msgctxt "@tooltip" -msgid "G-code commands to be executed at the very end." -msgstr "結束前最後執行的 G-code 命令。" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:42 +msgctxt "@title:tab" +msgid "Printer" +msgstr "印表機" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:373 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:63 +msgctxt "@title:label" msgid "Nozzle Settings" msgstr "噴頭設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:385 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:75 msgctxt "@label" msgid "Nozzle size" msgstr "噴頭孔徑" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:89 msgctxt "@label" msgid "Compatible material diameter" msgstr "相容的耗材直徑" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:403 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "印表機所支援的耗材直徑。實際列印的耗材直徑由耗材和/或列印參數提供。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:427 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:105 msgctxt "@label" msgid "Nozzle offset X" msgstr "噴頭偏移 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:439 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "噴頭偏移 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "冷卻風扇數量" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:452 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:472 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 +msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "擠出機起始 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:490 -msgctxt "@label" +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 +msgctxt "@title:label" msgid "Extruder End G-code" msgstr "擠出機結束 G-code" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:18 msgctxt "@action:button" msgid "Install" msgstr "安裝" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:20 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "已安裝" @@ -1439,71 +1489,84 @@ msgstr "已安裝" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxErrorPage.qml:16 msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." -msgstr "無法連上 Cura 軟體包資料庫。請檢查你的網路連線。" +msgstr "無法連上 Cura 套件資料庫。請檢查你的網路連線。" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:28 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 +msgctxt "@label" +msgid "ratings" +msgstr "評分" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "外掛" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:75 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:42 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "耗材" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:79 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +msgctxt "@label" +msgid "Your rating" +msgstr "你的評分" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:99 msgctxt "@label" msgid "Version" msgstr "版本" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:85 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:106 msgctxt "@label" msgid "Last updated" msgstr "最後更新時間" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:91 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:113 msgctxt "@label" msgid "Author" msgstr "作者" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:120 msgctxt "@label" msgid "Downloads" msgstr "下載" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:116 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:258 -msgctxt "@label" -msgid "Unknown" -msgstr "未知" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:56 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to install or update" +msgstr "需要登入才能進行安裝或升級" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:44 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:30 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:80 +msgctxt "@label:The string between and is the highlighted link" +msgid "Buy material spools" +msgstr "購買耗材線軸" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:96 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:34 msgctxt "@action:button" msgid "Update" msgstr "更新" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:45 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:97 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:35 msgctxt "@action:button" msgid "Updating" msgstr "更新中" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:32 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:98 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:36 msgctxt "@action:button" msgid "Updated" msgstr "更新完成" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/Toolbox.qml:13 msgctxt "@title" -msgid "Toolbox" -msgstr "工具箱" +msgid "Marketplace" +msgstr "市集" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml:25 msgctxt "@action:button" @@ -1530,52 +1593,67 @@ msgctxt "@text:window" msgid "Profiles" msgstr "參數" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:89 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:90 msgctxt "@action:button" msgid "Confirm" msgstr "確定" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:17 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to login first before you can rate" +msgstr "你需要先登入才能進行評分" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 +msgctxt "@label" +msgid "You need to install the package before you can rate" +msgstr "你需要先安裝套件才能進行評分" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." -msgstr "需重新啟動 Cura,軟體包的更動才能生效。" +msgstr "需重新啟動 Cura,套件的更動才能生效。" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "結束 Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "社群貢獻" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "社群外掛" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "通用耗材" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:56 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:59 msgctxt "@title:tab" msgid "Installed" msgstr "已安裝" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:22 msgctxt "@label" msgid "Will install upon restarting" msgstr "將在重新啟動時安裝" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:53 +msgctxt "@label:The string between and is the highlighted link" +msgid "Log in is required to update" +msgstr "需要登入才能進行升級" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Downgrade" msgstr "降級版本" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:51 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml:71 msgctxt "@action:button" msgid "Uninstall" msgstr "移除" @@ -1596,12 +1674,12 @@ msgstr "" "你必需同意此份授權協議才能安裝此外掛。\n" "是否同意下列條款?" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" msgid "Accept" msgstr "接受" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:65 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:66 msgctxt "@action:button" msgid "Decline" msgstr "拒絕" @@ -1611,22 +1689,62 @@ msgctxt "@label" msgid "Featured" msgstr "精選" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:31 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "相容性" +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "機器" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "列印平台" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "支撐" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "品質" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 +msgctxt "@action:label" +msgid "Technical Data Sheet" +msgstr "技術資料表" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 +msgctxt "@action:label" +msgid "Safety Data Sheet" +msgstr "安全資料表" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 +msgctxt "@action:label" +msgid "Printing Guidelines" +msgstr "列印指南" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 +msgctxt "@action:label" +msgid "Website" +msgstr "網站" + #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." -msgstr "取得軟體包..." +msgstr "取得套件..." -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:88 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" msgid "Website" msgstr "網站" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:94 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:98 msgctxt "@label" msgid "Email" msgstr "電子郵件" @@ -1636,23 +1754,6 @@ msgctxt "@info:tooltip" msgid "Some things could be problematic in this print. Click to see tips for adjustment." msgstr "此列印可能會有些問題。點擊查看調整提示。" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "更新日誌" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:53 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:467 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:514 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "關閉" - #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.qml:31 msgctxt "@title" msgid "Update Firmware" @@ -1728,426 +1829,504 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "由於韌體遺失,導致韌體更新失敗。" -#: /home/ruben/Projects/Cura/plugins/UserAgreement/UserAgreement.qml:16 -msgctxt "@title:window" -msgid "User Agreement" -msgstr "使用者授權" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "管理印表機" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:46 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "目前連線中" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 +msgctxt "@label" +msgid "Glass" +msgstr "玻璃" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:48 -msgctxt "@message:text" -msgid "This printer/group is already added to Cura. Please select another printer/group." -msgstr "此印表機/群組已加入 Cura。請選擇另一個印表機/群組。" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 +msgctxt "@info" +msgid "Please update your printer's firmware to manage the queue remotely." +msgstr "請更新你印表機的韌體以便遠端管理工作隊列。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 +msgctxt "@info" +msgid "The webcam is not available because you are monitoring a cloud printer." +msgstr "由於你正在監控一台雲端印表機,因此無法使用網路攝影機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 +msgctxt "@label:status" +msgid "Loading..." +msgstr "正在載入..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 +msgctxt "@label:status" +msgid "Unavailable" +msgstr "無法使用" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 +msgctxt "@label:status" +msgid "Unreachable" +msgstr "無法連接" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 +msgctxt "@label:status" +msgid "Idle" +msgstr "閒置中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 +msgctxt "@label" +msgid "Untitled" +msgstr "無標題" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 +msgctxt "@label" +msgid "Anonymous" +msgstr "匿名" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 +msgctxt "@label:status" +msgid "Requires configuration changes" +msgstr "需要修改設定" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 +msgctxt "@action:button" +msgid "Details" +msgstr "細項" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 +msgctxt "@label" +msgid "Unavailable printer" +msgstr "無法使用的印表機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +msgctxt "@label" +msgid "First available" +msgstr "可用的第一個" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:31 +msgctxt "@label" +msgid "Queued" +msgstr "已排入隊列" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:67 +msgctxt "@label link to connect manager" +msgid "Manage in browser" +msgstr "使用瀏覽器管理" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "目前沒有列印作業在隊列中。可透過切片並傳送列印作來增加一個。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 +msgctxt "@label" +msgid "Print jobs" +msgstr "列印作業" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 +msgctxt "@label" +msgid "Total print time" +msgstr "總列印時間" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 +msgctxt "@label" +msgid "Waiting for" +msgstr "等待" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "連接到網路印表機" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"要透過網路列印,請確認你的印表機已透過網路線或 WIFI 連接到網路。若你無法讓 Cura 與印表機連線,你仍然可以使用 USB 裝置將 G-code 檔案傳輸到印表機。\n" -"\n" -"從以下列表中選擇你的印表機:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "要透過網路列印,請確認你的印表機已透過網路線或 WIFI 連接到網路。若你無法讓 Cura 與印表機連線,你仍然可以使用 USB 裝置將 G-code 檔案傳輸到印表機。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:85 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:42 -msgctxt "@action:button" -msgid "Add" -msgstr "增加" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "從下列清單中選擇你的印表機:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "編輯" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "移除" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:114 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "刷新" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:207 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "如果你的印表機未被列出,請閱讀網路列印故障排除指南" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:234 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "類型" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:271 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "韌體版本" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "位址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "此印表機未被設定為管理印表機群組。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:309 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "此印表機為 %1 印表機群組的管理者。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:319 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "該網路位址的印表機尚無回應。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:324 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "連接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:338 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 +msgctxt "@title:window" +msgid "Invalid IP address" +msgstr "無效的 IP 位址" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 +msgctxt "@text" +msgid "Please enter a valid IP address." +msgstr "請輸入有效的 IP 位址 。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "印表機網路位址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "輸入印表機在網路上的 IP 位址或主機名。" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 +msgctxt "@label" +msgid "Enter the IP address of your printer on the network." +msgstr "輸入印表機的 IP 位址。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:390 -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "確定" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "列印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 -msgctxt "@title:window" -msgid "Print over network" -msgstr "網路連線列印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 -msgctxt "@label" -msgid "Printer selection" -msgstr "印表機選擇" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:173 -msgctxt "@label" -msgid "Not available" -msgstr "無法使用" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:175 -msgctxt "@label" -msgid "Unreachable" -msgstr "無法連接" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml:180 -msgctxt "@label" -msgid "Available" -msgstr "可用" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:37 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:44 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:78 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:90 msgctxt "@label:status" msgid "Aborted" msgstr "已中斷" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:80 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:82 msgctxt "@label:status" msgid "Finished" msgstr "已完成" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:84 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:86 msgctxt "@label:status" -msgid "Preparing" -msgstr "正在準備" +msgid "Preparing..." +msgstr "正在準備..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:48 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:88 msgctxt "@label:status" -msgid "Pausing" -msgstr "暫停中" +msgid "Aborting..." +msgstr "正在中斷..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:52 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:92 msgctxt "@label:status" -msgid "Resuming" -msgstr "繼續" +msgid "Pausing..." +msgstr "正在暫停..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrinterCardProgressBar.qml:54 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:94 +msgctxt "@label:status" +msgid "Paused" +msgstr "已暫停" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 +msgctxt "@label:status" +msgid "Resuming..." +msgstr "正在繼續..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:98 msgctxt "@label:status" msgid "Action required" msgstr "需要採取的動作" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:213 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 +msgctxt "@label:status" +msgid "Finishes %1 at %2" +msgstr "在 %2 完成 %1" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 +msgctxt "@title:window" +msgid "Print over network" +msgstr "網路連線列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" -msgid "Waiting for: Unavailable printer" -msgstr "等待:印表機無法使用" +msgid "Printer selection" +msgstr "印表機選擇" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:215 -msgctxt "@label" -msgid "Waiting for: First available" -msgstr "等待:第一可用" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:217 -msgctxt "@label" -msgid "Waiting for: " -msgstr "等待: " - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:299 -msgctxt "@label" -msgid "Configuration change" -msgstr "設定更動" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:365 -msgctxt "@label" -msgid "The assigned printer, %1, requires the following configuration change(s):" -msgstr "分配的印表機 %1 需要下列的設定更動:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:367 -msgctxt "@label" -msgid "The printer %1 is assigned, but the job contains an unknown material configuration." -msgstr "已分配到印表機 %1,但列印工作含有未知的耗材設定。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:375 -msgctxt "@label" -msgid "Change material %1 from %2 to %3." -msgstr "將耗材 %1 從 %2 改成 %3。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:378 -msgctxt "@label" -msgid "Load %3 as material %1 (This cannot be overridden)." -msgstr "將 %3 做為耗材 %1 載入(無法覆寫)。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:381 -msgctxt "@label" -msgid "Change print core %1 from %2 to %3." -msgstr "將 print core %1 從 %2 改成 %3。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:384 -msgctxt "@label" -msgid "Change build plate to %1 (This cannot be overridden)." -msgstr "將列印平台改成 %1(無法覆寫)。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:404 -msgctxt "@label" -msgid "Override" -msgstr "覆寫" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:432 -msgctxt "@label" -msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -msgstr "使用不相容的設定啟動列印工作可能會損壞你的 3D 印表機。你確定要覆寫設定並列印 %1 嗎?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:435 -msgctxt "@window:title" -msgid "Override configuration configuration and start print" -msgstr "覆寫設定並開始列印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:466 -msgctxt "@label" -msgid "Glass" -msgstr "玻璃" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobInfoBlock.qml:469 -msgctxt "@label" -msgid "Aluminum" -msgstr "鋁" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:39 -msgctxt "@label link to connect manager" -msgid "Manage queue" -msgstr "管理隊列" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterMonitorItem.qml:60 -msgctxt "@label" -msgid "Queued" -msgstr "已排入隊列" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "Printing" -msgstr "列印中" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml:49 -msgctxt "@label link to connect manager" -msgid "Manage printers" -msgstr "管理印表機" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:54 msgctxt "@label" msgid "Move to top" msgstr "移至頂端" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:124 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:70 msgctxt "@label" msgid "Delete" msgstr "刪除" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:100 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:289 msgctxt "@label" msgid "Resume" msgstr "繼續" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:137 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:102 +msgctxt "@label" +msgid "Pausing..." +msgstr "正在暫停..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:104 +msgctxt "@label" +msgid "Resuming..." +msgstr "正在繼續..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:106 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:293 msgctxt "@label" msgid "Pause" msgstr "暫停" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 +msgctxt "@label" +msgid "Aborting..." +msgstr "正在中斷..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:124 msgctxt "@label" msgid "Abort" msgstr "中斷" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:178 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:143 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to move %1 to the top of the queue?" msgstr "你確定要將 %1 移至隊列的頂端嗎?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:144 msgctxt "@window:title" msgid "Move print job to top" msgstr "將列印作業移至最頂端" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:188 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:153 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to delete %1?" msgstr "你確定要刪除 %1 嗎?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:189 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:154 msgctxt "@window:title" msgid "Delete print job" msgstr "刪除列印作業" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:163 msgctxt "@label %1 is the name of a print job." msgid "Are you sure you want to abort %1?" msgstr "你確定要中斷 %1 嗎?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml:199 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorContextMenu.qml:164 #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:335 msgctxt "@window:title" msgid "Abort print" msgstr "中斷列印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:43 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "連接到印表機" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:20 +msgctxt "@title:window" +msgid "Configuration Changes" +msgstr "修改設定" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:121 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:27 msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "啟用設定" +msgid "Override" +msgstr "覆寫" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:122 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "將印表機設定載入 Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:85 +msgctxt "@label" +msgid "The assigned printer, %1, requires the following configuration change:" +msgid_plural "The assigned printer, %1, requires the following configuration changes:" +msgstr[0] "分配的印表機 %1 需要下列的設定更動:" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:130 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:89 +msgctxt "@label" +msgid "The printer %1 is assigned, but the job contains an unknown material configuration." +msgstr "已分配到印表機 %1,但列印工作含有未知的耗材設定。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:99 +msgctxt "@label" +msgid "Change material %1 from %2 to %3." +msgstr "將耗材 %1 從 %2 改成 %3。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:102 +msgctxt "@label" +msgid "Load %3 as material %1 (This cannot be overridden)." +msgstr "將 %3 做為耗材 %1 載入(無法覆寫)。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 +msgctxt "@label" +msgid "Change print core %1 from %2 to %3." +msgstr "將 print core %1 從 %2 改成 %3。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 +msgctxt "@label" +msgid "Change build plate to %1 (This cannot be overridden)." +msgstr "將列印平台改成 %1(無法覆寫)。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:115 +msgctxt "@label" +msgid "Override will use the specified settings with the existing printer configuration. This may result in a failed print." +msgstr "覆寫會將指定的設定套用在現有的印表機上。這可能導致列印失敗。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 +msgctxt "@label" +msgid "Aluminum" +msgstr "鋁" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:100 +msgctxt "@info" +msgid "" +"Please make sure your printer has a connection:\n" +"- Check if the printer is turned on.\n" +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." +msgstr "" +"請確認你的印表機有連接:\n" +"- 檢查印表機是否已打開。\n" +"- 檢查印表機是否已連接到網路。\n" +"- 檢查是否已登入以尋找雲端連接的印表機。" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 +msgctxt "@info" +msgid "Please connect your printer to the network." +msgstr "請將你的印表機連上網路。" + +#: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:156 +msgctxt "@label link to technical assistance" +msgid "View user manuals online" +msgstr "查看線上使用者手冊" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:20 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:49 msgctxt "@label" msgid "Color scheme" msgstr "顏色方案" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:145 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:107 msgctxt "@label:listbox" msgid "Material Color" msgstr "耗材顏色" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:149 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:111 msgctxt "@label:listbox" msgid "Line Type" msgstr "線條類型" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:153 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:115 msgctxt "@label:listbox" msgid "Feedrate" msgstr "進給率" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:157 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:119 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "層厚" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:198 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:156 msgctxt "@label" msgid "Compatibility Mode" msgstr "相容模式" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:284 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:230 msgctxt "@label" -msgid "Show Travels" -msgstr "顯示移動軌跡" +msgid "Travels" +msgstr "移動軌跡" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:290 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:236 msgctxt "@label" -msgid "Show Helpers" -msgstr "顯示輔助結構" +msgid "Helpers" +msgstr "輔助結構" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:296 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:242 msgctxt "@label" -msgid "Show Shell" -msgstr "顯示外殼" +msgid "Shell" +msgstr "外殼" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:302 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:65 msgctxt "@label" -msgid "Show Infill" -msgstr "顯示填充" +msgid "Infill" +msgstr "填充" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:355 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:298 msgctxt "@label" msgid "Only Show Top Layers" msgstr "只顯示頂層" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:366 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:308 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "顯示頂端 5 層列印細節" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:379 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:322 msgctxt "@label" msgid "Top / Bottom" msgstr "頂 / 底層" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:383 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:326 msgctxt "@label" msgid "Inner Wall" msgstr "內壁" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:448 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:384 msgctxt "@label" msgid "min" msgstr "最小值" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:500 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationViewMenuComponent.qml:433 msgctxt "@label" msgid "max" msgstr "最大值" @@ -2162,40 +2341,40 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "後處理腳本" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:227 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:233 msgctxt "@action" msgid "Add a script" msgstr "添加一個腳本" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:273 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:279 msgctxt "@label" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:477 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:493 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "更改目前啟用的後處理腳本" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:16 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:17 msgctxt "@title:window" msgid "More information on anonymous data collection" msgstr "更多關於匿名資料收集的資訊" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:66 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:74 msgctxt "@text:window" -msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." -msgstr "Cura 傳送匿名資料給 Ultimaker 以提高列印品質和使用者體驗。以下是傳送資料的例子。" +msgid "Ultimaker Cura collects anonymous data in order to improve the print quality and user experience. Below is an example of all the data that is shared:" +msgstr "Ultimaker Cura 搜集匿名資料以提高列印品質和使用者體驗。以下是共享資料的範例:" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:101 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:109 msgctxt "@text:window" -msgid "I don't want to send these data" -msgstr "我不想傳送這些資料" +msgid "I don't want to send anonymous data" +msgstr "我不想傳送匿名資料" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:111 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:118 msgctxt "@text:window" -msgid "Allow sending these data to Ultimaker and help us improve Cura" -msgstr "允許將這些資料傳送給 Ultimaker 並協助我們改進 Cura" +msgid "Allow sending anonymous data" +msgstr "允許傳送匿名資料" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" @@ -2244,19 +2423,19 @@ msgstr "深度 (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "預設情況下,白色像素表示網格上的高點,黑色像素表示網格上的低點。更改此選項將以相反方式呈現,黑色像素表示網格上的高點,白色像素表示網格上的低點。" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "顏色越淺高度越高" +msgid "For lithophanes dark pixels should correspond to thicker locations in order to block more light coming through. For height maps lighter pixels signify higher terrain, so lighter pixels should correspond to thicker locations in the generated 3D model." +msgstr "對於浮雕,深色像素應該對應到較厚的位置,以阻擋更多的光通過。對於高度圖,淺色像素表示較高的地形,因此淺色像素應對應於產生的 3D 模型中較厚的位置。" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" msgid "Darker is higher" msgstr "顏色越深高度越高" +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "顏色越淺高度越高" + #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 msgctxt "@info:tooltip" msgid "The amount of smoothing to apply to the image." @@ -2267,81 +2446,80 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "平滑" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "網格類型" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "普通模型" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "做為支撐" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "不支援與其他模型重疊" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "修改其他模型的重疊設定" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "修改其他模型的填充設定" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:347 -msgctxt "@action:button" -msgid "Select settings" -msgstr "選擇設定" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:389 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "選擇對此模型的自訂設定" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:437 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:98 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "篩選…" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:451 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "顯示全部" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "網格類型" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "普通模型" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "做為支撐" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "修改重疊處設定" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "重疊處不建立支撐" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "只有填充" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "選擇設定" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "開啟專案" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "更新已有設定" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" -msgstr "新建" +msgstr "新建設定" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "摘要 - Cura 專案" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:97 msgctxt "@action:label" msgid "Printer settings" msgstr "印表機設定" @@ -2357,20 +2535,25 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "更新" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "新建" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" msgid "Type" msgstr "類型" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 msgctxt "@action:label" msgid "Printer Group" msgstr "印表機群組" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "列印參數設定" @@ -2381,224 +2564,220 @@ msgid "How should the conflict in the profile be resolved?" msgstr "如何解决列印參數中的設定衝突?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:120 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:220 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "名稱" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "意圖" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "不在列印參數中" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 覆寫" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "衍生自" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 覆寫" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "耗材設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "如何解决耗材的設定衝突?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:237 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "參數顯示設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "模式" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:246 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "顯示設定:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 / %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "載入專案時將清除列印平台上的所有模型。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "開啟" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:26 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:28 msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "選擇印表機更新檔案" +msgid "My Backups" +msgstr "我的備份" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:38 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "請選擇適用於 Ultimaker 2 的更新檔案。" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:38 +msgctxt "@empty_state" +msgid "You don't have any backups currently. Use the 'Backup Now' button to create one." +msgstr "你目前沒有任何備份。 使用「立即備份」按鈕建立一個。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:47 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/BackupsPage.qml:60 +msgctxt "@backup_limit_info" +msgid "During the preview phase, you'll be limited to 5 visible backups. Remove a backup to see older ones." +msgstr "在預覽階段限制只能顯示 5 個備份。 刪除備份以顯示較舊的備份。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:34 +msgctxt "@description" +msgid "Backup and synchronize your Cura settings." +msgstr "備份並同步你的 Cura 設定。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/pages/WelcomePage.qml:51 +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:138 +msgctxt "@button" +msgid "Sign in" +msgstr "登入" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/main.qml:24 +msgctxt "@title:window" +msgid "Cura Backups" +msgstr "Cura 備份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:21 +msgctxt "@backuplist:label" +msgid "Cura Version" +msgstr "Cura 版本" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:29 +msgctxt "@backuplist:label" +msgid "Machines" +msgstr "印表機" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:37 +msgctxt "@backuplist:label" +msgid "Materials" +msgstr "耗材" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:45 +msgctxt "@backuplist:label" +msgid "Profiles" +msgstr "參數" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItemDetails.qml:53 +msgctxt "@backuplist:label" +msgid "Plugins" +msgstr "外掛" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:71 +msgctxt "@button" +msgid "Restore" +msgstr "復原" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:99 +msgctxt "@dialog:title" +msgid "Delete Backup" +msgstr "刪除備份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:100 +msgctxt "@dialog:info" +msgid "Are you sure you want to delete this backup? This cannot be undone." +msgstr "你確定要刪除此備份嗎? 這動作無法復原。" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:108 +msgctxt "@dialog:title" +msgid "Restore Backup" +msgstr "復原備份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListItem.qml:109 +msgctxt "@dialog:info" +msgid "You will need to restart Cura before your backup is restored. Do you want to close Cura now?" +msgstr "在復原備份之前,你需要重新啟動 Cura。 你想要現在關閉 Cura 嗎?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:22 +msgctxt "@button" +msgid "Want more?" +msgstr "想要更多?" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:31 +msgctxt "@button" +msgid "Backup Now" +msgstr "立即備份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:43 +msgctxt "@checkbox:description" +msgid "Auto Backup" +msgstr "自動備份" + +#: /home/ruben/Projects/Cura/plugins/CuraDrive/src/qml/components/BackupListFooter.qml:44 +msgctxt "@checkbox:description" +msgid "Automatically create a backup each day that Cura is started." +msgstr "每天啟動 Cura 時自動建立備份。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" msgstr "列印平台調平" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:44 msgctxt "@label" msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." msgstr "為了確保列印品質出色,你現在可以開始調整你的列印平台。當你點擊「移動到下一個位置」時,噴頭將移動到不同的可調節位置。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:57 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." msgstr "在噴頭停止的每一個位置下方插入一張紙,並調整平台高度。當紙張恰好被噴頭的尖端輕微壓住時,表示列印平台已被校準在正確的高度。" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:75 msgctxt "@action:button" msgid "Start Build Plate Leveling" msgstr "開始進行列印平台調平" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:87 msgctxt "@action:button" msgid "Move to Next Position" msgstr "移動到下一個位置" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:30 msgctxt "@label" msgid "Please select any upgrades made to this Ultimaker Original" msgstr "請選擇適用於 Ultimaker Original 的更新檔案" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:41 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" msgstr "熱床(官方版本或自製版本)" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "檢查印表機" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "對 Ultimaker 進行幾項正確性檢查是很好的做法。如果你知道你的機器功能正常,則可跳過此步驟" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "開始印表機檢查" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "連線: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "已連線" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "未連線" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "X Min 限位開關: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "正常" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "未檢查" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Y Min 限位開關: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Z Min 限位開關: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "檢查噴頭溫度: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "停止加熱" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "開始加熱" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "熱床溫度檢查:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "已檢查" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "一切正常!你已經完成檢查。" - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" @@ -2610,7 +2789,6 @@ msgid "Printer does not accept commands" msgstr "印表機不接受命令" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:133 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:197 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "維護中。請檢查印表機" @@ -2621,19 +2799,16 @@ msgid "Lost connection with the printer" msgstr "與印表機的連線中斷" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:187 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "列印中..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:149 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:189 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "已暫停" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:152 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:191 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "準備中..." @@ -2653,235 +2828,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "你確定要中斷列印嗎?" -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "捨棄或保留更改" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"你已自訂部份列印參數設定。\n" -"你想保留或捨棄這些設定嗎?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "列印參數設定" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "預設" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "自訂" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:637 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "總是詢問" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "捨棄更改,並不再詢問此問題" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "保留更改,並不再詢問此問題" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "捨棄" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "保留" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "建立新的列印參數" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "直徑更改確認" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "新的耗材直徑設定為 %1 mm,這與目前的擠出機不相容。你要繼續嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "顯示名稱" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "品牌" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "耗材類型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "顏色" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "屬性" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "密度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:229 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "直徑" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "耗材成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "耗材重量" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "耗材長度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:307 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "每公尺成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "此耗材與 %1 相關聯,並共享其部份屬性。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "解除聯結耗材" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "描述" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:352 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "附著資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:378 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "列印設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:35 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "啟用" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "建立" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "匯入" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:154 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 msgctxt "@action:button" msgid "Export" msgstr "匯出" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "印表機" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "移除確認" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "你確定要移除 %1 嗎?這動作無法復原!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "匯入耗材設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "無法匯入耗材 %1%2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "成功匯入耗材 %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "匯出耗材設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "無法匯出耗材至 %1%2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "成功匯出耗材至:%1" @@ -2891,669 +3007,521 @@ msgctxt "@title:tab" msgid "Setting Visibility" msgstr "參數顯示設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:46 msgctxt "@label:textbox" msgid "Check all" msgstr "全選" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "已計算" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "目前" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "單位" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:410 msgctxt "@title:tab" msgid "General" msgstr "基本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:132 msgctxt "@label" msgid "Interface" msgstr "介面" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "語言:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "貨幣:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "主題:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:292 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "需重新啟動 Cura,新的設定才能生效。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "當設定變更時自動進行切片。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "自動切片" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "顯示區設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:339 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "以紅色凸顯模型缺少支撐的區域。如果沒有支撐這些區域將無法正常列印。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "顯示突出部分" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "當模型被選中時,視角將自動調整到最合適的觀察位置(模型處於正中央)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "當專案被選中時,自動置中視角" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "需要讓 Cura 的預設縮放操作反轉嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "反轉視角縮放方向。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "是否跟隨滑鼠方向進行縮放?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "正交透視不支援游標縮放功能。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "跟隨滑鼠方向縮放" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "需要移動平台上的模型,使它們不再交錯嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "確保每個模型都保持分離" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "要將模型下降到碰觸列印平台嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:418 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自動下降模型到列印平台" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "在 g-code 讀取器中顯示警告訊息。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-code 讀取器中的警告訊息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "分層檢視要強制進入相容模式嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:452 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "強制分層檢視相容模式(需要重新啟動)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:468 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Cura 應該開啟在前次關閉時的位置嗎?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "開啟時復原視窗位置" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "使用哪種類型的攝影機渲染?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "攝影機渲染:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "透視" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "正交" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "開啟並儲存檔案" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "當模型的尺寸過大時,是否將模型自動縮小至列印範圍嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "縮小過大模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "部份模型採用較大的單位(例如:公尺),導致模型變得非常小,要將這些模型放大嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "放大過小模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "模型載入後要設為被選擇的狀態嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:510 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "模型載入後選擇模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "是否自動將印表機名稱作為列印作業名稱的前綴?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:525 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "將印表機名稱前綴添加到列印作業名稱中" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "儲存專案檔案時是否顯示摘要?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "儲存專案時顯示摘要對話框" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "開啟專案檔案時的預設行為" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:557 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "開啟專案檔案時的預設行為: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "每次都向我確認" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:572 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "總是作為一個專案開啟" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "總是匯入模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "當你對列印參數進行更改然後切換到其他列印參數時,將顯示一個對話框詢問你是否要保留修改。你也可以選擇預設不顯示該對話框。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:623 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "當切換到另一組列印參數時,對於被修改過的設定的預設行為: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "總是詢問" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "總是放棄修改過的設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:639 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "總是將修改過的設定轉移至新的列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:673 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "隱私權" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "當 Cura 啟動時,是否自動檢查更新?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:686 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "啟動時檢查更新" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:697 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "你願意將關於你的列印資料以匿名形式發送到 Ultimaker 嗎?注意:我們不會記錄或發送任何模型、IP 地址或其他私人資料。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(匿名)發送列印資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:711 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "更多資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:729 -msgctxt "@label" -msgid "Experimental" -msgstr "實驗功能" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:736 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "使用多列印平台功能" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:741 -msgctxt "@option:check" -msgid "Use multi build plate functionality (restart required)" -msgstr "使用多列印平台功能(需重啟軟體)" - #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:16 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:549 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "印表機" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "重命名" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:147 -msgctxt "@label" -msgid "Printer type:" -msgstr "印表機類型:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:156 -msgctxt "@label" -msgid "Connection:" -msgstr "連線:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:162 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "尚未連線到印表機。" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:168 -msgctxt "@label" -msgid "State:" -msgstr "狀態:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:181 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "等待列印作業" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:193 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "等待清空列印平台" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "中斷列印..." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "建立" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "建立列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:225 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 +msgctxt "@info" +msgid "Please provide a name for this profile." +msgstr "請為此參數提供一個名字。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "複製列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:256 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "重命名列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "匯入列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "匯出列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "印表機:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Protected profiles" -msgstr "受保護的列印參數" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:403 -msgctxt "@label" -msgid "Custom profiles" -msgstr "自訂列印參數" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:480 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "使用目前設定 / 覆寫值更新列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:487 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "捨棄目前更改" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:504 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." -msgstr "此列印參數使用印表機指定的預設值,因此在下面的列表中沒有此設定項。" +msgstr "此列印參數使用印表機指定的預設值,因此在下面的清單中沒有此設定項。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "你目前的設定與選定的列印參數相匹配。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "全局設定" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:953 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "新增印表機" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:195 -msgctxt "@label" -msgid "Printer Name:" -msgstr "印表機名稱:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" -msgid "Add Printer" -msgstr "新增印表機" +msgid "Marketplace" +msgstr "市集" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "檔案(&F)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:31 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "編輯(&E)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "檢視(&V)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:13 +msgctxt "@title:menu menubar:toplevel" +msgid "&Settings" +msgstr "設定(&S)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:55 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "擴充功能(&X)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:89 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "偏好設定(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:97 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "幫助(&H)" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:124 +msgctxt "@title:window" +msgid "New project" +msgstr "新建專案" + +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/ApplicationMenu.qml:125 +msgctxt "@info:question" +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "你確定要開始一個新專案嗎?這將清除列印平台及任何未儲存的設定。" + +#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:88 msgctxt "@text Print job name" msgid "Untitled" msgstr "無標題" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "關於 Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:55 -msgctxt "@label" -msgid "version: %1" -msgstr "版本:%1" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "熔絲 3D 列印技術的的端對端解決方案。" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:82 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura 由 Ultimaker B.V. 與社區合作開發。\n" -"Cura 使用以下開源專案:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "圖形用戶介面" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "Application framework" -msgstr "應用框架" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "G-code generator" -msgstr "G-code 產生器" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "進程間通訊交互使用庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "Programming language" -msgstr "編程語言" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUI 框架" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "GUI 框架綁定" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:140 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "C / C++ 綁定庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:141 -msgctxt "@label" -msgid "Data interchange format" -msgstr "資料交換格式" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:142 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "科學計算函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:143 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "高速運算函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:144 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "用於處理 STL 檔案的函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:145 -msgctxt "@label" -msgid "Support library for handling planar objects" -msgstr "用於處理平面物件的函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -msgctxt "@label" -msgid "Support library for handling triangular meshes" -msgstr "用於處理三角形網格的函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 -msgctxt "@label" -msgid "Support library for analysis of complex networks" -msgstr "用於分析複雜網路的函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:148 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "用於處理 3MF 檔案的函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:149 -msgctxt "@label" -msgid "Support library for file metadata and streaming" -msgstr "用於檔案 metadata 和串流的函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:150 -msgctxt "@label" -msgid "Serial communication library" -msgstr "串口通訊函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:151 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "ZeroConf 發現函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:152 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "多邊形剪輯函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:153 -msgctxt "@Label" -msgid "Python HTTP library" -msgstr "Python HTTP 函式庫" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:155 -msgctxt "@label" -msgid "Font" -msgstr "字體" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:156 -msgctxt "@label" -msgid "SVG icons" -msgstr "SVG 圖標" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:157 -msgctxt "@label" -msgid "Linux cross-distribution application deployment" -msgstr "Linux cross-distribution 應用程式部署" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:42 -msgctxt "@label" -msgid "Profile:" -msgstr "列印參數:" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"部份設定/覆寫值與儲存在列印參數中的值不同。\n" -"\n" -"點擊開啟列印參數管理器。" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:200 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "Search..." -msgstr "搜尋..." +msgid "Search settings" +msgstr "搜尋設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:545 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "將設定值複製到所有擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "複製所有改變的設定值到所有擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "隱藏此設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:609 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "不再顯示此設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:613 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "保持此設定顯示" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:637 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "參數顯示設定..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:644 -msgctxt "@action:inmenu" -msgid "Collapse All" -msgstr "全部折疊" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:649 -msgctxt "@action:inmenu" -msgid "Expand All" -msgstr "全部展開" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:253 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:237 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3564,27 +3532,32 @@ msgstr "" "\n" "點擊以顯這些設定。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:81 +msgctxt "@label" +msgid "This setting is not used because all the settings that it influences are overridden." +msgstr "此設定未被使用,因為受它影響的設定都被覆寫了。" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:86 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "影響" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:91 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "影響因素" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "這個設定是所有擠出機共用的。修改它會同時更動到所有擠出機的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "這個數值是由每個擠出機的設定值解析出來的 " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3595,7 +3568,7 @@ msgstr "" "\n" "單擊以復原列印參數的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3606,116 +3579,211 @@ msgstr "" "\n" "點擊以恢復計算得出的數值。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "沒有擠出機 %2 用的 %1 參數。將使用預設參數" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 +msgctxt "@button" +msgid "Recommended" +msgstr "推薦" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 +msgctxt "@button" +msgid "Custom" +msgstr "自訂選項" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:193 +msgctxt "@label" +msgid "Gradual infill" +msgstr "漸近式填充" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml:232 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "漸近式填充將隨著列印高度的提升而逐漸加大填充密度。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:30 +msgctxt "@label" +msgid "Support" +msgstr "支撐" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml:71 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "在模型的突出部分產生支撐結構。若不這樣做,這些部分在列印時將倒塌。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:29 +msgctxt "@label" +msgid "Adhesion" +msgstr "附著" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml:74 +msgctxt "@label" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "允許列印邊緣或木筏。這將在你的物件周圍或下方添加一個容易切斷的平面區域。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "你修改過部份列印參數設定。如果你想改變這些設定,請切換到自訂模式。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 +msgctxt "@label:Should be short" +msgid "On" +msgstr "開啟" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:14 +msgctxt "@label:Should be short" +msgid "Off" +msgstr "關閉" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "實驗功能" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 +msgctxt "@label" +msgid "Profile" +msgstr "參數" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"部份設定/覆寫值與儲存在列印參數中的值不同。\n" +"\n" +"點擊開啟列印參數管理器。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "自訂列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 +msgctxt "@label shown when we load a Gcode file" +msgid "Print setup disabled. G-code file can not be modified." +msgstr "列印設定已被停用。 G-code 檔案無法修改。" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:52 msgctxt "@label" msgid "Printer control" msgstr "印表機控制" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:67 msgctxt "@label" msgid "Jog Position" msgstr "輕搖位置" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:85 msgctxt "@label" msgid "X/Y" msgstr "X/Y" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:192 msgctxt "@label" msgid "Z" msgstr "Z" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:257 msgctxt "@label" msgid "Jog Distance" msgstr "輕搖距離" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:301 msgctxt "@label" msgid "Send G-code" msgstr "傳送 G-code" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ManualPrinterControl.qml:365 msgctxt "@tooltip of G-code command input" msgid "Send a custom G-code command to the connected printer. Press 'enter' to send the command." msgstr "傳送一個自訂的 G-code 命令到連接中的印表機。按下 Enter 鍵傳送命令。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "擠出機" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "加熱頭的目標溫度。加熱頭將加熱或冷卻至此溫度。若設定為 0,則關閉加熱頭的加熱。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "此加熱頭的目前溫度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "加熱頭預熱溫度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:336 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:339 -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:334 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "預熱" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "列印前預先加熱。你可以在加熱時繼續調整你的列印,當你準備好列印時就不需等待加熱頭升溫。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:401 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "該擠出機中耗材的顏色。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "該擠出機中的耗材。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "該擠出機所使用的噴頭。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:25 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:493 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/OutputDeviceHeader.qml:55 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "尚未連線到印表機。" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:26 msgctxt "@label" msgid "Build plate" msgstr "列印平台" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:56 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "熱床的目標溫度。熱床將加熱或冷卻至此溫度。若設定為 0,則不使用熱床。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:88 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "熱床目前溫度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:161 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "熱床的預熱溫度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:360 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:361 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "列印前請預熱熱床。你可以在熱床加熱時繼續調整相關物件,讓你在準備列印時不必等待熱床加熱完畢。" @@ -3725,12 +3793,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "耗材" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "常用" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "通用" @@ -3745,17 +3813,52 @@ msgctxt "@label:category menu label" msgid "Local printers" msgstr "本機印表機" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "檢視(&V)" +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:15 +msgctxt "@title:menu menubar:settings" +msgid "&Printer" +msgstr "印表機(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 +msgctxt "@title:menu" +msgid "&Material" +msgstr "耗材(&M)" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "設為主要擠出機" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 +msgctxt "@action:inmenu" +msgid "Enable Extruder" +msgstr "啟用擠出機" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 +msgctxt "@action:inmenu" +msgid "Disable Extruder" +msgstr "關閉擠出機" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "視角位置(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:58 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "攝影機檢視" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "透視" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "正交" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "列印平台(&B)" @@ -3775,6 +3878,21 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "管理參數顯示..." +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 +msgctxt "@title:menu menubar:file" +msgid "&Save..." +msgstr "儲存(&S)" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 +msgctxt "@title:menu menubar:file" +msgid "&Export..." +msgstr "匯出(&E)" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 +msgctxt "@action:inmenu menubar:file" +msgid "Export Selection..." +msgstr "匯出選擇…" + #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:27 msgctxt "@label" msgid "Print Selected Model With:" @@ -3792,653 +3910,506 @@ msgctxt "@label" msgid "Number of Copies" msgstr "複製個數" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:33 -msgctxt "@label:header configurations" -msgid "Available configurations" -msgstr "可用的設定" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/AutoConfiguration.qml:18 +msgctxt "@header" +msgid "Configurations" +msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml:28 -msgctxt "@label:extruder label" -msgid "Extruder" -msgstr "擠出機" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 +msgctxt "@label" +msgid "Select configuration" +msgstr "選擇設定" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "Yes" -msgstr "是" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 +msgctxt "@label" +msgid "Configurations" +msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/SyncButton.qml:16 -msgctxt "@label:extruder label" -msgid "No" -msgstr "否" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:57 +msgctxt "@label" +msgid "Loading available configurations from the printer..." +msgstr "從印表機載入可用的設定..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml:58 +msgctxt "@label" +msgid "The configurations are not available because the printer is disconnected." +msgstr "由於印表機已斷線,因此設定無法使用。" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:25 +msgctxt "@header" +msgid "Custom" +msgstr "自訂選項" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:61 +msgctxt "@label" +msgid "Printer" +msgstr "印表機" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:213 +msgctxt "@label" +msgid "Enabled" +msgstr "已啟用" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 +msgctxt "@label" +msgid "Material" +msgstr "耗材" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 +msgctxt "@label" +msgid "Use glue for better adhesion with this material combination." +msgstr "在此耗材組合下,使用膠水以獲得較佳的附著。" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 +msgctxt "@label" +msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." +msgstr "由於無法識別 %1,因此無法使用此設定。 請連上 %2 下載正確的耗材參數設定。" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 +msgctxt "@label" +msgid "Marketplace" +msgstr "市集" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:15 msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "最近開啟的檔案(&R)" -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "列印設定" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:150 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"列印設定已關閉\n" -"G-code 檔案無法被修改" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:340 -msgctxt "@label Hours and minutes" -msgid "00h 00min" -msgstr "00 小時 00 分" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:358 -msgctxt "@tooltip" -msgid "Time specification" -msgstr "時間規格" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:440 -msgctxt "@label" -msgid "Cost specification" -msgstr "成本明細" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:445 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:454 -msgctxt "@label m for meter" -msgid "%1m" -msgstr "%1m" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:446 -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:455 -msgctxt "@label g for grams" -msgid "%1g" -msgstr "%1g" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:453 -msgctxt "@label" -msgid "Total:" -msgstr "總共:" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:576 -msgctxt "@tooltip" -msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." -msgstr "推薦的列印設定

    使用針對所選印表機、耗材和品質的推薦設定進行列印。" - -#: /home/ruben/Projects/Cura/resources/qml/PrepareSidebar.qml:581 -msgctxt "@tooltip" -msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." -msgstr "自訂列印設定
    對切片過程中的每一個細節進行精細控制。" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:140 msgctxt "@label" msgid "Active print" msgstr "正在列印" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:148 msgctxt "@label" msgid "Job Name" msgstr "作業名稱" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:156 msgctxt "@label" msgid "Printing Time" msgstr "列印時間" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:164 msgctxt "@label" msgid "Estimated time left" msgstr "預計剩餘時間" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/ViewsSelector.qml:50 +msgctxt "@label" +msgid "View type" +msgstr "檢示類型" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "物件清單" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 +msgctxt "@label The argument is a username." +msgid "Hi %1" +msgstr "嗨 %1" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:33 +msgctxt "@button" +msgid "Ultimaker account" +msgstr "Ultimaker 帳號" + +#: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:42 +msgctxt "@button" +msgid "Sign out" +msgstr "登出" + +#: /home/ruben/Projects/Cura/resources/qml/Account/AccountWidget.qml:24 +msgctxt "@action:button" +msgid "Sign in" +msgstr "登入" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:40 +msgctxt "@label" +msgid "The next generation 3D printing workflow" +msgstr "下一世代的 3D 列印流程" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:51 +msgctxt "@text" +msgid "" +"- Send print jobs to Ultimaker printers outside your local network\n" +"- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +"- Get exclusive access to print profiles from leading brands" +msgstr "" +"- 將列印作業傳送到你區域網路外的 Ultimaker 印表機\n" +"- 將你的 Ultimaker Cura 設定儲存在雲端以便隨處使用\n" +"- 取得領導品牌的耗材參數設定的獨家存取權限" + +#: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 +msgctxt "@button" +msgid "Create account" +msgstr "建立帳號" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:59 +msgctxt "@label" +msgid "No time estimation available" +msgstr "沒有時間估計" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:77 +msgctxt "@label" +msgid "No cost estimation available" +msgstr "沒有成本估算" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:127 +msgctxt "@button" +msgid "Preview" +msgstr "預覽" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:55 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "正在切片..." + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:67 +msgctxt "@label:PrintjobStatus" +msgid "Unable to slice" +msgstr "無法切片" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "處理中" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Slice" +msgstr "切片" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:104 +msgctxt "@label" +msgid "Start the slicing process" +msgstr "開始切片程序" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 +msgctxt "@button" +msgid "Cancel" +msgstr "取消" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:31 +msgctxt "@label" +msgid "Time estimation" +msgstr "時間估計" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:114 +msgctxt "@label" +msgid "Material estimation" +msgstr "耗材估計" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:164 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/PrintJobInformation.qml:165 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Connected printers" +msgstr "已連線印表機" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelectorList.qml:19 +msgctxt "@label" +msgid "Preset printers" +msgstr "預設印表機" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:166 +msgctxt "@button" +msgid "Add printer" +msgstr "新增印表機" + +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 +msgctxt "@button" +msgid "Manage printers" +msgstr "管理印表機" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:81 +msgctxt "@action:inmenu" +msgid "Show Online Troubleshooting Guide" +msgstr "顯示線上故障排除指南" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:88 msgctxt "@action:inmenu" msgid "Toggle Full Screen" msgstr "切換全螢幕" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "離開全螢幕" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "復原(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:113 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "取消復原(&R)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:123 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "退出(&Q)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:131 msgctxt "@action:inmenu menubar:view" msgid "3D View" msgstr "立體圖" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 msgctxt "@action:inmenu menubar:view" msgid "Front View" msgstr "前視圖" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:145 msgctxt "@action:inmenu menubar:view" msgid "Top View" msgstr "上視圖" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:152 msgctxt "@action:inmenu menubar:view" msgid "Left Side View" msgstr "左視圖" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:159 msgctxt "@action:inmenu menubar:view" msgid "Right Side View" msgstr "右視圖" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "設定 Cura…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:173 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "新增印表機(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "管理印表機(&I)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "管理耗材…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:195 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "使用目前設定 / 覆寫更新列印參數(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "捨棄目前更改(&D)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:215 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "從目前設定 / 覆寫值建立列印參數(&C)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:221 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "管理列印參數.." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:229 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "顯示線上說明文件(&D)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:237 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "BUG 回報(&B)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:245 +msgctxt "@action:inmenu menubar:help" +msgid "What's New" +msgstr "新功能" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:251 msgctxt "@action:inmenu menubar:help" msgid "About..." msgstr "關於…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" msgstr[0] "刪除所選模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "置中所選模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "複製所選模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "刪除模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "將模型置中(&N)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:300 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "群組模型(&G)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:320 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "取消模型群組" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:330 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "結合模型(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "複製模型…(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:347 msgctxt "@action:inmenu menubar:edit" msgid "Select All Models" msgstr "選擇所有模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:357 msgctxt "@action:inmenu menubar:edit" msgid "Clear Build Plate" msgstr "清空列印平台" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:367 msgctxt "@action:inmenu menubar:file" msgid "Reload All Models" msgstr "重新載入所有模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:376 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models To All Build Plates" msgstr "將所有模型排列到所有列印平台上" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:383 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "排列所有模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:391 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "排列所選模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:398 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "重置所有模型位置" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:405 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Transformations" msgstr "重置所有模型旋轉" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:412 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "開啟檔案(&O)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:420 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "新建專案(&N)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "顯示切片引擎日誌(&L)..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:427 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "顯示設定資料夾" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" -msgid "Browse packages..." -msgstr "瀏覽軟體包..." +msgid "&Marketplace" +msgstr "市集(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 -msgctxt "@action:inmenu menubar:view" -msgid "Expand/Collapse Sidebar" -msgstr "展開/收合側邊欄" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "請載入一個 3D 模型" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "切片已準備就緒" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "正在切片..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "%1 已準備就緒" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:43 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "無法切片" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:45 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "切片無法使用" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Slice current printjob" -msgstr "對目前列印工作進行切片" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:172 -msgctxt "@info:tooltip" -msgid "Cancel slicing process" -msgstr "取消進行中的切片程序" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "準備" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:184 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "取消" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:320 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "選擇作用中的輸出裝置" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:767 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "開啟檔案" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "我們已經在你所選擇的檔案中找到一個或多個專案檔案,但一次只能開啟一個專案檔案。我們建議只從那些檔案中匯入模型而不開啟專案。你要繼續操作嗎?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "匯入所有模型" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:24 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:103 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "檔案(&F)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:121 -msgctxt "@title:menu menubar:file" -msgid "&Save..." -msgstr "儲存(&S)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:142 -msgctxt "@title:menu menubar:file" -msgid "&Export..." -msgstr "匯出(&E)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:153 -msgctxt "@action:inmenu menubar:file" -msgid "Export Selection..." -msgstr "匯出選擇…" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:174 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "編輯(&E)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&View" -msgstr "檢視(&V)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "設定(&S)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 -msgctxt "@title:menu menubar:settings" -msgid "&Printer" -msgstr "印表機(&P)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:207 -msgctxt "@title:menu" -msgid "&Material" -msgstr "耗材(&M)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:216 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "設為主要擠出機" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:222 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:188 -msgctxt "@action:inmenu" -msgid "Enable Extruder" -msgstr "啟用擠出機" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:229 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:194 -msgctxt "@action:inmenu" -msgid "Disable Extruder" -msgstr "關閉擠出機" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:241 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "列印平台(&B)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:242 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "列印參數(&P)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:252 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "擴充功能(&X)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:286 -msgctxt "@title:menu menubar:toplevel" -msgid "&Toolbox" -msgstr "工具箱(&T)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:294 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "偏好設定(&R)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:302 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "幫助(&H)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:348 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." -msgstr "此軟體包將在重新啟動後安裝。" +msgstr "此套件將在重新啟動後安裝。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:377 -msgctxt "@action:button" -msgid "Open File" -msgstr "開啟檔案" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:547 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 -msgctxt "@title:window" -msgid "New project" -msgstr "新建專案" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:594 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "你確定要開始一個新專案嗎?這將清除列印平台及任何未儲存的設定。" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:722 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "關閉 Cura 中" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:723 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:735 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "你確定要結束 Cura 嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:868 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "開啟檔案" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" -msgstr "安裝軟體包" +msgstr "安裝套件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:875 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "開啟檔案" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:878 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "我們已經在你選擇的檔案中找到一個或多個 G-Code 檔案。你一次只能開啟一個 G-Code 檔案。若需開啟 G-Code 檔案,請僅選擇一個。" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" -msgid "Save Project" -msgstr "儲存專案" +msgid "Add Printer" +msgstr "新增印表機" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:137 -msgctxt "@action:label" -msgid "Build plate" -msgstr "列印平台" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:169 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "擠出機 %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & 耗材" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:268 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "儲存時不再顯示專案摘要" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:287 -msgctxt "@action:button" -msgid "Save" -msgstr "儲存" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "Layer Height" -msgstr "層高" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:277 -msgctxt "@tooltip" -msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" -msgstr "品質參數不適用於目前的耗材和噴頭設定。請變更這些設定以啟用此品質參數" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:450 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "目前正使用自訂列印參數。若要使用品質滑動條,在自訂分頁中選擇預設的列印參數" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:467 -msgctxt "@label" -msgid "Print Speed" -msgstr "列印速度" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:479 -msgctxt "@label" -msgid "Slower" -msgstr "更慢" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:490 -msgctxt "@label" -msgid "Faster" -msgstr "更快" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:518 -msgctxt "@tooltip" -msgid "You have modified some profile settings. If you want to change these go to custom mode." -msgstr "你修改過部份列印參數設定。如果你想改變這些設定,請切換到自訂模式。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:541 -msgctxt "@label" -msgid "Infill" -msgstr "填充" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:777 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "漸層填充(Gradual infill)將隨著列印高度的提升而逐漸加大填充密度。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:791 -msgctxt "@label" -msgid "Enable gradual" -msgstr "啟用漸層" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:858 -msgctxt "@label" -msgid "Generate Support" -msgstr "產生支撐" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:892 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "在模型的突出部分產生支撐結構。若不這樣做,這些部分在列印時將倒塌。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:964 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "選擇用於支撐的擠出機。該擠出機將在模型之下建立支撐結構,以防止模型下垂或在空中列印。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:987 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "列印平台附著" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1042 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "允許列印邊緣或木筏。這將在你的物件周圍或下方添加一個容易切斷的平面區域。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:1082 -msgctxt "@label" -msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" -msgstr "需要幫助改善你的列印?閱讀 Ultimaker 故障排除指南" +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 +msgctxt "@title:window" +msgid "What's New" +msgstr "新功能" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -4446,75 +4417,503 @@ msgid "Print Selected Model with %1" msgid_plural "Print Selected Models with %1" msgstr[0] "用 %1 列印所選模型" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "捨棄或保留更改" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:57 +msgctxt "@text:window" +msgid "" +"You have customized some profile settings.\n" +"Would you like to keep or discard those settings?" +msgstr "" +"你已自訂部份列印參數設定。\n" +"你想保留或捨棄這些設定嗎?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "列印參數設定" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "預設" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "自訂" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:158 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "捨棄更改,並不再詢問此問題" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:159 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "保留更改,並不再詢問此問題" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "捨棄" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "保留" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "建立新的列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "關於 Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 +msgctxt "@label" +msgid "version: %1" +msgstr "版本:%1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "熔絲 3D 列印技術的的端對端解決方案。" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "" +"Cura 由 Ultimaker B.V. 與社區合作開發。\n" +"Cura 使用以下開源專案:" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "圖形用戶介面" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +msgctxt "@label" +msgid "Application framework" +msgstr "應用框架" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +msgctxt "@label" +msgid "G-code generator" +msgstr "G-code 產生器" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "進程間通訊交互使用庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +msgctxt "@label" +msgid "Programming language" +msgstr "編程語言" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUI 框架" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "GUI 框架綁定" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C / C++ 綁定庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +msgctxt "@label" +msgid "Data interchange format" +msgstr "資料交換格式" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "科學計算函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "高速運算函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "用於處理 STL 檔案的函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +msgctxt "@label" +msgid "Support library for handling planar objects" +msgstr "用於處理平面物件的函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +msgctxt "@label" +msgid "Support library for handling triangular meshes" +msgstr "用於處理三角形網格的函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +msgctxt "@label" +msgid "Support library for analysis of complex networks" +msgstr "用於分析複雜網路的函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "用於處理 3MF 檔案的函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +msgctxt "@label" +msgid "Support library for file metadata and streaming" +msgstr "用於檔案 metadata 和串流的函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +msgctxt "@label" +msgid "Serial communication library" +msgstr "串口通訊函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "ZeroConf 發現函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "多邊形剪輯函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTP 函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +msgctxt "@label" +msgid "Font" +msgstr "字體" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVG 圖標" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Linux cross-distribution 應用程式部署" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 +msgctxt "@text:window" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "我們已經在你所選擇的檔案中找到一個或多個專案檔案,但一次只能開啟一個專案檔案。我們建議只從那些檔案中匯入模型而不開啟專案。你要繼續操作嗎?" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "匯入所有模型" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:15 +msgctxt "@title:window" +msgid "Save Project" +msgstr "儲存專案" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "擠出機 %1" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & 耗材" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 +msgctxt "@action:label" +msgid "Material" +msgstr "耗材" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "儲存時不再顯示專案摘要" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 +msgctxt "@action:button" +msgid "Save" +msgstr "儲存" + +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "開啟專案檔案" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "這是一個 Cura 專案檔案。你想將其作為一個專案開啟還是從中匯入模型?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@text:window" msgid "Remember my choice" msgstr "記住我的選擇" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "作為專案開啟" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "匯入模型" -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "引擎日誌" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DropDownWidget.qml:93 msgctxt "@label" -msgid "Printer type" -msgstr "印表機類型" +msgid "Empty" +msgstr "空的" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:24 msgctxt "@label" -msgid "Material" -msgstr "耗材" +msgid "Add a printer" +msgstr "新增印表機" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:543 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:39 msgctxt "@label" -msgid "Use glue with this material combination" -msgstr "此耗材使用膠水組合" +msgid "Add a networked printer" +msgstr "新增網路印表機" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:575 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml:81 msgctxt "@label" -msgid "Check compatibility" -msgstr "檢查相容性" +msgid "Add a non-networked printer" +msgstr "新增非網路印表機" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:593 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "點擊查看 Ultimaker.com 上的耗材相容性。" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:70 +msgctxt "@label" +msgid "Add printer by IP address" +msgstr "使用 IP 位址新增印表機" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "只顯示目前的列印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:133 +msgctxt "@text" +msgid "Place enter your printer's IP address." +msgstr "輸入印表機的 IP 地址。" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 -msgctxt "@action:button" -msgid "Arrange to all build plates" -msgstr "擺放到所有的列印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:158 +msgctxt "@button" +msgid "Add" +msgstr "新增" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 -msgctxt "@action:button" -msgid "Arrange current build plate" -msgstr "擺放到目前的列印平台" +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:204 +msgctxt "@label" +msgid "Could not connect to device." +msgstr "無法連接到裝置。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:208 +msgctxt "@label" +msgid "The printer at this address has not responded yet." +msgstr "此位址的印表機尚未回應。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:240 +msgctxt "@label" +msgid "This printer cannot be added because it's an unknown printer or it's not the host of a group." +msgstr "無法添加此印表機,因為它是未知的印表機,或者它不是印表機群組的主機。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:329 +msgctxt "@button" +msgid "Back" +msgstr "返回" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:342 +msgctxt "@button" +msgid "Connect" +msgstr "連接" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml:77 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:123 +msgctxt "@button" +msgid "Next" +msgstr "下一步" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:23 +msgctxt "@label" +msgid "User Agreement" +msgstr "使用者授權" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:56 +msgctxt "@button" +msgid "Agree" +msgstr "同意" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/UserAgreementContent.qml:70 +msgctxt "@button" +msgid "Decline and close" +msgstr "拒絕並關閉" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:24 +msgctxt "@label" +msgid "Help us to improve Ultimaker Cura" +msgstr "協助我們改進 Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:57 +msgctxt "@text" +msgid "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:" +msgstr "Ultimaker Cura 搜集匿名資料以提高列印品質和使用者體驗,包含:" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:71 +msgctxt "@text" +msgid "Machine types" +msgstr "機器類型" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:77 +msgctxt "@text" +msgid "Material usage" +msgstr "耗材用法" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:83 +msgctxt "@text" +msgid "Number of slices" +msgstr "切片次數" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:89 +msgctxt "@text" +msgid "Print settings" +msgstr "列印設定" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:102 +msgctxt "@text" +msgid "Data collected by Ultimaker Cura will not contain any personal information." +msgstr "Ultimaker Cura 收集的資料不包含任何個人資訊。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/DataCollectionsContent.qml:103 +msgctxt "@text" +msgid "More information" +msgstr "更多資訊" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WhatsNewContent.qml:24 +msgctxt "@label" +msgid "What's new in Ultimaker Cura" +msgstr "Ultimaker Cura 新功能" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:42 +msgctxt "@label" +msgid "There is no printer found over your network." +msgstr "在你的網路上找不到印表機。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:179 +msgctxt "@label" +msgid "Refresh" +msgstr "更新" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:190 +msgctxt "@label" +msgid "Add printer by IP" +msgstr "使用 IP 位址新增印表機" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml:223 +msgctxt "@label" +msgid "Troubleshooting" +msgstr "故障排除" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 +msgctxt "@label" +msgid "Printer name" +msgstr "印表機名稱" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 +msgctxt "@text" +msgid "Please give your printer a name" +msgstr "請為你的印表機取一個名稱" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:36 +msgctxt "@label" +msgid "Ultimaker Cloud" +msgstr "Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:77 +msgctxt "@text" +msgid "The next generation 3D printing workflow" +msgstr "下一世代的 3D 列印流程" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:94 +msgctxt "@text" +msgid "- Send print jobs to Ultimaker printers outside your local network" +msgstr "- 將列印作業傳送到你區域網路外的 Ultimaker 印表機" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:97 +msgctxt "@text" +msgid "- Store your Ultimaker Cura settings in the cloud for use anywhere" +msgstr "- 將你的 Ultimaker Cura 設定儲存在雲端以便隨處使用" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:100 +msgctxt "@text" +msgid "- Get exclusive access to print profiles from leading brands" +msgstr "- 取得領導品牌的耗材參數設定的獨家存取權限" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:119 +msgctxt "@button" +msgid "Finish" +msgstr "完成" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/CloudContent.qml:128 +msgctxt "@button" +msgid "Create an account" +msgstr "建立帳號" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:29 +msgctxt "@label" +msgid "Welcome to Ultimaker Cura" +msgstr "歡迎來到 Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:47 +msgctxt "@text" +msgid "" +"Please follow these steps to set up\n" +"Ultimaker Cura. This will only take a few moments." +msgstr "" +"請按照以下步驟進行設定\n" +"Ultimaker Cura。這只需要一點時間。" + +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 +msgctxt "@button" +msgid "Get started" +msgstr "開始" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "立體圖" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "前視圖" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "上視圖" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "左視圖" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "右視圖" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -4529,7 +4928,7 @@ msgstr "印表機設定操作" #: Toolbox/plugin.json msgctxt "description" msgid "Find, manage and install new Cura packages." -msgstr "查詢,管理和安裝新的 Cura 軟體包。" +msgstr "查詢,管理和安裝新的 Cura 套件。" #: Toolbox/plugin.json msgctxt "name" @@ -4576,26 +4975,6 @@ msgctxt "name" msgid "Model Checker" msgstr "模器檢查器" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "將所有設定內容轉儲至 HTML 檔案。" - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "上帝模式" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "顯示最新版本更動。" - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "更新日誌" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -4606,15 +4985,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "韌體更新器" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "建立一份合併品質變化列印參數。" +msgid "Provides support for reading AMF files." +msgstr "提供對讀取 AMF 格式檔案的支援。" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile flatener" -msgstr "列印參數合併器" +msgid "AMF Reader" +msgstr "AMF 讀取器" #: USBPrinting/plugin.json msgctxt "description" @@ -4626,26 +5005,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB 連線列印" -#: UserAgreement/plugin.json -msgctxt "description" -msgid "Ask the user once if he/she agrees with our license." -msgstr "詢問使用者是否同意我們的授權協議。" - -#: UserAgreement/plugin.json -msgctxt "name" -msgid "UserAgreement" -msgstr "使用者授權" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "允許將切片結果儲存為 X3G 檔案,以支援讀取此格式的印表機(Malyan,Makerbot 和其他以 Sailfish 為原型的印表機)。" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3G 寫入器" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -4688,13 +5047,13 @@ msgstr "行動裝置輸出設備外掛" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "管理與 Ultimaker 3 印表機的網絡連線。" +msgid "Manages network connections to Ultimaker networked printers." +msgstr "管理與 Ultimaker 網絡印表機的網絡連線。" #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3 網路連線" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker 網絡連線" #: MonitorStage/plugin.json msgctxt "description" @@ -4756,6 +5115,16 @@ msgctxt "name" msgid "Support Eraser" msgstr "支援抹除器" +#: UFPReader/plugin.json +msgctxt "description" +msgid "Provides support for reading Ultimaker Format Packages." +msgstr "提供讀取 Ultimaker 格式封包的支援。" + +#: UFPReader/plugin.json +msgctxt "name" +msgid "UFP Reader" +msgstr "UFP 讀取器" + #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." @@ -4816,6 +5185,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "升級版本 3.3 到 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "將設定從 Cura 4.3 版本升級至 4.4 版本。" + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "升級版本 4.3 到 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4836,6 +5215,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "升級版本 2.7 到 3.0" +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.5 to Cura 4.0." +msgstr "將設定從 Cura 3.5 版本升級至 4.0 版本。" + +#: VersionUpgrade/VersionUpgrade35to40/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.5 to 4.0" +msgstr "升級版本 3.5 到 4.0" + #: VersionUpgrade/VersionUpgrade34to35/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.4 to Cura 3.5." @@ -4846,6 +5235,16 @@ msgctxt "name" msgid "Version Upgrade 3.4 to 3.5" msgstr "升級版本 3.4 到 3.5" +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.0 to Cura 4.1." +msgstr "將設定從 Cura 4.0 版本升級至 4.1 版本。" + +#: VersionUpgrade/VersionUpgrade40to41/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.0 to 4.1" +msgstr "升級版本 4.0 到 4.1" + #: VersionUpgrade/VersionUpgrade30to31/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." @@ -4856,6 +5255,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "升級版本 3.0 到 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "將設定從 Cura 4.1 版本升級至 4.2 版本。" + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "升級版本 4.1 到 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4886,6 +5295,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "升級版本 2.2 到 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "將設定從 Cura 4.2 版本升級至 4.3 版本。" + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "升級版本 4.2 到 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -4896,6 +5315,16 @@ msgctxt "name" msgid "Image Reader" msgstr "圖片讀取器" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "提供讀取模型檔案的支援。" + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh 讀取器" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -4946,6 +5375,16 @@ msgctxt "name" msgid "G-code Reader" msgstr "G-code 讀取器" +#: CuraDrive/plugin.json +msgctxt "description" +msgid "Backup and restore your configuration." +msgstr "備份和復原你的設定。" + +#: CuraDrive/plugin.json +msgctxt "name" +msgid "Cura Backups" +msgstr "Cura 備份" + #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." @@ -4966,6 +5405,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF 寫入器" +#: PreviewStage/plugin.json +msgctxt "description" +msgid "Provides a preview stage in Cura." +msgstr "在 Cura 提供一個預覽介面。" + +#: PreviewStage/plugin.json +msgctxt "name" +msgid "Preview Stage" +msgstr "預覽介面" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." @@ -4986,9 +5435,29 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 列印參數讀取器" -#~ msgctxt "@warning:status" -#~ msgid "Please generate G-code before saving." -#~ msgstr "請在儲存前產出 G-code。" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "合併有效設定" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "列印參數已被合併並啟用。" + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "將 X3g 寫入檔案" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g 檔案" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G 檔案" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Open Compressed Triangle Mesh" #~ msgctxt "@item:inmenu" #~ msgid "Profile Assistant" @@ -4998,6 +5467,1032 @@ msgstr "Cura 列印參數讀取器" #~ msgid "Profile Assistant" #~ msgstr "參數助手" +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "重試" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print Core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "與模型重疊處不建立支撐" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "修改與模型重疊處的設定" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "修改其他模型的填充設定" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "更新已有設定" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "不支援" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "前一個" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "提示" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "列印實驗" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "檢查清單" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "請選擇適用於 Ultimaker 2 的更新檔案。" + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "攝影機渲染:" + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "使用多列印平台功能" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "使用多列印平台功能(需重啟軟體)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "預設參數" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "搜尋設定" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "層高" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "品質參數無法用於目前的耗材和噴頭設定。請修改這些設定以啟用此品質參數。" + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "目前正使用自訂列印參數。若要使用品質滑動條,在自訂分頁中選擇預設的列印參數" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "列印平台(&B)" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "列印參數(&P)" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "列印平台" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "將所有設定內容轉儲至 HTML 檔案。" + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "上帝模式" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "建立一個撫平的品質修改參數。" + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "參數撫平器" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "允許耗材製造商使用下拉式 UI 建立新的耗材和品質設定參數。" + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "列印參數設定助手" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "已透過網路連接。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "已透過網路連接。請在印表機上接受存取請求。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "已透過網路連接,但沒有印表機的控制權限。" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "已發送印表機存取請求,請在印表機上批准該請求" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "認証狀態" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "認証狀態" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "重新發送存取請求" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "印表機接受了存取請求" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "無法使用本印表機進行列印,無法發送列印作業。" + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "請求存取" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "向印表機發送存取請求" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "無法開始新的列印作業。" + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Ultimaker 的設定有問題導致無法開始列印。請在繼續之前解決這個問題。" + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "設定不匹配" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "你確定要使用所選設定進行列印嗎?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "印表機的設定或校正與 Cura 之間不匹配。為了獲得最佳列印效果,請使用印表機的 PrintCores 和耗材設定進行切片。" + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "前一列印作業傳送中,暫停傳送新列印作業。" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "正在向印表機發送資料" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "發送資料中" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Slot {slot_number} 中沒有載入 Printcore" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Slot {slot_number} 中沒有載入耗材" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "擠出機 {extruder_id} 選擇了不同的 PrintCore(Cura:{cura_printcore_name},印表機:{remote_printcore_name})" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "擠出機 {2} 選擇了不同的耗材(Cura:{0},印表機:{1})" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "與你的印表機同步" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "你想在 Cura 中使用目前的印表機設定嗎?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "印表機上的 PrintCores 和/或耗材與目前專案中的不同。為獲得最佳列印效果,請使用目前印表機的 PrintCores 和耗材設定進行切片。" + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "使用監控觀看" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "印表機 '{printer_name}' 已完成列印 '{job_name}'。" + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "列印作業 '{job_name}' 已完成。" + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "列印已完成" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "空的" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "雲端服務錯誤" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "雲端服務未匯出列印作業。" + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "連接到雲端服務時發生錯誤。" + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "透過 Ultimaker Cloud 上傳" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "連接到 Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "對此印表機不要再次詢問。" + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "現在你可以利用你的 Ultimaker 帳號在任何地方傳送和監控列印作業。" + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "已連線!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "檢查您的連線" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "列印參數 {0} 內定義的機器({1})與你目前的機器({2})不匹配, 無法匯入。" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "從 {0} 匯入列印參數失敗:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "目前連線中" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "此印表機/群組已加入 Cura。請選擇另一個印表機/群組。" + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "輸入印表機在網路上的 IP 位址或主機名稱。" + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "連接到印表機" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 設定指南" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "正交透視不支援游標縮放功能。" + +#~ msgid "Orthogonal" +#~ msgstr "正交" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "管理與 Ultimaker 3 印表機的網絡連線。" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3 網路連線" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "提供關於 Cura 設定額外的圖片動畫資訊和說明。" + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "設定指南" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 設定指南" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "設定已改為與目前擠出機性能相匹配:[%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "使用者描述" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "由於你正在監控一台雲端印表機,因此無法使用這些選項。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "前往 Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "所有列印作業已完成。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "檢視列印歷史記錄" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "要透過網路列印,請確認你的印表機已透過網路線或 WIFI 連接到網路。若你無法讓 Cura 與印表機連線,你仍然可以使用 USB 裝置將 G-code 檔案傳輸到印表機。\n" +#~ "\n" +#~ "從以下清單中選擇你的印表機:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "請確認你的印表機有連接:\n" +#~ "- 檢查印表機是否已打開。\n" +#~ "- 檢查印表機是否已連接到網路。" + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "只顯示目前的列印平台" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "擺放到所有的列印平台" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "擺放到目前的列印平台" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "允許將切片結果儲存為 X3G 檔案,以支援讀取此格式的印表機(Malyan,Makerbot 和其他以 Sailfish 為原型的印表機)。" + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3G 寫入器" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "讀取 SVG 檔案做為工具路徑,用於印表機移動的除錯。" + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG 工具路徑讀取器" + +#~ msgctxt "@item:inmenu" +#~ msgid "Changelog" +#~ msgstr "更新日誌" + +#~ msgctxt "@item:inmenu" +#~ msgid "Show Changelog" +#~ msgstr "顯示更新日誌" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to remote cluster" +#~ msgstr "正在傳送資料到遠端叢集" + +#~ msgctxt "@info:status" +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "連接到 Ultimaker Cloud" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymized usage statistics." +#~ msgstr "Cura 以匿名方式蒐集使用狀況統計資料。" + +#~ msgctxt "@info:title" +#~ msgid "Collecting Data" +#~ msgstr "收集資料中" + +#~ msgctxt "@action:button" +#~ msgid "More info" +#~ msgstr "更多資訊" + +#~ msgctxt "@action:tooltip" +#~ msgid "See more information on what data Cura sends." +#~ msgstr "檢視更多關於 Cura 傳送資料的資訊。" + +#~ msgctxt "@action:button" +#~ msgid "Allow" +#~ msgstr "允許" + +#~ msgctxt "@action:tooltip" +#~ msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +#~ msgstr "允許 Cura 以匿名方式傳送使用狀況統計資料,用來協助 Cura 的未來改善工作。你的部份偏好設定和參數,Cura 的版本及你切片模型的雜湊值會被傳送。" + +#~ msgctxt "@item:inmenu" +#~ msgid "Evaluation" +#~ msgstr "評估" + +#~ msgctxt "@info:title" +#~ msgid "Network enabled printers" +#~ msgstr "網路印表機" + +#~ msgctxt "@info:title" +#~ msgid "Local printers" +#~ msgstr "本機印表機" + +#~ msgctxt "@info:backup_failed" +#~ msgid "Tried to restore a Cura backup that does not match your current version." +#~ msgstr "嘗試復原版本不符的 Cura 備份。" + +#~ msgctxt "@title" +#~ msgid "Machine Settings" +#~ msgstr "印表機設定" + +#~ msgctxt "@label" +#~ msgid "Printer Settings" +#~ msgstr "印表機設定" + +#~ msgctxt "@option:check" +#~ msgid "Origin at center" +#~ msgstr "原點位於中心" + +#~ msgctxt "@option:check" +#~ msgid "Heated bed" +#~ msgstr "熱床" + +#~ msgctxt "@label" +#~ msgid "Printhead Settings" +#~ msgstr "列印頭設定" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "列印頭左側至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "列印頭前端至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "列印頭右側至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" + +#~ msgctxt "@tooltip" +#~ msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +#~ msgstr "列印頭後部至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" + +#~ msgctxt "@label" +#~ msgid "Gantry height" +#~ msgstr "龍門高度" + +#~ msgctxt "@tooltip" +#~ msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +#~ msgstr "噴頭尖端與龍門系統(X 軸和 Y 軸)之間的高度差。用於防止「排隊列印」時之前的列印品與龍門發生碰撞。" + +#~ msgctxt "@label" +#~ msgid "Start G-code" +#~ msgstr "起始 G-code" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very start." +#~ msgstr "開始時最先執行的 G-code 命令。" + +#~ msgctxt "@label" +#~ msgid "End G-code" +#~ msgstr "結束 G-code" + +#~ msgctxt "@tooltip" +#~ msgid "G-code commands to be executed at the very end." +#~ msgstr "結束前最後執行的 G-code 命令。" + +#~ msgctxt "@label" +#~ msgid "Nozzle Settings" +#~ msgstr "噴頭設定" + +#~ msgctxt "@tooltip" +#~ msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +#~ msgstr "印表機所支援的耗材直徑。實際列印的耗材直徑由耗材和/或列印參數提供。" + +#~ msgctxt "@label" +#~ msgid "Extruder Start G-code" +#~ msgstr "擠出機起始 G-code" + +#~ msgctxt "@label" +#~ msgid "Extruder End G-code" +#~ msgstr "擠出機結束 G-code" + +#~ msgctxt "@label" +#~ msgid "Changelog" +#~ msgstr "更新日誌" + +#~ msgctxt "@title:window" +#~ msgid "User Agreement" +#~ msgstr "使用者授權" + +#~ msgctxt "@alabel" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "輸入印表機在網路上的 IP 位址或主機名。" + +#~ msgctxt "@info" +#~ msgid "Please select a network connected printer to monitor." +#~ msgstr "請選擇要監控的網絡連線印表機。" + +#~ msgctxt "@info" +#~ msgid "Please connect your Ultimaker printer to your local network." +#~ msgstr "請將你的 Ultimaker 印表機連接到區域網路。" + +#~ msgctxt "@text:window" +#~ msgid "Cura sends anonymous data to Ultimaker in order to improve the print quality and user experience. Below is an example of all the data that is sent." +#~ msgstr "Cura 傳送匿名資料給 Ultimaker 以提高列印品質和使用者體驗。以下是傳送資料的例子。" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send this data" +#~ msgstr "我不想傳送這些資料" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending this data to Ultimaker and help us improve Cura" +#~ msgstr "允許將這些資料傳送給 Ultimaker 以協助我們改進 Cura" + +#~ msgctxt "@label" +#~ msgid "No print selected" +#~ msgstr "沒有選擇任何模型" + +#~ msgctxt "@info:tooltip" +#~ msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +#~ msgstr "預設情況下,白色像素表示網格上的高點,黑色像素表示網格上的低點。更改此選項將以相反方式呈現,黑色像素表示網格上的高點,白色像素表示網格上的低點。" + +#~ msgctxt "@title" +#~ msgid "Select Printer Upgrades" +#~ msgstr "選擇印表機更新檔案" + +#~ msgctxt "@label" +#~ msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +#~ msgstr "選擇用於支撐的擠出機。該擠出機將在模型之下建立支撐結構,以防止模型下垂或在空中列印。" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "品質參數不適用於目前的耗材和噴頭設定。請修改這些設定以啟用此品質參數" + +#~ msgctxt "@label shown when we load a Gcode file" +#~ msgid "Print setup disabled. G code file can not be modified." +#~ msgstr "列印設定已被停用。 G-code 檔案無法修改。" + +#~ msgctxt "@label" +#~ msgid "See the material compatibility chart" +#~ msgstr "請參閱耗材相容性圖表" + +#~ msgctxt "@label" +#~ msgid "View types" +#~ msgstr "檢示類型" + +#~ msgctxt "@label" +#~ msgid "Hi " +#~ msgstr "嗨 " + +#~ msgctxt "@text" +#~ msgid "" +#~ "- Send print jobs to Ultimaker printers outside your local network\n" +#~ "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" +#~ "- Get exclusive access to material profiles from leading brands" +#~ msgstr "" +#~ "- 將列印作業傳送到你區域網路外的 Ultimaker 印表機\n" +#~ "- 將你的 Ultimaker Cura 設定儲存在雲端以便隨處使用\n" +#~ "- 取得領導品牌的耗材參數設定的獨家存取權限" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Unable to Slice" +#~ msgstr "無法切片" + +#~ msgctxt "@label" +#~ msgid "Time specification" +#~ msgstr "時間規格" + +#~ msgctxt "@label" +#~ msgid "Material specification" +#~ msgstr "耗材規格" + +#~ msgctxt "@title:tab" +#~ msgid "Add a printer to Cura" +#~ msgstr "新增印表機到 Cura" + +#~ msgctxt "@title:tab" +#~ msgid "" +#~ "Select the printer you want to use from the list below.\n" +#~ "\n" +#~ "If your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog." +#~ msgstr "" +#~ "從下面的清單中選擇要使用的印表機。\n" +#~ "\n" +#~ "假如你的印表機不在清單上,選擇“Custom”類別中的“Custom FFF Printer”,並在下一個對話窗中調整設定以符合你的印表機。" + +#~ msgctxt "@label" +#~ msgid "Manufacturer" +#~ msgstr "製造商" + +#~ msgctxt "@label" +#~ msgid "Printer Name" +#~ msgstr "印表機名稱" + +#~ msgctxt "@action:button" +#~ msgid "Add Printer" +#~ msgstr "新增印表機" + +#~ msgid "Modify G-Code" +#~ msgstr "修改 G-Code 檔案" + +#~ msgctxt "@info:status" +#~ msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +#~ msgstr "沒有模型可進行切片,因為模型超出了列印範圍。請縮放或旋轉模型, 讓模型可置入列印範圍。" + +#~ msgctxt "@info:status" +#~ msgid "The selected material is incompatible with the selected machine or configuration." +#~ msgstr "所選耗材與所選機器或設定不相容。" + +#~ msgctxt "@info:title" +#~ msgid "Incompatible Material" +#~ msgstr "不相容的耗材" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "無法從 {0} 匯入列印參數:{1}" + +#~ msgctxt "@title" +#~ msgid "Toolbox" +#~ msgstr "工具箱" + +#~ msgctxt "@label" +#~ msgid "Not available" +#~ msgstr "無法使用" + +#~ msgctxt "@label" +#~ msgid "Unreachable" +#~ msgstr "無法連接" + +#~ msgctxt "@label" +#~ msgid "Available" +#~ msgstr "可用" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "正在準備" + +#~ msgctxt "@label:status" +#~ msgid "Pausing" +#~ msgstr "暫停中" + +#~ msgctxt "@label:status" +#~ msgid "Resuming" +#~ msgstr "繼續" + +#~ msgctxt "@label" +#~ msgid "Waiting for: Unavailable printer" +#~ msgstr "等待:印表機無法使用" + +#~ msgctxt "@label" +#~ msgid "Waiting for: First available" +#~ msgstr "等待:第一可用" + +#~ msgctxt "@label" +#~ msgid "Waiting for: " +#~ msgstr "等待: " + +#~ msgctxt "@label" +#~ msgid "Configuration change" +#~ msgstr "設定更動" + +#~ msgctxt "@label" +#~ msgid "The assigned printer, %1, requires the following configuration change(s):" +#~ msgstr "分配的印表機 %1 需要下列的設定更動:" + +#~ msgctxt "@label" +#~ msgid "Override" +#~ msgstr "覆寫" + +#~ msgctxt "@label" +#~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" +#~ msgstr "使用不相容的設定啟動列印工作可能會損壞你的 3D 印表機。你確定要覆寫設定並列印 %1 嗎?" + +#~ msgctxt "@window:title" +#~ msgid "Override configuration configuration and start print" +#~ msgstr "覆寫設定並開始列印" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage queue" +#~ msgstr "管理隊列" + +#~ msgctxt "@label" +#~ msgid "Printing" +#~ msgstr "列印中" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Manage printers" +#~ msgstr "管理印表機" + +#~ msgctxt "@action:button" +#~ msgid "Activate Configuration" +#~ msgstr "啟用設定" + +#~ msgctxt "@info:tooltip" +#~ msgid "Load the configuration of the printer into Cura" +#~ msgstr "將印表機設定載入 Cura" + +#~ msgctxt "@label" +#~ msgid "Show Travels" +#~ msgstr "顯示移動軌跡" + +#~ msgctxt "@label" +#~ msgid "Show Helpers" +#~ msgstr "顯示輔助結構" + +#~ msgctxt "@label" +#~ msgid "Show Shell" +#~ msgstr "顯示外殼" + +#~ msgctxt "@label" +#~ msgid "Show Infill" +#~ msgstr "顯示填充" + +#~ msgctxt "@text:window" +#~ msgid "I don't want to send these data" +#~ msgstr "我不想傳送這些資料" + +#~ msgctxt "@text:window" +#~ msgid "Allow sending these data to Ultimaker and help us improve Cura" +#~ msgstr "允許將這些資料傳送給 Ultimaker 並協助我們改進 Cura" + +#~ msgctxt "@label" +#~ msgid "Printer type:" +#~ msgstr "印表機類型:" + +#~ msgctxt "@label" +#~ msgid "Connection:" +#~ msgstr "連線:" + +#~ msgctxt "@label" +#~ msgid "State:" +#~ msgstr "狀態:" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for a printjob" +#~ msgstr "等待列印作業" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Waiting for someone to clear the build plate" +#~ msgstr "等待清空列印平台" + +#~ msgctxt "@label:MonitorStatus" +#~ msgid "Aborting print..." +#~ msgstr "中斷列印..." + +#~ msgctxt "@label" +#~ msgid "Protected profiles" +#~ msgstr "受保護的列印參數" + +#~ msgctxt "@label" +#~ msgid "Printer Name:" +#~ msgstr "印表機名稱:" + +#~ msgctxt "@label" +#~ msgid "Profile:" +#~ msgstr "列印參數:" + +#~ msgctxt "@label:textbox" +#~ msgid "Search..." +#~ msgstr "搜尋..." + +#~ msgctxt "@action:inmenu" +#~ msgid "Collapse All" +#~ msgstr "全部折疊" + +#~ msgctxt "@action:inmenu" +#~ msgid "Expand All" +#~ msgstr "全部展開" + +#~ msgctxt "@label:header configurations" +#~ msgid "Available configurations" +#~ msgstr "可用的設定" + +#~ msgctxt "@label:extruder label" +#~ msgid "Extruder" +#~ msgstr "擠出機" + +#~ msgctxt "@label:extruder label" +#~ msgid "Yes" +#~ msgstr "是" + +#~ msgctxt "@label:extruder label" +#~ msgid "No" +#~ msgstr "否" + +#~ msgctxt "@label:listbox" +#~ msgid "Print Setup" +#~ msgstr "列印設定" + +#~ msgctxt "@label:listbox" +#~ msgid "" +#~ "Print Setup disabled\n" +#~ "G-code files cannot be modified" +#~ msgstr "" +#~ "列印設定已關閉\n" +#~ "G-code 檔案無法被修改" + +#~ msgctxt "@label Hours and minutes" +#~ msgid "00h 00min" +#~ msgstr "00 小時 00 分" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification" +#~ msgstr "時間規格" + +#~ msgctxt "@label" +#~ msgid "Cost specification" +#~ msgstr "成本明細" + +#~ msgctxt "@label" +#~ msgid "Total:" +#~ msgstr "總共:" + +#~ msgctxt "@tooltip" +#~ msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +#~ msgstr "推薦的列印設定

    使用針對所選印表機、耗材和品質的推薦設定進行列印。" + +#~ msgctxt "@tooltip" +#~ msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +#~ msgstr "自訂列印設定
    對切片過程中的每一個細節進行精細控制。" + +#~ msgctxt "@action:inmenu menubar:help" +#~ msgid "Show Engine &Log..." +#~ msgstr "顯示切片引擎日誌(&L)..." + +#~ msgctxt "@action:menu" +#~ msgid "Browse packages..." +#~ msgstr "瀏覽套件..." + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "Expand/Collapse Sidebar" +#~ msgstr "展開/收合側邊欄" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Please load a 3D model" +#~ msgstr "請載入一個 3D 模型" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Ready to slice" +#~ msgstr "切片已準備就緒" + +#~ msgctxt "@label:PrintjobStatus %1 is target operation" +#~ msgid "Ready to %1" +#~ msgstr "%1 已準備就緒" + +#~ msgctxt "@label:PrintjobStatus" +#~ msgid "Slicing unavailable" +#~ msgstr "切片無法使用" + +#~ msgctxt "@info:tooltip" +#~ msgid "Slice current printjob" +#~ msgstr "對目前列印工作進行切片" + +#~ msgctxt "@info:tooltip" +#~ msgid "Cancel slicing process" +#~ msgstr "取消進行中的切片程序" + +#~ msgctxt "@label:Printjob" +#~ msgid "Prepare" +#~ msgstr "準備" + +#~ msgctxt "@label:Printjob" +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgctxt "@info:tooltip" +#~ msgid "Select the active output device" +#~ msgstr "選擇作用中的輸出裝置" + +#~ msgctxt "@title:menu" +#~ msgid "&View" +#~ msgstr "檢視(&V)" + +#~ msgctxt "@title:menu" +#~ msgid "&Settings" +#~ msgstr "設定(&S)" + +#~ msgctxt "@title:menu menubar:toplevel" +#~ msgid "&Toolbox" +#~ msgstr "工具箱(&T)" + +#~ msgctxt "@action:button" +#~ msgid "Open File" +#~ msgstr "開啟檔案" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile" +#~ msgstr "品質參數不適用於目前的耗材和噴頭設定。請變更這些設定以啟用此品質參數" + +#~ msgctxt "@label" +#~ msgid "Print Speed" +#~ msgstr "列印速度" + +#~ msgctxt "@label" +#~ msgid "Slower" +#~ msgstr "更慢" + +#~ msgctxt "@label" +#~ msgid "Faster" +#~ msgstr "更快" + +#~ msgctxt "@label" +#~ msgid "Enable gradual" +#~ msgstr "啟用漸層" + +#~ msgctxt "@label" +#~ msgid "Generate Support" +#~ msgstr "產生支撐" + +#~ msgctxt "@label" +#~ msgid "Build Plate Adhesion" +#~ msgstr "列印平台附著" + +#~ msgctxt "@label" +#~ msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +#~ msgstr "需要幫助改善你的列印?閱讀 Ultimaker 故障排除指南" + +#~ msgctxt "@title:window" +#~ msgid "Engine Log" +#~ msgstr "引擎日誌" + +#~ msgctxt "@label" +#~ msgid "Printer type" +#~ msgstr "印表機類型" + +#~ msgctxt "@label" +#~ msgid "Use glue with this material combination" +#~ msgstr "此耗材使用膠水組合" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "檢查相容性" + +#~ msgctxt "@tooltip" +#~ msgid "Click to check the material compatibility on Ultimaker.com." +#~ msgstr "點擊查看 Ultimaker.com 上的耗材相容性。" + +#~ msgctxt "description" +#~ msgid "Shows changes since latest checked version." +#~ msgstr "顯示最新版本更動。" + +#~ msgctxt "name" +#~ msgid "Changelog" +#~ msgstr "更新日誌" + +#~ msgctxt "description" +#~ msgid "Create a flattend quality changes profile." +#~ msgstr "建立一份合併品質變化列印參數。" + +#~ msgctxt "name" +#~ msgid "Profile flatener" +#~ msgstr "列印參數合併器" + +#~ msgctxt "description" +#~ msgid "Ask the user once if he/she agrees with our license." +#~ msgstr "詢問使用者是否同意我們的授權協議。" + +#~ msgctxt "name" +#~ msgid "UserAgreement" +#~ msgstr "使用者授權" + +#~ msgctxt "@warning:status" +#~ msgid "Please generate G-code before saving." +#~ msgstr "請在儲存前產出 G-code。" + #~ msgctxt "@action" #~ msgid "Upgrade Firmware" #~ msgstr "升級韌體" @@ -5022,22 +6517,6 @@ msgstr "Cura 列印參數讀取器" #~ msgid "Confirm uninstall " #~ msgstr "移除確認 " -#~ msgctxt "@label:status" -#~ msgid "Paused" -#~ msgstr "已暫停" - -#~ msgctxt "@action:button" -#~ msgid "Previous" -#~ msgstr "前一個" - -#~ msgctxt "@action:button" -#~ msgid "Next" -#~ msgstr "下一個" - -#~ msgctxt "@label" -#~ msgid "Tip" -#~ msgstr "提示" - #~ msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" #~ msgid "%1m / ~ %2g / ~ %4 %3" #~ msgstr "%1m / ~ %2g / ~ %4 %3" @@ -5046,26 +6525,10 @@ msgstr "Cura 列印參數讀取器" #~ msgid "%1m / ~ %2g" #~ msgstr "%1m / ~ %2g" -#~ msgctxt "@label" -#~ msgid "Print experiment" -#~ msgstr "列印實驗" - -#~ msgctxt "@label" -#~ msgid "Checklist" -#~ msgstr "檢查清單" - #~ msgctxt "@title" #~ msgid "Upgrade Firmware" #~ msgstr "升級韌體" -#~ msgctxt "description" -#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." -#~ msgstr "允許耗材製造商使用下拉式 UI 建立新的耗材和品質設定參數。" - -#~ msgctxt "name" -#~ msgid "Print Profile Assistant" -#~ msgstr "列印參數設定助手" - #~ msgctxt "@action:button" #~ msgid "Print with Doodle3D WiFi-Box" #~ msgstr "使用 Doodle3D 無線網路盒列印" @@ -5124,7 +6587,7 @@ msgstr "Cura 列印參數讀取器" #~ msgctxt "@label" #~ msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -#~ msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機。" +#~ msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機。" #~ msgctxt "@label: arg 1 is group name" #~ msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" @@ -5158,10 +6621,6 @@ msgstr "Cura 列印參數讀取器" #~ msgid "Lost connection with the printer" #~ msgstr "與印表機失去連線" -#~ msgctxt "@label:status" -#~ msgid "Unavailable" -#~ msgstr "無法使用" - #~ msgctxt "@label:status" #~ msgid "Unknown" #~ msgstr "未知" @@ -6127,7 +7586,7 @@ msgstr "Cura 列印參數讀取器" #~ msgctxt "@label" #~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -#~ msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機" +#~ msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機" #~ msgctxt "@label" #~ msgid "Completed on: " diff --git a/resources/i18n/zh_TW/fdmextruder.def.json.po b/resources/i18n/zh_TW/fdmextruder.def.json.po index 93d62b5155..a3e4614bcd 100644 --- a/resources/i18n/zh_TW/fdmextruder.def.json.po +++ b/resources/i18n/zh_TW/fdmextruder.def.json.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.3\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-11-04 13:04+0800\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-03-03 14:09+0800\n" "Last-Translator: Zhang Heh Ji \n" "Language-Team: Zhang Heh Ji \n" "Language: zh_TW\n" @@ -84,8 +84,8 @@ msgstr "擠出機起始 G-code" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" -msgid "Start g-code to execute whenever turning the extruder on." -msgstr "打開擠出機將執行此段 G-code。" +msgid "Start g-code to execute when switching to this extruder." +msgstr "切換到此擠出機時,要執行的啟動 G-code。" #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" @@ -115,7 +115,7 @@ msgstr "擠出機起始位置 Y 座標" #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_y description" msgid "The y-coordinate of the starting position when turning the extruder on." -msgstr "打開擠壓機時的起始位置 Y 座標。" +msgstr "打開擠出機時的起始位置 Y 座標。" #: fdmextruder.def.json msgctxt "machine_extruder_end_code label" @@ -124,8 +124,8 @@ msgstr "擠出機結束 Gcode" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" -msgid "End g-code to execute whenever turning the extruder off." -msgstr "在關閉擠出機時,執行結束 G-code。" +msgid "End g-code to execute when switching away from this extruder." +msgstr "從此擠出機切換到其它擠出機時,要執行的結束 G-code。" #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" @@ -226,3 +226,11 @@ msgstr "直徑" msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "調整所用耗材的直徑。調整此值與所用耗材的直徑相匹配。" + +#~ msgctxt "machine_extruder_start_code description" +#~ msgid "Start g-code to execute whenever turning the extruder on." +#~ msgstr "打開擠出機將執行此段 G-code。" + +#~ msgctxt "machine_extruder_end_code description" +#~ msgid "End g-code to execute whenever turning the extruder off." +#~ msgstr "在關閉擠出機時,執行結束 G-code。" diff --git a/resources/i18n/zh_TW/fdmprinter.def.json.po b/resources/i18n/zh_TW/fdmprinter.def.json.po index 1571d7648c..9a8da3fa81 100644 --- a/resources/i18n/zh_TW/fdmprinter.def.json.po +++ b/resources/i18n/zh_TW/fdmprinter.def.json.po @@ -1,41 +1,41 @@ # Cura JSON setting files -# Copyright (C) 2018 Ultimaker +# Copyright (C) 2019 Ultimaker B.V. # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2018. +# Ruben Dulek , 2019. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.6\n" +"Project-Id-Version: Cura 4.3\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2018-10-29 15:01+0000\n" -"PO-Revision-Date: 2018-11-06 16:00+0100\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-11-13 23:45+0800\n" "Last-Translator: Zhang Heh Ji \n" "Language-Team: Zhang Heh Ji \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.4\n" #: fdmprinter.def.json msgctxt "machine_settings label" msgid "Machine" -msgstr "機器" +msgstr "機器" #: fdmprinter.def.json msgctxt "machine_settings description" msgid "Machine specific settings" -msgstr "機器詳細設定" +msgstr "機器詳細設定" #: fdmprinter.def.json msgctxt "machine_name label" msgid "Machine Type" -msgstr "機器類型" +msgstr "機器類型" #: fdmprinter.def.json msgctxt "machine_name description" msgid "The name of your 3D printer model." -msgstr "你的 3D 印表機型號的名稱。" +msgstr "你的 3D 印表機型號的名稱。" #: fdmprinter.def.json msgctxt "machine_show_variants label" @@ -215,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "機器是否有熱床。" +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "具有列印空間溫度穩定性" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "機器是否能夠穩定列印空間溫度。" + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -237,7 +247,7 @@ msgstr "擠出機組數目。擠出機組是指進料裝置、喉管和噴頭的 #: fdmprinter.def.json msgctxt "extruders_enabled_count label" -msgid "Number of Extruders that are enabled" +msgid "Number of Extruders That Are Enabled" msgstr "已啟用擠出機的數量" #: fdmprinter.def.json @@ -247,7 +257,7 @@ msgstr "啟用擠出機的數量;軟體自動設定" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" -msgid "Outer nozzle diameter" +msgid "Outer Nozzle Diameter" msgstr "噴頭外徑" #: fdmprinter.def.json @@ -257,7 +267,7 @@ msgstr "噴頭尖端的外徑。" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" -msgid "Nozzle length" +msgid "Nozzle Length" msgstr "噴頭長度" #: fdmprinter.def.json @@ -267,7 +277,7 @@ msgstr "噴頭尖端與列印頭最低部分之間的高度差。" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" -msgid "Nozzle angle" +msgid "Nozzle Angle" msgstr "噴頭角度" #: fdmprinter.def.json @@ -277,7 +287,7 @@ msgstr "水平面與噴頭尖端上部圓錐形之間的角度。" #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" -msgid "Heat zone length" +msgid "Heat Zone Length" msgstr "加熱區長度" #: fdmprinter.def.json @@ -307,7 +317,7 @@ msgstr "是否從 Cura 控制溫度。若要從 Cura 外部控制噴頭溫度, #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" -msgid "Heat up speed" +msgid "Heat Up Speed" msgstr "加熱速度" #: fdmprinter.def.json @@ -317,7 +327,7 @@ msgstr "噴頭從待機溫度加熱到列印溫度的平均速度(℃/ s)。 #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" -msgid "Cool down speed" +msgid "Cool Down Speed" msgstr "冷卻速度" #: fdmprinter.def.json @@ -337,7 +347,7 @@ msgstr "擠出機必須保持不活動以便噴頭冷卻的最短時間。擠出 #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code flavour" +msgid "G-code Flavor" msgstr "G-code 類型" #: fdmprinter.def.json @@ -402,27 +412,27 @@ msgstr "是否使用韌體回抽命令(G10/G11)取代 G1 命令的 E 參數 #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" -msgid "Disallowed areas" -msgstr "不允許區域" +msgid "Disallowed Areas" +msgstr "禁入區域" #: fdmprinter.def.json msgctxt "machine_disallowed_areas description" msgid "A list of polygons with areas the print head is not allowed to enter." -msgstr "不允許列印頭進入區域的多邊形列表。" +msgstr "禁止列印頭進入區域的多邊形清單。" #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas label" msgid "Nozzle Disallowed Areas" -msgstr "噴頭不允許區域" +msgstr "噴頭禁入區域" #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas description" msgid "A list of polygons with areas the nozzle is not allowed to enter." -msgstr "不允許噴頭進入區域的多邊形列表。" +msgstr "禁止噴頭進入區域的多邊形清單。" #: fdmprinter.def.json msgctxt "machine_head_polygon label" -msgid "Machine head polygon" +msgid "Machine Head Polygon" msgstr "機器頭多邊形" #: fdmprinter.def.json @@ -432,7 +442,7 @@ msgstr "列印頭 2D 輪廓圖(不包含風扇蓋)。" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" -msgid "Machine head & Fan polygon" +msgid "Machine Head & Fan Polygon" msgstr "機器頭和風扇多邊形" #: fdmprinter.def.json @@ -442,7 +452,7 @@ msgstr "列印頭 2D 輪廓圖(包含風扇蓋)。" #: fdmprinter.def.json msgctxt "gantry_height label" -msgid "Gantry height" +msgid "Gantry Height" msgstr "吊車高度" #: fdmprinter.def.json @@ -472,7 +482,7 @@ msgstr "噴頭內徑,在使用非標準噴頭尺寸時需更改此設定。" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" -msgid "Offset With Extruder" +msgid "Offset with Extruder" msgstr "擠出機偏移量" #: fdmprinter.def.json @@ -1020,6 +1030,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "底部列印層數,當由底部厚度來計算時層數時,會四捨五入為一個整數值。" +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "起始底部層數" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "從列印平台列印的起始底部列印層數,當由底部厚度來計算時層數時,會四捨五入為一個整數值。" + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1088,7 +1108,7 @@ msgstr "頂部/底部線條方向" #: fdmprinter.def.json msgctxt "skin_angles description" msgid "A list of integer line directions to use when the top/bottom layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "當頂部/底部採用線條或鋸齒狀的列印樣式時使用的整數線條方向的列表。列表中的元素隨層的進度依次使用,當達到列表末尾時,它將從頭開始。列表元素以逗號分隔,整個列表包含在方括號中。空的列表代表使用傳統的預設角度(45 和 135 度)。" +msgstr "當頂部/底部採用線條或鋸齒狀的列印樣式時使用的整數線條方向的清單。清單中的元素隨層的進度依次使用,當達到清單末尾時,它將從頭開始。清單元素以逗號分隔,整個清單包含在方括號中。空的清單代表使用傳統的預設角度(45 和 135 度)。" #: fdmprinter.def.json msgctxt "wall_0_inset label" @@ -1270,6 +1290,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "最尖銳的轉角" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Z 接縫位置" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "每一層開始列印位置要靠近哪個方向。" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "左後方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "後方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "右後方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "右方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "右前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "左前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "左方" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1297,8 +1367,8 @@ msgstr "接縫偏好設定" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "控制接縫是否受模型輪廓上的角影響。'無'表示轉角不影響接縫位置。'隱藏接縫'表示使用盡可能使用凹角做為接縫位置。'暴露接縫'表示盡可能使用凸角做為接縫位置。'隱藏或暴露接縫'則同時使用凹角和凸角做為接縫位置。" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "控制模型輪廓上的轉角是否影響接縫的位置。「無」表示轉角不影響接縫位置。「隱藏接縫」讓接縫盡量出現在凹角。「暴露接縫」讓接縫盡量出現在凸角。「隱藏或暴露接縫」讓接縫盡量出現在凹角或凸角。「智慧隱藏」允許使用凹角或凸角,但如果狀況合適,會盡可能地選擇凹角。" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1320,6 +1390,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "隱藏或暴露接縫" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "智慧隱藏" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1332,13 +1407,13 @@ msgstr "啟用時,Z 接縫座標為相對於各個部分中心的值。關閉 #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "忽略 Z 方向的小間隙" +msgid "No Skin in Z Gaps" +msgstr "Z 間隙無表層" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "當模型具有微小的垂直間隙時,為了在這些間隙上產生頂部、底部等表面,會花費大約5%的額外的計算時間。勾選這個項目可以節省時間,但是間隙會消失,若要保留這些間隙,不要勾選這個項目。" +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "當模型具有僅幾層的小垂直間隙時,通常在那些層周圍的狹窄空間中應該存在表層。如果垂直間隙非常小,啟用此設定會停止自動產生表層。這樣可以縮短列印時間和切片時間,但技術上會使填充暴露出來。" #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1357,8 +1432,8 @@ msgstr "啟用燙平" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "再一次經過頂部表面,但不擠出耗材。這是為了進一步融化頂部的塑料,打造更平滑的表面。" +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "噴頭額外跑過上表層一次,但這次擠出的材料非常少。這是為了進一步融化頂部的塑料,創造更平滑的表面。噴頭中的壓力會保持很高,將表面中的細縫中填滿材料。" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1450,6 +1525,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "執行燙平時的最大瞬時速度變化。" +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "表層重疊百分比" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "以表層線寬和最內壁線寬的百分比,調整內壁和表層中心線(的端點)之間的重疊量。輕微的重疊可以讓牆壁牢固地連接到表層。但要注意在表層和內壁線寬度相等的情形下, 超過 50% 的百分比可能導致表層越過內壁, 因為此時擠出機噴嘴的位置可能已經超過了內壁線條的中間。" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "表層重疊" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "調整內壁和表層中心線(的端點)之間的重疊量。輕微的重疊可以讓牆壁牢固地連接到表層。但要注意在表層和內壁線寬度相等的情形下, 超過線寬一半的值可能導致表層越過內壁, 因為此時擠出機噴嘴的位置可能已經超過了內壁線條的中間。" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1593,7 +1688,7 @@ msgstr "填充線條方向" #: fdmprinter.def.json msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." -msgstr "要使用的整數線條方向列表。列表中的元素隨層的進度依次使用,當達到列表末尾時,它將從頭開始。列表元素以逗號分隔,整個列表包含在方括號中。空的列表代表使用傳統的預設角度(線條和鋸齒狀的列印樣式為 45 和 135 度,其他所有的列印樣式為 45 度)。" +msgstr "要使用的整數線條方向清單。清單中的元素隨層的進度依次使用,當達到清單末尾時,它將從頭開始。清單元素以逗號分隔,整個清單包含在方括號中。空的清單代表使用傳統的預設角度(線條和鋸齒狀的列印樣式為 45 和 135 度,其他所有的列印樣式為 45 度)。" #: fdmprinter.def.json msgctxt "infill_offset_x label" @@ -1615,6 +1710,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "填充樣式在 Y 軸方向平移此距離。" +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "隨機填充起始位置" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "隨機選擇第一條填充線列印。 這可以防止強度集中在某一個部分,但會花費額外的空跑。" + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1669,26 +1774,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "填充和牆壁之間的重疊量。稍微重疊可讓各個壁與填充牢固連接。" -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "表層重疊百分比" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "表層與牆壁的重疊量佔表層線寬的百分比。輕微的重疊能讓填充與表層牢固地連接。這是表層線寬和最內層牆壁線寬平均的百分比。" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "表層重疊" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "表層和牆壁之間的重疊量。稍微重疊可讓各個牆壁與表層牢固連接。" - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1742,7 +1827,7 @@ msgstr "列印牆壁前先列印填充。先列印牆壁可以產生更精確的 #: fdmprinter.def.json msgctxt "min_infill_area label" msgid "Minimum Infill Area" -msgstr "最小填充區域" +msgstr "最小填充面積" #: fdmprinter.def.json msgctxt "min_infill_area description" @@ -1869,6 +1954,16 @@ msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" msgstr "用於列印的預設溫度。應為耗材的溫度\"基礎值\"。其他列印溫度將以此值為基準計算偏移" +#: fdmprinter.def.json +msgctxt "build_volume_temperature label" +msgid "Build Volume Temperature" +msgstr "列印空間溫度" + +#: fdmprinter.def.json +msgctxt "build_volume_temperature description" +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "列印的環境溫度。如果設為 0,則不會調整列印空間溫度。" + #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" @@ -1979,6 +2074,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "收縮率百分比。" +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "晶狀耗材" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "這種耗材高溫時是脆斷的類型(晶狀),還是拉絲的類型(非晶狀)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "防滲漏回抽位置" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "停止滲漏要回抽耗材多長的距離。" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "防滲漏回抽速度" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "在耗材切換回抽時,需要多快的速度來防止滲漏。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "回抽切斷前位置" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "在加熱時,耗材在脆斷前可以拉伸多長的距離。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "回抽切斷前速度" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "回抽切斷前,耗材回抽的速度。" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "回抽切斷位置" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "要讓耗材脆斷需要回抽長的距離。" + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "回抽切斷速度" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "要讓耗材脆斷要回抽多快。" + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "切斷溫度" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "要讓耗材脆斷所需的溫度。" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1989,6 +2164,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "流量補償:擠出的耗材量乘以此值。" +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "牆壁流量" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "牆壁線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "外壁流量" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "外壁線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "內壁流量" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "最外層牆壁以外的牆壁線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "頂部/底部流量" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "頂部/底部線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "頂部表層流量" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "頂部區域線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "填充流量" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "填充線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "外圍/邊緣流量" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "外圍/邊緣線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "支撐流量" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "支撐結構線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "支撐介面流量" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "支撐頂板或底板線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "支撐頂板流量" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "支撐頂板線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "支撐底板流量" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "支撐底板線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "換料塔流量" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "換料塔線條的流量補償。" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2106,7 +2401,7 @@ msgstr "限制支撐回抽" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "當從支撐直線移動到另一支撐時,省略回抽。啟用此功能可節省列印時間,但會導致支撐內部有較多的牽絲。" #: fdmprinter.def.json @@ -2126,8 +2421,8 @@ msgstr "噴頭切換回抽距離" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." -msgstr "回抽量:設為 0,不進行任何回抽。該值通常應與加熱區的長度相同。" +msgid "The amount of retraction when switching extruders. Set to 0 for no retraction at all. This should generally be the same as the length of the heat zone." +msgstr "切換擠出機時的回抽量。設定為 0 表示沒有回抽。這值通常和加熱區的長度相同。" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" @@ -2159,6 +2454,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "噴頭切換回抽後耗材被推回的速度。" +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "噴頭切換額外裝填量" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "噴頭切換後額外裝填的耗材量。" + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2350,14 +2655,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "列印外圍和邊緣的速度。一般情况是以起始層速度列印這些部分,但有時候你可能想要以不同速度來列印外圍或邊緣。" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "最大 Z 軸速度" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Z 抬升速度" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "列印平台移動的最大速度。將該值設為零會使列印為最大 Z 速度採用韌體預設值。" +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Z 抬升時 Z 軸垂直移動的速度。這通常低於列印速度,因為列印平台或機器的吊車較難移動。" #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2786,8 +3091,8 @@ msgstr "梳理模式" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." -msgstr "梳理模式讓噴頭空跑時保持在已列印的區域內。這導致較長的空跑距離但減少回抽的需求。如果關閉梳理模式,噴頭將會回抽耗材,直線移動到下一點。梳理模式可以避開頂部/底部表層,也可以只用在內部填充。注意「內部填充」選項的行為與舊版 Cura 的「表層以外區域」選項是完全相同的。" +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas or to only comb within the infill." +msgstr "梳理模式讓噴頭空跑時保持在已列印的區域內。這將導致稍長的空跑移動但減少了回抽的需求。如果關閉梳理模式,噴頭將會回抽耗材,直線移動到下一點。可以設定在頂部/底部表層不使用梳理模式,或只使用在內部填充。" #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2859,16 +3164,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "噴頭和已列印部分之間在空跑時避開的距離。" -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "在相同的位置列印新層" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "每一層都在相同點附近開始列印,這樣在列印新的一層時,就不需要列印前一層結束時的那一小段區域。在突出部分和小零件有良好的效果,但會增加列印時間。" - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -2929,6 +3224,16 @@ msgctxt "retraction_hop_after_extruder_switch description" msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." msgstr "當機器從一個擠出機切換到另一個時,列印平台會降低以便在噴頭和列印品之間形成空隙。這將防止噴頭在列印品外部留下滲出物。" +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height label" +msgid "Z Hop After Extruder Switch Height" +msgstr "擠出機切換後的 Z 抬升高度" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch_height description" +msgid "The height difference when performing a Z Hop after extruder switch." +msgstr "擠出機切換後進行 Z 抬升的高度差。" + #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3199,6 +3504,11 @@ msgctxt "support_pattern option cross" msgid "Cross" msgstr "十字形" +#: fdmprinter.def.json +msgctxt "support_pattern option gyroid" +msgid "Gyroid" +msgstr "螺旋形" + #: fdmprinter.def.json msgctxt "support_wall_count label" msgid "Support Wall Line Count" @@ -3260,14 +3570,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "支撐結構起始層線條之間的距離。該設定通過支撐密度計算。" #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "支撐填充線條方向" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "支撐填充樣式的方向。 支撐填充樣式的旋轉方向是在水平面上旋轉。" +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "要使用的線條方向清單。清單中的項目隨著列印層增加順序使用,當到達清單的末端時,會再從頭開始。清單項目以逗號分隔,整個清單以中括號括住。預設值為空的清單,表示使用預設角度 0 度。" #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3396,8 +3706,8 @@ msgstr "支撐結合距離" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "支撐結構間在 X/Y 方向的最大距離。當分離結構之間的距離小於此值時,這些結構將合併為一個。" +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "支撐結構間在 X/Y 方向的最大距離。當結構與結構靠近到小於此值時,這些結構將合併為一個。" #: fdmprinter.def.json msgctxt "support_offset label" @@ -3439,6 +3749,16 @@ msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." msgstr "支撐層密度減半的厚度。" +#: fdmprinter.def.json +msgctxt "minimum_support_area label" +msgid "Minimum Support Area" +msgstr "最小支撐面積" + +#: fdmprinter.def.json +msgctxt "minimum_support_area description" +msgid "Minimum area size for support polygons. Polygons which have an area smaller than this value will not be generated." +msgstr "支撐區域的最小面積大小。面積小於此值的區域將不會產生支撐。" + #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" @@ -3664,6 +3984,96 @@ msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "鋸齒狀" +#: fdmprinter.def.json +msgctxt "minimum_interface_area label" +msgid "Minimum Support Interface Area" +msgstr "最小支撐介面面積" + +#: fdmprinter.def.json +msgctxt "minimum_interface_area description" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撐介面區域的最小面積大小。面積小於此值的區域將列印一般支撐。" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area label" +msgid "Minimum Support Roof Area" +msgstr "最小支撐頂板面積" + +#: fdmprinter.def.json +msgctxt "minimum_roof_area description" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撐頂板區域的最小面積大小。面積小於此值的區域將列印一般支撐。" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area label" +msgid "Minimum Support Floor Area" +msgstr "最小支撐底板面積" + +#: fdmprinter.def.json +msgctxt "minimum_bottom_area description" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撐底板區域的最小面積大小。面積小於此值的區域將列印一般支撐。" + +#: fdmprinter.def.json +msgctxt "support_interface_offset label" +msgid "Support Interface Horizontal Expansion" +msgstr "支撐介面水平擴展" + +#: fdmprinter.def.json +msgctxt "support_interface_offset description" +msgid "Amount of offset applied to the support interface polygons." +msgstr "套用到支撐介面多邊形的偏移量。" + +#: fdmprinter.def.json +msgctxt "support_roof_offset label" +msgid "Support Roof Horizontal Expansion" +msgstr "支撐頂板水平擴展" + +#: fdmprinter.def.json +msgctxt "support_roof_offset description" +msgid "Amount of offset applied to the roofs of the support." +msgstr "套用到支撐頂板多邊形的偏移量。" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset label" +msgid "Support Floor Horizontal Expansion" +msgstr "支撐底板水平擴展" + +#: fdmprinter.def.json +msgctxt "support_bottom_offset description" +msgid "Amount of offset applied to the floors of the support." +msgstr "套用到支撐底板多邊形的偏移量。" + +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "支撐介面線條方向" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的線條方向清單。清單中的項目隨著列印層增加順序使用,當到達清單的末端時,會再從頭開始。清單項目以逗號分隔,整個清單以中括號括住。預設值為空的清單,表示使用預設角度(預設 90 度,若介面較厚則以 45 度和 135 度交替)。" + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "支撐頂板線條方向" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的線條方向清單。清單中的項目隨著列印層增加順序使用,當到達清單的末端時,會再從頭開始。清單項目以逗號分隔,整個清單以中括號括住。預設值為空的清單,表示使用預設角度(預設 90 度,若介面較厚則以 45 度和 135 度交替)。" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "支撐底板線條方向" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的線條方向清單。清單中的項目隨著列印層增加順序使用,當到達清單的末端時,會再從頭開始。清單項目以逗號分隔,整個清單以中括號括住。預設值為空的清單,表示使用預設角度(預設 90 度,若介面較厚則以 45 度和 135 度交替)。" + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3705,14 +4115,14 @@ msgid "The diameter of a special tower." msgstr "特殊塔的直徑。" #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "最小直徑" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "最大塔型支撐直徑" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "小區域中支撐塔的 X/Y 軸方向最小直徑。" +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "塔型支撐使用的區域在 X/Y 方向的最大直徑。" #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4208,16 +4618,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "在列印件旁邊印一個塔,用在每次切換噴頭後填充耗材。" -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "圓型換料塔" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "將換料塔印成圓型。" - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4258,16 +4658,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "換料塔位置的 Y 座標。" -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "換料塔流量" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "流量補償:擠出的耗材量乘以此值。" - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4278,6 +4668,16 @@ msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "在一個噴頭列印換料塔後,在換料塔上擦拭另一個噴頭滲出的耗材。" +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable label" +msgid "Prime Tower Brim" +msgstr "換料塔邊緣" + +#: fdmprinter.def.json +msgctxt "prime_tower_brim_enable description" +msgid "Prime-towers might need the extra adhesion afforded by a brim even if the model doesn't. Presently can't be used with the 'Raft' adhesion-type." +msgstr "即使模型沒有開啟邊緣功能,裝填塔也列印邊緣以提供額外的附著力。目前無法與「木筏」的平台附著類型同時使用。" + #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" @@ -4398,6 +4798,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "如果可列印的第一層下方有空的層,將其移除。假如「切片公差」設定為「排除」或「中間」,關閉此設定可能會導致空的第一層。" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "最高解析度" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "切片後線段的最小尺寸。 如果你增加此設定值,網格的解析度將較低。 這允許印表機保持處理 G-code 的速度,並通過移除無法處理的網格細節來增加切片速度。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "最大空跑解析度" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "切片後空跑線段的最小尺寸。如果你增加此設定值,空跑移動時的轉角較不圓滑。這允許印表機快速的處理 G-code,但可能造成噴頭迴避模型時較不精確。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "最大偏差值" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "降低「最高解析度」設定時允許的最大偏差範圍。假如你增加這個設定值,列印精度會降低,但 G-code 會較小。最大偏差是最高解析度的限制,所以當兩者衝突時,會以最大偏差成立為優先。" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4560,7 +4990,7 @@ msgstr "平滑螺旋輪廓" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "平滑螺旋輪廓可以減少 Z 縫的出現(Z 縫應在列印品上幾乎看不到,但在分層檢視中仍然可見)。請注意,平滑操作將傾向於模糊精細的表面細節。" #: fdmprinter.def.json @@ -4731,7 +5161,7 @@ msgstr "頂部表層線條方向" #: fdmprinter.def.json msgctxt "roofing_angles description" msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "當頂部表層採用線條或鋸齒狀的列印樣式時使用的整數線條方向的列表。列表中的元素隨層的進度依次使用,當達到列表末尾時,它將從頭開始。列表項以逗號分隔,整個列表包含在方括號中。預設使用傳統的預設角度(45 和 135 度)。" +msgstr "當頂部表層採用線條或鋸齒狀的列印樣式時使用的整數線條方向的清單。清單中的元素隨層的進度依次使用,當達到清單末尾時,它將從頭開始。清單項以逗號分隔,整個清單包含在方括號中。預設使用傳統的預設角度(45 和 135 度)。" #: fdmprinter.def.json msgctxt "infill_enable_travel_optimization label" @@ -4773,26 +5203,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "切片層中周長小於此值的多邊形將被過濾掉。設定較低的值會花費較多的切片時間,以獲得較高解析度的網格。它主要用於高解析度的 SLA 印表機和具有大量細節的微小 3D 模型。" -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "最高解析度" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "切片後線段的最小尺寸。 如果你增加此設定值,網格的解析度將較低。 這允許印表機保持處理 G-code 的速度,並通過移除無法處理的網格細節來增加切片速度。" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "最大空跑解析度" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "切片後空跑線段的最小尺寸。如果你增加此設定值,空跑移動時的轉角較不圓滑。這允許印表機快速的處理 G-code,但可能造成噴頭迴避模型時較不精確。" - #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" @@ -4933,16 +5343,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "滑行期間相對於擠出路徑的移動速度。建議採用略低於 100% 的值,因為在滑行移動期間喉管中的壓力會下降。" -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "交替表層旋轉" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "交替列印頂部/底部層的方向。通常它們只進行對角線列印。此設定添加純 X 和純 Y 方向。" - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5050,8 +5450,8 @@ msgstr "啟用錐形支撐" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "實驗性功能: 讓底部的支撐區域小於突出部分的支撐區域。" +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "讓底部的支撐區域小於突出部分的支撐區域。" #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5115,23 +5515,23 @@ msgstr "在每個線條部分改變的隨機點之間的平均距離。注意, #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" -msgstr "流量補償的最大擠出偏移量" +msgid "Flow Rate Compensation Max Extrusion Offset" +msgstr "流速補償的最大擠出偏移量" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "最大補償距離(以毫米為單位)。" +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "流速補償時耗材可移動的最大距離(以毫米為單位)。" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" -msgstr "流量補償因子" +msgid "Flow Rate Compensation Factor" +msgstr "流速補償係數" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "流量倍率 -> 移動距離。" +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "為了補償流速變化,耗材所移動的距離,以耗材一秒內擠出距離的百分比表示。" #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5394,18 +5794,18 @@ msgstr "噴頭和水平下行線之間的距離。較大的間隙會讓斜下行 #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled label" -msgid "Use adaptive layers" -msgstr "使用適應層高" +msgid "Use Adaptive Layers" +msgstr "使用適應性層高" #: fdmprinter.def.json msgctxt "adaptive_layer_height_enabled description" msgid "Adaptive layers computes the layer heights depending on the shape of the model." -msgstr "適應層高會依據模型的形狀計算列印的層高。" +msgstr "適應性層高會依據模型的形狀計算列印的層高。" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation label" -msgid "Adaptive layers maximum variation" -msgstr "適應層高最大變化量" +msgid "Adaptive Layers Maximum Variation" +msgstr "適應性層高最大變化量" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation description" @@ -5414,8 +5814,8 @@ msgstr "允許與底層高度差異的最大值。" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step label" -msgid "Adaptive layers variation step size" -msgstr "適應層高變化幅度" +msgid "Adaptive Layers Variation Step Size" +msgstr "適應性層高變化幅度" #: fdmprinter.def.json msgctxt "adaptive_layer_height_variation_step description" @@ -5424,13 +5824,13 @@ msgstr "下一列印層與前一列印層的層高差。" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive layers threshold" -msgstr "適應層高門檻值" +msgid "Adaptive Layers Topography Size" +msgstr "適應性層高地形尺寸" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "決定是否使用較小層高的門檻值。此值會與一層中最陡坡度的 tan 值做比較。" +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "兩個相鄰層之間的目標水平距離。 減少此設定將導致使用較薄的層高以使各層的邊緣更靠近。" #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5439,8 +5839,8 @@ msgstr "突出牆壁角度" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "牆壁突出的角度大於此值時,將使用突出牆壁的設定列印。當此值設定為 90 時,所有牆壁都不會被當作突出牆壁。" +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "牆壁突出的角度大於此值時,將使用突出牆壁的設定列印。當此值設定為 90 時,所有牆壁都不會被當作突出牆壁。被支撐的突出牆壁也將不不會被當作突出牆壁。" #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5642,6 +6042,196 @@ msgctxt "bridge_fan_speed_3 description" msgid "Percentage fan speed to use when printing the third bridge skin layer." msgstr "列印橋樑表層第三層時,風扇轉速的百分比。" +#: fdmprinter.def.json +msgctxt "clean_between_layers label" +msgid "Wipe Nozzle Between Layers" +msgstr "換層時擦拭噴頭" + +#: fdmprinter.def.json +msgctxt "clean_between_layers description" +msgid "Whether to include nozzle wipe G-Code between layers. Enabling this setting could influence behavior of retract at layer change. Please use Wipe Retraction settings to control retraction at layers where the wipe script will be working." +msgstr "是否在層與層之間加入擦拭噴頭的 G-code。啟用此設定會影響換層時的回抽行為。請用「擦拭回抽」設定來控制擦拭時的回抽量。" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe label" +msgid "Material Volume Between Wipes" +msgstr "擦拭耗材體積" + +#: fdmprinter.def.json +msgctxt "max_extrusion_before_wipe description" +msgid "Maximum material, that can be extruded before another nozzle wipe is initiated." +msgstr "在另一次擦拭噴頭前可擠出的最大耗材量。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable label" +msgid "Wipe Retraction Enable" +msgstr "擦拭回抽啟用" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_enable description" +msgid "Retract the filament when the nozzle is moving over a non-printed area." +msgstr "當噴頭移動經過非列印區域時回抽耗材。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount label" +msgid "Wipe Retraction Distance" +msgstr "擦拭回抽距離" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_amount description" +msgid "Amount to retract the filament so it does not ooze during the wipe sequence." +msgstr "回抽耗材的量,使其在擦拭過程中不會滲出。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount label" +msgid "Wipe Retraction Extra Prime Amount" +msgstr "擦拭回抽額外裝填量" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_extra_prime_amount description" +msgid "Some material can ooze away during a wipe travel moves, which can be compensated for here." +msgstr "有些耗材可能會在擦拭過程中滲出,可以在這裡對其進行補償。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed label" +msgid "Wipe Retraction Speed" +msgstr "擦拭回抽速度" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_speed description" +msgid "The speed at which the filament is retracted and primed during a wipe retraction move." +msgstr "擦拭過程中耗材回抽和裝填的速度。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed label" +msgid "Wipe Retraction Retract Speed" +msgstr "擦拭回抽回抽速度" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a wipe retraction move." +msgstr "擦拭過程中耗材回抽的速度。" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "擦拭回抽裝填速度" + +#: fdmprinter.def.json +msgctxt "wipe_retraction_prime_speed description" +msgid "The speed at which the filament is primed during a wipe retraction move." +msgstr "擦拭過程中耗材裝填的速度。" + +#: fdmprinter.def.json +msgctxt "wipe_pause label" +msgid "Wipe Pause" +msgstr "擦拭暫停" + +#: fdmprinter.def.json +msgctxt "wipe_pause description" +msgid "Pause after the unretract." +msgstr "若無回抽,擦拭後暫停。" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable label" +msgid "Wipe Z Hop When Retracted" +msgstr "擦拭回抽後 Z 抬升" + +#: fdmprinter.def.json +msgctxt "wipe_hop_enable description" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "每當回抽完成時,列印平台會降低以便在噴頭和列印品之間形成空隙。它可以防止噴頭在空跑過程中撞到列印品,降低將列印品從列印平台撞掉的幾率。" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount label" +msgid "Wipe Z Hop Height" +msgstr "擦拭 Z 抬升高度" + +#: fdmprinter.def.json +msgctxt "wipe_hop_amount description" +msgid "The height difference when performing a Z Hop." +msgstr "執行 Z 抬升的高度差。" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed label" +msgid "Wipe Hop Speed" +msgstr "擦拭 Z 抬升速度" + +#: fdmprinter.def.json +msgctxt "wipe_hop_speed description" +msgid "Speed to move the z-axis during the hop." +msgstr "抬升時移動 Z 軸的速度。" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x label" +msgid "Wipe Brush X Position" +msgstr "擦拭刷 X 軸位置" + +#: fdmprinter.def.json +msgctxt "wipe_brush_pos_x description" +msgid "X location where wipe script will start." +msgstr "擦拭動作開始的 X 位置。" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count label" +msgid "Wipe Repeat Count" +msgstr "擦拭重覆次數" + +#: fdmprinter.def.json +msgctxt "wipe_repeat_count description" +msgid "Number of times to move the nozzle across the brush." +msgstr "將噴頭移動經過刷子的次數。" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance label" +msgid "Wipe Move Distance" +msgstr "擦拭移動距離" + +#: fdmprinter.def.json +msgctxt "wipe_move_distance description" +msgid "The distance to move the head back and forth across the brush." +msgstr "將噴頭來回移動經過刷子的距離。" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "細部模式最大直徑" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "小於此直徑的孔洞和零件輪廓,使用細部模式速度列印。" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "細部模式最大長度" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "輪廓長度小於此值時,使用細部模式速度列印。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "細部模式速度" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "細部模式將以正常列印速度的此百分比值列印。 較慢的列印有助於黏合和精度。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "細部模式起始層速度" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "第一層的細部模式將以正常列印速度的此百分比值列印。 較慢的列印有助於黏合和精度。" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5702,6 +6292,234 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "在將模型從檔案中載入時套用在模型上的轉換矩陣。" +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撐介面區域的最小面積大小。面積小於此值的區域將不會產生支撐介面。" + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撐頂板區域的最小面積大小。面積小於此值的區域將不會產生支撐頂板。" + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撐底板區域的最小面積大小。面積小於此值的區域將不會產生支撐底板。" + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "交替表層旋轉" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "交替列印頂部/底部層的方向。通常它們只進行對角線列印。此設定添加純 X 和純 Y 方向。" + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "流量補償的最大擠出偏移量" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "最大補償距離(以毫米為單位)。" + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "流量補償因子" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "流量倍率 -> 移動距離。" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "適應性層高門檻值" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "決定是否使用較小層高的門檻值。此值會與一層中最陡坡度的 tan 值做比較。" + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "牆壁突出的角度大於此值時,將使用突出牆壁的設定列印。當此值設定為 90 時,所有牆壁都不會被當作突出牆壁。" + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "細部模式將以正常列印速度的此百分比值列印。 較慢的列印有助於黏合和精度。" + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "第一層速度" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "細部模式第一層將以正常列印速度的此百分比值列印。 較慢的列印有助於黏合和精度。" + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "再一次經過頂部表面,但不擠出耗材。這是為了進一步融化頂部的塑料,打造更平滑的表面。" + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "在相同的位置列印新層" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "每一層都在相同點附近開始列印,這樣在列印新的一層時,就不需要列印前一層結束時的那一小段區域。在突出部分和小零件有良好的效果,但會增加列印時間。" + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "支撐填充樣式的方向。 支撐填充樣式的旋轉方向是在水平面上旋轉。" + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "「最高解析度」設定在降低解析度時允許的最大偏差。如果增加此值,列印精度會較差但 G-code 會較小。" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-code 類型" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "控制接縫是否受模型輪廓上的角影響。'無'表示轉角不影響接縫位置。'隱藏接縫'表示使用盡可能使用凹角做為接縫位置。'暴露接縫'表示盡可能使用凸角做為接縫位置。'隱藏或暴露接縫'則同時使用凹角和凸角做為接縫位置。" + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "忽略 Z 方向的小間隙" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "當模型具有微小的垂直間隙時,為了在這些間隙上產生頂部、底部等表面,會花費大約5%的額外的計算時間。勾選這個項目可以節省時間,但是間隙會消失,若要保留這些間隙,不要勾選這個項目。" + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "設定列印空間的溫度。如果設定為 0,就不會加熱列印空間。" + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "當從支撐直線移動到另一支撐時,省略回抽。啟用此功能可節省列印時間,但會導致支撐內部有較多的牽絲。" + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "最大 Z 軸速度" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "列印平台移動的最大速度。將該值設為零會使列印為最大 Z 速度採用韌體預設值。" + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "支撐結構間在 X/Y 方向的最大距離。當分離結構之間的距離小於此值時,這些結構將合併為一個。" + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "最小直徑" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "小區域中支撐塔的 X/Y 軸方向最小直徑。" + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "圓型換料塔" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "將換料塔印成圓型。" + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "流量補償:擠出的耗材量乘以此值。" + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "平滑螺旋輪廓可以減少 Z 縫的出現(Z 縫應在列印品上幾乎看不到,但在分層檢視中仍然可見)。請注意,平滑操作將傾向於模糊精細的表面細節。" + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "實驗性功能: 讓底部的支撐區域小於突出部分的支撐區域。" + +#~ msgctxt "extruders_enabled_count label" +#~ msgid "Number of Extruders that are enabled" +#~ msgstr "已啟用擠出機的數量" + +#~ msgctxt "machine_nozzle_tip_outer_diameter label" +#~ msgid "Outer nozzle diameter" +#~ msgstr "噴頭外徑" + +#~ msgctxt "machine_nozzle_head_distance label" +#~ msgid "Nozzle length" +#~ msgstr "噴頭長度" + +#~ msgctxt "machine_nozzle_expansion_angle label" +#~ msgid "Nozzle angle" +#~ msgstr "噴頭角度" + +#~ msgctxt "machine_heat_zone_length label" +#~ msgid "Heat zone length" +#~ msgstr "加熱區長度" + +#~ msgctxt "machine_nozzle_heat_up_speed label" +#~ msgid "Heat up speed" +#~ msgstr "加熱速度" + +#~ msgctxt "machine_nozzle_cool_down_speed label" +#~ msgid "Cool down speed" +#~ msgstr "冷卻速度" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code flavour" +#~ msgstr "G-code 類型" + +#~ msgctxt "machine_disallowed_areas label" +#~ msgid "Disallowed areas" +#~ msgstr "不允許區域" + +#~ msgctxt "machine_head_polygon label" +#~ msgid "Machine head polygon" +#~ msgstr "機器頭多邊形" + +#~ msgctxt "machine_head_with_fans_polygon label" +#~ msgid "Machine head & Fan polygon" +#~ msgstr "機器頭和風扇多邊形" + +#~ msgctxt "gantry_height label" +#~ msgid "Gantry height" +#~ msgstr "吊車高度" + +#~ msgctxt "machine_use_extruder_offset_to_offset_coords label" +#~ msgid "Offset With Extruder" +#~ msgstr "擠出機偏移量" + +#~ msgctxt "adaptive_layer_height_enabled label" +#~ msgid "Use adaptive layers" +#~ msgstr "使用適應層高" + +#~ msgctxt "adaptive_layer_height_variation label" +#~ msgid "Adaptive layers maximum variation" +#~ msgstr "適應層高最大變化量" + +#~ msgctxt "adaptive_layer_height_variation_step label" +#~ msgid "Adaptive layers variation step size" +#~ msgstr "適應層高變化幅度" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive layers threshold" +#~ msgstr "適應層高門檻值" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "表層與牆壁的重疊量佔表層線寬的百分比。輕微的重疊能讓填充與表層牢固地連接。這是表層線寬和最內層牆壁線寬平均的百分比。" + +#~ msgctxt "skin_overlap_mm description" +#~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +#~ msgstr "表層和牆壁之間的重疊量。稍微重疊可讓各個牆壁與表層牢固連接。" + +#~ msgctxt "switch_extruder_retraction_amount description" +#~ msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." +#~ msgstr "回抽量:設為 0,不進行任何回抽。該值通常應與加熱區的長度相同。" + +#~ msgctxt "retraction_combing description" +#~ msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas and also to only comb within the infill. Note that the 'Within Infill' option behaves exactly like the 'Not in Skin' option in earlier Cura releases." +#~ msgstr "梳理模式讓噴頭空跑時保持在已列印的區域內。這導致較長的空跑距離但減少回抽的需求。如果關閉梳理模式,噴頭將會回抽耗材,直線移動到下一點。梳理模式可以避開頂部/底部表層,也可以只用在內部填充。注意「內部填充」選項的行為與舊版 Cura 的「表層以外區域」選項是完全相同的。" + #~ msgctxt "connect_skin_polygons description" #~ msgid "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happend midway over infill this feature can reduce the top surface quality." #~ msgstr "將頂部/底部表層路徑相鄰的位置連接。同心模式時開啟此設定,可以大大地減少空跑時間。但因連接可能發生在填充途中,所以此功能可能降低頂部表層的品質。" diff --git a/resources/images/Mark2_for_Ultimaker2_backplate.png b/resources/images/Mark2_for_Ultimaker2_backplate.png new file mode 100644 index 0000000000..c1958c7300 Binary files /dev/null and b/resources/images/Mark2_for_Ultimaker2_backplate.png differ diff --git a/resources/images/StereotechSte320backplate.png b/resources/images/StereotechSte320backplate.png new file mode 100644 index 0000000000..9ca3ecb23a Binary files /dev/null and b/resources/images/StereotechSte320backplate.png differ diff --git a/resources/images/UltimakerS3backplate.png b/resources/images/UltimakerS3backplate.png new file mode 100644 index 0000000000..60897a30ec Binary files /dev/null and b/resources/images/UltimakerS3backplate.png differ diff --git a/resources/images/anycubic-chiron.png b/resources/images/anycubic-chiron.png new file mode 100644 index 0000000000..dfe07b42a6 Binary files /dev/null and b/resources/images/anycubic-chiron.png differ diff --git a/resources/images/cura.png b/resources/images/cura.png index 4fef842ff4..2d6a75f571 100644 Binary files a/resources/images/cura.png and b/resources/images/cura.png differ diff --git a/resources/images/hellbot.png b/resources/images/hellbot.png new file mode 100644 index 0000000000..e39ac419dc Binary files /dev/null and b/resources/images/hellbot.png differ diff --git a/resources/images/hms434.png b/resources/images/hms434.png new file mode 100644 index 0000000000..6c08662602 Binary files /dev/null and b/resources/images/hms434.png differ diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..7f2445d18e --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..a1d50aae0f --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_abs +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..0f817ec515 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_High_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_High_Visual.inst.cfg new file mode 100644 index 0000000000..7cfc4d2248 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..26c5029924 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_abs +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..61b24839c0 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..df562e7dd5 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..63aa092cf1 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..383f85c8c0 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_High_Visual.inst.cfg new file mode 100644 index 0000000000..ecf95b0175 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..82fe5e807b --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..83f7004ecc --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..9ee22f9a8a --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..865c53e4e8 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_tough_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..8fc12474f0 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_High_Visual.inst.cfg new file mode 100644 index 0000000000..8f9be8a63d --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..36150f18a3 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_tough_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..82b36cc9e3 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..1e7e808355 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..6aed5bf11a --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_abs +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..acbccc4d08 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_High_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_High_Visual.inst.cfg new file mode 100644 index 0000000000..5d8095dbd4 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..a141830f80 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_abs +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..5f166c94f5 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..558a14dd4b --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..d814866d39 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..6b60e07201 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_High_Visual.inst.cfg new file mode 100644 index 0000000000..4d1a904d3f --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..b22b6ff4c2 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..b334b7f101 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..d680a751a5 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..57ab6a727e --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_tough_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..26774b8162 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_High_Visual.inst.cfg new file mode 100644 index 0000000000..a2968f5060 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..a5f878bf4f --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_tough_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..01440a2a20 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/meshes/FelixPro2_platform.obj b/resources/meshes/FelixPro2_platform.obj new file mode 100644 index 0000000000..1d13cdd904 --- /dev/null +++ b/resources/meshes/FelixPro2_platform.obj @@ -0,0 +1,4485 @@ +# Blender v2.79 (sub 0) OBJ File: 'FelixPro2_platform.blend' +# www.blender.org +o Body1 +v 177.244446 31.941147 -22.999994 +v 177.244446 31.941143 -4.999995 +v 177.500000 30.000004 -22.999994 +v 177.500000 30.000000 -4.999995 +v 177.244446 28.058861 -22.999996 +v 177.244446 28.058857 -4.999995 +v 176.495193 26.250004 -22.999996 +v 176.495193 26.250000 -4.999996 +v 175.303299 24.696703 -22.999996 +v 175.303299 24.696699 -4.999996 +v 173.750000 23.504812 -22.999996 +v 173.750000 23.504808 -4.999996 +v 171.941147 22.755560 -22.999996 +v 171.941147 22.755556 -4.999996 +v 170.000000 22.500004 -22.999996 +v 170.000000 22.500000 -4.999996 +v 168.058853 22.755560 -22.999996 +v 168.058853 22.755556 -4.999996 +v 166.250000 23.504812 -22.999996 +v 166.250000 23.504808 -4.999996 +v 164.696701 24.696703 -22.999996 +v 164.696701 24.696699 -4.999996 +v 163.504807 26.250004 -22.999996 +v 163.504807 26.250000 -4.999996 +v 162.755554 28.058861 -22.999996 +v 162.755554 28.058857 -4.999995 +v 162.500000 30.000004 -22.999994 +v 162.500000 30.000000 -4.999995 +v 162.755554 31.941147 -22.999994 +v 162.755554 31.941143 -4.999995 +v 163.504807 33.750004 -22.999994 +v 163.504807 33.750000 -4.999994 +v 164.696701 35.303307 -22.999994 +v 164.696701 35.303303 -4.999994 +v 166.250000 36.495193 -22.999994 +v 166.250000 36.495190 -4.999994 +v 168.058853 37.244450 -22.999994 +v 168.058853 37.244446 -4.999994 +v 170.000000 37.500004 -22.999994 +v 170.000000 37.500000 -4.999994 +v 171.941147 37.244450 -22.999994 +v 171.941147 37.244446 -4.999994 +v 173.750000 36.495193 -22.999994 +v 173.750000 36.495190 -4.999994 +v 175.303299 35.303307 -22.999994 +v 175.303299 35.303303 -4.999994 +v 176.495193 33.750004 -22.999994 +v 176.495193 33.750000 -4.999994 +v 97.424881 121.941139 -22.999981 +v 97.424881 121.941139 -4.999980 +v 97.680435 120.000000 -22.999981 +v 97.680435 120.000000 -4.999980 +v 97.424881 118.058861 -22.999981 +v 97.424881 118.058861 -4.999981 +v 96.675629 116.250000 -22.999981 +v 96.675629 116.250000 -4.999981 +v 95.483734 114.696701 -22.999981 +v 95.483734 114.696701 -4.999981 +v 93.930435 113.504807 -22.999981 +v 93.930435 113.504807 -4.999981 +v 92.121582 112.755554 -22.999981 +v 92.121582 112.755554 -4.999981 +v 90.180435 112.500000 -22.999981 +v 90.180435 112.500000 -4.999982 +v 88.239296 112.755554 -22.999981 +v 88.239296 112.755554 -4.999981 +v 86.430435 113.504807 -22.999981 +v 86.430435 113.504807 -4.999981 +v 84.877136 114.696701 -22.999981 +v 84.877136 114.696701 -4.999981 +v 83.685249 116.250000 -22.999981 +v 83.685249 116.250000 -4.999981 +v 82.935989 118.058861 -22.999981 +v 82.935989 118.058861 -4.999981 +v 82.680435 120.000000 -22.999981 +v 82.680435 120.000000 -4.999980 +v 82.935989 121.941139 -22.999981 +v 82.935989 121.941139 -4.999980 +v 83.685249 123.750000 -22.999979 +v 83.685249 123.750000 -4.999980 +v 84.877136 125.303299 -22.999979 +v 84.877136 125.303299 -4.999979 +v 86.430435 126.495193 -22.999979 +v 86.430435 126.495193 -4.999979 +v 88.239296 127.244446 -22.999979 +v 88.239296 127.244446 -4.999979 +v 90.180435 127.500000 -22.999979 +v 90.180435 127.500000 -4.999979 +v 92.121582 127.244446 -22.999979 +v 92.121582 127.244446 -4.999979 +v 93.930435 126.495193 -22.999979 +v 93.930435 126.495193 -4.999979 +v 95.483734 125.303299 -22.999979 +v 95.483734 125.303299 -4.999979 +v 96.675629 123.750000 -22.999979 +v 96.675629 123.750000 -4.999980 +v 180.000000 20.000004 -22.999996 +v 160.000000 20.000004 -22.999996 +v 160.000000 49.896946 -22.999992 +v 105.938271 109.965530 -22.999983 +v 160.000000 190.103058 -22.999969 +v 173.750000 203.504807 -22.999968 +v 171.941147 202.755554 -22.999968 +v 175.303299 204.696701 -22.999968 +v 176.495193 206.250000 -22.999966 +v 177.244446 208.058853 -22.999966 +v 180.000000 220.000000 -22.999964 +v 102.087685 120.000000 -22.999981 +v 102.532974 116.372253 -22.999981 +v 103.842422 112.959900 -22.999981 +v 79.031021 109.965530 -22.999983 +v 76.935173 112.959900 -22.999981 +v 75.625732 116.372253 -22.999981 +v 75.180435 120.000000 -22.999981 +v 75.625732 123.627747 -22.999979 +v 76.935173 127.040100 -22.999979 +v 79.031021 130.034470 -22.999979 +v 105.938271 130.034470 -22.999979 +v 160.000000 220.000000 -22.999964 +v 103.842422 127.040100 -22.999979 +v 102.532974 123.627747 -22.999979 +v 162.500000 210.000000 -22.999966 +v 162.755554 211.941147 -22.999966 +v 170.000000 217.500000 -22.999964 +v 171.941147 217.244446 -22.999964 +v 173.750000 216.495193 -22.999966 +v 177.244446 211.941147 -22.999966 +v 177.500000 210.000000 -22.999966 +v 170.000000 202.500000 -22.999968 +v 168.058853 202.755554 -22.999968 +v 166.250000 203.504807 -22.999968 +v 164.696701 204.696701 -22.999968 +v 163.504807 206.250000 -22.999966 +v 162.755554 208.058853 -22.999966 +v 163.504807 213.750000 -22.999966 +v 164.696701 215.303299 -22.999966 +v 166.250000 216.495193 -22.999966 +v 168.058853 217.244446 -22.999964 +v 175.303299 215.303299 -22.999966 +v 176.495193 213.750000 -22.999966 +v 160.000000 220.000000 -29.999964 +v 134.000000 220.000000 -29.999964 +v 160.017288 220.019211 -30.195053 +v 134.000000 220.034073 -30.258783 +v 160.068512 220.076126 -30.382647 +v 134.000000 220.133972 -30.499964 +v 160.151672 220.168533 -30.555534 +v 134.000000 220.292892 -30.707071 +v 160.263611 220.292892 -30.707071 +v 160.399994 220.444427 -30.831434 +v 134.000000 220.500000 -30.865990 +v 160.555588 220.617310 -30.923843 +v 134.000000 220.741180 -30.965889 +v 160.724426 220.804916 -30.980749 +v 134.000000 221.000000 -30.999964 +v 160.899994 221.000000 -30.999964 +v 125.000000 229.000000 -29.999962 +v 125.034073 229.000000 -30.258781 +v 125.306671 226.670624 -29.999964 +v 125.339584 226.679443 -30.258783 +v 126.205772 224.500000 -29.999964 +v 126.235283 224.517044 -30.258783 +v 127.636040 222.636032 -29.999964 +v 127.660133 222.660126 -30.258783 +v 129.500000 221.205765 -29.999964 +v 129.517044 221.235275 -30.258783 +v 131.670624 220.306671 -29.999964 +v 131.679443 220.339584 -30.258783 +v 131.705307 220.436081 -30.499964 +v 131.746429 220.589584 -30.707071 +v 131.800034 220.789627 -30.865990 +v 131.862457 221.022598 -30.965889 +v 131.929443 221.272598 -30.999964 +v 125.133972 229.000000 -30.499962 +v 125.436073 226.705307 -30.499964 +v 126.321800 224.566986 -30.499964 +v 127.730774 222.730774 -30.499964 +v 129.566986 221.321793 -30.499964 +v 125.292892 229.000000 -30.707069 +v 125.589584 226.746429 -30.707071 +v 126.459427 224.646454 -30.707071 +v 127.843147 222.843140 -30.707071 +v 129.646454 221.459427 -30.707071 +v 125.500000 229.000000 -30.865988 +v 125.789627 226.800034 -30.865990 +v 126.638786 224.750000 -30.865990 +v 127.989594 222.989594 -30.865990 +v 129.750000 221.638779 -30.865990 +v 125.741180 229.000000 -30.965887 +v 126.022591 226.862457 -30.965889 +v 126.847656 224.870590 -30.965889 +v 128.160126 223.160126 -30.965889 +v 129.870590 221.847656 -30.965889 +v 126.000000 229.000000 -30.999962 +v 126.272591 226.929443 -30.999964 +v 127.071800 225.000000 -30.999964 +v 128.343140 223.343140 -30.999964 +v 130.000000 222.071793 -30.999964 +v 125.000000 251.000000 -29.999960 +v 125.034073 251.000000 -30.258780 +v 125.133972 251.000000 -30.499960 +v 125.292892 251.000000 -30.707067 +v 125.500000 251.000000 -30.865986 +v 125.741180 251.000000 -30.965885 +v 126.000000 251.000000 -30.999960 +v 134.000000 260.000000 -29.999958 +v 134.000000 259.965912 -30.258778 +v 131.670624 259.693329 -29.999958 +v 131.679443 259.660431 -30.258778 +v 129.500000 258.794220 -29.999958 +v 129.517044 258.764709 -30.258778 +v 127.636040 257.363953 -29.999958 +v 127.660133 257.339874 -30.258778 +v 126.205772 255.500000 -29.999958 +v 126.235283 255.482956 -30.258778 +v 125.306671 253.329376 -29.999958 +v 125.339584 253.320557 -30.258778 +v 125.436073 253.294693 -30.499958 +v 125.589584 253.253571 -30.707066 +v 125.789627 253.199966 -30.865984 +v 126.022591 253.137543 -30.965883 +v 126.272591 253.070557 -30.999958 +v 134.000000 259.866028 -30.499958 +v 131.705307 259.563934 -30.499958 +v 129.566986 258.678192 -30.499958 +v 127.730774 257.269226 -30.499958 +v 126.321800 255.433014 -30.499958 +v 134.000000 259.707092 -30.707066 +v 131.746429 259.410431 -30.707066 +v 129.646454 258.540588 -30.707066 +v 127.843147 257.156860 -30.707066 +v 126.459427 255.353546 -30.707066 +v 134.000000 259.500000 -30.865984 +v 131.800034 259.210358 -30.865984 +v 129.750000 258.361206 -30.865984 +v 127.989594 257.010406 -30.865984 +v 126.638786 255.250000 -30.865984 +v 134.000000 259.258820 -30.965883 +v 131.862457 258.977417 -30.965883 +v 129.870590 258.152344 -30.965883 +v 128.160126 256.839874 -30.965883 +v 126.847656 255.129410 -30.965883 +v 134.000000 259.000000 -30.999958 +v 131.929443 258.727417 -30.999958 +v 130.000000 257.928192 -30.999958 +v 128.343140 256.656860 -30.999958 +v 127.071800 255.000000 -30.999958 +v 186.000000 260.000000 -29.999958 +v 186.000000 259.965912 -30.258778 +v 186.000000 259.866028 -30.499958 +v 186.000000 259.707092 -30.707066 +v 186.000000 259.500000 -30.865984 +v 186.000000 259.258820 -30.965883 +v 186.000000 259.000000 -30.999958 +v 195.000000 251.000000 -29.999960 +v 194.965927 251.000000 -30.258780 +v 194.693329 253.329376 -29.999958 +v 194.660416 253.320557 -30.258778 +v 193.794235 255.500000 -29.999958 +v 193.764725 255.482956 -30.258778 +v 192.363968 257.363953 -29.999958 +v 192.339874 257.339874 -30.258778 +v 190.500000 258.794220 -29.999958 +v 190.482956 258.764709 -30.258778 +v 188.329376 259.693329 -29.999958 +v 188.320557 259.660431 -30.258778 +v 188.294693 259.563934 -30.499958 +v 188.253571 259.410431 -30.707066 +v 188.199966 259.210358 -30.865984 +v 188.137543 258.977417 -30.965883 +v 188.070557 258.727417 -30.999958 +v 194.866028 251.000000 -30.499960 +v 194.563919 253.294693 -30.499958 +v 193.678207 255.433014 -30.499958 +v 192.269226 257.269226 -30.499958 +v 190.433014 258.678192 -30.499958 +v 194.707108 251.000000 -30.707067 +v 194.410416 253.253571 -30.707066 +v 193.540573 255.353546 -30.707066 +v 192.156860 257.156860 -30.707066 +v 190.353546 258.540588 -30.707066 +v 194.500000 251.000000 -30.865986 +v 194.210373 253.199966 -30.865984 +v 193.361221 255.250000 -30.865984 +v 192.010406 257.010406 -30.865984 +v 190.250000 258.361206 -30.865984 +v 194.258820 251.000000 -30.965885 +v 193.977402 253.137543 -30.965883 +v 193.152344 255.129410 -30.965883 +v 191.839874 256.839874 -30.965883 +v 190.129410 258.152344 -30.965883 +v 194.000000 251.000000 -30.999960 +v 193.727402 253.070557 -30.999958 +v 192.928207 255.000000 -30.999958 +v 191.656860 256.656860 -30.999958 +v 190.000000 257.928192 -30.999958 +v 195.000000 229.000000 -29.999962 +v 194.965927 229.000000 -30.258781 +v 194.866028 229.000000 -30.499962 +v 194.707108 229.000000 -30.707069 +v 194.500000 229.000000 -30.865988 +v 194.258820 229.000000 -30.965887 +v 194.000000 229.000000 -30.999962 +v 186.000000 220.000000 -29.999964 +v 186.000000 220.034073 -30.258783 +v 188.329376 220.306671 -29.999964 +v 188.320557 220.339584 -30.258783 +v 190.500000 221.205765 -29.999964 +v 190.482956 221.235275 -30.258783 +v 192.363968 222.636032 -29.999964 +v 192.339874 222.660126 -30.258783 +v 193.794235 224.500000 -29.999964 +v 193.764725 224.517044 -30.258783 +v 194.693329 226.670624 -29.999964 +v 194.660416 226.679443 -30.258783 +v 194.563919 226.705307 -30.499964 +v 194.410416 226.746429 -30.707071 +v 194.210373 226.800034 -30.865990 +v 193.977402 226.862457 -30.965889 +v 193.727402 226.929443 -30.999964 +v 186.000000 220.133972 -30.499964 +v 188.294693 220.436081 -30.499964 +v 190.433014 221.321793 -30.499964 +v 192.269226 222.730774 -30.499964 +v 193.678207 224.566986 -30.499964 +v 186.000000 220.292892 -30.707071 +v 188.253571 220.589584 -30.707071 +v 190.353546 221.459427 -30.707071 +v 192.156860 222.843140 -30.707071 +v 193.540573 224.646454 -30.707071 +v 186.000000 220.500000 -30.865990 +v 188.199966 220.789627 -30.865990 +v 190.250000 221.638779 -30.865990 +v 192.010406 222.989594 -30.865990 +v 193.361221 224.750000 -30.865990 +v 186.000000 220.741180 -30.965889 +v 188.137543 221.022598 -30.965889 +v 190.129410 221.847656 -30.965889 +v 191.839874 223.160126 -30.965889 +v 193.152344 224.870590 -30.965889 +v 186.000000 221.000000 -30.999964 +v 188.070557 221.272598 -30.999964 +v 190.000000 222.071793 -30.999964 +v 191.656860 223.343140 -30.999964 +v 192.928207 225.000000 -30.999964 +v 180.000000 220.000000 -29.999964 +v 180.000000 220.034073 -30.258783 +v 180.000000 220.133972 -30.499964 +v 180.000000 220.292892 -30.707071 +v 180.000000 220.500000 -30.865990 +v 180.000000 220.741180 -30.965889 +v 180.000000 221.000000 -30.999964 +v 186.000000 220.000000 -13.999964 +v 188.329376 220.306671 -13.999964 +v 190.500000 221.205765 -13.999964 +v 192.363968 222.636032 -13.999964 +v 193.794235 224.500000 -13.999964 +v 194.693329 226.670624 -13.999963 +v 195.000000 229.000000 -13.999963 +v 195.000000 251.000000 -13.999959 +v 194.693329 253.329376 -13.999959 +v 193.794235 255.500000 -13.999958 +v 192.363968 257.363953 -13.999958 +v 190.500000 258.794220 -13.999958 +v 188.329376 259.693329 -13.999958 +v 186.000000 260.000000 -13.999958 +v 134.000000 260.000000 -13.999958 +v 131.670624 259.693329 -13.999958 +v 129.500000 258.794220 -13.999958 +v 127.636040 257.363953 -13.999958 +v 126.205772 255.500000 -13.999958 +v 125.306671 253.329376 -13.999959 +v 125.000000 251.000000 -13.999959 +v 125.000000 229.000000 -13.999963 +v 125.306671 226.670624 -13.999963 +v 126.205772 224.500000 -13.999964 +v 127.636040 222.636032 -13.999964 +v 129.500000 221.205765 -13.999964 +v 131.670624 220.306671 -13.999964 +v 134.000000 220.000000 -13.999964 +v 194.000000 251.000000 -12.999959 +v 194.000000 229.000000 -12.999963 +v 194.258820 251.000000 -13.034033 +v 194.258820 229.000000 -13.034037 +v 194.500000 251.000000 -13.133934 +v 194.500000 229.000000 -13.133938 +v 194.707108 251.000000 -13.292852 +v 194.707108 229.000000 -13.292856 +v 194.866028 251.000000 -13.499959 +v 194.866028 229.000000 -13.499963 +v 194.965927 251.000000 -13.741140 +v 194.965927 229.000000 -13.741144 +v 186.000000 259.965912 -13.741139 +v 188.320557 259.660431 -13.741139 +v 190.482956 258.764709 -13.741139 +v 192.339874 257.339874 -13.741139 +v 193.764725 255.482956 -13.741139 +v 194.660416 253.320557 -13.741140 +v 194.563919 253.294693 -13.499959 +v 194.410416 253.253571 -13.292852 +v 194.210373 253.199966 -13.133934 +v 193.977402 253.137543 -13.034033 +v 193.727402 253.070557 -12.999959 +v 186.000000 259.866028 -13.499958 +v 188.294693 259.563934 -13.499958 +v 190.433014 258.678192 -13.499958 +v 192.269226 257.269226 -13.499958 +v 193.678207 255.433014 -13.499958 +v 186.000000 259.707092 -13.292851 +v 188.253571 259.410431 -13.292851 +v 190.353546 258.540588 -13.292851 +v 192.156860 257.156860 -13.292851 +v 193.540573 255.353546 -13.292851 +v 186.000000 259.500000 -13.133933 +v 188.199966 259.210358 -13.133933 +v 190.250000 258.361206 -13.133933 +v 192.010406 257.010406 -13.133933 +v 193.361221 255.250000 -13.133933 +v 186.000000 259.258820 -13.034032 +v 188.137543 258.977417 -13.034032 +v 190.129410 258.152344 -13.034032 +v 191.839874 256.839874 -13.034032 +v 193.152344 255.129410 -13.034032 +v 186.000000 259.000000 -12.999958 +v 188.070557 258.727417 -12.999958 +v 190.000000 257.928192 -12.999958 +v 191.656860 256.656860 -12.999958 +v 192.928207 255.000000 -12.999958 +v 134.000000 259.965912 -13.741139 +v 134.000000 259.866028 -13.499958 +v 134.000000 259.707092 -13.292851 +v 134.000000 259.500000 -13.133933 +v 134.000000 259.258820 -13.034032 +v 134.000000 259.000000 -12.999958 +v 125.034073 251.000000 -13.741140 +v 125.339584 253.320557 -13.741140 +v 126.235283 255.482956 -13.741139 +v 127.660133 257.339874 -13.741139 +v 129.517044 258.764709 -13.741139 +v 131.679443 259.660431 -13.741139 +v 131.705307 259.563934 -13.499958 +v 131.746429 259.410431 -13.292851 +v 131.800034 259.210358 -13.133933 +v 131.862457 258.977417 -13.034032 +v 131.929443 258.727417 -12.999958 +v 125.133972 251.000000 -13.499959 +v 125.436073 253.294693 -13.499959 +v 126.321800 255.433014 -13.499958 +v 127.730774 257.269226 -13.499958 +v 129.566986 258.678192 -13.499958 +v 125.292892 251.000000 -13.292852 +v 125.589584 253.253571 -13.292852 +v 126.459427 255.353546 -13.292851 +v 127.843147 257.156860 -13.292851 +v 129.646454 258.540588 -13.292851 +v 125.500000 251.000000 -13.133934 +v 125.789627 253.199966 -13.133934 +v 126.638786 255.250000 -13.133933 +v 127.989594 257.010406 -13.133933 +v 129.750000 258.361206 -13.133933 +v 125.741180 251.000000 -13.034033 +v 126.022591 253.137543 -13.034033 +v 126.847656 255.129410 -13.034032 +v 128.160126 256.839874 -13.034032 +v 129.870590 258.152344 -13.034032 +v 126.000000 251.000000 -12.999959 +v 126.272591 253.070557 -12.999959 +v 127.071800 255.000000 -12.999958 +v 128.343140 256.656860 -12.999958 +v 130.000000 257.928192 -12.999958 +v 125.034073 229.000000 -13.741144 +v 125.133972 229.000000 -13.499963 +v 125.292892 229.000000 -13.292856 +v 125.500000 229.000000 -13.133938 +v 125.741180 229.000000 -13.034037 +v 126.000000 229.000000 -12.999963 +v 134.000000 220.034073 -13.741145 +v 131.679443 220.339584 -13.741145 +v 129.517044 221.235275 -13.741145 +v 127.660133 222.660126 -13.741145 +v 126.235283 224.517044 -13.741145 +v 125.339584 226.679443 -13.741144 +v 125.436073 226.705307 -13.499963 +v 125.589584 226.746429 -13.292856 +v 125.789627 226.800034 -13.133938 +v 126.022591 226.862457 -13.034037 +v 126.272591 226.929443 -12.999963 +v 134.000000 220.133972 -13.499964 +v 131.705307 220.436081 -13.499964 +v 129.566986 221.321793 -13.499964 +v 127.730774 222.730774 -13.499964 +v 126.321800 224.566986 -13.499964 +v 134.000000 220.292892 -13.292857 +v 131.746429 220.589584 -13.292857 +v 129.646454 221.459427 -13.292857 +v 127.843147 222.843140 -13.292857 +v 126.459427 224.646454 -13.292857 +v 134.000000 220.500000 -13.133939 +v 131.800034 220.789627 -13.133939 +v 129.750000 221.638779 -13.133939 +v 127.989594 222.989594 -13.133939 +v 126.638786 224.750000 -13.133939 +v 134.000000 220.741180 -13.034038 +v 131.862457 221.022598 -13.034038 +v 129.870590 221.847656 -13.034038 +v 128.160126 223.160126 -13.034038 +v 126.847656 224.870590 -13.034038 +v 134.000000 221.000000 -12.999964 +v 131.929443 221.272598 -12.999964 +v 130.000000 222.071793 -12.999964 +v 128.343140 223.343140 -12.999964 +v 127.071800 225.000000 -12.999964 +v 186.000000 220.034073 -13.741145 +v 186.000000 220.133972 -13.499964 +v 186.000000 220.292892 -13.292857 +v 186.000000 220.500000 -13.133939 +v 186.000000 220.741180 -13.034038 +v 186.000000 221.000000 -12.999964 +v 188.070557 221.272598 -12.999964 +v 188.137543 221.022598 -13.034038 +v 190.000000 222.071793 -12.999964 +v 190.129410 221.847656 -13.034038 +v 191.656860 223.343140 -12.999964 +v 191.839874 223.160126 -13.034038 +v 192.928207 225.000000 -12.999964 +v 193.152344 224.870590 -13.034038 +v 193.727402 226.929443 -12.999963 +v 193.977402 226.862457 -13.034037 +v 194.210373 226.800034 -13.133938 +v 194.410416 226.746429 -13.292856 +v 194.563919 226.705307 -13.499963 +v 194.660416 226.679443 -13.741144 +v 188.199966 220.789627 -13.133939 +v 190.250000 221.638779 -13.133939 +v 192.010406 222.989594 -13.133939 +v 193.361221 224.750000 -13.133939 +v 188.253571 220.589584 -13.292857 +v 190.353546 221.459427 -13.292857 +v 192.156860 222.843140 -13.292857 +v 193.540573 224.646454 -13.292857 +v 188.294693 220.436081 -13.499964 +v 190.433014 221.321793 -13.499964 +v 192.269226 222.730774 -13.499964 +v 193.678207 224.566986 -13.499964 +v 188.320557 220.339584 -13.741145 +v 190.482956 221.235275 -13.741145 +v 192.339874 222.660126 -13.741145 +v 193.764725 224.517044 -13.741145 +v 194.000000 3.974728 -31.000000 +v 194.000000 20.000006 -30.999996 +v 194.258820 3.974728 -30.965925 +v 194.258820 20.000006 -30.965921 +v 194.500000 3.974728 -30.866026 +v 194.500000 20.000006 -30.866022 +v 194.707108 3.974728 -30.707108 +v 194.707108 20.000006 -30.707104 +v 194.866028 3.974728 -30.500000 +v 194.866028 20.000006 -30.499996 +v 194.965927 3.974728 -30.258820 +v 194.965927 20.000006 -30.258816 +v 195.000000 3.974728 -30.000000 +v 195.000000 20.000006 -29.999996 +v 194.720581 -1.303926 -30.000000 +v 194.372025 -3.924798 -30.000000 +v 194.571930 -2.287664 -30.258820 +v 194.338379 -3.919414 -30.258820 +v 194.239746 -3.903631 -30.500000 +v 194.472824 -2.275143 -30.500000 +v 194.082809 -3.878523 -30.707108 +v 194.315155 -2.255225 -30.707108 +v 193.878311 -3.845802 -30.866026 +v 194.109680 -2.229268 -30.866026 +v 193.640152 -3.807698 -30.965925 +v 193.870392 -2.199040 -30.965925 +v 193.384598 -3.766807 -31.000000 +v 193.726166 -1.198353 -31.000000 +v 193.931488 1.384566 -31.000000 +v 194.930099 1.331706 -30.000000 +v 191.943054 -19.105928 -30.000004 +v 191.909409 -19.100544 -30.258823 +v 191.810760 -19.084761 -30.500004 +v 191.653839 -19.059652 -30.707111 +v 191.449326 -19.026932 -30.866030 +v 191.211182 -18.988829 -30.965929 +v 190.955612 -18.947937 -31.000004 +v 185.030960 -24.999994 -30.000004 +v 185.030960 -24.965919 -30.258823 +v 186.663300 -24.807013 -30.000004 +v 186.833878 -24.728561 -30.258823 +v 188.205627 -24.238708 -30.000004 +v 188.513931 -24.032663 -30.258823 +v 189.572906 -23.326416 -30.000004 +v 189.956619 -22.925648 -30.258823 +v 190.689758 -22.120438 -30.000004 +v 191.063629 -21.482958 -30.258823 +v 191.494598 -20.687267 -30.000004 +v 191.759537 -19.802908 -30.258823 +v 191.663040 -19.777052 -30.500004 +v 191.509537 -19.735922 -30.707111 +v 191.309479 -19.682318 -30.866030 +v 191.076523 -19.619896 -30.965929 +v 190.571228 -20.303371 -31.000004 +v 190.451263 -21.129404 -30.965929 +v 189.881363 -21.531803 -31.000004 +v 189.456619 -22.425648 -30.965929 +v 188.924057 -22.565498 -31.000004 +v 188.160370 -23.420290 -30.965929 +v 187.752106 -23.347464 -31.000004 +v 186.650864 -24.045549 -30.965929 +v 186.430099 -23.834581 -31.000004 +v 185.030960 -24.258814 -30.965929 +v 185.030960 -23.999994 -31.000004 +v 185.030960 -24.866020 -30.500004 +v 186.808029 -24.632065 -30.500004 +v 188.463974 -23.946146 -30.500004 +v 189.885986 -22.855007 -30.500004 +v 190.977112 -21.433008 -30.500004 +v 185.030960 -24.707102 -30.707111 +v 186.766891 -24.478561 -30.707111 +v 188.384521 -23.808519 -30.707111 +v 189.773605 -22.742636 -30.707111 +v 190.839493 -21.353548 -30.707111 +v 185.030960 -24.499994 -30.866030 +v 186.713287 -24.278513 -30.866030 +v 188.280960 -23.629160 -30.866030 +v 189.627167 -22.596188 -30.866030 +v 190.660126 -21.249994 -30.866030 +v 136.518784 -24.999994 -30.000004 +v 136.518784 -24.965919 -30.258823 +v 136.518784 -24.866020 -30.500004 +v 136.518784 -24.707102 -30.707111 +v 136.518784 -24.499994 -30.866030 +v 136.518784 -24.258814 -30.965929 +v 136.518784 -23.999994 -31.000004 +v 130.240479 -21.095625 -30.000004 +v 129.712067 -19.633606 -30.000004 +v 129.790207 -19.802908 -30.258823 +v 129.745193 -19.625654 -30.258823 +v 129.842346 -19.602339 -30.500004 +v 129.886703 -19.777052 -30.500004 +v 129.996872 -19.565250 -30.707111 +v 130.040207 -19.735922 -30.707111 +v 130.198257 -19.516918 -30.866030 +v 130.240265 -19.682318 -30.866030 +v 130.432785 -19.460634 -30.965929 +v 130.473221 -19.619896 -30.965929 +v 130.684448 -19.400232 -31.000004 +v 131.137375 -20.653393 -31.000004 +v 131.098480 -21.129404 -30.965929 +v 131.855713 -21.775684 -31.000004 +v 132.093124 -22.425648 -30.965929 +v 132.804031 -22.711758 -31.000004 +v 133.389374 -23.420290 -30.965929 +v 133.935577 -23.415442 -31.000004 +v 134.898880 -24.045549 -30.965929 +v 135.194519 -23.852032 -31.000004 +v 134.836456 -24.278513 -30.866030 +v 133.268784 -23.629160 -30.866030 +v 131.922577 -22.596188 -30.866030 +v 130.889618 -21.249994 -30.866030 +v 134.782852 -24.478561 -30.707111 +v 133.165222 -23.808519 -30.707111 +v 131.776138 -22.742636 -30.707111 +v 130.710251 -21.353548 -30.707111 +v 134.741714 -24.632065 -30.500004 +v 133.085770 -23.946146 -30.500004 +v 131.663773 -22.855007 -30.500004 +v 130.572632 -21.433008 -30.500004 +v 134.715866 -24.728561 -30.258823 +v 133.035812 -24.032663 -30.258823 +v 131.593124 -22.925648 -30.258823 +v 130.486115 -21.482958 -30.258823 +v 134.973816 -24.827372 -30.000004 +v 133.505035 -24.318016 -30.000004 +v 132.184921 -23.497051 -30.000004 +v 131.078537 -22.404966 -30.000004 +v 126.380638 -5.752640 -30.000000 +v 126.413765 -5.744688 -30.258820 +v 126.510910 -5.721374 -30.500000 +v 126.665443 -5.684287 -30.707108 +v 126.866829 -5.635954 -30.866026 +v 127.101349 -5.579669 -30.965925 +v 127.353020 -5.519267 -31.000000 +v 125.000000 5.916007 -29.999998 +v 125.034073 5.916007 -30.258818 +v 125.154037 1.994290 -30.000000 +v 125.615196 -1.903264 -30.000000 +v 125.133972 5.916007 -30.499998 +v 125.292892 5.916007 -30.707106 +v 125.500000 5.916007 -30.866024 +v 125.741180 5.916007 -30.965923 +v 126.602890 -1.746879 -31.000000 +v 126.000000 5.916007 -30.999998 +v 126.150955 2.072724 -31.000000 +v 125.000000 20.000006 -29.999996 +v 125.034073 20.000006 -30.258816 +v 125.133972 20.000006 -30.499996 +v 125.292892 20.000006 -30.707104 +v 125.500000 20.000006 -30.866022 +v 125.741180 20.000006 -30.965921 +v 126.000000 20.000006 -30.999996 +v 125.000000 5.916004 -13.999999 +v 125.154037 1.994287 -14.000000 +v 125.615196 -1.903267 -14.000000 +v 126.380638 -5.752643 -14.000001 +v 129.712067 -19.633610 -14.000003 +v 130.240479 -21.095629 -14.000004 +v 131.078537 -22.404970 -14.000004 +v 132.184921 -23.497055 -14.000004 +v 133.505035 -24.318020 -14.000004 +v 134.973816 -24.827375 -14.000004 +v 136.518784 -24.999998 -14.000004 +v 185.030960 -24.999998 -14.000004 +v 186.663300 -24.807016 -14.000004 +v 188.205627 -24.238712 -14.000004 +v 189.572906 -23.326420 -14.000004 +v 190.689758 -22.120441 -14.000004 +v 191.494598 -20.687271 -14.000004 +v 191.943054 -19.105932 -14.000003 +v 194.372025 -3.924801 -14.000001 +v 194.720581 -1.303929 -14.000000 +v 194.930099 1.331703 -14.000000 +v 195.000000 3.974725 -13.999999 +v 195.000000 20.000002 -13.999997 +v 194.965927 3.974725 -13.741180 +v 194.965927 20.000002 -13.741179 +v 194.866028 3.974725 -13.499999 +v 194.866028 20.000002 -13.499997 +v 194.707108 3.974725 -13.292892 +v 194.707108 20.000002 -13.292891 +v 194.500000 3.974725 -13.133974 +v 194.500000 20.000002 -13.133972 +v 194.258820 3.974725 -13.034073 +v 194.258820 20.000002 -13.034071 +v 194.000000 3.974725 -12.999999 +v 194.000000 20.000002 -12.999997 +v 193.384598 -3.766810 -13.000001 +v 193.640152 -3.807701 -13.034075 +v 193.726166 -1.198356 -13.000000 +v 193.931488 1.384563 -13.000000 +v 193.878311 -3.845805 -13.133976 +v 194.082809 -3.878526 -13.292894 +v 194.239746 -3.903634 -13.500001 +v 194.338379 -3.919417 -13.741182 +v 190.955612 -18.947941 -13.000003 +v 191.211182 -18.988832 -13.034077 +v 191.449326 -19.026936 -13.133978 +v 191.653839 -19.059656 -13.292896 +v 191.810760 -19.084764 -13.500003 +v 191.909409 -19.100548 -13.741184 +v 185.030960 -23.999998 -13.000004 +v 185.030960 -24.258818 -13.034078 +v 186.430099 -23.834585 -13.000004 +v 186.650864 -24.045553 -13.034078 +v 187.752106 -23.347467 -13.000004 +v 188.160370 -23.420294 -13.034078 +v 188.924057 -22.565502 -13.000004 +v 189.456619 -22.425652 -13.034078 +v 189.881363 -21.531807 -13.000004 +v 190.451263 -21.129408 -13.034078 +v 190.571228 -20.303375 -13.000003 +v 191.076523 -19.619900 -13.034077 +v 191.309479 -19.682322 -13.133978 +v 191.509537 -19.735926 -13.292896 +v 191.663040 -19.777056 -13.500003 +v 191.759537 -19.802912 -13.741184 +v 191.063629 -21.482962 -13.741185 +v 189.956619 -22.925652 -13.741185 +v 188.513931 -24.032667 -13.741185 +v 186.833878 -24.728565 -13.741185 +v 185.030960 -24.965923 -13.741185 +v 185.030960 -24.499998 -13.133979 +v 186.713287 -24.278517 -13.133979 +v 188.280960 -23.629164 -13.133979 +v 189.627167 -22.596191 -13.133979 +v 190.660126 -21.249998 -13.133979 +v 185.030960 -24.707106 -13.292897 +v 186.766891 -24.478565 -13.292897 +v 188.384521 -23.808523 -13.292897 +v 189.773605 -22.742640 -13.292897 +v 190.839493 -21.353552 -13.292897 +v 185.030960 -24.866024 -13.500004 +v 186.808029 -24.632069 -13.500004 +v 188.463974 -23.946150 -13.500004 +v 189.885986 -22.855011 -13.500004 +v 190.977112 -21.433012 -13.500004 +v 136.518784 -23.999998 -13.000004 +v 136.518784 -24.258818 -13.034078 +v 136.518784 -24.499998 -13.133979 +v 136.518784 -24.707106 -13.292897 +v 136.518784 -24.866024 -13.500004 +v 136.518784 -24.965923 -13.741185 +v 131.137375 -20.653397 -13.000004 +v 130.684448 -19.400236 -13.000003 +v 130.473221 -19.619900 -13.034077 +v 130.432785 -19.460638 -13.034077 +v 130.198257 -19.516922 -13.133978 +v 130.240265 -19.682322 -13.133978 +v 129.996872 -19.565254 -13.292896 +v 130.040207 -19.735926 -13.292896 +v 129.842346 -19.602343 -13.500003 +v 129.886703 -19.777056 -13.500003 +v 129.745193 -19.625658 -13.741184 +v 129.790207 -19.802912 -13.741184 +v 130.486115 -21.482962 -13.741185 +v 131.593124 -22.925652 -13.741185 +v 133.035812 -24.032667 -13.741185 +v 134.715866 -24.728565 -13.741185 +v 134.741714 -24.632069 -13.500004 +v 133.085770 -23.946150 -13.500004 +v 131.663773 -22.855011 -13.500004 +v 130.572632 -21.433012 -13.500004 +v 134.782852 -24.478565 -13.292897 +v 133.165222 -23.808523 -13.292897 +v 131.776138 -22.742640 -13.292897 +v 130.710251 -21.353552 -13.292897 +v 134.836456 -24.278517 -13.133979 +v 133.268784 -23.629164 -13.133979 +v 131.922577 -22.596191 -13.133979 +v 130.889618 -21.249998 -13.133979 +v 134.898880 -24.045553 -13.034078 +v 133.389374 -23.420294 -13.034078 +v 132.093124 -22.425652 -13.034078 +v 131.098480 -21.129408 -13.034078 +v 135.194519 -23.852036 -13.000004 +v 133.935577 -23.415445 -13.000004 +v 132.804031 -22.711761 -13.000004 +v 131.855713 -21.775688 -13.000004 +v 127.353020 -5.519270 -13.000001 +v 127.101349 -5.579672 -13.034075 +v 126.866829 -5.635957 -13.133976 +v 126.665443 -5.684289 -13.292894 +v 126.510910 -5.721376 -13.500001 +v 126.413765 -5.744690 -13.741182 +v 126.000000 5.916004 -12.999999 +v 125.741180 5.916004 -13.034073 +v 126.150955 2.072721 -13.000000 +v 126.129601 -0.257763 -13.034074 +v 126.602890 -1.746882 -13.000000 +v 125.500000 5.916004 -13.133974 +v 125.890320 -0.287991 -13.133975 +v 125.684853 -0.313948 -13.292893 +v 125.527184 -0.333866 -13.500000 +v 125.428070 -0.346387 -13.741181 +v 125.292892 5.916004 -13.292892 +v 125.133972 5.916004 -13.499999 +v 125.034073 5.916004 -13.741180 +v 126.000000 20.000002 -12.999997 +v 125.741180 20.000002 -13.034071 +v 125.500000 20.000002 -13.133972 +v 125.292892 20.000002 -13.292891 +v 125.133972 20.000002 -13.499997 +v 125.034073 20.000002 -13.741179 +v 125.000000 20.000002 -13.999997 +v 105.938271 109.965538 -30.999983 +v 103.842422 112.959908 -30.999981 +v 102.532974 116.372261 -30.999981 +v 102.087685 120.000008 -30.999981 +v 102.532974 123.627754 -30.999979 +v 103.842422 127.040108 -30.999979 +v 105.938271 130.034470 -30.999979 +v 160.000000 190.103058 -30.999969 +v 79.031021 109.965538 -30.999983 +v 76.935173 112.959908 -30.999981 +v 75.625732 116.372261 -30.999981 +v 75.180435 120.000008 -30.999981 +v 75.625732 123.627754 -30.999979 +v 76.935173 127.040108 -30.999979 +v 79.031021 130.034470 -30.999979 +v 180.000000 20.000006 -30.999996 +v 160.000000 20.000006 -30.999996 +v 160.000000 49.896946 -30.999992 +v 177.244446 211.941147 -4.999966 +v 177.500000 210.000000 -4.999966 +v 177.244446 208.058853 -4.999966 +v 176.495193 206.250000 -4.999967 +v 175.303299 204.696701 -4.999967 +v 173.750000 203.504807 -4.999967 +v 171.941147 202.755554 -4.999967 +v 170.000000 202.500000 -4.999967 +v 168.058853 202.755554 -4.999967 +v 166.250000 203.504807 -4.999967 +v 164.696701 204.696701 -4.999967 +v 163.504807 206.250000 -4.999967 +v 162.755554 208.058853 -4.999966 +v 162.500000 210.000000 -4.999966 +v 162.755554 211.941147 -4.999966 +v 163.504807 213.750000 -4.999965 +v 164.696701 215.303299 -4.999965 +v 166.250000 216.495193 -4.999965 +v 168.058853 217.244446 -4.999965 +v 170.000000 217.500000 -4.999965 +v 171.941147 217.244446 -4.999965 +v 173.750000 216.495193 -4.999965 +v 175.303299 215.303299 -4.999965 +v 176.495193 213.750000 -4.999965 +v 9.000000 260.000000 0.000042 +v 9.000000 260.000000 -4.999958 +v 6.670629 259.693329 0.000042 +v 6.670629 259.693329 -4.999958 +v 4.500000 258.794220 0.000042 +v 4.500000 258.794220 -4.999958 +v 2.636039 257.363953 0.000042 +v 2.636039 257.363953 -4.999958 +v 1.205771 255.500000 0.000042 +v 1.205771 255.500000 -4.999959 +v 0.306668 253.329376 0.000041 +v 0.306668 253.329376 -4.999959 +v 0.000000 251.000000 0.000041 +v 0.000000 251.000000 -4.999959 +v 0.000000 9.000001 -4.999999 +v 0.000000 9.000000 0.000001 +v 261.000000 0.000001 -5.000000 +v 270.000000 9.000001 -4.999999 +v 9.000000 0.000001 -5.000000 +v 270.000000 251.000000 -4.999959 +v 261.000000 260.000000 -4.999958 +v 263.329376 259.693329 -4.999958 +v 265.500000 258.794220 -4.999958 +v 267.363953 257.363953 -4.999958 +v 268.794220 255.500000 -4.999959 +v 269.693329 253.329376 -4.999959 +v 269.693329 6.670630 -4.999999 +v 268.794220 4.500001 -4.999999 +v 267.363953 2.636040 -5.000000 +v 265.500000 1.205772 -5.000000 +v 263.329376 0.306669 -5.000000 +v 6.670629 0.306669 -5.000000 +v 4.500000 1.205772 -5.000000 +v 2.636039 2.636040 -5.000000 +v 1.205771 4.500001 -4.999999 +v 0.306668 6.670630 -4.999999 +v 270.000000 251.000000 0.000041 +v 269.693329 253.329376 0.000041 +v 268.794220 255.500000 0.000042 +v 267.363953 257.363953 0.000042 +v 265.500000 258.794220 0.000042 +v 263.329376 259.693329 0.000042 +v 261.000000 260.000000 0.000042 +v 270.000000 9.000000 0.000001 +v 261.000000 0.000000 0.000000 +v 263.329376 0.306668 0.000000 +v 265.500000 1.205771 0.000000 +v 267.363953 2.636039 0.000000 +v 268.794220 4.500000 0.000001 +v 269.693329 6.670629 0.000001 +v 0.306668 6.670629 0.000001 +v 1.205771 4.500000 0.000001 +v 2.636039 2.636039 0.000000 +v 4.500000 1.205771 0.000000 +v 6.670629 0.306668 0.000000 +v 9.000000 0.000000 0.000000 +vt 0.217339 0.786783 +vt 0.192612 0.786783 +vt 0.217339 0.781403 +vt 0.192612 0.781403 +vt 0.217339 0.776024 +vt 0.192612 0.776024 +vt 0.217339 0.770644 +vt 0.192612 0.770644 +vt 0.217339 0.765265 +vt 0.192612 0.765265 +vt 0.217340 0.759886 +vt 0.192612 0.759886 +vt 0.217340 0.754507 +vt 0.192612 0.754507 +vt 0.217340 0.749127 +vt 0.192612 0.749127 +vt 0.217340 0.743748 +vt 0.192612 0.743748 +vt 0.217340 0.738368 +vt 0.192612 0.738368 +vt 0.217340 0.732989 +vt 0.192612 0.732989 +vt 0.217340 0.727610 +vt 0.192612 0.727610 +vt 0.217340 0.722231 +vt 0.192612 0.722231 +vt 0.217340 0.716851 +vt 0.192612 0.716851 +vt 0.217340 0.711472 +vt 0.192612 0.711472 +vt 0.217339 0.840576 +vt 0.192612 0.840576 +vt 0.217339 0.835197 +vt 0.192612 0.835197 +vt 0.217339 0.829817 +vt 0.192612 0.829817 +vt 0.217339 0.824438 +vt 0.192612 0.824438 +vt 0.217339 0.819059 +vt 0.192612 0.819059 +vt 0.217339 0.813680 +vt 0.192612 0.813680 +vt 0.217339 0.808300 +vt 0.192612 0.808300 +vt 0.217339 0.802921 +vt 0.192612 0.802921 +vt 0.217339 0.797541 +vt 0.192612 0.797541 +vt 0.217339 0.792162 +vt 0.192612 0.792162 +vt 0.217340 0.651321 +vt 0.192612 0.651321 +vt 0.217340 0.645942 +vt 0.192612 0.645942 +vt 0.217340 0.640562 +vt 0.192612 0.640562 +vt 0.217340 0.635183 +vt 0.192612 0.635183 +vt 0.217340 0.629804 +vt 0.192612 0.629804 +vt 0.217340 0.624424 +vt 0.192612 0.624424 +vt 0.217340 0.619045 +vt 0.192612 0.619045 +vt 0.217340 0.613666 +vt 0.192612 0.613666 +vt 0.217340 0.608286 +vt 0.192612 0.608286 +vt 0.217340 0.602907 +vt 0.192612 0.602907 +vt 0.217340 0.597528 +vt 0.192612 0.597528 +vt 0.217340 0.592148 +vt 0.192612 0.592148 +vt 0.217340 0.586769 +vt 0.192612 0.586769 +vt 0.217340 0.581390 +vt 0.192612 0.581390 +vt 0.217340 0.710494 +vt 0.192612 0.710494 +vt 0.217340 0.705115 +vt 0.192612 0.705115 +vt 0.217340 0.699735 +vt 0.192612 0.699735 +vt 0.217340 0.694356 +vt 0.192612 0.694356 +vt 0.217340 0.688976 +vt 0.192612 0.688976 +vt 0.217340 0.683597 +vt 0.192612 0.683597 +vt 0.217340 0.678218 +vt 0.192612 0.678218 +vt 0.217340 0.672839 +vt 0.192612 0.672839 +vt 0.217340 0.667459 +vt 0.192612 0.667459 +vt 0.217340 0.662080 +vt 0.192612 0.662080 +vt 0.217340 0.656700 +vt 0.192612 0.656700 +vt 0.310442 0.065987 +vt 0.310752 0.060445 +vt 0.314203 0.028452 +vt 0.310267 0.054869 +vt 0.308997 0.049687 +vt 0.306986 0.045373 +vt 0.304377 0.042377 +vt 0.301405 0.040977 +vt 0.298319 0.041245 +vt 0.282384 0.038962 +vt 0.295107 0.042958 +vt 0.292223 0.046072 +vt 0.289826 0.050257 +vt 0.287988 0.055189 +vt 0.286762 0.060657 +vt 0.286225 0.066429 +vt 0.282821 0.121322 +vt 0.211025 0.281065 +vt 0.286525 0.072171 +vt 0.287521 0.077556 +vt 0.289128 0.082241 +vt 0.291223 0.085947 +vt 0.293653 0.088477 +vt 0.296259 0.089725 +vt 0.298869 0.089639 +vt 0.301334 0.088262 +vt 0.283108 0.493049 +vt 0.301326 0.527104 +vt 0.298968 0.525452 +vt 0.304768 0.084951 +vt 0.304459 0.530106 +vt 0.307736 0.078943 +vt 0.307427 0.535493 +vt 0.310186 0.544468 +vt 0.314203 0.580411 +vt 0.199690 0.312837 +vt 0.200026 0.307700 +vt 0.205875 0.307678 +vt 0.199681 0.302565 +vt 0.206469 0.298068 +vt 0.198674 0.297786 +vt 0.208221 0.289015 +vt 0.197076 0.293693 +vt 0.194997 0.290567 +vt 0.192577 0.288625 +vt 0.189985 0.288003 +vt 0.175077 0.281428 +vt 0.187392 0.288684 +vt 0.184981 0.290679 +vt 0.182916 0.293849 +vt 0.181340 0.297968 +vt 0.180356 0.302748 +vt 0.172359 0.289391 +vt 0.180025 0.307871 +vt 0.170675 0.298405 +vt 0.170119 0.307958 +vt 0.170720 0.317498 +vt 0.172445 0.326473 +vt 0.180374 0.312988 +vt 0.175198 0.334374 +vt 0.181375 0.317749 +vt 0.182963 0.321839 +vt 0.185035 0.324973 +vt 0.187447 0.326929 +vt 0.190035 0.327570 +vt 0.192625 0.326897 +vt 0.211020 0.334174 +vt 0.283180 0.574246 +vt 0.195037 0.324911 +vt 0.197106 0.321751 +vt 0.208223 0.326280 +vt 0.198694 0.317630 +vt 0.206471 0.317271 +vt 0.286760 0.547097 +vt 0.287296 0.552594 +vt 0.298640 0.570034 +vt 0.301646 0.569879 +vt 0.304497 0.568138 +vt 0.310028 0.555298 +vt 0.310454 0.549755 +vt 0.296438 0.525141 +vt 0.293901 0.526169 +vt 0.291534 0.528492 +vt 0.289505 0.531992 +vt 0.287961 0.536460 +vt 0.287021 0.541609 +vt 0.288510 0.557767 +vt 0.290333 0.562366 +vt 0.292706 0.566149 +vt 0.295534 0.568798 +vt 0.306967 0.564918 +vt 0.308852 0.560501 +vt 0.175292 0.043640 +vt 0.173407 0.040307 +vt 0.174440 0.044040 +vt 0.172989 0.039817 +vt 0.173592 0.044475 +vt 0.172549 0.039414 +vt 0.172747 0.044945 +vt 0.172088 0.039101 +vt 0.171907 0.045452 +vt 0.171070 0.045990 +vt 0.171605 0.038886 +vt 0.170238 0.046564 +vt 0.171102 0.038770 +vt 0.169412 0.047170 +vt 0.170581 0.038762 +vt 0.168592 0.047806 +vt 0.174435 0.038840 +vt 0.174284 0.038936 +vt 0.173976 0.039115 +vt 0.173907 0.039122 +vt 0.173613 0.039341 +vt 0.173565 0.039339 +vt 0.173298 0.039531 +vt 0.173249 0.039525 +vt 0.173104 0.039767 +vt 0.173013 0.039739 +vt 0.173059 0.039970 +vt 0.172846 0.039862 +vt 0.172630 0.039755 +vt 0.172411 0.039653 +vt 0.172189 0.039558 +vt 0.171967 0.039472 +vt 0.171746 0.039400 +vt 0.174133 0.039001 +vt 0.173837 0.039129 +vt 0.173518 0.039339 +vt 0.173199 0.039520 +vt 0.172921 0.039713 +vt 0.173983 0.039034 +vt 0.173767 0.039136 +vt 0.173470 0.039339 +vt 0.173149 0.039516 +vt 0.172829 0.039689 +vt 0.173833 0.039037 +vt 0.173697 0.039143 +vt 0.173423 0.039341 +vt 0.173098 0.039513 +vt 0.172738 0.039669 +vt 0.173686 0.039008 +vt 0.173630 0.039150 +vt 0.173377 0.039345 +vt 0.173048 0.039511 +vt 0.172649 0.039655 +vt 0.173542 0.038946 +vt 0.173566 0.039157 +vt 0.173332 0.039351 +vt 0.172999 0.039513 +vt 0.172563 0.039649 +vt 0.175083 0.038334 +vt 0.175113 0.038199 +vt 0.175134 0.038064 +vt 0.175147 0.037928 +vt 0.175152 0.037794 +vt 0.175149 0.037662 +vt 0.175137 0.037533 +vt 0.175904 0.036019 +vt 0.175867 0.036155 +vt 0.175858 0.036378 +vt 0.175829 0.036442 +vt 0.175764 0.036670 +vt 0.175751 0.036728 +vt 0.175603 0.036913 +vt 0.175599 0.036954 +vt 0.175457 0.037347 +vt 0.175454 0.037344 +vt 0.175282 0.037800 +vt 0.175284 0.037754 +vt 0.175285 0.037708 +vt 0.175287 0.037663 +vt 0.175288 0.037619 +vt 0.175290 0.037577 +vt 0.175291 0.037537 +vt 0.175825 0.036280 +vt 0.175801 0.036506 +vt 0.175739 0.036788 +vt 0.175594 0.036993 +vt 0.175450 0.037342 +vt 0.175776 0.036391 +vt 0.175773 0.036570 +vt 0.175728 0.036848 +vt 0.175590 0.037031 +vt 0.175447 0.037339 +vt 0.175721 0.036490 +vt 0.175746 0.036633 +vt 0.175719 0.036910 +vt 0.175585 0.037069 +vt 0.175444 0.037337 +vt 0.175662 0.036573 +vt 0.175720 0.036694 +vt 0.175710 0.036975 +vt 0.175581 0.037105 +vt 0.175442 0.037336 +vt 0.175597 0.036640 +vt 0.175695 0.036754 +vt 0.175704 0.037042 +vt 0.175578 0.037142 +vt 0.175441 0.037335 +vt 0.175631 0.052174 +vt 0.175940 0.052558 +vt 0.176265 0.052875 +vt 0.176603 0.053124 +vt 0.176954 0.053302 +vt 0.177316 0.053406 +vt 0.177687 0.053433 +vt 0.176337 0.053465 +vt 0.176392 0.053463 +vt 0.176420 0.053309 +vt 0.176443 0.053323 +vt 0.176451 0.053149 +vt 0.176470 0.053157 +vt 0.176442 0.052986 +vt 0.176470 0.052993 +vt 0.176363 0.052804 +vt 0.176423 0.052820 +vt 0.176154 0.052586 +vt 0.176303 0.052664 +vt 0.176455 0.052742 +vt 0.176609 0.052818 +vt 0.176765 0.052890 +vt 0.176921 0.052956 +vt 0.177076 0.053015 +vt 0.176446 0.053474 +vt 0.176467 0.053337 +vt 0.176489 0.053166 +vt 0.176499 0.053001 +vt 0.176485 0.052836 +vt 0.176499 0.053496 +vt 0.176490 0.053352 +vt 0.176508 0.053175 +vt 0.176528 0.053008 +vt 0.176546 0.052851 +vt 0.176551 0.053531 +vt 0.176513 0.053367 +vt 0.176527 0.053183 +vt 0.176556 0.053016 +vt 0.176607 0.052864 +vt 0.176601 0.053577 +vt 0.176535 0.053383 +vt 0.176546 0.053191 +vt 0.176585 0.053023 +vt 0.176667 0.052875 +vt 0.176649 0.053637 +vt 0.176556 0.053398 +vt 0.176563 0.053199 +vt 0.176613 0.053029 +vt 0.176724 0.052881 +vt 0.176480 0.055043 +vt 0.176461 0.055290 +vt 0.176455 0.055536 +vt 0.176459 0.055777 +vt 0.176475 0.056014 +vt 0.176504 0.056245 +vt 0.176544 0.056467 +vt 0.177046 0.057279 +vt 0.177028 0.058060 +vt 0.176798 0.057464 +vt 0.176752 0.057846 +vt 0.176636 0.057165 +vt 0.176605 0.057352 +vt 0.176539 0.056739 +vt 0.176529 0.056854 +vt 0.176510 0.056251 +vt 0.176506 0.056348 +vt 0.176493 0.055716 +vt 0.176494 0.055837 +vt 0.176495 0.055959 +vt 0.176497 0.056081 +vt 0.176498 0.056201 +vt 0.176500 0.056319 +vt 0.176502 0.056432 +vt 0.176984 0.058837 +vt 0.176704 0.058231 +vt 0.176573 0.057539 +vt 0.176518 0.056970 +vt 0.176503 0.056445 +vt 0.176915 0.059612 +vt 0.176655 0.058618 +vt 0.176539 0.057725 +vt 0.176506 0.057085 +vt 0.176499 0.056541 +vt 0.176820 0.060384 +vt 0.176603 0.059007 +vt 0.176504 0.057910 +vt 0.176494 0.057200 +vt 0.176494 0.056637 +vt 0.176699 0.061154 +vt 0.176547 0.059393 +vt 0.176467 0.058090 +vt 0.176480 0.057313 +vt 0.176489 0.056732 +vt 0.176550 0.061923 +vt 0.176489 0.059775 +vt 0.176427 0.058263 +vt 0.176466 0.057423 +vt 0.176482 0.056825 +vt 0.178681 0.057080 +vt 0.178334 0.058660 +vt 0.177925 0.060177 +vt 0.177454 0.061623 +vt 0.176925 0.062989 +vt 0.176339 0.064268 +vt 0.175698 0.065452 +vt 0.177137 0.049396 +vt 0.176974 0.050249 +vt 0.176848 0.050984 +vt 0.176755 0.051615 +vt 0.176858 0.052209 +vt 0.176809 0.052743 +vt 0.176795 0.053207 +vt 0.176816 0.053614 +vt 0.176638 0.053012 +vt 0.176651 0.052923 +vt 0.176668 0.052824 +vt 0.176686 0.052712 +vt 0.176730 0.052612 +vt 0.176752 0.052462 +vt 0.176776 0.052299 +vt 0.176806 0.052126 +vt 0.178518 0.034772 +vt 0.178089 0.034727 +vt 0.177712 0.034685 +vt 0.177389 0.034659 +vt 0.176633 0.035719 +vt 0.175970 0.036494 +vt 0.175390 0.037434 +vt 0.174886 0.038527 +vt 0.175195 0.038182 +vt 0.174817 0.038616 +vt 0.174498 0.039157 +vt 0.174239 0.039800 +vt 0.173892 0.040663 +vt 0.173719 0.041452 +vt 0.173607 0.042355 +vt 0.173563 0.043373 +vt 0.178028 0.051056 +vt 0.175766 0.044710 +vt 0.269988 0.972405 +vt 0.298859 0.972541 +vt 0.270011 0.973256 +vt 0.298824 0.973474 +vt 0.270023 0.974113 +vt 0.298806 0.974415 +vt 0.270022 0.974977 +vt 0.298803 0.975364 +vt 0.270008 0.975847 +vt 0.298818 0.976322 +vt 0.269976 0.976724 +vt 0.298845 0.977288 +vt 0.269933 0.977610 +vt 0.298893 0.978260 +vt 0.254640 0.950521 +vt 0.255470 0.950291 +vt 0.257205 0.959361 +vt 0.257602 0.958884 +vt 0.259129 0.964581 +vt 0.259407 0.964150 +vt 0.261118 0.969246 +vt 0.261357 0.968753 +vt 0.263611 0.973131 +vt 0.263797 0.972535 +vt 0.266526 0.975864 +vt 0.266652 0.975164 +vt 0.266775 0.974473 +vt 0.266892 0.973783 +vt 0.267004 0.973095 +vt 0.267114 0.972409 +vt 0.267222 0.971724 +vt 0.256292 0.950169 +vt 0.258007 0.958445 +vt 0.259687 0.963728 +vt 0.261594 0.968267 +vt 0.263982 0.971949 +vt 0.257100 0.950145 +vt 0.258415 0.958026 +vt 0.259966 0.963301 +vt 0.261826 0.967778 +vt 0.264160 0.971363 +vt 0.257896 0.950207 +vt 0.258827 0.957628 +vt 0.260245 0.962876 +vt 0.262055 0.967291 +vt 0.264336 0.970781 +vt 0.258680 0.950372 +vt 0.259241 0.957250 +vt 0.260525 0.962452 +vt 0.262284 0.966805 +vt 0.264511 0.970200 +vt 0.259450 0.950643 +vt 0.259654 0.956888 +vt 0.260806 0.962030 +vt 0.262511 0.966319 +vt 0.264685 0.969620 +vt 0.254640 0.815252 +vt 0.255472 0.815496 +vt 0.256291 0.815635 +vt 0.257098 0.815668 +vt 0.257891 0.815585 +vt 0.258671 0.815399 +vt 0.259436 0.815110 +vt 0.269912 0.788684 +vt 0.269955 0.789560 +vt 0.266555 0.790389 +vt 0.266671 0.791083 +vt 0.263659 0.793034 +vt 0.263835 0.793633 +vt 0.261171 0.796827 +vt 0.261400 0.797329 +vt 0.259179 0.801394 +vt 0.259447 0.801835 +vt 0.257242 0.806497 +vt 0.257630 0.806993 +vt 0.258024 0.807461 +vt 0.258427 0.807890 +vt 0.258833 0.808292 +vt 0.259242 0.808673 +vt 0.259649 0.809037 +vt 0.269981 0.790434 +vt 0.266781 0.791775 +vt 0.264005 0.794228 +vt 0.261624 0.797829 +vt 0.259715 0.802277 +vt 0.269997 0.791302 +vt 0.266892 0.792461 +vt 0.264177 0.794813 +vt 0.261849 0.798320 +vt 0.259987 0.802711 +vt 0.270000 0.792165 +vt 0.267001 0.793143 +vt 0.264349 0.795393 +vt 0.262073 0.798808 +vt 0.260261 0.803139 +vt 0.269989 0.793022 +vt 0.267109 0.793824 +vt 0.264519 0.795971 +vt 0.262296 0.799294 +vt 0.260536 0.803565 +vt 0.269966 0.793873 +vt 0.267215 0.794504 +vt 0.264689 0.796547 +vt 0.262519 0.799779 +vt 0.260812 0.803989 +vt 0.298872 0.788102 +vt 0.298824 0.789084 +vt 0.298791 0.790053 +vt 0.298778 0.791014 +vt 0.298782 0.791964 +vt 0.298802 0.792906 +vt 0.298837 0.793838 +vt 0.314203 0.815751 +vt 0.313372 0.815981 +vt 0.311639 0.806911 +vt 0.311243 0.807387 +vt 0.309719 0.801694 +vt 0.309442 0.802122 +vt 0.307738 0.797035 +vt 0.307499 0.797525 +vt 0.305272 0.793144 +vt 0.305082 0.793732 +vt 0.302398 0.790274 +vt 0.302258 0.790984 +vt 0.302120 0.791688 +vt 0.301992 0.792393 +vt 0.301868 0.793097 +vt 0.301748 0.793800 +vt 0.301630 0.794502 +vt 0.312550 0.816103 +vt 0.310838 0.807826 +vt 0.309162 0.802544 +vt 0.307262 0.798007 +vt 0.304893 0.794313 +vt 0.311741 0.816127 +vt 0.310429 0.808245 +vt 0.308883 0.802969 +vt 0.307030 0.798492 +vt 0.304710 0.794894 +vt 0.310944 0.816064 +vt 0.310017 0.808641 +vt 0.308604 0.803392 +vt 0.306800 0.798975 +vt 0.304530 0.795473 +vt 0.310160 0.815898 +vt 0.309604 0.809018 +vt 0.308324 0.803815 +vt 0.306571 0.799459 +vt 0.304351 0.796050 +vt 0.309390 0.815627 +vt 0.309190 0.809379 +vt 0.308043 0.804236 +vt 0.306343 0.799941 +vt 0.304173 0.796626 +vt 0.314203 0.951134 +vt 0.313370 0.950890 +vt 0.312551 0.950751 +vt 0.311743 0.950718 +vt 0.310949 0.950802 +vt 0.310169 0.950989 +vt 0.309404 0.951279 +vt 0.309195 0.957353 +vt 0.309603 0.957717 +vt 0.308037 0.962403 +vt 0.308313 0.962825 +vt 0.306334 0.966618 +vt 0.306558 0.967101 +vt 0.304169 0.969863 +vt 0.304343 0.970437 +vt 0.301637 0.971928 +vt 0.301753 0.972625 +vt 0.301871 0.973322 +vt 0.301992 0.974020 +vt 0.302115 0.974720 +vt 0.302239 0.975425 +vt 0.302370 0.976130 +vt 0.310011 0.958096 +vt 0.308588 0.963250 +vt 0.306782 0.967583 +vt 0.304518 0.971011 +vt 0.310417 0.958498 +vt 0.308861 0.963677 +vt 0.307006 0.968067 +vt 0.304693 0.971587 +vt 0.310820 0.958926 +vt 0.309133 0.964109 +vt 0.307232 0.968555 +vt 0.304869 0.972167 +vt 0.311214 0.959393 +vt 0.309401 0.964549 +vt 0.307456 0.969051 +vt 0.305044 0.972756 +vt 0.311602 0.959889 +vt 0.309669 0.964989 +vt 0.307686 0.969549 +vt 0.305224 0.973349 +vt 0.026456 0.339805 +vt 0.027842 0.341046 +vt 0.026381 0.339822 +vt 0.027777 0.340745 +vt 0.026276 0.339803 +vt 0.027703 0.340452 +vt 0.026173 0.339775 +vt 0.027617 0.340174 +vt 0.026072 0.339739 +vt 0.027517 0.339913 +vt 0.025973 0.339695 +vt 0.027396 0.339667 +vt 0.025902 0.339704 +vt 0.027214 0.339403 +vt 0.024967 0.340828 +vt 0.024501 0.341159 +vt 0.024829 0.341238 +vt 0.024644 0.341353 +vt 0.024768 0.341586 +vt 0.024889 0.341446 +vt 0.024873 0.341854 +vt 0.024962 0.341638 +vt 0.024955 0.342154 +vt 0.025046 0.341808 +vt 0.025014 0.342482 +vt 0.025139 0.341953 +vt 0.025047 0.342836 +vt 0.025414 0.341689 +vt 0.025934 0.340752 +vt 0.025432 0.340238 +vt 0.022668 0.342089 +vt 0.022581 0.342214 +vt 0.022519 0.342357 +vt 0.022479 0.342510 +vt 0.022460 0.342668 +vt 0.022464 0.342826 +vt 0.022494 0.342975 +vt 0.020877 0.345119 +vt 0.020900 0.344600 +vt 0.021248 0.344299 +vt 0.021322 0.343997 +vt 0.021564 0.343801 +vt 0.021645 0.343593 +vt 0.021853 0.343426 +vt 0.021948 0.343251 +vt 0.022130 0.343071 +vt 0.022244 0.342888 +vt 0.022404 0.342665 +vt 0.022550 0.342469 +vt 0.022529 0.342545 +vt 0.022507 0.342630 +vt 0.022486 0.342716 +vt 0.022466 0.342795 +vt 0.022335 0.342836 +vt 0.022219 0.342887 +vt 0.022111 0.342918 +vt 0.021962 0.343035 +vt 0.021892 0.342996 +vt 0.021716 0.343108 +vt 0.021689 0.342971 +vt 0.021491 0.342993 +vt 0.021517 0.342715 +vt 0.021274 0.342754 +vt 0.021432 0.342378 +vt 0.020955 0.344098 +vt 0.021362 0.343750 +vt 0.021663 0.343474 +vt 0.021952 0.343199 +vt 0.022239 0.342890 +vt 0.021036 0.343621 +vt 0.021404 0.343500 +vt 0.021681 0.343353 +vt 0.021956 0.343145 +vt 0.022232 0.342891 +vt 0.021142 0.343172 +vt 0.021447 0.343247 +vt 0.021699 0.343230 +vt 0.021959 0.343091 +vt 0.022226 0.342890 +vt 0.018793 0.331271 +vt 0.018547 0.331242 +vt 0.018298 0.331288 +vt 0.018052 0.331399 +vt 0.017813 0.331576 +vt 0.017581 0.331821 +vt 0.017364 0.332144 +vt 0.018614 0.330744 +vt 0.018790 0.330532 +vt 0.018694 0.330613 +vt 0.018722 0.330665 +vt 0.018645 0.330753 +vt 0.018624 0.330677 +vt 0.018563 0.330812 +vt 0.018550 0.330730 +vt 0.018479 0.330844 +vt 0.018474 0.330767 +vt 0.018394 0.330846 +vt 0.018398 0.330788 +vt 0.018310 0.330799 +vt 0.018404 0.330909 +vt 0.018427 0.330938 +vt 0.018378 0.331106 +vt 0.018362 0.331179 +vt 0.018296 0.331329 +vt 0.018243 0.331440 +vt 0.018154 0.331576 +vt 0.018046 0.331723 +vt 0.017913 0.331861 +vt 0.018136 0.331631 +vt 0.018282 0.331395 +vt 0.018384 0.331149 +vt 0.018457 0.330913 +vt 0.018230 0.331548 +vt 0.018323 0.331351 +vt 0.018408 0.331119 +vt 0.018488 0.330886 +vt 0.018325 0.331474 +vt 0.018363 0.331309 +vt 0.018432 0.331091 +vt 0.018520 0.330859 +vt 0.018420 0.331406 +vt 0.018404 0.331269 +vt 0.018456 0.331063 +vt 0.018552 0.330831 +vt 0.018528 0.331344 +vt 0.018444 0.331277 +vt 0.018449 0.331131 +vt 0.018508 0.330946 +vt 0.019349 0.329300 +vt 0.019279 0.329219 +vt 0.019169 0.329097 +vt 0.019058 0.328975 +vt 0.018946 0.328853 +vt 0.018835 0.328733 +vt 0.018744 0.328639 +vt 0.019877 0.327636 +vt 0.019800 0.327481 +vt 0.019729 0.328168 +vt 0.019544 0.328733 +vt 0.019685 0.327282 +vt 0.019570 0.327082 +vt 0.019456 0.326881 +vt 0.019342 0.326678 +vt 0.018946 0.327978 +vt 0.019247 0.326500 +vt 0.019117 0.327272 +vt 0.020360 0.327136 +vt 0.020313 0.326856 +vt 0.020274 0.326611 +vt 0.020226 0.326377 +vt 0.020167 0.326155 +vt 0.020099 0.325943 +vt 0.020026 0.325739 +vt 0.019841 0.326729 +vt 0.019535 0.327301 +vt 0.019244 0.327915 +vt 0.018987 0.328525 +vt 0.018600 0.329583 +vt 0.018641 0.329712 +vt 0.018590 0.330012 +vt 0.018479 0.330350 +vt 0.018324 0.330703 +vt 0.018108 0.331062 +vt 0.017781 0.331427 +vt 0.017233 0.331831 +vt 0.018053 0.348729 +vt 0.019271 0.347684 +vt 0.020227 0.346853 +vt 0.021030 0.346108 +vt 0.021724 0.345403 +vt 0.022325 0.344756 +vt 0.022785 0.344333 +vt 0.022929 0.344353 +vt 0.024541 0.343541 +vt 0.025036 0.342868 +vt 0.025544 0.342145 +vt 0.025986 0.341420 +vt 0.027103 0.340513 +vt 0.025977 0.341144 +vt 0.026926 0.340129 +vt 0.025933 0.340772 +vt 0.026713 0.339902 +vt 0.025893 0.340397 +vt 0.026483 0.339742 +vt 0.025858 0.340019 +vt 0.026237 0.339638 +vt 0.025828 0.339637 +vt 0.025954 0.339602 +vt 0.025828 0.339329 +vt 0.025532 0.339720 +vt 0.023548 0.342878 +vt 0.023697 0.342927 +vt 0.024327 0.341707 +vt 0.025067 0.340526 +vt 0.023880 0.343052 +vt 0.024060 0.343186 +vt 0.024238 0.343329 +vt 0.024414 0.343479 +vt 0.023690 0.342360 +vt 0.023349 0.343003 +vt 0.023139 0.343311 +vt 0.022995 0.343573 +vt 0.022905 0.343831 +vt 0.022872 0.344088 +vt 0.019712 0.347915 +vt 0.019510 0.348188 +vt 0.020179 0.347775 +vt 0.020106 0.347687 +vt 0.020805 0.347336 +vt 0.020863 0.347091 +vt 0.021481 0.346679 +vt 0.021631 0.346293 +vt 0.022154 0.345819 +vt 0.022364 0.345285 +vt 0.022799 0.344719 +vt 0.023069 0.343984 +vt 0.023373 0.343311 +vt 0.023280 0.343161 +vt 0.022988 0.344032 +vt 0.022903 0.344121 +vt 0.022817 0.344227 +vt 0.022728 0.344331 +vt 0.022825 0.344084 +vt 0.022071 0.345151 +vt 0.021342 0.345958 +vt 0.020501 0.346768 +vt 0.019523 0.347616 +vt 0.018388 0.348761 +vt 0.019269 0.348417 +vt 0.019959 0.347666 +vt 0.020768 0.346998 +vt 0.021554 0.346197 +vt 0.022287 0.345237 +vt 0.019000 0.348591 +vt 0.019813 0.347649 +vt 0.020677 0.346916 +vt 0.021481 0.346111 +vt 0.022212 0.345202 +vt 0.018706 0.348707 +vt 0.019667 0.347633 +vt 0.020587 0.346840 +vt 0.021410 0.346032 +vt 0.022141 0.345174 +vt 0.018801 0.331201 +vt 0.018534 0.331105 +vt 0.018263 0.331099 +vt 0.017994 0.331170 +vt 0.017731 0.331315 +vt 0.017473 0.331533 +vt 0.018721 0.329759 +vt 0.018949 0.329339 +vt 0.018982 0.329456 +vt 0.019083 0.329409 +vt 0.019003 0.329585 +vt 0.018945 0.329537 +vt 0.018901 0.329679 +vt 0.018872 0.329602 +vt 0.018801 0.329722 +vt 0.018789 0.329646 +vt 0.018709 0.329723 +vt 0.018711 0.329681 +vt 0.018577 0.330074 +vt 0.018426 0.330484 +vt 0.018229 0.330898 +vt 0.017948 0.331302 +vt 0.018057 0.331239 +vt 0.018273 0.330865 +vt 0.018446 0.330455 +vt 0.018600 0.330038 +vt 0.018168 0.331181 +vt 0.018317 0.330831 +vt 0.018465 0.330426 +vt 0.018621 0.330001 +vt 0.018280 0.331129 +vt 0.018361 0.330797 +vt 0.018485 0.330395 +vt 0.018640 0.329962 +vt 0.018390 0.331083 +vt 0.018404 0.330764 +vt 0.018502 0.330364 +vt 0.018655 0.329920 +vt 0.018509 0.331076 +vt 0.018434 0.330838 +vt 0.018468 0.330522 +vt 0.018565 0.330157 +vt 0.019454 0.329185 +vt 0.018934 0.329352 +vt 0.019158 0.329384 +vt 0.018954 0.329220 +vt 0.019017 0.329548 +vt 0.018966 0.329075 +vt 0.018905 0.329647 +vt 0.018974 0.328932 +vt 0.018978 0.328789 +vt 0.018980 0.328649 +vt 0.020504 0.326826 +vt 0.020399 0.326838 +vt 0.019937 0.327626 +vt 0.019577 0.328038 +vt 0.019416 0.328433 +vt 0.020282 0.326826 +vt 0.019529 0.327961 +vt 0.019482 0.327884 +vt 0.019435 0.327805 +vt 0.019388 0.327725 +vt 0.020166 0.326807 +vt 0.020052 0.326781 +vt 0.019938 0.326749 +vt 0.020175 0.327047 +vt 0.020344 0.326695 +vt 0.020421 0.326544 +vt 0.020474 0.326435 +vt 0.020516 0.326332 +vt 0.020542 0.326233 +vt 0.020512 0.326171 +vt 0.217584 0.631713 +vt 0.233678 0.610235 +vt 0.269432 0.787124 +vt 0.287745 0.762686 +vt 0.238185 0.604720 +vt 0.290653 0.758580 +vt 0.242894 0.599928 +vt 0.293448 0.754172 +vt 0.296122 0.749474 +vt 0.247777 0.595889 +vt 0.311618 0.720772 +vt 0.312874 0.699527 +vt 0.312874 0.717826 +vt 0.313752 0.714376 +vt 0.314203 0.710612 +vt 0.314203 0.706741 +vt 0.313752 0.702977 +vt 0.275884 0.588655 +vt 0.266180 0.582335 +vt 0.267957 0.581459 +vt 0.269787 0.581390 +vt 0.271580 0.582129 +vt 0.273247 0.583642 +vt 0.274706 0.585854 +vt 0.041866 0.115036 +vt 0.043020 0.107791 +vt 0.048589 0.118325 +vt 0.049198 0.113228 +vt 0.044947 0.100979 +vt 0.050386 0.108695 +vt 0.052107 0.104882 +vt 0.047620 0.095047 +vt 0.054286 0.101950 +vt 0.050801 0.090152 +vt 0.054425 0.086726 +vt 0.056858 0.100058 +vt 0.058253 0.084831 +vt 0.059760 0.099306 +vt 0.142316 0.083872 +vt 0.139419 0.087089 +vt 0.014170 0.072258 +vt 0.015397 0.061413 +vt 0.022599 0.075285 +vt 0.023867 0.068264 +vt 0.017916 0.051130 +vt 0.025787 0.061644 +vt 0.028322 0.055753 +vt 0.021563 0.042091 +vt 0.031321 0.050777 +vt 0.026110 0.034835 +vt 0.031286 0.029810 +vt 0.034667 0.046999 +vt 0.036764 0.027343 +vt 0.038213 0.044551 +vt 0.029719 0.340077 +vt 0.022548 0.325778 +vt 0.040190 0.278081 +vt 0.166696 0.043968 +vt 0.166717 0.044600 +vt 0.166791 0.045205 +vt 0.166742 0.028933 +vt 0.166915 0.045771 +vt 0.167083 0.046291 +vt 0.167304 0.046774 +vt 0.167543 0.047172 +vt 0.167733 0.047462 +vt 0.041838 0.272141 +vt 0.014170 0.325778 +vt 0.180231 0.078961 +vt 0.035174 0.351683 +vt 0.175458 0.068806 +vt 0.175307 0.068385 +vt 0.175216 0.067903 +vt 0.175190 0.067386 +vt 0.175234 0.066840 +vt 0.175363 0.066272 +vt 0.020174 0.326147 +vt 0.020312 0.326838 +vt 0.020309 0.327038 +vt 0.022740 0.330459 +vt 0.020666 0.326018 +vt 0.020562 0.326316 +vt 0.020572 0.326213 +vt 0.020393 0.326598 +vt 0.026039 0.339139 +vt 0.027196 0.340158 +vt 0.027006 0.339657 +vt 0.027377 0.339494 +vt 0.026023 0.339515 +vt 0.026255 0.339595 +vt 0.026947 0.340044 +vt 0.027712 0.340443 +vt 0.198512 0.891009 +vt 0.198512 0.841554 +vt 0.201201 0.891009 +vt 0.201201 0.841554 +vt 0.203891 0.891009 +vt 0.203891 0.841554 +vt 0.206581 0.891009 +vt 0.206581 0.841554 +vt 0.209270 0.891009 +vt 0.209270 0.841554 +vt 0.211960 0.891009 +vt 0.211960 0.841554 +vt 0.214650 0.891009 +vt 0.214650 0.841554 +vt 0.217339 0.891009 +vt 0.217339 0.841554 +vt 0.254395 0.825757 +vt 0.229668 0.825757 +vt 0.254395 0.820378 +vt 0.229668 0.820378 +vt 0.254395 0.814999 +vt 0.229668 0.814999 +vt 0.254395 0.809619 +vt 0.229668 0.809619 +vt 0.254395 0.804240 +vt 0.229668 0.804240 +vt 0.254395 0.798861 +vt 0.229668 0.798861 +vt 0.254395 0.793481 +vt 0.229668 0.793481 +vt 0.254395 0.788102 +vt 0.229668 0.788102 +vt 0.171615 0.891009 +vt 0.171615 0.841554 +vt 0.174305 0.891009 +vt 0.174305 0.841554 +vt 0.176994 0.891009 +vt 0.176994 0.841554 +vt 0.179684 0.891009 +vt 0.179684 0.841554 +vt 0.182374 0.891009 +vt 0.182374 0.841554 +vt 0.185063 0.891009 +vt 0.185063 0.841554 +vt 0.187753 0.891009 +vt 0.187753 0.841554 +vt 0.190443 0.891009 +vt 0.190443 0.841554 +vt 0.193132 0.891009 +vt 0.193132 0.841554 +vt 0.195822 0.891009 +vt 0.195822 0.841554 +vt 0.496770 0.360900 +vt 0.494253 0.362711 +vt 0.496344 0.358534 +vt 0.494119 0.360392 +vt 0.495791 0.356126 +vt 0.493746 0.358519 +vt 0.495034 0.353878 +vt 0.493181 0.356986 +vt 0.494068 0.351903 +vt 0.492436 0.355749 +vt 0.492936 0.350248 +vt 0.491505 0.354803 +vt 0.491699 0.348859 +vt 0.490343 0.354114 +vt 0.375646 0.344190 +vt 0.490445 0.349374 +vt 0.375749 0.339450 +vt 0.377394 0.515644 +vt 0.378611 0.516112 +vt 0.357290 0.610646 +vt 0.379850 0.515952 +vt 0.362229 0.621886 +vt 0.381074 0.515145 +vt 0.382333 0.513486 +vt 0.470186 0.519810 +vt 0.383373 0.510938 +vt 0.469267 0.517200 +vt 0.383999 0.508203 +vt 0.468755 0.514421 +vt 0.428861 0.433622 +vt 0.468634 0.511614 +vt 0.430084 0.433434 +vt 0.468845 0.509246 +vt 0.431119 0.432698 +vt 0.469312 0.507246 +vt 0.431993 0.431501 +vt 0.470014 0.505563 +vt 0.432685 0.429903 +vt 0.470902 0.504307 +vt 0.433148 0.428013 +vt 0.471946 0.503517 +vt 0.433393 0.425798 +vt 0.473166 0.503208 +vt 0.433377 0.423282 +vt 0.384242 0.505321 +vt 0.427645 0.433165 +vt 0.384149 0.502829 +vt 0.426624 0.432259 +vt 0.383772 0.500666 +vt 0.425784 0.430905 +vt 0.383135 0.498782 +vt 0.425152 0.429177 +vt 0.382286 0.497301 +vt 0.424768 0.427198 +vt 0.381251 0.496267 +vt 0.424626 0.424929 +vt 0.380008 0.495691 +vt 0.371466 0.353005 +vt 0.378721 0.495724 +vt 0.377482 0.496417 +vt 0.376315 0.497744 +vt 0.375263 0.499714 +vt 0.374417 0.502331 +vt 0.373971 0.505379 +vt 0.374173 0.508446 +vt 0.374672 0.510996 +vt 0.375354 0.512991 +vt 0.376283 0.514578 +vt 0.433029 0.421049 +vt 0.432413 0.419104 +vt 0.431553 0.417492 +vt 0.430464 0.416272 +vt 0.429173 0.415545 +vt 0.427873 0.416118 +vt 0.426767 0.417159 +vt 0.425870 0.418598 +vt 0.425193 0.420395 +vt 0.424763 0.422519 +vt 0.472673 0.522685 +vt 0.473838 0.522978 +vt 0.494816 0.622129 +vt 0.474966 0.522686 +vt 0.499793 0.612545 +vt 0.476030 0.521845 +vt 0.476954 0.520495 +vt 0.477672 0.518727 +vt 0.478198 0.516501 +vt 0.478495 0.513775 +vt 0.478431 0.510693 +vt 0.477687 0.507988 +vt 0.476741 0.505878 +vt 0.475653 0.504364 +vt 0.474454 0.503460 +vt 0.471429 0.521684 +vt 0.499531 0.615319 +vt 0.498997 0.617527 +vt 0.498251 0.619267 +vt 0.497319 0.620592 +vt 0.496196 0.621528 +vt 0.360740 0.620948 +vt 0.359552 0.619689 +vt 0.358607 0.618064 +vt 0.357896 0.616064 +vt 0.357437 0.613638 +vt 0.371640 0.350548 +vt 0.372066 0.348566 +vt 0.372686 0.346978 +vt 0.373478 0.345740 +vt 0.374446 0.344828 +vt 0.496050 0.627989 +vt 0.497427 0.626828 +vt 0.498821 0.625423 +vt 0.500137 0.623588 +vt 0.501303 0.621257 +vt 0.502262 0.618493 +vt 0.503027 0.615451 +vt 0.494813 0.627609 +vt 0.362227 0.627365 +vt 0.354029 0.612867 +vt 0.354551 0.615931 +vt 0.355237 0.619056 +vt 0.356187 0.621983 +vt 0.357409 0.624569 +vt 0.358848 0.626749 +vt 0.360425 0.628591 +vt 0.374445 0.339142 +vt 0.373259 0.340271 +vt 0.372063 0.341617 +vt 0.370943 0.343334 +vt 0.369966 0.345474 +vt 0.369178 0.347978 +vt 0.368568 0.350711 +vt 0.354734 0.610083 +vt 0.368910 0.352442 +vt 0.496731 0.362491 +vt 0.502272 0.612325 +vt 0.549955 0.936679 +vt 0.546329 0.933675 +vt 0.553846 0.937703 +vt 0.543215 0.928896 +vt 0.540826 0.922668 +vt 0.539324 0.915416 +vt 0.538811 0.907633 +vt 0.989866 0.907633 +vt 0.989866 0.099076 +vt 0.538811 0.099076 +vt 0.974831 0.069007 +vt 0.553846 0.069007 +vt 0.539324 0.091294 +vt 0.540826 0.084041 +vt 0.543215 0.077814 +vt 0.546329 0.073035 +vt 0.549955 0.070031 +vt 0.978722 0.070032 +vt 0.982348 0.073035 +vt 0.985462 0.077814 +vt 0.987851 0.084041 +vt 0.989354 0.091294 +vt 0.974831 0.937702 +vt 0.989354 0.915416 +vt 0.987852 0.922668 +vt 0.985462 0.928895 +vt 0.982349 0.933674 +vt 0.978723 0.936678 +vn 0.9659 0.2588 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.9659 -0.2588 -0.0000 +vn 0.8660 -0.5000 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn 0.5000 -0.8660 -0.0000 +vn 0.2588 -0.9659 -0.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.2588 -0.9659 -0.0000 +vn -0.5000 -0.8660 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.8660 -0.5000 -0.0000 +vn -0.9659 -0.2588 -0.0000 +vn -1.0000 0.0000 -0.0000 +vn -0.9659 0.2588 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.2588 0.9659 0.0000 +vn -0.0000 1.0000 0.0000 +vn 0.2588 0.9659 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -0.9808 -0.1951 +vn 0.0000 -0.9659 -0.2588 +vn 0.0000 -0.9239 -0.3827 +vn -0.0000 -0.8660 -0.5000 +vn -0.0000 -0.8315 -0.5556 +vn -0.0000 -0.7071 -0.7071 +vn 0.0000 -0.5556 -0.8315 +vn -0.0000 -0.5000 -0.8660 +vn -0.0000 -0.3827 -0.9239 +vn -0.0000 -0.2588 -0.9659 +vn -0.0000 -0.1951 -0.9808 +vn -0.0000 0.0000 -1.0000 +vn -0.9659 0.0000 -0.2588 +vn -0.9330 -0.2500 -0.2589 +vn -0.8365 -0.4830 -0.2588 +vn -0.6830 -0.6830 -0.2588 +vn -0.4830 -0.8365 -0.2588 +vn -0.2500 -0.9330 -0.2588 +vn -0.2241 -0.8365 -0.5000 +vn -0.1830 -0.6830 -0.7071 +vn -0.1294 -0.4830 -0.8660 +vn -0.0670 -0.2500 -0.9659 +vn -0.8660 -0.0000 -0.5000 +vn -0.8365 -0.2241 -0.5000 +vn -0.7500 -0.4330 -0.5000 +vn -0.6124 -0.6124 -0.5000 +vn -0.4330 -0.7500 -0.5000 +vn -0.7071 -0.0000 -0.7071 +vn -0.6830 -0.1830 -0.7071 +vn -0.6124 -0.3536 -0.7071 +vn -0.5000 -0.5000 -0.7071 +vn -0.3536 -0.6124 -0.7071 +vn -0.5000 -0.0000 -0.8660 +vn -0.4830 -0.1294 -0.8660 +vn -0.4330 -0.2500 -0.8660 +vn -0.3536 -0.3536 -0.8660 +vn -0.2500 -0.4330 -0.8660 +vn -0.2588 0.0000 -0.9659 +vn -0.2500 -0.0670 -0.9659 +vn -0.2241 -0.1294 -0.9659 +vn -0.1830 -0.1830 -0.9659 +vn -0.1294 -0.2241 -0.9659 +vn 0.0000 0.9659 -0.2588 +vn -0.2500 0.9330 -0.2588 +vn -0.4830 0.8365 -0.2588 +vn -0.6830 0.6830 -0.2588 +vn -0.8365 0.4830 -0.2588 +vn -0.9330 0.2500 -0.2588 +vn -0.8365 0.2241 -0.5000 +vn -0.6830 0.1830 -0.7071 +vn -0.4830 0.1294 -0.8660 +vn -0.2500 0.0670 -0.9659 +vn -0.0000 0.8660 -0.5000 +vn -0.2241 0.8365 -0.5000 +vn -0.4330 0.7500 -0.5000 +vn -0.6124 0.6124 -0.5000 +vn -0.7500 0.4330 -0.5000 +vn -0.0000 0.7071 -0.7071 +vn -0.1830 0.6830 -0.7071 +vn -0.3536 0.6124 -0.7071 +vn -0.5000 0.5000 -0.7071 +vn -0.6124 0.3536 -0.7071 +vn -0.0000 0.5000 -0.8660 +vn -0.1294 0.4830 -0.8660 +vn -0.2500 0.4330 -0.8660 +vn -0.3535 0.3535 -0.8660 +vn -0.4330 0.2500 -0.8660 +vn 0.0000 0.2588 -0.9659 +vn -0.0670 0.2500 -0.9659 +vn -0.1294 0.2242 -0.9659 +vn -0.1830 0.1830 -0.9659 +vn -0.2241 0.1294 -0.9659 +vn 0.9659 -0.0000 -0.2588 +vn 0.9330 0.2500 -0.2588 +vn 0.8365 0.4830 -0.2588 +vn 0.6830 0.6830 -0.2588 +vn 0.4830 0.8365 -0.2588 +vn 0.2500 0.9330 -0.2588 +vn 0.2241 0.8365 -0.5000 +vn 0.1830 0.6830 -0.7071 +vn 0.1294 0.4830 -0.8660 +vn 0.0670 0.2500 -0.9659 +vn 0.8660 0.0000 -0.5000 +vn 0.8365 0.2241 -0.5000 +vn 0.7500 0.4330 -0.5000 +vn 0.6124 0.6124 -0.5000 +vn 0.4330 0.7500 -0.5000 +vn 0.7071 0.0000 -0.7071 +vn 0.6830 0.1830 -0.7071 +vn 0.6124 0.3536 -0.7071 +vn 0.5000 0.5000 -0.7071 +vn 0.3536 0.6124 -0.7071 +vn 0.5000 0.0000 -0.8660 +vn 0.4830 0.1294 -0.8660 +vn 0.4330 0.2500 -0.8660 +vn 0.3536 0.3536 -0.8660 +vn 0.2500 0.4330 -0.8660 +vn 0.2588 -0.0000 -0.9659 +vn 0.2500 0.0670 -0.9659 +vn 0.2241 0.1294 -0.9659 +vn 0.1830 0.1830 -0.9659 +vn 0.1294 0.2241 -0.9659 +vn 0.2500 -0.9330 -0.2588 +vn 0.4830 -0.8365 -0.2588 +vn 0.6830 -0.6830 -0.2588 +vn 0.8365 -0.4830 -0.2588 +vn 0.9330 -0.2500 -0.2588 +vn 0.8365 -0.2241 -0.5000 +vn 0.6830 -0.1830 -0.7071 +vn 0.4830 -0.1294 -0.8660 +vn 0.2500 -0.0670 -0.9659 +vn 0.2241 -0.8365 -0.5000 +vn 0.4330 -0.7500 -0.5000 +vn 0.6124 -0.6124 -0.5000 +vn 0.7500 -0.4330 -0.5000 +vn 0.1830 -0.6830 -0.7071 +vn 0.3536 -0.6124 -0.7071 +vn 0.5000 -0.5000 -0.7071 +vn 0.6124 -0.3536 -0.7071 +vn 0.1294 -0.4830 -0.8660 +vn 0.2500 -0.4330 -0.8660 +vn 0.3536 -0.3536 -0.8660 +vn 0.4330 -0.2500 -0.8660 +vn 0.0670 -0.2500 -0.9659 +vn 0.1294 -0.2242 -0.9659 +vn 0.1830 -0.1830 -0.9659 +vn 0.2242 -0.1294 -0.9659 +vn 0.0000 -0.9659 -0.2589 +vn 0.2588 -0.0000 0.9659 +vn 0.5000 0.0000 0.8660 +vn 0.7071 0.0000 0.7071 +vn 0.8660 0.0000 0.5000 +vn 0.9659 -0.0000 0.2588 +vn -0.0000 0.9659 0.2588 +vn 0.2500 0.9330 0.2588 +vn 0.4830 0.8365 0.2588 +vn 0.6830 0.6830 0.2588 +vn 0.8365 0.4830 0.2588 +vn 0.9330 0.2500 0.2589 +vn 0.8365 0.2241 0.5000 +vn 0.6830 0.1830 0.7071 +vn 0.4830 0.1294 0.8660 +vn 0.2500 0.0670 0.9659 +vn 0.0000 0.8660 0.5000 +vn 0.2241 0.8365 0.5000 +vn 0.4330 0.7500 0.5000 +vn 0.6124 0.6124 0.5000 +vn 0.7500 0.4330 0.5000 +vn 0.0000 0.7071 0.7071 +vn 0.1830 0.6830 0.7071 +vn 0.3535 0.6124 0.7071 +vn 0.5000 0.5000 0.7071 +vn 0.6124 0.3536 0.7071 +vn 0.0000 0.5000 0.8660 +vn 0.1294 0.4830 0.8660 +vn 0.2500 0.4330 0.8660 +vn 0.3535 0.3535 0.8660 +vn 0.4330 0.2500 0.8660 +vn -0.0000 0.2588 0.9659 +vn 0.0670 0.2500 0.9659 +vn 0.1294 0.2241 0.9659 +vn 0.1830 0.1830 0.9659 +vn 0.2241 0.1294 0.9659 +vn -0.9659 -0.0000 0.2588 +vn -0.9330 0.2500 0.2588 +vn -0.8365 0.4830 0.2588 +vn -0.6830 0.6830 0.2588 +vn -0.4830 0.8365 0.2588 +vn -0.2500 0.9330 0.2588 +vn -0.2241 0.8365 0.5000 +vn -0.1830 0.6830 0.7071 +vn -0.1294 0.4830 0.8660 +vn -0.0670 0.2500 0.9659 +vn -0.8660 0.0000 0.5000 +vn -0.8365 0.2241 0.5000 +vn -0.7500 0.4330 0.5000 +vn -0.6124 0.6124 0.5000 +vn -0.4330 0.7500 0.5000 +vn -0.7071 0.0000 0.7071 +vn -0.6830 0.1830 0.7071 +vn -0.6124 0.3535 0.7071 +vn -0.5000 0.5000 0.7071 +vn -0.3536 0.6124 0.7071 +vn -0.5000 0.0000 0.8660 +vn -0.4830 0.1294 0.8660 +vn -0.4330 0.2500 0.8660 +vn -0.3536 0.3536 0.8660 +vn -0.2500 0.4330 0.8660 +vn -0.2588 -0.0000 0.9659 +vn -0.2500 0.0670 0.9659 +vn -0.2241 0.1294 0.9659 +vn -0.1830 0.1830 0.9659 +vn -0.1294 0.2242 0.9659 +vn 0.0000 -0.9659 0.2588 +vn -0.2500 -0.9330 0.2588 +vn -0.4830 -0.8365 0.2588 +vn -0.6830 -0.6830 0.2588 +vn -0.8365 -0.4830 0.2588 +vn -0.9330 -0.2500 0.2588 +vn -0.8365 -0.2241 0.5000 +vn -0.6830 -0.1830 0.7071 +vn -0.4830 -0.1294 0.8660 +vn -0.2500 -0.0670 0.9659 +vn -0.0000 -0.8660 0.5000 +vn -0.2241 -0.8365 0.5000 +vn -0.4330 -0.7500 0.5000 +vn -0.6124 -0.6124 0.5000 +vn -0.7500 -0.4330 0.5000 +vn -0.0000 -0.7071 0.7071 +vn -0.1830 -0.6830 0.7071 +vn -0.3535 -0.6124 0.7071 +vn -0.5000 -0.5000 0.7071 +vn -0.6124 -0.3535 0.7071 +vn -0.0000 -0.5000 0.8660 +vn -0.1294 -0.4830 0.8660 +vn -0.2500 -0.4330 0.8660 +vn -0.3535 -0.3535 0.8660 +vn -0.4330 -0.2500 0.8660 +vn 0.0000 -0.2588 0.9659 +vn -0.0670 -0.2500 0.9659 +vn -0.1294 -0.2242 0.9659 +vn -0.1830 -0.1830 0.9659 +vn -0.2241 -0.1294 0.9659 +vn 0.0670 -0.2500 0.9659 +vn 0.1294 -0.2241 0.9659 +vn 0.1830 -0.1830 0.9659 +vn 0.2241 -0.1294 0.9659 +vn 0.2500 -0.0670 0.9659 +vn 0.4830 -0.1294 0.8660 +vn 0.6830 -0.1830 0.7071 +vn 0.8365 -0.2241 0.5000 +vn 0.9330 -0.2500 0.2588 +vn 0.1294 -0.4830 0.8660 +vn 0.2500 -0.4330 0.8660 +vn 0.3536 -0.3536 0.8660 +vn 0.4330 -0.2500 0.8660 +vn 0.1830 -0.6830 0.7071 +vn 0.3536 -0.6124 0.7071 +vn 0.5000 -0.5000 0.7071 +vn 0.6124 -0.3536 0.7071 +vn 0.2241 -0.8365 0.5000 +vn 0.4330 -0.7500 0.5000 +vn 0.6124 -0.6124 0.5000 +vn 0.7500 -0.4330 0.5000 +vn 0.2500 -0.9330 0.2588 +vn 0.4830 -0.8365 0.2588 +vn 0.6830 -0.6830 0.2588 +vn 0.8365 -0.4830 0.2588 +vn 0.9944 -0.1056 -0.0000 +vn 0.9874 -0.1580 0.0000 +vn 0.9583 -0.1211 -0.2588 +vn 0.9538 -0.1526 -0.2588 +vn 0.8552 -0.1368 -0.5000 +vn 0.8592 -0.1086 -0.5000 +vn 0.6982 -0.1117 -0.7071 +vn 0.7015 -0.0886 -0.7071 +vn 0.4937 -0.0790 -0.8660 +vn 0.4961 -0.0627 -0.8660 +vn 0.2556 -0.0409 -0.9659 +vn 0.2568 -0.0324 -0.9659 +vn 0.9986 -0.0528 -0.0000 +vn 0.8551 -0.1368 -0.5000 +vn 0.2332 -0.9724 0.0000 +vn 0.4535 -0.8912 -0.0000 +vn 0.4829 -0.8365 -0.2588 +vn 0.6489 -0.7609 0.0000 +vn 0.8084 -0.5886 0.0000 +vn 0.9234 -0.3839 -0.0000 +vn 0.8365 -0.2242 -0.5000 +vn 0.3535 -0.6124 -0.7071 +vn 0.3536 -0.3535 -0.8660 +vn -0.8969 -0.4422 0.0000 +vn -0.9724 -0.2334 -0.0000 +vn -0.9330 -0.2500 -0.2588 +vn -0.9393 -0.2254 -0.2588 +vn -0.8421 -0.2021 -0.5000 +vn -0.8365 -0.2242 -0.5000 +vn -0.6876 -0.1650 -0.7071 +vn -0.4862 -0.1167 -0.8660 +vn -0.2517 -0.0604 -0.9659 +vn -0.1294 -0.2242 -0.9659 +vn -0.3536 -0.3535 -0.8660 +vn -0.2207 -0.9753 0.0000 +vn -0.4305 -0.9026 -0.0000 +vn -0.6191 -0.7853 -0.0000 +vn -0.7772 -0.6293 0.0000 +vn -0.9392 -0.2254 -0.2588 +vn -0.9969 -0.0784 0.0000 +vn -0.9877 -0.1564 0.0000 +vn 0.0000 0.0001 -1.0000 +vn 0.0000 -0.0001 -1.0000 +vn 0.2556 -0.0409 0.9659 +vn 0.4937 -0.0790 0.8660 +vn 0.6982 -0.1117 0.7071 +vn 0.8552 -0.1368 0.5000 +vn 0.9538 -0.1526 0.2588 +vn 0.8551 -0.1368 0.5000 +vn 0.1294 -0.2242 0.9659 +vn 0.8365 -0.2242 0.5000 +vn 0.4829 -0.8365 0.2588 +vn 0.3536 -0.3535 0.8660 +vn -0.2517 -0.0604 0.9659 +vn -0.4862 -0.1167 0.8660 +vn -0.6876 -0.1650 0.7071 +vn -0.8421 -0.2021 0.5000 +vn -0.9392 -0.2254 0.2588 +vn -0.3536 -0.6124 0.7071 +vn -0.3536 -0.3535 0.8660 +vn -0.1294 -0.2241 0.9659 +vn -0.9393 -0.2254 0.2588 +vn -0.2568 -0.0324 0.9659 +vn -0.4960 -0.0627 0.8660 +vn -0.7015 -0.0886 0.7071 +vn -0.8592 -0.1085 0.5000 +vn -0.9583 -0.1211 0.2588 +vn 0.7433 0.6690 0.0000 +vn 0.8830 0.4693 0.0000 +vn 0.7433 0.6689 0.0000 +vn 0.9703 0.2419 0.0000 +vn 0.9703 0.2418 0.0000 +vn 0.9703 -0.2419 -0.0000 +vn 0.9703 -0.2418 -0.0000 +vn 0.8830 -0.4693 -0.0000 +vn 0.7433 -0.6690 0.0000 +vn -0.7433 -0.6690 -0.0000 +vn -0.8830 -0.4693 -0.0000 +vn -0.9703 -0.2418 -0.0000 +vn -0.9703 -0.2419 -0.0000 +vn -0.9703 0.2418 0.0000 +vn -0.9703 0.2419 0.0000 +vn -0.8830 0.4693 0.0000 +vn -0.7433 0.6690 0.0000 +vn -0.7433 0.6690 -0.0001 +vn -0.7433 0.6690 0.0001 +vn -0.7433 0.6689 -0.0002 +s 1 +f 1/1/1 2/2/1 3/3/2 +f 3/3/2 2/2/1 4/4/2 +f 3/3/2 4/4/2 5/5/3 +f 5/5/3 4/4/2 6/6/3 +f 5/5/3 6/6/3 7/7/4 +f 7/7/4 6/6/3 8/8/4 +f 7/7/4 8/8/4 9/9/5 +f 9/9/5 8/8/4 10/10/5 +f 9/9/5 10/10/5 11/11/6 +f 11/11/6 10/10/5 12/12/6 +f 11/11/6 12/12/6 13/13/7 +f 13/13/7 12/12/6 14/14/7 +f 13/13/7 14/14/7 15/15/8 +f 15/15/8 14/14/7 16/16/8 +f 15/15/8 16/16/8 17/17/9 +f 17/17/9 16/16/8 18/18/9 +f 17/17/9 18/18/9 19/19/10 +f 19/19/10 18/18/9 20/20/10 +f 19/19/10 20/20/10 21/21/11 +f 21/21/11 20/20/10 22/22/11 +f 21/21/11 22/22/11 23/23/12 +f 23/23/12 22/22/11 24/24/12 +f 23/23/12 24/24/12 25/25/13 +f 25/25/13 24/24/12 26/26/13 +f 25/25/13 26/26/13 27/27/14 +f 27/27/14 26/26/13 28/28/14 +f 27/27/14 28/28/14 29/29/15 +f 29/29/15 28/28/14 30/30/15 +f 29/31/15 30/32/15 31/33/16 +f 31/33/16 30/32/15 32/34/16 +f 31/33/16 32/34/16 33/35/17 +f 33/35/17 32/34/16 34/36/17 +f 33/35/17 34/36/17 35/37/18 +f 35/37/18 34/36/17 36/38/18 +f 35/37/18 36/38/18 37/39/19 +f 37/39/19 36/38/18 38/40/19 +f 37/39/19 38/40/19 39/41/20 +f 39/41/20 38/40/19 40/42/20 +f 39/41/20 40/42/20 41/43/21 +f 41/43/21 40/42/20 42/44/21 +f 41/43/21 42/44/21 43/45/22 +f 43/45/22 42/44/21 44/46/22 +f 43/45/22 44/46/22 45/47/23 +f 45/47/23 44/46/22 46/48/23 +f 45/47/23 46/48/23 47/49/24 +f 47/49/24 46/48/23 48/50/24 +f 47/49/24 48/50/24 1/1/1 +f 1/1/1 48/50/24 2/2/1 +f 49/51/1 50/52/1 51/53/2 +f 51/53/2 50/52/1 52/54/2 +f 51/53/2 52/54/2 53/55/3 +f 53/55/3 52/54/2 54/56/3 +f 53/55/3 54/56/3 55/57/4 +f 55/57/4 54/56/3 56/58/4 +f 55/57/4 56/58/4 57/59/5 +f 57/59/5 56/58/4 58/60/5 +f 57/59/5 58/60/5 59/61/6 +f 59/61/6 58/60/5 60/62/6 +f 59/61/6 60/62/6 61/63/7 +f 61/63/7 60/62/6 62/64/7 +f 61/63/7 62/64/7 63/65/8 +f 63/65/8 62/64/7 64/66/8 +f 63/65/8 64/66/8 65/67/9 +f 65/67/9 64/66/8 66/68/9 +f 65/67/9 66/68/9 67/69/10 +f 67/69/10 66/68/9 68/70/10 +f 67/69/10 68/70/10 69/71/11 +f 69/71/11 68/70/10 70/72/11 +f 69/71/11 70/72/11 71/73/12 +f 71/73/12 70/72/11 72/74/12 +f 71/73/12 72/74/12 73/75/13 +f 73/75/13 72/74/12 74/76/13 +f 73/75/13 74/76/13 75/77/14 +f 75/77/14 74/76/13 76/78/14 +f 75/79/14 76/80/14 77/81/15 +f 77/81/15 76/80/14 78/82/15 +f 77/81/15 78/82/15 79/83/16 +f 79/83/16 78/82/15 80/84/16 +f 79/83/16 80/84/16 81/85/17 +f 81/85/17 80/84/16 82/86/17 +f 81/85/17 82/86/17 83/87/18 +f 83/87/18 82/86/17 84/88/18 +f 83/87/18 84/88/18 85/89/19 +f 85/89/19 84/88/18 86/90/19 +f 85/89/19 86/90/19 87/91/20 +f 87/91/20 86/90/19 88/92/20 +f 87/91/20 88/92/20 89/93/21 +f 89/93/21 88/92/20 90/94/21 +f 89/93/21 90/94/21 91/95/22 +f 91/95/22 90/94/21 92/96/22 +f 91/95/22 92/96/22 93/97/23 +f 93/97/23 92/96/22 94/98/23 +f 93/97/23 94/98/23 95/99/24 +f 95/99/24 94/98/23 96/100/24 +f 95/99/24 96/100/24 49/51/1 +f 49/51/1 96/100/24 50/52/1 +f 1/101/25 3/102/25 97/103/25 +f 97/103/25 3/102/25 5/104/25 +f 97/103/25 5/104/25 7/105/25 +f 7/105/25 9/106/25 97/103/25 +f 97/103/25 9/106/25 11/107/25 +f 97/103/25 11/107/25 13/108/25 +f 13/108/25 15/109/25 97/103/25 +f 97/103/25 15/109/25 98/110/25 +f 98/110/25 15/109/25 17/111/25 +f 98/110/25 17/111/25 19/112/25 +f 19/112/25 21/113/25 98/110/25 +f 98/110/25 21/113/25 23/114/25 +f 98/110/25 23/114/25 25/115/25 +f 25/115/25 27/116/25 98/110/25 +f 98/110/25 27/116/25 99/117/25 +f 98/110/25 99/117/25 100/118/25 +f 27/116/25 29/119/25 99/117/25 +f 99/117/25 29/119/25 31/120/25 +f 99/117/25 31/120/25 33/121/25 +f 33/121/25 35/122/25 99/117/25 +f 99/117/25 35/122/25 37/123/25 +f 99/117/25 37/123/25 39/124/25 +f 39/124/25 41/125/25 99/117/25 +f 99/117/25 41/125/25 43/126/25 +f 99/117/25 43/126/25 101/127/25 +f 101/127/25 43/126/25 102/128/25 +f 101/127/25 102/128/25 103/129/25 +f 43/126/25 45/130/25 102/128/25 +f 102/128/25 45/130/25 104/131/25 +f 104/131/25 45/130/25 47/132/25 +f 104/131/25 47/132/25 105/133/25 +f 105/133/25 47/132/25 1/101/25 +f 105/133/25 1/101/25 106/134/25 +f 106/134/25 1/101/25 97/103/25 +f 106/134/25 97/103/25 107/135/25 +f 49/136/25 51/137/25 108/138/25 +f 108/138/25 51/137/25 53/139/25 +f 108/138/25 53/139/25 109/140/25 +f 109/140/25 53/139/25 55/141/25 +f 109/140/25 55/141/25 110/142/25 +f 110/142/25 55/141/25 57/143/25 +f 110/142/25 57/143/25 100/118/25 +f 100/118/25 57/143/25 59/144/25 +f 100/118/25 59/144/25 61/145/25 +f 61/145/25 63/146/25 100/118/25 +f 100/118/25 63/146/25 98/110/25 +f 98/110/25 63/146/25 111/147/25 +f 111/147/25 63/146/25 65/148/25 +f 111/147/25 65/148/25 67/149/25 +f 67/149/25 69/150/25 111/147/25 +f 111/147/25 69/150/25 71/151/25 +f 111/147/25 71/151/25 73/152/25 +f 111/147/25 73/152/25 112/153/25 +f 112/153/25 73/152/25 75/154/25 +f 112/153/25 75/154/25 113/155/25 +f 113/155/25 75/154/25 114/156/25 +f 114/156/25 75/154/25 115/157/25 +f 115/157/25 75/154/25 116/158/25 +f 116/158/25 75/154/25 77/159/25 +f 116/158/25 77/159/25 117/160/25 +f 117/160/25 77/159/25 79/161/25 +f 117/160/25 79/161/25 81/162/25 +f 81/162/25 83/163/25 117/160/25 +f 117/160/25 83/163/25 85/164/25 +f 117/160/25 85/164/25 87/165/25 +f 89/166/25 118/167/25 87/165/25 +f 87/165/25 118/167/25 119/168/25 +f 87/165/25 119/168/25 117/160/25 +f 89/166/25 91/169/25 118/167/25 +f 118/167/25 91/169/25 93/170/25 +f 118/167/25 93/170/25 120/171/25 +f 120/171/25 93/170/25 95/172/25 +f 120/171/25 95/172/25 121/173/25 +f 121/173/25 95/172/25 49/136/25 +f 121/173/25 49/136/25 108/138/25 +f 118/167/25 101/127/25 119/168/25 +f 119/168/25 101/127/25 122/174/25 +f 119/168/25 122/174/25 123/175/25 +f 119/168/25 124/176/25 107/135/25 +f 107/135/25 124/176/25 125/177/25 +f 107/135/25 125/177/25 126/178/25 +f 127/179/25 128/180/25 107/135/25 +f 107/135/25 128/180/25 106/134/25 +f 103/129/25 129/181/25 101/127/25 +f 101/127/25 129/181/25 130/182/25 +f 101/127/25 130/182/25 131/183/25 +f 131/183/25 132/184/25 101/127/25 +f 101/127/25 132/184/25 133/185/25 +f 101/127/25 133/185/25 134/186/25 +f 134/186/25 122/174/25 101/127/25 +f 123/175/25 135/187/25 119/168/25 +f 119/168/25 135/187/25 136/188/25 +f 119/168/25 136/188/25 137/189/25 +f 137/189/25 138/190/25 119/168/25 +f 119/168/25 138/190/25 124/176/25 +f 126/178/25 139/191/25 107/135/25 +f 107/135/25 139/191/25 140/192/25 +f 107/135/25 140/192/25 127/179/25 +f 141/193/8 142/194/8 143/195/26 +f 143/195/26 142/194/8 144/196/27 +f 143/195/26 144/196/27 145/197/28 +f 145/197/28 144/196/27 146/198/29 +f 145/197/28 146/198/29 147/199/30 +f 147/199/30 146/198/29 148/200/31 +f 147/199/30 148/200/31 149/201/31 +f 149/201/31 148/200/31 150/202/32 +f 150/202/32 148/200/31 151/203/33 +f 150/202/32 151/203/33 152/204/34 +f 152/204/34 151/203/33 153/205/35 +f 152/204/34 153/205/35 154/206/36 +f 154/206/36 153/205/35 155/207/37 +f 154/206/36 155/207/37 156/208/37 +f 157/209/14 158/210/38 159/211/13 +f 159/211/13 158/210/38 160/212/39 +f 159/211/13 160/212/39 161/213/12 +f 161/213/12 160/212/39 162/214/40 +f 161/213/12 162/214/40 163/215/11 +f 163/215/11 162/214/40 164/216/41 +f 163/215/11 164/216/41 165/217/10 +f 165/217/10 164/216/41 166/218/42 +f 165/217/10 166/218/42 167/219/9 +f 167/219/9 166/218/42 168/220/43 +f 167/219/9 168/220/43 142/194/8 +f 142/194/8 168/220/43 144/196/27 +f 144/196/27 168/220/43 169/221/44 +f 144/196/27 169/221/44 146/198/29 +f 146/198/29 169/221/44 170/222/45 +f 146/198/29 170/222/45 148/200/31 +f 148/200/31 170/222/45 171/223/46 +f 148/200/31 171/223/46 151/203/33 +f 151/203/33 171/223/46 172/224/47 +f 151/203/33 172/224/47 153/205/35 +f 153/205/35 172/224/47 173/225/37 +f 153/205/35 173/225/37 155/207/37 +f 158/210/38 174/226/48 160/212/39 +f 160/212/39 174/226/48 175/227/49 +f 160/212/39 175/227/49 162/214/40 +f 162/214/40 175/227/49 176/228/50 +f 162/214/40 176/228/50 164/216/41 +f 164/216/41 176/228/50 177/229/51 +f 164/216/41 177/229/51 166/218/42 +f 166/218/42 177/229/51 178/230/52 +f 166/218/42 178/230/52 168/220/43 +f 168/220/43 178/230/52 169/221/44 +f 174/226/48 179/231/53 175/227/49 +f 175/227/49 179/231/53 180/232/54 +f 175/227/49 180/232/54 176/228/50 +f 176/228/50 180/232/54 181/233/55 +f 176/228/50 181/233/55 177/229/51 +f 177/229/51 181/233/55 182/234/56 +f 177/229/51 182/234/56 178/230/52 +f 178/230/52 182/234/56 183/235/57 +f 178/230/52 183/235/57 169/221/44 +f 169/221/44 183/235/57 170/222/45 +f 179/231/53 184/236/58 180/232/54 +f 180/232/54 184/236/58 185/237/59 +f 180/232/54 185/237/59 181/233/55 +f 181/233/55 185/237/59 186/238/60 +f 181/233/55 186/238/60 182/234/56 +f 182/234/56 186/238/60 187/239/61 +f 182/234/56 187/239/61 183/235/57 +f 183/235/57 187/239/61 188/240/62 +f 183/235/57 188/240/62 170/222/45 +f 170/222/45 188/240/62 171/223/46 +f 184/236/58 189/241/63 185/237/59 +f 185/237/59 189/241/63 190/242/64 +f 185/237/59 190/242/64 186/238/60 +f 186/238/60 190/242/64 191/243/65 +f 186/238/60 191/243/65 187/239/61 +f 187/239/61 191/243/65 192/244/66 +f 187/239/61 192/244/66 188/240/62 +f 188/240/62 192/244/66 193/245/67 +f 188/240/62 193/245/67 171/223/46 +f 171/223/46 193/245/67 172/224/47 +f 189/241/63 194/246/37 190/242/64 +f 190/242/64 194/246/37 195/247/37 +f 190/242/64 195/247/37 191/243/65 +f 191/243/65 195/247/37 196/248/37 +f 191/243/65 196/248/37 192/244/66 +f 192/244/66 196/248/37 197/249/37 +f 192/244/66 197/249/37 193/245/67 +f 193/245/67 197/249/37 198/250/37 +f 193/245/67 198/250/37 172/224/47 +f 172/224/47 198/250/37 173/225/37 +f 157/209/14 199/251/14 158/210/38 +f 158/210/38 199/251/14 200/252/38 +f 158/210/38 200/252/38 174/226/48 +f 174/226/48 200/252/38 201/253/48 +f 174/226/48 201/253/48 179/231/53 +f 179/231/53 201/253/48 202/254/53 +f 179/231/53 202/254/53 184/236/58 +f 184/236/58 202/254/53 203/255/58 +f 184/236/58 203/255/58 189/241/63 +f 189/241/63 203/255/58 204/256/63 +f 189/241/63 204/256/63 194/246/37 +f 194/246/37 204/256/63 205/257/37 +f 206/258/20 207/259/68 208/260/19 +f 208/260/19 207/259/68 209/261/69 +f 208/260/19 209/261/69 210/262/18 +f 210/262/18 209/261/69 211/263/70 +f 210/262/18 211/263/70 212/264/17 +f 212/264/17 211/263/70 213/265/71 +f 212/264/17 213/265/71 214/266/16 +f 214/266/16 213/265/71 215/267/72 +f 214/266/16 215/267/72 216/268/15 +f 216/268/15 215/267/72 217/269/73 +f 216/268/15 217/269/73 199/251/14 +f 199/251/14 217/269/73 200/252/38 +f 200/252/38 217/269/73 218/270/74 +f 200/252/38 218/270/74 201/253/48 +f 201/253/48 218/270/74 219/271/75 +f 201/253/48 219/271/75 202/254/53 +f 202/254/53 219/271/75 220/272/76 +f 202/254/53 220/272/76 203/255/58 +f 203/255/58 220/272/76 221/273/77 +f 203/255/58 221/273/77 204/256/63 +f 204/256/63 221/273/77 222/274/37 +f 204/256/63 222/274/37 205/257/37 +f 207/259/68 223/275/78 209/261/69 +f 209/261/69 223/275/78 224/276/79 +f 209/261/69 224/276/79 211/263/70 +f 211/263/70 224/276/79 225/277/80 +f 211/263/70 225/277/80 213/265/71 +f 213/265/71 225/277/80 226/278/81 +f 213/265/71 226/278/81 215/267/72 +f 215/267/72 226/278/81 227/279/82 +f 215/267/72 227/279/82 217/269/73 +f 217/269/73 227/279/82 218/270/74 +f 223/275/78 228/280/83 224/276/79 +f 224/276/79 228/280/83 229/281/84 +f 224/276/79 229/281/84 225/277/80 +f 225/277/80 229/281/84 230/282/85 +f 225/277/80 230/282/85 226/278/81 +f 226/278/81 230/282/85 231/283/86 +f 226/278/81 231/283/86 227/279/82 +f 227/279/82 231/283/86 232/284/87 +f 227/279/82 232/284/87 218/270/74 +f 218/270/74 232/284/87 219/271/75 +f 228/280/83 233/285/88 229/281/84 +f 229/281/84 233/285/88 234/286/89 +f 229/281/84 234/286/89 230/282/85 +f 230/282/85 234/286/89 235/287/90 +f 230/282/85 235/287/90 231/283/86 +f 231/283/86 235/287/90 236/288/91 +f 231/283/86 236/288/91 232/284/87 +f 232/284/87 236/288/91 237/289/92 +f 232/284/87 237/289/92 219/271/75 +f 219/271/75 237/289/92 220/272/76 +f 233/285/88 238/290/93 234/286/89 +f 234/286/89 238/290/93 239/291/94 +f 234/286/89 239/291/94 235/287/90 +f 235/287/90 239/291/94 240/292/95 +f 235/287/90 240/292/95 236/288/91 +f 236/288/91 240/292/95 241/293/96 +f 236/288/91 241/293/96 237/289/92 +f 237/289/92 241/293/96 242/294/97 +f 237/289/92 242/294/97 220/272/76 +f 220/272/76 242/294/97 221/273/77 +f 238/290/93 243/295/37 239/291/94 +f 239/291/94 243/295/37 244/296/37 +f 239/291/94 244/296/37 240/292/95 +f 240/292/95 244/296/37 245/297/37 +f 240/292/95 245/297/37 241/293/96 +f 241/293/96 245/297/37 246/298/37 +f 241/293/96 246/298/37 242/294/97 +f 242/294/97 246/298/37 247/299/37 +f 242/294/97 247/299/37 221/273/77 +f 221/273/77 247/299/37 222/274/37 +f 206/258/20 248/300/20 207/259/68 +f 207/259/68 248/300/20 249/301/68 +f 207/259/68 249/301/68 223/275/78 +f 223/275/78 249/301/68 250/302/78 +f 223/275/78 250/302/78 228/280/83 +f 228/280/83 250/302/78 251/303/83 +f 228/280/83 251/303/83 233/285/88 +f 233/285/88 251/303/83 252/304/88 +f 233/285/88 252/304/88 238/290/93 +f 238/290/93 252/304/88 253/305/93 +f 238/290/93 253/305/93 243/295/37 +f 243/295/37 253/305/93 254/306/37 +f 255/307/2 256/308/98 257/309/1 +f 257/309/1 256/308/98 258/310/99 +f 257/309/1 258/310/99 259/311/24 +f 259/311/24 258/310/99 260/312/100 +f 259/311/24 260/312/100 261/313/23 +f 261/313/23 260/312/100 262/314/101 +f 261/313/23 262/314/101 263/315/22 +f 263/315/22 262/314/101 264/316/102 +f 263/315/22 264/316/102 265/317/21 +f 265/317/21 264/316/102 266/318/103 +f 265/317/21 266/318/103 248/300/20 +f 248/300/20 266/318/103 249/301/68 +f 249/301/68 266/318/103 267/319/104 +f 249/301/68 267/319/104 250/302/78 +f 250/302/78 267/319/104 268/320/105 +f 250/302/78 268/320/105 251/303/83 +f 251/303/83 268/320/105 269/321/106 +f 251/303/83 269/321/106 252/304/88 +f 252/304/88 269/321/106 270/322/107 +f 252/304/88 270/322/107 253/305/93 +f 253/305/93 270/322/107 271/323/37 +f 253/305/93 271/323/37 254/306/37 +f 256/308/98 272/324/108 258/310/99 +f 258/310/99 272/324/108 273/325/109 +f 258/310/99 273/325/109 260/312/100 +f 260/312/100 273/325/109 274/326/110 +f 260/312/100 274/326/110 262/314/101 +f 262/314/101 274/326/110 275/327/111 +f 262/314/101 275/327/111 264/316/102 +f 264/316/102 275/327/111 276/328/112 +f 264/316/102 276/328/112 266/318/103 +f 266/318/103 276/328/112 267/319/104 +f 272/324/108 277/329/113 273/325/109 +f 273/325/109 277/329/113 278/330/114 +f 273/325/109 278/330/114 274/326/110 +f 274/326/110 278/330/114 279/331/115 +f 274/326/110 279/331/115 275/327/111 +f 275/327/111 279/331/115 280/332/116 +f 275/327/111 280/332/116 276/328/112 +f 276/328/112 280/332/116 281/333/117 +f 276/328/112 281/333/117 267/319/104 +f 267/319/104 281/333/117 268/320/105 +f 277/329/113 282/334/118 278/330/114 +f 278/330/114 282/334/118 283/335/119 +f 278/330/114 283/335/119 279/331/115 +f 279/331/115 283/335/119 284/336/120 +f 279/331/115 284/336/120 280/332/116 +f 280/332/116 284/336/120 285/337/121 +f 280/332/116 285/337/121 281/333/117 +f 281/333/117 285/337/121 286/338/122 +f 281/333/117 286/338/122 268/320/105 +f 268/320/105 286/338/122 269/321/106 +f 282/334/118 287/339/123 283/335/119 +f 283/335/119 287/339/123 288/340/124 +f 283/335/119 288/340/124 284/336/120 +f 284/336/120 288/340/124 289/341/125 +f 284/336/120 289/341/125 285/337/121 +f 285/337/121 289/341/125 290/342/126 +f 285/337/121 290/342/126 286/338/122 +f 286/338/122 290/342/126 291/343/127 +f 286/338/122 291/343/127 269/321/106 +f 269/321/106 291/343/127 270/322/107 +f 287/339/123 292/344/37 288/340/124 +f 288/340/124 292/344/37 293/345/37 +f 288/340/124 293/345/37 289/341/125 +f 289/341/125 293/345/37 294/346/37 +f 289/341/125 294/346/37 290/342/126 +f 290/342/126 294/346/37 295/347/37 +f 290/342/126 295/347/37 291/343/127 +f 291/343/127 295/347/37 296/348/37 +f 291/343/127 296/348/37 270/322/107 +f 270/322/107 296/348/37 271/323/37 +f 255/307/2 297/349/2 256/308/98 +f 256/308/98 297/349/2 298/350/98 +f 256/308/98 298/350/98 272/324/108 +f 272/324/108 298/350/98 299/351/108 +f 272/324/108 299/351/108 277/329/113 +f 277/329/113 299/351/108 300/352/113 +f 277/329/113 300/352/113 282/334/118 +f 282/334/118 300/352/113 301/353/118 +f 282/334/118 301/353/118 287/339/123 +f 287/339/123 301/353/118 302/354/123 +f 287/339/123 302/354/123 292/344/37 +f 292/344/37 302/354/123 303/355/37 +f 304/356/8 305/357/27 306/358/7 +f 306/358/7 305/357/27 307/359/128 +f 306/358/7 307/359/128 308/360/6 +f 308/360/6 307/359/128 309/361/129 +f 308/360/6 309/361/129 310/362/5 +f 310/362/5 309/361/129 311/363/130 +f 310/362/5 311/363/130 312/364/4 +f 312/364/4 311/363/130 313/365/131 +f 312/364/4 313/365/131 314/366/3 +f 314/366/3 313/365/131 315/367/132 +f 314/366/3 315/367/132 297/349/2 +f 297/349/2 315/367/132 298/350/98 +f 298/350/98 315/367/132 316/368/133 +f 298/350/98 316/368/133 299/351/108 +f 299/351/108 316/368/133 317/369/134 +f 299/351/108 317/369/134 300/352/113 +f 300/352/113 317/369/134 318/370/135 +f 300/352/113 318/370/135 301/353/118 +f 301/353/118 318/370/135 319/371/136 +f 301/353/118 319/371/136 302/354/123 +f 302/354/123 319/371/136 320/372/37 +f 302/354/123 320/372/37 303/355/37 +f 305/357/27 321/373/29 307/359/128 +f 307/359/128 321/373/29 322/374/137 +f 307/359/128 322/374/137 309/361/129 +f 309/361/129 322/374/137 323/375/138 +f 309/361/129 323/375/138 311/363/130 +f 311/363/130 323/375/138 324/376/139 +f 311/363/130 324/376/139 313/365/131 +f 313/365/131 324/376/139 325/377/140 +f 313/365/131 325/377/140 315/367/132 +f 315/367/132 325/377/140 316/368/133 +f 321/373/29 326/378/31 322/374/137 +f 322/374/137 326/378/31 327/379/141 +f 322/374/137 327/379/141 323/375/138 +f 323/375/138 327/379/141 328/380/142 +f 323/375/138 328/380/142 324/376/139 +f 324/376/139 328/380/142 329/381/143 +f 324/376/139 329/381/143 325/377/140 +f 325/377/140 329/381/143 330/382/144 +f 325/377/140 330/382/144 316/368/133 +f 316/368/133 330/382/144 317/369/134 +f 326/378/31 331/383/33 327/379/141 +f 327/379/141 331/383/33 332/384/145 +f 327/379/141 332/384/145 328/380/142 +f 328/380/142 332/384/145 333/385/146 +f 328/380/142 333/385/146 329/381/143 +f 329/381/143 333/385/146 334/386/147 +f 329/381/143 334/386/147 330/382/144 +f 330/382/144 334/386/147 335/387/148 +f 330/382/144 335/387/148 317/369/134 +f 317/369/134 335/387/148 318/370/135 +f 331/383/33 336/388/35 332/384/145 +f 332/384/145 336/388/35 337/389/149 +f 332/384/145 337/389/149 333/385/146 +f 333/385/146 337/389/149 338/390/150 +f 333/385/146 338/390/150 334/386/147 +f 334/386/147 338/390/150 339/391/151 +f 334/386/147 339/391/151 335/387/148 +f 335/387/148 339/391/151 340/392/152 +f 335/387/148 340/392/152 318/370/135 +f 318/370/135 340/392/152 319/371/136 +f 336/388/35 341/393/37 337/389/149 +f 337/389/149 341/393/37 342/394/37 +f 337/389/149 342/394/37 338/390/150 +f 338/390/150 342/394/37 343/395/37 +f 338/390/150 343/395/37 339/391/151 +f 339/391/151 343/395/37 344/396/37 +f 339/391/151 344/396/37 340/392/152 +f 340/392/152 344/396/37 345/397/37 +f 340/392/152 345/397/37 319/371/136 +f 319/371/136 345/397/37 320/372/37 +f 304/356/8 346/398/8 305/357/27 +f 305/357/27 346/398/8 347/399/153 +f 305/357/27 347/399/153 321/373/29 +f 321/373/29 347/399/153 348/400/29 +f 321/373/29 348/400/29 326/378/31 +f 326/378/31 348/400/29 349/401/31 +f 326/378/31 349/401/31 331/383/33 +f 331/383/33 349/401/31 350/402/33 +f 331/383/33 350/402/33 336/388/35 +f 336/388/35 350/402/33 351/403/35 +f 336/388/35 351/403/35 341/393/37 +f 341/393/37 351/403/35 352/404/37 +f 353/405/8 304/356/8 354/406/7 +f 354/406/7 304/356/8 306/358/7 +f 354/406/7 306/358/7 355/407/6 +f 355/407/6 306/358/7 308/360/6 +f 355/407/6 308/360/6 356/408/5 +f 356/408/5 308/360/6 310/362/5 +f 356/409/5 310/362/5 357/410/4 +f 357/410/4 310/362/5 312/364/4 +f 357/410/4 312/364/4 358/411/3 +f 358/411/3 312/364/4 314/366/3 +f 358/411/3 314/366/3 359/412/2 +f 359/412/2 314/366/3 297/349/2 +f 255/307/2 360/413/2 297/349/2 +f 297/349/2 360/413/2 359/412/2 +f 360/413/2 255/307/2 361/414/1 +f 361/414/1 255/307/2 257/309/1 +f 361/414/1 257/309/1 362/415/24 +f 362/415/24 257/309/1 259/311/24 +f 362/415/24 259/311/24 363/416/23 +f 363/416/23 259/311/24 261/313/23 +f 363/417/23 261/313/23 364/418/22 +f 364/418/22 261/313/23 263/315/22 +f 364/418/22 263/315/22 365/419/21 +f 365/419/21 263/315/22 265/317/21 +f 365/419/21 265/317/21 366/420/20 +f 366/420/20 265/317/21 248/300/20 +f 206/258/20 367/421/20 248/300/20 +f 248/300/20 367/421/20 366/420/20 +f 367/421/20 206/258/20 368/422/19 +f 368/422/19 206/258/20 208/260/19 +f 368/422/19 208/260/19 369/423/18 +f 369/423/18 208/260/19 210/262/18 +f 369/423/18 210/262/18 370/424/17 +f 370/424/17 210/262/18 212/264/17 +f 370/425/17 212/264/17 371/426/16 +f 371/426/16 212/264/17 214/266/16 +f 371/426/16 214/266/16 372/427/15 +f 372/427/15 214/266/16 216/268/15 +f 372/427/15 216/268/15 373/428/14 +f 373/428/14 216/268/15 199/251/14 +f 157/209/14 374/429/14 199/251/14 +f 199/251/14 374/429/14 373/428/14 +f 374/429/14 157/209/14 375/430/13 +f 375/430/13 157/209/14 159/211/13 +f 375/430/13 159/211/13 376/431/12 +f 376/431/12 159/211/13 161/213/12 +f 376/431/12 161/213/12 377/432/11 +f 377/432/11 161/213/12 163/215/11 +f 377/433/11 163/215/11 378/434/10 +f 378/434/10 163/215/11 165/217/10 +f 378/434/10 165/217/10 379/435/9 +f 379/435/9 165/217/10 167/219/9 +f 379/435/9 167/219/9 380/436/8 +f 380/436/8 167/219/9 142/194/8 +f 346/398/8 304/356/8 107/437/8 +f 107/437/8 304/356/8 353/405/8 +f 107/437/8 353/405/8 119/438/8 +f 119/438/8 353/405/8 380/436/8 +f 119/438/8 380/436/8 142/194/8 +f 142/194/8 141/193/8 119/438/8 +f 381/439/25 382/440/25 383/441/154 +f 383/441/154 382/440/25 384/442/154 +f 383/441/154 384/442/154 385/443/155 +f 385/443/155 384/442/154 386/444/155 +f 385/443/155 386/444/155 387/445/156 +f 387/445/156 386/444/155 388/446/156 +f 387/445/156 388/446/156 389/447/157 +f 389/447/157 388/446/156 390/448/157 +f 389/447/157 390/448/157 391/449/158 +f 391/449/158 390/448/157 392/450/158 +f 391/449/158 392/450/158 360/451/2 +f 360/451/2 392/450/158 359/452/2 +f 366/453/20 393/454/159 365/455/21 +f 365/455/21 393/454/159 394/456/160 +f 365/455/21 394/456/160 364/457/22 +f 364/457/22 394/456/160 395/458/161 +f 364/457/22 395/458/161 363/459/23 +f 363/459/23 395/458/161 396/460/162 +f 363/459/23 396/460/162 362/461/24 +f 362/461/24 396/460/162 397/462/163 +f 362/461/24 397/462/163 361/463/1 +f 361/463/1 397/462/163 398/464/164 +f 361/463/1 398/464/164 360/451/2 +f 360/451/2 398/464/164 391/449/158 +f 391/449/158 398/464/164 399/465/165 +f 391/449/158 399/465/165 389/447/157 +f 389/447/157 399/465/165 400/466/166 +f 389/447/157 400/466/166 387/445/156 +f 387/445/156 400/466/166 401/467/167 +f 387/445/156 401/467/167 385/443/155 +f 385/443/155 401/467/167 402/468/168 +f 385/443/155 402/468/168 383/441/154 +f 383/441/154 402/468/168 403/469/25 +f 383/441/154 403/469/25 381/439/25 +f 393/454/159 404/470/169 394/456/160 +f 394/456/160 404/470/169 405/471/170 +f 394/456/160 405/471/170 395/458/161 +f 395/458/161 405/471/170 406/472/171 +f 395/458/161 406/472/171 396/460/162 +f 396/460/162 406/472/171 407/473/172 +f 396/460/162 407/473/172 397/462/163 +f 397/462/163 407/473/172 408/474/173 +f 397/462/163 408/474/173 398/464/164 +f 398/464/164 408/474/173 399/465/165 +f 404/470/169 409/475/174 405/471/170 +f 405/471/170 409/475/174 410/476/175 +f 405/471/170 410/476/175 406/472/171 +f 406/472/171 410/476/175 411/477/176 +f 406/472/171 411/477/176 407/473/172 +f 407/473/172 411/477/176 412/478/177 +f 407/473/172 412/478/177 408/474/173 +f 408/474/173 412/478/177 413/479/178 +f 408/474/173 413/479/178 399/465/165 +f 399/465/165 413/479/178 400/466/166 +f 409/475/174 414/480/179 410/476/175 +f 410/476/175 414/480/179 415/481/180 +f 410/476/175 415/481/180 411/477/176 +f 411/477/176 415/481/180 416/482/181 +f 411/477/176 416/482/181 412/478/177 +f 412/478/177 416/482/181 417/483/182 +f 412/478/177 417/483/182 413/479/178 +f 413/479/178 417/483/182 418/484/183 +f 413/479/178 418/484/183 400/466/166 +f 400/466/166 418/484/183 401/467/167 +f 414/480/179 419/485/184 415/481/180 +f 415/481/180 419/485/184 420/486/185 +f 415/481/180 420/486/185 416/482/181 +f 416/482/181 420/486/185 421/487/186 +f 416/482/181 421/487/186 417/483/182 +f 417/483/182 421/487/186 422/488/187 +f 417/483/182 422/488/187 418/484/183 +f 418/484/183 422/488/187 423/489/188 +f 418/484/183 423/489/188 401/467/167 +f 401/467/167 423/489/188 402/468/168 +f 419/485/184 424/490/25 420/486/185 +f 420/486/185 424/490/25 425/491/25 +f 420/486/185 425/491/25 421/487/186 +f 421/487/186 425/491/25 426/492/25 +f 421/487/186 426/492/25 422/488/187 +f 422/488/187 426/492/25 427/493/25 +f 422/488/187 427/493/25 423/489/188 +f 423/489/188 427/493/25 428/494/25 +f 423/489/188 428/494/25 402/468/168 +f 402/468/168 428/494/25 403/469/25 +f 366/453/20 367/495/20 393/454/159 +f 393/454/159 367/495/20 429/496/159 +f 393/454/159 429/496/159 404/470/169 +f 404/470/169 429/496/159 430/497/169 +f 404/470/169 430/497/169 409/475/174 +f 409/475/174 430/497/169 431/498/174 +f 409/475/174 431/498/174 414/480/179 +f 414/480/179 431/498/174 432/499/179 +f 414/480/179 432/499/179 419/485/184 +f 419/485/184 432/499/179 433/500/184 +f 419/485/184 433/500/184 424/490/25 +f 424/490/25 433/500/184 434/501/25 +f 373/502/14 435/503/189 372/504/15 +f 372/504/15 435/503/189 436/505/190 +f 372/504/15 436/505/190 371/506/16 +f 371/506/16 436/505/190 437/507/191 +f 371/506/16 437/507/191 370/508/17 +f 370/508/17 437/507/191 438/509/192 +f 370/508/17 438/509/192 369/510/18 +f 369/510/18 438/509/192 439/511/193 +f 369/510/18 439/511/193 368/512/19 +f 368/512/19 439/511/193 440/513/194 +f 368/512/19 440/513/194 367/495/20 +f 367/495/20 440/513/194 429/496/159 +f 429/496/159 440/513/194 441/514/195 +f 429/496/159 441/514/195 430/497/169 +f 430/497/169 441/514/195 442/515/196 +f 430/497/169 442/515/196 431/498/174 +f 431/498/174 442/515/196 443/516/197 +f 431/498/174 443/516/197 432/499/179 +f 432/499/179 443/516/197 444/517/198 +f 432/499/179 444/517/198 433/500/184 +f 433/500/184 444/517/198 445/518/25 +f 433/500/184 445/518/25 434/501/25 +f 435/503/189 446/519/199 436/505/190 +f 436/505/190 446/519/199 447/520/200 +f 436/505/190 447/520/200 437/507/191 +f 437/507/191 447/520/200 448/521/201 +f 437/507/191 448/521/201 438/509/192 +f 438/509/192 448/521/201 449/522/202 +f 438/509/192 449/522/202 439/511/193 +f 439/511/193 449/522/202 450/523/203 +f 439/511/193 450/523/203 440/513/194 +f 440/513/194 450/523/203 441/514/195 +f 446/519/199 451/524/204 447/520/200 +f 447/520/200 451/524/204 452/525/205 +f 447/520/200 452/525/205 448/521/201 +f 448/521/201 452/525/205 453/526/206 +f 448/521/201 453/526/206 449/522/202 +f 449/522/202 453/526/206 454/527/207 +f 449/522/202 454/527/207 450/523/203 +f 450/523/203 454/527/207 455/528/208 +f 450/523/203 455/528/208 441/514/195 +f 441/514/195 455/528/208 442/515/196 +f 451/524/204 456/529/209 452/525/205 +f 452/525/205 456/529/209 457/530/210 +f 452/525/205 457/530/210 453/526/206 +f 453/526/206 457/530/210 458/531/211 +f 453/526/206 458/531/211 454/527/207 +f 454/527/207 458/531/211 459/532/212 +f 454/527/207 459/532/212 455/528/208 +f 455/528/208 459/532/212 460/533/213 +f 455/528/208 460/533/213 442/515/196 +f 442/515/196 460/533/213 443/516/197 +f 456/529/209 461/534/214 457/530/210 +f 457/530/210 461/534/214 462/535/215 +f 457/530/210 462/535/215 458/531/211 +f 458/531/211 462/535/215 463/536/216 +f 458/531/211 463/536/216 459/532/212 +f 459/532/212 463/536/216 464/537/217 +f 459/532/212 464/537/217 460/533/213 +f 460/533/213 464/537/217 465/538/218 +f 460/533/213 465/538/218 443/516/197 +f 443/516/197 465/538/218 444/517/198 +f 461/534/214 466/539/25 462/535/215 +f 462/535/215 466/539/25 467/540/25 +f 462/535/215 467/540/25 463/536/216 +f 463/536/216 467/540/25 468/541/25 +f 463/536/216 468/541/25 464/537/217 +f 464/537/217 468/541/25 469/542/25 +f 464/537/217 469/542/25 465/538/218 +f 465/538/218 469/542/25 470/543/25 +f 465/538/218 470/543/25 444/517/198 +f 444/517/198 470/543/25 445/518/25 +f 373/502/14 374/544/14 435/503/189 +f 435/503/189 374/544/14 471/545/189 +f 435/503/189 471/545/189 446/519/199 +f 446/519/199 471/545/189 472/546/199 +f 446/519/199 472/546/199 451/524/204 +f 451/524/204 472/546/199 473/547/204 +f 451/524/204 473/547/204 456/529/209 +f 456/529/209 473/547/204 474/548/209 +f 456/529/209 474/548/209 461/534/214 +f 461/534/214 474/548/209 475/549/214 +f 461/534/214 475/549/214 466/539/25 +f 466/539/25 475/549/214 476/550/25 +f 380/551/8 477/552/219 379/553/9 +f 379/553/9 477/552/219 478/554/220 +f 379/553/9 478/554/220 378/555/10 +f 378/555/10 478/554/220 479/556/221 +f 378/555/10 479/556/221 377/557/11 +f 377/557/11 479/556/221 480/558/222 +f 377/557/11 480/558/222 376/559/12 +f 376/559/12 480/558/222 481/560/223 +f 376/559/12 481/560/223 375/561/13 +f 375/561/13 481/560/223 482/562/224 +f 375/561/13 482/562/224 374/544/14 +f 374/544/14 482/562/224 471/545/189 +f 471/545/189 482/562/224 483/563/225 +f 471/545/189 483/563/225 472/546/199 +f 472/546/199 483/563/225 484/564/226 +f 472/546/199 484/564/226 473/547/204 +f 473/547/204 484/564/226 485/565/227 +f 473/547/204 485/565/227 474/548/209 +f 474/548/209 485/565/227 486/566/228 +f 474/548/209 486/566/228 475/549/214 +f 475/549/214 486/566/228 487/567/25 +f 475/549/214 487/567/25 476/550/25 +f 477/552/219 488/568/229 478/554/220 +f 478/554/220 488/568/229 489/569/230 +f 478/554/220 489/569/230 479/556/221 +f 479/556/221 489/569/230 490/570/231 +f 479/556/221 490/570/231 480/558/222 +f 480/558/222 490/570/231 491/571/232 +f 480/558/222 491/571/232 481/560/223 +f 481/560/223 491/571/232 492/572/233 +f 481/560/223 492/572/233 482/562/224 +f 482/562/224 492/572/233 483/563/225 +f 488/568/229 493/573/234 489/569/230 +f 489/569/230 493/573/234 494/574/235 +f 489/569/230 494/574/235 490/570/231 +f 490/570/231 494/574/235 495/575/236 +f 490/570/231 495/575/236 491/571/232 +f 491/571/232 495/575/236 496/576/237 +f 491/571/232 496/576/237 492/572/233 +f 492/572/233 496/576/237 497/577/238 +f 492/572/233 497/577/238 483/563/225 +f 483/563/225 497/577/238 484/564/226 +f 493/573/234 498/578/239 494/574/235 +f 494/574/235 498/578/239 499/579/240 +f 494/574/235 499/579/240 495/575/236 +f 495/575/236 499/579/240 500/580/241 +f 495/575/236 500/580/241 496/576/237 +f 496/576/237 500/580/241 501/581/242 +f 496/576/237 501/581/242 497/577/238 +f 497/577/238 501/581/242 502/582/243 +f 497/577/238 502/582/243 484/564/226 +f 484/564/226 502/582/243 485/565/227 +f 498/578/239 503/583/244 499/579/240 +f 499/579/240 503/583/244 504/584/245 +f 499/579/240 504/584/245 500/580/241 +f 500/580/241 504/584/245 505/585/246 +f 500/580/241 505/585/246 501/581/242 +f 501/581/242 505/585/246 506/586/247 +f 501/581/242 506/586/247 502/582/243 +f 502/582/243 506/586/247 507/587/248 +f 502/582/243 507/587/248 485/565/227 +f 485/565/227 507/587/248 486/566/228 +f 503/583/244 508/588/25 504/584/245 +f 504/584/245 508/588/25 509/589/25 +f 504/584/245 509/589/25 505/585/246 +f 505/585/246 509/589/25 510/590/25 +f 505/585/246 510/590/25 506/586/247 +f 506/586/247 510/590/25 511/591/25 +f 506/586/247 511/591/25 507/587/248 +f 507/587/248 511/591/25 512/592/25 +f 507/587/248 512/592/25 486/566/228 +f 486/566/228 512/592/25 487/567/25 +f 380/551/8 353/593/8 477/552/219 +f 477/552/219 353/593/8 513/594/219 +f 477/552/219 513/594/219 488/568/229 +f 488/568/229 513/594/219 514/595/229 +f 488/568/229 514/595/229 493/573/234 +f 493/573/234 514/595/229 515/596/234 +f 493/573/234 515/596/234 498/578/239 +f 498/578/239 515/596/234 516/597/239 +f 498/578/239 516/597/239 503/583/244 +f 503/583/244 516/597/239 517/598/244 +f 503/583/244 517/598/244 508/588/25 +f 508/588/25 517/598/244 518/599/25 +f 518/599/25 517/598/244 519/600/25 +f 519/600/25 517/598/244 520/601/249 +f 519/600/25 520/601/249 521/602/25 +f 521/602/25 520/601/249 522/603/250 +f 521/602/25 522/603/250 523/604/25 +f 523/604/25 522/603/250 524/605/251 +f 523/604/25 524/605/251 525/606/25 +f 525/606/25 524/605/251 526/607/252 +f 525/606/25 526/607/252 527/608/25 +f 527/608/25 526/607/252 528/609/253 +f 527/608/25 528/609/253 382/440/25 +f 382/440/25 528/609/253 384/442/154 +f 384/442/154 528/609/253 529/610/254 +f 384/442/154 529/610/254 386/444/155 +f 386/444/155 529/610/254 530/611/255 +f 386/444/155 530/611/255 388/446/156 +f 388/446/156 530/611/255 531/612/256 +f 388/446/156 531/612/256 390/448/157 +f 390/448/157 531/612/256 532/613/257 +f 390/448/157 532/613/257 392/450/158 +f 392/450/158 532/613/257 358/614/3 +f 392/450/158 358/614/3 359/452/2 +f 517/598/244 516/597/239 520/601/249 +f 520/601/249 516/597/239 533/615/258 +f 520/601/249 533/615/258 522/603/250 +f 522/603/250 533/615/258 534/616/259 +f 522/603/250 534/616/259 524/605/251 +f 524/605/251 534/616/259 535/617/260 +f 524/605/251 535/617/260 526/607/252 +f 526/607/252 535/617/260 536/618/261 +f 526/607/252 536/618/261 528/609/253 +f 528/609/253 536/618/261 529/610/254 +f 516/597/239 515/596/234 533/615/258 +f 533/615/258 515/596/234 537/619/262 +f 533/615/258 537/619/262 534/616/259 +f 534/616/259 537/619/262 538/620/263 +f 534/616/259 538/620/263 535/617/260 +f 535/617/260 538/620/263 539/621/264 +f 535/617/260 539/621/264 536/618/261 +f 536/618/261 539/621/264 540/622/265 +f 536/618/261 540/622/265 529/610/254 +f 529/610/254 540/622/265 530/611/255 +f 515/596/234 514/595/229 537/619/262 +f 537/619/262 514/595/229 541/623/266 +f 537/619/262 541/623/266 538/620/263 +f 538/620/263 541/623/266 542/624/267 +f 538/620/263 542/624/267 539/621/264 +f 539/621/264 542/624/267 543/625/268 +f 539/621/264 543/625/268 540/622/265 +f 540/622/265 543/625/268 544/626/269 +f 540/622/265 544/626/269 530/611/255 +f 530/611/255 544/626/269 531/612/256 +f 514/595/229 513/594/219 541/623/266 +f 541/623/266 513/594/219 545/627/270 +f 541/623/266 545/627/270 542/624/267 +f 542/624/267 545/627/270 546/628/271 +f 542/624/267 546/628/271 543/625/268 +f 543/625/268 546/628/271 547/629/272 +f 543/625/268 547/629/272 544/626/269 +f 544/626/269 547/629/272 548/630/273 +f 544/626/269 548/630/273 531/612/256 +f 531/612/256 548/630/273 532/613/257 +f 513/594/219 353/593/8 545/627/270 +f 545/627/270 353/593/8 354/631/7 +f 545/627/270 354/631/7 546/628/271 +f 546/628/271 354/631/7 355/632/6 +f 546/628/271 355/632/6 547/629/272 +f 547/629/272 355/632/6 356/633/5 +f 547/629/272 356/633/5 548/630/273 +f 548/630/273 356/633/5 357/634/4 +f 548/630/273 357/634/4 532/613/257 +f 532/613/257 357/634/4 358/614/3 +f 381/439/25 466/539/25 382/440/25 +f 382/440/25 466/539/25 476/550/25 +f 382/440/25 476/550/25 518/599/25 +f 518/599/25 476/550/25 508/588/25 +f 508/588/25 476/550/25 487/567/25 +f 508/588/25 487/567/25 512/592/25 +f 403/469/25 424/490/25 381/439/25 +f 381/439/25 424/490/25 434/501/25 +f 381/439/25 434/501/25 466/539/25 +f 466/539/25 434/501/25 467/540/25 +f 467/540/25 434/501/25 468/541/25 +f 468/541/25 434/501/25 469/542/25 +f 469/542/25 434/501/25 470/543/25 +f 470/543/25 434/501/25 445/518/25 +f 403/469/25 428/494/25 424/490/25 +f 424/490/25 428/494/25 427/493/25 +f 424/490/25 427/493/25 426/492/25 +f 426/492/25 425/491/25 424/490/25 +f 512/592/25 511/591/25 508/588/25 +f 508/588/25 511/591/25 510/590/25 +f 508/588/25 510/590/25 509/589/25 +f 519/600/25 521/602/25 518/599/25 +f 518/599/25 521/602/25 523/604/25 +f 518/599/25 523/604/25 525/606/25 +f 525/606/25 527/608/25 518/599/25 +f 518/599/25 527/608/25 382/440/25 +f 549/635/37 550/636/37 551/637/123 +f 551/637/123 550/636/37 552/638/123 +f 551/637/123 552/638/123 553/639/118 +f 553/639/118 552/638/123 554/640/118 +f 553/639/118 554/640/118 555/641/113 +f 555/641/113 554/640/118 556/642/113 +f 555/641/113 556/642/113 557/643/108 +f 557/643/108 556/642/113 558/644/108 +f 557/643/108 558/644/108 559/645/98 +f 559/645/98 558/644/108 560/646/98 +f 559/645/98 560/646/98 561/647/2 +f 561/647/2 560/646/98 562/648/2 +f 563/649/274 564/650/275 565/651/276 +f 565/651/276 564/650/275 566/652/277 +f 565/651/276 566/652/277 567/653/278 +f 565/651/276 567/653/278 568/654/279 +f 568/654/279 567/653/278 569/655/280 +f 568/654/279 569/655/280 570/656/281 +f 570/656/281 569/655/280 571/657/282 +f 570/656/281 571/657/282 572/658/283 +f 572/658/283 571/657/282 573/659/284 +f 572/658/283 573/659/284 574/660/285 +f 574/660/285 573/659/284 575/661/37 +f 574/660/285 575/661/37 576/662/37 +f 576/662/37 577/663/37 574/660/285 +f 574/660/285 577/663/37 551/637/123 +f 574/660/285 551/637/123 553/639/118 +f 577/663/37 549/635/37 551/637/123 +f 574/660/285 553/639/118 572/658/283 +f 572/658/283 553/639/118 555/641/113 +f 572/658/283 555/641/113 570/656/281 +f 570/656/281 555/641/113 557/643/108 +f 570/656/281 557/643/108 568/654/279 +f 568/654/279 557/643/108 559/645/98 +f 568/654/279 559/645/98 565/651/276 +f 565/651/276 559/645/98 578/664/286 +f 565/651/276 578/664/286 563/649/274 +f 559/645/98 561/647/2 578/664/286 +f 564/650/275 579/665/275 566/652/277 +f 566/652/277 579/665/275 580/666/277 +f 566/652/277 580/666/277 567/653/278 +f 567/653/278 580/666/277 581/667/287 +f 567/653/278 581/667/287 569/655/280 +f 569/655/280 581/667/287 582/668/280 +f 569/655/280 582/668/280 571/657/282 +f 571/657/282 582/668/280 583/669/282 +f 571/657/282 583/669/282 573/659/284 +f 573/659/284 583/669/282 584/670/284 +f 573/659/284 584/670/284 575/661/37 +f 575/661/37 584/670/284 585/671/37 +f 586/672/8 587/673/27 588/674/288 +f 588/674/288 587/673/27 589/675/128 +f 588/674/288 589/675/128 590/676/289 +f 590/676/289 589/675/128 591/677/290 +f 590/676/289 591/677/290 592/678/291 +f 592/678/291 591/677/290 593/679/130 +f 592/678/291 593/679/130 594/680/292 +f 594/680/292 593/679/130 595/681/131 +f 594/680/292 595/681/131 596/682/293 +f 596/682/293 595/681/131 597/683/132 +f 596/682/293 597/683/132 579/665/275 +f 579/665/275 597/683/132 580/666/277 +f 580/666/277 597/683/132 598/684/294 +f 580/666/277 598/684/294 581/667/287 +f 581/667/287 598/684/294 599/685/134 +f 581/667/287 599/685/134 582/668/280 +f 582/668/280 599/685/134 600/686/135 +f 582/668/280 600/686/135 583/669/282 +f 583/669/282 600/686/135 601/687/136 +f 583/669/282 601/687/136 584/670/284 +f 584/670/284 601/687/136 585/671/37 +f 585/671/37 601/687/136 602/688/37 +f 602/688/37 601/687/136 603/689/152 +f 602/688/37 603/689/152 604/690/37 +f 604/690/37 603/689/152 605/691/151 +f 604/690/37 605/691/151 606/692/37 +f 606/692/37 605/691/151 607/693/150 +f 606/692/37 607/693/150 608/694/37 +f 608/694/37 607/693/150 609/695/149 +f 608/694/37 609/695/149 610/696/37 +f 610/696/37 609/695/149 611/697/35 +f 610/696/37 611/697/35 612/698/37 +f 587/673/27 613/699/29 589/675/128 +f 589/675/128 613/699/29 614/700/137 +f 589/675/128 614/700/137 591/677/290 +f 591/677/290 614/700/137 615/701/138 +f 591/677/290 615/701/138 593/679/130 +f 593/679/130 615/701/138 616/702/139 +f 593/679/130 616/702/139 595/681/131 +f 595/681/131 616/702/139 617/703/140 +f 595/681/131 617/703/140 597/683/132 +f 597/683/132 617/703/140 598/684/294 +f 613/699/29 618/704/31 614/700/137 +f 614/700/137 618/704/31 619/705/141 +f 614/700/137 619/705/141 615/701/138 +f 615/701/138 619/705/141 620/706/295 +f 615/701/138 620/706/295 616/702/139 +f 616/702/139 620/706/295 621/707/143 +f 616/702/139 621/707/143 617/703/140 +f 617/703/140 621/707/143 622/708/144 +f 617/703/140 622/708/144 598/684/294 +f 598/684/294 622/708/144 599/685/134 +f 618/704/31 623/709/33 619/705/141 +f 619/705/141 623/709/33 624/710/145 +f 619/705/141 624/710/145 620/706/295 +f 620/706/295 624/710/145 625/711/146 +f 620/706/295 625/711/146 621/707/143 +f 621/707/143 625/711/146 626/712/296 +f 621/707/143 626/712/296 622/708/144 +f 622/708/144 626/712/296 627/713/148 +f 622/708/144 627/713/148 599/685/134 +f 599/685/134 627/713/148 600/686/135 +f 623/709/33 611/697/35 624/710/145 +f 624/710/145 611/697/35 609/695/149 +f 624/710/145 609/695/149 625/711/146 +f 625/711/146 609/695/149 607/693/150 +f 625/711/146 607/693/150 626/712/296 +f 626/712/296 607/693/150 605/691/151 +f 626/712/296 605/691/151 627/713/148 +f 627/713/148 605/691/151 603/689/152 +f 627/713/148 603/689/152 600/686/135 +f 600/686/135 603/689/152 601/687/136 +f 586/672/8 628/714/8 587/673/27 +f 587/673/27 628/714/8 629/715/27 +f 587/673/27 629/715/27 613/699/29 +f 613/699/29 629/715/27 630/716/29 +f 613/699/29 630/716/29 618/704/31 +f 618/704/31 630/716/29 631/717/31 +f 618/704/31 631/717/31 623/709/33 +f 623/709/33 631/717/31 632/718/33 +f 623/709/33 632/718/33 611/697/35 +f 611/697/35 632/718/33 633/719/35 +f 611/697/35 633/719/35 612/698/37 +f 612/698/37 633/719/35 634/720/37 +f 635/721/297 636/722/298 637/723/299 +f 637/723/299 636/722/298 638/724/300 +f 637/723/299 638/724/300 639/725/301 +f 637/723/299 639/725/301 640/726/302 +f 640/726/302 639/725/301 641/727/303 +f 640/726/302 641/727/303 642/728/54 +f 642/728/54 641/727/303 643/729/304 +f 642/728/54 643/729/304 644/730/59 +f 644/730/59 643/729/304 645/731/305 +f 644/730/59 645/731/305 646/732/64 +f 646/732/64 645/731/305 647/733/37 +f 646/732/64 647/733/37 648/734/37 +f 646/732/64 648/734/37 649/735/65 +f 649/735/65 648/734/37 650/736/37 +f 649/735/65 650/736/37 651/737/66 +f 651/737/66 650/736/37 652/738/37 +f 651/737/66 652/738/37 653/739/306 +f 653/739/306 652/738/37 654/740/37 +f 653/739/306 654/740/37 655/741/47 +f 655/741/47 654/740/37 656/742/37 +f 655/741/47 656/742/37 633/719/35 +f 633/719/35 656/742/37 634/720/37 +f 633/719/35 632/718/33 655/741/47 +f 655/741/47 632/718/33 657/743/46 +f 655/741/47 657/743/46 653/739/306 +f 653/739/306 657/743/46 658/744/62 +f 653/739/306 658/744/62 651/737/66 +f 651/737/66 658/744/62 659/745/307 +f 651/737/66 659/745/307 649/735/65 +f 649/735/65 659/745/307 660/746/60 +f 649/735/65 660/746/60 646/732/64 +f 646/732/64 660/746/60 644/730/59 +f 632/718/33 631/717/31 657/743/46 +f 657/743/46 631/717/31 661/747/45 +f 657/743/46 661/747/45 658/744/62 +f 658/744/62 661/747/45 662/748/57 +f 658/744/62 662/748/57 659/745/307 +f 659/745/307 662/748/57 663/749/56 +f 659/745/307 663/749/56 660/746/60 +f 660/746/60 663/749/56 664/750/55 +f 660/746/60 664/750/55 644/730/59 +f 644/730/59 664/750/55 642/728/54 +f 631/717/31 630/716/29 661/747/45 +f 661/747/45 630/716/29 665/751/44 +f 661/747/45 665/751/44 662/748/57 +f 662/748/57 665/751/44 666/752/52 +f 662/748/57 666/752/52 663/749/56 +f 663/749/56 666/752/52 667/753/51 +f 663/749/56 667/753/51 664/750/55 +f 664/750/55 667/753/51 668/754/50 +f 664/750/55 668/754/50 642/728/54 +f 642/728/54 668/754/50 640/726/302 +f 630/716/29 629/715/27 665/751/44 +f 665/751/44 629/715/27 669/755/43 +f 665/751/44 669/755/43 666/752/52 +f 666/752/52 669/755/43 670/756/42 +f 666/752/52 670/756/42 667/753/51 +f 667/753/51 670/756/42 671/757/41 +f 667/753/51 671/757/41 668/754/50 +f 668/754/50 671/757/41 672/758/40 +f 668/754/50 672/758/40 640/726/302 +f 640/726/302 672/758/40 637/723/299 +f 628/714/8 673/759/308 629/715/27 +f 629/715/27 673/759/308 669/755/43 +f 673/759/308 674/760/309 669/755/43 +f 669/755/43 674/760/309 670/756/42 +f 674/760/309 675/761/310 670/756/42 +f 670/756/42 675/761/310 671/757/41 +f 675/761/310 676/762/311 671/757/41 +f 671/757/41 676/762/311 672/758/40 +f 676/762/311 635/721/297 672/758/40 +f 672/758/40 635/721/297 637/723/299 +f 636/722/298 677/763/298 638/724/300 +f 638/724/300 677/763/298 678/764/312 +f 638/724/300 678/764/312 639/725/301 +f 639/725/301 678/764/312 679/765/301 +f 639/725/301 679/765/301 641/727/303 +f 641/727/303 679/765/301 680/766/303 +f 641/727/303 680/766/303 643/729/304 +f 643/729/304 680/766/303 681/767/304 +f 643/729/304 681/767/304 645/731/305 +f 645/731/305 681/767/304 682/768/305 +f 645/731/305 682/768/305 647/733/37 +f 647/733/37 682/768/305 683/769/37 +f 684/770/14 685/771/38 686/772/313 +f 686/772/313 685/771/38 687/773/314 +f 687/773/314 685/771/38 678/764/312 +f 687/773/314 678/764/312 677/763/298 +f 685/771/38 688/774/48 678/764/312 +f 678/764/312 688/774/48 679/765/301 +f 679/765/301 688/774/48 689/775/53 +f 679/765/301 689/775/53 680/766/303 +f 680/766/303 689/775/53 690/776/58 +f 680/766/303 690/776/58 681/767/304 +f 681/767/304 690/776/58 691/777/63 +f 681/767/304 691/777/63 682/768/305 +f 682/768/305 691/777/63 692/778/315 +f 682/768/305 692/778/315 683/769/37 +f 693/779/37 694/780/316 691/777/63 +f 691/777/63 694/780/316 692/778/315 +f 684/770/14 695/781/14 685/771/38 +f 685/771/38 695/781/14 696/782/38 +f 685/771/38 696/782/38 688/774/48 +f 688/774/48 696/782/38 697/783/48 +f 688/774/48 697/783/48 689/775/53 +f 689/775/53 697/783/48 698/784/53 +f 689/775/53 698/784/53 690/776/58 +f 690/776/58 698/784/53 699/785/58 +f 690/776/58 699/785/58 691/777/63 +f 691/777/63 699/785/58 700/786/63 +f 691/777/63 700/786/63 693/779/37 +f 693/779/37 700/786/63 701/787/37 +f 702/788/14 684/770/14 703/789/313 +f 703/789/313 684/770/14 686/772/313 +f 703/789/313 686/772/313 704/790/314 +f 704/790/314 686/772/313 687/773/314 +f 704/790/314 687/773/314 705/791/298 +f 705/791/298 687/773/314 677/763/298 +f 677/763/298 636/722/298 705/791/298 +f 705/791/298 636/722/298 706/792/298 +f 636/722/298 635/721/297 706/793/298 +f 706/793/298 635/721/297 707/794/297 +f 707/794/297 635/721/297 676/762/311 +f 707/794/297 676/762/311 708/795/311 +f 708/795/311 676/762/311 709/796/310 +f 709/796/310 676/762/311 675/761/310 +f 709/796/310 675/761/310 710/797/309 +f 710/797/309 675/761/310 674/760/309 +f 710/797/309 674/760/309 673/759/308 +f 710/797/309 673/759/308 711/798/308 +f 711/798/308 673/759/308 628/714/8 +f 711/798/308 628/714/8 712/799/8 +f 628/714/8 586/672/8 712/799/8 +f 712/799/8 586/672/8 713/800/8 +f 586/672/8 588/674/288 713/800/8 +f 713/800/8 588/674/288 714/801/288 +f 714/801/288 588/674/288 590/676/289 +f 714/801/288 590/676/289 715/802/289 +f 715/802/289 590/676/289 716/803/291 +f 716/803/291 590/676/289 592/678/291 +f 716/803/291 592/678/291 717/804/292 +f 717/804/292 592/678/291 594/680/292 +f 717/804/292 594/680/292 596/682/293 +f 717/804/292 596/682/293 718/805/293 +f 718/805/293 596/682/293 579/665/275 +f 718/805/293 579/665/275 719/806/275 +f 579/665/275 564/650/275 719/807/275 +f 719/807/275 564/650/275 720/808/275 +f 720/808/275 564/650/275 721/809/274 +f 721/809/274 564/650/275 563/649/274 +f 721/809/274 563/649/274 722/810/286 +f 722/810/286 563/649/274 578/664/286 +f 722/810/286 578/664/286 723/811/2 +f 723/811/2 578/664/286 561/647/2 +f 561/647/2 562/648/2 723/811/2 +f 723/811/2 562/648/2 724/812/2 +f 723/811/2 724/812/2 725/813/158 +f 725/813/158 724/812/2 726/814/158 +f 725/813/158 726/814/158 727/815/157 +f 727/815/157 726/814/158 728/816/157 +f 727/815/157 728/816/157 729/817/156 +f 729/817/156 728/816/157 730/818/156 +f 729/817/156 730/818/156 731/819/155 +f 731/819/155 730/818/156 732/820/155 +f 731/819/155 732/820/155 733/821/154 +f 733/821/154 732/820/155 734/822/154 +f 733/821/154 734/822/154 735/823/25 +f 735/823/25 734/822/154 736/824/25 +f 737/825/25 738/826/317 739/827/25 +f 739/827/25 738/826/317 733/821/154 +f 739/827/25 733/821/154 740/828/25 +f 740/828/25 733/821/154 735/823/25 +f 738/826/317 741/829/318 733/821/154 +f 733/821/154 741/829/318 731/819/155 +f 731/819/155 741/829/318 742/830/319 +f 731/819/155 742/830/319 729/817/156 +f 729/817/156 742/830/319 743/831/320 +f 729/817/156 743/831/320 727/815/157 +f 727/815/157 743/831/320 744/832/321 +f 727/815/157 744/832/321 725/813/158 +f 725/813/158 744/832/321 721/809/274 +f 725/813/158 721/809/274 722/810/286 +f 744/832/321 720/808/275 721/809/274 +f 722/810/286 723/811/2 725/813/158 +f 737/825/25 745/833/25 738/826/317 +f 738/826/317 745/833/25 746/834/317 +f 738/826/317 746/834/317 741/829/318 +f 741/829/318 746/834/317 747/835/318 +f 741/829/318 747/835/318 742/830/319 +f 742/830/319 747/835/318 748/836/319 +f 742/830/319 748/836/319 743/831/320 +f 743/831/320 748/836/319 749/837/322 +f 743/831/320 749/837/322 744/832/321 +f 744/832/321 749/837/322 750/838/321 +f 744/832/321 750/838/321 720/808/275 +f 720/808/275 750/838/321 719/807/275 +f 751/839/25 752/840/244 753/841/25 +f 753/841/25 752/840/244 754/842/249 +f 753/841/25 754/842/249 755/843/25 +f 755/843/25 754/842/249 756/844/323 +f 755/843/25 756/844/323 757/845/25 +f 757/845/25 756/844/323 758/846/251 +f 757/845/25 758/846/251 759/847/25 +f 759/847/25 758/846/251 760/848/252 +f 759/847/25 760/848/252 761/849/25 +f 761/849/25 760/848/252 762/850/253 +f 761/849/25 762/850/253 745/851/25 +f 745/851/25 762/850/253 746/852/317 +f 746/852/317 762/850/253 763/853/254 +f 746/852/317 763/853/254 747/835/318 +f 747/835/318 763/853/254 764/854/255 +f 747/835/318 764/854/255 748/836/319 +f 748/836/319 764/854/255 765/855/324 +f 748/836/319 765/855/324 749/837/322 +f 749/837/322 765/855/324 766/856/257 +f 749/837/322 766/856/257 750/857/321 +f 750/857/321 766/856/257 719/806/275 +f 719/806/275 766/856/257 718/805/293 +f 718/805/293 766/856/257 767/858/273 +f 718/805/293 767/858/273 717/804/292 +f 717/804/292 767/858/273 768/859/272 +f 717/804/292 768/859/272 716/803/291 +f 716/803/291 768/859/272 769/860/325 +f 716/803/291 769/860/325 715/802/289 +f 715/802/289 769/860/325 770/861/270 +f 715/802/289 770/861/270 714/801/288 +f 714/801/288 770/861/270 771/862/219 +f 714/801/288 771/862/219 713/800/8 +f 752/840/244 772/863/239 754/842/249 +f 754/842/249 772/863/239 773/864/258 +f 754/842/249 773/864/258 756/844/323 +f 756/844/323 773/864/258 774/865/259 +f 756/844/323 774/865/259 758/846/251 +f 758/846/251 774/865/259 775/866/326 +f 758/846/251 775/866/326 760/848/252 +f 760/848/252 775/866/326 776/867/261 +f 760/848/252 776/867/261 762/850/253 +f 762/850/253 776/867/261 763/853/254 +f 772/863/239 777/868/234 773/864/258 +f 773/864/258 777/868/234 778/869/262 +f 773/864/258 778/869/262 774/865/259 +f 774/865/259 778/869/262 779/870/263 +f 774/865/259 779/870/263 775/866/326 +f 775/866/326 779/870/263 780/871/264 +f 775/866/326 780/871/264 776/867/261 +f 776/867/261 780/871/264 781/872/265 +f 776/867/261 781/872/265 763/853/254 +f 763/853/254 781/872/265 764/854/255 +f 777/868/234 782/873/229 778/869/262 +f 778/869/262 782/873/229 783/874/266 +f 778/869/262 783/874/266 779/870/263 +f 779/870/263 783/874/266 784/875/267 +f 779/870/263 784/875/267 780/871/264 +f 780/871/264 784/875/267 785/876/268 +f 780/871/264 785/876/268 781/872/265 +f 781/872/265 785/876/268 786/877/269 +f 781/872/265 786/877/269 764/854/255 +f 764/854/255 786/877/269 765/855/324 +f 782/873/229 771/862/219 783/874/266 +f 783/874/266 771/862/219 770/861/270 +f 783/874/266 770/861/270 784/875/267 +f 784/875/267 770/861/270 769/860/325 +f 784/875/267 769/860/325 785/876/268 +f 785/876/268 769/860/325 768/859/272 +f 785/876/268 768/859/272 786/877/269 +f 786/877/269 768/859/272 767/858/273 +f 786/877/269 767/858/273 765/855/324 +f 765/855/324 767/858/273 766/856/257 +f 751/839/25 787/878/25 752/840/244 +f 752/840/244 787/878/25 788/879/244 +f 752/840/244 788/879/244 772/863/239 +f 772/863/239 788/879/244 789/880/239 +f 772/863/239 789/880/239 777/868/234 +f 777/868/234 789/880/239 790/881/234 +f 777/868/234 790/881/234 782/873/229 +f 782/873/229 790/881/234 791/882/229 +f 782/873/229 791/882/229 771/862/219 +f 771/862/219 791/882/229 792/883/219 +f 771/862/219 792/883/219 713/800/8 +f 713/800/8 792/883/219 712/799/8 +f 793/884/25 794/885/25 795/886/228 +f 795/886/228 794/885/25 796/887/327 +f 795/886/228 796/887/327 797/888/328 +f 795/886/228 797/888/328 798/889/227 +f 798/889/227 797/888/328 799/890/329 +f 798/889/227 799/890/329 800/891/226 +f 800/891/226 799/890/329 801/892/330 +f 800/891/226 801/892/330 802/893/225 +f 802/893/225 801/892/330 803/894/331 +f 802/893/225 803/894/331 804/895/224 +f 804/895/224 803/894/331 706/793/298 +f 804/895/224 706/793/298 707/794/297 +f 804/895/224 707/794/297 805/896/223 +f 805/896/223 707/794/297 708/795/311 +f 805/896/223 708/795/311 806/897/222 +f 806/897/222 708/795/311 709/796/310 +f 806/897/222 709/796/310 807/898/221 +f 807/898/221 709/796/310 710/797/309 +f 807/898/221 710/797/309 808/899/220 +f 808/899/220 710/797/309 711/798/308 +f 808/899/220 711/798/308 792/883/219 +f 792/883/219 711/798/308 712/799/8 +f 792/883/219 791/882/229 808/899/220 +f 808/899/220 791/882/229 809/900/230 +f 808/899/220 809/900/230 807/898/221 +f 807/898/221 809/900/230 810/901/231 +f 807/898/221 810/901/231 806/897/222 +f 806/897/222 810/901/231 811/902/232 +f 806/897/222 811/902/232 805/896/223 +f 805/896/223 811/902/232 812/903/233 +f 805/896/223 812/903/233 804/895/224 +f 804/895/224 812/903/233 802/893/225 +f 791/882/229 790/881/234 809/900/230 +f 809/900/230 790/881/234 813/904/235 +f 809/900/230 813/904/235 810/901/231 +f 810/901/231 813/904/235 814/905/332 +f 810/901/231 814/905/332 811/902/232 +f 811/902/232 814/905/332 815/906/237 +f 811/902/232 815/906/237 812/903/233 +f 812/903/233 815/906/237 816/907/238 +f 812/903/233 816/907/238 802/893/225 +f 802/893/225 816/907/238 800/891/226 +f 790/881/234 789/880/239 813/904/235 +f 813/904/235 789/880/239 817/908/240 +f 813/904/235 817/908/240 814/905/332 +f 814/905/332 817/908/240 818/909/241 +f 814/905/332 818/909/241 815/906/237 +f 815/906/237 818/909/241 819/910/333 +f 815/906/237 819/910/333 816/907/238 +f 816/907/238 819/910/333 820/911/243 +f 816/907/238 820/911/243 800/891/226 +f 800/891/226 820/911/243 798/889/227 +f 789/880/239 788/879/244 817/908/240 +f 817/908/240 788/879/244 821/912/245 +f 817/908/240 821/912/245 818/909/241 +f 818/909/241 821/912/245 822/913/334 +f 818/909/241 822/913/334 819/910/333 +f 819/910/333 822/913/334 823/914/247 +f 819/910/333 823/914/247 820/911/243 +f 820/911/243 823/914/247 824/915/248 +f 820/911/243 824/915/248 798/889/227 +f 798/889/227 824/915/248 795/886/228 +f 787/878/25 825/916/25 788/879/244 +f 788/879/244 825/916/25 821/912/245 +f 825/916/25 826/917/25 821/912/245 +f 821/912/245 826/917/25 822/913/334 +f 826/917/25 827/918/25 822/913/334 +f 822/913/334 827/918/25 823/914/247 +f 827/918/25 828/919/25 823/914/247 +f 823/914/247 828/919/25 824/915/248 +f 828/919/25 793/884/25 824/915/248 +f 824/915/248 793/884/25 795/886/228 +f 794/920/25 829/921/25 796/922/327 +f 796/922/327 829/921/25 830/923/327 +f 796/922/327 830/923/327 797/924/328 +f 797/924/328 830/923/327 831/925/328 +f 797/924/328 831/925/328 799/926/329 +f 799/926/329 831/925/328 832/927/329 +f 799/926/329 832/927/329 801/892/330 +f 801/892/330 832/927/329 833/928/330 +f 801/892/330 833/928/330 803/894/331 +f 803/894/331 833/928/330 834/929/335 +f 803/894/331 834/929/335 706/792/298 +f 706/792/298 834/929/335 705/791/298 +f 835/930/25 836/931/214 837/932/25 +f 837/932/25 836/931/214 838/933/336 +f 837/932/25 838/933/336 839/934/25 +f 839/934/25 838/933/336 830/923/327 +f 839/934/25 830/923/327 829/921/25 +f 836/931/214 840/935/209 838/933/336 +f 838/933/336 840/935/209 841/936/337 +f 838/933/336 841/936/337 830/923/327 +f 830/923/327 841/936/337 831/925/328 +f 831/925/328 841/936/337 842/937/338 +f 831/925/328 842/937/338 832/927/329 +f 832/927/329 842/937/338 843/938/339 +f 832/927/329 843/938/339 833/928/330 +f 833/928/330 843/938/339 844/939/340 +f 833/928/330 844/939/340 834/929/335 +f 834/929/335 844/939/340 704/790/314 +f 834/929/335 704/790/314 705/791/298 +f 840/935/209 845/940/204 841/936/337 +f 841/936/337 845/940/204 842/937/338 +f 845/940/204 846/941/199 842/937/338 +f 842/937/338 846/941/199 843/938/339 +f 846/941/199 847/942/189 843/938/339 +f 843/938/339 847/942/189 844/939/340 +f 702/788/14 703/789/313 847/942/189 +f 847/942/189 703/789/313 844/939/340 +f 703/789/313 704/790/314 844/939/340 +f 835/930/25 848/943/25 836/931/214 +f 836/931/214 848/943/25 849/944/214 +f 836/931/214 849/944/214 840/935/209 +f 840/935/209 849/944/214 850/945/209 +f 840/935/209 850/945/209 845/940/204 +f 845/940/204 850/945/209 851/946/204 +f 845/940/204 851/946/204 846/941/199 +f 846/941/199 851/946/204 852/947/199 +f 846/941/199 852/947/199 847/942/189 +f 847/942/189 852/947/199 853/948/189 +f 847/942/189 853/948/189 702/788/14 +f 702/788/14 853/948/189 854/949/14 +f 848/950/25 835/951/25 736/952/25 +f 736/952/25 835/951/25 735/953/25 +f 735/953/25 835/951/25 837/954/25 +f 735/953/25 837/954/25 740/955/25 +f 740/955/25 837/954/25 839/956/25 +f 740/955/25 839/956/25 739/957/25 +f 739/957/25 839/956/25 737/958/25 +f 737/958/25 839/956/25 829/959/25 +f 737/958/25 829/959/25 745/960/25 +f 745/960/25 829/959/25 751/961/25 +f 745/960/25 751/961/25 761/962/25 +f 761/962/25 751/961/25 759/963/25 +f 759/963/25 751/961/25 757/964/25 +f 757/964/25 751/961/25 755/965/25 +f 755/965/25 751/961/25 753/966/25 +f 751/961/25 829/959/25 787/967/25 +f 787/967/25 829/959/25 794/968/25 +f 787/967/25 794/968/25 793/969/25 +f 793/969/25 828/970/25 787/967/25 +f 787/967/25 828/970/25 827/971/25 +f 787/967/25 827/971/25 826/972/25 +f 826/972/25 825/973/25 787/967/25 +f 855/974/341 856/975/342 100/976/343 +f 100/976/343 856/975/342 110/977/342 +f 110/977/342 856/975/342 857/978/344 +f 110/977/342 857/978/344 109/979/345 +f 109/979/345 857/978/344 108/980/2 +f 108/980/2 857/978/344 858/981/2 +f 108/980/2 858/981/2 121/982/346 +f 121/982/346 858/981/2 859/983/347 +f 121/982/346 859/983/347 860/984/348 +f 121/982/346 860/984/348 120/985/348 +f 120/985/348 860/984/348 861/986/349 +f 120/985/348 861/986/349 118/987/349 +f 861/986/349 862/988/349 118/987/349 +f 118/987/349 862/988/349 101/989/349 +f 111/990/350 112/991/351 863/992/350 +f 863/992/350 112/991/351 864/993/351 +f 864/993/351 112/991/351 113/994/352 +f 864/993/351 113/994/352 865/995/353 +f 865/995/353 113/994/352 866/996/14 +f 866/996/14 113/994/352 114/997/14 +f 866/996/14 114/997/14 867/998/354 +f 867/998/354 114/997/14 115/999/355 +f 867/998/354 115/999/355 116/1000/356 +f 867/998/354 116/1000/356 868/1001/356 +f 868/1001/356 116/1000/356 117/1002/357 +f 868/1001/356 117/1002/357 869/1003/357 +f 870/1004/37 862/988/37 352/404/37 +f 352/404/37 862/988/37 156/208/37 +f 352/404/37 156/208/37 254/306/37 +f 254/306/37 156/208/37 243/295/37 +f 243/295/37 156/208/37 155/207/37 +f 243/295/37 155/207/37 173/225/37 +f 550/636/37 549/635/37 870/1004/37 +f 870/1004/37 549/635/37 577/663/37 +f 870/1004/37 577/663/37 576/662/37 +f 576/662/37 575/661/37 870/1004/37 +f 870/1004/37 575/661/37 612/698/37 +f 870/1004/37 612/698/37 871/1005/37 +f 871/1005/37 612/698/37 634/720/37 +f 871/1005/37 634/720/37 693/779/37 +f 693/779/37 634/720/37 683/769/37 +f 693/779/37 683/769/37 692/778/315 +f 612/698/37 575/661/37 610/696/37 +f 610/696/37 575/661/37 585/671/37 +f 610/696/37 585/671/37 608/694/37 +f 608/694/37 585/671/37 606/692/37 +f 606/692/37 585/671/37 604/690/37 +f 604/690/37 585/671/37 602/688/37 +f 634/720/37 656/742/37 683/769/37 +f 683/769/37 656/742/37 647/733/37 +f 647/733/37 656/742/37 654/740/37 +f 647/733/37 654/740/37 652/738/37 +f 652/738/37 650/736/37 647/733/37 +f 647/733/37 650/736/37 648/734/37 +f 692/778/315 694/780/316 693/779/37 +f 693/779/37 701/787/37 871/1005/37 +f 863/992/37 855/974/37 871/1005/37 +f 871/1005/37 855/974/37 872/1006/37 +f 871/1005/37 872/1006/37 870/1004/37 +f 870/1004/37 872/1006/37 862/988/37 +f 864/993/37 869/1003/37 863/992/37 +f 863/992/37 869/1003/37 858/981/37 +f 863/992/37 858/981/37 857/978/37 +f 869/1003/37 864/993/37 868/1001/37 +f 868/1001/37 864/993/37 865/995/37 +f 868/1001/37 865/995/37 867/998/37 +f 867/998/37 865/995/37 866/996/37 +f 156/208/37 861/986/37 869/1003/37 +f 869/1003/37 861/986/37 860/984/37 +f 869/1003/37 860/984/37 859/983/37 +f 243/295/37 173/225/37 244/296/37 +f 244/296/37 173/225/37 198/250/37 +f 244/296/37 198/250/37 245/297/37 +f 245/297/37 198/250/37 194/246/37 +f 245/297/37 194/246/37 205/257/37 +f 198/250/37 197/249/37 194/246/37 +f 194/246/37 197/249/37 196/248/37 +f 194/246/37 196/248/37 195/247/37 +f 222/274/37 247/299/37 205/257/37 +f 205/257/37 247/299/37 246/298/37 +f 205/257/37 246/298/37 245/297/37 +f 271/323/37 342/394/37 254/306/37 +f 254/306/37 342/394/37 341/393/37 +f 254/306/37 341/393/37 352/404/37 +f 342/394/37 271/323/37 343/395/37 +f 343/395/37 271/323/37 296/348/37 +f 343/395/37 296/348/37 303/355/37 +f 303/355/37 296/348/37 292/344/37 +f 292/344/37 296/348/37 295/347/37 +f 292/344/37 295/347/37 294/346/37 +f 294/346/37 293/345/37 292/344/37 +f 320/372/37 345/397/37 303/355/37 +f 303/355/37 345/397/37 344/396/37 +f 303/355/37 344/396/37 343/395/37 +f 862/988/37 861/986/37 156/208/37 +f 859/983/37 858/981/37 869/1003/37 +f 857/978/37 856/975/37 863/992/37 +f 863/992/37 856/975/37 855/974/37 +f 117/1002/357 141/1007/357 869/1003/357 +f 869/1003/357 141/1007/357 143/1008/357 +f 869/1003/357 143/1008/357 145/1009/357 +f 117/1002/357 119/1010/357 141/1007/357 +f 145/1009/357 147/1011/358 869/1003/357 +f 869/1003/357 147/1011/358 149/1012/357 +f 869/1003/357 149/1012/357 150/1013/359 +f 150/1013/359 152/1014/360 869/1003/357 +f 869/1003/357 152/1014/360 154/1015/357 +f 869/1003/357 154/1015/357 156/208/358 +f 100/976/343 99/1016/341 855/974/341 +f 855/974/341 99/1016/341 872/1006/341 +f 863/992/350 871/1005/350 111/990/350 +f 111/990/350 871/1005/350 98/1017/350 +f 101/989/14 862/988/14 99/1016/14 +f 99/1016/14 862/988/14 872/1006/14 +f 107/1018/2 97/1019/2 346/1020/2 +f 346/1020/2 97/1019/2 870/1004/2 +f 346/1020/2 870/1004/2 347/1021/2 +f 347/1021/2 870/1004/2 348/1022/2 +f 348/1022/2 870/1004/2 349/1023/2 +f 349/1023/2 870/1004/2 350/1024/2 +f 350/1024/2 870/1004/2 351/1025/2 +f 351/1025/2 870/1004/2 352/404/2 +f 695/781/14 684/770/14 854/949/14 +f 854/949/14 684/770/14 702/788/14 +f 700/786/20 699/1026/20 701/787/20 +f 701/787/20 699/1026/20 698/784/20 +f 701/787/20 698/784/20 697/783/20 +f 697/783/20 696/1027/20 701/787/20 +f 701/787/20 696/1027/20 695/1028/20 +f 701/787/20 695/1028/20 871/1005/20 +f 871/1005/20 695/1028/20 98/1029/20 +f 98/1029/20 695/1028/20 854/1030/20 +f 98/1029/20 854/1030/20 848/1031/20 +f 848/1031/20 854/1030/20 853/1032/20 +f 848/1031/20 853/1032/20 852/947/20 +f 852/947/20 851/946/20 848/1031/20 +f 848/1031/20 851/946/20 850/945/20 +f 848/1031/20 850/945/20 849/1033/20 +f 848/1031/20 736/1034/20 98/1029/20 +f 98/1029/20 736/1034/20 724/1035/20 +f 98/1029/20 724/1035/20 97/1036/20 +f 97/1036/20 724/1035/20 562/1037/20 +f 97/1036/20 562/1037/20 870/1004/20 +f 870/1004/20 562/1037/20 550/636/20 +f 550/636/20 562/1037/20 560/646/20 +f 550/636/20 560/646/20 558/644/20 +f 734/1038/20 732/1039/20 736/1034/20 +f 736/1034/20 732/1039/20 730/818/20 +f 736/1034/20 730/818/20 728/816/20 +f 728/816/20 726/1040/20 736/1034/20 +f 736/1034/20 726/1040/20 724/1035/20 +f 558/644/20 556/642/20 550/636/20 +f 550/636/20 556/642/20 554/1041/20 +f 550/636/20 554/1041/20 552/638/20 +f 127/1042/1 873/1043/1 128/1044/2 +f 128/1044/2 873/1043/1 874/1045/2 +f 128/1044/2 874/1045/2 106/1046/3 +f 106/1046/3 874/1045/2 875/1047/3 +f 106/1046/3 875/1047/3 105/1048/4 +f 105/1048/4 875/1047/3 876/1049/4 +f 105/1048/4 876/1049/4 104/1050/5 +f 104/1050/5 876/1049/4 877/1051/5 +f 104/1050/5 877/1051/5 102/1052/6 +f 102/1052/6 877/1051/5 878/1053/6 +f 102/1052/6 878/1053/6 103/1054/7 +f 103/1054/7 878/1053/6 879/1055/7 +f 103/1054/7 879/1055/7 129/1056/8 +f 129/1056/8 879/1055/7 880/1057/8 +f 129/1058/8 880/1059/8 130/1060/9 +f 130/1060/9 880/1059/8 881/1061/9 +f 130/1060/9 881/1061/9 131/1062/10 +f 131/1062/10 881/1061/9 882/1063/10 +f 131/1062/10 882/1063/10 132/1064/11 +f 132/1064/11 882/1063/10 883/1065/11 +f 132/1064/11 883/1065/11 133/1066/12 +f 133/1066/12 883/1065/11 884/1067/12 +f 133/1066/12 884/1067/12 134/1068/13 +f 134/1068/13 884/1067/12 885/1069/13 +f 134/1068/13 885/1069/13 122/1070/14 +f 122/1070/14 885/1069/13 886/1071/14 +f 122/1070/14 886/1071/14 123/1072/15 +f 123/1072/15 886/1071/14 887/1073/15 +f 123/1074/15 887/1075/15 135/1076/16 +f 135/1076/16 887/1075/15 888/1077/16 +f 135/1076/16 888/1077/16 136/1078/17 +f 136/1078/17 888/1077/16 889/1079/17 +f 136/1078/17 889/1079/17 137/1080/18 +f 137/1080/18 889/1079/17 890/1081/18 +f 137/1080/18 890/1081/18 138/1082/19 +f 138/1082/19 890/1081/18 891/1083/19 +f 138/1082/19 891/1083/19 124/1084/20 +f 124/1084/20 891/1083/19 892/1085/20 +f 124/1084/20 892/1085/20 125/1086/21 +f 125/1086/21 892/1085/20 893/1087/21 +f 125/1086/21 893/1087/21 126/1088/22 +f 126/1088/22 893/1087/21 894/1089/22 +f 126/1088/22 894/1089/22 139/1090/23 +f 139/1090/23 894/1089/22 895/1091/23 +f 139/1090/23 895/1091/23 140/1092/24 +f 140/1092/24 895/1091/23 896/1093/24 +f 140/1092/24 896/1093/24 127/1042/1 +f 127/1042/1 896/1093/24 873/1043/1 +f 897/1094/20 898/1095/20 899/1096/19 +f 899/1096/19 898/1095/20 900/1097/19 +f 899/1096/19 900/1097/19 901/1098/18 +f 901/1098/18 900/1097/19 902/1099/18 +f 901/1098/18 902/1099/18 903/1100/17 +f 903/1100/17 902/1099/18 904/1101/17 +f 903/1100/17 904/1101/17 905/1102/16 +f 905/1102/16 904/1101/17 906/1103/16 +f 905/1102/16 906/1103/16 907/1104/15 +f 907/1104/15 906/1103/16 908/1105/15 +f 907/1104/15 908/1105/15 909/1106/14 +f 909/1106/14 908/1105/15 910/1107/14 +f 910/1107/14 911/1108/14 909/1109/14 +f 909/1109/14 911/1108/14 912/1110/14 +f 6/1111/37 4/1112/37 913/1113/37 +f 913/1113/37 4/1112/37 2/1114/37 +f 913/1113/37 2/1114/37 914/1115/37 +f 914/1115/37 2/1114/37 48/1116/37 +f 914/1115/37 48/1116/37 46/1117/37 +f 914/1115/37 46/1117/37 877/1118/37 +f 877/1118/37 46/1117/37 44/1119/37 +f 877/1118/37 44/1119/37 878/1120/37 +f 878/1120/37 44/1119/37 42/1121/37 +f 878/1120/37 42/1121/37 879/1122/37 +f 879/1122/37 42/1121/37 52/1123/37 +f 879/1122/37 52/1123/37 880/1124/37 +f 880/1124/37 52/1123/37 50/1125/37 +f 880/1124/37 50/1125/37 881/1126/37 +f 881/1126/37 50/1125/37 96/1127/37 +f 881/1126/37 96/1127/37 882/1128/37 +f 882/1128/37 96/1127/37 94/1129/37 +f 882/1128/37 94/1129/37 883/1130/37 +f 883/1130/37 94/1129/37 92/1131/37 +f 883/1130/37 92/1131/37 884/1132/37 +f 884/1132/37 92/1131/37 90/1133/37 +f 884/1132/37 90/1133/37 885/1134/37 +f 885/1134/37 90/1133/37 88/1135/37 +f 885/1134/37 88/1135/37 886/1136/37 +f 886/1136/37 88/1135/37 86/1137/37 +f 886/1136/37 86/1137/37 898/1095/37 +f 898/1095/37 86/1137/37 910/1107/37 +f 898/1095/37 910/1107/37 908/1105/37 +f 42/1121/37 40/1138/37 52/1123/37 +f 52/1123/37 40/1138/37 54/1139/37 +f 54/1139/37 40/1138/37 38/1140/37 +f 54/1139/37 38/1140/37 56/1141/37 +f 56/1141/37 38/1140/37 36/1142/37 +f 56/1141/37 36/1142/37 58/1143/37 +f 58/1143/37 36/1142/37 34/1144/37 +f 58/1143/37 34/1144/37 60/1145/37 +f 60/1145/37 34/1144/37 32/1146/37 +f 60/1145/37 32/1146/37 62/1147/37 +f 62/1147/37 32/1146/37 30/1148/37 +f 62/1147/37 30/1148/37 64/1149/37 +f 64/1149/37 30/1148/37 28/1150/37 +f 64/1149/37 28/1150/37 915/1151/37 +f 915/1151/37 28/1150/37 26/1152/37 +f 915/1151/37 26/1152/37 24/1153/37 +f 24/1153/37 22/1154/37 915/1151/37 +f 915/1151/37 22/1154/37 20/1155/37 +f 915/1151/37 20/1155/37 18/1156/37 +f 18/1156/37 16/1157/37 915/1151/37 +f 915/1151/37 16/1157/37 913/1113/37 +f 913/1113/37 16/1157/37 14/1158/37 +f 913/1113/37 14/1158/37 12/1159/37 +f 12/1159/37 10/1160/37 913/1113/37 +f 913/1113/37 10/1160/37 8/1161/37 +f 913/1113/37 8/1161/37 6/1111/37 +f 86/1137/37 84/1162/37 910/1107/37 +f 910/1107/37 84/1162/37 82/1163/37 +f 910/1107/37 82/1163/37 80/1164/37 +f 80/1164/37 78/1165/37 910/1107/37 +f 910/1107/37 78/1165/37 76/1166/37 +f 910/1107/37 76/1166/37 911/1108/37 +f 911/1108/37 76/1166/37 74/1167/37 +f 911/1108/37 74/1167/37 72/1168/37 +f 72/1168/37 70/1169/37 911/1108/37 +f 911/1108/37 70/1169/37 68/1170/37 +f 911/1108/37 68/1170/37 915/1151/37 +f 915/1151/37 68/1170/37 66/1171/37 +f 915/1151/37 66/1171/37 64/1149/37 +f 875/1172/37 874/1173/37 916/1174/37 +f 916/1174/37 874/1173/37 873/1175/37 +f 916/1174/37 873/1175/37 917/1176/37 +f 917/1176/37 873/1175/37 896/1177/37 +f 917/1176/37 896/1177/37 895/1178/37 +f 895/1178/37 894/1179/37 917/1176/37 +f 917/1176/37 894/1179/37 893/1180/37 +f 917/1176/37 893/1180/37 892/1181/37 +f 892/1181/37 891/1182/37 917/1176/37 +f 917/1176/37 891/1182/37 898/1095/37 +f 898/1095/37 891/1182/37 890/1183/37 +f 898/1095/37 890/1183/37 889/1184/37 +f 889/1184/37 888/1185/37 898/1095/37 +f 898/1095/37 888/1185/37 887/1186/37 +f 898/1095/37 887/1186/37 886/1136/37 +f 914/1115/37 877/1118/37 916/1174/37 +f 916/1174/37 877/1118/37 876/1187/37 +f 916/1174/37 876/1187/37 875/1172/37 +f 908/1105/37 906/1103/37 898/1095/37 +f 898/1095/37 906/1103/37 904/1101/37 +f 898/1095/37 904/1101/37 902/1099/37 +f 902/1099/37 900/1097/37 898/1095/37 +f 918/1188/37 919/1189/37 917/1176/37 +f 917/1176/37 919/1189/37 920/1190/37 +f 917/1176/37 920/1190/37 921/1191/37 +f 921/1191/37 922/1192/37 917/1176/37 +f 917/1176/37 922/1192/37 916/1174/37 +f 914/1115/37 923/1193/37 913/1113/37 +f 913/1113/37 923/1193/37 924/1194/37 +f 913/1113/37 924/1194/37 925/1195/37 +f 925/1195/37 926/1196/37 913/1113/37 +f 913/1113/37 926/1196/37 927/1197/37 +f 928/1198/37 929/1199/37 915/1151/37 +f 915/1151/37 929/1199/37 930/1200/37 +f 915/1151/37 930/1200/37 931/1201/37 +f 931/1201/37 932/1202/37 915/1151/37 +f 915/1151/37 932/1202/37 911/1108/37 +f 933/1203/2 916/1174/2 934/1204/1 +f 934/1204/1 916/1174/2 922/1192/1 +f 934/1204/1 922/1192/1 935/1205/24 +f 935/1205/24 922/1192/1 921/1191/24 +f 935/1205/24 921/1191/24 936/1206/23 +f 936/1206/23 921/1191/24 920/1190/23 +f 936/1206/23 920/1190/23 937/1207/22 +f 937/1207/22 920/1190/23 919/1189/22 +f 937/1207/22 919/1189/22 938/1208/21 +f 938/1208/21 919/1189/22 918/1188/21 +f 938/1208/21 918/1188/21 939/1209/20 +f 939/1209/20 918/1188/21 917/1176/20 +f 933/1210/2 940/1211/2 916/1174/2 +f 916/1174/2 940/1211/2 914/1115/2 +f 941/1212/8 913/1113/8 942/1213/7 +f 942/1213/7 913/1113/8 927/1197/7 +f 942/1213/7 927/1197/7 943/1214/6 +f 943/1214/6 927/1197/7 926/1196/6 +f 943/1214/6 926/1196/6 944/1215/5 +f 944/1215/5 926/1196/6 925/1195/5 +f 944/1215/5 925/1195/5 945/1216/4 +f 945/1216/4 925/1195/5 924/1194/4 +f 945/1216/4 924/1194/4 946/1217/3 +f 946/1217/3 924/1194/4 923/1193/3 +f 946/1217/3 923/1193/3 940/1218/2 +f 940/1218/2 923/1193/3 914/1115/2 +f 912/1219/14 911/1108/14 947/1220/13 +f 947/1220/13 911/1108/14 932/1202/13 +f 947/1220/13 932/1202/13 948/1221/12 +f 948/1221/12 932/1202/13 931/1201/12 +f 948/1221/12 931/1201/12 949/1222/11 +f 949/1222/11 931/1201/12 930/1200/11 +f 949/1222/11 930/1200/11 950/1223/10 +f 950/1223/10 930/1200/11 929/1199/10 +f 950/1223/10 929/1199/10 951/1224/9 +f 951/1224/9 929/1199/10 928/1198/9 +f 951/1224/9 928/1198/9 952/1225/8 +f 952/1225/8 928/1198/9 915/1151/8 +f 941/1226/8 952/1227/8 913/1113/8 +f 913/1113/8 952/1227/8 915/1151/8 +f 897/1228/20 939/1229/20 898/1095/20 +f 898/1095/20 939/1229/20 917/1176/20 +f 899/1230/25 901/1231/25 897/1232/25 +f 897/1232/25 901/1231/25 903/1233/25 +f 897/1232/25 903/1233/25 905/1234/25 +f 905/1234/25 907/1235/25 897/1232/25 +f 897/1232/25 907/1235/25 909/1236/25 +f 897/1232/25 909/1236/25 933/1237/25 +f 933/1237/25 909/1236/25 940/1238/25 +f 940/1238/25 909/1236/25 912/1239/25 +f 940/1238/25 912/1239/25 941/1240/25 +f 941/1240/25 912/1239/25 952/1241/25 +f 952/1241/25 912/1239/25 947/1242/25 +f 952/1241/25 947/1242/25 948/1243/25 +f 948/1243/25 949/1244/25 952/1241/25 +f 952/1241/25 949/1244/25 950/1245/25 +f 952/1241/25 950/1245/25 951/1246/25 +f 942/1247/25 943/1248/25 941/1240/25 +f 941/1240/25 943/1248/25 944/1249/25 +f 941/1240/25 944/1249/25 945/1250/25 +f 945/1250/25 946/1251/25 941/1240/25 +f 941/1240/25 946/1251/25 940/1238/25 +f 897/1232/25 933/1237/25 939/1252/25 +f 939/1252/25 933/1237/25 934/1253/25 +f 939/1252/25 934/1253/25 935/1254/25 +f 935/1254/25 936/1255/25 939/1252/25 +f 939/1252/25 936/1255/25 937/1256/25 +f 939/1252/25 937/1256/25 938/1257/25 diff --git a/resources/meshes/Original_Prusa_i3_MK3S_MK3_platform.stl b/resources/meshes/Original_Prusa_i3_MK3S_MK3_platform.stl new file mode 100644 index 0000000000..3b38a7daa2 Binary files /dev/null and b/resources/meshes/Original_Prusa_i3_MK3S_MK3_platform.stl differ diff --git a/resources/meshes/alya_nx_platform.stl b/resources/meshes/alya_nx_platform.stl new file mode 100644 index 0000000000..a28da18298 Binary files /dev/null and b/resources/meshes/alya_nx_platform.stl differ diff --git a/resources/meshes/alya_platform.stl b/resources/meshes/alya_platform.stl new file mode 100644 index 0000000000..ee50861575 Binary files /dev/null and b/resources/meshes/alya_platform.stl differ diff --git a/resources/meshes/aneta6_platform.stl b/resources/meshes/aneta6_platform.stl new file mode 100644 index 0000000000..7352158785 Binary files /dev/null and b/resources/meshes/aneta6_platform.stl differ diff --git a/resources/meshes/anycubic_chiron_platform.obj b/resources/meshes/anycubic_chiron_platform.obj new file mode 100644 index 0000000000..7a9c8642fc --- /dev/null +++ b/resources/meshes/anycubic_chiron_platform.obj @@ -0,0 +1,150 @@ +# WaveFront *.obj file (generated by Autodesk ATF) +#Author: Patrick Glatt +mtllib ae48cbb4-79ca-43fd-95a7-5e2258fec6c5.mtl + +o Anycubic Chiron Platform +#vertex 1 +v 200.000000 200.000000 0.000000 +#vertex 2 +v 200.000000 -200.000000 0.000000 +#vertex 3 +v 200.000000 -200.000000 -4.000000 +#vertex 4 +v 200.000000 200.000000 -4.000000 +#vertex 5 +v -200.000000 200.000000 0.000000 +#vertex 6 +v -200.000000 200.000000 -4.000000 +#vertex 7 +v -200.000000 -200.000000 0.000000 +#vertex 8 +v -200.000000 -200.000000 -4.000000 + +#vt right +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +#vt front +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +#vt left +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +#vt back +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 +#vt top (only the color of the (0.000000 1.000000 0.000000) corner in logo) +#vt 0.000000 1.000000 0.000000 +#vt 0.000000 1.000000 0.000000 +#vt 0.000000 1.000000 0.000000 +#vt 0.000000 1.000000 0.000000 +#vt top (full logo) +vt 0.00000 0.000000 0.000000 +vt 1.000000 0.000000 0.000000 +vt 0.000000 1.000000 0.000000 +vt 1.000000 1.000000 0.000000 +#vt bottom +vt 0.000000 0.000000 0.000000 +vt 1.000000 0.000000 0.000000 +vt 0.000000 1.000000 0.000000 +vt 1.000000 1.000000 0.000000 + +#vn right +vn 0.000000 0.000000 0.000000 +vn 0.100000 0.000000 0.000000 +vn 0.100000 0.000000 0.000000 +vn 0.100000 0.000000 0.000000 +#vn front +vn 0.000000 0.100000 0.000000 +vn 0.000000 0.100000 0.000000 +vn 0.000000 0.100000 0.000000 +vn 0.000000 0.100000 0.000000 +#vn left +vn -0.100000 0.000000 0.000000 +vn -0.100000 0.000000 0.000000 +vn -0.100000 0.000000 0.000000 +vn -0.100000 0.000000 0.000000 +#vn back +vn 0.000000 -0.100000 0.000000 +vn 0.000000 -0.100000 0.000000 +vn 0.000000 -0.100000 0.000000 +vn 0.000000 -0.100000 0.000000 +#vn top +vn 0.000000 -0.000000 0.100000 +vn 0.000000 -0.000000 0.100000 +vn 0.000000 -0.000000 0.100000 +vn 0.000000 -0.000000 0.100000 +#vn bottom +vn 0.000000 0.000000 0.100000 +vn 0.000000 0.000000 0.100000 +vn 0.000000 0.000000 0.100000 +vn 0.000000 0.000000 0.100000 + +#faces f v{index}/vt{index}/vn{index}.. +#face right +f 1/1/1 2/2/1 4/3/1 +f 4/3/1 2/2/1 3/4/1 +#face front +f 5/5/5 1/6/5 6/7/5 +f 6/7/5 1/6/5 4/8/5 +#face left +f 7/9/9 5/10/9 8/11/9 +f 8/11/9 5/10/9 6/12/9 +#face back +f 2/13/13 7/14/13 3/15/13 +f 3/15/13 7/14/13 8/16/13 +#face top (uncomment this code if you want to see the logo on top too) +#f 7/17/17 2/18/17 1/20/17 5/19/17 +#face bottom +f 6/21/23 4/22/23 3/24/23 8/23/23 + + +o Small Logo Platform +#9 front left +v -50.000000 270.700000 70.700000 +#10 front right +v 50.000000 270.700000 70.700000 +#11 back right +v 50.000000 200.000000 0.000000 +#12 back left +v -50.000000 200.000000 0.000000 +#13 front left 2 +v -50.000000 270.700000 66.700000 +#14 front right2 +v 50.000000 270.700000 66.700000 +#15 back right 3 +v 50.000000 200.000000 -4.000000 +#16 back left2 +v -50.000000 200.000000 -4.000000 + +#vt's +vt 0.000000 1.000000 0.000000 +vt 0.000000 0.000000 0.000000 +vt 1.000000 0.000000 0.000000 +vt 1.000000 1.000000 0.000000 +vt 0.000000 1.000000 0.000000 + +#vn's +vn 0.000000 0.000000 1.000000 + +#faces f v{index}/vt{index}/vn{index}... +#right +f 10/1/1 11/2/1 15/3/1 14/4/1 +#front +f 9/4/5 10/8/5 14/7/5 13/8/5 +#left +f 12/9/9 9/10/9 13/11/9 16/12/9 +#back +f 11/13/13 12/14/13 16/15/13 15/16/13 +#top +f 12/26/25 11/27/25 10/28/25 9/25/25 +#bottom +f 13/13/23 14/14/23 15/15/23 16/16/23 + diff --git a/resources/meshes/creality_cr10spro.stl b/resources/meshes/creality_cr10spro.stl new file mode 100644 index 0000000000..df2167d1eb Binary files /dev/null and b/resources/meshes/creality_cr10spro.stl differ diff --git a/resources/meshes/creality_ender3.stl b/resources/meshes/creality_ender3.stl new file mode 100644 index 0000000000..b1fd101aad Binary files /dev/null and b/resources/meshes/creality_ender3.stl differ diff --git a/resources/meshes/creality_ender3_platform.stl b/resources/meshes/creality_ender3_platform.stl deleted file mode 100644 index 4c3699a530..0000000000 --- a/resources/meshes/creality_ender3_platform.stl +++ /dev/null @@ -1,19854 +0,0 @@ -solid OpenSCAD_Model - facet normal 0 0 -1 - outer loop - vertex -36.5262 -13.4531 -3 - vertex -35.4871 -14.1281 -3 - vertex -35.6081 -14.799 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.4871 -14.1281 -3 - vertex -35.9073 -13.512 -3 - vertex -35.5739 -13.718 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.4871 -14.1281 -3 - vertex -36.5262 -13.4531 -3 - vertex -35.9073 -13.512 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.2393 -13.2576 -3 - vertex -35.6081 -14.799 -3 - vertex -37.0548 -18.7102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.6081 -14.799 -3 - vertex -37.2393 -13.2576 -3 - vertex -36.5262 -13.4531 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.0548 -18.7102 -3 - vertex -37.5366 -12.7854 -3 - vertex -37.2393 -13.2576 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.3951 -12.1929 -3 - vertex -38.3729 23.836 -3 - vertex -37.6991 23.0789 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.3951 -12.1929 -3 - vertex -38.8382 24.6102 -3 - vertex -38.3729 23.836 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.3951 -12.1929 -3 - vertex -39.1303 25.4589 -3 - vertex -38.8382 24.6102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -47.2102 -36.2359 -3 - vertex -37.5366 -12.7854 -3 - vertex -39.9072 -25.4747 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -39.9072 -25.4747 -3 - vertex -37.5366 -12.7854 -3 - vertex -37.0548 -18.7102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.0976 22.0525 -3 - vertex -29.0303 22.3563 -3 - vertex -28.3511 21.9725 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.0976 22.0525 -3 - vertex -30.3878 23.2826 -3 - vertex -29.0303 22.3563 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -32.1178 22.3529 -3 - vertex -30.3878 23.2826 -3 - vertex -30.0976 22.0525 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -31.0943 24.213 -3 - vertex -34.2108 23.023 -3 - vertex -31.2773 24.779 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -34.2108 23.023 -3 - vertex -31.0943 24.213 -3 - vertex -32.1178 22.3529 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -30.3878 23.2826 -3 - vertex -32.1178 22.3529 -3 - vertex -31.0943 24.213 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.0647 23.8437 -3 - vertex -26.0224 24.2804 -3 - vertex -24.664 24.0122 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.3687 23.7586 -3 - vertex -26.0224 24.2804 -3 - vertex -26.0647 23.8437 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.3687 23.7586 -3 - vertex -28.1365 24.9019 -3 - vertex -26.0224 24.2804 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.4642 23.8513 -3 - vertex -28.1365 24.9019 -3 - vertex -27.3687 23.7586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.3958 24.13 -3 - vertex -28.1365 24.9019 -3 - vertex -28.4642 23.8513 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.3958 24.13 -3 - vertex -29.9035 25.8898 -3 - vertex -28.1365 24.9019 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.2081 24.6027 -3 - vertex -29.9035 25.8898 -3 - vertex -29.3958 24.13 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.8173 24.9813 -3 - vertex -29.9035 25.8898 -3 - vertex -30.2081 24.6027 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -31.1793 25.0376 -3 - vertex -29.9035 25.8898 -3 - vertex -30.8173 24.9813 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -29.9035 25.8898 -3 - vertex -31.1793 25.0376 -3 - vertex -31.116 26.9038 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -31.2912 27.2229 -3 - vertex -31.1793 25.0376 -3 - vertex -31.2773 24.779 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -31.1793 25.0376 -3 - vertex -31.2912 27.2229 -3 - vertex -31.116 26.9038 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.4212 26.8695 -3 - vertex -21.4485 26.3569 -3 - vertex -22.0473 26.2369 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.4485 26.3569 -3 - vertex -22.4212 26.8695 -3 - vertex -21.2681 26.5576 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.8433 26.205 -3 - vertex -22.4212 26.8695 -3 - vertex -22.0473 26.2369 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.4214 26.3653 -3 - vertex -24.3225 27.6757 -3 - vertex -24.8433 26.205 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -23.8902 27.3484 -3 - vertex -24.8433 26.205 -3 - vertex -24.3225 27.6757 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -22.4212 26.8695 -3 - vertex -24.8433 26.205 -3 - vertex -23.8902 27.3484 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.168338 -24.355 -3 - vertex -3.89417 -22.8317 -3 - vertex -3.85646 -21.6547 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -6.41168 -29.738 -3 - vertex -3.7659 -32.0301 -3 - vertex -3.99709 -33.5697 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.14673 -30.0798 -3 - vertex -4.26405 -24.3543 -3 - vertex -3.89417 -22.8317 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.2867 -16.8469 -3 - vertex 12.858 -14.1239 -3 - vertex 14.1246 -14.3424 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.2867 -16.8469 -3 - vertex 12.417 -13.7469 -3 - vertex 12.858 -14.1239 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.3474 -19.1774 -3 - vertex 13.2867 -16.8469 -3 - vertex 11.2177 -19.5302 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.2177 -19.5302 -3 - vertex 13.2867 -16.8469 -3 - vertex 12.058 -19.7199 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.0544 30.7144 -3 - vertex 5.19939 38.083 -3 - vertex 5.25321 38.4452 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.5971 30.3591 -3 - vertex 4.72188 37.0399 -3 - vertex 5.19939 38.083 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.2319 29.4873 -3 - vertex 3.57109 31.3388 -3 - vertex 11.5971 30.3591 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 4.30515 36.0346 -3 - vertex 11.5971 30.3591 -3 - vertex 3.93589 34.5584 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.5971 30.3591 -3 - vertex 4.30515 36.0346 -3 - vertex 4.72188 37.0399 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.57109 31.3388 -3 - vertex 4.3138 28.4461 -3 - vertex 3.67763 29.7129 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.5971 30.3591 -3 - vertex 3.57109 31.3388 -3 - vertex 3.93589 34.5584 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.21237 -5.88439 -3 - vertex 7.03104 -4.97268 -3 - vertex 7.79727 -5.75259 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.81183 -5.98051 -3 - vertex 7.03104 -4.97268 -3 - vertex 7.21237 -5.88439 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 7.03104 -4.97268 -3 - vertex 5.81183 -5.98051 -3 - vertex 5.97791 -3.63939 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.9592 -5.58648 -3 - vertex 5.97791 -3.63939 -3 - vertex 5.81183 -5.98051 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 5.97791 -3.63939 -3 - vertex 3.9592 -5.58648 -3 - vertex 5.02006 -2.01238 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 5.02006 -2.01238 -3 - vertex 1.09298 -4.60426 -3 - vertex 4.37015 -0.506109 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.09298 -4.60426 -3 - vertex 5.02006 -2.01238 -3 - vertex 3.9592 -5.58648 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.7931 16.6725 -3 - vertex 24.1542 17.4223 -3 - vertex 24.7174 17.1695 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.3802 15.8262 -3 - vertex 24.1542 17.4223 -3 - vertex 24.7931 16.6725 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.3802 15.8262 -3 - vertex 22.547 17.5015 -3 - vertex 24.1542 17.4223 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.1653 14.8489 -3 - vertex 22.547 17.5015 -3 - vertex 23.3802 15.8262 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.1653 14.8489 -3 - vertex 20.2159 17.5562 -3 - vertex 22.547 17.5015 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.0668 14.6265 -3 - vertex 20.2159 17.5562 -3 - vertex 21.1653 14.8489 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 18.4164 15.1559 -3 - vertex 20.2159 17.5562 -3 - vertex 20.0668 14.6265 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 20.2159 17.5562 -3 - vertex 18.4164 15.1559 -3 - vertex 19.8437 17.7553 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 16.5954 15.8977 -3 - vertex 19.8437 17.7553 -3 - vertex 18.4164 15.1559 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 19.8437 17.7553 -3 - vertex 16.5954 15.8977 -3 - vertex 19.5351 18.2611 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.2045 16.623 -3 - vertex 19.5351 18.2611 -3 - vertex 16.5954 15.8977 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 19.5351 18.2611 -3 - vertex 15.2045 16.623 -3 - vertex 19.0948 20.2262 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.99 17.4864 -3 - vertex 19.0948 20.2262 -3 - vertex 15.2045 16.623 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.0948 20.2262 -3 - vertex 17.155 22.8321 -3 - vertex 18.6529 22.0992 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 19.0948 20.2262 -3 - vertex 13.99 17.4864 -3 - vertex 17.155 22.8321 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.6982 18.6425 -3 - vertex 17.155 22.8321 -3 - vertex 13.99 17.4864 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 17.155 22.8321 -3 - vertex 12.6982 18.6425 -3 - vertex 15.5055 23.4995 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.9729 20.5521 -3 - vertex 15.5055 23.4995 -3 - vertex 12.6982 18.6425 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 15.5055 23.4995 -3 - vertex 10.9729 20.5521 -3 - vertex 14.0164 24.1527 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 14.0164 24.1527 -3 - vertex 10.9729 20.5521 -3 - vertex 13.0733 24.7212 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.71033 23.0922 -3 - vertex 13.0733 24.7212 -3 - vertex 10.9729 20.5521 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 13.0733 24.7212 -3 - vertex 9.71033 23.0922 -3 - vertex 12.1975 25.5292 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 12.1975 25.5292 -3 - vertex 9.07032 24.476 -3 - vertex 11.5037 26.4501 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.07032 24.476 -3 - vertex 12.1975 25.5292 -3 - vertex 9.71033 23.0922 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.704 16.8274 -3 - vertex 26.0816 17.5963 -3 - vertex 25.8979 16.7563 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.1513 17.7384 -3 - vertex 26.0816 17.5963 -3 - vertex 25.4738 17.2443 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.0816 17.5963 -3 - vertex 25.704 16.8274 -3 - vertex 25.4738 17.2443 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.0816 17.5963 -3 - vertex 25.1513 17.7384 -3 - vertex 25.9892 18.2943 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 25.9892 18.2943 -3 - vertex 25.1513 17.7384 -3 - vertex 25.7331 18.8483 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.5942 18.0475 -3 - vertex 25.7331 18.8483 -3 - vertex 25.1513 17.7384 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 25.7331 18.8483 -3 - vertex 24.5942 18.0475 -3 - vertex 25.3447 19.2137 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 25.3447 19.2137 -3 - vertex 24.5942 18.0475 -3 - vertex 24.8554 19.3454 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.5942 18.0475 -3 - vertex 23.3909 19.6849 -3 - vertex 24.8554 19.3454 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.335 18.2522 -3 - vertex 23.3909 19.6849 -3 - vertex 24.5942 18.0475 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 23.3909 19.6849 -3 - vertex 22.335 18.2522 -3 - vertex 22.6368 20.047 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9591 18.304 -3 - vertex 22.6368 20.047 -3 - vertex 22.335 18.2522 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 22.6368 20.047 -3 - vertex 20.9591 18.304 -3 - vertex 22.0911 20.5797 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.8405 19.3078 -3 - vertex 22.0911 20.5797 -3 - vertex 20.9591 18.304 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.4421 21.9215 -3 - vertex 21.7245 21.3239 -3 - vertex 19.6596 20.6529 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.6596 20.6529 -3 - vertex 22.0911 20.5797 -3 - vertex 19.8405 19.3078 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.7245 21.3239 -3 - vertex 19.4421 21.9215 -3 - vertex 21.508 22.3204 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.8405 19.3078 -3 - vertex 20.9591 18.304 -3 - vertex 20.2006 18.5903 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 21.508 22.3204 -3 - vertex 19.4421 21.9215 -3 - vertex 21.2518 23.2891 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.0911 20.5797 -3 - vertex 19.6596 20.6529 -3 - vertex 21.7245 21.3239 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 18.9185 22.6398 -3 - vertex 21.2518 23.2891 -3 - vertex 19.4421 21.9215 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 21.2518 23.2891 -3 - vertex 18.9185 22.6398 -3 - vertex 20.762 24.0784 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 20.762 24.0784 -3 - vertex 18.9185 22.6398 -3 - vertex 20.0338 24.6942 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 20.0338 24.6942 -3 - vertex 18.9185 22.6398 -3 - vertex 19.062 25.1422 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.6852 23.4449 -3 - vertex 19.062 25.1422 -3 - vertex 18.9185 22.6398 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.6852 23.4449 -3 - vertex 17.2513 25.98 -3 - vertex 19.062 25.1422 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.1211 24.4531 -3 - vertex 17.2513 25.98 -3 - vertex 17.6852 23.4449 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 17.2513 25.98 -3 - vertex 15.1211 24.4531 -3 - vertex 15.7223 27.2873 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.4969 25.2416 -3 - vertex 15.7223 27.2873 -3 - vertex 15.1211 24.4531 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 15.7223 27.2873 -3 - vertex 13.4969 25.2416 -3 - vertex 15.122 28.0941 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.5486 25.9653 -3 - vertex 15.122 28.0941 -3 - vertex 13.4969 25.2416 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.1521 -17.7131 -3 - vertex 20.2954 -22.4759 -3 - vertex 19.0386 -23.7798 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.5835 -23.8342 -3 - vertex 19.0386 -23.7798 -3 - vertex 17.855 -25.2923 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.2954 -22.4759 -3 - vertex 17.1521 -17.7131 -3 - vertex 19.6777 -11.13 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.5835 -23.8342 -3 - vertex 17.855 -25.2923 -3 - vertex 16.4055 -27.6373 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.5835 -23.8342 -3 - vertex 16.4055 -27.6373 -3 - vertex 15.3794 -29.9771 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.4887 -31.4602 -3 - vertex 15.3794 -29.9771 -3 - vertex 14.7938 -32.2631 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 19.0386 -23.7798 -3 - vertex 14.5835 -23.8342 -3 - vertex 17.1521 -17.7131 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.871 -34.5351 -3 - vertex 14.7938 -32.2631 -3 - vertex 14.6656 -34.4466 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.7235 1.18648 -3 - vertex 20.9081 -2.19366 -3 - vertex 21.0968 -1.15452 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.0737 -20.4525 -3 - vertex 19.6777 -11.13 -3 - vertex 20.9081 -2.19366 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.6777 -11.13 -3 - vertex 21.6367 -21.3703 -3 - vertex 20.2954 -22.4759 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 19.6777 -11.13 -3 - vertex 20.4179 -3.0084 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.5452 -10.7956 -3 - vertex 20.4179 -3.0084 -3 - vertex 19.6777 -11.13 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.5452 -10.7956 -3 - vertex 19.4334 -3.80993 -3 - vertex 20.4179 -3.0084 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.7619 -4.80944 -3 - vertex 19.5452 -10.7956 -3 - vertex 19.0845 -10.6988 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.5452 -10.7956 -3 - vertex 17.7619 -4.80944 -3 - vertex 19.4334 -3.80993 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.0012 -6.23992 -3 - vertex 19.0845 -10.6988 -3 - vertex 16.7993 -11.2316 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.0845 -10.6988 -3 - vertex 15.0012 -6.23992 -3 - vertex 17.7619 -4.80944 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.6103 -7.15898 -3 - vertex 16.7993 -11.2316 -3 - vertex 13.71 -12.1451 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.6103 -7.15898 -3 - vertex 13.71 -12.1451 -3 - vertex 13.1035 -12.4147 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.2421 -7.67101 -3 - vertex 13.1035 -12.4147 -3 - vertex 12.6527 -12.8127 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 16.7993 -11.2316 -3 - vertex 12.6103 -7.15898 -3 - vertex 15.0012 -6.23992 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.2421 -7.67101 -3 - vertex 12.6527 -12.8127 -3 - vertex 12.4073 -13.2773 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 13.2867 -16.8469 -3 - vertex 10.3474 -19.1774 -3 - vertex 12.417 -13.7469 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.2177 -19.5302 -3 - vertex 12.058 -19.7199 -3 - vertex 11.7785 -19.8211 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 8.75581 -19.1712 -3 - vertex 12.417 -13.7469 -3 - vertex 10.3474 -19.1774 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.06268 -19.3694 -3 - vertex 12.417 -13.7469 -3 - vertex 8.75581 -19.1712 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.1035 -12.4147 -3 - vertex 10.2421 -7.67101 -3 - vertex 12.6103 -7.15898 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 12.417 -13.7469 -3 - vertex 7.06268 -19.3694 -3 - vertex 12.4073 -13.2773 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.4073 -13.2773 -3 - vertex 7.54923 -7.88041 -3 - vertex 10.2421 -7.67101 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 12.4073 -13.2773 -3 - vertex 7.06268 -19.3694 -3 - vertex 7.54923 -7.88041 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.03167 -7.88498 -3 - vertex 7.06268 -19.3694 -3 - vertex 5.689 -19.9339 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.06268 -19.3694 -3 - vertex 5.03167 -7.88498 -3 - vertex 7.54923 -7.88041 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.689 -19.9339 -3 - vertex 3.854 -7.59505 -3 - vertex 5.03167 -7.88498 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.72385 -21.1527 -3 - vertex 3.854 -7.59505 -3 - vertex 5.689 -19.9339 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -4.06681 -20.6308 -3 - vertex 3.72385 -21.1527 -3 - vertex 1.84511 -22.661 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.72385 -21.1527 -3 - vertex -4.70045 -19.8327 -3 - vertex 3.854 -7.59505 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.85646 -21.6547 -3 - vertex 1.84511 -22.661 -3 - vertex 0.168338 -24.355 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.89417 -22.8317 -3 - vertex 0.168338 -24.355 -3 - vertex -1.19093 -26.1306 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.72385 -21.1527 -3 - vertex -4.06681 -20.6308 -3 - vertex -4.70045 -19.8327 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.89417 -22.8317 -3 - vertex -1.19093 -26.1306 -3 - vertex -2.25121 -28.0146 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.89417 -22.8317 -3 - vertex -2.25121 -28.0146 -3 - vertex -3.14673 -30.0798 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.84511 -22.661 -3 - vertex -3.85646 -21.6547 -3 - vertex -4.06681 -20.6308 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.57075 -19.2012 -3 - vertex 3.854 -7.59505 -3 - vertex -4.70045 -19.8327 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -6.41168 -29.738 -3 - vertex -3.14673 -30.0798 -3 - vertex -3.7659 -32.0301 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 47.2139 -19.2263 -3 - vertex 27.528 9.70386 -3 - vertex 27.6094 12.2412 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.989 -19.2301 -3 - vertex 26.953 2.16551 -3 - vertex 27.528 9.70386 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.9177 3.98634 -3 - vertex 27.528 9.70386 -3 - vertex 26.953 2.16551 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.989 -19.2301 -3 - vertex 26.8464 1.29842 -3 - vertex 26.953 2.16551 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.989 -19.2301 -3 - vertex 26.7235 1.18648 -3 - vertex 26.8464 1.29842 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 26.7235 1.18648 -3 - vertex 27.8281 -19.1444 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 27.8281 -19.1444 -3 - vertex 26.5413 -19.2026 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 26.7235 1.18648 -3 - vertex 21.0968 -1.15452 -3 - vertex 26.5455 1.2697 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 26.5413 -19.2026 -3 - vertex 25.4359 -19.4082 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 23.9858 2.16372 -3 - vertex 26.5455 1.2697 -3 - vertex 21.0968 -1.15452 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.5455 1.2697 -3 - vertex 23.9858 2.16372 -3 - vertex 25.9977 1.96397 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.3153 2.68052 -3 - vertex 24.7523 2.4559 -3 - vertex 25.0347 2.67962 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9977 1.96397 -3 - vertex 24.7523 2.4559 -3 - vertex 25.3153 2.68052 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9977 1.96397 -3 - vertex 23.9858 2.16372 -3 - vertex 24.7523 2.4559 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 25.4359 -19.4082 -3 - vertex 23.0737 -20.4525 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.9858 2.16372 -3 - vertex 21.0968 -1.15452 -3 - vertex 23.1222 1.97635 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.0282 0.220415 -3 - vertex 23.1222 1.97635 -3 - vertex 21.0968 -1.15452 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 23.1222 1.97635 -3 - vertex 21.0282 0.220415 -3 - vertex 22.8505 1.9828 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.6777 -11.13 -3 - vertex 23.0737 -20.4525 -3 - vertex 21.6367 -21.3703 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 22.8505 1.9828 -3 - vertex 21.0282 0.220415 -3 - vertex 22.7784 2.30129 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.4865 -0.127098 -3 - vertex 22.7784 2.30129 -3 - vertex 21.0282 0.220415 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.7784 2.30129 -3 - vertex 16.0239 2.90744 -3 - vertex 21.7142 8.22365 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 22.7784 2.30129 -3 - vertex 19.4865 -0.127098 -3 - vertex 16.0239 2.90744 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3368 5.33522 -3 - vertex 21.7142 8.22365 -3 - vertex 16.0239 2.90744 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 16.8564 0.883682 -3 - vertex 19.4865 -0.127098 -3 - vertex 18.2674 -0.466912 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 16.8564 0.883682 -3 - vertex 18.2674 -0.466912 -3 - vertex 17.6745 -0.267811 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.4865 -0.127098 -3 - vertex 16.8564 0.883682 -3 - vertex 16.0239 2.90744 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 21.7142 8.22365 -3 - vertex 15.3368 5.33522 -3 - vertex 19.7157 9.66569 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.9551 7.69881 -3 - vertex 19.7157 9.66569 -3 - vertex 15.3368 5.33522 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 19.7157 9.66569 -3 - vertex 14.9551 7.69881 -3 - vertex 18.6847 10.137 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 18.6847 10.137 -3 - vertex 14.9551 7.69881 -3 - vertex 17.337 10.3363 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.9426 8.95486 -3 - vertex 17.337 10.3363 -3 - vertex 14.9551 7.69881 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.337 10.3363 -3 - vertex 15.3572 9.74689 -3 - vertex 15.9933 10.3315 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.9933 10.3315 -3 - vertex 15.3572 9.74689 -3 - vertex 15.6762 10.1383 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.337 10.3363 -3 - vertex 14.9426 8.95486 -3 - vertex 15.3572 9.74689 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 34.7441 -22.7166 -3 - vertex 31.8275 -24.8188 -3 - vertex 32.0255 -23.3848 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 29.8709 -31.8517 -3 - vertex 32.5255 -33.371 -3 - vertex 31.6707 -35.0376 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 33.8444 -30.1753 -3 - vertex 31.4974 -26.3899 -3 - vertex 31.8275 -24.8188 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 33.8444 -30.1753 -3 - vertex 31.2318 -26.857 -3 - vertex 31.4974 -26.3899 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 29.8709 -31.8517 -3 - vertex 31.6707 -35.0376 -3 - vertex 30.8837 -35.7486 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 33.8444 -30.1753 -3 - vertex 30.2029 -31.1764 -3 - vertex 30.1062 -30.7807 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 30.7817 -27.1595 -3 - vertex 33.8444 -30.1753 -3 - vertex 30.1062 -30.7807 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 32.5255 -33.371 -3 - vertex 29.8709 -31.8517 -3 - vertex 30.2029 -31.1764 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.8442 -34.1555 -3 - vertex 30.8837 -35.7486 -3 - vertex 29.7686 -36.0779 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.8442 -34.1555 -3 - vertex 29.7686 -36.0779 -3 - vertex 29.0223 -36.3831 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.8442 -34.1555 -3 - vertex 29.0223 -36.3831 -3 - vertex 28.553 -36.8405 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9895 -35.834 -3 - vertex 28.553 -36.8405 -3 - vertex 28.4102 -37.3704 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 30.8837 -35.7486 -3 - vertex 27.8442 -34.1555 -3 - vertex 29.8709 -31.8517 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 33.8444 -30.1753 -3 - vertex 30.7817 -27.1595 -3 - vertex 31.2318 -26.857 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 29.6885 -30.4984 -3 - vertex 30.7817 -27.1595 -3 - vertex 30.1062 -30.7807 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.9763 -27.4135 -3 - vertex 29.6885 -30.4984 -3 - vertex 29.2916 -30.4642 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 29.6885 -30.4984 -3 - vertex 28.9763 -27.4135 -3 - vertex 30.7817 -27.1595 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.199 -31.2235 -3 - vertex 28.9763 -27.4135 -3 - vertex 29.2916 -30.4642 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.3774 -27.4375 -3 - vertex 28.199 -31.2235 -3 - vertex 26.4192 -32.7448 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.199 -31.2235 -3 - vertex 25.3774 -27.4375 -3 - vertex 28.9763 -27.4135 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.9271 -33.7368 -3 - vertex 25.3774 -27.4375 -3 - vertex 26.4192 -32.7448 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.5138 -29.5327 -3 - vertex 24.9271 -33.7368 -3 - vertex 23.5816 -34.2758 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.3087 -31.0557 -3 - vertex 23.5816 -34.2758 -3 - vertex 22.2417 -34.4379 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.3087 -31.0557 -3 - vertex 22.2417 -34.4379 -3 - vertex 21.4183 -34.349 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.3085 -32.3556 -3 - vertex 21.4183 -34.349 -3 - vertex 20.6651 -34.0963 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.5816 -34.2758 -3 - vertex 19.3087 -31.0557 -3 - vertex 19.5138 -29.5327 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.3085 -32.3556 -3 - vertex 20.6651 -34.0963 -3 - vertex 20.0228 -33.6987 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.3774 -27.4375 -3 - vertex 19.9054 -28.0436 -3 - vertex 20.1129 -27.4424 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.3085 -32.3556 -3 - vertex 20.0228 -33.6987 -3 - vertex 19.5322 -33.1754 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.3774 -27.4375 -3 - vertex 19.5138 -29.5327 -3 - vertex 19.9054 -28.0436 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.9271 -33.7368 -3 - vertex 19.5138 -29.5327 -3 - vertex 25.3774 -27.4375 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.4183 -34.349 -3 - vertex 19.3085 -32.3556 -3 - vertex 19.3087 -31.0557 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.528 9.70386 -3 - vertex 26.9177 3.98634 -3 - vertex 27.209 8.08714 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.209 8.08714 -3 - vertex 26.9177 3.98634 -3 - vertex 26.8985 6.51977 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.2082 3.44442 -3 - vertex 23.5966 4.95794 -3 - vertex 23.5377 4.18291 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 23.5966 4.95794 -3 - vertex 23.2082 3.44442 -3 - vertex 23.3811 5.8089 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.2082 3.44442 -3 - vertex 22.8875 6.77518 -3 - vertex 23.3811 5.8089 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.7142 8.22365 -3 - vertex 23.2082 3.44442 -3 - vertex 22.7784 2.30129 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.2082 3.44442 -3 - vertex 21.7142 8.22365 -3 - vertex 22.8875 6.77518 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.0577 29.0611 -3 - vertex 12.0187 29.9363 -3 - vertex 12.2907 30.5214 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.7374 28.4518 -3 - vertex 15.122 28.0941 -3 - vertex 11.8052 27.5343 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 11.8088 29.3224 -3 - vertex 15.0577 29.0611 -3 - vertex 11.7374 28.4518 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.122 28.0941 -3 - vertex 11.7374 28.4518 -3 - vertex 15.0577 29.0611 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.0577 29.0611 -3 - vertex 11.8088 29.3224 -3 - vertex 12.0187 29.9363 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.871 -34.5351 -3 - vertex 14.6656 -34.4466 -3 - vertex 12.1385 -34.7994 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 14.7938 -32.2631 -3 - vertex 11.871 -34.5351 -3 - vertex 11.4887 -31.4602 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 15.3794 -29.9771 -3 - vertex 11.4887 -31.4602 -3 - vertex 14.5835 -23.8342 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.915 -33.0747 -3 - vertex 11.871 -34.5351 -3 - vertex 11.4551 -34.4353 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.871 -34.5351 -3 - vertex 10.915 -33.0747 -3 - vertex 11.4887 -31.4602 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.7197 -33.9677 -3 - vertex 11.4551 -34.4353 -3 - vertex 10.9006 -34.3507 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.4551 -34.4353 -3 - vertex 10.7197 -33.9677 -3 - vertex 10.915 -33.0747 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.2516 -3.15818 -3 - vertex 14.2455 -2.23644 -3 - vertex 14.333 -2.7489 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.8131 -3.7697 -3 - vertex 14.2455 -2.23644 -3 - vertex 14.2516 -3.15818 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.172 -4.2601 -3 - vertex 14.2455 -2.23644 -3 - vertex 13.8131 -3.7697 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 14.2455 -2.23644 -3 - vertex 13.172 -4.2601 -3 - vertex 13.5923 -0.94501 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.4032 -4.58609 -3 - vertex 13.5923 -0.94501 -3 - vertex 13.172 -4.2601 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.5814 -4.70438 -3 - vertex 13.5923 -0.94501 -3 - vertex 12.4032 -4.58609 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.2758 -4.53506 -3 - vertex 13.5923 -0.94501 -3 - vertex 11.5814 -4.70438 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 13.5923 -0.94501 -3 - vertex 10.2758 -4.53506 -3 - vertex 12.3489 0.629998 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.01294 -4.00814 -3 - vertex 12.3489 0.629998 -3 - vertex 10.2758 -4.53506 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.74282 -3.09522 -3 - vertex 12.3489 0.629998 -3 - vertex 9.01294 -4.00814 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 12.3489 0.629998 -3 - vertex 7.74282 -3.09522 -3 - vertex 10.5724 2.40247 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 6.41545 -1.76788 -3 - vertex 10.5724 2.40247 -3 - vertex 7.74282 -3.09522 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 10.5724 2.40247 -3 - vertex 6.41545 -1.76788 -3 - vertex 9.13441 3.60373 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.6091 0.441775 -3 - vertex 9.13441 3.60373 -3 - vertex 6.41545 -1.76788 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 9.13441 3.60373 -3 - vertex 4.6091 0.441775 -3 - vertex 8.18559 4.25764 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.39665 0.754678 -3 - vertex 8.18559 4.25764 -3 - vertex 4.6091 0.441775 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 8.18559 4.25764 -3 - vertex 4.39665 0.754678 -3 - vertex 5.26682 5.76024 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.66409 7.13679 -3 - vertex 4.39665 0.754678 -3 - vertex 4.24084 0.464987 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.39665 0.754678 -3 - vertex 1.66409 7.13679 -3 - vertex 5.26682 5.76024 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -1.72768 -3.30659 -3 - vertex 4.37015 -0.506109 -3 - vertex 1.09298 -4.60426 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 4.37015 -0.506109 -3 - vertex -1.72768 -3.30659 -3 - vertex 4.24084 0.464987 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.55278 -2.51803 -3 - vertex 4.24084 0.464987 -3 - vertex -1.72768 -3.30659 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 4.24084 0.464987 -3 - vertex -3.55278 -2.51803 -3 - vertex 1.66409 7.13679 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 1.66409 7.13679 -3 - vertex -3.55278 -2.51803 -3 - vertex -0.248642 7.94666 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -0.248642 7.94666 -3 - vertex -3.55278 -2.51803 -3 - vertex -2.78119 9.30203 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -4.99153 10.6633 -3 - vertex -3.55278 -2.51803 -3 - vertex -3.71458 -2.66291 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 3.854 -7.59505 -3 - vertex -5.57075 -19.2012 -3 - vertex 1.04019 -5.91722 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 1.04019 -5.91722 -3 - vertex -5.57075 -19.2012 -3 - vertex -2.05653 -4.03047 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.1272 -19.1706 -3 - vertex -2.05653 -4.03047 -3 - vertex -5.57075 -19.2012 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.55278 -2.51803 -3 - vertex -4.99153 10.6633 -3 - vertex -2.78119 9.30203 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -2.05653 -4.03047 -3 - vertex -7.1272 -19.1706 -3 - vertex -3.45272 -3.03042 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.4385 -11.5861 -3 - vertex -3.45272 -3.03042 -3 - vertex -7.1272 -19.1706 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.7993 -11.4712 -3 - vertex -3.71458 -2.66291 -3 - vertex -17.4385 -11.5861 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -3.45272 -3.03042 -3 - vertex -17.4385 -11.5861 -3 - vertex -3.71458 -2.66291 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.41055 11.926 -3 - vertex 1.8467 12.7398 -3 - vertex 1.87173 12.344 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 1.8467 12.7398 -3 - vertex 1.41055 11.926 -3 - vertex 1.50002 13.1874 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.41055 11.926 -3 - vertex 0.918757 13.5702 -3 - vertex 1.50002 13.1874 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.535115 11.4454 -3 - vertex 0.918757 13.5702 -3 - vertex 1.41055 11.926 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.394194 11.1972 -3 - vertex 0.918757 13.5702 -3 - vertex 0.535115 11.4454 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.394194 11.1972 -3 - vertex -0.928844 14.138 -3 - vertex 0.918757 13.5702 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -1.46211 11.1697 -3 - vertex -0.928844 14.138 -3 - vertex -0.394194 11.1972 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -2.75335 11.3511 -3 - vertex -0.928844 14.138 -3 - vertex -1.46211 11.1697 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -2.75335 11.3511 -3 - vertex -3.65881 14.4362 -3 - vertex -0.928844 14.138 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.07797 11.6776 -3 - vertex -3.65881 14.4362 -3 - vertex -2.75335 11.3511 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.23385 14.4578 -3 - vertex -5.07797 11.6776 -3 - vertex -5.71478 11.6495 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.23385 14.4578 -3 - vertex -5.71478 11.6495 -3 - vertex -5.93765 11.491 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.07797 11.6776 -3 - vertex -7.23385 14.4578 -3 - vertex -3.65881 14.4362 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -13.7227 13.3517 -3 - vertex -3.71458 -2.66291 -3 - vertex -17.5299 12.3491 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.4385 -11.5861 -3 - vertex -7.1272 -19.1706 -3 - vertex -8.78621 -19.378 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -11.7016 -19.4898 -3 - vertex -8.78621 -19.378 -3 - vertex -10.3766 -20.1728 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.71458 -2.66291 -3 - vertex -13.7227 13.3517 -3 - vertex -4.99153 10.6633 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -11.7016 -19.4898 -3 - vertex -10.3766 -20.1728 -3 - vertex -11.6824 -19.9072 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -10.3766 -20.1728 -3 - vertex -11.8627 -20.4599 -3 - vertex -11.6824 -19.9072 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -11.8627 -20.4599 -3 - vertex -10.3766 -20.1728 -3 - vertex -12.0544 -21.102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.6062 -18.108 -3 - vertex -22.6991 -20.0641 -3 - vertex -22.6057 -19.3555 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -23.6767 -35.9691 -3 - vertex -22.458 -35.4568 -3 - vertex -23.007 -35.8619 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.4076 -24.3815 -3 - vertex -21.28 -33.2523 -3 - vertex -23.4462 -30.738 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.28 -33.2523 -3 - vertex -23.1278 -21.2395 -3 - vertex -22.6991 -20.0641 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -22.458 -35.4568 -3 - vertex -23.6767 -35.9691 -3 - vertex -24.7956 -33.2498 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.28 -33.2523 -3 - vertex -23.8149 -31.5911 -3 - vertex -23.4462 -30.738 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.7956 -33.2498 -3 - vertex -23.6767 -35.9691 -3 - vertex -24.4194 -36.2501 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.28 -33.2523 -3 - vertex -24.7956 -33.2498 -3 - vertex -23.8149 -31.5911 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.2791 -36.8782 -3 - vertex -24.4194 -36.2501 -3 - vertex -24.9699 -36.888 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.2791 -36.8782 -3 - vertex -24.9699 -36.888 -3 - vertex -25.157 -37.5754 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -24.4194 -36.2501 -3 - vertex -27.2791 -36.8782 -3 - vertex -24.7956 -33.2498 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.299 -23.335 -3 - vertex -17.8179 -22.6324 -3 - vertex -17.2695 -22.7276 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.299 -23.335 -3 - vertex -18.3659 -22.5704 -3 - vertex -17.8179 -22.6324 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -18.5428 -26.6889 -3 - vertex -18.3659 -22.5704 -3 - vertex -17.299 -23.335 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -18.5428 -26.6889 -3 - vertex -18.6886 -22.3738 -3 - vertex -18.3659 -22.5704 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.6991 -20.0641 -3 - vertex -18.6886 -22.3738 -3 - vertex -18.5428 -26.6889 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.6991 -20.0641 -3 - vertex -18.7986 -22.0269 -3 - vertex -18.6886 -22.3738 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -18.7986 -22.0269 -3 - vertex -19.683 -17.584 -3 - vertex -19.3785 -17.1305 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -18.7986 -22.0269 -3 - vertex -20.1126 -17.9213 -3 - vertex -19.683 -17.584 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -18.7986 -22.0269 -3 - vertex -20.6062 -18.108 -3 - vertex -20.1126 -17.9213 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.6991 -20.0641 -3 - vertex -20.6062 -18.108 -3 - vertex -18.7986 -22.0269 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.6991 -20.0641 -3 - vertex -18.5428 -26.6889 -3 - vertex -21.28 -33.2523 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.6062 -18.108 -3 - vertex -22.6057 -19.3555 -3 - vertex -21.1029 -18.1093 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -21.1029 -18.1093 -3 - vertex -22.6057 -19.3555 -3 - vertex -21.3898 -18.0171 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.8641 -19.008 -3 - vertex -21.3898 -18.0171 -3 - vertex -22.6057 -19.3555 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -21.3898 -18.0171 -3 - vertex -22.8641 -19.008 -3 - vertex -21.538 -17.8042 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -23.4908 -18.9156 -3 - vertex -21.538 -17.8042 -3 - vertex -22.8641 -19.008 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.7956 -33.2498 -3 - vertex -21.9191 -34.6287 -3 - vertex -22.458 -35.4568 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -21.538 -17.8042 -3 - vertex -23.4908 -18.9156 -3 - vertex -21.5846 -16.4428 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.9191 -34.6287 -3 - vertex -24.7956 -33.2498 -3 - vertex -21.28 -33.2523 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -23.3419 -14.2877 -3 - vertex -21.5846 -16.4428 -3 - vertex -23.4908 -18.9156 -3 - endloop - endfacet - facet normal -0 -0 -1 - outer loop - vertex -22.1413 -14.5577 -3 - vertex -21.5846 -16.4428 -3 - vertex -23.3419 -14.2877 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.6401 -15.0493 -3 - vertex -22.1413 -14.5577 -3 - vertex -21.8106 -14.7733 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.5846 -16.4428 -3 - vertex -22.1413 -14.5577 -3 - vertex -21.6401 -15.0493 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.1111 -19.1062 -3 - vertex -23.3419 -14.2877 -3 - vertex -23.4908 -18.9156 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.1195 -14.1654 -3 - vertex -24.1111 -19.1062 -3 - vertex -24.7225 -19.9745 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.8809 -15.6487 -3 - vertex -24.7225 -19.9745 -3 - vertex -25.7001 -21.2849 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.1111 -19.1062 -3 - vertex -26.1195 -14.1654 -3 - vertex -23.3419 -14.2877 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -32.1593 -18.5412 -3 - vertex -25.7001 -21.2849 -3 - vertex -26.9351 -22.1109 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -32.1593 -18.5412 -3 - vertex -26.9351 -22.1109 -3 - vertex -28.6031 -22.5277 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.7225 -19.9745 -3 - vertex -30.8809 -15.6487 -3 - vertex -26.1195 -14.1654 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.1195 -14.1654 -3 - vertex -30.8809 -15.6487 -3 - vertex -29.5608 -14.1906 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -30.3887 -14.5514 -3 - vertex -29.5608 -14.1906 -3 - vertex -30.8809 -15.6487 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -32.1593 -18.5412 -3 - vertex -28.6031 -22.5277 -3 - vertex -30.8797 -22.6102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.5608 -14.1906 -3 - vertex -30.3887 -14.5514 -3 - vertex -30.2116 -14.321 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -25.7001 -21.2849 -3 - vertex -32.1593 -18.5412 -3 - vertex -30.8809 -15.6487 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -33.3019 -21.4299 -3 - vertex -30.8797 -22.6102 -3 - vertex -32.5249 -22.5543 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.8797 -22.6102 -3 - vertex -33.3019 -21.4299 -3 - vertex -32.1593 -18.5412 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -33.3295 -22.4108 -3 - vertex -33.3019 -21.4299 -3 - vertex -32.5249 -22.5543 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -33.3019 -21.4299 -3 - vertex -33.3295 -22.4108 -3 - vertex -33.5147 -22.0719 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.78621 -19.378 -3 - vertex -17.4456 -12.0833 -3 - vertex -17.4385 -11.5861 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3785 -17.1305 -3 - vertex -15.1553 -19.8912 -3 - vertex -17.9982 -20.7653 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3785 -17.1305 -3 - vertex -17.9982 -20.7653 -3 - vertex -18.4336 -21.0091 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3785 -17.1305 -3 - vertex -18.4336 -21.0091 -3 - vertex -18.7084 -21.5139 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3785 -17.1305 -3 - vertex -18.7084 -21.5139 -3 - vertex -18.7986 -22.0269 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.1553 -19.8912 -3 - vertex -19.3785 -17.1305 -3 - vertex -17.4456 -12.0833 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.33648 -34.384 -3 - vertex -3.99709 -33.5697 -3 - vertex -7.51249 -36.3769 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.33648 -34.384 -3 - vertex -7.51249 -36.3769 -3 - vertex -7.98605 -36.0592 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -3.99709 -33.5697 -3 - vertex -8.33648 -34.384 -3 - vertex -6.41168 -29.738 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.56822 -35.3052 -3 - vertex -7.98605 -36.0592 -3 - vertex -8.51129 -35.7129 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.98605 -36.0592 -3 - vertex -8.56822 -35.3052 -3 - vertex -8.33648 -34.384 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -8.78621 -19.378 -3 - vertex -11.7016 -19.4898 -3 - vertex -11.9141 -19.2259 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.4456 -12.0833 -3 - vertex -8.78621 -19.378 -3 - vertex -11.9141 -19.2259 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.4456 -12.0833 -3 - vertex -11.9141 -19.2259 -3 - vertex -12.3137 -19.1333 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.93765 11.491 -3 - vertex -10.6367 14.238 -3 - vertex -7.23385 14.4578 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.4456 -12.0833 -3 - vertex -12.3137 -19.1333 -3 - vertex -15.1553 -19.8912 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.93765 11.491 -3 - vertex -13.7227 13.3517 -3 - vertex -10.6367 14.238 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -4.99153 10.6633 -3 - vertex -13.7227 13.3517 -3 - vertex -5.93765 11.491 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -3.71458 -2.66291 -3 - vertex -17.7993 -11.4712 -3 - vertex -17.5299 12.3491 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.7993 -11.4712 -3 - vertex -20.0298 12.0063 -3 - vertex -17.5299 12.3491 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.7993 -11.4712 -3 - vertex -22.4428 11.7593 -3 - vertex -20.0298 12.0063 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.1868 -11.3523 -3 - vertex -22.4428 11.7593 -3 - vertex -17.7993 -11.4712 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.4428 11.7593 -3 - vertex -27.1868 -11.3523 -3 - vertex -25.7097 11.6586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.1868 -11.3523 -3 - vertex -28.6588 11.7129 -3 - vertex -25.7097 11.6586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -34.87 -11.3196 -3 - vertex -28.6588 11.7129 -3 - vertex -27.1868 -11.3523 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -28.6588 11.7129 -3 - vertex -34.87 -11.3196 -3 - vertex -30.1182 11.9311 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -36.1936 -11.4238 -3 - vertex -30.1182 11.9311 -3 - vertex -34.87 -11.3196 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -36.792 -11.6364 -3 - vertex -30.1182 11.9311 -3 - vertex -36.1936 -11.4238 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -30.1182 11.9311 -3 - vertex -36.792 -11.6364 -3 - vertex -30.3887 12.6783 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.3887 12.6783 -3 - vertex -35.7552 21.6337 -3 - vertex -33.0651 20.3093 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.6991 23.0789 -3 - vertex -30.3887 12.6783 -3 - vertex -36.792 -11.6364 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.6991 23.0789 -3 - vertex -36.792 -11.6364 -3 - vertex -37.3951 -12.1929 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -39.1303 25.4589 -3 - vertex -37.3951 -12.1929 -3 - vertex -37.5366 -12.7854 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.3887 12.6783 -3 - vertex -37.6991 23.0789 -3 - vertex -35.7552 21.6337 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -9.69161 -22.56 -3 - vertex -8.46819 -23.4267 -3 - vertex -8.72405 -24.8218 -3 - endloop - endfacet - facet normal -0 -0 -1 - outer loop - vertex -8.78909 -22.7249 -3 - vertex -8.46819 -23.4267 -3 - vertex -9.69161 -22.56 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -12.4124 -23.7203 -3 - vertex -8.72405 -24.8218 -3 - vertex -9.55184 -27.0667 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.46819 -23.4267 -3 - vertex -8.78909 -22.7249 -3 - vertex -8.55624 -22.9989 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.72405 -24.8218 -3 - vertex -10.5461 -22.7271 -3 - vertex -9.69161 -22.56 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.72405 -24.8218 -3 - vertex -11.3967 -23.0769 -3 - vertex -10.5461 -22.7271 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.3894 -29.1914 -3 - vertex -9.55184 -27.0667 -3 - vertex -11.5932 -32.143 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.8281 -32.7116 -3 - vertex -11.5932 -32.143 -3 - vertex -12.3385 -33.8339 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -9.55184 -27.0667 -3 - vertex -14.2216 -26.3227 -3 - vertex -13.7062 -25.2068 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.8281 -32.7116 -3 - vertex -12.3385 -33.8339 -3 - vertex -13.0448 -35.0276 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.72405 -24.8218 -3 - vertex -12.4124 -23.7203 -3 - vertex -11.3967 -23.0769 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -13.1427 -24.3848 -3 - vertex -9.55184 -27.0667 -3 - vertex -13.7062 -25.2068 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -14.3732 -35.9691 -3 - vertex -13.0448 -35.0276 -3 - vertex -13.7203 -35.7356 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -9.55184 -27.0667 -3 - vertex -13.1427 -24.3848 -3 - vertex -12.4124 -23.7203 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -13.0448 -35.0276 -3 - vertex -14.3732 -35.9691 -3 - vertex -16.8281 -32.7116 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.8281 -32.7116 -3 - vertex -14.3732 -35.9691 -3 - vertex -14.8949 -36.1495 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -9.55184 -27.0667 -3 - vertex -15.3894 -29.1914 -3 - vertex -14.2216 -26.3227 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.5846 -36.2152 -3 - vertex -14.8949 -36.1495 -3 - vertex -15.4682 -36.5832 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.2226 -36.752 -3 - vertex -15.4682 -36.5832 -3 - vertex -15.9213 -37.1689 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.6989 -37.6188 -3 - vertex -15.9213 -37.1689 -3 - vertex -15.9433 -37.6764 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.5846 -36.2152 -3 - vertex -15.4682 -36.5832 -3 - vertex -16.2226 -36.752 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -14.8949 -36.1495 -3 - vertex -16.5846 -36.2152 -3 - vertex -16.8281 -32.7116 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -11.5932 -32.143 -3 - vertex -16.8281 -32.7116 -3 - vertex -15.3894 -29.1914 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.7285 -35.3062 -3 - vertex -16.5846 -36.2152 -3 - vertex -17.3742 -35.9691 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.7285 -35.3062 -3 - vertex -17.3742 -35.9691 -3 - vertex -17.6987 -35.8223 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.5846 -36.2152 -3 - vertex -17.7285 -35.3062 -3 - vertex -16.8281 -32.7116 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.4076 -24.3815 -3 - vertex -23.4462 -30.738 -3 - vertex -23.655 -30.4649 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -25.4741 -26.9141 -3 - vertex -23.655 -30.4649 -3 - vertex -24.0819 -30.2475 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.28 -33.2523 -3 - vertex -24.4076 -24.3815 -3 - vertex -23.1278 -21.2395 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -25.4741 -26.9141 -3 - vertex -24.0819 -30.2475 -3 - vertex -24.4667 -30.1541 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.2338 -28.3696 -3 - vertex -24.4667 -30.1541 -3 - vertex -24.8569 -30.2998 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -23.655 -30.4649 -3 - vertex -25.4741 -26.9141 -3 - vertex -24.4076 -24.3815 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.4667 -30.1541 -3 - vertex -26.2338 -28.3696 -3 - vertex -25.4741 -26.9141 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.8752 -29.0336 -3 - vertex -24.8569 -30.2998 -3 - vertex -26.8283 -32.1012 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.8569 -30.2998 -3 - vertex -26.8752 -29.0336 -3 - vertex -26.2338 -28.3696 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.8283 -32.1012 -3 - vertex -27.5872 -29.1914 -3 - vertex -26.8752 -29.0336 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.8283 -32.1012 -3 - vertex -28.1878 -29.097 -3 - vertex -27.5872 -29.1914 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.0969 -33.8499 -3 - vertex -28.1878 -29.097 -3 - vertex -26.8283 -32.1012 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.2578 -34.4631 -3 - vertex -28.1878 -29.097 -3 - vertex -29.0969 -33.8499 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -31.3644 -34.8586 -3 - vertex -28.1878 -29.097 -3 - vertex -30.2578 -34.4631 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.4824 -26.6225 -3 - vertex -28.1878 -29.097 -3 - vertex -31.3644 -34.8586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.1878 -29.097 -3 - vertex -32.142 -25.4759 -3 - vertex -28.5713 -25.7117 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.1878 -29.097 -3 - vertex -35.4824 -26.6225 -3 - vertex -32.142 -25.4759 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.4824 -26.6225 -3 - vertex -31.3644 -34.8586 -3 - vertex -35.0529 -35.0835 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -32.142 -25.4759 -3 - vertex -35.4824 -26.6225 -3 - vertex -34.9626 -25.4747 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -38.7331 -34.5543 -3 - vertex -35.0529 -35.0835 -3 - vertex -38.4261 -34.9619 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.0529 -35.0835 -3 - vertex -38.7331 -34.5543 -3 - vertex -35.4824 -26.6225 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.5713 -25.7117 -3 - vertex -27.9105 -26.2055 -3 - vertex -28.1838 -28.4809 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.9105 -26.2055 -3 - vertex -28.5713 -25.7117 -3 - vertex -28.1036 -25.8829 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.5713 -25.7117 -3 - vertex -28.1838 -28.4809 -3 - vertex -28.1878 -29.097 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -11.1208 19.5935 -3 - vertex -11.5389 20.1801 -3 - vertex -10.9412 20.0018 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -12.0133 18.8648 -3 - vertex -11.5389 20.1801 -3 - vertex -11.1208 19.5935 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -12.0133 18.8648 -3 - vertex -12.9783 20.2187 -3 - vertex -11.5389 20.1801 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.009 16.7116 -3 - vertex -12.9783 20.2187 -3 - vertex -12.0133 18.8648 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.009 16.7116 -3 - vertex -16.3196 19.9968 -3 - vertex -12.9783 20.2187 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.0754 15.711 -3 - vertex -16.3196 19.9968 -3 - vertex -15.009 16.7116 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.1789 19.4139 -3 - vertex -17.0754 15.711 -3 - vertex -19.733 14.7364 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.0754 15.711 -3 - vertex -20.1789 19.4139 -3 - vertex -16.3196 19.9968 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.3118 14.0374 -3 - vertex -20.1789 19.4139 -3 - vertex -19.733 14.7364 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.3118 14.0374 -3 - vertex -24.1572 19.0472 -3 - vertex -20.1789 19.4139 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.873 13.6003 -3 - vertex -24.1572 19.0472 -3 - vertex -22.3118 14.0374 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.5587 18.9414 -3 - vertex -24.873 13.6003 -3 - vertex -27.4778 13.4117 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.873 13.6003 -3 - vertex -27.5587 18.9414 -3 - vertex -24.1572 19.0472 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.4778 13.4117 -3 - vertex -29.687 19.1409 -3 - vertex -27.5587 18.9414 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.9412 13.2465 -3 - vertex -29.687 19.1409 -3 - vertex -27.4778 13.4117 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.3118 13.0393 -3 - vertex -29.687 19.1409 -3 - vertex -29.9412 13.2465 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -33.0651 20.3093 -3 - vertex -30.3118 13.0393 -3 - vertex -30.3887 12.6783 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.3118 13.0393 -3 - vertex -33.0651 20.3093 -3 - vertex -29.687 19.1409 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 36.2859 -23.7121 -3 - vertex 36.104 -22.9178 -3 - vertex 36.3422 -23.0402 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 35.2001 -22.9271 -3 - vertex 36.2859 -23.7121 -3 - vertex 35.3305 -26.5156 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 36.2859 -23.7121 -3 - vertex 35.2001 -22.9271 -3 - vertex 36.104 -22.9178 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 35.3305 -26.5156 -3 - vertex 34.7441 -22.7166 -3 - vertex 35.2001 -22.9271 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 31.8275 -24.8188 -3 - vertex 34.7441 -22.7166 -3 - vertex 35.3305 -26.5156 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 31.8275 -24.8188 -3 - vertex 35.3305 -26.5156 -3 - vertex 33.8444 -30.1753 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 42.943 -20.2657 -3 - vertex 42.0238 -20.3507 -3 - vertex 42.1032 -19.4743 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 41.971 -20.8453 -3 - vertex 42.0238 -20.3507 -3 - vertex 42.943 -20.2657 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 42.0238 -20.3507 -3 - vertex 41.971 -20.8453 -3 - vertex 41.8981 -20.7296 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 47.9875 -20.1225 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 47.8425 -21.0531 -3 - vertex 47.9875 -20.1225 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 47.5305 -21.9981 -3 - vertex 47.8425 -21.0531 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 47.0957 -22.796 -3 - vertex 47.5305 -21.9981 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 46.5684 -23.4293 -3 - vertex 47.0957 -22.796 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 37.9939 -37.5705 -3 - vertex 46.5684 -23.4293 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 46.5684 -23.4293 -3 - vertex 37.9939 -37.5705 -3 - vertex 45.9792 -23.8802 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 38.113 -36.8464 -3 - vertex 45.9792 -23.8802 -3 - vertex 37.9939 -37.5705 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 45.9792 -23.8802 -3 - vertex 38.113 -36.8464 -3 - vertex 45.3585 -24.1311 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 37.9618 -36.3241 -3 - vertex 45.3585 -24.1311 -3 - vertex 38.113 -36.8464 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 38.2188 -29.6614 -3 - vertex 45.3585 -24.1311 -3 - vertex 37.9618 -36.3241 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 45.3585 -24.1311 -3 - vertex 38.2188 -29.6614 -3 - vertex 44.7368 -24.1643 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 40.5923 -24.6171 -3 - vertex 44.1445 -23.9621 -3 - vertex 40.0289 -25.46 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 41.2986 -23.9223 -3 - vertex 44.1445 -23.9621 -3 - vertex 40.5923 -24.6171 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 44.1445 -23.9621 -3 - vertex 41.2986 -23.9223 -3 - vertex 43.6122 -23.5069 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 43.6122 -23.5069 -3 - vertex 41.2986 -23.9223 -3 - vertex 42.7682 -22.851 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 44.7368 -24.1643 -3 - vertex 40.0289 -25.46 -3 - vertex 44.1445 -23.9621 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 37.381 -37.9628 -3 - vertex 37.9939 -37.5705 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 35.8907 -38.1241 -3 - vertex 37.381 -37.9628 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 33.1396 -38.1555 -3 - vertex 35.8907 -38.1241 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 29.8074 -38.0948 -3 - vertex 33.1396 -38.1555 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.3084 -38.5182 -3 - vertex 29.8074 -38.0948 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.553 -36.8405 -3 - vertex 25.9895 -35.834 -3 - vertex 27.8442 -34.1555 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.0601 -37.0678 -3 - vertex 28.4102 -37.3704 -3 - vertex 28.6431 -37.8931 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 21.4079 -38.2833 -3 - vertex 29.8074 -38.0948 -3 - vertex 20.3084 -38.5182 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.4102 -37.3704 -3 - vertex 24.0601 -37.0678 -3 - vertex 25.9895 -35.834 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 28.6431 -37.8931 -3 - vertex 21.4079 -38.2833 -3 - vertex 24.0601 -37.0678 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 29.8074 -38.0948 -3 - vertex 21.4079 -38.2833 -3 - vertex 28.6431 -37.8931 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 19.0956 -38.5852 -3 - vertex 20.3084 -38.5182 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.33583 -38.4712 -3 - vertex 19.0956 -38.5852 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.0956 -38.5852 -3 - vertex 5.33583 -38.4712 -3 - vertex 17.8945 -38.4707 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 17.8945 -38.4707 -3 - vertex 5.33583 -38.4712 -3 - vertex 16.8412 -38.0675 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.1385 -34.7994 -3 - vertex 14.6656 -34.4466 -3 - vertex 12.2351 -35.1874 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.8379 -35.6738 -3 - vertex 12.2351 -35.1874 -3 - vertex 14.6656 -34.4466 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.1379 -35.6584 -3 - vertex 14.8379 -35.6738 -3 - vertex 15.2376 -36.6526 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.1962 -36.5595 -3 - vertex 15.2376 -36.6526 -3 - vertex 15.8953 -37.4336 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 8.47177 -37.477 -3 - vertex 16.8412 -38.0675 -3 - vertex 5.33583 -38.4712 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.8379 -35.6738 -3 - vertex 12.1379 -35.6584 -3 - vertex 12.2351 -35.1874 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.2376 -36.6526 -3 - vertex 11.7916 -36.1064 -3 - vertex 12.1379 -35.6584 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.2376 -36.6526 -3 - vertex 11.1962 -36.5595 -3 - vertex 11.7916 -36.1064 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.8953 -37.4336 -3 - vertex 10.519 -36.9119 -3 - vertex 11.1962 -36.5595 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 10.519 -36.9119 -3 - vertex 16.8412 -38.0675 -3 - vertex 9.92719 -37.0575 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 16.8412 -38.0675 -3 - vertex 10.519 -36.9119 -3 - vertex 15.8953 -37.4336 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 9.92719 -37.0575 -3 - vertex 16.8412 -38.0675 -3 - vertex 8.47177 -37.477 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.962702 -38.4962 -3 - vertex 5.33583 -38.4712 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 4.73542 -37.8041 -3 - vertex 3.43985 -37.8545 -3 - vertex 4.64415 -37.2809 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.84381 -38.3343 -3 - vertex 3.43985 -37.8545 -3 - vertex 4.73542 -37.8041 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 2.31266 -38.26 -3 - vertex 5.33583 -38.4712 -3 - vertex 0.962702 -38.4962 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.84381 -38.3343 -3 - vertex 2.31266 -38.26 -3 - vertex 3.43985 -37.8545 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.33583 -38.4712 -3 - vertex 2.31266 -38.26 -3 - vertex 4.84381 -38.3343 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex -0.366978 -38.538 -3 - vertex 0.962702 -38.4962 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -117.5 -117.5 -3 - vertex -0.366978 -38.538 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -12.0013 -38.1555 -3 - vertex -0.366978 -38.538 -3 - vertex -117.5 -117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.14673 -30.0798 -3 - vertex -6.41168 -29.738 -3 - vertex -4.26405 -24.3543 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.51249 -36.3769 -3 - vertex -3.80393 -35.193 -3 - vertex -7.31439 -36.7536 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.31439 -36.7536 -3 - vertex -3.80393 -35.193 -3 - vertex -3.26834 -36.6145 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -3.80393 -35.193 -3 - vertex -7.51249 -36.3769 -3 - vertex -3.99709 -33.5697 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.3919 -37.1883 -3 - vertex -3.26834 -36.6145 -3 - vertex -2.45619 -37.7112 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -8.07933 -37.9462 -3 - vertex -1.43333 -38.36 -3 - vertex -8.66873 -38.0883 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.26834 -36.6145 -3 - vertex -7.3919 -37.1883 -3 - vertex -7.31439 -36.7536 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -2.45619 -37.7112 -3 - vertex -7.74517 -37.6801 -3 - vertex -7.3919 -37.1883 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -2.45619 -37.7112 -3 - vertex -8.07933 -37.9462 -3 - vertex -7.74517 -37.6801 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -1.43333 -38.36 -3 - vertex -8.07933 -37.9462 -3 - vertex -2.45619 -37.7112 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -8.66873 -38.0883 -3 - vertex -0.366978 -38.538 -3 - vertex -12.0013 -38.1555 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.366978 -38.538 -3 - vertex -8.66873 -38.0883 -3 - vertex -1.43333 -38.36 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -12.0013 -38.1555 -3 - vertex -117.5 -117.5 -3 - vertex -15.3277 -38.0928 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -15.9213 -37.1689 -3 - vertex -16.6989 -37.6188 -3 - vertex -16.2226 -36.752 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.7983 -37.9502 -3 - vertex -16.6989 -37.6188 -3 - vertex -15.9433 -37.6764 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -17.5781 -38.0841 -3 - vertex -15.3277 -38.0928 -3 - vertex -117.5 -117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.7983 -37.9502 -3 - vertex -17.033 -37.9274 -3 - vertex -16.6989 -37.6188 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -15.7983 -37.9502 -3 - vertex -17.5781 -38.0841 -3 - vertex -17.033 -37.9274 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.3277 -38.0928 -3 - vertex -17.5781 -38.0841 -3 - vertex -15.7983 -37.9502 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.5781 -38.0841 -3 - vertex -117.5 -117.5 -3 - vertex -20.8226 -38.1301 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -25.0608 -37.8416 -3 - vertex -27.2791 -36.8782 -3 - vertex -25.157 -37.5754 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.2835 -38.1638 -3 - vertex -25.0608 -37.8416 -3 - vertex -24.8096 -38.0047 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -28.2835 -38.1638 -3 - vertex -20.8226 -38.1301 -3 - vertex -117.5 -117.5 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -25.0608 -37.8416 -3 - vertex -28.2835 -38.1638 -3 - vertex -27.2791 -36.8782 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -20.8226 -38.1301 -3 - vertex -28.2835 -38.1638 -3 - vertex -24.8096 -38.0047 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -28.2835 -38.1638 -3 - vertex -117.5 -117.5 -3 - vertex -37.632 -38.1325 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -47.8161 -37.7712 -3 - vertex -117.5 -117.5 -3 - vertex -47.9875 -37.5097 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -47.4646 -37.9547 -3 - vertex -117.5 -117.5 -3 - vertex -47.8161 -37.7712 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -37.632 -38.1325 -3 - vertex -117.5 -117.5 -3 - vertex -47.4646 -37.9547 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 47.7267 -19.5813 -3 - vertex 117.5 117.5 -3 - vertex 47.9875 -20.1225 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.5422 14.7505 -3 - vertex 47.7267 -19.5813 -3 - vertex 47.2139 -19.2263 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.528 9.70386 -3 - vertex 47.2139 -19.2263 -3 - vertex 46.2623 -19.1343 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 41.5319 -19.1343 -3 - vertex 46.2623 -19.1343 -3 - vertex 44.5909 -19.3768 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 42.1032 -19.4743 -3 - vertex 44.5909 -19.3768 -3 - vertex 42.943 -20.2657 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 44.5909 -19.3768 -3 - vertex 42.1032 -19.4743 -3 - vertex 41.8934 -19.2238 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 41.5319 -19.1343 -3 - vertex 44.5909 -19.3768 -3 - vertex 41.8934 -19.2238 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.528 9.70386 -3 - vertex 46.2623 -19.1343 -3 - vertex 41.5319 -19.1343 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 29.9429 -19.4981 -3 - vertex 41.5319 -19.1343 -3 - vertex 38.4798 -20.1181 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 30.7248 -19.9631 -3 - vertex 38.4798 -20.1181 -3 - vertex 35.5661 -21.102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 30.7248 -19.9631 -3 - vertex 35.5661 -21.102 -3 - vertex 35.2187 -21.2043 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 31.3699 -20.64 -3 - vertex 35.2187 -21.2043 -3 - vertex 34.9156 -21.474 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 30.2029 -31.1764 -3 - vertex 33.8444 -30.1753 -3 - vertex 32.5255 -33.371 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 34.7441 -22.7166 -3 - vertex 32.0255 -23.3848 -3 - vertex 34.62 -22.2927 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 32.0232 -22.2828 -3 - vertex 34.62 -22.2927 -3 - vertex 32.0255 -23.3848 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 31.8086 -21.404 -3 - vertex 34.62 -22.2927 -3 - vertex 32.0232 -22.2828 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 34.62 -22.2927 -3 - vertex 31.8086 -21.404 -3 - vertex 34.9156 -21.474 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 31.3699 -20.64 -3 - vertex 34.9156 -21.474 -3 - vertex 31.8086 -21.404 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 35.2187 -21.2043 -3 - vertex 31.3699 -20.64 -3 - vertex 30.7248 -19.9631 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 38.4798 -20.1181 -3 - vertex 30.7248 -19.9631 -3 - vertex 29.9429 -19.4981 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.528 9.70386 -3 - vertex 41.5319 -19.1343 -3 - vertex 29.9429 -19.4981 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.528 9.70386 -3 - vertex 29.9429 -19.4981 -3 - vertex 28.989 -19.2301 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.7235 1.18648 -3 - vertex 28.989 -19.2301 -3 - vertex 27.8281 -19.1444 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 47.2139 -19.2263 -3 - vertex 27.6094 12.2412 -3 - vertex 27.5422 14.7505 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 47.7267 -19.5813 -3 - vertex 27.5422 14.7505 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.4742 18.624 -3 - vertex 27.5422 14.7505 -3 - vertex 27.1755 15.8473 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.4742 18.624 -3 - vertex 27.1755 15.8473 -3 - vertex 26.6933 17.4601 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.5422 14.7505 -3 - vertex 26.4742 18.624 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9424 19.4837 -3 - vertex 117.5 117.5 -3 - vertex 26.4742 18.624 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.8319 23.6658 -3 - vertex 25.9424 19.4837 -3 - vertex 25.0752 20.0627 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.0827 22.427 -3 - vertex 25.0752 20.0627 -3 - vertex 23.8499 20.3844 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.2698 21.5943 -3 - vertex 23.8499 20.3844 -3 - vertex 23.1387 20.59 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.2698 21.5943 -3 - vertex 23.1387 20.59 -3 - vertex 22.6169 20.9877 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.8499 20.3844 -3 - vertex 22.2698 21.5943 -3 - vertex 22.0827 22.427 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.0752 20.0627 -3 - vertex 22.0827 22.427 -3 - vertex 21.8319 23.6658 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9424 19.4837 -3 - vertex 21.8319 23.6658 -3 - vertex 21.2755 24.568 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9424 19.4837 -3 - vertex 21.2755 24.568 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3134 30.0845 -3 - vertex 21.2755 24.568 -3 - vertex 20.1819 25.3734 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.4783 29.8698 -3 - vertex 20.1819 25.3734 -3 - vertex 18.3193 26.3216 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.4783 29.8698 -3 - vertex 18.3193 26.3216 -3 - vertex 17.0772 26.9817 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.6084 29.1601 -3 - vertex 17.0772 26.9817 -3 - vertex 16.2688 27.6146 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.6084 29.1601 -3 - vertex 16.2688 27.6146 -3 - vertex 15.808 28.3106 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.0772 26.9817 -3 - vertex 15.6084 29.1601 -3 - vertex 15.4783 29.8698 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3134 30.0845 -3 - vertex 20.1819 25.3734 -3 - vertex 15.4783 29.8698 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.2755 24.568 -3 - vertex 15.3134 30.0845 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.0123 26.7794 -3 - vertex 15.122 28.0941 -3 - vertex 12.5486 25.9653 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.8052 27.5343 -3 - vertex 15.122 28.0941 -3 - vertex 12.0123 26.7794 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.0577 29.0611 -3 - vertex 12.2907 30.5214 -3 - vertex 15.1584 29.8123 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.1584 29.8123 -3 - vertex 12.2907 30.5214 -3 - vertex 15.3134 30.0845 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.0544 30.7144 -3 - vertex 15.3134 30.0845 -3 - vertex 12.2907 30.5214 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3134 30.0845 -3 - vertex 12.0544 30.7144 -3 - vertex 5.25321 38.4452 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.19939 38.083 -3 - vertex 12.0544 30.7144 -3 - vertex 11.5971 30.3591 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 8.51885 25.3107 -3 - vertex 11.5037 26.4501 -3 - vertex 9.07032 24.476 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 11.5037 26.4501 -3 - vertex 8.51885 25.3107 -3 - vertex 11.1066 27.3577 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.91411 25.7528 -3 - vertex 11.1066 27.3577 -3 - vertex 8.51885 25.3107 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 11.1066 27.3577 -3 - vertex 7.91411 25.7528 -3 - vertex 11.0411 28.3898 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.11433 25.9588 -3 - vertex 11.0411 28.3898 -3 - vertex 7.91411 25.7528 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.72413 26.6445 -3 - vertex 11.0411 28.3898 -3 - vertex 7.11433 25.9588 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 11.0411 28.3898 -3 - vertex 5.72413 26.6445 -3 - vertex 11.2319 29.4873 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.72413 26.6445 -3 - vertex 7.11433 25.9588 -3 - vertex 6.4022 26.1795 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.3138 28.4461 -3 - vertex 11.2319 29.4873 -3 - vertex 5.72413 26.6445 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.57109 31.3388 -3 - vertex 11.2319 29.4873 -3 - vertex 4.3138 28.4461 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3134 30.0845 -3 - vertex 5.25321 38.4452 -3 - vertex 5.15152 38.5852 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3134 30.0845 -3 - vertex 5.15152 38.5852 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.115935 27.2162 -3 - vertex 1.04836 28.6106 -3 - vertex 0.858783 27.1101 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.786632 27.5359 -3 - vertex 1.04836 28.6106 -3 - vertex -0.115935 27.2162 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -1.46161 28.0795 -3 - vertex 1.04836 28.6106 -3 - vertex -0.786632 27.5359 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 1.04836 28.6106 -3 - vertex -1.46161 28.0795 -3 - vertex 1.1273 29.8907 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -2.77953 29.7664 -3 - vertex 1.1273 29.8907 -3 - vertex -1.46161 28.0795 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 1.1273 29.8907 -3 - vertex -2.77953 29.7664 -3 - vertex 1.37489 31.173 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.97987 32.1322 -3 - vertex 1.37489 31.173 -3 - vertex -2.77953 29.7664 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.37489 31.173 -3 - vertex -3.97987 32.1322 -3 - vertex 2.44067 33.9939 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -4.97284 35.0324 -3 - vertex 2.44067 33.9939 -3 - vertex -3.97987 32.1322 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.55994 36.5001 -3 - vertex 2.44067 33.9939 -3 - vertex -4.97284 35.0324 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 2.44067 33.9939 -3 - vertex -5.55994 36.5001 -3 - vertex 4.08079 37.0842 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 4.08079 37.0842 -3 - vertex -5.55994 36.5001 -3 - vertex 5.15152 38.5852 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.8163 36.5812 -3 - vertex 5.15152 38.5852 -3 - vertex -5.55994 36.5001 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -117.5 117.5 -3 - vertex 5.15152 38.5852 -3 - vertex -5.8163 36.5812 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.25507 27.2437 -3 - vertex -6.28322 28.2565 -3 - vertex -6.38329 27.6173 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -6.28322 28.2565 -3 - vertex -8.80952 27.3973 -3 - vertex -6.22131 31.7226 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.25507 27.2437 -3 - vertex -6.38329 27.6173 -3 - vertex -6.55612 27.3597 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -6.28322 28.2565 -3 - vertex -7.25507 27.2437 -3 - vertex -8.80952 27.3973 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -11.546 27.7352 -3 - vertex -6.22131 31.7226 -3 - vertex -8.80952 27.3973 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -6.22131 31.7226 -3 - vertex -11.546 27.7352 -3 - vertex -6.055 36.2349 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -13.5562 27.8374 -3 - vertex -6.055 36.2349 -3 - vertex -11.546 27.7352 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.2376 27.7001 -3 - vertex -6.055 36.2349 -3 - vertex -13.5562 27.8374 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.8096 27.6578 -3 - vertex -6.055 36.2349 -3 - vertex -15.2376 27.7001 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.8096 27.6578 -3 - vertex -15.2376 27.7001 -3 - vertex -16.9875 27.3196 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.9485 27.2141 -3 - vertex -16.9875 27.3196 -3 - vertex -19.335 26.703 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.8096 27.6578 -3 - vertex -16.9875 27.3196 -3 - vertex -19.9485 27.2141 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.4093 27.9007 -3 - vertex -6.055 36.2349 -3 - vertex -20.8096 27.6578 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -6.055 36.2349 -3 - vertex -22.4093 27.9007 -3 - vertex -5.8163 36.5812 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.3632 27.9554 -3 - vertex -5.8163 36.5812 -3 - vertex -22.4093 27.9007 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.666 27.4912 -3 - vertex -5.8163 36.5812 -3 - vertex -24.3632 27.9554 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -24.3225 27.6757 -3 - vertex -27.4214 26.3653 -3 - vertex -24.3632 27.9554 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.2879 26.9865 -3 - vertex -24.3632 27.9554 -3 - vertex -27.4214 26.3653 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.3632 27.9554 -3 - vertex -29.2879 26.9865 -3 - vertex -30.666 27.4912 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -31.2177 27.4629 -3 - vertex -5.8163 36.5812 -3 - vertex -30.666 27.4912 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -5.8163 36.5812 -3 - vertex -31.2177 27.4629 -3 - vertex -117.5 117.5 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -31.2773 24.779 -3 - vertex -34.2108 23.023 -3 - vertex -31.2912 27.2229 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -36.1697 23.9798 -3 - vertex -31.2912 27.2229 -3 - vertex -34.2108 23.023 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.7877 25.1404 -3 - vertex -31.2912 27.2229 -3 - vertex -36.1697 23.9798 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -31.2912 27.2229 -3 - vertex -37.7877 25.1404 -3 - vertex -31.2177 27.4629 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -38.5782 25.7376 -3 - vertex -31.2177 27.4629 -3 - vertex -37.7877 25.1404 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -39.0347 25.8392 -3 - vertex -31.2177 27.4629 -3 - vertex -38.5782 25.7376 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -31.2177 27.4629 -3 - vertex -39.0347 25.8392 -3 - vertex -117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -47.2102 -36.2359 -3 - vertex -39.9072 -25.4747 -3 - vertex -42.237 -30.9405 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -47.2102 -36.2359 -3 - vertex -42.237 -30.9405 -3 - vertex -43.2543 -33.2915 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -46.1801 -35.8499 -3 - vertex -43.2543 -33.2915 -3 - vertex -44.1198 -34.7306 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -46.1801 -35.8499 -3 - vertex -44.1198 -34.7306 -3 - vertex -45.0296 -35.5019 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -43.2543 -33.2915 -3 - vertex -46.1801 -35.8499 -3 - vertex -47.2102 -36.2359 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.5366 -12.7854 -3 - vertex -47.2102 -36.2359 -3 - vertex -47.8577 -36.863 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -37.5366 -12.7854 -3 - vertex -47.8577 -36.863 -3 - vertex -39.1303 25.4589 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -117.5 -117.5 -3 - vertex -47.8577 -36.863 -3 - vertex -47.9875 -37.5097 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -47.8577 -36.863 -3 - vertex -117.5 -117.5 -3 - vertex -117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -47.8577 -36.863 -3 - vertex -117.5 117.5 -3 - vertex -39.1303 25.4589 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.15152 38.5852 -3 - vertex -117.5 117.5 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -39.1303 25.4589 -3 - vertex -117.5 117.5 -3 - vertex -39.0347 25.8392 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 40.0289 -25.46 -3 - vertex 44.7368 -24.1643 -3 - vertex 38.2188 -29.6614 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 36.8272 -33.2656 -3 - vertex 37.9618 -36.3241 -3 - vertex 37.1913 -36.0604 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 37.9618 -36.3241 -3 - vertex 36.8272 -33.2656 -3 - vertex 38.2188 -29.6614 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 36.2918 -35.0946 -3 - vertex 37.1913 -36.0604 -3 - vertex 36.3972 -35.7834 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 37.1913 -36.0604 -3 - vertex 36.2918 -35.0946 -3 - vertex 36.8272 -33.2656 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.72145 16.1788 -3 - vertex 9.76373 17.1908 -3 - vertex 10.4258 16.5104 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 8.86535 15.8492 -3 - vertex 9.76373 17.1908 -3 - vertex 9.72145 16.1788 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 8.028 17.0592 -3 - vertex 9.76373 17.1908 -3 - vertex 8.86535 15.8492 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 9.76373 17.1908 -3 - vertex 8.028 17.0592 -3 - vertex 8.30319 18.4459 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.15178 18.7442 -3 - vertex 8.30319 18.4459 -3 - vertex 8.028 17.0592 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 8.30319 18.4459 -3 - vertex 7.15178 18.7442 -3 - vertex 7.1994 19.1268 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -10.5829 24.4 -3 - vertex -11.2742 24.7069 -3 - vertex -10.6709 24.5009 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -14.1729 23.8467 -3 - vertex -11.2742 24.7069 -3 - vertex -10.5829 24.4 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -11.2742 24.7069 -3 - vertex -14.1729 23.8467 -3 - vertex -13.9393 24.99 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -14.1729 23.8467 -3 - vertex -16.6107 24.7853 -3 - vertex -13.9393 24.99 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3275 23.0662 -3 - vertex -16.6107 24.7853 -3 - vertex -14.1729 23.8467 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3275 23.0662 -3 - vertex -20.4324 24.2101 -3 - vertex -16.6107 24.7853 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.5591 22.7309 -3 - vertex -20.4324 24.2101 -3 - vertex -19.3275 23.0662 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.0432 22.8497 -3 - vertex -20.4324 24.2101 -3 - vertex -21.5591 22.7309 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.6641 23.2546 -3 - vertex -20.4324 24.2101 -3 - vertex -22.0432 22.8497 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.4324 24.2101 -3 - vertex -22.6641 23.2546 -3 - vertex -23.3809 23.8604 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.4233 -24.8188 -3 - vertex 27.3613 -24.0204 -3 - vertex 27.2283 -24.8188 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 26.0804 -21.8157 -3 - vertex 27.3613 -24.0204 -3 - vertex 24.4233 -24.8188 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.3668 -22.8574 -3 - vertex 26.0804 -21.8157 -3 - vertex 26.9354 -22.1189 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.3613 -24.0204 -3 - vertex 26.0804 -21.8157 -3 - vertex 27.3668 -22.8574 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.0804 -21.8157 -3 - vertex 24.4233 -24.8188 -3 - vertex 24.8153 -21.9586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.4233 -24.8188 -3 - vertex 23.7526 -22.3987 -3 - vertex 24.8153 -21.9586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.4233 -24.8188 -3 - vertex 22.6861 -23.3258 -3 - vertex 23.7526 -22.3987 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 22.6861 -23.3258 -3 - vertex 24.4233 -24.8188 -3 - vertex 21.6183 -24.6221 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.70773 -21.5983 -3 - vertex 10.169 -23.3758 -3 - vertex 10.0775 -24.2416 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 6.85097 -21.9079 -3 - vertex 10.0775 -24.2416 -3 - vertex 9.7411 -25.4359 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 8.49325 -21.5121 -3 - vertex 10.169 -23.3758 -3 - vertex 7.70773 -21.5983 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.169 -23.3758 -3 - vertex 8.49325 -21.5121 -3 - vertex 10.0454 -22.5812 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.0454 -22.5812 -3 - vertex 9.16984 -21.6481 -3 - vertex 9.69979 -22.0048 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.84714 -24.6213 -3 - vertex 9.7411 -25.4359 -3 - vertex 7.96204 -29.9101 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.0775 -24.2416 -3 - vertex 6.85097 -21.9079 -3 - vertex 7.70773 -21.5983 -3 - endloop - endfacet - facet normal -0 -0 -1 - outer loop - vertex 9.16984 -21.6481 -3 - vertex 10.0454 -22.5812 -3 - vertex 8.49325 -21.5121 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.3456 -29.5107 -3 - vertex 7.96204 -29.9101 -3 - vertex 6.30534 -33.4759 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.7411 -25.4359 -3 - vertex 5.96068 -22.4422 -3 - vertex 6.85097 -21.9079 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.901133 -32.5034 -3 - vertex 6.30534 -33.4759 -3 - vertex 5.71313 -34.2297 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.7411 -25.4359 -3 - vertex 5.07455 -23.2024 -3 - vertex 5.96068 -22.4422 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.901133 -32.5034 -3 - vertex 5.71313 -34.2297 -3 - vertex 5.04571 -34.678 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.901133 -32.5034 -3 - vertex 5.04571 -34.678 -3 - vertex 4.11511 -35.011 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.7411 -25.4359 -3 - vertex 3.84714 -24.6213 -3 - vertex 5.07455 -23.2024 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.901133 -32.5034 -3 - vertex 4.11511 -35.011 -3 - vertex 3.17687 -35.0966 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.96204 -29.9101 -3 - vertex 2.80055 -26.1986 -3 - vertex 3.84714 -24.6213 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.11766 -33.6813 -3 - vertex 3.17687 -35.0966 -3 - vertex 2.32628 -34.9386 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.96204 -29.9101 -3 - vertex 1.95873 -27.8549 -3 - vertex 2.80055 -26.1986 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.11766 -33.6813 -3 - vertex 2.32628 -34.9386 -3 - vertex 1.65861 -34.5411 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.96204 -29.9101 -3 - vertex 1.3456 -29.5107 -3 - vertex 1.95873 -27.8549 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.17687 -35.0966 -3 - vertex 1.11766 -33.6813 -3 - vertex 0.901133 -32.5034 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 6.30534 -33.4759 -3 - vertex 0.985088 -31.0867 -3 - vertex 1.3456 -29.5107 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 6.30534 -33.4759 -3 - vertex 0.901133 -32.5034 -3 - vertex 0.985088 -31.0867 -3 - endloop - endfacet - facet normal -0.929682 -0.368364 0 - outer loop - vertex 19.6777 -11.13 -3 - vertex 19.5452 -10.7956 0 - vertex 19.5452 -10.7956 -3 - endloop - endfacet - facet normal -0.929682 -0.368364 0 - outer loop - vertex 19.5452 -10.7956 0 - vertex 19.6777 -11.13 -3 - vertex 19.6777 -11.13 0 - endloop - endfacet - facet normal -0.933646 0.358197 0 - outer loop - vertex 17.1521 -17.7131 -3 - vertex 19.6777 -11.13 0 - vertex 19.6777 -11.13 -3 - endloop - endfacet - facet normal -0.933646 0.358197 0 - outer loop - vertex 19.6777 -11.13 0 - vertex 17.1521 -17.7131 -3 - vertex 17.1521 -17.7131 0 - endloop - endfacet - facet normal -0.922106 0.386938 0 - outer loop - vertex 14.5835 -23.8342 -3 - vertex 17.1521 -17.7131 0 - vertex 17.1521 -17.7131 -3 - endloop - endfacet - facet normal -0.922106 0.386938 0 - outer loop - vertex 17.1521 -17.7131 0 - vertex 14.5835 -23.8342 -3 - vertex 14.5835 -23.8342 0 - endloop - endfacet - facet normal -0.926605 0.376035 0 - outer loop - vertex 11.4887 -31.4602 -3 - vertex 14.5835 -23.8342 0 - vertex 14.5835 -23.8342 -3 - endloop - endfacet - facet normal -0.926605 0.376035 0 - outer loop - vertex 14.5835 -23.8342 0 - vertex 11.4887 -31.4602 -3 - vertex 11.4887 -31.4602 0 - endloop - endfacet - facet normal -0.942271 0.334852 0 - outer loop - vertex 10.915 -33.0747 -3 - vertex 11.4887 -31.4602 0 - vertex 11.4887 -31.4602 -3 - endloop - endfacet - facet normal -0.942271 0.334852 0 - outer loop - vertex 11.4887 -31.4602 0 - vertex 10.915 -33.0747 -3 - vertex 10.915 -33.0747 0 - endloop - endfacet - facet normal -0.976917 0.213621 0 - outer loop - vertex 10.7197 -33.9677 -3 - vertex 10.915 -33.0747 0 - vertex 10.915 -33.0747 -3 - endloop - endfacet - facet normal -0.976917 0.213621 0 - outer loop - vertex 10.915 -33.0747 0 - vertex 10.7197 -33.9677 -3 - vertex 10.7197 -33.9677 0 - endloop - endfacet - facet normal -0.904266 -0.42697 0 - outer loop - vertex 10.9006 -34.3507 -3 - vertex 10.7197 -33.9677 0 - vertex 10.7197 -33.9677 -3 - endloop - endfacet - facet normal -0.904266 -0.42697 0 - outer loop - vertex 10.7197 -33.9677 0 - vertex 10.9006 -34.3507 -3 - vertex 10.9006 -34.3507 0 - endloop - endfacet - facet normal -0.15089 -0.988551 0 - outer loop - vertex 10.9006 -34.3507 -3 - vertex 11.4551 -34.4353 0 - vertex 10.9006 -34.3507 0 - endloop - endfacet - facet normal -0.15089 -0.988551 -0 - outer loop - vertex 11.4551 -34.4353 0 - vertex 10.9006 -34.3507 -3 - vertex 11.4551 -34.4353 -3 - endloop - endfacet - facet normal -0.233297 -0.972406 0 - outer loop - vertex 11.4551 -34.4353 -3 - vertex 11.871 -34.5351 0 - vertex 11.4551 -34.4353 0 - endloop - endfacet - facet normal -0.233297 -0.972406 -0 - outer loop - vertex 11.871 -34.5351 0 - vertex 11.4551 -34.4353 -3 - vertex 11.871 -34.5351 -3 - endloop - endfacet - facet normal -0.702731 -0.711456 0 - outer loop - vertex 11.871 -34.5351 -3 - vertex 12.1385 -34.7994 0 - vertex 11.871 -34.5351 0 - endloop - endfacet - facet normal -0.702731 -0.711456 -0 - outer loop - vertex 12.1385 -34.7994 0 - vertex 11.871 -34.5351 -3 - vertex 12.1385 -34.7994 -3 - endloop - endfacet - facet normal -0.970405 -0.241485 0 - outer loop - vertex 12.2351 -35.1874 -3 - vertex 12.1385 -34.7994 0 - vertex 12.1385 -34.7994 -3 - endloop - endfacet - facet normal -0.970405 -0.241485 0 - outer loop - vertex 12.1385 -34.7994 0 - vertex 12.2351 -35.1874 -3 - vertex 12.2351 -35.1874 0 - endloop - endfacet - facet normal -0.979345 0.202199 0 - outer loop - vertex 12.1379 -35.6584 -3 - vertex 12.2351 -35.1874 0 - vertex 12.2351 -35.1874 -3 - endloop - endfacet - facet normal -0.979345 0.202199 0 - outer loop - vertex 12.2351 -35.1874 0 - vertex 12.1379 -35.6584 -3 - vertex 12.1379 -35.6584 0 - endloop - endfacet - facet normal -0.791253 0.611489 0 - outer loop - vertex 11.7916 -36.1064 -3 - vertex 12.1379 -35.6584 0 - vertex 12.1379 -35.6584 -3 - endloop - endfacet - facet normal -0.791253 0.611489 0 - outer loop - vertex 12.1379 -35.6584 0 - vertex 11.7916 -36.1064 -3 - vertex 11.7916 -36.1064 0 - endloop - endfacet - facet normal -0.605591 0.795776 0 - outer loop - vertex 11.7916 -36.1064 -3 - vertex 11.1962 -36.5595 0 - vertex 11.7916 -36.1064 0 - endloop - endfacet - facet normal -0.605591 0.795776 0 - outer loop - vertex 11.1962 -36.5595 0 - vertex 11.7916 -36.1064 -3 - vertex 11.1962 -36.5595 -3 - endloop - endfacet - facet normal -0.461492 0.887144 0 - outer loop - vertex 11.1962 -36.5595 -3 - vertex 10.519 -36.9119 0 - vertex 11.1962 -36.5595 0 - endloop - endfacet - facet normal -0.461492 0.887144 0 - outer loop - vertex 10.519 -36.9119 0 - vertex 11.1962 -36.5595 -3 - vertex 10.519 -36.9119 -3 - endloop - endfacet - facet normal -0.238946 0.971033 0 - outer loop - vertex 10.519 -36.9119 -3 - vertex 9.92719 -37.0575 0 - vertex 10.519 -36.9119 0 - endloop - endfacet - facet normal -0.238946 0.971033 0 - outer loop - vertex 9.92719 -37.0575 0 - vertex 10.519 -36.9119 -3 - vertex 9.92719 -37.0575 -3 - endloop - endfacet - facet normal -0.276943 0.960886 0 - outer loop - vertex 9.92719 -37.0575 -3 - vertex 8.47177 -37.477 0 - vertex 9.92719 -37.0575 0 - endloop - endfacet - facet normal -0.276943 0.960886 0 - outer loop - vertex 8.47177 -37.477 0 - vertex 9.92719 -37.0575 -3 - vertex 8.47177 -37.477 -3 - endloop - endfacet - facet normal -0.302213 0.95324 0 - outer loop - vertex 8.47177 -37.477 -3 - vertex 5.33583 -38.4712 0 - vertex 8.47177 -37.477 0 - endloop - endfacet - facet normal -0.302213 0.95324 0 - outer loop - vertex 5.33583 -38.4712 0 - vertex 8.47177 -37.477 -3 - vertex 5.33583 -38.4712 -3 - endloop - endfacet - facet normal 0.267926 0.96344 -0 - outer loop - vertex 5.33583 -38.4712 -3 - vertex 4.84381 -38.3343 0 - vertex 5.33583 -38.4712 0 - endloop - endfacet - facet normal 0.267926 0.96344 0 - outer loop - vertex 4.84381 -38.3343 0 - vertex 5.33583 -38.4712 -3 - vertex 4.84381 -38.3343 -3 - endloop - endfacet - facet normal 0.979739 0.200279 0 - outer loop - vertex 4.84381 -38.3343 0 - vertex 4.73542 -37.8041 -3 - vertex 4.73542 -37.8041 0 - endloop - endfacet - facet normal 0.979739 0.200279 0 - outer loop - vertex 4.73542 -37.8041 -3 - vertex 4.84381 -38.3343 0 - vertex 4.84381 -38.3343 -3 - endloop - endfacet - facet normal 0.985121 0.171864 0 - outer loop - vertex 4.73542 -37.8041 0 - vertex 4.64415 -37.2809 -3 - vertex 4.64415 -37.2809 0 - endloop - endfacet - facet normal 0.985121 0.171864 0 - outer loop - vertex 4.64415 -37.2809 -3 - vertex 4.73542 -37.8041 0 - vertex 4.73542 -37.8041 -3 - endloop - endfacet - facet normal -0.43 0.902829 0 - outer loop - vertex 4.64415 -37.2809 -3 - vertex 3.43985 -37.8545 0 - vertex 4.64415 -37.2809 0 - endloop - endfacet - facet normal -0.43 0.902829 0 - outer loop - vertex 3.43985 -37.8545 0 - vertex 4.64415 -37.2809 -3 - vertex 3.43985 -37.8545 -3 - endloop - endfacet - facet normal -0.338512 0.940962 0 - outer loop - vertex 3.43985 -37.8545 -3 - vertex 2.31266 -38.26 0 - vertex 3.43985 -37.8545 0 - endloop - endfacet - facet normal -0.338512 0.940962 0 - outer loop - vertex 2.31266 -38.26 0 - vertex 3.43985 -37.8545 -3 - vertex 2.31266 -38.26 -3 - endloop - endfacet - facet normal -0.172368 0.985033 0 - outer loop - vertex 2.31266 -38.26 -3 - vertex 0.962702 -38.4962 0 - vertex 2.31266 -38.26 0 - endloop - endfacet - facet normal -0.172368 0.985033 0 - outer loop - vertex 0.962702 -38.4962 0 - vertex 2.31266 -38.26 -3 - vertex 0.962702 -38.4962 -3 - endloop - endfacet - facet normal -0.0313759 0.999508 0 - outer loop - vertex 0.962702 -38.4962 -3 - vertex -0.366978 -38.538 0 - vertex 0.962702 -38.4962 0 - endloop - endfacet - facet normal -0.0313759 0.999508 0 - outer loop - vertex -0.366978 -38.538 0 - vertex 0.962702 -38.4962 -3 - vertex -0.366978 -38.538 -3 - endloop - endfacet - facet normal 0.16461 0.986359 -0 - outer loop - vertex -0.366978 -38.538 -3 - vertex -1.43333 -38.36 0 - vertex -0.366978 -38.538 0 - endloop - endfacet - facet normal 0.16461 0.986359 0 - outer loop - vertex -1.43333 -38.36 0 - vertex -0.366978 -38.538 -3 - vertex -1.43333 -38.36 -3 - endloop - endfacet - facet normal 0.535641 0.844446 -0 - outer loop - vertex -1.43333 -38.36 -3 - vertex -2.45619 -37.7112 0 - vertex -1.43333 -38.36 0 - endloop - endfacet - facet normal 0.535641 0.844446 0 - outer loop - vertex -2.45619 -37.7112 0 - vertex -1.43333 -38.36 -3 - vertex -2.45619 -37.7112 -3 - endloop - endfacet - facet normal 0.80363 0.595129 0 - outer loop - vertex -2.45619 -37.7112 0 - vertex -3.26834 -36.6145 -3 - vertex -3.26834 -36.6145 0 - endloop - endfacet - facet normal 0.80363 0.595129 0 - outer loop - vertex -3.26834 -36.6145 -3 - vertex -2.45619 -37.7112 0 - vertex -2.45619 -37.7112 -3 - endloop - endfacet - facet normal 0.935783 0.352578 0 - outer loop - vertex -3.26834 -36.6145 0 - vertex -3.80393 -35.193 -3 - vertex -3.80393 -35.193 0 - endloop - endfacet - facet normal 0.935783 0.352578 0 - outer loop - vertex -3.80393 -35.193 -3 - vertex -3.26834 -36.6145 0 - vertex -3.26834 -36.6145 -3 - endloop - endfacet - facet normal 0.992994 0.118162 0 - outer loop - vertex -3.80393 -35.193 0 - vertex -3.99709 -33.5697 -3 - vertex -3.99709 -33.5697 0 - endloop - endfacet - facet normal 0.992994 0.118162 0 - outer loop - vertex -3.99709 -33.5697 -3 - vertex -3.80393 -35.193 0 - vertex -3.80393 -35.193 -3 - endloop - endfacet - facet normal 0.988913 -0.148494 0 - outer loop - vertex -3.99709 -33.5697 0 - vertex -3.7659 -32.0301 -3 - vertex -3.7659 -32.0301 0 - endloop - endfacet - facet normal 0.988913 -0.148494 0 - outer loop - vertex -3.7659 -32.0301 -3 - vertex -3.99709 -33.5697 0 - vertex -3.99709 -33.5697 -3 - endloop - endfacet - facet normal 0.953123 -0.302584 0 - outer loop - vertex -3.7659 -32.0301 0 - vertex -3.14673 -30.0798 -3 - vertex -3.14673 -30.0798 0 - endloop - endfacet - facet normal 0.953123 -0.302584 0 - outer loop - vertex -3.14673 -30.0798 -3 - vertex -3.7659 -32.0301 0 - vertex -3.7659 -32.0301 -3 - endloop - endfacet - facet normal 0.917453 -0.397844 0 - outer loop - vertex -3.14673 -30.0798 0 - vertex -2.25121 -28.0146 -3 - vertex -2.25121 -28.0146 0 - endloop - endfacet - facet normal 0.917453 -0.397844 0 - outer loop - vertex -2.25121 -28.0146 -3 - vertex -3.14673 -30.0798 0 - vertex -3.14673 -30.0798 -3 - endloop - endfacet - facet normal 0.871478 -0.490435 0 - outer loop - vertex -2.25121 -28.0146 0 - vertex -1.19093 -26.1306 -3 - vertex -1.19093 -26.1306 0 - endloop - endfacet - facet normal 0.871478 -0.490435 0 - outer loop - vertex -1.19093 -26.1306 -3 - vertex -2.25121 -28.0146 0 - vertex -2.25121 -28.0146 -3 - endloop - endfacet - facet normal 0.794031 -0.607877 0 - outer loop - vertex -1.19093 -26.1306 0 - vertex 0.168338 -24.355 -3 - vertex 0.168338 -24.355 0 - endloop - endfacet - facet normal 0.794031 -0.607877 0 - outer loop - vertex 0.168338 -24.355 -3 - vertex -1.19093 -26.1306 0 - vertex -1.19093 -26.1306 -3 - endloop - endfacet - facet normal 0.710709 -0.703486 0 - outer loop - vertex 0.168338 -24.355 0 - vertex 1.84511 -22.661 -3 - vertex 1.84511 -22.661 0 - endloop - endfacet - facet normal 0.710709 -0.703486 0 - outer loop - vertex 1.84511 -22.661 -3 - vertex 0.168338 -24.355 0 - vertex 0.168338 -24.355 -3 - endloop - endfacet - facet normal 0.626061 -0.779774 0 - outer loop - vertex 1.84511 -22.661 -3 - vertex 3.72385 -21.1527 0 - vertex 1.84511 -22.661 0 - endloop - endfacet - facet normal 0.626061 -0.779774 0 - outer loop - vertex 3.72385 -21.1527 0 - vertex 1.84511 -22.661 -3 - vertex 3.72385 -21.1527 -3 - endloop - endfacet - facet normal 0.527042 -0.849839 0 - outer loop - vertex 3.72385 -21.1527 -3 - vertex 5.689 -19.9339 0 - vertex 3.72385 -21.1527 0 - endloop - endfacet - facet normal 0.527042 -0.849839 0 - outer loop - vertex 5.689 -19.9339 0 - vertex 3.72385 -21.1527 -3 - vertex 5.689 -19.9339 -3 - endloop - endfacet - facet normal 0.380142 -0.924928 0 - outer loop - vertex 5.689 -19.9339 -3 - vertex 7.06268 -19.3694 0 - vertex 5.689 -19.9339 0 - endloop - endfacet - facet normal 0.380142 -0.924928 0 - outer loop - vertex 7.06268 -19.3694 0 - vertex 5.689 -19.9339 -3 - vertex 7.06268 -19.3694 -3 - endloop - endfacet - facet normal 0.11624 -0.993221 0 - outer loop - vertex 7.06268 -19.3694 -3 - vertex 8.75581 -19.1712 0 - vertex 7.06268 -19.3694 0 - endloop - endfacet - facet normal 0.11624 -0.993221 0 - outer loop - vertex 8.75581 -19.1712 0 - vertex 7.06268 -19.3694 -3 - vertex 8.75581 -19.1712 -3 - endloop - endfacet - facet normal -0.00391511 -0.999992 0 - outer loop - vertex 8.75581 -19.1712 -3 - vertex 10.3474 -19.1774 0 - vertex 8.75581 -19.1712 0 - endloop - endfacet - facet normal -0.00391511 -0.999992 -0 - outer loop - vertex 10.3474 -19.1774 0 - vertex 8.75581 -19.1712 -3 - vertex 10.3474 -19.1774 -3 - endloop - endfacet - facet normal -0.375648 -0.926763 0 - outer loop - vertex 10.3474 -19.1774 -3 - vertex 11.2177 -19.5302 0 - vertex 10.3474 -19.1774 0 - endloop - endfacet - facet normal -0.375648 -0.926763 -0 - outer loop - vertex 11.2177 -19.5302 0 - vertex 10.3474 -19.1774 -3 - vertex 11.2177 -19.5302 -3 - endloop - endfacet - facet normal -0.460444 -0.887689 0 - outer loop - vertex 11.2177 -19.5302 -3 - vertex 11.7785 -19.8211 0 - vertex 11.2177 -19.5302 0 - endloop - endfacet - facet normal -0.460444 -0.887689 -0 - outer loop - vertex 11.7785 -19.8211 0 - vertex 11.2177 -19.5302 -3 - vertex 11.7785 -19.8211 -3 - endloop - endfacet - facet normal 0.340288 -0.940321 0 - outer loop - vertex 11.7785 -19.8211 -3 - vertex 12.058 -19.7199 0 - vertex 11.7785 -19.8211 0 - endloop - endfacet - facet normal 0.340288 -0.940321 0 - outer loop - vertex 12.058 -19.7199 0 - vertex 11.7785 -19.8211 -3 - vertex 12.058 -19.7199 -3 - endloop - endfacet - facet normal 0.919444 -0.393221 0 - outer loop - vertex 12.058 -19.7199 0 - vertex 13.2867 -16.8469 -3 - vertex 13.2867 -16.8469 0 - endloop - endfacet - facet normal 0.919444 -0.393221 0 - outer loop - vertex 13.2867 -16.8469 -3 - vertex 12.058 -19.7199 0 - vertex 12.058 -19.7199 -3 - endloop - endfacet - facet normal 0.948333 -0.317278 0 - outer loop - vertex 13.2867 -16.8469 0 - vertex 14.1246 -14.3424 -3 - vertex 14.1246 -14.3424 0 - endloop - endfacet - facet normal 0.948333 -0.317278 0 - outer loop - vertex 14.1246 -14.3424 -3 - vertex 13.2867 -16.8469 0 - vertex 13.2867 -16.8469 -3 - endloop - endfacet - facet normal 0.170025 0.98544 -0 - outer loop - vertex 14.1246 -14.3424 -3 - vertex 12.858 -14.1239 0 - vertex 14.1246 -14.3424 0 - endloop - endfacet - facet normal 0.170025 0.98544 0 - outer loop - vertex 12.858 -14.1239 0 - vertex 14.1246 -14.3424 -3 - vertex 12.858 -14.1239 -3 - endloop - endfacet - facet normal 0.649749 0.760149 -0 - outer loop - vertex 12.858 -14.1239 -3 - vertex 12.417 -13.7469 0 - vertex 12.858 -14.1239 0 - endloop - endfacet - facet normal 0.649749 0.760149 0 - outer loop - vertex 12.417 -13.7469 0 - vertex 12.858 -14.1239 -3 - vertex 12.417 -13.7469 -3 - endloop - endfacet - facet normal 0.999788 0.0206018 0 - outer loop - vertex 12.417 -13.7469 0 - vertex 12.4073 -13.2773 -3 - vertex 12.4073 -13.2773 0 - endloop - endfacet - facet normal 0.999788 0.0206018 0 - outer loop - vertex 12.4073 -13.2773 -3 - vertex 12.417 -13.7469 0 - vertex 12.417 -13.7469 -3 - endloop - endfacet - facet normal 0.884204 -0.467101 0 - outer loop - vertex 12.4073 -13.2773 0 - vertex 12.6527 -12.8127 -3 - vertex 12.6527 -12.8127 0 - endloop - endfacet - facet normal 0.884204 -0.467101 0 - outer loop - vertex 12.6527 -12.8127 -3 - vertex 12.4073 -13.2773 0 - vertex 12.4073 -13.2773 -3 - endloop - endfacet - facet normal 0.661795 -0.749685 0 - outer loop - vertex 12.6527 -12.8127 -3 - vertex 13.1035 -12.4147 0 - vertex 12.6527 -12.8127 0 - endloop - endfacet - facet normal 0.661795 -0.749685 0 - outer loop - vertex 13.1035 -12.4147 0 - vertex 12.6527 -12.8127 -3 - vertex 13.1035 -12.4147 -3 - endloop - endfacet - facet normal 0.406349 -0.913718 0 - outer loop - vertex 13.1035 -12.4147 -3 - vertex 13.71 -12.1451 0 - vertex 13.1035 -12.4147 0 - endloop - endfacet - facet normal 0.406349 -0.913718 0 - outer loop - vertex 13.71 -12.1451 0 - vertex 13.1035 -12.4147 -3 - vertex 13.71 -12.1451 -3 - endloop - endfacet - facet normal 0.283559 -0.958955 0 - outer loop - vertex 13.71 -12.1451 -3 - vertex 16.7993 -11.2316 0 - vertex 13.71 -12.1451 0 - endloop - endfacet - facet normal 0.283559 -0.958955 0 - outer loop - vertex 16.7993 -11.2316 0 - vertex 13.71 -12.1451 -3 - vertex 16.7993 -11.2316 -3 - endloop - endfacet - facet normal 0.227026 -0.973889 0 - outer loop - vertex 16.7993 -11.2316 -3 - vertex 19.0845 -10.6988 0 - vertex 16.7993 -11.2316 0 - endloop - endfacet - facet normal 0.227026 -0.973889 0 - outer loop - vertex 19.0845 -10.6988 0 - vertex 16.7993 -11.2316 -3 - vertex 19.0845 -10.6988 -3 - endloop - endfacet - facet normal -0.20555 -0.978647 0 - outer loop - vertex 19.0845 -10.6988 -3 - vertex 19.5452 -10.7956 0 - vertex 19.0845 -10.6988 0 - endloop - endfacet - facet normal -0.20555 -0.978647 -0 - outer loop - vertex 19.5452 -10.7956 0 - vertex 19.0845 -10.6988 -3 - vertex 19.5452 -10.7956 -3 - endloop - endfacet - facet normal -0.339851 0.940479 0 - outer loop - vertex 7.70773 -21.5983 -3 - vertex 6.85097 -21.9079 0 - vertex 7.70773 -21.5983 0 - endloop - endfacet - facet normal -0.339851 0.940479 0 - outer loop - vertex 6.85097 -21.9079 0 - vertex 7.70773 -21.5983 -3 - vertex 6.85097 -21.9079 -3 - endloop - endfacet - facet normal -0.514575 0.857445 0 - outer loop - vertex 6.85097 -21.9079 -3 - vertex 5.96068 -22.4422 0 - vertex 6.85097 -21.9079 0 - endloop - endfacet - facet normal -0.514575 0.857445 0 - outer loop - vertex 5.96068 -22.4422 0 - vertex 6.85097 -21.9079 -3 - vertex 5.96068 -22.4422 -3 - endloop - endfacet - facet normal -0.651148 0.758951 0 - outer loop - vertex 5.96068 -22.4422 -3 - vertex 5.07455 -23.2024 0 - vertex 5.96068 -22.4422 0 - endloop - endfacet - facet normal -0.651148 0.758951 0 - outer loop - vertex 5.07455 -23.2024 0 - vertex 5.96068 -22.4422 -3 - vertex 5.07455 -23.2024 -3 - endloop - endfacet - facet normal -0.756285 0.654243 0 - outer loop - vertex 3.84714 -24.6213 -3 - vertex 5.07455 -23.2024 0 - vertex 5.07455 -23.2024 -3 - endloop - endfacet - facet normal -0.756285 0.654243 0 - outer loop - vertex 5.07455 -23.2024 0 - vertex 3.84714 -24.6213 -3 - vertex 3.84714 -24.6213 0 - endloop - endfacet - facet normal -0.833253 0.552891 0 - outer loop - vertex 2.80055 -26.1986 -3 - vertex 3.84714 -24.6213 0 - vertex 3.84714 -24.6213 -3 - endloop - endfacet - facet normal -0.833253 0.552891 0 - outer loop - vertex 3.84714 -24.6213 0 - vertex 2.80055 -26.1986 -3 - vertex 2.80055 -26.1986 0 - endloop - endfacet - facet normal -0.891463 0.453094 0 - outer loop - vertex 1.95873 -27.8549 -3 - vertex 2.80055 -26.1986 0 - vertex 2.80055 -26.1986 -3 - endloop - endfacet - facet normal -0.891463 0.453094 0 - outer loop - vertex 2.80055 -26.1986 0 - vertex 1.95873 -27.8549 -3 - vertex 1.95873 -27.8549 0 - endloop - endfacet - facet normal -0.937776 0.347241 0 - outer loop - vertex 1.3456 -29.5107 -3 - vertex 1.95873 -27.8549 0 - vertex 1.95873 -27.8549 -3 - endloop - endfacet - facet normal -0.937776 0.347241 0 - outer loop - vertex 1.95873 -27.8549 0 - vertex 1.3456 -29.5107 -3 - vertex 1.3456 -29.5107 0 - endloop - endfacet - facet normal -0.97482 0.222992 0 - outer loop - vertex 0.985088 -31.0867 -3 - vertex 1.3456 -29.5107 0 - vertex 1.3456 -29.5107 -3 - endloop - endfacet - facet normal -0.97482 0.222992 0 - outer loop - vertex 1.3456 -29.5107 0 - vertex 0.985088 -31.0867 -3 - vertex 0.985088 -31.0867 0 - endloop - endfacet - facet normal -0.998249 0.0591584 0 - outer loop - vertex 0.901133 -32.5034 -3 - vertex 0.985088 -31.0867 0 - vertex 0.985088 -31.0867 -3 - endloop - endfacet - facet normal -0.998249 0.0591584 0 - outer loop - vertex 0.985088 -31.0867 0 - vertex 0.901133 -32.5034 -3 - vertex 0.901133 -32.5034 0 - endloop - endfacet - facet normal -0.983521 -0.180795 0 - outer loop - vertex 1.11766 -33.6813 -3 - vertex 0.901133 -32.5034 0 - vertex 0.901133 -32.5034 -3 - endloop - endfacet - facet normal -0.983521 -0.180795 0 - outer loop - vertex 0.901133 -32.5034 0 - vertex 1.11766 -33.6813 -3 - vertex 1.11766 -33.6813 0 - endloop - endfacet - facet normal -0.846397 -0.532553 0 - outer loop - vertex 1.65861 -34.5411 -3 - vertex 1.11766 -33.6813 0 - vertex 1.11766 -33.6813 -3 - endloop - endfacet - facet normal -0.846397 -0.532553 0 - outer loop - vertex 1.11766 -33.6813 0 - vertex 1.65861 -34.5411 -3 - vertex 1.65861 -34.5411 0 - endloop - endfacet - facet normal -0.511641 -0.859199 0 - outer loop - vertex 1.65861 -34.5411 -3 - vertex 2.32628 -34.9386 0 - vertex 1.65861 -34.5411 0 - endloop - endfacet - facet normal -0.511641 -0.859199 -0 - outer loop - vertex 2.32628 -34.9386 0 - vertex 1.65861 -34.5411 -3 - vertex 2.32628 -34.9386 -3 - endloop - endfacet - facet normal -0.182531 -0.9832 0 - outer loop - vertex 2.32628 -34.9386 -3 - vertex 3.17687 -35.0966 0 - vertex 2.32628 -34.9386 0 - endloop - endfacet - facet normal -0.182531 -0.9832 -0 - outer loop - vertex 3.17687 -35.0966 0 - vertex 2.32628 -34.9386 -3 - vertex 3.17687 -35.0966 -3 - endloop - endfacet - facet normal 0.0908592 -0.995864 0 - outer loop - vertex 3.17687 -35.0966 -3 - vertex 4.11511 -35.011 0 - vertex 3.17687 -35.0966 0 - endloop - endfacet - facet normal 0.0908592 -0.995864 0 - outer loop - vertex 4.11511 -35.011 0 - vertex 3.17687 -35.0966 -3 - vertex 4.11511 -35.011 -3 - endloop - endfacet - facet normal 0.336892 -0.941543 0 - outer loop - vertex 4.11511 -35.011 -3 - vertex 5.04571 -34.678 0 - vertex 4.11511 -35.011 0 - endloop - endfacet - facet normal 0.336892 -0.941543 0 - outer loop - vertex 5.04571 -34.678 0 - vertex 4.11511 -35.011 -3 - vertex 5.04571 -34.678 -3 - endloop - endfacet - facet normal 0.557528 -0.830158 0 - outer loop - vertex 5.04571 -34.678 -3 - vertex 5.71313 -34.2297 0 - vertex 5.04571 -34.678 0 - endloop - endfacet - facet normal 0.557528 -0.830158 0 - outer loop - vertex 5.71313 -34.2297 0 - vertex 5.04571 -34.678 -3 - vertex 5.71313 -34.2297 -3 - endloop - endfacet - facet normal 0.786383 -0.61774 0 - outer loop - vertex 5.71313 -34.2297 0 - vertex 6.30534 -33.4759 -3 - vertex 6.30534 -33.4759 0 - endloop - endfacet - facet normal 0.786383 -0.61774 0 - outer loop - vertex 6.30534 -33.4759 -3 - vertex 5.71313 -34.2297 0 - vertex 5.71313 -34.2297 -3 - endloop - endfacet - facet normal 0.906895 -0.421357 0 - outer loop - vertex 6.30534 -33.4759 0 - vertex 7.96204 -29.9101 -3 - vertex 7.96204 -29.9101 0 - endloop - endfacet - facet normal 0.906895 -0.421357 0 - outer loop - vertex 7.96204 -29.9101 -3 - vertex 6.30534 -33.4759 0 - vertex 6.30534 -33.4759 -3 - endloop - endfacet - facet normal 0.929235 -0.36949 0 - outer loop - vertex 7.96204 -29.9101 0 - vertex 9.7411 -25.4359 -3 - vertex 9.7411 -25.4359 0 - endloop - endfacet - facet normal 0.929235 -0.36949 0 - outer loop - vertex 9.7411 -25.4359 -3 - vertex 7.96204 -29.9101 0 - vertex 7.96204 -29.9101 -3 - endloop - endfacet - facet normal 0.962546 -0.271117 0 - outer loop - vertex 9.7411 -25.4359 0 - vertex 10.0775 -24.2416 -3 - vertex 10.0775 -24.2416 0 - endloop - endfacet - facet normal 0.962546 -0.271117 0 - outer loop - vertex 10.0775 -24.2416 -3 - vertex 9.7411 -25.4359 0 - vertex 9.7411 -25.4359 -3 - endloop - endfacet - facet normal 0.994463 -0.105087 0 - outer loop - vertex 10.0775 -24.2416 0 - vertex 10.169 -23.3758 -3 - vertex 10.169 -23.3758 0 - endloop - endfacet - facet normal 0.994463 -0.105087 0 - outer loop - vertex 10.169 -23.3758 -3 - vertex 10.0775 -24.2416 0 - vertex 10.0775 -24.2416 -3 - endloop - endfacet - facet normal 0.988121 0.153677 0 - outer loop - vertex 10.169 -23.3758 0 - vertex 10.0454 -22.5812 -3 - vertex 10.0454 -22.5812 0 - endloop - endfacet - facet normal 0.988121 0.153677 0 - outer loop - vertex 10.0454 -22.5812 -3 - vertex 10.169 -23.3758 0 - vertex 10.169 -23.3758 -3 - endloop - endfacet - facet normal 0.857617 0.514289 0 - outer loop - vertex 10.0454 -22.5812 0 - vertex 9.69979 -22.0048 -3 - vertex 9.69979 -22.0048 0 - endloop - endfacet - facet normal 0.857617 0.514289 0 - outer loop - vertex 9.69979 -22.0048 -3 - vertex 10.0454 -22.5812 0 - vertex 10.0454 -22.5812 -3 - endloop - endfacet - facet normal 0.558467 0.829527 -0 - outer loop - vertex 9.69979 -22.0048 -3 - vertex 9.16984 -21.6481 0 - vertex 9.69979 -22.0048 0 - endloop - endfacet - facet normal 0.558467 0.829527 0 - outer loop - vertex 9.16984 -21.6481 0 - vertex 9.69979 -22.0048 -3 - vertex 9.16984 -21.6481 -3 - endloop - endfacet - facet normal 0.196985 0.980407 -0 - outer loop - vertex 9.16984 -21.6481 -3 - vertex 8.49325 -21.5121 0 - vertex 9.16984 -21.6481 0 - endloop - endfacet - facet normal 0.196985 0.980407 0 - outer loop - vertex 8.49325 -21.5121 0 - vertex 9.16984 -21.6481 -3 - vertex 8.49325 -21.5121 -3 - endloop - endfacet - facet normal -0.109065 0.994035 0 - outer loop - vertex 8.49325 -21.5121 -3 - vertex 7.70773 -21.5983 0 - vertex 8.49325 -21.5121 0 - endloop - endfacet - facet normal -0.109065 0.994035 0 - outer loop - vertex 7.70773 -21.5983 0 - vertex 8.49325 -21.5121 -3 - vertex 7.70773 -21.5983 -3 - endloop - endfacet - facet normal -0.270451 -0.962734 0 - outer loop - vertex 28.989 -19.2301 -3 - vertex 29.9429 -19.4981 0 - vertex 28.989 -19.2301 0 - endloop - endfacet - facet normal -0.270451 -0.962734 -0 - outer loop - vertex 29.9429 -19.4981 0 - vertex 28.989 -19.2301 -3 - vertex 29.9429 -19.4981 -3 - endloop - endfacet - facet normal -0.511153 -0.85949 0 - outer loop - vertex 29.9429 -19.4981 -3 - vertex 30.7248 -19.9631 0 - vertex 29.9429 -19.4981 0 - endloop - endfacet - facet normal -0.511153 -0.85949 -0 - outer loop - vertex 30.7248 -19.9631 0 - vertex 29.9429 -19.4981 -3 - vertex 30.7248 -19.9631 -3 - endloop - endfacet - facet normal -0.723919 -0.689885 0 - outer loop - vertex 31.3699 -20.64 -3 - vertex 30.7248 -19.9631 0 - vertex 30.7248 -19.9631 -3 - endloop - endfacet - facet normal -0.723919 -0.689885 0 - outer loop - vertex 30.7248 -19.9631 0 - vertex 31.3699 -20.64 -3 - vertex 31.3699 -20.64 0 - endloop - endfacet - facet normal -0.867187 -0.497983 0 - outer loop - vertex 31.8086 -21.404 -3 - vertex 31.3699 -20.64 0 - vertex 31.3699 -20.64 -3 - endloop - endfacet - facet normal -0.867187 -0.497983 0 - outer loop - vertex 31.3699 -20.64 0 - vertex 31.8086 -21.404 -3 - vertex 31.8086 -21.404 0 - endloop - endfacet - facet normal -0.971458 -0.237212 0 - outer loop - vertex 32.0232 -22.2828 -3 - vertex 31.8086 -21.404 0 - vertex 31.8086 -21.404 -3 - endloop - endfacet - facet normal -0.971458 -0.237212 0 - outer loop - vertex 31.8086 -21.404 0 - vertex 32.0232 -22.2828 -3 - vertex 32.0232 -22.2828 0 - endloop - endfacet - facet normal -0.999998 -0.00210454 0 - outer loop - vertex 32.0255 -23.3848 -3 - vertex 32.0232 -22.2828 0 - vertex 32.0232 -22.2828 -3 - endloop - endfacet - facet normal -0.999998 -0.00210454 0 - outer loop - vertex 32.0232 -22.2828 0 - vertex 32.0255 -23.3848 -3 - vertex 32.0255 -23.3848 0 - endloop - endfacet - facet normal -0.990595 0.136824 0 - outer loop - vertex 31.8275 -24.8188 -3 - vertex 32.0255 -23.3848 0 - vertex 32.0255 -23.3848 -3 - endloop - endfacet - facet normal -0.990595 0.136824 0 - outer loop - vertex 32.0255 -23.3848 0 - vertex 31.8275 -24.8188 -3 - vertex 31.8275 -24.8188 0 - endloop - endfacet - facet normal -0.978641 0.205575 0 - outer loop - vertex 31.4974 -26.3899 -3 - vertex 31.8275 -24.8188 0 - vertex 31.8275 -24.8188 -3 - endloop - endfacet - facet normal -0.978641 0.205575 0 - outer loop - vertex 31.8275 -24.8188 0 - vertex 31.4974 -26.3899 -3 - vertex 31.4974 -26.3899 0 - endloop - endfacet - facet normal -0.869264 0.494348 0 - outer loop - vertex 31.2318 -26.857 -3 - vertex 31.4974 -26.3899 0 - vertex 31.4974 -26.3899 -3 - endloop - endfacet - facet normal -0.869264 0.494348 0 - outer loop - vertex 31.4974 -26.3899 0 - vertex 31.2318 -26.857 -3 - vertex 31.2318 -26.857 0 - endloop - endfacet - facet normal -0.557816 0.829965 0 - outer loop - vertex 31.2318 -26.857 -3 - vertex 30.7817 -27.1595 0 - vertex 31.2318 -26.857 0 - endloop - endfacet - facet normal -0.557816 0.829965 0 - outer loop - vertex 30.7817 -27.1595 0 - vertex 31.2318 -26.857 -3 - vertex 30.7817 -27.1595 -3 - endloop - endfacet - facet normal -0.13929 0.990252 0 - outer loop - vertex 30.7817 -27.1595 -3 - vertex 28.9763 -27.4135 0 - vertex 30.7817 -27.1595 0 - endloop - endfacet - facet normal -0.13929 0.990252 0 - outer loop - vertex 28.9763 -27.4135 0 - vertex 30.7817 -27.1595 -3 - vertex 28.9763 -27.4135 -3 - endloop - endfacet - facet normal -0.00668289 0.999978 0 - outer loop - vertex 28.9763 -27.4135 -3 - vertex 25.3774 -27.4375 0 - vertex 28.9763 -27.4135 0 - endloop - endfacet - facet normal -0.00668289 0.999978 0 - outer loop - vertex 25.3774 -27.4375 0 - vertex 28.9763 -27.4135 -3 - vertex 25.3774 -27.4375 -3 - endloop - endfacet - facet normal -0.00092424 1 0 - outer loop - vertex 25.3774 -27.4375 -3 - vertex 20.1129 -27.4424 0 - vertex 25.3774 -27.4375 0 - endloop - endfacet - facet normal -0.00092424 1 0 - outer loop - vertex 20.1129 -27.4424 0 - vertex 25.3774 -27.4375 -3 - vertex 20.1129 -27.4424 -3 - endloop - endfacet - facet normal -0.945282 0.326255 0 - outer loop - vertex 19.9054 -28.0436 -3 - vertex 20.1129 -27.4424 0 - vertex 20.1129 -27.4424 -3 - endloop - endfacet - facet normal -0.945282 0.326255 0 - outer loop - vertex 20.1129 -27.4424 0 - vertex 19.9054 -28.0436 -3 - vertex 19.9054 -28.0436 0 - endloop - endfacet - facet normal -0.967122 0.254313 0 - outer loop - vertex 19.5138 -29.5327 -3 - vertex 19.9054 -28.0436 0 - vertex 19.9054 -28.0436 -3 - endloop - endfacet - facet normal -0.967122 0.254313 0 - outer loop - vertex 19.9054 -28.0436 0 - vertex 19.5138 -29.5327 -3 - vertex 19.5138 -29.5327 0 - endloop - endfacet - facet normal -0.991046 0.133521 0 - outer loop - vertex 19.3087 -31.0557 -3 - vertex 19.5138 -29.5327 0 - vertex 19.5138 -29.5327 -3 - endloop - endfacet - facet normal -0.991046 0.133521 0 - outer loop - vertex 19.5138 -29.5327 0 - vertex 19.3087 -31.0557 -3 - vertex 19.3087 -31.0557 0 - endloop - endfacet - facet normal -1 8.95066e-05 0 - outer loop - vertex 19.3085 -32.3556 -3 - vertex 19.3087 -31.0557 0 - vertex 19.3087 -31.0557 -3 - endloop - endfacet - facet normal -1 8.95066e-05 0 - outer loop - vertex 19.3087 -31.0557 0 - vertex 19.3085 -32.3556 -3 - vertex 19.3085 -32.3556 0 - endloop - endfacet - facet normal -0.964746 -0.263183 0 - outer loop - vertex 19.5322 -33.1754 -3 - vertex 19.3085 -32.3556 0 - vertex 19.3085 -32.3556 -3 - endloop - endfacet - facet normal -0.964746 -0.263183 0 - outer loop - vertex 19.3085 -32.3556 0 - vertex 19.5322 -33.1754 -3 - vertex 19.5322 -33.1754 0 - endloop - endfacet - facet normal -0.729596 -0.683879 0 - outer loop - vertex 20.0228 -33.6987 -3 - vertex 19.5322 -33.1754 0 - vertex 19.5322 -33.1754 -3 - endloop - endfacet - facet normal -0.729596 -0.683879 0 - outer loop - vertex 19.5322 -33.1754 0 - vertex 20.0228 -33.6987 -3 - vertex 20.0228 -33.6987 0 - endloop - endfacet - facet normal -0.526282 -0.85031 0 - outer loop - vertex 20.0228 -33.6987 -3 - vertex 20.6651 -34.0963 0 - vertex 20.0228 -33.6987 0 - endloop - endfacet - facet normal -0.526282 -0.85031 -0 - outer loop - vertex 20.6651 -34.0963 0 - vertex 20.0228 -33.6987 -3 - vertex 20.6651 -34.0963 -3 - endloop - endfacet - facet normal -0.318074 -0.948066 0 - outer loop - vertex 20.6651 -34.0963 -3 - vertex 21.4183 -34.349 0 - vertex 20.6651 -34.0963 0 - endloop - endfacet - facet normal -0.318074 -0.948066 -0 - outer loop - vertex 21.4183 -34.349 0 - vertex 20.6651 -34.0963 -3 - vertex 21.4183 -34.349 -3 - endloop - endfacet - facet normal -0.107309 -0.994226 0 - outer loop - vertex 21.4183 -34.349 -3 - vertex 22.2417 -34.4379 0 - vertex 21.4183 -34.349 0 - endloop - endfacet - facet normal -0.107309 -0.994226 -0 - outer loop - vertex 22.2417 -34.4379 0 - vertex 21.4183 -34.349 -3 - vertex 22.2417 -34.4379 -3 - endloop - endfacet - facet normal 0.120086 -0.992763 0 - outer loop - vertex 22.2417 -34.4379 -3 - vertex 23.5816 -34.2758 0 - vertex 22.2417 -34.4379 0 - endloop - endfacet - facet normal 0.120086 -0.992763 0 - outer loop - vertex 23.5816 -34.2758 0 - vertex 22.2417 -34.4379 -3 - vertex 23.5816 -34.2758 -3 - endloop - endfacet - facet normal 0.371865 -0.928287 0 - outer loop - vertex 23.5816 -34.2758 -3 - vertex 24.9271 -33.7368 0 - vertex 23.5816 -34.2758 0 - endloop - endfacet - facet normal 0.371865 -0.928287 0 - outer loop - vertex 24.9271 -33.7368 0 - vertex 23.5816 -34.2758 -3 - vertex 24.9271 -33.7368 -3 - endloop - endfacet - facet normal 0.553658 -0.832744 0 - outer loop - vertex 24.9271 -33.7368 -3 - vertex 26.4192 -32.7448 0 - vertex 24.9271 -33.7368 0 - endloop - endfacet - facet normal 0.553658 -0.832744 0 - outer loop - vertex 26.4192 -32.7448 0 - vertex 24.9271 -33.7368 -3 - vertex 26.4192 -32.7448 -3 - endloop - endfacet - facet normal 0.649717 -0.760176 0 - outer loop - vertex 26.4192 -32.7448 -3 - vertex 28.199 -31.2235 0 - vertex 26.4192 -32.7448 0 - endloop - endfacet - facet normal 0.649717 -0.760176 0 - outer loop - vertex 28.199 -31.2235 0 - vertex 26.4192 -32.7448 -3 - vertex 28.199 -31.2235 -3 - endloop - endfacet - facet normal 0.570708 -0.821153 0 - outer loop - vertex 28.199 -31.2235 -3 - vertex 29.2916 -30.4642 0 - vertex 28.199 -31.2235 0 - endloop - endfacet - facet normal 0.570708 -0.821153 0 - outer loop - vertex 29.2916 -30.4642 0 - vertex 28.199 -31.2235 -3 - vertex 29.2916 -30.4642 -3 - endloop - endfacet - facet normal -0.0859885 -0.996296 0 - outer loop - vertex 29.2916 -30.4642 -3 - vertex 29.6885 -30.4984 0 - vertex 29.2916 -30.4642 0 - endloop - endfacet - facet normal -0.0859885 -0.996296 -0 - outer loop - vertex 29.6885 -30.4984 0 - vertex 29.2916 -30.4642 -3 - vertex 29.6885 -30.4984 -3 - endloop - endfacet - facet normal -0.559844 -0.828598 0 - outer loop - vertex 29.6885 -30.4984 -3 - vertex 30.1062 -30.7807 0 - vertex 29.6885 -30.4984 0 - endloop - endfacet - facet normal -0.559844 -0.828598 -0 - outer loop - vertex 30.1062 -30.7807 0 - vertex 29.6885 -30.4984 -3 - vertex 30.1062 -30.7807 -3 - endloop - endfacet - facet normal -0.971403 -0.237438 0 - outer loop - vertex 30.2029 -31.1764 -3 - vertex 30.1062 -30.7807 0 - vertex 30.1062 -30.7807 -3 - endloop - endfacet - facet normal -0.971403 -0.237438 0 - outer loop - vertex 30.1062 -30.7807 0 - vertex 30.2029 -31.1764 -3 - vertex 30.2029 -31.1764 0 - endloop - endfacet - facet normal -0.897428 0.441162 0 - outer loop - vertex 29.8709 -31.8517 -3 - vertex 30.2029 -31.1764 0 - vertex 30.2029 -31.1764 -3 - endloop - endfacet - facet normal -0.897428 0.441162 0 - outer loop - vertex 30.2029 -31.1764 0 - vertex 29.8709 -31.8517 -3 - vertex 29.8709 -31.8517 0 - endloop - endfacet - facet normal -0.750818 0.660509 0 - outer loop - vertex 27.8442 -34.1555 -3 - vertex 29.8709 -31.8517 0 - vertex 29.8709 -31.8517 -3 - endloop - endfacet - facet normal -0.750818 0.660509 0 - outer loop - vertex 29.8709 -31.8517 0 - vertex 27.8442 -34.1555 -3 - vertex 27.8442 -34.1555 0 - endloop - endfacet - facet normal -0.671006 0.741452 0 - outer loop - vertex 27.8442 -34.1555 -3 - vertex 25.9895 -35.834 0 - vertex 27.8442 -34.1555 0 - endloop - endfacet - facet normal -0.671006 0.741452 0 - outer loop - vertex 25.9895 -35.834 0 - vertex 27.8442 -34.1555 -3 - vertex 25.9895 -35.834 -3 - endloop - endfacet - facet normal -0.538751 0.842465 0 - outer loop - vertex 25.9895 -35.834 -3 - vertex 24.0601 -37.0678 0 - vertex 25.9895 -35.834 0 - endloop - endfacet - facet normal -0.538751 0.842465 0 - outer loop - vertex 24.0601 -37.0678 0 - vertex 25.9895 -35.834 -3 - vertex 24.0601 -37.0678 -3 - endloop - endfacet - facet normal -0.416623 0.909079 0 - outer loop - vertex 24.0601 -37.0678 -3 - vertex 21.4079 -38.2833 0 - vertex 24.0601 -37.0678 0 - endloop - endfacet - facet normal -0.416623 0.909079 0 - outer loop - vertex 21.4079 -38.2833 0 - vertex 24.0601 -37.0678 -3 - vertex 21.4079 -38.2833 -3 - endloop - endfacet - facet normal -0.208885 0.97794 0 - outer loop - vertex 21.4079 -38.2833 -3 - vertex 20.3084 -38.5182 0 - vertex 21.4079 -38.2833 0 - endloop - endfacet - facet normal -0.208885 0.97794 0 - outer loop - vertex 20.3084 -38.5182 0 - vertex 21.4079 -38.2833 -3 - vertex 20.3084 -38.5182 -3 - endloop - endfacet - facet normal -0.0552232 0.998474 0 - outer loop - vertex 20.3084 -38.5182 -3 - vertex 19.0956 -38.5852 0 - vertex 20.3084 -38.5182 0 - endloop - endfacet - facet normal -0.0552232 0.998474 0 - outer loop - vertex 19.0956 -38.5852 0 - vertex 20.3084 -38.5182 -3 - vertex 19.0956 -38.5852 -3 - endloop - endfacet - facet normal 0.0949344 0.995484 -0 - outer loop - vertex 19.0956 -38.5852 -3 - vertex 17.8945 -38.4707 0 - vertex 19.0956 -38.5852 0 - endloop - endfacet - facet normal 0.0949344 0.995484 0 - outer loop - vertex 17.8945 -38.4707 0 - vertex 19.0956 -38.5852 -3 - vertex 17.8945 -38.4707 -3 - endloop - endfacet - facet normal 0.357488 0.933918 -0 - outer loop - vertex 17.8945 -38.4707 -3 - vertex 16.8412 -38.0675 0 - vertex 17.8945 -38.4707 0 - endloop - endfacet - facet normal 0.357488 0.933918 0 - outer loop - vertex 16.8412 -38.0675 0 - vertex 17.8945 -38.4707 -3 - vertex 16.8412 -38.0675 -3 - endloop - endfacet - facet normal 0.556683 0.830725 -0 - outer loop - vertex 16.8412 -38.0675 -3 - vertex 15.8953 -37.4336 0 - vertex 16.8412 -38.0675 0 - endloop - endfacet - facet normal 0.556683 0.830725 0 - outer loop - vertex 15.8953 -37.4336 0 - vertex 16.8412 -38.0675 -3 - vertex 15.8953 -37.4336 -3 - endloop - endfacet - facet normal 0.764952 0.644087 0 - outer loop - vertex 15.8953 -37.4336 0 - vertex 15.2376 -36.6526 -3 - vertex 15.2376 -36.6526 0 - endloop - endfacet - facet normal 0.764952 0.644087 0 - outer loop - vertex 15.2376 -36.6526 -3 - vertex 15.8953 -37.4336 0 - vertex 15.8953 -37.4336 -3 - endloop - endfacet - facet normal 0.925772 0.378082 0 - outer loop - vertex 15.2376 -36.6526 0 - vertex 14.8379 -35.6738 -3 - vertex 14.8379 -35.6738 0 - endloop - endfacet - facet normal 0.925772 0.378082 0 - outer loop - vertex 14.8379 -35.6738 -3 - vertex 15.2376 -36.6526 0 - vertex 15.2376 -36.6526 -3 - endloop - endfacet - facet normal 0.990293 0.138993 0 - outer loop - vertex 14.8379 -35.6738 0 - vertex 14.6656 -34.4466 -3 - vertex 14.6656 -34.4466 0 - endloop - endfacet - facet normal 0.990293 0.138993 0 - outer loop - vertex 14.6656 -34.4466 -3 - vertex 14.8379 -35.6738 0 - vertex 14.8379 -35.6738 -3 - endloop - endfacet - facet normal 0.99828 -0.0586187 0 - outer loop - vertex 14.6656 -34.4466 0 - vertex 14.7938 -32.2631 -3 - vertex 14.7938 -32.2631 0 - endloop - endfacet - facet normal 0.99828 -0.0586187 0 - outer loop - vertex 14.7938 -32.2631 -3 - vertex 14.6656 -34.4466 0 - vertex 14.6656 -34.4466 -3 - endloop - endfacet - facet normal 0.96872 -0.248157 0 - outer loop - vertex 14.7938 -32.2631 0 - vertex 15.3794 -29.9771 -3 - vertex 15.3794 -29.9771 0 - endloop - endfacet - facet normal 0.96872 -0.248157 0 - outer loop - vertex 15.3794 -29.9771 -3 - vertex 14.7938 -32.2631 0 - vertex 14.7938 -32.2631 -3 - endloop - endfacet - facet normal 0.915816 -0.401597 0 - outer loop - vertex 15.3794 -29.9771 0 - vertex 16.4055 -27.6373 -3 - vertex 16.4055 -27.6373 0 - endloop - endfacet - facet normal 0.915816 -0.401597 0 - outer loop - vertex 16.4055 -27.6373 -3 - vertex 15.3794 -29.9771 0 - vertex 15.3794 -29.9771 -3 - endloop - endfacet - facet normal 0.850611 -0.525795 0 - outer loop - vertex 16.4055 -27.6373 0 - vertex 17.855 -25.2923 -3 - vertex 17.855 -25.2923 0 - endloop - endfacet - facet normal 0.850611 -0.525795 0 - outer loop - vertex 17.855 -25.2923 -3 - vertex 16.4055 -27.6373 0 - vertex 16.4055 -27.6373 -3 - endloop - endfacet - facet normal 0.787541 -0.616262 0 - outer loop - vertex 17.855 -25.2923 0 - vertex 19.0386 -23.7798 -3 - vertex 19.0386 -23.7798 0 - endloop - endfacet - facet normal 0.787541 -0.616262 0 - outer loop - vertex 19.0386 -23.7798 -3 - vertex 17.855 -25.2923 0 - vertex 17.855 -25.2923 -3 - endloop - endfacet - facet normal 0.719973 -0.694002 0 - outer loop - vertex 19.0386 -23.7798 0 - vertex 20.2954 -22.4759 -3 - vertex 20.2954 -22.4759 0 - endloop - endfacet - facet normal 0.719973 -0.694002 0 - outer loop - vertex 20.2954 -22.4759 -3 - vertex 19.0386 -23.7798 0 - vertex 19.0386 -23.7798 -3 - endloop - endfacet - facet normal 0.636055 -0.771644 0 - outer loop - vertex 20.2954 -22.4759 -3 - vertex 21.6367 -21.3703 0 - vertex 20.2954 -22.4759 0 - endloop - endfacet - facet normal 0.636055 -0.771644 0 - outer loop - vertex 21.6367 -21.3703 0 - vertex 20.2954 -22.4759 -3 - vertex 21.6367 -21.3703 -3 - endloop - endfacet - facet normal 0.538257 -0.842781 0 - outer loop - vertex 21.6367 -21.3703 -3 - vertex 23.0737 -20.4525 0 - vertex 21.6367 -21.3703 0 - endloop - endfacet - facet normal 0.538257 -0.842781 0 - outer loop - vertex 23.0737 -20.4525 0 - vertex 21.6367 -21.3703 -3 - vertex 23.0737 -20.4525 -3 - endloop - endfacet - facet normal 0.404347 -0.914606 0 - outer loop - vertex 23.0737 -20.4525 -3 - vertex 25.4359 -19.4082 0 - vertex 23.0737 -20.4525 0 - endloop - endfacet - facet normal 0.404347 -0.914606 0 - outer loop - vertex 25.4359 -19.4082 0 - vertex 23.0737 -20.4525 -3 - vertex 25.4359 -19.4082 -3 - endloop - endfacet - facet normal 0.182814 -0.983148 0 - outer loop - vertex 25.4359 -19.4082 -3 - vertex 26.5413 -19.2026 0 - vertex 25.4359 -19.4082 0 - endloop - endfacet - facet normal 0.182814 -0.983148 0 - outer loop - vertex 26.5413 -19.2026 0 - vertex 25.4359 -19.4082 -3 - vertex 26.5413 -19.2026 -3 - endloop - endfacet - facet normal 0.0452162 -0.998977 0 - outer loop - vertex 26.5413 -19.2026 -3 - vertex 27.8281 -19.1444 0 - vertex 26.5413 -19.2026 0 - endloop - endfacet - facet normal 0.0452162 -0.998977 0 - outer loop - vertex 27.8281 -19.1444 0 - vertex 26.5413 -19.2026 -3 - vertex 27.8281 -19.1444 -3 - endloop - endfacet - facet normal -0.0736221 -0.997286 0 - outer loop - vertex 27.8281 -19.1444 -3 - vertex 28.989 -19.2301 0 - vertex 27.8281 -19.1444 0 - endloop - endfacet - facet normal -0.0736221 -0.997286 -0 - outer loop - vertex 28.989 -19.2301 0 - vertex 27.8281 -19.1444 -3 - vertex 28.989 -19.2301 -3 - endloop - endfacet - facet normal -0.382628 0.923903 0 - outer loop - vertex 24.8153 -21.9586 -3 - vertex 23.7526 -22.3987 0 - vertex 24.8153 -21.9586 0 - endloop - endfacet - facet normal -0.382628 0.923903 0 - outer loop - vertex 23.7526 -22.3987 0 - vertex 24.8153 -21.9586 -3 - vertex 23.7526 -22.3987 -3 - endloop - endfacet - facet normal -0.656055 0.754713 0 - outer loop - vertex 23.7526 -22.3987 -3 - vertex 22.6861 -23.3258 0 - vertex 23.7526 -22.3987 0 - endloop - endfacet - facet normal -0.656055 0.754713 0 - outer loop - vertex 22.6861 -23.3258 0 - vertex 23.7526 -22.3987 -3 - vertex 22.6861 -23.3258 -3 - endloop - endfacet - facet normal -0.77183 0.635829 0 - outer loop - vertex 21.6183 -24.6221 -3 - vertex 22.6861 -23.3258 0 - vertex 22.6861 -23.3258 -3 - endloop - endfacet - facet normal -0.77183 0.635829 0 - outer loop - vertex 22.6861 -23.3258 0 - vertex 21.6183 -24.6221 -3 - vertex 21.6183 -24.6221 0 - endloop - endfacet - facet normal -0.0699516 -0.99755 0 - outer loop - vertex 21.6183 -24.6221 -3 - vertex 24.4233 -24.8188 0 - vertex 21.6183 -24.6221 0 - endloop - endfacet - facet normal -0.0699516 -0.99755 -0 - outer loop - vertex 24.4233 -24.8188 0 - vertex 21.6183 -24.6221 -3 - vertex 24.4233 -24.8188 -3 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 24.4233 -24.8188 -3 - vertex 27.2283 -24.8188 0 - vertex 24.4233 -24.8188 0 - endloop - endfacet - facet normal 0 -1 -0 - outer loop - vertex 27.2283 -24.8188 0 - vertex 24.4233 -24.8188 -3 - vertex 27.2283 -24.8188 -3 - endloop - endfacet - facet normal 0.986418 -0.164252 0 - outer loop - vertex 27.2283 -24.8188 0 - vertex 27.3613 -24.0204 -3 - vertex 27.3613 -24.0204 0 - endloop - endfacet - facet normal 0.986418 -0.164252 0 - outer loop - vertex 27.3613 -24.0204 -3 - vertex 27.2283 -24.8188 0 - vertex 27.2283 -24.8188 -3 - endloop - endfacet - facet normal 0.999989 -0.00473466 0 - outer loop - vertex 27.3613 -24.0204 0 - vertex 27.3668 -22.8574 -3 - vertex 27.3668 -22.8574 0 - endloop - endfacet - facet normal 0.999989 -0.00473466 0 - outer loop - vertex 27.3668 -22.8574 -3 - vertex 27.3613 -24.0204 0 - vertex 27.3613 -24.0204 -3 - endloop - endfacet - facet normal 0.863473 0.504395 0 - outer loop - vertex 27.3668 -22.8574 0 - vertex 26.9354 -22.1189 -3 - vertex 26.9354 -22.1189 0 - endloop - endfacet - facet normal 0.863473 0.504395 0 - outer loop - vertex 26.9354 -22.1189 -3 - vertex 27.3668 -22.8574 0 - vertex 27.3668 -22.8574 -3 - endloop - endfacet - facet normal 0.334224 0.942494 -0 - outer loop - vertex 26.9354 -22.1189 -3 - vertex 26.0804 -21.8157 0 - vertex 26.9354 -22.1189 0 - endloop - endfacet - facet normal 0.334224 0.942494 0 - outer loop - vertex 26.0804 -21.8157 0 - vertex 26.9354 -22.1189 -3 - vertex 26.0804 -21.8157 -3 - endloop - endfacet - facet normal -0.112261 0.993679 0 - outer loop - vertex 26.0804 -21.8157 -3 - vertex 24.8153 -21.9586 0 - vertex 26.0804 -21.8157 0 - endloop - endfacet - facet normal -0.112261 0.993679 0 - outer loop - vertex 24.8153 -21.9586 0 - vertex 26.0804 -21.8157 -3 - vertex 24.8153 -21.9586 -3 - endloop - endfacet - facet normal -0.0126654 -0.99992 0 - outer loop - vertex -27.1868 -11.3523 -3 - vertex -17.7993 -11.4712 0 - vertex -27.1868 -11.3523 0 - endloop - endfacet - facet normal -0.0126654 -0.99992 -0 - outer loop - vertex -17.7993 -11.4712 0 - vertex -27.1868 -11.3523 -3 - vertex -17.7993 -11.4712 -3 - endloop - endfacet - facet normal -0.303355 -0.952878 0 - outer loop - vertex -17.7993 -11.4712 -3 - vertex -17.4385 -11.5861 0 - vertex -17.7993 -11.4712 0 - endloop - endfacet - facet normal -0.303355 -0.952878 -0 - outer loop - vertex -17.4385 -11.5861 0 - vertex -17.7993 -11.4712 -3 - vertex -17.4385 -11.5861 -3 - endloop - endfacet - facet normal -0.999899 0.0142188 0 - outer loop - vertex -17.4456 -12.0833 -3 - vertex -17.4385 -11.5861 0 - vertex -17.4385 -11.5861 -3 - endloop - endfacet - facet normal -0.999899 0.0142188 0 - outer loop - vertex -17.4385 -11.5861 0 - vertex -17.4456 -12.0833 -3 - vertex -17.4456 -12.0833 0 - endloop - endfacet - facet normal -0.933863 0.35763 0 - outer loop - vertex -19.3785 -17.1305 -3 - vertex -17.4456 -12.0833 0 - vertex -17.4456 -12.0833 -3 - endloop - endfacet - facet normal -0.933863 0.35763 0 - outer loop - vertex -17.4456 -12.0833 0 - vertex -19.3785 -17.1305 -3 - vertex -19.3785 -17.1305 0 - endloop - endfacet - facet normal -0.830148 0.557543 0 - outer loop - vertex -19.683 -17.584 -3 - vertex -19.3785 -17.1305 0 - vertex -19.3785 -17.1305 -3 - endloop - endfacet - facet normal -0.830148 0.557543 0 - outer loop - vertex -19.3785 -17.1305 0 - vertex -19.683 -17.584 -3 - vertex -19.683 -17.584 0 - endloop - endfacet - facet normal -0.617609 0.786485 0 - outer loop - vertex -19.683 -17.584 -3 - vertex -20.1126 -17.9213 0 - vertex -19.683 -17.584 0 - endloop - endfacet - facet normal -0.617609 0.786485 0 - outer loop - vertex -20.1126 -17.9213 0 - vertex -19.683 -17.584 -3 - vertex -20.1126 -17.9213 -3 - endloop - endfacet - facet normal -0.353642 0.935381 0 - outer loop - vertex -20.1126 -17.9213 -3 - vertex -20.6062 -18.108 0 - vertex -20.1126 -17.9213 0 - endloop - endfacet - facet normal -0.353642 0.935381 0 - outer loop - vertex -20.6062 -18.108 0 - vertex -20.1126 -17.9213 -3 - vertex -20.6062 -18.108 -3 - endloop - endfacet - facet normal -0.00259595 0.999997 0 - outer loop - vertex -20.6062 -18.108 -3 - vertex -21.1029 -18.1093 0 - vertex -20.6062 -18.108 0 - endloop - endfacet - facet normal -0.00259595 0.999997 0 - outer loop - vertex -21.1029 -18.1093 0 - vertex -20.6062 -18.108 -3 - vertex -21.1029 -18.1093 -3 - endloop - endfacet - facet normal 0.306009 0.952029 -0 - outer loop - vertex -21.1029 -18.1093 -3 - vertex -21.3898 -18.0171 0 - vertex -21.1029 -18.1093 0 - endloop - endfacet - facet normal 0.306009 0.952029 0 - outer loop - vertex -21.3898 -18.0171 0 - vertex -21.1029 -18.1093 -3 - vertex -21.3898 -18.0171 -3 - endloop - endfacet - facet normal 0.820593 0.571513 0 - outer loop - vertex -21.3898 -18.0171 0 - vertex -21.538 -17.8042 -3 - vertex -21.538 -17.8042 0 - endloop - endfacet - facet normal 0.820593 0.571513 0 - outer loop - vertex -21.538 -17.8042 -3 - vertex -21.3898 -18.0171 0 - vertex -21.3898 -18.0171 -3 - endloop - endfacet - facet normal 0.999415 0.0341969 0 - outer loop - vertex -21.538 -17.8042 0 - vertex -21.5846 -16.4428 -3 - vertex -21.5846 -16.4428 0 - endloop - endfacet - facet normal 0.999415 0.0341969 0 - outer loop - vertex -21.5846 -16.4428 -3 - vertex -21.538 -17.8042 0 - vertex -21.538 -17.8042 -3 - endloop - endfacet - facet normal 0.999208 0.039804 0 - outer loop - vertex -21.5846 -16.4428 0 - vertex -21.6401 -15.0493 -3 - vertex -21.6401 -15.0493 0 - endloop - endfacet - facet normal 0.999208 0.039804 0 - outer loop - vertex -21.6401 -15.0493 -3 - vertex -21.5846 -16.4428 0 - vertex -21.5846 -16.4428 -3 - endloop - endfacet - facet normal 0.85074 0.525587 0 - outer loop - vertex -21.6401 -15.0493 0 - vertex -21.8106 -14.7733 -3 - vertex -21.8106 -14.7733 0 - endloop - endfacet - facet normal 0.85074 0.525587 0 - outer loop - vertex -21.8106 -14.7733 -3 - vertex -21.6401 -15.0493 0 - vertex -21.6401 -15.0493 -3 - endloop - endfacet - facet normal 0.546243 0.837626 -0 - outer loop - vertex -21.8106 -14.7733 -3 - vertex -22.1413 -14.5577 0 - vertex -21.8106 -14.7733 0 - endloop - endfacet - facet normal 0.546243 0.837626 0 - outer loop - vertex -22.1413 -14.5577 0 - vertex -21.8106 -14.7733 -3 - vertex -22.1413 -14.5577 -3 - endloop - endfacet - facet normal 0.21941 0.975633 -0 - outer loop - vertex -22.1413 -14.5577 -3 - vertex -23.3419 -14.2877 0 - vertex -22.1413 -14.5577 0 - endloop - endfacet - facet normal 0.21941 0.975633 0 - outer loop - vertex -23.3419 -14.2877 0 - vertex -22.1413 -14.5577 -3 - vertex -23.3419 -14.2877 -3 - endloop - endfacet - facet normal 0.0439983 0.999032 -0 - outer loop - vertex -23.3419 -14.2877 -3 - vertex -26.1195 -14.1654 0 - vertex -23.3419 -14.2877 0 - endloop - endfacet - facet normal 0.0439983 0.999032 0 - outer loop - vertex -26.1195 -14.1654 0 - vertex -23.3419 -14.2877 -3 - vertex -26.1195 -14.1654 -3 - endloop - endfacet - facet normal -0.00734919 0.999973 0 - outer loop - vertex -26.1195 -14.1654 -3 - vertex -29.5608 -14.1906 0 - vertex -26.1195 -14.1654 0 - endloop - endfacet - facet normal -0.00734919 0.999973 0 - outer loop - vertex -29.5608 -14.1906 0 - vertex -26.1195 -14.1654 -3 - vertex -29.5608 -14.1906 -3 - endloop - endfacet - facet normal -0.196359 0.980532 0 - outer loop - vertex -29.5608 -14.1906 -3 - vertex -30.2116 -14.321 0 - vertex -29.5608 -14.1906 0 - endloop - endfacet - facet normal -0.196359 0.980532 0 - outer loop - vertex -30.2116 -14.321 0 - vertex -29.5608 -14.1906 -3 - vertex -30.2116 -14.321 -3 - endloop - endfacet - facet normal -0.792981 0.609246 0 - outer loop - vertex -30.3887 -14.5514 -3 - vertex -30.2116 -14.321 0 - vertex -30.2116 -14.321 -3 - endloop - endfacet - facet normal -0.792981 0.609246 0 - outer loop - vertex -30.2116 -14.321 0 - vertex -30.3887 -14.5514 -3 - vertex -30.3887 -14.5514 0 - endloop - endfacet - facet normal -0.912409 0.409279 0 - outer loop - vertex -30.8809 -15.6487 -3 - vertex -30.3887 -14.5514 0 - vertex -30.3887 -14.5514 -3 - endloop - endfacet - facet normal -0.912409 0.409279 0 - outer loop - vertex -30.3887 -14.5514 0 - vertex -30.8809 -15.6487 -3 - vertex -30.8809 -15.6487 0 - endloop - endfacet - facet normal -0.91465 0.404247 0 - outer loop - vertex -32.1593 -18.5412 -3 - vertex -30.8809 -15.6487 0 - vertex -30.8809 -15.6487 -3 - endloop - endfacet - facet normal -0.91465 0.404247 0 - outer loop - vertex -30.8809 -15.6487 0 - vertex -32.1593 -18.5412 -3 - vertex -32.1593 -18.5412 0 - endloop - endfacet - facet normal -0.929897 0.36782 0 - outer loop - vertex -33.3019 -21.4299 -3 - vertex -32.1593 -18.5412 0 - vertex -32.1593 -18.5412 -3 - endloop - endfacet - facet normal -0.929897 0.36782 0 - outer loop - vertex -32.1593 -18.5412 0 - vertex -33.3019 -21.4299 -3 - vertex -33.3019 -21.4299 0 - endloop - endfacet - facet normal -0.949218 0.314618 0 - outer loop - vertex -33.5147 -22.0719 -3 - vertex -33.3019 -21.4299 0 - vertex -33.3019 -21.4299 -3 - endloop - endfacet - facet normal -0.949218 0.314618 0 - outer loop - vertex -33.3019 -21.4299 0 - vertex -33.5147 -22.0719 -3 - vertex -33.5147 -22.0719 0 - endloop - endfacet - facet normal -0.877443 -0.47968 0 - outer loop - vertex -33.3295 -22.4108 -3 - vertex -33.5147 -22.0719 0 - vertex -33.5147 -22.0719 -3 - endloop - endfacet - facet normal -0.877443 -0.47968 0 - outer loop - vertex -33.5147 -22.0719 0 - vertex -33.3295 -22.4108 -3 - vertex -33.3295 -22.4108 0 - endloop - endfacet - facet normal -0.175573 -0.984466 0 - outer loop - vertex -33.3295 -22.4108 -3 - vertex -32.5249 -22.5543 0 - vertex -33.3295 -22.4108 0 - endloop - endfacet - facet normal -0.175573 -0.984466 -0 - outer loop - vertex -32.5249 -22.5543 0 - vertex -33.3295 -22.4108 -3 - vertex -32.5249 -22.5543 -3 - endloop - endfacet - facet normal -0.0340039 -0.999422 0 - outer loop - vertex -32.5249 -22.5543 -3 - vertex -30.8797 -22.6102 0 - vertex -32.5249 -22.5543 0 - endloop - endfacet - facet normal -0.0340039 -0.999422 -0 - outer loop - vertex -30.8797 -22.6102 0 - vertex -32.5249 -22.5543 -3 - vertex -30.8797 -22.6102 -3 - endloop - endfacet - facet normal 0.0362533 -0.999343 0 - outer loop - vertex -30.8797 -22.6102 -3 - vertex -28.6031 -22.5277 0 - vertex -30.8797 -22.6102 0 - endloop - endfacet - facet normal 0.0362533 -0.999343 0 - outer loop - vertex -28.6031 -22.5277 0 - vertex -30.8797 -22.6102 -3 - vertex -28.6031 -22.5277 -3 - endloop - endfacet - facet normal 0.242378 -0.970182 0 - outer loop - vertex -28.6031 -22.5277 -3 - vertex -26.9351 -22.1109 0 - vertex -28.6031 -22.5277 0 - endloop - endfacet - facet normal 0.242378 -0.970182 0 - outer loop - vertex -26.9351 -22.1109 0 - vertex -28.6031 -22.5277 -3 - vertex -26.9351 -22.1109 -3 - endloop - endfacet - facet normal 0.555939 -0.831223 0 - outer loop - vertex -26.9351 -22.1109 -3 - vertex -25.7001 -21.2849 0 - vertex -26.9351 -22.1109 0 - endloop - endfacet - facet normal 0.555939 -0.831223 0 - outer loop - vertex -25.7001 -21.2849 0 - vertex -26.9351 -22.1109 -3 - vertex -25.7001 -21.2849 -3 - endloop - endfacet - facet normal 0.801538 -0.597944 0 - outer loop - vertex -25.7001 -21.2849 0 - vertex -24.7225 -19.9745 -3 - vertex -24.7225 -19.9745 0 - endloop - endfacet - facet normal 0.801538 -0.597944 0 - outer loop - vertex -24.7225 -19.9745 -3 - vertex -25.7001 -21.2849 0 - vertex -25.7001 -21.2849 -3 - endloop - endfacet - facet normal 0.817601 -0.575785 0 - outer loop - vertex -24.7225 -19.9745 0 - vertex -24.1111 -19.1062 -3 - vertex -24.1111 -19.1062 0 - endloop - endfacet - facet normal 0.817601 -0.575785 0 - outer loop - vertex -24.1111 -19.1062 -3 - vertex -24.7225 -19.9745 0 - vertex -24.7225 -19.9745 -3 - endloop - endfacet - facet normal 0.293726 -0.95589 0 - outer loop - vertex -24.1111 -19.1062 -3 - vertex -23.4908 -18.9156 0 - vertex -24.1111 -19.1062 0 - endloop - endfacet - facet normal 0.293726 -0.95589 0 - outer loop - vertex -23.4908 -18.9156 0 - vertex -24.1111 -19.1062 -3 - vertex -23.4908 -18.9156 -3 - endloop - endfacet - facet normal -0.145773 -0.989318 0 - outer loop - vertex -23.4908 -18.9156 -3 - vertex -22.8641 -19.008 0 - vertex -23.4908 -18.9156 0 - endloop - endfacet - facet normal -0.145773 -0.989318 -0 - outer loop - vertex -22.8641 -19.008 0 - vertex -23.4908 -18.9156 -3 - vertex -22.8641 -19.008 -3 - endloop - endfacet - facet normal -0.802531 -0.59661 0 - outer loop - vertex -22.6057 -19.3555 -3 - vertex -22.8641 -19.008 0 - vertex -22.8641 -19.008 -3 - endloop - endfacet - facet normal -0.802531 -0.59661 0 - outer loop - vertex -22.8641 -19.008 0 - vertex -22.6057 -19.3555 -3 - vertex -22.6057 -19.3555 0 - endloop - endfacet - facet normal -0.991425 0.130676 0 - outer loop - vertex -22.6991 -20.0641 -3 - vertex -22.6057 -19.3555 0 - vertex -22.6057 -19.3555 -3 - endloop - endfacet - facet normal -0.991425 0.130676 0 - outer loop - vertex -22.6057 -19.3555 0 - vertex -22.6991 -20.0641 -3 - vertex -22.6991 -20.0641 0 - endloop - endfacet - facet normal -0.939482 0.342598 0 - outer loop - vertex -23.1278 -21.2395 -3 - vertex -22.6991 -20.0641 0 - vertex -22.6991 -20.0641 -3 - endloop - endfacet - facet normal -0.939482 0.342598 0 - outer loop - vertex -22.6991 -20.0641 0 - vertex -23.1278 -21.2395 -3 - vertex -23.1278 -21.2395 0 - endloop - endfacet - facet normal -0.926121 0.377226 0 - outer loop - vertex -24.4076 -24.3815 -3 - vertex -23.1278 -21.2395 0 - vertex -23.1278 -21.2395 -3 - endloop - endfacet - facet normal -0.926121 0.377226 0 - outer loop - vertex -23.1278 -21.2395 0 - vertex -24.4076 -24.3815 -3 - vertex -24.4076 -24.3815 0 - endloop - endfacet - facet normal -0.921607 0.388125 0 - outer loop - vertex -25.4741 -26.9141 -3 - vertex -24.4076 -24.3815 0 - vertex -24.4076 -24.3815 -3 - endloop - endfacet - facet normal -0.921607 0.388125 0 - outer loop - vertex -24.4076 -24.3815 0 - vertex -25.4741 -26.9141 -3 - vertex -25.4741 -26.9141 0 - endloop - endfacet - facet normal -0.886525 0.462682 0 - outer loop - vertex -26.2338 -28.3696 -3 - vertex -25.4741 -26.9141 0 - vertex -25.4741 -26.9141 -3 - endloop - endfacet - facet normal -0.886525 0.462682 0 - outer loop - vertex -25.4741 -26.9141 0 - vertex -26.2338 -28.3696 -3 - vertex -26.2338 -28.3696 0 - endloop - endfacet - facet normal -0.719187 0.694816 0 - outer loop - vertex -26.8752 -29.0336 -3 - vertex -26.2338 -28.3696 0 - vertex -26.2338 -28.3696 -3 - endloop - endfacet - facet normal -0.719187 0.694816 0 - outer loop - vertex -26.2338 -28.3696 0 - vertex -26.8752 -29.0336 -3 - vertex -26.8752 -29.0336 0 - endloop - endfacet - facet normal -0.216473 0.976289 0 - outer loop - vertex -26.8752 -29.0336 -3 - vertex -27.5872 -29.1914 0 - vertex -26.8752 -29.0336 0 - endloop - endfacet - facet normal -0.216473 0.976289 0 - outer loop - vertex -27.5872 -29.1914 0 - vertex -26.8752 -29.0336 -3 - vertex -27.5872 -29.1914 -3 - endloop - endfacet - facet normal 0.155401 0.987851 -0 - outer loop - vertex -27.5872 -29.1914 -3 - vertex -28.1878 -29.097 0 - vertex -27.5872 -29.1914 0 - endloop - endfacet - facet normal 0.155401 0.987851 0 - outer loop - vertex -28.1878 -29.097 0 - vertex -27.5872 -29.1914 -3 - vertex -28.1878 -29.097 -3 - endloop - endfacet - facet normal 0.99998 -0.00638056 0 - outer loop - vertex -28.1878 -29.097 0 - vertex -28.1838 -28.4809 -3 - vertex -28.1838 -28.4809 0 - endloop - endfacet - facet normal 0.99998 -0.00638056 0 - outer loop - vertex -28.1838 -28.4809 -3 - vertex -28.1878 -29.097 0 - vertex -28.1878 -29.097 -3 - endloop - endfacet - facet normal 0.992864 -0.119255 0 - outer loop - vertex -28.1838 -28.4809 0 - vertex -27.9105 -26.2055 -3 - vertex -27.9105 -26.2055 0 - endloop - endfacet - facet normal 0.992864 -0.119255 0 - outer loop - vertex -27.9105 -26.2055 -3 - vertex -28.1838 -28.4809 0 - vertex -28.1838 -28.4809 -3 - endloop - endfacet - facet normal 0.858031 0.513598 0 - outer loop - vertex -27.9105 -26.2055 0 - vertex -28.1036 -25.8829 -3 - vertex -28.1036 -25.8829 0 - endloop - endfacet - facet normal 0.858031 0.513598 0 - outer loop - vertex -28.1036 -25.8829 -3 - vertex -27.9105 -26.2055 0 - vertex -27.9105 -26.2055 -3 - endloop - endfacet - facet normal 0.343726 0.93907 -0 - outer loop - vertex -28.1036 -25.8829 -3 - vertex -28.5713 -25.7117 0 - vertex -28.1036 -25.8829 0 - endloop - endfacet - facet normal 0.343726 0.93907 0 - outer loop - vertex -28.5713 -25.7117 0 - vertex -28.1036 -25.8829 -3 - vertex -28.5713 -25.7117 -3 - endloop - endfacet - facet normal 0.0659122 0.997825 -0 - outer loop - vertex -28.5713 -25.7117 -3 - vertex -32.142 -25.4759 0 - vertex -28.5713 -25.7117 0 - endloop - endfacet - facet normal 0.0659122 0.997825 0 - outer loop - vertex -32.142 -25.4759 0 - vertex -28.5713 -25.7117 -3 - vertex -32.142 -25.4759 -3 - endloop - endfacet - facet normal 0.000432103 1 -0 - outer loop - vertex -32.142 -25.4759 -3 - vertex -34.9626 -25.4747 0 - vertex -32.142 -25.4759 0 - endloop - endfacet - facet normal 0.000432103 1 0 - outer loop - vertex -34.9626 -25.4747 0 - vertex -32.142 -25.4759 -3 - vertex -34.9626 -25.4747 -3 - endloop - endfacet - facet normal -0.910935 0.41255 0 - outer loop - vertex -35.4824 -26.6225 -3 - vertex -34.9626 -25.4747 0 - vertex -34.9626 -25.4747 -3 - endloop - endfacet - facet normal -0.910935 0.41255 0 - outer loop - vertex -34.9626 -25.4747 0 - vertex -35.4824 -26.6225 -3 - vertex -35.4824 -26.6225 0 - endloop - endfacet - facet normal -0.92531 0.379212 0 - outer loop - vertex -38.7331 -34.5543 -3 - vertex -35.4824 -26.6225 0 - vertex -35.4824 -26.6225 -3 - endloop - endfacet - facet normal -0.92531 0.379212 0 - outer loop - vertex -35.4824 -26.6225 0 - vertex -38.7331 -34.5543 -3 - vertex -38.7331 -34.5543 0 - endloop - endfacet - facet normal -0.798774 -0.601632 0 - outer loop - vertex -38.4261 -34.9619 -3 - vertex -38.7331 -34.5543 0 - vertex -38.7331 -34.5543 -3 - endloop - endfacet - facet normal -0.798774 -0.601632 0 - outer loop - vertex -38.7331 -34.5543 0 - vertex -38.4261 -34.9619 -3 - vertex -38.4261 -34.9619 0 - endloop - endfacet - facet normal -0.0360382 -0.99935 0 - outer loop - vertex -38.4261 -34.9619 -3 - vertex -35.0529 -35.0835 0 - vertex -38.4261 -34.9619 0 - endloop - endfacet - facet normal -0.0360382 -0.99935 -0 - outer loop - vertex -35.0529 -35.0835 0 - vertex -38.4261 -34.9619 -3 - vertex -35.0529 -35.0835 -3 - endloop - endfacet - facet normal 0.0608671 -0.998146 0 - outer loop - vertex -35.0529 -35.0835 -3 - vertex -31.3644 -34.8586 0 - vertex -35.0529 -35.0835 0 - endloop - endfacet - facet normal 0.0608671 -0.998146 0 - outer loop - vertex -31.3644 -34.8586 0 - vertex -35.0529 -35.0835 -3 - vertex -31.3644 -34.8586 -3 - endloop - endfacet - facet normal 0.33651 -0.94168 0 - outer loop - vertex -31.3644 -34.8586 -3 - vertex -30.2578 -34.4631 0 - vertex -31.3644 -34.8586 0 - endloop - endfacet - facet normal 0.33651 -0.94168 0 - outer loop - vertex -30.2578 -34.4631 0 - vertex -31.3644 -34.8586 -3 - vertex -30.2578 -34.4631 -3 - endloop - endfacet - facet normal 0.467106 -0.884201 0 - outer loop - vertex -30.2578 -34.4631 -3 - vertex -29.0969 -33.8499 0 - vertex -30.2578 -34.4631 0 - endloop - endfacet - facet normal 0.467106 -0.884201 0 - outer loop - vertex -29.0969 -33.8499 0 - vertex -30.2578 -34.4631 -3 - vertex -29.0969 -33.8499 -3 - endloop - endfacet - facet normal 0.610499 -0.792017 0 - outer loop - vertex -29.0969 -33.8499 -3 - vertex -26.8283 -32.1012 0 - vertex -29.0969 -33.8499 0 - endloop - endfacet - facet normal 0.610499 -0.792017 0 - outer loop - vertex -26.8283 -32.1012 0 - vertex -29.0969 -33.8499 -3 - vertex -26.8283 -32.1012 -3 - endloop - endfacet - facet normal 0.674561 -0.738219 0 - outer loop - vertex -26.8283 -32.1012 -3 - vertex -24.8569 -30.2998 0 - vertex -26.8283 -32.1012 0 - endloop - endfacet - facet normal 0.674561 -0.738219 0 - outer loop - vertex -24.8569 -30.2998 0 - vertex -26.8283 -32.1012 -3 - vertex -24.8569 -30.2998 -3 - endloop - endfacet - facet normal 0.349743 -0.936846 0 - outer loop - vertex -24.8569 -30.2998 -3 - vertex -24.4667 -30.1541 0 - vertex -24.8569 -30.2998 0 - endloop - endfacet - facet normal 0.349743 -0.936846 0 - outer loop - vertex -24.4667 -30.1541 0 - vertex -24.8569 -30.2998 -3 - vertex -24.4667 -30.1541 -3 - endloop - endfacet - facet normal -0.235678 -0.971831 0 - outer loop - vertex -24.4667 -30.1541 -3 - vertex -24.0819 -30.2475 0 - vertex -24.4667 -30.1541 0 - endloop - endfacet - facet normal -0.235678 -0.971831 -0 - outer loop - vertex -24.0819 -30.2475 0 - vertex -24.4667 -30.1541 -3 - vertex -24.0819 -30.2475 -3 - endloop - endfacet - facet normal -0.453986 -0.891009 0 - outer loop - vertex -24.0819 -30.2475 -3 - vertex -23.655 -30.4649 0 - vertex -24.0819 -30.2475 0 - endloop - endfacet - facet normal -0.453986 -0.891009 -0 - outer loop - vertex -23.655 -30.4649 0 - vertex -24.0819 -30.2475 -3 - vertex -23.655 -30.4649 -3 - endloop - endfacet - facet normal -0.79441 -0.607382 0 - outer loop - vertex -23.4462 -30.738 -3 - vertex -23.655 -30.4649 0 - vertex -23.655 -30.4649 -3 - endloop - endfacet - facet normal -0.79441 -0.607382 0 - outer loop - vertex -23.655 -30.4649 0 - vertex -23.4462 -30.738 -3 - vertex -23.4462 -30.738 0 - endloop - endfacet - facet normal -0.917968 0.396655 0 - outer loop - vertex -23.8149 -31.5911 -3 - vertex -23.4462 -30.738 0 - vertex -23.4462 -30.738 -3 - endloop - endfacet - facet normal -0.917968 0.396655 0 - outer loop - vertex -23.4462 -30.738 0 - vertex -23.8149 -31.5911 -3 - vertex -23.8149 -31.5911 0 - endloop - endfacet - facet normal -0.860785 0.508968 0 - outer loop - vertex -24.7956 -33.2498 -3 - vertex -23.8149 -31.5911 0 - vertex -23.8149 -31.5911 -3 - endloop - endfacet - facet normal -0.860785 0.508968 0 - outer loop - vertex -23.8149 -31.5911 0 - vertex -24.7956 -33.2498 -3 - vertex -24.7956 -33.2498 0 - endloop - endfacet - facet normal -0.825216 0.564817 0 - outer loop - vertex -27.2791 -36.8782 -3 - vertex -24.7956 -33.2498 0 - vertex -24.7956 -33.2498 -3 - endloop - endfacet - facet normal -0.825216 0.564817 0 - outer loop - vertex -24.7956 -33.2498 0 - vertex -27.2791 -36.8782 -3 - vertex -27.2791 -36.8782 0 - endloop - endfacet - facet normal -0.788011 0.615661 0 - outer loop - vertex -28.2835 -38.1638 -3 - vertex -27.2791 -36.8782 0 - vertex -27.2791 -36.8782 -3 - endloop - endfacet - facet normal -0.788011 0.615661 0 - outer loop - vertex -27.2791 -36.8782 0 - vertex -28.2835 -38.1638 -3 - vertex -28.2835 -38.1638 0 - endloop - endfacet - facet normal 0.0033546 0.999994 -0 - outer loop - vertex -28.2835 -38.1638 -3 - vertex -37.632 -38.1325 0 - vertex -28.2835 -38.1638 0 - endloop - endfacet - facet normal 0.0033546 0.999994 0 - outer loop - vertex -37.632 -38.1325 0 - vertex -28.2835 -38.1638 -3 - vertex -37.632 -38.1325 -3 - endloop - endfacet - facet normal 0.018075 0.999837 -0 - outer loop - vertex -37.632 -38.1325 -3 - vertex -47.4646 -37.9547 0 - vertex -37.632 -38.1325 0 - endloop - endfacet - facet normal 0.018075 0.999837 0 - outer loop - vertex -47.4646 -37.9547 0 - vertex -37.632 -38.1325 -3 - vertex -47.4646 -37.9547 -3 - endloop - endfacet - facet normal 0.462743 0.886493 -0 - outer loop - vertex -47.4646 -37.9547 -3 - vertex -47.8161 -37.7712 0 - vertex -47.4646 -37.9547 0 - endloop - endfacet - facet normal 0.462743 0.886493 0 - outer loop - vertex -47.8161 -37.7712 0 - vertex -47.4646 -37.9547 -3 - vertex -47.8161 -37.7712 -3 - endloop - endfacet - facet normal 0.836367 0.54817 0 - outer loop - vertex -47.8161 -37.7712 0 - vertex -47.9875 -37.5097 -3 - vertex -47.9875 -37.5097 0 - endloop - endfacet - facet normal 0.836367 0.54817 0 - outer loop - vertex -47.9875 -37.5097 -3 - vertex -47.8161 -37.7712 0 - vertex -47.8161 -37.7712 -3 - endloop - endfacet - facet normal 0.980441 -0.196811 0 - outer loop - vertex -47.9875 -37.5097 0 - vertex -47.8577 -36.863 -3 - vertex -47.8577 -36.863 0 - endloop - endfacet - facet normal 0.980441 -0.196811 0 - outer loop - vertex -47.8577 -36.863 -3 - vertex -47.9875 -37.5097 0 - vertex -47.9875 -37.5097 -3 - endloop - endfacet - facet normal 0.695658 -0.718373 0 - outer loop - vertex -47.8577 -36.863 -3 - vertex -47.2102 -36.2359 0 - vertex -47.8577 -36.863 0 - endloop - endfacet - facet normal 0.695658 -0.718373 0 - outer loop - vertex -47.2102 -36.2359 0 - vertex -47.8577 -36.863 -3 - vertex -47.2102 -36.2359 -3 - endloop - endfacet - facet normal 0.350904 -0.936412 0 - outer loop - vertex -47.2102 -36.2359 -3 - vertex -46.1801 -35.8499 0 - vertex -47.2102 -36.2359 0 - endloop - endfacet - facet normal 0.350904 -0.936412 0 - outer loop - vertex -46.1801 -35.8499 0 - vertex -47.2102 -36.2359 -3 - vertex -46.1801 -35.8499 -3 - endloop - endfacet - facet normal 0.289535 -0.957168 0 - outer loop - vertex -46.1801 -35.8499 -3 - vertex -45.0296 -35.5019 0 - vertex -46.1801 -35.8499 0 - endloop - endfacet - facet normal 0.289535 -0.957168 0 - outer loop - vertex -45.0296 -35.5019 0 - vertex -46.1801 -35.8499 -3 - vertex -45.0296 -35.5019 -3 - endloop - endfacet - facet normal 0.646662 -0.762777 0 - outer loop - vertex -45.0296 -35.5019 -3 - vertex -44.1198 -34.7306 0 - vertex -45.0296 -35.5019 0 - endloop - endfacet - facet normal 0.646662 -0.762777 0 - outer loop - vertex -44.1198 -34.7306 0 - vertex -45.0296 -35.5019 -3 - vertex -44.1198 -34.7306 -3 - endloop - endfacet - facet normal 0.856952 -0.515395 0 - outer loop - vertex -44.1198 -34.7306 0 - vertex -43.2543 -33.2915 -3 - vertex -43.2543 -33.2915 0 - endloop - endfacet - facet normal 0.856952 -0.515395 0 - outer loop - vertex -43.2543 -33.2915 -3 - vertex -44.1198 -34.7306 0 - vertex -44.1198 -34.7306 -3 - endloop - endfacet - facet normal 0.917761 -0.397133 0 - outer loop - vertex -43.2543 -33.2915 0 - vertex -42.237 -30.9405 -3 - vertex -42.237 -30.9405 0 - endloop - endfacet - facet normal 0.917761 -0.397133 0 - outer loop - vertex -42.237 -30.9405 -3 - vertex -43.2543 -33.2915 0 - vertex -43.2543 -33.2915 -3 - endloop - endfacet - facet normal 0.919921 -0.392104 0 - outer loop - vertex -42.237 -30.9405 0 - vertex -39.9072 -25.4747 -3 - vertex -39.9072 -25.4747 0 - endloop - endfacet - facet normal 0.919921 -0.392104 0 - outer loop - vertex -39.9072 -25.4747 -3 - vertex -42.237 -30.9405 0 - vertex -42.237 -30.9405 -3 - endloop - endfacet - facet normal 0.92143 -0.388544 0 - outer loop - vertex -39.9072 -25.4747 0 - vertex -37.0548 -18.7102 -3 - vertex -37.0548 -18.7102 0 - endloop - endfacet - facet normal 0.92143 -0.388544 0 - outer loop - vertex -37.0548 -18.7102 -3 - vertex -39.9072 -25.4747 0 - vertex -39.9072 -25.4747 -3 - endloop - endfacet - facet normal 0.937894 -0.346922 0 - outer loop - vertex -37.0548 -18.7102 0 - vertex -35.6081 -14.799 -3 - vertex -35.6081 -14.799 0 - endloop - endfacet - facet normal 0.937894 -0.346922 0 - outer loop - vertex -35.6081 -14.799 -3 - vertex -37.0548 -18.7102 0 - vertex -37.0548 -18.7102 -3 - endloop - endfacet - facet normal 0.984127 -0.177463 0 - outer loop - vertex -35.6081 -14.799 0 - vertex -35.4871 -14.1281 -3 - vertex -35.4871 -14.1281 0 - endloop - endfacet - facet normal 0.984127 -0.177463 0 - outer loop - vertex -35.4871 -14.1281 -3 - vertex -35.6081 -14.799 0 - vertex -35.6081 -14.799 -3 - endloop - endfacet - facet normal 0.978316 0.207116 0 - outer loop - vertex -35.4871 -14.1281 0 - vertex -35.5739 -13.718 -3 - vertex -35.5739 -13.718 0 - endloop - endfacet - facet normal 0.978316 0.207116 0 - outer loop - vertex -35.5739 -13.718 -3 - vertex -35.4871 -14.1281 0 - vertex -35.4871 -14.1281 -3 - endloop - endfacet - facet normal 0.525627 0.850715 -0 - outer loop - vertex -35.5739 -13.718 -3 - vertex -35.9073 -13.512 0 - vertex -35.5739 -13.718 0 - endloop - endfacet - facet normal 0.525627 0.850715 0 - outer loop - vertex -35.9073 -13.512 0 - vertex -35.5739 -13.718 -3 - vertex -35.9073 -13.512 -3 - endloop - endfacet - facet normal 0.0947129 0.995505 -0 - outer loop - vertex -35.9073 -13.512 -3 - vertex -36.5262 -13.4531 0 - vertex -35.9073 -13.512 0 - endloop - endfacet - facet normal 0.0947129 0.995505 0 - outer loop - vertex -36.5262 -13.4531 0 - vertex -35.9073 -13.512 -3 - vertex -36.5262 -13.4531 -3 - endloop - endfacet - facet normal 0.264376 0.96442 -0 - outer loop - vertex -36.5262 -13.4531 -3 - vertex -37.2393 -13.2576 0 - vertex -36.5262 -13.4531 0 - endloop - endfacet - facet normal 0.264376 0.96442 0 - outer loop - vertex -37.2393 -13.2576 0 - vertex -36.5262 -13.4531 -3 - vertex -37.2393 -13.2576 -3 - endloop - endfacet - facet normal 0.846268 0.532757 0 - outer loop - vertex -37.2393 -13.2576 0 - vertex -37.5366 -12.7854 -3 - vertex -37.5366 -12.7854 0 - endloop - endfacet - facet normal 0.846268 0.532757 0 - outer loop - vertex -37.5366 -12.7854 -3 - vertex -37.2393 -13.2576 0 - vertex -37.2393 -13.2576 -3 - endloop - endfacet - facet normal 0.972647 -0.232287 0 - outer loop - vertex -37.5366 -12.7854 0 - vertex -37.3951 -12.1929 -3 - vertex -37.3951 -12.1929 0 - endloop - endfacet - facet normal 0.972647 -0.232287 0 - outer loop - vertex -37.3951 -12.1929 -3 - vertex -37.5366 -12.7854 0 - vertex -37.5366 -12.7854 -3 - endloop - endfacet - facet normal 0.678121 -0.73495 0 - outer loop - vertex -37.3951 -12.1929 -3 - vertex -36.792 -11.6364 0 - vertex -37.3951 -12.1929 0 - endloop - endfacet - facet normal 0.678121 -0.73495 0 - outer loop - vertex -36.792 -11.6364 0 - vertex -37.3951 -12.1929 -3 - vertex -36.792 -11.6364 -3 - endloop - endfacet - facet normal 0.33489 -0.942257 0 - outer loop - vertex -36.792 -11.6364 -3 - vertex -36.1936 -11.4238 0 - vertex -36.792 -11.6364 0 - endloop - endfacet - facet normal 0.33489 -0.942257 0 - outer loop - vertex -36.1936 -11.4238 0 - vertex -36.792 -11.6364 -3 - vertex -36.1936 -11.4238 -3 - endloop - endfacet - facet normal 0.0784345 -0.996919 0 - outer loop - vertex -36.1936 -11.4238 -3 - vertex -34.87 -11.3196 0 - vertex -36.1936 -11.4238 0 - endloop - endfacet - facet normal 0.0784345 -0.996919 0 - outer loop - vertex -34.87 -11.3196 0 - vertex -36.1936 -11.4238 -3 - vertex -34.87 -11.3196 -3 - endloop - endfacet - facet normal -0.00425069 -0.999991 0 - outer loop - vertex -34.87 -11.3196 -3 - vertex -27.1868 -11.3523 0 - vertex -34.87 -11.3196 0 - endloop - endfacet - facet normal -0.00425069 -0.999991 -0 - outer loop - vertex -27.1868 -11.3523 0 - vertex -34.87 -11.3196 -3 - vertex -27.1868 -11.3523 -3 - endloop - endfacet - facet normal -0.778969 -0.627062 0 - outer loop - vertex -11.7016 -19.4898 -3 - vertex -11.9141 -19.2259 0 - vertex -11.9141 -19.2259 -3 - endloop - endfacet - facet normal -0.778969 -0.627062 0 - outer loop - vertex -11.9141 -19.2259 0 - vertex -11.7016 -19.4898 -3 - vertex -11.7016 -19.4898 0 - endloop - endfacet - facet normal -0.998948 -0.0458637 0 - outer loop - vertex -11.6824 -19.9072 -3 - vertex -11.7016 -19.4898 0 - vertex -11.7016 -19.4898 -3 - endloop - endfacet - facet normal -0.998948 -0.0458637 0 - outer loop - vertex -11.7016 -19.4898 0 - vertex -11.6824 -19.9072 -3 - vertex -11.6824 -19.9072 0 - endloop - endfacet - facet normal -0.950718 0.310058 0 - outer loop - vertex -11.8627 -20.4599 -3 - vertex -11.6824 -19.9072 0 - vertex -11.6824 -19.9072 -3 - endloop - endfacet - facet normal -0.950718 0.310058 0 - outer loop - vertex -11.6824 -19.9072 0 - vertex -11.8627 -20.4599 -3 - vertex -11.8627 -20.4599 0 - endloop - endfacet - facet normal -0.958208 0.286074 0 - outer loop - vertex -12.0544 -21.102 -3 - vertex -11.8627 -20.4599 0 - vertex -11.8627 -20.4599 -3 - endloop - endfacet - facet normal -0.958208 0.286074 0 - outer loop - vertex -11.8627 -20.4599 0 - vertex -12.0544 -21.102 -3 - vertex -12.0544 -21.102 0 - endloop - endfacet - facet normal 0.484491 -0.874796 0 - outer loop - vertex -12.0544 -21.102 -3 - vertex -10.3766 -20.1728 0 - vertex -12.0544 -21.102 0 - endloop - endfacet - facet normal 0.484491 -0.874796 0 - outer loop - vertex -10.3766 -20.1728 0 - vertex -12.0544 -21.102 -3 - vertex -10.3766 -20.1728 -3 - endloop - endfacet - facet normal 0.447022 -0.894523 0 - outer loop - vertex -10.3766 -20.1728 -3 - vertex -8.78621 -19.378 0 - vertex -10.3766 -20.1728 0 - endloop - endfacet - facet normal 0.447022 -0.894523 0 - outer loop - vertex -8.78621 -19.378 0 - vertex -10.3766 -20.1728 -3 - vertex -8.78621 -19.378 -3 - endloop - endfacet - facet normal 0.124012 -0.992281 0 - outer loop - vertex -8.78621 -19.378 -3 - vertex -7.1272 -19.1706 0 - vertex -8.78621 -19.378 0 - endloop - endfacet - facet normal 0.124012 -0.992281 0 - outer loop - vertex -7.1272 -19.1706 0 - vertex -8.78621 -19.378 -3 - vertex -7.1272 -19.1706 -3 - endloop - endfacet - facet normal -0.019656 -0.999807 0 - outer loop - vertex -7.1272 -19.1706 -3 - vertex -5.57075 -19.2012 0 - vertex -7.1272 -19.1706 0 - endloop - endfacet - facet normal -0.019656 -0.999807 -0 - outer loop - vertex -5.57075 -19.2012 0 - vertex -7.1272 -19.1706 -3 - vertex -5.57075 -19.2012 -3 - endloop - endfacet - facet normal -0.587249 -0.809407 0 - outer loop - vertex -5.57075 -19.2012 -3 - vertex -4.70045 -19.8327 0 - vertex -5.57075 -19.2012 0 - endloop - endfacet - facet normal -0.587249 -0.809407 -0 - outer loop - vertex -4.70045 -19.8327 0 - vertex -5.57075 -19.2012 -3 - vertex -4.70045 -19.8327 -3 - endloop - endfacet - facet normal -0.783181 -0.621793 0 - outer loop - vertex -4.06681 -20.6308 -3 - vertex -4.70045 -19.8327 0 - vertex -4.70045 -19.8327 -3 - endloop - endfacet - facet normal -0.783181 -0.621793 0 - outer loop - vertex -4.70045 -19.8327 0 - vertex -4.06681 -20.6308 -3 - vertex -4.06681 -20.6308 0 - endloop - endfacet - facet normal -0.979543 -0.201235 0 - outer loop - vertex -3.85646 -21.6547 -3 - vertex -4.06681 -20.6308 0 - vertex -4.06681 -20.6308 -3 - endloop - endfacet - facet normal -0.979543 -0.201235 0 - outer loop - vertex -4.06681 -20.6308 0 - vertex -3.85646 -21.6547 -3 - vertex -3.85646 -21.6547 0 - endloop - endfacet - facet normal -0.999487 0.0320236 0 - outer loop - vertex -3.89417 -22.8317 -3 - vertex -3.85646 -21.6547 0 - vertex -3.85646 -21.6547 -3 - endloop - endfacet - facet normal -0.999487 0.0320236 0 - outer loop - vertex -3.85646 -21.6547 0 - vertex -3.89417 -22.8317 -3 - vertex -3.89417 -22.8317 0 - endloop - endfacet - facet normal -0.971741 0.236051 0 - outer loop - vertex -4.26405 -24.3543 -3 - vertex -3.89417 -22.8317 0 - vertex -3.89417 -22.8317 -3 - endloop - endfacet - facet normal -0.971741 0.236051 0 - outer loop - vertex -3.89417 -22.8317 0 - vertex -4.26405 -24.3543 -3 - vertex -4.26405 -24.3543 0 - endloop - endfacet - facet normal -0.928824 0.370521 0 - outer loop - vertex -6.41168 -29.738 -3 - vertex -4.26405 -24.3543 0 - vertex -4.26405 -24.3543 -3 - endloop - endfacet - facet normal -0.928824 0.370521 0 - outer loop - vertex -4.26405 -24.3543 0 - vertex -6.41168 -29.738 -3 - vertex -6.41168 -29.738 0 - endloop - endfacet - facet normal -0.923854 0.382746 0 - outer loop - vertex -8.33648 -34.384 -3 - vertex -6.41168 -29.738 0 - vertex -6.41168 -29.738 -3 - endloop - endfacet - facet normal -0.923854 0.382746 0 - outer loop - vertex -6.41168 -29.738 0 - vertex -8.33648 -34.384 -3 - vertex -8.33648 -34.384 0 - endloop - endfacet - facet normal -0.969782 0.243973 0 - outer loop - vertex -8.56822 -35.3052 -3 - vertex -8.33648 -34.384 0 - vertex -8.33648 -34.384 -3 - endloop - endfacet - facet normal -0.969782 0.243973 0 - outer loop - vertex -8.33648 -34.384 0 - vertex -8.56822 -35.3052 -3 - vertex -8.56822 -35.3052 0 - endloop - endfacet - facet normal -0.990389 -0.138307 0 - outer loop - vertex -8.51129 -35.7129 -3 - vertex -8.56822 -35.3052 0 - vertex -8.56822 -35.3052 -3 - endloop - endfacet - facet normal -0.990389 -0.138307 0 - outer loop - vertex -8.56822 -35.3052 0 - vertex -8.51129 -35.7129 -3 - vertex -8.51129 -35.7129 0 - endloop - endfacet - facet normal -0.550548 -0.834803 0 - outer loop - vertex -8.51129 -35.7129 -3 - vertex -7.98605 -36.0592 0 - vertex -8.51129 -35.7129 0 - endloop - endfacet - facet normal -0.550548 -0.834803 -0 - outer loop - vertex -7.98605 -36.0592 0 - vertex -8.51129 -35.7129 -3 - vertex -7.98605 -36.0592 -3 - endloop - endfacet - facet normal -0.557022 -0.830498 0 - outer loop - vertex -7.98605 -36.0592 -3 - vertex -7.51249 -36.3769 0 - vertex -7.98605 -36.0592 0 - endloop - endfacet - facet normal -0.557022 -0.830498 -0 - outer loop - vertex -7.51249 -36.3769 0 - vertex -7.98605 -36.0592 -3 - vertex -7.51249 -36.3769 -3 - endloop - endfacet - facet normal -0.885076 -0.465446 0 - outer loop - vertex -7.31439 -36.7536 -3 - vertex -7.51249 -36.3769 0 - vertex -7.51249 -36.3769 -3 - endloop - endfacet - facet normal -0.885076 -0.465446 0 - outer loop - vertex -7.51249 -36.3769 0 - vertex -7.31439 -36.7536 -3 - vertex -7.31439 -36.7536 0 - endloop - endfacet - facet normal -0.984477 0.175514 0 - outer loop - vertex -7.3919 -37.1883 -3 - vertex -7.31439 -36.7536 0 - vertex -7.31439 -36.7536 -3 - endloop - endfacet - facet normal -0.984477 0.175514 0 - outer loop - vertex -7.31439 -36.7536 0 - vertex -7.3919 -37.1883 -3 - vertex -7.3919 -37.1883 0 - endloop - endfacet - facet normal -0.812154 0.583443 0 - outer loop - vertex -7.74517 -37.6801 -3 - vertex -7.3919 -37.1883 0 - vertex -7.3919 -37.1883 -3 - endloop - endfacet - facet normal -0.812154 0.583443 0 - outer loop - vertex -7.3919 -37.1883 0 - vertex -7.74517 -37.6801 -3 - vertex -7.74517 -37.6801 0 - endloop - endfacet - facet normal -0.622963 0.782251 0 - outer loop - vertex -7.74517 -37.6801 -3 - vertex -8.07933 -37.9462 0 - vertex -7.74517 -37.6801 0 - endloop - endfacet - facet normal -0.622963 0.782251 0 - outer loop - vertex -8.07933 -37.9462 0 - vertex -7.74517 -37.6801 -3 - vertex -8.07933 -37.9462 -3 - endloop - endfacet - facet normal -0.234375 0.972146 0 - outer loop - vertex -8.07933 -37.9462 -3 - vertex -8.66873 -38.0883 0 - vertex -8.07933 -37.9462 0 - endloop - endfacet - facet normal -0.234375 0.972146 0 - outer loop - vertex -8.66873 -38.0883 0 - vertex -8.07933 -37.9462 -3 - vertex -8.66873 -38.0883 -3 - endloop - endfacet - facet normal -0.02015 0.999797 0 - outer loop - vertex -8.66873 -38.0883 -3 - vertex -12.0013 -38.1555 0 - vertex -8.66873 -38.0883 0 - endloop - endfacet - facet normal -0.02015 0.999797 0 - outer loop - vertex -12.0013 -38.1555 0 - vertex -8.66873 -38.0883 -3 - vertex -12.0013 -38.1555 -3 - endloop - endfacet - facet normal 0.0188466 0.999822 -0 - outer loop - vertex -12.0013 -38.1555 -3 - vertex -15.3277 -38.0928 0 - vertex -12.0013 -38.1555 0 - endloop - endfacet - facet normal 0.0188466 0.999822 0 - outer loop - vertex -15.3277 -38.0928 0 - vertex -12.0013 -38.1555 -3 - vertex -15.3277 -38.0928 -3 - endloop - endfacet - facet normal 0.289952 0.957041 -0 - outer loop - vertex -15.3277 -38.0928 -3 - vertex -15.7983 -37.9502 0 - vertex -15.3277 -38.0928 0 - endloop - endfacet - facet normal 0.289952 0.957041 0 - outer loop - vertex -15.7983 -37.9502 0 - vertex -15.3277 -38.0928 -3 - vertex -15.7983 -37.9502 -3 - endloop - endfacet - facet normal 0.88368 0.468092 0 - outer loop - vertex -15.7983 -37.9502 0 - vertex -15.9433 -37.6764 -3 - vertex -15.9433 -37.6764 0 - endloop - endfacet - facet normal 0.88368 0.468092 0 - outer loop - vertex -15.9433 -37.6764 -3 - vertex -15.7983 -37.9502 0 - vertex -15.7983 -37.9502 -3 - endloop - endfacet - facet normal 0.999065 -0.0432335 0 - outer loop - vertex -15.9433 -37.6764 0 - vertex -15.9213 -37.1689 -3 - vertex -15.9213 -37.1689 0 - endloop - endfacet - facet normal 0.999065 -0.0432335 0 - outer loop - vertex -15.9213 -37.1689 -3 - vertex -15.9433 -37.6764 0 - vertex -15.9433 -37.6764 -3 - endloop - endfacet - facet normal 0.790901 -0.611944 0 - outer loop - vertex -15.9213 -37.1689 0 - vertex -15.4682 -36.5832 -3 - vertex -15.4682 -36.5832 0 - endloop - endfacet - facet normal 0.790901 -0.611944 0 - outer loop - vertex -15.4682 -36.5832 -3 - vertex -15.9213 -37.1689 0 - vertex -15.9213 -37.1689 -3 - endloop - endfacet - facet normal 0.603331 -0.797491 0 - outer loop - vertex -15.4682 -36.5832 -3 - vertex -14.8949 -36.1495 0 - vertex -15.4682 -36.5832 0 - endloop - endfacet - facet normal 0.603331 -0.797491 0 - outer loop - vertex -14.8949 -36.1495 0 - vertex -15.4682 -36.5832 -3 - vertex -14.8949 -36.1495 -3 - endloop - endfacet - facet normal 0.32682 -0.945087 0 - outer loop - vertex -14.8949 -36.1495 -3 - vertex -14.3732 -35.9691 0 - vertex -14.8949 -36.1495 0 - endloop - endfacet - facet normal 0.32682 -0.945087 0 - outer loop - vertex -14.3732 -35.9691 0 - vertex -14.8949 -36.1495 -3 - vertex -14.3732 -35.9691 -3 - endloop - endfacet - facet normal 0.336732 -0.941601 0 - outer loop - vertex -14.3732 -35.9691 -3 - vertex -13.7203 -35.7356 0 - vertex -14.3732 -35.9691 0 - endloop - endfacet - facet normal 0.336732 -0.941601 0 - outer loop - vertex -13.7203 -35.7356 0 - vertex -14.3732 -35.9691 -3 - vertex -13.7203 -35.7356 -3 - endloop - endfacet - facet normal 0.723518 -0.690305 0 - outer loop - vertex -13.7203 -35.7356 0 - vertex -13.0448 -35.0276 -3 - vertex -13.0448 -35.0276 0 - endloop - endfacet - facet normal 0.723518 -0.690305 0 - outer loop - vertex -13.0448 -35.0276 -3 - vertex -13.7203 -35.7356 0 - vertex -13.7203 -35.7356 -3 - endloop - endfacet - facet normal 0.860653 -0.509193 0 - outer loop - vertex -13.0448 -35.0276 0 - vertex -12.3385 -33.8339 -3 - vertex -12.3385 -33.8339 0 - endloop - endfacet - facet normal 0.860653 -0.509193 0 - outer loop - vertex -12.3385 -33.8339 -3 - vertex -13.0448 -35.0276 0 - vertex -13.0448 -35.0276 -3 - endloop - endfacet - facet normal 0.915054 -0.403331 0 - outer loop - vertex -12.3385 -33.8339 0 - vertex -11.5932 -32.143 -3 - vertex -11.5932 -32.143 0 - endloop - endfacet - facet normal 0.915054 -0.403331 0 - outer loop - vertex -11.5932 -32.143 -3 - vertex -12.3385 -33.8339 0 - vertex -12.3385 -33.8339 -3 - endloop - endfacet - facet normal 0.927789 -0.373105 0 - outer loop - vertex -11.5932 -32.143 0 - vertex -9.55184 -27.0667 -3 - vertex -9.55184 -27.0667 0 - endloop - endfacet - facet normal 0.927789 -0.373105 0 - outer loop - vertex -9.55184 -27.0667 -3 - vertex -11.5932 -32.143 0 - vertex -11.5932 -32.143 -3 - endloop - endfacet - facet normal 0.938245 -0.345971 0 - outer loop - vertex -9.55184 -27.0667 0 - vertex -8.72405 -24.8218 -3 - vertex -8.72405 -24.8218 0 - endloop - endfacet - facet normal 0.938245 -0.345971 0 - outer loop - vertex -8.72405 -24.8218 -3 - vertex -9.55184 -27.0667 0 - vertex -9.55184 -27.0667 -3 - endloop - endfacet - facet normal 0.983596 -0.180388 0 - outer loop - vertex -8.72405 -24.8218 0 - vertex -8.46819 -23.4267 -3 - vertex -8.46819 -23.4267 0 - endloop - endfacet - facet normal 0.983596 -0.180388 0 - outer loop - vertex -8.46819 -23.4267 -3 - vertex -8.72405 -24.8218 0 - vertex -8.72405 -24.8218 -3 - endloop - endfacet - facet normal 0.979467 0.201603 0 - outer loop - vertex -8.46819 -23.4267 0 - vertex -8.55624 -22.9989 -3 - vertex -8.55624 -22.9989 0 - endloop - endfacet - facet normal 0.979467 0.201603 0 - outer loop - vertex -8.55624 -22.9989 -3 - vertex -8.46819 -23.4267 0 - vertex -8.46819 -23.4267 -3 - endloop - endfacet - facet normal 0.762012 0.647563 0 - outer loop - vertex -8.55624 -22.9989 0 - vertex -8.78909 -22.7249 -3 - vertex -8.78909 -22.7249 0 - endloop - endfacet - facet normal 0.762012 0.647563 0 - outer loop - vertex -8.78909 -22.7249 -3 - vertex -8.55624 -22.9989 0 - vertex -8.55624 -22.9989 -3 - endloop - endfacet - facet normal 0.179668 0.983727 -0 - outer loop - vertex -8.78909 -22.7249 -3 - vertex -9.69161 -22.56 0 - vertex -8.78909 -22.7249 0 - endloop - endfacet - facet normal 0.179668 0.983727 0 - outer loop - vertex -9.69161 -22.56 0 - vertex -8.78909 -22.7249 -3 - vertex -9.69161 -22.56 -3 - endloop - endfacet - facet normal -0.191908 0.981413 0 - outer loop - vertex -9.69161 -22.56 -3 - vertex -10.5461 -22.7271 0 - vertex -9.69161 -22.56 0 - endloop - endfacet - facet normal -0.191908 0.981413 0 - outer loop - vertex -10.5461 -22.7271 0 - vertex -9.69161 -22.56 -3 - vertex -10.5461 -22.7271 -3 - endloop - endfacet - facet normal -0.380356 0.92484 0 - outer loop - vertex -10.5461 -22.7271 -3 - vertex -11.3967 -23.0769 0 - vertex -10.5461 -22.7271 0 - endloop - endfacet - facet normal -0.380356 0.92484 0 - outer loop - vertex -11.3967 -23.0769 0 - vertex -10.5461 -22.7271 -3 - vertex -11.3967 -23.0769 -3 - endloop - endfacet - facet normal -0.535069 0.844808 0 - outer loop - vertex -11.3967 -23.0769 -3 - vertex -12.4124 -23.7203 0 - vertex -11.3967 -23.0769 0 - endloop - endfacet - facet normal -0.535069 0.844808 0 - outer loop - vertex -12.4124 -23.7203 0 - vertex -11.3967 -23.0769 -3 - vertex -12.4124 -23.7203 -3 - endloop - endfacet - facet normal -0.673005 0.739638 0 - outer loop - vertex -12.4124 -23.7203 -3 - vertex -13.1427 -24.3848 0 - vertex -12.4124 -23.7203 0 - endloop - endfacet - facet normal -0.673005 0.739638 0 - outer loop - vertex -13.1427 -24.3848 0 - vertex -12.4124 -23.7203 -3 - vertex -13.1427 -24.3848 -3 - endloop - endfacet - facet normal -0.824808 0.565412 0 - outer loop - vertex -13.7062 -25.2068 -3 - vertex -13.1427 -24.3848 0 - vertex -13.1427 -24.3848 -3 - endloop - endfacet - facet normal -0.824808 0.565412 0 - outer loop - vertex -13.1427 -24.3848 0 - vertex -13.7062 -25.2068 -3 - vertex -13.7062 -25.2068 0 - endloop - endfacet - facet normal -0.907849 0.419297 0 - outer loop - vertex -14.2216 -26.3227 -3 - vertex -13.7062 -25.2068 0 - vertex -13.7062 -25.2068 -3 - endloop - endfacet - facet normal -0.907849 0.419297 0 - outer loop - vertex -13.7062 -25.2068 0 - vertex -14.2216 -26.3227 -3 - vertex -14.2216 -26.3227 0 - endloop - endfacet - facet normal -0.926196 0.377043 0 - outer loop - vertex -15.3894 -29.1914 -3 - vertex -14.2216 -26.3227 0 - vertex -14.2216 -26.3227 -3 - endloop - endfacet - facet normal -0.926196 0.377043 0 - outer loop - vertex -14.2216 -26.3227 0 - vertex -15.3894 -29.1914 -3 - vertex -15.3894 -29.1914 0 - endloop - endfacet - facet normal -0.925675 0.37832 0 - outer loop - vertex -16.8281 -32.7116 -3 - vertex -15.3894 -29.1914 0 - vertex -15.3894 -29.1914 -3 - endloop - endfacet - facet normal -0.925675 0.37832 0 - outer loop - vertex -15.3894 -29.1914 0 - vertex -16.8281 -32.7116 -3 - vertex -16.8281 -32.7116 0 - endloop - endfacet - facet normal -0.944728 0.327855 0 - outer loop - vertex -17.7285 -35.3062 -3 - vertex -16.8281 -32.7116 0 - vertex -16.8281 -32.7116 -3 - endloop - endfacet - facet normal -0.944728 0.327855 0 - outer loop - vertex -16.8281 -32.7116 0 - vertex -17.7285 -35.3062 -3 - vertex -17.7285 -35.3062 0 - endloop - endfacet - facet normal -0.998333 -0.0577213 0 - outer loop - vertex -17.6987 -35.8223 -3 - vertex -17.7285 -35.3062 0 - vertex -17.7285 -35.3062 -3 - endloop - endfacet - facet normal -0.998333 -0.0577213 0 - outer loop - vertex -17.7285 -35.3062 0 - vertex -17.6987 -35.8223 -3 - vertex -17.6987 -35.8223 0 - endloop - endfacet - facet normal -0.412173 -0.911106 0 - outer loop - vertex -17.6987 -35.8223 -3 - vertex -17.3742 -35.9691 0 - vertex -17.6987 -35.8223 0 - endloop - endfacet - facet normal -0.412173 -0.911106 -0 - outer loop - vertex -17.3742 -35.9691 0 - vertex -17.6987 -35.8223 -3 - vertex -17.3742 -35.9691 -3 - endloop - endfacet - facet normal -0.297585 -0.954695 0 - outer loop - vertex -17.3742 -35.9691 -3 - vertex -16.5846 -36.2152 0 - vertex -17.3742 -35.9691 0 - endloop - endfacet - facet normal -0.297585 -0.954695 -0 - outer loop - vertex -16.5846 -36.2152 0 - vertex -17.3742 -35.9691 -3 - vertex -16.5846 -36.2152 -3 - endloop - endfacet - facet normal -0.829044 -0.559183 0 - outer loop - vertex -16.2226 -36.752 -3 - vertex -16.5846 -36.2152 0 - vertex -16.5846 -36.2152 -3 - endloop - endfacet - facet normal -0.829044 -0.559183 0 - outer loop - vertex -16.5846 -36.2152 0 - vertex -16.2226 -36.752 -3 - vertex -16.2226 -36.752 0 - endloop - endfacet - facet normal -0.876406 0.481572 0 - outer loop - vertex -16.6989 -37.6188 -3 - vertex -16.2226 -36.752 0 - vertex -16.2226 -36.752 -3 - endloop - endfacet - facet normal -0.876406 0.481572 0 - outer loop - vertex -16.2226 -36.752 0 - vertex -16.6989 -37.6188 -3 - vertex -16.6989 -37.6188 0 - endloop - endfacet - facet normal -0.678562 0.734543 0 - outer loop - vertex -16.6989 -37.6188 -3 - vertex -17.033 -37.9274 0 - vertex -16.6989 -37.6188 0 - endloop - endfacet - facet normal -0.678562 0.734543 0 - outer loop - vertex -17.033 -37.9274 0 - vertex -16.6989 -37.6188 -3 - vertex -17.033 -37.9274 -3 - endloop - endfacet - facet normal -0.276188 0.961104 0 - outer loop - vertex -17.033 -37.9274 -3 - vertex -17.5781 -38.0841 0 - vertex -17.033 -37.9274 0 - endloop - endfacet - facet normal -0.276188 0.961104 0 - outer loop - vertex -17.5781 -38.0841 0 - vertex -17.033 -37.9274 -3 - vertex -17.5781 -38.0841 -3 - endloop - endfacet - facet normal -0.0141874 0.999899 0 - outer loop - vertex -17.5781 -38.0841 -3 - vertex -20.8226 -38.1301 0 - vertex -17.5781 -38.0841 0 - endloop - endfacet - facet normal -0.0141874 0.999899 0 - outer loop - vertex -20.8226 -38.1301 0 - vertex -17.5781 -38.0841 -3 - vertex -20.8226 -38.1301 -3 - endloop - endfacet - facet normal 0.0314237 0.999506 -0 - outer loop - vertex -20.8226 -38.1301 -3 - vertex -24.8096 -38.0047 0 - vertex -20.8226 -38.1301 0 - endloop - endfacet - facet normal 0.0314237 0.999506 0 - outer loop - vertex -24.8096 -38.0047 0 - vertex -20.8226 -38.1301 -3 - vertex -24.8096 -38.0047 -3 - endloop - endfacet - facet normal 0.544713 0.838623 -0 - outer loop - vertex -24.8096 -38.0047 -3 - vertex -25.0608 -37.8416 0 - vertex -24.8096 -38.0047 0 - endloop - endfacet - facet normal 0.544713 0.838623 0 - outer loop - vertex -25.0608 -37.8416 0 - vertex -24.8096 -38.0047 -3 - vertex -25.0608 -37.8416 -3 - endloop - endfacet - facet normal 0.940452 0.339927 0 - outer loop - vertex -25.0608 -37.8416 0 - vertex -25.157 -37.5754 -3 - vertex -25.157 -37.5754 0 - endloop - endfacet - facet normal 0.940452 0.339927 0 - outer loop - vertex -25.157 -37.5754 -3 - vertex -25.0608 -37.8416 0 - vertex -25.0608 -37.8416 -3 - endloop - endfacet - facet normal 0.964896 -0.262631 0 - outer loop - vertex -25.157 -37.5754 0 - vertex -24.9699 -36.888 -3 - vertex -24.9699 -36.888 0 - endloop - endfacet - facet normal 0.964896 -0.262631 0 - outer loop - vertex -24.9699 -36.888 -3 - vertex -25.157 -37.5754 0 - vertex -25.157 -37.5754 -3 - endloop - endfacet - facet normal 0.757107 -0.653291 0 - outer loop - vertex -24.9699 -36.888 0 - vertex -24.4194 -36.2501 -3 - vertex -24.4194 -36.2501 0 - endloop - endfacet - facet normal 0.757107 -0.653291 0 - outer loop - vertex -24.4194 -36.2501 -3 - vertex -24.9699 -36.888 0 - vertex -24.9699 -36.888 -3 - endloop - endfacet - facet normal 0.353851 -0.935302 0 - outer loop - vertex -24.4194 -36.2501 -3 - vertex -23.6767 -35.9691 0 - vertex -24.4194 -36.2501 0 - endloop - endfacet - facet normal 0.353851 -0.935302 0 - outer loop - vertex -23.6767 -35.9691 0 - vertex -24.4194 -36.2501 -3 - vertex -23.6767 -35.9691 -3 - endloop - endfacet - facet normal 0.158077 -0.987427 0 - outer loop - vertex -23.6767 -35.9691 -3 - vertex -23.007 -35.8619 0 - vertex -23.6767 -35.9691 0 - endloop - endfacet - facet normal 0.158077 -0.987427 0 - outer loop - vertex -23.007 -35.8619 0 - vertex -23.6767 -35.9691 -3 - vertex -23.007 -35.8619 -3 - endloop - endfacet - facet normal 0.593681 -0.8047 0 - outer loop - vertex -23.007 -35.8619 -3 - vertex -22.458 -35.4568 0 - vertex -23.007 -35.8619 0 - endloop - endfacet - facet normal 0.593681 -0.8047 0 - outer loop - vertex -22.458 -35.4568 0 - vertex -23.007 -35.8619 -3 - vertex -22.458 -35.4568 -3 - endloop - endfacet - facet normal 0.83817 -0.545409 0 - outer loop - vertex -22.458 -35.4568 0 - vertex -21.9191 -34.6287 -3 - vertex -21.9191 -34.6287 0 - endloop - endfacet - facet normal 0.83817 -0.545409 0 - outer loop - vertex -21.9191 -34.6287 -3 - vertex -22.458 -35.4568 0 - vertex -22.458 -35.4568 -3 - endloop - endfacet - facet normal 0.906982 -0.42117 0 - outer loop - vertex -21.9191 -34.6287 0 - vertex -21.28 -33.2523 -3 - vertex -21.28 -33.2523 0 - endloop - endfacet - facet normal 0.906982 -0.42117 0 - outer loop - vertex -21.28 -33.2523 -3 - vertex -21.9191 -34.6287 0 - vertex -21.9191 -34.6287 -3 - endloop - endfacet - facet normal 0.922958 -0.384901 0 - outer loop - vertex -21.28 -33.2523 0 - vertex -18.5428 -26.6889 -3 - vertex -18.5428 -26.6889 0 - endloop - endfacet - facet normal 0.922958 -0.384901 0 - outer loop - vertex -18.5428 -26.6889 -3 - vertex -21.28 -33.2523 0 - vertex -21.28 -33.2523 -3 - endloop - endfacet - facet normal 0.9376 -0.347716 0 - outer loop - vertex -18.5428 -26.6889 0 - vertex -17.299 -23.335 -3 - vertex -17.299 -23.335 0 - endloop - endfacet - facet normal 0.9376 -0.347716 0 - outer loop - vertex -17.299 -23.335 -3 - vertex -18.5428 -26.6889 0 - vertex -18.5428 -26.6889 -3 - endloop - endfacet - facet normal 0.99882 -0.0485627 0 - outer loop - vertex -17.299 -23.335 0 - vertex -17.2695 -22.7276 -3 - vertex -17.2695 -22.7276 0 - endloop - endfacet - facet normal 0.99882 -0.0485627 0 - outer loop - vertex -17.2695 -22.7276 -3 - vertex -17.299 -23.335 0 - vertex -17.299 -23.335 -3 - endloop - endfacet - facet normal 0.171081 0.985257 -0 - outer loop - vertex -17.2695 -22.7276 -3 - vertex -17.8179 -22.6324 0 - vertex -17.2695 -22.7276 0 - endloop - endfacet - facet normal 0.171081 0.985257 0 - outer loop - vertex -17.8179 -22.6324 0 - vertex -17.2695 -22.7276 -3 - vertex -17.8179 -22.6324 -3 - endloop - endfacet - facet normal 0.112446 0.993658 -0 - outer loop - vertex -17.8179 -22.6324 -3 - vertex -18.3659 -22.5704 0 - vertex -17.8179 -22.6324 0 - endloop - endfacet - facet normal 0.112446 0.993658 0 - outer loop - vertex -18.3659 -22.5704 0 - vertex -17.8179 -22.6324 -3 - vertex -18.3659 -22.5704 -3 - endloop - endfacet - facet normal 0.520189 0.854051 -0 - outer loop - vertex -18.3659 -22.5704 -3 - vertex -18.6886 -22.3738 0 - vertex -18.3659 -22.5704 0 - endloop - endfacet - facet normal 0.520189 0.854051 0 - outer loop - vertex -18.6886 -22.3738 0 - vertex -18.3659 -22.5704 -3 - vertex -18.6886 -22.3738 -3 - endloop - endfacet - facet normal 0.953226 0.302258 0 - outer loop - vertex -18.6886 -22.3738 0 - vertex -18.7986 -22.0269 -3 - vertex -18.7986 -22.0269 0 - endloop - endfacet - facet normal 0.953226 0.302258 0 - outer loop - vertex -18.7986 -22.0269 -3 - vertex -18.6886 -22.3738 0 - vertex -18.6886 -22.3738 -3 - endloop - endfacet - facet normal 0.984904 -0.1731 0 - outer loop - vertex -18.7986 -22.0269 0 - vertex -18.7084 -21.5139 -3 - vertex -18.7084 -21.5139 0 - endloop - endfacet - facet normal 0.984904 -0.1731 0 - outer loop - vertex -18.7084 -21.5139 -3 - vertex -18.7986 -22.0269 0 - vertex -18.7986 -22.0269 -3 - endloop - endfacet - facet normal 0.878265 -0.478174 0 - outer loop - vertex -18.7084 -21.5139 0 - vertex -18.4336 -21.0091 -3 - vertex -18.4336 -21.0091 0 - endloop - endfacet - facet normal 0.878265 -0.478174 0 - outer loop - vertex -18.4336 -21.0091 -3 - vertex -18.7084 -21.5139 0 - vertex -18.7084 -21.5139 -3 - endloop - endfacet - facet normal 0.488581 -0.872518 0 - outer loop - vertex -18.4336 -21.0091 -3 - vertex -17.9982 -20.7653 0 - vertex -18.4336 -21.0091 0 - endloop - endfacet - facet normal 0.488581 -0.872518 0 - outer loop - vertex -17.9982 -20.7653 0 - vertex -18.4336 -21.0091 -3 - vertex -17.9982 -20.7653 -3 - endloop - endfacet - facet normal 0.293895 -0.955838 0 - outer loop - vertex -17.9982 -20.7653 -3 - vertex -15.1553 -19.8912 0 - vertex -17.9982 -20.7653 0 - endloop - endfacet - facet normal 0.293895 -0.955838 0 - outer loop - vertex -15.1553 -19.8912 0 - vertex -17.9982 -20.7653 -3 - vertex -15.1553 -19.8912 -3 - endloop - endfacet - facet normal 0.257693 -0.966227 0 - outer loop - vertex -15.1553 -19.8912 -3 - vertex -12.3137 -19.1333 0 - vertex -15.1553 -19.8912 0 - endloop - endfacet - facet normal 0.257693 -0.966227 0 - outer loop - vertex -12.3137 -19.1333 0 - vertex -15.1553 -19.8912 -3 - vertex -12.3137 -19.1333 -3 - endloop - endfacet - facet normal -0.225556 -0.97423 0 - outer loop - vertex -12.3137 -19.1333 -3 - vertex -11.9141 -19.2259 0 - vertex -12.3137 -19.1333 0 - endloop - endfacet - facet normal -0.225556 -0.97423 -0 - outer loop - vertex -11.9141 -19.2259 0 - vertex -12.3137 -19.1333 -3 - vertex -11.9141 -19.2259 -3 - endloop - endfacet - facet normal -0.569265 -0.822154 0 - outer loop - vertex 47.2139 -19.2263 -3 - vertex 47.7267 -19.5813 0 - vertex 47.2139 -19.2263 0 - endloop - endfacet - facet normal -0.569265 -0.822154 -0 - outer loop - vertex 47.7267 -19.5813 0 - vertex 47.2139 -19.2263 -3 - vertex 47.7267 -19.5813 -3 - endloop - endfacet - facet normal -0.900824 -0.434184 0 - outer loop - vertex 47.9875 -20.1225 -3 - vertex 47.7267 -19.5813 0 - vertex 47.7267 -19.5813 -3 - endloop - endfacet - facet normal -0.900824 -0.434184 0 - outer loop - vertex 47.7267 -19.5813 0 - vertex 47.9875 -20.1225 -3 - vertex 47.9875 -20.1225 0 - endloop - endfacet - facet normal -0.988067 0.154023 0 - outer loop - vertex 47.8425 -21.0531 -3 - vertex 47.9875 -20.1225 0 - vertex 47.9875 -20.1225 -3 - endloop - endfacet - facet normal -0.988067 0.154023 0 - outer loop - vertex 47.9875 -20.1225 0 - vertex 47.8425 -21.0531 -3 - vertex 47.8425 -21.0531 0 - endloop - endfacet - facet normal -0.94959 0.313495 0 - outer loop - vertex 47.5305 -21.9981 -3 - vertex 47.8425 -21.0531 0 - vertex 47.8425 -21.0531 -3 - endloop - endfacet - facet normal -0.94959 0.313495 0 - outer loop - vertex 47.8425 -21.0531 0 - vertex 47.5305 -21.9981 -3 - vertex 47.5305 -21.9981 0 - endloop - endfacet - facet normal -0.87808 0.478513 0 - outer loop - vertex 47.0957 -22.796 -3 - vertex 47.5305 -21.9981 0 - vertex 47.5305 -21.9981 -3 - endloop - endfacet - facet normal -0.87808 0.478513 0 - outer loop - vertex 47.5305 -21.9981 0 - vertex 47.0957 -22.796 -3 - vertex 47.0957 -22.796 0 - endloop - endfacet - facet normal -0.768497 0.639853 0 - outer loop - vertex 46.5684 -23.4293 -3 - vertex 47.0957 -22.796 0 - vertex 47.0957 -22.796 -3 - endloop - endfacet - facet normal -0.768497 0.639853 0 - outer loop - vertex 47.0957 -22.796 0 - vertex 46.5684 -23.4293 -3 - vertex 46.5684 -23.4293 0 - endloop - endfacet - facet normal -0.607748 0.79413 0 - outer loop - vertex 46.5684 -23.4293 -3 - vertex 45.9792 -23.8802 0 - vertex 46.5684 -23.4293 0 - endloop - endfacet - facet normal -0.607748 0.79413 0 - outer loop - vertex 45.9792 -23.8802 0 - vertex 46.5684 -23.4293 -3 - vertex 45.9792 -23.8802 -3 - endloop - endfacet - facet normal -0.374765 0.92712 0 - outer loop - vertex 45.9792 -23.8802 -3 - vertex 45.3585 -24.1311 0 - vertex 45.9792 -23.8802 0 - endloop - endfacet - facet normal -0.374765 0.92712 0 - outer loop - vertex 45.3585 -24.1311 0 - vertex 45.9792 -23.8802 -3 - vertex 45.3585 -24.1311 -3 - endloop - endfacet - facet normal -0.0533306 0.998577 0 - outer loop - vertex 45.3585 -24.1311 -3 - vertex 44.7368 -24.1643 0 - vertex 45.3585 -24.1311 0 - endloop - endfacet - facet normal -0.0533306 0.998577 0 - outer loop - vertex 44.7368 -24.1643 0 - vertex 45.3585 -24.1311 -3 - vertex 44.7368 -24.1643 -3 - endloop - endfacet - facet normal 0.323025 0.94639 -0 - outer loop - vertex 44.7368 -24.1643 -3 - vertex 44.1445 -23.9621 0 - vertex 44.7368 -24.1643 0 - endloop - endfacet - facet normal 0.323025 0.94639 0 - outer loop - vertex 44.1445 -23.9621 0 - vertex 44.7368 -24.1643 -3 - vertex 44.1445 -23.9621 -3 - endloop - endfacet - facet normal 0.649875 0.760041 -0 - outer loop - vertex 44.1445 -23.9621 -3 - vertex 43.6122 -23.5069 0 - vertex 44.1445 -23.9621 0 - endloop - endfacet - facet normal 0.649875 0.760041 0 - outer loop - vertex 43.6122 -23.5069 0 - vertex 44.1445 -23.9621 -3 - vertex 43.6122 -23.5069 -3 - endloop - endfacet - facet normal 0.613628 0.789596 -0 - outer loop - vertex 43.6122 -23.5069 -3 - vertex 42.7682 -22.851 0 - vertex 43.6122 -23.5069 0 - endloop - endfacet - facet normal 0.613628 0.789596 0 - outer loop - vertex 42.7682 -22.851 0 - vertex 43.6122 -23.5069 -3 - vertex 42.7682 -22.851 -3 - endloop - endfacet - facet normal -0.589043 0.808102 0 - outer loop - vertex 42.7682 -22.851 -3 - vertex 41.2986 -23.9223 0 - vertex 42.7682 -22.851 0 - endloop - endfacet - facet normal -0.589043 0.808102 0 - outer loop - vertex 41.2986 -23.9223 0 - vertex 42.7682 -22.851 -3 - vertex 41.2986 -23.9223 -3 - endloop - endfacet - facet normal -0.701303 0.712864 0 - outer loop - vertex 41.2986 -23.9223 -3 - vertex 40.5923 -24.6171 0 - vertex 41.2986 -23.9223 0 - endloop - endfacet - facet normal -0.701303 0.712864 0 - outer loop - vertex 40.5923 -24.6171 0 - vertex 41.2986 -23.9223 -3 - vertex 40.5923 -24.6171 -3 - endloop - endfacet - facet normal -0.831353 0.555744 0 - outer loop - vertex 40.0289 -25.46 -3 - vertex 40.5923 -24.6171 0 - vertex 40.5923 -24.6171 -3 - endloop - endfacet - facet normal -0.831353 0.555744 0 - outer loop - vertex 40.5923 -24.6171 0 - vertex 40.0289 -25.46 -3 - vertex 40.0289 -25.46 0 - endloop - endfacet - facet normal -0.918395 0.395664 0 - outer loop - vertex 38.2188 -29.6614 -3 - vertex 40.0289 -25.46 0 - vertex 40.0289 -25.46 -3 - endloop - endfacet - facet normal -0.918395 0.395664 0 - outer loop - vertex 40.0289 -25.46 0 - vertex 38.2188 -29.6614 -3 - vertex 38.2188 -29.6614 0 - endloop - endfacet - facet normal -0.932877 0.360196 0 - outer loop - vertex 36.8272 -33.2656 -3 - vertex 38.2188 -29.6614 0 - vertex 38.2188 -29.6614 -3 - endloop - endfacet - facet normal -0.932877 0.360196 0 - outer loop - vertex 38.2188 -29.6614 0 - vertex 36.8272 -33.2656 -3 - vertex 36.8272 -33.2656 0 - endloop - endfacet - facet normal -0.959728 0.28093 0 - outer loop - vertex 36.2918 -35.0946 -3 - vertex 36.8272 -33.2656 0 - vertex 36.8272 -33.2656 -3 - endloop - endfacet - facet normal -0.959728 0.28093 0 - outer loop - vertex 36.8272 -33.2656 0 - vertex 36.2918 -35.0946 -3 - vertex 36.2918 -35.0946 0 - endloop - endfacet - facet normal -0.988492 -0.151276 0 - outer loop - vertex 36.3972 -35.7834 -3 - vertex 36.2918 -35.0946 0 - vertex 36.2918 -35.0946 -3 - endloop - endfacet - facet normal -0.988492 -0.151276 0 - outer loop - vertex 36.2918 -35.0946 0 - vertex 36.3972 -35.7834 -3 - vertex 36.3972 -35.7834 0 - endloop - endfacet - facet normal -0.329373 -0.9442 0 - outer loop - vertex 36.3972 -35.7834 -3 - vertex 37.1913 -36.0604 0 - vertex 36.3972 -35.7834 0 - endloop - endfacet - facet normal -0.329373 -0.9442 -0 - outer loop - vertex 37.1913 -36.0604 0 - vertex 36.3972 -35.7834 -3 - vertex 37.1913 -36.0604 -3 - endloop - endfacet - facet normal -0.323821 -0.946118 0 - outer loop - vertex 37.1913 -36.0604 -3 - vertex 37.9618 -36.3241 0 - vertex 37.1913 -36.0604 0 - endloop - endfacet - facet normal -0.323821 -0.946118 -0 - outer loop - vertex 37.9618 -36.3241 0 - vertex 37.1913 -36.0604 -3 - vertex 37.9618 -36.3241 -3 - endloop - endfacet - facet normal -0.960551 -0.278105 0 - outer loop - vertex 38.113 -36.8464 -3 - vertex 37.9618 -36.3241 0 - vertex 37.9618 -36.3241 -3 - endloop - endfacet - facet normal -0.960551 -0.278105 0 - outer loop - vertex 37.9618 -36.3241 0 - vertex 38.113 -36.8464 -3 - vertex 38.113 -36.8464 0 - endloop - endfacet - facet normal -0.986742 0.162295 0 - outer loop - vertex 37.9939 -37.5705 -3 - vertex 38.113 -36.8464 0 - vertex 38.113 -36.8464 -3 - endloop - endfacet - facet normal -0.986742 0.162295 0 - outer loop - vertex 38.113 -36.8464 0 - vertex 37.9939 -37.5705 -3 - vertex 37.9939 -37.5705 0 - endloop - endfacet - facet normal -0.539022 0.842292 0 - outer loop - vertex 37.9939 -37.5705 -3 - vertex 37.381 -37.9628 0 - vertex 37.9939 -37.5705 0 - endloop - endfacet - facet normal -0.539022 0.842292 0 - outer loop - vertex 37.381 -37.9628 0 - vertex 37.9939 -37.5705 -3 - vertex 37.381 -37.9628 -3 - endloop - endfacet - facet normal -0.10763 0.994191 0 - outer loop - vertex 37.381 -37.9628 -3 - vertex 35.8907 -38.1241 0 - vertex 37.381 -37.9628 0 - endloop - endfacet - facet normal -0.10763 0.994191 0 - outer loop - vertex 35.8907 -38.1241 0 - vertex 37.381 -37.9628 -3 - vertex 35.8907 -38.1241 -3 - endloop - endfacet - facet normal -0.0113945 0.999935 0 - outer loop - vertex 35.8907 -38.1241 -3 - vertex 33.1396 -38.1555 0 - vertex 35.8907 -38.1241 0 - endloop - endfacet - facet normal -0.0113945 0.999935 0 - outer loop - vertex 33.1396 -38.1555 0 - vertex 35.8907 -38.1241 -3 - vertex 33.1396 -38.1555 -3 - endloop - endfacet - facet normal 0.0181925 0.999835 -0 - outer loop - vertex 33.1396 -38.1555 -3 - vertex 29.8074 -38.0948 0 - vertex 33.1396 -38.1555 0 - endloop - endfacet - facet normal 0.0181925 0.999835 0 - outer loop - vertex 29.8074 -38.0948 0 - vertex 33.1396 -38.1555 -3 - vertex 29.8074 -38.0948 -3 - endloop - endfacet - facet normal 0.170719 0.98532 -0 - outer loop - vertex 29.8074 -38.0948 -3 - vertex 28.6431 -37.8931 0 - vertex 29.8074 -38.0948 0 - endloop - endfacet - facet normal 0.170719 0.98532 0 - outer loop - vertex 28.6431 -37.8931 0 - vertex 29.8074 -38.0948 -3 - vertex 28.6431 -37.8931 -3 - endloop - endfacet - facet normal 0.913427 0.407002 0 - outer loop - vertex 28.6431 -37.8931 0 - vertex 28.4102 -37.3704 -3 - vertex 28.4102 -37.3704 0 - endloop - endfacet - facet normal 0.913427 0.407002 0 - outer loop - vertex 28.4102 -37.3704 -3 - vertex 28.6431 -37.8931 0 - vertex 28.6431 -37.8931 -3 - endloop - endfacet - facet normal 0.965523 -0.260316 0 - outer loop - vertex 28.4102 -37.3704 0 - vertex 28.553 -36.8405 -3 - vertex 28.553 -36.8405 0 - endloop - endfacet - facet normal 0.965523 -0.260316 0 - outer loop - vertex 28.553 -36.8405 -3 - vertex 28.4102 -37.3704 0 - vertex 28.4102 -37.3704 -3 - endloop - endfacet - facet normal 0.697974 -0.716123 0 - outer loop - vertex 28.553 -36.8405 -3 - vertex 29.0223 -36.3831 0 - vertex 28.553 -36.8405 0 - endloop - endfacet - facet normal 0.697974 -0.716123 0 - outer loop - vertex 29.0223 -36.3831 0 - vertex 28.553 -36.8405 -3 - vertex 29.0223 -36.3831 -3 - endloop - endfacet - facet normal 0.378617 -0.925554 0 - outer loop - vertex 29.0223 -36.3831 -3 - vertex 29.7686 -36.0779 0 - vertex 29.0223 -36.3831 0 - endloop - endfacet - facet normal 0.378617 -0.925554 0 - outer loop - vertex 29.7686 -36.0779 0 - vertex 29.0223 -36.3831 -3 - vertex 29.7686 -36.0779 -3 - endloop - endfacet - facet normal 0.28314 -0.959079 0 - outer loop - vertex 29.7686 -36.0779 -3 - vertex 30.8837 -35.7486 0 - vertex 29.7686 -36.0779 0 - endloop - endfacet - facet normal 0.28314 -0.959079 0 - outer loop - vertex 30.8837 -35.7486 0 - vertex 29.7686 -36.0779 -3 - vertex 30.8837 -35.7486 -3 - endloop - endfacet - facet normal 0.670445 -0.741959 0 - outer loop - vertex 30.8837 -35.7486 -3 - vertex 31.6707 -35.0376 0 - vertex 30.8837 -35.7486 0 - endloop - endfacet - facet normal 0.670445 -0.741959 0 - outer loop - vertex 31.6707 -35.0376 0 - vertex 30.8837 -35.7486 -3 - vertex 31.6707 -35.0376 -3 - endloop - endfacet - facet normal 0.889774 -0.456402 0 - outer loop - vertex 31.6707 -35.0376 0 - vertex 32.5255 -33.371 -3 - vertex 32.5255 -33.371 0 - endloop - endfacet - facet normal 0.889774 -0.456402 0 - outer loop - vertex 32.5255 -33.371 -3 - vertex 31.6707 -35.0376 0 - vertex 31.6707 -35.0376 -3 - endloop - endfacet - facet normal 0.924374 -0.381489 0 - outer loop - vertex 32.5255 -33.371 0 - vertex 33.8444 -30.1753 -3 - vertex 33.8444 -30.1753 0 - endloop - endfacet - facet normal 0.924374 -0.381489 0 - outer loop - vertex 33.8444 -30.1753 -3 - vertex 32.5255 -33.371 0 - vertex 32.5255 -33.371 -3 - endloop - endfacet - facet normal 0.926524 -0.376236 0 - outer loop - vertex 33.8444 -30.1753 0 - vertex 35.3305 -26.5156 -3 - vertex 35.3305 -26.5156 0 - endloop - endfacet - facet normal 0.926524 -0.376236 0 - outer loop - vertex 35.3305 -26.5156 -3 - vertex 33.8444 -30.1753 0 - vertex 33.8444 -30.1753 -3 - endloop - endfacet - facet normal 0.946541 -0.322585 0 - outer loop - vertex 35.3305 -26.5156 0 - vertex 36.2859 -23.7121 -3 - vertex 36.2859 -23.7121 0 - endloop - endfacet - facet normal 0.946541 -0.322585 0 - outer loop - vertex 36.2859 -23.7121 -3 - vertex 35.3305 -26.5156 0 - vertex 35.3305 -26.5156 -3 - endloop - endfacet - facet normal 0.99651 -0.0834774 0 - outer loop - vertex 36.2859 -23.7121 0 - vertex 36.3422 -23.0402 -3 - vertex 36.3422 -23.0402 0 - endloop - endfacet - facet normal 0.99651 -0.0834774 0 - outer loop - vertex 36.3422 -23.0402 -3 - vertex 36.2859 -23.7121 0 - vertex 36.2859 -23.7121 -3 - endloop - endfacet - facet normal 0.457043 0.889445 -0 - outer loop - vertex 36.3422 -23.0402 -3 - vertex 36.104 -22.9178 0 - vertex 36.3422 -23.0402 0 - endloop - endfacet - facet normal 0.457043 0.889445 0 - outer loop - vertex 36.104 -22.9178 0 - vertex 36.3422 -23.0402 -3 - vertex 36.104 -22.9178 -3 - endloop - endfacet - facet normal -0.010303 0.999947 0 - outer loop - vertex 36.104 -22.9178 -3 - vertex 35.2001 -22.9271 0 - vertex 36.104 -22.9178 0 - endloop - endfacet - facet normal -0.010303 0.999947 0 - outer loop - vertex 35.2001 -22.9271 0 - vertex 36.104 -22.9178 -3 - vertex 35.2001 -22.9271 -3 - endloop - endfacet - facet normal 0.419058 0.907959 -0 - outer loop - vertex 35.2001 -22.9271 -3 - vertex 34.7441 -22.7166 0 - vertex 35.2001 -22.9271 0 - endloop - endfacet - facet normal 0.419058 0.907959 0 - outer loop - vertex 34.7441 -22.7166 0 - vertex 35.2001 -22.9271 -3 - vertex 34.7441 -22.7166 -3 - endloop - endfacet - facet normal 0.959742 0.280882 0 - outer loop - vertex 34.7441 -22.7166 0 - vertex 34.62 -22.2927 -3 - vertex 34.62 -22.2927 0 - endloop - endfacet - facet normal 0.959742 0.280882 0 - outer loop - vertex 34.62 -22.2927 -3 - vertex 34.7441 -22.7166 0 - vertex 34.7441 -22.7166 -3 - endloop - endfacet - facet normal 0.94057 -0.3396 0 - outer loop - vertex 34.62 -22.2927 0 - vertex 34.9156 -21.474 -3 - vertex 34.9156 -21.474 0 - endloop - endfacet - facet normal 0.94057 -0.3396 0 - outer loop - vertex 34.9156 -21.474 -3 - vertex 34.62 -22.2927 0 - vertex 34.62 -22.2927 -3 - endloop - endfacet - facet normal 0.664894 -0.746938 0 - outer loop - vertex 34.9156 -21.474 -3 - vertex 35.2187 -21.2043 0 - vertex 34.9156 -21.474 0 - endloop - endfacet - facet normal 0.664894 -0.746938 0 - outer loop - vertex 35.2187 -21.2043 0 - vertex 34.9156 -21.474 -3 - vertex 35.2187 -21.2043 -3 - endloop - endfacet - facet normal 0.282474 -0.959275 0 - outer loop - vertex 35.2187 -21.2043 -3 - vertex 35.5661 -21.102 0 - vertex 35.2187 -21.2043 0 - endloop - endfacet - facet normal 0.282474 -0.959275 0 - outer loop - vertex 35.5661 -21.102 0 - vertex 35.2187 -21.2043 -3 - vertex 35.5661 -21.102 -3 - endloop - endfacet - facet normal 0.319916 -0.947446 0 - outer loop - vertex 35.5661 -21.102 -3 - vertex 38.4798 -20.1181 0 - vertex 35.5661 -21.102 0 - endloop - endfacet - facet normal 0.319916 -0.947446 0 - outer loop - vertex 38.4798 -20.1181 0 - vertex 35.5661 -21.102 -3 - vertex 38.4798 -20.1181 -3 - endloop - endfacet - facet normal 0.306814 -0.951769 0 - outer loop - vertex 38.4798 -20.1181 -3 - vertex 41.5319 -19.1343 0 - vertex 38.4798 -20.1181 0 - endloop - endfacet - facet normal 0.306814 -0.951769 0 - outer loop - vertex 41.5319 -19.1343 0 - vertex 38.4798 -20.1181 -3 - vertex 41.5319 -19.1343 -3 - endloop - endfacet - facet normal -0.240332 -0.970691 0 - outer loop - vertex 41.5319 -19.1343 -3 - vertex 41.8934 -19.2238 0 - vertex 41.5319 -19.1343 0 - endloop - endfacet - facet normal -0.240332 -0.970691 -0 - outer loop - vertex 41.8934 -19.2238 0 - vertex 41.5319 -19.1343 -3 - vertex 41.8934 -19.2238 -3 - endloop - endfacet - facet normal -0.766739 -0.641959 0 - outer loop - vertex 42.1032 -19.4743 -3 - vertex 41.8934 -19.2238 0 - vertex 41.8934 -19.2238 -3 - endloop - endfacet - facet normal -0.766739 -0.641959 0 - outer loop - vertex 41.8934 -19.2238 0 - vertex 42.1032 -19.4743 -3 - vertex 42.1032 -19.4743 0 - endloop - endfacet - facet normal -0.995926 0.090175 0 - outer loop - vertex 42.0238 -20.3507 -3 - vertex 42.1032 -19.4743 0 - vertex 42.1032 -19.4743 -3 - endloop - endfacet - facet normal -0.995926 0.090175 0 - outer loop - vertex 42.1032 -19.4743 0 - vertex 42.0238 -20.3507 -3 - vertex 42.0238 -20.3507 0 - endloop - endfacet - facet normal -0.949137 0.314864 0 - outer loop - vertex 41.8981 -20.7296 -3 - vertex 42.0238 -20.3507 0 - vertex 42.0238 -20.3507 -3 - endloop - endfacet - facet normal -0.949137 0.314864 0 - outer loop - vertex 42.0238 -20.3507 0 - vertex 41.8981 -20.7296 -3 - vertex 41.8981 -20.7296 0 - endloop - endfacet - facet normal -0.846258 -0.532773 0 - outer loop - vertex 41.971 -20.8453 -3 - vertex 41.8981 -20.7296 0 - vertex 41.8981 -20.7296 -3 - endloop - endfacet - facet normal -0.846258 -0.532773 0 - outer loop - vertex 41.8981 -20.7296 0 - vertex 41.971 -20.8453 -3 - vertex 41.971 -20.8453 0 - endloop - endfacet - facet normal 0.512131 -0.858907 0 - outer loop - vertex 41.971 -20.8453 -3 - vertex 42.943 -20.2657 0 - vertex 41.971 -20.8453 0 - endloop - endfacet - facet normal 0.512131 -0.858907 0 - outer loop - vertex 42.943 -20.2657 0 - vertex 41.971 -20.8453 -3 - vertex 42.943 -20.2657 -3 - endloop - endfacet - facet normal 0.474768 -0.880111 0 - outer loop - vertex 42.943 -20.2657 -3 - vertex 44.5909 -19.3768 0 - vertex 42.943 -20.2657 0 - endloop - endfacet - facet normal 0.474768 -0.880111 0 - outer loop - vertex 44.5909 -19.3768 0 - vertex 42.943 -20.2657 -3 - vertex 44.5909 -19.3768 -3 - endloop - endfacet - facet normal 0.143592 -0.989637 0 - outer loop - vertex 44.5909 -19.3768 -3 - vertex 46.2623 -19.1343 0 - vertex 44.5909 -19.3768 0 - endloop - endfacet - facet normal 0.143592 -0.989637 0 - outer loop - vertex 46.2623 -19.1343 0 - vertex 44.5909 -19.3768 -3 - vertex 46.2623 -19.1343 -3 - endloop - endfacet - facet normal -0.096262 -0.995356 0 - outer loop - vertex 46.2623 -19.1343 -3 - vertex 47.2139 -19.2263 0 - vertex 46.2623 -19.1343 0 - endloop - endfacet - facet normal -0.096262 -0.995356 -0 - outer loop - vertex 47.2139 -19.2263 0 - vertex 46.2623 -19.1343 -3 - vertex 47.2139 -19.2263 -3 - endloop - endfacet - facet normal -0.989139 0.146981 0 - outer loop - vertex 5.19939 38.083 -3 - vertex 5.25321 38.4452 0 - vertex 5.25321 38.4452 -3 - endloop - endfacet - facet normal -0.989139 0.146981 0 - outer loop - vertex 5.25321 38.4452 0 - vertex 5.19939 38.083 -3 - vertex 5.19939 38.083 0 - endloop - endfacet - facet normal -0.909259 0.41623 0 - outer loop - vertex 4.72188 37.0399 -3 - vertex 5.19939 38.083 0 - vertex 5.19939 38.083 -3 - endloop - endfacet - facet normal -0.909259 0.41623 0 - outer loop - vertex 5.19939 38.083 0 - vertex 4.72188 37.0399 -3 - vertex 4.72188 37.0399 0 - endloop - endfacet - facet normal -0.923768 0.382952 0 - outer loop - vertex 4.30515 36.0346 -3 - vertex 4.72188 37.0399 0 - vertex 4.72188 37.0399 -3 - endloop - endfacet - facet normal -0.923768 0.382952 0 - outer loop - vertex 4.72188 37.0399 0 - vertex 4.30515 36.0346 -3 - vertex 4.30515 36.0346 0 - endloop - endfacet - facet normal -0.970112 0.242658 0 - outer loop - vertex 3.93589 34.5584 -3 - vertex 4.30515 36.0346 0 - vertex 4.30515 36.0346 -3 - endloop - endfacet - facet normal -0.970112 0.242658 0 - outer loop - vertex 4.30515 36.0346 0 - vertex 3.93589 34.5584 -3 - vertex 3.93589 34.5584 0 - endloop - endfacet - facet normal -0.993642 0.112587 0 - outer loop - vertex 3.57109 31.3388 -3 - vertex 3.93589 34.5584 0 - vertex 3.93589 34.5584 -3 - endloop - endfacet - facet normal -0.993642 0.112587 0 - outer loop - vertex 3.93589 34.5584 0 - vertex 3.57109 31.3388 -3 - vertex 3.57109 31.3388 0 - endloop - endfacet - facet normal -0.99786 -0.0653884 0 - outer loop - vertex 3.67763 29.7129 -3 - vertex 3.57109 31.3388 0 - vertex 3.57109 31.3388 -3 - endloop - endfacet - facet normal -0.99786 -0.0653884 0 - outer loop - vertex 3.57109 31.3388 0 - vertex 3.67763 29.7129 -3 - vertex 3.67763 29.7129 0 - endloop - endfacet - facet normal -0.893644 -0.448776 0 - outer loop - vertex 4.3138 28.4461 -3 - vertex 3.67763 29.7129 0 - vertex 3.67763 29.7129 -3 - endloop - endfacet - facet normal -0.893644 -0.448776 0 - outer loop - vertex 3.67763 29.7129 0 - vertex 4.3138 28.4461 -3 - vertex 4.3138 28.4461 0 - endloop - endfacet - facet normal -0.787428 -0.616407 0 - outer loop - vertex 5.72413 26.6445 -3 - vertex 4.3138 28.4461 0 - vertex 4.3138 28.4461 -3 - endloop - endfacet - facet normal -0.787428 -0.616407 0 - outer loop - vertex 4.3138 28.4461 0 - vertex 5.72413 26.6445 -3 - vertex 5.72413 26.6445 0 - endloop - endfacet - facet normal -0.565537 -0.824723 0 - outer loop - vertex 5.72413 26.6445 -3 - vertex 6.4022 26.1795 0 - vertex 5.72413 26.6445 0 - endloop - endfacet - facet normal -0.565537 -0.824723 -0 - outer loop - vertex 6.4022 26.1795 0 - vertex 5.72413 26.6445 -3 - vertex 6.4022 26.1795 -3 - endloop - endfacet - facet normal -0.296038 -0.955176 0 - outer loop - vertex 6.4022 26.1795 -3 - vertex 7.11433 25.9588 0 - vertex 6.4022 26.1795 0 - endloop - endfacet - facet normal -0.296038 -0.955176 -0 - outer loop - vertex 7.11433 25.9588 0 - vertex 6.4022 26.1795 -3 - vertex 7.11433 25.9588 -3 - endloop - endfacet - facet normal -0.249452 -0.968387 0 - outer loop - vertex 7.11433 25.9588 -3 - vertex 7.91411 25.7528 0 - vertex 7.11433 25.9588 0 - endloop - endfacet - facet normal -0.249452 -0.968387 -0 - outer loop - vertex 7.91411 25.7528 0 - vertex 7.11433 25.9588 -3 - vertex 7.91411 25.7528 -3 - endloop - endfacet - facet normal -0.590139 -0.807301 0 - outer loop - vertex 7.91411 25.7528 -3 - vertex 8.51885 25.3107 0 - vertex 7.91411 25.7528 0 - endloop - endfacet - facet normal -0.590139 -0.807301 -0 - outer loop - vertex 8.51885 25.3107 0 - vertex 7.91411 25.7528 -3 - vertex 8.51885 25.3107 -3 - endloop - endfacet - facet normal -0.834337 -0.551255 0 - outer loop - vertex 9.07032 24.476 -3 - vertex 8.51885 25.3107 0 - vertex 8.51885 25.3107 -3 - endloop - endfacet - facet normal -0.834337 -0.551255 0 - outer loop - vertex 8.51885 25.3107 0 - vertex 9.07032 24.476 -3 - vertex 9.07032 24.476 0 - endloop - endfacet - facet normal -0.907633 -0.419764 0 - outer loop - vertex 9.71033 23.0922 -3 - vertex 9.07032 24.476 0 - vertex 9.07032 24.476 -3 - endloop - endfacet - facet normal -0.907633 -0.419764 0 - outer loop - vertex 9.07032 24.476 0 - vertex 9.71033 23.0922 -3 - vertex 9.71033 23.0922 0 - endloop - endfacet - facet normal -0.895482 -0.445097 0 - outer loop - vertex 10.9729 20.5521 -3 - vertex 9.71033 23.0922 0 - vertex 9.71033 23.0922 -3 - endloop - endfacet - facet normal -0.895482 -0.445097 0 - outer loop - vertex 9.71033 23.0922 0 - vertex 10.9729 20.5521 -3 - vertex 10.9729 20.5521 0 - endloop - endfacet - facet normal -0.741992 -0.670408 0 - outer loop - vertex 12.6982 18.6425 -3 - vertex 10.9729 20.5521 0 - vertex 10.9729 20.5521 -3 - endloop - endfacet - facet normal -0.741992 -0.670408 0 - outer loop - vertex 10.9729 20.5521 0 - vertex 12.6982 18.6425 -3 - vertex 12.6982 18.6425 0 - endloop - endfacet - facet normal -0.66692 -0.745129 0 - outer loop - vertex 12.6982 18.6425 -3 - vertex 13.99 17.4864 0 - vertex 12.6982 18.6425 0 - endloop - endfacet - facet normal -0.66692 -0.745129 -0 - outer loop - vertex 13.99 17.4864 0 - vertex 12.6982 18.6425 -3 - vertex 13.99 17.4864 -3 - endloop - endfacet - facet normal -0.579406 -0.815039 0 - outer loop - vertex 13.99 17.4864 -3 - vertex 15.2045 16.623 0 - vertex 13.99 17.4864 0 - endloop - endfacet - facet normal -0.579406 -0.815039 -0 - outer loop - vertex 15.2045 16.623 0 - vertex 13.99 17.4864 -3 - vertex 15.2045 16.623 -3 - endloop - endfacet - facet normal -0.462357 -0.886694 0 - outer loop - vertex 15.2045 16.623 -3 - vertex 16.5954 15.8977 0 - vertex 15.2045 16.623 0 - endloop - endfacet - facet normal -0.462357 -0.886694 -0 - outer loop - vertex 16.5954 15.8977 0 - vertex 15.2045 16.623 -3 - vertex 16.5954 15.8977 -3 - endloop - endfacet - facet normal -0.377272 -0.926103 0 - outer loop - vertex 16.5954 15.8977 -3 - vertex 18.4164 15.1559 0 - vertex 16.5954 15.8977 0 - endloop - endfacet - facet normal -0.377272 -0.926103 -0 - outer loop - vertex 18.4164 15.1559 0 - vertex 16.5954 15.8977 -3 - vertex 18.4164 15.1559 -3 - endloop - endfacet - facet normal -0.305414 -0.95222 0 - outer loop - vertex 18.4164 15.1559 -3 - vertex 20.0668 14.6265 0 - vertex 18.4164 15.1559 0 - endloop - endfacet - facet normal -0.305414 -0.95222 -0 - outer loop - vertex 20.0668 14.6265 0 - vertex 18.4164 15.1559 -3 - vertex 20.0668 14.6265 -3 - endloop - endfacet - facet normal 0.198377 -0.980126 0 - outer loop - vertex 20.0668 14.6265 -3 - vertex 21.1653 14.8489 0 - vertex 20.0668 14.6265 0 - endloop - endfacet - facet normal 0.198377 -0.980126 0 - outer loop - vertex 21.1653 14.8489 0 - vertex 20.0668 14.6265 -3 - vertex 21.1653 14.8489 -3 - endloop - endfacet - facet normal 0.403705 -0.914889 0 - outer loop - vertex 21.1653 14.8489 -3 - vertex 23.3802 15.8262 0 - vertex 21.1653 14.8489 0 - endloop - endfacet - facet normal 0.403705 -0.914889 0 - outer loop - vertex 23.3802 15.8262 0 - vertex 21.1653 14.8489 -3 - vertex 23.3802 15.8262 -3 - endloop - endfacet - facet normal 0.513821 -0.857898 0 - outer loop - vertex 23.3802 15.8262 -3 - vertex 24.7931 16.6725 0 - vertex 23.3802 15.8262 0 - endloop - endfacet - facet normal 0.513821 -0.857898 0 - outer loop - vertex 24.7931 16.6725 0 - vertex 23.3802 15.8262 -3 - vertex 24.7931 16.6725 -3 - endloop - endfacet - facet normal 0.988574 0.150735 0 - outer loop - vertex 24.7931 16.6725 0 - vertex 24.7174 17.1695 -3 - vertex 24.7174 17.1695 0 - endloop - endfacet - facet normal 0.988574 0.150735 0 - outer loop - vertex 24.7174 17.1695 -3 - vertex 24.7931 16.6725 0 - vertex 24.7931 16.6725 -3 - endloop - endfacet - facet normal 0.409608 0.912261 -0 - outer loop - vertex 24.7174 17.1695 -3 - vertex 24.1542 17.4223 0 - vertex 24.7174 17.1695 0 - endloop - endfacet - facet normal 0.409608 0.912261 0 - outer loop - vertex 24.1542 17.4223 0 - vertex 24.7174 17.1695 -3 - vertex 24.1542 17.4223 -3 - endloop - endfacet - facet normal 0.049214 0.998788 -0 - outer loop - vertex 24.1542 17.4223 -3 - vertex 22.547 17.5015 0 - vertex 24.1542 17.4223 0 - endloop - endfacet - facet normal 0.049214 0.998788 0 - outer loop - vertex 22.547 17.5015 0 - vertex 24.1542 17.4223 -3 - vertex 22.547 17.5015 -3 - endloop - endfacet - facet normal 0.0234404 0.999725 -0 - outer loop - vertex 22.547 17.5015 -3 - vertex 20.2159 17.5562 0 - vertex 22.547 17.5015 0 - endloop - endfacet - facet normal 0.0234404 0.999725 0 - outer loop - vertex 20.2159 17.5562 0 - vertex 22.547 17.5015 -3 - vertex 20.2159 17.5562 -3 - endloop - endfacet - facet normal 0.471751 0.881732 -0 - outer loop - vertex 20.2159 17.5562 -3 - vertex 19.8437 17.7553 0 - vertex 20.2159 17.5562 0 - endloop - endfacet - facet normal 0.471751 0.881732 0 - outer loop - vertex 19.8437 17.7553 0 - vertex 20.2159 17.5562 -3 - vertex 19.8437 17.7553 -3 - endloop - endfacet - facet normal 0.853692 0.520778 0 - outer loop - vertex 19.8437 17.7553 0 - vertex 19.5351 18.2611 -3 - vertex 19.5351 18.2611 0 - endloop - endfacet - facet normal 0.853692 0.520778 0 - outer loop - vertex 19.5351 18.2611 -3 - vertex 19.8437 17.7553 0 - vertex 19.8437 17.7553 -3 - endloop - endfacet - facet normal 0.975799 0.21867 0 - outer loop - vertex 19.5351 18.2611 0 - vertex 19.0948 20.2262 -3 - vertex 19.0948 20.2262 0 - endloop - endfacet - facet normal 0.975799 0.21867 0 - outer loop - vertex 19.0948 20.2262 -3 - vertex 19.5351 18.2611 0 - vertex 19.5351 18.2611 -3 - endloop - endfacet - facet normal 0.973279 0.229626 0 - outer loop - vertex 19.0948 20.2262 0 - vertex 18.6529 22.0992 -3 - vertex 18.6529 22.0992 0 - endloop - endfacet - facet normal 0.973279 0.229626 0 - outer loop - vertex 18.6529 22.0992 -3 - vertex 19.0948 20.2262 0 - vertex 19.0948 20.2262 -3 - endloop - endfacet - facet normal 0.439505 0.89824 -0 - outer loop - vertex 18.6529 22.0992 -3 - vertex 17.155 22.8321 0 - vertex 18.6529 22.0992 0 - endloop - endfacet - facet normal 0.439505 0.89824 0 - outer loop - vertex 17.155 22.8321 0 - vertex 18.6529 22.0992 -3 - vertex 17.155 22.8321 -3 - endloop - endfacet - facet normal 0.375086 0.92699 -0 - outer loop - vertex 17.155 22.8321 -3 - vertex 15.5055 23.4995 0 - vertex 17.155 22.8321 0 - endloop - endfacet - facet normal 0.375086 0.92699 0 - outer loop - vertex 15.5055 23.4995 0 - vertex 17.155 22.8321 -3 - vertex 15.5055 23.4995 -3 - endloop - endfacet - facet normal 0.401684 0.915778 -0 - outer loop - vertex 15.5055 23.4995 -3 - vertex 14.0164 24.1527 0 - vertex 15.5055 23.4995 0 - endloop - endfacet - facet normal 0.401684 0.915778 0 - outer loop - vertex 14.0164 24.1527 0 - vertex 15.5055 23.4995 -3 - vertex 14.0164 24.1527 -3 - endloop - endfacet - facet normal 0.516309 0.856402 -0 - outer loop - vertex 14.0164 24.1527 -3 - vertex 13.0733 24.7212 0 - vertex 14.0164 24.1527 0 - endloop - endfacet - facet normal 0.516309 0.856402 0 - outer loop - vertex 13.0733 24.7212 0 - vertex 14.0164 24.1527 -3 - vertex 13.0733 24.7212 -3 - endloop - endfacet - facet normal 0.678054 0.735012 -0 - outer loop - vertex 13.0733 24.7212 -3 - vertex 12.1975 25.5292 0 - vertex 13.0733 24.7212 0 - endloop - endfacet - facet normal 0.678054 0.735012 0 - outer loop - vertex 12.1975 25.5292 0 - vertex 13.0733 24.7212 -3 - vertex 12.1975 25.5292 -3 - endloop - endfacet - facet normal 0.798708 0.601719 0 - outer loop - vertex 12.1975 25.5292 0 - vertex 11.5037 26.4501 -3 - vertex 11.5037 26.4501 0 - endloop - endfacet - facet normal 0.798708 0.601719 0 - outer loop - vertex 11.5037 26.4501 -3 - vertex 12.1975 25.5292 0 - vertex 12.1975 25.5292 -3 - endloop - endfacet - facet normal 0.916155 0.400824 0 - outer loop - vertex 11.5037 26.4501 0 - vertex 11.1066 27.3577 -3 - vertex 11.1066 27.3577 0 - endloop - endfacet - facet normal 0.916155 0.400824 0 - outer loop - vertex 11.1066 27.3577 -3 - vertex 11.5037 26.4501 0 - vertex 11.5037 26.4501 -3 - endloop - endfacet - facet normal 0.997988 0.0634007 0 - outer loop - vertex 11.1066 27.3577 0 - vertex 11.0411 28.3898 -3 - vertex 11.0411 28.3898 0 - endloop - endfacet - facet normal 0.997988 0.0634007 0 - outer loop - vertex 11.0411 28.3898 -3 - vertex 11.1066 27.3577 0 - vertex 11.1066 27.3577 -3 - endloop - endfacet - facet normal 0.985212 -0.171342 0 - outer loop - vertex 11.0411 28.3898 0 - vertex 11.2319 29.4873 -3 - vertex 11.2319 29.4873 0 - endloop - endfacet - facet normal 0.985212 -0.171342 0 - outer loop - vertex 11.2319 29.4873 -3 - vertex 11.0411 28.3898 0 - vertex 11.0411 28.3898 -3 - endloop - endfacet - facet normal 0.92237 -0.386308 0 - outer loop - vertex 11.2319 29.4873 0 - vertex 11.5971 30.3591 -3 - vertex 11.5971 30.3591 0 - endloop - endfacet - facet normal 0.92237 -0.386308 0 - outer loop - vertex 11.5971 30.3591 -3 - vertex 11.2319 29.4873 0 - vertex 11.2319 29.4873 -3 - endloop - endfacet - facet normal 0.613523 -0.789677 0 - outer loop - vertex 11.5971 30.3591 -3 - vertex 12.0544 30.7144 0 - vertex 11.5971 30.3591 0 - endloop - endfacet - facet normal 0.613523 -0.789677 0 - outer loop - vertex 12.0544 30.7144 0 - vertex 11.5971 30.3591 -3 - vertex 12.0544 30.7144 -3 - endloop - endfacet - facet normal -0.632498 -0.774562 0 - outer loop - vertex 12.0544 30.7144 -3 - vertex 12.2907 30.5214 0 - vertex 12.0544 30.7144 0 - endloop - endfacet - facet normal -0.632498 -0.774562 -0 - outer loop - vertex 12.2907 30.5214 0 - vertex 12.0544 30.7144 -3 - vertex 12.2907 30.5214 -3 - endloop - endfacet - facet normal -0.906769 0.421628 0 - outer loop - vertex 12.0187 29.9363 -3 - vertex 12.2907 30.5214 0 - vertex 12.2907 30.5214 -3 - endloop - endfacet - facet normal -0.906769 0.421628 0 - outer loop - vertex 12.2907 30.5214 0 - vertex 12.0187 29.9363 -3 - vertex 12.0187 29.9363 0 - endloop - endfacet - facet normal -0.946212 0.323547 0 - outer loop - vertex 11.8088 29.3224 -3 - vertex 12.0187 29.9363 0 - vertex 12.0187 29.9363 -3 - endloop - endfacet - facet normal -0.946212 0.323547 0 - outer loop - vertex 12.0187 29.9363 0 - vertex 11.8088 29.3224 -3 - vertex 11.8088 29.3224 0 - endloop - endfacet - facet normal -0.996661 0.0816499 0 - outer loop - vertex 11.7374 28.4518 -3 - vertex 11.8088 29.3224 0 - vertex 11.8088 29.3224 -3 - endloop - endfacet - facet normal -0.996661 0.0816499 0 - outer loop - vertex 11.8088 29.3224 0 - vertex 11.7374 28.4518 -3 - vertex 11.7374 28.4518 0 - endloop - endfacet - facet normal -0.997288 -0.0735994 0 - outer loop - vertex 11.8052 27.5343 -3 - vertex 11.7374 28.4518 0 - vertex 11.7374 28.4518 -3 - endloop - endfacet - facet normal -0.997288 -0.0735994 0 - outer loop - vertex 11.7374 28.4518 0 - vertex 11.8052 27.5343 -3 - vertex 11.8052 27.5343 0 - endloop - endfacet - facet normal -0.964338 -0.264675 0 - outer loop - vertex 12.0123 26.7794 -3 - vertex 11.8052 27.5343 0 - vertex 11.8052 27.5343 -3 - endloop - endfacet - facet normal -0.964338 -0.264675 0 - outer loop - vertex 11.8052 27.5343 0 - vertex 12.0123 26.7794 -3 - vertex 12.0123 26.7794 0 - endloop - endfacet - facet normal -0.835126 -0.550059 0 - outer loop - vertex 12.5486 25.9653 -3 - vertex 12.0123 26.7794 0 - vertex 12.0123 26.7794 -3 - endloop - endfacet - facet normal -0.835126 -0.550059 0 - outer loop - vertex 12.0123 26.7794 0 - vertex 12.5486 25.9653 -3 - vertex 12.5486 25.9653 0 - endloop - endfacet - facet normal -0.606684 -0.794943 0 - outer loop - vertex 12.5486 25.9653 -3 - vertex 13.4969 25.2416 0 - vertex 12.5486 25.9653 0 - endloop - endfacet - facet normal -0.606684 -0.794943 -0 - outer loop - vertex 13.4969 25.2416 0 - vertex 12.5486 25.9653 -3 - vertex 13.4969 25.2416 -3 - endloop - endfacet - facet normal -0.436683 -0.899615 0 - outer loop - vertex 13.4969 25.2416 -3 - vertex 15.1211 24.4531 0 - vertex 13.4969 25.2416 0 - endloop - endfacet - facet normal -0.436683 -0.899615 -0 - outer loop - vertex 15.1211 24.4531 0 - vertex 13.4969 25.2416 -3 - vertex 15.1211 24.4531 -3 - endloop - endfacet - facet normal -0.365946 -0.930636 0 - outer loop - vertex 15.1211 24.4531 -3 - vertex 17.6852 23.4449 0 - vertex 15.1211 24.4531 0 - endloop - endfacet - facet normal -0.365946 -0.930636 -0 - outer loop - vertex 17.6852 23.4449 0 - vertex 15.1211 24.4531 -3 - vertex 17.6852 23.4449 -3 - endloop - endfacet - facet normal -0.54663 -0.837374 0 - outer loop - vertex 17.6852 23.4449 -3 - vertex 18.9185 22.6398 0 - vertex 17.6852 23.4449 0 - endloop - endfacet - facet normal -0.54663 -0.837374 -0 - outer loop - vertex 18.9185 22.6398 0 - vertex 17.6852 23.4449 -3 - vertex 18.9185 22.6398 -3 - endloop - endfacet - facet normal -0.808126 -0.58901 0 - outer loop - vertex 19.4421 21.9215 -3 - vertex 18.9185 22.6398 0 - vertex 18.9185 22.6398 -3 - endloop - endfacet - facet normal -0.808126 -0.58901 0 - outer loop - vertex 18.9185 22.6398 0 - vertex 19.4421 21.9215 -3 - vertex 19.4421 21.9215 0 - endloop - endfacet - facet normal -0.985617 -0.168992 0 - outer loop - vertex 19.6596 20.6529 -3 - vertex 19.4421 21.9215 0 - vertex 19.4421 21.9215 -3 - endloop - endfacet - facet normal -0.985617 -0.168992 0 - outer loop - vertex 19.4421 21.9215 0 - vertex 19.6596 20.6529 -3 - vertex 19.6596 20.6529 0 - endloop - endfacet - facet normal -0.991076 -0.133297 0 - outer loop - vertex 19.8405 19.3078 -3 - vertex 19.6596 20.6529 0 - vertex 19.6596 20.6529 -3 - endloop - endfacet - facet normal -0.991076 -0.133297 0 - outer loop - vertex 19.6596 20.6529 0 - vertex 19.8405 19.3078 -3 - vertex 19.8405 19.3078 0 - endloop - endfacet - facet normal -0.89371 -0.448645 0 - outer loop - vertex 20.2006 18.5903 -3 - vertex 19.8405 19.3078 0 - vertex 19.8405 19.3078 -3 - endloop - endfacet - facet normal -0.89371 -0.448645 0 - outer loop - vertex 19.8405 19.3078 0 - vertex 20.2006 18.5903 -3 - vertex 20.2006 18.5903 0 - endloop - endfacet - facet normal -0.353154 -0.935565 0 - outer loop - vertex 20.2006 18.5903 -3 - vertex 20.9591 18.304 0 - vertex 20.2006 18.5903 0 - endloop - endfacet - facet normal -0.353154 -0.935565 -0 - outer loop - vertex 20.9591 18.304 0 - vertex 20.2006 18.5903 -3 - vertex 20.9591 18.304 -3 - endloop - endfacet - facet normal -0.0375868 -0.999293 0 - outer loop - vertex 20.9591 18.304 -3 - vertex 22.335 18.2522 0 - vertex 20.9591 18.304 0 - endloop - endfacet - facet normal -0.0375868 -0.999293 -0 - outer loop - vertex 22.335 18.2522 0 - vertex 20.9591 18.304 -3 - vertex 22.335 18.2522 -3 - endloop - endfacet - facet normal -0.0902677 -0.995918 0 - outer loop - vertex 22.335 18.2522 -3 - vertex 24.5942 18.0475 0 - vertex 22.335 18.2522 0 - endloop - endfacet - facet normal -0.0902677 -0.995918 -0 - outer loop - vertex 24.5942 18.0475 0 - vertex 22.335 18.2522 -3 - vertex 24.5942 18.0475 -3 - endloop - endfacet - facet normal -0.485131 -0.874442 0 - outer loop - vertex 24.5942 18.0475 -3 - vertex 25.1513 17.7384 0 - vertex 24.5942 18.0475 0 - endloop - endfacet - facet normal -0.485131 -0.874442 -0 - outer loop - vertex 25.1513 17.7384 0 - vertex 24.5942 18.0475 -3 - vertex 25.1513 17.7384 -3 - endloop - endfacet - facet normal -0.837387 -0.54661 0 - outer loop - vertex 25.4738 17.2443 -3 - vertex 25.1513 17.7384 0 - vertex 25.1513 17.7384 -3 - endloop - endfacet - facet normal -0.837387 -0.54661 0 - outer loop - vertex 25.1513 17.7384 0 - vertex 25.4738 17.2443 -3 - vertex 25.4738 17.2443 0 - endloop - endfacet - facet normal -0.875441 -0.483325 0 - outer loop - vertex 25.704 16.8274 -3 - vertex 25.4738 17.2443 0 - vertex 25.4738 17.2443 -3 - endloop - endfacet - facet normal -0.875441 -0.483325 0 - outer loop - vertex 25.4738 17.2443 0 - vertex 25.704 16.8274 -3 - vertex 25.704 16.8274 0 - endloop - endfacet - facet normal -0.34429 -0.938863 0 - outer loop - vertex 25.704 16.8274 -3 - vertex 25.8979 16.7563 0 - vertex 25.704 16.8274 0 - endloop - endfacet - facet normal -0.34429 -0.938863 -0 - outer loop - vertex 25.8979 16.7563 0 - vertex 25.704 16.8274 -3 - vertex 25.8979 16.7563 -3 - endloop - endfacet - facet normal 0.976922 -0.213594 0 - outer loop - vertex 25.8979 16.7563 0 - vertex 26.0816 17.5963 -3 - vertex 26.0816 17.5963 0 - endloop - endfacet - facet normal 0.976922 -0.213594 0 - outer loop - vertex 26.0816 17.5963 -3 - vertex 25.8979 16.7563 0 - vertex 25.8979 16.7563 -3 - endloop - endfacet - facet normal 0.991357 0.131195 0 - outer loop - vertex 26.0816 17.5963 0 - vertex 25.9892 18.2943 -3 - vertex 25.9892 18.2943 0 - endloop - endfacet - facet normal 0.991357 0.131195 0 - outer loop - vertex 25.9892 18.2943 -3 - vertex 26.0816 17.5963 0 - vertex 26.0816 17.5963 -3 - endloop - endfacet - facet normal 0.907716 0.419585 0 - outer loop - vertex 25.9892 18.2943 0 - vertex 25.7331 18.8483 -3 - vertex 25.7331 18.8483 0 - endloop - endfacet - facet normal 0.907716 0.419585 0 - outer loop - vertex 25.7331 18.8483 -3 - vertex 25.9892 18.2943 0 - vertex 25.9892 18.2943 -3 - endloop - endfacet - facet normal 0.685144 0.728407 -0 - outer loop - vertex 25.7331 18.8483 -3 - vertex 25.3447 19.2137 0 - vertex 25.7331 18.8483 0 - endloop - endfacet - facet normal 0.685144 0.728407 0 - outer loop - vertex 25.3447 19.2137 0 - vertex 25.7331 18.8483 -3 - vertex 25.3447 19.2137 -3 - endloop - endfacet - facet normal 0.260028 0.965601 -0 - outer loop - vertex 25.3447 19.2137 -3 - vertex 24.8554 19.3454 0 - vertex 25.3447 19.2137 0 - endloop - endfacet - facet normal 0.260028 0.965601 0 - outer loop - vertex 24.8554 19.3454 0 - vertex 25.3447 19.2137 -3 - vertex 24.8554 19.3454 -3 - endloop - endfacet - facet normal 0.225805 0.974172 -0 - outer loop - vertex 24.8554 19.3454 -3 - vertex 23.3909 19.6849 0 - vertex 24.8554 19.3454 0 - endloop - endfacet - facet normal 0.225805 0.974172 0 - outer loop - vertex 23.3909 19.6849 0 - vertex 24.8554 19.3454 -3 - vertex 23.3909 19.6849 -3 - endloop - endfacet - facet normal 0.432873 0.901455 -0 - outer loop - vertex 23.3909 19.6849 -3 - vertex 22.6368 20.047 0 - vertex 23.3909 19.6849 0 - endloop - endfacet - facet normal 0.432873 0.901455 0 - outer loop - vertex 22.6368 20.047 0 - vertex 23.3909 19.6849 -3 - vertex 22.6368 20.047 -3 - endloop - endfacet - facet normal 0.698531 0.71558 -0 - outer loop - vertex 22.6368 20.047 -3 - vertex 22.0911 20.5797 0 - vertex 22.6368 20.047 0 - endloop - endfacet - facet normal 0.698531 0.71558 0 - outer loop - vertex 22.0911 20.5797 0 - vertex 22.6368 20.047 -3 - vertex 22.0911 20.5797 -3 - endloop - endfacet - facet normal 0.897086 0.441856 0 - outer loop - vertex 22.0911 20.5797 0 - vertex 21.7245 21.3239 -3 - vertex 21.7245 21.3239 0 - endloop - endfacet - facet normal 0.897086 0.441856 0 - outer loop - vertex 21.7245 21.3239 -3 - vertex 22.0911 20.5797 0 - vertex 22.0911 20.5797 -3 - endloop - endfacet - facet normal 0.977198 0.212332 0 - outer loop - vertex 21.7245 21.3239 0 - vertex 21.508 22.3204 -3 - vertex 21.508 22.3204 0 - endloop - endfacet - facet normal 0.977198 0.212332 0 - outer loop - vertex 21.508 22.3204 -3 - vertex 21.7245 21.3239 0 - vertex 21.7245 21.3239 -3 - endloop - endfacet - facet normal 0.966755 0.255705 0 - outer loop - vertex 21.508 22.3204 0 - vertex 21.2518 23.2891 -3 - vertex 21.2518 23.2891 0 - endloop - endfacet - facet normal 0.966755 0.255705 0 - outer loop - vertex 21.2518 23.2891 -3 - vertex 21.508 22.3204 0 - vertex 21.508 22.3204 -3 - endloop - endfacet - facet normal 0.849732 0.527214 0 - outer loop - vertex 21.2518 23.2891 0 - vertex 20.762 24.0784 -3 - vertex 20.762 24.0784 0 - endloop - endfacet - facet normal 0.849732 0.527214 0 - outer loop - vertex 20.762 24.0784 -3 - vertex 21.2518 23.2891 0 - vertex 21.2518 23.2891 -3 - endloop - endfacet - facet normal 0.645661 0.763624 -0 - outer loop - vertex 20.762 24.0784 -3 - vertex 20.0338 24.6942 0 - vertex 20.762 24.0784 0 - endloop - endfacet - facet normal 0.645661 0.763624 0 - outer loop - vertex 20.0338 24.6942 0 - vertex 20.762 24.0784 -3 - vertex 20.0338 24.6942 -3 - endloop - endfacet - facet normal 0.418642 0.908151 -0 - outer loop - vertex 20.0338 24.6942 -3 - vertex 19.062 25.1422 0 - vertex 20.0338 24.6942 0 - endloop - endfacet - facet normal 0.418642 0.908151 0 - outer loop - vertex 19.062 25.1422 0 - vertex 20.0338 24.6942 -3 - vertex 19.062 25.1422 -3 - endloop - endfacet - facet normal 0.419948 0.907548 -0 - outer loop - vertex 19.062 25.1422 -3 - vertex 17.2513 25.98 0 - vertex 19.062 25.1422 0 - endloop - endfacet - facet normal 0.419948 0.907548 0 - outer loop - vertex 17.2513 25.98 0 - vertex 19.062 25.1422 -3 - vertex 17.2513 25.98 -3 - endloop - endfacet - facet normal 0.649834 0.760076 -0 - outer loop - vertex 17.2513 25.98 -3 - vertex 15.7223 27.2873 0 - vertex 17.2513 25.98 0 - endloop - endfacet - facet normal 0.649834 0.760076 0 - outer loop - vertex 15.7223 27.2873 0 - vertex 17.2513 25.98 -3 - vertex 15.7223 27.2873 -3 - endloop - endfacet - facet normal 0.802285 0.596942 0 - outer loop - vertex 15.7223 27.2873 0 - vertex 15.122 28.0941 -3 - vertex 15.122 28.0941 0 - endloop - endfacet - facet normal 0.802285 0.596942 0 - outer loop - vertex 15.122 28.0941 -3 - vertex 15.7223 27.2873 0 - vertex 15.7223 27.2873 -3 - endloop - endfacet - facet normal 0.997794 0.066389 0 - outer loop - vertex 15.122 28.0941 0 - vertex 15.0577 29.0611 -3 - vertex 15.0577 29.0611 0 - endloop - endfacet - facet normal 0.997794 0.066389 0 - outer loop - vertex 15.0577 29.0611 -3 - vertex 15.122 28.0941 0 - vertex 15.122 28.0941 -3 - endloop - endfacet - facet normal 0.991125 -0.132935 0 - outer loop - vertex 15.0577 29.0611 0 - vertex 15.1584 29.8123 -3 - vertex 15.1584 29.8123 0 - endloop - endfacet - facet normal 0.991125 -0.132935 0 - outer loop - vertex 15.1584 29.8123 -3 - vertex 15.0577 29.0611 0 - vertex 15.0577 29.0611 -3 - endloop - endfacet - facet normal 0.868998 -0.494816 0 - outer loop - vertex 15.1584 29.8123 0 - vertex 15.3134 30.0845 -3 - vertex 15.3134 30.0845 0 - endloop - endfacet - facet normal 0.868998 -0.494816 0 - outer loop - vertex 15.3134 30.0845 -3 - vertex 15.1584 29.8123 0 - vertex 15.1584 29.8123 -3 - endloop - endfacet - facet normal -0.793235 -0.608916 0 - outer loop - vertex 15.4783 29.8698 -3 - vertex 15.3134 30.0845 0 - vertex 15.3134 30.0845 -3 - endloop - endfacet - facet normal -0.793235 -0.608916 0 - outer loop - vertex 15.3134 30.0845 0 - vertex 15.4783 29.8698 -3 - vertex 15.4783 29.8698 0 - endloop - endfacet - facet normal -0.983592 -0.18041 0 - outer loop - vertex 15.6084 29.1601 -3 - vertex 15.4783 29.8698 0 - vertex 15.4783 29.8698 -3 - endloop - endfacet - facet normal -0.983592 -0.18041 0 - outer loop - vertex 15.4783 29.8698 0 - vertex 15.6084 29.1601 -3 - vertex 15.6084 29.1601 0 - endloop - endfacet - facet normal -0.973498 -0.228694 0 - outer loop - vertex 15.808 28.3106 -3 - vertex 15.6084 29.1601 0 - vertex 15.6084 29.1601 -3 - endloop - endfacet - facet normal -0.973498 -0.228694 0 - outer loop - vertex 15.6084 29.1601 0 - vertex 15.808 28.3106 -3 - vertex 15.808 28.3106 0 - endloop - endfacet - facet normal -0.833811 -0.55205 0 - outer loop - vertex 16.2688 27.6146 -3 - vertex 15.808 28.3106 0 - vertex 15.808 28.3106 -3 - endloop - endfacet - facet normal -0.833811 -0.55205 0 - outer loop - vertex 15.808 28.3106 0 - vertex 16.2688 27.6146 -3 - vertex 16.2688 27.6146 0 - endloop - endfacet - facet normal -0.616484 -0.787368 0 - outer loop - vertex 16.2688 27.6146 -3 - vertex 17.0772 26.9817 0 - vertex 16.2688 27.6146 0 - endloop - endfacet - facet normal -0.616484 -0.787368 -0 - outer loop - vertex 17.0772 26.9817 0 - vertex 16.2688 27.6146 -3 - vertex 17.0772 26.9817 -3 - endloop - endfacet - facet normal -0.469274 -0.883053 0 - outer loop - vertex 17.0772 26.9817 -3 - vertex 18.3193 26.3216 0 - vertex 17.0772 26.9817 0 - endloop - endfacet - facet normal -0.469274 -0.883053 -0 - outer loop - vertex 18.3193 26.3216 0 - vertex 17.0772 26.9817 -3 - vertex 18.3193 26.3216 -3 - endloop - endfacet - facet normal -0.453671 -0.891169 0 - outer loop - vertex 18.3193 26.3216 -3 - vertex 20.1819 25.3734 0 - vertex 18.3193 26.3216 0 - endloop - endfacet - facet normal -0.453671 -0.891169 -0 - outer loop - vertex 20.1819 25.3734 0 - vertex 18.3193 26.3216 -3 - vertex 20.1819 25.3734 -3 - endloop - endfacet - facet normal -0.592966 -0.805227 0 - outer loop - vertex 20.1819 25.3734 -3 - vertex 21.2755 24.568 0 - vertex 20.1819 25.3734 0 - endloop - endfacet - facet normal -0.592966 -0.805227 -0 - outer loop - vertex 21.2755 24.568 0 - vertex 20.1819 25.3734 -3 - vertex 21.2755 24.568 -3 - endloop - endfacet - facet normal -0.85116 -0.524906 0 - outer loop - vertex 21.8319 23.6658 -3 - vertex 21.2755 24.568 0 - vertex 21.2755 24.568 -3 - endloop - endfacet - facet normal -0.85116 -0.524906 0 - outer loop - vertex 21.2755 24.568 0 - vertex 21.8319 23.6658 -3 - vertex 21.8319 23.6658 0 - endloop - endfacet - facet normal -0.980126 -0.198375 0 - outer loop - vertex 22.0827 22.427 -3 - vertex 21.8319 23.6658 0 - vertex 21.8319 23.6658 -3 - endloop - endfacet - facet normal -0.980126 -0.198375 0 - outer loop - vertex 21.8319 23.6658 0 - vertex 22.0827 22.427 -3 - vertex 22.0827 22.427 0 - endloop - endfacet - facet normal -0.975671 -0.219241 0 - outer loop - vertex 22.2698 21.5943 -3 - vertex 22.0827 22.427 0 - vertex 22.0827 22.427 -3 - endloop - endfacet - facet normal -0.975671 -0.219241 0 - outer loop - vertex 22.0827 22.427 0 - vertex 22.2698 21.5943 -3 - vertex 22.2698 21.5943 0 - endloop - endfacet - facet normal -0.867972 -0.496613 0 - outer loop - vertex 22.6169 20.9877 -3 - vertex 22.2698 21.5943 0 - vertex 22.2698 21.5943 -3 - endloop - endfacet - facet normal -0.867972 -0.496613 0 - outer loop - vertex 22.2698 21.5943 0 - vertex 22.6169 20.9877 -3 - vertex 22.6169 20.9877 0 - endloop - endfacet - facet normal -0.60611 -0.795381 0 - outer loop - vertex 22.6169 20.9877 -3 - vertex 23.1387 20.59 0 - vertex 22.6169 20.9877 0 - endloop - endfacet - facet normal -0.60611 -0.795381 -0 - outer loop - vertex 23.1387 20.59 0 - vertex 22.6169 20.9877 -3 - vertex 23.1387 20.59 -3 - endloop - endfacet - facet normal -0.277742 -0.960656 0 - outer loop - vertex 23.1387 20.59 -3 - vertex 23.8499 20.3844 0 - vertex 23.1387 20.59 0 - endloop - endfacet - facet normal -0.277742 -0.960656 -0 - outer loop - vertex 23.8499 20.3844 0 - vertex 23.1387 20.59 -3 - vertex 23.8499 20.3844 -3 - endloop - endfacet - facet normal -0.253903 -0.96723 0 - outer loop - vertex 23.8499 20.3844 -3 - vertex 25.0752 20.0627 0 - vertex 23.8499 20.3844 0 - endloop - endfacet - facet normal -0.253903 -0.96723 -0 - outer loop - vertex 25.0752 20.0627 0 - vertex 23.8499 20.3844 -3 - vertex 25.0752 20.0627 -3 - endloop - endfacet - facet normal -0.555295 -0.831654 0 - outer loop - vertex 25.0752 20.0627 -3 - vertex 25.9424 19.4837 0 - vertex 25.0752 20.0627 0 - endloop - endfacet - facet normal -0.555295 -0.831654 -0 - outer loop - vertex 25.9424 19.4837 0 - vertex 25.0752 20.0627 -3 - vertex 25.9424 19.4837 -3 - endloop - endfacet - facet normal -0.850459 -0.526041 0 - outer loop - vertex 26.4742 18.624 -3 - vertex 25.9424 19.4837 0 - vertex 25.9424 19.4837 -3 - endloop - endfacet - facet normal -0.850459 -0.526041 0 - outer loop - vertex 25.9424 19.4837 0 - vertex 26.4742 18.624 -3 - vertex 26.4742 18.624 0 - endloop - endfacet - facet normal -0.982731 -0.185042 0 - outer loop - vertex 26.6933 17.4601 -3 - vertex 26.4742 18.624 0 - vertex 26.4742 18.624 -3 - endloop - endfacet - facet normal -0.982731 -0.185042 0 - outer loop - vertex 26.4742 18.624 0 - vertex 26.6933 17.4601 -3 - vertex 26.6933 17.4601 0 - endloop - endfacet - facet normal -0.95811 -0.286401 0 - outer loop - vertex 27.1755 15.8473 -3 - vertex 26.6933 17.4601 0 - vertex 26.6933 17.4601 -3 - endloop - endfacet - facet normal -0.95811 -0.286401 0 - outer loop - vertex 26.6933 17.4601 0 - vertex 27.1755 15.8473 -3 - vertex 27.1755 15.8473 0 - endloop - endfacet - facet normal -0.948381 -0.317134 0 - outer loop - vertex 27.5422 14.7505 -3 - vertex 27.1755 15.8473 0 - vertex 27.1755 15.8473 -3 - endloop - endfacet - facet normal -0.948381 -0.317134 0 - outer loop - vertex 27.1755 15.8473 0 - vertex 27.5422 14.7505 -3 - vertex 27.5422 14.7505 0 - endloop - endfacet - facet normal -0.999642 -0.0267694 0 - outer loop - vertex 27.6094 12.2412 -3 - vertex 27.5422 14.7505 0 - vertex 27.5422 14.7505 -3 - endloop - endfacet - facet normal -0.999642 -0.0267694 0 - outer loop - vertex 27.5422 14.7505 0 - vertex 27.6094 12.2412 -3 - vertex 27.6094 12.2412 0 - endloop - endfacet - facet normal -0.999486 0.0320667 0 - outer loop - vertex 27.528 9.70386 -3 - vertex 27.6094 12.2412 0 - vertex 27.6094 12.2412 -3 - endloop - endfacet - facet normal -0.999486 0.0320667 0 - outer loop - vertex 27.6094 12.2412 0 - vertex 27.528 9.70386 -3 - vertex 27.528 9.70386 0 - endloop - endfacet - facet normal -0.981091 0.193547 0 - outer loop - vertex 27.209 8.08714 -3 - vertex 27.528 9.70386 0 - vertex 27.528 9.70386 -3 - endloop - endfacet - facet normal -0.981091 0.193547 0 - outer loop - vertex 27.528 9.70386 0 - vertex 27.209 8.08714 -3 - vertex 27.209 8.08714 0 - endloop - endfacet - facet normal -0.980935 0.194337 0 - outer loop - vertex 26.8985 6.51977 -3 - vertex 27.209 8.08714 0 - vertex 27.209 8.08714 -3 - endloop - endfacet - facet normal -0.980935 0.194337 0 - outer loop - vertex 27.209 8.08714 0 - vertex 26.8985 6.51977 -3 - vertex 26.8985 6.51977 0 - endloop - endfacet - facet normal -0.999971 -0.00756314 0 - outer loop - vertex 26.9177 3.98634 -3 - vertex 26.8985 6.51977 0 - vertex 26.8985 6.51977 -3 - endloop - endfacet - facet normal -0.999971 -0.00756314 0 - outer loop - vertex 26.8985 6.51977 0 - vertex 26.9177 3.98634 -3 - vertex 26.9177 3.98634 0 - endloop - endfacet - facet normal -0.999812 -0.0193848 0 - outer loop - vertex 26.953 2.16551 -3 - vertex 26.9177 3.98634 0 - vertex 26.9177 3.98634 -3 - endloop - endfacet - facet normal -0.999812 -0.0193848 0 - outer loop - vertex 26.9177 3.98634 0 - vertex 26.953 2.16551 -3 - vertex 26.953 2.16551 0 - endloop - endfacet - facet normal -0.99253 0.121998 0 - outer loop - vertex 26.8464 1.29842 -3 - vertex 26.953 2.16551 0 - vertex 26.953 2.16551 -3 - endloop - endfacet - facet normal -0.99253 0.121998 0 - outer loop - vertex 26.953 2.16551 0 - vertex 26.8464 1.29842 -3 - vertex 26.8464 1.29842 0 - endloop - endfacet - facet normal -0.673406 0.739273 0 - outer loop - vertex 26.8464 1.29842 -3 - vertex 26.7235 1.18648 0 - vertex 26.8464 1.29842 0 - endloop - endfacet - facet normal -0.673406 0.739273 0 - outer loop - vertex 26.7235 1.18648 0 - vertex 26.8464 1.29842 -3 - vertex 26.7235 1.18648 -3 - endloop - endfacet - facet normal 0.423462 0.905914 -0 - outer loop - vertex 26.7235 1.18648 -3 - vertex 26.5455 1.2697 0 - vertex 26.7235 1.18648 0 - endloop - endfacet - facet normal 0.423462 0.905914 0 - outer loop - vertex 26.5455 1.2697 0 - vertex 26.7235 1.18648 -3 - vertex 26.5455 1.2697 -3 - endloop - endfacet - facet normal 0.785068 0.61941 0 - outer loop - vertex 26.5455 1.2697 0 - vertex 25.9977 1.96397 -3 - vertex 25.9977 1.96397 0 - endloop - endfacet - facet normal 0.785068 0.61941 0 - outer loop - vertex 25.9977 1.96397 -3 - vertex 26.5455 1.2697 0 - vertex 26.5455 1.2697 -3 - endloop - endfacet - facet normal 0.724168 0.689624 0 - outer loop - vertex 25.9977 1.96397 0 - vertex 25.3153 2.68052 -3 - vertex 25.3153 2.68052 0 - endloop - endfacet - facet normal 0.724168 0.689624 0 - outer loop - vertex 25.3153 2.68052 -3 - vertex 25.9977 1.96397 0 - vertex 25.9977 1.96397 -3 - endloop - endfacet - facet normal -0.00319409 0.999995 0 - outer loop - vertex 25.3153 2.68052 -3 - vertex 25.0347 2.67962 0 - vertex 25.3153 2.68052 0 - endloop - endfacet - facet normal -0.00319409 0.999995 0 - outer loop - vertex 25.0347 2.67962 0 - vertex 25.3153 2.68052 -3 - vertex 25.0347 2.67962 -3 - endloop - endfacet - facet normal -0.620982 0.783825 0 - outer loop - vertex 25.0347 2.67962 -3 - vertex 24.7523 2.4559 0 - vertex 25.0347 2.67962 0 - endloop - endfacet - facet normal -0.620982 0.783825 0 - outer loop - vertex 24.7523 2.4559 0 - vertex 25.0347 2.67962 -3 - vertex 24.7523 2.4559 -3 - endloop - endfacet - facet normal -0.356176 0.934419 0 - outer loop - vertex 24.7523 2.4559 -3 - vertex 23.9858 2.16372 0 - vertex 24.7523 2.4559 0 - endloop - endfacet - facet normal -0.356176 0.934419 0 - outer loop - vertex 23.9858 2.16372 0 - vertex 24.7523 2.4559 -3 - vertex 23.9858 2.16372 -3 - endloop - endfacet - facet normal -0.21204 0.977261 0 - outer loop - vertex 23.9858 2.16372 -3 - vertex 23.1222 1.97635 0 - vertex 23.9858 2.16372 0 - endloop - endfacet - facet normal -0.21204 0.977261 0 - outer loop - vertex 23.1222 1.97635 0 - vertex 23.9858 2.16372 -3 - vertex 23.1222 1.97635 -3 - endloop - endfacet - facet normal 0.0237086 0.999719 -0 - outer loop - vertex 23.1222 1.97635 -3 - vertex 22.8505 1.9828 0 - vertex 23.1222 1.97635 0 - endloop - endfacet - facet normal 0.0237086 0.999719 0 - outer loop - vertex 22.8505 1.9828 0 - vertex 23.1222 1.97635 -3 - vertex 22.8505 1.9828 -3 - endloop - endfacet - facet normal 0.97535 0.220664 0 - outer loop - vertex 22.8505 1.9828 0 - vertex 22.7784 2.30129 -3 - vertex 22.7784 2.30129 0 - endloop - endfacet - facet normal 0.97535 0.220664 0 - outer loop - vertex 22.7784 2.30129 -3 - vertex 22.8505 1.9828 0 - vertex 22.8505 1.9828 -3 - endloop - endfacet - facet normal 0.936019 -0.35195 0 - outer loop - vertex 22.7784 2.30129 0 - vertex 23.2082 3.44442 -3 - vertex 23.2082 3.44442 0 - endloop - endfacet - facet normal 0.936019 -0.35195 0 - outer loop - vertex 23.2082 3.44442 -3 - vertex 22.7784 2.30129 0 - vertex 22.7784 2.30129 -3 - endloop - endfacet - facet normal 0.913236 -0.40743 0 - outer loop - vertex 23.2082 3.44442 0 - vertex 23.5377 4.18291 -3 - vertex 23.5377 4.18291 0 - endloop - endfacet - facet normal 0.913236 -0.40743 0 - outer loop - vertex 23.5377 4.18291 -3 - vertex 23.2082 3.44442 0 - vertex 23.2082 3.44442 -3 - endloop - endfacet - facet normal 0.997125 -0.0757773 0 - outer loop - vertex 23.5377 4.18291 0 - vertex 23.5966 4.95794 -3 - vertex 23.5966 4.95794 0 - endloop - endfacet - facet normal 0.997125 -0.0757773 0 - outer loop - vertex 23.5966 4.95794 -3 - vertex 23.5377 4.18291 0 - vertex 23.5377 4.18291 -3 - endloop - endfacet - facet normal 0.969407 0.245457 0 - outer loop - vertex 23.5966 4.95794 0 - vertex 23.3811 5.8089 -3 - vertex 23.3811 5.8089 0 - endloop - endfacet - facet normal 0.969407 0.245457 0 - outer loop - vertex 23.3811 5.8089 -3 - vertex 23.5966 4.95794 0 - vertex 23.5966 4.95794 -3 - endloop - endfacet - facet normal 0.890531 0.454923 0 - outer loop - vertex 23.3811 5.8089 0 - vertex 22.8875 6.77518 -3 - vertex 22.8875 6.77518 0 - endloop - endfacet - facet normal 0.890531 0.454923 0 - outer loop - vertex 22.8875 6.77518 -3 - vertex 23.3811 5.8089 0 - vertex 23.3811 5.8089 -3 - endloop - endfacet - facet normal 0.77704 0.629451 0 - outer loop - vertex 22.8875 6.77518 0 - vertex 21.7142 8.22365 -3 - vertex 21.7142 8.22365 0 - endloop - endfacet - facet normal 0.77704 0.629451 0 - outer loop - vertex 21.7142 8.22365 -3 - vertex 22.8875 6.77518 0 - vertex 22.8875 6.77518 -3 - endloop - endfacet - facet normal 0.585146 0.810928 -0 - outer loop - vertex 21.7142 8.22365 -3 - vertex 19.7157 9.66569 0 - vertex 21.7142 8.22365 0 - endloop - endfacet - facet normal 0.585146 0.810928 0 - outer loop - vertex 19.7157 9.66569 0 - vertex 21.7142 8.22365 -3 - vertex 19.7157 9.66569 -3 - endloop - endfacet - facet normal 0.415721 0.909492 -0 - outer loop - vertex 19.7157 9.66569 -3 - vertex 18.6847 10.137 0 - vertex 19.7157 9.66569 0 - endloop - endfacet - facet normal 0.415721 0.909492 0 - outer loop - vertex 18.6847 10.137 0 - vertex 19.7157 9.66569 -3 - vertex 18.6847 10.137 -3 - endloop - endfacet - facet normal 0.146348 0.989233 -0 - outer loop - vertex 18.6847 10.137 -3 - vertex 17.337 10.3363 0 - vertex 18.6847 10.137 0 - endloop - endfacet - facet normal 0.146348 0.989233 0 - outer loop - vertex 17.337 10.3363 0 - vertex 18.6847 10.137 -3 - vertex 17.337 10.3363 -3 - endloop - endfacet - facet normal -0.00363232 0.999993 0 - outer loop - vertex 17.337 10.3363 -3 - vertex 15.9933 10.3315 0 - vertex 17.337 10.3363 0 - endloop - endfacet - facet normal -0.00363232 0.999993 0 - outer loop - vertex 15.9933 10.3315 0 - vertex 17.337 10.3363 -3 - vertex 15.9933 10.3315 -3 - endloop - endfacet - facet normal -0.520358 0.853948 0 - outer loop - vertex 15.9933 10.3315 -3 - vertex 15.6762 10.1383 0 - vertex 15.9933 10.3315 0 - endloop - endfacet - facet normal -0.520358 0.853948 0 - outer loop - vertex 15.6762 10.1383 0 - vertex 15.9933 10.3315 -3 - vertex 15.6762 10.1383 -3 - endloop - endfacet - facet normal -0.775154 0.631772 0 - outer loop - vertex 15.3572 9.74689 -3 - vertex 15.6762 10.1383 0 - vertex 15.6762 10.1383 -3 - endloop - endfacet - facet normal -0.775154 0.631772 0 - outer loop - vertex 15.6762 10.1383 0 - vertex 15.3572 9.74689 -3 - vertex 15.3572 9.74689 0 - endloop - endfacet - facet normal -0.885944 0.463791 0 - outer loop - vertex 14.9426 8.95486 -3 - vertex 15.3572 9.74689 0 - vertex 15.3572 9.74689 -3 - endloop - endfacet - facet normal -0.885944 0.463791 0 - outer loop - vertex 15.3572 9.74689 0 - vertex 14.9426 8.95486 -3 - vertex 14.9426 8.95486 0 - endloop - endfacet - facet normal -0.999951 -0.00991933 0 - outer loop - vertex 14.9551 7.69881 -3 - vertex 14.9426 8.95486 0 - vertex 14.9426 8.95486 -3 - endloop - endfacet - facet normal -0.999951 -0.00991933 0 - outer loop - vertex 14.9426 8.95486 0 - vertex 14.9551 7.69881 -3 - vertex 14.9551 7.69881 0 - endloop - endfacet - facet normal -0.987205 -0.159458 0 - outer loop - vertex 15.3368 5.33522 -3 - vertex 14.9551 7.69881 0 - vertex 14.9551 7.69881 -3 - endloop - endfacet - facet normal -0.987205 -0.159458 0 - outer loop - vertex 14.9551 7.69881 0 - vertex 15.3368 5.33522 -3 - vertex 15.3368 5.33522 0 - endloop - endfacet - facet normal -0.962213 -0.272299 0 - outer loop - vertex 16.0239 2.90744 -3 - vertex 15.3368 5.33522 0 - vertex 15.3368 5.33522 -3 - endloop - endfacet - facet normal -0.962213 -0.272299 0 - outer loop - vertex 15.3368 5.33522 0 - vertex 16.0239 2.90744 -3 - vertex 16.0239 2.90744 0 - endloop - endfacet - facet normal -0.924811 -0.380427 0 - outer loop - vertex 16.8564 0.883682 -3 - vertex 16.0239 2.90744 0 - vertex 16.0239 2.90744 -3 - endloop - endfacet - facet normal -0.924811 -0.380427 0 - outer loop - vertex 16.0239 2.90744 0 - vertex 16.8564 0.883682 -3 - vertex 16.8564 0.883682 0 - endloop - endfacet - facet normal -0.815204 -0.579174 0 - outer loop - vertex 17.6745 -0.267811 -3 - vertex 16.8564 0.883682 0 - vertex 16.8564 0.883682 -3 - endloop - endfacet - facet normal -0.815204 -0.579174 0 - outer loop - vertex 16.8564 0.883682 0 - vertex 17.6745 -0.267811 -3 - vertex 17.6745 -0.267811 0 - endloop - endfacet - facet normal -0.318326 -0.947981 0 - outer loop - vertex 17.6745 -0.267811 -3 - vertex 18.2674 -0.466912 0 - vertex 17.6745 -0.267811 0 - endloop - endfacet - facet normal -0.318326 -0.947981 -0 - outer loop - vertex 18.2674 -0.466912 0 - vertex 17.6745 -0.267811 -3 - vertex 18.2674 -0.466912 -3 - endloop - endfacet - facet normal 0.268508 -0.963277 0 - outer loop - vertex 18.2674 -0.466912 -3 - vertex 19.4865 -0.127098 0 - vertex 18.2674 -0.466912 0 - endloop - endfacet - facet normal 0.268508 -0.963277 0 - outer loop - vertex 19.4865 -0.127098 0 - vertex 18.2674 -0.466912 -3 - vertex 19.4865 -0.127098 -3 - endloop - endfacet - facet normal 0.219889 -0.975525 0 - outer loop - vertex 19.4865 -0.127098 -3 - vertex 21.0282 0.220415 0 - vertex 19.4865 -0.127098 0 - endloop - endfacet - facet normal 0.219889 -0.975525 0 - outer loop - vertex 21.0282 0.220415 0 - vertex 19.4865 -0.127098 -3 - vertex 21.0282 0.220415 -3 - endloop - endfacet - facet normal -0.998758 -0.0498338 0 - outer loop - vertex 21.0968 -1.15452 -3 - vertex 21.0282 0.220415 0 - vertex 21.0282 0.220415 -3 - endloop - endfacet - facet normal -0.998758 -0.0498338 0 - outer loop - vertex 21.0282 0.220415 0 - vertex 21.0968 -1.15452 -3 - vertex 21.0968 -1.15452 0 - endloop - endfacet - facet normal -0.983918 0.178619 0 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 21.0968 -1.15452 0 - vertex 21.0968 -1.15452 -3 - endloop - endfacet - facet normal -0.983918 0.178619 0 - outer loop - vertex 21.0968 -1.15452 0 - vertex 20.9081 -2.19366 -3 - vertex 20.9081 -2.19366 0 - endloop - endfacet - facet normal -0.856849 0.515568 0 - outer loop - vertex 20.4179 -3.0084 -3 - vertex 20.9081 -2.19366 0 - vertex 20.9081 -2.19366 -3 - endloop - endfacet - facet normal -0.856849 0.515568 0 - outer loop - vertex 20.9081 -2.19366 0 - vertex 20.4179 -3.0084 -3 - vertex 20.4179 -3.0084 0 - endloop - endfacet - facet normal -0.631353 0.775495 0 - outer loop - vertex 20.4179 -3.0084 -3 - vertex 19.4334 -3.80993 0 - vertex 20.4179 -3.0084 0 - endloop - endfacet - facet normal -0.631353 0.775495 0 - outer loop - vertex 19.4334 -3.80993 0 - vertex 20.4179 -3.0084 -3 - vertex 19.4334 -3.80993 -3 - endloop - endfacet - facet normal -0.513213 0.858261 0 - outer loop - vertex 19.4334 -3.80993 -3 - vertex 17.7619 -4.80944 0 - vertex 19.4334 -3.80993 0 - endloop - endfacet - facet normal -0.513213 0.858261 0 - outer loop - vertex 17.7619 -4.80944 0 - vertex 19.4334 -3.80993 -3 - vertex 17.7619 -4.80944 -3 - endloop - endfacet - facet normal -0.460069 0.887883 0 - outer loop - vertex 17.7619 -4.80944 -3 - vertex 15.0012 -6.23992 0 - vertex 17.7619 -4.80944 0 - endloop - endfacet - facet normal -0.460069 0.887883 0 - outer loop - vertex 15.0012 -6.23992 0 - vertex 17.7619 -4.80944 -3 - vertex 15.0012 -6.23992 -3 - endloop - endfacet - facet normal -0.358805 0.933413 0 - outer loop - vertex 15.0012 -6.23992 -3 - vertex 12.6103 -7.15898 0 - vertex 15.0012 -6.23992 0 - endloop - endfacet - facet normal -0.358805 0.933413 0 - outer loop - vertex 12.6103 -7.15898 0 - vertex 15.0012 -6.23992 -3 - vertex 12.6103 -7.15898 -3 - endloop - endfacet - facet normal -0.211321 0.977417 0 - outer loop - vertex 12.6103 -7.15898 -3 - vertex 10.2421 -7.67101 0 - vertex 12.6103 -7.15898 0 - endloop - endfacet - facet normal -0.211321 0.977417 0 - outer loop - vertex 10.2421 -7.67101 0 - vertex 12.6103 -7.15898 -3 - vertex 10.2421 -7.67101 -3 - endloop - endfacet - facet normal -0.0775281 0.99699 0 - outer loop - vertex 10.2421 -7.67101 -3 - vertex 7.54923 -7.88041 0 - vertex 10.2421 -7.67101 0 - endloop - endfacet - facet normal -0.0775281 0.99699 0 - outer loop - vertex 7.54923 -7.88041 0 - vertex 10.2421 -7.67101 -3 - vertex 7.54923 -7.88041 -3 - endloop - endfacet - facet normal -0.00181695 0.999998 0 - outer loop - vertex 7.54923 -7.88041 -3 - vertex 5.03167 -7.88498 0 - vertex 7.54923 -7.88041 0 - endloop - endfacet - facet normal -0.00181695 0.999998 0 - outer loop - vertex 5.03167 -7.88498 0 - vertex 7.54923 -7.88041 -3 - vertex 5.03167 -7.88498 -3 - endloop - endfacet - facet normal 0.239055 0.971006 -0 - outer loop - vertex 5.03167 -7.88498 -3 - vertex 3.854 -7.59505 0 - vertex 5.03167 -7.88498 0 - endloop - endfacet - facet normal 0.239055 0.971006 0 - outer loop - vertex 3.854 -7.59505 0 - vertex 5.03167 -7.88498 -3 - vertex 3.854 -7.59505 -3 - endloop - endfacet - facet normal 0.512147 0.858898 -0 - outer loop - vertex 3.854 -7.59505 -3 - vertex 1.04019 -5.91722 0 - vertex 3.854 -7.59505 0 - endloop - endfacet - facet normal 0.512147 0.858898 0 - outer loop - vertex 1.04019 -5.91722 0 - vertex 3.854 -7.59505 -3 - vertex 1.04019 -5.91722 -3 - endloop - endfacet - facet normal 0.520307 0.85398 -0 - outer loop - vertex 1.04019 -5.91722 -3 - vertex -2.05653 -4.03047 0 - vertex 1.04019 -5.91722 0 - endloop - endfacet - facet normal 0.520307 0.85398 0 - outer loop - vertex -2.05653 -4.03047 0 - vertex 1.04019 -5.91722 -3 - vertex -2.05653 -4.03047 -3 - endloop - endfacet - facet normal 0.582306 0.812969 -0 - outer loop - vertex -2.05653 -4.03047 -3 - vertex -3.45272 -3.03042 0 - vertex -2.05653 -4.03047 0 - endloop - endfacet - facet normal 0.582306 0.812969 0 - outer loop - vertex -3.45272 -3.03042 0 - vertex -2.05653 -4.03047 -3 - vertex -3.45272 -3.03042 -3 - endloop - endfacet - facet normal 0.814407 0.580294 0 - outer loop - vertex -3.45272 -3.03042 0 - vertex -3.71458 -2.66291 -3 - vertex -3.71458 -2.66291 0 - endloop - endfacet - facet normal 0.814407 0.580294 0 - outer loop - vertex -3.71458 -2.66291 -3 - vertex -3.45272 -3.03042 0 - vertex -3.45272 -3.03042 -3 - endloop - endfacet - facet normal 0.667074 -0.744991 0 - outer loop - vertex -3.71458 -2.66291 -3 - vertex -3.55278 -2.51803 0 - vertex -3.71458 -2.66291 0 - endloop - endfacet - facet normal 0.667074 -0.744991 0 - outer loop - vertex -3.55278 -2.51803 0 - vertex -3.71458 -2.66291 -3 - vertex -3.55278 -2.51803 -3 - endloop - endfacet - facet normal -0.396625 -0.917981 0 - outer loop - vertex -3.55278 -2.51803 -3 - vertex -1.72768 -3.30659 0 - vertex -3.55278 -2.51803 0 - endloop - endfacet - facet normal -0.396625 -0.917981 -0 - outer loop - vertex -1.72768 -3.30659 0 - vertex -3.55278 -2.51803 -3 - vertex -1.72768 -3.30659 -3 - endloop - endfacet - facet normal -0.417951 -0.90847 0 - outer loop - vertex -1.72768 -3.30659 -3 - vertex 1.09298 -4.60426 0 - vertex -1.72768 -3.30659 0 - endloop - endfacet - facet normal -0.417951 -0.90847 -0 - outer loop - vertex 1.09298 -4.60426 0 - vertex -1.72768 -3.30659 -3 - vertex 1.09298 -4.60426 -3 - endloop - endfacet - facet normal -0.324179 -0.945996 0 - outer loop - vertex 1.09298 -4.60426 -3 - vertex 3.9592 -5.58648 0 - vertex 1.09298 -4.60426 0 - endloop - endfacet - facet normal -0.324179 -0.945996 -0 - outer loop - vertex 3.9592 -5.58648 0 - vertex 1.09298 -4.60426 -3 - vertex 3.9592 -5.58648 -3 - endloop - endfacet - facet normal -0.208038 -0.978121 0 - outer loop - vertex 3.9592 -5.58648 -3 - vertex 5.81183 -5.98051 0 - vertex 3.9592 -5.58648 0 - endloop - endfacet - facet normal -0.208038 -0.978121 -0 - outer loop - vertex 5.81183 -5.98051 0 - vertex 3.9592 -5.58648 -3 - vertex 5.81183 -5.98051 -3 - endloop - endfacet - facet normal 0.0684734 -0.997653 0 - outer loop - vertex 5.81183 -5.98051 -3 - vertex 7.21237 -5.88439 0 - vertex 5.81183 -5.98051 0 - endloop - endfacet - facet normal 0.0684734 -0.997653 0 - outer loop - vertex 7.21237 -5.88439 0 - vertex 5.81183 -5.98051 -3 - vertex 7.21237 -5.88439 -3 - endloop - endfacet - facet normal 0.219818 -0.975541 0 - outer loop - vertex 7.21237 -5.88439 -3 - vertex 7.79727 -5.75259 0 - vertex 7.21237 -5.88439 0 - endloop - endfacet - facet normal 0.219818 -0.975541 0 - outer loop - vertex 7.79727 -5.75259 0 - vertex 7.21237 -5.88439 -3 - vertex 7.79727 -5.75259 -3 - endloop - endfacet - facet normal 0.71334 0.700818 0 - outer loop - vertex 7.79727 -5.75259 0 - vertex 7.03104 -4.97268 -3 - vertex 7.03104 -4.97268 0 - endloop - endfacet - facet normal 0.71334 0.700818 0 - outer loop - vertex 7.03104 -4.97268 -3 - vertex 7.79727 -5.75259 0 - vertex 7.79727 -5.75259 -3 - endloop - endfacet - facet normal 0.78473 0.619838 0 - outer loop - vertex 7.03104 -4.97268 0 - vertex 5.97791 -3.63939 -3 - vertex 5.97791 -3.63939 0 - endloop - endfacet - facet normal 0.78473 0.619838 0 - outer loop - vertex 5.97791 -3.63939 -3 - vertex 7.03104 -4.97268 0 - vertex 7.03104 -4.97268 -3 - endloop - endfacet - facet normal 0.861751 0.507331 0 - outer loop - vertex 5.97791 -3.63939 0 - vertex 5.02006 -2.01238 -3 - vertex 5.02006 -2.01238 0 - endloop - endfacet - facet normal 0.861751 0.507331 0 - outer loop - vertex 5.02006 -2.01238 -3 - vertex 5.97791 -3.63939 0 - vertex 5.97791 -3.63939 -3 - endloop - endfacet - facet normal 0.918179 0.396167 0 - outer loop - vertex 5.02006 -2.01238 0 - vertex 4.37015 -0.506109 -3 - vertex 4.37015 -0.506109 0 - endloop - endfacet - facet normal 0.918179 0.396167 0 - outer loop - vertex 4.37015 -0.506109 -3 - vertex 5.02006 -2.01238 0 - vertex 5.02006 -2.01238 -3 - endloop - endfacet - facet normal 0.99125 0.131995 0 - outer loop - vertex 4.37015 -0.506109 0 - vertex 4.24084 0.464987 -3 - vertex 4.24084 0.464987 0 - endloop - endfacet - facet normal 0.99125 0.131995 0 - outer loop - vertex 4.24084 0.464987 -3 - vertex 4.37015 -0.506109 0 - vertex 4.37015 -0.506109 -3 - endloop - endfacet - facet normal 0.880686 -0.473701 0 - outer loop - vertex 4.24084 0.464987 0 - vertex 4.39665 0.754678 -3 - vertex 4.39665 0.754678 0 - endloop - endfacet - facet normal 0.880686 -0.473701 0 - outer loop - vertex 4.39665 0.754678 -3 - vertex 4.24084 0.464987 0 - vertex 4.24084 0.464987 -3 - endloop - endfacet - facet normal -0.827333 -0.561712 0 - outer loop - vertex 4.6091 0.441775 -3 - vertex 4.39665 0.754678 0 - vertex 4.39665 0.754678 -3 - endloop - endfacet - facet normal -0.827333 -0.561712 0 - outer loop - vertex 4.39665 0.754678 0 - vertex 4.6091 0.441775 -3 - vertex 4.6091 0.441775 0 - endloop - endfacet - facet normal -0.774222 -0.632914 0 - outer loop - vertex 6.41545 -1.76788 -3 - vertex 4.6091 0.441775 0 - vertex 4.6091 0.441775 -3 - endloop - endfacet - facet normal -0.774222 -0.632914 0 - outer loop - vertex 4.6091 0.441775 0 - vertex 6.41545 -1.76788 -3 - vertex 6.41545 -1.76788 0 - endloop - endfacet - facet normal -0.707099 -0.707114 0 - outer loop - vertex 6.41545 -1.76788 -3 - vertex 7.74282 -3.09522 0 - vertex 6.41545 -1.76788 0 - endloop - endfacet - facet normal -0.707099 -0.707114 -0 - outer loop - vertex 7.74282 -3.09522 0 - vertex 6.41545 -1.76788 -3 - vertex 7.74282 -3.09522 -3 - endloop - endfacet - facet normal -0.583644 -0.812009 0 - outer loop - vertex 7.74282 -3.09522 -3 - vertex 9.01294 -4.00814 0 - vertex 7.74282 -3.09522 0 - endloop - endfacet - facet normal -0.583644 -0.812009 -0 - outer loop - vertex 9.01294 -4.00814 0 - vertex 7.74282 -3.09522 -3 - vertex 9.01294 -4.00814 -3 - endloop - endfacet - facet normal -0.385065 -0.92289 0 - outer loop - vertex 9.01294 -4.00814 -3 - vertex 10.2758 -4.53506 0 - vertex 9.01294 -4.00814 0 - endloop - endfacet - facet normal -0.385065 -0.92289 -0 - outer loop - vertex 10.2758 -4.53506 0 - vertex 9.01294 -4.00814 -3 - vertex 10.2758 -4.53506 -3 - endloop - endfacet - facet normal -0.128613 -0.991695 0 - outer loop - vertex 10.2758 -4.53506 -3 - vertex 11.5814 -4.70438 0 - vertex 10.2758 -4.53506 0 - endloop - endfacet - facet normal -0.128613 -0.991695 -0 - outer loop - vertex 11.5814 -4.70438 0 - vertex 10.2758 -4.53506 -3 - vertex 11.5814 -4.70438 -3 - endloop - endfacet - facet normal 0.142467 -0.9898 0 - outer loop - vertex 11.5814 -4.70438 -3 - vertex 12.4032 -4.58609 0 - vertex 11.5814 -4.70438 0 - endloop - endfacet - facet normal 0.142467 -0.9898 0 - outer loop - vertex 12.4032 -4.58609 0 - vertex 11.5814 -4.70438 -3 - vertex 12.4032 -4.58609 -3 - endloop - endfacet - facet normal 0.390375 -0.920656 0 - outer loop - vertex 12.4032 -4.58609 -3 - vertex 13.172 -4.2601 0 - vertex 12.4032 -4.58609 0 - endloop - endfacet - facet normal 0.390375 -0.920656 0 - outer loop - vertex 13.172 -4.2601 0 - vertex 12.4032 -4.58609 -3 - vertex 13.172 -4.2601 -3 - endloop - endfacet - facet normal 0.607582 -0.794257 0 - outer loop - vertex 13.172 -4.2601 -3 - vertex 13.8131 -3.7697 0 - vertex 13.172 -4.2601 0 - endloop - endfacet - facet normal 0.607582 -0.794257 0 - outer loop - vertex 13.8131 -3.7697 0 - vertex 13.172 -4.2601 -3 - vertex 13.8131 -3.7697 -3 - endloop - endfacet - facet normal 0.812619 -0.582795 0 - outer loop - vertex 13.8131 -3.7697 0 - vertex 14.2516 -3.15818 -3 - vertex 14.2516 -3.15818 0 - endloop - endfacet - facet normal 0.812619 -0.582795 0 - outer loop - vertex 14.2516 -3.15818 -3 - vertex 13.8131 -3.7697 0 - vertex 13.8131 -3.7697 -3 - endloop - endfacet - facet normal 0.980799 -0.195021 0 - outer loop - vertex 14.2516 -3.15818 0 - vertex 14.333 -2.7489 -3 - vertex 14.333 -2.7489 0 - endloop - endfacet - facet normal 0.980799 -0.195021 0 - outer loop - vertex 14.333 -2.7489 -3 - vertex 14.2516 -3.15818 0 - vertex 14.2516 -3.15818 -3 - endloop - endfacet - facet normal 0.98573 0.168336 0 - outer loop - vertex 14.333 -2.7489 0 - vertex 14.2455 -2.23644 -3 - vertex 14.2455 -2.23644 0 - endloop - endfacet - facet normal 0.98573 0.168336 0 - outer loop - vertex 14.2455 -2.23644 -3 - vertex 14.333 -2.7489 0 - vertex 14.333 -2.7489 -3 - endloop - endfacet - facet normal 0.892341 0.451362 0 - outer loop - vertex 14.2455 -2.23644 0 - vertex 13.5923 -0.94501 -3 - vertex 13.5923 -0.94501 0 - endloop - endfacet - facet normal 0.892341 0.451362 0 - outer loop - vertex 13.5923 -0.94501 -3 - vertex 14.2455 -2.23644 0 - vertex 14.2455 -2.23644 -3 - endloop - endfacet - facet normal 0.784902 0.61962 0 - outer loop - vertex 13.5923 -0.94501 0 - vertex 12.3489 0.629998 -3 - vertex 12.3489 0.629998 0 - endloop - endfacet - facet normal 0.784902 0.61962 0 - outer loop - vertex 12.3489 0.629998 -3 - vertex 13.5923 -0.94501 0 - vertex 13.5923 -0.94501 -3 - endloop - endfacet - facet normal 0.706306 0.707906 -0 - outer loop - vertex 12.3489 0.629998 -3 - vertex 10.5724 2.40247 0 - vertex 12.3489 0.629998 0 - endloop - endfacet - facet normal 0.706306 0.707906 0 - outer loop - vertex 10.5724 2.40247 0 - vertex 12.3489 0.629998 -3 - vertex 10.5724 2.40247 -3 - endloop - endfacet - facet normal 0.641095 0.767462 -0 - outer loop - vertex 10.5724 2.40247 -3 - vertex 9.13441 3.60373 0 - vertex 10.5724 2.40247 0 - endloop - endfacet - facet normal 0.641095 0.767462 0 - outer loop - vertex 9.13441 3.60373 0 - vertex 10.5724 2.40247 -3 - vertex 9.13441 3.60373 -3 - endloop - endfacet - facet normal 0.56747 0.823394 -0 - outer loop - vertex 9.13441 3.60373 -3 - vertex 8.18559 4.25764 0 - vertex 9.13441 3.60373 0 - endloop - endfacet - facet normal 0.56747 0.823394 0 - outer loop - vertex 8.18559 4.25764 0 - vertex 9.13441 3.60373 -3 - vertex 8.18559 4.25764 -3 - endloop - endfacet - facet normal 0.457713 0.8891 -0 - outer loop - vertex 8.18559 4.25764 -3 - vertex 5.26682 5.76024 0 - vertex 8.18559 4.25764 0 - endloop - endfacet - facet normal 0.457713 0.8891 0 - outer loop - vertex 5.26682 5.76024 0 - vertex 8.18559 4.25764 -3 - vertex 5.26682 5.76024 -3 - endloop - endfacet - facet normal 0.356921 0.934135 -0 - outer loop - vertex 5.26682 5.76024 -3 - vertex 1.66409 7.13679 0 - vertex 5.26682 5.76024 0 - endloop - endfacet - facet normal 0.356921 0.934135 0 - outer loop - vertex 1.66409 7.13679 0 - vertex 5.26682 5.76024 -3 - vertex 1.66409 7.13679 -3 - endloop - endfacet - facet normal 0.389896 0.920859 -0 - outer loop - vertex 1.66409 7.13679 -3 - vertex -0.248642 7.94666 0 - vertex 1.66409 7.13679 0 - endloop - endfacet - facet normal 0.389896 0.920859 0 - outer loop - vertex -0.248642 7.94666 0 - vertex 1.66409 7.13679 -3 - vertex -0.248642 7.94666 -3 - endloop - endfacet - facet normal 0.471857 0.881675 -0 - outer loop - vertex -0.248642 7.94666 -3 - vertex -2.78119 9.30203 0 - vertex -0.248642 7.94666 0 - endloop - endfacet - facet normal 0.471857 0.881675 0 - outer loop - vertex -2.78119 9.30203 0 - vertex -0.248642 7.94666 -3 - vertex -2.78119 9.30203 -3 - endloop - endfacet - facet normal 0.524404 0.851469 -0 - outer loop - vertex -2.78119 9.30203 -3 - vertex -4.99153 10.6633 0 - vertex -2.78119 9.30203 0 - endloop - endfacet - facet normal 0.524404 0.851469 0 - outer loop - vertex -4.99153 10.6633 0 - vertex -2.78119 9.30203 -3 - vertex -4.99153 10.6633 -3 - endloop - endfacet - facet normal 0.658419 0.752652 -0 - outer loop - vertex -4.99153 10.6633 -3 - vertex -5.93765 11.491 0 - vertex -4.99153 10.6633 0 - endloop - endfacet - facet normal 0.658419 0.752652 0 - outer loop - vertex -5.93765 11.491 0 - vertex -4.99153 10.6633 -3 - vertex -5.93765 11.491 -3 - endloop - endfacet - facet normal 0.579458 -0.815002 0 - outer loop - vertex -5.93765 11.491 -3 - vertex -5.71478 11.6495 0 - vertex -5.93765 11.491 0 - endloop - endfacet - facet normal 0.579458 -0.815002 0 - outer loop - vertex -5.71478 11.6495 0 - vertex -5.93765 11.491 -3 - vertex -5.71478 11.6495 -3 - endloop - endfacet - facet normal 0.0440908 -0.999028 0 - outer loop - vertex -5.71478 11.6495 -3 - vertex -5.07797 11.6776 0 - vertex -5.71478 11.6495 0 - endloop - endfacet - facet normal 0.0440908 -0.999028 0 - outer loop - vertex -5.07797 11.6776 0 - vertex -5.71478 11.6495 -3 - vertex -5.07797 11.6776 -3 - endloop - endfacet - facet normal -0.139075 -0.990282 0 - outer loop - vertex -5.07797 11.6776 -3 - vertex -2.75335 11.3511 0 - vertex -5.07797 11.6776 0 - endloop - endfacet - facet normal -0.139075 -0.990282 -0 - outer loop - vertex -2.75335 11.3511 0 - vertex -5.07797 11.6776 -3 - vertex -2.75335 11.3511 -3 - endloop - endfacet - facet normal -0.139152 -0.990271 0 - outer loop - vertex -2.75335 11.3511 -3 - vertex -1.46211 11.1697 0 - vertex -2.75335 11.3511 0 - endloop - endfacet - facet normal -0.139152 -0.990271 -0 - outer loop - vertex -1.46211 11.1697 0 - vertex -2.75335 11.3511 -3 - vertex -1.46211 11.1697 -3 - endloop - endfacet - facet normal 0.0257838 -0.999668 0 - outer loop - vertex -1.46211 11.1697 -3 - vertex -0.394194 11.1972 0 - vertex -1.46211 11.1697 0 - endloop - endfacet - facet normal 0.0257838 -0.999668 0 - outer loop - vertex -0.394194 11.1972 0 - vertex -1.46211 11.1697 -3 - vertex -0.394194 11.1972 -3 - endloop - endfacet - facet normal 0.258065 -0.966128 0 - outer loop - vertex -0.394194 11.1972 -3 - vertex 0.535115 11.4454 0 - vertex -0.394194 11.1972 0 - endloop - endfacet - facet normal 0.258065 -0.966128 0 - outer loop - vertex 0.535115 11.4454 0 - vertex -0.394194 11.1972 -3 - vertex 0.535115 11.4454 -3 - endloop - endfacet - facet normal 0.481248 -0.876585 0 - outer loop - vertex 0.535115 11.4454 -3 - vertex 1.41055 11.926 0 - vertex 0.535115 11.4454 0 - endloop - endfacet - facet normal 0.481248 -0.876585 0 - outer loop - vertex 1.41055 11.926 0 - vertex 0.535115 11.4454 -3 - vertex 1.41055 11.926 -3 - endloop - endfacet - facet normal 0.671564 -0.740947 0 - outer loop - vertex 1.41055 11.926 -3 - vertex 1.87173 12.344 0 - vertex 1.41055 11.926 0 - endloop - endfacet - facet normal 0.671564 -0.740947 0 - outer loop - vertex 1.87173 12.344 0 - vertex 1.41055 11.926 -3 - vertex 1.87173 12.344 -3 - endloop - endfacet - facet normal 0.998006 0.0631228 0 - outer loop - vertex 1.87173 12.344 0 - vertex 1.8467 12.7398 -3 - vertex 1.8467 12.7398 0 - endloop - endfacet - facet normal 0.998006 0.0631228 0 - outer loop - vertex 1.8467 12.7398 -3 - vertex 1.87173 12.344 0 - vertex 1.87173 12.344 -3 - endloop - endfacet - facet normal 0.790564 0.612379 0 - outer loop - vertex 1.8467 12.7398 0 - vertex 1.50002 13.1874 -3 - vertex 1.50002 13.1874 0 - endloop - endfacet - facet normal 0.790564 0.612379 0 - outer loop - vertex 1.50002 13.1874 -3 - vertex 1.8467 12.7398 0 - vertex 1.8467 12.7398 -3 - endloop - endfacet - facet normal 0.55001 0.835158 -0 - outer loop - vertex 1.50002 13.1874 -3 - vertex 0.918757 13.5702 0 - vertex 1.50002 13.1874 0 - endloop - endfacet - facet normal 0.55001 0.835158 0 - outer loop - vertex 0.918757 13.5702 0 - vertex 1.50002 13.1874 -3 - vertex 0.918757 13.5702 -3 - endloop - endfacet - facet normal 0.293762 0.955879 -0 - outer loop - vertex 0.918757 13.5702 -3 - vertex -0.928844 14.138 0 - vertex 0.918757 13.5702 0 - endloop - endfacet - facet normal 0.293762 0.955879 0 - outer loop - vertex -0.928844 14.138 0 - vertex 0.918757 13.5702 -3 - vertex -0.928844 14.138 -3 - endloop - endfacet - facet normal 0.108589 0.994087 -0 - outer loop - vertex -0.928844 14.138 -3 - vertex -3.65881 14.4362 0 - vertex -0.928844 14.138 0 - endloop - endfacet - facet normal 0.108589 0.994087 0 - outer loop - vertex -3.65881 14.4362 0 - vertex -0.928844 14.138 -3 - vertex -3.65881 14.4362 -3 - endloop - endfacet - facet normal 0.00602839 0.999982 -0 - outer loop - vertex -3.65881 14.4362 -3 - vertex -7.23385 14.4578 0 - vertex -3.65881 14.4362 0 - endloop - endfacet - facet normal 0.00602839 0.999982 0 - outer loop - vertex -7.23385 14.4578 0 - vertex -3.65881 14.4362 -3 - vertex -7.23385 14.4578 -3 - endloop - endfacet - facet normal -0.0644585 0.99792 0 - outer loop - vertex -7.23385 14.4578 -3 - vertex -10.6367 14.238 0 - vertex -7.23385 14.4578 0 - endloop - endfacet - facet normal -0.0644585 0.99792 0 - outer loop - vertex -10.6367 14.238 0 - vertex -7.23385 14.4578 -3 - vertex -10.6367 14.238 -3 - endloop - endfacet - facet normal -0.276015 0.961153 0 - outer loop - vertex -10.6367 14.238 -3 - vertex -13.7227 13.3517 0 - vertex -10.6367 14.238 0 - endloop - endfacet - facet normal -0.276015 0.961153 0 - outer loop - vertex -13.7227 13.3517 0 - vertex -10.6367 14.238 -3 - vertex -13.7227 13.3517 -3 - endloop - endfacet - facet normal -0.25467 0.967028 0 - outer loop - vertex -13.7227 13.3517 -3 - vertex -17.5299 12.3491 0 - vertex -13.7227 13.3517 0 - endloop - endfacet - facet normal -0.25467 0.967028 0 - outer loop - vertex -17.5299 12.3491 0 - vertex -13.7227 13.3517 -3 - vertex -17.5299 12.3491 -3 - endloop - endfacet - facet normal -0.135841 0.990731 0 - outer loop - vertex -17.5299 12.3491 -3 - vertex -20.0298 12.0063 0 - vertex -17.5299 12.3491 0 - endloop - endfacet - facet normal -0.135841 0.990731 0 - outer loop - vertex -20.0298 12.0063 0 - vertex -17.5299 12.3491 -3 - vertex -20.0298 12.0063 -3 - endloop - endfacet - facet normal -0.101855 0.994799 0 - outer loop - vertex -20.0298 12.0063 -3 - vertex -22.4428 11.7593 0 - vertex -20.0298 12.0063 0 - endloop - endfacet - facet normal -0.101855 0.994799 0 - outer loop - vertex -22.4428 11.7593 0 - vertex -20.0298 12.0063 -3 - vertex -22.4428 11.7593 -3 - endloop - endfacet - facet normal -0.0308153 0.999525 0 - outer loop - vertex -22.4428 11.7593 -3 - vertex -25.7097 11.6586 0 - vertex -22.4428 11.7593 0 - endloop - endfacet - facet normal -0.0308153 0.999525 0 - outer loop - vertex -25.7097 11.6586 0 - vertex -22.4428 11.7593 -3 - vertex -25.7097 11.6586 -3 - endloop - endfacet - facet normal 0.0184303 0.99983 -0 - outer loop - vertex -25.7097 11.6586 -3 - vertex -28.6588 11.7129 0 - vertex -25.7097 11.6586 0 - endloop - endfacet - facet normal 0.0184303 0.99983 0 - outer loop - vertex -28.6588 11.7129 0 - vertex -25.7097 11.6586 -3 - vertex -28.6588 11.7129 -3 - endloop - endfacet - facet normal 0.147852 0.989009 -0 - outer loop - vertex -28.6588 11.7129 -3 - vertex -30.1182 11.9311 0 - vertex -28.6588 11.7129 0 - endloop - endfacet - facet normal 0.147852 0.989009 0 - outer loop - vertex -30.1182 11.9311 0 - vertex -28.6588 11.7129 -3 - vertex -30.1182 11.9311 -3 - endloop - endfacet - facet normal 0.940295 0.34036 0 - outer loop - vertex -30.1182 11.9311 0 - vertex -30.3887 12.6783 -3 - vertex -30.3887 12.6783 0 - endloop - endfacet - facet normal 0.940295 0.34036 0 - outer loop - vertex -30.3887 12.6783 -3 - vertex -30.1182 11.9311 0 - vertex -30.1182 11.9311 -3 - endloop - endfacet - facet normal 0.978074 -0.208259 0 - outer loop - vertex -30.3887 12.6783 0 - vertex -30.3118 13.0393 -3 - vertex -30.3118 13.0393 0 - endloop - endfacet - facet normal 0.978074 -0.208259 0 - outer loop - vertex -30.3118 13.0393 -3 - vertex -30.3887 12.6783 0 - vertex -30.3887 12.6783 -3 - endloop - endfacet - facet normal 0.488021 -0.872832 0 - outer loop - vertex -30.3118 13.0393 -3 - vertex -29.9412 13.2465 0 - vertex -30.3118 13.0393 0 - endloop - endfacet - facet normal 0.488021 -0.872832 0 - outer loop - vertex -29.9412 13.2465 0 - vertex -30.3118 13.0393 -3 - vertex -29.9412 13.2465 -3 - endloop - endfacet - facet normal 0.0669219 -0.997758 0 - outer loop - vertex -29.9412 13.2465 -3 - vertex -27.4778 13.4117 0 - vertex -29.9412 13.2465 0 - endloop - endfacet - facet normal 0.0669219 -0.997758 0 - outer loop - vertex -27.4778 13.4117 0 - vertex -29.9412 13.2465 -3 - vertex -27.4778 13.4117 -3 - endloop - endfacet - facet normal 0.0722192 -0.997389 0 - outer loop - vertex -27.4778 13.4117 -3 - vertex -24.873 13.6003 0 - vertex -27.4778 13.4117 0 - endloop - endfacet - facet normal 0.0722192 -0.997389 0 - outer loop - vertex -24.873 13.6003 0 - vertex -27.4778 13.4117 -3 - vertex -24.873 13.6003 -3 - endloop - endfacet - facet normal 0.168213 -0.985751 0 - outer loop - vertex -24.873 13.6003 -3 - vertex -22.3118 14.0374 0 - vertex -24.873 13.6003 0 - endloop - endfacet - facet normal 0.168213 -0.985751 0 - outer loop - vertex -22.3118 14.0374 0 - vertex -24.873 13.6003 -3 - vertex -22.3118 14.0374 -3 - endloop - endfacet - facet normal 0.261629 -0.965169 0 - outer loop - vertex -22.3118 14.0374 -3 - vertex -19.733 14.7364 0 - vertex -22.3118 14.0374 0 - endloop - endfacet - facet normal 0.261629 -0.965169 0 - outer loop - vertex -19.733 14.7364 0 - vertex -22.3118 14.0374 -3 - vertex -19.733 14.7364 -3 - endloop - endfacet - facet normal 0.344283 -0.938866 0 - outer loop - vertex -19.733 14.7364 -3 - vertex -17.0754 15.711 0 - vertex -19.733 14.7364 0 - endloop - endfacet - facet normal 0.344283 -0.938866 0 - outer loop - vertex -17.0754 15.711 0 - vertex -19.733 14.7364 -3 - vertex -17.0754 15.711 -3 - endloop - endfacet - facet normal 0.435809 -0.900039 0 - outer loop - vertex -17.0754 15.711 -3 - vertex -15.009 16.7116 0 - vertex -17.0754 15.711 0 - endloop - endfacet - facet normal 0.435809 -0.900039 0 - outer loop - vertex -15.009 16.7116 0 - vertex -17.0754 15.711 -3 - vertex -15.009 16.7116 -3 - endloop - endfacet - facet normal 0.583649 -0.812006 0 - outer loop - vertex -15.009 16.7116 -3 - vertex -12.0133 18.8648 0 - vertex -15.009 16.7116 0 - endloop - endfacet - facet normal 0.583649 -0.812006 0 - outer loop - vertex -12.0133 18.8648 0 - vertex -15.009 16.7116 -3 - vertex -12.0133 18.8648 -3 - endloop - endfacet - facet normal 0.632447 -0.774604 0 - outer loop - vertex -12.0133 18.8648 -3 - vertex -11.1208 19.5935 0 - vertex -12.0133 18.8648 0 - endloop - endfacet - facet normal 0.632447 -0.774604 0 - outer loop - vertex -11.1208 19.5935 0 - vertex -12.0133 18.8648 -3 - vertex -11.1208 19.5935 -3 - endloop - endfacet - facet normal 0.915349 -0.40266 0 - outer loop - vertex -11.1208 19.5935 0 - vertex -10.9412 20.0018 -3 - vertex -10.9412 20.0018 0 - endloop - endfacet - facet normal 0.915349 -0.40266 0 - outer loop - vertex -10.9412 20.0018 -3 - vertex -11.1208 19.5935 0 - vertex -11.1208 19.5935 -3 - endloop - endfacet - facet normal 0.285826 0.958281 -0 - outer loop - vertex -10.9412 20.0018 -3 - vertex -11.5389 20.1801 0 - vertex -10.9412 20.0018 0 - endloop - endfacet - facet normal 0.285826 0.958281 0 - outer loop - vertex -11.5389 20.1801 0 - vertex -10.9412 20.0018 -3 - vertex -11.5389 20.1801 -3 - endloop - endfacet - facet normal 0.0268157 0.99964 -0 - outer loop - vertex -11.5389 20.1801 -3 - vertex -12.9783 20.2187 0 - vertex -11.5389 20.1801 0 - endloop - endfacet - facet normal 0.0268157 0.99964 0 - outer loop - vertex -12.9783 20.2187 0 - vertex -11.5389 20.1801 -3 - vertex -12.9783 20.2187 -3 - endloop - endfacet - facet normal -0.0662732 0.997802 0 - outer loop - vertex -12.9783 20.2187 -3 - vertex -16.3196 19.9968 0 - vertex -12.9783 20.2187 0 - endloop - endfacet - facet normal -0.0662732 0.997802 0 - outer loop - vertex -16.3196 19.9968 0 - vertex -12.9783 20.2187 -3 - vertex -16.3196 19.9968 -3 - endloop - endfacet - facet normal -0.149342 0.988786 0 - outer loop - vertex -16.3196 19.9968 -3 - vertex -20.1789 19.4139 0 - vertex -16.3196 19.9968 0 - endloop - endfacet - facet normal -0.149342 0.988786 0 - outer loop - vertex -20.1789 19.4139 0 - vertex -16.3196 19.9968 -3 - vertex -20.1789 19.4139 -3 - endloop - endfacet - facet normal -0.0917718 0.99578 0 - outer loop - vertex -20.1789 19.4139 -3 - vertex -24.1572 19.0472 0 - vertex -20.1789 19.4139 0 - endloop - endfacet - facet normal -0.0917718 0.99578 0 - outer loop - vertex -24.1572 19.0472 0 - vertex -20.1789 19.4139 -3 - vertex -24.1572 19.0472 -3 - endloop - endfacet - facet normal -0.0311054 0.999516 0 - outer loop - vertex -24.1572 19.0472 -3 - vertex -27.5587 18.9414 0 - vertex -24.1572 19.0472 0 - endloop - endfacet - facet normal -0.0311054 0.999516 0 - outer loop - vertex -27.5587 18.9414 0 - vertex -24.1572 19.0472 -3 - vertex -27.5587 18.9414 -3 - endloop - endfacet - facet normal 0.0933351 0.995635 -0 - outer loop - vertex -27.5587 18.9414 -3 - vertex -29.687 19.1409 0 - vertex -27.5587 18.9414 0 - endloop - endfacet - facet normal 0.0933351 0.995635 0 - outer loop - vertex -29.687 19.1409 0 - vertex -27.5587 18.9414 -3 - vertex -29.687 19.1409 -3 - endloop - endfacet - facet normal 0.326889 0.945063 -0 - outer loop - vertex -29.687 19.1409 -3 - vertex -33.0651 20.3093 0 - vertex -29.687 19.1409 0 - endloop - endfacet - facet normal 0.326889 0.945063 0 - outer loop - vertex -33.0651 20.3093 0 - vertex -29.687 19.1409 -3 - vertex -33.0651 20.3093 -3 - endloop - endfacet - facet normal 0.441663 0.897181 -0 - outer loop - vertex -33.0651 20.3093 -3 - vertex -35.7552 21.6337 0 - vertex -33.0651 20.3093 0 - endloop - endfacet - facet normal 0.441663 0.897181 0 - outer loop - vertex -35.7552 21.6337 0 - vertex -33.0651 20.3093 -3 - vertex -35.7552 21.6337 -3 - endloop - endfacet - facet normal 0.596659 0.802495 -0 - outer loop - vertex -35.7552 21.6337 -3 - vertex -37.6991 23.0789 0 - vertex -35.7552 21.6337 0 - endloop - endfacet - facet normal 0.596659 0.802495 0 - outer loop - vertex -37.6991 23.0789 0 - vertex -35.7552 21.6337 -3 - vertex -37.6991 23.0789 -3 - endloop - endfacet - facet normal 0.746999 0.664825 0 - outer loop - vertex -37.6991 23.0789 0 - vertex -38.3729 23.836 -3 - vertex -38.3729 23.836 0 - endloop - endfacet - facet normal 0.746999 0.664825 0 - outer loop - vertex -38.3729 23.836 -3 - vertex -37.6991 23.0789 0 - vertex -37.6991 23.0789 -3 - endloop - endfacet - facet normal 0.857117 0.515122 0 - outer loop - vertex -38.3729 23.836 0 - vertex -38.8382 24.6102 -3 - vertex -38.8382 24.6102 0 - endloop - endfacet - facet normal 0.857117 0.515122 0 - outer loop - vertex -38.8382 24.6102 -3 - vertex -38.3729 23.836 0 - vertex -38.3729 23.836 -3 - endloop - endfacet - facet normal 0.945559 0.32545 0 - outer loop - vertex -38.8382 24.6102 0 - vertex -39.1303 25.4589 -3 - vertex -39.1303 25.4589 0 - endloop - endfacet - facet normal 0.945559 0.32545 0 - outer loop - vertex -39.1303 25.4589 -3 - vertex -38.8382 24.6102 0 - vertex -38.8382 24.6102 -3 - endloop - endfacet - facet normal 0.969805 -0.24388 0 - outer loop - vertex -39.1303 25.4589 0 - vertex -39.0347 25.8392 -3 - vertex -39.0347 25.8392 0 - endloop - endfacet - facet normal 0.969805 -0.24388 0 - outer loop - vertex -39.0347 25.8392 -3 - vertex -39.1303 25.4589 0 - vertex -39.1303 25.4589 -3 - endloop - endfacet - facet normal -0.217347 -0.976094 0 - outer loop - vertex -39.0347 25.8392 -3 - vertex -38.5782 25.7376 0 - vertex -39.0347 25.8392 0 - endloop - endfacet - facet normal -0.217347 -0.976094 -0 - outer loop - vertex -38.5782 25.7376 0 - vertex -39.0347 25.8392 -3 - vertex -38.5782 25.7376 -3 - endloop - endfacet - facet normal -0.602798 -0.797894 0 - outer loop - vertex -38.5782 25.7376 -3 - vertex -37.7877 25.1404 0 - vertex -38.5782 25.7376 0 - endloop - endfacet - facet normal -0.602798 -0.797894 -0 - outer loop - vertex -37.7877 25.1404 0 - vertex -38.5782 25.7376 -3 - vertex -37.7877 25.1404 -3 - endloop - endfacet - facet normal -0.582847 -0.812582 0 - outer loop - vertex -37.7877 25.1404 -3 - vertex -36.1697 23.9798 0 - vertex -37.7877 25.1404 0 - endloop - endfacet - facet normal -0.582847 -0.812582 -0 - outer loop - vertex -36.1697 23.9798 0 - vertex -37.7877 25.1404 -3 - vertex -36.1697 23.9798 -3 - endloop - endfacet - facet normal -0.438905 -0.898534 0 - outer loop - vertex -36.1697 23.9798 -3 - vertex -34.2108 23.023 0 - vertex -36.1697 23.9798 0 - endloop - endfacet - facet normal -0.438905 -0.898534 -0 - outer loop - vertex -34.2108 23.023 0 - vertex -36.1697 23.9798 -3 - vertex -34.2108 23.023 -3 - endloop - endfacet - facet normal -0.304923 -0.952377 0 - outer loop - vertex -34.2108 23.023 -3 - vertex -32.1178 22.3529 0 - vertex -34.2108 23.023 0 - endloop - endfacet - facet normal -0.304923 -0.952377 -0 - outer loop - vertex -32.1178 22.3529 0 - vertex -34.2108 23.023 -3 - vertex -32.1178 22.3529 -3 - endloop - endfacet - facet normal -0.147036 -0.989131 0 - outer loop - vertex -32.1178 22.3529 -3 - vertex -30.0976 22.0525 0 - vertex -32.1178 22.3529 0 - endloop - endfacet - facet normal -0.147036 -0.989131 -0 - outer loop - vertex -30.0976 22.0525 0 - vertex -32.1178 22.3529 -3 - vertex -30.0976 22.0525 -3 - endloop - endfacet - facet normal -0.0457632 -0.998952 0 - outer loop - vertex -30.0976 22.0525 -3 - vertex -28.3511 21.9725 0 - vertex -30.0976 22.0525 0 - endloop - endfacet - facet normal -0.0457632 -0.998952 -0 - outer loop - vertex -28.3511 21.9725 0 - vertex -30.0976 22.0525 -3 - vertex -28.3511 21.9725 -3 - endloop - endfacet - facet normal 0.491954 0.870621 -0 - outer loop - vertex -28.3511 21.9725 -3 - vertex -29.0303 22.3563 0 - vertex -28.3511 21.9725 0 - endloop - endfacet - facet normal 0.491954 0.870621 0 - outer loop - vertex -29.0303 22.3563 0 - vertex -28.3511 21.9725 -3 - vertex -29.0303 22.3563 -3 - endloop - endfacet - facet normal 0.563624 0.826031 -0 - outer loop - vertex -29.0303 22.3563 -3 - vertex -30.3878 23.2826 0 - vertex -29.0303 22.3563 0 - endloop - endfacet - facet normal 0.563624 0.826031 0 - outer loop - vertex -30.3878 23.2826 0 - vertex -29.0303 22.3563 -3 - vertex -30.3878 23.2826 -3 - endloop - endfacet - facet normal 0.796403 0.604766 0 - outer loop - vertex -30.3878 23.2826 0 - vertex -31.0943 24.213 -3 - vertex -31.0943 24.213 0 - endloop - endfacet - facet normal 0.796403 0.604766 0 - outer loop - vertex -31.0943 24.213 -3 - vertex -30.3878 23.2826 0 - vertex -30.3878 23.2826 -3 - endloop - endfacet - facet normal 0.951494 0.307667 0 - outer loop - vertex -31.0943 24.213 0 - vertex -31.2773 24.779 -3 - vertex -31.2773 24.779 0 - endloop - endfacet - facet normal 0.951494 0.307667 0 - outer loop - vertex -31.2773 24.779 -3 - vertex -31.0943 24.213 0 - vertex -31.0943 24.213 -3 - endloop - endfacet - facet normal 0.935098 -0.35439 0 - outer loop - vertex -31.2773 24.779 0 - vertex -31.1793 25.0376 -3 - vertex -31.1793 25.0376 0 - endloop - endfacet - facet normal 0.935098 -0.35439 0 - outer loop - vertex -31.1793 25.0376 -3 - vertex -31.2773 24.779 0 - vertex -31.2773 24.779 -3 - endloop - endfacet - facet normal -0.153546 -0.988142 0 - outer loop - vertex -31.1793 25.0376 -3 - vertex -30.8173 24.9813 0 - vertex -31.1793 25.0376 0 - endloop - endfacet - facet normal -0.153546 -0.988142 -0 - outer loop - vertex -30.8173 24.9813 0 - vertex -31.1793 25.0376 -3 - vertex -30.8173 24.9813 -3 - endloop - endfacet - facet normal -0.527885 -0.849316 0 - outer loop - vertex -30.8173 24.9813 -3 - vertex -30.2081 24.6027 0 - vertex -30.8173 24.9813 0 - endloop - endfacet - facet normal -0.527885 -0.849316 -0 - outer loop - vertex -30.2081 24.6027 0 - vertex -30.8173 24.9813 -3 - vertex -30.2081 24.6027 -3 - endloop - endfacet - facet normal -0.502983 -0.864296 0 - outer loop - vertex -30.2081 24.6027 -3 - vertex -29.3958 24.13 0 - vertex -30.2081 24.6027 0 - endloop - endfacet - facet normal -0.502983 -0.864296 -0 - outer loop - vertex -29.3958 24.13 0 - vertex -30.2081 24.6027 -3 - vertex -29.3958 24.13 -3 - endloop - endfacet - facet normal -0.286557 -0.958063 0 - outer loop - vertex -29.3958 24.13 -3 - vertex -28.4642 23.8513 0 - vertex -29.3958 24.13 0 - endloop - endfacet - facet normal -0.286557 -0.958063 -0 - outer loop - vertex -28.4642 23.8513 0 - vertex -29.3958 24.13 -3 - vertex -28.4642 23.8513 -3 - endloop - endfacet - facet normal -0.0843211 -0.996439 0 - outer loop - vertex -28.4642 23.8513 -3 - vertex -27.3687 23.7586 0 - vertex -28.4642 23.8513 0 - endloop - endfacet - facet normal -0.0843211 -0.996439 -0 - outer loop - vertex -27.3687 23.7586 0 - vertex -28.4642 23.8513 -3 - vertex -27.3687 23.7586 -3 - endloop - endfacet - facet normal 0.065101 -0.997879 0 - outer loop - vertex -27.3687 23.7586 -3 - vertex -26.0647 23.8437 0 - vertex -27.3687 23.7586 0 - endloop - endfacet - facet normal 0.065101 -0.997879 0 - outer loop - vertex -26.0647 23.8437 0 - vertex -27.3687 23.7586 -3 - vertex -26.0647 23.8437 -3 - endloop - endfacet - facet normal 0.119464 -0.992839 0 - outer loop - vertex -26.0647 23.8437 -3 - vertex -24.664 24.0122 0 - vertex -26.0647 23.8437 0 - endloop - endfacet - facet normal 0.119464 -0.992839 0 - outer loop - vertex -24.664 24.0122 0 - vertex -26.0647 23.8437 -3 - vertex -24.664 24.0122 -3 - endloop - endfacet - facet normal 0.193693 0.981062 -0 - outer loop - vertex -24.664 24.0122 -3 - vertex -26.0224 24.2804 0 - vertex -24.664 24.0122 0 - endloop - endfacet - facet normal 0.193693 0.981062 0 - outer loop - vertex -26.0224 24.2804 0 - vertex -24.664 24.0122 -3 - vertex -26.0224 24.2804 -3 - endloop - endfacet - facet normal 0.282043 0.959402 -0 - outer loop - vertex -26.0224 24.2804 -3 - vertex -28.1365 24.9019 0 - vertex -26.0224 24.2804 0 - endloop - endfacet - facet normal 0.282043 0.959402 0 - outer loop - vertex -28.1365 24.9019 0 - vertex -26.0224 24.2804 -3 - vertex -28.1365 24.9019 -3 - endloop - endfacet - facet normal 0.487989 0.87285 -0 - outer loop - vertex -28.1365 24.9019 -3 - vertex -29.9035 25.8898 0 - vertex -28.1365 24.9019 0 - endloop - endfacet - facet normal 0.487989 0.87285 0 - outer loop - vertex -29.9035 25.8898 0 - vertex -28.1365 24.9019 -3 - vertex -29.9035 25.8898 -3 - endloop - endfacet - facet normal 0.641558 0.767075 -0 - outer loop - vertex -29.9035 25.8898 -3 - vertex -31.116 26.9038 0 - vertex -29.9035 25.8898 0 - endloop - endfacet - facet normal 0.641558 0.767075 0 - outer loop - vertex -31.116 26.9038 0 - vertex -29.9035 25.8898 -3 - vertex -31.116 26.9038 -3 - endloop - endfacet - facet normal 0.876545 0.48132 0 - outer loop - vertex -31.116 26.9038 0 - vertex -31.2912 27.2229 -3 - vertex -31.2912 27.2229 0 - endloop - endfacet - facet normal 0.876545 0.48132 0 - outer loop - vertex -31.2912 27.2229 -3 - vertex -31.116 26.9038 0 - vertex -31.116 26.9038 -3 - endloop - endfacet - facet normal 0.956151 -0.292876 0 - outer loop - vertex -31.2912 27.2229 0 - vertex -31.2177 27.4629 -3 - vertex -31.2177 27.4629 0 - endloop - endfacet - facet normal 0.956151 -0.292876 0 - outer loop - vertex -31.2177 27.4629 -3 - vertex -31.2912 27.2229 0 - vertex -31.2912 27.2229 -3 - endloop - endfacet - facet normal 0.0512406 -0.998686 0 - outer loop - vertex -31.2177 27.4629 -3 - vertex -30.666 27.4912 0 - vertex -31.2177 27.4629 0 - endloop - endfacet - facet normal 0.0512406 -0.998686 0 - outer loop - vertex -30.666 27.4912 0 - vertex -31.2177 27.4629 -3 - vertex -30.666 27.4912 -3 - endloop - endfacet - facet normal -0.343857 -0.939022 0 - outer loop - vertex -30.666 27.4912 -3 - vertex -29.2879 26.9865 0 - vertex -30.666 27.4912 0 - endloop - endfacet - facet normal -0.343857 -0.939022 -0 - outer loop - vertex -29.2879 26.9865 0 - vertex -30.666 27.4912 -3 - vertex -29.2879 26.9865 -3 - endloop - endfacet - facet normal -0.315787 -0.94883 0 - outer loop - vertex -29.2879 26.9865 -3 - vertex -27.4214 26.3653 0 - vertex -29.2879 26.9865 0 - endloop - endfacet - facet normal -0.315787 -0.94883 -0 - outer loop - vertex -27.4214 26.3653 0 - vertex -29.2879 26.9865 -3 - vertex -27.4214 26.3653 -3 - endloop - endfacet - facet normal -0.0620611 -0.998072 0 - outer loop - vertex -27.4214 26.3653 -3 - vertex -24.8433 26.205 0 - vertex -27.4214 26.3653 0 - endloop - endfacet - facet normal -0.0620611 -0.998072 -0 - outer loop - vertex -24.8433 26.205 0 - vertex -27.4214 26.3653 -3 - vertex -24.8433 26.205 -3 - endloop - endfacet - facet normal 0.0113967 -0.999935 0 - outer loop - vertex -24.8433 26.205 -3 - vertex -22.0473 26.2369 0 - vertex -24.8433 26.205 0 - endloop - endfacet - facet normal 0.0113967 -0.999935 0 - outer loop - vertex -22.0473 26.2369 0 - vertex -24.8433 26.205 -3 - vertex -22.0473 26.2369 -3 - endloop - endfacet - facet normal 0.196528 -0.980498 0 - outer loop - vertex -22.0473 26.2369 -3 - vertex -21.4485 26.3569 0 - vertex -22.0473 26.2369 0 - endloop - endfacet - facet normal 0.196528 -0.980498 0 - outer loop - vertex -21.4485 26.3569 0 - vertex -22.0473 26.2369 -3 - vertex -21.4485 26.3569 -3 - endloop - endfacet - facet normal 0.743557 -0.668673 0 - outer loop - vertex -21.4485 26.3569 0 - vertex -21.2681 26.5576 -3 - vertex -21.2681 26.5576 0 - endloop - endfacet - facet normal 0.743557 -0.668673 0 - outer loop - vertex -21.2681 26.5576 -3 - vertex -21.4485 26.3569 0 - vertex -21.4485 26.3569 -3 - endloop - endfacet - facet normal 0.261077 0.965318 -0 - outer loop - vertex -21.2681 26.5576 -3 - vertex -22.4212 26.8695 0 - vertex -21.2681 26.5576 0 - endloop - endfacet - facet normal 0.261077 0.965318 0 - outer loop - vertex -22.4212 26.8695 0 - vertex -21.2681 26.5576 -3 - vertex -22.4212 26.8695 -3 - endloop - endfacet - facet normal 0.309949 0.950753 -0 - outer loop - vertex -22.4212 26.8695 -3 - vertex -23.8902 27.3484 0 - vertex -22.4212 26.8695 0 - endloop - endfacet - facet normal 0.309949 0.950753 0 - outer loop - vertex -23.8902 27.3484 0 - vertex -22.4212 26.8695 -3 - vertex -23.8902 27.3484 -3 - endloop - endfacet - facet normal 0.603717 0.797199 -0 - outer loop - vertex -23.8902 27.3484 -3 - vertex -24.3225 27.6757 0 - vertex -23.8902 27.3484 0 - endloop - endfacet - facet normal 0.603717 0.797199 0 - outer loop - vertex -24.3225 27.6757 0 - vertex -23.8902 27.3484 -3 - vertex -24.3225 27.6757 -3 - endloop - endfacet - facet normal 0.98955 0.144189 0 - outer loop - vertex -24.3225 27.6757 0 - vertex -24.3632 27.9554 -3 - vertex -24.3632 27.9554 0 - endloop - endfacet - facet normal 0.98955 0.144189 0 - outer loop - vertex -24.3632 27.9554 -3 - vertex -24.3225 27.6757 0 - vertex -24.3225 27.6757 -3 - endloop - endfacet - facet normal -0.0279773 -0.999609 0 - outer loop - vertex -24.3632 27.9554 -3 - vertex -22.4093 27.9007 0 - vertex -24.3632 27.9554 0 - endloop - endfacet - facet normal -0.0279773 -0.999609 -0 - outer loop - vertex -22.4093 27.9007 0 - vertex -24.3632 27.9554 -3 - vertex -22.4093 27.9007 -3 - endloop - endfacet - facet normal -0.150133 -0.988666 0 - outer loop - vertex -22.4093 27.9007 -3 - vertex -20.8096 27.6578 0 - vertex -22.4093 27.9007 0 - endloop - endfacet - facet normal -0.150133 -0.988666 -0 - outer loop - vertex -20.8096 27.6578 0 - vertex -22.4093 27.9007 -3 - vertex -20.8096 27.6578 -3 - endloop - endfacet - facet normal -0.458094 -0.888904 0 - outer loop - vertex -20.8096 27.6578 -3 - vertex -19.9485 27.2141 0 - vertex -20.8096 27.6578 0 - endloop - endfacet - facet normal -0.458094 -0.888904 -0 - outer loop - vertex -19.9485 27.2141 0 - vertex -20.8096 27.6578 -3 - vertex -19.9485 27.2141 -3 - endloop - endfacet - facet normal -0.64002 -0.768358 0 - outer loop - vertex -19.9485 27.2141 -3 - vertex -19.335 26.703 0 - vertex -19.9485 27.2141 0 - endloop - endfacet - facet normal -0.64002 -0.768358 -0 - outer loop - vertex -19.335 26.703 0 - vertex -19.9485 27.2141 -3 - vertex -19.335 26.703 -3 - endloop - endfacet - facet normal 0.254037 -0.967194 0 - outer loop - vertex -19.335 26.703 -3 - vertex -16.9875 27.3196 0 - vertex -19.335 26.703 0 - endloop - endfacet - facet normal 0.254037 -0.967194 0 - outer loop - vertex -16.9875 27.3196 0 - vertex -19.335 26.703 -3 - vertex -16.9875 27.3196 -3 - endloop - endfacet - facet normal 0.212489 -0.977163 0 - outer loop - vertex -16.9875 27.3196 -3 - vertex -15.2376 27.7001 0 - vertex -16.9875 27.3196 0 - endloop - endfacet - facet normal 0.212489 -0.977163 0 - outer loop - vertex -15.2376 27.7001 0 - vertex -16.9875 27.3196 -3 - vertex -15.2376 27.7001 -3 - endloop - endfacet - facet normal 0.0813778 -0.996683 0 - outer loop - vertex -15.2376 27.7001 -3 - vertex -13.5562 27.8374 0 - vertex -15.2376 27.7001 0 - endloop - endfacet - facet normal 0.0813778 -0.996683 0 - outer loop - vertex -13.5562 27.8374 0 - vertex -15.2376 27.7001 -3 - vertex -13.5562 27.8374 -3 - endloop - endfacet - facet normal -0.0507625 -0.998711 0 - outer loop - vertex -13.5562 27.8374 -3 - vertex -11.546 27.7352 0 - vertex -13.5562 27.8374 0 - endloop - endfacet - facet normal -0.0507625 -0.998711 -0 - outer loop - vertex -11.546 27.7352 0 - vertex -13.5562 27.8374 -3 - vertex -11.546 27.7352 -3 - endloop - endfacet - facet normal -0.122536 -0.992464 0 - outer loop - vertex -11.546 27.7352 -3 - vertex -8.80952 27.3973 0 - vertex -11.546 27.7352 0 - endloop - endfacet - facet normal -0.122536 -0.992464 -0 - outer loop - vertex -8.80952 27.3973 0 - vertex -11.546 27.7352 -3 - vertex -8.80952 27.3973 -3 - endloop - endfacet - facet normal -0.0983783 -0.995149 0 - outer loop - vertex -8.80952 27.3973 -3 - vertex -7.25507 27.2437 0 - vertex -8.80952 27.3973 0 - endloop - endfacet - facet normal -0.0983783 -0.995149 -0 - outer loop - vertex -7.25507 27.2437 0 - vertex -8.80952 27.3973 -3 - vertex -7.25507 27.2437 -3 - endloop - endfacet - facet normal 0.163792 -0.986495 0 - outer loop - vertex -7.25507 27.2437 -3 - vertex -6.55612 27.3597 0 - vertex -7.25507 27.2437 0 - endloop - endfacet - facet normal 0.163792 -0.986495 0 - outer loop - vertex -6.55612 27.3597 0 - vertex -7.25507 27.2437 -3 - vertex -6.55612 27.3597 -3 - endloop - endfacet - facet normal 0.830428 -0.557126 0 - outer loop - vertex -6.55612 27.3597 0 - vertex -6.38329 27.6173 -3 - vertex -6.38329 27.6173 0 - endloop - endfacet - facet normal 0.830428 -0.557126 0 - outer loop - vertex -6.38329 27.6173 -3 - vertex -6.55612 27.3597 0 - vertex -6.55612 27.3597 -3 - endloop - endfacet - facet normal 0.987965 -0.154679 0 - outer loop - vertex -6.38329 27.6173 0 - vertex -6.28322 28.2565 -3 - vertex -6.28322 28.2565 0 - endloop - endfacet - facet normal 0.987965 -0.154679 0 - outer loop - vertex -6.28322 28.2565 -3 - vertex -6.38329 27.6173 0 - vertex -6.38329 27.6173 -3 - endloop - endfacet - facet normal 0.99984 -0.0178603 0 - outer loop - vertex -6.28322 28.2565 0 - vertex -6.22131 31.7226 -3 - vertex -6.22131 31.7226 0 - endloop - endfacet - facet normal 0.99984 -0.0178603 0 - outer loop - vertex -6.22131 31.7226 -3 - vertex -6.28322 28.2565 0 - vertex -6.28322 28.2565 -3 - endloop - endfacet - facet normal 0.999322 -0.0368307 0 - outer loop - vertex -6.22131 31.7226 0 - vertex -6.055 36.2349 -3 - vertex -6.055 36.2349 0 - endloop - endfacet - facet normal 0.999322 -0.0368307 0 - outer loop - vertex -6.055 36.2349 -3 - vertex -6.22131 31.7226 0 - vertex -6.22131 31.7226 -3 - endloop - endfacet - facet normal 0.823305 -0.5676 0 - outer loop - vertex -6.055 36.2349 0 - vertex -5.8163 36.5812 -3 - vertex -5.8163 36.5812 0 - endloop - endfacet - facet normal 0.823305 -0.5676 0 - outer loop - vertex -5.8163 36.5812 -3 - vertex -6.055 36.2349 0 - vertex -6.055 36.2349 -3 - endloop - endfacet - facet normal -0.301391 -0.953501 0 - outer loop - vertex -5.8163 36.5812 -3 - vertex -5.55994 36.5001 0 - vertex -5.8163 36.5812 0 - endloop - endfacet - facet normal -0.301391 -0.953501 -0 - outer loop - vertex -5.55994 36.5001 0 - vertex -5.8163 36.5812 -3 - vertex -5.55994 36.5001 -3 - endloop - endfacet - facet normal -0.928472 -0.371402 0 - outer loop - vertex -4.97284 35.0324 -3 - vertex -5.55994 36.5001 0 - vertex -5.55994 36.5001 -3 - endloop - endfacet - facet normal -0.928472 -0.371402 0 - outer loop - vertex -5.55994 36.5001 0 - vertex -4.97284 35.0324 -3 - vertex -4.97284 35.0324 0 - endloop - endfacet - facet normal -0.946087 -0.323913 0 - outer loop - vertex -3.97987 32.1322 -3 - vertex -4.97284 35.0324 0 - vertex -4.97284 35.0324 -3 - endloop - endfacet - facet normal -0.946087 -0.323913 0 - outer loop - vertex -4.97284 35.0324 0 - vertex -3.97987 32.1322 -3 - vertex -3.97987 32.1322 0 - endloop - endfacet - facet normal -0.891782 -0.452466 0 - outer loop - vertex -2.77953 29.7664 -3 - vertex -3.97987 32.1322 0 - vertex -3.97987 32.1322 -3 - endloop - endfacet - facet normal -0.891782 -0.452466 0 - outer loop - vertex -3.97987 32.1322 0 - vertex -2.77953 29.7664 -3 - vertex -2.77953 29.7664 0 - endloop - endfacet - facet normal -0.788004 -0.61567 0 - outer loop - vertex -1.46161 28.0795 -3 - vertex -2.77953 29.7664 0 - vertex -2.77953 29.7664 -3 - endloop - endfacet - facet normal -0.788004 -0.61567 0 - outer loop - vertex -2.77953 29.7664 0 - vertex -1.46161 28.0795 -3 - vertex -1.46161 28.0795 0 - endloop - endfacet - facet normal -0.627252 -0.778816 0 - outer loop - vertex -1.46161 28.0795 -3 - vertex -0.786632 27.5359 0 - vertex -1.46161 28.0795 0 - endloop - endfacet - facet normal -0.627252 -0.778816 -0 - outer loop - vertex -0.786632 27.5359 0 - vertex -1.46161 28.0795 -3 - vertex -0.786632 27.5359 -3 - endloop - endfacet - facet normal -0.430266 -0.902702 0 - outer loop - vertex -0.786632 27.5359 -3 - vertex -0.115935 27.2162 0 - vertex -0.786632 27.5359 0 - endloop - endfacet - facet normal -0.430266 -0.902702 -0 - outer loop - vertex -0.115935 27.2162 0 - vertex -0.786632 27.5359 -3 - vertex -0.115935 27.2162 -3 - endloop - endfacet - facet normal -0.108301 -0.994118 0 - outer loop - vertex -0.115935 27.2162 -3 - vertex 0.858783 27.1101 0 - vertex -0.115935 27.2162 0 - endloop - endfacet - facet normal -0.108301 -0.994118 -0 - outer loop - vertex 0.858783 27.1101 0 - vertex -0.115935 27.2162 -3 - vertex 0.858783 27.1101 -3 - endloop - endfacet - facet normal 0.992113 -0.125344 0 - outer loop - vertex 0.858783 27.1101 0 - vertex 1.04836 28.6106 -3 - vertex 1.04836 28.6106 0 - endloop - endfacet - facet normal 0.992113 -0.125344 0 - outer loop - vertex 1.04836 28.6106 -3 - vertex 0.858783 27.1101 0 - vertex 0.858783 27.1101 -3 - endloop - endfacet - facet normal 0.998104 -0.0615481 0 - outer loop - vertex 1.04836 28.6106 0 - vertex 1.1273 29.8907 -3 - vertex 1.1273 29.8907 0 - endloop - endfacet - facet normal 0.998104 -0.0615481 0 - outer loop - vertex 1.1273 29.8907 -3 - vertex 1.04836 28.6106 0 - vertex 1.04836 28.6106 -3 - endloop - endfacet - facet normal 0.981864 -0.189585 0 - outer loop - vertex 1.1273 29.8907 0 - vertex 1.37489 31.173 -3 - vertex 1.37489 31.173 0 - endloop - endfacet - facet normal 0.981864 -0.189585 0 - outer loop - vertex 1.37489 31.173 -3 - vertex 1.1273 29.8907 0 - vertex 1.1273 29.8907 -3 - endloop - endfacet - facet normal 0.935462 -0.353427 0 - outer loop - vertex 1.37489 31.173 0 - vertex 2.44067 33.9939 -3 - vertex 2.44067 33.9939 0 - endloop - endfacet - facet normal 0.935462 -0.353427 0 - outer loop - vertex 2.44067 33.9939 -3 - vertex 1.37489 31.173 0 - vertex 1.37489 31.173 -3 - endloop - endfacet - facet normal 0.883303 -0.468802 0 - outer loop - vertex 2.44067 33.9939 0 - vertex 4.08079 37.0842 -3 - vertex 4.08079 37.0842 0 - endloop - endfacet - facet normal 0.883303 -0.468802 0 - outer loop - vertex 4.08079 37.0842 -3 - vertex 2.44067 33.9939 0 - vertex 2.44067 33.9939 -3 - endloop - endfacet - facet normal 0.814108 -0.580714 0 - outer loop - vertex 4.08079 37.0842 0 - vertex 5.15152 38.5852 -3 - vertex 5.15152 38.5852 0 - endloop - endfacet - facet normal 0.814108 -0.580714 0 - outer loop - vertex 5.15152 38.5852 -3 - vertex 4.08079 37.0842 0 - vertex 4.08079 37.0842 -3 - endloop - endfacet - facet normal -0.809167 -0.587578 0 - outer loop - vertex 5.25321 38.4452 -3 - vertex 5.15152 38.5852 0 - vertex 5.15152 38.5852 -3 - endloop - endfacet - facet normal -0.809167 -0.587578 0 - outer loop - vertex 5.15152 38.5852 0 - vertex 5.25321 38.4452 -3 - vertex 5.25321 38.4452 0 - endloop - endfacet - facet normal -0.887211 -0.461365 0 - outer loop - vertex 8.028 17.0592 -3 - vertex 7.15178 18.7442 0 - vertex 7.15178 18.7442 -3 - endloop - endfacet - facet normal -0.887211 -0.461365 0 - outer loop - vertex 7.15178 18.7442 0 - vertex 8.028 17.0592 -3 - vertex 8.028 17.0592 0 - endloop - endfacet - facet normal -0.822305 -0.569047 0 - outer loop - vertex 8.86535 15.8492 -3 - vertex 8.028 17.0592 0 - vertex 8.028 17.0592 -3 - endloop - endfacet - facet normal -0.822305 -0.569047 0 - outer loop - vertex 8.028 17.0592 0 - vertex 8.86535 15.8492 -3 - vertex 8.86535 15.8492 0 - endloop - endfacet - facet normal 0.359337 -0.933208 0 - outer loop - vertex 8.86535 15.8492 -3 - vertex 9.72145 16.1788 0 - vertex 8.86535 15.8492 0 - endloop - endfacet - facet normal 0.359337 -0.933208 0 - outer loop - vertex 9.72145 16.1788 0 - vertex 8.86535 15.8492 -3 - vertex 9.72145 16.1788 -3 - endloop - endfacet - facet normal 0.425917 -0.904762 0 - outer loop - vertex 9.72145 16.1788 -3 - vertex 10.4258 16.5104 0 - vertex 9.72145 16.1788 0 - endloop - endfacet - facet normal 0.425917 -0.904762 0 - outer loop - vertex 10.4258 16.5104 0 - vertex 9.72145 16.1788 -3 - vertex 10.4258 16.5104 -3 - endloop - endfacet - facet normal 0.716732 0.697349 0 - outer loop - vertex 10.4258 16.5104 0 - vertex 9.76373 17.1908 -3 - vertex 9.76373 17.1908 0 - endloop - endfacet - facet normal 0.716732 0.697349 0 - outer loop - vertex 9.76373 17.1908 -3 - vertex 10.4258 16.5104 0 - vertex 10.4258 16.5104 -3 - endloop - endfacet - facet normal 0.65174 0.758443 -0 - outer loop - vertex 9.76373 17.1908 -3 - vertex 8.30319 18.4459 0 - vertex 9.76373 17.1908 0 - endloop - endfacet - facet normal 0.65174 0.758443 0 - outer loop - vertex 8.30319 18.4459 0 - vertex 9.76373 17.1908 -3 - vertex 8.30319 18.4459 -3 - endloop - endfacet - facet normal 0.52501 0.851096 -0 - outer loop - vertex 8.30319 18.4459 -3 - vertex 7.1994 19.1268 0 - vertex 8.30319 18.4459 0 - endloop - endfacet - facet normal 0.52501 0.851096 0 - outer loop - vertex 7.1994 19.1268 0 - vertex 8.30319 18.4459 -3 - vertex 7.1994 19.1268 -3 - endloop - endfacet - facet normal -0.992345 0.123496 0 - outer loop - vertex 7.15178 18.7442 -3 - vertex 7.1994 19.1268 0 - vertex 7.1994 19.1268 -3 - endloop - endfacet - facet normal -0.992345 0.123496 0 - outer loop - vertex 7.1994 19.1268 0 - vertex 7.15178 18.7442 -3 - vertex 7.15178 18.7442 0 - endloop - endfacet - facet normal -0.148843 0.988861 0 - outer loop - vertex -16.6107 24.7853 -3 - vertex -20.4324 24.2101 0 - vertex -16.6107 24.7853 0 - endloop - endfacet - facet normal -0.148843 0.988861 0 - outer loop - vertex -20.4324 24.2101 0 - vertex -16.6107 24.7853 -3 - vertex -20.4324 24.2101 -3 - endloop - endfacet - facet normal -0.117787 0.993039 0 - outer loop - vertex -20.4324 24.2101 -3 - vertex -23.3809 23.8604 0 - vertex -20.4324 24.2101 0 - endloop - endfacet - facet normal -0.117787 0.993039 0 - outer loop - vertex -23.3809 23.8604 0 - vertex -20.4324 24.2101 -3 - vertex -23.3809 23.8604 -3 - endloop - endfacet - facet normal -0.645441 -0.76381 0 - outer loop - vertex -23.3809 23.8604 -3 - vertex -22.6641 23.2546 0 - vertex -23.3809 23.8604 0 - endloop - endfacet - facet normal -0.645441 -0.76381 -0 - outer loop - vertex -22.6641 23.2546 0 - vertex -23.3809 23.8604 -3 - vertex -22.6641 23.2546 -3 - endloop - endfacet - facet normal -0.546303 -0.837588 0 - outer loop - vertex -22.6641 23.2546 -3 - vertex -22.0432 22.8497 0 - vertex -22.6641 23.2546 0 - endloop - endfacet - facet normal -0.546303 -0.837588 -0 - outer loop - vertex -22.0432 22.8497 0 - vertex -22.6641 23.2546 -3 - vertex -22.0432 22.8497 -3 - endloop - endfacet - facet normal -0.238224 -0.97121 0 - outer loop - vertex -22.0432 22.8497 -3 - vertex -21.5591 22.7309 0 - vertex -22.0432 22.8497 0 - endloop - endfacet - facet normal -0.238224 -0.97121 -0 - outer loop - vertex -21.5591 22.7309 0 - vertex -22.0432 22.8497 -3 - vertex -21.5591 22.7309 -3 - endloop - endfacet - facet normal 0.148545 -0.988906 0 - outer loop - vertex -21.5591 22.7309 -3 - vertex -19.3275 23.0662 0 - vertex -21.5591 22.7309 0 - endloop - endfacet - facet normal 0.148545 -0.988906 0 - outer loop - vertex -19.3275 23.0662 0 - vertex -21.5591 22.7309 -3 - vertex -19.3275 23.0662 -3 - endloop - endfacet - facet normal 0.149712 -0.98873 0 - outer loop - vertex -19.3275 23.0662 -3 - vertex -14.1729 23.8467 0 - vertex -19.3275 23.0662 0 - endloop - endfacet - facet normal 0.149712 -0.98873 0 - outer loop - vertex -14.1729 23.8467 0 - vertex -19.3275 23.0662 -3 - vertex -14.1729 23.8467 -3 - endloop - endfacet - facet normal 0.152324 -0.988331 0 - outer loop - vertex -14.1729 23.8467 -3 - vertex -10.5829 24.4 0 - vertex -14.1729 23.8467 0 - endloop - endfacet - facet normal 0.152324 -0.988331 0 - outer loop - vertex -10.5829 24.4 0 - vertex -14.1729 23.8467 -3 - vertex -10.5829 24.4 -3 - endloop - endfacet - facet normal 0.753595 0.657339 0 - outer loop - vertex -10.5829 24.4 0 - vertex -10.6709 24.5009 -3 - vertex -10.6709 24.5009 0 - endloop - endfacet - facet normal 0.753595 0.657339 0 - outer loop - vertex -10.6709 24.5009 -3 - vertex -10.5829 24.4 0 - vertex -10.5829 24.4 -3 - endloop - endfacet - facet normal 0.323243 0.946316 -0 - outer loop - vertex -10.6709 24.5009 -3 - vertex -11.2742 24.7069 0 - vertex -10.6709 24.5009 0 - endloop - endfacet - facet normal 0.323243 0.946316 0 - outer loop - vertex -11.2742 24.7069 0 - vertex -10.6709 24.5009 -3 - vertex -11.2742 24.7069 -3 - endloop - endfacet - facet normal 0.105601 0.994409 -0 - outer loop - vertex -11.2742 24.7069 -3 - vertex -13.9393 24.99 0 - vertex -11.2742 24.7069 0 - endloop - endfacet - facet normal 0.105601 0.994409 0 - outer loop - vertex -13.9393 24.99 0 - vertex -11.2742 24.7069 -3 - vertex -13.9393 24.99 -3 - endloop - endfacet - facet normal -0.0763677 0.99708 0 - outer loop - vertex -13.9393 24.99 -3 - vertex -16.6107 24.7853 0 - vertex -13.9393 24.99 0 - endloop - endfacet - facet normal -0.0763677 0.99708 0 - outer loop - vertex -16.6107 24.7853 0 - vertex -13.9393 24.99 -3 - vertex -16.6107 24.7853 -3 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -117.5 -117.5 -3 - vertex -117.5 117.5 0 - vertex -117.5 117.5 -3 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex -117.5 117.5 0 - vertex -117.5 -117.5 -3 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.5713 -25.7117 0 - vertex -27.9105 -26.2055 0 - vertex -28.1036 -25.8829 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.142 -25.4759 0 - vertex -28.1838 -28.4809 0 - vertex -28.5713 -25.7117 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.9105 -26.2055 0 - vertex -28.5713 -25.7117 0 - vertex -28.1838 -28.4809 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.9073 -13.512 0 - vertex -35.4871 -14.1281 0 - vertex -35.5739 -13.718 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.5262 -13.4531 0 - vertex -35.4871 -14.1281 0 - vertex -35.9073 -13.512 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.4871 -14.1281 0 - vertex -36.5262 -13.4531 0 - vertex -35.6081 -14.799 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.2393 -13.2576 0 - vertex -35.6081 -14.799 0 - vertex -36.5262 -13.4531 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.6081 -14.799 0 - vertex -37.2393 -13.2576 0 - vertex -37.0548 -18.7102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.5366 -12.7854 0 - vertex -37.0548 -18.7102 0 - vertex -37.2393 -13.2576 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.8382 24.6102 0 - vertex -37.3951 -12.1929 0 - vertex -38.3729 23.836 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.1303 25.4589 0 - vertex -37.3951 -12.1929 0 - vertex -38.8382 24.6102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.3951 -12.1929 0 - vertex -39.1303 25.4589 0 - vertex -37.5366 -12.7854 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.5366 -12.7854 0 - vertex -39.9072 -25.4747 0 - vertex -37.0548 -18.7102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.8577 -36.863 0 - vertex -37.5366 -12.7854 0 - vertex -39.1303 25.4589 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.0224 24.2804 0 - vertex -26.0647 23.8437 0 - vertex -24.664 24.0122 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.0224 24.2804 0 - vertex -27.3687 23.7586 0 - vertex -26.0647 23.8437 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1365 24.9019 0 - vertex -27.3687 23.7586 0 - vertex -26.0224 24.2804 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1365 24.9019 0 - vertex -28.4642 23.8513 0 - vertex -27.3687 23.7586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1365 24.9019 0 - vertex -29.3958 24.13 0 - vertex -28.4642 23.8513 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9035 25.8898 0 - vertex -29.3958 24.13 0 - vertex -28.1365 24.9019 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9035 25.8898 0 - vertex -30.2081 24.6027 0 - vertex -29.3958 24.13 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9035 25.8898 0 - vertex -30.8173 24.9813 0 - vertex -30.2081 24.6027 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1793 25.0376 0 - vertex -29.9035 25.8898 0 - vertex -31.116 26.9038 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9035 25.8898 0 - vertex -31.1793 25.0376 0 - vertex -30.8173 24.9813 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2912 27.2229 0 - vertex -31.1793 25.0376 0 - vertex -31.116 26.9038 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.2108 23.023 0 - vertex -31.1793 25.0376 0 - vertex -31.2912 27.2229 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5389 20.1801 0 - vertex -11.1208 19.5935 0 - vertex -10.9412 20.0018 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5389 20.1801 0 - vertex -12.0133 18.8648 0 - vertex -11.1208 19.5935 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.9783 20.2187 0 - vertex -12.0133 18.8648 0 - vertex -11.5389 20.1801 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.9783 20.2187 0 - vertex -15.009 16.7116 0 - vertex -12.0133 18.8648 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.3196 19.9968 0 - vertex -15.009 16.7116 0 - vertex -12.9783 20.2187 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.3196 19.9968 0 - vertex -17.0754 15.711 0 - vertex -15.009 16.7116 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.1789 19.4139 0 - vertex -17.0754 15.711 0 - vertex -16.3196 19.9968 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.0754 15.711 0 - vertex -20.1789 19.4139 0 - vertex -19.733 14.7364 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.1789 19.4139 0 - vertex -22.3118 14.0374 0 - vertex -19.733 14.7364 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.1572 19.0472 0 - vertex -22.3118 14.0374 0 - vertex -20.1789 19.4139 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.1572 19.0472 0 - vertex -24.873 13.6003 0 - vertex -22.3118 14.0374 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.5587 18.9414 0 - vertex -24.873 13.6003 0 - vertex -24.1572 19.0472 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.873 13.6003 0 - vertex -27.5587 18.9414 0 - vertex -27.4778 13.4117 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.687 19.1409 0 - vertex -27.4778 13.4117 0 - vertex -27.5587 18.9414 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.687 19.1409 0 - vertex -29.9412 13.2465 0 - vertex -27.4778 13.4117 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.687 19.1409 0 - vertex -30.3118 13.0393 0 - vertex -29.9412 13.2465 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.0651 20.3093 0 - vertex -30.3118 13.0393 0 - vertex -29.687 19.1409 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3118 13.0393 0 - vertex -33.0651 20.3093 0 - vertex -30.3887 12.6783 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.2082 3.44442 0 - vertex 23.5966 4.95794 0 - vertex 23.3811 5.8089 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.5966 4.95794 0 - vertex 23.2082 3.44442 0 - vertex 23.5377 4.18291 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.8875 6.77518 0 - vertex 23.2082 3.44442 0 - vertex 23.3811 5.8089 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.0239 2.90744 0 - vertex 23.2082 3.44442 0 - vertex 22.8875 6.77518 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.0239 2.90744 0 - vertex 22.8875 6.77518 0 - vertex 21.7142 8.22365 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 47.2139 -19.2263 0 - vertex 26.9177 3.98634 0 - vertex 26.953 2.16551 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 26.9177 3.98634 0 - vertex 27.209 8.08714 0 - vertex 26.8985 6.51977 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.7235 1.18648 0 - vertex 38.4798 -20.1181 0 - vertex 26.8464 1.29842 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9177 3.98634 0 - vertex 27.528 9.70386 0 - vertex 27.209 8.08714 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.4798 -20.1181 0 - vertex 26.7235 1.18648 0 - vertex 29.9429 -19.4981 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.9429 -19.4981 0 - vertex 26.7235 1.18648 0 - vertex 28.989 -19.2301 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.6777 -11.13 0 - vertex 28.989 -19.2301 0 - vertex 26.7235 1.18648 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9081 -2.19366 0 - vertex 26.7235 1.18648 0 - vertex 26.5455 1.2697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.989 -19.2301 0 - vertex 19.6777 -11.13 0 - vertex 27.8281 -19.1444 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.9858 2.16372 0 - vertex 26.5455 1.2697 0 - vertex 25.9977 1.96397 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.8281 -19.1444 0 - vertex 19.6777 -11.13 0 - vertex 26.5413 -19.2026 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.7523 2.4559 0 - vertex 25.9977 1.96397 0 - vertex 25.3153 2.68052 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.7523 2.4559 0 - vertex 25.3153 2.68052 0 - vertex 25.0347 2.67962 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.9858 2.16372 0 - vertex 25.9977 1.96397 0 - vertex 24.7523 2.4559 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.5455 1.2697 0 - vertex 23.9858 2.16372 0 - vertex 21.0968 -1.15452 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0968 -1.15452 0 - vertex 23.9858 2.16372 0 - vertex 23.1222 1.97635 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.7235 1.18648 0 - vertex 20.9081 -2.19366 0 - vertex 20.4179 -3.0084 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0282 0.220415 0 - vertex 23.1222 1.97635 0 - vertex 22.8505 1.9828 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0282 0.220415 0 - vertex 22.8505 1.9828 0 - vertex 22.7784 2.30129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.2082 3.44442 0 - vertex 16.0239 2.90744 0 - vertex 22.7784 2.30129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.5455 1.2697 0 - vertex 21.0968 -1.15452 0 - vertex 20.9081 -2.19366 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.5413 -19.2026 0 - vertex 19.6777 -11.13 0 - vertex 25.4359 -19.4082 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.1222 1.97635 0 - vertex 21.0282 0.220415 0 - vertex 21.0968 -1.15452 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3368 5.33522 0 - vertex 21.7142 8.22365 0 - vertex 19.7157 9.66569 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 19.4865 -0.127098 0 - vertex 22.7784 2.30129 0 - vertex 16.0239 2.90744 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9551 7.69881 0 - vertex 19.7157 9.66569 0 - vertex 18.6847 10.137 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.7784 2.30129 0 - vertex 19.4865 -0.127098 0 - vertex 21.0282 0.220415 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 16.8564 0.883682 0 - vertex 19.4865 -0.127098 0 - vertex 16.0239 2.90744 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9551 7.69881 0 - vertex 18.6847 10.137 0 - vertex 17.337 10.3363 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4865 -0.127098 0 - vertex 16.8564 0.883682 0 - vertex 18.2674 -0.466912 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.2674 -0.466912 0 - vertex 16.8564 0.883682 0 - vertex 17.6745 -0.267811 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3572 9.74689 0 - vertex 17.337 10.3363 0 - vertex 15.9933 10.3315 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3572 9.74689 0 - vertex 15.9933 10.3315 0 - vertex 15.6762 10.1383 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9426 8.95486 0 - vertex 17.337 10.3363 0 - vertex 15.3572 9.74689 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.7142 8.22365 0 - vertex 15.3368 5.33522 0 - vertex 16.0239 2.90744 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7157 9.66569 0 - vertex 14.9551 7.69881 0 - vertex 15.3368 5.33522 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.337 10.3363 0 - vertex 14.9426 8.95486 0 - vertex 14.9551 7.69881 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.4359 -19.4082 0 - vertex 19.6777 -11.13 0 - vertex 23.0737 -20.4525 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.7235 1.18648 0 - vertex 20.4179 -3.0084 0 - vertex 19.6777 -11.13 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 17.1521 -17.7131 0 - vertex 23.0737 -20.4525 0 - vertex 19.6777 -11.13 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0737 -20.4525 0 - vertex 17.1521 -17.7131 0 - vertex 21.6367 -21.3703 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.4179 -3.0084 0 - vertex 19.5452 -10.7956 0 - vertex 19.6777 -11.13 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.4334 -3.80993 0 - vertex 19.5452 -10.7956 0 - vertex 20.4179 -3.0084 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 17.7619 -4.80944 0 - vertex 19.5452 -10.7956 0 - vertex 19.4334 -3.80993 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5452 -10.7956 0 - vertex 17.7619 -4.80944 0 - vertex 19.0845 -10.6988 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.0012 -6.23992 0 - vertex 19.0845 -10.6988 0 - vertex 17.7619 -4.80944 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0845 -10.6988 0 - vertex 15.0012 -6.23992 0 - vertex 16.7993 -11.2316 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.6103 -7.15898 0 - vertex 16.7993 -11.2316 0 - vertex 15.0012 -6.23992 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.7993 -11.2316 0 - vertex 12.6103 -7.15898 0 - vertex 13.71 -12.1451 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.71 -12.1451 0 - vertex 12.6103 -7.15898 0 - vertex 13.1035 -12.4147 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.2421 -7.67101 0 - vertex 13.1035 -12.4147 0 - vertex 12.6103 -7.15898 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.1035 -12.4147 0 - vertex 10.2421 -7.67101 0 - vertex 12.6527 -12.8127 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.6527 -12.8127 0 - vertex 10.2421 -7.67101 0 - vertex 12.4073 -13.2773 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.2177 -19.5302 0 - vertex 12.4073 -13.2773 0 - vertex 10.3474 -19.1774 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.058 -19.7199 0 - vertex 11.2177 -19.5302 0 - vertex 11.7785 -19.8211 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.4073 -13.2773 0 - vertex 11.2177 -19.5302 0 - vertex 12.058 -19.7199 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 7.54923 -7.88041 0 - vertex 12.4073 -13.2773 0 - vertex 10.2421 -7.67101 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.4073 -13.2773 0 - vertex 8.75581 -19.1712 0 - vertex 10.3474 -19.1774 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.06268 -19.3694 0 - vertex 12.4073 -13.2773 0 - vertex 7.54923 -7.88041 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.4073 -13.2773 0 - vertex 7.06268 -19.3694 0 - vertex 8.75581 -19.1712 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.03167 -7.88498 0 - vertex 7.06268 -19.3694 0 - vertex 7.54923 -7.88041 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.06268 -19.3694 0 - vertex 5.03167 -7.88498 0 - vertex 5.689 -19.9339 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.854 -7.59505 0 - vertex 5.689 -19.9339 0 - vertex 5.03167 -7.88498 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.854 -7.59505 0 - vertex 3.72385 -21.1527 0 - vertex 5.689 -19.9339 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -4.70045 -19.8327 0 - vertex 3.72385 -21.1527 0 - vertex 3.854 -7.59505 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.57075 -19.2012 0 - vertex 3.854 -7.59505 0 - vertex 1.04019 -5.91722 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -4.06681 -20.6308 0 - vertex 3.72385 -21.1527 0 - vertex -4.70045 -19.8327 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -3.85646 -21.6547 0 - vertex 1.84511 -22.661 0 - vertex -4.06681 -20.6308 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.57075 -19.2012 0 - vertex 1.04019 -5.91722 0 - vertex -2.05653 -4.03047 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.84511 -22.661 0 - vertex -3.85646 -21.6547 0 - vertex 0.168338 -24.355 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.168338 -24.355 0 - vertex -3.89417 -22.8317 0 - vertex -1.19093 -26.1306 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.1272 -19.1706 0 - vertex -2.05653 -4.03047 0 - vertex -3.45272 -3.03042 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4385 -11.5861 0 - vertex -3.45272 -3.03042 0 - vertex -3.71458 -2.66291 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -4.26405 -24.3543 0 - vertex -1.19093 -26.1306 0 - vertex -3.89417 -22.8317 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.6367 -21.3703 0 - vertex 17.1521 -17.7131 0 - vertex 20.2954 -22.4759 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2954 -22.4759 0 - vertex 17.1521 -17.7131 0 - vertex 19.0386 -23.7798 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.5835 -23.8342 0 - vertex 19.0386 -23.7798 0 - vertex 17.1521 -17.7131 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0386 -23.7798 0 - vertex 14.5835 -23.8342 0 - vertex 17.855 -25.2923 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.855 -25.2923 0 - vertex 14.5835 -23.8342 0 - vertex 16.4055 -27.6373 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.4055 -27.6373 0 - vertex 14.5835 -23.8342 0 - vertex 15.3794 -29.9771 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3794 -29.9771 0 - vertex 11.4887 -31.4602 0 - vertex 14.7938 -32.2631 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.4887 -31.4602 0 - vertex 15.3794 -29.9771 0 - vertex 14.5835 -23.8342 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.1513 17.7384 0 - vertex 26.0816 17.5963 0 - vertex 25.9892 18.2943 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.1513 17.7384 0 - vertex 25.9892 18.2943 0 - vertex 25.7331 18.8483 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 25.704 16.8274 0 - vertex 26.0816 17.5963 0 - vertex 25.4738 17.2443 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0816 17.5963 0 - vertex 25.704 16.8274 0 - vertex 25.8979 16.7563 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5942 18.0475 0 - vertex 25.7331 18.8483 0 - vertex 25.3447 19.2137 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0816 17.5963 0 - vertex 25.1513 17.7384 0 - vertex 25.4738 17.2443 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5942 18.0475 0 - vertex 25.3447 19.2137 0 - vertex 24.8554 19.3454 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.7331 18.8483 0 - vertex 24.5942 18.0475 0 - vertex 25.1513 17.7384 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.3909 19.6849 0 - vertex 24.5942 18.0475 0 - vertex 24.8554 19.3454 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.335 18.2522 0 - vertex 23.3909 19.6849 0 - vertex 22.6368 20.047 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.3909 19.6849 0 - vertex 22.335 18.2522 0 - vertex 24.5942 18.0475 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9591 18.304 0 - vertex 22.6368 20.047 0 - vertex 22.0911 20.5797 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.6596 20.6529 0 - vertex 22.0911 20.5797 0 - vertex 21.7245 21.3239 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.4421 21.9215 0 - vertex 21.7245 21.3239 0 - vertex 21.508 22.3204 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4421 21.9215 0 - vertex 21.508 22.3204 0 - vertex 21.2518 23.2891 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.0911 20.5797 0 - vertex 19.6596 20.6529 0 - vertex 19.8405 19.3078 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.9185 22.6398 0 - vertex 21.2518 23.2891 0 - vertex 20.762 24.0784 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.6368 20.047 0 - vertex 20.9591 18.304 0 - vertex 22.335 18.2522 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.9185 22.6398 0 - vertex 20.762 24.0784 0 - vertex 20.0338 24.6942 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.0911 20.5797 0 - vertex 19.8405 19.3078 0 - vertex 20.9591 18.304 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9591 18.304 0 - vertex 19.8405 19.3078 0 - vertex 20.2006 18.5903 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.7245 21.3239 0 - vertex 19.4421 21.9215 0 - vertex 19.6596 20.6529 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.9185 22.6398 0 - vertex 20.0338 24.6942 0 - vertex 19.062 25.1422 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.2518 23.2891 0 - vertex 18.9185 22.6398 0 - vertex 19.4421 21.9215 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.062 25.1422 0 - vertex 17.6852 23.4449 0 - vertex 18.9185 22.6398 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.2513 25.98 0 - vertex 17.6852 23.4449 0 - vertex 19.062 25.1422 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1211 24.4531 0 - vertex 17.2513 25.98 0 - vertex 15.7223 27.2873 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.4969 25.2416 0 - vertex 15.7223 27.2873 0 - vertex 15.122 28.0941 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.2513 25.98 0 - vertex 15.1211 24.4531 0 - vertex 17.6852 23.4449 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.7374 28.4518 0 - vertex 15.122 28.0941 0 - vertex 15.0577 29.0611 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.7223 27.2873 0 - vertex 13.4969 25.2416 0 - vertex 15.1211 24.4531 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.0303 22.3563 0 - vertex -30.0976 22.0525 0 - vertex -28.3511 21.9725 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3878 23.2826 0 - vertex -30.0976 22.0525 0 - vertex -29.0303 22.3563 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.1178 22.3529 0 - vertex -30.3878 23.2826 0 - vertex -31.0943 24.213 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3878 23.2826 0 - vertex -32.1178 22.3529 0 - vertex -30.0976 22.0525 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.2108 23.023 0 - vertex -31.0943 24.213 0 - vertex -31.2773 24.779 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1793 25.0376 0 - vertex -34.2108 23.023 0 - vertex -31.2773 24.779 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5428 -26.6889 0 - vertex -23.655 -30.4649 0 - vertex -23.4462 -30.738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.4741 -26.9141 0 - vertex -18.5428 -26.6889 0 - vertex -24.4076 -24.3815 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5428 -26.6889 0 - vertex -25.4741 -26.9141 0 - vertex -23.655 -30.4649 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.655 -30.4649 0 - vertex -25.4741 -26.9141 0 - vertex -24.0819 -30.2475 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.0819 -30.2475 0 - vertex -25.4741 -26.9141 0 - vertex -24.4667 -30.1541 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.2338 -28.3696 0 - vertex -24.4667 -30.1541 0 - vertex -25.4741 -26.9141 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.4667 -30.1541 0 - vertex -26.2338 -28.3696 0 - vertex -24.8569 -30.2998 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.8752 -29.0336 0 - vertex -24.8569 -30.2998 0 - vertex -26.2338 -28.3696 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8569 -30.2998 0 - vertex -26.8752 -29.0336 0 - vertex -26.8283 -32.1012 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.5872 -29.1914 0 - vertex -26.8283 -32.1012 0 - vertex -26.8752 -29.0336 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1878 -29.097 0 - vertex -26.8283 -32.1012 0 - vertex -27.5872 -29.1914 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1878 -29.097 0 - vertex -29.0969 -33.8499 0 - vertex -26.8283 -32.1012 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1838 -28.4809 0 - vertex -32.142 -25.4759 0 - vertex -28.1878 -29.097 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -35.4824 -26.6225 0 - vertex -28.1878 -29.097 0 - vertex -32.142 -25.4759 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1878 -29.097 0 - vertex -30.2578 -34.4631 0 - vertex -29.0969 -33.8499 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1878 -29.097 0 - vertex -31.3644 -34.8586 0 - vertex -30.2578 -34.4631 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.4824 -26.6225 0 - vertex -32.142 -25.4759 0 - vertex -34.9626 -25.4747 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1878 -29.097 0 - vertex -35.4824 -26.6225 0 - vertex -31.3644 -34.8586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.3644 -34.8586 0 - vertex -35.4824 -26.6225 0 - vertex -35.0529 -35.0835 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -38.7331 -34.5543 0 - vertex -35.0529 -35.0835 0 - vertex -35.4824 -26.6225 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.0529 -35.0835 0 - vertex -38.7331 -34.5543 0 - vertex -38.4261 -34.9619 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.6886 -22.3738 0 - vertex -24.4076 -24.3815 0 - vertex -18.5428 -26.6889 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.8149 -31.5911 0 - vertex -21.28 -33.2523 0 - vertex -23.4462 -30.738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5428 -26.6889 0 - vertex -23.4462 -30.738 0 - vertex -21.28 -33.2523 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.7956 -33.2498 0 - vertex -21.28 -33.2523 0 - vertex -23.8149 -31.5911 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.28 -33.2523 0 - vertex -24.7956 -33.2498 0 - vertex -22.458 -35.4568 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -23.6767 -35.9691 0 - vertex -22.458 -35.4568 0 - vertex -24.7956 -33.2498 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.458 -35.4568 0 - vertex -23.6767 -35.9691 0 - vertex -23.007 -35.8619 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.6767 -35.9691 0 - vertex -24.7956 -33.2498 0 - vertex -24.4194 -36.2501 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2791 -36.8782 0 - vertex -24.4194 -36.2501 0 - vertex -24.7956 -33.2498 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.4194 -36.2501 0 - vertex -27.2791 -36.8782 0 - vertex -24.9699 -36.888 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.9699 -36.888 0 - vertex -27.2791 -36.8782 0 - vertex -25.157 -37.5754 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4212 26.8695 0 - vertex -21.4485 26.3569 0 - vertex -21.2681 26.5576 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.4485 26.3569 0 - vertex -22.4212 26.8695 0 - vertex -22.0473 26.2369 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8433 26.205 0 - vertex -22.4212 26.8695 0 - vertex -23.8902 27.3484 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4212 26.8695 0 - vertex -24.8433 26.205 0 - vertex -22.0473 26.2369 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3225 27.6757 0 - vertex -24.8433 26.205 0 - vertex -23.8902 27.3484 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.4214 26.3653 0 - vertex -24.3225 27.6757 0 - vertex -24.3632 27.9554 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.78909 -22.7249 0 - vertex -8.46819 -23.4267 0 - vertex -8.55624 -22.9989 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.46819 -23.4267 0 - vertex -8.78909 -22.7249 0 - vertex -9.69161 -22.56 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.46819 -23.4267 0 - vertex -9.69161 -22.56 0 - vertex -8.72405 -24.8218 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.5461 -22.7271 0 - vertex -8.72405 -24.8218 0 - vertex -9.69161 -22.56 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.3967 -23.0769 0 - vertex -8.72405 -24.8218 0 - vertex -10.5461 -22.7271 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -12.4124 -23.7203 0 - vertex -8.72405 -24.8218 0 - vertex -11.3967 -23.0769 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.72405 -24.8218 0 - vertex -12.4124 -23.7203 0 - vertex -9.55184 -27.0667 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.1427 -24.3848 0 - vertex -9.55184 -27.0667 0 - vertex -12.4124 -23.7203 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.2216 -26.3227 0 - vertex -9.55184 -27.0667 0 - vertex -13.7062 -25.2068 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.55184 -27.0667 0 - vertex -15.3894 -29.1914 0 - vertex -11.5932 -32.143 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.55184 -27.0667 0 - vertex -13.1427 -24.3848 0 - vertex -13.7062 -25.2068 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.3894 -29.1914 0 - vertex -9.55184 -27.0667 0 - vertex -14.2216 -26.3227 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.8281 -32.7116 0 - vertex -11.5932 -32.143 0 - vertex -15.3894 -29.1914 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5932 -32.143 0 - vertex -16.8281 -32.7116 0 - vertex -12.3385 -33.8339 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.3385 -33.8339 0 - vertex -16.8281 -32.7116 0 - vertex -13.0448 -35.0276 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -14.3732 -35.9691 0 - vertex -13.0448 -35.0276 0 - vertex -16.8281 -32.7116 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.0448 -35.0276 0 - vertex -14.3732 -35.9691 0 - vertex -13.7203 -35.7356 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.3732 -35.9691 0 - vertex -16.8281 -32.7116 0 - vertex -14.8949 -36.1495 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -16.5846 -36.2152 0 - vertex -14.8949 -36.1495 0 - vertex -16.8281 -32.7116 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.6989 -37.6188 0 - vertex -15.9213 -37.1689 0 - vertex -16.2226 -36.752 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.8949 -36.1495 0 - vertex -16.5846 -36.2152 0 - vertex -15.4682 -36.5832 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.4682 -36.5832 0 - vertex -16.2226 -36.752 0 - vertex -15.9213 -37.1689 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.4682 -36.5832 0 - vertex -16.5846 -36.2152 0 - vertex -16.2226 -36.752 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.7285 -35.3062 0 - vertex -16.5846 -36.2152 0 - vertex -16.8281 -32.7116 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.5846 -36.2152 0 - vertex -17.7285 -35.3062 0 - vertex -17.3742 -35.9691 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.3742 -35.9691 0 - vertex -17.7285 -35.3062 0 - vertex -17.6987 -35.8223 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.3766 -20.1728 0 - vertex -11.7016 -19.4898 0 - vertex -11.6824 -19.9072 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.45272 -3.03042 0 - vertex -11.9141 -19.2259 0 - vertex -11.7016 -19.4898 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.45272 -3.03042 0 - vertex -17.4385 -11.5861 0 - vertex -11.9141 -19.2259 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.5299 12.3491 0 - vertex -3.71458 -2.66291 0 - vertex -13.7227 13.3517 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.4456 -12.0833 0 - vertex -11.9141 -19.2259 0 - vertex -17.4385 -11.5861 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.9141 -19.2259 0 - vertex -17.4456 -12.0833 0 - vertex -12.3137 -19.1333 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7993 -11.4712 0 - vertex -3.71458 -2.66291 0 - vertex -17.5299 12.3491 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.71458 -2.66291 0 - vertex -17.7993 -11.4712 0 - vertex -17.4385 -11.5861 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.0298 12.0063 0 - vertex -17.7993 -11.4712 0 - vertex -17.5299 12.3491 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.4428 11.7593 0 - vertex -17.7993 -11.4712 0 - vertex -20.0298 12.0063 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.1868 -11.3523 0 - vertex -22.4428 11.7593 0 - vertex -25.7097 11.6586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4428 11.7593 0 - vertex -27.1868 -11.3523 0 - vertex -17.7993 -11.4712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.6588 11.7129 0 - vertex -27.1868 -11.3523 0 - vertex -25.7097 11.6586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.87 -11.3196 0 - vertex -28.6588 11.7129 0 - vertex -30.1182 11.9311 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.792 -11.6364 0 - vertex -30.1182 11.9311 0 - vertex -30.3887 12.6783 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.7552 21.6337 0 - vertex -30.3887 12.6783 0 - vertex -33.0651 20.3093 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.6588 11.7129 0 - vertex -34.87 -11.3196 0 - vertex -27.1868 -11.3523 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.6991 23.0789 0 - vertex -30.3887 12.6783 0 - vertex -35.7552 21.6337 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1182 11.9311 0 - vertex -36.1936 -11.4238 0 - vertex -34.87 -11.3196 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1182 11.9311 0 - vertex -36.792 -11.6364 0 - vertex -36.1936 -11.4238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3887 12.6783 0 - vertex -37.6991 23.0789 0 - vertex -36.792 -11.6364 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.792 -11.6364 0 - vertex -37.6991 23.0789 0 - vertex -37.3951 -12.1929 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.3729 23.836 0 - vertex -37.3951 -12.1929 0 - vertex -37.6991 23.0789 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.80393 -35.193 0 - vertex -7.51249 -36.3769 0 - vertex -7.31439 -36.7536 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.99709 -33.5697 0 - vertex -8.33648 -34.384 0 - vertex -7.51249 -36.3769 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.51249 -36.3769 0 - vertex -8.33648 -34.384 0 - vertex -7.98605 -36.0592 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -8.56822 -35.3052 0 - vertex -7.98605 -36.0592 0 - vertex -8.33648 -34.384 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.98605 -36.0592 0 - vertex -8.56822 -35.3052 0 - vertex -8.51129 -35.7129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.41055 11.926 0 - vertex 1.8467 12.7398 0 - vertex 1.50002 13.1874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.8467 12.7398 0 - vertex 1.41055 11.926 0 - vertex 1.87173 12.344 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.918757 13.5702 0 - vertex 1.41055 11.926 0 - vertex 1.50002 13.1874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.918757 13.5702 0 - vertex 0.535115 11.4454 0 - vertex 1.41055 11.926 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.918757 13.5702 0 - vertex -0.394194 11.1972 0 - vertex 0.535115 11.4454 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.928844 14.138 0 - vertex -0.394194 11.1972 0 - vertex 0.918757 13.5702 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.928844 14.138 0 - vertex -1.46211 11.1697 0 - vertex -0.394194 11.1972 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.928844 14.138 0 - vertex -2.75335 11.3511 0 - vertex -1.46211 11.1697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.65881 14.4362 0 - vertex -2.75335 11.3511 0 - vertex -0.928844 14.138 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.65881 14.4362 0 - vertex -5.07797 11.6776 0 - vertex -2.75335 11.3511 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.23385 14.4578 0 - vertex -5.07797 11.6776 0 - vertex -3.65881 14.4362 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.07797 11.6776 0 - vertex -7.23385 14.4578 0 - vertex -5.71478 11.6495 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.71478 11.6495 0 - vertex -7.23385 14.4578 0 - vertex -5.93765 11.491 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.7227 13.3517 0 - vertex -5.93765 11.491 0 - vertex -10.6367 14.238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.99153 10.6633 0 - vertex -13.7227 13.3517 0 - vertex -3.71458 -2.66291 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.45272 -3.03042 0 - vertex -8.78621 -19.378 0 - vertex -7.1272 -19.1706 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.45272 -3.03042 0 - vertex -11.7016 -19.4898 0 - vertex -8.78621 -19.378 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.7016 -19.4898 0 - vertex -10.3766 -20.1728 0 - vertex -8.78621 -19.378 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.8627 -20.4599 0 - vertex -10.3766 -20.1728 0 - vertex -11.6824 -19.9072 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.3766 -20.1728 0 - vertex -11.8627 -20.4599 0 - vertex -12.0544 -21.102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.3137 -19.1333 0 - vertex -17.4456 -12.0833 0 - vertex -15.1553 -19.8912 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.3785 -17.1305 0 - vertex -15.1553 -19.8912 0 - vertex -17.4456 -12.0833 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.1553 -19.8912 0 - vertex -19.3785 -17.1305 0 - vertex -17.9982 -20.7653 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.683 -17.584 0 - vertex -17.9982 -20.7653 0 - vertex -19.3785 -17.1305 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.1126 -17.9213 0 - vertex -17.9982 -20.7653 0 - vertex -19.683 -17.584 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.9982 -20.7653 0 - vertex -20.1126 -17.9213 0 - vertex -18.4336 -21.0091 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.8179 -22.6324 0 - vertex -17.299 -23.335 0 - vertex -17.2695 -22.7276 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.3659 -22.5704 0 - vertex -17.299 -23.335 0 - vertex -17.8179 -22.6324 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.3659 -22.5704 0 - vertex -18.5428 -26.6889 0 - vertex -17.299 -23.335 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.6886 -22.3738 0 - vertex -18.5428 -26.6889 0 - vertex -18.3659 -22.5704 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.7084 -21.5139 0 - vertex -22.6991 -20.0641 0 - vertex -18.7986 -22.0269 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.6062 -18.108 0 - vertex -18.4336 -21.0091 0 - vertex -20.1126 -17.9213 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.4336 -21.0091 0 - vertex -20.6062 -18.108 0 - vertex -18.7084 -21.5139 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.6991 -20.0641 0 - vertex -20.6062 -18.108 0 - vertex -22.6057 -19.3555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.6062 -18.108 0 - vertex -22.6991 -20.0641 0 - vertex -18.7084 -21.5139 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.6057 -19.3555 0 - vertex -20.6062 -18.108 0 - vertex -21.1029 -18.1093 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.1278 -21.2395 0 - vertex -18.7986 -22.0269 0 - vertex -22.6991 -20.0641 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.6057 -19.3555 0 - vertex -21.1029 -18.1093 0 - vertex -21.3898 -18.0171 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.8641 -19.008 0 - vertex -21.3898 -18.0171 0 - vertex -21.538 -17.8042 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.4908 -18.9156 0 - vertex -21.538 -17.8042 0 - vertex -21.5846 -16.4428 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.1413 -14.5577 0 - vertex -21.5846 -16.4428 0 - vertex -21.6401 -15.0493 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.1413 -14.5577 0 - vertex -21.6401 -15.0493 0 - vertex -21.8106 -14.7733 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.7986 -22.0269 0 - vertex -23.1278 -21.2395 0 - vertex -18.6886 -22.3738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5846 -16.4428 0 - vertex -22.1413 -14.5577 0 - vertex -23.3419 -14.2877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.4076 -24.3815 0 - vertex -18.6886 -22.3738 0 - vertex -23.1278 -21.2395 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.28 -33.2523 0 - vertex -22.458 -35.4568 0 - vertex -21.9191 -34.6287 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.3898 -18.0171 0 - vertex -22.8641 -19.008 0 - vertex -22.6057 -19.3555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5846 -16.4428 0 - vertex -23.3419 -14.2877 0 - vertex -23.4908 -18.9156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.538 -17.8042 0 - vertex -23.4908 -18.9156 0 - vertex -22.8641 -19.008 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.3419 -14.2877 0 - vertex -24.1111 -19.1062 0 - vertex -23.4908 -18.9156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.1195 -14.1654 0 - vertex -24.1111 -19.1062 0 - vertex -23.3419 -14.2877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.1111 -19.1062 0 - vertex -26.1195 -14.1654 0 - vertex -24.7225 -19.9745 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -30.8809 -15.6487 0 - vertex -24.7225 -19.9745 0 - vertex -26.1195 -14.1654 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.7225 -19.9745 0 - vertex -30.8809 -15.6487 0 - vertex -25.7001 -21.2849 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -32.1593 -18.5412 0 - vertex -25.7001 -21.2849 0 - vertex -30.8809 -15.6487 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.8809 -15.6487 0 - vertex -26.1195 -14.1654 0 - vertex -29.5608 -14.1906 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3887 -14.5514 0 - vertex -29.5608 -14.1906 0 - vertex -30.2116 -14.321 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.5608 -14.1906 0 - vertex -30.3887 -14.5514 0 - vertex -30.8809 -15.6487 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.7001 -21.2849 0 - vertex -32.1593 -18.5412 0 - vertex -26.9351 -22.1109 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.9351 -22.1109 0 - vertex -32.1593 -18.5412 0 - vertex -28.6031 -22.5277 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.6031 -22.5277 0 - vertex -32.1593 -18.5412 0 - vertex -30.8797 -22.6102 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -33.3019 -21.4299 0 - vertex -30.8797 -22.6102 0 - vertex -32.1593 -18.5412 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.8797 -22.6102 0 - vertex -33.3019 -21.4299 0 - vertex -32.5249 -22.5543 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.3019 -21.4299 0 - vertex -33.3295 -22.4108 0 - vertex -32.5249 -22.5543 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -33.3295 -22.4108 0 - vertex -33.3019 -21.4299 0 - vertex -33.5147 -22.0719 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2455 -2.23644 0 - vertex 14.2516 -3.15818 0 - vertex 14.333 -2.7489 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2455 -2.23644 0 - vertex 13.8131 -3.7697 0 - vertex 14.2516 -3.15818 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.172 -4.2601 0 - vertex 14.2455 -2.23644 0 - vertex 13.5923 -0.94501 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2455 -2.23644 0 - vertex 13.172 -4.2601 0 - vertex 13.8131 -3.7697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.5923 -0.94501 0 - vertex 12.4032 -4.58609 0 - vertex 13.172 -4.2601 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.2758 -4.53506 0 - vertex 13.5923 -0.94501 0 - vertex 12.3489 0.629998 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.5923 -0.94501 0 - vertex 11.5814 -4.70438 0 - vertex 12.4032 -4.58609 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.74282 -3.09522 0 - vertex 12.3489 0.629998 0 - vertex 10.5724 2.40247 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.5923 -0.94501 0 - vertex 10.2758 -4.53506 0 - vertex 11.5814 -4.70438 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.41545 -1.76788 0 - vertex 10.5724 2.40247 0 - vertex 9.13441 3.60373 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3489 0.629998 0 - vertex 9.01294 -4.00814 0 - vertex 10.2758 -4.53506 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.6091 0.441775 0 - vertex 9.13441 3.60373 0 - vertex 8.18559 4.25764 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3489 0.629998 0 - vertex 7.74282 -3.09522 0 - vertex 9.01294 -4.00814 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.5724 2.40247 0 - vertex 6.41545 -1.76788 0 - vertex 7.74282 -3.09522 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.39665 0.754678 0 - vertex 8.18559 4.25764 0 - vertex 5.26682 5.76024 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.13441 3.60373 0 - vertex 4.6091 0.441775 0 - vertex 6.41545 -1.76788 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.18559 4.25764 0 - vertex 4.39665 0.754678 0 - vertex 4.6091 0.441775 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.66409 7.13679 0 - vertex 4.39665 0.754678 0 - vertex 5.26682 5.76024 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.39665 0.754678 0 - vertex 1.66409 7.13679 0 - vertex 4.24084 0.464987 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.55278 -2.51803 0 - vertex 4.24084 0.464987 0 - vertex 1.66409 7.13679 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.24084 0.464987 0 - vertex 1.09298 -4.60426 0 - vertex 3.9592 -5.58648 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.55278 -2.51803 0 - vertex 1.66409 7.13679 0 - vertex -0.248642 7.94666 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.24084 0.464987 0 - vertex -1.72768 -3.30659 0 - vertex 1.09298 -4.60426 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.55278 -2.51803 0 - vertex -0.248642 7.94666 0 - vertex -2.78119 9.30203 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.24084 0.464987 0 - vertex -3.55278 -2.51803 0 - vertex -1.72768 -3.30659 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.99153 10.6633 0 - vertex -3.55278 -2.51803 0 - vertex -2.78119 9.30203 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.19093 -26.1306 0 - vertex -4.26405 -24.3543 0 - vertex -2.25121 -28.0146 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -3.89417 -22.8317 0 - vertex 0.168338 -24.355 0 - vertex -3.85646 -21.6547 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.72385 -21.1527 0 - vertex -4.06681 -20.6308 0 - vertex 1.84511 -22.661 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.55278 -2.51803 0 - vertex -4.99153 10.6633 0 - vertex -3.71458 -2.66291 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.7227 13.3517 0 - vertex -4.99153 10.6633 0 - vertex -5.93765 11.491 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.854 -7.59505 0 - vertex -5.57075 -19.2012 0 - vertex -4.70045 -19.8327 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.6367 14.238 0 - vertex -5.93765 11.491 0 - vertex -7.23385 14.4578 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.05653 -4.03047 0 - vertex -7.1272 -19.1706 0 - vertex -5.57075 -19.2012 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.03104 -4.97268 0 - vertex 7.21237 -5.88439 0 - vertex 7.79727 -5.75259 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.81183 -5.98051 0 - vertex 7.03104 -4.97268 0 - vertex 5.97791 -3.63939 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.03104 -4.97268 0 - vertex 5.81183 -5.98051 0 - vertex 7.21237 -5.88439 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.9592 -5.58648 0 - vertex 5.97791 -3.63939 0 - vertex 5.02006 -2.01238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.9592 -5.58648 0 - vertex 5.02006 -2.01238 0 - vertex 4.37015 -0.506109 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.97791 -3.63939 0 - vertex 3.9592 -5.58648 0 - vertex 5.81183 -5.98051 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.9592 -5.58648 0 - vertex 4.37015 -0.506109 0 - vertex 4.24084 0.464987 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.6656 -34.4466 0 - vertex 12.1385 -34.7994 0 - vertex 12.2351 -35.1874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.7938 -32.2631 0 - vertex 11.871 -34.5351 0 - vertex 14.6656 -34.4466 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.6656 -34.4466 0 - vertex 11.871 -34.5351 0 - vertex 12.1385 -34.7994 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.915 -33.0747 0 - vertex 11.871 -34.5351 0 - vertex 11.4887 -31.4602 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.871 -34.5351 0 - vertex 10.915 -33.0747 0 - vertex 11.4551 -34.4353 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.7197 -33.9677 0 - vertex 11.4551 -34.4353 0 - vertex 10.915 -33.0747 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.4551 -34.4353 0 - vertex 10.7197 -33.9677 0 - vertex 10.9006 -34.3507 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.858 -14.1239 0 - vertex 13.2867 -16.8469 0 - vertex 14.1246 -14.3424 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.417 -13.7469 0 - vertex 13.2867 -16.8469 0 - vertex 12.858 -14.1239 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.417 -13.7469 0 - vertex 12.058 -19.7199 0 - vertex 13.2867 -16.8469 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.058 -19.7199 0 - vertex 12.417 -13.7469 0 - vertex 12.4073 -13.2773 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.8088 29.3224 0 - vertex 15.0577 29.0611 0 - vertex 12.0187 29.9363 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.122 28.0941 0 - vertex 11.7374 28.4518 0 - vertex 11.8052 27.5343 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0577 29.0611 0 - vertex 11.8088 29.3224 0 - vertex 11.7374 28.4518 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.122 28.0941 0 - vertex 11.8052 27.5343 0 - vertex 12.0123 26.7794 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.122 28.0941 0 - vertex 12.0123 26.7794 0 - vertex 12.5486 25.9653 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.1542 17.4223 0 - vertex 24.7931 16.6725 0 - vertex 24.7174 17.1695 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.1542 17.4223 0 - vertex 23.3802 15.8262 0 - vertex 24.7931 16.6725 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.547 17.5015 0 - vertex 23.3802 15.8262 0 - vertex 24.1542 17.4223 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.547 17.5015 0 - vertex 21.1653 14.8489 0 - vertex 23.3802 15.8262 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2159 17.5562 0 - vertex 21.1653 14.8489 0 - vertex 22.547 17.5015 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2159 17.5562 0 - vertex 20.0668 14.6265 0 - vertex 21.1653 14.8489 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4164 15.1559 0 - vertex 20.2159 17.5562 0 - vertex 19.8437 17.7553 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.5954 15.8977 0 - vertex 19.8437 17.7553 0 - vertex 19.5351 18.2611 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2045 16.623 0 - vertex 19.5351 18.2611 0 - vertex 19.0948 20.2262 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.155 22.8321 0 - vertex 19.0948 20.2262 0 - vertex 18.6529 22.0992 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2159 17.5562 0 - vertex 18.4164 15.1559 0 - vertex 20.0668 14.6265 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.99 17.4864 0 - vertex 19.0948 20.2262 0 - vertex 17.155 22.8321 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.8437 17.7553 0 - vertex 16.5954 15.8977 0 - vertex 18.4164 15.1559 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.6982 18.6425 0 - vertex 17.155 22.8321 0 - vertex 15.5055 23.4995 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5351 18.2611 0 - vertex 15.2045 16.623 0 - vertex 16.5954 15.8977 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.9729 20.5521 0 - vertex 15.5055 23.4995 0 - vertex 14.0164 24.1527 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0948 20.2262 0 - vertex 13.99 17.4864 0 - vertex 15.2045 16.623 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.9729 20.5521 0 - vertex 14.0164 24.1527 0 - vertex 13.0733 24.7212 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.155 22.8321 0 - vertex 12.6982 18.6425 0 - vertex 13.99 17.4864 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.71033 23.0922 0 - vertex 13.0733 24.7212 0 - vertex 12.1975 25.5292 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.07032 24.476 0 - vertex 12.1975 25.5292 0 - vertex 11.5037 26.4501 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.51885 25.3107 0 - vertex 11.5037 26.4501 0 - vertex 11.1066 27.3577 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.5055 23.4995 0 - vertex 10.9729 20.5521 0 - vertex 12.6982 18.6425 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.91411 25.7528 0 - vertex 11.1066 27.3577 0 - vertex 11.0411 28.3898 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.30515 36.0346 0 - vertex 12.0544 30.7144 0 - vertex 4.72188 37.0399 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.0544 30.7144 0 - vertex 4.30515 36.0346 0 - vertex 11.5971 30.3591 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.57109 31.3388 0 - vertex 11.5971 30.3591 0 - vertex 3.93589 34.5584 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5971 30.3591 0 - vertex 4.30515 36.0346 0 - vertex 3.93589 34.5584 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 4.3138 28.4461 0 - vertex 11.5971 30.3591 0 - vertex 3.57109 31.3388 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5971 30.3591 0 - vertex 4.3138 28.4461 0 - vertex 5.72413 26.6445 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.3138 28.4461 0 - vertex 3.57109 31.3388 0 - vertex 3.67763 29.7129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.41168 -29.738 0 - vertex -2.25121 -28.0146 0 - vertex -4.26405 -24.3543 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.25121 -28.0146 0 - vertex -6.41168 -29.738 0 - vertex -3.14673 -30.0798 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.14673 -30.0798 0 - vertex -6.41168 -29.738 0 - vertex -3.7659 -32.0301 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.8444 -30.1753 0 - vertex 30.1062 -30.7807 0 - vertex 30.2029 -31.1764 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.7817 -27.1595 0 - vertex 29.6885 -30.4984 0 - vertex 30.1062 -30.7807 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.9763 -27.4135 0 - vertex 29.6885 -30.4984 0 - vertex 30.7817 -27.1595 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.6885 -30.4984 0 - vertex 28.9763 -27.4135 0 - vertex 29.2916 -30.4642 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.9763 -27.4135 0 - vertex 28.199 -31.2235 0 - vertex 29.2916 -30.4642 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.3774 -27.4375 0 - vertex 28.199 -31.2235 0 - vertex 28.9763 -27.4135 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.199 -31.2235 0 - vertex 25.3774 -27.4375 0 - vertex 26.4192 -32.7448 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3774 -27.4375 0 - vertex 24.9271 -33.7368 0 - vertex 26.4192 -32.7448 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.5138 -29.5327 0 - vertex 24.9271 -33.7368 0 - vertex 25.3774 -27.4375 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.9271 -33.7368 0 - vertex 19.5138 -29.5327 0 - vertex 23.5816 -34.2758 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.3087 -31.0557 0 - vertex 23.5816 -34.2758 0 - vertex 19.5138 -29.5327 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.2417 -34.4379 0 - vertex 19.3087 -31.0557 0 - vertex 21.4183 -34.349 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.9054 -28.0436 0 - vertex 25.3774 -27.4375 0 - vertex 20.1129 -27.4424 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5138 -29.5327 0 - vertex 25.3774 -27.4375 0 - vertex 19.9054 -28.0436 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.5816 -34.2758 0 - vertex 19.3087 -31.0557 0 - vertex 22.2417 -34.4379 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.3085 -32.3556 0 - vertex 21.4183 -34.349 0 - vertex 19.3087 -31.0557 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.4183 -34.349 0 - vertex 19.3085 -32.3556 0 - vertex 20.6651 -34.0963 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.6651 -34.0963 0 - vertex 19.3085 -32.3556 0 - vertex 20.0228 -33.6987 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0228 -33.6987 0 - vertex 19.3085 -32.3556 0 - vertex 19.5322 -33.1754 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.3585 -24.1311 0 - vertex 37.9618 -36.3241 0 - vertex 38.113 -36.8464 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.8272 -33.2656 0 - vertex 37.9618 -36.3241 0 - vertex 38.2188 -29.6614 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.9618 -36.3241 0 - vertex 36.8272 -33.2656 0 - vertex 37.1913 -36.0604 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.2918 -35.0946 0 - vertex 37.1913 -36.0604 0 - vertex 36.8272 -33.2656 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.1913 -36.0604 0 - vertex 36.2918 -35.0946 0 - vertex 36.3972 -35.7834 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 47.9875 -20.1225 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 47.7267 -19.5813 0 - vertex 47.9875 -20.1225 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.5422 14.7505 0 - vertex 47.7267 -19.5813 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 47.7267 -19.5813 0 - vertex 27.5422 14.7505 0 - vertex 47.2139 -19.2263 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 27.6094 12.2412 0 - vertex 47.2139 -19.2263 0 - vertex 27.5422 14.7505 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.528 9.70386 0 - vertex 47.2139 -19.2263 0 - vertex 27.6094 12.2412 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.9177 3.98634 0 - vertex 47.2139 -19.2263 0 - vertex 27.528 9.70386 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 42.1032 -19.4743 0 - vertex 44.5909 -19.3768 0 - vertex 41.8934 -19.2238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.5909 -19.3768 0 - vertex 42.1032 -19.4743 0 - vertex 42.943 -20.2657 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.2623 -19.1343 0 - vertex 41.5319 -19.1343 0 - vertex 44.5909 -19.3768 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.5909 -19.3768 0 - vertex 41.5319 -19.1343 0 - vertex 41.8934 -19.2238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 47.2139 -19.2263 0 - vertex 26.953 2.16551 0 - vertex 46.2623 -19.1343 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.2623 -19.1343 0 - vertex 26.8464 1.29842 0 - vertex 41.5319 -19.1343 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 31.4974 -26.3899 0 - vertex 35.3305 -26.5156 0 - vertex 31.8275 -24.8188 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.8275 -24.8188 0 - vertex 34.62 -22.2927 0 - vertex 32.0255 -23.3848 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.8086 -21.404 0 - vertex 34.62 -22.2927 0 - vertex 34.9156 -21.474 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.4798 -20.1181 0 - vertex 30.7248 -19.9631 0 - vertex 35.5661 -21.102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.62 -22.2927 0 - vertex 32.0232 -22.2828 0 - vertex 32.0255 -23.3848 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.62 -22.2927 0 - vertex 31.8086 -21.404 0 - vertex 32.0232 -22.2828 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.5661 -21.102 0 - vertex 30.7248 -19.9631 0 - vertex 35.2187 -21.2043 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.9156 -21.474 0 - vertex 31.3699 -20.64 0 - vertex 31.8086 -21.404 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.2187 -21.2043 0 - vertex 31.3699 -20.64 0 - vertex 34.9156 -21.474 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 31.3699 -20.64 0 - vertex 35.2187 -21.2043 0 - vertex 30.7248 -19.9631 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.8464 1.29842 0 - vertex 46.2623 -19.1343 0 - vertex 26.953 2.16551 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.5319 -19.1343 0 - vertex 26.8464 1.29842 0 - vertex 38.4798 -20.1181 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 30.7248 -19.9631 0 - vertex 38.4798 -20.1181 0 - vertex 29.9429 -19.4981 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.4742 18.624 0 - vertex 27.5422 14.7505 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.5422 14.7505 0 - vertex 26.4742 18.624 0 - vertex 27.1755 15.8473 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.1755 15.8473 0 - vertex 26.4742 18.624 0 - vertex 26.6933 17.4601 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 25.9424 19.4837 0 - vertex 26.4742 18.624 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.2755 24.568 0 - vertex 25.9424 19.4837 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 21.8319 23.6658 0 - vertex 25.9424 19.4837 0 - vertex 21.2755 24.568 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.0827 22.427 0 - vertex 25.0752 20.0627 0 - vertex 21.8319 23.6658 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.0752 20.0627 0 - vertex 22.0827 22.427 0 - vertex 23.8499 20.3844 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.2698 21.5943 0 - vertex 23.8499 20.3844 0 - vertex 22.0827 22.427 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.1387 20.59 0 - vertex 22.2698 21.5943 0 - vertex 22.6169 20.9877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.8499 20.3844 0 - vertex 22.2698 21.5943 0 - vertex 23.1387 20.59 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.9424 19.4837 0 - vertex 21.8319 23.6658 0 - vertex 25.0752 20.0627 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.3134 30.0845 0 - vertex 21.2755 24.568 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.2755 24.568 0 - vertex 15.3134 30.0845 0 - vertex 20.1819 25.3734 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.1819 25.3734 0 - vertex 15.4783 29.8698 0 - vertex 18.3193 26.3216 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.3193 26.3216 0 - vertex 15.4783 29.8698 0 - vertex 17.0772 26.9817 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 15.6084 29.1601 0 - vertex 17.0772 26.9817 0 - vertex 15.4783 29.8698 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.0772 26.9817 0 - vertex 15.6084 29.1601 0 - vertex 16.2688 27.6146 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.2688 27.6146 0 - vertex 15.6084 29.1601 0 - vertex 15.808 28.3106 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.1819 25.3734 0 - vertex 15.3134 30.0845 0 - vertex 15.4783 29.8698 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2907 30.5214 0 - vertex 15.0577 29.0611 0 - vertex 15.1584 29.8123 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.122 28.0941 0 - vertex 12.5486 25.9653 0 - vertex 13.4969 25.2416 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2907 30.5214 0 - vertex 15.1584 29.8123 0 - vertex 15.3134 30.0845 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.0187 29.9363 0 - vertex 15.0577 29.0611 0 - vertex 12.2907 30.5214 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.15152 38.5852 0 - vertex 15.3134 30.0845 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 5.25321 38.4452 0 - vertex 15.3134 30.0845 0 - vertex 5.15152 38.5852 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 12.0544 30.7144 0 - vertex 15.3134 30.0845 0 - vertex 5.25321 38.4452 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.0733 24.7212 0 - vertex 9.71033 23.0922 0 - vertex 10.9729 20.5521 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.72413 26.6445 0 - vertex 11.0411 28.3898 0 - vertex 11.2319 29.4873 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.1975 25.5292 0 - vertex 9.07032 24.476 0 - vertex 9.71033 23.0922 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.72413 26.6445 0 - vertex 11.2319 29.4873 0 - vertex 11.5971 30.3591 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5037 26.4501 0 - vertex 8.51885 25.3107 0 - vertex 9.07032 24.476 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.1066 27.3577 0 - vertex 7.91411 25.7528 0 - vertex 8.51885 25.3107 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.0411 28.3898 0 - vertex 7.11433 25.9588 0 - vertex 7.91411 25.7528 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.0411 28.3898 0 - vertex 5.72413 26.6445 0 - vertex 7.11433 25.9588 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.19939 38.083 0 - vertex 12.0544 30.7144 0 - vertex 5.25321 38.4452 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.72188 37.0399 0 - vertex 12.0544 30.7144 0 - vertex 5.19939 38.083 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.11433 25.9588 0 - vertex 5.72413 26.6445 0 - vertex 6.4022 26.1795 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3134 30.0845 0 - vertex 12.0544 30.7144 0 - vertex 12.2907 30.5214 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.46161 28.0795 0 - vertex 1.04836 28.6106 0 - vertex 1.1273 29.8907 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.04836 28.6106 0 - vertex -0.115935 27.2162 0 - vertex 0.858783 27.1101 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.77953 29.7664 0 - vertex 1.1273 29.8907 0 - vertex 1.37489 31.173 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.04836 28.6106 0 - vertex -0.786632 27.5359 0 - vertex -0.115935 27.2162 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -3.97987 32.1322 0 - vertex 1.37489 31.173 0 - vertex 2.44067 33.9939 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.04836 28.6106 0 - vertex -1.46161 28.0795 0 - vertex -0.786632 27.5359 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.55994 36.5001 0 - vertex 2.44067 33.9939 0 - vertex 4.08079 37.0842 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.1273 29.8907 0 - vertex -2.77953 29.7664 0 - vertex -1.46161 28.0795 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.55994 36.5001 0 - vertex 4.08079 37.0842 0 - vertex 5.15152 38.5852 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.37489 31.173 0 - vertex -3.97987 32.1322 0 - vertex -2.77953 29.7664 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.44067 33.9939 0 - vertex -4.97284 35.0324 0 - vertex -3.97987 32.1322 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -117.5 117.5 0 - vertex 5.15152 38.5852 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.44067 33.9939 0 - vertex -5.55994 36.5001 0 - vertex -4.97284 35.0324 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.15152 38.5852 0 - vertex -5.8163 36.5812 0 - vertex -5.55994 36.5001 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.80952 27.3973 0 - vertex -6.28322 28.2565 0 - vertex -6.22131 31.7226 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.546 27.7352 0 - vertex -6.22131 31.7226 0 - vertex -6.055 36.2349 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -7.25507 27.2437 0 - vertex -6.28322 28.2565 0 - vertex -8.80952 27.3973 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.28322 28.2565 0 - vertex -7.25507 27.2437 0 - vertex -6.38329 27.6173 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.38329 27.6173 0 - vertex -7.25507 27.2437 0 - vertex -6.55612 27.3597 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.22131 31.7226 0 - vertex -11.546 27.7352 0 - vertex -8.80952 27.3973 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.055 36.2349 0 - vertex -13.5562 27.8374 0 - vertex -11.546 27.7352 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4093 27.9007 0 - vertex -6.055 36.2349 0 - vertex -5.8163 36.5812 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.055 36.2349 0 - vertex -15.2376 27.7001 0 - vertex -13.5562 27.8374 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.055 36.2349 0 - vertex -20.8096 27.6578 0 - vertex -15.2376 27.7001 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.2376 27.7001 0 - vertex -20.8096 27.6578 0 - vertex -16.9875 27.3196 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9875 27.3196 0 - vertex -19.9485 27.2141 0 - vertex -19.335 26.703 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9875 27.3196 0 - vertex -20.8096 27.6578 0 - vertex -19.9485 27.2141 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.15152 38.5852 0 - vertex -117.5 117.5 0 - vertex -5.8163 36.5812 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -31.2177 27.4629 0 - vertex -5.8163 36.5812 0 - vertex -117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.055 36.2349 0 - vertex -22.4093 27.9007 0 - vertex -20.8096 27.6578 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3225 27.6757 0 - vertex -27.4214 26.3653 0 - vertex -24.8433 26.205 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.8163 36.5812 0 - vertex -24.3632 27.9554 0 - vertex -22.4093 27.9007 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -29.2879 26.9865 0 - vertex -24.3632 27.9554 0 - vertex -30.666 27.4912 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3632 27.9554 0 - vertex -29.2879 26.9865 0 - vertex -27.4214 26.3653 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.8163 36.5812 0 - vertex -30.666 27.4912 0 - vertex -24.3632 27.9554 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.0943 24.213 0 - vertex -34.2108 23.023 0 - vertex -32.1178 22.3529 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.7877 25.1404 0 - vertex -31.2912 27.2229 0 - vertex -31.2177 27.4629 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2912 27.2229 0 - vertex -36.1697 23.9798 0 - vertex -34.2108 23.023 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2912 27.2229 0 - vertex -37.7877 25.1404 0 - vertex -36.1697 23.9798 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.8163 36.5812 0 - vertex -31.2177 27.4629 0 - vertex -30.666 27.4912 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2177 27.4629 0 - vertex -38.5782 25.7376 0 - vertex -37.7877 25.1404 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -39.0347 25.8392 0 - vertex -31.2177 27.4629 0 - vertex -117.5 117.5 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -47.2102 -36.2359 0 - vertex -37.5366 -12.7854 0 - vertex -47.8577 -36.863 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.9072 -25.4747 0 - vertex -47.2102 -36.2359 0 - vertex -42.237 -30.9405 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -42.237 -30.9405 0 - vertex -47.2102 -36.2359 0 - vertex -43.2543 -33.2915 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -46.1801 -35.8499 0 - vertex -43.2543 -33.2915 0 - vertex -47.2102 -36.2359 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -44.1198 -34.7306 0 - vertex -46.1801 -35.8499 0 - vertex -45.0296 -35.5019 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -43.2543 -33.2915 0 - vertex -46.1801 -35.8499 0 - vertex -44.1198 -34.7306 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.5366 -12.7854 0 - vertex -47.2102 -36.2359 0 - vertex -39.9072 -25.4747 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 117.5 0 - vertex -47.8577 -36.863 0 - vertex -39.1303 25.4589 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -47.8577 -36.863 0 - vertex -117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.0347 25.8392 0 - vertex -117.5 117.5 0 - vertex -39.1303 25.4589 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2177 27.4629 0 - vertex -39.0347 25.8392 0 - vertex -38.5782 25.7376 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 47.8425 -21.0531 0 - vertex 117.5 -117.5 0 - vertex 47.9875 -20.1225 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 47.5305 -21.9981 0 - vertex 117.5 -117.5 0 - vertex 47.8425 -21.0531 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 47.0957 -22.796 0 - vertex 117.5 -117.5 0 - vertex 47.5305 -21.9981 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 46.5684 -23.4293 0 - vertex 117.5 -117.5 0 - vertex 47.0957 -22.796 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.9939 -37.5705 0 - vertex 46.5684 -23.4293 0 - vertex 45.9792 -23.8802 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.113 -36.8464 0 - vertex 45.9792 -23.8802 0 - vertex 45.3585 -24.1311 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.2188 -29.6614 0 - vertex 45.3585 -24.1311 0 - vertex 44.7368 -24.1643 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 40.0289 -25.46 0 - vertex 44.7368 -24.1643 0 - vertex 44.1445 -23.9621 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 41.2986 -23.9223 0 - vertex 44.1445 -23.9621 0 - vertex 43.6122 -23.5069 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.2986 -23.9223 0 - vertex 43.6122 -23.5069 0 - vertex 42.7682 -22.851 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.1445 -23.9621 0 - vertex 41.2986 -23.9223 0 - vertex 40.5923 -24.6171 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.1445 -23.9621 0 - vertex 40.5923 -24.6171 0 - vertex 40.0289 -25.46 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.7368 -24.1643 0 - vertex 40.0289 -25.46 0 - vertex 38.2188 -29.6614 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.9618 -36.3241 0 - vertex 45.3585 -24.1311 0 - vertex 38.2188 -29.6614 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.9792 -23.8802 0 - vertex 38.113 -36.8464 0 - vertex 37.9939 -37.5705 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.5684 -23.4293 0 - vertex 37.9939 -37.5705 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 37.381 -37.9628 0 - vertex 117.5 -117.5 0 - vertex 37.9939 -37.5705 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.8907 -38.1241 0 - vertex 117.5 -117.5 0 - vertex 37.381 -37.9628 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 33.1396 -38.1555 0 - vertex 117.5 -117.5 0 - vertex 35.8907 -38.1241 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.8074 -38.0948 0 - vertex 117.5 -117.5 0 - vertex 33.1396 -38.1555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.4079 -38.2833 0 - vertex 29.8074 -38.0948 0 - vertex 28.6431 -37.8931 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.553 -36.8405 0 - vertex 25.9895 -35.834 0 - vertex 28.4102 -37.3704 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.0601 -37.0678 0 - vertex 28.4102 -37.3704 0 - vertex 25.9895 -35.834 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.4102 -37.3704 0 - vertex 24.0601 -37.0678 0 - vertex 28.6431 -37.8931 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.4079 -38.2833 0 - vertex 28.6431 -37.8931 0 - vertex 24.0601 -37.0678 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.8074 -38.0948 0 - vertex 21.4079 -38.2833 0 - vertex 20.3084 -38.5182 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.8074 -38.0948 0 - vertex 20.3084 -38.5182 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.0956 -38.5852 0 - vertex 117.5 -117.5 0 - vertex 20.3084 -38.5182 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.33583 -38.4712 0 - vertex 19.0956 -38.5852 0 - vertex 17.8945 -38.4707 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.33583 -38.4712 0 - vertex 17.8945 -38.4707 0 - vertex 16.8412 -38.0675 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.519 -36.9119 0 - vertex 16.8412 -38.0675 0 - vertex 15.8953 -37.4336 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.871 -34.5351 0 - vertex 14.7938 -32.2631 0 - vertex 11.4887 -31.4602 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.2351 -35.1874 0 - vertex 14.8379 -35.6738 0 - vertex 14.6656 -34.4466 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.1379 -35.6584 0 - vertex 14.8379 -35.6738 0 - vertex 12.2351 -35.1874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.8379 -35.6738 0 - vertex 12.1379 -35.6584 0 - vertex 15.2376 -36.6526 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.7916 -36.1064 0 - vertex 15.2376 -36.6526 0 - vertex 12.1379 -35.6584 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.1962 -36.5595 0 - vertex 15.2376 -36.6526 0 - vertex 11.7916 -36.1064 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2376 -36.6526 0 - vertex 11.1962 -36.5595 0 - vertex 15.8953 -37.4336 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.519 -36.9119 0 - vertex 15.8953 -37.4336 0 - vertex 11.1962 -36.5595 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.8412 -38.0675 0 - vertex 10.519 -36.9119 0 - vertex 9.92719 -37.0575 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.8412 -38.0675 0 - vertex 9.92719 -37.0575 0 - vertex 8.47177 -37.477 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.8412 -38.0675 0 - vertex 8.47177 -37.477 0 - vertex 5.33583 -38.4712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0956 -38.5852 0 - vertex 5.33583 -38.4712 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.31266 -38.26 0 - vertex 5.33583 -38.4712 0 - vertex 4.84381 -38.3343 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.43985 -37.8545 0 - vertex 4.73542 -37.8041 0 - vertex 4.64415 -37.2809 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.43985 -37.8545 0 - vertex 4.84381 -38.3343 0 - vertex 4.73542 -37.8041 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 2.31266 -38.26 0 - vertex 4.84381 -38.3343 0 - vertex 3.43985 -37.8545 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.33583 -38.4712 0 - vertex 2.31266 -38.26 0 - vertex 0.962702 -38.4962 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.33583 -38.4712 0 - vertex 0.962702 -38.4962 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -0.366978 -38.538 0 - vertex 117.5 -117.5 0 - vertex 0.962702 -38.4962 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.66873 -38.0883 0 - vertex -0.366978 -38.538 0 - vertex -1.43333 -38.36 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -8.07933 -37.9462 0 - vertex -1.43333 -38.36 0 - vertex -2.45619 -37.7112 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.7659 -32.0301 0 - vertex -6.41168 -29.738 0 - vertex -3.99709 -33.5697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.33648 -34.384 0 - vertex -3.99709 -33.5697 0 - vertex -6.41168 -29.738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.51249 -36.3769 0 - vertex -3.80393 -35.193 0 - vertex -3.99709 -33.5697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.80393 -35.193 0 - vertex -7.31439 -36.7536 0 - vertex -3.26834 -36.6145 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.3919 -37.1883 0 - vertex -3.26834 -36.6145 0 - vertex -7.31439 -36.7536 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.26834 -36.6145 0 - vertex -7.3919 -37.1883 0 - vertex -2.45619 -37.7112 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -7.74517 -37.6801 0 - vertex -2.45619 -37.7112 0 - vertex -7.3919 -37.1883 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.07933 -37.9462 0 - vertex -2.45619 -37.7112 0 - vertex -7.74517 -37.6801 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.43333 -38.36 0 - vertex -8.07933 -37.9462 0 - vertex -8.66873 -38.0883 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.366978 -38.538 0 - vertex -8.66873 -38.0883 0 - vertex -12.0013 -38.1555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.366978 -38.538 0 - vertex -12.0013 -38.1555 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -12.0013 -38.1555 0 - vertex -15.3277 -38.0928 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.5781 -38.0841 0 - vertex -15.3277 -38.0928 0 - vertex -15.7983 -37.9502 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.9213 -37.1689 0 - vertex -16.6989 -37.6188 0 - vertex -15.9433 -37.6764 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.6989 -37.6188 0 - vertex -15.7983 -37.9502 0 - vertex -15.9433 -37.6764 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.033 -37.9274 0 - vertex -15.7983 -37.9502 0 - vertex -16.6989 -37.6188 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5781 -38.0841 0 - vertex -15.7983 -37.9502 0 - vertex -17.033 -37.9274 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.3277 -38.0928 0 - vertex -17.5781 -38.0841 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -17.5781 -38.0841 0 - vertex -20.8226 -38.1301 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2835 -38.1638 0 - vertex -20.8226 -38.1301 0 - vertex -24.8096 -38.0047 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2791 -36.8782 0 - vertex -25.0608 -37.8416 0 - vertex -25.157 -37.5754 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2835 -38.1638 0 - vertex -25.0608 -37.8416 0 - vertex -27.2791 -36.8782 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.0608 -37.8416 0 - vertex -28.2835 -38.1638 0 - vertex -24.8096 -38.0047 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.8226 -38.1301 0 - vertex -28.2835 -38.1638 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -28.2835 -38.1638 0 - vertex -37.632 -38.1325 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -37.632 -38.1325 0 - vertex -47.4646 -37.9547 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.366978 -38.538 0 - vertex -117.5 -117.5 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.8161 -37.7712 0 - vertex -117.5 -117.5 0 - vertex -47.4646 -37.9547 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.9875 -37.5097 0 - vertex -117.5 -117.5 0 - vertex -47.8161 -37.7712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.8577 -36.863 0 - vertex -117.5 -117.5 0 - vertex -47.9875 -37.5097 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.0238 -20.3507 0 - vertex 42.943 -20.2657 0 - vertex 42.1032 -19.4743 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 42.0238 -20.3507 0 - vertex 41.971 -20.8453 0 - vertex 42.943 -20.2657 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 41.971 -20.8453 0 - vertex 42.0238 -20.3507 0 - vertex 41.8981 -20.7296 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.104 -22.9178 0 - vertex 36.2859 -23.7121 0 - vertex 36.3422 -23.0402 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.2001 -22.9271 0 - vertex 36.2859 -23.7121 0 - vertex 36.104 -22.9178 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.2859 -23.7121 0 - vertex 35.2001 -22.9271 0 - vertex 35.3305 -26.5156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.7441 -22.7166 0 - vertex 35.3305 -26.5156 0 - vertex 35.2001 -22.9271 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.8275 -24.8188 0 - vertex 34.7441 -22.7166 0 - vertex 34.62 -22.2927 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 31.8275 -24.8188 0 - vertex 35.3305 -26.5156 0 - vertex 34.7441 -22.7166 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.2318 -26.857 0 - vertex 35.3305 -26.5156 0 - vertex 31.4974 -26.3899 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.3305 -26.5156 0 - vertex 31.2318 -26.857 0 - vertex 33.8444 -30.1753 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 30.7817 -27.1595 0 - vertex 33.8444 -30.1753 0 - vertex 31.2318 -26.857 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.8444 -30.1753 0 - vertex 30.2029 -31.1764 0 - vertex 32.5255 -33.371 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 29.8709 -31.8517 0 - vertex 32.5255 -33.371 0 - vertex 30.2029 -31.1764 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.1062 -30.7807 0 - vertex 33.8444 -30.1753 0 - vertex 30.7817 -27.1595 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 32.5255 -33.371 0 - vertex 29.8709 -31.8517 0 - vertex 31.6707 -35.0376 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.6707 -35.0376 0 - vertex 29.8709 -31.8517 0 - vertex 30.8837 -35.7486 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.8442 -34.1555 0 - vertex 30.8837 -35.7486 0 - vertex 29.8709 -31.8517 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.8837 -35.7486 0 - vertex 27.8442 -34.1555 0 - vertex 29.7686 -36.0779 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.7686 -36.0779 0 - vertex 27.8442 -34.1555 0 - vertex 29.0223 -36.3831 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.0223 -36.3831 0 - vertex 27.8442 -34.1555 0 - vertex 28.553 -36.8405 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.9895 -35.834 0 - vertex 28.553 -36.8405 0 - vertex 27.8442 -34.1555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.2742 24.7069 0 - vertex -10.5829 24.4 0 - vertex -10.6709 24.5009 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1729 23.8467 0 - vertex -11.2742 24.7069 0 - vertex -13.9393 24.99 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.2742 24.7069 0 - vertex -14.1729 23.8467 0 - vertex -10.5829 24.4 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.6107 24.7853 0 - vertex -14.1729 23.8467 0 - vertex -13.9393 24.99 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.6107 24.7853 0 - vertex -19.3275 23.0662 0 - vertex -14.1729 23.8467 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.4324 24.2101 0 - vertex -19.3275 23.0662 0 - vertex -16.6107 24.7853 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.4324 24.2101 0 - vertex -21.5591 22.7309 0 - vertex -19.3275 23.0662 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.4324 24.2101 0 - vertex -22.0432 22.8497 0 - vertex -21.5591 22.7309 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.4324 24.2101 0 - vertex -22.6641 23.2546 0 - vertex -22.0432 22.8497 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -22.6641 23.2546 0 - vertex -20.4324 24.2101 0 - vertex -23.3809 23.8604 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.49325 -21.5121 0 - vertex 10.169 -23.3758 0 - vertex 10.0454 -22.5812 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.169 -23.3758 0 - vertex 7.70773 -21.5983 0 - vertex 10.0775 -24.2416 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.16984 -21.6481 0 - vertex 10.0454 -22.5812 0 - vertex 9.69979 -22.0048 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.0454 -22.5812 0 - vertex 9.16984 -21.6481 0 - vertex 8.49325 -21.5121 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.169 -23.3758 0 - vertex 8.49325 -21.5121 0 - vertex 7.70773 -21.5983 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 6.85097 -21.9079 0 - vertex 10.0775 -24.2416 0 - vertex 7.70773 -21.5983 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.0775 -24.2416 0 - vertex 6.85097 -21.9079 0 - vertex 9.7411 -25.4359 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.96068 -22.4422 0 - vertex 9.7411 -25.4359 0 - vertex 6.85097 -21.9079 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.07455 -23.2024 0 - vertex 9.7411 -25.4359 0 - vertex 5.96068 -22.4422 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.84714 -24.6213 0 - vertex 9.7411 -25.4359 0 - vertex 5.07455 -23.2024 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.7411 -25.4359 0 - vertex 3.84714 -24.6213 0 - vertex 7.96204 -29.9101 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 2.80055 -26.1986 0 - vertex 7.96204 -29.9101 0 - vertex 3.84714 -24.6213 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.95873 -27.8549 0 - vertex 7.96204 -29.9101 0 - vertex 2.80055 -26.1986 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.3456 -29.5107 0 - vertex 7.96204 -29.9101 0 - vertex 1.95873 -27.8549 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.96204 -29.9101 0 - vertex 1.3456 -29.5107 0 - vertex 6.30534 -33.4759 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 0.985088 -31.0867 0 - vertex 6.30534 -33.4759 0 - vertex 1.3456 -29.5107 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 0.901133 -32.5034 0 - vertex 6.30534 -33.4759 0 - vertex 0.985088 -31.0867 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.30534 -33.4759 0 - vertex 0.901133 -32.5034 0 - vertex 5.71313 -34.2297 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.71313 -34.2297 0 - vertex 0.901133 -32.5034 0 - vertex 5.04571 -34.678 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.04571 -34.678 0 - vertex 0.901133 -32.5034 0 - vertex 4.11511 -35.011 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.11511 -35.011 0 - vertex 0.901133 -32.5034 0 - vertex 3.17687 -35.0966 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 1.11766 -33.6813 0 - vertex 3.17687 -35.0966 0 - vertex 0.901133 -32.5034 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.17687 -35.0966 0 - vertex 1.11766 -33.6813 0 - vertex 2.32628 -34.9386 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.32628 -34.9386 0 - vertex 1.11766 -33.6813 0 - vertex 1.65861 -34.5411 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.76373 17.1908 0 - vertex 9.72145 16.1788 0 - vertex 10.4258 16.5104 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.76373 17.1908 0 - vertex 8.86535 15.8492 0 - vertex 9.72145 16.1788 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.028 17.0592 0 - vertex 9.76373 17.1908 0 - vertex 8.30319 18.4459 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.76373 17.1908 0 - vertex 8.028 17.0592 0 - vertex 8.86535 15.8492 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 7.15178 18.7442 0 - vertex 8.30319 18.4459 0 - vertex 7.1994 19.1268 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.30319 18.4459 0 - vertex 7.15178 18.7442 0 - vertex 8.028 17.0592 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0804 -21.8157 0 - vertex 27.3613 -24.0204 0 - vertex 27.3668 -22.8574 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0804 -21.8157 0 - vertex 27.3668 -22.8574 0 - vertex 26.9354 -22.1189 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3613 -24.0204 0 - vertex 26.0804 -21.8157 0 - vertex 24.4233 -24.8188 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.4233 -24.8188 0 - vertex 26.0804 -21.8157 0 - vertex 24.8153 -21.9586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3613 -24.0204 0 - vertex 24.4233 -24.8188 0 - vertex 27.2283 -24.8188 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.7526 -22.3987 0 - vertex 24.4233 -24.8188 0 - vertex 24.8153 -21.9586 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.6861 -23.3258 0 - vertex 24.4233 -24.8188 0 - vertex 23.7526 -22.3987 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.4233 -24.8188 0 - vertex 22.6861 -23.3258 0 - vertex 21.6183 -24.6221 0 - endloop - endfacet - facet normal 1 -0 0 - outer loop - vertex 117.5 -117.5 0 - vertex 117.5 117.5 -3 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex 117.5 117.5 -3 - vertex 117.5 -117.5 0 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal 0 1 -0 - outer loop - vertex 117.5 117.5 -3 - vertex -117.5 117.5 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex -117.5 117.5 0 - vertex 117.5 117.5 -3 - vertex -117.5 117.5 -3 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex -117.5 -117.5 -3 - vertex 117.5 -117.5 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 -1 -0 - outer loop - vertex 117.5 -117.5 0 - vertex -117.5 -117.5 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet -endsolid OpenSCAD_Model diff --git a/resources/meshes/hellbot_adonis.obj b/resources/meshes/hellbot_adonis.obj new file mode 100644 index 0000000000..f5b73e7210 --- /dev/null +++ b/resources/meshes/hellbot_adonis.obj @@ -0,0 +1,70 @@ +# Blender v2.80 (sub 75) OBJ File: 'hellbotBed.blend' +# www.blender.org +mtllib hellbot_adonis.mtl +o Cube.001 +v -89.999985 90.000000 -1.000015 +v -89.999985 90.000000 0.999985 +v 90.000000 89.999985 0.999996 +v 90.000000 89.999985 -1.000004 +v 89.999985 -90.000000 1.000015 +v 89.999985 -90.000000 -0.999985 +v -90.000000 -89.999985 1.000004 +v 0.900000 -0.000000 0.000151 +v -0.900000 -0.000000 0.000151 +v 0.900000 0.000000 0.017850 +v -0.900000 0.000000 0.017850 +v -89.999985 90.000000 -1.000015 +v -89.999985 90.000000 0.999985 +v 90.000000 89.999985 -1.000004 +v 89.999985 -90.000000 1.000015 +v 89.999985 -90.000000 -0.999985 +v -90.000000 -89.999985 -0.999996 +v -90.000000 -89.999985 1.000004 +v 0.900000 0.000000 -1.000000 +v -0.900000 0.000000 -1.000000 +vt 0.000100 0.000100 +vt 0.999900 0.000100 +vt 0.999900 0.999900 +vt 0.000100 0.999900 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000000 0.000000 +vt 0.123047 0.000000 +vt 0.123047 0.126953 +vt 0.000000 0.126953 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.017463 0.000143 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vn -0.0000 0.0000 1.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.0000 -1.0000 0.0000 +usemtl Material.001 +s 1 +f 7/1/1 5/2/1 3/3/1 2/4/1 +usemtl Material.001_NONE +s off +f 8/5/2 9/6/2 11/7/2 10/8/2 +s 1 +f 1/9/2 2/10/2 3/11/2 4/12/2 +f 4/13/3 3/14/3 5/15/3 6/16/3 +f 16/17/4 17/18/4 12/19/4 14/20/4 +f 17/21/5 18/22/5 13/23/5 12/24/5 +f 16/17/6 15/25/6 18/26/6 17/27/6 +l 20 19 diff --git a/resources/meshes/hellbot_magna.obj b/resources/meshes/hellbot_magna.obj new file mode 100644 index 0000000000..b9c616ee62 --- /dev/null +++ b/resources/meshes/hellbot_magna.obj @@ -0,0 +1,70 @@ +# Blender v2.80 (sub 75) OBJ File: '' +# www.blender.org +mtllib untitled.mtl +o Cube.001 +v -119.999985 120.000000 -1.000018 +v -119.999985 120.000000 0.999981 +v 120.000000 119.999985 0.999996 +v 120.000000 119.999985 -1.000004 +v 119.999985 -120.000000 1.000018 +v 119.999985 -120.000000 -0.999981 +v -120.000000 -119.999985 1.000004 +v 1.200000 -0.000000 0.000151 +v -1.200000 -0.000000 0.000151 +v 1.200000 0.000000 0.017850 +v -1.200000 0.000000 0.017850 +v -119.999985 120.000000 -1.000018 +v -119.999985 120.000000 0.999981 +v 120.000000 119.999985 -1.000004 +v 119.999985 -120.000000 1.000018 +v 119.999985 -120.000000 -0.999981 +v -120.000000 -119.999985 -0.999996 +v -120.000000 -119.999985 1.000004 +v 1.200000 0.000000 -1.000000 +v -1.200000 0.000000 -1.000000 +vt 0.000100 0.000100 +vt 0.999900 0.000100 +vt 0.999900 0.999900 +vt 0.000100 0.999900 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000000 0.000000 +vt 0.123047 0.000000 +vt 0.123047 0.126953 +vt 0.000000 0.126953 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.017463 0.000143 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vn -0.0000 0.0000 1.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.0000 -1.0000 0.0000 +usemtl Material.001 +s 1 +f 7/1/1 5/2/1 3/3/1 2/4/1 +usemtl Material.001_NONE +s off +f 8/5/2 9/6/2 11/7/2 10/8/2 +s 1 +f 1/9/2 2/10/2 3/11/2 4/12/2 +f 4/13/3 3/14/3 5/15/3 6/16/3 +f 16/17/4 17/18/4 12/19/4 14/20/4 +f 17/21/5 18/22/5 13/23/5 12/24/5 +f 16/17/6 15/25/6 18/26/6 17/27/6 +l 20 19 diff --git a/resources/meshes/hms_platform.obj b/resources/meshes/hms_platform.obj new file mode 100644 index 0000000000..26e01fe633 --- /dev/null +++ b/resources/meshes/hms_platform.obj @@ -0,0 +1,44753 @@ +# Created by FreeCAD +v -28.237640 -4.500000 8.800000 +v -27.936197 -3.375000 7.300000 +v -27.936197 -3.375000 8.800000 +v -28.237640 -4.500000 7.300000 +v -27.112640 -2.551443 7.300000 +v -27.112640 -2.551443 8.800000 +v -25.987640 -2.250000 7.300000 +v -25.987640 -2.250000 8.800000 +v -241.987640 -4.500000 7.300000 +v -241.987640 -4.500000 8.800000 +v -242.590530 -6.750000 8.800000 +v -242.590530 -6.750000 7.300000 +v -244.237640 -8.397115 8.800000 +v -244.237640 -8.397115 7.300000 +v -246.487640 -9.000000 8.800000 +v -246.487640 -9.000000 7.300000 +v -246.487640 -6.750000 8.800000 +v -246.487640 -6.750000 7.300000 +v -247.612640 -6.448557 8.800000 +v -247.612640 -6.448557 7.300000 +v -248.436203 -5.625000 8.800000 +v -248.436203 -5.625000 7.300000 +v -248.737640 -4.500000 8.800000 +v -248.737640 -4.500000 7.300000 +v 190.012360 329.500000 7.300000 +v 190.012360 329.500000 8.800000 +v 190.615250 331.750000 8.800000 +v 190.615250 331.750000 7.300000 +v 192.262360 333.397125 8.800000 +v 192.262360 333.397125 7.300000 +v 194.512360 334.000000 8.800000 +v 194.512360 334.000000 7.300000 +v 194.512360 331.750000 8.800000 +v 194.512360 331.750000 7.300000 +v 195.637360 331.448547 8.800000 +v 195.637360 331.448547 7.300000 +v 196.460922 330.625000 8.800000 +v 196.460922 330.625000 7.300000 +v 196.762360 329.500000 8.800000 +v 196.762360 329.500000 7.300000 +v -25.987640 160.500000 8.800000 +v -24.987640 160.767944 8.800000 +v -25.987640 160.500000 7.300000 +v -24.987640 160.767944 7.300000 +v -24.255590 161.500000 8.800000 +v -24.255590 161.500000 7.300000 +v -23.987640 162.500000 8.800000 +v -23.987640 162.500000 7.300000 +v -25.987640 164.500000 7.300000 +v -25.987640 164.500000 8.800000 +v -26.987640 164.232056 7.300000 +v -26.987640 164.232056 8.800000 +v -27.719692 163.500000 7.300000 +v -27.719692 163.500000 8.800000 +v -27.987640 162.500000 7.300000 +v -27.987640 162.500000 8.800000 +v 194.512360 327.250000 7.300000 +v 193.387360 327.551453 7.300000 +v 194.512360 327.250000 8.800000 +v 193.387360 327.551453 8.800000 +v 192.563797 328.375000 7.300000 +v 192.563797 328.375000 8.800000 +v 192.262360 329.500000 7.300000 +v 192.262360 329.500000 8.800000 +v -246.487640 -2.250000 7.300000 +v -245.362640 -2.551443 7.300000 +v -246.487640 -2.250000 8.800000 +v -245.362640 -2.551443 8.800000 +v -244.539078 -3.375000 7.300000 +v -244.539078 -3.375000 8.800000 +v -244.237640 -4.500000 7.300000 +v -244.237640 -4.500000 8.800000 +v -23.737640 -4.500000 8.800000 +v -23.737640 -4.500000 7.300000 +v -24.039083 -5.625000 8.800000 +v -24.039083 -5.625000 7.300000 +v -24.862640 -6.448557 8.800000 +v -24.862640 -6.448557 7.300000 +v -25.987640 -6.750000 8.800000 +v -25.987640 -6.750000 7.300000 +v -25.987640 331.750000 8.800000 +v -27.310158 331.320282 8.800000 +v -25.987640 331.750000 7.300000 +v -27.310158 331.320282 7.300000 +v -28.127518 330.195282 8.800000 +v -28.127518 330.195282 7.300000 +v -28.127518 328.804718 8.800000 +v -28.127518 328.804718 7.300000 +v -27.310158 327.679718 8.800000 +v -27.310158 327.679718 7.300000 +v -25.987640 327.250000 8.800000 +v -25.987640 327.250000 7.300000 +v -25.987640 334.000000 8.800000 +v -25.987640 334.000000 7.300000 +v -28.237640 333.397125 7.300000 +v -28.237640 333.397125 8.800000 +v -29.884754 331.750000 7.300000 +v -29.884754 331.750000 8.800000 +v -30.487640 329.500000 8.800000 +v -30.487640 329.500000 7.300000 +v -246.487640 331.750000 8.800000 +v -247.810150 331.320282 8.800000 +v -246.487640 331.750000 7.300000 +v -247.810150 331.320282 7.300000 +v -248.627518 330.195282 8.800000 +v -248.627518 330.195282 7.300000 +v -248.627518 328.804718 8.800000 +v -248.627518 328.804718 7.300000 +v -247.810150 327.679718 8.800000 +v -247.810150 327.679718 7.300000 +v -246.487640 327.250000 8.800000 +v -246.487640 327.250000 7.300000 +v -24.862640 -2.551443 7.300000 +v -24.862640 -2.551443 8.800000 +v -24.039083 -3.375000 7.300000 +v -24.039083 -3.375000 8.800000 +v -21.487640 -4.500000 7.300000 +v -21.487640 -4.500000 8.800000 +v -22.090527 -6.750000 8.800000 +v -22.090527 -6.750000 7.300000 +v -23.737640 -8.397115 8.800000 +v -23.737640 -8.397115 7.300000 +v -25.987640 -9.000000 8.800000 +v -25.987640 -9.000000 7.300000 +v -244.539078 -5.625000 8.800000 +v -244.539078 -5.625000 7.300000 +v -245.362640 -6.448557 8.800000 +v -245.362640 -6.448557 7.300000 +v 192.563797 330.625000 8.800000 +v 192.563797 330.625000 7.300000 +v 193.387360 331.448547 8.800000 +v 193.387360 331.448547 7.300000 +v 194.512360 -6.750000 8.800000 +v 195.834869 -6.320288 8.800000 +v 194.512360 -6.750000 7.300000 +v 195.834869 -6.320288 7.300000 +v 196.652237 -5.195288 8.800000 +v 196.652237 -5.195288 7.300000 +v 196.652237 -3.804712 8.800000 +v 196.652237 -3.804712 7.300000 +v 195.834869 -2.679712 8.800000 +v 195.834869 -2.679712 7.300000 +v 194.512360 -2.250000 8.800000 +v 194.512360 -2.250000 7.300000 +v -27.719692 161.500000 8.800000 +v -27.719692 161.500000 7.300000 +v -26.987640 160.767944 8.800000 +v -26.987640 160.767944 7.300000 +v -24.255590 163.500000 7.300000 +v -24.255590 163.500000 8.800000 +v -24.987640 164.232056 7.300000 +v -24.987640 164.232056 8.800000 +v 193.189850 -2.679712 8.800000 +v 193.189850 -2.679712 7.300000 +v 192.372482 -3.804712 8.800000 +v 192.372482 -3.804712 7.300000 +v 192.372482 -5.195288 8.800000 +v 192.372482 -5.195288 7.300000 +v 193.189850 -6.320288 8.800000 +v 193.189850 -6.320288 7.300000 +v 190.871780 -7.145034 8.800000 +v 190.012360 -4.500000 8.800000 +v 190.012360 -4.500000 7.300000 +v 190.871780 -7.145034 7.300000 +v 193.121780 -8.779755 8.800000 +v 193.121780 -8.779755 7.300000 +v 195.902939 -8.779755 8.800000 +v 195.902939 -8.779755 7.300000 +v 198.152939 -7.145034 8.800000 +v 198.152939 -7.145034 7.300000 +v 199.012360 -4.500000 8.800000 +v 199.012360 -4.500000 7.300000 +v 190.012360 -0.000000 8.800000 +v 190.012360 -0.000000 7.300000 +v -21.487640 -0.000000 8.800000 +v -21.487640 -0.000000 7.300000 +v 196.460922 328.375000 7.300000 +v 196.460922 328.375000 8.800000 +v 195.637360 327.551453 7.300000 +v 195.637360 327.551453 8.800000 +v 199.012360 329.500000 7.300000 +v 199.012360 329.500000 8.800000 +v 196.762360 333.397125 7.300000 +v 196.762360 333.397125 8.800000 +v 198.409470 331.750000 7.300000 +v 198.409470 331.750000 8.800000 +v 190.012360 325.000000 7.300000 +v 190.012360 325.000000 8.800000 +v -21.487640 325.000000 7.300000 +v -21.487640 325.000000 8.800000 +v -21.487640 329.500000 7.300000 +v -21.487640 329.500000 8.800000 +v -248.436203 -3.375000 7.300000 +v -248.436203 -3.375000 8.800000 +v -247.612640 -2.551443 7.300000 +v -247.612640 -2.551443 8.800000 +v -248.737640 -8.397115 7.300000 +v -248.737640 -8.397115 8.800000 +v -250.384750 -6.750000 7.300000 +v -250.384750 -6.750000 8.800000 +v -250.987640 -4.500000 7.300000 +v -250.987640 -4.500000 8.800000 +v -241.987640 -0.000000 7.300000 +v -241.987640 -0.000000 8.800000 +v -30.487640 -0.000000 7.300000 +v -30.487640 -0.000000 8.800000 +v -30.487640 -4.500000 7.300000 +v -30.487640 -4.500000 8.800000 +v -28.237640 -8.397115 8.800000 +v -28.237640 -8.397115 7.300000 +v -29.884754 -6.750000 8.800000 +v -29.884754 -6.750000 7.300000 +v -27.112640 -6.448557 8.800000 +v -27.112640 -6.448557 7.300000 +v -27.936197 -5.625000 8.800000 +v -27.936197 -5.625000 7.300000 +v -245.165131 327.679718 8.800000 +v -245.165131 327.679718 7.300000 +v -244.347763 328.804718 8.800000 +v -244.347763 328.804718 7.300000 +v -244.347763 330.195282 8.800000 +v -244.347763 330.195282 7.300000 +v -245.165131 331.320282 8.800000 +v -245.165131 331.320282 7.300000 +v -250.987640 329.500000 8.800000 +v -250.987640 329.500000 7.300000 +v -242.847061 332.145020 8.800000 +v -241.987640 329.500000 8.800000 +v -241.987640 329.500000 7.300000 +v -242.847061 332.145020 7.300000 +v -245.097061 333.779755 8.800000 +v -245.097061 333.779755 7.300000 +v -247.878220 333.779755 8.800000 +v -247.878220 333.779755 7.300000 +v -250.128220 332.145020 8.800000 +v -250.128220 332.145020 7.300000 +v -241.987640 325.000000 8.800000 +v -241.987640 325.000000 7.300000 +v -30.487640 325.000000 8.800000 +v -30.487640 325.000000 7.300000 +v -22.090527 331.750000 8.800000 +v -22.090527 331.750000 7.300000 +v -23.737640 333.397125 7.300000 +v -23.737640 333.397125 8.800000 +v -24.665123 327.679718 8.800000 +v -24.665123 327.679718 7.300000 +v -23.847763 328.804718 8.800000 +v -23.847763 328.804718 7.300000 +v -23.847763 330.195282 8.800000 +v -23.847763 330.195282 7.300000 +v -24.665123 331.320282 8.800000 +v -24.665123 331.320282 7.300000 +v -35.250000 315.000000 15.100000 +v -54.250000 315.000000 15.100000 +v -54.250000 314.500000 14.966025 +v -35.250000 314.500000 14.966025 +v -54.250000 314.133972 14.600000 +v -35.250000 314.133972 14.600000 +v -54.250000 314.000000 14.100000 +v -35.250000 314.000000 14.100000 +v -49.964897 315.651581 14.355808 +v -54.250000 315.606232 14.450000 +v -54.250000 315.700012 14.100000 +v -48.816387 315.700012 14.100000 +v -40.639091 315.665680 14.316487 +v -48.871979 315.657257 14.340892 +v -35.250000 315.700012 14.100000 +v -39.513699 315.671509 14.297517 +v -39.483612 315.700012 14.100000 +v -49.829247 315.533264 14.553389 +v -54.250000 315.350006 14.706218 +v -35.250000 315.606232 14.450000 +v -49.663116 315.418854 14.660864 +v -49.456932 315.360565 14.700000 +v -49.247116 315.413971 14.664463 +v -40.176033 315.383362 14.685694 +v -40.299847 315.437378 14.646523 +v -40.043068 315.360565 14.700000 +v -54.250000 315.000000 14.800000 +v -39.881603 315.396851 14.676639 +v -35.250000 315.350006 14.706218 +v -39.742126 315.478668 14.610527 +v -35.250000 315.000000 14.800000 +v -39.598305 315.594513 14.469361 +v -40.683613 315.700012 14.100000 +v -40.521404 315.578430 14.494125 +v -49.013226 315.553986 14.527892 +v -50.016388 315.700012 14.100000 +v -35.250000 314.299988 14.100000 +v -35.250000 314.393768 13.750000 +v -54.250000 314.299988 14.100000 +v -54.250000 314.393768 13.750000 +v -35.250000 314.649994 13.493782 +v -54.250000 314.649994 13.493782 +v -35.250000 315.000000 13.400000 +v -54.250000 315.000000 13.400000 +v -40.559929 315.337494 6.300000 +v -40.501724 315.413269 6.205833 +v -40.493622 315.345428 6.205833 +v -40.568031 315.405334 6.300000 +v -40.338848 315.325226 7.119615 +v -40.462509 315.349152 7.027692 +v -40.457954 315.311005 7.027692 +v -40.607437 315.400635 6.383511 +v -40.623821 315.537811 6.383511 +v -40.584415 315.542511 6.300000 +v -40.343403 315.363373 7.119615 +v -40.248516 315.374695 7.164342 +v -40.043068 315.360565 7.200000 +v -40.253227 315.414154 7.164345 +v -40.304218 315.035339 6.080385 +v -40.252563 315.041504 6.053473 +v -40.299999 315.000000 6.080385 +v -40.338848 315.325226 6.080385 +v -40.287189 315.331390 6.053473 +v -40.243961 315.336548 7.164342 +v -40.423328 315.021088 7.027692 +v -40.519615 315.000000 6.900000 +v -40.299999 315.000000 7.119615 +v -40.520744 315.009460 6.900000 +v -40.555374 315.299377 6.300000 +v -40.489067 315.307281 6.205833 +v -40.555374 315.299377 6.900000 +v -40.304218 315.035339 7.119615 +v -40.667015 315.561035 6.600000 +v -40.677814 315.651489 6.600000 +v -40.637966 315.656219 6.383511 +v -40.627163 315.565796 6.383511 +v -40.209332 315.046661 7.164342 +v -40.000000 315.000000 7.200000 +v -40.599335 315.332794 6.383511 +v -40.663670 315.533051 6.600000 +v -40.594776 315.294647 6.383511 +v -40.454441 315.017395 6.205833 +v -40.519615 315.000000 6.300000 +v -40.647285 315.395874 6.600000 +v -40.639183 315.328033 6.600000 +v -40.520744 315.009460 6.300000 +v -40.617424 315.566956 6.840475 +v -40.171478 315.345215 6.014307 +v -40.043068 315.360565 6.000000 +v -40.000000 315.000000 6.000000 +v -40.628223 315.657410 6.840475 +v -40.176033 315.383362 6.014307 +v -40.634628 315.289886 6.600000 +v -40.291744 315.369537 6.053473 +v -40.299847 315.437378 6.053477 +v -40.614079 315.538971 6.840475 +v -40.587761 315.570496 6.900000 +v -40.486988 315.554138 7.027701 +v -40.518108 315.550446 6.205833 +v -40.521404 315.578430 6.205875 +v -40.560150 315.004761 6.383511 +v -40.599998 315.000000 6.600000 +v -40.343403 315.363373 6.080385 +v -40.584415 315.542511 6.900000 +v -40.597694 315.401794 6.840475 +v -40.587761 315.570496 6.300000 +v -40.639091 315.665680 6.383513 +v -40.568031 315.405334 6.900000 +v -40.589592 315.333954 6.840475 +v -40.585037 315.295807 6.840475 +v -40.559929 315.337494 6.900000 +v -40.470615 315.416992 7.027692 +v -40.351505 315.431213 7.119615 +v -40.683613 315.700012 6.600000 +v -42.105232 333.703674 6.080385 +v -38.872272 339.004150 6.000000 +v -41.843773 333.560944 6.000000 +v -39.133732 339.146881 6.080385 +v -42.296635 333.808167 6.300000 +v -39.325134 339.251373 6.300000 +v -42.366695 333.846405 6.600000 +v -39.325134 339.251373 6.900000 +v -39.395191 339.289612 6.600000 +v -42.296635 333.808167 6.900000 +v -39.133732 339.146881 7.119615 +v -42.105232 333.703674 7.119615 +v -38.872272 339.004150 7.200000 +v -41.843773 333.560944 7.200000 +v -50.627728 339.004150 6.000000 +v -47.394768 333.703674 6.080385 +v -47.656227 333.560944 6.000000 +v -50.366268 339.146881 6.080385 +v -47.203365 333.808167 6.300000 +v -50.174866 339.251373 6.300000 +v -47.133305 333.846405 6.600000 +v -50.104809 339.289612 6.600000 +v -50.174866 339.251373 6.900000 +v -47.203365 333.808167 6.900000 +v -50.366268 339.146881 7.119615 +v -47.394768 333.703674 7.119615 +v -50.627728 339.004150 7.200000 +v -47.656227 333.560944 7.200000 +v -48.852749 315.395599 6.600000 +v -48.910599 315.333923 6.359108 +v -48.902519 315.401550 6.359108 +v -48.860828 315.327972 6.600000 +v -48.905365 315.294678 6.816865 +v -48.987694 314.938812 6.900000 +v -48.908440 314.929352 6.600000 +v -48.865372 315.289886 6.600000 +v -48.836353 315.532867 6.600000 +v -48.886124 315.538788 6.359108 +v -48.900818 315.332733 6.816865 +v -48.833019 315.560791 6.600000 +v -48.882790 315.566711 6.359108 +v -48.940941 315.298920 6.893425 +v -48.892738 315.400391 6.816865 +v -48.936394 315.336975 6.893425 +v -48.822205 315.651306 6.600000 +v -48.871979 315.657257 6.359108 +v -48.816387 315.700012 6.600000 +v -48.861069 315.665558 6.816864 +v -48.928314 315.404633 6.893425 +v -49.011234 315.307312 6.994519 +v -49.204220 314.964661 7.119615 +v -49.006691 315.345398 6.994519 +v -48.876347 315.537628 6.816865 +v -49.256359 315.336609 6.035541 +v -49.500000 315.000000 6.000000 +v -49.456932 315.360565 6.000000 +v -49.204220 314.964661 6.080385 +v -48.873013 315.565552 6.816865 +v -49.251812 315.374664 6.035541 +v -49.247116 315.413971 6.035537 +v -48.998611 315.413025 6.994519 +v -49.167637 315.325989 6.076644 +v -49.163090 315.364075 6.076644 +v -49.013226 315.553986 6.172108 +v -48.911919 315.541870 6.893425 +v -48.908585 315.569794 6.893425 +v -48.978920 315.578217 6.994485 +v -49.042255 315.311035 6.172099 +v -48.987694 314.938812 6.300000 +v -48.862198 315.656067 6.816865 +v -49.037708 315.349091 6.172099 +v -49.167637 315.325989 7.123356 +v -49.029629 315.416718 6.172099 +v -49.163090 315.364075 7.123356 +v -48.940941 315.298920 6.306575 +v -48.982216 315.550293 6.994519 +v -48.936394 315.336975 6.306575 +v -49.213211 315.331451 7.146710 +v -48.915146 315.295837 6.359108 +v -49.208664 315.369507 7.146710 +v -49.200584 315.437164 7.146708 +v -49.324139 315.383301 7.185730 +v -49.155010 315.431702 7.123356 +v -49.328686 315.345245 7.185730 +v -49.456932 315.360565 7.200000 +v -48.928314 315.404633 6.306575 +v -49.500000 315.000000 7.200000 +v -48.911919 315.541870 6.306575 +v -48.908585 315.569794 6.306575 +v -40.708748 315.993988 6.708046 +v -42.586510 332.304230 6.900000 +v -42.665764 332.294769 6.600000 +v -40.398201 316.031097 6.066753 +v -42.074203 332.365417 6.000000 +v -40.095554 315.799988 6.000000 +v -40.376064 315.845947 6.066793 +v -42.369984 332.330078 6.080385 +v -40.416325 316.028931 6.076644 +v -40.592716 315.933594 6.241836 +v -40.601570 316.006805 6.241759 +v -42.586510 332.304230 6.300000 +v -40.643021 316.001862 6.306575 +v -40.705318 315.992096 6.475753 +v -40.705757 315.994354 6.475718 +v -40.718586 315.992828 6.600000 +v -40.643021 316.001862 6.893425 +v -40.617569 315.945862 6.924382 +v -40.624634 316.004059 6.924455 +v -40.476646 316.021729 7.083996 +v -40.459072 315.875031 7.083914 +v -42.369984 332.330078 7.119615 +v -40.312698 316.041290 7.169681 +v -40.286480 315.821930 7.169634 +v -40.095554 315.799988 7.200000 +v -42.074203 332.365417 7.200000 +v -46.834236 332.294769 6.600000 +v -48.791264 315.993988 6.491891 +v -46.913490 332.304230 6.300000 +v -49.187443 316.041321 6.030272 +v -49.404446 315.799988 6.000000 +v -47.425797 332.365417 6.000000 +v -47.130016 332.330078 6.080385 +v -49.041119 315.874969 6.115958 +v -49.213669 315.821899 6.030322 +v -49.023529 316.021729 6.115873 +v -48.882572 315.945770 6.275412 +v -48.875496 316.004059 6.275339 +v -48.856979 316.001831 6.306575 +v -48.794258 315.994354 6.724360 +v -46.913490 332.304230 6.900000 +v -48.794697 315.992096 6.724326 +v -48.856979 316.001831 6.893425 +v -48.907421 315.933533 6.958350 +v -48.898563 316.006805 6.958423 +v -47.130016 332.330078 7.119615 +v -49.083675 316.028931 7.123356 +v -49.124142 315.845886 7.133314 +v -49.102001 316.031097 7.133351 +v -47.425797 332.365417 7.200000 +v -49.404446 315.799988 7.200000 +v -54.250000 314.412201 5.790983 +v -54.250000 315.000000 5.600000 +v -35.250000 315.000000 5.600000 +v -35.250000 314.412201 5.790983 +v -54.250000 314.048950 6.290983 +v -35.250000 314.048950 6.290983 +v -54.250000 314.048950 6.909017 +v -35.250000 314.048950 6.909017 +v -54.250000 314.412201 7.409017 +v -35.250000 314.412201 7.409017 +v -54.250000 315.000000 7.600000 +v -35.250000 315.000000 7.600000 +v -39.483612 315.700012 6.600000 +v -39.513699 315.671509 6.402483 +v -35.250000 315.700012 6.600000 +v -35.250000 315.566315 6.188550 +v -39.598305 315.594513 6.230639 +v -39.742126 315.478668 6.089473 +v -39.881603 315.396851 6.023361 +v -54.250000 315.700012 6.600000 +v -54.250000 315.566315 6.188550 +v -49.964897 315.651581 6.344192 +v -35.250000 315.216309 5.934260 +v -49.663116 315.418854 6.039136 +v -49.829247 315.533264 6.146612 +v -54.250000 315.216309 5.934260 +v -54.250000 314.783691 5.934260 +v -35.250000 314.783691 5.934260 +v -54.250000 314.433685 6.188550 +v -35.250000 314.433685 6.188550 +v -54.250000 314.299988 6.600000 +v -35.250000 314.299988 6.600000 +v -50.016388 315.700012 6.600000 +v -39.736336 315.430573 14.610602 +v -39.490128 315.508759 13.914605 +v -39.512295 315.457336 13.843338 +v -39.518036 315.505432 13.843338 +v -39.732403 315.397675 14.610602 +v -39.484386 315.460663 13.914605 +v -39.695354 315.402100 14.585410 +v -39.699287 315.434998 14.585410 +v -39.529659 315.602722 13.843338 +v -39.671379 315.532715 13.646041 +v -39.535473 315.651215 13.843349 +v -39.523407 315.550385 13.843338 +v -39.705032 315.483093 14.585410 +v -39.580864 315.449158 14.469422 +v -39.586605 315.497223 14.469422 +v -39.591976 315.542206 14.469422 +v -39.495499 315.553711 13.914605 +v -39.879601 315.380066 14.676638 +v -40.000000 315.000000 14.700000 +v -39.501751 315.606049 13.914605 +v -39.836533 315.019531 14.676638 +v -39.689339 315.037109 14.610602 +v -39.451508 315.431213 14.100000 +v -39.408440 315.070648 14.100000 +v -39.437389 315.067200 13.914605 +v -39.480453 315.427765 13.914605 +v -39.455437 315.464142 14.100000 +v -39.533863 315.055664 14.469422 +v -39.647327 315.000000 14.585410 +v -39.429367 315.000000 14.285410 +v -39.441418 315.066711 14.297532 +v -39.461182 315.512207 14.100000 +v -39.466553 315.557159 14.100000 +v -39.472801 315.609497 14.100000 +v -39.652290 315.041534 14.585410 +v -39.480453 315.427765 14.285396 +v -39.437389 315.067200 14.285396 +v -39.652290 315.041534 13.614590 +v -39.647327 315.000000 13.614590 +v -40.000000 315.000000 13.500000 +v -39.484482 315.427277 14.297532 +v -39.613235 315.046204 13.646003 +v -39.484386 315.460663 14.285396 +v -39.833591 315.385590 13.538877 +v -40.043068 315.360565 13.500000 +v -39.837524 315.418488 13.538877 +v -39.465298 315.063873 13.843338 +v -39.429367 315.000000 13.914590 +v -39.488415 315.460205 14.297532 +v -39.480679 315.675446 14.100000 +v -39.490128 315.508759 14.285396 +v -39.695354 315.402100 13.614590 +v -39.699287 315.434998 13.614590 +v -39.494160 315.508270 14.297532 +v -39.495499 315.553711 14.285396 +v -39.656300 315.406738 13.646003 +v -39.660233 315.439667 13.646003 +v -39.499527 315.553223 14.297532 +v -39.501751 315.606049 14.285396 +v -39.665974 315.487762 13.646003 +v -39.505779 315.605560 14.297532 +v -39.508362 315.424408 13.843338 +v -39.576931 315.416229 14.469422 +v -39.509628 315.671997 14.285396 +v -39.604752 336.577881 13.806575 +v -40.399445 335.598633 13.576644 +v -39.805145 336.687256 13.576644 +v -39.537952 336.541412 14.100000 +v -40.199051 335.489227 13.806575 +v -40.132256 335.452759 14.100000 +v -39.604752 336.577881 14.393425 +v -40.199051 335.489227 14.393425 +v -39.210842 337.775909 13.576644 +v -38.872272 339.004150 13.500000 +v -38.610813 338.861420 13.580385 +v -39.805145 336.687256 14.623356 +v -38.872272 339.004150 14.700000 +v -40.399445 335.598633 14.623356 +v -39.010452 337.666504 13.806575 +v -38.419411 338.756927 13.800000 +v -38.943653 337.630035 14.100000 +v -38.349354 338.718689 14.100000 +v -39.010452 337.666504 14.393425 +v -38.419411 338.756927 14.400000 +v -39.210842 337.775909 14.623356 +v -38.610813 338.861420 14.619616 +v -40.993744 334.509979 13.576644 +v -41.582314 333.418213 13.580385 +v -41.843773 333.560944 13.500000 +v -40.793350 334.400574 13.806575 +v -41.390911 333.313721 13.800000 +v -40.726555 334.364105 14.100000 +v -41.320854 333.275482 14.100000 +v -40.793350 334.400574 14.393425 +v -41.390911 333.313721 14.400000 +v -40.993744 334.509979 14.623356 +v -41.843773 333.560944 14.700000 +v -41.582314 333.418213 14.619616 +v -49.300949 335.489227 13.806575 +v -49.895248 336.577881 13.806575 +v -49.694855 336.687256 13.576644 +v -49.100555 335.598633 13.576644 +v -49.367744 335.452759 14.100000 +v -49.962048 336.541412 14.100000 +v -49.300949 335.489227 14.393425 +v -49.895248 336.577881 14.393425 +v -48.506256 334.509979 13.576644 +v -47.656227 333.560944 13.500000 +v -47.917686 333.418213 13.580385 +v -49.100555 335.598633 14.623356 +v -47.656227 333.560944 14.700000 +v -50.627728 339.004150 14.700000 +v -49.694855 336.687256 14.623356 +v -48.706650 334.400574 13.806575 +v -48.109089 333.313721 13.800000 +v -48.773445 334.364105 14.100000 +v -48.179146 333.275482 14.100000 +v -48.706650 334.400574 14.393425 +v -48.109089 333.313721 14.400000 +v -48.506256 334.509979 14.623356 +v -47.917686 333.418213 14.619616 +v -50.289158 337.775909 13.576644 +v -50.889187 338.861420 13.580385 +v -50.627728 339.004150 13.500000 +v -50.489548 337.666504 13.806575 +v -51.080589 338.756927 13.800000 +v -50.556347 337.630035 14.100000 +v -51.150646 338.718689 14.100000 +v -50.489548 337.666504 14.393425 +v -51.080589 338.756927 14.400000 +v -50.289158 337.775909 14.623356 +v -50.889187 338.861420 14.619616 +v -50.006008 315.508789 13.903131 +v -49.957829 315.548615 13.806575 +v -49.963192 315.503693 13.806575 +v -50.000645 315.553711 13.903131 +v -50.011780 315.460480 13.903131 +v -49.968964 315.455383 13.806575 +v -50.021366 315.658325 14.100000 +v -49.986496 315.671692 13.903152 +v -49.988617 315.654419 13.903131 +v -50.015743 315.427307 13.903131 +v -50.012306 315.061188 13.800000 +v -50.091560 315.070648 14.100000 +v -49.972927 315.422180 13.806575 +v -50.027149 315.609924 14.100000 +v -49.994400 315.606018 13.903131 +v -50.033394 315.557617 14.100000 +v -50.038761 315.512726 14.100000 +v -50.044529 315.464386 14.100000 +v -50.048492 315.431213 14.100000 +v -49.970688 315.603180 14.355814 +v -49.951584 315.600891 14.393425 +v -49.976933 315.550873 14.355814 +v -49.620869 315.380127 13.523499 +v -49.618851 315.397034 13.523499 +v -49.456932 315.360565 13.500000 +v -49.500000 315.000000 13.500000 +v -49.957829 315.548615 14.393425 +v -49.795780 315.035339 13.580385 +v -49.742268 315.428284 13.576644 +v -49.758728 315.479279 13.590053 +v -49.982300 315.505981 14.355814 +v -49.963192 315.503693 14.393425 +v -49.764549 315.430969 13.589972 +v -49.746231 315.395111 13.576644 +v -49.988068 315.457642 14.355814 +v -49.768513 315.397766 13.589972 +v -49.992031 315.424469 14.355814 +v -49.908604 315.542725 13.731399 +v -49.902260 315.595001 13.731475 +v -50.012306 315.061188 14.400000 +v -49.951584 315.600891 13.806575 +v -49.968964 315.455383 14.393425 +v -49.972927 315.422180 14.393425 +v -49.913967 315.497803 13.731399 +v -49.834625 315.488342 14.553418 +v -49.840397 315.440002 14.553418 +v -49.919739 315.449493 13.731399 +v -49.844360 315.406830 14.553418 +v -49.795780 315.035339 14.619616 +v -49.923702 315.416321 13.731399 +v -49.742268 315.428284 14.623356 +v -49.746231 315.395111 14.623356 +v -49.667080 315.385651 14.660865 +v -49.500000 315.000000 14.700000 +v -41.561897 332.426605 14.400000 +v -39.523857 315.997131 14.174391 +v -41.482643 332.436096 14.100000 +v -39.865437 315.956329 13.554011 +v -39.851284 315.837799 13.554020 +v -40.095554 315.799988 13.500000 +v -42.074203 332.365417 13.500000 +v -41.778423 332.400757 13.580385 +v -39.821430 315.961578 13.576644 +v -39.660400 315.917480 13.702272 +v -39.667824 315.979919 13.702260 +v -41.561897 332.426605 13.800000 +v -39.594734 315.988647 13.806575 +v -39.544315 315.984161 13.923075 +v -39.545479 315.994537 13.923051 +v -39.519169 315.997681 14.100000 +v -39.594734 315.988647 14.393425 +v -39.603264 315.948761 14.415712 +v -39.607727 315.987091 14.415784 +v -39.775772 315.967041 14.594552 +v -39.764164 315.869110 14.594424 +v -41.778423 332.400757 14.619616 +v -39.936180 315.947876 14.673286 +v -42.074203 332.365417 14.700000 +v -40.095554 315.799988 14.700000 +v -39.920872 315.819489 14.673194 +v -49.976151 315.997131 14.025676 +v -48.017357 332.436096 14.100000 +v -47.938103 332.426605 13.800000 +v -49.564064 315.947906 13.526790 +v -47.721577 332.400757 13.580385 +v -47.425797 332.365417 13.500000 +v -49.404446 315.799988 13.500000 +v -49.579372 315.819519 13.526872 +v -49.736195 315.869263 13.605830 +v -49.724598 315.967072 13.605706 +v -49.896965 315.948914 13.784675 +v -49.892509 315.987122 13.784606 +v -49.905266 315.988647 13.806575 +v -49.954597 315.994537 14.276701 +v -47.938103 332.426605 14.400000 +v -49.955746 315.984192 14.276674 +v -49.905266 315.988647 14.393425 +v -49.839767 315.917572 14.497499 +v -49.832363 315.979950 14.497529 +v -47.721577 332.400757 14.619616 +v -49.678570 315.961578 14.623356 +v -49.649059 315.837891 14.645810 +v -49.634918 315.956360 14.645824 +v -49.404446 315.799988 14.700000 +v -47.425797 332.365417 14.700000 +v -35.250000 315.921967 14.487298 +v -35.250000 315.982208 13.912271 +v -40.376064 315.845947 14.633206 +v -49.041119 315.874969 14.584043 +v -49.213669 315.821899 14.669678 +v -54.250000 315.714142 13.400000 +v -54.250000 315.553497 14.932856 +v -54.250000 315.921967 14.487298 +v -35.250000 315.714142 13.400000 +v -35.250000 315.553497 14.932856 +v -40.286480 315.821930 13.530366 +v -49.124142 315.845886 13.566686 +v -40.592716 315.933594 14.458164 +v -40.705318 315.992096 14.224247 +v -48.882572 315.945770 14.424587 +v -40.708748 315.993988 13.991954 +v -48.791264 315.993988 14.208109 +v -40.617569 315.945862 13.775618 +v -48.794697 315.992096 13.975675 +v -54.250000 315.982208 13.912271 +v -40.459072 315.875031 13.616086 +v -48.907421 315.933533 13.741650 +v -54.250000 315.350006 13.493782 +v -49.324139 315.383301 13.514271 +v -40.253227 315.414154 13.535655 +v -49.200584 315.437164 13.553291 +v -54.250000 315.606232 13.750000 +v -35.250000 315.350006 13.493782 +v -35.250000 315.606232 13.750000 +v -40.628223 315.657410 13.859525 +v -48.861069 315.665558 13.883136 +v -48.978920 315.578217 13.705515 +v -40.486988 315.554138 13.672299 +v -35.250000 314.649994 14.706218 +v -54.250000 314.649994 14.706218 +v -35.250000 314.393768 14.450000 +v -54.250000 314.393768 14.450000 +v -35.250000 314.133972 13.600000 +v -54.250000 314.133972 13.600000 +v -35.250000 314.500000 13.233974 +v -54.250000 314.500000 13.233974 +v -35.250000 315.000000 13.100000 +v -54.250000 315.000000 13.100000 +v -35.250000 325.233002 13.150000 +v -54.250000 325.299988 12.900000 +v -54.250000 325.233002 13.150000 +v -35.250000 325.299988 12.900000 +v -35.250000 325.049988 13.333013 +v -54.250000 325.049988 13.333013 +v -35.250000 324.799988 13.400000 +v -54.250000 324.799988 13.400000 +v -35.250000 325.000000 12.900000 +v -35.250000 324.973206 13.000000 +v -54.250000 325.000000 12.900000 +v -54.250000 324.973206 13.000000 +v -35.250000 324.899994 13.073205 +v -54.250000 324.899994 13.073205 +v -35.250000 324.799988 13.100000 +v -54.250000 324.799988 13.100000 +v -46.834236 332.294769 14.100000 +v -46.913490 332.304230 14.400000 +v -49.187443 316.041321 14.669727 +v -47.130016 332.330078 14.619616 +v -49.023529 316.021729 14.584126 +v -48.875496 316.004059 14.424661 +v -48.856979 316.001831 14.393425 +v -48.794258 315.994354 13.975640 +v -46.913490 332.304230 13.800000 +v -48.856979 316.001831 13.806575 +v -48.898563 316.006805 13.741577 +v -47.130016 332.330078 13.580385 +v -49.083675 316.028931 13.576644 +v -49.102001 316.031097 13.566649 +v -42.586510 332.304230 13.800000 +v -42.665764 332.294769 14.100000 +v -40.398201 316.031097 14.633246 +v -42.369984 332.330078 14.619616 +v -40.416325 316.028931 14.623356 +v -40.601570 316.006805 14.458241 +v -42.586510 332.304230 14.400000 +v -40.643021 316.001862 14.393425 +v -40.705757 315.994354 14.224281 +v -40.718586 315.992828 14.100000 +v -40.643021 316.001862 13.806575 +v -40.624634 316.004059 13.775545 +v -40.476646 316.021729 13.616004 +v -42.369984 332.330078 13.580385 +v -40.312698 316.041290 13.530319 +v -48.910599 315.333923 14.340892 +v -48.902519 315.401550 14.340892 +v -48.928314 315.404633 14.393425 +v -48.936394 315.336975 14.393425 +v -48.833019 315.560791 14.100000 +v -48.882790 315.566711 14.340892 +v -48.822205 315.651306 14.100000 +v -48.915146 315.295837 14.340892 +v -48.987694 314.938812 14.400000 +v -48.908440 314.929352 14.100000 +v -48.940941 315.298920 14.393425 +v -48.836353 315.532867 14.100000 +v -48.886124 315.538788 14.340892 +v -48.862198 315.656067 13.883135 +v -48.852749 315.395599 14.100000 +v -48.873013 315.565552 13.883135 +v -48.860828 315.327972 14.100000 +v -48.876347 315.537628 13.883135 +v -48.865372 315.289886 14.100000 +v -48.908585 315.569794 13.806575 +v -48.911919 315.541870 13.806575 +v -49.251812 315.374664 14.664459 +v -48.892738 315.400391 13.883135 +v -49.155010 315.431702 14.623356 +v -48.982216 315.550293 13.705482 +v -49.256359 315.336609 14.664459 +v -49.204220 314.964661 14.619616 +v -48.900818 315.332733 13.883135 +v -49.163090 315.364075 14.623356 +v -48.928314 315.404633 13.806575 +v -49.167637 315.325989 14.623356 +v -48.905365 315.294678 13.883135 +v -48.908585 315.569794 14.393425 +v -48.987694 314.938812 13.800000 +v -49.029629 315.416718 14.527901 +v -48.936394 315.336975 13.806575 +v -48.940941 315.298920 13.806575 +v -48.911919 315.541870 14.393425 +v -48.998611 315.413025 13.705482 +v -49.006691 315.345398 13.705482 +v -49.037708 315.349091 14.527901 +v -49.011234 315.307312 13.705482 +v -49.204220 314.964661 13.580385 +v -49.155010 315.431702 13.576644 +v -49.042255 315.311035 14.527901 +v -49.163090 315.364075 13.576644 +v -49.167637 315.325989 13.576644 +v -49.208664 315.369507 13.553290 +v -49.213211 315.331451 13.553290 +v -49.328686 315.345245 13.514270 +v -47.497635 333.182648 13.500000 +v -47.218803 333.267151 13.576644 +v -47.128910 332.800751 13.576644 +v -47.000305 333.333374 13.806575 +v -46.901455 332.820496 13.806575 +v -46.926922 333.353607 14.100000 +v -47.203365 333.808167 13.800000 +v -47.133305 333.846405 14.100000 +v -47.776466 333.098145 13.576644 +v -47.419170 332.775574 13.500000 +v -47.994965 333.031952 13.806575 +v -47.709435 332.750366 13.576644 +v -48.067795 333.009857 14.100000 +v -46.825802 332.828979 14.100000 +v -47.936886 332.730621 13.806575 +v -47.994965 333.031952 14.393425 +v -48.012707 332.724060 14.100000 +v -47.776466 333.098145 14.623356 +v -47.936886 332.730621 14.393425 +v -47.497635 333.182648 14.700000 +v -47.709435 332.750366 14.623356 +v -47.218803 333.267151 14.623356 +v -47.394768 333.703674 14.619616 +v -47.419170 332.775574 14.700000 +v -47.000305 333.333374 14.393425 +v -47.203365 333.808167 14.400000 +v -47.128910 332.800751 14.623356 +v -46.901455 332.820496 14.393425 +v -47.394768 333.703674 13.580385 +v -48.321907 336.023682 14.100000 +v -48.983006 337.075867 14.393425 +v -48.388706 335.987244 14.393425 +v -48.916206 337.112335 14.100000 +v -48.388706 335.987244 13.806575 +v -48.983006 337.075867 13.806575 +v -47.994797 334.789185 14.623356 +v -48.589096 335.877838 14.623356 +v -48.589096 335.877838 13.576644 +v -49.183399 336.966461 13.576644 +v -47.794403 334.898590 14.393425 +v -47.727608 334.935059 14.100000 +v -47.794403 334.898590 13.806575 +v -47.994797 334.789185 13.576644 +v -49.777699 338.055115 14.623356 +v -50.366268 339.146881 14.619616 +v -49.577305 338.164520 14.393425 +v -50.174866 339.251373 14.400000 +v -49.510509 338.200989 14.100000 +v -50.174866 339.251373 13.800000 +v -50.104809 339.289612 14.100000 +v -49.577305 338.164520 13.806575 +v -50.366268 339.146881 13.580385 +v -49.183399 336.966461 14.623356 +v -49.777699 338.055115 13.576644 +v -50.372417 339.822113 13.576644 +v -50.112995 340.026581 13.611998 +v -50.327545 339.797668 13.609021 +v -51.269459 339.458405 14.393425 +v -51.331459 339.457397 14.229738 +v -51.139214 340.239471 14.229738 +v -50.216312 339.475677 13.833200 +v -50.107059 339.672821 14.100000 +v -50.154228 339.480927 14.100000 +v -51.084751 340.209808 14.393425 +v -50.159626 339.706268 13.833200 +v -50.809048 340.059753 14.663078 +v -50.424809 340.493286 14.659701 +v -50.884224 340.100677 14.623356 +v -50.230274 339.475433 13.806575 +v -50.171890 339.712952 13.806575 +v -51.200188 339.459534 14.492763 +v -51.023899 340.176697 14.492763 +v -50.628319 339.961395 14.700000 +v -50.267162 340.257324 14.695951 +v -50.562801 339.925720 13.504723 +v -50.260654 340.247589 13.505548 +v -50.628319 339.961395 13.500000 +v -50.418663 340.484070 13.536122 +v -50.407467 339.472534 13.609021 +v -50.572498 339.931000 14.696576 +v -51.041180 339.462158 14.623356 +v -50.458549 339.471710 13.576644 +v -50.955601 339.463562 14.663078 +v -50.799236 340.054413 13.532908 +v -50.884224 340.100677 13.576644 +v -50.550602 340.681549 13.696676 +v -50.372417 339.822113 14.623356 +v -50.118370 340.034637 14.594828 +v -50.675278 339.468140 13.504723 +v -50.336491 339.802551 14.598025 +v -50.749866 339.466919 14.700000 +v -50.749866 339.466919 13.500000 +v -50.686317 339.467957 14.696576 +v -51.016655 340.172760 13.697845 +v -50.171890 339.712952 14.393425 +v -50.012722 339.876526 14.379644 +v -50.944431 339.463745 13.532908 +v -50.162025 339.707581 14.372265 +v -49.974575 339.819427 14.100000 +v -51.084751 340.209808 13.806575 +v -50.626053 340.794464 13.950198 +v -50.458549 339.471710 14.623356 +v -51.041180 339.462158 13.576644 +v -50.417652 339.472382 14.598025 +v -50.230274 339.475433 14.393425 +v -51.136932 340.238220 13.958963 +v -51.191940 339.459686 13.697845 +v -50.219040 339.475616 14.372265 +v -51.151592 340.246216 14.100000 +v -50.627628 340.796844 14.238252 +v -51.269459 339.458405 13.806575 +v -51.328861 339.457428 13.958963 +v -50.554966 340.688080 14.494437 +v -51.345551 339.457153 14.100000 +v -50.011208 339.874268 13.825633 +v -46.688446 341.745544 14.696576 +v -42.811554 341.745544 14.696576 +v -42.759014 342.009674 14.663078 +v -46.740986 342.009674 14.663078 +v -46.636028 341.481995 14.598025 +v -42.712902 342.241516 13.697845 +v -38.949398 340.681549 13.696676 +v -39.081337 340.484070 13.536122 +v -42.863972 341.481995 14.598025 +v -42.761192 341.998718 13.532908 +v -46.597275 341.287170 14.372265 +v -46.584621 341.223541 14.100000 +v -42.915379 341.223541 14.100000 +v -42.902725 341.287170 14.372265 +v -42.686188 342.375824 13.958963 +v -38.873947 340.794464 13.950198 +v -42.685680 342.378357 14.229738 +v -38.872372 340.796844 14.238252 +v -42.711292 342.249603 14.492763 +v -38.945034 340.688080 14.494437 +v -39.075191 340.493286 14.659701 +v -39.232838 340.257324 14.695951 +v -39.381630 340.034637 14.594828 +v -39.487278 339.876526 14.379644 +v -46.596745 341.284485 13.833200 +v -39.525425 339.819427 14.100000 +v -42.903255 341.284485 13.833200 +v -46.634041 341.472015 13.609021 +v -42.865959 341.472015 13.609021 +v -46.686291 341.734711 13.504723 +v -42.813709 341.734711 13.504723 +v -46.738808 341.998718 13.532908 +v -46.787098 342.241516 13.697845 +v -46.813812 342.375824 13.958963 +v -46.814320 342.378357 14.229738 +v -39.488792 339.874268 13.825633 +v -46.788708 342.249603 14.492763 +v -39.387005 340.026581 13.611998 +v -39.239346 340.247589 13.505548 +v -38.415249 340.209808 14.393425 +v -38.168541 339.457397 14.229738 +v -38.360786 340.239471 14.229738 +v -38.230541 339.458405 14.393425 +v -39.340374 339.706268 13.833200 +v -39.345772 339.480927 14.100000 +v -39.392941 339.672821 14.100000 +v -39.283688 339.475677 13.833200 +v -38.544399 339.463562 14.663078 +v -38.458820 339.462158 14.623356 +v -39.328110 339.712952 13.806575 +v -38.476101 340.176697 14.492763 +v -38.299812 339.459534 14.492763 +v -39.269726 339.475433 13.806575 +v -38.824722 339.468140 13.504723 +v -39.133732 339.146881 13.580385 +v -39.041451 339.471710 13.576644 +v -38.750134 339.466919 14.700000 +v -38.750134 339.466919 13.500000 +v -38.813683 339.467957 14.696576 +v -39.133732 339.146881 14.619616 +v -39.172455 339.797668 13.609021 +v -39.092533 339.472534 13.609021 +v -38.615776 340.100677 14.623356 +v -39.127583 339.822113 13.576644 +v -38.690952 340.059753 14.663078 +v -38.555569 339.463745 13.532908 +v -39.041451 339.471710 14.623356 +v -38.458820 339.462158 13.576644 +v -39.082348 339.472382 14.598025 +v -39.325134 339.251373 14.400000 +v -38.937199 339.925720 13.504723 +v -38.871681 339.961395 14.700000 +v -38.871681 339.961395 13.500000 +v -38.927502 339.931000 14.696576 +v -38.308060 339.459686 13.697845 +v -39.269726 339.475433 14.393425 +v -38.700764 340.054413 13.532908 +v -39.280960 339.475616 14.372265 +v -39.395191 339.289612 14.100000 +v -39.127583 339.822113 14.623356 +v -38.230541 339.458405 13.806575 +v -38.615776 340.100677 13.576644 +v -39.163509 339.802551 14.598025 +v -38.171139 339.457428 13.958963 +v -39.328110 339.712952 14.393425 +v -38.483345 340.172760 13.697845 +v -39.337975 339.707581 14.372265 +v -38.154449 339.457153 14.100000 +v -38.415249 340.209808 13.806575 +v -38.363068 340.238220 13.958963 +v -38.348408 340.246216 14.100000 +v -39.325134 339.251373 13.800000 +v -40.583794 337.112335 14.100000 +v -41.111294 335.987244 14.393425 +v -40.516994 337.075867 14.393425 +v -41.178093 336.023682 14.100000 +v -40.516994 337.075867 13.806575 +v -41.111294 335.987244 13.806575 +v -39.722301 338.055115 14.623356 +v -40.316601 336.966461 14.623356 +v -40.316601 336.966461 13.576644 +v -40.910904 335.877838 13.576644 +v -39.922695 338.164520 14.393425 +v -39.989491 338.200989 14.100000 +v -39.922695 338.164520 13.806575 +v -39.722301 338.055115 13.576644 +v -41.505203 334.789185 14.623356 +v -42.296635 333.808167 14.400000 +v -42.105232 333.703674 14.619616 +v -41.705597 334.898590 14.393425 +v -42.366695 333.846405 14.100000 +v -41.772392 334.935059 14.100000 +v -41.705597 334.898590 13.806575 +v -42.296635 333.808167 13.800000 +v -40.910904 335.877838 14.623356 +v -41.505203 334.789185 13.576644 +v -42.105232 333.703674 13.580385 +v -42.080830 332.775574 13.500000 +v -42.371090 332.800751 13.576644 +v -42.281197 333.267151 13.576644 +v -42.598545 332.820496 13.806575 +v -42.499695 333.333374 13.806575 +v -41.790565 332.750366 13.576644 +v -42.002365 333.182648 13.500000 +v -41.563114 332.730621 13.806575 +v -41.723534 333.098145 13.576644 +v -41.487293 332.724060 14.100000 +v -41.505035 333.031952 13.806575 +v -41.563114 332.730621 14.393425 +v -41.432205 333.009857 14.100000 +v -41.790565 332.750366 14.623356 +v -41.505035 333.031952 14.393425 +v -42.080830 332.775574 14.700000 +v -41.723534 333.098145 14.623356 +v -42.371090 332.800751 14.623356 +v -42.002365 333.182648 14.700000 +v -42.598545 332.820496 14.393425 +v -42.674198 332.828979 14.100000 +v -42.281197 333.267151 14.623356 +v -42.499695 333.333374 14.393425 +v -42.573078 333.353607 14.100000 +v -40.343403 315.363373 13.580385 +v -40.457954 315.311005 13.672307 +v -40.462509 315.349152 13.672307 +v -40.599335 315.332794 14.316489 +v -40.594776 315.294647 14.316489 +v -40.555374 315.299377 14.400000 +v -40.470615 315.416992 13.672307 +v -40.518108 315.550446 14.494167 +v -40.243961 315.336548 13.535658 +v -40.209332 315.046661 13.535658 +v -40.304218 315.035339 13.580385 +v -40.501724 315.413269 14.494167 +v -40.338848 315.325226 13.580385 +v -40.248516 315.374695 13.535658 +v -40.607437 315.400635 14.316489 +v -40.559929 315.337494 14.400000 +v -40.568031 315.405334 14.400000 +v -40.584415 315.542511 14.400000 +v -40.587761 315.570496 14.400000 +v -40.634628 315.289886 14.100000 +v -40.599998 315.000000 14.100000 +v -40.560150 315.004761 14.316489 +v -40.623821 315.537811 14.316489 +v -40.520744 315.009460 13.800000 +v -40.519615 315.000000 13.800000 +v -40.639183 315.328033 14.100000 +v -40.627163 315.565796 14.316489 +v -40.647285 315.395874 14.100000 +v -40.637966 315.656219 14.316489 +v -40.423328 315.021088 13.672307 +v -40.299999 315.000000 13.580385 +v -40.663670 315.533051 14.100000 +v -40.585037 315.295807 13.859525 +v -40.252563 315.041504 14.646526 +v -40.299999 315.000000 14.619616 +v -40.667015 315.561035 14.100000 +v -40.304218 315.035339 14.619616 +v -40.171478 315.345215 14.685694 +v -40.589592 315.333954 13.859525 +v -40.454441 315.017395 14.494167 +v -40.519615 315.000000 14.400000 +v -40.555374 315.299377 13.800000 +v -40.287189 315.331390 14.646526 +v -40.291744 315.369537 14.646526 +v -40.559929 315.337494 13.800000 +v -40.338848 315.325226 14.619616 +v -40.597694 315.401794 13.859525 +v -40.677814 315.651489 14.100000 +v -40.520744 315.009460 14.400000 +v -40.343403 315.363373 14.619616 +v -40.568031 315.405334 13.800000 +v -40.489067 315.307281 14.494167 +v -40.614079 315.538971 13.859525 +v -40.493622 315.345428 14.494167 +v -40.617424 315.566956 13.859525 +v -40.584415 315.542511 13.800000 +v -40.587761 315.570496 13.800000 +v -54.250000 314.433685 7.011450 +v -35.250000 314.433685 7.011450 +v -54.250000 314.783691 7.265739 +v -35.250000 314.783691 7.265739 +v -39.837524 315.418488 7.161123 +v -35.250000 315.216309 7.265739 +v -54.250000 315.216309 7.265739 +v -35.250000 315.566315 7.011450 +v -39.671379 315.532715 7.053959 +v -49.618851 315.397034 7.176500 +v -54.250000 315.566315 7.011450 +v -49.758728 315.479279 7.109947 +v -39.535473 315.651215 6.856652 +v -49.986496 315.671692 6.796848 +v -49.902260 315.595001 6.968525 +v -35.250000 315.553497 5.767144 +v -35.250000 315.921967 6.212702 +v -39.851284 315.837799 7.145979 +v -35.250000 315.714142 7.300000 +v -54.250000 315.921967 6.212702 +v -49.649059 315.837891 6.054190 +v -39.660400 315.917480 6.997728 +v -54.250000 315.553497 5.767144 +v -54.250000 315.714142 7.300000 +v -49.579372 315.819519 7.173129 +v -49.839767 315.917572 6.202500 +v -49.955746 315.984192 6.423326 +v -49.896965 315.948914 6.915325 +v -49.976151 315.997131 6.674325 +v -54.250000 315.982208 6.787728 +v -35.250000 315.982208 6.787728 +v -39.544315 315.984161 6.776925 +v -39.523857 315.997131 6.525609 +v -39.764164 315.869110 6.105576 +v -39.603264 315.948761 6.284288 +v -49.736195 315.869263 7.094170 +v -39.920872 315.819489 6.026806 +v -54.250000 325.299988 7.800000 +v -35.250000 325.299988 7.800000 +v -35.250000 325.233002 7.550000 +v -54.250000 325.233002 7.550000 +v -35.250000 325.049988 7.366987 +v -54.250000 325.049988 7.366987 +v -35.250000 324.799988 7.300000 +v -54.250000 324.799988 7.300000 +v -54.250000 325.000000 7.800000 +v -35.250000 325.000000 7.800000 +v -35.250000 324.973206 7.700000 +v -54.250000 324.973206 7.700000 +v -35.250000 324.899994 7.626795 +v -54.250000 324.899994 7.626795 +v -35.250000 324.799988 7.600000 +v -54.250000 324.799988 7.600000 +v -48.017357 332.436096 6.600000 +v -47.938103 332.426605 6.900000 +v -49.564064 315.947906 7.173211 +v -47.721577 332.400757 7.119615 +v -49.724598 315.967072 7.094294 +v -49.892509 315.987122 6.915394 +v -49.905266 315.988647 6.893425 +v -49.954597 315.994537 6.423299 +v -47.938103 332.426605 6.300000 +v -49.905266 315.988647 6.306575 +v -49.832363 315.979950 6.202471 +v -47.721577 332.400757 6.080385 +v -49.678570 315.961578 6.076644 +v -49.634918 315.956360 6.054175 +v -41.561897 332.426605 6.300000 +v -41.482643 332.436096 6.600000 +v -39.865437 315.956329 7.145989 +v -41.778423 332.400757 7.119615 +v -39.821430 315.961578 7.123356 +v -39.667824 315.979919 6.997740 +v -41.561897 332.426605 6.900000 +v -39.594734 315.988647 6.893425 +v -39.545479 315.994537 6.776949 +v -39.519169 315.997681 6.600000 +v -39.594734 315.988647 6.306575 +v -39.607727 315.987091 6.284216 +v -39.775772 315.967041 6.105448 +v -41.778423 332.400757 6.080385 +v -39.936180 315.947876 6.026714 +v -49.988617 315.654419 6.796869 +v -49.957829 315.548615 6.893425 +v -49.994400 315.606018 6.796869 +v -50.044529 315.464386 6.600000 +v -50.048492 315.431213 6.600000 +v -50.015743 315.427307 6.796869 +v -50.011780 315.460480 6.796869 +v -50.038761 315.512726 6.600000 +v -50.006008 315.508789 6.796869 +v -50.033394 315.557617 6.600000 +v -50.000645 315.553711 6.796869 +v -50.027149 315.609924 6.600000 +v -50.021366 315.658325 6.600000 +v -49.992031 315.424469 6.344186 +v -50.012306 315.061188 6.300000 +v -50.091560 315.070648 6.600000 +v -49.988068 315.457642 6.344186 +v -49.972927 315.422180 6.306575 +v -49.968964 315.455383 6.306575 +v -49.982300 315.505981 6.344186 +v -49.963192 315.503693 6.306575 +v -49.976933 315.550873 6.344186 +v -49.957829 315.548615 6.306575 +v -49.620869 315.380127 7.176501 +v -49.795780 315.035339 7.119615 +v -49.970688 315.603180 6.344186 +v -49.951584 315.600891 6.306575 +v -49.746231 315.395111 7.123356 +v -49.844360 315.406830 6.146582 +v -49.795780 315.035339 6.080385 +v -49.768513 315.397766 7.110027 +v -49.742268 315.428284 7.123356 +v -49.840397 315.440002 6.146582 +v -49.764549 315.430969 7.110027 +v -49.923702 315.416321 6.968601 +v -50.012306 315.061188 6.900000 +v -49.834625 315.488342 6.146582 +v -49.746231 315.395111 6.076644 +v -49.919739 315.449493 6.968601 +v -49.742268 315.428284 6.076644 +v -49.913967 315.497803 6.968601 +v -49.667080 315.385651 6.039135 +v -49.972927 315.422180 6.893425 +v -49.968964 315.455383 6.893425 +v -49.908604 315.542725 6.968601 +v -49.963192 315.503693 6.893425 +v -47.128910 332.800751 7.123356 +v -46.901455 332.820496 6.893425 +v -47.000305 333.333374 6.893425 +v -47.776466 333.098145 7.123356 +v -47.917686 333.418213 7.119615 +v -47.497635 333.182648 7.200000 +v -46.926922 333.353607 6.600000 +v -47.419170 332.775574 7.200000 +v -47.218803 333.267151 7.123356 +v -47.994965 333.031952 6.893425 +v -48.109089 333.313721 6.900000 +v -47.709435 332.750366 7.123356 +v -48.067795 333.009857 6.600000 +v -48.179146 333.275482 6.600000 +v -47.936886 332.730621 6.893425 +v -47.994965 333.031952 6.306575 +v -48.109089 333.313721 6.300000 +v -48.012707 332.724060 6.600000 +v -47.776466 333.098145 6.076644 +v -47.917686 333.418213 6.080385 +v -47.936886 332.730621 6.306575 +v -47.497635 333.182648 6.000000 +v -47.709435 332.750366 6.076644 +v -47.218803 333.267151 6.076644 +v -47.419170 332.775574 6.000000 +v -47.000305 333.333374 6.306575 +v -47.128910 332.800751 6.076644 +v -46.901455 332.820496 6.306575 +v -46.825802 332.828979 6.600000 +v -50.889187 338.861420 7.119615 +v -51.080589 338.756927 6.900000 +v -51.150646 338.718689 6.600000 +v -51.080589 338.756927 6.300000 +v -50.889187 338.861420 6.080385 +v -50.216312 339.475677 6.866801 +v -50.154228 339.480927 6.600000 +v -50.107059 339.672821 6.600000 +v -51.269459 339.458405 6.306575 +v -51.331459 339.457397 6.470262 +v -51.139214 340.239471 6.470262 +v -50.159626 339.706268 6.866801 +v -50.809048 340.059753 6.036922 +v -50.884224 340.100677 6.076644 +v -50.424809 340.493286 6.040299 +v -50.230274 339.475433 6.893425 +v -51.200188 339.459534 6.207237 +v -51.084751 340.209808 6.306575 +v -51.023899 340.176697 6.207237 +v -50.171890 339.712952 6.893425 +v -50.562801 339.925720 7.195278 +v -50.372417 339.822113 7.123356 +v -50.260654 340.247589 7.194453 +v -50.628319 339.961395 6.000000 +v -50.267162 340.257324 6.004050 +v -50.628319 339.961395 7.200000 +v -50.418663 340.484070 7.163877 +v -50.407467 339.472534 7.090979 +v -50.327545 339.797668 7.090979 +v -50.572498 339.931000 6.003424 +v -51.041180 339.462158 6.076644 +v -50.458549 339.471710 7.123356 +v -50.955601 339.463562 6.036922 +v -50.799236 340.054413 7.167092 +v -50.372417 339.822113 6.076644 +v -50.118370 340.034637 6.105172 +v -50.884224 340.100677 7.123356 +v -50.550602 340.681549 7.003324 +v -50.675278 339.468140 7.195278 +v -50.336491 339.802551 6.101975 +v -50.749866 339.466919 6.000000 +v -50.749866 339.466919 7.200000 +v -50.686317 339.467957 6.003424 +v -51.016655 340.172760 7.002154 +v -50.171890 339.712952 6.306575 +v -50.012722 339.876526 6.320356 +v -50.944431 339.463745 7.167092 +v -50.162025 339.707581 6.327735 +v -49.974575 339.819427 6.600000 +v -51.084751 340.209808 6.893425 +v -50.458549 339.471710 6.076644 +v -50.626053 340.794464 6.749801 +v -51.041180 339.462158 7.123356 +v -50.417652 339.472382 6.101975 +v -51.136932 340.238220 6.741037 +v -50.230274 339.475433 6.306575 +v -51.191940 339.459686 7.002154 +v -50.219040 339.475616 6.327735 +v -51.151592 340.246216 6.600000 +v -50.627628 340.796844 6.461748 +v -51.269459 339.458405 6.893425 +v -51.328861 339.457428 6.741037 +v -50.554966 340.688080 6.205563 +v -51.345551 339.457153 6.600000 +v -50.011208 339.874268 6.874367 +v -50.112995 340.026581 7.088002 +v -46.597275 341.287170 6.327735 +v -46.636028 341.481995 6.101975 +v -42.863972 341.481995 6.101975 +v -42.686188 342.375824 6.741037 +v -38.949398 340.681549 7.003324 +v -38.873947 340.794464 6.749801 +v -42.915379 341.223541 6.600000 +v -46.584621 341.223541 6.600000 +v -42.902725 341.287170 6.327735 +v -42.712902 342.241516 7.002154 +v -42.685680 342.378357 6.470262 +v -38.872372 340.796844 6.461748 +v -42.711292 342.249603 6.207237 +v -38.945034 340.688080 6.205563 +v -42.759014 342.009674 6.036922 +v -39.075191 340.493286 6.040299 +v -42.811554 341.745544 6.003424 +v -39.232838 340.257324 6.004050 +v -39.381630 340.034637 6.105172 +v -39.487278 339.876526 6.320356 +v -39.525425 339.819427 6.600000 +v -46.596745 341.284485 6.866801 +v -39.488792 339.874268 6.874367 +v -42.903255 341.284485 6.866801 +v -46.634041 341.472015 7.090979 +v -42.865959 341.472015 7.090979 +v -46.686291 341.734711 7.195278 +v -42.813709 341.734711 7.195278 +v -46.738808 341.998718 7.167092 +v -42.761192 341.998718 7.167092 +v -46.787098 342.241516 7.002154 +v -46.813812 342.375824 6.741037 +v -46.814320 342.378357 6.470262 +v -39.387005 340.026581 7.088002 +v -46.788708 342.249603 6.207237 +v -39.239346 340.247589 7.194453 +v -46.740986 342.009674 6.036922 +v -46.688446 341.745544 6.003424 +v -39.081337 340.484070 7.163877 +v -39.340374 339.706268 6.866801 +v -39.392941 339.672821 6.600000 +v -38.544399 339.463562 6.036922 +v -38.610813 338.861420 6.080385 +v -39.345772 339.480927 6.600000 +v -39.283688 339.475677 6.866801 +v -39.328110 339.712952 6.893425 +v -38.458820 339.462158 6.076644 +v -39.269726 339.475433 6.893425 +v -38.476101 340.176697 6.207237 +v -38.415249 340.209808 6.306575 +v -38.230541 339.458405 6.306575 +v -38.299812 339.459534 6.207237 +v -38.824722 339.468140 7.195278 +v -39.041451 339.471710 7.123356 +v -38.750134 339.466919 6.000000 +v -38.750134 339.466919 7.200000 +v -38.813683 339.467957 6.003424 +v -39.172455 339.797668 7.090979 +v -39.092533 339.472534 7.090979 +v -38.615776 340.100677 6.076644 +v -39.127583 339.822113 7.123356 +v -38.690952 340.059753 6.036922 +v -38.555569 339.463745 7.167092 +v -38.610813 338.861420 7.119615 +v -38.458820 339.462158 7.123356 +v -39.041451 339.471710 6.076644 +v -39.082348 339.472382 6.101975 +v -38.937199 339.925720 7.195278 +v -38.871681 339.961395 6.000000 +v -38.871681 339.961395 7.200000 +v -38.927502 339.931000 6.003424 +v -38.308060 339.459686 7.002154 +v -38.419411 338.756927 6.900000 +v -39.269726 339.475433 6.306575 +v -38.700764 340.054413 7.167092 +v -39.280960 339.475616 6.327735 +v -39.127583 339.822113 6.076644 +v -38.230541 339.458405 6.893425 +v -38.615776 340.100677 7.123356 +v -39.163509 339.802551 6.101975 +v -38.171139 339.457428 6.741037 +v -39.328110 339.712952 6.306575 +v -38.349354 338.718689 6.600000 +v -38.483345 340.172760 7.002154 +v -39.337975 339.707581 6.327735 +v -38.154449 339.457153 6.600000 +v -38.415249 340.209808 6.893425 +v -38.168541 339.457397 6.470262 +v -38.419411 338.756927 6.300000 +v -38.363068 340.238220 6.741037 +v -38.348408 340.246216 6.600000 +v -38.360786 340.239471 6.470262 +v -41.582314 333.418213 7.119615 +v -41.390911 333.313721 6.900000 +v -41.320854 333.275482 6.600000 +v -41.390911 333.313721 6.300000 +v -41.582314 333.418213 6.080385 +v -42.281197 333.267151 7.123356 +v -42.499695 333.333374 6.893425 +v -42.598545 332.820496 6.893425 +v -41.790565 332.750366 7.123356 +v -42.080830 332.775574 7.200000 +v -42.674198 332.828979 6.600000 +v -42.002365 333.182648 7.200000 +v -42.371090 332.800751 7.123356 +v -41.563114 332.730621 6.893425 +v -41.723534 333.098145 7.123356 +v -41.487293 332.724060 6.600000 +v -42.573078 333.353607 6.600000 +v -41.505035 333.031952 6.893425 +v -41.563114 332.730621 6.306575 +v -41.432205 333.009857 6.600000 +v -41.790565 332.750366 6.076644 +v -41.505035 333.031952 6.306575 +v -42.080830 332.775574 6.000000 +v -41.723534 333.098145 6.076644 +v -42.371090 332.800751 6.076644 +v -42.002365 333.182648 6.000000 +v -42.598545 332.820496 6.306575 +v -42.281197 333.267151 6.076644 +v -42.499695 333.333374 6.306575 +v -39.576931 315.416229 6.230577 +v -39.486485 315.444031 6.402468 +v -39.484482 315.427277 6.402468 +v -39.482456 315.444519 6.785395 +v -39.518036 315.505432 6.856662 +v -39.510365 315.441193 6.856662 +v -39.578934 315.432983 6.230577 +v -39.490128 315.508759 6.785395 +v -39.705032 315.483093 6.114590 +v -39.591976 315.542206 6.230577 +v -39.586605 315.497223 6.230577 +v -39.480453 315.427765 6.785395 +v -39.508362 315.424408 6.856662 +v -39.652290 315.041534 7.085410 +v -39.647327 315.000000 7.085410 +v -39.697357 315.418854 6.114590 +v -39.695354 315.402100 7.085410 +v -39.833591 315.385590 7.161123 +v -39.695354 315.402100 6.114590 +v -39.437389 315.067200 6.414605 +v -39.480453 315.427765 6.414605 +v -39.451508 315.431213 6.600000 +v -39.472801 315.609497 6.600000 +v -39.478596 315.658020 6.600000 +v -39.501751 315.606049 6.785395 +v -39.408440 315.070648 6.600000 +v -39.613235 315.046204 7.053997 +v -39.656300 315.406738 7.053997 +v -39.429367 315.000000 6.414590 +v -39.441418 315.066711 6.402468 +v -39.466553 315.557159 6.600000 +v -39.495499 315.553711 6.785395 +v -39.734406 315.414429 6.089397 +v -39.461182 315.512207 6.600000 +v -39.732403 315.397675 6.089397 +v -39.879601 315.380066 6.023362 +v -39.507545 315.654572 6.414605 +v -39.533863 315.055664 6.230577 +v -39.647327 315.000000 6.114590 +v -39.511574 315.654083 6.402468 +v -39.652290 315.041534 6.114590 +v -39.453506 315.447968 6.600000 +v -39.689339 315.037109 6.089397 +v -39.836533 315.019531 6.023362 +v -39.501751 315.606049 6.414605 +v -39.835594 315.402344 7.161123 +v -39.505779 315.605560 6.402468 +v -39.705032 315.483093 7.085410 +v -39.495499 315.553711 6.414605 +v -39.499527 315.553223 6.402468 +v -39.665974 315.487762 7.053997 +v -39.697357 315.418854 7.085410 +v -39.465298 315.063873 6.856662 +v -39.429367 315.000000 6.785410 +v -39.658302 315.423523 7.053997 +v -39.490128 315.508759 6.414605 +v -39.529659 315.602722 6.856662 +v -39.494160 315.508270 6.402468 +v -39.437389 315.067200 6.785395 +v -39.523407 315.550385 6.856662 +v -39.482456 315.444519 6.414605 +v 189.012360 2.021322 15.100000 +v 189.012360 21.021322 15.100000 +v 188.512360 21.021322 14.966025 +v 188.512360 2.021322 14.966025 +v 188.146332 21.021322 14.600000 +v 188.146332 2.021322 14.600000 +v 188.012360 21.021322 14.100000 +v 188.012360 2.021322 14.100000 +v 189.663925 16.736217 14.355808 +v 189.618576 21.021322 14.450000 +v 189.712357 21.021322 14.100000 +v 189.712357 15.587711 14.100000 +v 189.678040 7.410412 14.316487 +v 189.669601 15.643299 14.340892 +v 189.712357 2.021322 14.100000 +v 189.683868 6.285020 14.297517 +v 189.712357 6.254933 14.100000 +v 189.545609 16.600571 14.553389 +v 189.362366 21.021322 14.706218 +v 189.618576 2.021322 14.450000 +v 189.431198 16.434439 14.660864 +v 189.372910 16.228256 14.700000 +v 189.426331 16.018436 14.664463 +v 189.395721 6.947355 14.685694 +v 189.449738 7.071169 14.646523 +v 189.372910 6.814388 14.700000 +v 189.012360 21.021322 14.800000 +v 189.409195 6.652925 14.676639 +v 189.362366 2.021322 14.706218 +v 189.491013 6.513447 14.610527 +v 189.012360 2.021322 14.800000 +v 189.606873 6.369627 14.469361 +v 189.712357 7.454933 14.100000 +v 189.590790 7.292726 14.494125 +v 189.566345 15.784547 14.527892 +v 189.712357 16.787710 14.100000 +v 188.312363 2.021322 14.100000 +v 188.406143 2.021322 13.750000 +v 188.312363 21.021322 14.100000 +v 188.406143 21.021322 13.750000 +v 188.662354 2.021322 13.493782 +v 188.662354 21.021322 13.493782 +v 189.012360 2.021322 13.400000 +v 189.012360 21.021322 13.400000 +v 189.349869 7.331250 6.300000 +v 189.425629 7.273047 6.205833 +v 189.357788 7.264944 6.205833 +v 189.417709 7.339353 6.300000 +v 189.337585 7.110168 7.119615 +v 189.361496 7.233833 7.027692 +v 189.323364 7.229277 7.027692 +v 189.412994 7.378758 6.383511 +v 189.550171 7.395143 6.383511 +v 189.554871 7.355737 6.300000 +v 189.375732 7.114724 7.119615 +v 189.387054 7.019838 7.164342 +v 189.372910 6.814388 7.200000 +v 189.426498 7.024549 7.164345 +v 189.047684 7.075542 6.080385 +v 189.053864 7.023885 6.053473 +v 189.012360 7.071322 6.080385 +v 189.337585 7.110168 6.080385 +v 189.343750 7.058512 6.053473 +v 189.348923 7.015282 7.164342 +v 189.033463 7.194650 7.027692 +v 189.012360 7.290937 6.900000 +v 189.012360 7.071322 7.119615 +v 189.021820 7.292068 6.900000 +v 189.311722 7.326694 6.300000 +v 189.319641 7.260388 6.205833 +v 189.311722 7.326694 6.900000 +v 189.047684 7.075542 7.119615 +v 189.573410 7.438335 6.600000 +v 189.663834 7.449137 6.600000 +v 189.668594 7.409288 6.383511 +v 189.578156 7.398487 6.383511 +v 189.059021 6.980655 7.164342 +v 189.012360 6.771322 7.200000 +v 189.345154 7.370656 6.383511 +v 189.545410 7.434991 6.600000 +v 189.307022 7.366100 6.383511 +v 189.029739 7.225762 6.205833 +v 189.012360 7.290937 6.300000 +v 189.408234 7.418607 6.600000 +v 189.340393 7.410504 6.600000 +v 189.021820 7.292068 6.300000 +v 189.579330 7.388744 6.840475 +v 189.357574 6.942799 6.014307 +v 189.372910 6.814388 6.000000 +v 189.012360 6.771322 6.000000 +v 189.669754 7.399546 6.840475 +v 189.395721 6.947355 6.014307 +v 189.302261 7.405949 6.600000 +v 189.381897 7.063067 6.053473 +v 189.449738 7.071169 6.053477 +v 189.551331 7.385400 6.840475 +v 189.582870 7.359081 6.900000 +v 189.566498 7.258310 7.027701 +v 189.562790 7.289431 6.205833 +v 189.590790 7.292726 6.205875 +v 189.017120 7.331473 6.383511 +v 189.012360 7.371322 6.600000 +v 189.375732 7.114724 6.080385 +v 189.554871 7.355737 6.900000 +v 189.414154 7.369016 6.840475 +v 189.582870 7.359081 6.300000 +v 189.678040 7.410412 6.383513 +v 189.417709 7.339353 6.900000 +v 189.346313 7.360913 6.840475 +v 189.308182 7.356358 6.840475 +v 189.349869 7.331250 6.900000 +v 189.429337 7.241936 7.027692 +v 189.443558 7.122827 7.119615 +v 189.712357 7.454933 6.600000 +v 207.716034 8.876556 6.080385 +v 213.016510 5.643595 6.000000 +v 207.573303 8.615096 6.000000 +v 213.159241 5.905054 6.080385 +v 207.820526 9.067958 6.300000 +v 213.263733 6.096456 6.300000 +v 207.858765 9.138016 6.600000 +v 213.263733 6.096456 6.900000 +v 213.301987 6.166514 6.600000 +v 207.820526 9.067958 6.900000 +v 213.159241 5.905054 7.119615 +v 207.716034 8.876556 7.119615 +v 213.016510 5.643595 7.200000 +v 207.573303 8.615096 7.200000 +v 213.016510 17.399050 6.000000 +v 207.716034 14.166088 6.080385 +v 207.573303 14.427547 6.000000 +v 213.159241 17.137590 6.080385 +v 207.820526 13.974687 6.300000 +v 213.263733 16.946188 6.300000 +v 207.858765 13.904628 6.600000 +v 213.301987 16.876129 6.600000 +v 213.263733 16.946188 6.900000 +v 207.820526 13.974687 6.900000 +v 213.159241 17.137590 7.119615 +v 207.716034 14.166088 7.119615 +v 213.016510 17.399050 7.200000 +v 207.573303 14.427547 7.200000 +v 189.407959 15.624069 6.600000 +v 189.346268 15.681919 6.359108 +v 189.413910 15.673841 6.359108 +v 189.340317 15.632149 6.600000 +v 189.307037 15.676688 6.816865 +v 188.951172 15.759016 6.900000 +v 188.941696 15.679762 6.600000 +v 189.302261 15.636696 6.600000 +v 189.545212 15.607676 6.600000 +v 189.551163 15.657446 6.359108 +v 189.345093 15.672141 6.816865 +v 189.573135 15.604341 6.600000 +v 189.579086 15.654111 6.359108 +v 189.311279 15.712261 6.893425 +v 189.412735 15.664062 6.816865 +v 189.349350 15.707714 6.893425 +v 189.663666 15.593528 6.600000 +v 189.669601 15.643299 6.359108 +v 189.712357 15.587711 6.600000 +v 189.677917 15.632392 6.816864 +v 189.416992 15.699635 6.893425 +v 189.319672 15.782558 6.994519 +v 188.977036 15.975542 7.119615 +v 189.357742 15.778011 6.994519 +v 189.549988 15.647668 6.816865 +v 189.348953 16.027681 6.035541 +v 189.012360 16.271322 6.000000 +v 189.372910 16.228256 6.000000 +v 188.977036 15.975542 6.080385 +v 189.577911 15.644333 6.816865 +v 189.387024 16.023134 6.035541 +v 189.426331 16.018436 6.035537 +v 189.425385 15.769932 6.994519 +v 189.338364 15.938958 6.076644 +v 189.376419 15.934411 6.076644 +v 189.566345 15.784547 6.172108 +v 189.554245 15.683241 6.893425 +v 189.582169 15.679906 6.893425 +v 189.590561 15.750240 6.994485 +v 189.323380 15.813577 6.172099 +v 188.951172 15.759016 6.300000 +v 189.668442 15.633521 6.816865 +v 189.361450 15.809030 6.172099 +v 189.338364 15.938958 7.123356 +v 189.429092 15.800950 6.172099 +v 189.376419 15.934411 7.123356 +v 189.311279 15.712261 6.306575 +v 189.562637 15.753538 6.994519 +v 189.349350 15.707714 6.306575 +v 189.343796 15.984532 7.146710 +v 189.308197 15.686466 6.359108 +v 189.381866 15.979985 7.146710 +v 189.449509 15.971907 7.146708 +v 189.395660 16.095459 7.185730 +v 189.444061 15.926332 7.123356 +v 189.357590 16.100006 7.185730 +v 189.372910 16.228256 7.200000 +v 189.416992 15.699635 6.306575 +v 189.012360 16.271322 7.200000 +v 189.554245 15.683241 6.306575 +v 189.582169 15.679906 6.306575 +v 190.006363 7.480069 6.708046 +v 206.316589 9.357831 6.900000 +v 206.307129 9.437085 6.600000 +v 190.043457 7.169521 6.066753 +v 206.377777 8.845526 6.000000 +v 189.812363 6.866878 6.000000 +v 189.858307 7.147387 6.066793 +v 206.342453 9.141305 6.080385 +v 190.041290 7.187646 6.076644 +v 189.945953 7.364039 6.241836 +v 190.019165 7.372893 6.241759 +v 206.316589 9.357831 6.300000 +v 190.014206 7.414343 6.306575 +v 190.004456 7.476642 6.475753 +v 190.006714 7.477079 6.475718 +v 190.005188 7.489909 6.600000 +v 190.014206 7.414343 6.893425 +v 189.958206 7.388893 6.924382 +v 190.016403 7.395957 6.924455 +v 190.034073 7.247970 7.083996 +v 189.887405 7.230393 7.083914 +v 206.342453 9.141305 7.119615 +v 190.053665 7.084019 7.169681 +v 189.834290 7.057801 7.169634 +v 189.812363 6.866878 7.200000 +v 206.377777 8.845526 7.200000 +v 206.307129 13.605558 6.600000 +v 190.006348 15.562586 6.491891 +v 206.316589 13.684813 6.300000 +v 190.053680 15.958766 6.030272 +v 189.812363 16.175766 6.000000 +v 206.377777 14.197119 6.000000 +v 206.342453 13.901339 6.080385 +v 189.887329 15.812441 6.115958 +v 189.834259 15.984990 6.030322 +v 190.034088 15.794850 6.115873 +v 189.958145 15.653893 6.275412 +v 190.016418 15.646819 6.275339 +v 190.014206 15.628302 6.306575 +v 190.006714 15.565581 6.724360 +v 206.316589 13.684813 6.900000 +v 190.004456 15.566017 6.724326 +v 190.014206 15.628302 6.893425 +v 189.945877 15.678745 6.958350 +v 190.019165 15.669886 6.958423 +v 206.342453 13.901339 7.119615 +v 190.041275 15.854999 7.123356 +v 189.858246 15.895465 7.133314 +v 190.043472 15.873322 7.133351 +v 206.377777 14.197119 7.200000 +v 189.812363 16.175766 7.200000 +v 188.424576 21.021322 5.790983 +v 189.012360 21.021322 5.600000 +v 189.012360 2.021322 5.600000 +v 188.424576 2.021322 5.790983 +v 188.061310 21.021322 6.290983 +v 188.061310 2.021322 6.290983 +v 188.061310 2.021322 6.909017 +v 188.061310 21.021322 6.909017 +v 188.424576 2.021322 7.409017 +v 188.424576 21.021322 7.409017 +v 189.012360 21.021322 7.600000 +v 189.012360 2.021322 7.600000 +v 189.712357 6.254933 6.600000 +v 189.683868 6.285020 6.402483 +v 189.712357 2.021322 6.600000 +v 189.578674 2.021322 6.188550 +v 189.606873 6.369627 6.230639 +v 189.491013 6.513447 6.089473 +v 189.409195 6.652925 6.023361 +v 189.712357 21.021322 6.600000 +v 189.578674 21.021322 6.188550 +v 189.663925 16.736217 6.344192 +v 189.228668 2.021322 5.934260 +v 189.431198 16.434439 6.039136 +v 189.545609 16.600571 6.146612 +v 189.228668 21.021322 5.934260 +v 188.796051 21.021322 5.934260 +v 188.796051 2.021322 5.934260 +v 188.446045 2.021322 6.188550 +v 188.446045 21.021322 6.188550 +v 188.312363 2.021322 6.600000 +v 188.312363 21.021322 6.600000 +v 189.712357 16.787710 6.600000 +v 189.442932 6.507657 14.610602 +v 189.521118 6.261451 13.914605 +v 189.469696 6.283616 13.843338 +v 189.517776 6.289359 13.843338 +v 189.410019 6.503726 14.610602 +v 189.473038 6.255708 13.914605 +v 189.414444 6.466678 14.585410 +v 189.447357 6.470610 14.585410 +v 189.615067 6.300980 13.843338 +v 189.545059 6.442699 13.646041 +v 189.663589 6.306797 13.843349 +v 189.562744 6.294729 13.843338 +v 189.495438 6.476353 14.585410 +v 189.461517 6.352184 14.469422 +v 189.509583 6.357927 14.469422 +v 189.554550 6.363297 14.469422 +v 189.566071 6.266821 13.914605 +v 189.392441 6.650923 14.676638 +v 189.012360 6.771322 14.700000 +v 189.618408 6.273072 13.914605 +v 189.031891 6.607856 14.676638 +v 189.049469 6.460659 14.610602 +v 189.443573 6.222828 14.100000 +v 189.083023 6.179762 14.100000 +v 189.079559 6.208710 13.914605 +v 189.440109 6.251776 13.914605 +v 189.476486 6.226760 14.100000 +v 189.068039 6.305186 14.469422 +v 189.012360 6.418651 14.585410 +v 189.012360 6.200688 14.285410 +v 189.079086 6.212739 14.297532 +v 189.524567 6.232503 14.100000 +v 189.569534 6.237873 14.100000 +v 189.621857 6.244123 14.100000 +v 189.053894 6.423612 14.585410 +v 189.440109 6.251776 14.285396 +v 189.079559 6.208710 14.285396 +v 189.053894 6.423612 13.614590 +v 189.012360 6.418651 13.614590 +v 189.012360 6.771322 13.500000 +v 189.439636 6.255805 14.297532 +v 189.058563 6.384556 13.646003 +v 189.473038 6.255708 14.285396 +v 189.397934 6.604914 13.538877 +v 189.372910 6.814388 13.500000 +v 189.430847 6.608846 13.538877 +v 189.076233 6.236618 13.843338 +v 189.012360 6.200688 13.914590 +v 189.472549 6.259737 14.297532 +v 189.687805 6.252001 14.100000 +v 189.521118 6.261451 14.285396 +v 189.414444 6.466678 13.614590 +v 189.447357 6.470610 13.614590 +v 189.520630 6.265480 14.297532 +v 189.566071 6.266821 14.285396 +v 189.419113 6.427622 13.646003 +v 189.452026 6.431554 13.646003 +v 189.565598 6.270851 14.297532 +v 189.618408 6.273072 14.285396 +v 189.500107 6.437297 13.646003 +v 189.617920 6.277101 14.297532 +v 189.436783 6.279684 13.843338 +v 189.428589 6.348252 14.469422 +v 189.684357 6.280949 14.285396 +v 210.590225 6.376073 13.806575 +v 209.501587 6.970374 13.806575 +v 209.610977 7.170766 13.576644 +v 210.699631 6.576466 13.576644 +v 210.553757 6.309276 14.100000 +v 209.465118 6.903576 14.100000 +v 210.590225 6.376073 14.393425 +v 209.501587 6.970374 14.393425 +v 211.788269 5.982165 13.576644 +v 212.873779 5.382135 13.580385 +v 212.769287 5.190733 13.800000 +v 213.016510 5.643595 13.500000 +v 210.699631 6.576466 14.623356 +v 213.016510 5.643595 14.700000 +v 209.610977 7.170766 14.623356 +v 211.678864 5.781773 13.806575 +v 211.642410 5.714975 14.100000 +v 212.731049 5.120675 14.100000 +v 211.678864 5.781773 14.393425 +v 212.769287 5.190733 14.400000 +v 211.788269 5.982165 14.623356 +v 212.873779 5.382135 14.619616 +v 208.522339 7.765067 13.576644 +v 207.430573 8.353637 13.580385 +v 207.573303 8.615096 13.500000 +v 208.412949 7.564674 13.806575 +v 207.326080 8.162235 13.800000 +v 208.376480 7.497877 14.100000 +v 207.287842 8.092176 14.100000 +v 208.412949 7.564674 14.393425 +v 207.326080 8.162235 14.400000 +v 208.522339 7.765067 14.623356 +v 207.573303 8.615096 14.700000 +v 207.430573 8.353637 14.619616 +v 209.501587 16.072271 13.806575 +v 210.590225 16.666571 13.806575 +v 210.699631 16.466179 13.576644 +v 209.610977 15.871878 13.576644 +v 209.465118 16.139069 14.100000 +v 210.553757 16.733368 14.100000 +v 209.501587 16.072271 14.393425 +v 210.590225 16.666571 14.393425 +v 208.522339 15.277577 13.576644 +v 207.573303 14.427547 13.500000 +v 207.430573 14.689008 13.580385 +v 209.610977 15.871878 14.623356 +v 207.573303 14.427547 14.700000 +v 213.016510 17.399050 14.700000 +v 210.699631 16.466179 14.623356 +v 208.412949 15.477970 13.806575 +v 207.326080 14.880409 13.800000 +v 208.376480 15.544767 14.100000 +v 207.287842 14.950467 14.100000 +v 208.412949 15.477970 14.393425 +v 207.326080 14.880409 14.400000 +v 208.522339 15.277577 14.623356 +v 207.430573 14.689008 14.619616 +v 211.788269 17.060478 13.576644 +v 212.873779 17.660509 13.580385 +v 213.016510 17.399050 13.500000 +v 211.678864 17.260872 13.806575 +v 212.769287 17.851912 13.800000 +v 211.642410 17.327669 14.100000 +v 212.731049 17.921968 14.100000 +v 211.678864 17.260872 14.393425 +v 212.769287 17.851912 14.400000 +v 211.788269 17.060478 14.623356 +v 212.873779 17.660509 14.619616 +v 189.521164 16.777332 13.903131 +v 189.560959 16.729151 13.806575 +v 189.516052 16.734516 13.806575 +v 189.566071 16.771967 13.903131 +v 189.472855 16.783102 13.903131 +v 189.467728 16.740286 13.806575 +v 189.670670 16.792690 14.100000 +v 189.684036 16.757816 13.903152 +v 189.666763 16.759939 13.903131 +v 189.439667 16.787066 13.903131 +v 189.073547 16.783628 13.800000 +v 189.083023 16.862883 14.100000 +v 189.434540 16.744251 13.806575 +v 189.622284 16.798471 14.100000 +v 189.618362 16.765720 13.903131 +v 189.569992 16.804716 14.100000 +v 189.525070 16.810081 14.100000 +v 189.476761 16.815851 14.100000 +v 189.443573 16.819817 14.100000 +v 189.615540 16.742010 14.355814 +v 189.613251 16.722906 14.393425 +v 189.563248 16.748255 14.355814 +v 189.392502 16.392191 13.523499 +v 189.409393 16.390171 13.523499 +v 189.372910 16.228256 13.500000 +v 189.012360 16.271322 13.500000 +v 189.560959 16.729151 14.393425 +v 189.047684 16.567102 13.580385 +v 189.440659 16.513590 13.576644 +v 189.491623 16.530050 13.590053 +v 189.518326 16.753620 14.355814 +v 189.516052 16.734516 14.393425 +v 189.443314 16.535872 13.589972 +v 189.407471 16.517553 13.576644 +v 189.470016 16.759390 14.355814 +v 189.410126 16.539835 13.589972 +v 189.436829 16.763355 14.355814 +v 189.555084 16.679924 13.731399 +v 189.607361 16.673580 13.731475 +v 189.073547 16.783628 14.400000 +v 189.613251 16.722906 13.806575 +v 189.467728 16.740286 14.393425 +v 189.434540 16.744251 14.393425 +v 189.510162 16.685289 13.731399 +v 189.500687 16.605947 14.553418 +v 189.452377 16.611717 14.553418 +v 189.461853 16.691059 13.731399 +v 189.419189 16.615681 14.553418 +v 189.047684 16.567102 14.619616 +v 189.428665 16.695023 13.731399 +v 189.440659 16.513590 14.623356 +v 189.407471 16.517553 14.623356 +v 189.398010 16.438402 14.660865 +v 189.012360 16.271322 14.700000 +v 206.438980 8.333220 14.400000 +v 190.009476 6.295177 14.174391 +v 206.448441 8.253965 14.100000 +v 189.968674 6.636760 13.554011 +v 189.850159 6.622607 13.554020 +v 189.812363 6.866878 13.500000 +v 206.377777 8.845526 13.500000 +v 206.413116 8.549746 13.580385 +v 189.973938 6.592752 13.576644 +v 189.929840 6.431722 13.702272 +v 189.992279 6.439144 13.702260 +v 206.438980 8.333220 13.800000 +v 190.001007 6.366055 13.806575 +v 189.996506 6.315638 13.923075 +v 190.006897 6.316800 13.923051 +v 190.010040 6.290489 14.100000 +v 190.001007 6.366055 14.393425 +v 189.961136 6.374586 14.415712 +v 189.999466 6.379049 14.415784 +v 189.979385 6.547096 14.594552 +v 189.881485 6.535488 14.594424 +v 206.413116 8.549746 14.619616 +v 189.960236 6.707501 14.673286 +v 206.377777 8.845526 14.700000 +v 189.812363 6.866878 14.700000 +v 189.831833 6.692194 14.673194 +v 190.009476 16.747475 14.025676 +v 206.448441 14.788679 14.100000 +v 206.438980 14.709425 13.800000 +v 189.960266 16.335384 13.526790 +v 206.413116 14.492899 13.580385 +v 206.377777 14.197119 13.500000 +v 189.812363 16.175766 13.500000 +v 189.831879 16.350695 13.526872 +v 189.881638 16.507519 13.605830 +v 189.979431 16.495918 13.605706 +v 189.961258 16.668285 13.784675 +v 189.999496 16.663832 13.784606 +v 190.001022 16.676588 13.806575 +v 190.006912 16.725920 14.276701 +v 206.438980 14.709425 14.400000 +v 189.996552 16.727068 14.276674 +v 190.001022 16.676588 14.393425 +v 189.929932 16.611090 14.497499 +v 189.992310 16.603683 14.497529 +v 206.413116 14.492899 14.619616 +v 189.973938 16.449892 14.623356 +v 189.850266 16.420382 14.645810 +v 189.968719 16.406239 14.645824 +v 189.812363 16.175766 14.700000 +v 206.377777 14.197119 14.700000 +v 189.934311 2.021322 14.487298 +v 189.994583 2.021322 13.912271 +v 189.858307 7.147387 14.633206 +v 189.887329 15.812441 14.584043 +v 189.834259 15.984990 14.669678 +v 189.726501 21.021322 13.400000 +v 189.565842 21.021322 14.932856 +v 189.934311 21.021322 14.487298 +v 189.726501 2.021322 13.400000 +v 189.565842 2.021322 14.932856 +v 189.834290 7.057801 13.530366 +v 189.858246 15.895465 13.566686 +v 189.945953 7.364039 14.458164 +v 190.004456 7.476642 14.224247 +v 189.958145 15.653893 14.424587 +v 190.006363 7.480069 13.991954 +v 190.006348 15.562586 14.208109 +v 189.958206 7.388893 13.775618 +v 190.004456 15.566017 13.975675 +v 189.994583 21.021322 13.912271 +v 189.887405 7.230393 13.616086 +v 189.945877 15.678745 13.741650 +v 189.362366 21.021322 13.493782 +v 189.395660 16.095459 13.514271 +v 189.426498 7.024549 13.535655 +v 189.449509 15.971907 13.553291 +v 189.618576 21.021322 13.750000 +v 189.362366 2.021322 13.493782 +v 189.618576 2.021322 13.750000 +v 189.669754 7.399546 13.859525 +v 189.677917 15.632392 13.883136 +v 189.590561 15.750240 13.705515 +v 189.566498 7.258310 13.672299 +v 188.662354 2.021322 14.706218 +v 188.662354 21.021322 14.706218 +v 188.406143 2.021322 14.450000 +v 188.406143 21.021322 14.450000 +v 188.146332 2.021322 13.600000 +v 188.146332 21.021322 13.600000 +v 188.512360 2.021322 13.233974 +v 188.512360 21.021322 13.233974 +v 189.012360 2.021322 13.100000 +v 189.012360 21.021322 13.100000 +v 199.245377 2.021322 13.150000 +v 199.312363 21.021322 12.900000 +v 199.245377 21.021322 13.150000 +v 199.312363 2.021322 12.900000 +v 199.062363 2.021322 13.333013 +v 199.062363 21.021322 13.333013 +v 198.812363 2.021322 13.400000 +v 198.812363 21.021322 13.400000 +v 199.012360 2.021322 12.900000 +v 198.985565 2.021322 13.000000 +v 199.012360 21.021322 12.900000 +v 198.985565 21.021322 13.000000 +v 198.912354 2.021322 13.073205 +v 198.912354 21.021322 13.073205 +v 198.812363 2.021322 13.100000 +v 198.812363 21.021322 13.100000 +v 206.307129 13.605558 14.100000 +v 206.316589 13.684813 14.400000 +v 190.053680 15.958766 14.669727 +v 206.342453 13.901339 14.619616 +v 190.034088 15.794850 14.584126 +v 190.016418 15.646819 14.424661 +v 190.014206 15.628302 14.393425 +v 190.006714 15.565581 13.975640 +v 206.316589 13.684813 13.800000 +v 190.014206 15.628302 13.806575 +v 190.019165 15.669886 13.741577 +v 206.342453 13.901339 13.580385 +v 190.041275 15.854999 13.576644 +v 190.043472 15.873322 13.566649 +v 206.316589 9.357831 13.800000 +v 206.307129 9.437085 14.100000 +v 190.043457 7.169521 14.633246 +v 206.342453 9.141305 14.619616 +v 190.041290 7.187646 14.623356 +v 190.019165 7.372893 14.458241 +v 206.316589 9.357831 14.400000 +v 190.014206 7.414343 14.393425 +v 190.006714 7.477079 14.224281 +v 190.005188 7.489909 14.100000 +v 190.014206 7.414343 13.806575 +v 190.016403 7.395957 13.775545 +v 190.034073 7.247970 13.616004 +v 206.342453 9.141305 13.580385 +v 190.053665 7.084019 13.530319 +v 189.346268 15.681919 14.340892 +v 189.413910 15.673841 14.340892 +v 189.416992 15.699635 14.393425 +v 189.349350 15.707714 14.393425 +v 189.573135 15.604341 14.100000 +v 189.579086 15.654111 14.340892 +v 189.663666 15.593528 14.100000 +v 189.308197 15.686466 14.340892 +v 188.951172 15.759016 14.400000 +v 188.941696 15.679762 14.100000 +v 189.311279 15.712261 14.393425 +v 189.545212 15.607676 14.100000 +v 189.551163 15.657446 14.340892 +v 189.668442 15.633521 13.883135 +v 189.407959 15.624069 14.100000 +v 189.577911 15.644333 13.883135 +v 189.340317 15.632149 14.100000 +v 189.549988 15.647668 13.883135 +v 189.302261 15.636696 14.100000 +v 189.582169 15.679906 13.806575 +v 189.554245 15.683241 13.806575 +v 189.387024 16.023134 14.664459 +v 189.412735 15.664062 13.883135 +v 189.444061 15.926332 14.623356 +v 189.562637 15.753538 13.705482 +v 189.348953 16.027681 14.664459 +v 188.977036 15.975542 14.619616 +v 189.345093 15.672141 13.883135 +v 189.376419 15.934411 14.623356 +v 189.416992 15.699635 13.806575 +v 189.338364 15.938958 14.623356 +v 189.307037 15.676688 13.883135 +v 189.582169 15.679906 14.393425 +v 188.951172 15.759016 13.800000 +v 189.429092 15.800950 14.527901 +v 189.349350 15.707714 13.806575 +v 189.311279 15.712261 13.806575 +v 189.554245 15.683241 14.393425 +v 189.425385 15.769932 13.705482 +v 189.357742 15.778011 13.705482 +v 189.361450 15.809030 14.527901 +v 189.319672 15.782558 13.705482 +v 188.977036 15.975542 13.580385 +v 189.444061 15.926332 13.576644 +v 189.323380 15.813577 14.527901 +v 189.376419 15.934411 13.576644 +v 189.338364 15.938958 13.576644 +v 189.381866 15.979985 13.553290 +v 189.343796 15.984532 13.553290 +v 189.357590 16.100006 13.514270 +v 207.195007 14.268958 13.500000 +v 207.279510 13.990126 13.576644 +v 206.813110 13.900230 13.576644 +v 207.345718 13.771629 13.806575 +v 206.832855 13.672777 13.806575 +v 207.365967 13.698243 14.100000 +v 207.820526 13.974687 13.800000 +v 207.858765 13.904628 14.100000 +v 207.110519 14.547790 13.576644 +v 206.787918 14.190494 13.500000 +v 207.044296 14.766286 13.806575 +v 206.762726 14.480756 13.576644 +v 207.022232 14.839118 14.100000 +v 206.841339 13.597125 14.100000 +v 206.742981 14.708209 13.806575 +v 207.044296 14.766286 14.393425 +v 206.736404 14.784027 14.100000 +v 207.110519 14.547790 14.623356 +v 206.742981 14.708209 14.393425 +v 207.195007 14.268958 14.700000 +v 206.762726 14.480756 14.623356 +v 207.279510 13.990126 14.623356 +v 207.716034 14.166088 14.619616 +v 206.787918 14.190494 14.700000 +v 207.345718 13.771629 14.393425 +v 207.820526 13.974687 14.400000 +v 206.813110 13.900230 14.623356 +v 206.832855 13.672777 14.393425 +v 207.716034 14.166088 13.580385 +v 210.036057 15.093229 14.100000 +v 211.088226 15.754327 14.393425 +v 209.999588 15.160027 14.393425 +v 211.124695 15.687530 14.100000 +v 209.999588 15.160027 13.806575 +v 211.088226 15.754327 13.806575 +v 208.801559 14.766119 14.623356 +v 209.890198 15.360419 14.623356 +v 209.890198 15.360419 13.576644 +v 210.978836 15.954720 13.576644 +v 208.910950 14.565726 14.393425 +v 208.947418 14.498929 14.100000 +v 208.910950 14.565726 13.806575 +v 208.801559 14.766119 13.576644 +v 212.067474 16.549019 14.623356 +v 213.159241 17.137590 14.619616 +v 212.176880 16.348627 14.393425 +v 213.263733 16.946188 14.400000 +v 212.213333 16.281830 14.100000 +v 213.263733 16.946188 13.800000 +v 213.301987 16.876129 14.100000 +v 212.176880 16.348627 13.806575 +v 213.159241 17.137590 13.580385 +v 210.978836 15.954720 14.623356 +v 212.067474 16.549019 13.576644 +v 213.834457 17.143740 13.576644 +v 214.038956 16.884315 13.611998 +v 213.810028 17.098867 13.609021 +v 213.470764 18.040781 14.393425 +v 214.251831 17.910536 14.229738 +v 213.469757 18.102781 14.229738 +v 213.488037 16.987635 13.833200 +v 213.685181 16.878382 14.100000 +v 213.493301 16.925550 14.100000 +v 214.222183 17.856073 14.393425 +v 213.718643 16.930950 13.833200 +v 214.072113 17.580368 14.663078 +v 214.505630 17.196131 14.659701 +v 214.113037 17.655544 14.623356 +v 213.487808 17.001595 13.806575 +v 213.725311 16.943213 13.806575 +v 213.471909 17.971508 14.492763 +v 214.189056 17.795221 14.492763 +v 213.973740 17.399643 14.700000 +v 214.269699 17.038486 14.695951 +v 213.938080 17.334122 13.504723 +v 214.259949 17.031975 13.505548 +v 213.973740 17.399643 13.500000 +v 214.496445 17.189985 13.536122 +v 213.484894 17.178791 13.609021 +v 213.943359 17.343821 14.696576 +v 213.474503 17.812502 14.623356 +v 213.484055 17.229874 13.576644 +v 213.475906 17.726923 14.663078 +v 214.066772 17.570559 13.532908 +v 214.113037 17.655544 13.576644 +v 214.693909 17.321924 13.696676 +v 213.834457 17.143740 14.623356 +v 214.046997 16.889690 14.594828 +v 213.480499 17.446600 13.504723 +v 213.814896 17.107813 14.598025 +v 213.479279 17.521187 14.700000 +v 213.479279 17.521187 13.500000 +v 213.480331 17.457640 14.696576 +v 214.185120 17.787979 13.697845 +v 213.725311 16.943213 14.393425 +v 213.888885 16.784044 14.379644 +v 213.476089 17.715755 13.532908 +v 213.719940 16.933346 14.372265 +v 213.831787 16.745897 14.100000 +v 214.222183 17.856073 13.806575 +v 214.806839 17.397377 13.950198 +v 213.484055 17.229874 14.623356 +v 213.474503 17.812502 13.576644 +v 213.484726 17.188974 14.598025 +v 214.250580 17.908253 13.958963 +v 213.487808 17.001595 14.393425 +v 213.472031 17.963263 13.697845 +v 213.487991 16.990362 14.372265 +v 214.258560 17.922915 14.100000 +v 214.809189 17.398952 14.238252 +v 213.470764 18.040781 13.806575 +v 213.469788 18.100182 13.958963 +v 214.700439 17.326286 14.494437 +v 213.469513 18.116873 14.100000 +v 213.886612 16.782528 13.825633 +v 215.757889 13.459768 14.696576 +v 215.757889 9.582875 14.696576 +v 216.022034 9.530335 14.663078 +v 216.022034 13.512309 14.663078 +v 215.494354 13.407349 14.598025 +v 216.253860 9.484223 13.697845 +v 214.693909 5.720721 13.696676 +v 214.496445 5.852659 13.536122 +v 216.011078 9.532515 13.532908 +v 215.494354 9.635295 14.598025 +v 215.299530 13.368598 14.372265 +v 215.235901 13.355943 14.100000 +v 215.235901 9.686701 14.100000 +v 215.299530 9.674047 14.372265 +v 216.388168 9.457508 13.958963 +v 214.806839 5.645267 13.950198 +v 216.390717 9.457002 14.229738 +v 214.809189 5.643692 14.238252 +v 216.261948 9.482615 14.492763 +v 214.700439 5.716357 14.494437 +v 214.505630 5.846513 14.659701 +v 214.269699 6.004158 14.695951 +v 214.046997 6.152953 14.594828 +v 213.888885 6.258600 14.379644 +v 215.296860 13.368066 13.833200 +v 213.831787 6.296747 14.100000 +v 215.296860 9.674579 13.833200 +v 215.484360 13.405362 13.609021 +v 215.484360 9.637281 13.609021 +v 215.747055 13.457615 13.504723 +v 215.747055 9.585030 13.504723 +v 216.011078 13.510130 13.532908 +v 216.253860 13.558421 13.697845 +v 216.388168 13.585135 13.958963 +v 216.390717 13.585643 14.229738 +v 213.886612 6.260115 13.825633 +v 216.261948 13.560030 14.492763 +v 214.038956 6.158329 13.611998 +v 214.259949 6.010669 13.505548 +v 214.222183 5.186572 14.393425 +v 213.469757 4.939864 14.229738 +v 214.251831 5.132108 14.229738 +v 213.470764 5.001864 14.393425 +v 213.718643 6.111695 13.833200 +v 213.493301 6.117094 14.100000 +v 213.685181 6.164262 14.100000 +v 213.488037 6.055009 13.833200 +v 213.475906 5.315721 14.663078 +v 213.474503 5.230142 14.623356 +v 213.725311 6.099432 13.806575 +v 214.189056 5.247422 14.492763 +v 213.471909 5.071136 14.492763 +v 213.487808 6.041049 13.806575 +v 213.480499 5.596044 13.504723 +v 213.159241 5.905054 13.580385 +v 213.484055 5.812771 13.576644 +v 213.479279 5.521456 14.700000 +v 213.479279 5.521456 13.500000 +v 213.480331 5.585004 14.696576 +v 213.159241 5.905054 14.619616 +v 213.810028 5.943776 13.609021 +v 213.484894 5.863853 13.609021 +v 214.113037 5.387099 14.623356 +v 213.834457 5.898904 13.576644 +v 214.072113 5.462276 14.663078 +v 213.476089 5.326890 13.532908 +v 213.484055 5.812771 14.623356 +v 213.474503 5.230142 13.576644 +v 213.484726 5.853671 14.598025 +v 213.263733 6.096456 14.400000 +v 213.938080 5.708522 13.504723 +v 213.973740 5.643002 14.700000 +v 213.973740 5.643002 13.500000 +v 213.943359 5.698824 14.696576 +v 213.472031 5.079381 13.697845 +v 213.487808 6.041049 14.393425 +v 214.066772 5.472086 13.532908 +v 213.487991 6.052281 14.372265 +v 213.301987 6.166514 14.100000 +v 213.834457 5.898904 14.623356 +v 213.470764 5.001864 13.806575 +v 214.113037 5.387099 13.576644 +v 213.814896 5.934831 14.598025 +v 213.469788 4.942462 13.958963 +v 213.725311 6.099432 14.393425 +v 214.185120 5.254666 13.697845 +v 213.719940 6.109299 14.372265 +v 213.469513 4.925771 14.100000 +v 214.222183 5.186572 13.806575 +v 214.250580 5.134391 13.958963 +v 214.258560 5.119729 14.100000 +v 213.263733 6.096456 13.800000 +v 211.124695 7.355115 14.100000 +v 209.999588 7.882617 14.393425 +v 211.088226 7.288317 14.393425 +v 210.036057 7.949415 14.100000 +v 211.088226 7.288317 13.806575 +v 209.999588 7.882617 13.806575 +v 212.067474 6.493624 14.623356 +v 210.978836 7.087924 14.623356 +v 210.978836 7.087924 13.576644 +v 209.890198 7.682225 13.576644 +v 212.176880 6.694017 14.393425 +v 212.213333 6.760814 14.100000 +v 212.176880 6.694017 13.806575 +v 212.067474 6.493624 13.576644 +v 208.801559 8.276525 14.623356 +v 207.820526 9.067958 14.400000 +v 207.716034 8.876556 14.619616 +v 208.910950 8.476918 14.393425 +v 207.858765 9.138016 14.100000 +v 208.947418 8.543715 14.100000 +v 208.910950 8.476918 13.806575 +v 207.820526 9.067958 13.800000 +v 209.890198 7.682225 14.623356 +v 208.801559 8.276525 13.576644 +v 207.716034 8.876556 13.580385 +v 206.787918 8.852151 13.500000 +v 206.813110 9.142413 13.576644 +v 207.279510 9.052519 13.576644 +v 206.832855 9.369867 13.806575 +v 207.345718 9.271015 13.806575 +v 206.762726 8.561888 13.576644 +v 207.195007 8.773686 13.500000 +v 206.742981 8.334435 13.806575 +v 207.110519 8.494854 13.576644 +v 206.736404 8.258616 14.100000 +v 207.044296 8.276358 13.806575 +v 206.742981 8.334435 14.393425 +v 207.022232 8.203526 14.100000 +v 206.762726 8.561888 14.623356 +v 207.044296 8.276358 14.393425 +v 206.787918 8.852151 14.700000 +v 207.110519 8.494854 14.623356 +v 206.813110 9.142413 14.623356 +v 207.195007 8.773686 14.700000 +v 206.832855 9.369867 14.393425 +v 206.841339 9.445518 14.100000 +v 207.279510 9.052519 14.623356 +v 207.345718 9.271015 14.393425 +v 207.365967 9.344400 14.100000 +v 189.375732 7.114724 13.580385 +v 189.323364 7.229277 13.672307 +v 189.361496 7.233833 13.672307 +v 189.345154 7.370656 14.316489 +v 189.307022 7.366100 14.316489 +v 189.311722 7.326694 14.400000 +v 189.429337 7.241936 13.672307 +v 189.562790 7.289431 14.494167 +v 189.348923 7.015282 13.535658 +v 189.059021 6.980655 13.535658 +v 189.047684 7.075542 13.580385 +v 189.425629 7.273047 14.494167 +v 189.337585 7.110168 13.580385 +v 189.387054 7.019838 13.535658 +v 189.412994 7.378758 14.316489 +v 189.349869 7.331250 14.400000 +v 189.417709 7.339353 14.400000 +v 189.554871 7.355737 14.400000 +v 189.582870 7.359081 14.400000 +v 189.302261 7.405949 14.100000 +v 189.012360 7.371322 14.100000 +v 189.017120 7.331473 14.316489 +v 189.550171 7.395143 14.316489 +v 189.021820 7.292068 13.800000 +v 189.012360 7.290937 13.800000 +v 189.340393 7.410504 14.100000 +v 189.578156 7.398487 14.316489 +v 189.408234 7.418607 14.100000 +v 189.668594 7.409288 14.316489 +v 189.033463 7.194650 13.672307 +v 189.012360 7.071322 13.580385 +v 189.545410 7.434991 14.100000 +v 189.308182 7.356358 13.859525 +v 189.053864 7.023885 14.646526 +v 189.012360 7.071322 14.619616 +v 189.573410 7.438335 14.100000 +v 189.047684 7.075542 14.619616 +v 189.357574 6.942799 14.685694 +v 189.346313 7.360913 13.859525 +v 189.029739 7.225762 14.494167 +v 189.012360 7.290937 14.400000 +v 189.311722 7.326694 13.800000 +v 189.343750 7.058512 14.646526 +v 189.381897 7.063067 14.646526 +v 189.349869 7.331250 13.800000 +v 189.337585 7.110168 14.619616 +v 189.414154 7.369016 13.859525 +v 189.663834 7.449137 14.100000 +v 189.021820 7.292068 14.400000 +v 189.375732 7.114724 14.619616 +v 189.417709 7.339353 13.800000 +v 189.319641 7.260388 14.494167 +v 189.551331 7.385400 13.859525 +v 189.357788 7.264944 14.494167 +v 189.579330 7.388744 13.859525 +v 189.554871 7.355737 13.800000 +v 189.582870 7.359081 13.800000 +v 188.446045 21.021322 7.011450 +v 188.446045 2.021322 7.011450 +v 188.796051 21.021322 7.265739 +v 188.796051 2.021322 7.265739 +v 189.430847 6.608846 7.161123 +v 189.228668 2.021322 7.265739 +v 189.228668 21.021322 7.265739 +v 189.578674 2.021322 7.011450 +v 189.545059 6.442699 7.053959 +v 189.409393 16.390171 7.176500 +v 189.578674 21.021322 7.011450 +v 189.491623 16.530050 7.109947 +v 189.663589 6.306797 6.856652 +v 189.684036 16.757816 6.796848 +v 189.607361 16.673580 6.968525 +v 189.565842 2.021322 5.767144 +v 189.934311 2.021322 6.212702 +v 189.850159 6.622607 7.145979 +v 189.726501 2.021322 7.300000 +v 189.934311 21.021322 6.212702 +v 189.850266 16.420382 6.054190 +v 189.929840 6.431722 6.997728 +v 189.565842 21.021322 5.767144 +v 189.726501 21.021322 7.300000 +v 189.831879 16.350695 7.173129 +v 189.929932 16.611090 6.202500 +v 189.996552 16.727068 6.423326 +v 189.961258 16.668285 6.915325 +v 190.009476 16.747475 6.674325 +v 189.994583 21.021322 6.787728 +v 189.994583 2.021322 6.787728 +v 189.996506 6.315638 6.776925 +v 190.009476 6.295177 6.525609 +v 189.881485 6.535488 6.105576 +v 189.961136 6.374586 6.284288 +v 189.881638 16.507519 7.094170 +v 189.831833 6.692194 6.026806 +v 199.312363 21.021322 7.800000 +v 199.312363 2.021322 7.800000 +v 199.245377 2.021322 7.550000 +v 199.245377 21.021322 7.550000 +v 199.062363 2.021322 7.366987 +v 199.062363 21.021322 7.366987 +v 198.812363 2.021322 7.300000 +v 198.812363 21.021322 7.300000 +v 199.012360 21.021322 7.800000 +v 199.012360 2.021322 7.800000 +v 198.985565 2.021322 7.700000 +v 198.985565 21.021322 7.700000 +v 198.912354 2.021322 7.626795 +v 198.912354 21.021322 7.626795 +v 198.812363 2.021322 7.600000 +v 198.812363 21.021322 7.600000 +v 206.448441 14.788679 6.600000 +v 206.438980 14.709425 6.900000 +v 189.960266 16.335384 7.173211 +v 206.413116 14.492899 7.119615 +v 189.979431 16.495918 7.094294 +v 189.999496 16.663832 6.915394 +v 190.001022 16.676588 6.893425 +v 190.006912 16.725920 6.423299 +v 206.438980 14.709425 6.300000 +v 190.001022 16.676588 6.306575 +v 189.992310 16.603683 6.202471 +v 206.413116 14.492899 6.080385 +v 189.973938 16.449892 6.076644 +v 189.968719 16.406239 6.054175 +v 206.438980 8.333220 6.300000 +v 206.448441 8.253965 6.600000 +v 189.968674 6.636760 7.145989 +v 206.413116 8.549746 7.119615 +v 189.973938 6.592752 7.123356 +v 189.992279 6.439144 6.997740 +v 206.438980 8.333220 6.900000 +v 190.001007 6.366055 6.893425 +v 190.006897 6.316800 6.776949 +v 190.010040 6.290489 6.600000 +v 190.001007 6.366055 6.306575 +v 189.999466 6.379049 6.284216 +v 189.979385 6.547096 6.105448 +v 206.413116 8.549746 6.080385 +v 189.960236 6.707501 6.026714 +v 189.666763 16.759939 6.796869 +v 189.560959 16.729151 6.893425 +v 189.618362 16.765720 6.796869 +v 189.476761 16.815851 6.600000 +v 189.443573 16.819817 6.600000 +v 189.439667 16.787066 6.796869 +v 189.472855 16.783102 6.796869 +v 189.525070 16.810081 6.600000 +v 189.521164 16.777332 6.796869 +v 189.569992 16.804716 6.600000 +v 189.566071 16.771967 6.796869 +v 189.622284 16.798471 6.600000 +v 189.670670 16.792690 6.600000 +v 189.436829 16.763355 6.344186 +v 189.073547 16.783628 6.300000 +v 189.083023 16.862883 6.600000 +v 189.470016 16.759390 6.344186 +v 189.434540 16.744251 6.306575 +v 189.467728 16.740286 6.306575 +v 189.518326 16.753620 6.344186 +v 189.516052 16.734516 6.306575 +v 189.563248 16.748255 6.344186 +v 189.560959 16.729151 6.306575 +v 189.392502 16.392191 7.176501 +v 189.047684 16.567102 7.119615 +v 189.615540 16.742010 6.344186 +v 189.613251 16.722906 6.306575 +v 189.407471 16.517553 7.123356 +v 189.419189 16.615681 6.146582 +v 189.047684 16.567102 6.080385 +v 189.410126 16.539835 7.110027 +v 189.440659 16.513590 7.123356 +v 189.452377 16.611717 6.146582 +v 189.443314 16.535872 7.110027 +v 189.428665 16.695023 6.968601 +v 189.073547 16.783628 6.900000 +v 189.500687 16.605947 6.146582 +v 189.407471 16.517553 6.076644 +v 189.461853 16.691059 6.968601 +v 189.440659 16.513590 6.076644 +v 189.510162 16.685289 6.968601 +v 189.398010 16.438402 6.039135 +v 189.434540 16.744251 6.893425 +v 189.467728 16.740286 6.893425 +v 189.555084 16.679924 6.968601 +v 189.516052 16.734516 6.893425 +v 206.813110 13.900230 7.123356 +v 206.832855 13.672777 6.893425 +v 207.345718 13.771629 6.893425 +v 207.110519 14.547790 7.123356 +v 207.430573 14.689008 7.119615 +v 207.195007 14.268958 7.200000 +v 207.365967 13.698243 6.600000 +v 206.787918 14.190494 7.200000 +v 207.279510 13.990126 7.123356 +v 207.044296 14.766286 6.893425 +v 207.326080 14.880409 6.900000 +v 206.762726 14.480756 7.123356 +v 207.022232 14.839118 6.600000 +v 207.287842 14.950467 6.600000 +v 206.742981 14.708209 6.893425 +v 207.044296 14.766286 6.306575 +v 207.326080 14.880409 6.300000 +v 206.736404 14.784027 6.600000 +v 207.110519 14.547790 6.076644 +v 207.430573 14.689008 6.080385 +v 206.742981 14.708209 6.306575 +v 207.195007 14.268958 6.000000 +v 206.762726 14.480756 6.076644 +v 207.279510 13.990126 6.076644 +v 206.787918 14.190494 6.000000 +v 207.345718 13.771629 6.306575 +v 206.813110 13.900230 6.076644 +v 206.832855 13.672777 6.306575 +v 206.841339 13.597125 6.600000 +v 212.873779 17.660509 7.119615 +v 212.769287 17.851912 6.900000 +v 212.731049 17.921968 6.600000 +v 212.769287 17.851912 6.300000 +v 212.873779 17.660509 6.080385 +v 213.488037 16.987635 6.866801 +v 213.493301 16.925550 6.600000 +v 213.685181 16.878382 6.600000 +v 213.470764 18.040781 6.306575 +v 213.469757 18.102781 6.470262 +v 214.251831 17.910536 6.470262 +v 213.718643 16.930950 6.866801 +v 214.072113 17.580368 6.036922 +v 214.113037 17.655544 6.076644 +v 214.505630 17.196131 6.040299 +v 213.487808 17.001595 6.893425 +v 213.471909 17.971508 6.207237 +v 214.222183 17.856073 6.306575 +v 214.189056 17.795221 6.207237 +v 213.725311 16.943213 6.893425 +v 213.938080 17.334122 7.195278 +v 213.834457 17.143740 7.123356 +v 214.259949 17.031975 7.194453 +v 213.973740 17.399643 6.000000 +v 214.269699 17.038486 6.004050 +v 213.973740 17.399643 7.200000 +v 214.496445 17.189985 7.163877 +v 213.484894 17.178791 7.090979 +v 213.943359 17.343821 6.003424 +v 213.810028 17.098867 7.090979 +v 213.474503 17.812502 6.076644 +v 213.484055 17.229874 7.123356 +v 213.475906 17.726923 6.036922 +v 214.066772 17.570559 7.167092 +v 213.834457 17.143740 6.076644 +v 214.046997 16.889690 6.105172 +v 214.113037 17.655544 7.123356 +v 214.693909 17.321924 7.003324 +v 213.480499 17.446600 7.195278 +v 213.814896 17.107813 6.101975 +v 213.479279 17.521187 6.000000 +v 213.479279 17.521187 7.200000 +v 213.480331 17.457640 6.003424 +v 214.185120 17.787979 7.002154 +v 213.725311 16.943213 6.306575 +v 213.888885 16.784044 6.320356 +v 213.476089 17.715755 7.167092 +v 213.719940 16.933346 6.327735 +v 213.831787 16.745897 6.600000 +v 214.222183 17.856073 6.893425 +v 213.484055 17.229874 6.076644 +v 214.806839 17.397377 6.749801 +v 213.474503 17.812502 7.123356 +v 213.484726 17.188974 6.101975 +v 214.250580 17.908253 6.741037 +v 213.487808 17.001595 6.306575 +v 213.472031 17.963263 7.002154 +v 213.487991 16.990362 6.327735 +v 214.258560 17.922915 6.600000 +v 214.809189 17.398952 6.461748 +v 213.470764 18.040781 6.893425 +v 213.469788 18.100182 6.741037 +v 214.700439 17.326286 6.205563 +v 213.469513 18.116873 6.600000 +v 213.886612 16.782528 6.874367 +v 214.038956 16.884315 7.088002 +v 215.299530 13.368598 6.327735 +v 215.494354 13.407349 6.101975 +v 215.494354 9.635295 6.101975 +v 216.388168 9.457508 6.741037 +v 214.693909 5.720721 7.003324 +v 214.806839 5.645267 6.749801 +v 215.235901 9.686701 6.600000 +v 215.235901 13.355943 6.600000 +v 215.299530 9.674047 6.327735 +v 216.253860 9.484223 7.002154 +v 216.390717 9.457002 6.470262 +v 214.809189 5.643692 6.461748 +v 216.261948 9.482615 6.207237 +v 214.700439 5.716357 6.205563 +v 216.022034 9.530335 6.036922 +v 214.505630 5.846513 6.040299 +v 215.757889 9.582875 6.003424 +v 214.269699 6.004158 6.004050 +v 214.046997 6.152953 6.105172 +v 213.888885 6.258600 6.320356 +v 213.831787 6.296747 6.600000 +v 215.296860 13.368066 6.866801 +v 213.886612 6.260115 6.874367 +v 215.296860 9.674579 6.866801 +v 215.484360 13.405362 7.090979 +v 215.484360 9.637281 7.090979 +v 215.747055 13.457615 7.195278 +v 215.747055 9.585030 7.195278 +v 216.011078 13.510130 7.167092 +v 216.011078 9.532515 7.167092 +v 216.253860 13.558421 7.002154 +v 216.388168 13.585135 6.741037 +v 216.390717 13.585643 6.470262 +v 216.261948 13.560030 6.207237 +v 214.038956 6.158329 7.088002 +v 216.022034 13.512309 6.036922 +v 214.259949 6.010669 7.194453 +v 215.757889 13.459768 6.003424 +v 214.496445 5.852659 7.163877 +v 213.475906 5.315721 6.036922 +v 212.873779 5.382135 6.080385 +v 213.718643 6.111695 6.866801 +v 213.493301 6.117094 6.600000 +v 213.488037 6.055009 6.866801 +v 213.725311 6.099432 6.893425 +v 213.474503 5.230142 6.076644 +v 213.487808 6.041049 6.893425 +v 214.189056 5.247422 6.207237 +v 214.222183 5.186572 6.306575 +v 213.470764 5.001864 6.306575 +v 213.471909 5.071136 6.207237 +v 213.480499 5.596044 7.195278 +v 213.484055 5.812771 7.123356 +v 213.479279 5.521456 6.000000 +v 213.479279 5.521456 7.200000 +v 213.480331 5.585004 6.003424 +v 213.810028 5.943776 7.090979 +v 213.484894 5.863853 7.090979 +v 214.113037 5.387099 6.076644 +v 213.834457 5.898904 7.123356 +v 214.072113 5.462276 6.036922 +v 213.476089 5.326890 7.167092 +v 212.873779 5.382135 7.119615 +v 213.474503 5.230142 7.123356 +v 213.484055 5.812771 6.076644 +v 213.484726 5.853671 6.101975 +v 213.938080 5.708522 7.195278 +v 213.973740 5.643002 6.000000 +v 213.973740 5.643002 7.200000 +v 213.943359 5.698824 6.003424 +v 213.472031 5.079381 7.002154 +v 212.769287 5.190733 6.900000 +v 213.487808 6.041049 6.306575 +v 214.066772 5.472086 7.167092 +v 213.487991 6.052281 6.327735 +v 213.834457 5.898904 6.076644 +v 213.470764 5.001864 6.893425 +v 214.113037 5.387099 7.123356 +v 213.814896 5.934831 6.101975 +v 213.469788 4.942462 6.741037 +v 213.725311 6.099432 6.306575 +v 212.731049 5.120675 6.600000 +v 214.185120 5.254666 7.002154 +v 213.719940 6.109299 6.327735 +v 213.685181 6.164262 6.600000 +v 213.469513 4.925771 6.600000 +v 214.222183 5.186572 6.893425 +v 213.469757 4.939864 6.470262 +v 212.769287 5.190733 6.300000 +v 214.250580 5.134391 6.741037 +v 214.258560 5.119729 6.600000 +v 214.251831 5.132108 6.470262 +v 207.430573 8.353637 7.119615 +v 207.326080 8.162235 6.900000 +v 207.287842 8.092176 6.600000 +v 207.326080 8.162235 6.300000 +v 207.430573 8.353637 6.080385 +v 207.279510 9.052519 7.123356 +v 207.345718 9.271015 6.893425 +v 206.832855 9.369867 6.893425 +v 206.762726 8.561888 7.123356 +v 206.787918 8.852151 7.200000 +v 206.841339 9.445518 6.600000 +v 207.195007 8.773686 7.200000 +v 206.813110 9.142413 7.123356 +v 206.742981 8.334435 6.893425 +v 207.110519 8.494854 7.123356 +v 206.736404 8.258616 6.600000 +v 207.365967 9.344400 6.600000 +v 207.044296 8.276358 6.893425 +v 206.742981 8.334435 6.306575 +v 207.022232 8.203526 6.600000 +v 206.762726 8.561888 6.076644 +v 207.044296 8.276358 6.306575 +v 206.787918 8.852151 6.000000 +v 207.110519 8.494854 6.076644 +v 206.813110 9.142413 6.076644 +v 207.195007 8.773686 6.000000 +v 206.832855 9.369867 6.306575 +v 207.279510 9.052519 6.076644 +v 207.345718 9.271015 6.306575 +v 189.428589 6.348252 6.230577 +v 189.456390 6.257807 6.402468 +v 189.439636 6.255805 6.402468 +v 189.456879 6.253778 6.785395 +v 189.517776 6.289359 6.856662 +v 189.453537 6.281686 6.856662 +v 189.445343 6.350254 6.230577 +v 189.521118 6.261451 6.785395 +v 189.495438 6.476353 6.114590 +v 189.554550 6.363297 6.230577 +v 189.509583 6.357927 6.230577 +v 189.440109 6.251776 6.785395 +v 189.436783 6.279684 6.856662 +v 189.053894 6.423612 7.085410 +v 189.012360 6.418651 7.085410 +v 189.431198 6.468679 6.114590 +v 189.414444 6.466678 7.085410 +v 189.397934 6.604914 7.161123 +v 189.414444 6.466678 6.114590 +v 189.079559 6.208710 6.414605 +v 189.440109 6.251776 6.414605 +v 189.443573 6.222828 6.600000 +v 189.621857 6.244123 6.600000 +v 189.670380 6.249919 6.600000 +v 189.618408 6.273072 6.785395 +v 189.083023 6.179762 6.600000 +v 189.058563 6.384556 7.053997 +v 189.419113 6.427622 7.053997 +v 189.012360 6.200688 6.414590 +v 189.079086 6.212739 6.402468 +v 189.569534 6.237873 6.600000 +v 189.566071 6.266821 6.785395 +v 189.426773 6.505727 6.089397 +v 189.524567 6.232503 6.600000 +v 189.410019 6.503726 6.089397 +v 189.392441 6.650923 6.023362 +v 189.666931 6.278867 6.414605 +v 189.068039 6.305186 6.230577 +v 189.012360 6.418651 6.114590 +v 189.666443 6.282897 6.402468 +v 189.053894 6.423612 6.114590 +v 189.460327 6.224830 6.600000 +v 189.049469 6.460659 6.089397 +v 189.031891 6.607856 6.023362 +v 189.618408 6.273072 6.414605 +v 189.414688 6.606915 7.161123 +v 189.617920 6.277101 6.402468 +v 189.495438 6.476353 7.085410 +v 189.566071 6.266821 6.414605 +v 189.565598 6.270851 6.402468 +v 189.500107 6.437297 7.053997 +v 189.431198 6.468679 7.085410 +v 189.076233 6.236618 6.856662 +v 189.012360 6.200688 6.785410 +v 189.435867 6.429624 7.053997 +v 189.521118 6.261451 6.414605 +v 189.615067 6.300980 6.856662 +v 189.520630 6.265480 6.402468 +v 189.079559 6.208710 6.785395 +v 189.562744 6.294729 6.856662 +v 189.456879 6.253778 6.414605 +v -28.987640 20.401924 13.300000 +v -30.487640 20.000000 13.300000 +v -30.487640 20.000000 12.800000 +v -28.987640 20.401924 12.800000 +v -27.889565 21.500000 13.300000 +v -27.889565 21.500000 12.800000 +v -27.487640 23.000000 13.300000 +v -27.487640 23.000000 12.800000 +v -54.487640 20.000000 13.300000 +v -54.487640 20.000000 12.800000 +v -57.085716 21.500000 13.300000 +v -57.487640 23.000000 13.300000 +v -57.487640 23.000000 12.800000 +v -57.085716 21.500000 12.800000 +v -55.987640 20.401924 13.300000 +v -55.987640 20.401924 12.800000 +v -57.487640 28.500000 13.300000 +v -57.487640 28.500000 12.800000 +v -45.487640 28.500000 13.300000 +v -45.487640 28.500000 12.800000 +v -44.605965 28.786474 13.300000 +v -44.605965 28.786474 12.800000 +v -44.061054 29.536474 13.300000 +v -44.061054 29.536474 12.800000 +v -44.061054 30.463526 13.300000 +v -44.061054 30.463526 12.800000 +v -44.605965 31.213526 13.300000 +v -44.605965 31.213526 12.800000 +v -45.487640 31.500000 13.300000 +v -45.487640 31.500000 12.800000 +v -57.487640 31.500000 13.300000 +v -57.487640 31.500000 12.800000 +v -57.487640 47.000000 13.300000 +v -57.487640 47.000000 12.800000 +v -55.987640 49.598076 13.300000 +v -54.487640 50.000000 13.300000 +v -54.487640 50.000000 12.800000 +v -55.987640 49.598076 12.800000 +v -57.085716 48.500000 13.300000 +v -57.085716 48.500000 12.800000 +v -30.487640 50.000000 13.300000 +v -30.487640 50.000000 12.800000 +v -27.889565 48.500000 13.300000 +v -27.487640 47.000000 13.300000 +v -27.487640 47.000000 12.800000 +v -27.889565 48.500000 12.800000 +v -28.987640 49.598076 13.300000 +v -28.987640 49.598076 12.800000 +v -27.487640 41.500000 13.300000 +v -27.487640 41.500000 12.800000 +v -39.487640 41.500000 13.300000 +v -39.487640 41.500000 12.800000 +v -40.369320 41.213524 13.300000 +v -40.369320 41.213524 12.800000 +v -40.914227 40.463524 13.300000 +v -40.914227 40.463524 12.800000 +v -40.914227 39.536476 13.300000 +v -40.914227 39.536476 12.800000 +v -40.369320 38.786476 13.300000 +v -40.369320 38.786476 12.800000 +v -39.487640 38.500000 13.300000 +v -39.487640 38.500000 12.800000 +v -27.487640 38.500000 13.300000 +v -27.487640 38.500000 12.800000 +v 11.512360 38.000000 12.800000 +v 11.512360 38.000000 13.300000 +v 32.512360 38.000000 13.300000 +v 32.512360 38.000000 12.800000 +v 32.512360 44.000000 13.300000 +v 32.512360 44.000000 12.800000 +v 11.512360 44.000000 13.300000 +v 11.512360 44.000000 12.800000 +v 9.749003 49.427052 13.300000 +v 11.512360 50.000000 13.300000 +v 11.512360 50.000000 12.800000 +v 9.749003 49.427052 12.800000 +v 8.659190 47.927052 13.300000 +v 8.659190 47.927052 12.800000 +v 8.659190 46.072948 13.300000 +v 8.659190 46.072948 12.800000 +v 9.749003 44.572948 13.300000 +v 9.749003 44.572948 12.800000 +v 35.512360 50.000000 13.300000 +v 35.512360 50.000000 12.800000 +v 38.110435 48.500000 13.300000 +v 38.512360 47.000000 13.300000 +v 38.512360 47.000000 12.800000 +v 38.110435 48.500000 12.800000 +v 37.012360 49.598076 13.300000 +v 37.012360 49.598076 12.800000 +v 38.512360 23.000000 13.300000 +v 38.512360 23.000000 12.800000 +v 37.012360 20.401924 13.300000 +v 35.512360 20.000000 13.300000 +v 35.512360 20.000000 12.800000 +v 37.012360 20.401924 12.800000 +v 38.110435 21.500000 13.300000 +v 38.110435 21.500000 12.800000 +v 11.512360 20.000000 13.300000 +v 11.512360 20.000000 12.800000 +v 9.749003 25.427052 13.300000 +v 11.512360 26.000000 13.300000 +v 11.512360 26.000000 12.800000 +v 9.749003 25.427052 12.800000 +v 8.659190 23.927052 13.300000 +v 8.659190 23.927052 12.800000 +v 8.659190 22.072948 13.300000 +v 8.659190 22.072948 12.800000 +v 9.749003 20.572948 13.300000 +v 9.749003 20.572948 12.800000 +v 32.512360 26.000000 13.300000 +v 32.512360 26.000000 12.800000 +v 32.512360 32.000000 13.300000 +v 32.512360 32.000000 12.800000 +v 11.512360 32.000000 13.300000 +v 11.512360 32.000000 12.800000 +v 9.749003 37.427052 13.300000 +v 9.749003 37.427052 12.800000 +v 8.659190 35.927052 13.300000 +v 8.659190 35.927052 12.800000 +v 8.659190 34.072948 13.300000 +v 8.659190 34.072948 12.800000 +v 9.749003 32.572948 13.300000 +v 9.749003 32.572948 12.800000 +v -24.487640 47.000000 13.300000 +v -24.487640 47.000000 12.800000 +v -24.487640 35.000000 12.800000 +v -24.487640 35.000000 13.300000 +v -19.060589 48.763355 13.300000 +v -18.487640 47.000000 13.300000 +v -18.487640 47.000000 12.800000 +v -19.060589 48.763355 12.800000 +v -20.560589 49.853168 13.300000 +v -20.560589 49.853168 12.800000 +v -22.414692 49.853168 13.300000 +v -22.414692 49.853168 12.800000 +v -23.914692 48.763355 13.300000 +v -23.914692 48.763355 12.800000 +v -18.487640 38.000000 13.300000 +v -18.487640 38.000000 12.800000 +v -0.487641 38.000000 13.300000 +v -0.487641 38.000000 12.800000 +v -0.487641 47.000000 13.300000 +v -0.487641 47.000000 12.800000 +v 4.939410 48.763355 13.300000 +v 5.512359 47.000000 13.300000 +v 5.512359 47.000000 12.800000 +v 4.939410 48.763355 12.800000 +v 3.439410 49.853168 13.300000 +v 3.439410 49.853168 12.800000 +v 1.585308 49.853168 13.300000 +v 1.585308 49.853168 12.800000 +v 0.085308 48.763355 13.300000 +v 0.085308 48.763355 12.800000 +v 5.512359 23.000000 13.300000 +v 5.512359 23.000000 12.800000 +v 0.085308 21.236645 13.300000 +v -0.487641 23.000000 13.300000 +v -0.487641 23.000000 12.800000 +v 0.085308 21.236645 12.800000 +v 1.585308 20.146830 13.300000 +v 1.585308 20.146830 12.800000 +v 3.439410 20.146830 13.300000 +v 3.439410 20.146830 12.800000 +v 4.939410 21.236645 13.300000 +v 4.939410 21.236645 12.800000 +v -0.487641 32.000000 13.300000 +v -0.487641 32.000000 12.800000 +v -21.487640 32.000000 13.300000 +v -21.487640 32.000000 12.800000 +v -24.085716 33.500000 13.300000 +v -24.085716 33.500000 12.800000 +v -22.987640 32.401924 13.300000 +v -22.987640 32.401924 12.800000 +v 41.512360 47.000000 13.300000 +v 41.512360 47.000000 12.800000 +v 41.512360 35.000000 12.800000 +v 41.512360 35.000000 13.300000 +v 46.939411 48.763355 13.300000 +v 47.512360 47.000000 13.300000 +v 47.512360 47.000000 12.800000 +v 46.939411 48.763355 12.800000 +v 45.439411 49.853168 13.300000 +v 45.439411 49.853168 12.800000 +v 43.585308 49.853168 13.300000 +v 43.585308 49.853168 12.800000 +v 42.085308 48.763355 13.300000 +v 42.085308 48.763355 12.800000 +v 47.512360 38.000000 13.300000 +v 47.512360 38.000000 12.800000 +v 65.512360 38.000000 13.300000 +v 65.512360 38.000000 12.800000 +v 65.512360 47.000000 13.300000 +v 65.512360 47.000000 12.800000 +v 70.939407 48.763355 13.300000 +v 71.512360 47.000000 13.300000 +v 71.512360 47.000000 12.800000 +v 70.939407 48.763355 12.800000 +v 69.439407 49.853168 13.300000 +v 69.439407 49.853168 12.800000 +v 67.585312 49.853168 13.300000 +v 67.585312 49.853168 12.800000 +v 66.085312 48.763355 13.300000 +v 66.085312 48.763355 12.800000 +v 71.512360 23.000000 13.300000 +v 71.512360 23.000000 12.800000 +v 66.085312 21.236645 13.300000 +v 65.512360 23.000000 13.300000 +v 65.512360 23.000000 12.800000 +v 66.085312 21.236645 12.800000 +v 67.585312 20.146830 13.300000 +v 67.585312 20.146830 12.800000 +v 69.439407 20.146830 13.300000 +v 69.439407 20.146830 12.800000 +v 70.939407 21.236645 13.300000 +v 70.939407 21.236645 12.800000 +v 65.512360 32.000000 13.300000 +v 65.512360 32.000000 12.800000 +v 44.512360 32.000000 13.300000 +v 44.512360 32.000000 12.800000 +v 41.914284 33.500000 13.300000 +v 41.914284 33.500000 12.800000 +v 43.012360 32.401924 13.300000 +v 43.012360 32.401924 12.800000 +v -90.487640 47.000000 13.300000 +v -90.487640 47.000000 12.800000 +v -90.487640 23.000000 12.800000 +v -90.487640 23.000000 13.300000 +v -88.987640 49.598076 13.300000 +v -87.487640 50.000000 13.300000 +v -87.487640 50.000000 12.800000 +v -88.987640 49.598076 12.800000 +v -90.085716 48.500000 13.300000 +v -90.085716 48.500000 12.800000 +v -76.987640 50.000000 13.300000 +v -76.987640 50.000000 12.800000 +v -76.987640 38.000000 13.300000 +v -76.987640 38.000000 12.800000 +v -76.701164 37.118320 13.300000 +v -76.701164 37.118320 12.800000 +v -75.951164 36.573414 13.300000 +v -75.951164 36.573414 12.800000 +v -75.024117 36.573414 13.300000 +v -75.024117 36.573414 12.800000 +v -74.274117 37.118320 13.300000 +v -74.274117 37.118320 12.800000 +v -73.987640 38.000000 13.300000 +v -73.987640 38.000000 12.800000 +v -73.987640 50.000000 13.300000 +v -73.987640 50.000000 12.800000 +v -63.487640 50.000000 13.300000 +v -63.487640 50.000000 12.800000 +v -60.889565 48.500000 13.300000 +v -60.487640 47.000000 13.300000 +v -60.487640 47.000000 12.800000 +v -60.889565 48.500000 12.800000 +v -61.987640 49.598076 13.300000 +v -61.987640 49.598076 12.800000 +v -60.487640 23.000000 13.300000 +v -60.487640 23.000000 12.800000 +v -61.987640 20.401924 13.300000 +v -63.487640 20.000000 13.300000 +v -63.487640 20.000000 12.800000 +v -61.987640 20.401924 12.800000 +v -60.889565 21.500000 13.300000 +v -60.889565 21.500000 12.800000 +v -68.987640 20.000000 13.300000 +v -68.987640 20.000000 12.800000 +v -68.987640 26.000000 13.300000 +v -68.987640 26.000000 12.800000 +v -69.274117 26.881678 13.300000 +v -69.274117 26.881678 12.800000 +v -70.024117 27.426584 13.300000 +v -70.024117 27.426584 12.800000 +v -70.951164 27.426584 13.300000 +v -70.951164 27.426584 12.800000 +v -71.701164 26.881678 13.300000 +v -71.701164 26.881678 12.800000 +v -71.987640 26.000000 13.300000 +v -71.987640 26.000000 12.800000 +v -71.987640 20.000000 13.300000 +v -71.987640 20.000000 12.800000 +v -78.987640 20.000000 13.300000 +v -78.987640 20.000000 12.800000 +v -78.987640 26.000000 13.300000 +v -78.987640 26.000000 12.800000 +v -79.274117 26.881678 13.300000 +v -79.274117 26.881678 12.800000 +v -80.024117 27.426584 13.300000 +v -80.024117 27.426584 12.800000 +v -80.951164 27.426584 13.300000 +v -80.951164 27.426584 12.800000 +v -81.701164 26.881678 13.300000 +v -81.701164 26.881678 12.800000 +v -81.987640 26.000000 13.300000 +v -81.987640 26.000000 12.800000 +v -81.987640 20.000000 13.300000 +v -81.987640 20.000000 12.800000 +v -87.487640 20.000000 13.300000 +v -87.487640 20.000000 12.800000 +v -90.085716 21.500000 13.300000 +v -90.085716 21.500000 12.800000 +v -88.987640 20.401924 13.300000 +v -88.987640 20.401924 12.800000 +v -93.487640 47.000000 12.800000 +v -93.487640 47.000000 13.300000 +v -93.487640 23.000000 13.300000 +v -93.487640 23.000000 12.800000 +v -94.987640 20.401924 13.300000 +v -96.487640 20.000000 13.300000 +v -96.487640 20.000000 12.800000 +v -94.987640 20.401924 12.800000 +v -93.889565 21.500000 13.300000 +v -93.889565 21.500000 12.800000 +v -106.987640 20.000000 13.300000 +v -106.987640 20.000000 12.800000 +v -106.987640 26.000000 13.300000 +v -106.987640 26.000000 12.800000 +v -107.274117 26.881678 13.300000 +v -107.274117 26.881678 12.800000 +v -108.024117 27.426584 13.300000 +v -108.024117 27.426584 12.800000 +v -108.951164 27.426584 13.300000 +v -108.951164 27.426584 12.800000 +v -109.701164 26.881678 13.300000 +v -109.701164 26.881678 12.800000 +v -109.987640 26.000000 13.300000 +v -109.987640 26.000000 12.800000 +v -109.987640 20.000000 13.300000 +v -109.987640 20.000000 12.800000 +v -120.487640 20.000000 13.300000 +v -120.487640 20.000000 12.800000 +v -123.085716 21.500000 13.300000 +v -123.487640 23.000000 13.300000 +v -123.487640 23.000000 12.800000 +v -123.085716 21.500000 12.800000 +v -121.987640 20.401924 13.300000 +v -121.987640 20.401924 12.800000 +v -123.487640 47.000000 13.300000 +v -123.487640 47.000000 12.800000 +v -121.987640 49.598076 13.300000 +v -120.487640 50.000000 13.300000 +v -120.487640 50.000000 12.800000 +v -121.987640 49.598076 12.800000 +v -123.085716 48.500000 13.300000 +v -123.085716 48.500000 12.800000 +v -109.987640 50.000000 13.300000 +v -109.987640 50.000000 12.800000 +v -109.987640 38.000000 13.300000 +v -109.987640 38.000000 12.800000 +v -109.701164 37.118320 13.300000 +v -109.701164 37.118320 12.800000 +v -108.951164 36.573414 13.300000 +v -108.951164 36.573414 12.800000 +v -108.024117 36.573414 13.300000 +v -108.024117 36.573414 12.800000 +v -107.274117 37.118320 13.300000 +v -107.274117 37.118320 12.800000 +v -106.987640 38.000000 13.300000 +v -106.987640 38.000000 12.800000 +v -106.987640 50.000000 13.300000 +v -106.987640 50.000000 12.800000 +v -96.487640 50.000000 13.300000 +v -96.487640 50.000000 12.800000 +v -93.889565 48.500000 13.300000 +v -93.889565 48.500000 12.800000 +v -94.987640 49.598076 13.300000 +v -94.987640 49.598076 12.800000 +v -250.987640 325.000000 9.800000 +v -250.987640 325.000000 12.800000 +v 199.012360 325.000000 12.800000 +v 199.012360 325.000000 9.800000 +v -250.987640 225.000000 9.800000 +v 199.012360 225.000000 9.800000 +v -250.987640 225.000000 8.800000 +v 199.012360 225.000000 8.800000 +v 199.012360 0.000000 12.800000 +v 199.012360 0.000000 8.800000 +v -250.987640 0.000000 8.800000 +v -250.987640 0.000000 12.800000 +v 189.012360 301.703033 15.100000 +v 189.012360 320.703033 15.100000 +v 188.512360 320.703033 14.966025 +v 188.512360 301.703033 14.966025 +v 188.146332 320.703033 14.600000 +v 188.146332 301.703033 14.600000 +v 188.012360 320.703033 14.100000 +v 188.012360 301.703033 14.100000 +v 189.663925 316.417908 14.355808 +v 189.618576 320.703033 14.450000 +v 189.712357 320.703033 14.100000 +v 189.712357 315.269409 14.100000 +v 189.678040 307.092102 14.316487 +v 189.669601 315.325012 14.340892 +v 189.712357 301.703033 14.100000 +v 189.683868 305.966736 14.297517 +v 189.712357 305.936646 14.100000 +v 189.545609 316.282288 14.553389 +v 189.362366 320.703033 14.706218 +v 189.618576 301.703033 14.450000 +v 189.431198 316.116150 14.660864 +v 189.372910 315.909973 14.700000 +v 189.426331 315.700134 14.664463 +v 189.395721 306.629059 14.685694 +v 189.449738 306.752869 14.646523 +v 189.372910 306.496094 14.700000 +v 189.012360 320.703033 14.800000 +v 189.409195 306.334625 14.676639 +v 189.362366 301.703033 14.706218 +v 189.491013 306.195160 14.610527 +v 189.012360 301.703033 14.800000 +v 189.606873 306.051331 14.469361 +v 189.712357 307.136627 14.100000 +v 189.590790 306.974426 14.494125 +v 189.566345 315.466248 14.527892 +v 189.712357 316.469421 14.100000 +v 188.312363 301.703033 14.100000 +v 188.406143 301.703033 13.750000 +v 188.312363 320.703033 14.100000 +v 188.406143 320.703033 13.750000 +v 188.662354 301.703033 13.493782 +v 188.662354 320.703033 13.493782 +v 189.012360 301.703033 13.400000 +v 189.012360 320.703033 13.400000 +v 189.349869 307.012939 6.300000 +v 189.425629 306.954742 6.205833 +v 189.357788 306.946655 6.205833 +v 189.417709 307.021057 6.300000 +v 189.337585 306.791870 7.119615 +v 189.361496 306.915527 7.027692 +v 189.323364 306.910980 7.027692 +v 189.412994 307.060455 6.383511 +v 189.550171 307.076843 6.383511 +v 189.554871 307.037445 6.300000 +v 189.375732 306.796417 7.119615 +v 189.387054 306.701538 7.164342 +v 189.372910 306.496094 7.200000 +v 189.426498 306.706238 7.164345 +v 189.047684 306.757233 6.080385 +v 189.053864 306.705597 6.053473 +v 189.012360 306.753021 6.080385 +v 189.337585 306.791870 6.080385 +v 189.343750 306.740204 6.053473 +v 189.348923 306.696991 7.164342 +v 189.033463 306.876343 7.027692 +v 189.012360 306.972626 6.900000 +v 189.012360 306.753021 7.119615 +v 189.021820 306.973785 6.900000 +v 189.311722 307.008392 6.300000 +v 189.319641 306.942078 6.205833 +v 189.311722 307.008392 6.900000 +v 189.047684 306.757233 7.119615 +v 189.573410 307.120026 6.600000 +v 189.663834 307.130829 6.600000 +v 189.668594 307.091003 6.383511 +v 189.578156 307.080200 6.383511 +v 189.059021 306.662354 7.164342 +v 189.012360 306.453033 7.200000 +v 189.345154 307.052368 6.383511 +v 189.545410 307.116699 6.600000 +v 189.307022 307.047791 6.383511 +v 189.029739 306.907471 6.205833 +v 189.012360 306.972626 6.300000 +v 189.408234 307.100311 6.600000 +v 189.340393 307.092194 6.600000 +v 189.021820 306.973785 6.300000 +v 189.579330 307.070435 6.840475 +v 189.357574 306.624512 6.014307 +v 189.372910 306.496094 6.000000 +v 189.012360 306.453033 6.000000 +v 189.669754 307.081238 6.840475 +v 189.395721 306.629059 6.014307 +v 189.302261 307.087646 6.600000 +v 189.381897 306.744781 6.053473 +v 189.449738 306.752869 6.053477 +v 189.551331 307.067108 6.840475 +v 189.582870 307.040771 6.900000 +v 189.566498 306.940002 7.027701 +v 189.562790 306.971130 6.205833 +v 189.590790 306.974426 6.205875 +v 189.017120 307.013184 6.383511 +v 189.012360 307.053040 6.600000 +v 189.375732 306.796417 6.080385 +v 189.554871 307.037445 6.900000 +v 189.414154 307.050720 6.840475 +v 189.582870 307.040771 6.300000 +v 189.678040 307.092102 6.383513 +v 189.417709 307.021057 6.900000 +v 189.346313 307.042603 6.840475 +v 189.308182 307.038055 6.840475 +v 189.349869 307.012939 6.900000 +v 189.429337 306.923645 7.027692 +v 189.443558 306.804535 7.119615 +v 189.712357 307.136627 6.600000 +v 207.716034 308.558258 6.080385 +v 213.016510 305.325287 6.000000 +v 207.573303 308.296814 6.000000 +v 213.159241 305.586761 6.080385 +v 207.820526 308.749664 6.300000 +v 213.263733 305.778168 6.300000 +v 207.858765 308.819733 6.600000 +v 213.263733 305.778168 6.900000 +v 213.301987 305.848206 6.600000 +v 207.820526 308.749664 6.900000 +v 213.159241 305.586761 7.119615 +v 207.716034 308.558258 7.119615 +v 213.016510 305.325287 7.200000 +v 207.573303 308.296814 7.200000 +v 213.016510 317.080750 6.000000 +v 207.716034 313.847778 6.080385 +v 207.573303 314.109253 6.000000 +v 213.159241 316.819305 6.080385 +v 207.820526 313.656403 6.300000 +v 213.263733 316.627899 6.300000 +v 207.858765 313.586334 6.600000 +v 213.301987 316.557831 6.600000 +v 213.263733 316.627899 6.900000 +v 207.820526 313.656403 6.900000 +v 213.159241 316.819305 7.119615 +v 207.716034 313.847778 7.119615 +v 213.016510 317.080750 7.200000 +v 207.573303 314.109253 7.200000 +v 189.407959 315.305786 6.600000 +v 189.346268 315.363617 6.359108 +v 189.413910 315.355530 6.359108 +v 189.340317 315.313843 6.600000 +v 189.307037 315.358398 6.816865 +v 188.951172 315.440704 6.900000 +v 188.941696 315.361450 6.600000 +v 189.302261 315.318390 6.600000 +v 189.545212 315.289368 6.600000 +v 189.551163 315.339142 6.359108 +v 189.345093 315.353851 6.816865 +v 189.573135 315.286041 6.600000 +v 189.579086 315.335815 6.359108 +v 189.311279 315.393951 6.893425 +v 189.412735 315.345764 6.816865 +v 189.349350 315.389404 6.893425 +v 189.663666 315.275238 6.600000 +v 189.669601 315.325012 6.359108 +v 189.712357 315.269409 6.600000 +v 189.677917 315.314087 6.816864 +v 189.416992 315.381348 6.893425 +v 189.319672 315.464264 6.994519 +v 188.977036 315.657257 7.119615 +v 189.357742 315.459717 6.994519 +v 189.549988 315.329376 6.816865 +v 189.348953 315.709381 6.035541 +v 189.012360 315.953033 6.000000 +v 189.372910 315.909973 6.000000 +v 188.977036 315.657257 6.080385 +v 189.577911 315.326050 6.816865 +v 189.387024 315.704834 6.035541 +v 189.426331 315.700134 6.035537 +v 189.425385 315.451630 6.994519 +v 189.338364 315.620667 6.076644 +v 189.376419 315.616119 6.076644 +v 189.566345 315.466248 6.172108 +v 189.554245 315.364929 6.893425 +v 189.582169 315.361603 6.893425 +v 189.590561 315.431946 6.994485 +v 189.323380 315.495270 6.172099 +v 188.951172 315.440704 6.300000 +v 189.668442 315.315216 6.816865 +v 189.361450 315.490723 6.172099 +v 189.338364 315.620667 7.123356 +v 189.429092 315.482666 6.172099 +v 189.376419 315.616119 7.123356 +v 189.311279 315.393951 6.306575 +v 189.562637 315.435242 6.994519 +v 189.349350 315.389404 6.306575 +v 189.343796 315.666229 7.146710 +v 189.308197 315.368164 6.359108 +v 189.381866 315.661682 7.146710 +v 189.449509 315.653595 7.146708 +v 189.395660 315.777161 7.185730 +v 189.444061 315.608032 7.123356 +v 189.357590 315.781708 7.185730 +v 189.372910 315.909973 7.200000 +v 189.416992 315.381348 6.306575 +v 189.012360 315.953033 7.200000 +v 189.554245 315.364929 6.306575 +v 189.582169 315.361603 6.306575 +v 190.006363 307.161774 6.708046 +v 206.316589 309.039520 6.900000 +v 206.307129 309.118774 6.600000 +v 190.043457 306.851227 6.066753 +v 206.377777 308.527222 6.000000 +v 189.812363 306.548584 6.000000 +v 189.858307 306.829102 6.066793 +v 206.342453 308.822998 6.080385 +v 190.041290 306.869354 6.076644 +v 189.945953 307.045746 6.241836 +v 190.019165 307.054596 6.241759 +v 206.316589 309.039520 6.300000 +v 190.014206 307.096039 6.306575 +v 190.004456 307.158356 6.475753 +v 190.006714 307.158783 6.475718 +v 190.005188 307.171600 6.600000 +v 190.014206 307.096039 6.893425 +v 189.958206 307.070587 6.924382 +v 190.016403 307.077667 6.924455 +v 190.034073 306.929688 7.083996 +v 189.887405 306.912109 7.083914 +v 206.342453 308.822998 7.119615 +v 190.053665 306.765717 7.169681 +v 189.834290 306.739502 7.169634 +v 189.812363 306.548584 7.200000 +v 206.377777 308.527222 7.200000 +v 206.307129 313.287262 6.600000 +v 190.006348 315.244293 6.491891 +v 206.316589 313.366516 6.300000 +v 190.053680 315.640472 6.030272 +v 189.812363 315.857483 6.000000 +v 206.377777 313.878815 6.000000 +v 206.342453 313.583038 6.080385 +v 189.887329 315.494141 6.115958 +v 189.834259 315.666687 6.030322 +v 190.034088 315.476562 6.115873 +v 189.958145 315.335602 6.275412 +v 190.016418 315.328522 6.275339 +v 190.014206 315.309998 6.306575 +v 190.006714 315.247284 6.724360 +v 206.316589 313.366516 6.900000 +v 190.004456 315.247711 6.724326 +v 190.014206 315.309998 6.893425 +v 189.945877 315.360443 6.958350 +v 190.019165 315.351593 6.958423 +v 206.342453 313.583038 7.119615 +v 190.041275 315.536713 7.123356 +v 189.858246 315.577179 7.133314 +v 190.043472 315.555023 7.133351 +v 206.377777 313.878815 7.200000 +v 189.812363 315.857483 7.200000 +v 188.424576 320.703033 5.790983 +v 189.012360 320.703033 5.600000 +v 189.012360 301.703033 5.600000 +v 188.424576 301.703033 5.790983 +v 188.061310 320.703033 6.290983 +v 188.061310 301.703033 6.290983 +v 188.061310 320.703033 6.909017 +v 188.061310 301.703033 6.909017 +v 188.424576 320.703033 7.409017 +v 188.424576 301.703033 7.409017 +v 189.012360 320.703033 7.600000 +v 189.012360 301.703033 7.600000 +v 189.712357 305.936646 6.600000 +v 189.683868 305.966736 6.402483 +v 189.712357 301.703033 6.600000 +v 189.578674 301.703033 6.188550 +v 189.606873 306.051331 6.230639 +v 189.491013 306.195160 6.089473 +v 189.409195 306.334625 6.023361 +v 189.712357 320.703033 6.600000 +v 189.578674 320.703033 6.188550 +v 189.663925 316.417908 6.344192 +v 189.228668 301.703033 5.934260 +v 189.431198 316.116150 6.039136 +v 189.545609 316.282288 6.146612 +v 189.228668 320.703033 5.934260 +v 188.796051 320.703033 5.934260 +v 188.796051 301.703033 5.934260 +v 188.446045 320.703033 6.188550 +v 188.446045 301.703033 6.188550 +v 188.312363 320.703033 6.600000 +v 188.312363 301.703033 6.600000 +v 189.712357 316.469421 6.600000 +v 189.442932 306.189362 14.610602 +v 189.521118 305.943146 13.914605 +v 189.469696 305.965332 13.843338 +v 189.517776 305.971069 13.843338 +v 189.410019 306.185425 14.610602 +v 189.473038 305.937408 13.914605 +v 189.414444 306.148376 14.585410 +v 189.447357 306.152313 14.585410 +v 189.615067 305.982697 13.843338 +v 189.545059 306.124390 13.646041 +v 189.663589 305.988495 13.843349 +v 189.562744 305.976440 13.843338 +v 189.495438 306.158051 14.585410 +v 189.461517 306.033875 14.469422 +v 189.509583 306.039642 14.469422 +v 189.554550 306.045013 14.469422 +v 189.566071 305.948517 13.914605 +v 189.392441 306.332611 14.676638 +v 189.012360 306.453033 14.700000 +v 189.618408 305.954773 13.914605 +v 189.031891 306.289551 14.676638 +v 189.049469 306.142365 14.610602 +v 189.443573 305.904541 14.100000 +v 189.083023 305.861450 14.100000 +v 189.079559 305.890411 13.914605 +v 189.440109 305.933472 13.914605 +v 189.476486 305.908478 14.100000 +v 189.068039 305.986877 14.469422 +v 189.012360 306.100342 14.585410 +v 189.012360 305.882385 14.285410 +v 189.079086 305.894440 14.297532 +v 189.524567 305.914215 14.100000 +v 189.569534 305.919586 14.100000 +v 189.621857 305.925812 14.100000 +v 189.053894 306.105316 14.585410 +v 189.440109 305.933472 14.285396 +v 189.079559 305.890411 14.285396 +v 189.053894 306.105316 13.614590 +v 189.012360 306.100342 13.614590 +v 189.012360 306.453033 13.500000 +v 189.439636 305.937500 14.297532 +v 189.058563 306.066254 13.646003 +v 189.473038 305.937408 14.285396 +v 189.397934 306.286621 13.538877 +v 189.372910 306.496094 13.500000 +v 189.430847 306.290558 13.538877 +v 189.076233 305.918335 13.843338 +v 189.012360 305.882385 13.914590 +v 189.472549 305.941437 14.297532 +v 189.687805 305.933716 14.100000 +v 189.521118 305.943146 14.285396 +v 189.414444 306.148376 13.614590 +v 189.447357 306.152313 13.614590 +v 189.520630 305.947174 14.297532 +v 189.566071 305.948517 14.285396 +v 189.419113 306.109314 13.646003 +v 189.452026 306.113251 13.646003 +v 189.565598 305.952545 14.297532 +v 189.618408 305.954773 14.285396 +v 189.500107 306.118988 13.646003 +v 189.617920 305.958801 14.297532 +v 189.436783 305.961395 13.843338 +v 189.428589 306.029968 14.469422 +v 189.684357 305.962646 14.285396 +v 210.590225 306.057770 13.806575 +v 209.610977 306.852478 13.576644 +v 210.699631 306.258179 13.576644 +v 210.553757 305.990967 14.100000 +v 209.501587 306.652069 13.806575 +v 209.465118 306.585266 14.100000 +v 210.590225 306.057770 14.393425 +v 209.501587 306.652069 14.393425 +v 211.788269 305.663879 13.576644 +v 212.873779 305.063843 13.580385 +v 212.769287 304.872437 13.800000 +v 213.016510 305.325287 13.500000 +v 210.699631 306.258179 14.623356 +v 213.016510 305.325287 14.700000 +v 209.610977 306.852478 14.623356 +v 211.678864 305.463470 13.806575 +v 211.642410 305.396667 14.100000 +v 212.731049 304.802368 14.100000 +v 211.678864 305.463470 14.393425 +v 212.769287 304.872437 14.400000 +v 211.788269 305.663879 14.623356 +v 212.873779 305.063843 14.619616 +v 208.522339 307.446777 13.576644 +v 207.430573 308.035339 13.580385 +v 207.573303 308.296814 13.500000 +v 208.412949 307.246368 13.806575 +v 207.326080 307.843933 13.800000 +v 208.376480 307.179565 14.100000 +v 207.287842 307.773865 14.100000 +v 208.412949 307.246368 14.393425 +v 207.326080 307.843933 14.400000 +v 208.522339 307.446777 14.623356 +v 207.573303 308.296814 14.700000 +v 207.430573 308.035339 14.619616 +v 209.501587 315.753967 13.806575 +v 210.590225 316.348267 13.806575 +v 210.699631 316.147888 13.576644 +v 209.610977 315.553589 13.576644 +v 209.465118 315.820770 14.100000 +v 210.553757 316.415070 14.100000 +v 209.501587 315.753967 14.393425 +v 210.590225 316.348267 14.393425 +v 208.522339 314.959290 13.576644 +v 207.573303 314.109253 13.500000 +v 207.430573 314.370697 13.580385 +v 209.610977 315.553589 14.623356 +v 207.573303 314.109253 14.700000 +v 213.016510 317.080750 14.700000 +v 210.699631 316.147888 14.623356 +v 208.412949 315.159668 13.806575 +v 207.326080 314.562103 13.800000 +v 208.376480 315.226471 14.100000 +v 207.287842 314.632172 14.100000 +v 208.412949 315.159668 14.393425 +v 207.326080 314.562103 14.400000 +v 208.522339 314.959290 14.623356 +v 207.430573 314.370697 14.619616 +v 211.788269 316.742188 13.576644 +v 212.873779 317.342224 13.580385 +v 213.016510 317.080750 13.500000 +v 211.678864 316.942566 13.806575 +v 212.769287 317.533600 13.800000 +v 211.642410 317.009369 14.100000 +v 212.731049 317.603668 14.100000 +v 211.678864 316.942566 14.393425 +v 212.769287 317.533600 14.400000 +v 211.788269 316.742188 14.623356 +v 212.873779 317.342224 14.619616 +v 189.521164 316.459045 13.903131 +v 189.560959 316.410858 13.806575 +v 189.516052 316.416229 13.806575 +v 189.566071 316.453674 13.903131 +v 189.472855 316.464813 13.903131 +v 189.467728 316.421997 13.806575 +v 189.670670 316.474396 14.100000 +v 189.684036 316.439514 13.903152 +v 189.666763 316.441650 13.903131 +v 189.439667 316.468781 13.903131 +v 189.073547 316.465332 13.800000 +v 189.083023 316.544586 14.100000 +v 189.434540 316.425964 13.806575 +v 189.622284 316.480164 14.100000 +v 189.618362 316.447418 13.903131 +v 189.569992 316.486420 14.100000 +v 189.525070 316.491791 14.100000 +v 189.476761 316.497559 14.100000 +v 189.443573 316.501526 14.100000 +v 189.615540 316.423706 14.355814 +v 189.613251 316.404602 14.393425 +v 189.563248 316.429962 14.355814 +v 189.392502 316.073883 13.523499 +v 189.409393 316.071869 13.523499 +v 189.372910 315.909973 13.500000 +v 189.012360 315.953033 13.500000 +v 189.560959 316.410858 14.393425 +v 189.047684 316.248810 13.580385 +v 189.440659 316.195282 13.576644 +v 189.491623 316.211761 13.590053 +v 189.518326 316.435333 14.355814 +v 189.516052 316.416229 14.393425 +v 189.443314 316.217560 13.589972 +v 189.407471 316.199249 13.576644 +v 189.470016 316.441101 14.355814 +v 189.410126 316.221527 13.589972 +v 189.436829 316.445068 14.355814 +v 189.555084 316.361633 13.731399 +v 189.607361 316.355286 13.731475 +v 189.073547 316.465332 14.400000 +v 189.613251 316.404602 13.806575 +v 189.467728 316.421997 14.393425 +v 189.434540 316.425964 14.393425 +v 189.510162 316.367004 13.731399 +v 189.500687 316.287659 14.553418 +v 189.452377 316.293427 14.553418 +v 189.461853 316.372772 13.731399 +v 189.419189 316.297394 14.553418 +v 189.047684 316.248810 14.619616 +v 189.428665 316.376740 13.731399 +v 189.440659 316.195282 14.623356 +v 189.407471 316.199249 14.623356 +v 189.398010 316.120117 14.660865 +v 189.012360 315.953033 14.700000 +v 206.438980 308.014923 14.400000 +v 190.009476 305.976868 14.174391 +v 206.448441 307.935669 14.100000 +v 189.968674 306.318451 13.554011 +v 189.850159 306.304321 13.554020 +v 189.812363 306.548584 13.500000 +v 206.377777 308.527222 13.500000 +v 206.413116 308.231445 13.580385 +v 189.973938 306.274445 13.576644 +v 189.929840 306.113434 13.702272 +v 189.992279 306.120850 13.702260 +v 206.438980 308.014923 13.800000 +v 190.001007 306.047760 13.806575 +v 189.996506 305.997345 13.923075 +v 190.006897 305.998505 13.923051 +v 190.010040 305.972198 14.100000 +v 190.001007 306.047760 14.393425 +v 189.961136 306.056274 14.415712 +v 189.999466 306.060760 14.415784 +v 189.979385 306.228790 14.594552 +v 189.881485 306.217194 14.594424 +v 206.413116 308.231445 14.619616 +v 189.960236 306.389191 14.673286 +v 206.377777 308.527222 14.700000 +v 189.812363 306.548584 14.700000 +v 189.831833 306.373901 14.673194 +v 190.009476 316.429169 14.025676 +v 206.448441 314.470367 14.100000 +v 206.438980 314.391113 13.800000 +v 189.960266 316.017090 13.526790 +v 206.413116 314.174591 13.580385 +v 206.377777 313.878815 13.500000 +v 189.812363 315.857483 13.500000 +v 189.831879 316.032410 13.526872 +v 189.881638 316.189209 13.605830 +v 189.979431 316.177612 13.605706 +v 189.961258 316.349976 13.784675 +v 189.999496 316.345551 13.784606 +v 190.001022 316.358307 13.806575 +v 190.006912 316.407623 14.276701 +v 206.438980 314.391113 14.400000 +v 189.996552 316.408783 14.276674 +v 190.001022 316.358307 14.393425 +v 189.929932 316.292786 14.497499 +v 189.992310 316.285400 14.497529 +v 206.413116 314.174591 14.619616 +v 189.973938 316.131592 14.623356 +v 189.850266 316.102081 14.645810 +v 189.968719 316.087952 14.645824 +v 189.812363 315.857483 14.700000 +v 206.377777 313.878815 14.700000 +v 189.934311 301.703033 14.487298 +v 189.994583 301.703033 13.912271 +v 189.858307 306.829102 14.633206 +v 189.887329 315.494141 14.584043 +v 189.834259 315.666687 14.669678 +v 189.726501 320.703033 13.400000 +v 189.565842 320.703033 14.932856 +v 189.934311 320.703033 14.487298 +v 189.726501 301.703033 13.400000 +v 189.565842 301.703033 14.932856 +v 189.834290 306.739502 13.530366 +v 189.858246 315.577179 13.566686 +v 189.945953 307.045746 14.458164 +v 190.004456 307.158356 14.224247 +v 189.958145 315.335602 14.424587 +v 190.006363 307.161774 13.991954 +v 190.006348 315.244293 14.208109 +v 189.958206 307.070587 13.775618 +v 190.004456 315.247711 13.975675 +v 189.994583 320.703033 13.912271 +v 189.887405 306.912109 13.616086 +v 189.945877 315.360443 13.741650 +v 189.362366 320.703033 13.493782 +v 189.395660 315.777161 13.514271 +v 189.426498 306.706238 13.535655 +v 189.449509 315.653595 13.553291 +v 189.618576 320.703033 13.750000 +v 189.362366 301.703033 13.493782 +v 189.618576 301.703033 13.750000 +v 189.669754 307.081238 13.859525 +v 189.677917 315.314087 13.883136 +v 189.590561 315.431946 13.705515 +v 189.566498 306.940002 13.672299 +v 188.662354 301.703033 14.706218 +v 188.662354 320.703033 14.706218 +v 188.406143 301.703033 14.450000 +v 188.406143 320.703033 14.450000 +v 188.146332 301.703033 13.600000 +v 188.146332 320.703033 13.600000 +v 188.512360 301.703033 13.233974 +v 188.512360 320.703033 13.233974 +v 189.012360 301.703033 13.100000 +v 189.012360 320.703033 13.100000 +v 199.245377 301.703033 13.150000 +v 199.312363 320.703033 12.900000 +v 199.245377 320.703033 13.150000 +v 199.312363 301.703033 12.900000 +v 199.062363 301.703033 13.333013 +v 199.062363 320.703033 13.333013 +v 198.812363 301.703033 13.400000 +v 198.812363 320.703033 13.400000 +v 199.012360 301.703033 12.900000 +v 198.985565 301.703033 13.000000 +v 199.012360 320.703033 12.900000 +v 198.985565 320.703033 13.000000 +v 198.912354 301.703033 13.073205 +v 198.912354 320.703033 13.073205 +v 198.812363 301.703033 13.100000 +v 198.812363 320.703033 13.100000 +v 206.307129 313.287262 14.100000 +v 206.316589 313.366516 14.400000 +v 190.053680 315.640472 14.669727 +v 206.342453 313.583038 14.619616 +v 190.034088 315.476562 14.584126 +v 190.016418 315.328522 14.424661 +v 190.014206 315.309998 14.393425 +v 190.006714 315.247284 13.975640 +v 206.316589 313.366516 13.800000 +v 190.014206 315.309998 13.806575 +v 190.019165 315.351593 13.741577 +v 206.342453 313.583038 13.580385 +v 190.041275 315.536713 13.576644 +v 190.043472 315.555023 13.566649 +v 206.316589 309.039520 13.800000 +v 206.307129 309.118774 14.100000 +v 190.043457 306.851227 14.633246 +v 206.342453 308.822998 14.619616 +v 190.041290 306.869354 14.623356 +v 190.019165 307.054596 14.458241 +v 206.316589 309.039520 14.400000 +v 190.014206 307.096039 14.393425 +v 190.006714 307.158783 14.224281 +v 190.005188 307.171600 14.100000 +v 190.014206 307.096039 13.806575 +v 190.016403 307.077667 13.775545 +v 190.034073 306.929688 13.616004 +v 206.342453 308.822998 13.580385 +v 190.053665 306.765717 13.530319 +v 189.346268 315.363617 14.340892 +v 189.413910 315.355530 14.340892 +v 189.416992 315.381348 14.393425 +v 189.349350 315.389404 14.393425 +v 189.573135 315.286041 14.100000 +v 189.579086 315.335815 14.340892 +v 189.663666 315.275238 14.100000 +v 189.308197 315.368164 14.340892 +v 188.951172 315.440704 14.400000 +v 188.941696 315.361450 14.100000 +v 189.311279 315.393951 14.393425 +v 189.545212 315.289368 14.100000 +v 189.551163 315.339142 14.340892 +v 189.668442 315.315216 13.883135 +v 189.407959 315.305786 14.100000 +v 189.577911 315.326050 13.883135 +v 189.340317 315.313843 14.100000 +v 189.549988 315.329376 13.883135 +v 189.302261 315.318390 14.100000 +v 189.582169 315.361603 13.806575 +v 189.554245 315.364929 13.806575 +v 189.387024 315.704834 14.664459 +v 189.412735 315.345764 13.883135 +v 189.444061 315.608032 14.623356 +v 189.562637 315.435242 13.705482 +v 189.348953 315.709381 14.664459 +v 188.977036 315.657257 14.619616 +v 189.345093 315.353851 13.883135 +v 189.376419 315.616119 14.623356 +v 189.416992 315.381348 13.806575 +v 189.338364 315.620667 14.623356 +v 189.307037 315.358398 13.883135 +v 189.582169 315.361603 14.393425 +v 188.951172 315.440704 13.800000 +v 189.429092 315.482666 14.527901 +v 189.349350 315.389404 13.806575 +v 189.311279 315.393951 13.806575 +v 189.554245 315.364929 14.393425 +v 189.425385 315.451630 13.705482 +v 189.357742 315.459717 13.705482 +v 189.361450 315.490723 14.527901 +v 189.319672 315.464264 13.705482 +v 188.977036 315.657257 13.580385 +v 189.444061 315.608032 13.576644 +v 189.323380 315.495270 14.527901 +v 189.376419 315.616119 13.576644 +v 189.338364 315.620667 13.576644 +v 189.381866 315.661682 13.553290 +v 189.343796 315.666229 13.553290 +v 189.357590 315.781708 13.514270 +v 207.195007 313.950653 13.500000 +v 207.279510 313.671814 13.576644 +v 206.813110 313.581940 13.576644 +v 207.345718 313.453339 13.806575 +v 206.832855 313.354492 13.806575 +v 207.365967 313.379944 14.100000 +v 207.820526 313.656403 13.800000 +v 207.858765 313.586334 14.100000 +v 207.110519 314.229492 13.576644 +v 206.787918 313.872192 13.500000 +v 207.044296 314.447998 13.806575 +v 206.762726 314.162445 13.576644 +v 207.022232 314.520813 14.100000 +v 206.841339 313.278839 14.100000 +v 206.742981 314.389923 13.806575 +v 207.044296 314.447998 14.393425 +v 206.736404 314.465729 14.100000 +v 207.110519 314.229492 14.623356 +v 206.742981 314.389923 14.393425 +v 207.195007 313.950653 14.700000 +v 206.762726 314.162445 14.623356 +v 207.279510 313.671814 14.623356 +v 207.716034 313.847778 14.619616 +v 206.787918 313.872192 14.700000 +v 207.345718 313.453339 14.393425 +v 207.820526 313.656403 14.400000 +v 206.813110 313.581940 14.623356 +v 206.832855 313.354492 14.393425 +v 207.716034 313.847778 13.580385 +v 210.036057 314.774933 14.100000 +v 211.088226 315.436035 14.393425 +v 209.999588 314.841736 14.393425 +v 211.124695 315.369232 14.100000 +v 209.999588 314.841736 13.806575 +v 211.088226 315.436035 13.806575 +v 208.801559 314.447815 14.623356 +v 209.890198 315.042114 14.623356 +v 209.890198 315.042114 13.576644 +v 210.978836 315.636414 13.576644 +v 208.910950 314.247437 14.393425 +v 208.947418 314.180634 14.100000 +v 208.910950 314.247437 13.806575 +v 208.801559 314.447815 13.576644 +v 212.067474 316.230713 14.623356 +v 213.159241 316.819305 14.619616 +v 212.176880 316.030334 14.393425 +v 213.263733 316.627899 14.400000 +v 212.213333 315.963531 14.100000 +v 213.263733 316.627899 13.800000 +v 213.301987 316.557831 14.100000 +v 212.176880 316.030334 13.806575 +v 213.159241 316.819305 13.580385 +v 210.978836 315.636414 14.623356 +v 212.067474 316.230713 13.576644 +v 213.834457 316.825439 13.576644 +v 214.038956 316.566010 13.611998 +v 213.810028 316.780579 13.609021 +v 213.470764 317.722473 14.393425 +v 213.469757 317.784485 14.229738 +v 214.251831 317.592224 14.229738 +v 213.488037 316.669342 13.833200 +v 213.685181 316.560089 14.100000 +v 213.493301 316.607239 14.100000 +v 214.222183 317.537781 14.393425 +v 213.718643 316.612640 13.833200 +v 214.072113 317.262085 14.663078 +v 214.505630 316.877838 14.659701 +v 214.113037 317.337250 14.623356 +v 213.487808 316.683289 13.806575 +v 213.725311 316.624908 13.806575 +v 213.471909 317.653198 14.492763 +v 214.189056 317.476929 14.492763 +v 213.973740 317.081360 14.700000 +v 214.269699 316.720184 14.695951 +v 213.938080 317.015839 13.504723 +v 214.259949 316.713684 13.505548 +v 213.973740 317.081360 13.500000 +v 214.496445 316.871674 13.536122 +v 213.484894 316.860504 13.609021 +v 213.943359 317.025513 14.696576 +v 213.474503 317.494202 14.623356 +v 213.484055 316.911591 13.576644 +v 213.475906 317.408630 14.663078 +v 214.066772 317.252258 13.532908 +v 214.113037 317.337250 13.576644 +v 214.693909 317.003632 13.696676 +v 213.834457 316.825439 14.623356 +v 214.046997 316.571381 14.594828 +v 213.480499 317.128296 13.504723 +v 213.814896 316.789520 14.598025 +v 213.479279 317.202881 14.700000 +v 213.479279 317.202881 13.500000 +v 213.480331 317.139343 14.696576 +v 214.185120 317.469696 13.697845 +v 213.725311 316.624908 14.393425 +v 213.888885 316.465759 14.379644 +v 213.476089 317.397461 13.532908 +v 213.719940 316.615051 14.372265 +v 213.831787 316.427612 14.100000 +v 214.222183 317.537781 13.806575 +v 214.806839 317.079071 13.950198 +v 213.484055 316.911591 14.623356 +v 213.474503 317.494202 13.576644 +v 213.484726 316.870667 14.598025 +v 213.487808 316.683289 14.393425 +v 214.250580 317.589966 13.958963 +v 213.472031 317.644958 13.697845 +v 213.487991 316.672058 14.372265 +v 214.258560 317.604614 14.100000 +v 214.809189 317.080658 14.238252 +v 213.470764 317.722473 13.806575 +v 213.469788 317.781891 13.958963 +v 214.700439 317.007996 14.494437 +v 213.469513 317.798584 14.100000 +v 213.886612 316.464233 13.825633 +v 216.011078 309.214203 13.532908 +v 214.259949 305.692383 13.505548 +v 215.747055 309.266724 13.504723 +v 215.757889 313.141479 14.696576 +v 215.757889 309.264587 14.696576 +v 216.022034 309.212036 14.663078 +v 216.022034 313.194000 14.663078 +v 215.494354 313.089050 14.598025 +v 216.253860 309.165924 13.697845 +v 214.693909 305.402435 13.696676 +v 214.496445 305.534363 13.536122 +v 215.494354 309.316986 14.598025 +v 215.299530 313.050293 14.372265 +v 215.235901 313.037659 14.100000 +v 215.235901 309.368408 14.100000 +v 215.299530 309.355743 14.372265 +v 216.388168 309.139221 13.958963 +v 214.806839 305.326965 13.950198 +v 216.390717 309.138702 14.229738 +v 214.809189 305.325409 14.238252 +v 216.261948 309.164307 14.492763 +v 214.700439 305.398071 14.494437 +v 214.505630 305.528229 14.659701 +v 214.269699 305.685852 14.695951 +v 214.046997 305.834656 14.594828 +v 213.888885 305.940308 14.379644 +v 215.296860 313.049774 13.833200 +v 213.831787 305.978455 14.100000 +v 215.296860 309.356293 13.833200 +v 215.484360 313.087067 13.609021 +v 215.484360 309.318970 13.609021 +v 215.747055 313.139313 13.504723 +v 216.011078 313.191833 13.532908 +v 216.253860 313.240112 13.697845 +v 216.388168 313.266846 13.958963 +v 216.390717 313.267334 14.229738 +v 213.886612 305.941833 13.825633 +v 216.261948 313.241730 14.492763 +v 214.038956 305.840027 13.611998 +v 214.222183 304.868286 14.393425 +v 213.469757 304.621552 14.229738 +v 214.251831 304.813812 14.229738 +v 213.470764 304.683563 14.393425 +v 213.718643 305.793396 13.833200 +v 213.493301 305.798798 14.100000 +v 213.685181 305.845978 14.100000 +v 213.488037 305.736725 13.833200 +v 213.475906 304.997437 14.663078 +v 213.474503 304.911835 14.623356 +v 213.725311 305.781128 13.806575 +v 214.189056 304.929138 14.492763 +v 213.471909 304.752838 14.492763 +v 213.487808 305.722748 13.806575 +v 213.480499 305.277740 13.504723 +v 213.159241 305.586761 13.580385 +v 213.484055 305.494476 13.576644 +v 213.479279 305.203156 14.700000 +v 213.479279 305.203156 13.500000 +v 213.480331 305.266693 14.696576 +v 213.159241 305.586761 14.619616 +v 213.810028 305.625488 13.609021 +v 213.484894 305.545563 13.609021 +v 214.113037 305.068817 14.623356 +v 213.834457 305.580597 13.576644 +v 214.072113 305.143982 14.663078 +v 213.476089 305.008606 13.532908 +v 213.484055 305.494476 14.623356 +v 213.474503 304.911835 13.576644 +v 213.484726 305.535370 14.598025 +v 213.263733 305.778168 14.400000 +v 213.938080 305.390228 13.504723 +v 213.973740 305.324707 14.700000 +v 213.973740 305.324707 13.500000 +v 213.943359 305.380524 14.696576 +v 213.472031 304.761078 13.697845 +v 213.487808 305.722748 14.393425 +v 214.066772 305.153778 13.532908 +v 213.487991 305.733978 14.372265 +v 213.301987 305.848206 14.100000 +v 213.834457 305.580597 14.623356 +v 213.470764 304.683563 13.806575 +v 214.113037 305.068817 13.576644 +v 213.814896 305.616547 14.598025 +v 213.469788 304.624176 13.958963 +v 213.725311 305.781128 14.393425 +v 214.185120 304.936371 13.697845 +v 213.719940 305.791016 14.372265 +v 213.469513 304.607483 14.100000 +v 214.222183 304.868286 13.806575 +v 214.250580 304.816101 13.958963 +v 214.258560 304.801422 14.100000 +v 213.263733 305.778168 13.800000 +v 211.124695 307.036804 14.100000 +v 209.999588 307.564331 14.393425 +v 211.088226 306.970032 14.393425 +v 210.036057 307.631104 14.100000 +v 211.088226 306.970032 13.806575 +v 209.999588 307.564331 13.806575 +v 212.067474 306.175323 14.623356 +v 210.978836 306.769623 14.623356 +v 210.978836 306.769623 13.576644 +v 209.890198 307.363922 13.576644 +v 212.176880 306.375732 14.393425 +v 212.213333 306.442505 14.100000 +v 212.176880 306.375732 13.806575 +v 212.067474 306.175323 13.576644 +v 208.801559 307.958221 14.623356 +v 207.820526 308.749664 14.400000 +v 207.716034 308.558258 14.619616 +v 208.910950 308.158630 14.393425 +v 207.858765 308.819733 14.100000 +v 208.947418 308.225433 14.100000 +v 208.910950 308.158630 13.806575 +v 207.820526 308.749664 13.800000 +v 209.890198 307.363922 14.623356 +v 208.801559 307.958221 13.576644 +v 207.716034 308.558258 13.580385 +v 206.787918 308.533844 13.500000 +v 206.813110 308.824127 13.576644 +v 207.279510 308.734222 13.576644 +v 206.832855 309.051575 13.806575 +v 207.345718 308.952728 13.806575 +v 206.762726 308.243591 13.576644 +v 207.195007 308.455383 13.500000 +v 206.742981 308.016144 13.806575 +v 207.110519 308.176544 13.576644 +v 206.736404 307.940308 14.100000 +v 207.044296 307.958069 13.806575 +v 206.742981 308.016144 14.393425 +v 207.022232 307.885223 14.100000 +v 206.762726 308.243591 14.623356 +v 207.044296 307.958069 14.393425 +v 206.787918 308.533844 14.700000 +v 207.110519 308.176544 14.623356 +v 206.813110 308.824127 14.623356 +v 207.195007 308.455383 14.700000 +v 206.832855 309.051575 14.393425 +v 206.841339 309.127228 14.100000 +v 207.279510 308.734222 14.623356 +v 207.345718 308.952728 14.393425 +v 207.365967 309.026093 14.100000 +v 189.375732 306.796417 13.580385 +v 189.323364 306.910980 13.672307 +v 189.361496 306.915527 13.672307 +v 189.345154 307.052368 14.316489 +v 189.307022 307.047791 14.316489 +v 189.311722 307.008392 14.400000 +v 189.429337 306.923645 13.672307 +v 189.562790 306.971130 14.494167 +v 189.348923 306.696991 13.535658 +v 189.059021 306.662354 13.535658 +v 189.047684 306.757233 13.580385 +v 189.425629 306.954742 14.494167 +v 189.337585 306.791870 13.580385 +v 189.387054 306.701538 13.535658 +v 189.412994 307.060455 14.316489 +v 189.349869 307.012939 14.400000 +v 189.417709 307.021057 14.400000 +v 189.554871 307.037445 14.400000 +v 189.582870 307.040771 14.400000 +v 189.302261 307.087646 14.100000 +v 189.012360 307.053040 14.100000 +v 189.017120 307.013184 14.316489 +v 189.550171 307.076843 14.316489 +v 189.021820 306.973785 13.800000 +v 189.012360 306.972626 13.800000 +v 189.340393 307.092194 14.100000 +v 189.578156 307.080200 14.316489 +v 189.408234 307.100311 14.100000 +v 189.668594 307.091003 14.316489 +v 189.033463 306.876343 13.672307 +v 189.012360 306.753021 13.580385 +v 189.545410 307.116699 14.100000 +v 189.308182 307.038055 13.859525 +v 189.053864 306.705597 14.646526 +v 189.012360 306.753021 14.619616 +v 189.573410 307.120026 14.100000 +v 189.047684 306.757233 14.619616 +v 189.357574 306.624512 14.685694 +v 189.346313 307.042603 13.859525 +v 189.029739 306.907471 14.494167 +v 189.012360 306.972626 14.400000 +v 189.311722 307.008392 13.800000 +v 189.343750 306.740204 14.646526 +v 189.381897 306.744781 14.646526 +v 189.349869 307.012939 13.800000 +v 189.337585 306.791870 14.619616 +v 189.414154 307.050720 13.859525 +v 189.663834 307.130829 14.100000 +v 189.021820 306.973785 14.400000 +v 189.375732 306.796417 14.619616 +v 189.417709 307.021057 13.800000 +v 189.319641 306.942078 14.494167 +v 189.551331 307.067108 13.859525 +v 189.357788 306.946655 14.494167 +v 189.579330 307.070435 13.859525 +v 189.554871 307.037445 13.800000 +v 189.582870 307.040771 13.800000 +v 188.446045 320.703033 7.011450 +v 188.446045 301.703033 7.011450 +v 188.796051 320.703033 7.265739 +v 188.796051 301.703033 7.265739 +v 189.430847 306.290558 7.161123 +v 189.228668 301.703033 7.265739 +v 189.228668 320.703033 7.265739 +v 189.578674 301.703033 7.011450 +v 189.545059 306.124390 7.053959 +v 189.409393 316.071869 7.176500 +v 189.578674 320.703033 7.011450 +v 189.491623 316.211761 7.109947 +v 189.663589 305.988495 6.856652 +v 189.684036 316.439514 6.796848 +v 189.607361 316.355286 6.968525 +v 189.565842 301.703033 5.767144 +v 189.934311 301.703033 6.212702 +v 189.850159 306.304321 7.145979 +v 189.726501 301.703033 7.300000 +v 189.934311 320.703033 6.212702 +v 189.850266 316.102081 6.054190 +v 189.929840 306.113434 6.997728 +v 189.565842 320.703033 5.767144 +v 189.726501 320.703033 7.300000 +v 189.831879 316.032410 7.173129 +v 189.929932 316.292786 6.202500 +v 189.996552 316.408783 6.423326 +v 189.961258 316.349976 6.915325 +v 190.009476 316.429169 6.674325 +v 189.994583 320.703033 6.787728 +v 189.994583 301.703033 6.787728 +v 189.996506 305.997345 6.776925 +v 190.009476 305.976868 6.525609 +v 189.881485 306.217194 6.105576 +v 189.961136 306.056274 6.284288 +v 189.881638 316.189209 7.094170 +v 189.831833 306.373901 6.026806 +v 199.312363 320.703033 7.800000 +v 199.312363 301.703033 7.800000 +v 199.245377 301.703033 7.550000 +v 199.245377 320.703033 7.550000 +v 199.062363 301.703033 7.366987 +v 199.062363 320.703033 7.366987 +v 198.812363 301.703033 7.300000 +v 198.812363 320.703033 7.300000 +v 199.012360 320.703033 7.800000 +v 199.012360 301.703033 7.800000 +v 198.985565 301.703033 7.700000 +v 198.985565 320.703033 7.700000 +v 198.912354 301.703033 7.626795 +v 198.912354 320.703033 7.626795 +v 198.812363 301.703033 7.600000 +v 198.812363 320.703033 7.600000 +v 206.448441 314.470367 6.600000 +v 206.438980 314.391113 6.900000 +v 189.960266 316.017090 7.173211 +v 206.413116 314.174591 7.119615 +v 189.979431 316.177612 7.094294 +v 189.999496 316.345551 6.915394 +v 190.001022 316.358307 6.893425 +v 190.006912 316.407623 6.423299 +v 206.438980 314.391113 6.300000 +v 190.001022 316.358307 6.306575 +v 189.992310 316.285400 6.202471 +v 206.413116 314.174591 6.080385 +v 189.973938 316.131592 6.076644 +v 189.968719 316.087952 6.054175 +v 206.438980 308.014923 6.300000 +v 206.448441 307.935669 6.600000 +v 189.968674 306.318451 7.145989 +v 206.413116 308.231445 7.119615 +v 189.973938 306.274445 7.123356 +v 189.992279 306.120850 6.997740 +v 206.438980 308.014923 6.900000 +v 190.001007 306.047760 6.893425 +v 190.006897 305.998505 6.776949 +v 190.010040 305.972198 6.600000 +v 190.001007 306.047760 6.306575 +v 189.999466 306.060760 6.284216 +v 189.979385 306.228790 6.105448 +v 206.413116 308.231445 6.080385 +v 189.960236 306.389191 6.026714 +v 189.666763 316.441650 6.796869 +v 189.560959 316.410858 6.893425 +v 189.618362 316.447418 6.796869 +v 189.476761 316.497559 6.600000 +v 189.443573 316.501526 6.600000 +v 189.439667 316.468781 6.796869 +v 189.472855 316.464813 6.796869 +v 189.525070 316.491791 6.600000 +v 189.521164 316.459045 6.796869 +v 189.569992 316.486420 6.600000 +v 189.566071 316.453674 6.796869 +v 189.622284 316.480164 6.600000 +v 189.670670 316.474396 6.600000 +v 189.436829 316.445068 6.344186 +v 189.073547 316.465332 6.300000 +v 189.083023 316.544586 6.600000 +v 189.470016 316.441101 6.344186 +v 189.434540 316.425964 6.306575 +v 189.467728 316.421997 6.306575 +v 189.518326 316.435333 6.344186 +v 189.516052 316.416229 6.306575 +v 189.563248 316.429962 6.344186 +v 189.560959 316.410858 6.306575 +v 189.392502 316.073883 7.176501 +v 189.047684 316.248810 7.119615 +v 189.615540 316.423706 6.344186 +v 189.613251 316.404602 6.306575 +v 189.407471 316.199249 7.123356 +v 189.419189 316.297394 6.146582 +v 189.047684 316.248810 6.080385 +v 189.410126 316.221527 7.110027 +v 189.440659 316.195282 7.123356 +v 189.452377 316.293427 6.146582 +v 189.443314 316.217560 7.110027 +v 189.428665 316.376740 6.968601 +v 189.073547 316.465332 6.900000 +v 189.500687 316.287659 6.146582 +v 189.407471 316.199249 6.076644 +v 189.461853 316.372772 6.968601 +v 189.440659 316.195282 6.076644 +v 189.510162 316.367004 6.968601 +v 189.398010 316.120117 6.039135 +v 189.434540 316.425964 6.893425 +v 189.467728 316.421997 6.893425 +v 189.555084 316.361633 6.968601 +v 189.516052 316.416229 6.893425 +v 206.813110 313.581940 7.123356 +v 206.832855 313.354492 6.893425 +v 207.345718 313.453339 6.893425 +v 207.110519 314.229492 7.123356 +v 207.430573 314.370697 7.119615 +v 207.195007 313.950653 7.200000 +v 207.365967 313.379944 6.600000 +v 206.787918 313.872192 7.200000 +v 207.279510 313.671814 7.123356 +v 207.044296 314.447998 6.893425 +v 207.326080 314.562103 6.900000 +v 206.762726 314.162445 7.123356 +v 207.022232 314.520813 6.600000 +v 207.287842 314.632172 6.600000 +v 206.742981 314.389923 6.893425 +v 207.044296 314.447998 6.306575 +v 207.326080 314.562103 6.300000 +v 206.736404 314.465729 6.600000 +v 207.110519 314.229492 6.076644 +v 207.430573 314.370697 6.080385 +v 206.742981 314.389923 6.306575 +v 207.195007 313.950653 6.000000 +v 206.762726 314.162445 6.076644 +v 207.279510 313.671814 6.076644 +v 206.787918 313.872192 6.000000 +v 207.345718 313.453339 6.306575 +v 206.813110 313.581940 6.076644 +v 206.832855 313.354492 6.306575 +v 206.841339 313.278839 6.600000 +v 212.873779 317.342224 7.119615 +v 212.769287 317.533600 6.900000 +v 212.731049 317.603668 6.600000 +v 212.769287 317.533600 6.300000 +v 212.873779 317.342224 6.080385 +v 213.488037 316.669342 6.866801 +v 213.493301 316.607239 6.600000 +v 213.685181 316.560089 6.600000 +v 213.470764 317.722473 6.306575 +v 213.469757 317.784485 6.470262 +v 214.251831 317.592224 6.470262 +v 213.718643 316.612640 6.866801 +v 214.072113 317.262085 6.036922 +v 214.113037 317.337250 6.076644 +v 214.505630 316.877838 6.040299 +v 213.487808 316.683289 6.893425 +v 213.471909 317.653198 6.207237 +v 214.222183 317.537781 6.306575 +v 214.189056 317.476929 6.207237 +v 213.725311 316.624908 6.893425 +v 213.938080 317.015839 7.195278 +v 213.834457 316.825439 7.123356 +v 214.259949 316.713684 7.194453 +v 213.973740 317.081360 6.000000 +v 214.269699 316.720184 6.004050 +v 213.973740 317.081360 7.200000 +v 214.496445 316.871674 7.163877 +v 213.484894 316.860504 7.090979 +v 213.943359 317.025513 6.003424 +v 213.810028 316.780579 7.090979 +v 213.474503 317.494202 6.076644 +v 213.484055 316.911591 7.123356 +v 213.475906 317.408630 6.036922 +v 214.066772 317.252258 7.167092 +v 213.834457 316.825439 6.076644 +v 214.046997 316.571381 6.105172 +v 214.113037 317.337250 7.123356 +v 214.693909 317.003632 7.003324 +v 213.480499 317.128296 7.195278 +v 213.814896 316.789520 6.101975 +v 213.479279 317.202881 6.000000 +v 213.479279 317.202881 7.200000 +v 213.480331 317.139343 6.003424 +v 214.185120 317.469696 7.002154 +v 213.725311 316.624908 6.306575 +v 213.888885 316.465759 6.320356 +v 213.476089 317.397461 7.167092 +v 213.719940 316.615051 6.327735 +v 213.831787 316.427612 6.600000 +v 214.222183 317.537781 6.893425 +v 213.484055 316.911591 6.076644 +v 214.806839 317.079071 6.749801 +v 213.474503 317.494202 7.123356 +v 213.484726 316.870667 6.101975 +v 214.250580 317.589966 6.741037 +v 213.487808 316.683289 6.306575 +v 213.472031 317.644958 7.002154 +v 213.487991 316.672058 6.327735 +v 214.258560 317.604614 6.600000 +v 214.809189 317.080658 6.461748 +v 213.470764 317.722473 6.893425 +v 213.469788 317.781891 6.741037 +v 214.700439 317.007996 6.205563 +v 213.469513 317.798584 6.600000 +v 213.886612 316.464233 6.874367 +v 214.038956 316.566010 7.088002 +v 215.299530 313.050293 6.327735 +v 215.299530 309.355743 6.327735 +v 215.235901 309.368408 6.600000 +v 215.494354 309.316986 6.101975 +v 216.388168 309.139221 6.741037 +v 216.253860 309.165924 7.002154 +v 214.693909 305.402435 7.003324 +v 216.390717 309.138702 6.470262 +v 214.806839 305.326965 6.749801 +v 214.809189 305.325409 6.461748 +v 216.261948 309.164307 6.207237 +v 214.700439 305.398071 6.205563 +v 216.022034 309.212036 6.036922 +v 214.505630 305.528229 6.040299 +v 215.757889 309.264587 6.003424 +v 214.269699 305.685852 6.004050 +v 214.046997 305.834656 6.105172 +v 213.888885 305.940308 6.320356 +v 213.831787 305.978455 6.600000 +v 215.296860 313.049774 6.866801 +v 215.235901 313.037659 6.600000 +v 213.886612 305.941833 6.874367 +v 215.296860 309.356293 6.866801 +v 215.484360 313.087067 7.090979 +v 215.484360 309.318970 7.090979 +v 215.747055 313.139313 7.195278 +v 215.747055 309.266724 7.195278 +v 216.011078 313.191833 7.167092 +v 216.011078 309.214203 7.167092 +v 216.253860 313.240112 7.002154 +v 216.388168 313.266846 6.741037 +v 216.390717 313.267334 6.470262 +v 216.261948 313.241730 6.207237 +v 214.038956 305.840027 7.088002 +v 216.022034 313.194000 6.036922 +v 214.259949 305.692383 7.194453 +v 215.757889 313.141479 6.003424 +v 214.496445 305.534363 7.163877 +v 215.494354 313.089050 6.101975 +v 213.718643 305.793396 6.866801 +v 213.685181 305.845978 6.600000 +v 213.475906 304.997437 6.036922 +v 212.873779 305.063843 6.080385 +v 213.493301 305.798798 6.600000 +v 213.488037 305.736725 6.866801 +v 213.725311 305.781128 6.893425 +v 213.474503 304.911835 6.076644 +v 213.487808 305.722748 6.893425 +v 214.189056 304.929138 6.207237 +v 214.222183 304.868286 6.306575 +v 213.470764 304.683563 6.306575 +v 213.471909 304.752838 6.207237 +v 213.480499 305.277740 7.195278 +v 213.484055 305.494476 7.123356 +v 213.479279 305.203156 6.000000 +v 213.479279 305.203156 7.200000 +v 213.480331 305.266693 6.003424 +v 213.810028 305.625488 7.090979 +v 213.484894 305.545563 7.090979 +v 214.113037 305.068817 6.076644 +v 213.834457 305.580597 7.123356 +v 214.072113 305.143982 6.036922 +v 213.476089 305.008606 7.167092 +v 212.873779 305.063843 7.119615 +v 213.474503 304.911835 7.123356 +v 213.484055 305.494476 6.076644 +v 213.484726 305.535370 6.101975 +v 213.938080 305.390228 7.195278 +v 213.973740 305.324707 6.000000 +v 213.973740 305.324707 7.200000 +v 213.943359 305.380524 6.003424 +v 213.472031 304.761078 7.002154 +v 212.769287 304.872437 6.900000 +v 213.487808 305.722748 6.306575 +v 214.066772 305.153778 7.167092 +v 213.487991 305.733978 6.327735 +v 213.834457 305.580597 6.076644 +v 213.470764 304.683563 6.893425 +v 214.113037 305.068817 7.123356 +v 213.814896 305.616547 6.101975 +v 213.469788 304.624176 6.741037 +v 213.725311 305.781128 6.306575 +v 212.731049 304.802368 6.600000 +v 214.185120 304.936371 7.002154 +v 213.719940 305.791016 6.327735 +v 213.469513 304.607483 6.600000 +v 214.222183 304.868286 6.893425 +v 213.469757 304.621552 6.470262 +v 212.769287 304.872437 6.300000 +v 214.250580 304.816101 6.741037 +v 214.258560 304.801422 6.600000 +v 214.251831 304.813812 6.470262 +v 207.430573 308.035339 7.119615 +v 207.326080 307.843933 6.900000 +v 207.287842 307.773865 6.600000 +v 207.326080 307.843933 6.300000 +v 207.430573 308.035339 6.080385 +v 207.279510 308.734222 7.123356 +v 207.345718 308.952728 6.893425 +v 206.832855 309.051575 6.893425 +v 206.762726 308.243591 7.123356 +v 206.787918 308.533844 7.200000 +v 206.841339 309.127228 6.600000 +v 207.195007 308.455383 7.200000 +v 206.813110 308.824127 7.123356 +v 206.742981 308.016144 6.893425 +v 207.110519 308.176544 7.123356 +v 206.736404 307.940308 6.600000 +v 207.365967 309.026093 6.600000 +v 207.044296 307.958069 6.893425 +v 206.742981 308.016144 6.306575 +v 207.022232 307.885223 6.600000 +v 206.762726 308.243591 6.076644 +v 207.044296 307.958069 6.306575 +v 206.787918 308.533844 6.000000 +v 207.110519 308.176544 6.076644 +v 206.813110 308.824127 6.076644 +v 207.195007 308.455383 6.000000 +v 206.832855 309.051575 6.306575 +v 207.279510 308.734222 6.076644 +v 207.345718 308.952728 6.306575 +v 189.428589 306.029968 6.230577 +v 189.456390 305.939514 6.402468 +v 189.439636 305.937500 6.402468 +v 189.456879 305.935486 6.785395 +v 189.517776 305.971069 6.856662 +v 189.453537 305.963379 6.856662 +v 189.445343 306.031952 6.230577 +v 189.521118 305.943146 6.785395 +v 189.495438 306.158051 6.114590 +v 189.554550 306.045013 6.230577 +v 189.509583 306.039642 6.230577 +v 189.440109 305.933472 6.785395 +v 189.436783 305.961395 6.856662 +v 189.053894 306.105316 7.085410 +v 189.012360 306.100342 7.085410 +v 189.431198 306.150391 6.114590 +v 189.414444 306.148376 7.085410 +v 189.397934 306.286621 7.161123 +v 189.414444 306.148376 6.114590 +v 189.079559 305.890411 6.414605 +v 189.440109 305.933472 6.414605 +v 189.443573 305.904541 6.600000 +v 189.621857 305.925812 6.600000 +v 189.670380 305.931610 6.600000 +v 189.618408 305.954773 6.785395 +v 189.083023 305.861450 6.600000 +v 189.058563 306.066254 7.053997 +v 189.419113 306.109314 7.053997 +v 189.012360 305.882385 6.414590 +v 189.079086 305.894440 6.402468 +v 189.569534 305.919586 6.600000 +v 189.566071 305.948517 6.785395 +v 189.426773 306.187439 6.089397 +v 189.524567 305.914215 6.600000 +v 189.410019 306.185425 6.089397 +v 189.392441 306.332611 6.023362 +v 189.666931 305.960571 6.414605 +v 189.068039 305.986877 6.230577 +v 189.012360 306.100342 6.114590 +v 189.666443 305.964600 6.402468 +v 189.053894 306.105316 6.114590 +v 189.460327 305.906525 6.600000 +v 189.049469 306.142365 6.089397 +v 189.031891 306.289551 6.023362 +v 189.618408 305.954773 6.414605 +v 189.414688 306.288605 7.161123 +v 189.617920 305.958801 6.402468 +v 189.495438 306.158051 7.085410 +v 189.566071 305.948517 6.414605 +v 189.565598 305.952545 6.402468 +v 189.500107 306.118988 7.053997 +v 189.431198 306.150391 7.085410 +v 189.076233 305.918335 6.856662 +v 189.012360 305.882385 6.785410 +v 189.435867 306.111328 7.053997 +v 189.521118 305.943146 6.414605 +v 189.615067 305.982697 6.856662 +v 189.520630 305.947174 6.402468 +v 189.079559 305.890411 6.785395 +v 189.562744 305.976440 6.856662 +v 189.456879 305.935486 6.414605 +v -240.987640 323.891815 15.100000 +v -240.987640 304.891815 15.100000 +v -240.487640 304.891815 14.966025 +v -240.487640 323.891815 14.966025 +v -240.121613 304.891815 14.600000 +v -240.121613 323.891815 14.600000 +v -239.987640 304.891815 14.100000 +v -239.987640 323.891815 14.100000 +v -241.639206 309.176910 14.355808 +v -241.593857 304.891815 14.450000 +v -241.687637 304.891815 14.100000 +v -241.687637 310.325409 14.100000 +v -241.653320 318.502716 14.316487 +v -241.644882 310.269836 14.340892 +v -241.687637 323.891815 14.100000 +v -241.659149 319.628113 14.297517 +v -241.687637 319.658203 14.100000 +v -241.520889 309.312561 14.553389 +v -241.337646 304.891815 14.706218 +v -241.593857 323.891815 14.450000 +v -241.406479 309.478668 14.660864 +v -241.348190 309.684875 14.700000 +v -241.401627 309.894684 14.664463 +v -241.371002 318.965759 14.685694 +v -241.425018 318.841949 14.646523 +v -241.348190 319.098724 14.700000 +v -240.987640 304.891815 14.800000 +v -241.384476 319.260193 14.676639 +v -241.337646 323.891815 14.706218 +v -241.466293 319.399689 14.610527 +v -240.987640 323.891815 14.800000 +v -241.582153 319.543488 14.469361 +v -241.687637 318.458191 14.100000 +v -241.566071 318.620392 14.494125 +v -241.541626 310.128571 14.527892 +v -241.687637 309.125397 14.100000 +v -240.287643 323.891815 14.100000 +v -240.381424 323.891815 13.750000 +v -240.287643 304.891815 14.100000 +v -240.381424 304.891815 13.750000 +v -240.637634 323.891815 13.493782 +v -240.637634 304.891815 13.493782 +v -240.987640 323.891815 13.400000 +v -240.987640 304.891815 13.400000 +v -241.325150 318.581879 6.300000 +v -241.400909 318.640076 6.205833 +v -241.333069 318.648163 6.205833 +v -241.392990 318.573761 6.300000 +v -241.312866 318.802948 7.119615 +v -241.336777 318.679291 7.027692 +v -241.298645 318.683838 7.027692 +v -241.388275 318.534363 6.383511 +v -241.525452 318.517975 6.383511 +v -241.530151 318.557373 6.300000 +v -241.351013 318.798401 7.119615 +v -241.362335 318.893280 7.164342 +v -241.348190 319.098724 7.200000 +v -241.401779 318.888580 7.164345 +v -241.022964 318.837585 6.080385 +v -241.029144 318.889252 6.053473 +v -240.987640 318.841797 6.080385 +v -241.312866 318.802948 6.080385 +v -241.319031 318.854614 6.053473 +v -241.324203 318.897827 7.164342 +v -241.008743 318.718475 7.027692 +v -240.987640 318.622192 6.900000 +v -240.987640 318.841797 7.119615 +v -240.997101 318.621063 6.900000 +v -241.287003 318.586426 6.300000 +v -241.294922 318.652740 6.205833 +v -241.287003 318.586426 6.900000 +v -241.022964 318.837585 7.119615 +v -241.548691 318.474792 6.600000 +v -241.639114 318.463989 6.600000 +v -241.643875 318.503845 6.383511 +v -241.553436 318.514648 6.383511 +v -241.034302 318.932465 7.164342 +v -240.987640 319.141815 7.200000 +v -241.320435 318.542480 6.383511 +v -241.520691 318.478119 6.600000 +v -241.282303 318.547028 6.383511 +v -241.005020 318.687347 6.205833 +v -240.987640 318.622192 6.300000 +v -241.383514 318.494507 6.600000 +v -241.315674 318.502625 6.600000 +v -240.997101 318.621063 6.300000 +v -241.554611 318.524384 6.840475 +v -241.332855 318.970337 6.014307 +v -241.348190 319.098724 6.000000 +v -240.987640 319.141815 6.000000 +v -241.645035 318.513580 6.840475 +v -241.371002 318.965759 6.014307 +v -241.277542 318.507172 6.600000 +v -241.357178 318.850067 6.053473 +v -241.425018 318.841949 6.053477 +v -241.526611 318.527710 6.840475 +v -241.558151 318.554047 6.900000 +v -241.541779 318.654816 7.027701 +v -241.538071 318.623688 6.205833 +v -241.566071 318.620392 6.205875 +v -240.992401 318.581635 6.383511 +v -240.987640 318.541809 6.600000 +v -241.351013 318.798401 6.080385 +v -241.530151 318.557373 6.900000 +v -241.389435 318.544098 6.840475 +v -241.558151 318.554047 6.300000 +v -241.653320 318.502716 6.383513 +v -241.392990 318.573761 6.900000 +v -241.321594 318.552216 6.840475 +v -241.283463 318.556763 6.840475 +v -241.325150 318.581879 6.900000 +v -241.404617 318.671173 7.027692 +v -241.418854 318.790283 7.119615 +v -241.687637 318.458191 6.600000 +v -259.691315 317.036560 6.080385 +v -264.991791 320.269531 6.000000 +v -259.548584 317.298035 6.000000 +v -265.134521 320.008057 6.080385 +v -259.795807 316.845154 6.300000 +v -265.239014 319.816681 6.300000 +v -259.834045 316.775116 6.600000 +v -265.239014 319.816681 6.900000 +v -265.277252 319.746613 6.600000 +v -259.795807 316.845154 6.900000 +v -265.134521 320.008057 7.119615 +v -259.691315 317.036560 7.119615 +v -264.991791 320.269531 7.200000 +v -259.548584 317.298035 7.200000 +v -264.991791 308.514069 6.000000 +v -259.691315 311.747040 6.080385 +v -259.548584 311.485565 6.000000 +v -265.134521 308.775543 6.080385 +v -259.795807 311.938446 6.300000 +v -265.239014 308.966919 6.300000 +v -259.834045 312.008484 6.600000 +v -265.277252 309.036987 6.600000 +v -265.239014 308.966919 6.900000 +v -259.795807 311.938446 6.900000 +v -265.134521 308.775543 7.119615 +v -259.691315 311.747040 7.119615 +v -264.991791 308.514069 7.200000 +v -259.548584 311.485565 7.200000 +v -241.383240 310.289062 6.600000 +v -241.321548 310.231201 6.359108 +v -241.389191 310.239288 6.359108 +v -241.315598 310.280975 6.600000 +v -241.282318 310.236420 6.816865 +v -240.926453 310.154114 6.900000 +v -240.916977 310.233368 6.600000 +v -241.277542 310.276428 6.600000 +v -241.520493 310.305450 6.600000 +v -241.526443 310.255676 6.359108 +v -241.320374 310.240967 6.816865 +v -241.548416 310.308777 6.600000 +v -241.554367 310.259003 6.359108 +v -241.286560 310.200867 6.893425 +v -241.388016 310.249054 6.816865 +v -241.324631 310.205414 6.893425 +v -241.638947 310.319580 6.600000 +v -241.644882 310.269836 6.359108 +v -241.687637 310.325409 6.600000 +v -241.653198 310.280731 6.816864 +v -241.392273 310.213501 6.893425 +v -241.294952 310.130554 6.994519 +v -240.952316 309.937592 7.119615 +v -241.333023 310.135101 6.994519 +v -241.525269 310.265442 6.816865 +v -241.324234 309.885437 6.035541 +v -240.987640 309.641815 6.000000 +v -241.348190 309.684875 6.000000 +v -240.952316 309.937592 6.080385 +v -241.553192 310.268799 6.816865 +v -241.362305 309.889984 6.035541 +v -241.401627 309.894684 6.035537 +v -241.400665 310.143188 6.994519 +v -241.313644 309.974152 6.076644 +v -241.351715 309.978699 6.076644 +v -241.541626 310.128571 6.172108 +v -241.529526 310.229889 6.893425 +v -241.557449 310.233215 6.893425 +v -241.565842 310.162872 6.994485 +v -241.298660 310.099548 6.172099 +v -240.926453 310.154114 6.300000 +v -241.643723 310.279602 6.816865 +v -241.336731 310.104095 6.172099 +v -241.313644 309.974152 7.123356 +v -241.404373 310.112183 6.172099 +v -241.351715 309.978699 7.123356 +v -241.286560 310.200867 6.306575 +v -241.537918 310.159576 6.994519 +v -241.324631 310.205414 6.306575 +v -241.319092 309.928589 7.146710 +v -241.283478 310.226654 6.359108 +v -241.357147 309.933136 7.146710 +v -241.424789 309.941223 7.146708 +v -241.370941 309.817657 7.185730 +v -241.419342 309.986786 7.123356 +v -241.332870 309.813110 7.185730 +v -241.348190 309.684875 7.200000 +v -241.392273 310.213501 6.306575 +v -240.987640 309.641815 7.200000 +v -241.529526 310.229889 6.306575 +v -241.557449 310.233215 6.306575 +v -241.981644 318.433044 6.708046 +v -258.291870 316.555298 6.900000 +v -258.282410 316.476044 6.600000 +v -242.018738 318.743591 6.066753 +v -258.353058 317.067596 6.000000 +v -241.787643 319.046234 6.000000 +v -241.833588 318.765747 6.066793 +v -258.317719 316.771820 6.080385 +v -242.016571 318.725464 6.076644 +v -241.921234 318.549072 6.241836 +v -241.994446 318.540222 6.241759 +v -258.291870 316.555298 6.300000 +v -241.989487 318.498779 6.306575 +v -241.979736 318.436493 6.475753 +v -241.981995 318.436035 6.475718 +v -241.980469 318.423218 6.600000 +v -241.989487 318.498779 6.893425 +v -241.933487 318.524231 6.924382 +v -241.991684 318.517151 6.924455 +v -242.009354 318.665161 7.083996 +v -241.862686 318.682739 7.083914 +v -258.317719 316.771820 7.119615 +v -242.028946 318.829102 7.169681 +v -241.809570 318.855316 7.169634 +v -241.787643 319.046234 7.200000 +v -258.353058 317.067596 7.200000 +v -258.282410 312.307556 6.600000 +v -241.981628 310.350525 6.491891 +v -258.291870 312.228302 6.300000 +v -242.028961 309.954346 6.030272 +v -241.787643 309.737366 6.000000 +v -258.353058 311.716003 6.000000 +v -258.317719 312.011780 6.080385 +v -241.862610 310.100677 6.115958 +v -241.809540 309.928131 6.030322 +v -242.009369 310.118286 6.115873 +v -241.933426 310.259216 6.275412 +v -241.991699 310.266296 6.275339 +v -241.989487 310.284821 6.306575 +v -241.981995 310.347534 6.724360 +v -258.291870 312.228302 6.900000 +v -241.979736 310.347107 6.724326 +v -241.989487 310.284821 6.893425 +v -241.921158 310.234375 6.958350 +v -241.994446 310.243225 6.958423 +v -258.317719 312.011780 7.119615 +v -242.016556 310.058136 7.123356 +v -241.833527 310.017670 7.133314 +v -242.018753 310.039795 7.133351 +v -258.353058 311.716003 7.200000 +v -241.787643 309.737366 7.200000 +v -240.399857 304.891815 5.790983 +v -240.987640 304.891815 5.600000 +v -240.987640 323.891815 5.600000 +v -240.399857 323.891815 5.790983 +v -240.036591 304.891815 6.290983 +v -240.036591 323.891815 6.290983 +v -240.036591 304.891815 6.909017 +v -240.036591 323.891815 6.909017 +v -240.399857 304.891815 7.409017 +v -240.399857 323.891815 7.409017 +v -240.987640 304.891815 7.600000 +v -240.987640 323.891815 7.600000 +v -241.687637 319.658203 6.600000 +v -241.659149 319.628113 6.402483 +v -241.687637 323.891815 6.600000 +v -241.553955 323.891815 6.188550 +v -241.582153 319.543488 6.230639 +v -241.466293 319.399689 6.089473 +v -241.384476 319.260193 6.023361 +v -241.687637 304.891815 6.600000 +v -241.553955 304.891815 6.188550 +v -241.639206 309.176910 6.344192 +v -241.203949 323.891815 5.934260 +v -241.406479 309.478668 6.039136 +v -241.520889 309.312561 6.146612 +v -241.203949 304.891815 5.934260 +v -240.771332 304.891815 5.934260 +v -240.771332 323.891815 5.934260 +v -240.421326 304.891815 6.188550 +v -240.421326 323.891815 6.188550 +v -240.287643 304.891815 6.600000 +v -240.287643 323.891815 6.600000 +v -241.687637 309.125397 6.600000 +v -241.418228 319.405457 14.610602 +v -241.496399 319.651672 13.914605 +v -241.444977 319.629517 13.843338 +v -241.493057 319.623749 13.843338 +v -241.385300 319.409393 14.610602 +v -241.448318 319.657410 13.914605 +v -241.389725 319.446442 14.585410 +v -241.422653 319.442505 14.585410 +v -241.590347 319.612152 13.843338 +v -241.520355 319.470428 13.646041 +v -241.638870 319.606323 13.843349 +v -241.538025 319.618378 13.843338 +v -241.470718 319.436768 14.585410 +v -241.436798 319.560944 14.469422 +v -241.484863 319.555206 14.469422 +v -241.529831 319.549835 14.469422 +v -241.541351 319.646301 13.914605 +v -241.367722 319.262207 14.676638 +v -240.987640 319.141815 14.700000 +v -241.593689 319.640045 13.914605 +v -241.007172 319.305267 14.676638 +v -241.024750 319.452454 14.610602 +v -241.418854 319.690308 14.100000 +v -241.058304 319.733368 14.100000 +v -241.054840 319.704407 13.914605 +v -241.415390 319.661346 13.914605 +v -241.451767 319.686371 14.100000 +v -241.043320 319.607941 14.469422 +v -240.987640 319.494476 14.585410 +v -240.987640 319.712433 14.285410 +v -241.054367 319.700378 14.297532 +v -241.499847 319.680634 14.100000 +v -241.544815 319.675262 14.100000 +v -241.597137 319.669006 14.100000 +v -241.029175 319.489502 14.585410 +v -241.415390 319.661346 14.285396 +v -241.054840 319.704407 14.285396 +v -241.029175 319.489502 13.614590 +v -240.987640 319.494476 13.614590 +v -240.987640 319.141815 13.500000 +v -241.414917 319.657318 14.297532 +v -241.033844 319.528564 13.646003 +v -241.448318 319.657410 14.285396 +v -241.373215 319.308197 13.538877 +v -241.348190 319.098724 13.500000 +v -241.406128 319.304291 13.538877 +v -241.051514 319.676514 13.843338 +v -240.987640 319.712433 13.914590 +v -241.447830 319.653381 14.297532 +v -241.663086 319.661133 14.100000 +v -241.496399 319.651672 14.285396 +v -241.389725 319.446442 13.614590 +v -241.422653 319.442505 13.614590 +v -241.495911 319.647644 14.297532 +v -241.541351 319.646301 14.285396 +v -241.394394 319.485504 13.646003 +v -241.427307 319.481567 13.646003 +v -241.540878 319.642273 14.297532 +v -241.593689 319.640045 14.285396 +v -241.475388 319.475830 13.646003 +v -241.593201 319.636017 14.297532 +v -241.412064 319.633423 13.843338 +v -241.403870 319.564880 14.469422 +v -241.659637 319.632172 14.285396 +v -262.565521 319.537048 13.806575 +v -261.586273 318.742371 13.576644 +v -262.674896 319.336670 13.576644 +v -262.529053 319.603851 14.100000 +v -261.476868 318.942749 13.806575 +v -261.440399 319.009552 14.100000 +v -262.565521 319.537048 14.393425 +v -261.476868 318.942749 14.393425 +v -263.763550 319.930969 13.576644 +v -264.849060 320.530975 13.580385 +v -264.744568 320.722382 13.800000 +v -264.991791 320.269531 13.500000 +v -262.674896 319.336670 14.623356 +v -264.991791 320.269531 14.700000 +v -261.586273 318.742371 14.623356 +v -263.654144 320.131348 13.806575 +v -263.617676 320.198151 14.100000 +v -264.706329 320.792450 14.100000 +v -263.654144 320.131348 14.393425 +v -264.744568 320.722382 14.400000 +v -263.763550 319.930969 14.623356 +v -264.849060 320.530975 14.619616 +v -260.497620 318.148041 13.576644 +v -259.405853 317.559479 13.580385 +v -259.548584 317.298035 13.500000 +v -260.388214 318.348450 13.806575 +v -259.301361 317.750885 13.800000 +v -260.351776 318.415253 14.100000 +v -259.263123 317.820953 14.100000 +v -260.388214 318.348450 14.393425 +v -259.301361 317.750885 14.400000 +v -260.497620 318.148041 14.623356 +v -259.548584 317.298035 14.700000 +v -259.405853 317.559479 14.619616 +v -261.476868 309.840851 13.806575 +v -262.565521 309.246552 13.806575 +v -262.674896 309.446930 13.576644 +v -261.586273 310.041229 13.576644 +v -261.440399 309.774048 14.100000 +v -262.529053 309.179749 14.100000 +v -261.476868 309.840851 14.393425 +v -262.565521 309.246552 14.393425 +v -260.497620 310.635559 13.576644 +v -259.548584 311.485565 13.500000 +v -259.405853 311.224121 13.580385 +v -261.586273 310.041229 14.623356 +v -259.548584 311.485565 14.700000 +v -264.991791 308.514069 14.700000 +v -262.674896 309.446930 14.623356 +v -260.388214 310.435150 13.806575 +v -259.301361 311.032715 13.800000 +v -260.351776 310.368347 14.100000 +v -259.263123 310.962646 14.100000 +v -260.388214 310.435150 14.393425 +v -259.301361 311.032715 14.400000 +v -260.497620 310.635559 14.623356 +v -259.405853 311.224121 14.619616 +v -263.763550 308.852631 13.576644 +v -264.849060 308.252625 13.580385 +v -264.991791 308.514069 13.500000 +v -263.654144 308.652252 13.806575 +v -264.744568 308.061218 13.800000 +v -263.617676 308.585449 14.100000 +v -264.706329 307.991150 14.100000 +v -263.654144 308.652252 14.393425 +v -264.744568 308.061218 14.400000 +v -263.763550 308.852631 14.623356 +v -264.849060 308.252625 14.619616 +v -241.496445 309.135803 13.903131 +v -241.536240 309.183960 13.806575 +v -241.491333 309.178619 13.806575 +v -241.541351 309.141144 13.903131 +v -241.448135 309.130005 13.903131 +v -241.443008 309.172821 13.806575 +v -241.645950 309.120422 14.100000 +v -241.659317 309.155304 13.903152 +v -241.642044 309.153168 13.903131 +v -241.414948 309.126068 13.903131 +v -241.048828 309.129486 13.800000 +v -241.058304 309.050232 14.100000 +v -241.409836 309.168884 13.806575 +v -241.597565 309.114655 14.100000 +v -241.593643 309.147400 13.903131 +v -241.545273 309.108398 14.100000 +v -241.500351 309.103027 14.100000 +v -241.452042 309.097260 14.100000 +v -241.418854 309.093292 14.100000 +v -241.590820 309.171112 14.355814 +v -241.588531 309.190216 14.393425 +v -241.538528 309.164856 14.355814 +v -241.367783 309.520935 13.523499 +v -241.384674 309.522949 13.523499 +v -241.348190 309.684875 13.500000 +v -240.987640 309.641815 13.500000 +v -241.536240 309.183960 14.393425 +v -241.022964 309.346008 13.580385 +v -241.415939 309.399536 13.576644 +v -241.466904 309.383057 13.590053 +v -241.493607 309.159515 14.355814 +v -241.491333 309.178619 14.393425 +v -241.418594 309.377258 13.589972 +v -241.382751 309.395569 13.576644 +v -241.445297 309.153717 14.355814 +v -241.385406 309.373291 13.589972 +v -241.412109 309.149780 14.355814 +v -241.530365 309.233185 13.731399 +v -241.582642 309.239532 13.731475 +v -241.048828 309.129486 14.400000 +v -241.588531 309.190216 13.806575 +v -241.443008 309.172821 14.393425 +v -241.409836 309.168884 14.393425 +v -241.485443 309.227844 13.731399 +v -241.475967 309.307190 14.553418 +v -241.427658 309.301392 14.553418 +v -241.437134 309.222076 13.731399 +v -241.394470 309.297455 14.553418 +v -241.022964 309.346008 14.619616 +v -241.403946 309.218109 13.731399 +v -241.415939 309.399536 14.623356 +v -241.382751 309.395569 14.623356 +v -241.373291 309.474731 14.660865 +v -240.987640 309.641815 14.700000 +v -258.414246 317.579895 14.400000 +v -241.984756 319.617950 14.174391 +v -258.423737 317.659149 14.100000 +v -241.943954 319.276367 13.554011 +v -241.825439 319.290527 13.554020 +v -241.787643 319.046234 13.500000 +v -258.353058 317.067596 13.500000 +v -258.388397 317.363373 13.580385 +v -241.949219 319.320374 13.576644 +v -241.905121 319.481415 13.702272 +v -241.967560 319.473969 13.702260 +v -258.414246 317.579895 13.800000 +v -241.976288 319.547058 13.806575 +v -241.971786 319.597473 13.923075 +v -241.982178 319.596313 13.923051 +v -241.985321 319.622620 14.100000 +v -241.976288 319.547058 14.393425 +v -241.936417 319.538544 14.415712 +v -241.974747 319.534088 14.415784 +v -241.954666 319.366028 14.594552 +v -241.856766 319.377625 14.594424 +v -258.388397 317.363373 14.619616 +v -241.935516 319.205627 14.673286 +v -258.353058 317.067596 14.700000 +v -241.787643 319.046234 14.700000 +v -241.807114 319.220917 14.673194 +v -241.984756 309.165649 14.025676 +v -258.423737 311.124451 14.100000 +v -258.414246 311.203705 13.800000 +v -241.935547 309.577728 13.526790 +v -258.388397 311.420227 13.580385 +v -258.353058 311.716003 13.500000 +v -241.787643 309.737366 13.500000 +v -241.807159 309.562439 13.526872 +v -241.856918 309.405609 13.605830 +v -241.954712 309.417206 13.605706 +v -241.936539 309.244843 13.784675 +v -241.974777 309.249298 13.784606 +v -241.976303 309.236542 13.806575 +v -241.982193 309.187195 14.276701 +v -258.414246 311.203705 14.400000 +v -241.971832 309.186066 14.276674 +v -241.976303 309.236542 14.393425 +v -241.905212 309.302032 14.497499 +v -241.967590 309.309448 14.497529 +v -258.388397 311.420227 14.619616 +v -241.949219 309.463226 14.623356 +v -241.825546 309.492737 14.645810 +v -241.944000 309.506897 14.645824 +v -241.787643 309.737366 14.700000 +v -258.353058 311.716003 14.700000 +v -241.909592 323.891815 14.487298 +v -241.969864 323.891815 13.912271 +v -241.833588 318.765747 14.633206 +v -241.862610 310.100677 14.584043 +v -241.809540 309.928131 14.669678 +v -241.701782 304.891815 13.400000 +v -241.541138 304.891815 14.932856 +v -241.909592 304.891815 14.487298 +v -241.701782 323.891815 13.400000 +v -241.541138 323.891815 14.932856 +v -241.809570 318.855316 13.530366 +v -241.833527 310.017670 13.566686 +v -241.921234 318.549072 14.458164 +v -241.979736 318.436493 14.224247 +v -241.933426 310.259216 14.424587 +v -241.981644 318.433044 13.991954 +v -241.981628 310.350525 14.208109 +v -241.933487 318.524231 13.775618 +v -241.979736 310.347107 13.975675 +v -241.969864 304.891815 13.912271 +v -241.862686 318.682739 13.616086 +v -241.921158 310.234375 13.741650 +v -241.337646 304.891815 13.493782 +v -241.370941 309.817657 13.514271 +v -241.401779 318.888580 13.535655 +v -241.424789 309.941223 13.553291 +v -241.593857 304.891815 13.750000 +v -241.337646 323.891815 13.493782 +v -241.593857 323.891815 13.750000 +v -241.645035 318.513580 13.859525 +v -241.653198 310.280731 13.883136 +v -241.565842 310.162872 13.705515 +v -241.541779 318.654816 13.672299 +v -240.637634 323.891815 14.706218 +v -240.637634 304.891815 14.706218 +v -240.381424 323.891815 14.450000 +v -240.381424 304.891815 14.450000 +v -240.121613 323.891815 13.600000 +v -240.121613 304.891815 13.600000 +v -240.487640 323.891815 13.233974 +v -240.487640 304.891815 13.233974 +v -240.987640 323.891815 13.100000 +v -240.987640 304.891815 13.100000 +v -251.220657 323.891815 13.150000 +v -251.287643 304.891815 12.900000 +v -251.220657 304.891815 13.150000 +v -251.287643 323.891815 12.900000 +v -251.037643 323.891815 13.333013 +v -251.037643 304.891815 13.333013 +v -250.787643 323.891815 13.400000 +v -250.787643 304.891815 13.400000 +v -250.987640 323.891815 12.900000 +v -250.960846 323.891815 13.000000 +v -250.987640 304.891815 12.900000 +v -250.960846 304.891815 13.000000 +v -250.887634 323.891815 13.073205 +v -250.887634 304.891815 13.073205 +v -250.787643 323.891815 13.100000 +v -250.787643 304.891815 13.100000 +v -258.282410 312.307556 14.100000 +v -258.291870 312.228302 14.400000 +v -242.028961 309.954346 14.669727 +v -258.317719 312.011780 14.619616 +v -242.009369 310.118286 14.584126 +v -241.991699 310.266296 14.424661 +v -241.989487 310.284821 14.393425 +v -241.981995 310.347534 13.975640 +v -258.291870 312.228302 13.800000 +v -241.989487 310.284821 13.806575 +v -241.994446 310.243225 13.741577 +v -258.317719 312.011780 13.580385 +v -242.016556 310.058136 13.576644 +v -242.018753 310.039795 13.566649 +v -258.291870 316.555298 13.800000 +v -258.282410 316.476044 14.100000 +v -242.018738 318.743591 14.633246 +v -258.317719 316.771820 14.619616 +v -242.016571 318.725464 14.623356 +v -241.994446 318.540222 14.458241 +v -258.291870 316.555298 14.400000 +v -241.989487 318.498779 14.393425 +v -241.981995 318.436035 14.224281 +v -241.980469 318.423218 14.100000 +v -241.989487 318.498779 13.806575 +v -241.991684 318.517151 13.775545 +v -242.009354 318.665161 13.616004 +v -258.317719 316.771820 13.580385 +v -242.028946 318.829102 13.530319 +v -241.321548 310.231201 14.340892 +v -241.389191 310.239288 14.340892 +v -241.392273 310.213501 14.393425 +v -241.324631 310.205414 14.393425 +v -241.548416 310.308777 14.100000 +v -241.554367 310.259003 14.340892 +v -241.638947 310.319580 14.100000 +v -241.283478 310.226654 14.340892 +v -240.926453 310.154114 14.400000 +v -240.916977 310.233368 14.100000 +v -241.286560 310.200867 14.393425 +v -241.520493 310.305450 14.100000 +v -241.526443 310.255676 14.340892 +v -241.643723 310.279602 13.883135 +v -241.383240 310.289062 14.100000 +v -241.553192 310.268799 13.883135 +v -241.315598 310.280975 14.100000 +v -241.525269 310.265442 13.883135 +v -241.277542 310.276428 14.100000 +v -241.557449 310.233215 13.806575 +v -241.529526 310.229889 13.806575 +v -241.362305 309.889984 14.664459 +v -241.388016 310.249054 13.883135 +v -241.419342 309.986786 14.623356 +v -241.537918 310.159576 13.705482 +v -241.324234 309.885437 14.664459 +v -240.952316 309.937592 14.619616 +v -241.320374 310.240967 13.883135 +v -241.351715 309.978699 14.623356 +v -241.392273 310.213501 13.806575 +v -241.313644 309.974152 14.623356 +v -241.282318 310.236420 13.883135 +v -241.557449 310.233215 14.393425 +v -240.926453 310.154114 13.800000 +v -241.404373 310.112183 14.527901 +v -241.324631 310.205414 13.806575 +v -241.286560 310.200867 13.806575 +v -241.529526 310.229889 14.393425 +v -241.400665 310.143188 13.705482 +v -241.333023 310.135101 13.705482 +v -241.336731 310.104095 14.527901 +v -241.294952 310.130554 13.705482 +v -240.952316 309.937592 13.580385 +v -241.419342 309.986786 13.576644 +v -241.298660 310.099548 14.527901 +v -241.351715 309.978699 13.576644 +v -241.313644 309.974152 13.576644 +v -241.357147 309.933136 13.553290 +v -241.319092 309.928589 13.553290 +v -241.332870 309.813110 13.514270 +v -258.788391 312.012878 13.576644 +v -259.254791 311.923004 13.576644 +v -259.321014 312.141479 13.806575 +v -258.808136 312.240356 13.806575 +v -259.085785 311.365326 13.576644 +v -259.341248 312.214874 14.100000 +v -259.795807 311.938446 13.800000 +v -259.834045 312.008484 14.100000 +v -259.170288 311.644165 13.500000 +v -258.763214 311.722626 13.500000 +v -259.019592 311.146851 13.806575 +v -258.738007 311.432373 13.576644 +v -258.997528 311.074005 14.100000 +v -258.816620 312.316010 14.100000 +v -258.718262 311.204926 13.806575 +v -259.019592 311.146851 14.393425 +v -258.711700 311.129089 14.100000 +v -259.085785 311.365326 14.623356 +v -258.718262 311.204926 14.393425 +v -259.170288 311.644165 14.700000 +v -258.738007 311.432373 14.623356 +v -259.254791 311.923004 14.623356 +v -259.691315 311.747040 14.619616 +v -258.763214 311.722626 14.700000 +v -259.321014 312.141479 14.393425 +v -259.795807 311.938446 14.400000 +v -258.788391 312.012878 14.623356 +v -258.808136 312.240356 14.393425 +v -259.691315 311.747040 13.580385 +v -262.011322 310.819885 14.100000 +v -263.063507 310.158783 14.393425 +v -261.974884 310.753082 14.393425 +v -263.099976 310.225586 14.100000 +v -261.974884 310.753082 13.806575 +v -263.063507 310.158783 13.806575 +v -260.776825 311.147003 14.623356 +v -261.865479 310.552704 14.623356 +v -261.865479 310.552704 13.576644 +v -262.954102 309.958405 13.576644 +v -260.886230 311.347382 14.393425 +v -260.922699 311.414185 14.100000 +v -260.886230 311.347382 13.806575 +v -260.776825 311.147003 13.576644 +v -264.042755 309.364105 14.623356 +v -265.134521 308.775543 14.619616 +v -264.152161 309.564484 14.393425 +v -265.239014 308.966919 14.400000 +v -264.188629 309.631287 14.100000 +v -265.239014 308.966919 13.800000 +v -265.277252 309.036987 14.100000 +v -264.152161 309.564484 13.806575 +v -265.134521 308.775543 13.580385 +v -262.954102 309.958405 14.623356 +v -264.042755 309.364105 13.576644 +v -265.809753 308.769379 13.576644 +v -266.014221 309.028809 13.611998 +v -265.785309 308.814240 13.609021 +v -265.446045 307.872345 14.393425 +v -265.445038 307.810333 14.229738 +v -266.227112 308.002594 14.229738 +v -265.463318 308.925476 13.833200 +v -265.660461 309.034729 14.100000 +v -265.468567 308.987579 14.100000 +v -266.197479 308.057037 14.393425 +v -265.693909 308.982178 13.833200 +v -266.047394 308.332764 14.663078 +v -266.480927 308.716980 14.659701 +v -266.088318 308.257568 14.623356 +v -265.463074 308.911530 13.806575 +v -265.700592 308.969910 13.806575 +v -265.447174 307.941620 14.492763 +v -266.164337 308.117889 14.492763 +v -265.949036 308.513489 14.700000 +v -266.244965 308.874634 14.695951 +v -265.913361 308.579010 13.504723 +v -266.235229 308.881134 13.505548 +v -265.949036 308.513489 13.500000 +v -266.471710 308.723145 13.536122 +v -265.460175 308.734344 13.609021 +v -265.918640 308.569305 14.696576 +v -265.449799 308.100616 14.623356 +v -265.459351 308.683258 13.576644 +v -265.451202 308.186188 14.663078 +v -266.042053 308.342560 13.532908 +v -266.088318 308.257568 13.576644 +v -266.669189 308.591187 13.696676 +v -265.809753 308.769379 14.623356 +v -266.022278 309.023438 14.594828 +v -265.455780 308.466522 13.504723 +v -265.790192 308.805298 14.598025 +v -265.454559 308.391937 14.700000 +v -265.454559 308.391937 13.500000 +v -265.455597 308.455475 14.696576 +v -266.160400 308.125153 13.697845 +v -265.700592 308.969910 14.393425 +v -265.864166 309.129089 14.379644 +v -265.451385 308.197357 13.532908 +v -265.695221 308.979767 14.372265 +v -265.807068 309.167236 14.100000 +v -266.197479 308.057037 13.806575 +v -266.782104 308.515747 13.950198 +v -265.459351 308.683258 14.623356 +v -265.449799 308.100616 13.576644 +v -265.460022 308.724152 14.598025 +v -265.463074 308.911530 14.393425 +v -266.225861 308.004883 13.958963 +v -265.447327 307.949860 13.697845 +v -265.463257 308.922760 14.372265 +v -266.233856 307.990204 14.100000 +v -266.784485 308.514160 14.238252 +v -265.446045 307.872345 13.806575 +v -265.445068 307.812927 13.958963 +v -266.675720 308.586823 14.494437 +v -265.444794 307.796234 14.100000 +v -265.861908 309.130585 13.825633 +v -267.986359 316.380615 13.532908 +v -266.235229 319.902466 13.505548 +v -267.722351 316.328094 13.504723 +v -267.733185 312.453339 14.696576 +v -267.733185 316.330261 14.696576 +v -267.997314 316.382782 14.663078 +v -267.997314 312.400818 14.663078 +v -267.469635 312.505768 14.598025 +v -268.229156 316.428894 13.697845 +v -266.669189 320.192413 13.696676 +v -266.471710 320.060455 13.536122 +v -267.469635 316.277832 14.598025 +v -267.274811 312.544525 14.372265 +v -267.211182 312.557190 14.100000 +v -267.211182 316.226410 14.100000 +v -267.274811 316.239075 14.372265 +v -268.363464 316.455627 13.958963 +v -266.782104 320.267853 13.950198 +v -268.365997 316.456116 14.229738 +v -266.784485 320.269440 14.238252 +v -268.237244 316.430511 14.492763 +v -266.675720 320.196777 14.494437 +v -266.480927 320.066620 14.659701 +v -266.244965 319.908966 14.695951 +v -266.022278 319.760162 14.594828 +v -265.864166 319.654510 14.379644 +v -267.272125 312.545044 13.833200 +v -265.807068 319.616364 14.100000 +v -267.272125 316.238556 13.833200 +v -267.459656 312.507751 13.609021 +v -267.459656 316.275848 13.609021 +v -267.722351 312.455505 13.504723 +v -267.986359 312.402985 13.532908 +v -268.229156 312.354706 13.697845 +v -268.363464 312.327972 13.958963 +v -268.365997 312.327484 14.229738 +v -265.861908 319.653015 13.825633 +v -268.237244 312.353088 14.492763 +v -266.014221 319.754791 13.611998 +v -266.197479 320.726562 14.393425 +v -265.445038 320.973267 14.229738 +v -266.227112 320.781006 14.229738 +v -265.446045 320.911255 14.393425 +v -265.693909 319.801422 13.833200 +v -265.468567 319.796021 14.100000 +v -265.660461 319.748871 14.100000 +v -265.463318 319.858124 13.833200 +v -265.451202 320.597412 14.663078 +v -265.449799 320.682983 14.623356 +v -265.700592 319.813690 13.806575 +v -266.164337 320.665710 14.492763 +v -265.447174 320.841980 14.492763 +v -265.463074 319.872070 13.806575 +v -265.455780 320.317078 13.504723 +v -265.134521 320.008057 13.580385 +v -265.459351 320.100342 13.576644 +v -265.454559 320.391663 14.700000 +v -265.454559 320.391663 13.500000 +v -265.455597 320.328125 14.696576 +v -265.134521 320.008057 14.619616 +v -265.785309 319.969360 13.609021 +v -265.460175 320.049255 13.609021 +v -266.088318 320.526031 14.623356 +v -265.809753 320.014221 13.576644 +v -266.047394 320.450836 14.663078 +v -265.451385 320.586243 13.532908 +v -265.459351 320.100342 14.623356 +v -265.449799 320.682983 13.576644 +v -265.460022 320.059448 14.598025 +v -265.239014 319.816681 14.400000 +v -265.913361 320.204590 13.504723 +v -265.949036 320.270111 14.700000 +v -265.949036 320.270111 13.500000 +v -265.918640 320.214294 14.696576 +v -265.447327 320.833740 13.697845 +v -265.463074 319.872070 14.393425 +v -266.042053 320.441040 13.532908 +v -265.463257 319.860840 14.372265 +v -265.277252 319.746613 14.100000 +v -265.809753 320.014221 14.623356 +v -265.446045 320.911255 13.806575 +v -266.088318 320.526031 13.576644 +v -265.790192 319.978302 14.598025 +v -265.445068 320.970673 13.958963 +v -265.700592 319.813690 14.393425 +v -266.160400 320.658447 13.697845 +v -265.695221 319.803833 14.372265 +v -265.444794 320.987366 14.100000 +v -266.197479 320.726562 13.806575 +v -266.225861 320.778717 13.958963 +v -266.233856 320.793396 14.100000 +v -265.239014 319.816681 13.800000 +v -263.099976 318.558014 14.100000 +v -261.974884 318.030518 14.393425 +v -263.063507 318.624817 14.393425 +v -262.011322 317.963715 14.100000 +v -263.063507 318.624817 13.806575 +v -261.974884 318.030518 13.806575 +v -264.042755 319.419495 14.623356 +v -262.954102 318.825195 14.623356 +v -262.954102 318.825195 13.576644 +v -261.865479 318.230896 13.576644 +v -264.152161 319.219116 14.393425 +v -264.188629 319.152313 14.100000 +v -264.152161 319.219116 13.806575 +v -264.042755 319.419495 13.576644 +v -260.776825 317.636597 14.623356 +v -259.795807 316.845154 14.400000 +v -259.691315 317.036560 14.619616 +v -260.886230 317.436218 14.393425 +v -259.834045 316.775116 14.100000 +v -260.922699 317.369415 14.100000 +v -260.886230 317.436218 13.806575 +v -259.795807 316.845154 13.800000 +v -261.865479 318.230896 14.623356 +v -260.776825 317.636597 13.576644 +v -259.691315 317.036560 13.580385 +v -258.763214 317.060974 13.500000 +v -258.788391 316.770721 13.576644 +v -259.254791 316.860596 13.576644 +v -258.808136 316.543243 13.806575 +v -259.321014 316.642120 13.806575 +v -258.738007 317.351227 13.576644 +v -259.170288 317.139435 13.500000 +v -258.718262 317.578674 13.806575 +v -259.085785 317.418274 13.576644 +v -258.711700 317.654510 14.100000 +v -259.019592 317.636749 13.806575 +v -258.718262 317.578674 14.393425 +v -258.997528 317.709595 14.100000 +v -258.738007 317.351227 14.623356 +v -259.019592 317.636749 14.393425 +v -258.763214 317.060974 14.700000 +v -259.085785 317.418274 14.623356 +v -258.788391 316.770721 14.623356 +v -259.170288 317.139435 14.700000 +v -258.808136 316.543243 14.393425 +v -258.816620 316.467590 14.100000 +v -259.254791 316.860596 14.623356 +v -259.321014 316.642120 14.393425 +v -259.341248 316.568726 14.100000 +v -241.351013 318.798401 13.580385 +v -241.298645 318.683838 13.672307 +v -241.336777 318.679291 13.672307 +v -241.320435 318.542480 14.316489 +v -241.282303 318.547028 14.316489 +v -241.287003 318.586426 14.400000 +v -241.404617 318.671173 13.672307 +v -241.538071 318.623688 14.494167 +v -241.324203 318.897827 13.535658 +v -241.034302 318.932465 13.535658 +v -241.022964 318.837585 13.580385 +v -241.400909 318.640076 14.494167 +v -241.312866 318.802948 13.580385 +v -241.362335 318.893280 13.535658 +v -241.388275 318.534363 14.316489 +v -241.325150 318.581879 14.400000 +v -241.392990 318.573761 14.400000 +v -241.530151 318.557373 14.400000 +v -241.558151 318.554047 14.400000 +v -241.277542 318.507172 14.100000 +v -240.987640 318.541809 14.100000 +v -240.992401 318.581635 14.316489 +v -241.525452 318.517975 14.316489 +v -240.997101 318.621063 13.800000 +v -240.987640 318.622192 13.800000 +v -241.315674 318.502625 14.100000 +v -241.553436 318.514648 14.316489 +v -241.383514 318.494507 14.100000 +v -241.643875 318.503845 14.316489 +v -241.008743 318.718475 13.672307 +v -240.987640 318.841797 13.580385 +v -241.520691 318.478119 14.100000 +v -241.283463 318.556763 13.859525 +v -241.029144 318.889252 14.646526 +v -240.987640 318.841797 14.619616 +v -241.548691 318.474792 14.100000 +v -241.022964 318.837585 14.619616 +v -241.332855 318.970337 14.685694 +v -241.321594 318.552216 13.859525 +v -241.005020 318.687347 14.494167 +v -240.987640 318.622192 14.400000 +v -241.287003 318.586426 13.800000 +v -241.319031 318.854614 14.646526 +v -241.357178 318.850067 14.646526 +v -241.325150 318.581879 13.800000 +v -241.312866 318.802948 14.619616 +v -241.389435 318.544098 13.859525 +v -241.639114 318.463989 14.100000 +v -240.997101 318.621063 14.400000 +v -241.351013 318.798401 14.619616 +v -241.392990 318.573761 13.800000 +v -241.294922 318.652740 14.494167 +v -241.526611 318.527710 13.859525 +v -241.333069 318.648163 14.494167 +v -241.554611 318.524384 13.859525 +v -241.530151 318.557373 13.800000 +v -241.558151 318.554047 13.800000 +v -240.421326 304.891815 7.011450 +v -240.421326 323.891815 7.011450 +v -240.771332 304.891815 7.265739 +v -240.771332 323.891815 7.265739 +v -241.406128 319.304291 7.161123 +v -241.203949 323.891815 7.265739 +v -241.203949 304.891815 7.265739 +v -241.553955 323.891815 7.011450 +v -241.520355 319.470428 7.053959 +v -241.384674 309.522949 7.176500 +v -241.553955 304.891815 7.011450 +v -241.466904 309.383057 7.109947 +v -241.638870 319.606323 6.856652 +v -241.659317 309.155304 6.796848 +v -241.582642 309.239532 6.968525 +v -241.541138 323.891815 5.767144 +v -241.909592 323.891815 6.212702 +v -241.825439 319.290527 7.145979 +v -241.701782 323.891815 7.300000 +v -241.909592 304.891815 6.212702 +v -241.825546 309.492737 6.054190 +v -241.905121 319.481415 6.997728 +v -241.541138 304.891815 5.767144 +v -241.701782 304.891815 7.300000 +v -241.807159 309.562439 7.173129 +v -241.905212 309.302032 6.202500 +v -241.971832 309.186066 6.423326 +v -241.936539 309.244843 6.915325 +v -241.984756 309.165649 6.674325 +v -241.969864 304.891815 6.787728 +v -241.969864 323.891815 6.787728 +v -241.971786 319.597473 6.776925 +v -241.984756 319.617950 6.525609 +v -241.856766 319.377625 6.105576 +v -241.936417 319.538544 6.284288 +v -241.856918 309.405609 7.094170 +v -241.807114 319.220917 6.026806 +v -251.287643 304.891815 7.800000 +v -251.287643 323.891815 7.800000 +v -251.220657 323.891815 7.550000 +v -251.220657 304.891815 7.550000 +v -251.037643 323.891815 7.366987 +v -251.037643 304.891815 7.366987 +v -250.787643 323.891815 7.300000 +v -250.787643 304.891815 7.300000 +v -250.987640 304.891815 7.800000 +v -250.987640 323.891815 7.800000 +v -250.960846 323.891815 7.700000 +v -250.960846 304.891815 7.700000 +v -250.887634 323.891815 7.626795 +v -250.887634 304.891815 7.626795 +v -250.787643 323.891815 7.600000 +v -250.787643 304.891815 7.600000 +v -258.423737 311.124451 6.600000 +v -258.414246 311.203705 6.900000 +v -241.935547 309.577728 7.173211 +v -258.388397 311.420227 7.119615 +v -241.954712 309.417206 7.094294 +v -241.974777 309.249298 6.915394 +v -241.976303 309.236542 6.893425 +v -241.982193 309.187195 6.423299 +v -258.414246 311.203705 6.300000 +v -241.976303 309.236542 6.306575 +v -241.967590 309.309448 6.202471 +v -258.388397 311.420227 6.080385 +v -241.949219 309.463226 6.076644 +v -241.944000 309.506897 6.054175 +v -258.414246 317.579895 6.300000 +v -258.423737 317.659149 6.600000 +v -241.943954 319.276367 7.145989 +v -258.388397 317.363373 7.119615 +v -241.949219 319.320374 7.123356 +v -241.967560 319.473969 6.997740 +v -258.414246 317.579895 6.900000 +v -241.976288 319.547058 6.893425 +v -241.982178 319.596313 6.776949 +v -241.985321 319.622620 6.600000 +v -241.976288 319.547058 6.306575 +v -241.974747 319.534088 6.284216 +v -241.954666 319.366028 6.105448 +v -258.388397 317.363373 6.080385 +v -241.935516 319.205627 6.026714 +v -241.642044 309.153168 6.796869 +v -241.536240 309.183960 6.893425 +v -241.593643 309.147400 6.796869 +v -241.452042 309.097260 6.600000 +v -241.418854 309.093292 6.600000 +v -241.414948 309.126068 6.796869 +v -241.448135 309.130005 6.796869 +v -241.500351 309.103027 6.600000 +v -241.496445 309.135803 6.796869 +v -241.545273 309.108398 6.600000 +v -241.541351 309.141144 6.796869 +v -241.597565 309.114655 6.600000 +v -241.645950 309.120422 6.600000 +v -241.412109 309.149780 6.344186 +v -241.048828 309.129486 6.300000 +v -241.058304 309.050232 6.600000 +v -241.445297 309.153717 6.344186 +v -241.409836 309.168884 6.306575 +v -241.443008 309.172821 6.306575 +v -241.493607 309.159515 6.344186 +v -241.491333 309.178619 6.306575 +v -241.538528 309.164856 6.344186 +v -241.536240 309.183960 6.306575 +v -241.367783 309.520935 7.176501 +v -241.022964 309.346008 7.119615 +v -241.590820 309.171112 6.344186 +v -241.588531 309.190216 6.306575 +v -241.382751 309.395569 7.123356 +v -241.394470 309.297455 6.146582 +v -241.022964 309.346008 6.080385 +v -241.385406 309.373291 7.110027 +v -241.415939 309.399536 7.123356 +v -241.427658 309.301392 6.146582 +v -241.418594 309.377258 7.110027 +v -241.403946 309.218109 6.968601 +v -241.048828 309.129486 6.900000 +v -241.475967 309.307190 6.146582 +v -241.382751 309.395569 6.076644 +v -241.437134 309.222076 6.968601 +v -241.415939 309.399536 6.076644 +v -241.485443 309.227844 6.968601 +v -241.373291 309.474731 6.039135 +v -241.409836 309.168884 6.893425 +v -241.443008 309.172821 6.893425 +v -241.530365 309.233185 6.968601 +v -241.491333 309.178619 6.893425 +v -258.788391 312.012878 7.123356 +v -258.808136 312.240356 6.893425 +v -259.321014 312.141479 6.893425 +v -259.085785 311.365326 7.123356 +v -259.405853 311.224121 7.119615 +v -259.170288 311.644165 7.200000 +v -259.341248 312.214874 6.600000 +v -258.763214 311.722626 7.200000 +v -259.254791 311.923004 7.123356 +v -259.019592 311.146851 6.893425 +v -259.301361 311.032715 6.900000 +v -258.738007 311.432373 7.123356 +v -258.997528 311.074005 6.600000 +v -259.263123 310.962646 6.600000 +v -258.718262 311.204926 6.893425 +v -259.019592 311.146851 6.306575 +v -259.301361 311.032715 6.300000 +v -258.711700 311.129089 6.600000 +v -259.085785 311.365326 6.076644 +v -259.405853 311.224121 6.080385 +v -258.718262 311.204926 6.306575 +v -259.170288 311.644165 6.000000 +v -258.738007 311.432373 6.076644 +v -259.254791 311.923004 6.076644 +v -258.763214 311.722626 6.000000 +v -259.321014 312.141479 6.306575 +v -258.788391 312.012878 6.076644 +v -258.808136 312.240356 6.306575 +v -258.816620 312.316010 6.600000 +v -264.849060 308.252625 7.119615 +v -264.744568 308.061218 6.900000 +v -264.706329 307.991150 6.600000 +v -264.744568 308.061218 6.300000 +v -264.849060 308.252625 6.080385 +v -265.463318 308.925476 6.866801 +v -265.468567 308.987579 6.600000 +v -265.660461 309.034729 6.600000 +v -265.446045 307.872345 6.306575 +v -265.445038 307.810333 6.470262 +v -266.227112 308.002594 6.470262 +v -265.693909 308.982178 6.866801 +v -266.047394 308.332764 6.036922 +v -266.088318 308.257568 6.076644 +v -266.480927 308.716980 6.040299 +v -265.463074 308.911530 6.893425 +v -265.447174 307.941620 6.207237 +v -266.197479 308.057037 6.306575 +v -266.164337 308.117889 6.207237 +v -265.700592 308.969910 6.893425 +v -265.913361 308.579010 7.195278 +v -265.809753 308.769379 7.123356 +v -266.235229 308.881134 7.194453 +v -265.949036 308.513489 6.000000 +v -266.244965 308.874634 6.004050 +v -265.949036 308.513489 7.200000 +v -266.471710 308.723145 7.163877 +v -265.460175 308.734344 7.090979 +v -265.785309 308.814240 7.090979 +v -265.918640 308.569305 6.003424 +v -265.449799 308.100616 6.076644 +v -265.459351 308.683258 7.123356 +v -265.451202 308.186188 6.036922 +v -266.042053 308.342560 7.167092 +v -265.809753 308.769379 6.076644 +v -266.022278 309.023438 6.105172 +v -266.088318 308.257568 7.123356 +v -266.669189 308.591187 7.003324 +v -265.455780 308.466522 7.195278 +v -265.790192 308.805298 6.101975 +v -265.454559 308.391937 6.000000 +v -265.454559 308.391937 7.200000 +v -265.455597 308.455475 6.003424 +v -266.160400 308.125153 7.002154 +v -265.700592 308.969910 6.306575 +v -265.864166 309.129089 6.320356 +v -265.451385 308.197357 7.167092 +v -265.695221 308.979767 6.327735 +v -265.807068 309.167236 6.600000 +v -266.197479 308.057037 6.893425 +v -265.459351 308.683258 6.076644 +v -266.782104 308.515747 6.749801 +v -265.449799 308.100616 7.123356 +v -265.460022 308.724152 6.101975 +v -266.225861 308.004883 6.741037 +v -265.463074 308.911530 6.306575 +v -265.447327 307.949860 7.002154 +v -265.463257 308.922760 6.327735 +v -266.233856 307.990204 6.600000 +v -266.784485 308.514160 6.461748 +v -265.446045 307.872345 6.893425 +v -265.445068 307.812927 6.741037 +v -266.675720 308.586823 6.205563 +v -265.444794 307.796234 6.600000 +v -265.861908 309.130585 6.874367 +v -266.014221 309.028809 7.088002 +v -267.274811 312.544525 6.327735 +v -267.469635 312.505768 6.101975 +v -267.469635 316.277832 6.101975 +v -268.363464 316.455627 6.741037 +v -266.669189 320.192413 7.003324 +v -266.782104 320.267853 6.749801 +v -267.211182 316.226410 6.600000 +v -267.211182 312.557190 6.600000 +v -267.274811 316.239075 6.327735 +v -268.229156 316.428894 7.002154 +v -268.365997 316.456116 6.470262 +v -266.784485 320.269440 6.461748 +v -268.237244 316.430511 6.207237 +v -266.675720 320.196777 6.205563 +v -267.997314 316.382782 6.036922 +v -266.480927 320.066620 6.040299 +v -267.733185 316.330261 6.003424 +v -266.244965 319.908966 6.004050 +v -266.022278 319.760162 6.105172 +v -265.864166 319.654510 6.320356 +v -265.807068 319.616364 6.600000 +v -267.272125 312.545044 6.866801 +v -265.861908 319.653015 6.874367 +v -267.272125 316.238556 6.866801 +v -267.459656 312.507751 7.090979 +v -267.459656 316.275848 7.090979 +v -267.722351 312.455505 7.195278 +v -267.722351 316.328094 7.195278 +v -267.986359 312.402985 7.167092 +v -267.986359 316.380615 7.167092 +v -268.229156 312.354706 7.002154 +v -268.363464 312.327972 6.741037 +v -268.365997 312.327484 6.470262 +v -266.014221 319.754791 7.088002 +v -268.237244 312.353088 6.207237 +v -266.235229 319.902466 7.194453 +v -267.997314 312.400818 6.036922 +v -267.733185 312.453339 6.003424 +v -266.471710 320.060455 7.163877 +v -265.693909 319.801422 6.866801 +v -265.660461 319.748871 6.600000 +v -265.451202 320.597412 6.036922 +v -264.849060 320.530975 6.080385 +v -265.468567 319.796021 6.600000 +v -265.463318 319.858124 6.866801 +v -265.700592 319.813690 6.893425 +v -265.449799 320.682983 6.076644 +v -265.463074 319.872070 6.893425 +v -266.164337 320.665710 6.207237 +v -266.197479 320.726562 6.306575 +v -265.446045 320.911255 6.306575 +v -265.447174 320.841980 6.207237 +v -265.455780 320.317078 7.195278 +v -265.459351 320.100342 7.123356 +v -265.454559 320.391663 6.000000 +v -265.454559 320.391663 7.200000 +v -265.455597 320.328125 6.003424 +v -265.785309 319.969360 7.090979 +v -265.460175 320.049255 7.090979 +v -266.088318 320.526031 6.076644 +v -265.809753 320.014221 7.123356 +v -266.047394 320.450836 6.036922 +v -265.451385 320.586243 7.167092 +v -264.849060 320.530975 7.119615 +v -265.449799 320.682983 7.123356 +v -265.459351 320.100342 6.076644 +v -265.460022 320.059448 6.101975 +v -265.913361 320.204590 7.195278 +v -265.949036 320.270111 6.000000 +v -265.949036 320.270111 7.200000 +v -265.918640 320.214294 6.003424 +v -265.447327 320.833740 7.002154 +v -264.744568 320.722382 6.900000 +v -265.463074 319.872070 6.306575 +v -266.042053 320.441040 7.167092 +v -265.463257 319.860840 6.327735 +v -265.809753 320.014221 6.076644 +v -265.446045 320.911255 6.893425 +v -266.088318 320.526031 7.123356 +v -265.790192 319.978302 6.101975 +v -265.445068 320.970673 6.741037 +v -265.700592 319.813690 6.306575 +v -264.706329 320.792450 6.600000 +v -266.160400 320.658447 7.002154 +v -265.695221 319.803833 6.327735 +v -265.444794 320.987366 6.600000 +v -266.197479 320.726562 6.893425 +v -265.445038 320.973267 6.470262 +v -264.744568 320.722382 6.300000 +v -266.225861 320.778717 6.741037 +v -266.233856 320.793396 6.600000 +v -266.227112 320.781006 6.470262 +v -259.405853 317.559479 7.119615 +v -259.301361 317.750885 6.900000 +v -259.263123 317.820953 6.600000 +v -259.301361 317.750885 6.300000 +v -259.405853 317.559479 6.080385 +v -259.254791 316.860596 7.123356 +v -259.321014 316.642120 6.893425 +v -258.808136 316.543243 6.893425 +v -258.738007 317.351227 7.123356 +v -258.763214 317.060974 7.200000 +v -258.816620 316.467590 6.600000 +v -259.170288 317.139435 7.200000 +v -258.788391 316.770721 7.123356 +v -258.718262 317.578674 6.893425 +v -259.085785 317.418274 7.123356 +v -258.711700 317.654510 6.600000 +v -259.341248 316.568726 6.600000 +v -259.019592 317.636749 6.893425 +v -258.718262 317.578674 6.306575 +v -258.997528 317.709595 6.600000 +v -258.738007 317.351227 6.076644 +v -259.019592 317.636749 6.306575 +v -258.763214 317.060974 6.000000 +v -259.085785 317.418274 6.076644 +v -258.788391 316.770721 6.076644 +v -259.170288 317.139435 6.000000 +v -258.808136 316.543243 6.306575 +v -259.254791 316.860596 6.076644 +v -259.321014 316.642120 6.306575 +v -241.403870 319.564880 6.230577 +v -241.431671 319.655304 6.402468 +v -241.414917 319.657318 6.402468 +v -241.432159 319.659332 6.785395 +v -241.493057 319.623749 6.856662 +v -241.428818 319.631439 6.856662 +v -241.420639 319.562866 6.230577 +v -241.496399 319.651672 6.785395 +v -241.470718 319.436768 6.114590 +v -241.529831 319.549835 6.230577 +v -241.484863 319.555206 6.230577 +v -241.415390 319.661346 6.785395 +v -241.412064 319.633423 6.856662 +v -241.029175 319.489502 7.085410 +v -240.987640 319.494476 7.085410 +v -241.406494 319.444427 6.114590 +v -241.389725 319.446442 7.085410 +v -241.373215 319.308197 7.161123 +v -241.389725 319.446442 6.114590 +v -241.054840 319.704407 6.414605 +v -241.415390 319.661346 6.414605 +v -241.418854 319.690308 6.600000 +v -241.597137 319.669006 6.600000 +v -241.645660 319.663208 6.600000 +v -241.593689 319.640045 6.785395 +v -241.058304 319.733368 6.600000 +v -241.033844 319.528564 7.053997 +v -241.394394 319.485504 7.053997 +v -240.987640 319.712433 6.414590 +v -241.054367 319.700378 6.402468 +v -241.544815 319.675262 6.600000 +v -241.541351 319.646301 6.785395 +v -241.402069 319.407410 6.089397 +v -241.499847 319.680634 6.600000 +v -241.385300 319.409393 6.089397 +v -241.367722 319.262207 6.023362 +v -241.642212 319.634247 6.414605 +v -241.043320 319.607941 6.230577 +v -240.987640 319.494476 6.114590 +v -241.641724 319.630219 6.402468 +v -241.029175 319.489502 6.114590 +v -241.435608 319.688293 6.600000 +v -241.024750 319.452454 6.089397 +v -241.007172 319.305267 6.023362 +v -241.593689 319.640045 6.414605 +v -241.389969 319.306213 7.161123 +v -241.593201 319.636017 6.402468 +v -241.470718 319.436768 7.085410 +v -241.541351 319.646301 6.414605 +v -241.540878 319.642273 6.402468 +v -241.475388 319.475830 7.053997 +v -241.406494 319.444427 7.085410 +v -241.051514 319.676514 6.856662 +v -240.987640 319.712433 6.785410 +v -241.411148 319.483490 7.053997 +v -241.496399 319.651672 6.414605 +v -241.590347 319.612152 6.856662 +v -241.495911 319.647644 6.402468 +v -241.054840 319.704407 6.785395 +v -241.538025 319.618378 6.856662 +v -241.432159 319.659332 6.414605 +v -240.987640 20.595695 15.100000 +v -240.987640 1.595695 15.100000 +v -240.487640 1.595695 14.966025 +v -240.487640 20.595695 14.966025 +v -240.121613 1.595695 14.600000 +v -240.121613 20.595695 14.600000 +v -239.987640 1.595695 14.100000 +v -239.987640 20.595695 14.100000 +v -241.639206 5.880799 14.355808 +v -241.593857 1.595695 14.450000 +v -241.687637 1.595695 14.100000 +v -241.687637 7.029306 14.100000 +v -241.653320 15.206605 14.316487 +v -241.644882 6.973718 14.340892 +v -241.687637 20.595695 14.100000 +v -241.659149 16.331997 14.297517 +v -241.687637 16.362083 14.100000 +v -241.520889 6.016447 14.553389 +v -241.337646 1.595695 14.706218 +v -241.593857 20.595695 14.450000 +v -241.406479 6.182578 14.660864 +v -241.348190 6.388762 14.700000 +v -241.401627 6.598580 14.664463 +v -241.371002 15.669662 14.685694 +v -241.425018 15.545848 14.646523 +v -241.348190 15.802629 14.700000 +v -240.987640 1.595695 14.800000 +v -241.384476 15.964092 14.676639 +v -241.337646 20.595695 14.706218 +v -241.466293 16.103571 14.610527 +v -240.987640 20.595695 14.800000 +v -241.582153 16.247391 14.469361 +v -241.687637 15.162084 14.100000 +v -241.566071 15.324291 14.494125 +v -241.541626 6.832470 14.527892 +v -241.687637 5.829306 14.100000 +v -240.287643 20.595695 14.100000 +v -240.381424 20.595695 13.750000 +v -240.287643 1.595695 14.100000 +v -240.381424 1.595695 13.750000 +v -240.637634 20.595695 13.493782 +v -240.637634 1.595695 13.493782 +v -240.987640 20.595695 13.400000 +v -240.987640 1.595695 13.400000 +v -241.325150 15.285767 6.300000 +v -241.400909 15.343970 6.205833 +v -241.333069 15.352073 6.205833 +v -241.392990 15.277664 6.300000 +v -241.312866 15.506848 7.119615 +v -241.336777 15.383184 7.027692 +v -241.298645 15.387740 7.027692 +v -241.388275 15.238258 6.383511 +v -241.525452 15.221874 6.383511 +v -241.530151 15.261280 6.300000 +v -241.351013 15.502293 7.119615 +v -241.362335 15.597179 7.164342 +v -241.348190 15.802629 7.200000 +v -241.401779 15.592467 7.164345 +v -241.022964 15.541475 6.080385 +v -241.029144 15.593132 6.053473 +v -240.987640 15.545695 6.080385 +v -241.312866 15.506848 6.080385 +v -241.319031 15.558505 6.053473 +v -241.324203 15.601735 7.164342 +v -241.008743 15.422367 7.027692 +v -240.987640 15.326079 6.900000 +v -240.987640 15.545695 7.119615 +v -240.997101 15.324949 6.900000 +v -241.287003 15.290322 6.300000 +v -241.294922 15.356628 6.205833 +v -241.287003 15.290322 6.900000 +v -241.022964 15.541475 7.119615 +v -241.548691 15.178681 6.600000 +v -241.639114 15.167880 6.600000 +v -241.643875 15.207729 6.383511 +v -241.553436 15.218531 6.383511 +v -241.034302 15.636362 7.164342 +v -240.987640 15.845695 7.200000 +v -241.320435 15.246362 6.383511 +v -241.520691 15.182026 6.600000 +v -241.282303 15.250917 6.383511 +v -241.005020 15.391255 6.205833 +v -240.987640 15.326079 6.300000 +v -241.383514 15.198410 6.600000 +v -241.315674 15.206512 6.600000 +v -240.997101 15.324949 6.300000 +v -241.554611 15.228272 6.840475 +v -241.332855 15.674218 6.014307 +v -241.348190 15.802629 6.000000 +v -240.987640 15.845695 6.000000 +v -241.645035 15.217471 6.840475 +v -241.371002 15.669662 6.014307 +v -241.277542 15.211068 6.600000 +v -241.357178 15.553949 6.053473 +v -241.425018 15.545848 6.053477 +v -241.526611 15.231617 6.840475 +v -241.558151 15.257936 6.900000 +v -241.541779 15.358707 7.027701 +v -241.538071 15.327586 6.205833 +v -241.566071 15.324291 6.205875 +v -240.992401 15.285544 6.383511 +v -240.987640 15.245695 6.600000 +v -241.351013 15.502293 6.080385 +v -241.530151 15.261280 6.900000 +v -241.389435 15.248001 6.840475 +v -241.558151 15.257936 6.300000 +v -241.653320 15.206605 6.383513 +v -241.392990 15.277664 6.900000 +v -241.321594 15.256104 6.840475 +v -241.283463 15.260659 6.840475 +v -241.325150 15.285767 6.900000 +v -241.404617 15.375081 7.027692 +v -241.418854 15.494190 7.119615 +v -241.687637 15.162084 6.600000 +v -259.691315 13.740461 6.080385 +v -264.991791 16.973423 6.000000 +v -259.548584 14.001921 6.000000 +v -265.134521 16.711964 6.080385 +v -259.795807 13.549059 6.300000 +v -265.239014 16.520561 6.300000 +v -259.834045 13.479001 6.600000 +v -265.239014 16.520561 6.900000 +v -265.277252 16.450502 6.600000 +v -259.795807 13.549059 6.900000 +v -265.134521 16.711964 7.119615 +v -259.691315 13.740461 7.119615 +v -264.991791 16.973423 7.200000 +v -259.548584 14.001921 7.200000 +v -264.991791 5.217968 6.000000 +v -259.691315 8.450929 6.080385 +v -259.548584 8.189469 6.000000 +v -265.134521 5.479427 6.080385 +v -259.795807 8.642331 6.300000 +v -265.239014 5.670829 6.300000 +v -259.834045 8.712389 6.600000 +v -265.277252 5.740887 6.600000 +v -265.239014 5.670829 6.900000 +v -259.795807 8.642331 6.900000 +v -265.134521 5.479427 7.119615 +v -259.691315 8.450929 7.119615 +v -264.991791 5.217968 7.200000 +v -259.548584 8.189469 7.200000 +v -241.383240 6.992948 6.600000 +v -241.321548 6.935098 6.359108 +v -241.389191 6.943177 6.359108 +v -241.315598 6.984869 6.600000 +v -241.282318 6.940329 6.816865 +v -240.926453 6.858001 6.900000 +v -240.916977 6.937255 6.600000 +v -241.277542 6.980321 6.600000 +v -241.520493 7.009342 6.600000 +v -241.526443 6.959571 6.359108 +v -241.320374 6.944876 6.816865 +v -241.548416 7.012677 6.600000 +v -241.554367 6.962906 6.359108 +v -241.286560 6.904756 6.893425 +v -241.388016 6.952955 6.816865 +v -241.324631 6.909303 6.893425 +v -241.638947 7.023489 6.600000 +v -241.644882 6.973718 6.359108 +v -241.687637 7.029306 6.600000 +v -241.653198 6.984625 6.816864 +v -241.392273 6.917382 6.893425 +v -241.294952 6.834459 6.994519 +v -240.952316 6.641475 7.119615 +v -241.333023 6.839006 6.994519 +v -241.525269 6.969349 6.816865 +v -241.324234 6.589335 6.035541 +v -240.987640 6.345695 6.000000 +v -241.348190 6.388762 6.000000 +v -240.952316 6.641475 6.080385 +v -241.553192 6.972684 6.816865 +v -241.362305 6.593883 6.035541 +v -241.401627 6.598580 6.035537 +v -241.400665 6.847085 6.994519 +v -241.313644 6.678059 6.076644 +v -241.351715 6.682606 6.076644 +v -241.541626 6.832470 6.172108 +v -241.529526 6.933776 6.893425 +v -241.557449 6.937111 6.893425 +v -241.565842 6.866776 6.994485 +v -241.298660 6.803441 6.172099 +v -240.926453 6.858001 6.300000 +v -241.643723 6.983496 6.816865 +v -241.336731 6.807988 6.172099 +v -241.313644 6.678059 7.123356 +v -241.404373 6.816067 6.172099 +v -241.351715 6.682606 7.123356 +v -241.286560 6.904756 6.306575 +v -241.537918 6.863479 6.994519 +v -241.324631 6.909303 6.306575 +v -241.319092 6.632484 7.146710 +v -241.283478 6.930551 6.359108 +v -241.357147 6.637032 7.146710 +v -241.424789 6.645110 7.146708 +v -241.370941 6.521558 7.185730 +v -241.419342 6.690685 7.123356 +v -241.332870 6.517011 7.185730 +v -241.348190 6.388762 7.200000 +v -241.392273 6.917382 6.306575 +v -240.987640 6.345695 7.200000 +v -241.529526 6.933776 6.306575 +v -241.557449 6.937111 6.306575 +v -241.981644 15.136948 6.708046 +v -258.291870 13.259186 6.900000 +v -258.282410 13.179932 6.600000 +v -242.018738 15.447495 6.066753 +v -258.353058 13.771492 6.000000 +v -241.787643 15.750139 6.000000 +v -241.833588 15.469630 6.066793 +v -258.317719 13.475712 6.080385 +v -242.016571 15.429371 6.076644 +v -241.921234 15.252978 6.241836 +v -241.994446 15.244124 6.241759 +v -258.291870 13.259186 6.300000 +v -241.989487 15.202674 6.306575 +v -241.979736 15.140375 6.475753 +v -241.981995 15.139937 6.475718 +v -241.980469 15.127108 6.600000 +v -241.989487 15.202674 6.893425 +v -241.933487 15.228125 6.924382 +v -241.991684 15.221061 6.924455 +v -242.009354 15.369047 7.083996 +v -241.862686 15.386624 7.083914 +v -258.317719 13.475712 7.119615 +v -242.028946 15.532998 7.169681 +v -241.809570 15.559216 7.169634 +v -241.787643 15.750139 7.200000 +v -258.353058 13.771492 7.200000 +v -258.282410 9.011458 6.600000 +v -241.981628 7.054432 6.491891 +v -258.291870 8.932204 6.300000 +v -242.028961 6.658251 6.030272 +v -241.787643 6.441250 6.000000 +v -258.353058 8.419898 6.000000 +v -258.317719 8.715678 6.080385 +v -241.862610 6.804576 6.115958 +v -241.809540 6.632027 6.030322 +v -242.009369 6.822167 6.115873 +v -241.933426 6.963124 6.275412 +v -241.991699 6.970198 6.275339 +v -241.989487 6.988716 6.306575 +v -241.981995 7.051435 6.724360 +v -258.291870 8.932204 6.900000 +v -241.979736 7.051000 6.724326 +v -241.989487 6.988716 6.893425 +v -241.921158 6.938272 6.958350 +v -241.994446 6.947132 6.958423 +v -258.317719 8.715678 7.119615 +v -242.016556 6.762019 7.123356 +v -241.833527 6.721552 7.133314 +v -242.018753 6.743695 7.133351 +v -258.353058 8.419898 7.200000 +v -241.787643 6.441250 7.200000 +v -240.399857 20.595695 5.790983 +v -240.987640 1.595695 5.600000 +v -240.987640 20.595695 5.600000 +v -240.399857 1.595695 5.790983 +v -240.036591 1.595695 6.290983 +v -240.036591 20.595695 6.290983 +v -240.036591 1.595695 6.909017 +v -240.036591 20.595695 6.909017 +v -240.399857 1.595695 7.409017 +v -240.399857 20.595695 7.409017 +v -240.987640 1.595695 7.600000 +v -240.987640 20.595695 7.600000 +v -241.687637 16.362083 6.600000 +v -241.659149 16.331997 6.402483 +v -241.687637 20.595695 6.600000 +v -241.553955 20.595695 6.188550 +v -241.582153 16.247391 6.230639 +v -241.466293 16.103571 6.089473 +v -241.384476 15.964092 6.023361 +v -241.687637 1.595695 6.600000 +v -241.553955 1.595695 6.188550 +v -241.639206 5.880799 6.344192 +v -241.203949 20.595695 5.934260 +v -241.406479 6.182578 6.039136 +v -241.520889 6.016447 6.146612 +v -241.203949 1.595695 5.934260 +v -240.771332 1.595695 5.934260 +v -240.771332 20.595695 5.934260 +v -240.421326 1.595695 6.188550 +v -240.421326 20.595695 6.188550 +v -240.287643 1.595695 6.600000 +v -240.287643 20.595695 6.600000 +v -241.687637 5.829306 6.600000 +v -241.418228 16.109360 14.610602 +v -241.496399 16.355566 13.914605 +v -241.444977 16.333401 13.843338 +v -241.493057 16.327658 13.843338 +v -241.385300 16.113293 14.610602 +v -241.448318 16.361309 13.914605 +v -241.389725 16.150339 14.585410 +v -241.422653 16.146408 14.585410 +v -241.590347 16.316038 13.843338 +v -241.520355 16.174318 13.646041 +v -241.638870 16.310221 13.843349 +v -241.538025 16.322289 13.843338 +v -241.470718 16.140665 14.585410 +v -241.436798 16.264833 14.469422 +v -241.484863 16.259090 14.469422 +v -241.529831 16.253719 14.469422 +v -241.541351 16.350195 13.914605 +v -241.367722 15.966094 14.676638 +v -240.987640 15.845695 14.700000 +v -241.593689 16.343945 13.914605 +v -241.007172 16.009161 14.676638 +v -241.024750 16.156359 14.610602 +v -241.418854 16.394190 14.100000 +v -241.058304 16.437256 14.100000 +v -241.054840 16.408306 13.914605 +v -241.415390 16.365240 13.914605 +v -241.451767 16.390257 14.100000 +v -241.043320 16.311831 14.469422 +v -240.987640 16.198366 14.585410 +v -240.987640 16.416328 14.285410 +v -241.054367 16.404278 14.297532 +v -241.499847 16.384514 14.100000 +v -241.544815 16.379145 14.100000 +v -241.597137 16.372894 14.100000 +v -241.029175 16.193405 14.585410 +v -241.415390 16.365240 14.285396 +v -241.054840 16.408306 14.285396 +v -241.029175 16.193405 13.614590 +v -240.987640 16.198366 13.614590 +v -240.987640 15.845695 13.500000 +v -241.414917 16.361212 14.297532 +v -241.033844 16.232462 13.646003 +v -241.448318 16.361309 14.285396 +v -241.373215 16.012104 13.538877 +v -241.348190 15.802629 13.500000 +v -241.406128 16.008171 13.538877 +v -241.051514 16.380400 13.843338 +v -240.987640 16.416328 13.914590 +v -241.447830 16.357279 14.297532 +v -241.663086 16.365017 14.100000 +v -241.496399 16.355566 14.285396 +v -241.389725 16.150339 13.614590 +v -241.422653 16.146408 13.614590 +v -241.495911 16.351538 14.297532 +v -241.541351 16.350195 14.285396 +v -241.394394 16.189394 13.646003 +v -241.427307 16.185463 13.646003 +v -241.540878 16.346167 14.297532 +v -241.593689 16.343945 14.285396 +v -241.475388 16.179720 13.646003 +v -241.593201 16.339916 14.297532 +v -241.412064 16.337334 13.843338 +v -241.403870 16.268764 14.469422 +v -241.659637 16.336067 14.285396 +v -262.565521 16.240944 13.806575 +v -261.586273 15.446251 13.576644 +v -262.674896 16.040550 13.576644 +v -262.529053 16.307741 14.100000 +v -261.476868 15.646644 13.806575 +v -261.440399 15.713441 14.100000 +v -262.565521 16.240944 14.393425 +v -261.476868 15.646644 14.393425 +v -263.763550 16.634851 13.576644 +v -264.849060 17.234882 13.580385 +v -264.744568 17.426285 13.800000 +v -264.991791 16.973423 13.500000 +v -262.674896 16.040550 14.623356 +v -264.991791 16.973423 14.700000 +v -261.586273 15.446251 14.623356 +v -263.654144 16.835243 13.806575 +v -263.617676 16.902042 14.100000 +v -264.706329 17.496342 14.100000 +v -263.654144 16.835243 14.393425 +v -264.744568 17.426285 14.400000 +v -263.763550 16.634851 14.623356 +v -264.849060 17.234882 14.619616 +v -260.497620 14.851951 13.576644 +v -259.405853 14.263380 13.580385 +v -259.548584 14.001921 13.500000 +v -260.388214 15.052343 13.806575 +v -259.301361 14.454782 13.800000 +v -260.351776 15.119141 14.100000 +v -259.263123 14.524840 14.100000 +v -260.388214 15.052343 14.393425 +v -259.301361 14.454782 14.400000 +v -260.497620 14.851951 14.623356 +v -259.548584 14.001921 14.700000 +v -259.405853 14.263380 14.619616 +v -261.476868 6.544747 13.806575 +v -262.565521 5.950446 13.806575 +v -262.674896 6.150839 13.576644 +v -261.586273 6.745139 13.576644 +v -261.440399 6.477949 14.100000 +v -262.529053 5.883649 14.100000 +v -261.476868 6.544747 14.393425 +v -262.565521 5.950446 14.393425 +v -260.497620 7.339439 13.576644 +v -259.548584 8.189469 13.500000 +v -259.405853 7.928010 13.580385 +v -261.586273 6.745139 14.623356 +v -259.548584 8.189469 14.700000 +v -264.991791 5.217968 14.700000 +v -262.674896 6.150839 14.623356 +v -260.388214 7.139047 13.806575 +v -259.301361 7.736608 13.800000 +v -260.351776 7.072249 14.100000 +v -259.263123 7.666550 14.100000 +v -260.388214 7.139047 14.393425 +v -259.301361 7.736608 14.400000 +v -260.497620 7.339439 14.623356 +v -259.405853 7.928010 14.619616 +v -263.763550 5.556539 13.576644 +v -264.849060 4.956508 13.580385 +v -264.991791 5.217968 13.500000 +v -263.654144 5.356146 13.806575 +v -264.744568 4.765106 13.800000 +v -263.617676 5.289349 14.100000 +v -264.706329 4.695048 14.100000 +v -263.654144 5.356146 14.393425 +v -264.744568 4.765106 14.400000 +v -263.763550 5.556539 14.623356 +v -264.849060 4.956508 14.619616 +v -241.496445 5.839685 13.903131 +v -241.536240 5.887866 13.806575 +v -241.491333 5.882501 13.806575 +v -241.541351 5.845051 13.903131 +v -241.448135 5.833915 13.903131 +v -241.443008 5.876731 13.806575 +v -241.645950 5.824327 14.100000 +v -241.659317 5.859200 13.903152 +v -241.642044 5.857077 13.903131 +v -241.414948 5.829951 13.903131 +v -241.048828 5.833389 13.800000 +v -241.058304 5.754135 14.100000 +v -241.409836 5.872767 13.806575 +v -241.597565 5.818546 14.100000 +v -241.593643 5.851296 13.903131 +v -241.545273 5.812301 14.100000 +v -241.500351 5.806936 14.100000 +v -241.452042 5.801165 14.100000 +v -241.418854 5.797201 14.100000 +v -241.590820 5.875008 14.355814 +v -241.588531 5.894112 14.393425 +v -241.538528 5.868762 14.355814 +v -241.367783 6.224826 13.523499 +v -241.384674 6.226846 13.523499 +v -241.348190 6.388762 13.500000 +v -240.987640 6.345695 13.500000 +v -241.536240 5.887866 14.393425 +v -241.022964 6.049915 13.580385 +v -241.415939 6.103428 13.576644 +v -241.466904 6.086967 13.590053 +v -241.493607 5.863397 14.355814 +v -241.491333 5.882501 14.393425 +v -241.418594 6.081145 13.589972 +v -241.382751 6.099464 13.576644 +v -241.445297 5.857626 14.355814 +v -241.385406 6.077181 13.589972 +v -241.412109 5.853662 14.355814 +v -241.530365 5.937093 13.731399 +v -241.582642 5.943437 13.731475 +v -241.048828 5.833389 14.400000 +v -241.588531 5.894112 13.806575 +v -241.443008 5.876731 14.393425 +v -241.409836 5.872767 14.393425 +v -241.485443 5.931728 13.731399 +v -241.475967 6.011070 14.553418 +v -241.427658 6.005300 14.553418 +v -241.437134 5.925958 13.731399 +v -241.394470 6.001336 14.553418 +v -241.022964 6.049915 14.619616 +v -241.403946 5.921994 13.731399 +v -241.415939 6.103428 14.623356 +v -241.382751 6.099464 14.623356 +v -241.373291 6.178614 14.660865 +v -240.987640 6.345695 14.700000 +v -258.414246 14.283798 14.400000 +v -241.984756 16.321840 14.174391 +v -258.423737 14.363052 14.100000 +v -241.943954 15.980257 13.554011 +v -241.825439 15.994411 13.554020 +v -241.787643 15.750139 13.500000 +v -258.353058 13.771492 13.500000 +v -258.388397 14.067272 13.580385 +v -241.949219 16.024265 13.576644 +v -241.905121 16.185295 13.702272 +v -241.967560 16.177874 13.702260 +v -258.414246 14.283798 13.800000 +v -241.976288 16.250961 13.806575 +v -241.971786 16.301380 13.923075 +v -241.982178 16.300217 13.923051 +v -241.985321 16.326529 14.100000 +v -241.976288 16.250961 14.393425 +v -241.936417 16.242432 14.415712 +v -241.974747 16.237968 14.415784 +v -241.954666 16.069921 14.594552 +v -241.856766 16.081530 14.594424 +v -258.388397 14.067272 14.619616 +v -241.935516 15.909516 14.673286 +v -258.353058 13.771492 14.700000 +v -241.787643 15.750139 14.700000 +v -241.807114 15.924823 14.673194 +v -241.984756 5.869543 14.025676 +v -258.423737 7.828338 14.100000 +v -258.414246 7.907592 13.800000 +v -241.935547 6.281632 13.526790 +v -258.388397 8.124118 13.580385 +v -258.353058 8.419898 13.500000 +v -241.787643 6.441250 13.500000 +v -241.807159 6.266323 13.526872 +v -241.856918 6.109499 13.605830 +v -241.954712 6.121098 13.605706 +v -241.936539 5.948731 13.784675 +v -241.974777 5.953185 13.784606 +v -241.976303 5.940428 13.806575 +v -241.982193 5.891098 14.276701 +v -258.414246 7.907592 14.400000 +v -241.971832 5.889948 14.276674 +v -241.976303 5.940428 14.393425 +v -241.905212 6.005927 14.497499 +v -241.967590 6.013333 14.497529 +v -258.388397 8.124118 14.619616 +v -241.949219 6.167125 14.623356 +v -241.825546 6.196635 14.645810 +v -241.944000 6.210778 14.645824 +v -241.787643 6.441250 14.700000 +v -258.353058 8.419898 14.700000 +v -241.909592 20.595695 14.487298 +v -241.969864 20.595695 13.912271 +v -241.833588 15.469630 14.633206 +v -241.862610 6.804576 14.584043 +v -241.809540 6.632027 14.669678 +v -241.701782 1.595695 13.400000 +v -241.541138 1.595695 14.932856 +v -241.909592 1.595695 14.487298 +v -241.701782 20.595695 13.400000 +v -241.541138 20.595695 14.932856 +v -241.809570 15.559216 13.530366 +v -241.833527 6.721552 13.566686 +v -241.921234 15.252978 14.458164 +v -241.979736 15.140375 14.224247 +v -241.933426 6.963124 14.424587 +v -241.981644 15.136948 13.991954 +v -241.981628 7.054432 14.208109 +v -241.933487 15.228125 13.775618 +v -241.979736 7.051000 13.975675 +v -241.969864 1.595695 13.912271 +v -241.862686 15.386624 13.616086 +v -241.921158 6.938272 13.741650 +v -241.337646 1.595695 13.493782 +v -241.370941 6.521558 13.514271 +v -241.401779 15.592467 13.535655 +v -241.424789 6.645110 13.553291 +v -241.593857 1.595695 13.750000 +v -241.337646 20.595695 13.493782 +v -241.593857 20.595695 13.750000 +v -241.645035 15.217471 13.859525 +v -241.653198 6.984625 13.883136 +v -241.565842 6.866776 13.705515 +v -241.541779 15.358707 13.672299 +v -240.637634 20.595695 14.706218 +v -240.637634 1.595695 14.706218 +v -240.381424 20.595695 14.450000 +v -240.381424 1.595695 14.450000 +v -240.121613 20.595695 13.600000 +v -240.121613 1.595695 13.600000 +v -240.487640 20.595695 13.233974 +v -240.487640 1.595695 13.233974 +v -240.987640 20.595695 13.100000 +v -240.987640 1.595695 13.100000 +v -251.220657 20.595695 13.150000 +v -251.287643 1.595695 12.900000 +v -251.220657 1.595695 13.150000 +v -251.287643 20.595695 12.900000 +v -251.037643 20.595695 13.333013 +v -251.037643 1.595695 13.333013 +v -250.787643 20.595695 13.400000 +v -250.787643 1.595695 13.400000 +v -250.987640 20.595695 12.900000 +v -250.960846 20.595695 13.000000 +v -250.987640 1.595695 12.900000 +v -250.960846 1.595695 13.000000 +v -250.887634 20.595695 13.073205 +v -250.887634 1.595695 13.073205 +v -250.787643 20.595695 13.100000 +v -250.787643 1.595695 13.100000 +v -258.282410 9.011458 14.100000 +v -258.291870 8.932204 14.400000 +v -242.028961 6.658251 14.669727 +v -258.317719 8.715678 14.619616 +v -242.009369 6.822167 14.584126 +v -241.991699 6.970198 14.424661 +v -241.989487 6.988716 14.393425 +v -241.981995 7.051435 13.975640 +v -258.291870 8.932204 13.800000 +v -241.989487 6.988716 13.806575 +v -241.994446 6.947132 13.741577 +v -258.317719 8.715678 13.580385 +v -242.016556 6.762019 13.576644 +v -242.018753 6.743695 13.566649 +v -258.291870 13.259186 13.800000 +v -258.282410 13.179932 14.100000 +v -242.018738 15.447495 14.633246 +v -258.317719 13.475712 14.619616 +v -242.016571 15.429371 14.623356 +v -241.994446 15.244124 14.458241 +v -258.291870 13.259186 14.400000 +v -241.989487 15.202674 14.393425 +v -241.981995 15.139937 14.224281 +v -241.980469 15.127108 14.100000 +v -241.989487 15.202674 13.806575 +v -241.991684 15.221061 13.775545 +v -242.009354 15.369047 13.616004 +v -258.317719 13.475712 13.580385 +v -242.028946 15.532998 13.530319 +v -241.321548 6.935098 14.340892 +v -241.389191 6.943177 14.340892 +v -241.392273 6.917382 14.393425 +v -241.324631 6.909303 14.393425 +v -241.548416 7.012677 14.100000 +v -241.554367 6.962906 14.340892 +v -241.638947 7.023489 14.100000 +v -241.283478 6.930551 14.340892 +v -240.926453 6.858001 14.400000 +v -240.916977 6.937255 14.100000 +v -241.286560 6.904756 14.393425 +v -241.520493 7.009342 14.100000 +v -241.526443 6.959571 14.340892 +v -241.643723 6.983496 13.883135 +v -241.383240 6.992948 14.100000 +v -241.553192 6.972684 13.883135 +v -241.315598 6.984869 14.100000 +v -241.525269 6.969349 13.883135 +v -241.277542 6.980321 14.100000 +v -241.557449 6.937111 13.806575 +v -241.529526 6.933776 13.806575 +v -241.362305 6.593883 14.664459 +v -241.388016 6.952955 13.883135 +v -241.419342 6.690685 14.623356 +v -241.537918 6.863479 13.705482 +v -241.324234 6.589335 14.664459 +v -240.952316 6.641475 14.619616 +v -241.320374 6.944876 13.883135 +v -241.351715 6.682606 14.623356 +v -241.392273 6.917382 13.806575 +v -241.313644 6.678059 14.623356 +v -241.282318 6.940329 13.883135 +v -241.557449 6.937111 14.393425 +v -240.926453 6.858001 13.800000 +v -241.404373 6.816067 14.527901 +v -241.324631 6.909303 13.806575 +v -241.286560 6.904756 13.806575 +v -241.529526 6.933776 14.393425 +v -241.400665 6.847085 13.705482 +v -241.333023 6.839006 13.705482 +v -241.336731 6.807988 14.527901 +v -241.294952 6.834459 13.705482 +v -240.952316 6.641475 13.580385 +v -241.419342 6.690685 13.576644 +v -241.298660 6.803441 14.527901 +v -241.351715 6.682606 13.576644 +v -241.313644 6.678059 13.576644 +v -241.357147 6.637032 13.553290 +v -241.319092 6.632484 13.553290 +v -241.332870 6.517011 13.514270 +v -258.788391 8.716786 13.576644 +v -259.254791 8.626892 13.576644 +v -259.321014 8.845388 13.806575 +v -258.808136 8.944240 13.806575 +v -259.085785 8.069227 13.576644 +v -259.341248 8.918774 14.100000 +v -259.795807 8.642331 13.800000 +v -259.834045 8.712389 14.100000 +v -259.170288 8.348060 13.500000 +v -258.763214 8.426524 13.500000 +v -259.019592 7.850731 13.806575 +v -258.738007 8.136261 13.576644 +v -258.997528 7.777899 14.100000 +v -258.816620 9.019892 14.100000 +v -258.718262 7.908808 13.806575 +v -259.019592 7.850731 14.393425 +v -258.711700 7.832990 14.100000 +v -259.085785 8.069227 14.623356 +v -258.718262 7.908808 14.393425 +v -259.170288 8.348060 14.700000 +v -258.738007 8.136261 14.623356 +v -259.254791 8.626892 14.623356 +v -259.691315 8.450929 14.619616 +v -258.763214 8.426524 14.700000 +v -259.321014 8.845388 14.393425 +v -259.795807 8.642331 14.400000 +v -258.788391 8.716786 14.623356 +v -258.808136 8.944240 14.393425 +v -259.691315 8.450929 13.580385 +v -262.011322 7.523788 14.100000 +v -263.063507 6.862690 14.393425 +v -261.974884 7.456991 14.393425 +v -263.099976 6.929488 14.100000 +v -261.974884 7.456991 13.806575 +v -263.063507 6.862690 13.806575 +v -260.776825 7.850898 14.623356 +v -261.865479 7.256598 14.623356 +v -261.865479 7.256598 13.576644 +v -262.954102 6.662298 13.576644 +v -260.886230 8.051291 14.393425 +v -260.922699 8.118089 14.100000 +v -260.886230 8.051291 13.806575 +v -260.776825 7.850898 13.576644 +v -264.042755 6.067997 14.623356 +v -265.134521 5.479427 14.619616 +v -264.152161 6.268390 14.393425 +v -265.239014 5.670829 14.400000 +v -264.188629 6.335187 14.100000 +v -265.239014 5.670829 13.800000 +v -265.277252 5.740887 14.100000 +v -264.152161 6.268390 13.806575 +v -265.134521 5.479427 13.580385 +v -262.954102 6.662298 14.623356 +v -264.042755 6.067997 13.576644 +v -265.809753 5.473277 13.576644 +v -266.014221 5.732702 13.611998 +v -265.785309 5.518149 13.609021 +v -265.446045 4.576237 14.393425 +v -265.445038 4.514236 14.229738 +v -266.227112 4.706481 14.229738 +v -265.463318 5.629382 13.833200 +v -265.660461 5.738635 14.100000 +v -265.468567 5.691467 14.100000 +v -266.197479 4.760944 14.393425 +v -265.693909 5.686068 13.833200 +v -266.047394 5.036648 14.663078 +v -266.480927 5.420886 14.659701 +v -266.088318 4.961473 14.623356 +v -265.463074 5.615422 13.806575 +v -265.700592 5.673805 13.806575 +v -265.447174 4.645508 14.492763 +v -266.164337 4.821795 14.492763 +v -265.949036 5.217375 14.700000 +v -266.244965 5.578531 14.695951 +v -265.913361 5.282896 13.504723 +v -266.235229 5.585042 13.505548 +v -265.949036 5.217375 13.500000 +v -266.471710 5.427032 13.536122 +v -265.460175 5.438226 13.609021 +v -265.918640 5.273197 14.696576 +v -265.449799 4.804514 14.623356 +v -265.459351 5.387144 13.576644 +v -265.451202 4.890093 14.663078 +v -266.042053 5.046459 13.532908 +v -266.088318 4.961473 13.576644 +v -266.669189 5.295094 13.696676 +v -265.809753 5.473277 14.623356 +v -266.022278 5.727326 14.594828 +v -265.455780 5.170417 13.504723 +v -265.790192 5.509204 14.598025 +v -265.454559 5.095829 14.700000 +v -265.454559 5.095829 13.500000 +v -265.455597 5.159377 14.696576 +v -266.160400 4.829039 13.697845 +v -265.700592 5.673805 14.393425 +v -265.864166 5.832973 14.379644 +v -265.451385 4.901262 13.532908 +v -265.695221 5.683671 14.372265 +v -265.807068 5.871120 14.100000 +v -266.197479 4.760944 13.806575 +v -266.782104 5.219641 13.950198 +v -265.459351 5.387144 14.623356 +v -265.449799 4.804514 13.576644 +v -265.460022 5.428043 14.598025 +v -265.463074 5.615422 14.393425 +v -266.225861 4.708764 13.958963 +v -265.447327 4.653754 13.697845 +v -265.463257 5.626654 14.372265 +v -266.233856 4.694102 14.100000 +v -266.784485 5.218065 14.238252 +v -265.446045 4.576237 13.806575 +v -265.445068 4.516835 13.958963 +v -266.675720 5.290730 14.494437 +v -265.444794 4.500144 14.100000 +v -265.861908 5.834488 13.825633 +v -267.986359 13.084502 13.532908 +v -266.235229 16.606348 13.505548 +v -267.722351 13.031987 13.504723 +v -267.733185 9.157248 14.696576 +v -267.733185 13.034142 14.696576 +v -267.997314 13.086681 14.663078 +v -267.997314 9.104709 14.663078 +v -267.469635 9.209668 14.598025 +v -268.229156 13.132794 13.697845 +v -266.669189 16.896296 13.696676 +v -266.471710 16.764359 13.536122 +v -267.469635 12.981722 14.598025 +v -267.274811 9.248419 14.372265 +v -267.211182 9.261074 14.100000 +v -267.211182 12.930316 14.100000 +v -267.274811 12.942971 14.372265 +v -268.363464 13.159509 13.958963 +v -266.782104 16.971750 13.950198 +v -268.365997 13.160015 14.229738 +v -266.784485 16.973326 14.238252 +v -268.237244 13.134403 14.492763 +v -266.675720 16.900660 14.494437 +v -266.480927 16.770504 14.659701 +v -266.244965 16.612860 14.695951 +v -266.022278 16.464064 14.594828 +v -265.864166 16.358418 14.379644 +v -267.272125 9.248951 13.833200 +v -265.807068 16.320271 14.100000 +v -267.272125 12.942439 13.833200 +v -267.459656 9.211655 13.609021 +v -267.459656 12.979735 13.609021 +v -267.722351 9.159403 13.504723 +v -267.986359 9.106888 13.532908 +v -268.229156 9.058596 13.697845 +v -268.363464 9.031881 13.958963 +v -268.365997 9.031375 14.229738 +v -265.861908 16.356901 13.825633 +v -268.237244 9.056987 14.492763 +v -266.014221 16.458689 13.611998 +v -266.197479 17.430445 14.393425 +v -265.445038 17.677153 14.229738 +v -266.227112 17.484909 14.229738 +v -265.446045 17.615152 14.393425 +v -265.693909 16.505322 13.833200 +v -265.468567 16.499924 14.100000 +v -265.660461 16.452755 14.100000 +v -265.463318 16.562008 13.833200 +v -265.451202 17.301296 14.663078 +v -265.449799 17.386875 14.623356 +v -265.700592 16.517586 13.806575 +v -266.164337 17.369595 14.492763 +v -265.447174 17.545881 14.492763 +v -265.463074 16.575968 13.806575 +v -265.455780 17.020973 13.504723 +v -265.134521 16.711964 13.580385 +v -265.459351 16.804245 13.576644 +v -265.454559 17.095560 14.700000 +v -265.454559 17.095560 13.500000 +v -265.455597 17.032013 14.696576 +v -265.134521 16.711964 14.619616 +v -265.785309 16.673241 13.609021 +v -265.460175 16.753164 13.609021 +v -266.088318 17.229918 14.623356 +v -265.809753 16.718113 13.576644 +v -266.047394 17.154741 14.663078 +v -265.451385 17.290127 13.532908 +v -265.459351 16.804245 14.623356 +v -265.449799 17.386875 13.576644 +v -265.460022 16.763346 14.598025 +v -265.239014 16.520561 14.400000 +v -265.913361 16.908495 13.504723 +v -265.949036 16.974016 14.700000 +v -265.949036 16.974016 13.500000 +v -265.918640 16.918194 14.696576 +v -265.447327 17.537636 13.697845 +v -265.463074 16.575968 14.393425 +v -266.042053 17.144930 13.532908 +v -265.463257 16.564735 14.372265 +v -265.277252 16.450502 14.100000 +v -265.809753 16.718113 14.623356 +v -265.446045 17.615152 13.806575 +v -266.088318 17.229918 13.576644 +v -265.790192 16.682186 14.598025 +v -265.445068 17.674555 13.958963 +v -265.700592 16.517586 14.393425 +v -266.160400 17.362350 13.697845 +v -265.695221 16.507719 14.372265 +v -265.444794 17.691246 14.100000 +v -266.197479 17.430445 13.806575 +v -266.225861 17.482626 13.958963 +v -266.233856 17.497288 14.100000 +v -265.239014 16.520561 13.800000 +v -263.099976 15.261902 14.100000 +v -261.974884 14.734400 14.393425 +v -263.063507 15.328700 14.393425 +v -262.011322 14.667602 14.100000 +v -263.063507 15.328700 13.806575 +v -261.974884 14.734400 13.806575 +v -264.042755 16.123392 14.623356 +v -262.954102 15.529093 14.623356 +v -262.954102 15.529093 13.576644 +v -261.865479 14.934792 13.576644 +v -264.152161 15.923000 14.393425 +v -264.188629 15.856203 14.100000 +v -264.152161 15.923000 13.806575 +v -264.042755 16.123392 13.576644 +v -260.776825 14.340491 14.623356 +v -259.795807 13.549059 14.400000 +v -259.691315 13.740461 14.619616 +v -260.886230 14.140100 14.393425 +v -259.834045 13.479001 14.100000 +v -260.922699 14.073301 14.100000 +v -260.886230 14.140100 13.806575 +v -259.795807 13.549059 13.800000 +v -261.865479 14.934792 14.623356 +v -260.776825 14.340491 13.576644 +v -259.691315 13.740461 13.580385 +v -258.763214 13.764866 13.500000 +v -258.788391 13.474604 13.576644 +v -259.254791 13.564498 13.576644 +v -258.808136 13.247150 13.806575 +v -259.321014 13.346002 13.806575 +v -258.738007 14.055129 13.576644 +v -259.170288 13.843330 13.500000 +v -258.718262 14.282582 13.806575 +v -259.085785 14.122163 13.576644 +v -258.711700 14.358400 14.100000 +v -259.019592 14.340659 13.806575 +v -258.718262 14.282582 14.393425 +v -258.997528 14.413491 14.100000 +v -258.738007 14.055129 14.623356 +v -259.019592 14.340659 14.393425 +v -258.763214 13.764866 14.700000 +v -259.085785 14.122163 14.623356 +v -258.788391 13.474604 14.623356 +v -259.170288 13.843330 14.700000 +v -258.808136 13.247150 14.393425 +v -258.816620 13.171498 14.100000 +v -259.254791 13.564498 14.623356 +v -259.321014 13.346002 14.393425 +v -259.341248 13.272616 14.100000 +v -241.351013 15.502293 13.580385 +v -241.298645 15.387740 13.672307 +v -241.336777 15.383184 13.672307 +v -241.320435 15.246362 14.316489 +v -241.282303 15.250917 14.316489 +v -241.287003 15.290322 14.400000 +v -241.404617 15.375081 13.672307 +v -241.538071 15.327586 14.494167 +v -241.324203 15.601735 13.535658 +v -241.034302 15.636362 13.535658 +v -241.022964 15.541475 13.580385 +v -241.400909 15.343970 14.494167 +v -241.312866 15.506848 13.580385 +v -241.362335 15.597179 13.535658 +v -241.388275 15.238258 14.316489 +v -241.325150 15.285767 14.400000 +v -241.392990 15.277664 14.400000 +v -241.530151 15.261280 14.400000 +v -241.558151 15.257936 14.400000 +v -241.277542 15.211068 14.100000 +v -240.987640 15.245695 14.100000 +v -240.992401 15.285544 14.316489 +v -241.525452 15.221874 14.316489 +v -240.997101 15.324949 13.800000 +v -240.987640 15.326079 13.800000 +v -241.315674 15.206512 14.100000 +v -241.553436 15.218531 14.316489 +v -241.383514 15.198410 14.100000 +v -241.643875 15.207729 14.316489 +v -241.008743 15.422367 13.672307 +v -240.987640 15.545695 13.580385 +v -241.520691 15.182026 14.100000 +v -241.283463 15.260659 13.859525 +v -241.029144 15.593132 14.646526 +v -240.987640 15.545695 14.619616 +v -241.548691 15.178681 14.100000 +v -241.022964 15.541475 14.619616 +v -241.332855 15.674218 14.685694 +v -241.321594 15.256104 13.859525 +v -241.005020 15.391255 14.494167 +v -240.987640 15.326079 14.400000 +v -241.287003 15.290322 13.800000 +v -241.319031 15.558505 14.646526 +v -241.357178 15.553949 14.646526 +v -241.325150 15.285767 13.800000 +v -241.312866 15.506848 14.619616 +v -241.389435 15.248001 13.859525 +v -241.639114 15.167880 14.100000 +v -240.997101 15.324949 14.400000 +v -241.351013 15.502293 14.619616 +v -241.392990 15.277664 13.800000 +v -241.294922 15.356628 14.494167 +v -241.526611 15.231617 13.859525 +v -241.333069 15.352073 14.494167 +v -241.554611 15.228272 13.859525 +v -241.530151 15.261280 13.800000 +v -241.558151 15.257936 13.800000 +v -240.421326 20.595695 7.011450 +v -240.421326 1.595695 7.011450 +v -240.771332 1.595695 7.265739 +v -240.771332 20.595695 7.265739 +v -241.406128 16.008171 7.161123 +v -241.203949 20.595695 7.265739 +v -241.203949 1.595695 7.265739 +v -241.553955 20.595695 7.011450 +v -241.520355 16.174318 7.053959 +v -241.384674 6.226846 7.176500 +v -241.553955 1.595695 7.011450 +v -241.466904 6.086967 7.109947 +v -241.638870 16.310221 6.856652 +v -241.659317 5.859200 6.796848 +v -241.582642 5.943437 6.968525 +v -241.541138 20.595695 5.767144 +v -241.909592 20.595695 6.212702 +v -241.825439 15.994411 7.145979 +v -241.701782 20.595695 7.300000 +v -241.909592 1.595695 6.212702 +v -241.825546 6.196635 6.054190 +v -241.905121 16.185295 6.997728 +v -241.541138 1.595695 5.767144 +v -241.701782 1.595695 7.300000 +v -241.807159 6.266323 7.173129 +v -241.905212 6.005927 6.202500 +v -241.971832 5.889948 6.423326 +v -241.936539 5.948731 6.915325 +v -241.984756 5.869543 6.674325 +v -241.969864 1.595695 6.787728 +v -241.969864 20.595695 6.787728 +v -241.971786 16.301380 6.776925 +v -241.984756 16.321840 6.525609 +v -241.856766 16.081530 6.105576 +v -241.936417 16.242432 6.284288 +v -241.856918 6.109499 7.094170 +v -241.807114 15.924823 6.026806 +v -251.287643 1.595695 7.800000 +v -251.287643 20.595695 7.800000 +v -251.220657 20.595695 7.550000 +v -251.220657 1.595695 7.550000 +v -251.037643 20.595695 7.366987 +v -251.037643 1.595695 7.366987 +v -250.787643 20.595695 7.300000 +v -250.787643 1.595695 7.300000 +v -250.987640 1.595695 7.800000 +v -250.987640 20.595695 7.800000 +v -250.960846 20.595695 7.700000 +v -250.960846 1.595695 7.700000 +v -250.887634 20.595695 7.626795 +v -250.887634 1.595695 7.626795 +v -250.787643 20.595695 7.600000 +v -250.787643 1.595695 7.600000 +v -258.423737 7.828338 6.600000 +v -258.414246 7.907592 6.900000 +v -241.935547 6.281632 7.173211 +v -258.388397 8.124118 7.119615 +v -241.954712 6.121098 7.094294 +v -241.974777 5.953185 6.915394 +v -241.976303 5.940428 6.893425 +v -241.982193 5.891098 6.423299 +v -258.414246 7.907592 6.300000 +v -241.976303 5.940428 6.306575 +v -241.967590 6.013333 6.202471 +v -258.388397 8.124118 6.080385 +v -241.949219 6.167125 6.076644 +v -241.944000 6.210778 6.054175 +v -258.414246 14.283798 6.300000 +v -258.423737 14.363052 6.600000 +v -241.943954 15.980257 7.145989 +v -258.388397 14.067272 7.119615 +v -241.949219 16.024265 7.123356 +v -241.967560 16.177874 6.997740 +v -258.414246 14.283798 6.900000 +v -241.976288 16.250961 6.893425 +v -241.982178 16.300217 6.776949 +v -241.985321 16.326529 6.600000 +v -241.976288 16.250961 6.306575 +v -241.974747 16.237968 6.284216 +v -241.954666 16.069921 6.105448 +v -258.388397 14.067272 6.080385 +v -241.935516 15.909516 6.026714 +v -241.642044 5.857077 6.796869 +v -241.536240 5.887866 6.893425 +v -241.593643 5.851296 6.796869 +v -241.452042 5.801165 6.600000 +v -241.418854 5.797201 6.600000 +v -241.414948 5.829951 6.796869 +v -241.448135 5.833915 6.796869 +v -241.500351 5.806936 6.600000 +v -241.496445 5.839685 6.796869 +v -241.545273 5.812301 6.600000 +v -241.541351 5.845051 6.796869 +v -241.597565 5.818546 6.600000 +v -241.645950 5.824327 6.600000 +v -241.412109 5.853662 6.344186 +v -241.048828 5.833389 6.300000 +v -241.058304 5.754135 6.600000 +v -241.445297 5.857626 6.344186 +v -241.409836 5.872767 6.306575 +v -241.443008 5.876731 6.306575 +v -241.493607 5.863397 6.344186 +v -241.491333 5.882501 6.306575 +v -241.538528 5.868762 6.344186 +v -241.536240 5.887866 6.306575 +v -241.367783 6.224826 7.176501 +v -241.022964 6.049915 7.119615 +v -241.590820 5.875008 6.344186 +v -241.588531 5.894112 6.306575 +v -241.382751 6.099464 7.123356 +v -241.394470 6.001336 6.146582 +v -241.022964 6.049915 6.080385 +v -241.385406 6.077181 7.110027 +v -241.415939 6.103428 7.123356 +v -241.427658 6.005300 6.146582 +v -241.418594 6.081145 7.110027 +v -241.403946 5.921994 6.968601 +v -241.048828 5.833389 6.900000 +v -241.475967 6.011070 6.146582 +v -241.382751 6.099464 6.076644 +v -241.437134 5.925958 6.968601 +v -241.415939 6.103428 6.076644 +v -241.485443 5.931728 6.968601 +v -241.373291 6.178614 6.039135 +v -241.409836 5.872767 6.893425 +v -241.443008 5.876731 6.893425 +v -241.530365 5.937093 6.968601 +v -241.491333 5.882501 6.893425 +v -258.788391 8.716786 7.123356 +v -258.808136 8.944240 6.893425 +v -259.321014 8.845388 6.893425 +v -259.085785 8.069227 7.123356 +v -259.405853 7.928010 7.119615 +v -259.170288 8.348060 7.200000 +v -259.341248 8.918774 6.600000 +v -258.763214 8.426524 7.200000 +v -259.254791 8.626892 7.123356 +v -259.019592 7.850731 6.893425 +v -259.301361 7.736608 6.900000 +v -258.738007 8.136261 7.123356 +v -258.997528 7.777899 6.600000 +v -259.263123 7.666550 6.600000 +v -258.718262 7.908808 6.893425 +v -259.019592 7.850731 6.306575 +v -259.301361 7.736608 6.300000 +v -258.711700 7.832990 6.600000 +v -259.085785 8.069227 6.076644 +v -259.405853 7.928010 6.080385 +v -258.718262 7.908808 6.306575 +v -259.170288 8.348060 6.000000 +v -258.738007 8.136261 6.076644 +v -259.254791 8.626892 6.076644 +v -258.763214 8.426524 6.000000 +v -259.321014 8.845388 6.306575 +v -258.788391 8.716786 6.076644 +v -258.808136 8.944240 6.306575 +v -258.816620 9.019892 6.600000 +v -264.849060 4.956508 7.119615 +v -264.744568 4.765106 6.900000 +v -264.706329 4.695048 6.600000 +v -264.744568 4.765106 6.300000 +v -264.849060 4.956508 6.080385 +v -265.463318 5.629382 6.866801 +v -265.468567 5.691467 6.600000 +v -265.660461 5.738635 6.600000 +v -265.446045 4.576237 6.306575 +v -265.445038 4.514236 6.470262 +v -266.227112 4.706481 6.470262 +v -265.693909 5.686068 6.866801 +v -266.047394 5.036648 6.036922 +v -266.088318 4.961473 6.076644 +v -266.480927 5.420886 6.040299 +v -265.463074 5.615422 6.893425 +v -265.447174 4.645508 6.207237 +v -266.197479 4.760944 6.306575 +v -266.164337 4.821795 6.207237 +v -265.700592 5.673805 6.893425 +v -265.913361 5.282896 7.195278 +v -265.809753 5.473277 7.123356 +v -266.235229 5.585042 7.194453 +v -265.949036 5.217375 6.000000 +v -266.244965 5.578531 6.004050 +v -265.949036 5.217375 7.200000 +v -266.471710 5.427032 7.163877 +v -265.460175 5.438226 7.090979 +v -265.785309 5.518149 7.090979 +v -265.918640 5.273197 6.003424 +v -265.449799 4.804514 6.076644 +v -265.459351 5.387144 7.123356 +v -265.451202 4.890093 6.036922 +v -266.042053 5.046459 7.167092 +v -265.809753 5.473277 6.076644 +v -266.022278 5.727326 6.105172 +v -266.088318 4.961473 7.123356 +v -266.669189 5.295094 7.003324 +v -265.455780 5.170417 7.195278 +v -265.790192 5.509204 6.101975 +v -265.454559 5.095829 6.000000 +v -265.454559 5.095829 7.200000 +v -265.455597 5.159377 6.003424 +v -266.160400 4.829039 7.002154 +v -265.700592 5.673805 6.306575 +v -265.864166 5.832973 6.320356 +v -265.451385 4.901262 7.167092 +v -265.695221 5.683671 6.327735 +v -265.807068 5.871120 6.600000 +v -266.197479 4.760944 6.893425 +v -265.459351 5.387144 6.076644 +v -266.782104 5.219641 6.749801 +v -265.449799 4.804514 7.123356 +v -265.460022 5.428043 6.101975 +v -266.225861 4.708764 6.741037 +v -265.463074 5.615422 6.306575 +v -265.447327 4.653754 7.002154 +v -265.463257 5.626654 6.327735 +v -266.233856 4.694102 6.600000 +v -266.784485 5.218065 6.461748 +v -265.446045 4.576237 6.893425 +v -265.445068 4.516835 6.741037 +v -266.675720 5.290730 6.205563 +v -265.444794 4.500144 6.600000 +v -265.861908 5.834488 6.874367 +v -266.014221 5.732702 7.088002 +v -267.274811 9.248419 6.327735 +v -267.469635 9.209668 6.101975 +v -267.469635 12.981722 6.101975 +v -268.363464 13.159509 6.741037 +v -266.669189 16.896296 7.003324 +v -266.782104 16.971750 6.749801 +v -267.211182 12.930316 6.600000 +v -267.211182 9.261074 6.600000 +v -267.274811 12.942971 6.327735 +v -268.229156 13.132794 7.002154 +v -268.365997 13.160015 6.470262 +v -266.784485 16.973326 6.461748 +v -268.237244 13.134403 6.207237 +v -266.675720 16.900660 6.205563 +v -267.997314 13.086681 6.036922 +v -266.480927 16.770504 6.040299 +v -267.733185 13.034142 6.003424 +v -266.244965 16.612860 6.004050 +v -266.022278 16.464064 6.105172 +v -265.864166 16.358418 6.320356 +v -265.807068 16.320271 6.600000 +v -267.272125 9.248951 6.866801 +v -265.861908 16.356901 6.874367 +v -267.272125 12.942439 6.866801 +v -267.459656 9.211655 7.090979 +v -267.459656 12.979735 7.090979 +v -267.722351 9.159403 7.195278 +v -267.722351 13.031987 7.195278 +v -267.986359 9.106888 7.167092 +v -267.986359 13.084502 7.167092 +v -268.229156 9.058596 7.002154 +v -268.363464 9.031881 6.741037 +v -268.365997 9.031375 6.470262 +v -266.014221 16.458689 7.088002 +v -268.237244 9.056987 6.207237 +v -266.235229 16.606348 7.194453 +v -267.997314 9.104709 6.036922 +v -267.733185 9.157248 6.003424 +v -266.471710 16.764359 7.163877 +v -265.693909 16.505322 6.866801 +v -265.660461 16.452755 6.600000 +v -265.451202 17.301296 6.036922 +v -264.849060 17.234882 6.080385 +v -265.468567 16.499924 6.600000 +v -265.463318 16.562008 6.866801 +v -265.700592 16.517586 6.893425 +v -265.449799 17.386875 6.076644 +v -265.463074 16.575968 6.893425 +v -266.164337 17.369595 6.207237 +v -266.197479 17.430445 6.306575 +v -265.446045 17.615152 6.306575 +v -265.447174 17.545881 6.207237 +v -265.455780 17.020973 7.195278 +v -265.459351 16.804245 7.123356 +v -265.454559 17.095560 6.000000 +v -265.454559 17.095560 7.200000 +v -265.455597 17.032013 6.003424 +v -265.785309 16.673241 7.090979 +v -265.460175 16.753164 7.090979 +v -266.088318 17.229918 6.076644 +v -265.809753 16.718113 7.123356 +v -266.047394 17.154741 6.036922 +v -265.451385 17.290127 7.167092 +v -264.849060 17.234882 7.119615 +v -265.449799 17.386875 7.123356 +v -265.459351 16.804245 6.076644 +v -265.460022 16.763346 6.101975 +v -265.913361 16.908495 7.195278 +v -265.949036 16.974016 6.000000 +v -265.949036 16.974016 7.200000 +v -265.918640 16.918194 6.003424 +v -265.447327 17.537636 7.002154 +v -264.744568 17.426285 6.900000 +v -265.463074 16.575968 6.306575 +v -266.042053 17.144930 7.167092 +v -265.463257 16.564735 6.327735 +v -265.809753 16.718113 6.076644 +v -265.446045 17.615152 6.893425 +v -266.088318 17.229918 7.123356 +v -265.790192 16.682186 6.101975 +v -265.445068 17.674555 6.741037 +v -265.700592 16.517586 6.306575 +v -264.706329 17.496342 6.600000 +v -266.160400 17.362350 7.002154 +v -265.695221 16.507719 6.327735 +v -265.444794 17.691246 6.600000 +v -266.197479 17.430445 6.893425 +v -265.445038 17.677153 6.470262 +v -264.744568 17.426285 6.300000 +v -266.225861 17.482626 6.741037 +v -266.233856 17.497288 6.600000 +v -266.227112 17.484909 6.470262 +v -259.405853 14.263380 7.119615 +v -259.301361 14.454782 6.900000 +v -259.263123 14.524840 6.600000 +v -259.301361 14.454782 6.300000 +v -259.405853 14.263380 6.080385 +v -259.254791 13.564498 7.123356 +v -259.321014 13.346002 6.893425 +v -258.808136 13.247150 6.893425 +v -258.738007 14.055129 7.123356 +v -258.763214 13.764866 7.200000 +v -258.816620 13.171498 6.600000 +v -259.170288 13.843330 7.200000 +v -258.788391 13.474604 7.123356 +v -258.718262 14.282582 6.893425 +v -259.085785 14.122163 7.123356 +v -258.711700 14.358400 6.600000 +v -259.341248 13.272616 6.600000 +v -259.019592 14.340659 6.893425 +v -258.718262 14.282582 6.306575 +v -258.997528 14.413491 6.600000 +v -258.738007 14.055129 6.076644 +v -259.019592 14.340659 6.306575 +v -258.763214 13.764866 6.000000 +v -259.085785 14.122163 6.076644 +v -258.788391 13.474604 6.076644 +v -259.170288 13.843330 6.000000 +v -258.808136 13.247150 6.306575 +v -259.254791 13.564498 6.076644 +v -259.321014 13.346002 6.306575 +v -241.403870 16.268764 6.230577 +v -241.431671 16.359209 6.402468 +v -241.414917 16.361212 6.402468 +v -241.432159 16.363239 6.785395 +v -241.493057 16.327658 6.856662 +v -241.428818 16.335331 6.856662 +v -241.420639 16.266764 6.230577 +v -241.496399 16.355566 6.785395 +v -241.470718 16.140665 6.114590 +v -241.529831 16.253719 6.230577 +v -241.484863 16.259090 6.230577 +v -241.415390 16.365240 6.785395 +v -241.412064 16.337334 6.856662 +v -241.029175 16.193405 7.085410 +v -240.987640 16.198366 7.085410 +v -241.406494 16.148338 6.114590 +v -241.389725 16.150339 7.085410 +v -241.373215 16.012104 7.161123 +v -241.389725 16.150339 6.114590 +v -241.054840 16.408306 6.414605 +v -241.415390 16.365240 6.414605 +v -241.418854 16.394190 6.600000 +v -241.597137 16.372894 6.600000 +v -241.645660 16.367098 6.600000 +v -241.593689 16.343945 6.785395 +v -241.058304 16.437256 6.600000 +v -241.033844 16.232462 7.053997 +v -241.394394 16.189394 7.053997 +v -240.987640 16.416328 6.414590 +v -241.054367 16.404278 6.402468 +v -241.544815 16.379145 6.600000 +v -241.541351 16.350195 6.785395 +v -241.402069 16.111290 6.089397 +v -241.499847 16.384514 6.600000 +v -241.385300 16.113293 6.089397 +v -241.367722 15.966094 6.023362 +v -241.642212 16.338150 6.414605 +v -241.043320 16.311831 6.230577 +v -240.987640 16.198366 6.114590 +v -241.641724 16.334120 6.402468 +v -241.029175 16.193405 6.114590 +v -241.435608 16.392187 6.600000 +v -241.024750 16.156359 6.089397 +v -241.007172 16.009161 6.023362 +v -241.593689 16.343945 6.414605 +v -241.389969 16.010101 7.161123 +v -241.593201 16.339916 6.402468 +v -241.470718 16.140665 7.085410 +v -241.541351 16.350195 6.414605 +v -241.540878 16.346167 6.402468 +v -241.475388 16.179720 7.053997 +v -241.406494 16.148338 7.085410 +v -241.051514 16.380400 6.856662 +v -240.987640 16.416328 6.785410 +v -241.411148 16.187393 7.053997 +v -241.496399 16.355566 6.414605 +v -241.590347 16.316038 6.856662 +v -241.495911 16.351538 6.402468 +v -241.054840 16.408306 6.785395 +v -241.538025 16.322289 6.856662 +v -241.432159 16.363239 6.414605 +v -14.750000 10.000000 15.100000 +v 4.250000 10.000000 15.100000 +v 4.250000 10.500000 14.966025 +v -14.750000 10.500000 14.966025 +v 4.250000 10.866025 14.600000 +v -14.750000 10.866025 14.600000 +v 4.250000 11.000000 14.100000 +v -14.750000 11.000000 14.100000 +v -0.035104 9.348429 14.355808 +v 4.250000 9.393783 14.450000 +v 4.250000 9.300000 14.100000 +v -1.183611 9.300000 14.100000 +v -9.360910 9.334323 14.316487 +v -1.128023 9.342755 14.340892 +v -14.750000 9.300000 14.100000 +v -10.486301 9.328493 14.297517 +v -10.516389 9.300000 14.100000 +v -0.170752 9.466749 14.553389 +v 4.250000 9.650000 14.706218 +v -14.750000 9.393783 14.450000 +v -0.336883 9.581157 14.660864 +v -0.543066 9.639445 14.700000 +v -0.752885 9.586021 14.664463 +v -9.823967 9.616641 14.685694 +v -9.700153 9.562624 14.646523 +v -9.956934 9.639445 14.700000 +v 4.250000 10.000000 14.800000 +v -10.118398 9.603161 14.676639 +v -14.750000 9.650000 14.706218 +v -10.257875 9.521346 14.610527 +v -14.750000 10.000000 14.800000 +v -10.401695 9.405489 14.469361 +v -9.316389 9.300000 14.100000 +v -9.478597 9.421565 14.494125 +v -0.986776 9.446009 14.527892 +v 0.016389 9.300000 14.100000 +v -14.750000 10.700000 14.100000 +v -14.750000 10.606217 13.750000 +v 4.250000 10.700000 14.100000 +v 4.250000 10.606217 13.750000 +v -14.750000 10.350000 13.493782 +v 4.250000 10.350000 13.493782 +v -14.750000 10.000000 13.400000 +v 4.250000 10.000000 13.400000 +v -9.440072 9.662496 6.300000 +v -9.498275 9.586737 6.205833 +v -9.506378 9.654575 6.205833 +v -9.431969 9.594657 6.300000 +v -9.661154 9.674774 7.119615 +v -9.537490 9.650860 7.027692 +v -9.542046 9.689001 7.027692 +v -9.392564 9.599363 6.383511 +v -9.376180 9.462195 6.383511 +v -9.415585 9.457488 6.300000 +v -9.656598 9.636633 7.119615 +v -9.751485 9.625299 7.164342 +v -9.956934 9.639445 7.200000 +v -9.746773 9.585861 7.164345 +v -9.695780 9.964671 6.080385 +v -9.747437 9.958501 6.053473 +v -9.700000 10.000000 6.080385 +v -9.661154 9.674774 6.080385 +v -9.712811 9.668604 6.053473 +v -9.756041 9.663441 7.164342 +v -9.576672 9.978897 7.027692 +v -9.480385 10.000000 6.900000 +v -9.700000 10.000000 7.119615 +v -9.479254 9.990534 6.900000 +v -9.444628 9.700637 6.300000 +v -9.510934 9.692718 6.205833 +v -9.444628 9.700637 6.900000 +v -9.695780 9.964671 7.119615 +v -9.332987 9.438957 6.600000 +v -9.322185 9.348525 6.600000 +v -9.362034 9.343765 6.383511 +v -9.372835 9.434197 6.383511 +v -9.790667 9.953337 7.164342 +v -10.000000 10.000000 7.200000 +v -9.400666 9.667202 6.383511 +v -9.336330 9.466955 6.600000 +v -9.405223 9.705343 6.383511 +v -9.545560 9.982614 6.205833 +v -9.480385 10.000000 6.300000 +v -9.352715 9.604123 6.600000 +v -9.360818 9.671962 6.600000 +v -9.479254 9.990534 6.300000 +v -9.382578 9.433033 6.840475 +v -9.828523 9.654783 6.014307 +v -9.956934 9.639445 6.000000 +v -10.000000 10.000000 6.000000 +v -9.371777 9.342603 6.840475 +v -9.823967 9.616641 6.014307 +v -9.365374 9.710103 6.600000 +v -9.708255 9.630463 6.053473 +v -9.700153 9.562624 6.053477 +v -9.385921 9.461032 6.840475 +v -9.412241 9.429490 6.900000 +v -9.513012 9.445860 7.027701 +v -9.481891 9.449569 6.205833 +v -9.478597 9.421565 6.205875 +v -9.439849 9.995240 6.383511 +v -9.400000 10.000000 6.600000 +v -9.656598 9.636633 6.080385 +v -9.415585 9.457488 6.900000 +v -9.402306 9.598200 6.840475 +v -9.412241 9.429490 6.300000 +v -9.360910 9.334323 6.383513 +v -9.431969 9.594657 6.900000 +v -9.410409 9.666039 6.840475 +v -9.414965 9.704180 6.840475 +v -9.440072 9.662496 6.900000 +v -9.529387 9.583021 7.027692 +v -9.648495 9.568794 7.119615 +v -9.316389 9.300000 6.600000 +v -7.894766 -8.703679 6.080385 +v -11.127728 -14.004154 6.000000 +v -8.156225 -8.560946 6.000000 +v -10.866268 -14.146888 6.080385 +v -7.703364 -8.808167 6.300000 +v -10.674866 -14.251376 6.300000 +v -7.633306 -8.846413 6.600000 +v -10.674866 -14.251376 6.900000 +v -10.604808 -14.289621 6.600000 +v -7.703364 -8.808167 6.900000 +v -10.866268 -14.146888 7.119615 +v -7.894766 -8.703679 7.119615 +v -11.127728 -14.004154 7.200000 +v -8.156225 -8.560946 7.200000 +v 0.627728 -14.004154 6.000000 +v -2.605234 -8.703679 6.080385 +v -2.343774 -8.560946 6.000000 +v 0.366268 -14.146888 6.080385 +v -2.796636 -8.808167 6.300000 +v 0.174866 -14.251376 6.300000 +v -2.866694 -8.846413 6.600000 +v 0.104808 -14.289621 6.600000 +v 0.174866 -14.251376 6.900000 +v -2.796636 -8.808167 6.900000 +v 0.366268 -14.146888 7.119615 +v -2.605234 -8.703679 7.119615 +v 0.627728 -14.004154 7.200000 +v -2.343774 -8.560946 7.200000 +v -1.147253 9.604395 6.600000 +v -1.089402 9.666092 6.359108 +v -1.097482 9.598451 6.359108 +v -1.139173 9.672036 6.600000 +v -1.094634 9.705326 6.816865 +v -1.012306 10.061193 6.900000 +v -1.091560 10.070659 6.600000 +v -1.134627 9.710103 6.600000 +v -1.163647 9.467143 6.600000 +v -1.113876 9.461199 6.359108 +v -1.099181 9.667259 6.816865 +v -1.166982 9.439222 6.600000 +v -1.117211 9.433277 6.359108 +v -1.059061 9.701077 6.893425 +v -1.107260 9.599618 6.816865 +v -1.063608 9.663011 6.893425 +v -1.177794 9.348701 6.600000 +v -1.128023 9.342755 6.359108 +v -1.183611 9.300000 6.600000 +v -1.138930 9.334444 6.816864 +v -1.071687 9.595369 6.893425 +v -0.988764 9.692681 6.994519 +v -0.795780 10.035329 7.119615 +v -0.993311 9.654614 6.994519 +v -1.123654 9.462367 6.816865 +v -0.743641 9.663403 6.035541 +v -0.500000 10.000000 6.000000 +v -0.543066 9.639445 6.000000 +v -0.795780 10.035329 6.080385 +v -1.126989 9.434445 6.816865 +v -0.748187 9.625336 6.035541 +v -0.752885 9.586021 6.035537 +v -1.001390 9.586973 6.994519 +v -0.832364 9.674000 6.076644 +v -0.836911 9.635933 6.076644 +v -0.986776 9.446009 6.172108 +v -1.088081 9.458117 6.893425 +v -1.091416 9.430196 6.893425 +v -1.021081 9.421795 6.994485 +v -0.957746 9.688976 6.172099 +v -1.012306 10.061193 6.300000 +v -1.137801 9.343924 6.816865 +v -0.962293 9.650909 6.172099 +v -0.832364 9.674000 7.123356 +v -0.970372 9.583268 6.172099 +v -0.836911 9.635933 7.123356 +v -1.059061 9.701077 6.306575 +v -1.017784 9.449721 6.994519 +v -1.063608 9.663011 6.306575 +v -0.786790 9.668556 7.146710 +v -1.084856 9.704159 6.359108 +v -0.791337 9.630489 7.146710 +v -0.799415 9.562848 7.146708 +v -0.675863 9.616696 7.185730 +v -0.844990 9.568292 7.123356 +v -0.671316 9.654763 7.185730 +v -0.543066 9.639445 7.200000 +v -1.071687 9.595369 6.306575 +v -0.500000 10.000000 7.200000 +v -1.088081 9.458117 6.306575 +v -1.091416 9.430196 6.306575 +v -9.291253 9.006003 6.708046 +v -7.413491 -7.304230 6.900000 +v -7.334237 -7.294764 6.600000 +v -9.601801 8.968909 6.066753 +v -7.925797 -7.365422 6.000000 +v -9.904445 9.200000 6.000000 +v -9.623935 9.154047 6.066793 +v -7.630017 -7.330093 6.080385 +v -9.583675 8.971075 6.076644 +v -9.407283 9.066412 6.241836 +v -9.398429 8.993201 6.241759 +v -7.413491 -7.304230 6.300000 +v -9.356978 8.998153 6.306575 +v -9.294680 9.007900 6.475753 +v -9.294243 9.005646 6.475718 +v -9.281413 9.007178 6.600000 +v -9.356978 8.998153 6.893425 +v -9.382429 9.054147 6.924382 +v -9.375365 8.995956 6.924455 +v -9.523352 8.978280 7.083996 +v -9.540929 9.124959 7.083914 +v -7.630017 -7.330093 7.119615 +v -9.687303 8.958697 7.169681 +v -9.713521 9.178067 7.169634 +v -9.904445 9.200000 7.200000 +v -7.925797 -7.365422 7.200000 +v -3.165763 -7.294764 6.600000 +v -1.208737 9.006007 6.491891 +v -3.086509 -7.304230 6.300000 +v -0.812556 8.958686 6.030272 +v -0.595556 9.200000 6.000000 +v -2.574203 -7.365422 6.000000 +v -2.869983 -7.330093 6.080385 +v -0.958881 9.125034 6.115958 +v -0.786332 9.178094 6.030322 +v -0.976472 8.978265 6.115873 +v -1.117429 9.054217 6.275412 +v -1.124503 8.995946 6.275339 +v -1.143021 8.998158 6.306575 +v -1.205740 9.005650 6.724360 +v -3.086509 -7.304230 6.900000 +v -1.205305 9.007907 6.724326 +v -1.143021 8.998158 6.893425 +v -1.092577 9.066481 6.958350 +v -1.101436 8.993191 6.958423 +v -2.869983 -7.330093 7.119615 +v -0.916324 8.971080 7.123356 +v -0.875857 9.154113 7.133314 +v -0.898000 8.968891 7.133351 +v -2.574203 -7.365422 7.200000 +v -0.595556 9.200000 7.200000 +v 4.250000 10.587786 5.790983 +v 4.250000 10.000000 5.600000 +v -14.750000 10.000000 5.600000 +v -14.750000 10.587786 5.790983 +v 4.250000 10.951056 6.290983 +v -14.750000 10.951056 6.290983 +v 4.250000 10.951056 6.909017 +v -14.750000 10.951056 6.909017 +v 4.250000 10.587786 7.409017 +v -14.750000 10.587786 7.409017 +v 4.250000 10.000000 7.600000 +v -14.750000 10.000000 7.600000 +v -10.516389 9.300000 6.600000 +v -10.486301 9.328493 6.402483 +v -14.750000 9.300000 6.600000 +v -14.750000 9.433688 6.188550 +v -10.401695 9.405489 6.230639 +v -10.257875 9.521346 6.089473 +v -10.118398 9.603161 6.023361 +v 4.250000 9.300000 6.600000 +v 4.250000 9.433688 6.188550 +v -0.035104 9.348429 6.344192 +v -14.750000 9.783689 5.934260 +v -0.336883 9.581157 6.039136 +v -0.170752 9.466749 6.146612 +v 4.250000 9.783689 5.934260 +v 4.250000 10.216311 5.934260 +v -14.750000 10.216311 5.934260 +v 4.250000 10.566312 6.188550 +v -14.750000 10.566312 6.188550 +v 4.250000 10.700000 6.600000 +v -14.750000 10.700000 6.600000 +v 0.016389 9.300000 6.600000 +v -10.263665 9.569420 14.610602 +v -10.509871 9.491247 13.914605 +v -10.487706 9.542660 13.843338 +v -10.481963 9.494580 13.843338 +v -10.267597 9.602338 14.610602 +v -10.515614 9.539326 13.914605 +v -10.304645 9.597913 14.585410 +v -10.300713 9.564995 14.585410 +v -10.470343 9.397289 13.843338 +v -10.328623 9.467293 13.646041 +v -10.464525 9.348771 13.843349 +v -10.476593 9.449618 13.843338 +v -10.294970 9.516916 14.585410 +v -10.419138 9.550850 14.469422 +v -10.413395 9.502770 14.469422 +v -10.408025 9.457808 14.469422 +v -10.504500 9.446285 13.914605 +v -10.120399 9.619920 14.676638 +v -10.000000 10.000000 14.700000 +v -10.498250 9.393956 13.914605 +v -10.163465 9.980474 14.676638 +v -10.310663 9.962893 14.610602 +v -10.548494 9.568787 14.100000 +v -10.591560 9.929341 14.100000 +v -10.562612 9.932799 13.914605 +v -10.519546 9.572244 13.914605 +v -10.544562 9.535869 14.100000 +v -10.466136 9.944323 14.469422 +v -10.352672 10.000000 14.585410 +v -10.570634 10.000000 14.285410 +v -10.558582 9.933280 14.297532 +v -10.538819 9.487789 14.100000 +v -10.533449 9.442827 14.100000 +v -10.527199 9.390498 14.100000 +v -10.347711 9.958467 14.585410 +v -10.519546 9.572244 14.285396 +v -10.562612 9.932799 14.285396 +v -10.347711 9.958467 13.614590 +v -10.352672 10.000000 13.614590 +v -10.000000 10.000000 13.500000 +v -10.515516 9.572725 14.297532 +v -10.386766 9.953803 13.646003 +v -10.515614 9.539326 14.285396 +v -10.166409 9.614425 13.538877 +v -9.956934 9.639445 13.500000 +v -10.162477 9.581507 13.538877 +v -10.534704 9.936132 13.843338 +v -10.570634 10.000000 13.914590 +v -10.511584 9.539807 14.297532 +v -10.519321 9.324548 14.100000 +v -10.509871 9.491247 14.285396 +v -10.304645 9.597913 13.614590 +v -10.300713 9.564995 13.614590 +v -10.505842 9.491729 14.297532 +v -10.504500 9.446285 14.285396 +v -10.343699 9.593247 13.646003 +v -10.339768 9.560329 13.646003 +v -10.500471 9.446766 14.297532 +v -10.498250 9.393956 14.285396 +v -10.334025 9.512251 13.646003 +v -10.494221 9.394437 14.297532 +v -10.491638 9.575578 13.843338 +v -10.423070 9.583768 14.469422 +v -10.490373 9.328006 14.285396 +v -10.395248 -11.577869 13.806575 +v -9.600555 -10.598624 13.576644 +v -10.194857 -11.687265 13.576644 +v -10.462047 -11.541404 14.100000 +v -9.800948 -10.489227 13.806575 +v -9.867745 -10.452763 14.100000 +v -10.395248 -11.577869 14.393425 +v -9.800948 -10.489227 14.393425 +v -10.789157 -12.775908 13.576644 +v -11.389187 -13.861422 13.580385 +v -11.580589 -13.756933 13.800000 +v -11.127728 -14.004154 13.500000 +v -10.194857 -11.687265 14.623356 +v -11.127728 -14.004154 14.700000 +v -9.600555 -10.598624 14.623356 +v -10.989549 -12.666512 13.806575 +v -11.056347 -12.630046 14.100000 +v -11.650647 -13.718688 14.100000 +v -10.989549 -12.666512 14.393425 +v -11.580589 -13.756933 14.400000 +v -10.789157 -12.775908 14.623356 +v -11.389187 -13.861422 14.619616 +v -9.006255 -9.509982 13.576644 +v -8.417686 -8.418212 13.580385 +v -8.156225 -8.560946 13.500000 +v -9.206648 -9.400586 13.806575 +v -8.609087 -8.313724 13.800000 +v -9.273445 -9.364120 14.100000 +v -8.679145 -8.275478 14.100000 +v -9.206648 -9.400586 14.393425 +v -8.609087 -8.313724 14.400000 +v -9.006255 -9.509982 14.623356 +v -8.156225 -8.560946 14.700000 +v -8.417686 -8.418212 14.619616 +v -0.699052 -10.489227 13.806575 +v -0.104751 -11.577869 13.806575 +v -0.305144 -11.687265 13.576644 +v -0.899444 -10.598624 13.576644 +v -0.632254 -10.452763 14.100000 +v -0.037954 -11.541404 14.100000 +v -0.699052 -10.489227 14.393425 +v -0.104751 -11.577869 14.393425 +v -1.493744 -9.509982 13.576644 +v -2.343774 -8.560946 13.500000 +v -2.082314 -8.418212 13.580385 +v -0.899444 -10.598624 14.623356 +v -2.343774 -8.560946 14.700000 +v 0.627728 -14.004154 14.700000 +v -0.305144 -11.687265 14.623356 +v -1.293352 -9.400586 13.806575 +v -1.890913 -8.313724 13.800000 +v -1.226555 -9.364120 14.100000 +v -1.820855 -8.275478 14.100000 +v -1.293352 -9.400586 14.393425 +v -1.890913 -8.313724 14.400000 +v -1.493744 -9.509982 14.623356 +v -2.082314 -8.418212 14.619616 +v 0.289157 -12.775908 13.576644 +v 0.889187 -13.861422 13.580385 +v 0.627728 -14.004154 13.500000 +v 0.489549 -12.666512 13.806575 +v 1.080589 -13.756933 13.800000 +v 0.556347 -12.630046 14.100000 +v 1.150647 -13.718688 14.100000 +v 0.489549 -12.666512 14.393425 +v 1.080589 -13.756933 14.400000 +v 0.289157 -12.775908 14.623356 +v 0.889187 -13.861422 14.619616 +v 0.006009 9.491199 13.903131 +v -0.042171 9.451397 13.806575 +v -0.036806 9.496314 13.806575 +v 0.000644 9.446282 13.903131 +v 0.011780 9.539512 13.903131 +v -0.031036 9.544625 13.806575 +v 0.021368 9.341683 14.100000 +v -0.013505 9.328316 13.903152 +v -0.011382 9.345595 13.903131 +v 0.015744 9.572698 13.903131 +v 0.012306 9.938807 13.800000 +v 0.091560 9.929341 14.100000 +v -0.027072 9.577812 13.806575 +v 0.027149 9.390082 14.100000 +v -0.005601 9.393994 13.903131 +v 0.033394 9.442370 14.100000 +v 0.038759 9.487288 14.100000 +v 0.044530 9.535600 14.100000 +v 0.048494 9.568787 14.100000 +v -0.029312 9.396827 14.355814 +v -0.048417 9.399109 14.393425 +v -0.023067 9.449115 14.355814 +v -0.379131 9.619864 13.523499 +v -0.381151 9.602960 13.523499 +v -0.543066 9.639445 13.500000 +v -0.500000 10.000000 13.500000 +v -0.042171 9.451397 14.393425 +v -0.204220 9.964671 13.580385 +v -0.257733 9.571703 13.576644 +v -0.241272 9.520736 13.590053 +v -0.017702 9.494032 14.355814 +v -0.036806 9.496314 14.393425 +v -0.235450 9.569042 13.589972 +v -0.253769 9.604890 13.576644 +v -0.011931 9.542344 14.355814 +v -0.231486 9.602228 13.589972 +v -0.007967 9.575530 14.355814 +v -0.091398 9.457276 13.731399 +v -0.097741 9.405000 13.731475 +v 0.012306 9.938807 14.400000 +v -0.048417 9.399109 13.806575 +v -0.031036 9.544625 14.393425 +v -0.027072 9.577812 14.393425 +v -0.086033 9.502193 13.731399 +v -0.165375 9.511670 14.553418 +v -0.159605 9.559982 14.553418 +v -0.080263 9.550506 13.731399 +v -0.155641 9.593169 14.553418 +v -0.204220 9.964671 14.619616 +v -0.076299 9.583692 13.731399 +v -0.257733 9.571703 14.623356 +v -0.253769 9.604890 14.623356 +v -0.332919 9.614344 14.660865 +v -0.500000 10.000000 14.700000 +v -8.438103 -7.426614 14.400000 +v -10.476145 9.002880 14.174391 +v -8.517357 -7.436081 14.100000 +v -10.134562 9.043680 13.554011 +v -10.148715 9.162208 13.554020 +v -9.904445 9.200000 13.500000 +v -7.925797 -7.365422 13.500000 +v -8.221577 -7.400752 13.580385 +v -10.178570 9.038424 13.576644 +v -10.339601 9.082518 13.702272 +v -10.332178 9.020076 13.702260 +v -8.438103 -7.426614 13.800000 +v -10.405267 9.011346 13.806575 +v -10.455685 9.015849 13.923075 +v -10.454522 9.005463 13.923051 +v -10.480833 9.002320 14.100000 +v -10.405267 9.011346 14.393425 +v -10.396736 9.051228 14.415712 +v -10.392273 9.012898 14.415784 +v -10.224227 9.032970 14.594552 +v -10.235834 9.130877 14.594424 +v -8.221577 -7.400752 14.619616 +v -10.063821 9.052130 14.673286 +v -7.925797 -7.365422 14.700000 +v -9.904445 9.200000 14.700000 +v -10.079127 9.180521 14.673194 +v -0.023848 9.002877 14.025676 +v -1.982643 -7.436081 14.100000 +v -2.061897 -7.426614 13.800000 +v -0.435937 9.052099 13.526790 +v -2.278423 -7.400752 13.580385 +v -2.574203 -7.365422 13.500000 +v -0.595556 9.200000 13.500000 +v -0.420628 9.180484 13.526872 +v -0.263804 9.130726 13.605830 +v -0.275403 9.032925 13.605706 +v -0.103036 9.051098 13.784675 +v -0.107490 9.012868 13.784606 +v -0.094733 9.011344 13.806575 +v -0.045403 9.005452 14.276701 +v -2.061897 -7.426614 14.400000 +v -0.044253 9.015815 14.276674 +v -0.094733 9.011344 14.393425 +v -0.160232 9.082429 14.497499 +v -0.167638 9.020053 14.497529 +v -2.278423 -7.400752 14.619616 +v -0.321430 9.038422 14.623356 +v -0.350940 9.162101 14.645810 +v -0.365083 9.043636 14.645824 +v -0.595556 9.200000 14.700000 +v -2.574203 -7.365422 14.700000 +v -14.750000 9.078046 14.487298 +v -14.750000 9.017779 13.912271 +v -9.623935 9.154047 14.633206 +v -0.958881 9.125034 14.584043 +v -0.786332 9.178094 14.669678 +v 4.250000 9.285857 13.400000 +v 4.250000 9.446510 14.932856 +v 4.250000 9.078046 14.487298 +v -14.750000 9.285857 13.400000 +v -14.750000 9.446510 14.932856 +v -9.713521 9.178067 13.530366 +v -0.875857 9.154113 13.566686 +v -9.407283 9.066412 14.458164 +v -9.294680 9.007900 14.224247 +v -1.117429 9.054217 14.424587 +v -9.291253 9.006003 13.991954 +v -1.208737 9.006007 14.208109 +v -9.382429 9.054147 13.775618 +v -1.205305 9.007907 13.975675 +v 4.250000 9.017779 13.912271 +v -9.540929 9.124959 13.616086 +v -1.092577 9.066481 13.741650 +v 4.250000 9.650000 13.493782 +v -0.675863 9.616696 13.514271 +v -9.746773 9.585861 13.535655 +v -0.799415 9.562848 13.553291 +v 4.250000 9.393783 13.750000 +v -14.750000 9.650000 13.493782 +v -14.750000 9.393783 13.750000 +v -9.371777 9.342603 13.859525 +v -1.138930 9.334444 13.883136 +v -1.021081 9.421795 13.705515 +v -9.513012 9.445860 13.672299 +v -14.750000 10.350000 14.706218 +v 4.250000 10.350000 14.706218 +v -14.750000 10.606217 14.450000 +v 4.250000 10.606217 14.450000 +v -14.750000 10.866025 13.600000 +v 4.250000 10.866025 13.600000 +v -14.750000 10.500000 13.233974 +v 4.250000 10.500000 13.233974 +v -14.750000 10.000000 13.100000 +v 4.250000 10.000000 13.100000 +v -14.750000 -0.233013 13.150000 +v 4.250000 -0.300000 12.900000 +v 4.250000 -0.233013 13.150000 +v -14.750000 -0.300000 12.900000 +v -14.750000 -0.050000 13.333013 +v 4.250000 -0.050000 13.333013 +v -14.750000 0.200000 13.400000 +v 4.250000 0.200000 13.400000 +v -14.750000 -0.000000 12.900000 +v -14.750000 0.026795 13.000000 +v 4.250000 0.000000 12.900000 +v 4.250000 0.026795 13.000000 +v -14.750000 0.100000 13.073205 +v 4.250000 0.100000 13.073205 +v -14.750000 0.200000 13.100000 +v 4.250000 0.200000 13.100000 +v -3.165763 -7.294764 14.100000 +v -3.086509 -7.304230 14.400000 +v -0.812556 8.958686 14.669727 +v -2.869983 -7.330093 14.619616 +v -0.976472 8.978265 14.584126 +v -1.124503 8.995946 14.424661 +v -1.143021 8.998158 14.393425 +v -1.205740 9.005650 13.975640 +v -3.086509 -7.304230 13.800000 +v -1.143021 8.998158 13.806575 +v -1.101436 8.993191 13.741577 +v -2.869983 -7.330093 13.580385 +v -0.916324 8.971080 13.576644 +v -0.898000 8.968891 13.566649 +v -7.413491 -7.304230 13.800000 +v -7.334237 -7.294764 14.100000 +v -9.601801 8.968909 14.633246 +v -7.630017 -7.330093 14.619616 +v -9.583675 8.971075 14.623356 +v -9.398429 8.993201 14.458241 +v -7.413491 -7.304230 14.400000 +v -9.356978 8.998153 14.393425 +v -9.294243 9.005646 14.224281 +v -9.281413 9.007178 14.100000 +v -9.356978 8.998153 13.806575 +v -9.375365 8.995956 13.775545 +v -9.523352 8.978280 13.616004 +v -7.630017 -7.330093 13.580385 +v -9.687303 8.958697 13.530319 +v -1.089402 9.666092 14.340892 +v -1.097482 9.598451 14.340892 +v -1.071687 9.595369 14.393425 +v -1.063608 9.663011 14.393425 +v -1.166982 9.439222 14.100000 +v -1.117211 9.433277 14.340892 +v -1.177794 9.348701 14.100000 +v -1.084856 9.704159 14.340892 +v -1.012306 10.061193 14.400000 +v -1.091560 10.070659 14.100000 +v -1.059061 9.701077 14.393425 +v -1.163647 9.467143 14.100000 +v -1.113876 9.461199 14.340892 +v -1.137801 9.343924 13.883135 +v -1.147253 9.604395 14.100000 +v -1.126989 9.434445 13.883135 +v -1.139173 9.672036 14.100000 +v -1.123654 9.462367 13.883135 +v -1.134627 9.710103 14.100000 +v -1.091416 9.430196 13.806575 +v -1.088081 9.458117 13.806575 +v -0.748187 9.625336 14.664459 +v -1.107260 9.599618 13.883135 +v -0.844990 9.568292 14.623356 +v -1.017784 9.449721 13.705482 +v -0.743641 9.663403 14.664459 +v -0.795780 10.035329 14.619616 +v -1.099181 9.667259 13.883135 +v -0.836911 9.635933 14.623356 +v -1.071687 9.595369 13.806575 +v -0.832364 9.674000 14.623356 +v -1.094634 9.705326 13.883135 +v -1.091416 9.430196 14.393425 +v -1.012306 10.061193 13.800000 +v -0.970372 9.583268 14.527901 +v -1.063608 9.663011 13.806575 +v -1.059061 9.701077 13.806575 +v -1.088081 9.458117 14.393425 +v -1.001390 9.586973 13.705482 +v -0.993311 9.654614 13.705482 +v -0.962293 9.650909 14.527901 +v -0.988764 9.692681 13.705482 +v -0.795780 10.035329 13.580385 +v -0.844990 9.568292 13.576644 +v -0.957746 9.688976 14.527901 +v -0.836911 9.635933 13.576644 +v -0.832364 9.674000 13.576644 +v -0.791337 9.630489 13.553290 +v -0.786790 9.668556 13.553290 +v -0.671316 9.654763 13.514270 +v -2.502364 -8.182652 13.500000 +v -2.781197 -8.267149 13.576644 +v -2.871092 -7.800752 13.576644 +v -2.999693 -8.333362 13.806575 +v -3.098545 -7.820493 13.806575 +v -3.073079 -8.353602 14.100000 +v -2.796636 -8.808167 13.800000 +v -2.866694 -8.846413 14.100000 +v -2.223532 -8.098156 13.576644 +v -2.580829 -7.775559 13.500000 +v -2.005036 -8.031943 13.806575 +v -2.290566 -7.750367 13.576644 +v -1.932204 -8.009872 14.100000 +v -3.174196 -7.828978 14.100000 +v -2.063113 -7.730626 13.806575 +v -2.005036 -8.031943 14.393425 +v -1.987295 -7.724045 14.100000 +v -2.223532 -8.098156 14.623356 +v -2.063113 -7.730626 14.393425 +v -2.502364 -8.182652 14.700000 +v -2.290566 -7.750367 14.623356 +v -2.781197 -8.267149 14.623356 +v -2.605234 -8.703679 14.619616 +v -2.580829 -7.775559 14.700000 +v -2.999693 -8.333362 14.393425 +v -2.796636 -8.808167 14.400000 +v -2.871092 -7.800752 14.623356 +v -3.098545 -7.820493 14.393425 +v -2.605234 -8.703679 13.580385 +v -1.678093 -11.023696 14.100000 +v -1.016995 -12.075872 14.393425 +v -1.611296 -10.987230 14.393425 +v -1.083793 -12.112338 14.100000 +v -1.611296 -10.987230 13.806575 +v -1.016995 -12.075872 13.806575 +v -2.005203 -9.789192 14.623356 +v -1.410903 -10.877834 14.623356 +v -1.410903 -10.877834 13.576644 +v -0.816603 -11.966476 13.576644 +v -2.205596 -9.898589 14.393425 +v -2.272393 -9.935054 14.100000 +v -2.205596 -9.898589 13.806575 +v -2.005203 -9.789192 13.576644 +v -0.222302 -13.055118 14.623356 +v 0.366268 -14.146888 14.619616 +v -0.422695 -13.164515 14.393425 +v 0.174866 -14.251376 14.400000 +v -0.489492 -13.200980 14.100000 +v 0.174866 -14.251376 13.800000 +v 0.104808 -14.289621 14.100000 +v -0.422695 -13.164515 13.806575 +v 0.366268 -14.146888 13.580385 +v -0.816603 -11.966476 14.623356 +v -0.222302 -13.055118 13.576644 +v 0.372418 -14.822099 13.576644 +v 0.112993 -15.026593 13.611998 +v 0.327546 -14.797675 13.609021 +v 1.269458 -14.458407 14.393425 +v 1.331458 -14.457391 14.229738 +v 1.139214 -15.239468 14.229738 +v 0.216313 -14.475671 13.833200 +v 0.107060 -14.672825 14.100000 +v 0.154228 -14.480939 14.100000 +v 1.084751 -15.209824 14.393425 +v 0.159627 -14.706276 13.833200 +v 0.809047 -15.059757 14.663078 +v 0.424809 -15.493277 14.659701 +v 0.884223 -15.100676 14.623356 +v 0.230273 -14.475442 13.806575 +v 0.171890 -14.712951 13.806575 +v 1.200187 -14.459542 14.492763 +v 1.023900 -15.176702 14.492763 +v 0.628320 -14.961388 14.700000 +v 0.267164 -15.257336 14.695951 +v 0.562800 -14.925724 13.504723 +v 0.260653 -15.247591 13.505548 +v 0.628320 -14.961388 13.500000 +v 0.418664 -15.484078 13.536122 +v 0.407469 -14.472537 13.609021 +v 0.572498 -14.931003 14.696576 +v 1.041180 -14.462149 14.623356 +v 0.458551 -14.471700 13.576644 +v 0.955602 -14.463552 14.663078 +v 0.799236 -15.054417 13.532908 +v 0.372418 -14.822099 14.623356 +v 0.118369 -15.034639 14.594828 +v 0.884223 -15.100676 13.576644 +v 0.550601 -15.681545 13.696676 +v 0.675278 -14.468147 13.504723 +v 0.336491 -14.802544 14.598025 +v 0.749866 -14.466925 14.700000 +v 0.749866 -14.466925 13.500000 +v 0.686318 -14.467966 14.696576 +v 1.016656 -15.172760 13.697845 +v 0.171890 -14.712951 14.393425 +v 0.012722 -14.876520 14.379644 +v 0.944433 -14.463735 13.532908 +v 0.162024 -14.707581 14.372265 +v -0.025425 -14.819427 14.100000 +v 1.084751 -15.209824 13.806575 +v 0.626054 -15.794473 13.950198 +v 0.458551 -14.471700 14.623356 +v 1.041180 -14.462149 13.576644 +v 0.417651 -14.472370 14.598025 +v 0.230273 -14.475442 14.393425 +v 1.136931 -15.238226 13.958963 +v 0.219041 -14.475626 14.372265 +v 1.191941 -14.459678 13.697845 +v 1.151593 -15.246206 14.100000 +v 0.627630 -15.796831 14.238252 +v 1.269458 -14.458407 13.806575 +v 1.328860 -14.457434 13.958963 +v 0.554965 -15.688076 14.494437 +v 1.345551 -14.457160 14.100000 +v 0.011207 -14.874253 13.825633 +v -3.311553 -16.745529 14.696576 +v -7.188447 -16.745529 14.696576 +v -7.240987 -17.009674 14.663078 +v -3.259013 -17.009674 14.663078 +v -3.363973 -16.481989 14.598025 +v -7.287099 -17.241505 13.697845 +v -11.050601 -15.681545 13.696676 +v -10.918664 -15.484078 13.536122 +v -7.136027 -16.481989 14.598025 +v -7.238808 -16.998718 13.532908 +v -3.402724 -16.287169 14.372265 +v -3.415379 -16.223545 14.100000 +v -7.084621 -16.223545 14.100000 +v -7.097276 -16.287169 14.372265 +v -7.313814 -17.375811 13.958963 +v -11.126055 -15.794473 13.950198 +v -7.314321 -17.378359 14.229738 +v -11.127630 -15.796831 14.238252 +v -7.288708 -17.249592 14.492763 +v -11.054965 -15.688076 14.494437 +v -10.924809 -15.493277 14.659701 +v -10.767164 -15.257336 14.695951 +v -10.618369 -15.034639 14.594828 +v -10.512722 -14.876520 14.379644 +v -3.403256 -16.284492 13.833200 +v -10.474575 -14.819427 14.100000 +v -7.096744 -16.284492 13.833200 +v -3.365960 -16.472000 13.609021 +v -7.134040 -16.472000 13.609021 +v -3.313707 -16.734699 13.504723 +v -7.186293 -16.734699 13.504723 +v -3.261192 -16.998718 13.532908 +v -3.212901 -17.241505 13.697845 +v -3.186187 -17.375811 13.958963 +v -3.185679 -17.378359 14.229738 +v -10.511207 -14.874253 13.825633 +v -3.211292 -17.249592 14.492763 +v -10.612993 -15.026593 13.611998 +v -10.760653 -15.247591 13.505548 +v -11.584750 -15.209824 14.393425 +v -11.831458 -14.457391 14.229738 +v -11.639214 -15.239468 14.229738 +v -11.769458 -14.458407 14.393425 +v -10.659628 -14.706276 13.833200 +v -10.654228 -14.480939 14.100000 +v -10.607060 -14.672825 14.100000 +v -10.716313 -14.475671 13.833200 +v -11.455602 -14.463552 14.663078 +v -11.541181 -14.462149 14.623356 +v -10.671890 -14.712951 13.806575 +v -11.523900 -15.176702 14.492763 +v -11.700187 -14.459542 14.492763 +v -10.730273 -14.475442 13.806575 +v -11.175278 -14.468147 13.504723 +v -10.866268 -14.146888 13.580385 +v -10.958550 -14.471700 13.576644 +v -11.249866 -14.466925 14.700000 +v -11.249866 -14.466925 13.500000 +v -11.186318 -14.467966 14.696576 +v -10.866268 -14.146888 14.619616 +v -10.827546 -14.797675 13.609021 +v -10.907469 -14.472537 13.609021 +v -11.384223 -15.100676 14.623356 +v -10.872418 -14.822099 13.576644 +v -11.309047 -15.059757 14.663078 +v -11.444433 -14.463735 13.532908 +v -10.958550 -14.471700 14.623356 +v -11.541181 -14.462149 13.576644 +v -10.917651 -14.472370 14.598025 +v -10.674866 -14.251376 14.400000 +v -11.062799 -14.925724 13.504723 +v -11.128321 -14.961388 14.700000 +v -11.128321 -14.961388 13.500000 +v -11.072498 -14.931003 14.696576 +v -11.691941 -14.459678 13.697845 +v -10.730273 -14.475442 14.393425 +v -11.299235 -15.054417 13.532908 +v -10.719041 -14.475626 14.372265 +v -10.604808 -14.289621 14.100000 +v -10.872418 -14.822099 14.623356 +v -11.769458 -14.458407 13.806575 +v -11.384223 -15.100676 13.576644 +v -10.836491 -14.802544 14.598025 +v -11.828860 -14.457434 13.958963 +v -10.671890 -14.712951 14.393425 +v -11.516656 -15.172760 13.697845 +v -10.662024 -14.707581 14.372265 +v -11.845551 -14.457160 14.100000 +v -11.584750 -15.209824 13.806575 +v -11.636931 -15.238226 13.958963 +v -11.651593 -15.246206 14.100000 +v -10.674866 -14.251376 13.800000 +v -9.416207 -12.112338 14.100000 +v -8.888704 -10.987230 14.393425 +v -9.483005 -12.075872 14.393425 +v -8.821907 -11.023696 14.100000 +v -9.483005 -12.075872 13.806575 +v -8.888704 -10.987230 13.806575 +v -10.277698 -13.055118 14.623356 +v -9.683397 -11.966476 14.623356 +v -9.683397 -11.966476 13.576644 +v -9.089097 -10.877834 13.576644 +v -10.077305 -13.164515 14.393425 +v -10.010508 -13.200980 14.100000 +v -10.077305 -13.164515 13.806575 +v -10.277698 -13.055118 13.576644 +v -8.494797 -9.789192 14.623356 +v -7.703364 -8.808167 14.400000 +v -7.894766 -8.703679 14.619616 +v -8.294404 -9.898589 14.393425 +v -7.633306 -8.846413 14.100000 +v -8.227607 -9.935054 14.100000 +v -8.294404 -9.898589 13.806575 +v -7.703364 -8.808167 13.800000 +v -9.089097 -10.877834 14.623356 +v -8.494797 -9.789192 13.576644 +v -7.894766 -8.703679 13.580385 +v -7.919171 -7.775559 13.500000 +v -7.628909 -7.800752 13.576644 +v -7.718803 -8.267149 13.576644 +v -7.401455 -7.820493 13.806575 +v -7.500307 -8.333362 13.806575 +v -8.209435 -7.750367 13.576644 +v -7.997636 -8.182652 13.500000 +v -8.436888 -7.730626 13.806575 +v -8.276468 -8.098156 13.576644 +v -8.512705 -7.724045 14.100000 +v -8.494965 -8.031943 13.806575 +v -8.436888 -7.730626 14.393425 +v -8.567797 -8.009872 14.100000 +v -8.209435 -7.750367 14.623356 +v -8.494965 -8.031943 14.393425 +v -7.919171 -7.775559 14.700000 +v -8.276468 -8.098156 14.623356 +v -7.628909 -7.800752 14.623356 +v -7.997636 -8.182652 14.700000 +v -7.401455 -7.820493 14.393425 +v -7.325803 -7.828978 14.100000 +v -7.718803 -8.267149 14.623356 +v -7.500307 -8.333362 14.393425 +v -7.426921 -8.353602 14.100000 +v -9.656598 9.636633 13.580385 +v -9.542046 9.689001 13.672307 +v -9.537490 9.650860 13.672307 +v -9.400666 9.667202 14.316489 +v -9.405223 9.705343 14.316489 +v -9.444628 9.700637 14.400000 +v -9.529387 9.583021 13.672307 +v -9.481891 9.449569 14.494167 +v -9.756041 9.663441 13.535658 +v -9.790667 9.953337 13.535658 +v -9.695780 9.964671 13.580385 +v -9.498275 9.586737 14.494167 +v -9.661154 9.674774 13.580385 +v -9.751485 9.625299 13.535658 +v -9.392564 9.599363 14.316489 +v -9.440072 9.662496 14.400000 +v -9.431969 9.594657 14.400000 +v -9.415585 9.457488 14.400000 +v -9.412241 9.429490 14.400000 +v -9.365374 9.710103 14.100000 +v -9.400000 10.000000 14.100000 +v -9.439849 9.995240 14.316489 +v -9.376180 9.462195 14.316489 +v -9.479254 9.990534 13.800000 +v -9.480385 10.000000 13.800000 +v -9.360818 9.671962 14.100000 +v -9.372835 9.434197 14.316489 +v -9.352715 9.604123 14.100000 +v -9.362034 9.343765 14.316489 +v -9.576672 9.978897 13.672307 +v -9.700000 10.000000 13.580385 +v -9.336330 9.466955 14.100000 +v -9.414965 9.704180 13.859525 +v -9.747437 9.958501 14.646526 +v -9.700000 10.000000 14.619616 +v -9.332987 9.438957 14.100000 +v -9.695780 9.964671 14.619616 +v -9.828523 9.654783 14.685694 +v -9.410409 9.666039 13.859525 +v -9.545560 9.982614 14.494167 +v -9.480385 10.000000 14.400000 +v -9.444628 9.700637 13.800000 +v -9.712811 9.668604 14.646526 +v -9.708255 9.630463 14.646526 +v -9.440072 9.662496 13.800000 +v -9.661154 9.674774 14.619616 +v -9.402306 9.598200 13.859525 +v -9.322185 9.348525 14.100000 +v -9.479254 9.990534 14.400000 +v -9.656598 9.636633 14.619616 +v -9.431969 9.594657 13.800000 +v -9.510934 9.692718 14.494167 +v -9.385921 9.461032 13.859525 +v -9.506378 9.654575 14.494167 +v -9.382578 9.433033 13.859525 +v -9.415585 9.457488 13.800000 +v -9.412241 9.429490 13.800000 +v 4.250000 10.566312 7.011450 +v -14.750000 10.566312 7.011450 +v 4.250000 10.216311 7.265739 +v -14.750000 10.216311 7.265739 +v -10.162477 9.581507 7.161123 +v -14.750000 9.783689 7.265739 +v 4.250000 9.783689 7.265739 +v -14.750000 9.433688 7.011450 +v -10.328623 9.467293 7.053959 +v -0.381151 9.602960 7.176500 +v 4.250000 9.433688 7.011450 +v -0.241272 9.520736 7.109947 +v -10.464525 9.348771 6.856652 +v -0.013505 9.328316 6.796848 +v -0.097741 9.405000 6.968525 +v -14.750000 9.446510 5.767144 +v -14.750000 9.078046 6.212702 +v -10.148715 9.162208 7.145979 +v -14.750000 9.285857 7.300000 +v 4.250000 9.078046 6.212702 +v -0.350940 9.162101 6.054190 +v -10.339601 9.082518 6.997728 +v 4.250000 9.446510 5.767144 +v 4.250000 9.285857 7.300000 +v -0.420628 9.180484 7.173129 +v -0.160232 9.082429 6.202500 +v -0.044253 9.015815 6.423326 +v -0.103036 9.051098 6.915325 +v -0.023848 9.002877 6.674325 +v 4.250000 9.017779 6.787728 +v -14.750000 9.017779 6.787728 +v -10.455685 9.015849 6.776925 +v -10.476145 9.002880 6.525609 +v -10.235834 9.130877 6.105576 +v -10.396736 9.051228 6.284288 +v -0.263804 9.130726 7.094170 +v -10.079127 9.180521 6.026806 +v 4.250000 -0.300000 7.800000 +v -14.750000 -0.300000 7.800000 +v -14.750000 -0.233013 7.550000 +v 4.250000 -0.233013 7.550000 +v -14.750000 -0.050000 7.366987 +v 4.250000 -0.050000 7.366987 +v -14.750000 0.200000 7.300000 +v 4.250000 0.200000 7.300000 +v 4.250000 0.000000 7.800000 +v -14.750000 -0.000000 7.800000 +v -14.750000 0.026795 7.700000 +v 4.250000 0.026795 7.700000 +v -14.750000 0.100000 7.626795 +v 4.250000 0.100000 7.626795 +v -14.750000 0.200000 7.600000 +v 4.250000 0.200000 7.600000 +v -1.982643 -7.436081 6.600000 +v -2.061897 -7.426614 6.900000 +v -0.435937 9.052099 7.173211 +v -2.278423 -7.400752 7.119615 +v -0.275403 9.032925 7.094294 +v -0.107490 9.012868 6.915394 +v -0.094733 9.011344 6.893425 +v -0.045403 9.005452 6.423299 +v -2.061897 -7.426614 6.300000 +v -0.094733 9.011344 6.306575 +v -0.167638 9.020053 6.202471 +v -2.278423 -7.400752 6.080385 +v -0.321430 9.038422 6.076644 +v -0.365083 9.043636 6.054175 +v -8.438103 -7.426614 6.300000 +v -8.517357 -7.436081 6.600000 +v -10.134562 9.043680 7.145989 +v -8.221577 -7.400752 7.119615 +v -10.178570 9.038424 7.123356 +v -10.332178 9.020076 6.997740 +v -8.438103 -7.426614 6.900000 +v -10.405267 9.011346 6.893425 +v -10.454522 9.005463 6.776949 +v -10.480833 9.002320 6.600000 +v -10.405267 9.011346 6.306575 +v -10.392273 9.012898 6.284216 +v -10.224227 9.032970 6.105448 +v -8.221577 -7.400752 6.080385 +v -10.063821 9.052130 6.026714 +v -0.011382 9.345595 6.796869 +v -0.042171 9.451397 6.893425 +v -0.005601 9.393994 6.796869 +v 0.044530 9.535600 6.600000 +v 0.048494 9.568787 6.600000 +v 0.015744 9.572698 6.796869 +v 0.011780 9.539512 6.796869 +v 0.038759 9.487288 6.600000 +v 0.006009 9.491199 6.796869 +v 0.033394 9.442370 6.600000 +v 0.000644 9.446282 6.796869 +v 0.027149 9.390082 6.600000 +v 0.021368 9.341683 6.600000 +v -0.007967 9.575530 6.344186 +v 0.012306 9.938807 6.300000 +v 0.091560 9.929341 6.600000 +v -0.011931 9.542344 6.344186 +v -0.027072 9.577812 6.306575 +v -0.031036 9.544625 6.306575 +v -0.017702 9.494032 6.344186 +v -0.036806 9.496314 6.306575 +v -0.023067 9.449115 6.344186 +v -0.042171 9.451397 6.306575 +v -0.379131 9.619864 7.176501 +v -0.204220 9.964671 7.119615 +v -0.029312 9.396827 6.344186 +v -0.048417 9.399109 6.306575 +v -0.253769 9.604890 7.123356 +v -0.155641 9.593169 6.146582 +v -0.204220 9.964671 6.080385 +v -0.231486 9.602228 7.110027 +v -0.257733 9.571703 7.123356 +v -0.159605 9.559982 6.146582 +v -0.235450 9.569042 7.110027 +v -0.076299 9.583692 6.968601 +v 0.012306 9.938807 6.900000 +v -0.165375 9.511670 6.146582 +v -0.253769 9.604890 6.076644 +v -0.080263 9.550506 6.968601 +v -0.257733 9.571703 6.076644 +v -0.086033 9.502193 6.968601 +v -0.332919 9.614344 6.039135 +v -0.027072 9.577812 6.893425 +v -0.031036 9.544625 6.893425 +v -0.091398 9.457276 6.968601 +v -0.036806 9.496314 6.893425 +v -2.871092 -7.800752 7.123356 +v -3.098545 -7.820493 6.893425 +v -2.999693 -8.333362 6.893425 +v -2.223532 -8.098156 7.123356 +v -2.082314 -8.418212 7.119615 +v -2.502364 -8.182652 7.200000 +v -3.073079 -8.353602 6.600000 +v -2.580829 -7.775559 7.200000 +v -2.781197 -8.267149 7.123356 +v -2.005036 -8.031943 6.893425 +v -1.890913 -8.313724 6.900000 +v -2.290566 -7.750367 7.123356 +v -1.932204 -8.009872 6.600000 +v -1.820855 -8.275478 6.600000 +v -2.063113 -7.730626 6.893425 +v -2.005036 -8.031943 6.306575 +v -1.890913 -8.313724 6.300000 +v -1.987295 -7.724045 6.600000 +v -2.223532 -8.098156 6.076644 +v -2.082314 -8.418212 6.080385 +v -2.063113 -7.730626 6.306575 +v -2.502364 -8.182652 6.000000 +v -2.290566 -7.750367 6.076644 +v -2.781197 -8.267149 6.076644 +v -2.580829 -7.775559 6.000000 +v -2.999693 -8.333362 6.306575 +v -2.871092 -7.800752 6.076644 +v -3.098545 -7.820493 6.306575 +v -3.174196 -7.828978 6.600000 +v 0.889187 -13.861422 7.119615 +v 1.080589 -13.756933 6.900000 +v 1.150647 -13.718688 6.600000 +v 1.080589 -13.756933 6.300000 +v 0.889187 -13.861422 6.080385 +v 0.216313 -14.475671 6.866801 +v 0.154228 -14.480939 6.600000 +v 0.107060 -14.672825 6.600000 +v 1.269458 -14.458407 6.306575 +v 1.331458 -14.457391 6.470262 +v 1.139214 -15.239468 6.470262 +v 0.159627 -14.706276 6.866801 +v 0.809047 -15.059757 6.036922 +v 0.884223 -15.100676 6.076644 +v 0.424809 -15.493277 6.040299 +v 0.230273 -14.475442 6.893425 +v 1.200187 -14.459542 6.207237 +v 1.084751 -15.209824 6.306575 +v 1.023900 -15.176702 6.207237 +v 0.171890 -14.712951 6.893425 +v 0.562800 -14.925724 7.195278 +v 0.372418 -14.822099 7.123356 +v 0.260653 -15.247591 7.194453 +v 0.628320 -14.961388 6.000000 +v 0.267164 -15.257336 6.004050 +v 0.628320 -14.961388 7.200000 +v 0.418664 -15.484078 7.163877 +v 0.407469 -14.472537 7.090979 +v 0.327546 -14.797675 7.090979 +v 0.572498 -14.931003 6.003424 +v 1.041180 -14.462149 6.076644 +v 0.458551 -14.471700 7.123356 +v 0.955602 -14.463552 6.036922 +v 0.799236 -15.054417 7.167092 +v 0.372418 -14.822099 6.076644 +v 0.118369 -15.034639 6.105172 +v 0.884223 -15.100676 7.123356 +v 0.550601 -15.681545 7.003324 +v 0.675278 -14.468147 7.195278 +v 0.336491 -14.802544 6.101975 +v 0.749866 -14.466925 6.000000 +v 0.749866 -14.466925 7.200000 +v 0.686318 -14.467966 6.003424 +v 1.016656 -15.172760 7.002154 +v 0.171890 -14.712951 6.306575 +v 0.012722 -14.876520 6.320356 +v 0.944433 -14.463735 7.167092 +v 0.162024 -14.707581 6.327735 +v -0.025425 -14.819427 6.600000 +v 1.084751 -15.209824 6.893425 +v 0.458551 -14.471700 6.076644 +v 0.626054 -15.794473 6.749801 +v 1.041180 -14.462149 7.123356 +v 0.417651 -14.472370 6.101975 +v 1.136931 -15.238226 6.741037 +v 0.230273 -14.475442 6.306575 +v 1.191941 -14.459678 7.002154 +v 0.219041 -14.475626 6.327735 +v 1.151593 -15.246206 6.600000 +v 0.627630 -15.796831 6.461748 +v 1.269458 -14.458407 6.893425 +v 1.328860 -14.457434 6.741037 +v 0.554965 -15.688076 6.205563 +v 1.345551 -14.457160 6.600000 +v 0.011207 -14.874253 6.874367 +v 0.112993 -15.026593 7.088002 +v -3.402724 -16.287169 6.327735 +v -3.363973 -16.481989 6.101975 +v -7.136027 -16.481989 6.101975 +v -7.313814 -17.375811 6.741037 +v -11.050601 -15.681545 7.003324 +v -11.126055 -15.794473 6.749801 +v -7.084621 -16.223545 6.600000 +v -3.415379 -16.223545 6.600000 +v -7.097276 -16.287169 6.327735 +v -7.287099 -17.241505 7.002154 +v -7.314321 -17.378359 6.470262 +v -11.127630 -15.796831 6.461748 +v -7.288708 -17.249592 6.207237 +v -11.054965 -15.688076 6.205563 +v -7.240987 -17.009674 6.036922 +v -10.924809 -15.493277 6.040299 +v -7.188447 -16.745529 6.003424 +v -10.767164 -15.257336 6.004050 +v -10.618369 -15.034639 6.105172 +v -10.512722 -14.876520 6.320356 +v -10.474575 -14.819427 6.600000 +v -3.403256 -16.284492 6.866801 +v -10.511207 -14.874253 6.874367 +v -7.096744 -16.284492 6.866801 +v -3.365960 -16.472000 7.090979 +v -7.134040 -16.472000 7.090979 +v -3.313707 -16.734699 7.195278 +v -7.186293 -16.734699 7.195278 +v -3.261192 -16.998718 7.167092 +v -7.238808 -16.998718 7.167092 +v -3.212901 -17.241505 7.002154 +v -3.186187 -17.375811 6.741037 +v -3.185679 -17.378359 6.470262 +v -10.612993 -15.026593 7.088002 +v -3.211292 -17.249592 6.207237 +v -10.760653 -15.247591 7.194453 +v -3.259013 -17.009674 6.036922 +v -3.311553 -16.745529 6.003424 +v -10.918664 -15.484078 7.163877 +v -11.455602 -14.463552 6.036922 +v -11.389187 -13.861422 6.080385 +v -10.659628 -14.706276 6.866801 +v -10.654228 -14.480939 6.600000 +v -10.716313 -14.475671 6.866801 +v -10.671890 -14.712951 6.893425 +v -11.541181 -14.462149 6.076644 +v -10.730273 -14.475442 6.893425 +v -11.523900 -15.176702 6.207237 +v -11.584750 -15.209824 6.306575 +v -11.769458 -14.458407 6.306575 +v -11.700187 -14.459542 6.207237 +v -11.175278 -14.468147 7.195278 +v -10.958550 -14.471700 7.123356 +v -11.249866 -14.466925 6.000000 +v -11.249866 -14.466925 7.200000 +v -11.186318 -14.467966 6.003424 +v -10.827546 -14.797675 7.090979 +v -10.907469 -14.472537 7.090979 +v -11.384223 -15.100676 6.076644 +v -10.872418 -14.822099 7.123356 +v -11.309047 -15.059757 6.036922 +v -11.444433 -14.463735 7.167092 +v -11.389187 -13.861422 7.119615 +v -11.541181 -14.462149 7.123356 +v -10.958550 -14.471700 6.076644 +v -10.917651 -14.472370 6.101975 +v -11.062799 -14.925724 7.195278 +v -11.128321 -14.961388 6.000000 +v -11.128321 -14.961388 7.200000 +v -11.072498 -14.931003 6.003424 +v -11.691941 -14.459678 7.002154 +v -11.580589 -13.756933 6.900000 +v -10.730273 -14.475442 6.306575 +v -11.299235 -15.054417 7.167092 +v -10.719041 -14.475626 6.327735 +v -10.872418 -14.822099 6.076644 +v -11.769458 -14.458407 6.893425 +v -11.384223 -15.100676 7.123356 +v -10.836491 -14.802544 6.101975 +v -11.828860 -14.457434 6.741037 +v -10.671890 -14.712951 6.306575 +v -11.650647 -13.718688 6.600000 +v -11.516656 -15.172760 7.002154 +v -10.662024 -14.707581 6.327735 +v -10.607060 -14.672825 6.600000 +v -11.845551 -14.457160 6.600000 +v -11.584750 -15.209824 6.893425 +v -11.831458 -14.457391 6.470262 +v -11.580589 -13.756933 6.300000 +v -11.636931 -15.238226 6.741037 +v -11.651593 -15.246206 6.600000 +v -11.639214 -15.239468 6.470262 +v -8.417686 -8.418212 7.119615 +v -8.609087 -8.313724 6.900000 +v -8.679145 -8.275478 6.600000 +v -8.609087 -8.313724 6.300000 +v -8.417686 -8.418212 6.080385 +v -7.718803 -8.267149 7.123356 +v -7.500307 -8.333362 6.893425 +v -7.401455 -7.820493 6.893425 +v -8.209435 -7.750367 7.123356 +v -7.919171 -7.775559 7.200000 +v -7.325803 -7.828978 6.600000 +v -7.997636 -8.182652 7.200000 +v -7.628909 -7.800752 7.123356 +v -8.436888 -7.730626 6.893425 +v -8.276468 -8.098156 7.123356 +v -8.512705 -7.724045 6.600000 +v -7.426921 -8.353602 6.600000 +v -8.494965 -8.031943 6.893425 +v -8.436888 -7.730626 6.306575 +v -8.567797 -8.009872 6.600000 +v -8.209435 -7.750367 6.076644 +v -8.494965 -8.031943 6.306575 +v -7.919171 -7.775559 6.000000 +v -8.276468 -8.098156 6.076644 +v -7.628909 -7.800752 6.076644 +v -7.997636 -8.182652 6.000000 +v -7.401455 -7.820493 6.306575 +v -7.718803 -8.267149 6.076644 +v -7.500307 -8.333362 6.306575 +v -10.423070 9.583768 6.230577 +v -10.513515 9.555966 6.402468 +v -10.515516 9.572725 6.402468 +v -10.517544 9.555485 6.785395 +v -10.481963 9.494580 6.856662 +v -10.489636 9.558819 6.856662 +v -10.421068 9.567009 6.230577 +v -10.509871 9.491247 6.785395 +v -10.294970 9.516916 6.114590 +v -10.408025 9.457808 6.230577 +v -10.413395 9.502770 6.230577 +v -10.519546 9.572244 6.785395 +v -10.491638 9.575578 6.856662 +v -10.347711 9.958467 7.085410 +v -10.352672 10.000000 7.085410 +v -10.302643 9.581154 6.114590 +v -10.304645 9.597913 7.085410 +v -10.166409 9.614425 7.161123 +v -10.304645 9.597913 6.114590 +v -10.562612 9.932799 6.414605 +v -10.519546 9.572244 6.414605 +v -10.548494 9.568787 6.600000 +v -10.527199 9.390498 6.600000 +v -10.521403 9.341978 6.600000 +v -10.498250 9.393956 6.785395 +v -10.591560 9.929341 6.600000 +v -10.386766 9.953803 7.053997 +v -10.343699 9.593247 7.053997 +v -10.570634 10.000000 6.414590 +v -10.558582 9.933280 6.402468 +v -10.533449 9.442827 6.600000 +v -10.504500 9.446285 6.785395 +v -10.265595 9.585579 6.089397 +v -10.538819 9.487789 6.600000 +v -10.267597 9.602338 6.089397 +v -10.120399 9.619920 6.023362 +v -10.492455 9.345436 6.414605 +v -10.466136 9.944323 6.230577 +v -10.352672 10.000000 6.114590 +v -10.488425 9.345917 6.402468 +v -10.347711 9.958467 6.114590 +v -10.546493 9.552028 6.600000 +v -10.310663 9.962893 6.089397 +v -10.163465 9.980474 6.023362 +v -10.498250 9.393956 6.414605 +v -10.164407 9.597666 7.161123 +v -10.494221 9.394437 6.402468 +v -10.294970 9.516916 7.085410 +v -10.504500 9.446285 6.414605 +v -10.500471 9.446766 6.402468 +v -10.334025 9.512251 7.053997 +v -10.302643 9.581154 7.085410 +v -10.534704 9.936132 6.856662 +v -10.570634 10.000000 6.785410 +v -10.341698 9.576489 7.053997 +v -10.509871 9.491247 6.414605 +v -10.470343 9.397289 6.856662 +v -10.505842 9.491729 6.402468 +v -10.562612 9.932799 6.785395 +v -10.476593 9.449618 6.856662 +v -10.517544 9.555485 6.414605 +vn 0.965926 -0.258819 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.965925 -0.258821 0.000000 +vn 0.707108 -0.707106 0.000000 +vn 0.965925 -0.258821 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.707108 -0.707106 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.258819 0.965926 0.000000 +vn 0.707105 0.707109 0.000000 +vn 0.258819 0.965926 0.000000 +vn 0.965927 0.258815 0.000000 +vn 0.707105 0.707109 0.000000 +vn 0.965927 0.258815 0.000000 +vn -0.965925 0.258821 0.000000 +vn -0.707110 0.707103 0.000000 +vn -0.965925 0.258821 0.000000 +vn -0.258815 0.965927 0.000000 +vn -0.707110 0.707103 0.000000 +vn -0.258815 0.965927 0.000000 +vn -0.258827 -0.965924 -0.000000 +vn -0.707100 -0.707113 -0.000000 +vn -0.258827 -0.965924 0.000000 +vn -0.965927 -0.258815 -0.000000 +vn -0.707100 -0.707113 0.000000 +vn -0.965927 -0.258815 0.000000 +vn -0.258815 0.965927 0.000000 +vn -0.258815 0.965927 0.000000 +vn -0.707110 0.707104 0.000000 +vn -0.707110 0.707104 0.000000 +vn -0.965926 0.258820 0.000000 +vn -0.965926 0.258820 0.000000 +vn 0.258815 -0.965927 0.000000 +vn 0.707109 -0.707105 0.000000 +vn 0.258815 -0.965927 0.000000 +vn 0.965926 -0.258818 0.000000 +vn 0.707109 -0.707105 0.000000 +vn 0.965926 -0.258818 0.000000 +vn 0.258827 0.965924 -0.000000 +vn 0.258827 0.965924 0.000000 +vn 0.707100 0.707113 0.000000 +vn 0.707100 0.707113 -0.000000 +vn 0.965927 0.258815 0.000000 +vn 0.965927 0.258815 -0.000000 +vn -0.258819 -0.965926 0.000000 +vn -0.258819 -0.965926 0.000000 +vn -0.707104 -0.707109 0.000000 +vn -0.707104 -0.707109 0.000000 +vn -0.965927 -0.258815 0.000000 +vn -0.965927 -0.258815 0.000000 +vn -0.965926 0.258819 0.000000 +vn -0.707107 0.707107 0.000000 +vn -0.965926 0.258819 0.000000 +vn -0.258819 0.965926 0.000000 +vn -0.707107 0.707107 0.000000 +vn -0.258819 0.965926 0.000000 +vn 0.309021 -0.951055 0.000000 +vn 0.309021 -0.951055 0.000000 +vn 0.809017 -0.587785 0.000000 +vn 0.809017 -0.587785 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.809017 0.587785 0.000000 +vn 0.809017 0.587785 0.000000 +vn 0.309021 0.951055 0.000000 +vn 0.309021 0.951055 0.000000 +vn -0.258815 0.965927 0.000000 +vn -0.707109 0.707104 0.000000 +vn -0.258815 0.965927 0.000000 +vn -0.707109 0.707104 0.000000 +vn -0.965926 0.258819 0.000000 +vn -0.965926 0.258819 0.000000 +vn 0.309023 -0.951055 0.000000 +vn 0.309023 -0.951055 0.000000 +vn 0.809015 -0.587789 0.000000 +vn 0.809015 -0.587789 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.809015 0.587789 0.000000 +vn 0.809015 0.587789 0.000000 +vn 0.309023 0.951055 0.000000 +vn 0.309023 0.951055 0.000000 +vn -0.258819 -0.965926 0.000000 +vn -0.258819 -0.965926 0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.965926 -0.258819 0.000000 +vn -0.965926 -0.258819 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.258819 -0.965926 0.000000 +vn -0.965927 0.258815 0.000000 +vn -0.707105 0.707109 0.000000 +vn -0.965927 0.258815 0.000000 +vn -0.258819 0.965926 0.000000 +vn -0.707105 0.707109 0.000000 +vn -0.258819 0.965926 0.000000 +vn 0.965927 -0.258815 0.000000 +vn 0.707100 -0.707113 0.000000 +vn 0.965927 -0.258815 0.000000 +vn 0.258827 -0.965924 0.000000 +vn 0.707100 -0.707113 0.000000 +vn 0.258827 -0.965924 0.000000 +vn -0.309019 0.951056 0.000000 +vn -0.309019 0.951056 0.000000 +vn -0.809015 0.587789 0.000000 +vn -0.809015 0.587789 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.809015 -0.587789 0.000000 +vn -0.809015 -0.587789 -0.000000 +vn -0.309019 -0.951056 0.000000 +vn -0.309019 -0.951056 -0.000000 +vn 0.965926 0.258818 0.000000 +vn 0.965926 0.258818 0.000000 +vn 0.707109 0.707105 0.000000 +vn 0.707109 0.707105 0.000000 +vn 0.258815 0.965927 0.000000 +vn 0.258815 0.965927 0.000000 +vn -0.965926 -0.258820 0.000000 +vn -0.707110 -0.707104 0.000000 +vn -0.965926 -0.258820 0.000000 +vn -0.258815 -0.965927 0.000000 +vn -0.707110 -0.707104 0.000000 +vn -0.258815 -0.965927 0.000000 +vn 0.309019 -0.951056 0.000000 +vn 0.309019 -0.951056 0.000000 +vn 0.809015 -0.587789 0.000000 +vn 0.809015 -0.587789 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.809015 0.587789 0.000000 +vn 0.809015 0.587789 0.000000 +vn 0.309019 0.951056 0.000000 +vn 0.309019 0.951056 0.000000 +vn -0.951057 -0.309016 0.000000 +vn -0.951057 -0.309016 -0.000000 +vn -0.587785 -0.809017 -0.000000 +vn -0.587785 -0.809017 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.951057 -0.309016 0.000000 +vn 0.951057 -0.309016 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn -0.965927 0.258815 0.000000 +vn -0.965927 0.258815 0.000000 +vn -0.707100 0.707113 0.000000 +vn -0.707100 0.707113 0.000000 +vn -0.258827 0.965924 0.000000 +vn -0.258827 0.965924 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 0.258815 0.965927 0.000000 +vn 0.258815 0.965927 -0.000000 +vn 0.707110 0.707103 -0.000000 +vn 0.707110 0.707103 0.000000 +vn 0.965925 0.258821 -0.000000 +vn 0.965925 0.258821 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 0.965927 -0.258815 0.000000 +vn 0.965927 -0.258815 0.000000 +vn 0.707104 -0.707109 0.000000 +vn 0.707104 -0.707109 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.258819 -0.965926 0.000000 +vn -0.258819 -0.965926 0.000000 +vn -0.258819 -0.965926 0.000000 +vn -0.707108 -0.707106 0.000000 +vn -0.707108 -0.707106 0.000000 +vn -0.965925 -0.258821 0.000000 +vn -0.965925 -0.258821 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.258819 -0.965926 0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.258819 -0.965926 0.000000 +vn -0.965926 -0.258819 0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.965926 -0.258819 0.000000 +vn 0.258819 0.965926 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.258819 0.965926 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.965926 0.258819 0.000000 +vn -0.309023 0.951055 0.000000 +vn -0.309023 0.951055 0.000000 +vn -0.809015 0.587789 0.000000 +vn -0.809015 0.587789 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.809015 -0.587789 0.000000 +vn -0.809015 -0.587789 -0.000000 +vn -0.309023 -0.951055 0.000000 +vn -0.309023 -0.951055 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.951056 0.309018 0.000000 +vn 0.951056 0.309018 0.000000 +vn 0.587789 0.809015 0.000000 +vn 0.587789 0.809015 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.587789 0.809015 0.000000 +vn -0.587789 0.809015 0.000000 +vn -0.951056 0.309018 0.000000 +vn -0.951056 0.309018 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.707109 0.707104 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.258815 0.965927 0.000000 +vn 0.707109 0.707104 0.000000 +vn 0.258815 0.965927 0.000000 +vn -0.309021 0.951055 0.000000 +vn -0.309021 0.951055 0.000000 +vn -0.809017 0.587785 0.000000 +vn -0.809017 0.587785 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.809017 -0.587785 0.000000 +vn -0.809017 -0.587785 -0.000000 +vn -0.309021 -0.951055 0.000000 +vn -0.309021 -0.951055 -0.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.258820 0.965926 +vn 0.000000 -0.707104 0.707110 +vn 0.000000 -0.258820 0.965926 +vn 0.000000 -0.965927 0.258815 +vn 0.000000 -0.707104 0.707110 +vn 0.000000 -0.965927 0.258815 +vn 0.004533 -0.965917 -0.258812 +vn 0.000490 -0.984631 -0.174646 +vn -0.000000 -0.989747 -0.142830 +vn 0.004866 -0.707088 -0.707109 +vn -0.005532 -0.965912 -0.258811 +vn 0.003013 -0.682340 -0.731028 +vn 0.000150 -0.557062 -0.830471 +vn 0.000078 -0.554189 -0.832391 +vn -0.000087 -0.587182 -0.809455 +vn 0.000000 -0.531552 -0.847025 +vn -0.000683 -0.258815 -0.965927 +vn -0.000000 -0.267255 -0.963626 +vn -0.000101 -0.541012 -0.841015 +vn -0.005189 -0.707087 -0.707108 +vn 0.000683 -0.258815 -0.965927 +vn 0.000000 -0.267255 -0.963626 +vn -0.001368 -0.627086 -0.778948 +vn -0.000744 -0.772657 -0.634823 +vn 0.000640 -0.912702 -0.408626 +vn -0.000000 -0.987657 -0.156631 +vn -0.000388 -0.897678 -0.440652 +vn -0.000585 -0.734322 -0.678801 +vn 0.000393 -0.698585 -0.715527 +vn 0.000599 -0.875573 -0.483085 +vn -0.000000 -0.982545 -0.186023 +vn -0.002182 -0.858594 -0.512652 +vn 0.000000 0.965927 0.258814 +vn 0.000000 0.965927 0.258814 +vn 0.000000 0.707096 0.707117 +vn 0.000000 0.707096 0.707117 +vn 0.000000 0.258815 0.965927 +vn 0.000000 0.258815 0.965927 +vn -0.809948 -0.096735 -0.578469 +vn -0.809948 -0.096735 -0.578469 +vn -0.603972 -0.072114 0.793736 +vn -0.896830 -0.107116 -0.429211 +vn -0.603972 -0.072114 0.793736 +vn -0.896830 -0.107116 -0.429211 +vn -0.172348 -0.020660 0.984819 +vn -0.420916 -0.050331 0.905702 +vn -0.456232 -0.054468 -0.888192 +vn -0.456202 -0.054498 -0.888206 +vn -0.172342 -0.020578 0.984822 +vn -0.420925 -0.050258 0.905702 +vn -0.456229 -0.054495 -0.888192 +vn -0.420925 -0.050258 0.905702 +vn -0.486905 -0.725152 0.486907 +vn -0.787388 -0.093978 0.609253 +vn -0.809966 -0.096710 -0.578448 +vn -0.809942 -0.096785 -0.578469 +vn -0.787369 -0.094039 0.609267 +vn -0.787379 -0.094050 0.609253 +vn -0.603950 -0.072104 0.793754 +vn -0.976318 -0.116564 -0.182254 +vn -0.603968 -0.072150 0.793736 +vn -0.976302 -0.116642 -0.182287 +vn -0.603946 -0.072132 0.793754 +vn -0.238374 -0.389554 0.889621 +vn -0.172345 -0.020586 0.984822 +vn -0.172341 -0.020588 0.984822 +vn -0.420922 -0.050283 0.905702 +vn -0.420925 -0.050253 0.905702 +vn -0.896831 -0.107111 -0.429211 +vn -0.420922 -0.050283 0.905702 +vn -0.896831 -0.107111 -0.429211 +vn -0.976312 -0.116583 -0.182270 +vn -0.976294 -0.116713 -0.182287 +vn -0.896825 -0.107167 -0.429209 +vn -0.896824 -0.107170 -0.429211 +vn -0.457481 -0.762511 -0.457482 +vn -0.633803 -0.075706 -0.769781 +vn -0.633798 -0.075667 -0.769789 +vn -0.633792 -0.075713 -0.769789 +vn -0.976309 -0.116609 -0.182270 +vn -0.976309 -0.116609 -0.182270 +vn -0.976310 -0.116604 -0.182270 +vn -0.976310 -0.116604 -0.182270 +vn -0.809962 -0.096747 -0.578447 +vn -0.809961 -0.096748 -0.578448 +vn -0.809971 -0.096674 -0.578447 +vn -0.972202 -0.116072 0.203346 +vn -0.109178 -0.013041 -0.993937 +vn -0.972202 -0.116072 0.203346 +vn -0.109179 -0.013036 -0.993937 +vn -0.976314 -0.116572 -0.182270 +vn -0.976299 -0.116668 -0.182287 +vn -0.316343 -0.037735 -0.947894 +vn -0.972184 -0.116222 0.203346 +vn -0.316339 -0.037771 -0.947894 +vn -0.972184 -0.116222 0.203346 +vn -0.316339 -0.037771 -0.947894 +vn -0.779401 0.063998 0.623248 +vn -0.887457 -0.105954 0.448547 +vn -0.594762 -0.068847 -0.800948 +vn -0.976307 -0.116630 -0.182270 +vn -0.896830 -0.107123 -0.429209 +vn -0.253020 -0.965083 -0.067795 +vn -0.896829 -0.107124 -0.429211 +vn -0.896839 -0.107042 -0.429211 +vn -0.976305 -0.116617 -0.182287 +vn -0.456209 -0.054443 -0.888206 +vn -0.887440 -0.106091 0.448547 +vn -0.887440 -0.106091 0.448547 +vn -0.787356 -0.094126 0.609271 +vn -0.456205 -0.054471 -0.888206 +vn -0.456205 -0.054471 -0.888206 +vn -0.972197 -0.116118 0.203346 +vn -0.972197 -0.116118 0.203346 +vn -0.818213 0.060387 -0.571735 +vn -0.896676 -0.106574 -0.429667 +vn -0.887452 -0.105996 0.448547 +vn -0.887452 -0.105996 0.448547 +vn -0.809617 -0.096788 -0.578924 +vn -0.972198 -0.116113 0.203346 +vn -0.972198 -0.116113 0.203346 +vn -0.810207 -0.094555 -0.578467 +vn -0.972194 -0.116138 0.203346 +vn -0.606186 0.068680 -0.792352 +vn -0.972201 -0.116081 0.203346 +vn -0.972201 -0.116081 0.203346 +vn -0.595446 -0.071119 -0.800242 +vn -0.896842 -0.107149 -0.429177 +vn -0.887452 -0.105991 0.448547 +vn -0.887452 -0.105991 0.448547 +vn -0.896819 -0.107212 -0.429211 +vn -0.887434 -0.105960 0.448591 +vn -0.887446 -0.106046 0.448547 +vn -0.896849 -0.107094 -0.429177 +vn -0.787367 -0.094035 0.609271 +vn -0.787369 -0.094042 0.609267 +vn -0.633804 -0.075697 -0.769781 +vn -0.787358 -0.094037 0.609281 +vn -0.633806 -0.075676 -0.769781 +vn -0.787364 -0.094082 0.609267 +vn -0.633806 -0.075676 -0.769781 +vn -0.787363 -0.094087 0.609267 +vn -0.809948 -0.096739 -0.578469 +vn -0.809948 -0.096739 -0.578469 +vn -0.787361 -0.094011 0.609281 +vn -0.359202 0.271698 0.892835 +vn -0.603956 -0.072151 0.793746 +vn -0.245746 -0.313804 -0.917135 +vn -0.316337 -0.037785 -0.947894 +vn -0.420943 -0.050275 0.905693 +vn -0.603966 -0.072168 0.793736 +vn -0.217273 -0.067571 -0.973769 +vn -0.972190 -0.116174 0.203346 +vn -0.976301 -0.116665 -0.182278 +vn -0.976372 -0.116104 -0.182254 +vn -0.603958 -0.072133 0.793746 +vn -0.959571 -0.114529 0.257111 +vn -0.953020 -0.160590 0.256833 +vn -0.887429 -0.106001 0.448591 +vn -0.228679 0.124838 -0.965464 +vn -0.228679 0.124838 -0.965464 +vn -0.622838 0.340014 -0.704602 +vn -0.622838 0.340013 -0.704602 +vn -0.848222 0.463053 0.257100 +vn -0.848222 0.463053 -0.257101 +vn -0.848220 0.463052 -0.257111 +vn -0.622838 0.340013 0.704602 +vn -0.848220 0.463052 0.257111 +vn -0.228679 0.124838 0.965464 +vn -0.622837 0.340013 0.704603 +vn -0.228679 0.124838 0.965464 +vn 0.228679 0.124838 -0.965464 +vn 0.622838 0.340014 -0.704602 +vn 0.228679 0.124838 -0.965464 +vn 0.848220 0.463052 -0.257111 +vn 0.622838 0.340013 -0.704602 +vn 0.848222 0.463053 -0.257101 +vn 0.848220 0.463052 0.257110 +vn 0.848222 0.463053 0.257101 +vn 0.622838 0.340013 0.704602 +vn 0.622837 0.340013 0.704603 +vn 0.228679 0.124838 0.965464 +vn 0.228679 0.124838 0.965464 +vn 0.972117 -0.116141 -0.203717 +vn 0.972117 -0.116141 -0.203717 +vn 0.953038 -0.160484 0.256835 +vn 0.976245 -0.116618 0.182611 +vn 0.972120 -0.116138 -0.203703 +vn 0.972120 -0.116112 -0.203717 +vn 0.976270 -0.116460 0.182578 +vn 0.976241 -0.116648 0.182611 +vn 0.972128 -0.116071 -0.203703 +vn 0.972128 -0.116071 -0.203703 +vn 0.899147 -0.108998 0.423857 +vn 0.976255 -0.116583 0.182578 +vn 0.976246 -0.116634 0.182594 +vn 0.899332 -0.107458 0.423858 +vn 0.899332 -0.107458 0.423858 +vn 0.972119 -0.116148 -0.203703 +vn 0.972117 -0.116109 -0.203732 +vn 0.976246 -0.116602 0.182615 +vn 0.972122 -0.116068 -0.203732 +vn 0.899339 -0.107397 0.423857 +vn 0.899339 -0.107397 0.423857 +vn 0.813584 -0.095155 0.573608 +vn 0.697443 -0.135925 0.703632 +vn 0.813362 -0.097027 0.573609 +vn 0.813316 -0.097180 0.573649 +vn 0.976249 -0.116604 0.182594 +vn 0.172062 -0.020552 -0.984872 +vn 0.976249 -0.116605 0.182595 +vn 0.252391 -0.080873 -0.964240 +vn 0.976254 -0.116564 0.182595 +vn 0.172067 -0.020652 -0.984869 +vn 0.976254 -0.116564 0.182595 +vn 0.172061 -0.020559 -0.984872 +vn 0.813336 -0.097127 0.573630 +vn 0.813317 -0.097169 0.573649 +vn 0.414730 -0.051395 -0.908492 +vn 0.471517 0.069812 -0.879089 +vn 0.899334 -0.107442 0.423858 +vn 0.414953 -0.049662 -0.908487 +vn 0.899354 -0.107419 0.423821 +vn 0.414962 -0.049582 -0.908487 +vn 0.414953 -0.049542 -0.908493 +vn 0.821706 0.046405 0.568019 +vn 0.696864 -0.139580 -0.703490 +vn 0.899358 -0.107382 0.423821 +vn 0.599091 -0.068914 -0.797709 +vn 0.899358 -0.107382 0.423821 +vn 0.976306 -0.116125 0.182595 +vn 0.899350 -0.107453 0.423821 +vn 0.976245 -0.116641 0.182595 +vn 0.598775 -0.071488 -0.797720 +vn 0.899176 -0.106912 0.424326 +vn 0.598779 -0.071546 -0.797712 +vn 0.976245 -0.116641 0.182595 +vn 0.629060 -0.071704 0.774043 +vn 0.598770 -0.071536 -0.797720 +vn 0.598761 -0.071498 -0.797730 +vn 0.628663 -0.075057 0.774047 +vn 0.791339 -0.091704 -0.604460 +vn 0.628680 -0.074996 0.774040 +vn 0.813317 -0.097166 0.573649 +vn 0.813334 -0.097146 0.573630 +vn 0.813303 -0.095310 0.573981 +vn 0.791007 -0.094515 -0.604463 +vn 0.813324 -0.097110 0.573649 +vn 0.450145 -0.054804 0.891272 +vn 0.791007 -0.094515 -0.604463 +vn 0.954494 -0.151417 -0.256934 +vn 0.315852 -0.037698 0.948059 +vn 0.889922 -0.107446 -0.443276 +vn 0.450299 -0.053762 0.891258 +vn 0.450266 -0.053801 0.891272 +vn 0.465686 0.198797 0.862332 +vn 0.628669 -0.075089 0.774040 +vn 0.628666 -0.075108 0.774040 +vn 0.628666 -0.075108 0.774040 +vn 0.890078 -0.106353 -0.443227 +vn 0.450250 -0.053749 0.891283 +vn 0.890064 -0.106266 -0.443277 +vn 0.450295 -0.053798 0.891258 +vn 0.627941 -0.073191 0.774811 +vn 0.109043 -0.013029 0.993952 +vn 0.791018 -0.094505 -0.604449 +vn 0.109044 -0.013025 0.993952 +vn 0.791013 -0.094461 -0.604463 +vn 0.251825 -0.085112 0.964023 +vn 0.312809 -0.062344 0.947768 +vn 0.315847 -0.037740 0.948059 +vn 0.315847 -0.037740 0.948059 +vn 0.890080 -0.106340 -0.443227 +vn 0.890061 -0.106289 -0.443277 +vn 0.791012 -0.094484 -0.604460 +vn 0.791019 -0.094502 -0.604449 +vn 0.786157 0.041346 -0.616642 +vn 0.791017 -0.094447 -0.604460 +vn 0.890056 -0.106334 -0.443277 +vn 0.890056 -0.106334 -0.443277 +vn 0.972115 -0.116125 -0.203732 +vn 0.890063 -0.106271 -0.443277 +vn 0.890063 -0.106273 -0.443277 +vn 0.890063 -0.106273 -0.443277 +vn 0.972134 -0.115967 -0.203732 +vn 0.972126 -0.116063 -0.203717 +vn -0.959692 -0.113513 0.257111 +vn -0.235760 -0.028160 -0.971403 +vn -0.235949 -0.028423 -0.971350 +vn -0.258743 -0.030494 -0.965465 +vn -0.649897 -0.102451 -0.753085 +vn -0.473077 -0.056496 -0.879208 +vn -0.473046 -0.056750 -0.879208 +vn -0.704702 -0.083311 -0.704595 +vn -0.657865 -0.080350 -0.748838 +vn -0.658063 -0.078696 -0.748839 +vn -0.881557 -0.324013 -0.343326 +vn -0.834576 -0.101501 -0.541462 +vn -0.834788 -0.099738 -0.541463 +vn -0.959701 -0.113437 -0.257112 +vn -0.918922 -0.183812 -0.348993 +vn -0.930171 -0.111032 -0.349935 +vn 0.024447 -0.999665 0.008503 +vn -0.987620 -0.117966 -0.103394 +vn -0.976123 -0.191186 -0.103107 +vn -0.988795 -0.118106 0.091302 +vn -0.913929 -0.230828 0.333844 +vn -0.935119 -0.111616 0.336294 +vn -0.852651 -0.101856 0.512456 +vn -0.852379 -0.104117 0.512455 +vn -0.725813 -0.087333 0.682326 +vn -0.704697 -0.083352 0.704595 +vn -0.725324 -0.088906 0.682642 +vn -0.725636 -0.086313 0.682644 +vn -0.457643 -0.054887 0.887440 +vn -0.159199 -0.019238 0.987059 +vn -0.158921 -0.018982 0.987109 +vn -0.258835 -0.029724 0.965464 +vn -0.457290 -0.055279 0.887598 +vn -0.457320 -0.055032 0.887598 +vn 0.959692 -0.113513 -0.257112 +vn 0.158802 -0.018968 -0.987128 +vn 0.258835 -0.029723 -0.965464 +vn 0.457376 -0.054868 -0.887579 +vn 0.159096 -0.019239 -0.987076 +vn 0.704697 -0.083354 -0.704595 +vn 0.725535 -0.087350 -0.682619 +vn 0.457001 -0.055284 -0.887747 +vn 0.457035 -0.054997 -0.887747 +vn 0.725372 -0.086278 -0.682929 +vn 0.725059 -0.088883 -0.682927 +vn 0.913746 -0.231576 -0.333828 +vn 0.852267 -0.104111 -0.512642 +vn 0.852541 -0.101842 -0.512643 +vn 0.935108 -0.111614 -0.336327 +vn 0.959701 -0.113436 0.257111 +vn 0.981531 -0.190863 0.012944 +vn 0.992776 -0.119276 0.012976 +vn 0.881358 -0.324575 0.343307 +vn 0.930152 -0.111029 0.349985 +vn 0.918921 -0.183740 0.349034 +vn 0.704702 -0.083309 0.704596 +vn 0.834677 -0.099724 0.541635 +vn 0.834474 -0.101416 0.541635 +vn 0.649648 -0.102641 0.753275 +vn 0.657919 -0.078678 0.748967 +vn 0.657730 -0.080257 0.748966 +vn 0.258743 -0.030491 0.965465 +vn 0.235577 -0.028138 0.971448 +vn 0.235747 -0.028374 0.971400 +vn 0.472855 -0.056700 0.879314 +vn 0.472882 -0.056472 0.879314 +vn 0.000000 -0.309011 -0.951059 +vn 0.000000 -0.309011 -0.951059 +vn 0.000000 -0.809033 -0.587763 +vn 0.000000 -0.809033 -0.587763 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -0.809033 0.587763 +vn 0.000000 -0.809033 0.587763 +vn 0.000000 -0.309010 0.951059 +vn 0.000000 -0.309010 0.951059 +vn 0.000000 -0.989747 0.142829 +vn -0.007958 -0.951020 0.309027 +vn -0.001950 -0.912224 0.409688 +vn 0.000490 -0.984631 0.174646 +vn -0.005088 -0.623232 0.782021 +vn 0.007699 -0.951022 0.309028 +vn -0.004240 -0.527917 0.849285 +vn -0.007348 -0.587763 0.809000 +vn -0.000087 -0.587182 0.809455 +vn 0.001819 -0.683268 0.730165 +vn 0.000000 -0.531565 0.847017 +vn 0.000078 -0.554194 0.832387 +vn 0.004918 -0.545372 0.838180 +vn 0.000000 -0.414683 0.909966 +vn 0.000000 -0.414683 0.909966 +vn 0.007457 -0.587763 0.808999 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.587779 0.809022 +vn -0.000000 0.587779 0.809022 +vn -0.000000 0.951050 0.309037 +vn 0.000000 0.951050 0.309037 +vn 0.000599 -0.875573 0.483086 +vn 0.000000 -0.987657 0.156631 +vn -0.000388 -0.897678 0.440652 +vn -0.000585 -0.734322 0.678801 +vn 0.000393 -0.698585 0.715527 +vn 0.001117 -0.773587 0.633690 +vn 0.000000 -0.982545 0.186022 +vn -0.001551 -0.858404 0.512972 +vn 0.403665 0.050032 0.913538 +vn 0.923713 0.110262 -0.366874 +vn 0.404035 0.048302 0.913468 +vn 0.923713 0.110262 -0.366874 +vn 0.555622 0.066425 0.828778 +vn 0.792208 0.095106 -0.602795 +vn 0.555622 0.066425 0.828778 +vn 0.792322 0.094651 -0.602716 +vn 0.495571 0.352227 0.793943 +vn 0.692261 0.082687 0.716894 +vn 0.691664 0.084521 0.717257 +vn 0.692265 0.082658 0.716894 +vn 0.692262 0.082689 0.716894 +vn 0.923700 0.110367 -0.366874 +vn 0.553805 0.067978 0.829867 +vn 0.923700 0.110367 -0.366874 +vn 0.555628 0.066369 0.828778 +vn 0.139511 0.016664 0.990080 +vn 0.139519 0.016591 0.990080 +vn 0.921220 0.303181 -0.243792 +vn 0.404038 0.048157 0.913474 +vn 0.923647 0.110812 -0.366874 +vn 0.139508 0.016665 0.990081 +vn 0.923703 0.110346 -0.366874 +vn 0.404042 0.048265 0.913466 +vn 0.404026 0.048255 0.913474 +vn 0.923703 0.110346 -0.366874 +vn 0.980888 0.117163 -0.155346 +vn 0.980892 0.117153 -0.155327 +vn 0.980905 0.117045 -0.155327 +vn 0.980873 0.117263 -0.155365 +vn 0.744748 -0.390613 0.541085 +vn 0.876500 0.071833 0.476013 +vn 0.980876 0.117238 -0.155365 +vn 0.980900 0.117089 -0.155327 +vn 0.980886 0.117200 -0.155327 +vn 0.980886 0.117200 -0.155327 +vn 0.980897 0.117107 -0.155327 +vn 0.980886 0.117177 -0.155346 +vn 0.692258 0.082717 0.716894 +vn 0.980891 0.117163 0.155327 +vn 0.980889 0.117152 0.155346 +vn 0.308805 0.036899 -0.950409 +vn 0.941701 0.112472 0.317094 +vn 0.941701 0.112472 0.317094 +vn 0.619641 0.074041 -0.781385 +vn 0.980879 0.117264 0.155327 +vn 0.179948 0.021494 -0.983441 +vn 0.980899 0.117044 0.155365 +vn 0.179946 0.021513 -0.983441 +vn 0.317182 -0.041359 -0.947462 +vn 0.555625 0.066391 0.828778 +vn 0.793221 -0.196665 -0.576302 +vn 0.941701 0.112476 0.317094 +vn 0.941773 0.112589 0.316839 +vn 0.793326 -0.192747 -0.577480 +vn 0.980887 0.117164 -0.155346 +vn 0.923702 0.110355 -0.366874 +vn 0.980894 0.117128 -0.155334 +vn 0.980882 0.117239 0.155327 +vn 0.474387 0.056658 -0.878491 +vn 0.980893 0.117088 0.155365 +vn 0.461131 0.149797 -0.874597 +vn 0.474381 0.056712 -0.878491 +vn 0.941776 0.112565 0.316839 +vn 0.474381 0.056712 -0.878491 +vn 0.941620 0.112400 0.317360 +vn 0.980886 0.117200 0.155327 +vn 0.619644 0.074014 -0.781385 +vn 0.980886 0.117200 0.155327 +vn 0.619680 0.074011 -0.781357 +vn 0.619637 0.074078 -0.781385 +vn 0.941617 0.112428 0.317360 +vn 0.619680 0.074014 -0.781357 +vn 0.941696 0.112518 0.317094 +vn 0.980894 0.117107 0.155346 +vn 0.980889 0.117178 0.155327 +vn 0.618612 0.075050 -0.782104 +vn 0.619650 0.073967 -0.781385 +vn 0.958818 -0.284021 0.000000 +vn 0.872776 0.104916 0.476712 +vn 0.941699 0.112496 0.317094 +vn 0.980891 0.117134 -0.155346 +vn 0.941699 0.112496 0.317094 +vn 0.175544 -0.822978 0.540271 +vn 0.792445 0.094654 -0.602554 +vn 0.792445 0.094654 -0.602554 +vn 0.418962 -0.135233 0.897877 +vn 0.873094 0.104287 0.476267 +vn 0.873088 0.104277 0.476282 +vn 0.873087 0.104281 0.476282 +vn 0.792446 0.094649 -0.602554 +vn 0.792446 0.094649 -0.602554 +vn 0.873087 0.104281 0.476282 +vn 0.923706 0.110323 -0.366874 +vn 0.483577 0.852904 0.196742 +vn 0.923689 0.110330 -0.366915 +vn 0.980887 0.117164 0.155346 +vn 0.980892 0.117128 0.155346 +vn 0.980887 0.117164 0.155346 +vn 0.940524 0.113015 0.320379 +vn 0.941700 0.112483 0.317094 +vn 0.792453 0.094594 -0.602554 +vn 0.873086 0.104355 0.476267 +vn 0.792452 0.094594 -0.602554 +vn 0.873087 0.104285 0.476282 +vn 0.873099 0.104247 0.476268 +vn 0.872629 0.106135 0.476711 +vn 0.980891 0.117132 0.155346 +vn 0.873093 0.104300 0.476268 +vn 0.873099 0.104251 0.476267 +vn 0.923705 0.110327 -0.366874 +vn 0.692262 0.082680 0.716894 +vn 0.923677 0.110426 -0.366915 +vn 0.692273 0.082689 0.716883 +vn 0.692262 0.082683 0.716894 +vn 0.941700 0.112488 0.317094 +vn 0.692264 0.082760 0.716883 +vn 0.792442 0.094684 -0.602554 +vn 0.555629 0.066362 0.828778 +vn 0.792188 0.095770 -0.602715 +vn 0.555629 0.066362 0.828778 +vn 0.622851 -0.340026 -0.704584 +vn 0.849617 -0.463809 -0.251062 +vn 0.849618 -0.463812 -0.251052 +vn 0.849619 -0.463810 0.251053 +vn 0.849616 -0.463811 0.251063 +vn 0.229419 -0.123486 -0.965463 +vn 0.223303 -0.121903 -0.967097 +vn 0.223286 -0.121896 0.967101 +vn 0.622831 -0.340015 0.704607 +vn 0.622855 -0.340018 0.704584 +vn 0.622065 -0.341426 -0.704602 +vn 0.622851 -0.340026 -0.704584 +vn 0.622066 -0.341426 -0.704601 +vn 0.622839 -0.340012 -0.704602 +vn 0.848225 -0.463048 -0.257101 +vn 0.849612 -0.463819 -0.251062 +vn 0.849612 -0.463819 -0.251062 +vn 0.850365 -0.462436 -0.251062 +vn 0.848955 -0.461709 0.257101 +vn 0.849617 -0.463808 0.251063 +vn 0.849611 -0.463818 0.251063 +vn 0.849612 -0.463819 0.251063 +vn 0.229416 -0.123486 0.965463 +vn 0.622066 -0.341427 0.704600 +vn 0.223303 -0.121903 0.967097 +vn 0.622854 -0.340020 0.704584 +vn 0.622066 -0.341426 0.704601 +vn 0.622836 -0.340017 0.704602 +vn 0.227942 -0.126192 -0.965463 +vn 0.623607 -0.338602 -0.704602 +vn 0.623604 -0.338598 -0.704606 +vn 0.848219 -0.463058 -0.257101 +vn 0.848863 -0.465193 -0.251052 +vn 0.847486 -0.464399 0.257101 +vn 0.849614 -0.463820 0.251053 +vn 0.223304 -0.121904 -0.967096 +vn 0.223295 -0.121898 -0.967099 +vn 0.227940 -0.126190 0.965463 +vn 0.623609 -0.338601 0.704600 +vn 0.623603 -0.338600 0.704606 +vn 0.622835 -0.340008 -0.704607 +vn 0.622835 -0.340008 -0.704607 +vn 0.849620 -0.463810 -0.251052 +vn 0.849620 -0.463810 -0.251052 +vn 0.849619 -0.463810 0.251053 +vn 0.849619 -0.463810 0.251053 +vn 0.223286 -0.121896 -0.967101 +vn 0.223304 -0.121904 0.967096 +vn 0.223295 -0.121898 0.967099 +vn 0.622835 -0.340008 0.704607 +vn 0.622835 -0.340008 0.704607 +vn 0.622835 -0.340008 -0.704607 +vn -0.622855 -0.340018 -0.704584 +vn -0.622831 -0.340015 -0.704607 +vn -0.849620 -0.463810 -0.251052 +vn -0.849616 -0.463811 -0.251062 +vn -0.849617 -0.463809 0.251063 +vn -0.849618 -0.463812 0.251053 +vn -0.227942 -0.126192 -0.965463 +vn -0.223295 -0.121898 -0.967099 +vn -0.223304 -0.121904 0.967096 +vn -0.223286 -0.121896 0.967101 +vn -0.622851 -0.340026 0.704584 +vn -0.622835 -0.340008 0.704607 +vn -0.623607 -0.338602 -0.704602 +vn -0.622835 -0.340008 -0.704607 +vn -0.623604 -0.338598 -0.704606 +vn -0.622835 -0.340008 -0.704607 +vn -0.848219 -0.463058 -0.257101 +vn -0.849620 -0.463810 -0.251052 +vn -0.849620 -0.463810 -0.251052 +vn -0.848863 -0.465193 -0.251052 +vn -0.847486 -0.464399 0.257101 +vn -0.849614 -0.463820 0.251053 +vn -0.849619 -0.463810 0.251053 +vn -0.849619 -0.463810 0.251053 +vn -0.227940 -0.126190 0.965463 +vn -0.623609 -0.338601 0.704600 +vn -0.223295 -0.121898 0.967099 +vn -0.622835 -0.340008 0.704607 +vn -0.623603 -0.338600 0.704606 +vn -0.622835 -0.340008 0.704607 +vn -0.229419 -0.123486 -0.965463 +vn -0.622065 -0.341426 -0.704602 +vn -0.622066 -0.341426 -0.704601 +vn -0.848225 -0.463048 -0.257101 +vn -0.850365 -0.462436 -0.251062 +vn -0.848955 -0.461709 0.257101 +vn -0.849617 -0.463808 0.251063 +vn -0.223303 -0.121903 -0.967097 +vn -0.229416 -0.123486 0.965463 +vn -0.622066 -0.341427 0.704600 +vn -0.622066 -0.341426 0.704601 +vn -0.622854 -0.340020 -0.704584 +vn -0.622836 -0.340017 -0.704602 +vn -0.849612 -0.463819 -0.251062 +vn -0.849612 -0.463819 -0.251062 +vn -0.849611 -0.463818 0.251063 +vn -0.849611 -0.463818 0.251063 +vn -0.223304 -0.121904 -0.967096 +vn -0.223286 -0.121896 -0.967101 +vn -0.223303 -0.121903 0.967097 +vn -0.622839 -0.340012 0.704602 +vn -0.622851 -0.340026 0.704584 +vn -0.906654 0.108250 -0.407751 +vn -0.906654 0.108250 -0.407751 +vn -0.906645 0.108319 -0.407751 +vn -0.906645 0.108319 -0.407751 +vn -0.969281 0.115750 0.217018 +vn -0.979248 0.116940 -0.165525 +vn -0.978880 0.120390 -0.165226 +vn -0.964399 0.063276 -0.256771 +vn -0.906866 0.106353 -0.407779 +vn -0.906644 0.108226 -0.407780 +vn -0.906645 0.108326 -0.407751 +vn -0.979290 0.117008 -0.165227 +vn -0.979290 0.117008 -0.165227 +vn -0.979301 0.116913 -0.165227 +vn -0.979302 0.116913 -0.165227 +vn -0.979294 0.116923 -0.165263 +vn -0.979281 0.117084 -0.165227 +vn -0.979291 0.116998 -0.165227 +vn -0.979303 0.116849 -0.165263 +vn -0.979290 0.117006 -0.165227 +vn -0.979294 0.116972 -0.165227 +vn -0.979290 0.117006 -0.165227 +vn -0.969252 0.115988 0.217018 +vn -0.969280 0.115813 0.216986 +vn -0.689268 0.306234 0.656605 +vn -0.883959 0.105811 0.455434 +vn -0.969292 0.115718 0.216986 +vn -0.969292 0.115718 0.216986 +vn -0.139922 0.016701 -0.990022 +vn -0.139920 0.016713 -0.990022 +vn -0.883985 0.105596 0.455434 +vn -0.264922 -0.024645 -0.963955 +vn -0.884027 0.105539 0.455366 +vn -0.365662 0.124502 -0.922383 +vn -0.771756 0.092190 0.629200 +vn -0.969271 0.115888 0.216986 +vn -0.969271 0.115888 0.216986 +vn -0.884025 0.105549 0.455366 +vn -0.506789 0.062493 -0.859802 +vn -0.883938 0.105685 0.455505 +vn -0.385227 0.045980 -0.921676 +vn -0.385227 0.046027 -0.921673 +vn -0.969299 0.115655 0.216986 +vn -0.385521 0.043511 -0.921673 +vn -0.507027 0.060524 -0.859803 +vn -0.969299 0.115655 0.216986 +vn -0.507044 0.060891 -0.859767 +vn -0.507080 0.060586 -0.859767 +vn -0.969281 0.115810 0.216986 +vn -0.665253 0.081813 -0.742122 +vn -0.969285 0.115777 0.216986 +vn -0.962668 0.084986 0.256999 +vn -0.969281 0.115810 0.216986 +vn -0.770942 0.347722 -0.533609 +vn -0.883947 0.105607 0.455505 +vn -0.884033 0.105481 0.455366 +vn -0.884087 0.104736 0.455434 +vn -0.665910 0.079507 -0.741783 +vn -0.883982 0.105618 0.455434 +vn -0.884028 0.105527 0.455366 +vn -0.771682 0.092811 0.629200 +vn -0.828167 0.098928 -0.551681 +vn -0.771854 0.092156 0.629085 +vn -0.828640 0.101360 -0.550529 +vn -0.905573 0.111671 -0.409228 +vn -0.771854 0.092157 0.629085 +vn -0.771839 0.092214 0.629096 +vn -0.666001 0.081482 -0.741488 +vn -0.665904 0.079557 -0.741783 +vn -0.709802 0.032564 0.703648 +vn -0.771856 0.092137 0.629085 +vn -0.771838 0.092219 0.629096 +vn -0.709087 0.040934 -0.703932 +vn -0.666227 0.079528 -0.741497 +vn -0.771437 0.095610 0.629082 +vn -0.386270 0.268163 0.882544 +vn -0.666226 0.079601 -0.741489 +vn -0.573266 0.069177 0.816444 +vn -0.667354 0.069823 -0.741461 +vn -0.573589 0.068485 0.816275 +vn -0.573350 0.070478 0.816274 +vn -0.828928 0.098970 -0.550530 +vn -0.573583 0.068532 0.816275 +vn -0.828928 0.098970 -0.550530 +vn -0.573583 0.068532 0.816275 +vn -0.180547 0.021566 0.983330 +vn -0.180545 0.021580 0.983330 +vn -0.264062 -0.016541 0.964364 +vn -0.422765 0.050492 0.904832 +vn -0.422954 0.048844 0.904834 +vn -0.422755 0.050511 0.904835 +vn -0.906632 0.108327 -0.407780 +vn -0.828920 0.099033 -0.550530 +vn -0.828920 0.099033 -0.550530 +vn -0.906647 0.108303 -0.407751 +vn -0.906642 0.108239 -0.407780 +vn -0.828771 0.100433 -0.550501 +vn -0.828938 0.099042 -0.550502 +vn -0.828930 0.098950 -0.550530 +vn 0.959453 0.115487 0.257123 +vn 0.212133 0.025258 -0.976914 +vn 0.212085 0.025332 -0.976923 +vn 0.258608 0.031632 -0.965464 +vn 0.614425 -0.003986 -0.788965 +vn 0.451609 0.053858 -0.890589 +vn 0.451596 0.053963 -0.890589 +vn 0.704462 0.085316 -0.704595 +vn 0.625923 0.074689 -0.776300 +vn 0.625974 0.074268 -0.776300 +vn 0.886991 -0.242162 -0.393197 +vn 0.811360 0.096349 -0.576552 +vn 0.811299 0.096859 -0.576552 +vn 0.959415 0.115807 -0.257122 +vn 0.913535 0.109168 -0.391836 +vn 0.914409 0.101635 -0.391824 +vn 0.378077 -0.925618 0.016992 +vn 0.981993 0.117293 -0.148093 +vn 0.990949 0.118363 0.063326 +vn 0.982852 0.109869 -0.148088 +vn 0.951301 -0.032123 0.306586 +vn 0.944061 0.112854 0.309859 +vn 0.857372 0.098891 0.505107 +vn 0.856964 0.102353 0.505111 +vn 0.721459 0.084620 0.687268 +vn 0.704528 0.084781 0.704594 +vn 0.721477 0.082727 0.687479 +vn 0.721046 0.086371 0.687483 +vn 0.149177 0.017818 0.988650 +vn 0.435508 0.051281 0.898723 +vn 0.149786 0.017148 0.988570 +vn 0.258549 0.032099 0.965465 +vn 0.435201 0.050413 0.898921 +vn 0.435055 0.051646 0.898922 +vn -0.959454 0.115487 -0.257122 +vn -0.258552 0.032099 -0.965464 +vn -0.149389 0.017844 -0.988617 +vn -0.436052 0.051419 -0.898451 +vn -0.149932 0.017246 -0.988546 +vn -0.704526 0.084786 -0.704596 +vn -0.721957 0.084728 -0.686731 +vn -0.435596 0.051708 -0.898656 +vn -0.435736 0.050524 -0.898655 +vn -0.721975 0.082957 -0.686928 +vn -0.721565 0.086426 -0.686931 +vn -0.951362 -0.029738 -0.306638 +vn -0.857524 0.099092 -0.504810 +vn -0.944079 0.112856 -0.309803 +vn -0.857137 0.102373 -0.504813 +vn -0.959415 0.115807 0.257123 +vn -0.990226 0.109681 0.086154 +vn -0.989329 0.117494 0.086158 +vn -0.887118 -0.242318 0.392814 +vn -0.914621 0.100501 0.391622 +vn -0.913620 0.109178 0.391637 +vn -0.704463 0.085316 0.704594 +vn -0.811448 0.096877 0.576340 +vn -0.811545 0.096058 0.576340 +vn -0.614804 -0.003510 0.788672 +vn -0.626095 0.074710 0.776160 +vn -0.626184 0.073961 0.776160 +vn -0.212407 0.025371 0.976852 +vn -0.258606 0.031628 0.965465 +vn -0.212489 0.025246 0.976837 +vn -0.451879 0.053996 0.890444 +vn -0.451898 0.053833 0.890444 +vn 0.009862 0.994509 0.104188 +vn 0.002788 0.980317 0.197411 +vn -0.000140 0.850135 0.526565 +vn -0.001923 0.802909 -0.596098 +vn -0.008575 0.770594 0.637269 +vn 0.002869 0.843520 0.537090 +vn -0.004354 0.842162 -0.539207 +vn 0.007433 0.784971 0.619488 +vn 0.000096 0.824006 0.566582 +vn 0.000000 0.810523 0.585707 +vn 0.000000 0.758764 -0.651366 +vn 0.000000 0.686716 0.726926 +vn 0.000000 0.758764 -0.651366 +vn -0.000095 0.823929 -0.566693 +vn 0.000000 0.810538 -0.585687 +vn 0.000000 0.686716 0.726926 +vn 0.008575 0.770594 0.637269 +vn 0.000000 0.289086 0.957303 +vn 0.000000 0.289086 0.957303 +vn 0.000458 0.894397 0.447273 +vn 0.000443 0.970170 0.242424 +vn 0.000218 0.999967 0.008142 +vn 0.000209 0.976156 -0.217068 +vn -0.005062 0.911789 -0.410629 +vn 0.000302 0.914075 -0.405545 +vn -0.000292 0.957342 -0.288958 +vn 0.000324 0.998670 -0.051566 +vn -0.001057 0.913740 0.406297 +vn -0.000457 0.894317 -0.447433 +vn -0.009306 0.885983 -0.463625 +vn -0.000449 0.970138 -0.242554 +vn -0.000218 0.999967 -0.008137 +vn -0.000205 0.976099 0.217327 +vn -0.000300 0.914067 0.405563 +vn -0.000218 0.880796 0.473496 +vn 0.000286 0.957422 0.288691 +vn 0.002436 0.814041 -0.580802 +vn 0.001767 0.980677 -0.195626 +vn 0.000141 0.850234 -0.526405 +vn 0.007467 0.876770 -0.480852 +vn -0.004864 0.998642 0.051877 +vn 0.009072 0.885984 -0.463626 +vn -0.009301 0.994514 0.104189 +vn -0.005568 0.807452 0.589907 +vn -0.000683 -0.258815 0.965927 +vn 0.000000 -0.267255 0.963626 +vn 0.000102 -0.541342 0.840802 +vn 0.000000 -0.531633 0.846975 +vn 0.000000 -0.267255 0.963626 +vn 0.000087 -0.586798 0.809734 +vn -0.000078 -0.554148 0.832418 +vn 0.005195 -0.707087 0.707108 +vn -0.000149 -0.556928 0.830561 +vn 0.000683 -0.258815 0.965927 +vn -0.002989 -0.681882 0.731456 +vn 0.005533 -0.965912 0.258810 +vn -0.004869 -0.707088 0.707109 +vn 0.000000 -0.989809 0.142402 +vn -0.000475 -0.984686 0.174337 +vn -0.004501 -0.965917 0.258812 +vn 0.001378 -0.627632 0.778509 +vn 0.000702 -0.773572 0.633709 +vn -0.000622 -0.913154 0.407615 +vn 0.000000 -0.987613 0.156907 +vn 0.000377 -0.897475 0.441065 +vn 0.000576 -0.733927 0.679228 +vn -0.000387 -0.698850 0.715268 +vn -0.000596 -0.875817 0.482642 +vn 0.000000 -0.982401 0.186785 +vn 0.002186 -0.857934 0.513756 +vn 0.000000 0.258815 -0.965927 +vn 0.000000 0.258815 -0.965927 +vn 0.000000 0.707096 -0.707117 +vn 0.000000 0.707096 -0.707117 +vn 0.000000 0.965927 -0.258815 +vn 0.000000 0.965927 -0.258815 +vn 0.000000 -0.965927 -0.258815 +vn -0.000000 -0.965927 -0.258815 +vn -0.000000 -0.707105 -0.707109 +vn 0.000000 -0.707105 -0.707109 +vn -0.000000 -0.258818 -0.965926 +vn 0.000000 -0.258818 -0.965926 +vn 0.000000 0.965927 0.258815 +vn 0.000000 0.965927 0.258815 +vn 0.000000 0.707105 0.707109 +vn 0.000000 0.707105 0.707109 +vn 0.000000 0.258818 0.965926 +vn 0.000000 0.258818 0.965926 +vn -0.000000 -0.965927 -0.258814 +vn 0.000000 -0.965927 -0.258814 +vn 0.000000 -0.707075 -0.707139 +vn -0.000000 -0.707075 -0.707139 +vn 0.000000 -0.258809 -0.965929 +vn -0.000000 -0.258809 -0.965929 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.959692 -0.113513 0.257112 +vn 0.158802 -0.018968 0.987128 +vn 0.457374 -0.054868 0.887580 +vn 0.159096 -0.019239 0.987076 +vn 0.258833 -0.029723 0.965465 +vn 0.725537 -0.087348 0.682617 +vn 0.704698 -0.083354 0.704594 +vn 0.457035 -0.054997 0.887747 +vn 0.457001 -0.055281 0.887746 +vn 0.725060 -0.088883 0.682926 +vn 0.725373 -0.086278 0.682928 +vn 0.913745 -0.231578 0.333828 +vn 0.852264 -0.104111 0.512648 +vn 0.852537 -0.101842 0.512648 +vn 0.935108 -0.111614 0.336327 +vn 0.981531 -0.190866 -0.012944 +vn 0.959701 -0.113436 -0.257111 +vn 0.992776 -0.119276 -0.012976 +vn 0.881358 -0.324576 -0.343306 +vn 0.930152 -0.111029 -0.349985 +vn 0.918907 -0.183811 -0.349032 +vn 0.704702 -0.083309 -0.704596 +vn 0.834472 -0.101413 -0.541637 +vn 0.834675 -0.099724 -0.541638 +vn 0.649647 -0.102639 -0.753275 +vn 0.657919 -0.078678 -0.748967 +vn 0.657730 -0.080252 -0.748966 +vn 0.235747 -0.028372 -0.971400 +vn 0.235579 -0.028139 -0.971448 +vn 0.258744 -0.030491 -0.965464 +vn 0.472856 -0.056698 -0.879314 +vn 0.472882 -0.056472 -0.879314 +vn -0.959692 -0.113513 -0.257111 +vn -0.235762 -0.028160 0.971403 +vn -0.258741 -0.030494 0.965465 +vn -0.235949 -0.028420 0.971350 +vn -0.649896 -0.102451 0.753086 +vn -0.473029 -0.056746 0.879218 +vn -0.473059 -0.056493 0.879218 +vn -0.704703 -0.083311 0.704594 +vn -0.658064 -0.078696 0.748838 +vn -0.657867 -0.080340 0.748837 +vn -0.881558 -0.324011 0.343326 +vn -0.834786 -0.099737 0.541466 +vn -0.834575 -0.101494 0.541465 +vn -0.959701 -0.113437 0.257112 +vn -0.930171 -0.111032 0.349935 +vn -0.918922 -0.183812 0.348993 +vn 0.024447 -0.999665 -0.008503 +vn -0.976123 -0.191186 0.103107 +vn -0.987620 -0.117966 0.103395 +vn -0.988795 -0.118106 -0.091302 +vn -0.913930 -0.230826 -0.333843 +vn -0.935120 -0.111616 -0.336293 +vn -0.852651 -0.101856 -0.512456 +vn -0.852379 -0.104113 -0.512455 +vn -0.704697 -0.083352 -0.704595 +vn -0.725811 -0.087333 -0.682328 +vn -0.725324 -0.088901 -0.682643 +vn -0.725635 -0.086313 -0.682645 +vn -0.258836 -0.029724 -0.965464 +vn -0.158921 -0.018982 -0.987109 +vn -0.457645 -0.054888 -0.887439 +vn -0.159199 -0.019238 -0.987059 +vn -0.457292 -0.055280 -0.887597 +vn -0.457322 -0.055032 -0.887597 +vn 0.890055 -0.106337 0.443277 +vn 0.890085 -0.106292 0.443227 +vn 0.972128 -0.116069 0.203703 +vn 0.972113 -0.116147 0.203732 +vn 0.954493 -0.151417 0.256934 +vn 0.889922 -0.107446 0.443276 +vn 0.890054 -0.106350 0.443277 +vn 0.890088 -0.106269 0.443227 +vn 0.972128 -0.116071 0.203703 +vn 0.972128 -0.116071 0.203703 +vn 0.976305 -0.116134 -0.182595 +vn 0.972123 -0.116112 0.203703 +vn 0.972117 -0.116137 0.203717 +vn 0.976245 -0.116641 -0.182595 +vn 0.976245 -0.116641 -0.182595 +vn 0.972117 -0.116141 0.203717 +vn 0.972117 -0.116141 0.203717 +vn 0.976254 -0.116564 -0.182595 +vn 0.976254 -0.116564 -0.182595 +vn 0.972137 -0.115967 0.203717 +vn 0.972115 -0.116125 0.203732 +vn 0.972123 -0.116063 0.203732 +vn 0.899351 -0.107454 -0.423819 +vn 0.821705 0.046407 -0.568020 +vn 0.899184 -0.106934 -0.424303 +vn 0.899359 -0.107382 -0.423819 +vn 0.899359 -0.107382 -0.423819 +vn 0.172065 -0.020652 0.984869 +vn 0.976249 -0.116605 -0.182594 +vn 0.976249 -0.116604 -0.182595 +vn 0.339489 0.301845 0.890863 +vn 0.813302 -0.095310 -0.573983 +vn 0.813323 -0.097110 -0.573651 +vn 0.172060 -0.020552 0.984872 +vn 0.252389 -0.080873 0.964240 +vn 0.172059 -0.020559 0.984872 +vn 0.976252 -0.116582 -0.182594 +vn 0.414998 -0.049581 0.908470 +vn 0.976249 -0.116634 -0.182578 +vn 0.414957 -0.049662 0.908485 +vn 0.899352 -0.107444 -0.423819 +vn 0.899338 -0.107418 -0.423855 +vn 0.414735 -0.051394 0.908490 +vn 0.414952 -0.049581 0.908491 +vn 0.414971 -0.049544 0.908485 +vn 0.976264 -0.116459 -0.182611 +vn 0.786158 0.041344 0.616641 +vn 0.953038 -0.160484 -0.256835 +vn 0.976245 -0.116618 -0.182611 +vn 0.976247 -0.116649 -0.182578 +vn 0.598774 -0.071502 0.797720 +vn 0.899340 -0.107397 -0.423855 +vn 0.899340 -0.107398 -0.423855 +vn 0.899148 -0.108998 -0.423855 +vn 0.899333 -0.107458 -0.423855 +vn 0.899333 -0.107458 -0.423855 +vn 0.791018 -0.094447 0.604459 +vn 0.813319 -0.097144 -0.573651 +vn 0.890063 -0.106271 0.443277 +vn 0.813330 -0.097167 -0.573632 +vn 0.813330 -0.097170 -0.573632 +vn 0.598770 -0.071536 0.797720 +vn 0.813321 -0.097125 -0.573651 +vn 0.598770 -0.071536 0.797720 +vn 0.697443 -0.135925 -0.703632 +vn 0.890063 -0.106273 0.443277 +vn 0.813583 -0.095155 -0.573610 +vn 0.813342 -0.097184 -0.573611 +vn 0.813333 -0.097023 -0.573651 +vn 0.890063 -0.106273 0.443277 +vn 0.465693 0.198788 -0.862330 +vn 0.696865 -0.139580 0.703489 +vn 0.599092 -0.068913 0.797709 +vn 0.627941 -0.073191 -0.774811 +vn 0.598786 -0.071490 0.797712 +vn 0.628669 -0.075089 -0.774040 +vn 0.598769 -0.071545 0.797720 +vn 0.628666 -0.075108 -0.774040 +vn 0.791020 -0.094487 0.604449 +vn 0.628666 -0.075108 -0.774040 +vn 0.791011 -0.094501 0.604459 +vn 0.629060 -0.071704 -0.774043 +vn 0.976246 -0.116602 -0.182615 +vn 0.628671 -0.074995 -0.774047 +vn 0.972117 -0.116109 0.203732 +vn 0.628672 -0.075058 -0.774040 +vn 0.315851 -0.037705 -0.948059 +vn 0.450256 -0.053756 -0.891280 +vn 0.450295 -0.053798 -0.891258 +vn 0.890056 -0.106334 0.443277 +vn 0.890056 -0.106334 0.443277 +vn 0.450145 -0.054804 -0.891272 +vn 0.450271 -0.053758 -0.891272 +vn 0.450294 -0.053804 -0.891258 +vn 0.791008 -0.094503 0.604463 +vn 0.251826 -0.085113 -0.964022 +vn 0.109040 -0.013024 -0.993952 +vn 0.791023 -0.094463 0.604449 +vn 0.109043 -0.013004 -0.993952 +vn 0.315850 -0.037716 -0.948059 +vn 0.312816 -0.062343 -0.947765 +vn 0.315854 -0.037740 -0.948057 +vn 0.791339 -0.091704 0.604460 +vn 0.791007 -0.094515 0.604463 +vn 0.791007 -0.094515 0.604463 +vn 0.235783 0.098847 -0.966765 +vn 0.711651 -0.007257 -0.702496 +vn 0.698642 0.134655 -0.702686 +vn 0.711231 -0.007629 -0.702917 +vn 0.698644 0.134654 -0.702684 +vn 0.891681 0.373434 -0.255838 +vn -0.244050 -0.096400 -0.964959 +vn -0.235783 -0.098847 -0.966765 +vn 0.261788 -0.004229 -0.965116 +vn 0.251072 0.048395 -0.966758 +vn 0.255965 -0.008285 -0.966650 +vn 0.251077 0.048392 -0.966757 +vn -0.653272 -0.280998 -0.703048 +vn -0.654203 -0.280436 -0.702406 +vn -0.710981 0.017170 -0.703002 +vn -0.262395 -0.001213 -0.964960 +vn -0.251072 -0.048392 -0.966758 +vn -0.255632 0.004130 -0.966765 +vn -0.251069 -0.048394 -0.966759 +vn -0.891552 -0.373742 -0.255836 +vn 0.966599 -0.015261 -0.255838 +vn -0.895388 -0.368491 -0.249989 +vn -0.966715 0.009399 -0.255684 +vn -0.711588 0.018038 -0.702365 +vn -0.698650 -0.134659 -0.702677 +vn -0.698649 -0.134660 -0.702678 +vn -0.893965 -0.368047 0.255674 +vn -0.892998 -0.374348 0.249837 +vn -0.950797 -0.183268 -0.249794 +vn -0.968165 0.015634 -0.249823 +vn -0.950802 -0.183259 -0.249784 +vn -0.244046 -0.096401 0.964960 +vn -0.653664 -0.280193 0.703004 +vn -0.653909 -0.281240 0.702358 +vn -0.966714 0.009399 0.255685 +vn -0.950800 -0.183269 0.249785 +vn -0.950799 -0.183258 0.249795 +vn -0.968165 0.015634 0.249824 +vn -0.235783 -0.098847 0.966765 +vn -0.698649 -0.134658 0.702678 +vn -0.262392 -0.001211 0.964961 +vn -0.710982 0.017172 0.703000 +vn -0.711588 0.018038 0.702365 +vn -0.698650 -0.134660 0.702677 +vn 0.235783 0.098847 0.966765 +vn 0.239526 0.104824 0.965215 +vn 0.261785 -0.004229 0.965117 +vn -0.251072 -0.048395 0.966758 +vn -0.251069 -0.048392 0.966759 +vn -0.255632 0.004130 0.966765 +vn 0.657560 0.271088 0.702941 +vn 0.657799 0.271601 0.702519 +vn 0.891708 0.377918 0.249069 +vn 0.711653 -0.007255 0.702494 +vn 0.255965 -0.008283 0.966651 +vn 0.251072 0.048391 0.966758 +vn 0.251077 0.048396 0.966757 +vn 0.966501 -0.019272 0.255939 +vn 0.950645 0.183233 0.250401 +vn 0.968326 -0.015288 0.249220 +vn 0.711231 -0.007629 0.702917 +vn 0.698642 0.134654 0.702686 +vn 0.698643 0.134656 0.702684 +vn 0.950650 0.183225 0.250385 +vn 0.891680 0.373434 0.255838 +vn 0.657798 0.271600 -0.702521 +vn 0.891708 0.377918 -0.249068 +vn 0.239528 0.104827 -0.965214 +vn 0.657559 0.271089 -0.702941 +vn 0.950645 0.183233 -0.250400 +vn 0.968286 -0.019401 -0.249090 +vn 0.950651 0.183225 -0.250384 +vn 0.849622 0.463824 0.251018 +vn 0.849617 0.463809 0.251063 +vn 0.849612 0.463819 -0.251062 +vn 0.849627 0.463814 -0.251017 +vn 0.622066 0.341427 0.704600 +vn 0.229416 0.123486 0.965463 +vn 0.223306 0.121903 0.967096 +vn 0.223278 0.121892 -0.967103 +vn 0.622830 0.340017 -0.704607 +vn 0.622836 0.340017 -0.704602 +vn 0.848954 0.461705 0.257111 +vn 0.622839 0.340012 0.704602 +vn 0.622062 0.341422 0.704606 +vn 0.622835 0.340008 0.704607 +vn 0.849622 0.463824 0.251018 +vn 0.849618 0.463812 0.251053 +vn 0.849618 0.463812 0.251053 +vn 0.848954 0.461705 -0.257111 +vn 0.849626 0.463816 -0.251017 +vn 0.849618 0.463812 -0.251052 +vn 0.849614 0.463820 -0.251052 +vn 0.229419 0.123486 -0.965463 +vn 0.622065 0.341426 -0.704602 +vn 0.223306 0.121903 -0.967096 +vn 0.622840 0.340010 -0.704602 +vn 0.622062 0.341422 -0.704606 +vn 0.622834 0.340009 -0.704607 +vn 0.227940 0.126190 0.965463 +vn 0.623608 0.338603 0.704600 +vn 0.623604 0.338598 0.704606 +vn 0.848219 0.463058 -0.257101 +vn 0.848219 0.463058 0.257102 +vn 0.848863 0.465193 0.251052 +vn 0.623607 0.338602 -0.704602 +vn 0.848863 0.465193 -0.251052 +vn 0.223304 0.121904 0.967096 +vn 0.223295 0.121898 0.967099 +vn 0.227942 0.126192 -0.965463 +vn 0.623604 0.338598 -0.704606 +vn 0.622835 0.340008 0.704607 +vn 0.622835 0.340008 0.704607 +vn 0.849618 0.463812 0.251053 +vn 0.849617 0.463808 0.251063 +vn 0.849620 0.463810 -0.251052 +vn 0.849616 0.463811 -0.251062 +vn 0.223278 0.121892 0.967103 +vn 0.223304 0.121904 -0.967096 +vn 0.622835 0.340008 -0.704607 +vn 0.223295 0.121898 -0.967099 +vn 0.622835 0.340008 -0.704607 +vn 0.622831 0.340015 0.704607 +vn 0.622835 0.340019 0.704602 +vn 0.404003 -0.367764 -0.837575 +vn -0.907108 -0.241000 0.345072 +vn -0.911826 0.224141 0.343997 +vn 0.948158 -0.233063 -0.216050 +vn 0.943536 0.243729 -0.224355 +vn -0.911823 0.224141 0.344004 +vn 0.945488 0.211374 -0.247735 +vn 0.948157 -0.233086 -0.216032 +vn -0.319038 0.289792 0.902350 +vn 0.866050 -0.212882 -0.452370 +vn -0.685886 -0.208790 0.697113 +vn 0.866114 -0.212918 -0.452231 +vn -0.805098 0.197904 0.559152 +vn 0.861762 0.226429 -0.453978 +vn -0.805090 0.197905 0.559164 +vn -0.800783 -0.210351 0.560801 +vn -0.073503 0.103277 0.991933 +vn 0.237424 -0.220451 -0.946061 +vn -0.132691 0.125262 0.983210 +vn -0.055958 0.091160 -0.994263 +vn 0.048521 -0.042990 -0.997897 +vn 0.708785 0.150276 -0.689233 +vn 0.041261 -0.036693 0.998474 +vn 0.728040 0.199286 -0.655929 +vn 0.733540 -0.180310 -0.655291 +vn -0.628580 0.154514 0.762242 +vn 0.733541 -0.180313 -0.655290 +vn -0.628583 0.154513 0.762240 +vn -0.624608 -0.162788 0.763783 +vn 0.532249 -0.130833 -0.836417 +vn 0.532243 -0.130830 -0.836422 +vn 0.528420 0.140476 -0.837280 +vn -0.243962 -0.096559 0.964966 +vn -0.416912 -0.111100 0.902131 +vn -0.420161 0.103281 0.901553 +vn -0.420152 0.103280 0.901557 +vn -0.125265 0.118323 -0.985042 +vn -0.401807 0.400905 -0.823302 +vn 0.293280 -0.225883 0.928958 +vn 0.230804 -0.214140 0.949144 +vn -0.312318 0.283421 -0.906714 +vn 0.274686 0.037929 -0.960786 +vn 0.315163 -0.077469 -0.945870 +vn 0.315164 -0.077470 -0.945870 +vn 0.397461 -0.361926 0.843228 +vn 0.312844 0.077974 -0.946598 +vn -0.177163 0.043549 0.983217 +vn 0.063437 -0.015593 -0.997864 +vn -0.175717 -0.046377 0.983348 +vn 0.063435 -0.015593 -0.997864 +vn -0.177161 0.043549 0.983218 +vn 0.062909 0.016604 -0.997881 +vn 0.272819 0.041559 0.961167 +vn 0.054010 -0.013276 0.998452 +vn 0.054008 -0.013276 0.998452 +vn -0.471088 0.429748 -0.770320 +vn 0.053561 0.014136 0.998465 +vn 0.571707 -0.501610 0.649260 +vn 0.549369 -0.507161 0.664064 +vn -0.243004 -0.098354 -0.965026 +vn -0.167281 0.041120 -0.985051 +vn -0.167283 0.041121 -0.985051 +vn 0.722200 -0.652633 0.229122 +vn -0.165916 -0.043790 -0.985167 +vn 0.723938 -0.649881 0.231449 +vn 0.656052 -0.599788 0.458095 +vn -0.638188 0.614599 -0.463665 +vn 0.306298 -0.075291 0.948953 +vn 0.306300 -0.075290 0.948953 +vn -0.606969 0.554679 -0.569140 +vn -0.407989 -0.108871 -0.906472 +vn 0.304045 0.075441 0.949666 +vn -0.411187 0.101076 -0.905930 +vn 0.706210 0.157271 0.690314 +vn 0.523669 -0.128727 0.842140 +vn 0.519877 0.137986 0.843023 +vn -0.411181 0.101073 -0.905933 +vn 0.523697 -0.128729 0.842122 +vn 0.726927 -0.178685 0.663061 +vn -0.691535 0.629556 -0.354174 +vn 0.721410 0.197873 0.663637 +vn 0.726920 -0.178690 0.663066 +vn -0.620744 0.152586 -0.769022 +vn 0.944187 0.216684 0.248109 +vn 0.947101 -0.232803 0.220914 +vn 0.942467 0.243453 0.229099 +vn -0.685398 -0.209953 -0.697244 +vn 0.947102 -0.232788 0.220925 +vn -0.616800 -0.160855 -0.770509 +vn 0.863927 -0.212345 0.456661 +vn -0.620751 0.152591 -0.769015 +vn 0.859571 0.226014 0.458317 +vn 0.863855 -0.212343 0.456798 +vn -0.732580 0.671035 -0.114189 +vn -0.723183 0.690588 -0.009662 +vn -0.799463 0.196521 -0.567660 +vn -0.799464 0.196522 -0.567659 +vn -0.795144 -0.208753 -0.569358 +vn -0.733453 0.671598 0.104894 +vn -0.908659 0.223364 -0.352772 +vn -0.908654 0.223359 -0.352787 +vn -0.903947 -0.240066 -0.353905 +vn -0.928801 -0.272096 -0.251578 +vn -0.645050 0.620268 0.446294 +vn -0.694004 0.631716 0.345390 +vn -0.964792 0.237154 -0.113728 +vn -0.964794 0.237159 -0.113705 +vn -0.960569 -0.253525 -0.114161 +vn 0.724810 -0.650546 -0.226804 +vn 0.723022 -0.653376 -0.224364 +vn -0.611225 0.558652 0.560635 +vn 0.582313 -0.504735 -0.637301 +vn -0.961554 -0.253785 0.104917 +vn -0.928966 -0.271561 0.251549 +vn 0.657561 -0.601361 -0.453849 +vn -0.965781 0.237397 0.104452 +vn -0.965775 0.237402 0.104489 +vn -0.415390 0.410947 0.811525 +vn 0.554708 -0.511371 -0.656352 +vn -0.477156 0.435046 0.763582 +vn 0.311147 -0.235579 -0.920701 +vn -0.000000 0.125816 0.992054 +vn -0.048710 0.116125 0.992040 +vn 0.137179 -0.332115 0.933210 +vn 0.000000 -0.350250 0.936656 +vn 0.217091 0.524361 -0.823357 +vn 0.000000 -0.350250 0.936656 +vn 0.214471 0.519303 -0.827240 +vn 0.134371 -0.323516 0.936633 +vn 0.371563 -0.898402 0.234124 +vn 0.289659 -0.697896 0.655011 +vn 0.000000 -0.973761 0.227571 +vn 0.372631 -0.899644 0.227568 +vn 0.000000 -0.757073 0.653330 +vn 0.000000 -0.973761 0.227571 +vn 0.338288 0.818102 -0.465049 +vn 0.000000 -0.757073 0.653330 +vn 0.290063 -0.699335 0.653295 +vn 0.340386 0.821542 -0.457390 +vn 0.383095 0.923658 -0.009728 +vn 0.383119 0.923651 -0.009358 +vn 0.342283 0.826036 0.447780 +vn 0.343236 0.829970 0.439703 +vn 0.222926 0.539755 0.811769 +vn 0.221379 0.534821 0.815449 +vn 0.049712 0.119125 0.991634 +vn 0.048710 0.116125 0.992040 +vn -0.137179 -0.332115 0.933210 +vn -0.134371 -0.323516 0.936633 +vn -0.289659 -0.697896 0.655011 +vn -0.290063 -0.699335 0.653295 +vn -0.372143 -0.899840 0.227591 +vn 0.371986 -0.899434 -0.229444 +vn 0.000000 -0.974890 -0.222688 +vn 0.373062 -0.900685 -0.222689 +vn -0.372034 -0.898202 0.234147 +vn 0.000000 -0.974890 -0.222688 +vn 0.293159 -0.706918 -0.643680 +vn 0.294030 -0.708472 -0.641571 +vn 0.000000 -0.767016 -0.641627 +vn 0.000000 -0.767016 -0.641628 +vn 0.145007 -0.349045 -0.925819 +vn 0.000000 -0.369012 -0.929425 +vn 0.140883 -0.340999 -0.929447 +vn 0.000000 -0.369012 -0.929425 +vn -0.042171 0.100345 -0.994059 +vn 0.000000 0.106158 -0.994349 +vn -0.041003 0.098001 -0.994341 +vn 0.000000 0.106158 -0.994349 +vn -0.217091 0.524361 -0.823357 +vn 0.000000 0.561924 -0.827189 +vn 0.000000 0.561924 -0.827189 +vn -0.214471 0.519303 -0.827240 +vn -0.340386 0.821542 -0.457390 +vn -0.338288 0.818102 -0.465049 +vn 0.000000 0.889262 -0.457398 +vn 0.000000 0.889262 -0.457398 +vn 0.000000 0.999956 -0.009354 +vn -0.383095 0.923658 -0.009728 +vn -0.371986 -0.899434 -0.229444 +vn -0.373062 -0.900685 -0.222689 +vn -0.383119 0.923651 -0.009358 +vn 0.000000 0.999956 -0.009354 +vn -0.342283 0.826036 0.447780 +vn -0.293159 -0.706918 -0.643680 +vn -0.343236 0.829970 0.439703 +vn 0.000000 0.898163 0.439662 +vn -0.294030 -0.708472 -0.641571 +vn -0.000000 0.898163 0.439662 +vn -0.222926 0.539755 0.811769 +vn -0.145007 -0.349045 -0.925819 +vn -0.221379 0.534821 0.815449 +vn 0.000000 0.578845 0.815437 +vn -0.140883 -0.340999 -0.929447 +vn -0.000000 0.578845 0.815437 +vn -0.049712 0.119125 0.991634 +vn 0.000000 0.125816 0.992054 +vn 0.042171 0.100345 -0.994059 +vn 0.041003 0.098001 -0.994341 +vn 0.645050 0.620268 0.446294 +vn 0.911824 0.224140 0.344004 +vn 0.911826 0.224142 0.343997 +vn -0.724810 -0.650546 -0.226804 +vn -0.948163 -0.233064 -0.216030 +vn -0.723022 -0.653376 -0.224364 +vn 0.694004 0.631716 0.345390 +vn -0.948153 -0.233086 -0.216048 +vn 0.243962 -0.096559 0.964966 +vn 0.416912 -0.111100 0.902131 +vn -0.582313 -0.504735 -0.637301 +vn 0.805090 0.197902 0.559164 +vn -0.657561 -0.601361 -0.453849 +vn 0.611225 0.558652 0.560635 +vn -0.866044 -0.212901 -0.452373 +vn -0.866117 -0.212899 -0.452234 +vn 0.805097 0.197906 0.559152 +vn -0.274686 0.037929 -0.960786 +vn -0.312844 0.077974 -0.946598 +vn 0.175717 -0.046377 0.983348 +vn -0.062909 0.016604 -0.997881 +vn -0.272819 0.041559 0.961167 +vn -0.733540 -0.180313 -0.655291 +vn -0.053561 0.014136 0.998465 +vn -0.554708 -0.511371 -0.656352 +vn 0.415390 0.410947 0.811525 +vn -0.733542 -0.180311 -0.655289 +vn 0.628580 0.154512 0.762242 +vn 0.628582 0.154514 0.762240 +vn -0.311147 -0.235579 -0.920701 +vn 0.477156 0.435046 0.763582 +vn -0.532249 -0.130831 -0.836417 +vn -0.532242 -0.130831 -0.836422 +vn -0.404003 -0.367764 -0.837575 +vn 0.420161 0.103282 0.901553 +vn 0.420152 0.103279 0.901557 +vn 0.319038 0.289792 0.902350 +vn 0.243004 -0.098354 -0.965026 +vn 0.165916 -0.043790 -0.985167 +vn -0.304045 0.075441 0.949666 +vn 0.407989 -0.108871 -0.906472 +vn -0.706210 0.157271 0.690314 +vn -0.519877 0.137986 0.843023 +vn -0.315162 -0.077470 -0.945871 +vn -0.237424 -0.220451 -0.946061 +vn -0.315164 -0.077469 -0.945870 +vn 0.073503 0.103277 0.991933 +vn 0.177161 0.043548 0.983218 +vn 0.055958 0.091160 -0.994263 +vn 0.177163 0.043549 0.983218 +vn -0.063435 -0.015593 -0.997864 +vn 0.132691 0.125262 0.983210 +vn -0.063437 -0.015593 -0.997864 +vn -0.048521 -0.042990 -0.997897 +vn -0.054008 -0.013276 0.998452 +vn -0.054010 -0.013276 0.998452 +vn 0.685398 -0.209953 -0.697244 +vn -0.041261 -0.036693 0.998474 +vn 0.616800 -0.160855 -0.770509 +vn -0.721410 0.197873 0.663637 +vn 0.125265 0.118323 -0.985042 +vn -0.942467 0.243453 0.229099 +vn 0.167281 0.041120 -0.985051 +vn 0.167283 0.041120 -0.985051 +vn -0.944187 0.216684 0.248109 +vn -0.859571 0.226014 0.458317 +vn -0.293280 -0.225883 0.928958 +vn -0.306299 -0.075290 0.948953 +vn -0.306299 -0.075291 0.948953 +vn 0.795144 -0.208753 -0.569358 +vn -0.230804 -0.214140 0.949144 +vn 0.411181 0.101074 -0.905933 +vn 0.401807 0.400905 -0.823302 +vn 0.411187 0.101075 -0.905930 +vn -0.523697 -0.128734 0.842122 +vn -0.523671 -0.128723 0.842140 +vn 0.312318 0.283421 -0.906714 +vn -0.397461 -0.361926 0.843228 +vn 0.903947 -0.240066 -0.353905 +vn -0.571707 -0.501610 0.649260 +vn -0.726921 -0.178683 0.663067 +vn 0.928801 -0.272096 -0.251578 +vn -0.726924 -0.178691 0.663062 +vn 0.620744 0.152589 -0.769021 +vn -0.549369 -0.507161 0.664064 +vn -0.723938 -0.649881 0.231449 +vn 0.620752 0.152588 -0.769015 +vn -0.947098 -0.232802 0.220926 +vn -0.722200 -0.652633 0.229122 +vn -0.947104 -0.232789 0.220915 +vn 0.471088 0.429748 -0.770320 +vn -0.863858 -0.212328 0.456800 +vn -0.863923 -0.212359 0.456662 +vn -0.656052 -0.599788 0.458095 +vn 0.960569 -0.253525 -0.114161 +vn 0.638188 0.614599 -0.463665 +vn 0.606969 0.554679 -0.569140 +vn 0.799464 0.196521 -0.567659 +vn 0.799463 0.196521 -0.567660 +vn 0.928966 -0.271561 0.251549 +vn 0.961554 -0.253785 0.104917 +vn 0.691535 0.629556 -0.354174 +vn 0.908653 0.223362 -0.352787 +vn 0.908659 0.223360 -0.352772 +vn 0.907108 -0.241000 0.345072 +vn 0.723183 0.690588 -0.009662 +vn 0.732580 0.671035 -0.114189 +vn 0.964791 0.237158 -0.113729 +vn 0.964795 0.237155 -0.113705 +vn -0.945488 0.211374 -0.247735 +vn -0.943536 0.243729 -0.224355 +vn 0.685886 -0.208790 0.697113 +vn 0.800783 -0.210351 0.560801 +vn 0.965779 0.237403 0.104452 +vn 0.733453 0.671598 0.104894 +vn -0.861762 0.226429 -0.453978 +vn 0.965777 0.237396 0.104489 +vn -0.708785 0.150276 -0.689233 +vn -0.728040 0.199286 -0.655929 +vn 0.624608 -0.162788 0.763783 +vn -0.528420 0.140476 -0.837280 +vn -0.849612 0.463819 0.251063 +vn -0.849627 0.463814 0.251018 +vn -0.849622 0.463824 -0.251017 +vn -0.849617 0.463809 -0.251062 +vn -0.227940 0.126190 0.965463 +vn -0.223295 0.121898 0.967099 +vn -0.223304 0.121904 -0.967096 +vn -0.223278 0.121892 -0.967103 +vn -0.622835 0.340019 -0.704602 +vn -0.622831 0.340015 -0.704607 +vn -0.623608 0.338603 0.704600 +vn -0.622835 0.340008 0.704607 +vn -0.623604 0.338598 0.704606 +vn -0.622835 0.340008 0.704607 +vn -0.848219 0.463058 0.257102 +vn -0.848219 0.463058 -0.257101 +vn -0.849619 0.463810 0.251053 +vn -0.849616 0.463811 0.251063 +vn -0.848863 0.465193 0.251052 +vn -0.623607 0.338602 -0.704602 +vn -0.849617 0.463809 -0.251062 +vn -0.848863 0.465193 -0.251052 +vn -0.849618 0.463812 -0.251052 +vn -0.227942 0.126192 -0.965463 +vn -0.223295 0.121898 -0.967099 +vn -0.622835 0.340008 -0.704607 +vn -0.623604 0.338598 -0.704606 +vn -0.622835 0.340008 -0.704607 +vn -0.622066 0.341427 0.704600 +vn -0.229416 0.123486 0.965463 +vn -0.848954 0.461705 0.257111 +vn -0.622062 0.341422 0.704606 +vn -0.849618 0.463812 0.251053 +vn -0.848954 0.461705 -0.257111 +vn -0.849618 0.463812 -0.251052 +vn -0.223306 0.121903 0.967096 +vn -0.229419 0.123486 -0.965463 +vn -0.622065 0.341426 -0.704602 +vn -0.622062 0.341422 -0.704606 +vn -0.622834 0.340009 0.704607 +vn -0.622840 0.340010 0.704602 +vn -0.849614 0.463820 0.251053 +vn -0.849626 0.463816 0.251018 +vn -0.849622 0.463824 -0.251017 +vn -0.849618 0.463812 -0.251052 +vn -0.223304 0.121904 0.967096 +vn -0.223278 0.121892 0.967103 +vn -0.223306 0.121903 -0.967096 +vn -0.622835 0.340008 -0.704607 +vn -0.622839 0.340012 -0.704602 +vn -0.622836 0.340017 0.704602 +vn -0.622830 0.340017 0.704607 +vn -0.255965 -0.008285 -0.966650 +vn -0.239528 0.104827 -0.965214 +vn -0.698643 0.134656 -0.702684 +vn -0.698642 0.134654 -0.702686 +vn -0.657559 0.271089 -0.702941 +vn 0.262395 -0.001213 -0.964960 +vn 0.255632 0.004130 -0.966765 +vn 0.241463 -0.101228 -0.965116 +vn -0.251077 0.048396 -0.966757 +vn -0.251072 0.048391 -0.966758 +vn -0.235783 0.098847 -0.966765 +vn 0.710918 0.018050 -0.703043 +vn 0.711563 0.017196 -0.702412 +vn 0.653664 -0.280191 -0.703006 +vn 0.251072 -0.048395 -0.966758 +vn 0.251069 -0.048392 -0.966759 +vn 0.237449 -0.093465 -0.966893 +vn 0.966591 0.015609 -0.255848 +vn 0.968207 0.009281 -0.249976 +vn 0.893965 -0.368047 -0.255673 +vn 0.698650 -0.134660 -0.702677 +vn 0.653909 -0.281240 -0.702358 +vn 0.698649 -0.134658 -0.702678 +vn 0.966714 0.009399 0.255685 +vn 0.968165 0.015634 0.249824 +vn 0.891552 -0.373742 0.255836 +vn 0.892998 -0.374348 -0.249836 +vn 0.950799 -0.183258 -0.249794 +vn 0.950800 -0.183269 -0.249784 +vn 0.710982 0.017172 0.703000 +vn 0.711588 0.018038 0.702365 +vn 0.950802 -0.183258 0.249785 +vn 0.895388 -0.368491 0.249989 +vn 0.950797 -0.183268 0.249795 +vn -0.261785 -0.004229 0.965117 +vn 0.261785 0.004229 0.965117 +vn 0.255178 -0.001482 0.966893 +vn 0.653664 -0.280193 0.703004 +vn 0.653909 -0.281240 0.702358 +vn 0.698649 -0.134660 0.702678 +vn 0.698650 -0.134659 0.702677 +vn -0.711653 -0.007255 0.702494 +vn -0.255965 -0.008283 0.966651 +vn 0.251069 -0.048394 0.966759 +vn 0.241460 -0.101227 0.965117 +vn 0.251072 -0.048392 0.966758 +vn 0.237449 -0.093468 0.966893 +vn -0.711231 -0.007629 0.702917 +vn -0.968286 -0.019401 0.249090 +vn -0.239526 0.104824 0.965215 +vn -0.251077 0.048392 0.966757 +vn -0.235783 0.098847 0.966765 +vn -0.251072 0.048395 0.966758 +vn -0.657799 0.271601 0.702519 +vn -0.950649 0.183234 0.250385 +vn -0.698642 0.134655 0.702686 +vn -0.950646 0.183224 0.250401 +vn -0.698644 0.134654 0.702684 +vn -0.657560 0.271088 0.702941 +vn -0.891708 0.377918 0.249069 +vn -0.966599 -0.015261 0.255839 +vn -0.891680 0.373434 0.255838 +vn -0.966501 -0.019272 -0.255938 +vn -0.968327 -0.015288 -0.249219 +vn -0.711651 -0.007257 -0.702496 +vn -0.711231 -0.007629 -0.702917 +vn -0.950649 0.183234 -0.250384 +vn -0.893279 0.374103 -0.249198 +vn -0.657798 0.271600 -0.702521 +vn -0.890094 0.377133 -0.255939 +vn -0.950647 0.183224 -0.250400 +vn -0.261788 -0.004229 -0.965116 +vn -0.603968 -0.072114 -0.793739 +vn -0.896824 -0.107170 0.429211 +vn -0.603957 -0.072145 -0.793745 +vn -0.603962 -0.072167 -0.793739 +vn -0.594762 -0.068847 0.800948 +vn -0.172341 -0.020588 -0.984822 +vn -0.420925 -0.050284 -0.905701 +vn -0.595446 -0.071119 0.800242 +vn -0.420925 -0.050284 -0.905701 +vn -0.172347 -0.020648 -0.984820 +vn -0.172342 -0.020578 -0.984822 +vn -0.896830 -0.107111 0.429213 +vn -0.420928 -0.050259 -0.905701 +vn -0.420921 -0.050321 -0.905701 +vn -0.896830 -0.107111 0.429213 +vn -0.420928 -0.050259 -0.905701 +vn -0.809949 -0.096739 0.578467 +vn -0.809949 -0.096739 0.578467 +vn -0.818214 0.060382 0.571734 +vn -0.809887 -0.094517 0.578921 +vn -0.809939 -0.096826 0.578467 +vn -0.976307 -0.116630 0.182270 +vn -0.976305 -0.116617 0.182287 +vn -0.896829 -0.107116 0.429213 +vn -0.896829 -0.107116 0.429213 +vn -0.959571 -0.114529 -0.257111 +vn -0.976302 -0.116668 0.182270 +vn -0.976311 -0.116571 0.182287 +vn -0.896832 -0.107092 0.429213 +vn -0.896834 -0.107214 0.429179 +vn -0.976310 -0.116604 0.182270 +vn -0.976310 -0.116604 0.182270 +vn -0.896841 -0.107149 0.429179 +vn -0.896675 -0.106574 0.429669 +vn -0.486897 -0.725162 -0.486899 +vn -0.787390 -0.093979 -0.609250 +vn -0.976309 -0.116609 0.182270 +vn -0.976309 -0.116609 0.182270 +vn -0.953020 -0.160591 -0.256833 +vn -0.972195 -0.116138 -0.203346 +vn -0.245745 -0.313796 0.917137 +vn -0.976309 -0.116582 0.182287 +vn -0.976297 -0.116714 0.182270 +vn -0.456226 -0.054467 0.888196 +vn -0.109175 -0.013040 0.993937 +vn -0.109175 -0.013036 0.993937 +vn -0.972201 -0.116081 -0.203346 +vn -0.217273 -0.067572 0.973769 +vn -0.972201 -0.116081 -0.203346 +vn -0.457478 -0.762514 0.457478 +vn -0.633798 -0.075667 0.769789 +vn -0.887428 -0.106001 -0.448594 +vn -0.316340 -0.037786 0.947893 +vn -0.603946 -0.072103 -0.793757 +vn -0.316346 -0.037742 0.947893 +vn -0.316342 -0.037771 0.947893 +vn -0.316342 -0.037771 0.947893 +vn -0.887454 -0.105962 -0.448550 +vn -0.887423 -0.106043 -0.448594 +vn -0.456222 -0.054500 0.888195 +vn -0.972198 -0.116113 -0.203346 +vn -0.456196 -0.054491 0.888209 +vn -0.972198 -0.116113 -0.203346 +vn -0.976301 -0.116665 0.182278 +vn -0.976312 -0.116563 0.182287 +vn -0.976372 -0.116104 0.182254 +vn -0.972190 -0.116174 -0.203346 +vn -0.809972 -0.096674 0.578445 +vn -0.976308 -0.116643 0.182254 +vn -0.456202 -0.054448 0.888209 +vn -0.456199 -0.054470 0.888209 +vn -0.887451 -0.105991 -0.448550 +vn -0.456199 -0.054470 0.888209 +vn -0.887451 -0.105991 -0.448550 +vn -0.253019 -0.965083 0.067795 +vn -0.172345 -0.020586 -0.984822 +vn -0.896838 -0.107042 0.429213 +vn -0.238374 -0.389559 -0.889618 +vn -0.420929 -0.050253 -0.905701 +vn -0.787382 -0.094040 -0.609250 +vn -0.633793 -0.075705 0.769789 +vn -0.787370 -0.094049 -0.609264 +vn -0.633802 -0.075714 0.769781 +vn -0.972197 -0.116118 -0.203346 +vn -0.972197 -0.116118 -0.203346 +vn -0.633806 -0.075676 0.769781 +vn -0.633806 -0.075676 0.769781 +vn -0.787374 -0.094013 -0.609264 +vn -0.633804 -0.075697 0.769781 +vn -0.787355 -0.094085 -0.609279 +vn -0.606186 0.068680 0.792352 +vn -0.809963 -0.096747 0.578446 +vn -0.809963 -0.096748 0.578445 +vn -0.972185 -0.116222 -0.203346 +vn -0.972202 -0.116072 -0.203346 +vn -0.972202 -0.116072 -0.203346 +vn -0.972185 -0.116222 -0.203346 +vn -0.887450 -0.105995 -0.448550 +vn -0.887450 -0.105995 -0.448550 +vn -0.809958 -0.096786 0.578446 +vn -0.787367 -0.094031 -0.609271 +vn -0.809953 -0.096708 0.578467 +vn -0.787372 -0.094038 -0.609264 +vn -0.787355 -0.094081 -0.609279 +vn -0.787371 -0.094042 -0.609264 +vn -0.787356 -0.094126 -0.609271 +vn -0.779401 0.063995 -0.623248 +vn -0.887439 -0.106091 -0.448550 +vn -0.896828 -0.107123 0.429213 +vn -0.887455 -0.105954 -0.448550 +vn -0.896829 -0.107124 0.429211 +vn -0.887439 -0.106091 -0.448550 +vn -0.603940 -0.072147 -0.793757 +vn -0.809949 -0.096735 0.578467 +vn -0.809949 -0.096735 0.578467 +vn -0.603966 -0.072134 -0.793739 +vn -0.896823 -0.107166 0.429213 +vn -0.473357 0.066907 -0.878326 +vn -0.603968 -0.072114 -0.793739 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.118635 -0.992938 0.000000 +vn -0.118593 -0.992943 0.000057 +vn -0.118635 -0.992938 -0.000099 +vn -0.118584 -0.992944 0.000015 +vn -0.118593 -0.992943 -0.000018 +vn -0.118593 -0.992943 -0.000018 +vn -0.118584 -0.992944 0.000015 +vn -0.118635 -0.992938 -0.000099 +vn -0.118635 -0.992938 0.000000 +vn -0.118593 -0.992943 0.000057 +vn 0.000000 0.951050 -0.309036 +vn 0.000000 0.951050 -0.309036 +vn 0.000000 0.587778 -0.809022 +vn 0.000000 0.587778 -0.809022 +vn -0.004912 -0.545212 -0.838284 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 -0.414683 -0.909966 +vn 0.000000 -0.414683 -0.909966 +vn -0.007455 -0.587762 -0.809000 +vn -0.000078 -0.554143 -0.832421 +vn 0.000000 -0.531620 -0.846983 +vn -0.001836 -0.682776 -0.730625 +vn 0.004253 -0.528246 -0.849081 +vn 0.000087 -0.586802 -0.809730 +vn 0.005050 -0.623840 -0.781536 +vn 0.007348 -0.587762 -0.809000 +vn -0.007678 -0.951022 -0.309027 +vn 0.001987 -0.912675 -0.408681 +vn -0.000475 -0.984686 -0.174337 +vn 0.000000 -0.989809 -0.142402 +vn 0.007951 -0.951020 -0.309027 +vn 0.000000 -0.982401 -0.186785 +vn 0.001576 -0.857750 -0.514065 +vn -0.000596 -0.875818 -0.482641 +vn 0.000000 -0.987613 -0.156907 +vn 0.000377 -0.897476 -0.441064 +vn 0.000576 -0.733926 -0.679229 +vn -0.000387 -0.698850 -0.715268 +vn -0.001135 -0.774484 -0.632592 +vn 0.008575 0.770594 -0.637269 +vn -0.000140 0.850136 -0.526563 +vn 0.000096 0.824006 -0.566582 +vn 0.002436 0.814043 0.580799 +vn 0.000000 0.686716 -0.726926 +vn -0.005568 0.807455 -0.589902 +vn 0.000000 0.810523 -0.585707 +vn 0.007467 0.876768 0.480855 +vn 0.000000 0.686716 -0.726926 +vn -0.000000 0.810538 0.585687 +vn -0.008575 0.770594 -0.637269 +vn 0.000000 0.289085 -0.957303 +vn -0.000000 0.758764 0.651366 +vn 0.000000 0.289085 -0.957303 +vn -0.000000 0.758764 0.651366 +vn -0.000457 0.894317 0.447433 +vn -0.000449 0.970138 0.242555 +vn -0.000218 0.999967 0.008137 +vn -0.000205 0.976099 -0.217326 +vn -0.000300 0.914066 -0.405565 +vn -0.001922 0.802905 0.596104 +vn -0.000218 0.880795 -0.473497 +vn 0.000286 0.957423 -0.288690 +vn 0.001767 0.980677 0.195627 +vn 0.000458 0.894398 -0.447272 +vn 0.000443 0.970170 -0.242425 +vn 0.009073 0.885984 0.463626 +vn 0.000218 0.999967 -0.008142 +vn 0.000209 0.976156 0.217069 +vn 0.000302 0.914076 0.405543 +vn -0.000292 0.957342 0.288957 +vn 0.000324 0.998670 0.051566 +vn -0.001057 0.913741 -0.406296 +vn 0.000141 0.850232 0.526408 +vn -0.000095 0.823929 0.566693 +vn -0.004354 0.842163 0.539205 +vn -0.005062 0.911789 0.410629 +vn -0.009306 0.885983 0.463625 +vn 0.009862 0.994509 -0.104188 +vn 0.002788 0.980317 -0.197412 +vn -0.004864 0.998642 -0.051877 +vn 0.002869 0.843520 -0.537090 +vn 0.007433 0.784971 -0.619488 +vn -0.009301 0.994514 -0.104189 +vn 0.000000 0.965927 -0.258815 +vn 0.000000 0.707105 -0.707109 +vn 0.000000 0.965927 -0.258815 +vn 0.000000 0.258818 -0.965926 +vn 0.000000 0.707105 -0.707109 +vn 0.000000 0.258818 -0.965926 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -0.707075 0.707139 +vn 0.000000 -0.965927 0.258814 +vn 0.000000 -0.965927 0.258814 +vn 0.000000 -0.258804 0.965930 +vn 0.000000 -0.707075 0.707139 +vn 0.000000 -0.258804 0.965930 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.959453 0.115487 0.257122 +vn -0.436054 0.051419 0.898450 +vn -0.149929 0.017245 0.988546 +vn -0.149387 0.017843 0.988618 +vn -0.258551 0.032099 0.965464 +vn -0.721957 0.084728 0.686731 +vn -0.704526 0.084786 0.704596 +vn -0.435739 0.050524 0.898654 +vn -0.435598 0.051708 0.898655 +vn -0.721564 0.086426 0.686933 +vn -0.721975 0.082949 0.686929 +vn -0.951361 -0.029738 0.306639 +vn -0.857530 0.099086 0.504801 +vn -0.857142 0.102374 0.504804 +vn -0.944079 0.112856 0.309804 +vn -0.990226 0.109681 -0.086154 +vn -0.959415 0.115807 -0.257123 +vn -0.989329 0.117494 -0.086158 +vn -0.887118 -0.242321 -0.392812 +vn -0.914622 0.100502 -0.391621 +vn -0.913620 0.109178 -0.391635 +vn -0.704463 0.085315 -0.704595 +vn -0.811448 0.096877 -0.576340 +vn -0.811545 0.096058 -0.576340 +vn -0.614804 -0.003513 -0.788672 +vn -0.626095 0.074710 -0.776160 +vn -0.626184 0.073961 -0.776160 +vn -0.212407 0.025371 -0.976852 +vn -0.212491 0.025242 -0.976837 +vn -0.258607 0.031628 -0.965465 +vn -0.451898 0.053830 -0.890444 +vn -0.451879 0.053996 -0.890444 +vn 0.959453 0.115487 -0.257122 +vn 0.258607 0.031632 0.965465 +vn 0.212083 0.025332 0.976923 +vn 0.212136 0.025250 0.976914 +vn 0.614424 -0.003992 0.788966 +vn 0.451609 0.053851 0.890589 +vn 0.451596 0.053963 0.890589 +vn 0.704462 0.085316 0.704595 +vn 0.625974 0.074268 0.776300 +vn 0.625923 0.074689 0.776300 +vn 0.886992 -0.242159 0.393197 +vn 0.811300 0.096859 0.576550 +vn 0.811361 0.096349 0.576550 +vn 0.959415 0.115807 0.257122 +vn 0.913535 0.109168 0.391836 +vn 0.914409 0.101635 0.391824 +vn 0.378078 -0.925618 -0.016992 +vn 0.982852 0.109869 0.148089 +vn 0.990949 0.118363 -0.063326 +vn 0.981993 0.117293 0.148093 +vn 0.951301 -0.032127 -0.306586 +vn 0.944061 0.112854 -0.309859 +vn 0.856959 0.102352 -0.505119 +vn 0.857368 0.098890 -0.505115 +vn 0.704527 0.084781 -0.704595 +vn 0.721459 0.084624 -0.687267 +vn 0.721046 0.086371 -0.687483 +vn 0.721477 0.082727 -0.687479 +vn 0.149180 0.017819 -0.988649 +vn 0.258551 0.032100 -0.965464 +vn 0.435507 0.051284 -0.898723 +vn 0.149786 0.017151 -0.988570 +vn 0.435055 0.051646 -0.898922 +vn 0.435201 0.050417 -0.898921 +vn -0.872657 0.107720 0.476305 +vn -0.843259 0.207223 0.495957 +vn -0.906626 0.108326 0.407793 +vn -0.979290 0.117006 0.165227 +vn -0.979290 0.117006 0.165227 +vn -0.979285 0.116998 0.165263 +vn -0.979309 0.116849 0.165227 +vn -0.979275 0.117084 0.165263 +vn -0.979300 0.116924 0.165227 +vn -0.979301 0.116913 0.165227 +vn -0.979301 0.116913 0.165227 +vn -0.979290 0.117008 0.165227 +vn -0.979248 0.116940 0.165525 +vn -0.969281 0.115750 -0.217018 +vn -0.978880 0.120394 0.165226 +vn -0.979290 0.117008 0.165227 +vn -0.962668 0.084986 -0.256998 +vn -0.969285 0.115777 -0.216986 +vn -0.969281 0.115810 -0.216986 +vn -0.969281 0.115810 -0.216986 +vn -0.884090 0.104736 -0.455429 +vn -0.884019 0.105623 -0.455362 +vn -0.883996 0.105523 -0.455430 +vn -0.969299 0.115655 -0.216986 +vn -0.969299 0.115655 -0.216986 +vn -0.884020 0.105616 -0.455362 +vn -0.883965 0.105473 -0.455501 +vn -0.969271 0.115888 -0.216986 +vn -0.969271 0.115887 -0.216986 +vn -0.884010 0.105694 -0.455362 +vn -0.883957 0.105540 -0.455501 +vn -0.264921 -0.024646 0.963955 +vn -0.139918 0.016713 0.990022 +vn -0.969280 0.115813 -0.216986 +vn -0.139916 0.016728 0.990022 +vn -0.969292 0.115718 -0.216986 +vn -0.969253 0.115985 -0.217018 +vn -0.969292 0.115718 -0.216986 +vn -0.689266 0.306235 -0.656606 +vn -0.385224 0.046006 0.921676 +vn -0.884022 0.105600 -0.455362 +vn -0.771756 0.092189 -0.629201 +vn -0.385521 0.043511 0.921673 +vn -0.883962 0.105807 -0.455430 +vn -0.883994 0.105535 -0.455430 +vn -0.709801 0.032565 -0.703649 +vn -0.507057 0.060893 0.859759 +vn -0.365653 0.124522 0.922384 +vn -0.771436 0.095610 -0.629083 +vn -0.385224 0.046027 0.921675 +vn -0.771847 0.092136 -0.629097 +vn -0.507100 0.060533 0.859759 +vn -0.506801 0.062503 0.859794 +vn -0.507033 0.060580 0.859795 +vn -0.771845 0.092220 -0.629087 +vn -0.709087 0.040935 0.703932 +vn -0.771846 0.092214 -0.629087 +vn -0.771681 0.092811 -0.629201 +vn -0.771853 0.092156 -0.629087 +vn -0.667354 0.069824 0.741461 +vn -0.771845 0.092156 -0.629097 +vn -0.573353 0.070477 -0.816272 +vn -0.666218 0.079600 0.741497 +vn -0.386269 0.268167 -0.882543 +vn -0.666235 0.079529 0.741489 +vn -0.573586 0.068532 -0.816273 +vn -0.573269 0.069178 -0.816442 +vn -0.573586 0.068532 -0.816273 +vn -0.666227 0.079596 0.741489 +vn -0.573592 0.068485 -0.816274 +vn -0.665676 0.081451 0.741783 +vn -0.180549 0.021566 -0.983329 +vn -0.264063 -0.016540 -0.964364 +vn -0.180549 0.021566 -0.983329 +vn -0.422950 0.048842 -0.904836 +vn -0.828771 0.100434 0.550501 +vn -0.422766 0.050479 -0.904832 +vn -0.422751 0.050510 -0.904837 +vn -0.828920 0.099040 0.550530 +vn -0.828949 0.098952 0.550502 +vn -0.665252 0.081812 0.742123 +vn -0.665909 0.079506 0.741784 +vn -0.828920 0.099033 0.550530 +vn -0.828920 0.099033 0.550530 +vn -0.964399 0.063276 0.256771 +vn -0.906865 0.106353 0.407781 +vn -0.828640 0.101360 0.550529 +vn -0.828928 0.098970 0.550530 +vn -0.828928 0.098970 0.550530 +vn -0.906655 0.108228 0.407753 +vn -0.906631 0.108324 0.407782 +vn -0.906645 0.108319 0.407753 +vn -0.906645 0.108319 0.407753 +vn -0.906653 0.108250 0.407753 +vn -0.906653 0.108250 0.407753 +vn -0.906654 0.108240 0.407753 +vn -0.979294 0.116972 0.165227 +vn 0.711231 -0.007628 0.702917 +vn 0.698644 0.134654 0.702684 +vn -0.244049 -0.096400 0.964960 +vn -0.235782 -0.098846 0.966766 +vn 0.891681 0.373434 0.255838 +vn 0.261786 -0.004229 0.965117 +vn 0.251070 0.048394 0.966758 +vn 0.251076 0.048392 0.966757 +vn 0.255964 -0.008285 0.966651 +vn -0.653271 -0.280999 0.703048 +vn -0.654203 -0.280436 0.702406 +vn -0.262394 -0.001213 0.964960 +vn -0.255631 0.004130 0.966766 +vn -0.251071 -0.048392 0.966758 +vn -0.251067 -0.048394 0.966759 +vn -0.891552 -0.373742 0.255836 +vn -0.895388 -0.368491 0.249989 +vn -0.710918 0.018051 0.703043 +vn -0.698651 -0.134659 0.702676 +vn -0.698649 -0.134660 0.702677 +vn -0.711563 0.017196 0.702412 +vn -0.893965 -0.368047 -0.255673 +vn -0.892998 -0.374348 -0.249837 +vn -0.966591 0.015609 0.255848 +vn -0.950797 -0.183268 0.249795 +vn -0.950802 -0.183259 0.249785 +vn -0.968207 0.009282 0.249977 +vn -0.653664 -0.280192 -0.703005 +vn -0.653909 -0.281240 -0.702358 +vn -0.966715 0.009399 -0.255685 +vn -0.968165 0.015634 -0.249824 +vn -0.950799 -0.183258 -0.249794 +vn -0.950800 -0.183269 -0.249784 +vn -0.241461 -0.101227 -0.965116 +vn -0.237449 -0.093466 -0.966893 +vn -0.698649 -0.134658 -0.702678 +vn -0.710982 0.017171 -0.703001 +vn -0.711588 0.018038 -0.702365 +vn -0.698650 -0.134660 -0.702677 +vn 0.239527 0.104826 -0.965214 +vn 0.235783 0.098847 -0.966765 +vn 0.261786 -0.004229 -0.965117 +vn -0.251072 -0.048395 -0.966758 +vn -0.261786 0.004229 -0.965117 +vn -0.255178 -0.001483 -0.966893 +vn -0.251069 -0.048392 -0.966759 +vn 0.657798 0.271600 -0.702520 +vn 0.891708 0.377918 -0.249069 +vn 0.657559 0.271089 -0.702941 +vn 0.711652 -0.007256 -0.702495 +vn 0.251072 0.048391 -0.966758 +vn 0.251077 0.048396 -0.966757 +vn 0.255965 -0.008284 -0.966650 +vn 0.966501 -0.019272 -0.255939 +vn 0.698643 0.134656 -0.702684 +vn 0.711231 -0.007629 -0.702917 +vn 0.950650 0.183225 -0.250385 +vn 0.891680 0.373434 -0.255838 +vn 0.950645 0.183233 -0.250400 +vn 0.968326 -0.015288 -0.249219 +vn 0.698642 0.134654 -0.702686 +vn 0.657798 0.271599 0.702521 +vn 0.891708 0.377918 0.249069 +vn 0.239527 0.104827 0.965214 +vn 0.657560 0.271090 0.702941 +vn 0.966501 -0.019272 0.255938 +vn 0.950645 0.183233 0.250400 +vn 0.968326 -0.015288 0.249219 +vn 0.950650 0.183225 0.250385 +vn 0.235782 0.098846 0.966766 +vn 0.711651 -0.007257 0.702496 +vn 0.698642 0.134655 0.702685 +vn -0.228679 -0.124838 0.965464 +vn -0.228679 -0.124838 0.965464 +vn -0.622838 -0.340013 0.704602 +vn -0.622837 -0.340013 0.704603 +vn -0.848222 -0.463053 -0.257102 +vn -0.848222 -0.463053 0.257101 +vn -0.848222 -0.463053 0.257101 +vn -0.622838 -0.340014 -0.704602 +vn -0.848222 -0.463053 -0.257101 +vn -0.228679 -0.124838 -0.965464 +vn -0.622838 -0.340013 -0.704602 +vn -0.228679 -0.124838 -0.965464 +vn 0.945488 0.211374 0.247735 +vn 0.948158 -0.233063 0.216050 +vn -0.911827 0.224141 -0.343996 +vn 0.943536 0.243729 0.224355 +vn 0.948157 -0.233086 0.216032 +vn -0.319038 0.289792 -0.902350 +vn 0.866110 -0.212917 0.452238 +vn -0.685885 -0.208790 -0.697114 +vn 0.861759 0.226429 0.453984 +vn -0.805098 0.197904 -0.559152 +vn 0.866047 -0.212881 0.452377 +vn -0.800783 -0.210351 -0.560801 +vn -0.805090 0.197905 -0.559164 +vn 0.237424 -0.220451 0.946061 +vn -0.073502 0.103277 -0.991933 +vn -0.132690 0.125263 -0.983210 +vn -0.055960 0.091161 0.994263 +vn 0.048516 -0.042986 0.997897 +vn 0.708784 0.150277 0.689233 +vn 0.733541 -0.180313 0.655290 +vn 0.041266 -0.036698 -0.998474 +vn 0.728040 0.199288 0.655929 +vn -0.624608 -0.162788 -0.763783 +vn -0.628583 0.154513 -0.762240 +vn 0.733540 -0.180310 0.655291 +vn -0.628580 0.154514 -0.762242 +vn 0.532255 -0.130834 0.836413 +vn 0.532248 -0.130831 0.836418 +vn 0.528426 0.140478 0.837277 +vn -0.243963 -0.096560 -0.964965 +vn -0.420161 0.103281 -0.901553 +vn -0.420152 0.103280 -0.901557 +vn -0.416912 -0.111100 -0.902131 +vn -0.125263 0.118323 0.985043 +vn 0.293279 -0.225882 -0.928959 +vn -0.401806 0.400905 0.823303 +vn 0.230803 -0.214139 -0.949144 +vn -0.312318 0.283422 0.906714 +vn 0.274685 0.037928 0.960786 +vn 0.312844 0.077974 0.946598 +vn 0.397466 -0.361932 -0.843224 +vn 0.315163 -0.077469 0.945870 +vn 0.315164 -0.077470 0.945870 +vn -0.177163 0.043549 -0.983217 +vn -0.175717 -0.046377 -0.983348 +vn 0.062903 0.016602 0.997881 +vn -0.177161 0.043549 -0.983218 +vn 0.063430 -0.015592 0.997864 +vn 0.063429 -0.015591 0.997865 +vn 0.272820 0.041560 -0.961167 +vn 0.054017 -0.013278 -0.998452 +vn 0.054016 -0.013278 -0.998452 +vn 0.053569 0.014138 -0.998464 +vn -0.471089 0.429749 0.770319 +vn 0.571708 -0.501609 -0.649260 +vn 0.549368 -0.507162 -0.664065 +vn -0.243003 -0.098354 0.965027 +vn -0.167280 0.041120 0.985051 +vn -0.165913 -0.043790 0.985168 +vn 0.723938 -0.649881 -0.231449 +vn 0.722200 -0.652633 -0.229121 +vn -0.167279 0.041119 0.985052 +vn -0.606969 0.554678 0.569140 +vn 0.656052 -0.599787 -0.458095 +vn 0.306298 -0.075290 -0.948954 +vn -0.638188 0.614599 0.463664 +vn 0.306297 -0.075290 -0.948954 +vn 0.304043 0.075440 -0.949667 +vn -0.411187 0.101076 0.905930 +vn 0.706209 0.157271 -0.690315 +vn 0.523676 -0.128729 -0.842136 +vn 0.523704 -0.128731 -0.842118 +vn -0.411181 0.101073 0.905933 +vn -0.407989 -0.108871 0.906472 +vn 0.519884 0.137986 -0.843019 +vn -0.691534 0.629556 0.354175 +vn 0.726926 -0.178684 -0.663062 +vn -0.620752 0.152591 0.769014 +vn 0.721410 0.197873 -0.663637 +vn 0.726920 -0.178690 -0.663067 +vn -0.685398 -0.209953 0.697244 +vn 0.944187 0.216684 -0.248109 +vn -0.620745 0.152587 0.769020 +vn 0.947101 -0.232803 -0.220914 +vn -0.616802 -0.160855 0.770507 +vn 0.942467 0.243453 -0.229099 +vn 0.947102 -0.232788 -0.220924 +vn 0.863927 -0.212345 -0.456661 +vn 0.859571 0.226014 -0.458317 +vn 0.863855 -0.212343 -0.456798 +vn -0.723183 0.690588 0.009662 +vn -0.732580 0.671035 0.114189 +vn -0.795144 -0.208752 0.569358 +vn -0.799463 0.196521 0.567660 +vn -0.799464 0.196522 0.567659 +vn -0.733453 0.671598 -0.104894 +vn -0.928801 -0.272096 0.251578 +vn -0.903946 -0.240066 0.353906 +vn -0.908658 0.223363 0.352773 +vn -0.908654 0.223359 0.352788 +vn -0.645049 0.620268 -0.446295 +vn -0.694004 0.631716 -0.345389 +vn -0.960569 -0.253525 0.114161 +vn -0.964794 0.237159 0.113705 +vn 0.723022 -0.653376 0.224364 +vn -0.964792 0.237154 0.113728 +vn 0.724810 -0.650546 0.226804 +vn -0.611225 0.558652 -0.560635 +vn 0.582312 -0.504736 0.637302 +vn -0.928966 -0.271561 -0.251549 +vn -0.965775 0.237402 -0.104489 +vn -0.965781 0.237397 -0.104452 +vn 0.657558 -0.601359 0.453856 +vn -0.961554 -0.253785 -0.104917 +vn 0.554708 -0.511371 0.656352 +vn -0.415390 0.410948 -0.811525 +vn -0.477155 0.435047 -0.763582 +vn 0.311149 -0.235579 0.920700 +vn 0.404007 -0.367768 0.837571 +vn -0.907108 -0.241000 -0.345071 +vn -0.911824 0.224142 -0.344003 +vn 0.290063 -0.699334 -0.653296 +vn 0.000000 -0.757072 -0.653331 +vn 0.338289 0.818102 0.465048 +vn 0.000000 -0.973761 -0.227571 +vn 0.372631 -0.899644 -0.227567 +vn 0.000000 -0.973761 -0.227571 +vn 0.000000 -0.757072 -0.653331 +vn 0.340386 0.821542 0.457391 +vn 0.383095 0.923658 0.009728 +vn 0.383119 0.923651 0.009358 +vn 0.342283 0.826036 -0.447780 +vn 0.343236 0.829970 -0.439702 +vn 0.222926 0.539755 -0.811769 +vn 0.221379 0.534821 -0.815449 +vn 0.049712 0.119125 -0.991634 +vn 0.048710 0.116123 -0.992040 +vn -0.137179 -0.332114 -0.933211 +vn -0.134371 -0.323516 -0.936633 +vn -0.371563 -0.898402 -0.234124 +vn -0.289660 -0.697896 -0.655010 +vn -0.372631 -0.899644 -0.227567 +vn -0.290063 -0.699334 -0.653296 +vn 0.371986 -0.899434 0.229444 +vn 0.000000 -0.974890 0.222688 +vn 0.373062 -0.900685 0.222689 +vn -0.372461 -0.899232 0.229467 +vn 0.000000 -0.974890 0.222688 +vn 0.293159 -0.706917 0.643681 +vn 0.000000 -0.767016 0.641628 +vn 0.294030 -0.708471 0.641572 +vn 0.000000 -0.767016 0.641628 +vn 0.145008 -0.349046 0.925818 +vn 0.000000 -0.369013 0.929424 +vn 0.140884 -0.341000 0.929446 +vn 0.000000 -0.369013 0.929424 +vn -0.042172 0.100347 0.994058 +vn -0.041003 0.098001 0.994341 +vn -0.000000 0.106158 0.994349 +vn 0.000000 0.106158 0.994349 +vn -0.217091 0.524360 0.823358 +vn -0.000000 0.561925 0.827188 +vn -0.214471 0.519304 0.827240 +vn 0.000000 0.561926 0.827188 +vn -0.340386 0.821542 0.457391 +vn 0.000000 0.889262 0.457399 +vn -0.338289 0.818102 0.465048 +vn -0.000000 0.889262 0.457399 +vn 0.000000 0.999956 0.009354 +vn -0.383095 0.923658 0.009728 +vn -0.372570 -0.900883 0.222712 +vn -0.000000 0.999956 0.009354 +vn -0.383119 0.923651 0.009358 +vn -0.293159 -0.706917 0.643681 +vn -0.342283 0.826036 -0.447780 +vn -0.343236 0.829970 -0.439702 +vn 0.000000 0.898164 -0.439661 +vn -0.294030 -0.708471 0.641572 +vn 0.000000 0.898164 -0.439661 +vn -0.145008 -0.349046 0.925818 +vn -0.222926 0.539755 -0.811769 +vn -0.221379 0.534821 -0.815449 +vn 0.000000 0.578845 -0.815437 +vn -0.140884 -0.341000 0.929446 +vn 0.000000 0.578845 -0.815437 +vn -0.049712 0.119125 -0.991634 +vn 0.042172 0.100347 0.994058 +vn 0.000000 0.125814 -0.992054 +vn 0.000000 0.125814 -0.992054 +vn 0.041003 0.098001 0.994341 +vn -0.048710 0.116123 -0.992040 +vn 0.137179 -0.332114 -0.933211 +vn 0.134371 -0.323516 -0.936633 +vn 0.217091 0.524360 0.823358 +vn 0.000000 -0.350250 -0.936656 +vn 0.000000 -0.350250 -0.936656 +vn 0.214471 0.519304 0.827240 +vn 0.371563 -0.898402 -0.234124 +vn 0.289660 -0.697896 -0.655010 +vn -0.723022 -0.653376 0.224364 +vn 0.243963 -0.096560 -0.964965 +vn -0.948153 -0.233086 0.216048 +vn -0.582312 -0.504736 0.637302 +vn 0.416912 -0.111100 -0.902131 +vn -0.866114 -0.212898 0.452240 +vn -0.866041 -0.212900 0.452379 +vn -0.657558 -0.601359 0.453856 +vn 0.611225 0.558652 -0.560635 +vn 0.805090 0.197902 -0.559164 +vn 0.805097 0.197906 -0.559152 +vn -0.274685 0.037928 0.960786 +vn -0.312844 0.077974 0.946598 +vn 0.175717 -0.046377 -0.983348 +vn -0.062903 0.016602 0.997881 +vn -0.272820 0.041560 -0.961167 +vn -0.554708 -0.511371 0.656352 +vn -0.053569 0.014138 -0.998464 +vn -0.733540 -0.180313 0.655291 +vn 0.415390 0.410948 -0.811525 +vn -0.733542 -0.180311 0.655289 +vn 0.628580 0.154512 -0.762242 +vn 0.477155 0.435047 -0.763582 +vn -0.311149 -0.235579 0.920700 +vn -0.532255 -0.130833 0.836414 +vn 0.628582 0.154514 -0.762240 +vn -0.404007 -0.367768 0.837571 +vn -0.532248 -0.130833 0.836418 +vn 0.420161 0.103282 -0.901553 +vn 0.420152 0.103279 -0.901557 +vn 0.243003 -0.098354 0.965027 +vn 0.319038 0.289792 -0.902350 +vn 0.165913 -0.043790 0.985168 +vn 0.407989 -0.108871 0.906472 +vn -0.304043 0.075440 -0.949667 +vn -0.706209 0.157271 -0.690315 +vn -0.315164 -0.077469 0.945870 +vn -0.519884 0.137986 -0.843019 +vn -0.315162 -0.077470 0.945871 +vn -0.237424 -0.220451 0.946061 +vn 0.073502 0.103277 -0.991933 +vn 0.177163 0.043549 -0.983218 +vn 0.055960 0.091161 0.994263 +vn 0.177161 0.043548 -0.983218 +vn -0.048516 -0.042986 0.997897 +vn 0.132690 0.125263 -0.983210 +vn -0.063429 -0.015591 0.997865 +vn -0.063430 -0.015592 0.997864 +vn -0.041266 -0.036698 -0.998474 +vn -0.054016 -0.013277 -0.998452 +vn -0.054017 -0.013278 -0.998452 +vn 0.685398 -0.209953 0.697244 +vn 0.616802 -0.160855 0.770507 +vn -0.721410 0.197873 -0.663637 +vn 0.167279 0.041120 0.985052 +vn 0.125263 0.118323 0.985043 +vn -0.944187 0.216684 -0.248109 +vn 0.167281 0.041119 0.985051 +vn -0.942467 0.243453 -0.229099 +vn -0.859571 0.226014 -0.458317 +vn -0.293279 -0.225882 -0.928959 +vn 0.795144 -0.208752 0.569358 +vn -0.306298 -0.075291 -0.948954 +vn -0.230803 -0.214139 -0.949144 +vn -0.306297 -0.075290 -0.948954 +vn 0.411181 0.101074 0.905933 +vn 0.401806 0.400905 0.823303 +vn -0.397466 -0.361932 -0.843224 +vn 0.312318 0.283422 0.906714 +vn -0.523704 -0.128736 -0.842117 +vn 0.411187 0.101075 0.905930 +vn -0.523678 -0.128724 -0.842135 +vn 0.903946 -0.240066 0.353906 +vn -0.571708 -0.501609 -0.649260 +vn -0.726924 -0.178691 -0.663063 +vn 0.928801 -0.272096 0.251578 +vn -0.726921 -0.178683 -0.663068 +vn 0.620745 0.152589 0.769020 +vn -0.549368 -0.507162 -0.664065 +vn -0.723938 -0.649881 -0.231449 +vn 0.471089 0.429749 0.770319 +vn -0.947098 -0.232802 -0.220925 +vn 0.620753 0.152589 0.769014 +vn -0.722200 -0.652633 -0.229121 +vn -0.947104 -0.232789 -0.220915 +vn -0.863858 -0.212328 -0.456800 +vn -0.656052 -0.599787 -0.458095 +vn -0.863923 -0.212359 -0.456662 +vn 0.960569 -0.253525 0.114161 +vn 0.638188 0.614599 0.463664 +vn 0.799463 0.196521 0.567660 +vn 0.799464 0.196521 0.567659 +vn 0.606969 0.554678 0.569140 +vn 0.961554 -0.253785 -0.104917 +vn 0.928966 -0.271561 -0.251549 +vn 0.691534 0.629556 0.354175 +vn 0.908653 0.223362 0.352788 +vn 0.908659 0.223360 0.352773 +vn 0.907108 -0.241000 -0.345071 +vn 0.732580 0.671035 0.114189 +vn 0.723183 0.690588 0.009662 +vn 0.964791 0.237158 0.113729 +vn -0.943536 0.243729 0.224355 +vn 0.964795 0.237155 0.113705 +vn -0.945488 0.211374 0.247735 +vn 0.685885 -0.208790 -0.697114 +vn 0.800783 -0.210351 -0.560801 +vn 0.965779 0.237403 -0.104452 +vn -0.861759 0.226429 0.453984 +vn 0.965777 0.237396 -0.104489 +vn 0.733453 0.671598 -0.104894 +vn -0.708784 0.150277 0.689233 +vn -0.728040 0.199288 0.655929 +vn 0.624608 -0.162788 -0.763783 +vn -0.528426 0.140478 0.837277 +vn 0.645049 0.620268 -0.446295 +vn 0.694004 0.631716 -0.345389 +vn 0.911824 0.224140 -0.344003 +vn 0.911826 0.224142 -0.343996 +vn -0.724810 -0.650546 0.226804 +vn -0.948163 -0.233064 0.216030 +vn 0.228679 -0.124838 0.965464 +vn 0.622838 -0.340013 0.704602 +vn 0.228679 -0.124838 0.965464 +vn 0.848222 -0.463053 0.257101 +vn 0.622837 -0.340013 0.704603 +vn 0.848222 -0.463053 0.257101 +vn 0.848222 -0.463053 -0.257102 +vn 0.848222 -0.463053 -0.257101 +vn 0.622838 -0.340014 -0.704602 +vn 0.622838 -0.340013 -0.704602 +vn 0.228679 -0.124838 -0.965464 +vn 0.228679 -0.124838 -0.965464 +vn -0.657560 0.271090 0.702941 +vn -0.698643 0.134654 0.702685 +vn 0.262394 -0.001213 0.964960 +vn 0.255631 0.004130 0.966766 +vn -0.966599 -0.015261 0.255838 +vn -0.251075 0.048395 0.966757 +vn -0.235782 0.098846 0.966766 +vn -0.251071 0.048391 0.966758 +vn 0.710918 0.018051 0.703043 +vn 0.711563 0.017196 0.702412 +vn 0.244049 -0.096400 0.964960 +vn 0.251068 -0.048392 0.966759 +vn 0.235782 -0.098846 0.966766 +vn 0.251070 -0.048394 0.966758 +vn 0.966591 0.015609 0.255848 +vn 0.968207 0.009282 0.249977 +vn -0.891681 0.373434 0.255838 +vn 0.653271 -0.280999 0.703048 +vn 0.698650 -0.134660 0.702677 +vn 0.654203 -0.280436 0.702406 +vn 0.698650 -0.134658 0.702678 +vn 0.966715 0.009399 -0.255685 +vn 0.968165 0.015634 -0.249824 +vn 0.891552 -0.373742 0.255836 +vn 0.950799 -0.183258 0.249794 +vn 0.895388 -0.368491 0.249989 +vn 0.950800 -0.183269 0.249784 +vn 0.710982 0.017171 -0.703001 +vn 0.711588 0.018038 -0.702365 +vn 0.653272 -0.280998 -0.703047 +vn 0.893965 -0.368047 -0.255673 +vn 0.892998 -0.374348 -0.249837 +vn 0.950802 -0.183259 -0.249785 +vn 0.950797 -0.183268 -0.249795 +vn 0.261786 0.004229 -0.965117 +vn -0.261786 -0.004229 -0.965117 +vn 0.255178 -0.001483 -0.966893 +vn 0.698650 -0.134659 -0.702677 +vn 0.654202 -0.280437 -0.702406 +vn 0.698649 -0.134660 -0.702678 +vn -0.711652 -0.007256 -0.702495 +vn -0.255965 -0.008284 -0.966650 +vn 0.251069 -0.048394 -0.966759 +vn 0.241461 -0.101227 -0.965116 +vn 0.251072 -0.048392 -0.966758 +vn 0.237449 -0.093466 -0.966893 +vn -0.966501 -0.019272 -0.255939 +vn -0.968326 -0.015288 -0.249219 +vn -0.711231 -0.007629 -0.702917 +vn -0.251077 0.048392 -0.966757 +vn -0.239527 0.104826 -0.965214 +vn -0.251072 0.048395 -0.966758 +vn -0.235783 0.098847 -0.966765 +vn -0.657798 0.271600 -0.702520 +vn -0.657559 0.271089 -0.702941 +vn -0.950646 0.183224 -0.250400 +vn -0.950649 0.183234 -0.250385 +vn -0.698642 0.134655 -0.702686 +vn -0.698644 0.134654 -0.702684 +vn -0.891708 0.377918 -0.249069 +vn -0.891680 0.373434 -0.255838 +vn -0.968286 -0.019401 0.249090 +vn -0.711651 -0.007257 0.702496 +vn -0.711231 -0.007628 0.702917 +vn -0.657798 0.271599 0.702521 +vn -0.950649 0.183234 0.250385 +vn -0.891708 0.377918 0.249069 +vn -0.950646 0.183224 0.250400 +vn -0.261786 -0.004229 0.965117 +vn -0.255964 -0.008285 0.966651 +vn -0.239527 0.104827 0.965214 +vn -0.698644 0.134656 0.702684 +vn 0.873078 0.104364 -0.476281 +vn 0.923707 0.110307 0.366876 +vn 0.873078 0.104364 -0.476281 +vn 0.923707 0.110307 0.366876 +vn 0.495560 0.352242 -0.793944 +vn 0.691661 0.084527 -0.717258 +vn 0.692265 0.082658 -0.716894 +vn 0.923702 0.110214 0.366917 +vn 0.923694 0.110414 0.366876 +vn 0.308805 0.036899 0.950409 +vn 0.692275 0.082670 -0.716883 +vn 0.474387 0.056658 0.878491 +vn 0.317182 -0.041359 0.947462 +vn 0.692259 0.082709 -0.716894 +vn 0.692265 0.082750 -0.716883 +vn 0.692265 0.082750 -0.716883 +vn 0.980892 0.117153 -0.155327 +vn 0.980891 0.117136 0.155346 +vn 0.980888 0.117163 -0.155346 +vn 0.619679 0.074018 0.781357 +vn 0.980891 0.117133 -0.155346 +vn 0.619641 0.074041 0.781385 +vn 0.941701 0.112472 -0.317094 +vn 0.941701 0.112472 -0.317094 +vn 0.619645 0.074007 0.781385 +vn 0.980889 0.117178 0.155327 +vn 0.941699 0.112490 -0.317094 +vn 0.403876 0.049620 -0.913467 +vn 0.980894 0.117107 0.155346 +vn 0.553849 0.067547 -0.829873 +vn 0.555626 0.066385 -0.828778 +vn 0.980886 0.117200 0.155327 +vn 0.555622 0.066417 -0.828778 +vn 0.555622 0.066417 -0.828778 +vn 0.980886 0.117200 0.155327 +vn 0.139511 0.016664 -0.990080 +vn 0.139519 0.016591 -0.990080 +vn 0.404051 0.048159 -0.913468 +vn 0.958901 0.220998 -0.177955 +vn 0.404022 0.048295 -0.913474 +vn 0.744748 -0.390613 -0.541085 +vn 0.980886 0.117175 -0.155346 +vn 0.873087 0.104286 -0.476281 +vn 0.876500 0.071837 -0.476012 +vn 0.873096 0.104278 -0.476266 +vn 0.872243 0.106762 -0.477278 +vn 0.941389 0.115057 -0.317094 +vn 0.692261 0.082688 -0.716894 +vn 0.692273 0.082682 -0.716883 +vn 0.692258 0.082717 -0.716894 +vn 0.980891 0.117136 0.155346 +vn 0.555629 0.066362 -0.828778 +vn 0.980887 0.117194 0.155327 +vn 0.555625 0.066391 -0.828778 +vn 0.555629 0.066362 -0.828778 +vn 0.980904 0.117029 0.155346 +vn 0.175544 -0.822978 -0.540271 +vn 0.139508 0.016665 -0.990081 +vn 0.418962 -0.135233 -0.897877 +vn 0.404025 0.048263 -0.913474 +vn 0.980880 0.117250 0.155327 +vn 0.404043 0.048257 -0.913466 +vn 0.980891 0.117136 -0.155346 +vn 0.980891 0.117136 -0.155346 +vn 0.179945 0.021515 0.983441 +vn 0.872858 0.104235 -0.476712 +vn 0.179948 0.021494 0.983441 +vn 0.941703 0.112457 -0.317094 +vn 0.179946 0.021510 0.983441 +vn 0.941703 0.112457 -0.317094 +vn 0.345302 0.324059 0.880768 +vn 0.980886 0.117177 -0.155346 +vn 0.980897 0.117107 -0.155327 +vn 0.941699 0.112496 -0.317094 +vn 0.619472 0.075145 0.781414 +vn 0.941699 0.112496 -0.317094 +vn 0.474381 0.056678 0.878493 +vn 0.474380 0.056719 0.878491 +vn 0.474382 0.056705 0.878491 +vn 0.793221 -0.196662 0.576303 +vn 0.792445 0.094654 0.602554 +vn 0.792445 0.094654 0.602554 +vn 0.474382 0.056706 0.878491 +vn 0.793326 -0.192747 0.577480 +vn 0.619642 0.074033 0.781385 +vn 0.619610 0.073993 0.781415 +vn 0.980886 0.117200 -0.155327 +vn 0.980886 0.117200 -0.155327 +vn 0.619673 0.074073 0.781357 +vn 0.619654 0.073936 0.781385 +vn 0.792210 0.095100 0.602793 +vn 0.941705 0.112439 -0.317094 +vn 0.941608 0.112507 -0.317360 +vn 0.923704 0.110332 0.366876 +vn 0.792323 0.094651 0.602715 +vn 0.923689 0.110321 0.366917 +vn 0.923701 0.110355 0.366876 +vn 0.980884 0.117194 -0.155346 +vn 0.980894 0.117136 -0.155327 +vn 0.921220 0.303181 0.243792 +vn 0.923647 0.110809 0.366876 +vn 0.792310 0.095779 0.602553 +vn 0.941608 0.112501 -0.317360 +vn 0.792321 0.094670 0.602715 +vn 0.941703 0.112456 -0.317094 +vn 0.980877 0.117250 -0.155346 +vn 0.980907 0.117030 -0.155327 +vn 0.923702 0.110346 0.366876 +vn 0.941690 0.112565 -0.317094 +vn 0.923702 0.110346 0.366876 +vn 0.941690 0.112565 -0.317094 +vn 0.792448 0.094633 0.602554 +vn 0.873093 0.104300 -0.476267 +vn 0.792448 0.094633 0.602554 +vn 0.872629 0.106139 -0.476711 +vn 0.873099 0.104251 -0.476267 +vn 0.873100 0.104247 -0.476266 +vn 0.923700 0.110367 0.366876 +vn 0.923700 0.110367 0.366876 +vn 0.980889 0.117152 0.155346 +vn 0.980891 0.117163 0.155327 +vn 0.792457 0.094555 0.602554 +vn 0.958818 -0.284021 0.000000 +vn 0.792457 0.094555 0.602554 +vn 0.980891 0.117134 0.155346 +vn 0.873084 0.104314 -0.476281 +vn 0.980884 0.117175 0.155356 +vn 0.873098 0.104264 -0.476266 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.118635 -0.992938 0.000000 +vn -0.118593 -0.992943 0.000057 +vn -0.118635 -0.992938 -0.000099 +vn -0.118584 -0.992944 0.000015 +vn -0.118593 -0.992943 -0.000018 +vn -0.118593 -0.992943 -0.000018 +vn -0.118584 -0.992944 0.000015 +vn -0.118635 -0.992938 0.000000 +vn -0.118635 -0.992938 -0.000099 +vn -0.118593 -0.992943 0.000057 +vn -0.258820 0.000000 0.965926 +vn -0.707104 0.000000 0.707110 +vn -0.258820 0.000000 0.965926 +vn -0.965927 0.000000 0.258815 +vn -0.707104 0.000000 0.707110 +vn -0.965927 0.000000 0.258815 +vn -0.965917 -0.004533 -0.258812 +vn -0.984631 -0.000491 -0.174646 +vn -0.989758 0.000000 -0.142755 +vn -0.707109 -0.004865 -0.707088 +vn -0.965912 0.005536 -0.258811 +vn -0.682342 -0.003011 -0.731027 +vn -0.557066 -0.000148 -0.830468 +vn -0.554081 -0.000079 -0.832463 +vn -0.587182 0.000087 -0.809455 +vn -0.531297 0.000000 -0.847186 +vn -0.258815 0.000684 -0.965927 +vn -0.267266 0.000000 -0.963623 +vn -0.541018 0.000099 -0.841011 +vn -0.707108 0.005188 -0.707087 +vn -0.258815 -0.000684 -0.965927 +vn -0.267266 0.000000 -0.963623 +vn -0.627089 0.001366 -0.778947 +vn -0.772614 0.000747 -0.634875 +vn -0.912701 -0.000637 -0.408627 +vn -0.987668 0.000000 -0.156563 +vn -0.897677 0.000386 -0.440653 +vn -0.734322 0.000585 -0.678801 +vn -0.698585 -0.000393 -0.715527 +vn -0.875603 -0.000600 -0.483030 +vn -0.982545 0.000000 -0.186023 +vn -0.858594 0.002182 -0.512652 +vn 0.965927 -0.000000 0.258814 +vn 0.965927 0.000000 0.258814 +vn 0.707117 0.000000 0.707096 +vn 0.707117 -0.000000 0.707096 +vn 0.258815 0.000000 0.965927 +vn 0.258815 -0.000000 0.965927 +vn -0.096742 0.809959 -0.578453 +vn -0.096742 0.809959 -0.578453 +vn -0.072164 0.603960 0.793741 +vn -0.107116 0.896832 -0.429206 +vn -0.072128 0.603957 0.793746 +vn -0.107127 0.896823 -0.429222 +vn -0.020671 0.172349 0.984819 +vn -0.050355 0.420915 0.905701 +vn -0.054500 0.456202 -0.888205 +vn -0.054491 0.456216 -0.888199 +vn -0.020593 0.172344 0.984822 +vn -0.050268 0.420917 0.905705 +vn -0.054493 0.456203 -0.888205 +vn -0.050294 0.420922 0.905701 +vn -0.724895 0.487097 0.487098 +vn -0.094094 0.787363 0.609267 +vn -0.096729 0.809960 -0.578453 +vn -0.096729 0.809960 -0.578453 +vn -0.094045 0.787369 0.609267 +vn -0.094045 0.787369 0.609267 +vn -0.072153 0.603961 0.793741 +vn -0.116627 0.976306 -0.182274 +vn -0.072139 0.603963 0.793741 +vn -0.116603 0.976311 -0.182264 +vn -0.072139 0.603963 0.793741 +vn -0.389559 0.238373 0.889619 +vn -0.020586 0.172344 0.984822 +vn -0.020585 0.172345 0.984822 +vn -0.050275 0.420916 0.905705 +vn -0.050285 0.420915 0.905705 +vn -0.107117 0.896824 -0.429222 +vn -0.050275 0.420916 0.905705 +vn -0.107117 0.896824 -0.429222 +vn -0.116665 0.976302 -0.182272 +vn -0.116602 0.976311 -0.182264 +vn -0.107104 0.896834 -0.429206 +vn -0.107146 0.896821 -0.429222 +vn -0.762773 0.457262 -0.457262 +vn -0.075703 0.633801 -0.769783 +vn -0.075717 0.633799 -0.769783 +vn -0.075703 0.633801 -0.769783 +vn -0.116609 0.976309 -0.182272 +vn -0.116609 0.976309 -0.182272 +vn -0.116611 0.976309 -0.182272 +vn -0.116611 0.976309 -0.182272 +vn -0.096743 0.809958 -0.578453 +vn -0.096743 0.809958 -0.578453 +vn -0.096794 0.809952 -0.578453 +vn -0.116136 0.972195 0.203346 +vn -0.013041 0.109179 -0.993937 +vn -0.116136 0.972195 0.203346 +vn -0.013039 0.109180 -0.993936 +vn -0.116642 0.976305 -0.182272 +vn -0.116642 0.976305 -0.182272 +vn -0.037730 0.316340 -0.947895 +vn -0.116111 0.972198 0.203346 +vn -0.037778 0.316334 -0.947895 +vn -0.116111 0.972198 0.203346 +vn -0.037778 0.316334 -0.947895 +vn 0.063999 0.779401 0.623248 +vn -0.106013 0.887450 0.448547 +vn -0.068787 0.594740 -0.800970 +vn -0.116612 0.976308 -0.182274 +vn -0.107121 0.896832 -0.429206 +vn -0.965083 0.253019 -0.067796 +vn -0.107120 0.896834 -0.429202 +vn -0.107176 0.896827 -0.429202 +vn -0.116614 0.976308 -0.182272 +vn -0.054438 0.456223 -0.888199 +vn -0.105989 0.887452 0.448547 +vn -0.105989 0.887452 0.448547 +vn -0.094036 0.787366 0.609271 +vn -0.054484 0.456217 -0.888199 +vn -0.054484 0.456217 -0.888199 +vn -0.116118 0.972197 0.203346 +vn -0.116118 0.972197 0.203346 +vn 0.060394 0.818214 -0.571733 +vn -0.106611 0.896681 -0.429647 +vn -0.106007 0.887450 0.448547 +vn -0.105994 0.887441 0.448569 +vn -0.096696 0.809641 -0.578906 +vn -0.116119 0.972197 0.203346 +vn -0.116119 0.972197 0.203346 +vn -0.094478 0.810227 -0.578452 +vn -0.116121 0.972197 0.203346 +vn 0.068670 0.606185 -0.792353 +vn -0.116151 0.972193 0.203346 +vn -0.116151 0.972193 0.203346 +vn -0.071127 0.595444 -0.800242 +vn -0.107110 0.896825 -0.429222 +vn -0.105996 0.887441 0.448569 +vn -0.105996 0.887441 0.448569 +vn -0.107110 0.896833 -0.429206 +vn -0.106026 0.887448 0.448547 +vn -0.105983 0.887442 0.448569 +vn -0.107167 0.896819 -0.429222 +vn -0.094033 0.787367 0.609271 +vn -0.094053 0.787374 0.609258 +vn -0.075701 0.633801 -0.769783 +vn -0.094044 0.787376 0.609258 +vn -0.075692 0.633802 -0.769783 +vn -0.094044 0.787376 0.609258 +vn -0.075692 0.633802 -0.769783 +vn -0.094032 0.787370 0.609267 +vn -0.096751 0.809958 -0.578453 +vn -0.096751 0.809958 -0.578453 +vn -0.094079 0.787371 0.609258 +vn 0.271657 0.359214 0.892842 +vn -0.072150 0.603960 0.793742 +vn -0.313799 0.245746 -0.917136 +vn -0.037786 0.316333 -0.947895 +vn -0.050289 0.420947 0.905690 +vn -0.072137 0.603956 0.793746 +vn -0.067570 0.217273 -0.973769 +vn -0.116127 0.972196 0.203346 +vn -0.116617 0.976304 -0.182295 +vn -0.116143 0.976364 -0.182274 +vn -0.072153 0.603960 0.793742 +vn -0.114673 0.959554 0.257111 +vn -0.160571 0.953023 0.256834 +vn -0.105999 0.887451 0.448547 +vn 0.124838 0.228679 -0.965464 +vn 0.124838 0.228679 -0.965464 +vn 0.340014 0.622839 -0.704601 +vn 0.340014 0.622839 -0.704600 +vn 0.463049 0.848217 0.257126 +vn 0.463049 0.848217 -0.257126 +vn 0.463053 0.848222 -0.257104 +vn 0.340014 0.622838 0.704602 +vn 0.463053 0.848222 0.257103 +vn 0.124838 0.228679 0.965464 +vn 0.340014 0.622838 0.704601 +vn 0.124838 0.228679 0.965464 +vn 0.124838 -0.228679 -0.965464 +vn 0.340014 -0.622839 -0.704600 +vn 0.124838 -0.228679 -0.965464 +vn 0.463052 -0.848221 -0.257106 +vn 0.340014 -0.622838 -0.704602 +vn 0.463049 -0.848216 -0.257128 +vn 0.463052 -0.848221 0.257106 +vn 0.463049 -0.848217 0.257128 +vn 0.340014 -0.622839 0.704601 +vn 0.340013 -0.622837 0.704603 +vn 0.124838 -0.228679 0.965464 +vn 0.124838 -0.228679 0.965464 +vn -0.116101 -0.972121 -0.203721 +vn -0.116115 -0.972120 -0.203717 +vn -0.160479 -0.953036 0.256842 +vn -0.116603 -0.976249 0.182599 +vn -0.116118 -0.972119 -0.203717 +vn -0.116111 -0.972119 -0.203721 +vn -0.116648 -0.976243 0.182599 +vn -0.116648 -0.976243 0.182599 +vn -0.116103 -0.972121 -0.203717 +vn -0.116103 -0.972121 -0.203717 +vn -0.109004 -0.899159 0.423829 +vn -0.116594 -0.976250 0.182599 +vn -0.116608 -0.976247 0.182603 +vn -0.107417 -0.899350 0.423830 +vn -0.107459 -0.899336 0.423847 +vn -0.116108 -0.972121 -0.203717 +vn -0.116126 -0.972119 -0.203713 +vn -0.116619 -0.976243 0.182616 +vn -0.116117 -0.972120 -0.203713 +vn -0.107422 -0.899341 0.423848 +vn -0.107410 -0.899347 0.423838 +vn -0.095157 -0.813569 0.573629 +vn -0.135922 -0.697439 0.703636 +vn -0.097144 -0.813334 0.573630 +vn -0.097144 -0.813334 0.573630 +vn -0.116611 -0.976247 0.182603 +vn -0.020552 -0.172061 -0.984872 +vn -0.116604 -0.976248 0.182599 +vn -0.080879 -0.252394 -0.964239 +vn -0.116596 -0.976249 0.182599 +vn -0.020661 -0.172068 -0.984868 +vn -0.116596 -0.976249 0.182599 +vn -0.020551 -0.172061 -0.984872 +vn -0.097149 -0.813333 0.573630 +vn -0.097149 -0.813333 0.573630 +vn -0.051397 -0.414741 -0.908487 +vn 0.069798 -0.471525 -0.879086 +vn -0.107419 -0.899345 0.423838 +vn -0.049680 -0.414940 -0.908492 +vn -0.107425 -0.899341 0.423848 +vn -0.049562 -0.414954 -0.908492 +vn -0.049582 -0.414959 -0.908488 +vn 0.046432 -0.821704 0.568021 +vn -0.139590 -0.696858 -0.703494 +vn -0.107411 -0.899342 0.423848 +vn -0.068915 -0.599081 -0.797717 +vn -0.107411 -0.899342 0.423848 +vn -0.116309 -0.976283 0.182603 +vn -0.107406 -0.899343 0.423847 +vn -0.116601 -0.976248 0.182603 +vn -0.071546 -0.598774 -0.797716 +vn -0.107092 -0.899242 0.424140 +vn -0.071517 -0.598772 -0.797720 +vn -0.116591 -0.976250 0.182599 +vn -0.071706 -0.629062 0.774041 +vn -0.071521 -0.598777 -0.797716 +vn -0.071507 -0.598774 -0.797719 +vn -0.075116 -0.628659 0.774045 +vn -0.091709 -0.791341 -0.604457 +vn -0.075087 -0.628666 0.774042 +vn -0.097146 -0.813334 0.573630 +vn -0.097146 -0.813334 0.573630 +vn -0.095367 -0.813313 0.573957 +vn -0.094478 -0.791014 -0.604460 +vn -0.097139 -0.813334 0.573630 +vn -0.054808 -0.450174 0.891257 +vn -0.094478 -0.791014 -0.604460 +vn -0.151421 -0.954491 -0.256941 +vn -0.037703 -0.315854 0.948059 +vn -0.107451 -0.889922 -0.443276 +vn -0.053802 -0.450280 0.891265 +vn -0.053783 -0.450297 0.891258 +vn 0.198895 -0.465626 0.862341 +vn -0.075089 -0.628666 0.774042 +vn -0.075091 -0.628666 0.774042 +vn -0.075091 -0.628666 0.774042 +vn -0.106308 -0.890059 -0.443277 +vn -0.053756 -0.450256 0.891280 +vn -0.106308 -0.890059 -0.443277 +vn -0.053784 -0.450282 0.891265 +vn -0.073236 -0.627956 0.774795 +vn -0.013024 -0.109041 0.993952 +vn -0.094483 -0.791013 -0.604460 +vn -0.013024 -0.109041 0.993952 +vn -0.094483 -0.791013 -0.604460 +vn -0.085118 -0.251828 0.964021 +vn -0.062350 -0.312811 0.947767 +vn -0.037725 -0.315851 0.948059 +vn -0.037725 -0.315851 0.948059 +vn -0.106301 -0.890060 -0.443277 +vn -0.106314 -0.890064 -0.443264 +vn -0.094495 -0.791019 -0.604450 +vn -0.094480 -0.791013 -0.604460 +vn 0.041355 -0.786154 -0.616646 +vn -0.094474 -0.791021 -0.604450 +vn -0.106317 -0.890064 -0.443264 +vn -0.106310 -0.890058 -0.443277 +vn -0.116111 -0.972122 -0.203710 +vn -0.106315 -0.890058 -0.443277 +vn -0.106302 -0.890059 -0.443277 +vn -0.106303 -0.890059 -0.443277 +vn -0.116155 -0.972116 -0.203710 +vn -0.116109 -0.972120 -0.203717 +vn -0.113513 0.959692 0.257111 +vn -0.028160 0.235761 -0.971403 +vn -0.028420 0.235948 -0.971350 +vn -0.030494 0.258745 -0.965464 +vn -0.102447 0.649897 -0.753086 +vn -0.056492 0.473048 -0.879224 +vn -0.056741 0.473018 -0.879224 +vn -0.083311 0.704699 -0.704598 +vn -0.080349 0.657863 -0.748839 +vn -0.078695 0.658061 -0.748841 +vn -0.324096 0.881537 -0.343299 +vn -0.101500 0.834565 -0.541479 +vn -0.099736 0.834777 -0.541479 +vn -0.113437 0.959701 -0.257112 +vn -0.183252 0.919034 -0.348990 +vn -0.111032 0.930175 -0.349923 +vn -0.999647 -0.025158 0.008579 +vn -0.117966 0.987619 -0.103402 +vn -0.190590 0.976239 -0.103119 +vn -0.118106 0.988792 0.091336 +vn -0.230840 0.913941 0.333803 +vn -0.111617 0.935128 0.336271 +vn -0.101855 0.852651 0.512456 +vn -0.104103 0.852380 0.512455 +vn -0.087365 0.725803 0.682332 +vn -0.083351 0.704694 0.704598 +vn -0.088895 0.725328 0.682640 +vn -0.086313 0.725638 0.682641 +vn -0.054884 0.457646 0.887439 +vn -0.019237 0.159199 0.987059 +vn -0.018983 0.158923 0.987108 +vn -0.029724 0.258837 0.965464 +vn -0.055298 0.457274 0.887605 +vn -0.055030 0.457306 0.887605 +vn -0.113513 -0.959692 -0.257112 +vn -0.018968 -0.158803 -0.987128 +vn -0.029723 -0.258836 -0.965464 +vn -0.054864 -0.457377 -0.887579 +vn -0.019237 -0.159095 -0.987076 +vn -0.083353 -0.704695 -0.704598 +vn -0.087355 -0.725538 -0.682615 +vn -0.055286 -0.456996 -0.887749 +vn -0.054996 -0.457031 -0.887749 +vn -0.086278 -0.725376 -0.682925 +vn -0.088883 -0.725063 -0.682923 +vn -0.231550 -0.913746 -0.333846 +vn -0.104112 -0.852278 -0.512624 +vn -0.101844 -0.852551 -0.512625 +vn -0.111614 -0.935105 -0.336335 +vn -0.113436 -0.959701 0.257111 +vn -0.189665 -0.981764 0.012949 +vn -0.119276 -0.992776 0.012980 +vn -0.324438 -0.881391 0.343351 +vn -0.111029 -0.930151 0.349990 +vn -0.182615 -0.919130 0.349073 +vn -0.083309 -0.704699 0.704598 +vn -0.099726 -0.834688 0.541619 +vn -0.101418 -0.834485 0.541618 +vn -0.102649 -0.649647 0.753274 +vn -0.078678 -0.657921 0.748966 +vn -0.080257 -0.657732 0.748965 +vn -0.030491 -0.258745 0.965464 +vn -0.028138 -0.235577 0.971448 +vn -0.028376 -0.235748 0.971400 +vn -0.056701 -0.472839 0.879323 +vn -0.056470 -0.472867 0.879322 +vn -0.309018 0.000000 -0.951056 +vn -0.309018 -0.000000 -0.951056 +vn -0.809021 -0.000000 -0.587780 +vn -0.809021 0.000000 -0.587780 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -0.809021 0.000000 0.587780 +vn -0.809021 0.000000 0.587780 +vn -0.309017 0.000000 0.951056 +vn -0.309017 0.000000 0.951056 +vn -0.989758 0.000000 0.142754 +vn -0.951030 0.007960 0.308995 +vn -0.912224 0.001950 0.409688 +vn -0.984631 -0.000491 0.174646 +vn -0.623234 0.005086 0.782019 +vn -0.951032 -0.007697 0.308996 +vn -0.527922 0.004239 0.849282 +vn -0.587763 0.007346 0.809000 +vn -0.587182 0.000087 0.809455 +vn -0.683270 -0.001816 0.730164 +vn -0.531310 0.000000 0.847177 +vn -0.554086 -0.000079 0.832460 +vn -0.545376 -0.004916 0.838177 +vn -0.414720 0.000000 0.909949 +vn -0.414720 0.000000 0.909949 +vn -0.587763 -0.007455 0.808999 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.587779 0.000000 0.809022 +vn 0.587779 0.000000 0.809022 +vn 0.951060 0.000000 0.309005 +vn 0.951060 0.000000 0.309005 +vn -0.875603 -0.000600 0.483031 +vn -0.987668 0.000000 0.156563 +vn -0.897678 0.000386 0.440653 +vn -0.734322 0.000585 0.678801 +vn -0.698585 -0.000393 0.715527 +vn -0.773546 -0.001118 0.633739 +vn -0.982545 0.000000 0.186022 +vn -0.858404 0.001554 0.512971 +vn 0.050039 -0.403659 0.913540 +vn 0.110332 -0.923697 -0.366894 +vn 0.048263 -0.404039 0.913468 +vn 0.110323 -0.923700 -0.366889 +vn 0.066380 -0.555637 0.828771 +vn 0.095100 -0.792209 -0.602794 +vn 0.066371 -0.555633 0.828775 +vn 0.094650 -0.792323 -0.602716 +vn 0.352184 -0.495584 0.793954 +vn 0.082707 -0.692258 0.716895 +vn 0.084503 -0.691672 0.717251 +vn 0.082679 -0.692261 0.716895 +vn 0.082687 -0.692256 0.716899 +vn 0.110311 -0.923709 -0.366869 +vn 0.067988 -0.553804 0.829867 +vn 0.110357 -0.923694 -0.366894 +vn 0.066369 -0.555638 0.828771 +vn 0.016664 -0.139509 0.990081 +vn 0.016613 -0.139515 0.990081 +vn 0.303183 -0.921226 -0.243766 +vn 0.048222 -0.404040 0.913469 +vn 0.110806 -0.923642 -0.366889 +vn 0.016664 -0.139509 0.990081 +vn 0.110344 -0.923697 -0.366889 +vn 0.048261 -0.404035 0.913469 +vn 0.048261 -0.404035 0.913469 +vn 0.110313 -0.923709 -0.366869 +vn 0.117162 -0.980887 -0.155348 +vn 0.117162 -0.980887 -0.155348 +vn 0.117182 -0.980885 -0.155348 +vn 0.117129 -0.980893 -0.155339 +vn -0.390516 -0.744778 0.541113 +vn 0.071821 -0.876498 0.476018 +vn 0.117163 -0.980889 -0.155339 +vn 0.117154 -0.980890 -0.155336 +vn 0.117140 -0.980892 -0.155336 +vn 0.117190 -0.980884 -0.155348 +vn 0.117176 -0.980886 -0.155348 +vn 0.117142 -0.980891 -0.155339 +vn 0.082678 -0.692263 0.716894 +vn 0.117162 -0.980887 0.155348 +vn 0.117162 -0.980887 0.155348 +vn 0.036881 -0.308807 -0.950410 +vn 0.112484 -0.941720 0.317033 +vn 0.112484 -0.941720 0.317033 +vn 0.074004 -0.619636 -0.781393 +vn 0.117129 -0.980891 0.155348 +vn 0.021494 -0.179950 -0.983441 +vn 0.117182 -0.980886 0.155339 +vn 0.021498 -0.179949 -0.983441 +vn -0.041361 -0.317181 -0.947463 +vn 0.066361 -0.555639 0.828771 +vn -0.196683 -0.793215 -0.576304 +vn 0.112503 -0.941718 0.317033 +vn 0.112447 -0.941682 0.317160 +vn -0.192807 -0.793319 -0.577469 +vn 0.117164 -0.980889 -0.155339 +vn 0.110349 -0.923705 -0.366869 +vn 0.117163 -0.980889 -0.155338 +vn 0.117163 -0.980889 0.155336 +vn 0.056664 -0.474389 -0.878490 +vn 0.117154 -0.980890 0.155339 +vn 0.149810 -0.461131 -0.874594 +vn 0.056673 -0.474388 -0.878490 +vn 0.112471 -0.941679 0.317160 +vn 0.056673 -0.474388 -0.878490 +vn 0.112471 -0.941679 0.317160 +vn 0.117140 -0.980890 0.155348 +vn 0.074013 -0.619635 -0.781393 +vn 0.117190 -0.980886 0.155336 +vn 0.074013 -0.619640 -0.781389 +vn 0.074026 -0.619638 -0.781389 +vn 0.112468 -0.941680 0.317160 +vn 0.074026 -0.619638 -0.781389 +vn 0.112510 -0.941717 0.317033 +vn 0.117176 -0.980887 0.155339 +vn 0.117142 -0.980890 0.155348 +vn 0.075018 -0.618672 -0.782059 +vn 0.074008 -0.619640 -0.781389 +vn -0.283953 -0.958838 0.000000 +vn 0.104916 -0.872776 0.476712 +vn 0.112459 -0.941681 0.317160 +vn 0.117127 -0.980892 -0.155348 +vn 0.112497 -0.941719 0.317033 +vn -0.822975 -0.175545 0.540274 +vn 0.094655 -0.792444 -0.602555 +vn 0.094654 -0.792445 -0.602554 +vn -0.135275 -0.418956 0.897873 +vn 0.104287 -0.873091 0.476273 +vn 0.104287 -0.873091 0.476273 +vn 0.104257 -0.873095 0.476273 +vn 0.094670 -0.792443 -0.602555 +vn 0.094670 -0.792443 -0.602555 +vn 0.104305 -0.873093 0.476265 +vn 0.110333 -0.923707 -0.366869 +vn 0.853160 -0.483162 0.196651 +vn 0.110333 -0.923707 -0.366869 +vn 0.117164 -0.980889 0.155339 +vn 0.117163 -0.980889 0.155339 +vn 0.117164 -0.980889 0.155339 +vn 0.113013 -0.940501 0.320446 +vn 0.112481 -0.941678 0.317160 +vn 0.094647 -0.792446 -0.602554 +vn 0.104279 -0.873092 0.476273 +vn 0.094654 -0.792444 -0.602555 +vn 0.104312 -0.873092 0.476265 +vn 0.104276 -0.873093 0.476272 +vn 0.106112 -0.872632 0.476711 +vn 0.117125 -0.980892 0.155348 +vn 0.104298 -0.873090 0.476273 +vn 0.104276 -0.873093 0.476273 +vn 0.110350 -0.923697 -0.366889 +vn 0.082687 -0.692262 0.716894 +vn 0.110301 -0.923711 -0.366869 +vn 0.082687 -0.692262 0.716894 +vn 0.082663 -0.692259 0.716899 +vn 0.112484 -0.941721 0.317033 +vn 0.082701 -0.692260 0.716894 +vn 0.094636 -0.792447 -0.602554 +vn 0.066369 -0.555638 0.828771 +vn 0.095721 -0.792194 -0.602715 +vn 0.066368 -0.555633 0.828774 +vn -0.340018 -0.622844 -0.704594 +vn -0.340009 -0.622836 -0.704606 +vn -0.463815 -0.849615 -0.251057 +vn -0.463815 -0.849615 -0.251059 +vn -0.463815 -0.849615 0.251059 +vn -0.463815 -0.849615 0.251058 +vn -0.341427 -0.622065 -0.704601 +vn -0.123486 -0.229418 -0.965463 +vn -0.121902 -0.223299 -0.967097 +vn -0.121906 -0.223311 0.967094 +vn -0.340014 -0.622846 0.704594 +vn -0.340012 -0.622834 0.704606 +vn -0.340012 -0.622834 -0.704606 +vn -0.341424 -0.622063 -0.704604 +vn -0.340013 -0.622835 -0.704605 +vn -0.463054 -0.848221 -0.257103 +vn -0.462439 -0.850371 -0.251036 +vn -0.463817 -0.849620 -0.251036 +vn -0.463810 -0.849618 -0.251058 +vn -0.461707 -0.848955 0.257104 +vn -0.463815 -0.849615 0.251059 +vn -0.463817 -0.849620 0.251037 +vn -0.463812 -0.849623 0.251037 +vn -0.123486 -0.229415 0.965464 +vn -0.341428 -0.622066 0.704599 +vn -0.121902 -0.223299 0.967097 +vn -0.340013 -0.622834 0.704606 +vn -0.341424 -0.622063 0.704604 +vn -0.340013 -0.622835 0.704605 +vn -0.126192 -0.227942 -0.965463 +vn -0.338599 -0.623610 -0.704600 +vn -0.338604 -0.623614 -0.704594 +vn -0.463053 -0.848221 -0.257106 +vn -0.465188 -0.848864 -0.251057 +vn -0.464394 -0.847487 0.257106 +vn -0.463814 -0.849615 0.251058 +vn -0.121901 -0.223298 -0.967098 +vn -0.121902 -0.223300 -0.967097 +vn -0.126190 -0.227940 0.965464 +vn -0.338601 -0.623610 0.704599 +vn -0.338602 -0.623616 0.704594 +vn -0.340018 -0.622844 -0.704594 +vn -0.340018 -0.622844 -0.704594 +vn -0.463815 -0.849615 -0.251057 +vn -0.463815 -0.849615 -0.251057 +vn -0.463815 -0.849615 0.251058 +vn -0.463815 -0.849615 0.251058 +vn -0.121906 -0.223311 -0.967094 +vn -0.121901 -0.223298 0.967098 +vn -0.121902 -0.223300 0.967097 +vn -0.340018 -0.622844 0.704594 +vn -0.340018 -0.622844 0.704594 +vn -0.340013 0.622835 -0.704605 +vn -0.340014 0.622845 -0.704596 +vn -0.463814 0.849616 -0.251057 +vn -0.463814 0.849616 -0.251057 +vn -0.463814 0.849615 0.251058 +vn -0.463814 0.849615 0.251058 +vn -0.126191 0.227941 -0.965463 +vn -0.121902 0.223300 -0.967097 +vn -0.121901 0.223298 0.967098 +vn -0.121906 0.223309 0.967095 +vn -0.340010 0.622837 0.704605 +vn -0.340017 0.622843 0.704596 +vn -0.338599 0.623610 -0.704600 +vn -0.340018 0.622843 -0.704596 +vn -0.338604 0.623614 -0.704594 +vn -0.340018 0.622844 -0.704594 +vn -0.463054 0.848221 -0.257103 +vn -0.463815 0.849615 -0.251057 +vn -0.463815 0.849615 -0.251057 +vn -0.465188 0.848865 -0.251057 +vn -0.464394 0.847488 0.257104 +vn -0.463815 0.849615 0.251058 +vn -0.463815 0.849615 0.251058 +vn -0.463815 0.849615 0.251058 +vn -0.126189 0.227939 0.965464 +vn -0.338601 0.623610 0.704599 +vn -0.121902 0.223300 0.967097 +vn -0.340017 0.622843 0.704596 +vn -0.338602 0.623616 0.704594 +vn -0.340018 0.622844 0.704594 +vn -0.123487 0.229418 -0.965463 +vn -0.341425 0.622065 -0.704602 +vn -0.341424 0.622061 -0.704606 +vn -0.463053 0.848222 -0.257101 +vn -0.462439 0.850372 -0.251034 +vn -0.461707 0.848955 0.257101 +vn -0.463817 0.849621 0.251035 +vn -0.121902 0.223301 -0.967097 +vn -0.123486 0.229416 0.965464 +vn -0.341428 0.622066 0.704600 +vn -0.341423 0.622061 0.704606 +vn -0.340013 0.622836 -0.704605 +vn -0.340012 0.622833 -0.704607 +vn -0.463813 0.849623 -0.251035 +vn -0.463815 0.849615 -0.251057 +vn -0.463818 0.849620 0.251035 +vn -0.463810 0.849618 0.251058 +vn -0.121901 0.223298 -0.967098 +vn -0.121906 0.223309 -0.967095 +vn -0.121902 0.223301 0.967097 +vn -0.340011 0.622833 0.704607 +vn -0.340013 0.622835 0.704605 +vn 0.108324 0.906638 -0.407766 +vn 0.108324 0.906638 -0.407766 +vn 0.108283 0.906643 -0.407766 +vn 0.108249 0.906641 -0.407780 +vn 0.115793 0.969272 0.217032 +vn 0.116984 0.979240 -0.165540 +vn 0.120496 0.978866 -0.165235 +vn 0.063276 0.964398 -0.256774 +vn 0.106349 0.906873 -0.407764 +vn 0.108328 0.906638 -0.407765 +vn 0.108275 0.906638 -0.407780 +vn 0.117007 0.979289 -0.165236 +vn 0.116970 0.979292 -0.165245 +vn 0.116947 0.979294 -0.165245 +vn 0.116982 0.979292 -0.165236 +vn 0.117004 0.979291 -0.165227 +vn 0.116965 0.979294 -0.165236 +vn 0.116960 0.979296 -0.165227 +vn 0.116960 0.979296 -0.165227 +vn 0.117008 0.979290 -0.165227 +vn 0.116972 0.979293 -0.165236 +vn 0.116953 0.979295 -0.165236 +vn 0.116061 0.969240 0.217032 +vn 0.115811 0.969281 0.216986 +vn 0.306390 0.689180 0.656625 +vn 0.105878 0.883951 0.455434 +vn 0.115752 0.969288 0.216986 +vn 0.115752 0.969288 0.216986 +vn 0.016731 0.139917 -0.990022 +vn 0.016713 0.139919 -0.990022 +vn 0.105565 0.883988 0.455434 +vn -0.024644 0.264921 -0.963955 +vn 0.105565 0.883988 0.455434 +vn 0.124591 0.365620 -0.922388 +vn 0.092164 0.771764 0.629195 +vn 0.115769 0.969286 0.216986 +vn 0.115769 0.969286 0.216986 +vn 0.105617 0.883982 0.455434 +vn 0.062501 0.506851 -0.859765 +vn 0.105584 0.884004 0.455400 +vn 0.046065 0.385222 -0.921674 +vn 0.046005 0.385222 -0.921677 +vn 0.115765 0.969286 0.216986 +vn 0.043510 0.385525 -0.921671 +vn 0.060559 0.507084 -0.859767 +vn 0.115765 0.969286 0.216986 +vn 0.060889 0.507044 -0.859767 +vn 0.060559 0.507084 -0.859767 +vn 0.115812 0.969280 0.216986 +vn 0.081813 0.665253 -0.742122 +vn 0.115777 0.969285 0.216986 +vn 0.084981 0.962667 0.257003 +vn 0.115812 0.969281 0.216986 +vn 0.347837 0.770892 -0.533605 +vn 0.105546 0.884008 0.455400 +vn 0.105577 0.883987 0.455434 +vn 0.104731 0.884088 0.455434 +vn 0.079534 0.665903 -0.741787 +vn 0.105621 0.883982 0.455434 +vn 0.105621 0.883982 0.455434 +vn 0.092780 0.771690 0.629195 +vn 0.098898 0.828161 -0.551696 +vn 0.092218 0.771838 0.629096 +vn 0.101360 0.828640 -0.550529 +vn 0.111768 0.905549 -0.409255 +vn 0.092183 0.771842 0.629096 +vn 0.092155 0.771850 0.629091 +vn 0.081482 0.666001 -0.741488 +vn 0.079531 0.665903 -0.741787 +vn 0.032567 0.709801 0.703649 +vn 0.092221 0.771837 0.629097 +vn 0.092178 0.771847 0.629091 +vn 0.040939 0.709085 -0.703933 +vn 0.079565 0.666231 -0.741489 +vn 0.095605 0.771428 0.629093 +vn 0.268337 0.386146 0.882545 +vn 0.079565 0.666231 -0.741489 +vn 0.069156 0.573291 0.816428 +vn 0.069820 0.667362 -0.741453 +vn 0.068506 0.573594 0.816270 +vn 0.070476 0.573358 0.816269 +vn 0.099004 0.828914 -0.550545 +vn 0.068502 0.573594 0.816270 +vn 0.099038 0.828919 -0.550531 +vn 0.068502 0.573594 0.816270 +vn 0.021566 0.180547 0.983330 +vn 0.021590 0.180544 0.983330 +vn -0.016541 0.264061 0.964364 +vn 0.050513 0.422746 0.904839 +vn 0.048842 0.422954 0.904834 +vn 0.050488 0.422758 0.904835 +vn 0.108293 0.906649 -0.407751 +vn 0.098969 0.828918 -0.550545 +vn 0.099001 0.828924 -0.550531 +vn 0.108271 0.906645 -0.407766 +vn 0.108304 0.906647 -0.407751 +vn 0.100427 0.828743 -0.550545 +vn 0.098993 0.828915 -0.550545 +vn 0.099042 0.828919 -0.550531 +vn 0.115488 -0.959456 0.257112 +vn 0.025262 -0.212133 -0.976914 +vn 0.025333 -0.212088 -0.976922 +vn 0.031632 -0.258608 -0.965464 +vn -0.003990 -0.614423 -0.788967 +vn 0.053863 -0.451582 -0.890603 +vn 0.053960 -0.451570 -0.890603 +vn 0.085316 -0.704459 -0.704598 +vn 0.074689 -0.625920 -0.776303 +vn 0.074258 -0.625971 -0.776303 +vn -0.242138 -0.886989 -0.393216 +vn 0.096336 -0.811363 -0.576549 +vn 0.096859 -0.811301 -0.576550 +vn 0.115807 -0.959418 -0.257112 +vn 0.109168 -0.913537 -0.391833 +vn 0.101404 -0.914436 -0.391821 +vn -0.925166 -0.379187 0.016876 +vn 0.117294 -0.981992 -0.148098 +vn 0.118363 -0.990947 0.063350 +vn 0.109621 -0.982879 -0.148093 +vn -0.032156 -0.951299 0.306589 +vn 0.112854 -0.944063 0.309854 +vn 0.098892 -0.857386 0.505084 +vn 0.102354 -0.856978 0.505086 +vn 0.084645 -0.721448 0.687276 +vn 0.084780 -0.704525 0.704597 +vn 0.082726 -0.721466 0.687490 +vn 0.086370 -0.721035 0.687494 +vn 0.017818 -0.149177 0.988650 +vn 0.051268 -0.435506 0.898725 +vn 0.017144 -0.149789 0.988569 +vn 0.032099 -0.258549 0.965465 +vn 0.050430 -0.435210 0.898916 +vn 0.051647 -0.435065 0.898917 +vn 0.115487 0.959456 -0.257111 +vn 0.032099 0.258552 -0.965464 +vn 0.017844 0.149391 -0.988617 +vn 0.051424 0.436042 -0.898456 +vn 0.017248 0.149931 -0.988546 +vn 0.084785 0.704523 -0.704599 +vn 0.084770 0.721960 -0.686722 +vn 0.051708 0.435596 -0.898656 +vn 0.050548 0.435734 -0.898655 +vn 0.082856 0.721980 -0.686935 +vn 0.086426 0.721557 -0.686939 +vn -0.029754 0.951358 -0.306649 +vn 0.098971 0.857538 -0.504809 +vn 0.112856 0.944081 -0.309797 +vn 0.102373 0.857137 -0.504813 +vn 0.115808 0.959418 0.257112 +vn 0.109522 0.990244 0.086148 +vn 0.117495 0.989330 0.086151 +vn -0.242228 0.887129 0.392847 +vn 0.100355 0.914637 0.391622 +vn 0.109178 0.913620 0.391637 +vn 0.085315 0.704461 0.704597 +vn 0.096875 0.811434 0.576359 +vn 0.096081 0.811529 0.576359 +vn -0.003510 0.614804 0.788672 +vn 0.074710 0.626099 0.776156 +vn 0.073980 0.626186 0.776156 +vn 0.025371 0.212409 0.976852 +vn 0.031628 0.258606 0.965465 +vn 0.025252 0.212486 0.976838 +vn 0.053994 0.451863 0.890452 +vn 0.053845 0.451881 0.890452 +vn 0.994503 -0.009859 0.104240 +vn 0.980340 -0.002797 0.197295 +vn 0.850135 0.000140 0.526565 +vn 0.803095 0.001934 -0.595848 +vn 0.770594 0.008580 0.637269 +vn 0.843359 -0.002883 0.537342 +vn 0.842092 0.004349 -0.539316 +vn 0.785558 -0.007390 0.618743 +vn 0.824092 -0.000095 0.566456 +vn 0.810716 -0.000000 0.585439 +vn 0.758707 0.000000 -0.651432 +vn 0.686671 -0.000000 0.726968 +vn 0.758707 0.000000 -0.651432 +vn 0.824016 0.000095 -0.566567 +vn 0.810731 0.000000 -0.585419 +vn 0.686671 0.000000 0.726968 +vn 0.770594 -0.008580 0.637269 +vn 0.289093 -0.000000 0.957301 +vn 0.289093 0.000000 0.957301 +vn 0.894397 -0.000458 0.447273 +vn 0.970170 -0.000445 0.242423 +vn 0.999966 -0.000218 0.008207 +vn 0.976127 -0.000207 -0.217200 +vn 0.911851 0.005052 -0.410491 +vn 0.914140 -0.000302 -0.405399 +vn 0.957361 0.000298 -0.288894 +vn 0.998670 -0.000317 -0.051565 +vn 0.913738 0.001051 0.406302 +vn 0.894349 0.000459 -0.447369 +vn 0.885972 0.009308 -0.463646 +vn 0.970123 0.000449 -0.242614 +vn 0.999967 0.000219 -0.008137 +vn 0.976113 0.000205 0.217261 +vn 0.914034 0.000299 0.405637 +vn 0.880832 0.000220 0.473429 +vn 0.957422 -0.000283 0.288692 +vn 0.814136 -0.002443 -0.580670 +vn 0.980677 -0.001774 -0.195624 +vn 0.850165 -0.000141 -0.526516 +vn 0.876770 -0.007467 -0.480852 +vn 0.998645 0.004855 0.051816 +vn 0.885974 -0.009071 -0.463647 +vn 0.994509 0.009302 0.104241 +vn 0.807439 0.005575 0.589925 +vn -0.258815 0.000684 0.965927 +vn -0.267266 0.000000 0.963623 +vn -0.541189 -0.000100 0.840901 +vn -0.531377 0.000000 0.847135 +vn -0.267266 0.000000 0.963623 +vn -0.586906 -0.000087 0.809655 +vn -0.554151 0.000078 0.832416 +vn -0.707108 -0.005194 0.707087 +vn -0.556832 0.000147 0.830625 +vn -0.258815 -0.000684 0.965927 +vn -0.681929 0.002990 0.731412 +vn -0.965912 -0.005533 0.258810 +vn -0.707109 0.004868 0.707088 +vn -0.989809 0.000000 0.142402 +vn -0.984686 0.000476 0.174337 +vn -0.965917 0.004508 0.258812 +vn -0.627701 -0.001379 0.778453 +vn -0.773529 -0.000705 0.633760 +vn -0.913183 0.000619 0.407549 +vn -0.987624 0.000000 0.156839 +vn -0.897444 -0.000375 0.441127 +vn -0.733928 -0.000577 0.679227 +vn -0.698811 0.000387 0.715306 +vn -0.875847 0.000594 0.482588 +vn -0.982422 0.000000 0.186673 +vn -0.857874 -0.002182 0.513855 +vn 0.258815 0.000000 -0.965927 +vn 0.258815 0.000000 -0.965927 +vn 0.707117 0.000000 -0.707096 +vn 0.707117 0.000000 -0.707096 +vn 0.965927 0.000000 -0.258815 +vn 0.965927 0.000000 -0.258815 +vn -0.965927 0.000000 -0.258815 +vn -0.965927 0.000000 -0.258815 +vn -0.707105 0.000000 -0.707109 +vn -0.707105 0.000000 -0.707109 +vn -0.258818 0.000000 -0.965926 +vn -0.258818 0.000000 -0.965926 +vn 0.965927 -0.000000 0.258815 +vn 0.965927 0.000000 0.258815 +vn 0.707105 -0.000000 0.707109 +vn 0.707105 0.000000 0.707109 +vn 0.258818 -0.000000 0.965926 +vn 0.258818 0.000000 0.965926 +vn -0.965927 0.000000 -0.258814 +vn -0.965927 0.000000 -0.258814 +vn -0.707075 0.000000 -0.707139 +vn -0.707075 0.000000 -0.707139 +vn -0.258845 0.000000 -0.965919 +vn -0.258845 0.000000 -0.965919 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.113513 -0.959692 0.257112 +vn -0.018968 -0.158803 0.987128 +vn -0.054864 -0.457375 0.887580 +vn -0.019237 -0.159095 0.987076 +vn -0.029723 -0.258835 0.965464 +vn -0.087353 -0.725540 0.682614 +vn -0.083353 -0.704695 0.704597 +vn -0.054996 -0.457031 0.887749 +vn -0.055283 -0.456997 0.887749 +vn -0.088883 -0.725064 0.682922 +vn -0.086278 -0.725377 0.682923 +vn -0.231553 -0.913745 0.333846 +vn -0.104112 -0.852275 0.512629 +vn -0.101843 -0.852548 0.512631 +vn -0.111614 -0.935105 0.336335 +vn -0.189667 -0.981763 -0.012949 +vn -0.113436 -0.959701 -0.257111 +vn -0.119276 -0.992776 -0.012980 +vn -0.324439 -0.881391 -0.343350 +vn -0.111029 -0.930151 -0.349990 +vn -0.182688 -0.919116 -0.349071 +vn -0.083309 -0.704699 -0.704598 +vn -0.101415 -0.834483 -0.541621 +vn -0.099726 -0.834686 -0.541622 +vn -0.102647 -0.649646 -0.753275 +vn -0.078678 -0.657921 -0.748966 +vn -0.080253 -0.657732 -0.748965 +vn -0.028373 -0.235748 -0.971400 +vn -0.028139 -0.235579 -0.971448 +vn -0.030492 -0.258746 -0.965464 +vn -0.056699 -0.472840 -0.879323 +vn -0.056470 -0.472867 -0.879322 +vn -0.113513 0.959692 -0.257111 +vn -0.028161 0.235763 0.971402 +vn -0.030494 0.258744 0.965465 +vn -0.028417 0.235947 0.971350 +vn -0.102447 0.649896 0.753087 +vn -0.056736 0.473001 0.879233 +vn -0.056490 0.473031 0.879233 +vn -0.083311 0.704700 0.704597 +vn -0.078696 0.658063 0.748840 +vn -0.080340 0.657865 0.748838 +vn -0.324094 0.881537 0.343300 +vn -0.099736 0.834775 0.541482 +vn -0.101493 0.834564 0.541481 +vn -0.113437 0.959701 0.257112 +vn -0.111032 0.930175 0.349923 +vn -0.183252 0.919034 0.348990 +vn -0.999647 -0.025158 -0.008579 +vn -0.190590 0.976239 0.103119 +vn -0.117966 0.987619 0.103402 +vn -0.118106 0.988792 -0.091336 +vn -0.230838 0.913942 -0.333803 +vn -0.111617 0.935128 -0.336270 +vn -0.101855 0.852651 -0.512456 +vn -0.104099 0.852381 -0.512455 +vn -0.083351 0.704694 -0.704598 +vn -0.087364 0.725801 -0.682334 +vn -0.088889 0.725328 -0.682641 +vn -0.086313 0.725637 -0.682643 +vn -0.029724 0.258838 -0.965463 +vn -0.018983 0.158923 -0.987108 +vn -0.054884 0.457648 -0.887438 +vn -0.019237 0.159199 -0.987059 +vn -0.055298 0.457276 -0.887604 +vn -0.055030 0.457308 -0.887604 +vn -0.106301 -0.890066 0.443264 +vn -0.106313 -0.890058 0.443277 +vn -0.116117 -0.972119 0.203717 +vn -0.116108 -0.972121 0.203714 +vn -0.151420 -0.954491 0.256941 +vn -0.107451 -0.889922 0.443276 +vn -0.106308 -0.890059 0.443277 +vn -0.106308 -0.890059 0.443277 +vn -0.116103 -0.972121 0.203717 +vn -0.116103 -0.972121 0.203717 +vn -0.116318 -0.976282 -0.182603 +vn -0.116111 -0.972120 0.203717 +vn -0.116118 -0.972118 0.203721 +vn -0.116601 -0.976249 -0.182599 +vn -0.116591 -0.976249 -0.182603 +vn -0.116101 -0.972121 0.203717 +vn -0.116115 -0.972119 0.203721 +vn -0.116596 -0.976250 -0.182599 +vn -0.116596 -0.976249 -0.182599 +vn -0.116155 -0.972115 0.203717 +vn -0.116111 -0.972122 0.203710 +vn -0.116109 -0.972122 0.203710 +vn -0.107406 -0.899344 -0.423845 +vn 0.046434 -0.821702 -0.568022 +vn -0.107114 -0.899250 -0.424117 +vn -0.107411 -0.899343 -0.423845 +vn -0.107411 -0.899343 -0.423845 +vn -0.020660 -0.172065 0.984869 +vn -0.116604 -0.976248 -0.182603 +vn -0.116611 -0.976248 -0.182599 +vn 0.301840 -0.339494 0.890863 +vn -0.095367 -0.813312 -0.573959 +vn -0.097139 -0.813333 -0.573632 +vn -0.020552 -0.172058 0.984872 +vn -0.080879 -0.252392 0.964239 +vn -0.020550 -0.172059 0.984872 +vn -0.116594 -0.976249 -0.182603 +vn -0.049570 -0.415000 0.908470 +vn -0.116608 -0.976248 -0.182599 +vn -0.049681 -0.414944 0.908490 +vn -0.107419 -0.899342 -0.423845 +vn -0.107425 -0.899346 -0.423836 +vn -0.051397 -0.414745 0.908485 +vn -0.049563 -0.414965 0.908486 +vn -0.049582 -0.414956 0.908490 +vn -0.116648 -0.976243 -0.182599 +vn 0.041353 -0.786155 0.616644 +vn -0.160479 -0.953036 -0.256842 +vn -0.116603 -0.976249 -0.182599 +vn -0.116648 -0.976243 -0.182599 +vn -0.071511 -0.598778 0.797716 +vn -0.107409 -0.899343 -0.423845 +vn -0.107422 -0.899346 -0.423836 +vn -0.109005 -0.899160 -0.423827 +vn -0.107460 -0.899346 -0.423828 +vn -0.107416 -0.899342 -0.423845 +vn -0.094474 -0.791023 0.604448 +vn -0.097146 -0.813332 -0.573632 +vn -0.106315 -0.890058 0.443277 +vn -0.097146 -0.813332 -0.573632 +vn -0.097149 -0.813332 -0.573632 +vn -0.071521 -0.598777 0.797716 +vn -0.097149 -0.813332 -0.573632 +vn -0.071521 -0.598777 0.797716 +vn -0.135922 -0.697439 -0.703636 +vn -0.106302 -0.890059 0.443277 +vn -0.095157 -0.813568 -0.573630 +vn -0.097144 -0.813333 -0.573632 +vn -0.097144 -0.813333 -0.573632 +vn -0.106303 -0.890059 0.443277 +vn 0.198885 -0.465633 -0.862340 +vn -0.139590 -0.696859 0.703493 +vn -0.068914 -0.599081 0.797717 +vn -0.073236 -0.627956 -0.774795 +vn -0.071545 -0.598769 0.797720 +vn -0.075089 -0.628666 -0.774042 +vn -0.071517 -0.598777 0.797716 +vn -0.075091 -0.628666 -0.774042 +vn -0.094497 -0.791011 0.604460 +vn -0.075091 -0.628666 -0.774042 +vn -0.094481 -0.791022 0.604449 +vn -0.071706 -0.629062 -0.774041 +vn -0.116619 -0.976243 -0.182616 +vn -0.075087 -0.628662 -0.774045 +vn -0.116126 -0.972119 0.203714 +vn -0.075117 -0.628663 -0.774042 +vn -0.037709 -0.315853 -0.948059 +vn -0.053763 -0.450262 -0.891276 +vn -0.053784 -0.450282 -0.891265 +vn -0.106316 -0.890058 0.443277 +vn -0.106311 -0.890065 0.443264 +vn -0.054808 -0.450174 -0.891257 +vn -0.053804 -0.450294 -0.891258 +vn -0.053781 -0.450282 -0.891265 +vn -0.094483 -0.791013 0.604460 +vn -0.085120 -0.251830 -0.964021 +vn -0.013024 -0.109037 -0.993952 +vn -0.094483 -0.791013 0.604460 +vn -0.012999 -0.109040 -0.993952 +vn -0.037701 -0.315854 -0.948059 +vn -0.062349 -0.312818 -0.947765 +vn -0.037726 -0.315858 -0.948056 +vn -0.091709 -0.791341 0.604457 +vn -0.094478 -0.791014 0.604460 +vn -0.094478 -0.791014 0.604460 +vn 0.098845 -0.235783 -0.966766 +vn -0.007260 -0.711651 -0.702496 +vn 0.134659 -0.698648 -0.702679 +vn -0.007629 -0.711234 -0.702914 +vn 0.134661 -0.698646 -0.702681 +vn 0.373437 -0.891681 -0.255832 +vn -0.096402 0.244048 -0.964960 +vn -0.098847 0.235788 -0.966764 +vn -0.004229 -0.261788 -0.965116 +vn 0.004229 0.261788 -0.965116 +vn 0.048393 -0.251071 -0.966758 +vn -0.008287 -0.255963 -0.966651 +vn 0.048392 -0.251072 -0.966758 +vn -0.280984 0.653280 -0.703046 +vn -0.280437 0.654185 -0.702422 +vn -0.048392 0.251075 -0.966757 +vn -0.001484 0.255180 -0.966892 +vn -0.048393 0.251073 -0.966758 +vn -0.373755 0.891546 -0.255839 +vn -0.015259 -0.966599 -0.255838 +vn -0.368473 0.895404 -0.249959 +vn 0.009396 0.966715 -0.255683 +vn 0.018048 0.710917 -0.703044 +vn 0.017198 0.711560 -0.702415 +vn -0.134660 0.698643 -0.702683 +vn -0.134657 0.698646 -0.702681 +vn -0.368027 0.893972 0.255676 +vn -0.374364 0.893000 0.249806 +vn 0.015615 0.966591 0.255848 +vn -0.183259 0.950802 -0.249782 +vn 0.015641 0.968168 -0.249814 +vn -0.183262 0.950801 -0.249784 +vn -0.280202 0.653662 0.703003 +vn -0.281219 0.653899 0.702376 +vn -0.183259 0.950801 0.249785 +vn -0.183262 0.950802 0.249783 +vn 0.009279 0.968210 0.249968 +vn -0.101225 0.241460 0.965117 +vn -0.093472 0.237452 0.966892 +vn -0.134660 0.698646 0.702681 +vn 0.017174 0.710982 0.703001 +vn 0.018036 0.711585 0.702368 +vn -0.134657 0.698644 0.702683 +vn 0.098845 -0.235783 0.966766 +vn 0.104824 -0.239527 0.965214 +vn -0.004229 -0.261785 0.965117 +vn -0.048392 0.251073 0.966758 +vn 0.004229 0.261785 0.965117 +vn -0.048393 0.251074 0.966757 +vn -0.001481 0.255180 0.966892 +vn 0.271591 -0.657805 0.702517 +vn 0.271090 -0.657571 0.702930 +vn 0.377900 -0.891708 0.249096 +vn -0.007258 -0.711652 0.702494 +vn -0.008285 -0.255963 0.966651 +vn 0.048393 -0.251072 0.966758 +vn 0.048392 -0.251071 0.966758 +vn -0.019272 -0.966501 0.255939 +vn 0.183230 -0.950646 0.250398 +vn -0.015287 -0.968327 0.249217 +vn -0.007629 -0.711234 0.702914 +vn 0.134661 -0.698648 0.702679 +vn 0.134659 -0.698646 0.702681 +vn 0.183233 -0.950644 0.250403 +vn 0.373437 -0.891680 0.255833 +vn 0.271590 -0.657804 -0.702519 +vn 0.377900 -0.891708 -0.249095 +vn 0.104826 -0.239529 -0.965214 +vn 0.271091 -0.657571 -0.702930 +vn 0.183230 -0.950646 -0.250397 +vn -0.019401 -0.968287 -0.249087 +vn 0.183233 -0.950644 -0.250402 +vn 0.463815 -0.849615 0.251058 +vn 0.463815 -0.849615 0.251058 +vn 0.463815 -0.849615 -0.251057 +vn 0.463815 -0.849615 -0.251057 +vn 0.341425 -0.622069 0.704599 +vn 0.123485 -0.229416 0.965464 +vn 0.121899 -0.223295 0.967099 +vn 0.121899 -0.223295 -0.967099 +vn 0.340018 -0.622844 -0.704594 +vn 0.340018 -0.622844 -0.704594 +vn 0.461707 -0.848954 0.257106 +vn 0.340018 -0.622844 0.704594 +vn 0.341429 -0.622073 0.704594 +vn 0.340018 -0.622844 0.704594 +vn 0.463815 -0.849615 0.251058 +vn 0.463815 -0.849615 0.251058 +vn 0.463810 -0.849618 0.251058 +vn 0.461707 -0.848954 -0.257106 +vn 0.463815 -0.849615 -0.251057 +vn 0.463810 -0.849618 -0.251057 +vn 0.463815 -0.849615 -0.251057 +vn 0.123485 -0.229419 -0.965463 +vn 0.341423 -0.622068 -0.704600 +vn 0.121899 -0.223295 -0.967099 +vn 0.340018 -0.622844 -0.704594 +vn 0.341429 -0.622073 -0.704594 +vn 0.340018 -0.622844 -0.704594 +vn 0.126190 -0.227939 0.965464 +vn 0.338603 -0.623608 0.704600 +vn 0.338600 -0.623606 0.704604 +vn 0.463045 -0.848219 -0.257128 +vn 0.463045 -0.848218 0.257129 +vn 0.465195 -0.848867 0.251035 +vn 0.338602 -0.623607 -0.704602 +vn 0.465196 -0.848867 -0.251034 +vn 0.121901 -0.223298 0.967098 +vn 0.121901 -0.223298 0.967098 +vn 0.126192 -0.227942 -0.965463 +vn 0.338600 -0.623605 -0.704604 +vn 0.340017 -0.622844 0.704594 +vn 0.340009 -0.622837 0.704605 +vn 0.463818 -0.849620 0.251035 +vn 0.463810 -0.849618 0.251058 +vn 0.463813 -0.849623 -0.251035 +vn 0.463815 -0.849615 -0.251057 +vn 0.121899 -0.223295 0.967099 +vn 0.121901 -0.223298 -0.967098 +vn 0.340013 -0.622835 -0.704605 +vn 0.121901 -0.223298 -0.967098 +vn 0.340014 -0.622846 -0.704594 +vn 0.340018 -0.622844 0.704594 +vn 0.340018 -0.622844 0.704594 +vn -0.367806 -0.404069 -0.837525 +vn 0.224141 0.911826 0.343997 +vn -0.233081 -0.948157 -0.216036 +vn 0.243737 -0.943531 -0.224368 +vn -0.241000 0.907108 0.345072 +vn 0.224139 0.911831 0.343985 +vn 0.211375 -0.945484 -0.247751 +vn -0.233064 -0.948158 -0.216049 +vn 0.289797 0.319035 0.902349 +vn -0.212906 -0.866120 -0.452225 +vn -0.208784 0.685889 0.697113 +vn -0.212892 -0.866094 -0.452281 +vn 0.197903 0.805084 0.559173 +vn 0.226422 -0.861843 -0.453829 +vn 0.197902 0.805097 0.559154 +vn -0.210345 0.800762 0.560834 +vn 0.103282 0.073515 0.991932 +vn -0.220443 -0.237415 -0.946065 +vn 0.125260 0.132684 0.983211 +vn 0.091154 0.055957 -0.994263 +vn -0.042995 -0.048526 -0.997896 +vn 0.150280 -0.708783 -0.689233 +vn -0.036697 -0.041267 0.998474 +vn 0.199264 -0.728029 -0.655948 +vn -0.180316 -0.733539 -0.655291 +vn 0.154512 0.628567 0.762253 +vn -0.180317 -0.733540 -0.655290 +vn 0.154510 0.628579 0.762243 +vn -0.162797 0.624630 0.763763 +vn -0.130843 -0.532277 -0.836398 +vn -0.130839 -0.532269 -0.836403 +vn 0.140477 -0.528390 -0.837299 +vn -0.096562 0.243960 0.964966 +vn -0.111103 0.416912 0.902131 +vn 0.103279 0.420161 0.901553 +vn 0.103279 0.420152 0.901557 +vn 0.118315 0.125261 -0.985044 +vn 0.400912 0.401826 -0.823289 +vn -0.225866 -0.293278 0.928963 +vn -0.214123 -0.230799 0.949149 +vn 0.283418 0.312326 -0.906712 +vn 0.037929 -0.274686 -0.960786 +vn -0.077471 -0.315161 -0.945871 +vn -0.077470 -0.315160 -0.945871 +vn -0.361913 -0.397469 0.843230 +vn 0.077982 -0.312852 -0.946595 +vn 0.043549 0.177163 0.983218 +vn -0.015593 -0.063437 -0.997864 +vn -0.046375 0.175712 0.983349 +vn -0.015593 -0.063437 -0.997864 +vn 0.043549 0.177162 0.983218 +vn 0.016604 -0.062911 -0.997881 +vn 0.041557 -0.272819 0.961167 +vn -0.013277 -0.054011 0.998452 +vn -0.013277 -0.054013 0.998452 +vn 0.429744 0.471082 -0.770326 +vn 0.014136 -0.053559 0.998465 +vn -0.501611 -0.571709 0.649258 +vn -0.098357 0.243003 -0.965026 +vn -0.507157 -0.549395 0.664046 +vn 0.041120 0.167281 -0.985051 +vn -0.652634 -0.722201 0.229117 +vn 0.041119 0.167281 -0.985051 +vn -0.043788 0.165909 -0.985168 +vn -0.649877 -0.723942 0.231448 +vn -0.599769 -0.656036 0.458142 +vn 0.614591 0.638170 -0.463698 +vn -0.075291 -0.306293 0.948955 +vn -0.075291 -0.306293 0.948955 +vn 0.554659 0.606945 -0.569185 +vn -0.108875 0.407995 -0.906469 +vn 0.075450 -0.304056 0.949662 +vn 0.101076 0.411194 -0.905927 +vn 0.157278 -0.706207 0.690315 +vn 0.137990 -0.519859 0.843034 +vn -0.128727 -0.523669 0.842140 +vn -0.128728 -0.523680 0.842133 +vn 0.101074 0.411188 -0.905930 +vn 0.629560 0.691562 -0.354112 +vn -0.178691 -0.726931 0.663054 +vn -0.178692 -0.726930 0.663055 +vn 0.197850 -0.721396 0.663659 +vn 0.152585 0.620744 -0.769022 +vn 0.216671 -0.944186 0.248124 +vn -0.232820 -0.947097 0.220913 +vn 0.243462 -0.942465 0.229099 +vn -0.209958 0.685396 -0.697245 +vn -0.232810 -0.947098 0.220920 +vn 0.152584 0.620743 -0.769023 +vn -0.212357 -0.863891 0.456725 +vn -0.160859 0.616800 -0.770508 +vn 0.225999 -0.859607 0.458259 +vn -0.212357 -0.863885 0.456736 +vn 0.690578 0.723194 -0.009589 +vn 0.671027 0.732596 -0.114128 +vn 0.196516 0.799459 -0.567668 +vn -0.208756 0.795157 -0.569338 +vn 0.196512 0.799452 -0.567679 +vn 0.671613 0.733451 0.104815 +vn 0.223362 0.908665 -0.352758 +vn 0.223360 0.908663 -0.352763 +vn -0.240068 0.903950 -0.353895 +vn -0.272094 0.928802 -0.251578 +vn 0.620289 0.645044 0.446274 +vn 0.631738 0.694010 0.345337 +vn 0.237158 0.964792 -0.113718 +vn -0.253524 0.960567 -0.114173 +vn 0.237159 0.964792 -0.113716 +vn -0.650626 -0.724749 -0.226771 +vn -0.653370 -0.723015 -0.224404 +vn 0.558626 0.611195 0.560694 +vn -0.504734 -0.582263 -0.637349 +vn 0.237403 0.965778 0.104461 +vn -0.271561 0.928966 0.251549 +vn -0.601529 -0.657627 -0.453530 +vn 0.237401 0.965780 0.104452 +vn -0.253785 0.961554 0.104917 +vn 0.410940 0.415373 0.811537 +vn -0.511353 -0.554721 -0.656355 +vn 0.435045 0.477152 0.763585 +vn -0.235577 -0.311170 -0.920694 +vn 0.125808 0.000000 0.992055 +vn 0.116118 0.048708 0.992040 +vn -0.332098 -0.137172 0.933217 +vn -0.323531 -0.134375 0.936628 +vn -0.350267 0.000000 0.936650 +vn 0.524384 -0.217099 -0.823340 +vn 0.519324 -0.214477 -0.827226 +vn -0.350267 0.000000 0.936650 +vn -0.898402 -0.371563 0.234124 +vn -0.697897 -0.289660 0.655009 +vn -0.973761 0.000000 0.227571 +vn -0.899643 -0.372631 0.227570 +vn -0.757073 0.000000 0.653330 +vn -0.973761 0.000000 0.227571 +vn 0.818084 -0.338275 -0.465090 +vn -0.757073 0.000000 0.653330 +vn -0.699336 -0.290064 0.653293 +vn 0.821543 -0.340383 -0.457391 +vn 0.923657 -0.383098 -0.009630 +vn 0.923654 -0.383113 -0.009409 +vn 0.826054 -0.342287 0.447743 +vn 0.829951 -0.343231 0.439743 +vn 0.539733 -0.222919 0.811785 +vn 0.534843 -0.221386 0.815433 +vn 0.119138 -0.049716 0.991632 +vn 0.116118 -0.048708 0.992040 +vn -0.332099 0.137172 0.933217 +vn -0.323531 0.134375 0.936628 +vn -0.697896 0.289660 0.655010 +vn -0.899840 0.372143 0.227592 +vn -0.699336 0.290063 0.653294 +vn -0.899442 -0.371998 -0.229394 +vn -0.974878 0.000000 -0.222741 +vn -0.900675 -0.373058 -0.222738 +vn -0.898202 0.372034 0.234147 +vn -0.974878 -0.000000 -0.222741 +vn -0.706875 -0.293135 -0.643739 +vn -0.767068 -0.000000 -0.641566 +vn -0.708514 -0.294054 -0.641514 +vn -0.767068 0.000000 -0.641566 +vn -0.349062 -0.145013 -0.925812 +vn -0.369012 -0.000000 -0.929425 +vn -0.340999 -0.140880 -0.929448 +vn -0.369012 0.000000 -0.929425 +vn 0.097996 0.041001 -0.994342 +vn 0.100340 0.042168 -0.994059 +vn 0.106152 0.000000 -0.994350 +vn 0.106152 0.000000 -0.994350 +vn 0.561948 0.000000 -0.827172 +vn 0.524384 0.217098 -0.823341 +vn 0.519324 0.214477 -0.827226 +vn 0.561949 0.000000 -0.827172 +vn 0.889262 0.000000 -0.457398 +vn 0.818085 0.338275 -0.465089 +vn 0.889262 0.000000 -0.457398 +vn 0.821543 0.340383 -0.457390 +vn 0.923657 0.383098 -0.009630 +vn -0.899442 0.371997 -0.229396 +vn -0.900675 0.373058 -0.222737 +vn 0.923654 0.383113 -0.009410 +vn 0.999956 0.000000 -0.009410 +vn 0.999956 0.000000 -0.009410 +vn 0.826054 0.342287 0.447744 +vn 0.829951 0.343231 0.439743 +vn -0.706875 0.293135 -0.643738 +vn 0.898143 0.000000 0.439704 +vn -0.708514 0.294053 -0.641515 +vn 0.898143 0.000000 0.439704 +vn 0.539733 0.222919 0.811785 +vn 0.578870 0.000000 0.815420 +vn -0.349062 0.145013 -0.925812 +vn 0.578870 0.000000 0.815420 +vn -0.340999 0.140880 -0.929447 +vn 0.534843 0.221386 0.815433 +vn 0.119138 0.049716 0.991632 +vn 0.125808 0.000000 0.992055 +vn 0.100340 -0.042168 -0.994059 +vn 0.097996 -0.041001 -0.994342 +vn 0.620289 -0.645045 0.446272 +vn 0.224140 -0.911829 0.343990 +vn 0.224138 -0.911827 0.343997 +vn -0.650621 0.724753 -0.226774 +vn -0.233076 0.948156 -0.216045 +vn -0.653373 0.723013 -0.224400 +vn 0.631737 -0.694009 0.345341 +vn -0.233070 0.948159 -0.216040 +vn -0.096562 -0.243960 0.964966 +vn -0.111103 -0.416912 0.902131 +vn -0.504734 0.582266 -0.637347 +vn 0.197907 -0.805102 0.559146 +vn -0.601519 0.657623 -0.453549 +vn 0.558629 -0.611198 0.560688 +vn -0.212901 0.866109 -0.452249 +vn -0.212901 0.866092 -0.452280 +vn 0.197901 -0.805090 0.559165 +vn 0.037930 0.274686 -0.960786 +vn 0.077981 0.312850 -0.946596 +vn -0.046376 -0.175712 0.983348 +vn 0.016604 0.062910 -0.997881 +vn 0.041558 0.272819 0.961167 +vn -0.180315 0.733541 -0.655289 +vn 0.014136 0.053559 0.998465 +vn -0.511354 0.554720 -0.656356 +vn 0.410940 -0.415373 0.811538 +vn -0.180317 0.733539 -0.655291 +vn 0.154508 -0.628567 0.762254 +vn 0.154515 -0.628577 0.762244 +vn -0.235577 0.311169 -0.920694 +vn 0.435045 -0.477152 0.763585 +vn -0.130840 0.532280 -0.836396 +vn -0.130839 0.532269 -0.836404 +vn -0.367806 0.404068 -0.837524 +vn 0.103281 -0.420160 0.901553 +vn 0.103277 -0.420153 0.901557 +vn 0.289798 -0.319035 0.902349 +vn -0.098356 -0.243002 -0.965026 +vn -0.043789 -0.165911 -0.985168 +vn 0.075449 0.304054 0.949662 +vn -0.108874 -0.407990 -0.906471 +vn 0.157277 0.706208 0.690314 +vn 0.137989 0.519859 0.843034 +vn -0.077470 0.315161 -0.945871 +vn -0.220443 0.237415 -0.946065 +vn -0.077470 0.315160 -0.945871 +vn 0.103282 -0.073515 0.991932 +vn 0.043549 -0.177163 0.983218 +vn 0.091154 -0.055957 -0.994263 +vn 0.043549 -0.177162 0.983218 +vn -0.015593 0.063436 -0.997864 +vn 0.125260 -0.132684 0.983212 +vn -0.015594 0.063437 -0.997864 +vn -0.042995 0.048526 -0.997896 +vn -0.013277 0.054013 0.998452 +vn -0.013277 0.054011 0.998452 +vn -0.209959 -0.685396 -0.697244 +vn -0.036696 0.041267 0.998474 +vn -0.160860 -0.616800 -0.770508 +vn 0.197852 0.721398 0.663656 +vn 0.118315 -0.125261 -0.985044 +vn 0.243455 0.942465 0.229104 +vn 0.041120 -0.167283 -0.985051 +vn 0.041120 -0.167282 -0.985051 +vn 0.216675 0.944186 0.248122 +vn 0.226002 0.859614 0.458243 +vn -0.225867 0.293279 0.928963 +vn -0.075293 0.306294 0.948955 +vn -0.075289 0.306291 0.948956 +vn -0.208757 -0.795162 -0.569331 +vn -0.214124 0.230800 0.949148 +vn 0.101074 -0.411183 -0.905932 +vn 0.400913 -0.401827 -0.823288 +vn 0.101074 -0.411189 -0.905929 +vn -0.128728 0.523680 0.842133 +vn -0.128722 0.523666 0.842143 +vn 0.283415 -0.312323 -0.906714 +vn -0.361911 0.397467 0.843232 +vn -0.240066 -0.903948 -0.353903 +vn -0.501611 0.571707 0.649259 +vn -0.178693 0.726932 0.663052 +vn -0.272094 -0.928801 -0.251581 +vn -0.178690 0.726931 0.663054 +vn 0.152586 -0.620744 -0.769022 +vn -0.507157 0.549395 0.664046 +vn -0.649877 0.723942 0.231448 +vn 0.152585 -0.620747 -0.769020 +vn -0.232815 0.947097 0.220917 +vn -0.652637 0.722199 0.229114 +vn -0.232816 0.947097 0.220918 +vn 0.429746 -0.471084 -0.770324 +vn -0.212362 0.863892 0.456720 +vn -0.212358 0.863882 0.456740 +vn -0.599765 0.656032 0.458153 +vn -0.253524 -0.960568 -0.114170 +vn 0.614591 -0.638170 -0.463699 +vn 0.554659 -0.606945 -0.569185 +vn 0.196516 -0.799459 -0.567668 +vn 0.196516 -0.799456 -0.567672 +vn -0.271560 -0.928966 0.251552 +vn -0.253784 -0.961553 0.104924 +vn 0.629559 -0.691560 -0.354118 +vn 0.223360 -0.908662 -0.352765 +vn 0.223360 -0.908660 -0.352770 +vn -0.241000 -0.907108 0.345072 +vn 0.690579 -0.723194 -0.009589 +vn 0.671028 -0.732596 -0.114127 +vn 0.237159 -0.964792 -0.113716 +vn 0.237158 -0.964793 -0.113715 +vn 0.211377 0.945484 -0.247748 +vn 0.243731 0.943532 -0.224371 +vn -0.208785 -0.685889 0.697112 +vn -0.210346 -0.800767 0.560826 +vn 0.237402 -0.965779 0.104459 +vn 0.671613 -0.733450 0.104818 +vn 0.226423 0.861842 -0.453829 +vn 0.237401 -0.965778 0.104465 +vn 0.150280 0.708784 -0.689232 +vn 0.199266 0.728030 -0.655946 +vn -0.162798 -0.624630 0.763763 +vn 0.140478 0.528394 -0.837297 +vn 0.463815 0.849615 0.251059 +vn 0.463815 0.849615 0.251059 +vn 0.463815 0.849615 -0.251058 +vn 0.463815 0.849615 -0.251059 +vn 0.126190 0.227940 0.965464 +vn 0.121902 0.223300 0.967097 +vn 0.121901 0.223298 -0.967098 +vn 0.121899 0.223294 -0.967099 +vn 0.340018 0.622844 -0.704594 +vn 0.340018 0.622844 -0.704594 +vn 0.338603 0.623609 0.704599 +vn 0.340012 0.622834 0.704606 +vn 0.338599 0.623605 0.704605 +vn 0.340014 0.622846 0.704594 +vn 0.463046 0.848219 0.257126 +vn 0.463046 0.848219 -0.257125 +vn 0.463813 0.849623 0.251035 +vn 0.463815 0.849615 0.251059 +vn 0.465195 0.848867 0.251035 +vn 0.338602 0.623607 -0.704601 +vn 0.463810 0.849618 -0.251058 +vn 0.465196 0.848867 -0.251034 +vn 0.463818 0.849620 -0.251035 +vn 0.126192 0.227942 -0.965463 +vn 0.121902 0.223300 -0.967097 +vn 0.340018 0.622844 -0.704594 +vn 0.338599 0.623605 -0.704605 +vn 0.340009 0.622836 -0.704606 +vn 0.341425 0.622069 0.704599 +vn 0.123484 0.229416 0.965464 +vn 0.461707 0.848955 0.257104 +vn 0.341429 0.622073 0.704594 +vn 0.463810 0.849618 0.251058 +vn 0.461707 0.848955 -0.257103 +vn 0.463810 0.849618 -0.251057 +vn 0.121899 0.223294 0.967099 +vn 0.123485 0.229418 -0.965463 +vn 0.341423 0.622068 -0.704600 +vn 0.341429 0.622073 -0.704594 +vn 0.340018 0.622844 0.704595 +vn 0.340018 0.622845 0.704594 +vn 0.463815 0.849615 0.251058 +vn 0.463815 0.849615 0.251059 +vn 0.463815 0.849615 -0.251059 +vn 0.463815 0.849615 -0.251057 +vn 0.121901 0.223298 0.967098 +vn 0.121899 0.223294 0.967099 +vn 0.121899 0.223294 -0.967099 +vn 0.340018 0.622844 -0.704594 +vn 0.340018 0.622844 -0.704594 +vn 0.340018 0.622845 0.704594 +vn 0.340018 0.622844 0.704594 +vn -0.008287 0.255964 -0.966651 +vn 0.104826 0.239528 -0.965214 +vn 0.134657 0.698645 -0.702683 +vn 0.134661 0.698648 -0.702679 +vn 0.271091 0.657571 -0.702930 +vn -0.001213 -0.262395 -0.964960 +vn 0.004129 -0.255633 -0.966765 +vn -0.101227 -0.241463 -0.965116 +vn 0.048393 0.251073 -0.966758 +vn 0.048392 0.251072 -0.966758 +vn 0.098846 0.235783 -0.966766 +vn 0.018046 -0.710918 -0.703044 +vn 0.017196 -0.711560 -0.702415 +vn -0.280198 -0.653662 -0.703005 +vn -0.048393 -0.251074 -0.966758 +vn -0.048392 -0.251072 -0.966758 +vn -0.093469 -0.237452 -0.966892 +vn 0.015612 -0.966591 -0.255847 +vn 0.009276 -0.968210 -0.249967 +vn -0.368024 -0.893973 -0.255678 +vn -0.134657 -0.698644 -0.702683 +vn -0.281217 -0.653900 -0.702376 +vn -0.134660 -0.698646 -0.702681 +vn 0.009393 -0.966715 0.255684 +vn 0.015637 -0.968167 0.249815 +vn -0.373754 -0.891545 0.255842 +vn -0.374364 -0.893000 -0.249805 +vn -0.183262 -0.950802 -0.249782 +vn -0.183259 -0.950802 -0.249784 +vn 0.017172 -0.710982 0.703001 +vn 0.018034 -0.711585 0.702369 +vn -0.280983 -0.653282 0.703044 +vn -0.183262 -0.950801 0.249785 +vn -0.368471 -0.895405 0.249959 +vn -0.183259 -0.950802 0.249783 +vn -0.004229 0.261786 0.965117 +vn 0.004229 -0.261785 0.965117 +vn -0.001482 -0.255179 0.966893 +vn -0.280438 -0.654185 0.702422 +vn -0.134657 -0.698646 0.702681 +vn -0.134660 -0.698644 0.702683 +vn -0.007258 0.711652 0.702494 +vn -0.008285 0.255964 0.966651 +vn -0.048393 -0.251072 0.966758 +vn -0.093471 -0.237452 0.966892 +vn -0.101226 -0.241461 0.965117 +vn -0.048392 -0.251074 0.966757 +vn -0.007630 0.711232 0.702916 +vn -0.019403 0.968287 0.249084 +vn 0.104823 0.239526 0.965215 +vn 0.048392 0.251073 0.966758 +vn 0.098846 0.235783 0.966766 +vn 0.048393 0.251071 0.966758 +vn 0.271591 0.657805 0.702517 +vn 0.183230 0.950645 0.250400 +vn 0.134658 0.698649 0.702679 +vn 0.134661 0.698644 0.702683 +vn 0.271090 0.657571 0.702930 +vn 0.183233 0.950646 0.250395 +vn 0.377901 0.891708 0.249093 +vn -0.015259 0.966599 0.255838 +vn 0.373438 0.891681 0.255831 +vn -0.019274 0.966501 -0.255938 +vn -0.015287 0.968328 -0.249213 +vn -0.007260 0.711651 -0.702496 +vn -0.007630 0.711232 -0.702916 +vn 0.183230 0.950646 -0.250399 +vn 0.374104 0.893272 -0.249222 +vn 0.271590 0.657804 -0.702519 +vn 0.377119 0.890102 -0.255930 +vn 0.183233 0.950646 -0.250394 +vn -0.004229 0.261789 -0.965116 +vn -0.072163 0.603949 -0.793750 +vn -0.107146 0.896828 0.429208 +vn -0.072143 0.603954 -0.793748 +vn -0.072136 0.603952 -0.793750 +vn -0.068787 0.594740 0.800970 +vn -0.020585 0.172345 -0.984822 +vn -0.050276 0.420920 -0.905704 +vn -0.071127 0.595444 0.800242 +vn -0.050276 0.420920 -0.905704 +vn -0.020659 0.172348 -0.984820 +vn -0.020593 0.172344 -0.984822 +vn -0.107117 0.896824 0.429224 +vn -0.050269 0.420929 -0.905700 +vn -0.050345 0.420920 -0.905700 +vn -0.107117 0.896824 0.429224 +vn -0.050293 0.420918 -0.905704 +vn -0.096751 0.809959 0.578451 +vn -0.096751 0.809959 0.578451 +vn 0.060389 0.818215 0.571731 +vn -0.094440 0.809909 0.578902 +vn -0.096735 0.809961 0.578451 +vn -0.116612 0.976308 0.182274 +vn -0.116614 0.976308 0.182272 +vn -0.107115 0.896824 0.429224 +vn -0.107128 0.896830 0.429208 +vn -0.114673 0.959554 -0.257111 +vn -0.116642 0.976305 0.182272 +vn -0.116642 0.976305 0.182272 +vn -0.107167 0.896825 0.429208 +vn -0.107109 0.896825 0.429224 +vn -0.116611 0.976309 0.182272 +vn -0.116611 0.976309 0.182272 +vn -0.107110 0.896824 0.429224 +vn -0.106611 0.896680 0.429649 +vn -0.724905 0.487089 -0.487090 +vn -0.094095 0.787365 -0.609264 +vn -0.116609 0.976309 0.182272 +vn -0.116609 0.976309 0.182272 +vn -0.160572 0.953023 -0.256834 +vn -0.116121 0.972197 -0.203346 +vn -0.313792 0.245745 0.917139 +vn -0.116665 0.976304 0.182264 +vn -0.116602 0.976310 0.182272 +vn -0.054500 0.456196 0.888209 +vn -0.013041 0.109176 0.993937 +vn -0.013038 0.109176 0.993937 +vn -0.116151 0.972193 -0.203346 +vn -0.067571 0.217274 0.973769 +vn -0.116151 0.972193 -0.203346 +vn -0.762776 0.457260 0.457259 +vn -0.075717 0.633799 0.769783 +vn -0.105999 0.887450 -0.448550 +vn -0.037786 0.316337 0.947894 +vn -0.072152 0.603958 -0.793744 +vn -0.037737 0.316343 0.947894 +vn -0.037779 0.316338 0.947894 +vn -0.037779 0.316338 0.947894 +vn -0.106024 0.887436 -0.448572 +vn -0.105984 0.887451 -0.448550 +vn -0.054489 0.456197 0.888209 +vn -0.116119 0.972197 -0.203346 +vn -0.054494 0.456210 0.888202 +vn -0.116119 0.972197 -0.203346 +vn -0.116617 0.976304 0.182295 +vn -0.116628 0.976308 0.182264 +vn -0.116143 0.976364 0.182274 +vn -0.116127 0.972196 -0.203346 +vn -0.096794 0.809954 0.578451 +vn -0.116603 0.976309 0.182274 +vn -0.054443 0.456216 0.888202 +vn -0.054483 0.456211 0.888202 +vn -0.105996 0.887439 -0.448572 +vn -0.054483 0.456211 0.888202 +vn -0.105996 0.887439 -0.448572 +vn -0.965083 0.253018 0.067796 +vn -0.020586 0.172344 -0.984822 +vn -0.107176 0.896826 0.429204 +vn -0.389564 0.238374 -0.889617 +vn -0.050285 0.420918 -0.905704 +vn -0.094045 0.787371 -0.609264 +vn -0.075703 0.633801 0.769783 +vn -0.094045 0.787371 -0.609264 +vn -0.075702 0.633801 0.769783 +vn -0.116118 0.972197 -0.203346 +vn -0.116118 0.972197 -0.203346 +vn -0.075692 0.633802 0.769783 +vn -0.075692 0.633802 0.769783 +vn -0.094079 0.787367 -0.609264 +vn -0.075701 0.633801 0.769783 +vn -0.094033 0.787379 -0.609255 +vn 0.068670 0.606185 0.792353 +vn -0.096743 0.809960 0.578451 +vn -0.096743 0.809960 0.578451 +vn -0.116111 0.972198 -0.203346 +vn -0.116136 0.972195 -0.203346 +vn -0.116136 0.972195 -0.203346 +vn -0.116111 0.972198 -0.203346 +vn -0.105995 0.887450 -0.448550 +vn -0.106006 0.887438 -0.448572 +vn -0.096730 0.809961 0.578451 +vn -0.094029 0.787367 -0.609271 +vn -0.096730 0.809961 0.578451 +vn -0.094045 0.787378 -0.609255 +vn -0.094045 0.787378 -0.609255 +vn -0.094053 0.787377 -0.609255 +vn -0.094036 0.787366 -0.609271 +vn 0.063995 0.779402 -0.623247 +vn -0.105989 0.887451 -0.448550 +vn -0.107121 0.896833 0.429204 +vn -0.106012 0.887448 -0.448550 +vn -0.107119 0.896831 0.429208 +vn -0.105989 0.887451 -0.448550 +vn -0.072138 0.603959 -0.793744 +vn -0.096742 0.809960 0.578451 +vn -0.096742 0.809960 0.578451 +vn -0.072138 0.603959 -0.793744 +vn -0.107103 0.896825 0.429224 +vn 0.066909 0.473353 -0.878328 +vn -0.072128 0.603960 -0.793744 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.992944 0.118584 0.000000 +vn -0.992943 0.118593 -0.000012 +vn -0.992944 0.118584 0.000021 +vn -0.992941 0.118609 -0.000028 +vn -0.992943 0.118593 0.000033 +vn -0.992943 0.118593 0.000033 +vn -0.992941 0.118609 -0.000028 +vn -0.992944 0.118584 0.000021 +vn -0.992944 0.118584 0.000000 +vn -0.992943 0.118593 -0.000012 +vn 0.951061 0.000000 -0.309005 +vn 0.951061 0.000000 -0.309005 +vn 0.587778 0.000000 -0.809022 +vn 0.587778 0.000000 -0.809022 +vn -0.545125 0.004907 -0.838340 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.414720 0.000000 -0.909949 +vn -0.414720 0.000000 -0.909949 +vn -0.587762 0.007455 -0.809000 +vn -0.554146 0.000078 -0.832420 +vn -0.531364 -0.000000 -0.847143 +vn -0.682827 0.001833 -0.730578 +vn -0.528110 -0.004246 -0.849165 +vn -0.586911 -0.000087 -0.809652 +vn -0.623915 -0.005045 -0.781476 +vn -0.587762 -0.007348 -0.809000 +vn -0.951033 0.007683 -0.308996 +vn -0.912705 -0.001988 -0.408614 +vn -0.984686 0.000476 -0.174337 +vn -0.989809 0.000000 -0.142402 +vn -0.951031 -0.007949 -0.308995 +vn -0.982422 0.000000 -0.186673 +vn -0.857692 -0.001577 -0.514162 +vn -0.875848 0.000594 -0.482587 +vn -0.987624 0.000000 -0.156840 +vn -0.897445 -0.000375 -0.441126 +vn -0.733927 -0.000577 -0.679228 +vn -0.698811 0.000387 -0.715306 +vn -0.774443 0.001136 -0.632642 +vn 0.770594 -0.008580 -0.637269 +vn 0.850136 0.000140 -0.526563 +vn 0.824092 -0.000095 -0.566456 +vn 0.814138 -0.002443 0.580666 +vn 0.686671 0.000000 -0.726968 +vn 0.807442 0.005574 -0.589921 +vn 0.810716 0.000000 -0.585439 +vn 0.876768 -0.007467 0.480855 +vn 0.686671 0.000000 -0.726968 +vn 0.810731 0.000000 0.585419 +vn 0.770594 0.008580 -0.637269 +vn 0.289092 0.000000 -0.957301 +vn 0.758707 0.000000 0.651432 +vn 0.289092 0.000000 -0.957301 +vn 0.758707 0.000000 0.651432 +vn 0.894349 0.000459 0.447369 +vn 0.970123 0.000449 0.242615 +vn 0.999967 0.000219 0.008137 +vn 0.976113 0.000205 -0.217261 +vn 0.914033 0.000299 -0.405639 +vn 0.803090 0.001933 0.595854 +vn 0.880831 0.000220 -0.473430 +vn 0.957422 -0.000283 -0.288692 +vn 0.980677 -0.001774 0.195624 +vn 0.894398 -0.000458 -0.447272 +vn 0.970170 -0.000445 -0.242424 +vn 0.885974 -0.009071 0.463647 +vn 0.999966 -0.000218 -0.008207 +vn 0.976127 -0.000207 0.217201 +vn 0.914141 -0.000302 0.405397 +vn 0.957361 0.000298 0.288894 +vn 0.998670 -0.000317 0.051565 +vn 0.913739 0.001051 -0.406301 +vn 0.850164 -0.000141 0.526518 +vn 0.824016 0.000095 0.566567 +vn 0.842093 0.004349 0.539314 +vn 0.911851 0.005052 0.410491 +vn 0.885972 0.009308 0.463646 +vn 0.994503 -0.009859 -0.104240 +vn 0.980340 -0.002797 -0.197295 +vn 0.998645 0.004855 -0.051816 +vn 0.843359 -0.002883 -0.537342 +vn 0.785558 -0.007390 -0.618743 +vn 0.994509 0.009302 -0.104241 +vn 0.965927 0.000000 -0.258815 +vn 0.707105 0.000000 -0.707109 +vn 0.965927 0.000000 -0.258815 +vn 0.258818 0.000000 -0.965926 +vn 0.707105 0.000000 -0.707109 +vn 0.258818 0.000000 -0.965926 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.965927 0.000000 0.258814 +vn -0.707075 0.000000 0.707139 +vn -0.965927 0.000000 0.258814 +vn -0.258841 0.000000 0.965920 +vn -0.707075 0.000000 0.707139 +vn -0.258841 0.000000 0.965920 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.000000 -1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.115487 0.959456 0.257111 +vn 0.051425 0.436044 0.898455 +vn 0.017248 0.149929 0.988546 +vn 0.017844 0.149388 0.988618 +vn 0.032099 0.258551 0.965464 +vn 0.084770 0.721960 0.686722 +vn 0.084785 0.704523 0.704599 +vn 0.050549 0.435736 0.898654 +vn 0.051708 0.435598 0.898655 +vn 0.086425 0.721556 0.686940 +vn 0.082847 0.721980 0.686936 +vn -0.029754 0.951357 0.306649 +vn 0.098966 0.857544 0.504801 +vn 0.102374 0.857142 0.504804 +vn 0.112856 0.944081 0.309797 +vn 0.109522 0.990244 -0.086148 +vn 0.115808 0.959418 -0.257112 +vn 0.117495 0.989330 -0.086151 +vn -0.242230 0.887129 -0.392845 +vn 0.100355 0.914638 -0.391620 +vn 0.109178 0.913620 -0.391635 +vn 0.085315 0.704460 -0.704597 +vn 0.096875 0.811434 -0.576359 +vn 0.096081 0.811529 -0.576359 +vn -0.003513 0.614803 -0.788673 +vn 0.074710 0.626099 -0.776156 +vn 0.073980 0.626186 -0.776156 +vn 0.025371 0.212409 -0.976852 +vn 0.025248 0.212488 -0.976837 +vn 0.031628 0.258607 -0.965465 +vn 0.053842 0.451881 -0.890452 +vn 0.053994 0.451863 -0.890452 +vn 0.115488 -0.959456 -0.257112 +vn 0.031632 -0.258607 0.965465 +vn 0.025332 -0.212086 0.976923 +vn 0.025255 -0.212136 0.976914 +vn -0.003996 -0.614422 0.788967 +vn 0.053856 -0.451582 0.890603 +vn 0.053960 -0.451570 0.890603 +vn 0.085316 -0.704459 0.704598 +vn 0.074258 -0.625971 0.776303 +vn 0.074689 -0.625920 0.776303 +vn -0.242136 -0.886990 0.393216 +vn 0.096859 -0.811302 0.576548 +vn 0.096337 -0.811364 0.576548 +vn 0.115807 -0.959418 0.257111 +vn 0.109168 -0.913537 0.391833 +vn 0.101404 -0.914436 0.391821 +vn -0.925166 -0.379187 -0.016876 +vn 0.109621 -0.982879 0.148094 +vn 0.118363 -0.990948 -0.063350 +vn 0.117294 -0.981992 0.148098 +vn -0.032160 -0.951299 -0.306589 +vn 0.112854 -0.944063 -0.309854 +vn 0.102354 -0.856974 -0.505094 +vn 0.098892 -0.857381 -0.505092 +vn 0.084780 -0.704524 -0.704598 +vn 0.084649 -0.721447 -0.687276 +vn 0.086370 -0.721035 -0.687494 +vn 0.082726 -0.721466 -0.687490 +vn 0.017819 -0.149180 -0.988650 +vn 0.032100 -0.258551 -0.965464 +vn 0.051271 -0.435505 -0.898725 +vn 0.017147 -0.149789 -0.988569 +vn 0.051647 -0.435065 -0.898917 +vn 0.050434 -0.435209 -0.898916 +vn 0.107814 0.872634 0.476326 +vn 0.207213 0.843266 0.495949 +vn 0.108293 0.906644 0.407762 +vn 0.117008 0.979289 0.165236 +vn 0.116953 0.979297 0.165227 +vn 0.116960 0.979296 0.165227 +vn 0.116960 0.979296 0.165227 +vn 0.116965 0.979295 0.165227 +vn 0.117004 0.979289 0.165236 +vn 0.116982 0.979290 0.165245 +vn 0.116947 0.979296 0.165236 +vn 0.117006 0.979287 0.165245 +vn 0.116984 0.979240 0.165540 +vn 0.115793 0.969273 -0.217031 +vn 0.120501 0.978865 0.165235 +vn 0.116970 0.979293 0.165236 +vn 0.084982 0.962667 -0.257002 +vn 0.115777 0.969285 -0.216986 +vn 0.115812 0.969281 -0.216986 +vn 0.115812 0.969280 -0.216986 +vn 0.104732 0.884090 -0.455429 +vn 0.105621 0.883984 -0.455430 +vn 0.105621 0.883984 -0.455430 +vn 0.115765 0.969286 -0.216986 +vn 0.115765 0.969286 -0.216986 +vn 0.105545 0.883993 -0.455430 +vn 0.105580 0.884007 -0.455396 +vn 0.115769 0.969286 -0.216986 +vn 0.115769 0.969286 -0.216986 +vn 0.105582 0.883989 -0.455430 +vn 0.105619 0.884002 -0.455396 +vn -0.024645 0.264919 0.963956 +vn 0.016712 0.139916 0.990022 +vn 0.115811 0.969281 -0.216986 +vn 0.016758 0.139911 0.990022 +vn 0.115752 0.969288 -0.216986 +vn 0.116059 0.969241 -0.217031 +vn 0.115752 0.969288 -0.216986 +vn 0.306391 0.689179 -0.656626 +vn 0.046090 0.385219 0.921674 +vn 0.105566 0.883991 -0.455430 +vn 0.092163 0.771763 -0.629196 +vn 0.043510 0.385525 0.921671 +vn 0.105874 0.883954 -0.455430 +vn 0.105566 0.883991 -0.455430 +vn 0.032567 0.709800 -0.703650 +vn 0.060891 0.507058 0.859759 +vn 0.124612 0.365612 0.922388 +vn 0.095605 0.771427 -0.629094 +vn 0.046005 0.385219 0.921678 +vn 0.092221 0.771841 -0.629092 +vn 0.060560 0.507097 0.859759 +vn 0.062511 0.506864 0.859757 +vn 0.060560 0.507097 0.859759 +vn 0.092177 0.771842 -0.629098 +vn 0.040940 0.709085 0.703933 +vn 0.092155 0.771845 -0.629098 +vn 0.092780 0.771689 -0.629196 +vn 0.092218 0.771837 -0.629098 +vn 0.069821 0.667362 0.741453 +vn 0.092184 0.771845 -0.629092 +vn 0.070475 0.573360 -0.816267 +vn 0.079565 0.666231 0.741489 +vn 0.268341 0.386145 -0.882544 +vn 0.079565 0.666231 0.741489 +vn 0.068502 0.573597 -0.816268 +vn 0.069156 0.573294 -0.816426 +vn 0.068502 0.573597 -0.816268 +vn 0.079570 0.666230 0.741489 +vn 0.068506 0.573596 -0.816268 +vn 0.081450 0.665671 0.741787 +vn 0.021566 0.180549 -0.983329 +vn -0.016540 0.264062 -0.964364 +vn 0.021576 0.180548 -0.983329 +vn 0.048840 0.422950 -0.904836 +vn 0.100427 0.828743 0.550545 +vn 0.050500 0.422748 -0.904839 +vn 0.050487 0.422754 -0.904837 +vn 0.098995 0.828925 0.550531 +vn 0.099040 0.828909 0.550545 +vn 0.081812 0.665252 0.742123 +vn 0.079534 0.665901 0.741788 +vn 0.099000 0.828915 0.550545 +vn 0.098970 0.828928 0.550531 +vn 0.063276 0.964398 0.256774 +vn 0.106349 0.906872 0.407766 +vn 0.101360 0.828640 0.550529 +vn 0.099005 0.828923 0.550531 +vn 0.099037 0.828910 0.550545 +vn 0.108327 0.906631 0.407782 +vn 0.108276 0.906644 0.407767 +vn 0.108249 0.906646 0.407767 +vn 0.108282 0.906636 0.407782 +vn 0.108324 0.906638 0.407767 +vn 0.108324 0.906638 0.407767 +vn 0.108303 0.906640 0.407767 +vn 0.116972 0.979293 0.165236 +vn -0.007628 -0.711234 0.702914 +vn 0.134661 -0.698646 0.702680 +vn -0.096402 0.244047 0.964960 +vn -0.098847 0.235787 0.966765 +vn 0.373437 -0.891681 0.255832 +vn -0.004229 -0.261786 0.965117 +vn 0.048393 -0.251070 0.966759 +vn 0.048392 -0.251071 0.966758 +vn -0.008287 -0.255962 0.966651 +vn -0.280985 0.653280 0.703046 +vn -0.280438 0.654186 0.702421 +vn -0.001212 0.262394 0.964960 +vn 0.004129 0.255632 0.966765 +vn -0.048392 0.251073 0.966758 +vn -0.048393 0.251071 0.966758 +vn -0.373755 0.891546 0.255839 +vn -0.368474 0.895404 0.249959 +vn 0.018049 0.710917 0.703044 +vn -0.134660 0.698644 0.702683 +vn -0.134657 0.698647 0.702681 +vn 0.017198 0.711560 0.702414 +vn -0.368027 0.893972 -0.255676 +vn -0.374364 0.893000 -0.249805 +vn 0.015615 0.966591 0.255847 +vn -0.183259 0.950802 0.249782 +vn -0.183262 0.950801 0.249785 +vn 0.009279 0.968210 0.249968 +vn -0.280201 0.653661 -0.703004 +vn -0.281219 0.653899 -0.702376 +vn 0.009396 0.966715 -0.255684 +vn 0.015641 0.968167 -0.249814 +vn -0.183262 0.950802 -0.249782 +vn -0.183259 0.950802 -0.249785 +vn -0.101226 0.241462 -0.965116 +vn -0.093471 0.237452 -0.966892 +vn -0.134660 0.698646 -0.702681 +vn 0.017173 0.710981 -0.703002 +vn 0.018036 0.711585 -0.702368 +vn -0.134657 0.698644 -0.702683 +vn 0.104825 -0.239528 -0.965214 +vn 0.098845 -0.235783 -0.966766 +vn -0.004229 -0.261786 -0.965117 +vn -0.048393 0.251074 -0.966757 +vn 0.004229 0.261786 -0.965117 +vn -0.001482 0.255180 -0.966892 +vn -0.048392 0.251073 -0.966758 +vn 0.271590 -0.657805 -0.702518 +vn 0.377900 -0.891708 -0.249096 +vn 0.271091 -0.657571 -0.702930 +vn -0.007259 -0.711651 -0.702495 +vn 0.048392 -0.251071 -0.966758 +vn 0.048393 -0.251072 -0.966758 +vn -0.008286 -0.255963 -0.966651 +vn -0.019272 -0.966501 -0.255939 +vn 0.134659 -0.698646 -0.702681 +vn -0.007629 -0.711234 -0.702914 +vn 0.183233 -0.950644 -0.250402 +vn 0.373437 -0.891680 -0.255833 +vn 0.183230 -0.950646 -0.250397 +vn -0.015287 -0.968327 -0.249216 +vn 0.134661 -0.698648 -0.702679 +vn 0.271589 -0.657804 0.702519 +vn 0.377900 -0.891708 0.249096 +vn 0.104826 -0.239527 0.965214 +vn 0.271091 -0.657572 0.702929 +vn -0.019272 -0.966501 0.255938 +vn 0.183230 -0.950646 0.250397 +vn -0.015287 -0.968327 0.249216 +vn 0.183233 -0.950644 0.250402 +vn 0.098845 -0.235782 0.966766 +vn -0.007260 -0.711651 0.702496 +vn 0.134660 -0.698649 0.702678 +vn -0.124838 0.228679 0.965464 +vn -0.124838 0.228679 0.965464 +vn -0.340014 0.622839 0.704601 +vn -0.340013 0.622837 0.704603 +vn -0.463053 0.848222 -0.257103 +vn -0.463053 0.848222 0.257103 +vn -0.463053 0.848222 0.257101 +vn -0.340014 0.622839 -0.704600 +vn -0.463053 0.848222 -0.257101 +vn -0.124838 0.228679 -0.965464 +vn -0.340014 0.622838 -0.704602 +vn -0.124838 0.228679 -0.965464 +vn 0.211375 -0.945484 0.247751 +vn -0.233081 -0.948157 0.216036 +vn 0.224141 0.911827 -0.343996 +vn 0.243737 -0.943531 0.224368 +vn -0.233064 -0.948158 0.216049 +vn 0.289798 0.319034 -0.902349 +vn -0.212891 -0.866091 0.452288 +vn -0.208784 0.685888 -0.697113 +vn 0.226422 -0.861839 0.453835 +vn 0.197903 0.805084 -0.559173 +vn -0.212905 -0.866117 0.452231 +vn -0.210345 0.800762 -0.560834 +vn 0.197902 0.805097 -0.559154 +vn -0.220443 -0.237415 0.946065 +vn 0.103282 0.073515 -0.991932 +vn 0.125261 0.132684 -0.983211 +vn 0.091155 0.055959 0.994263 +vn -0.042990 -0.048521 0.997896 +vn 0.150281 -0.708783 0.689233 +vn -0.036702 -0.041273 -0.998474 +vn 0.199266 -0.728029 0.655948 +vn -0.180317 -0.733540 0.655290 +vn -0.162798 0.624630 -0.763763 +vn 0.154510 0.628579 -0.762243 +vn 0.154512 0.628567 -0.762253 +vn -0.180316 -0.733539 0.655291 +vn -0.130841 -0.532274 0.836400 +vn 0.140479 -0.528396 0.837295 +vn -0.096563 0.243962 -0.964965 +vn 0.103279 0.420161 -0.901553 +vn -0.130844 -0.532282 0.836394 +vn 0.103279 0.420152 -0.901557 +vn -0.111103 0.416912 -0.902131 +vn 0.118314 0.125259 0.985044 +vn -0.225865 -0.293277 -0.928964 +vn 0.400912 0.401825 0.823290 +vn -0.214122 -0.230798 -0.949149 +vn 0.283419 0.312326 0.906712 +vn 0.037928 -0.274685 0.960786 +vn 0.077982 -0.312852 0.946595 +vn -0.361919 -0.397474 -0.843225 +vn -0.077471 -0.315161 0.945871 +vn -0.077470 -0.315160 0.945871 +vn 0.043549 0.177163 -0.983218 +vn -0.046375 0.175712 -0.983349 +vn 0.043549 0.177162 -0.983218 +vn 0.016602 -0.062904 0.997881 +vn -0.015592 -0.063430 0.997864 +vn -0.015592 -0.063430 0.997864 +vn 0.041559 -0.272821 -0.961167 +vn -0.013279 -0.054019 -0.998452 +vn -0.013279 -0.054020 -0.998452 +vn 0.014138 -0.053567 -0.998464 +vn 0.429745 0.471083 0.770325 +vn -0.501611 -0.571710 -0.649257 +vn -0.507158 -0.549394 -0.664046 +vn -0.098357 0.243001 0.965027 +vn 0.041119 0.167279 0.985052 +vn -0.043787 0.165907 0.985169 +vn -0.649876 -0.723942 -0.231448 +vn -0.652634 -0.722201 -0.229116 +vn 0.041119 0.167279 0.985052 +vn -0.599768 -0.656037 -0.458142 +vn 0.554658 0.606945 0.569185 +vn -0.075291 -0.306291 -0.948956 +vn -0.075291 -0.306291 -0.948956 +vn 0.614592 0.638171 0.463697 +vn 0.075448 -0.304054 -0.949662 +vn 0.101076 0.411194 0.905927 +vn 0.157278 -0.706207 -0.690316 +vn -0.128729 -0.523676 -0.842136 +vn -0.128730 -0.523687 -0.842129 +vn 0.101074 0.411188 0.905930 +vn 0.137991 -0.519866 -0.843029 +vn -0.108875 0.407995 0.906469 +vn 0.629560 0.691562 0.354113 +vn -0.178691 -0.726930 -0.663055 +vn -0.178692 -0.726929 -0.663056 +vn 0.152584 0.620745 0.769021 +vn 0.197850 -0.721395 -0.663660 +vn 0.216671 -0.944187 -0.248124 +vn -0.209957 0.685396 0.697245 +vn -0.232820 -0.947097 -0.220912 +vn 0.152585 0.620746 0.769021 +vn 0.243462 -0.942465 -0.229099 +vn -0.160859 0.616801 0.770507 +vn -0.232810 -0.947098 -0.220920 +vn -0.212357 -0.863891 -0.456725 +vn 0.225999 -0.859607 -0.458259 +vn -0.212357 -0.863885 -0.456736 +vn 0.690578 0.723194 0.009589 +vn 0.671028 0.732596 0.114128 +vn -0.208756 0.795157 0.569338 +vn 0.196512 0.799452 0.567679 +vn 0.196516 0.799459 0.567668 +vn 0.671613 0.733451 -0.104815 +vn -0.272094 0.928802 0.251578 +vn -0.240067 0.903950 0.353896 +vn 0.223360 0.908663 0.352764 +vn 0.223362 0.908664 0.352759 +vn 0.620288 0.645044 -0.446274 +vn 0.631738 0.694010 -0.345336 +vn -0.253524 0.960567 0.114173 +vn 0.237158 0.964792 0.113718 +vn -0.653370 -0.723015 0.224404 +vn 0.237159 0.964792 0.113716 +vn -0.650626 -0.724749 0.226771 +vn 0.558626 0.611195 -0.560694 +vn -0.504735 -0.582262 0.637349 +vn -0.271561 0.928966 -0.251549 +vn 0.237403 0.965778 -0.104461 +vn 0.237401 0.965780 -0.104452 +vn -0.601527 -0.657624 0.453537 +vn -0.253785 0.961554 -0.104917 +vn -0.511353 -0.554721 0.656355 +vn 0.410941 0.415373 -0.811538 +vn 0.435045 0.477152 -0.763585 +vn -0.235577 -0.311172 0.920693 +vn -0.367810 -0.404073 0.837521 +vn -0.241000 0.907108 -0.345071 +vn 0.224139 0.911832 -0.343984 +vn -0.699336 -0.290063 -0.653294 +vn -0.757072 0.000000 -0.653331 +vn 0.818085 -0.338275 0.465088 +vn -0.973761 0.000000 -0.227571 +vn -0.899643 -0.372631 -0.227570 +vn -0.973761 -0.000000 -0.227571 +vn -0.757072 -0.000000 -0.653331 +vn 0.821542 -0.340383 0.457392 +vn 0.923657 -0.383098 0.009630 +vn 0.923654 -0.383113 0.009409 +vn 0.826054 -0.342287 -0.447744 +vn 0.829951 -0.343231 -0.439742 +vn 0.539733 -0.222919 -0.811785 +vn 0.534843 -0.221386 -0.815433 +vn 0.119138 -0.049716 -0.991632 +vn 0.116117 -0.048708 -0.992041 +vn -0.332097 0.137172 -0.933218 +vn -0.323531 0.134375 -0.936628 +vn -0.898402 0.371563 -0.234124 +vn -0.697897 0.289660 -0.655009 +vn -0.899644 0.372631 -0.227569 +vn -0.699335 0.290063 -0.653295 +vn -0.899442 -0.371998 0.229394 +vn -0.974878 0.000000 0.222741 +vn -0.900675 -0.373058 0.222738 +vn -0.899243 0.372465 0.229418 +vn -0.974878 0.000000 0.222741 +vn -0.706874 -0.293135 0.643740 +vn -0.767067 0.000000 0.641567 +vn -0.708514 -0.294053 0.641515 +vn -0.767067 0.000000 0.641567 +vn -0.349063 -0.145013 0.925811 +vn -0.369013 0.000000 0.929424 +vn -0.369013 0.000000 0.929424 +vn -0.341000 -0.140880 0.929447 +vn 0.100342 0.042169 0.994059 +vn 0.106152 0.000000 0.994350 +vn 0.106152 0.000000 0.994350 +vn 0.097996 0.041001 0.994342 +vn 0.561950 0.000000 0.827171 +vn 0.524383 0.217098 0.823342 +vn 0.519325 0.214477 0.827225 +vn 0.561950 0.000000 0.827171 +vn 0.821543 0.340383 0.457391 +vn 0.818085 0.338275 0.465088 +vn 0.889262 0.000000 0.457399 +vn 0.889262 0.000000 0.457399 +vn 0.923657 0.383098 0.009630 +vn 0.999956 0.000000 0.009410 +vn -0.900871 0.372573 0.222759 +vn 0.923654 0.383113 0.009410 +vn 0.999956 0.000000 0.009410 +vn 0.826054 0.342287 -0.447745 +vn -0.706875 0.293135 0.643739 +vn 0.829951 0.343231 -0.439742 +vn 0.898143 0.000000 -0.439703 +vn -0.708513 0.294053 0.641515 +vn 0.898143 0.000000 -0.439703 +vn 0.539733 0.222919 -0.811785 +vn -0.349063 0.145013 0.925811 +vn 0.534843 0.221386 -0.815433 +vn 0.578870 0.000000 -0.815420 +vn 0.578870 0.000000 -0.815420 +vn -0.341000 0.140881 0.929447 +vn 0.119138 0.049716 -0.991632 +vn 0.100342 -0.042169 0.994059 +vn 0.125807 0.000000 -0.992055 +vn 0.125807 0.000000 -0.992055 +vn 0.097996 -0.041001 0.994342 +vn 0.116117 0.048708 -0.992041 +vn -0.332097 -0.137172 -0.933218 +vn -0.323531 -0.134375 -0.936628 +vn 0.524383 -0.217098 0.823341 +vn -0.350267 -0.000000 -0.936650 +vn -0.350267 0.000000 -0.936650 +vn 0.519325 -0.214477 0.827225 +vn -0.898402 -0.371563 -0.234124 +vn -0.697898 -0.289660 -0.655008 +vn -0.096563 -0.243961 -0.964966 +vn -0.233070 0.948159 0.216040 +vn -0.504734 0.582264 0.637348 +vn -0.111104 -0.416912 -0.902131 +vn -0.212900 0.866089 0.452287 +vn -0.212900 0.866105 0.452256 +vn -0.601517 0.657620 0.453556 +vn 0.558629 -0.611198 -0.560688 +vn 0.197907 -0.805102 -0.559146 +vn 0.197901 -0.805090 -0.559165 +vn 0.037928 0.274685 0.960786 +vn 0.077981 0.312850 0.946596 +vn -0.046376 -0.175712 -0.983348 +vn 0.016602 0.062904 0.997881 +vn 0.041559 0.272820 -0.961167 +vn -0.511354 0.554720 0.656356 +vn 0.014138 0.053567 -0.998464 +vn -0.180315 0.733541 0.655289 +vn 0.410940 -0.415372 -0.811538 +vn -0.180317 0.733539 0.655291 +vn 0.154508 -0.628567 -0.762254 +vn 0.435045 -0.477152 -0.763585 +vn -0.235577 0.311171 0.920693 +vn -0.130841 0.532286 0.836393 +vn 0.154515 -0.628577 -0.762244 +vn -0.367810 0.404073 0.837521 +vn -0.130841 0.532274 0.836400 +vn 0.103281 -0.420160 -0.901553 +vn 0.103277 -0.420153 -0.901557 +vn -0.098356 -0.243001 0.965027 +vn 0.289798 -0.319034 -0.902349 +vn -0.043788 -0.165908 0.985169 +vn -0.108874 -0.407990 0.906471 +vn 0.075447 0.304052 -0.949663 +vn 0.157277 0.706208 -0.690315 +vn -0.077470 0.315160 0.945871 +vn 0.137990 0.519866 -0.843029 +vn -0.077470 0.315161 0.945871 +vn -0.220443 0.237415 0.946065 +vn 0.103282 -0.073515 -0.991932 +vn 0.043549 -0.177162 -0.983218 +vn 0.091155 -0.055959 0.994263 +vn 0.043549 -0.177163 -0.983218 +vn -0.042991 0.048521 0.997896 +vn 0.125261 -0.132683 -0.983212 +vn -0.015592 0.063429 0.997864 +vn -0.015592 0.063431 0.997864 +vn -0.036702 0.041272 -0.998474 +vn -0.013279 0.054020 -0.998452 +vn -0.013278 0.054018 -0.998452 +vn -0.209958 -0.685396 0.697244 +vn -0.160860 -0.616801 0.770507 +vn 0.197852 0.721397 -0.663657 +vn 0.041119 -0.167280 0.985052 +vn 0.118314 -0.125259 0.985044 +vn 0.216675 0.944186 -0.248121 +vn 0.041120 -0.167279 0.985052 +vn 0.243455 0.942465 -0.229104 +vn 0.226002 0.859614 -0.458243 +vn -0.225865 0.293278 -0.928963 +vn -0.208757 -0.795162 0.569331 +vn -0.075289 0.306289 -0.948957 +vn -0.214123 0.230799 -0.949149 +vn -0.075292 0.306292 -0.948955 +vn 0.101074 -0.411183 0.905932 +vn 0.400913 -0.401826 0.823289 +vn -0.361917 0.397472 -0.843228 +vn 0.283416 -0.312323 0.906714 +vn -0.128730 0.523687 -0.842129 +vn 0.101074 -0.411189 0.905929 +vn -0.128724 0.523673 -0.842138 +vn -0.240066 -0.903947 0.353904 +vn -0.501611 0.571708 -0.649258 +vn -0.178690 0.726931 -0.663055 +vn -0.272094 -0.928801 0.251581 +vn -0.178693 0.726932 -0.663053 +vn 0.152586 -0.620746 0.769021 +vn -0.507157 0.549394 -0.664047 +vn -0.649876 0.723942 -0.231448 +vn 0.429747 -0.471085 0.770322 +vn -0.232815 0.947097 -0.220917 +vn 0.152586 -0.620748 0.769018 +vn -0.652637 0.722199 -0.229114 +vn -0.232816 0.947097 -0.220917 +vn -0.212362 0.863892 -0.456720 +vn -0.599764 0.656032 -0.458153 +vn -0.212358 0.863882 -0.456740 +vn -0.253524 -0.960568 0.114170 +vn 0.614591 -0.638171 0.463698 +vn 0.196516 -0.799456 0.567672 +vn 0.196516 -0.799459 0.567668 +vn 0.554658 -0.606945 0.569185 +vn -0.253784 -0.961553 -0.104924 +vn -0.271560 -0.928966 -0.251552 +vn 0.629559 -0.691560 0.354119 +vn 0.223360 -0.908662 0.352766 +vn 0.223360 -0.908660 0.352771 +vn -0.241000 -0.907108 -0.345071 +vn 0.671028 -0.732595 0.114127 +vn 0.690579 -0.723194 0.009589 +vn 0.237159 -0.964792 0.113716 +vn 0.243731 0.943532 0.224371 +vn 0.237158 -0.964793 0.113715 +vn 0.211377 0.945484 0.247748 +vn -0.208785 -0.685888 -0.697113 +vn -0.210346 -0.800767 -0.560826 +vn 0.237402 -0.965779 -0.104459 +vn 0.226424 0.861839 0.453835 +vn 0.237401 -0.965778 -0.104465 +vn 0.671613 -0.733450 -0.104818 +vn 0.150281 0.708784 0.689232 +vn 0.199267 0.728030 0.655946 +vn -0.162798 -0.624630 -0.763763 +vn 0.140479 0.528399 0.837293 +vn 0.620288 -0.645045 -0.446272 +vn 0.631737 -0.694009 -0.345340 +vn 0.224140 -0.911829 -0.343989 +vn 0.224138 -0.911827 -0.343996 +vn -0.650621 0.724753 0.226774 +vn -0.233076 0.948156 0.216045 +vn -0.653373 0.723013 0.224400 +vn -0.124838 -0.228679 0.965464 +vn -0.340014 -0.622838 0.704602 +vn -0.124838 -0.228679 0.965464 +vn -0.463053 -0.848221 0.257104 +vn -0.340014 -0.622838 0.704601 +vn -0.463052 -0.848221 0.257106 +vn -0.463053 -0.848221 -0.257104 +vn -0.463052 -0.848221 -0.257106 +vn -0.340014 -0.622839 -0.704601 +vn -0.340014 -0.622839 -0.704600 +vn -0.124838 -0.228679 -0.965464 +vn -0.124838 -0.228679 -0.965464 +vn 0.271091 0.657572 0.702929 +vn 0.134661 0.698648 0.702678 +vn -0.001213 -0.262394 0.964960 +vn 0.004129 -0.255631 0.966766 +vn -0.015259 0.966599 0.255838 +vn 0.048393 0.251071 0.966758 +vn 0.098845 0.235782 0.966766 +vn 0.048391 0.251070 0.966759 +vn 0.018047 -0.710918 0.703044 +vn 0.017196 -0.711560 0.702415 +vn -0.096401 -0.244048 0.964960 +vn -0.048391 -0.251071 0.966758 +vn -0.098847 -0.235786 0.966765 +vn -0.048393 -0.251072 0.966758 +vn 0.015612 -0.966591 0.255847 +vn 0.009276 -0.968210 0.249968 +vn 0.373438 0.891681 0.255830 +vn -0.280983 -0.653280 0.703046 +vn -0.134657 -0.698645 0.702683 +vn -0.280436 -0.654186 0.702421 +vn -0.134660 -0.698647 0.702680 +vn 0.009393 -0.966715 -0.255684 +vn 0.015637 -0.968167 -0.249814 +vn -0.373754 -0.891545 0.255841 +vn -0.183262 -0.950802 0.249782 +vn -0.368471 -0.895405 0.249959 +vn -0.183259 -0.950802 0.249785 +vn 0.017171 -0.710981 -0.703002 +vn 0.018034 -0.711585 -0.702369 +vn -0.368024 -0.893973 -0.255678 +vn -0.374364 -0.893000 -0.249805 +vn -0.183262 -0.950801 -0.249785 +vn -0.183259 -0.950802 -0.249782 +vn 0.004229 -0.261786 -0.965117 +vn -0.004229 0.261787 -0.965116 +vn -0.001483 -0.255179 -0.966893 +vn -0.134660 -0.698644 -0.702683 +vn -0.280199 -0.653662 -0.703004 +vn -0.281217 -0.653900 -0.702376 +vn -0.134657 -0.698646 -0.702681 +vn -0.007259 0.711651 -0.702495 +vn -0.008286 0.255964 -0.966651 +vn -0.048393 -0.251072 -0.966758 +vn -0.101226 -0.241462 -0.965116 +vn -0.093470 -0.237452 -0.966892 +vn -0.048392 -0.251074 -0.966757 +vn -0.019274 0.966501 -0.255939 +vn -0.015287 0.968328 -0.249213 +vn -0.007630 0.711232 -0.702916 +vn 0.048392 0.251073 -0.966758 +vn 0.104825 0.239527 -0.965214 +vn 0.048393 0.251071 -0.966758 +vn 0.098846 0.235783 -0.966766 +vn 0.271590 0.657805 -0.702518 +vn 0.271091 0.657571 -0.702930 +vn 0.183233 0.950646 -0.250395 +vn 0.183230 0.950646 -0.250399 +vn 0.134658 0.698649 -0.702679 +vn 0.134661 0.698644 -0.702683 +vn 0.377901 0.891708 -0.249093 +vn 0.373438 0.891681 -0.255830 +vn -0.019403 0.968288 0.249084 +vn -0.007260 0.711651 0.702496 +vn -0.007630 0.711233 0.702915 +vn 0.271589 0.657804 0.702519 +vn 0.183230 0.950646 0.250399 +vn 0.377900 0.891708 0.249093 +vn 0.183233 0.950646 0.250395 +vn -0.004229 0.261787 0.965116 +vn -0.008287 0.255963 0.966651 +vn 0.104826 0.239526 0.965214 +vn 0.134657 0.698645 0.702682 +vn 0.104315 -0.873089 -0.476272 +vn 0.110334 -0.923698 0.366891 +vn 0.104315 -0.873089 -0.476272 +vn 0.110327 -0.923696 0.366897 +vn 0.352200 -0.495572 -0.793954 +vn 0.084510 -0.691670 -0.717252 +vn 0.082679 -0.692261 -0.716895 +vn 0.110363 -0.923702 0.366871 +vn 0.110263 -0.923706 0.366891 +vn 0.036881 -0.308807 0.950410 +vn 0.082684 -0.692262 -0.716894 +vn 0.056664 -0.474389 0.878490 +vn -0.041361 -0.317181 0.947463 +vn 0.082689 -0.692260 -0.716895 +vn 0.082710 -0.692259 -0.716894 +vn 0.082710 -0.692259 -0.716894 +vn 0.117162 -0.980887 -0.155348 +vn 0.117155 -0.980890 0.155339 +vn 0.117162 -0.980887 -0.155348 +vn 0.074014 -0.619640 0.781389 +vn 0.117126 -0.980892 -0.155348 +vn 0.074004 -0.619636 0.781393 +vn 0.112484 -0.941720 -0.317033 +vn 0.112484 -0.941720 -0.317033 +vn 0.074013 -0.619635 0.781393 +vn 0.117142 -0.980890 0.155348 +vn 0.112486 -0.941720 -0.317033 +vn 0.049614 -0.403877 -0.913467 +vn 0.117176 -0.980887 0.155339 +vn 0.067538 -0.553850 -0.829873 +vn 0.066370 -0.555638 -0.828771 +vn 0.117190 -0.980886 0.155336 +vn 0.066386 -0.555631 -0.828774 +vn 0.066371 -0.555638 -0.828771 +vn 0.117140 -0.980890 0.155348 +vn 0.016664 -0.139509 -0.990081 +vn 0.016613 -0.139515 -0.990081 +vn 0.048223 -0.404044 -0.913468 +vn 0.221008 -0.958902 -0.177942 +vn 0.048262 -0.404035 -0.913469 +vn -0.390516 -0.744778 -0.541113 +vn 0.117173 -0.980887 -0.155339 +vn 0.104287 -0.873092 -0.476272 +vn 0.071825 -0.876498 -0.476017 +vn 0.104287 -0.873092 -0.476271 +vn 0.106716 -0.872256 -0.477264 +vn 0.115004 -0.941373 -0.317160 +vn 0.082687 -0.692261 -0.716894 +vn 0.082687 -0.692262 -0.716894 +vn 0.082678 -0.692263 -0.716894 +vn 0.117158 -0.980889 0.155339 +vn 0.066369 -0.555633 -0.828774 +vn 0.117165 -0.980889 0.155336 +vn 0.066361 -0.555639 -0.828771 +vn 0.066368 -0.555638 -0.828771 +vn 0.117195 -0.980885 0.155339 +vn -0.822975 -0.175545 -0.540274 +vn 0.016664 -0.139509 -0.990081 +vn -0.135275 -0.418956 -0.897873 +vn 0.048261 -0.404035 -0.913469 +vn 0.117089 -0.980896 0.155348 +vn 0.048261 -0.404035 -0.913469 +vn 0.117155 -0.980890 -0.155339 +vn 0.117155 -0.980890 -0.155339 +vn 0.021495 -0.179950 0.983441 +vn 0.104252 -0.872856 -0.476712 +vn 0.021494 -0.179950 0.983441 +vn 0.112472 -0.941679 -0.317160 +vn 0.021500 -0.179949 0.983441 +vn 0.112472 -0.941679 -0.317160 +vn 0.324021 -0.345351 0.880763 +vn 0.117142 -0.980891 -0.155339 +vn 0.117176 -0.980886 -0.155348 +vn 0.112492 -0.941677 -0.317160 +vn 0.075109 -0.619504 0.781392 +vn 0.112464 -0.941723 -0.317033 +vn 0.056665 -0.474389 0.878490 +vn 0.056667 -0.474389 0.878490 +vn 0.056679 -0.474387 0.878490 +vn -0.196680 -0.793215 0.576305 +vn 0.094655 -0.792445 0.602554 +vn 0.094654 -0.792444 0.602555 +vn 0.056679 -0.474387 0.878490 +vn -0.192807 -0.793319 0.577469 +vn 0.074015 -0.619640 0.781389 +vn 0.074009 -0.619636 0.781393 +vn 0.117190 -0.980884 -0.155348 +vn 0.117140 -0.980892 -0.155336 +vn 0.074033 -0.619637 0.781389 +vn 0.074033 -0.619637 0.781389 +vn 0.095095 -0.792211 0.602792 +vn 0.112473 -0.941722 -0.317033 +vn 0.112505 -0.941675 -0.317160 +vn 0.110332 -0.923706 0.366871 +vn 0.094650 -0.792323 0.602715 +vn 0.110332 -0.923706 0.366871 +vn 0.110349 -0.923704 0.366871 +vn 0.117165 -0.980888 -0.155339 +vn 0.117158 -0.980890 -0.155336 +vn 0.303183 -0.921226 0.243766 +vn 0.110802 -0.923642 0.366891 +vn 0.095729 -0.792316 0.602553 +vn 0.112474 -0.941679 -0.317160 +vn 0.094621 -0.792327 0.602715 +vn 0.112474 -0.941679 -0.317160 +vn 0.117090 -0.980897 -0.155339 +vn 0.117195 -0.980883 -0.155348 +vn 0.110345 -0.923704 0.366871 +vn 0.112510 -0.941675 -0.317160 +vn 0.110312 -0.923700 0.366891 +vn 0.112414 -0.941729 -0.317033 +vn 0.094650 -0.792445 0.602555 +vn 0.104299 -0.873091 -0.476272 +vn 0.094656 -0.792445 0.602554 +vn 0.106116 -0.872631 -0.476711 +vn 0.104276 -0.873093 -0.476272 +vn 0.104276 -0.873093 -0.476272 +vn 0.110310 -0.923698 0.366897 +vn 0.110358 -0.923703 0.366871 +vn 0.117162 -0.980887 0.155348 +vn 0.117162 -0.980887 0.155348 +vn 0.094680 -0.792441 0.602555 +vn -0.283953 -0.958838 0.000000 +vn 0.094680 -0.792441 0.602555 +vn 0.117127 -0.980892 0.155348 +vn 0.104282 -0.873093 -0.476272 +vn 0.117173 -0.980887 0.155344 +vn 0.104282 -0.873093 -0.476272 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.992944 0.118584 0.000000 +vn -0.992943 0.118593 -0.000012 +vn -0.992944 0.118584 0.000021 +vn -0.992941 0.118609 -0.000028 +vn -0.992943 0.118593 0.000033 +vn -0.992943 0.118593 0.000033 +vn -0.992941 0.118609 -0.000028 +vn -0.992944 0.118584 0.000000 +vn -0.992944 0.118584 0.000021 +vn -0.992943 0.118593 -0.000012 +vn 0.258819 -0.965926 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.965926 -0.258819 0.000000 +vn -0.965926 -0.258819 -0.000000 +vn -0.707107 -0.707107 -0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.258819 -0.965926 -0.000000 +vn -0.258819 -0.965926 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.309017 0.951056 0.000000 +vn -0.309017 0.951056 0.000000 +vn -0.809015 0.587788 0.000000 +vn -0.809015 0.587788 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.809015 -0.587788 0.000000 +vn -0.809015 -0.587788 -0.000000 +vn -0.309017 -0.951056 0.000000 +vn -0.309017 -0.951056 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.258819 0.965926 0.000000 +vn -0.258819 0.965926 0.000000 +vn -0.707107 0.707107 0.000000 +vn -0.707107 0.707107 0.000000 +vn -0.965926 0.258819 0.000000 +vn -0.965926 0.258819 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.258819 0.965926 0.000000 +vn 0.258819 0.965926 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.309018 -0.951056 0.000000 +vn 0.309018 -0.951056 0.000000 +vn 0.809017 -0.587785 0.000000 +vn 0.809017 -0.587785 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.809017 0.587785 0.000000 +vn 0.809017 0.587785 0.000000 +vn 0.309018 0.951056 0.000000 +vn 0.309018 0.951056 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.309017 0.951057 0.000000 +vn -0.309017 0.951057 0.000000 +vn -0.809017 0.587785 0.000000 +vn -0.809017 0.587785 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.809017 -0.587785 -0.000000 +vn -0.809017 -0.587785 0.000000 +vn -0.309017 -0.951057 -0.000000 +vn -0.309017 -0.951057 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.258819 0.965926 0.000000 +vn 0.258819 0.965926 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.309017 0.951057 0.000000 +vn -0.309017 0.951057 0.000000 +vn -0.809017 0.587785 0.000000 +vn -0.809017 0.587785 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.809017 -0.587785 -0.000000 +vn -0.809017 -0.587785 0.000000 +vn -0.309017 -0.951057 -0.000000 +vn -0.309017 -0.951057 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.309017 0.951057 0.000000 +vn -0.309017 0.951057 0.000000 +vn -0.809017 0.587785 0.000000 +vn -0.809017 0.587785 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.809017 -0.587785 -0.000000 +vn -0.809017 -0.587785 0.000000 +vn -0.309017 -0.951057 -0.000000 +vn -0.309017 -0.951057 0.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.951057 0.309017 0.000000 +vn 0.951057 0.309017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.951057 0.309017 0.000000 +vn -0.951057 0.309017 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.951057 0.309017 0.000000 +vn 0.951057 0.309017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.951056 0.309017 0.000000 +vn -0.951056 0.309017 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn -0.951056 -0.309017 0.000000 +vn -0.951056 -0.309017 -0.000000 +vn -0.587786 -0.809017 -0.000000 +vn -0.587786 -0.809017 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.587786 -0.809017 0.000000 +vn 0.587786 -0.809017 0.000000 +vn 0.951057 -0.309017 0.000000 +vn 0.951057 -0.309017 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.965926 -0.258819 0.000000 +vn -0.965926 -0.258819 -0.000000 +vn -0.707107 -0.707107 -0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.258819 -0.965926 -0.000000 +vn -0.258819 -0.965926 0.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.951057 0.309017 0.000000 +vn 0.951057 0.309017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.951057 0.309017 0.000000 +vn -0.951057 0.309017 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.951056 0.309019 0.000000 +vn 0.951056 0.309019 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.951056 0.309019 0.000000 +vn -0.951056 0.309019 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn -0.951056 -0.309019 0.000000 +vn -0.951056 -0.309019 -0.000000 +vn -0.587786 -0.809017 -0.000000 +vn -0.587786 -0.809017 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.587786 -0.809017 0.000000 +vn 0.587786 -0.809017 0.000000 +vn 0.951056 -0.309019 0.000000 +vn 0.951056 -0.309019 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.965926 -0.258819 0.000000 +vn -0.965926 -0.258819 -0.000000 +vn -0.707107 -0.707107 -0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.258819 -0.965926 -0.000000 +vn -0.258819 -0.965926 0.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.258819 0.965926 0.000000 +vn -0.258819 0.965926 0.000000 +vn -0.707107 0.707107 0.000000 +vn -0.707107 0.707107 0.000000 +vn -0.965926 0.258819 0.000000 +vn -0.965926 0.258819 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.951056 0.309018 0.000000 +vn 0.951056 0.309018 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.951056 0.309018 0.000000 +vn -0.951056 0.309018 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.258819 0.965926 0.000000 +vn 0.258819 0.965926 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.951056 -0.309019 0.000000 +vn -0.951056 -0.309019 -0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 -0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.951056 -0.309019 0.000000 +vn 0.951056 -0.309019 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.951056 -0.309019 0.000000 +vn -0.951056 -0.309019 -0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 -0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.951056 -0.309019 0.000000 +vn 0.951056 -0.309019 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.965926 -0.258819 0.000000 +vn -0.965926 -0.258819 -0.000000 +vn -0.707107 -0.707107 -0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.258819 -0.965926 -0.000000 +vn -0.258819 -0.965926 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.258819 -0.965926 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.707107 -0.707107 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.965926 -0.258819 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.951056 -0.309019 0.000000 +vn -0.951056 -0.309019 -0.000000 +vn -0.587785 -0.809017 0.000000 +vn -0.587785 -0.809017 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 -0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.587785 -0.809017 0.000000 +vn 0.951056 -0.309019 0.000000 +vn 0.951056 -0.309019 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.965926 -0.258819 0.000000 +vn -0.965926 -0.258819 -0.000000 +vn -0.707107 -0.707107 -0.000000 +vn -0.707107 -0.707107 0.000000 +vn -0.258819 -0.965926 -0.000000 +vn -0.258819 -0.965926 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.258819 0.965926 0.000000 +vn -0.258819 0.965926 0.000000 +vn -0.707107 0.707107 0.000000 +vn -0.707107 0.707107 0.000000 +vn -0.965926 0.258819 0.000000 +vn -0.965926 0.258819 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.951056 0.309018 0.000000 +vn 0.951056 0.309018 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.587785 0.809017 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.587785 0.809017 0.000000 +vn -0.951056 0.309018 0.000000 +vn -0.951056 0.309018 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.965926 0.258819 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.707107 0.707107 0.000000 +vn 0.258819 0.965926 0.000000 +vn 0.258819 0.965926 0.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.258820 0.000000 0.965926 +vn -0.707104 0.000000 0.707110 +vn -0.258820 0.000000 0.965926 +vn -0.965927 0.000000 0.258815 +vn -0.707104 0.000000 0.707110 +vn -0.965927 0.000000 0.258815 +vn -0.965917 -0.004533 -0.258812 +vn -0.984631 -0.000491 -0.174646 +vn -0.989758 0.000000 -0.142755 +vn -0.707109 -0.004865 -0.707088 +vn -0.965912 0.005536 -0.258811 +vn -0.682342 -0.003011 -0.731027 +vn -0.557066 -0.000148 -0.830468 +vn -0.554081 -0.000079 -0.832463 +vn -0.587182 0.000087 -0.809455 +vn -0.531297 0.000000 -0.847185 +vn -0.258815 0.000684 -0.965927 +vn -0.267266 0.000000 -0.963623 +vn -0.541017 0.000099 -0.841011 +vn -0.707108 0.005188 -0.707087 +vn -0.258815 -0.000684 -0.965927 +vn -0.267266 0.000000 -0.963623 +vn -0.627089 0.001366 -0.778947 +vn -0.772615 0.000747 -0.634875 +vn -0.912701 -0.000637 -0.408627 +vn -0.987668 0.000000 -0.156563 +vn -0.897678 0.000386 -0.440653 +vn -0.734322 0.000585 -0.678801 +vn -0.698585 -0.000393 -0.715527 +vn -0.875603 -0.000600 -0.483030 +vn -0.982545 0.000000 -0.186023 +vn -0.858594 0.002182 -0.512652 +vn 0.965927 -0.000000 0.258814 +vn 0.965927 0.000000 0.258814 +vn 0.707117 0.000000 0.707096 +vn 0.707117 -0.000000 0.707096 +vn 0.258815 0.000000 0.965927 +vn 0.258815 -0.000000 0.965927 +vn -0.096567 0.810069 -0.578328 +vn -0.096911 0.809903 -0.578502 +vn -0.072022 0.603971 0.793746 +vn -0.107144 0.896859 -0.429144 +vn -0.071993 0.603969 0.793750 +vn -0.107155 0.896850 -0.429160 +vn -0.020619 0.172350 0.984820 +vn -0.050233 0.420955 0.905689 +vn -0.054408 0.456360 -0.888130 +vn -0.054501 0.456149 -0.888233 +vn -0.020552 0.172345 0.984822 +vn -0.050178 0.420955 0.905692 +vn -0.054480 0.456351 -0.888130 +vn -0.050198 0.420960 0.905689 +vn -0.724881 0.487119 0.487096 +vn -0.096471 0.787002 0.609361 +vn -0.097185 0.809871 -0.578502 +vn -0.096560 0.810070 -0.578328 +vn -0.094076 0.787382 0.609245 +vn -0.093984 0.787302 0.609363 +vn -0.072007 0.603973 0.793746 +vn -0.116645 0.976324 -0.182170 +vn -0.072160 0.603954 0.793746 +vn -0.116626 0.976327 -0.182162 +vn -0.072160 0.603954 0.793746 +vn -0.389538 0.238384 0.889625 +vn -0.020584 0.172354 0.984820 +vn -0.020591 0.172341 0.984822 +vn -0.050294 0.420941 0.905692 +vn -0.050187 0.420954 0.905692 +vn -0.106915 0.896879 -0.429160 +vn -0.050294 0.420941 0.905692 +vn -0.107298 0.896705 -0.429427 +vn -0.117107 0.976244 -0.182303 +vn -0.115998 0.976402 -0.182162 +vn -0.106909 0.896887 -0.429144 +vn -0.107643 0.896664 -0.429427 +vn -0.762955 0.457122 -0.457099 +vn -0.075664 0.633836 -0.769757 +vn -0.075560 0.633772 -0.769820 +vn -0.075721 0.633753 -0.769820 +vn -0.116635 0.976300 -0.182303 +vn -0.116635 0.976300 -0.182303 +vn -0.116820 0.976278 -0.182303 +vn -0.116390 0.976354 -0.182170 +vn -0.096685 0.809930 -0.578502 +vn -0.096685 0.809930 -0.578502 +vn -0.099244 0.809622 -0.578500 +vn -0.116151 0.972193 0.203346 +vn -0.013039 0.109174 -0.993937 +vn -0.116151 0.972193 0.203346 +vn -0.013014 0.109177 -0.993937 +vn -0.116427 0.976350 -0.182170 +vn -0.117195 0.976233 -0.182303 +vn -0.037662 0.316324 -0.947904 +vn -0.115507 0.972270 0.203346 +vn -0.037955 0.316289 -0.947903 +vn -0.115507 0.972270 0.203346 +vn -0.037714 0.316392 -0.947878 +vn 0.063975 0.779411 0.623238 +vn -0.106027 0.887448 0.448547 +vn -0.068808 0.594747 -0.800963 +vn -0.116547 0.976310 -0.182303 +vn -0.107063 0.896869 -0.429144 +vn -0.965133 0.252833 -0.067771 +vn -0.107063 0.896869 -0.429144 +vn -0.109897 0.896527 -0.429142 +vn -0.116547 0.976310 -0.182303 +vn -0.054360 0.456378 -0.888124 +vn -0.105438 0.887518 0.448547 +vn -0.105438 0.887518 0.448547 +vn -0.093542 0.787380 0.609330 +vn -0.054735 0.456121 -0.888233 +vn -0.054400 0.456373 -0.888124 +vn -0.116144 0.972194 0.203346 +vn -0.116144 0.972194 0.203346 +vn 0.060326 0.818255 -0.571681 +vn -0.104115 0.895852 -0.431982 +vn -0.106032 0.887447 0.448547 +vn -0.106019 0.887438 0.448569 +vn -0.096198 0.809741 -0.578848 +vn -0.116328 0.972172 0.203346 +vn -0.116328 0.972172 0.203346 +vn -0.094501 0.810189 -0.578501 +vn -0.116057 0.972204 0.203346 +vn 0.068620 0.606192 -0.792353 +vn -0.115935 0.972219 0.203346 +vn -0.115935 0.972219 0.203346 +vn -0.071144 0.595450 -0.800236 +vn -0.107117 0.896727 -0.429427 +vn -0.106187 0.887418 0.448569 +vn -0.106187 0.887418 0.448569 +vn -0.106556 0.896929 -0.429144 +vn -0.105829 0.887471 0.448547 +vn -0.105786 0.887466 0.448569 +vn -0.107562 0.896673 -0.429427 +vn -0.093933 0.787333 0.609330 +vn -0.094077 0.787387 0.609238 +vn -0.075551 0.633773 -0.769820 +vn -0.094215 0.787371 0.609238 +vn -0.075555 0.633849 -0.769757 +vn -0.094215 0.787371 0.609238 +vn -0.076046 0.633714 -0.769820 +vn -0.093859 0.787408 0.609245 +vn -0.096769 0.809920 -0.578502 +vn -0.096769 0.809920 -0.578502 +vn -0.093897 0.787409 0.609238 +vn 0.271808 0.359114 0.892837 +vn -0.072077 0.603964 0.793746 +vn -0.313855 0.245750 -0.917116 +vn -0.037770 0.316386 -0.947878 +vn -0.050374 0.420888 0.905713 +vn -0.072266 0.603936 0.793750 +vn -0.067571 0.217273 -0.973769 +vn -0.116174 0.972190 0.203346 +vn -0.116664 0.976297 -0.182303 +vn -0.113568 0.976687 -0.182169 +vn -0.072283 0.603940 0.793746 +vn -0.117580 0.959202 0.257110 +vn -0.160508 0.953034 0.256834 +vn -0.105940 0.887458 0.448547 +vn 0.124844 0.228688 -0.965461 +vn 0.124833 0.228670 -0.965467 +vn 0.340011 0.622833 -0.704607 +vn 0.340010 0.622833 -0.704607 +vn 0.463059 0.848228 0.257072 +vn 0.463059 0.848228 -0.257073 +vn 0.463049 0.848215 -0.257131 +vn 0.340010 0.622833 0.704608 +vn 0.463049 0.848216 0.257131 +vn 0.124833 0.228670 0.965467 +vn 0.340010 0.622833 0.704608 +vn 0.124844 0.228688 0.965461 +vn 0.124833 -0.228670 -0.965467 +vn 0.340034 -0.622870 -0.704564 +vn 0.124844 -0.228688 -0.965461 +vn 0.463049 -0.848216 -0.257131 +vn 0.340010 -0.622833 -0.704607 +vn 0.463045 -0.848211 -0.257153 +vn 0.463049 -0.848216 0.257131 +vn 0.463045 -0.848211 0.257153 +vn 0.340034 -0.622869 0.704564 +vn 0.340010 -0.622833 0.704608 +vn 0.124833 -0.228670 0.965467 +vn 0.124844 -0.228688 0.965461 +vn -0.116226 -0.972128 -0.203614 +vn -0.115790 -0.972155 -0.203732 +vn -0.160422 -0.953046 0.256843 +vn -0.116587 -0.976237 0.182669 +vn -0.116071 -0.972122 -0.203732 +vn -0.116287 -0.972121 -0.203614 +vn -0.116647 -0.976230 0.182669 +vn -0.116647 -0.976230 0.182669 +vn -0.115808 -0.972153 -0.203732 +vn -0.115808 -0.972153 -0.203732 +vn -0.109015 -0.899249 0.423636 +vn -0.116715 -0.976222 0.182669 +vn -0.116284 -0.976298 0.182536 +vn -0.107428 -0.899439 0.423637 +vn -0.107469 -0.899426 0.423654 +vn -0.116007 -0.972130 -0.203732 +vn -0.116370 -0.972088 -0.203725 +vn -0.116865 -0.976224 0.182560 +vn -0.116026 -0.972129 -0.203725 +vn -0.107132 -0.899466 0.423654 +vn -0.107516 -0.899282 0.423949 +vn -0.095144 -0.813513 0.573711 +vn -0.135904 -0.697399 0.703680 +vn -0.097137 -0.813277 0.573712 +vn -0.097137 -0.813277 0.573712 +vn -0.116566 -0.976265 0.182536 +vn -0.020547 -0.172047 -0.984874 +vn -0.116777 -0.976215 0.182669 +vn -0.080889 -0.252395 -0.964237 +vn -0.116299 -0.976272 0.182669 +vn -0.020667 -0.172054 -0.984871 +vn -0.116299 -0.976272 0.182669 +vn -0.020549 -0.172047 -0.984874 +vn -0.096884 -0.813423 0.573547 +vn -0.097232 -0.813265 0.573712 +vn -0.051408 -0.414773 -0.908472 +vn 0.069753 -0.471552 -0.879075 +vn -0.107573 -0.899275 0.423949 +vn -0.049704 -0.414970 -0.908476 +vn -0.107392 -0.899435 0.423654 +vn -0.049566 -0.414987 -0.908476 +vn -0.049586 -0.414991 -0.908473 +vn 0.046467 -0.821671 0.568065 +vn -0.139602 -0.696813 -0.703536 +vn -0.107149 -0.899464 0.423654 +vn -0.068921 -0.599034 -0.797752 +vn -0.107149 -0.899464 0.423654 +vn -0.116310 -0.976295 0.182536 +vn -0.107632 -0.899407 0.423654 +vn -0.116501 -0.976272 0.182536 +vn -0.071540 -0.598728 -0.797751 +vn -0.107091 -0.899233 0.424159 +vn -0.071511 -0.598726 -0.797755 +vn -0.116823 -0.976209 0.182669 +vn -0.071717 -0.629054 0.774046 +vn -0.071316 -0.598755 -0.797751 +vn -0.071578 -0.598812 -0.797685 +vn -0.075116 -0.628652 0.774051 +vn -0.091703 -0.791334 -0.604468 +vn -0.075086 -0.628660 0.774047 +vn -0.097284 -0.813259 0.573712 +vn -0.097119 -0.813395 0.573547 +vn -0.095308 -0.813288 0.574003 +vn -0.094477 -0.791006 -0.604470 +vn -0.096886 -0.813307 0.573712 +vn -0.054824 -0.450262 0.891212 +vn -0.094477 -0.791006 -0.604470 +vn -0.151396 -0.954495 -0.256941 +vn -0.037741 -0.315837 0.948062 +vn -0.107454 -0.889973 -0.443172 +vn -0.053813 -0.450368 0.891220 +vn -0.053793 -0.450385 0.891212 +vn 0.198770 -0.465725 0.862317 +vn -0.075062 -0.628663 0.774047 +vn -0.075160 -0.628651 0.774047 +vn -0.075160 -0.628651 0.774047 +vn -0.106314 -0.890110 -0.443173 +vn -0.053823 -0.450345 0.891231 +vn -0.106314 -0.890110 -0.443173 +vn -0.053845 -0.450365 0.891220 +vn -0.073192 -0.627946 0.774808 +vn -0.013022 -0.109028 0.993953 +vn -0.094218 -0.791036 -0.604470 +vn -0.013021 -0.109028 0.993953 +vn -0.094218 -0.791036 -0.604470 +vn -0.085126 -0.251830 0.964020 +vn -0.062366 -0.312797 0.947770 +vn -0.037723 -0.315839 0.948062 +vn -0.037723 -0.315839 0.948062 +vn -0.106418 -0.890097 -0.443173 +vn -0.105998 -0.889941 -0.443588 +vn -0.094578 -0.790974 -0.604496 +vn -0.094620 -0.790989 -0.604470 +vn 0.041525 -0.786128 -0.616668 +vn -0.094230 -0.791015 -0.604496 +vn -0.106255 -0.889910 -0.443588 +vn -0.106474 -0.890090 -0.443173 +vn -0.116095 -0.972121 -0.203725 +vn -0.106238 -0.890119 -0.443173 +vn -0.106039 -0.890143 -0.443173 +vn -0.106039 -0.890143 -0.443173 +vn -0.116155 -0.972113 -0.203725 +vn -0.116109 -0.972117 -0.203732 +vn -0.113512 0.959692 0.257111 +vn -0.028160 0.235762 -0.971403 +vn -0.028407 0.235939 -0.971353 +vn -0.030494 0.258747 -0.965464 +vn -0.102426 0.649906 -0.753081 +vn -0.056486 0.473001 -0.879249 +vn -0.056712 0.472974 -0.879249 +vn -0.083311 0.704706 -0.704591 +vn -0.080317 0.657876 -0.748831 +vn -0.078696 0.658071 -0.748832 +vn -0.323886 0.881576 -0.343396 +vn -0.101463 0.834615 -0.541409 +vn -0.099741 0.834822 -0.541410 +vn -0.113436 0.959701 -0.257112 +vn -0.179316 0.919758 -0.349129 +vn -0.111030 0.930160 -0.349963 +vn -0.999646 -0.025197 0.008579 +vn -0.117967 0.987629 -0.103304 +vn -0.186414 0.977051 -0.103054 +vn -0.118107 0.988803 0.091214 +vn -0.230828 0.913929 0.333843 +vn -0.111615 0.935113 0.336311 +vn -0.101877 0.852834 0.512147 +vn -0.104359 0.852535 0.512146 +vn -0.087375 0.725854 0.682277 +vn -0.083351 0.704700 0.704592 +vn -0.089096 0.725319 0.682623 +vn -0.086314 0.725653 0.682625 +vn -0.054872 0.457611 0.887458 +vn -0.019234 0.159203 0.987058 +vn -0.018983 0.158931 0.987107 +vn -0.029724 0.258839 0.965463 +vn -0.055295 0.457230 0.887628 +vn -0.055024 0.457262 0.887628 +vn -0.113513 -0.959692 -0.257112 +vn -0.018967 -0.158794 -0.987130 +vn -0.029724 -0.258839 -0.965463 +vn -0.054844 -0.457379 -0.887579 +vn -0.019228 -0.159077 -0.987079 +vn -0.083354 -0.704701 -0.704592 +vn -0.087295 -0.725548 -0.682613 +vn -0.055250 -0.457013 -0.887742 +vn -0.054998 -0.457044 -0.887742 +vn -0.086276 -0.725354 -0.682948 +vn -0.088951 -0.725033 -0.682946 +vn -0.231769 -0.913712 -0.333787 +vn -0.104185 -0.852188 -0.512758 +vn -0.101834 -0.852472 -0.512759 +vn -0.111616 -0.935123 -0.336284 +vn -0.113436 -0.959701 0.257111 +vn -0.186063 -0.982453 0.012932 +vn -0.119276 -0.992777 0.012960 +vn -0.324450 -0.881384 0.343359 +vn -0.111030 -0.930162 0.349957 +vn -0.179245 -0.919773 0.349126 +vn -0.083309 -0.704705 0.704592 +vn -0.099718 -0.834621 0.541723 +vn -0.101303 -0.834431 0.541722 +vn -0.102641 -0.649617 0.753301 +vn -0.078677 -0.657908 0.748977 +vn -0.080172 -0.657729 0.748976 +vn -0.030492 -0.258748 0.965464 +vn -0.028137 -0.235565 0.971451 +vn -0.028391 -0.235748 0.971399 +vn -0.056761 -0.473080 0.879189 +vn -0.056500 -0.473111 0.879189 +vn -0.309018 0.000000 -0.951056 +vn -0.309018 -0.000000 -0.951056 +vn -0.809021 -0.000000 -0.587780 +vn -0.809021 0.000000 -0.587780 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -0.809021 0.000000 0.587780 +vn -0.809021 0.000000 0.587780 +vn -0.309017 0.000000 0.951056 +vn -0.309017 0.000000 0.951056 +vn -0.989758 0.000000 0.142754 +vn -0.951030 0.007960 0.308995 +vn -0.912224 0.001950 0.409688 +vn -0.984631 -0.000491 0.174646 +vn -0.623234 0.005086 0.782019 +vn -0.951032 -0.007697 0.308996 +vn -0.527921 0.004239 0.849283 +vn -0.587763 0.007346 0.809000 +vn -0.587182 0.000087 0.809455 +vn -0.683270 -0.001816 0.730164 +vn -0.531310 0.000000 0.847178 +vn -0.554086 -0.000079 0.832460 +vn -0.545376 -0.004916 0.838177 +vn -0.414720 0.000000 0.909949 +vn -0.414720 0.000000 0.909949 +vn -0.587763 -0.007455 0.808999 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.587779 0.000000 0.809022 +vn 0.587779 0.000000 0.809022 +vn 0.951060 0.000000 0.309005 +vn 0.951060 0.000000 0.309005 +vn -0.875603 -0.000600 0.483031 +vn -0.987668 0.000000 0.156563 +vn -0.897678 0.000386 0.440653 +vn -0.734322 0.000585 0.678801 +vn -0.698585 -0.000393 0.715527 +vn -0.773546 -0.001118 0.633739 +vn -0.982545 0.000000 0.186022 +vn -0.858404 0.001554 0.512971 +vn 0.050111 -0.403653 0.913539 +vn 0.110216 -0.923642 -0.367066 +vn 0.048327 -0.404034 0.913466 +vn 0.110216 -0.923642 -0.367066 +vn 0.066458 -0.555618 0.828778 +vn 0.094812 -0.792335 -0.602674 +vn 0.066458 -0.555618 0.828778 +vn 0.094740 -0.792353 -0.602662 +vn 0.352445 -0.495364 0.793976 +vn 0.083072 -0.692267 0.716844 +vn 0.084358 -0.691775 0.717169 +vn 0.082692 -0.692312 0.716844 +vn 0.082601 -0.692226 0.716938 +vn 0.110322 -0.923638 -0.367045 +vn 0.068067 -0.553637 0.829972 +vn 0.110358 -0.923625 -0.367066 +vn 0.066302 -0.555636 0.828778 +vn 0.016660 -0.139495 0.990083 +vn 0.016713 -0.139489 0.990083 +vn 0.303200 -0.921233 -0.243721 +vn 0.048520 -0.404029 0.913458 +vn 0.110448 -0.923615 -0.367066 +vn 0.016660 -0.139495 0.990083 +vn 0.110435 -0.923616 -0.367066 +vn 0.048257 -0.404061 0.913458 +vn 0.048257 -0.404061 0.913458 +vn 0.110405 -0.923628 -0.367045 +vn 0.117228 -0.980869 -0.155415 +vn 0.117149 -0.980903 -0.155257 +vn 0.117324 -0.980882 -0.155257 +vn 0.117270 -0.980890 -0.155248 +vn -0.390541 -0.744777 0.541096 +vn 0.071874 -0.876512 0.475983 +vn 0.117050 -0.980917 -0.155248 +vn 0.117050 -0.980917 -0.155248 +vn 0.117163 -0.980903 -0.155248 +vn 0.117202 -0.980897 -0.155257 +vn 0.116719 -0.980955 -0.155257 +vn 0.117247 -0.980868 -0.155405 +vn 0.082901 -0.692196 0.716933 +vn 0.117231 -0.980894 0.155257 +vn 0.117146 -0.980879 0.155415 +vn 0.036982 -0.308789 -0.950411 +vn 0.112472 -0.941744 0.316966 +vn 0.112472 -0.941744 0.316966 +vn 0.074200 -0.619548 -0.781444 +vn 0.117270 -0.980889 0.155257 +vn 0.021492 -0.179952 -0.983441 +vn 0.117324 -0.980884 0.155248 +vn 0.021524 -0.179948 -0.983441 +vn -0.041361 -0.317176 -0.947464 +vn 0.066542 -0.555607 0.828778 +vn -0.196428 -0.793264 -0.576323 +vn 0.112640 -0.941724 0.316966 +vn 0.112584 -0.941688 0.317094 +vn -0.192742 -0.793363 -0.577431 +vn 0.117555 -0.980831 -0.155405 +vn 0.110399 -0.923629 -0.367045 +vn 0.117052 -0.980920 -0.155227 +vn 0.117050 -0.980917 0.155248 +vn 0.056654 -0.474368 -0.878502 +vn 0.117050 -0.980917 0.155248 +vn 0.149756 -0.461118 -0.874610 +vn 0.056738 -0.474358 -0.878502 +vn 0.112372 -0.941713 0.317094 +vn 0.056738 -0.474358 -0.878502 +vn 0.112372 -0.941713 0.317094 +vn 0.117162 -0.980902 0.155257 +vn 0.073995 -0.619573 -0.781444 +vn 0.117202 -0.980898 0.155248 +vn 0.073995 -0.619573 -0.781444 +vn 0.074106 -0.619559 -0.781444 +vn 0.112480 -0.941701 0.317094 +vn 0.074106 -0.619559 -0.781444 +vn 0.112523 -0.941738 0.316966 +vn 0.116716 -0.980931 0.155405 +vn 0.117249 -0.980891 0.155257 +vn 0.074992 -0.618565 -0.782146 +vn 0.073933 -0.619580 -0.781444 +vn -0.284060 -0.958806 0.000000 +vn 0.105114 -0.872744 0.476727 +vn 0.112564 -0.941691 0.317094 +vn 0.117188 -0.980874 -0.155415 +vn 0.112601 -0.941729 0.316966 +vn -0.822998 -0.175526 0.540246 +vn 0.094646 -0.792483 -0.602505 +vn 0.094646 -0.792483 -0.602505 +vn -0.135100 -0.418974 0.897891 +vn 0.104348 -0.873104 0.476237 +vn 0.104268 -0.873048 0.476357 +vn 0.103578 -0.873130 0.476357 +vn 0.094788 -0.792466 -0.602505 +vn 0.094787 -0.792466 -0.602505 +vn 0.104432 -0.873097 0.476230 +vn 0.110310 -0.923639 -0.367045 +vn 0.854847 -0.480251 0.196459 +vn 0.110310 -0.923639 -0.367045 +vn 0.117557 -0.980856 0.155248 +vn 0.117052 -0.980916 0.155248 +vn 0.117107 -0.980885 0.155405 +vn 0.113176 -0.940051 0.321706 +vn 0.112430 -0.941707 0.317094 +vn 0.094566 -0.792493 -0.602505 +vn 0.104179 -0.873058 0.476357 +vn 0.094566 -0.792493 -0.602505 +vn 0.104767 -0.873057 0.476230 +vn 0.104280 -0.873046 0.476357 +vn 0.105915 -0.872648 0.476727 +vn 0.117186 -0.980874 0.155415 +vn 0.104387 -0.873033 0.476357 +vn 0.104280 -0.873046 0.476357 +vn 0.110474 -0.923612 -0.367066 +vn 0.082672 -0.692223 0.716933 +vn 0.110424 -0.923626 -0.367045 +vn 0.082740 -0.692307 0.716844 +vn 0.082124 -0.692283 0.716938 +vn 0.112545 -0.941736 0.316966 +vn 0.082806 -0.692299 0.716844 +vn 0.094657 -0.792482 -0.602505 +vn 0.066359 -0.555629 0.828778 +vn 0.095709 -0.792237 -0.602662 +vn 0.066359 -0.555629 0.828778 +vn -0.339998 -0.622817 -0.704628 +vn -0.463812 -0.849612 -0.251073 +vn -0.463812 -0.849612 -0.251073 +vn -0.463812 -0.849612 0.251073 +vn -0.463812 -0.849612 0.251074 +vn -0.341426 -0.622059 -0.704607 +vn -0.123493 -0.229427 -0.965460 +vn -0.121910 -0.223314 -0.967093 +vn -0.121914 -0.223325 0.967090 +vn -0.340003 -0.622827 0.704617 +vn -0.340001 -0.622815 0.704628 +vn -0.340001 -0.622815 -0.704628 +vn -0.341411 -0.622045 -0.704627 +vn -0.340001 -0.622815 -0.704628 +vn -0.463050 -0.848215 -0.257131 +vn -0.463815 -0.849617 -0.251050 +vn -0.463807 -0.849615 -0.251073 +vn -0.462433 -0.850370 -0.251050 +vn -0.461700 -0.848950 0.257132 +vn -0.463815 -0.849617 0.251051 +vn -0.463812 -0.849612 0.251073 +vn -0.463810 -0.849620 0.251051 +vn -0.123492 -0.229425 0.965460 +vn -0.341428 -0.622060 0.704606 +vn -0.121910 -0.223314 0.967093 +vn -0.340001 -0.622815 0.704628 +vn -0.341411 -0.622045 0.704627 +vn -0.340001 -0.622815 0.704628 +vn -0.126185 -0.227933 -0.965466 +vn -0.338597 -0.623603 -0.704607 +vn -0.338590 -0.623597 -0.704616 +vn -0.463050 -0.848215 -0.257131 +vn -0.465188 -0.848860 -0.251072 +vn -0.464393 -0.847480 0.257132 +vn -0.463812 -0.849612 0.251074 +vn -0.121903 -0.223300 -0.967097 +vn -0.121899 -0.223295 -0.967099 +vn -0.126183 -0.227931 0.965466 +vn -0.338595 -0.623606 0.704606 +vn -0.338593 -0.623596 0.704616 +vn -0.340007 -0.622825 -0.704617 +vn -0.340007 -0.622825 -0.704617 +vn -0.463812 -0.849612 -0.251073 +vn -0.463812 -0.849612 -0.251073 +vn -0.463812 -0.849612 0.251073 +vn -0.463812 -0.849612 0.251074 +vn -0.121914 -0.223325 -0.967090 +vn -0.121903 -0.223300 0.967097 +vn -0.121899 -0.223295 0.967099 +vn -0.340007 -0.622825 0.704617 +vn -0.340007 -0.622825 0.704617 +vn -0.340007 -0.622825 -0.704617 +vn -0.340021 0.622851 -0.704586 +vn -0.340023 0.622863 -0.704575 +vn -0.463812 0.849612 -0.251073 +vn -0.463812 0.849612 -0.251073 +vn -0.463812 0.849612 0.251073 +vn -0.463812 0.849612 0.251073 +vn -0.126200 0.227949 -0.965460 +vn -0.121899 0.223295 -0.967099 +vn -0.121898 0.223293 0.967099 +vn -0.121904 0.223306 0.967096 +vn -0.340018 0.622853 0.704586 +vn -0.340027 0.622861 0.704575 +vn -0.338597 0.623603 -0.704607 +vn -0.340027 0.622861 -0.704575 +vn -0.338623 0.623626 -0.704574 +vn -0.340027 0.622861 -0.704575 +vn -0.463050 0.848215 -0.257131 +vn -0.463812 0.849612 -0.251073 +vn -0.463812 0.849612 -0.251073 +vn -0.465188 0.848860 -0.251072 +vn -0.464393 0.847480 0.257132 +vn -0.463812 0.849612 0.251074 +vn -0.463812 0.849612 0.251073 +vn -0.463812 0.849612 0.251073 +vn -0.126198 0.227947 0.965461 +vn -0.338608 0.623599 0.704606 +vn -0.121899 0.223295 0.967099 +vn -0.340027 0.622861 0.704575 +vn -0.338613 0.623632 0.704574 +vn -0.340027 0.622861 0.704575 +vn -0.123482 0.229408 -0.965466 +vn -0.341440 0.622100 -0.704564 +vn -0.341437 0.622077 -0.704585 +vn -0.463050 0.848215 -0.257131 +vn -0.462433 0.850370 -0.251050 +vn -0.461700 0.848950 0.257132 +vn -0.463815 0.849617 0.251051 +vn -0.121899 0.223295 -0.967099 +vn -0.123482 0.229405 0.965466 +vn -0.341449 0.622097 0.704562 +vn -0.341430 0.622081 0.704585 +vn -0.340021 0.622851 -0.704586 +vn -0.340021 0.622851 -0.704586 +vn -0.463810 0.849620 -0.251050 +vn -0.463812 0.849612 -0.251073 +vn -0.463815 0.849617 0.251051 +vn -0.463807 0.849615 0.251074 +vn -0.121898 0.223293 -0.967099 +vn -0.121904 0.223306 -0.967096 +vn -0.121899 0.223295 0.967099 +vn -0.340021 0.622851 0.704586 +vn -0.340021 0.622851 0.704586 +vn 0.108438 0.906625 -0.407766 +vn 0.108438 0.906625 -0.407766 +vn 0.108248 0.906647 -0.407766 +vn 0.108213 0.906645 -0.407780 +vn 0.115660 0.969276 0.217087 +vn 0.116850 0.979248 -0.165588 +vn 0.121242 0.978778 -0.165207 +vn 0.063246 0.964400 -0.256773 +vn 0.106324 0.906869 -0.407779 +vn 0.108378 0.906625 -0.407780 +vn 0.108378 0.906625 -0.407780 +vn 0.116741 0.979325 -0.165208 +vn 0.116704 0.979328 -0.165217 +vn 0.117159 0.979274 -0.165217 +vn 0.117159 0.979274 -0.165217 +vn 0.117128 0.979279 -0.165208 +vn 0.117088 0.979282 -0.165217 +vn 0.116923 0.979303 -0.165208 +vn 0.116923 0.979303 -0.165208 +vn 0.117064 0.979287 -0.165208 +vn 0.116957 0.979299 -0.165208 +vn 0.117064 0.979287 -0.165208 +vn 0.116173 0.969215 0.217087 +vn 0.115548 0.969315 0.216972 +vn 0.306421 0.689215 0.656574 +vn 0.105982 0.883939 0.455434 +vn 0.115961 0.969266 0.216972 +vn 0.115961 0.969266 0.216972 +vn 0.016687 0.139943 -0.990019 +vn 0.016713 0.139940 -0.990019 +vn 0.105756 0.883966 0.455434 +vn -0.024631 0.264922 -0.963955 +vn 0.105756 0.883966 0.455434 +vn 0.124436 0.365676 -0.922386 +vn 0.092333 0.771767 0.629167 +vn 0.115891 0.969274 0.216972 +vn 0.115891 0.969274 0.216972 +vn 0.105728 0.883969 0.455434 +vn 0.062272 0.506943 -0.859727 +vn 0.105695 0.883991 0.455400 +vn 0.045935 0.385227 -0.921678 +vn 0.046050 0.385227 -0.921672 +vn 0.115727 0.969294 0.216972 +vn 0.043520 0.385514 -0.921675 +vn 0.060624 0.507140 -0.859729 +vn 0.115727 0.969294 0.216972 +vn 0.060914 0.507106 -0.859729 +vn 0.060624 0.507140 -0.859729 +vn 0.115868 0.969277 0.216972 +vn 0.081860 0.665244 -0.742125 +vn 0.115762 0.969290 0.216972 +vn 0.084956 0.962669 0.257003 +vn 0.115868 0.969277 0.216972 +vn 0.347706 0.770985 -0.533557 +vn 0.105512 0.884012 0.455400 +vn 0.105543 0.883991 0.455434 +vn 0.104708 0.884091 0.455434 +vn 0.079617 0.665884 -0.741795 +vn 0.105671 0.883976 0.455434 +vn 0.105671 0.883976 0.455434 +vn 0.092685 0.771724 0.629167 +vn 0.099083 0.828188 -0.551623 +vn 0.092314 0.771822 0.629102 +vn 0.101421 0.828642 -0.550514 +vn 0.112435 0.905281 -0.409665 +vn 0.092153 0.771841 0.629102 +vn 0.092125 0.771849 0.629097 +vn 0.081164 0.665980 -0.741540 +vn 0.079504 0.665897 -0.741795 +vn 0.032554 0.709808 0.703643 +vn 0.092265 0.771832 0.629097 +vn 0.092265 0.771832 0.629097 +vn 0.040916 0.709094 -0.703926 +vn 0.079633 0.666164 -0.741541 +vn 0.095585 0.771431 0.629093 +vn 0.268152 0.386264 0.882550 +vn 0.079633 0.666164 -0.741541 +vn 0.069078 0.573250 0.816463 +vn 0.069845 0.667301 -0.741506 +vn 0.068476 0.573531 0.816317 +vn 0.070484 0.573290 0.816315 +vn 0.099109 0.828911 -0.550530 +vn 0.068559 0.573521 0.816317 +vn 0.099143 0.828917 -0.550516 +vn 0.068559 0.573521 0.816317 +vn 0.021563 0.180549 0.983330 +vn 0.021610 0.180543 0.983330 +vn -0.016545 0.264065 0.964363 +vn 0.050570 0.422823 0.904800 +vn 0.048867 0.423035 0.904795 +vn 0.050546 0.422835 0.904796 +vn 0.108046 0.906671 -0.407766 +vn 0.098938 0.828932 -0.550530 +vn 0.098970 0.828937 -0.550516 +vn 0.108467 0.906621 -0.407766 +vn 0.108467 0.906621 -0.407766 +vn 0.100406 0.828765 -0.550515 +vn 0.099090 0.828923 -0.550516 +vn 0.099090 0.828923 -0.550516 +vn 0.115488 -0.959456 0.257112 +vn 0.025222 -0.212146 -0.976912 +vn 0.025331 -0.212075 -0.976925 +vn 0.031633 -0.258611 -0.965463 +vn -0.004109 -0.614449 -0.788946 +vn 0.053777 -0.451604 -0.890597 +vn 0.053961 -0.451581 -0.890597 +vn 0.085317 -0.704465 -0.704592 +vn 0.074693 -0.625951 -0.776277 +vn 0.074196 -0.626010 -0.776277 +vn -0.242242 -0.886971 -0.393194 +vn 0.096251 -0.811371 -0.576552 +vn 0.096859 -0.811299 -0.576552 +vn 0.115807 -0.959418 -0.257111 +vn 0.109168 -0.913535 -0.391836 +vn 0.101156 -0.914463 -0.391823 +vn -0.924994 -0.379610 0.016807 +vn 0.117294 -0.981996 -0.148072 +vn 0.118365 -0.990963 0.063097 +vn 0.109354 -0.982913 -0.148067 +vn -0.031724 -0.951288 0.306666 +vn 0.112852 -0.944044 0.309911 +vn 0.099384 -0.857216 0.505275 +vn 0.102341 -0.856868 0.505276 +vn 0.084560 -0.721437 0.687298 +vn 0.084781 -0.704531 0.704591 +vn 0.083155 -0.721451 0.687455 +vn 0.086373 -0.721070 0.687458 +vn 0.017817 -0.149163 0.988652 +vn 0.051211 -0.435519 0.898721 +vn 0.017124 -0.149792 0.988569 +vn 0.032100 -0.258552 0.965464 +vn 0.050381 -0.435226 0.898911 +vn 0.051648 -0.435075 0.898912 +vn 0.115487 0.959456 -0.257112 +vn 0.032100 0.258555 -0.965463 +vn 0.017845 0.149400 -0.988616 +vn 0.051462 0.436087 -0.898432 +vn 0.017259 0.149932 -0.988546 +vn 0.084786 0.704529 -0.704592 +vn 0.084743 0.721968 -0.686717 +vn 0.051711 0.435620 -0.898644 +vn 0.050535 0.435760 -0.898643 +vn 0.082317 0.721992 -0.686987 +vn 0.086421 0.721508 -0.686992 +vn -0.030515 0.951376 -0.306517 +vn 0.098338 0.857612 -0.504808 +vn 0.112862 0.944112 -0.309700 +vn 0.102375 0.857137 -0.504813 +vn 0.115809 0.959417 0.257112 +vn 0.110602 0.990127 0.086112 +vn 0.117496 0.989333 0.086114 +vn -0.242522 0.887068 0.392803 +vn 0.101358 0.914569 0.391524 +vn 0.109185 0.913662 0.391536 +vn 0.085317 0.704467 0.704590 +vn 0.096876 0.811427 0.576369 +vn 0.095811 0.811554 0.576369 +vn -0.003513 0.614812 0.788665 +vn 0.074706 0.626058 0.776190 +vn 0.073768 0.626169 0.776190 +vn 0.025372 0.212412 0.976851 +vn 0.031629 0.258609 0.965464 +vn 0.025230 0.212504 0.976834 +vn 0.054007 0.451971 0.890396 +vn 0.053808 0.451995 0.890396 +vn 0.994503 -0.009859 0.104240 +vn 0.980340 -0.002797 0.197295 +vn 0.850135 0.000140 0.526565 +vn 0.803095 0.001934 -0.595848 +vn 0.770594 0.008580 0.637269 +vn 0.843359 -0.002883 0.537342 +vn 0.842093 0.004349 -0.539316 +vn 0.785558 -0.007390 0.618743 +vn 0.824092 -0.000095 0.566456 +vn 0.810716 -0.000000 0.585439 +vn 0.758707 0.000000 -0.651432 +vn 0.686671 -0.000000 0.726968 +vn 0.758707 0.000000 -0.651432 +vn 0.824016 0.000095 -0.566567 +vn 0.810731 0.000000 -0.585419 +vn 0.686671 0.000000 0.726968 +vn 0.770594 -0.008580 0.637269 +vn 0.289093 -0.000000 0.957301 +vn 0.289093 0.000000 0.957301 +vn 0.894397 -0.000458 0.447273 +vn 0.970170 -0.000445 0.242423 +vn 0.999966 -0.000218 0.008207 +vn 0.976127 -0.000207 -0.217200 +vn 0.911851 0.005052 -0.410491 +vn 0.914140 -0.000302 -0.405399 +vn 0.957361 0.000298 -0.288894 +vn 0.998670 -0.000317 -0.051565 +vn 0.913738 0.001051 0.406302 +vn 0.894349 0.000459 -0.447369 +vn 0.885972 0.009308 -0.463646 +vn 0.970123 0.000449 -0.242614 +vn 0.999967 0.000219 -0.008137 +vn 0.976113 0.000205 0.217261 +vn 0.914034 0.000299 0.405637 +vn 0.880832 0.000220 0.473429 +vn 0.957422 -0.000283 0.288692 +vn 0.814136 -0.002443 -0.580669 +vn 0.980677 -0.001774 -0.195624 +vn 0.850165 -0.000141 -0.526516 +vn 0.876770 -0.007467 -0.480853 +vn 0.998645 0.004855 0.051816 +vn 0.885974 -0.009071 -0.463647 +vn 0.994509 0.009302 0.104241 +vn 0.807440 0.005575 0.589924 +vn -0.258815 0.000684 0.965927 +vn -0.267266 0.000000 0.963623 +vn -0.541189 -0.000100 0.840901 +vn -0.531377 0.000000 0.847135 +vn -0.267266 0.000000 0.963623 +vn -0.586906 -0.000087 0.809655 +vn -0.554151 0.000078 0.832416 +vn -0.707108 -0.005194 0.707087 +vn -0.556832 0.000147 0.830625 +vn -0.258815 -0.000684 0.965927 +vn -0.681929 0.002990 0.731412 +vn -0.965912 -0.005533 0.258810 +vn -0.707109 0.004868 0.707088 +vn -0.989809 0.000000 0.142402 +vn -0.984686 0.000476 0.174337 +vn -0.965917 0.004508 0.258812 +vn -0.627701 -0.001379 0.778453 +vn -0.773529 -0.000705 0.633760 +vn -0.913183 0.000619 0.407549 +vn -0.987624 0.000000 0.156839 +vn -0.897444 -0.000375 0.441127 +vn -0.733928 -0.000577 0.679227 +vn -0.698811 0.000387 0.715306 +vn -0.875847 0.000594 0.482588 +vn -0.982422 0.000000 0.186673 +vn -0.857874 -0.002182 0.513855 +vn 0.258815 0.000000 -0.965927 +vn 0.258815 0.000000 -0.965927 +vn 0.707117 0.000000 -0.707096 +vn 0.707117 0.000000 -0.707096 +vn 0.965927 0.000000 -0.258815 +vn 0.965927 0.000000 -0.258815 +vn -0.965927 0.000000 -0.258815 +vn -0.965927 0.000000 -0.258815 +vn -0.707105 0.000000 -0.707109 +vn -0.707105 0.000000 -0.707109 +vn -0.258818 0.000000 -0.965926 +vn -0.258818 0.000000 -0.965926 +vn 0.965927 -0.000000 0.258815 +vn 0.965927 0.000000 0.258815 +vn 0.707105 -0.000000 0.707109 +vn 0.707105 0.000000 0.707109 +vn 0.258818 -0.000000 0.965926 +vn 0.258818 0.000000 0.965926 +vn -0.965927 0.000000 -0.258814 +vn -0.965927 0.000000 -0.258814 +vn -0.707075 0.000000 -0.707139 +vn -0.707075 0.000000 -0.707139 +vn -0.258845 0.000000 -0.965919 +vn -0.258845 0.000000 -0.965919 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.113513 -0.959692 0.257112 +vn -0.018967 -0.158794 0.987130 +vn -0.054844 -0.457377 0.887580 +vn -0.019228 -0.159077 0.987079 +vn -0.029724 -0.258838 0.965463 +vn -0.087293 -0.725549 0.682611 +vn -0.083354 -0.704701 0.704591 +vn -0.054998 -0.457044 0.887742 +vn -0.055247 -0.457014 0.887742 +vn -0.088951 -0.725034 0.682945 +vn -0.086276 -0.725355 0.682947 +vn -0.231772 -0.913711 0.333787 +vn -0.104185 -0.852185 0.512764 +vn -0.101833 -0.852468 0.512765 +vn -0.111616 -0.935123 0.336284 +vn -0.186066 -0.982452 -0.012932 +vn -0.113436 -0.959701 -0.257111 +vn -0.119276 -0.992777 -0.012960 +vn -0.324451 -0.881384 -0.343358 +vn -0.111030 -0.930162 -0.349957 +vn -0.179316 -0.919760 -0.349125 +vn -0.083309 -0.704705 -0.704592 +vn -0.101300 -0.834430 -0.541725 +vn -0.099717 -0.834620 -0.541725 +vn -0.102639 -0.649616 -0.753302 +vn -0.078677 -0.657908 -0.748977 +vn -0.080167 -0.657729 -0.748976 +vn -0.028389 -0.235748 -0.971400 +vn -0.028137 -0.235567 -0.971451 +vn -0.030492 -0.258749 -0.965463 +vn -0.056759 -0.473080 -0.879189 +vn -0.056500 -0.473111 -0.879189 +vn -0.113512 0.959692 -0.257111 +vn -0.028161 0.235764 0.971402 +vn -0.030494 0.258746 0.965464 +vn -0.028405 0.235939 0.971353 +vn -0.102426 0.649905 0.753082 +vn -0.056708 0.472956 0.879259 +vn -0.056484 0.472983 0.879259 +vn -0.083311 0.704707 0.704590 +vn -0.078696 0.658072 0.748831 +vn -0.080307 0.657879 0.748830 +vn -0.323884 0.881577 0.343396 +vn -0.099741 0.834820 0.541413 +vn -0.101455 0.834614 0.541412 +vn -0.113436 0.959701 0.257112 +vn -0.111030 0.930160 0.349963 +vn -0.179316 0.919758 0.349129 +vn -0.999646 -0.025197 -0.008579 +vn -0.186414 0.977051 0.103054 +vn -0.117967 0.987629 0.103305 +vn -0.118107 0.988803 -0.091214 +vn -0.230826 0.913930 -0.333843 +vn -0.111615 0.935113 -0.336311 +vn -0.101877 0.852835 -0.512147 +vn -0.104355 0.852536 -0.512146 +vn -0.083351 0.704700 -0.704592 +vn -0.087375 0.725851 -0.682279 +vn -0.089090 0.725319 -0.682624 +vn -0.086314 0.725652 -0.682626 +vn -0.029724 0.258841 -0.965463 +vn -0.018983 0.158931 -0.987107 +vn -0.054872 0.457613 -0.887457 +vn -0.019234 0.159203 -0.987058 +vn -0.055296 0.457232 -0.887627 +vn -0.055024 0.457264 -0.887627 +vn -0.106394 -0.889893 0.443588 +vn -0.106022 -0.890144 0.443173 +vn -0.116026 -0.972127 0.203732 +vn -0.116007 -0.972131 0.203725 +vn -0.151396 -0.954495 0.256942 +vn -0.107454 -0.889973 0.443172 +vn -0.106314 -0.890110 0.443173 +vn -0.106314 -0.890110 0.443173 +vn -0.115808 -0.972153 0.203732 +vn -0.115808 -0.972153 0.203732 +vn -0.116319 -0.976294 -0.182536 +vn -0.116284 -0.972096 0.203732 +vn -0.116074 -0.972146 0.203614 +vn -0.116498 -0.976248 -0.182669 +vn -0.116826 -0.976234 -0.182536 +vn -0.116223 -0.972104 0.203732 +vn -0.115793 -0.972180 0.203614 +vn -0.116299 -0.976272 -0.182669 +vn -0.116299 -0.976272 -0.182669 +vn -0.116154 -0.972112 0.203732 +vn -0.116095 -0.972120 0.203725 +vn -0.116109 -0.972119 0.203725 +vn -0.107632 -0.899408 -0.423652 +vn 0.046469 -0.821670 -0.568066 +vn -0.107113 -0.899242 -0.424136 +vn -0.107149 -0.899465 -0.423652 +vn -0.107149 -0.899465 -0.423652 +vn -0.020667 -0.172052 0.984871 +vn -0.116780 -0.976239 -0.182536 +vn -0.116563 -0.976240 -0.182669 +vn 0.301824 -0.339507 0.890863 +vn -0.095308 -0.813286 -0.574005 +vn -0.096886 -0.813305 -0.573714 +vn -0.020547 -0.172045 0.984875 +vn -0.080889 -0.252394 0.964238 +vn -0.020549 -0.172044 0.984875 +vn -0.116718 -0.976247 -0.182536 +vn -0.049619 -0.415018 0.908459 +vn -0.116281 -0.976274 -0.182669 +vn -0.049705 -0.414974 0.908475 +vn -0.107590 -0.899413 -0.423652 +vn -0.107376 -0.899300 -0.423946 +vn -0.051407 -0.414777 0.908470 +vn -0.049567 -0.414997 0.908471 +vn -0.049586 -0.414988 0.908475 +vn -0.116647 -0.976230 -0.182669 +vn 0.041523 -0.786129 0.616666 +vn -0.160422 -0.953046 -0.256843 +vn -0.116587 -0.976237 -0.182669 +vn -0.116647 -0.976230 -0.182669 +vn -0.071582 -0.598816 0.797681 +vn -0.107533 -0.899420 -0.423652 +vn -0.107116 -0.899331 -0.423946 +vn -0.109016 -0.899249 -0.423634 +vn -0.107471 -0.899435 -0.423635 +vn -0.107427 -0.899432 -0.423652 +vn -0.094230 -0.791016 0.604495 +vn -0.097105 -0.813279 -0.573714 +vn -0.106238 -0.890119 0.443173 +vn -0.097297 -0.813372 -0.573549 +vn -0.097246 -0.813379 -0.573549 +vn -0.071582 -0.598723 0.797751 +vn -0.096870 -0.813307 -0.573714 +vn -0.071327 -0.598847 0.797681 +vn -0.135904 -0.697399 -0.703680 +vn -0.106039 -0.890143 0.443173 +vn -0.095144 -0.813512 -0.573713 +vn -0.097137 -0.813275 -0.573714 +vn -0.097137 -0.813275 -0.573714 +vn -0.106039 -0.890143 0.443173 +vn 0.198760 -0.465732 -0.862315 +vn -0.139602 -0.696814 0.703535 +vn -0.068920 -0.599034 0.797752 +vn -0.073192 -0.627946 -0.774808 +vn -0.071539 -0.598723 0.797755 +vn -0.075062 -0.628663 -0.774047 +vn -0.071512 -0.598732 0.797751 +vn -0.075160 -0.628651 -0.774047 +vn -0.094582 -0.790993 0.604470 +vn -0.075160 -0.628651 -0.774047 +vn -0.094617 -0.790970 0.604495 +vn -0.071717 -0.629054 -0.774046 +vn -0.116865 -0.976224 -0.182560 +vn -0.075086 -0.628655 -0.774051 +vn -0.116370 -0.972088 0.203725 +vn -0.075116 -0.628656 -0.774047 +vn -0.037747 -0.315836 -0.948062 +vn -0.053831 -0.450352 -0.891227 +vn -0.053845 -0.450365 -0.891220 +vn -0.106279 -0.890114 0.443173 +vn -0.106450 -0.889886 0.443588 +vn -0.054824 -0.450262 -0.891212 +vn -0.053815 -0.450383 -0.891212 +vn -0.053792 -0.450371 -0.891220 +vn -0.094218 -0.791036 0.604470 +vn -0.085128 -0.251832 -0.964020 +vn -0.013021 -0.109025 -0.993954 +vn -0.094218 -0.791036 0.604470 +vn -0.012997 -0.109027 -0.993954 +vn -0.037700 -0.315842 -0.948062 +vn -0.062365 -0.312804 -0.947768 +vn -0.037724 -0.315846 -0.948060 +vn -0.091703 -0.791334 0.604468 +vn -0.094477 -0.791006 0.604470 +vn -0.094477 -0.791006 0.604470 +vn 0.098849 -0.235777 -0.966767 +vn -0.007245 -0.711658 -0.702489 +vn 0.134635 -0.698687 -0.702645 +vn -0.007613 -0.711242 -0.702906 +vn 0.134655 -0.698655 -0.702673 +vn 0.373444 -0.891670 -0.255859 +vn -0.096399 0.244064 -0.964956 +vn -0.098851 0.235781 -0.966766 +vn -0.004227 -0.261791 -0.965115 +vn 0.004227 0.261791 -0.965115 +vn 0.048390 -0.251067 -0.966760 +vn -0.008281 -0.255971 -0.966649 +vn 0.048383 -0.251082 -0.966756 +vn -0.280946 0.653290 -0.703051 +vn -0.280408 0.654181 -0.702437 +vn 0.017178 0.710986 -0.702996 +vn -0.048400 0.251066 -0.966759 +vn -0.001481 0.255188 -0.966890 +vn -0.048392 0.251081 -0.966756 +vn -0.373779 0.891527 -0.255868 +vn -0.015240 -0.966600 -0.255837 +vn -0.368428 0.895436 -0.249911 +vn 0.009314 0.966716 -0.255681 +vn 0.017977 0.711545 -0.702411 +vn -0.134653 0.698630 -0.702698 +vn -0.134676 0.698606 -0.702718 +vn -0.367975 0.893985 0.255704 +vn -0.374396 0.893000 0.249756 +vn -0.183240 0.950820 -0.249729 +vn 0.015596 0.968178 -0.249776 +vn -0.183258 0.950812 -0.249747 +vn -0.280176 0.653666 0.703009 +vn -0.281178 0.653900 0.702391 +vn 0.009314 0.966716 0.255682 +vn -0.183240 0.950815 0.249748 +vn -0.183258 0.950816 0.249730 +vn 0.015596 0.968178 0.249777 +vn -0.101235 0.241469 0.965114 +vn -0.093461 0.237449 0.966893 +vn -0.134649 0.698609 0.702719 +vn 0.017180 0.710987 0.702995 +vn 0.017977 0.711545 0.702411 +vn -0.134680 0.698624 0.702699 +vn 0.098849 -0.235777 0.966767 +vn 0.104820 -0.239516 0.965218 +vn -0.004227 -0.261788 0.965116 +vn -0.048403 0.251080 0.966755 +vn 0.004227 0.261788 0.965116 +vn -0.048390 0.251069 0.966759 +vn -0.001479 0.255188 0.966890 +vn 0.271614 -0.657837 0.702479 +vn 0.271103 -0.657598 0.702899 +vn 0.377908 -0.891698 0.249120 +vn -0.007244 -0.711659 0.702487 +vn -0.008279 -0.255971 0.966649 +vn 0.048392 -0.251081 0.966756 +vn 0.048380 -0.251069 0.966759 +vn -0.019251 -0.966501 0.255939 +vn 0.183206 -0.950650 0.250401 +vn -0.015268 -0.968326 0.249220 +vn -0.007613 -0.711242 0.702906 +vn 0.134660 -0.698681 0.702646 +vn 0.134630 -0.698659 0.702674 +vn 0.183221 -0.950640 0.250429 +vn 0.373443 -0.891670 0.255860 +vn 0.271613 -0.657835 -0.702480 +vn 0.377908 -0.891698 -0.249119 +vn 0.104823 -0.239517 -0.965217 +vn 0.271105 -0.657598 -0.702899 +vn 0.183206 -0.950650 -0.250400 +vn -0.019379 -0.968286 -0.249090 +vn 0.183221 -0.950640 -0.250428 +vn 0.463812 -0.849612 0.251073 +vn 0.463812 -0.849612 0.251073 +vn 0.463812 -0.849612 -0.251073 +vn 0.463812 -0.849612 -0.251073 +vn 0.341445 -0.622099 0.704562 +vn 0.123480 -0.229406 0.965466 +vn 0.121896 -0.223290 0.967100 +vn 0.121896 -0.223290 -0.967100 +vn 0.340027 -0.622861 -0.704575 +vn 0.340027 -0.622861 -0.704575 +vn 0.461700 -0.848950 0.257132 +vn 0.340027 -0.622861 0.704575 +vn 0.341435 -0.622091 0.704574 +vn 0.340027 -0.622861 0.704575 +vn 0.463812 -0.849612 0.251073 +vn 0.463812 -0.849612 0.251073 +vn 0.463807 -0.849615 0.251074 +vn 0.461700 -0.848950 -0.257131 +vn 0.463812 -0.849612 -0.251073 +vn 0.463807 -0.849615 -0.251073 +vn 0.463812 -0.849612 -0.251073 +vn 0.123481 -0.229409 -0.965466 +vn 0.341444 -0.622098 -0.704564 +vn 0.121896 -0.223290 -0.967100 +vn 0.340027 -0.622861 -0.704575 +vn 0.341435 -0.622091 -0.704574 +vn 0.340027 -0.622861 -0.704575 +vn 0.126198 -0.227947 0.965461 +vn 0.338602 -0.623602 0.704606 +vn 0.338618 -0.623616 0.704585 +vn 0.463042 -0.848213 -0.257153 +vn 0.463042 -0.848212 0.257154 +vn 0.465196 -0.848862 0.251051 +vn 0.338601 -0.623601 -0.704607 +vn 0.465196 -0.848862 -0.251050 +vn 0.121898 -0.223293 0.967099 +vn 0.121899 -0.223295 0.967099 +vn 0.126200 -0.227949 -0.965460 +vn 0.338618 -0.623616 -0.704585 +vn 0.340027 -0.622861 0.704575 +vn 0.340018 -0.622853 0.704586 +vn 0.463815 -0.849617 0.251051 +vn 0.463807 -0.849615 0.251074 +vn 0.463810 -0.849620 -0.251050 +vn 0.463812 -0.849612 -0.251073 +vn 0.121896 -0.223290 0.967100 +vn 0.121898 -0.223293 -0.967099 +vn 0.340021 -0.622851 -0.704586 +vn 0.121899 -0.223295 -0.967099 +vn 0.340023 -0.622863 -0.704575 +vn 0.340027 -0.622861 0.704575 +vn 0.340027 -0.622861 0.704575 +vn -0.367870 -0.404104 -0.837479 +vn -0.240999 0.907087 0.345127 +vn 0.224153 0.911803 0.344052 +vn -0.232988 -0.948164 -0.216107 +vn 0.243672 -0.943532 -0.224434 +vn 0.224130 0.911869 0.343890 +vn 0.211362 -0.945480 -0.247779 +vn -0.233133 -0.948153 -0.215996 +vn 0.289826 0.319059 0.902332 +vn -0.212882 -0.866049 -0.452372 +vn -0.208787 0.685932 0.697069 +vn -0.212995 -0.866252 -0.451929 +vn 0.197885 0.805090 0.559171 +vn 0.226391 -0.862027 -0.453493 +vn 0.197885 0.805093 0.559167 +vn -0.210347 0.800754 0.560844 +vn 0.103282 0.073511 0.991932 +vn -0.220434 -0.237400 -0.946071 +vn 0.125262 0.132683 0.983211 +vn 0.091158 0.055959 -0.994263 +vn -0.042996 -0.048525 -0.997896 +vn 0.150276 -0.708778 -0.689239 +vn -0.036685 -0.041255 0.998475 +vn 0.199204 -0.728004 -0.655995 +vn -0.180302 -0.733506 -0.655332 +vn 0.154503 0.628590 0.762236 +vn -0.180314 -0.733511 -0.655323 +vn 0.154504 0.628577 0.762246 +vn -0.162787 0.624654 0.763746 +vn -0.130839 -0.532248 -0.836417 +vn -0.130883 -0.532342 -0.836350 +vn 0.140472 -0.528362 -0.837318 +vn -0.096558 0.243949 0.964969 +vn -0.111100 0.416943 0.902117 +vn 0.103283 0.420191 0.901539 +vn 0.103284 0.420201 0.901534 +vn 0.118325 0.125268 -0.985042 +vn 0.400902 0.401804 -0.823305 +vn -0.225865 -0.293267 0.928967 +vn -0.214126 -0.230806 0.949146 +vn 0.283413 0.312311 -0.906719 +vn 0.037929 -0.274701 -0.960781 +vn -0.077451 -0.315144 -0.945878 +vn -0.077493 -0.315188 -0.945860 +vn -0.361969 -0.397497 0.843193 +vn 0.077991 -0.312879 -0.946586 +vn 0.043541 0.177167 0.983217 +vn -0.015591 -0.063438 -0.997864 +vn -0.046370 0.175701 0.983351 +vn -0.015591 -0.063438 -0.997864 +vn 0.043543 0.177151 0.983220 +vn 0.016603 -0.062912 -0.997881 +vn 0.041561 -0.272832 0.961164 +vn -0.013273 -0.053990 0.998453 +vn -0.013276 -0.054021 0.998452 +vn 0.429735 0.471062 -0.770343 +vn 0.014137 -0.053567 0.998464 +vn -0.501604 -0.571765 0.649214 +vn -0.507171 -0.549366 0.664059 +vn -0.098352 0.242992 -0.965029 +vn 0.041109 0.167271 -0.985053 +vn 0.041125 0.167295 -0.985049 +vn -0.652614 -0.722220 0.229113 +vn -0.043783 0.165900 -0.985170 +vn -0.649854 -0.723963 0.231446 +vn -0.599821 -0.656149 0.457912 +vn 0.614604 0.638177 -0.463672 +vn -0.075307 -0.306296 0.948953 +vn -0.075303 -0.306309 0.948949 +vn 0.554682 0.606958 -0.569148 +vn -0.108870 0.408016 -0.906460 +vn 0.075456 -0.304072 0.949656 +vn 0.101085 0.411214 -0.905917 +vn 0.157230 -0.706219 0.690314 +vn -0.128722 -0.523748 0.842092 +vn 0.137928 -0.519636 0.843181 +vn 0.101066 0.411170 -0.905939 +vn -0.128698 -0.523452 0.842279 +vn -0.178681 -0.726914 0.663076 +vn 0.629567 0.691545 -0.354133 +vn 0.197798 -0.721407 0.663662 +vn -0.178660 -0.726937 0.663055 +vn 0.152581 0.620754 -0.769015 +vn 0.216611 -0.944194 0.248148 +vn -0.232730 -0.947112 0.220944 +vn 0.243399 -0.942474 0.229127 +vn -0.209965 0.685438 -0.697201 +vn -0.232774 -0.947109 0.220911 +vn -0.160846 0.616811 -0.770502 +vn -0.212361 -0.864054 0.456413 +vn 0.152561 0.620722 -0.769044 +vn 0.225942 -0.859651 0.458204 +vn -0.212358 -0.863917 0.456675 +vn 0.671047 0.732589 -0.114059 +vn 0.690578 0.723194 -0.009618 +vn 0.196493 0.799468 -0.567663 +vn 0.196509 0.799496 -0.567618 +vn -0.208764 0.795169 -0.569319 +vn 0.671596 0.733457 0.104880 +vn 0.223335 0.908634 -0.352854 +vn 0.223355 0.908655 -0.352787 +vn -0.240063 0.903917 -0.353984 +vn -0.272109 0.928788 -0.251612 +vn 0.620291 0.645047 0.446266 +vn 0.631744 0.694039 0.345267 +vn 0.237174 0.964799 -0.113626 +vn 0.237154 0.964792 -0.113731 +vn -0.253538 0.960562 -0.114186 +vn -0.650592 -0.724788 -0.226744 +vn -0.653356 -0.723041 -0.224361 +vn 0.558625 0.611196 0.560694 +vn -0.504730 -0.582290 -0.637327 +vn -0.253797 0.961544 0.104972 +vn -0.271569 0.928954 0.251583 +vn -0.601460 -0.657610 -0.453647 +vn 0.237413 0.965771 0.104507 +vn 0.237418 0.965765 0.104546 +vn 0.410938 0.415373 0.811539 +vn -0.511363 -0.554688 -0.656376 +vn 0.435042 0.477150 0.763588 +vn -0.235567 -0.311156 -0.920701 +vn 0.097995 -0.041000 -0.994342 +vn 0.125808 0.000000 0.992055 +vn 0.116122 0.048709 0.992040 +vn -0.332095 -0.137171 0.933219 +vn -0.323527 -0.134374 0.936629 +vn -0.350267 0.000000 0.936650 +vn 0.524390 -0.217102 -0.823336 +vn -0.350267 0.000000 0.936650 +vn 0.519331 -0.214481 -0.827221 +vn -0.898403 -0.371561 0.234124 +vn -0.697913 -0.289665 0.654990 +vn -0.973761 0.000000 0.227571 +vn -0.899649 -0.372633 0.227543 +vn -0.757073 0.000000 0.653330 +vn -0.973761 0.000000 0.227571 +vn 0.818076 -0.338270 -0.465107 +vn -0.757073 0.000000 0.653330 +vn -0.699332 -0.290063 0.653298 +vn 0.821549 -0.340387 -0.457378 +vn 0.923657 -0.383100 -0.009605 +vn 0.923654 -0.383111 -0.009426 +vn 0.826055 -0.342289 0.447740 +vn 0.829955 -0.343234 0.439734 +vn 0.539732 -0.222919 0.811786 +vn 0.534838 -0.221385 0.815437 +vn 0.119141 -0.049717 0.991632 +vn 0.116116 -0.048708 0.992041 +vn -0.332095 0.137171 0.933219 +vn -0.323540 0.134378 0.936624 +vn -0.697893 0.289659 0.655014 +vn -0.699332 0.290063 0.653298 +vn -0.899836 0.372143 0.227606 +vn -0.899445 -0.371999 -0.229382 +vn -0.974878 0.000000 -0.222741 +vn -0.900677 -0.373059 -0.222728 +vn -0.898202 0.372034 0.234147 +vn -0.974878 -0.000000 -0.222741 +vn -0.706882 -0.293139 -0.643730 +vn -0.767068 -0.000000 -0.641566 +vn -0.708516 -0.294055 -0.641511 +vn -0.767068 0.000000 -0.641566 +vn -0.349055 -0.145010 -0.925815 +vn -0.369012 -0.000000 -0.929425 +vn -0.369012 0.000000 -0.929425 +vn -0.341001 -0.140881 -0.929446 +vn 0.097995 0.041000 -0.994342 +vn 0.100343 0.042170 -0.994059 +vn 0.106152 0.000000 -0.994350 +vn 0.106152 0.000000 -0.994350 +vn 0.524373 0.217093 -0.823349 +vn 0.519331 0.214481 -0.827221 +vn 0.561949 0.000000 -0.827172 +vn 0.561949 0.000000 -0.827172 +vn 0.821534 0.340378 -0.457410 +vn 0.889262 0.000000 -0.457398 +vn 0.818091 0.338279 -0.465075 +vn 0.889262 0.000000 -0.457398 +vn 0.923658 0.383097 -0.009645 +vn -0.899445 0.371999 -0.229382 +vn 0.999956 0.000000 -0.009410 +vn -0.900677 0.373059 -0.222728 +vn 0.923653 0.383114 -0.009383 +vn 0.999956 0.000000 -0.009410 +vn 0.826056 0.342287 0.447740 +vn -0.706862 0.293131 -0.643754 +vn 0.829956 0.343232 0.439734 +vn 0.898143 0.000000 0.439704 +vn -0.708498 0.294047 -0.641535 +vn 0.898143 0.000000 0.439704 +vn 0.539732 0.222918 0.811786 +vn -0.349068 0.145016 -0.925809 +vn 0.534838 0.221383 0.815437 +vn 0.578870 0.000000 0.815420 +vn -0.341001 0.140881 -0.929446 +vn 0.578870 0.000000 0.815420 +vn 0.119136 0.049716 0.991632 +vn 0.125808 0.000000 0.992055 +vn 0.100339 -0.042168 -0.994059 +vn 0.620291 -0.645047 0.446266 +vn 0.224153 -0.911806 0.344043 +vn 0.224150 -0.911803 0.344052 +vn -0.650665 0.724720 -0.226749 +vn -0.233131 0.948130 -0.216099 +vn -0.653344 0.723028 -0.224439 +vn 0.631736 -0.693991 0.345379 +vn -0.233014 0.948181 -0.216002 +vn -0.096560 -0.243975 0.964962 +vn -0.111090 -0.416821 0.902175 +vn -0.504751 0.582208 -0.637386 +vn 0.197919 -0.805087 0.559162 +vn -0.601529 0.657553 -0.453638 +vn 0.558625 -0.611196 0.560694 +vn -0.212834 0.866063 -0.452367 +vn -0.212839 0.865875 -0.452725 +vn 0.197914 -0.805080 0.559174 +vn 0.037926 0.274673 -0.960789 +vn 0.077980 0.312839 -0.946600 +vn -0.046377 -0.175726 0.983346 +vn 0.016603 0.062912 -0.997881 +vn 0.041558 0.272805 0.961172 +vn -0.180326 0.733559 -0.655266 +vn 0.014137 0.053567 0.998464 +vn -0.511349 0.554751 -0.656334 +vn 0.410938 -0.415373 0.811539 +vn -0.180317 0.733569 -0.655257 +vn 0.154537 -0.628587 0.762231 +vn 0.154524 -0.628569 0.762249 +vn -0.235592 0.311174 -0.920688 +vn 0.435042 -0.477150 0.763588 +vn -0.130814 0.532250 -0.836420 +vn -0.130809 0.532127 -0.836498 +vn -0.367716 0.403999 -0.837598 +vn 0.103251 -0.420069 0.901599 +vn 0.103303 -0.420192 0.901536 +vn 0.289826 -0.319059 0.902332 +vn -0.098354 -0.243017 -0.965023 +vn -0.043790 -0.165925 -0.985166 +vn 0.075446 0.304035 0.949669 +vn -0.108864 -0.407909 -0.906509 +vn 0.157294 0.706195 0.690324 +vn 0.138008 0.519910 0.842999 +vn -0.077464 0.315182 -0.945864 +vn -0.220456 0.237422 -0.946060 +vn -0.077474 0.315149 -0.945875 +vn 0.103285 -0.073520 0.991931 +vn 0.043555 -0.177177 0.983215 +vn 0.091153 -0.055955 -0.994264 +vn 0.043546 -0.177164 0.983217 +vn -0.015595 0.063438 -0.997864 +vn 0.125262 -0.132683 0.983211 +vn -0.015595 0.063436 -0.997864 +vn -0.042996 0.048525 -0.997896 +vn -0.013281 0.054021 0.998452 +vn -0.013279 0.054016 0.998452 +vn -0.209965 -0.685387 -0.697252 +vn -0.036699 0.041270 0.998474 +vn -0.160877 -0.616807 -0.770498 +vn 0.197892 0.721393 0.663650 +vn 0.118312 -0.125253 -0.985045 +vn 0.243399 0.942474 0.229127 +vn 0.041117 -0.167297 -0.985049 +vn 0.041119 -0.167269 -0.985053 +vn 0.216729 0.944188 0.248066 +vn 0.226053 0.859628 0.458193 +vn -0.225865 0.293267 0.928967 +vn -0.075300 0.306299 0.948953 +vn -0.075274 0.306272 0.948963 +vn -0.208764 -0.795169 -0.569319 +vn -0.214126 0.230806 0.949146 +vn 0.101081 -0.411282 -0.905886 +vn 0.400918 -0.401841 -0.823279 +vn 0.101070 -0.411107 -0.905967 +vn -0.128766 0.523730 0.842096 +vn -0.128656 0.523469 0.842275 +vn 0.283468 -0.312373 -0.906680 +vn -0.361786 0.397360 0.843336 +vn -0.240080 -0.903974 -0.353825 +vn -0.501625 0.571683 0.649270 +vn -0.178686 0.726934 0.663052 +vn -0.272073 -0.928799 -0.251610 +vn -0.178731 0.726952 0.663020 +vn 0.152595 -0.620753 -0.769013 +vn -0.507156 0.549427 0.664020 +vn -0.649854 0.723963 0.231446 +vn 0.152599 -0.620706 -0.769050 +vn -0.232873 0.947082 0.220918 +vn -0.652614 0.722220 0.229113 +vn -0.232890 0.947075 0.220933 +vn 0.429735 -0.471062 -0.770343 +vn -0.212438 0.863902 0.456667 +vn -0.212268 0.863554 0.457402 +vn -0.599585 0.655845 0.458656 +vn -0.253501 -0.960572 -0.114187 +vn 0.614574 -0.638162 -0.463732 +vn 0.554682 -0.606958 -0.569148 +vn 0.196532 -0.799488 -0.567621 +vn 0.196533 -0.799462 -0.567658 +vn -0.271569 -0.928954 0.251583 +vn -0.253766 -0.961577 0.104750 +vn 0.629546 -0.691563 -0.354136 +vn 0.223375 -0.908649 -0.352789 +vn 0.223363 -0.908689 -0.352693 +vn -0.240999 -0.907087 0.345127 +vn 0.690589 -0.723184 -0.009541 +vn 0.671012 -0.732597 -0.114216 +vn 0.237151 -0.964781 -0.113832 +vn 0.237136 -0.964796 -0.113731 +vn 0.211354 0.945505 -0.247687 +vn 0.243678 0.943555 -0.224332 +vn -0.208785 -0.685882 0.697119 +vn -0.210347 -0.800754 0.560844 +vn 0.237425 -0.965792 0.104282 +vn 0.671617 -0.733437 0.104879 +vn 0.226429 0.861612 -0.454263 +vn 0.237377 -0.965776 0.104545 +vn 0.150276 0.708778 -0.689239 +vn 0.199310 0.728043 -0.655919 +vn -0.162818 -0.624650 0.763742 +vn 0.140472 0.528362 -0.837318 +vn 0.463823 0.849631 0.250991 +vn 0.463823 0.849631 0.250991 +vn 0.463823 0.849631 -0.250990 +vn 0.463823 0.849631 -0.250990 +vn 0.126183 0.227931 0.965466 +vn 0.121899 0.223295 0.967099 +vn 0.121903 0.223300 -0.967097 +vn 0.121907 0.223309 -0.967095 +vn 0.340007 0.622825 -0.704617 +vn 0.340007 0.622825 -0.704617 +vn 0.338602 0.623602 0.704606 +vn 0.340001 0.622815 0.704628 +vn 0.338585 0.623587 0.704627 +vn 0.340003 0.622827 0.704617 +vn 0.463052 0.848231 0.257073 +vn 0.463052 0.848231 -0.257073 +vn 0.463820 0.849639 0.250968 +vn 0.463823 0.849631 0.250991 +vn 0.465206 0.848880 0.250968 +vn 0.338601 0.623601 -0.704607 +vn 0.463818 0.849634 -0.250990 +vn 0.465207 0.848881 -0.250967 +vn 0.463825 0.849636 -0.250967 +vn 0.126185 0.227933 -0.965466 +vn 0.121899 0.223295 -0.967099 +vn 0.340007 0.622825 -0.704617 +vn 0.338585 0.623587 -0.704627 +vn 0.339998 0.622817 -0.704628 +vn 0.341424 0.622062 0.704606 +vn 0.123491 0.229425 0.965461 +vn 0.461700 0.848950 0.257132 +vn 0.341416 0.622055 0.704616 +vn 0.463807 0.849615 0.251074 +vn 0.461700 0.848950 -0.257131 +vn 0.463807 0.849615 -0.251073 +vn 0.121907 0.223309 0.967095 +vn 0.123492 0.229428 -0.965460 +vn 0.341423 0.622061 -0.704607 +vn 0.341416 0.622055 -0.704616 +vn 0.340007 0.622825 0.704617 +vn 0.340007 0.622825 0.704617 +vn 0.463831 0.849602 0.251074 +vn 0.463823 0.849631 0.250991 +vn 0.463841 0.849621 -0.250990 +vn 0.463812 0.849612 -0.251073 +vn 0.121903 0.223300 0.967097 +vn 0.121907 0.223309 0.967095 +vn 0.121907 0.223309 -0.967095 +vn 0.340007 0.622825 -0.704617 +vn 0.340007 0.622825 -0.704617 +vn 0.340007 0.622825 0.704617 +vn 0.340007 0.622825 0.704617 +vn -0.008298 0.255948 -0.966655 +vn 0.104831 0.239539 -0.965211 +vn 0.134674 0.698653 -0.702672 +vn 0.134651 0.698635 -0.702693 +vn 0.271089 0.657557 -0.702943 +vn -0.001210 -0.262398 -0.964959 +vn 0.004128 -0.255641 -0.966763 +vn -0.101212 -0.241458 -0.965119 +vn 0.048388 0.251056 -0.966762 +vn 0.048396 0.251065 -0.966760 +vn 0.098832 0.235782 -0.966767 +vn 0.018059 -0.710923 -0.703038 +vn 0.017204 -0.711569 -0.702406 +vn -0.280174 -0.653665 -0.703011 +vn -0.048390 -0.251069 -0.966759 +vn -0.048403 -0.251080 -0.966755 +vn -0.093459 -0.237450 -0.966893 +vn 0.015570 -0.966592 -0.255846 +vn 0.009295 -0.968195 -0.250023 +vn -0.368058 -0.893951 -0.255705 +vn -0.134688 -0.698669 -0.702652 +vn -0.281255 -0.653918 -0.702344 +vn -0.134657 -0.698655 -0.702672 +vn 0.009411 -0.966715 0.255685 +vn 0.015596 -0.968153 0.249872 +vn -0.373779 -0.891527 0.255869 +vn -0.374388 -0.892980 -0.249842 +vn -0.183254 -0.950793 -0.249822 +vn -0.183235 -0.950792 -0.249840 +vn 0.017180 -0.710987 0.702995 +vn 0.018047 -0.711594 0.702359 +vn -0.183253 -0.950788 0.249840 +vn -0.368504 -0.895381 0.249997 +vn -0.183236 -0.950796 0.249823 +vn -0.004227 0.261788 0.965116 +vn 0.004227 -0.261788 0.965116 +vn -0.001479 -0.255188 0.966890 +vn -0.280176 -0.653666 0.703009 +vn -0.281255 -0.653918 0.702344 +vn -0.134685 -0.698651 0.702671 +vn -0.134661 -0.698676 0.702651 +vn -0.007290 0.711656 0.702490 +vn -0.008296 0.255948 0.966655 +vn -0.048392 -0.251081 0.966756 +vn -0.101210 -0.241456 0.965119 +vn -0.048400 -0.251066 0.966759 +vn -0.093461 -0.237449 0.966893 +vn -0.007656 0.711243 0.702904 +vn -0.019437 0.968286 0.249089 +vn 0.104829 0.239537 0.965211 +vn 0.048394 0.251056 0.966762 +vn 0.098832 0.235782 0.966767 +vn 0.048390 0.251067 0.966760 +vn 0.271596 0.657795 0.702525 +vn 0.183263 0.950656 0.250337 +vn 0.134670 0.698631 0.702694 +vn 0.183222 0.950647 0.250401 +vn 0.134655 0.698655 0.702673 +vn 0.271087 0.657558 0.702943 +vn 0.377918 0.891718 0.249033 +vn -0.015295 0.966598 0.255839 +vn 0.373397 0.891690 0.255859 +vn -0.019308 0.966500 -0.255939 +vn -0.015323 0.968326 -0.249218 +vn -0.007291 0.711655 -0.702492 +vn -0.007656 0.711243 -0.702904 +vn 0.183263 0.950656 -0.250336 +vn 0.374072 0.893302 -0.249163 +vn 0.271595 0.657794 -0.702527 +vn 0.377126 0.890090 -0.255960 +vn 0.183222 0.950647 -0.250400 +vn -0.004227 0.261791 -0.965115 +vn -0.072021 0.603961 -0.793753 +vn -0.107659 0.896796 0.429146 +vn -0.072062 0.603885 -0.793807 +vn -0.072265 0.603932 -0.793753 +vn -0.068808 0.594747 0.800963 +vn -0.020591 0.172341 -0.984822 +vn -0.050295 0.420945 -0.905691 +vn -0.071144 0.595450 0.800236 +vn -0.050295 0.420945 -0.905691 +vn -0.020607 0.172349 -0.984820 +vn -0.020552 0.172345 -0.984822 +vn -0.106900 0.896751 0.429429 +vn -0.050179 0.420966 -0.905688 +vn -0.050223 0.420960 -0.905688 +vn -0.107313 0.896830 0.429162 +vn -0.050198 0.420957 -0.905691 +vn -0.096769 0.809922 0.578500 +vn -0.096769 0.809922 0.578500 +vn 0.060321 0.818257 0.571679 +vn -0.094472 0.809946 0.578845 +vn -0.096227 0.809986 0.578500 +vn -0.116547 0.976310 0.182303 +vn -0.116547 0.976310 0.182303 +vn -0.107143 0.896850 0.429162 +vn -0.107156 0.896857 0.429146 +vn -0.117580 0.959202 -0.257110 +vn -0.117198 0.976257 0.182170 +vn -0.116425 0.976325 0.182303 +vn -0.107578 0.896806 0.429146 +vn -0.106540 0.896794 0.429429 +vn -0.116823 0.976302 0.182170 +vn -0.116387 0.976330 0.182303 +vn -0.107117 0.896726 0.429429 +vn -0.104115 0.895851 0.431984 +vn -0.724891 0.487112 -0.487088 +vn -0.096471 0.787004 -0.609358 +vn -0.116635 0.976300 0.182303 +vn -0.116635 0.976300 0.182303 +vn -0.160509 0.953034 -0.256834 +vn -0.116057 0.972204 -0.203346 +vn -0.313847 0.245750 0.917119 +vn -0.117110 0.976270 0.182162 +vn -0.115995 0.976376 0.182303 +vn -0.054408 0.456353 0.888134 +vn -0.013038 0.109170 0.993938 +vn -0.013013 0.109173 0.993938 +vn -0.115935 0.972219 -0.203346 +vn -0.067572 0.217273 0.973769 +vn -0.115935 0.972219 -0.203346 +vn -0.762958 0.457120 0.457096 +vn -0.075560 0.633772 0.769820 +vn -0.105940 0.887457 -0.448550 +vn -0.037771 0.316389 0.947877 +vn -0.072007 0.603969 -0.793749 +vn -0.037669 0.316326 0.947902 +vn -0.037706 0.316322 0.947902 +vn -0.037964 0.316366 0.947877 +vn -0.105827 0.887459 -0.448572 +vn -0.105787 0.887475 -0.448550 +vn -0.054523 0.456340 0.888134 +vn -0.116328 0.972172 -0.203346 +vn -0.054455 0.456148 0.888236 +vn -0.116328 0.972172 -0.203346 +vn -0.116664 0.976297 0.182303 +vn -0.116645 0.976325 0.182162 +vn -0.113568 0.976687 0.182169 +vn -0.116174 0.972190 -0.203346 +vn -0.099244 0.809623 0.578498 +vn -0.116625 0.976326 0.182170 +vn -0.054366 0.456371 0.888127 +vn -0.054759 0.456324 0.888127 +vn -0.106187 0.887416 -0.448572 +vn -0.054374 0.456157 0.888236 +vn -0.106187 0.887416 -0.448572 +vn -0.965134 0.252832 0.067771 +vn -0.020584 0.172354 -0.984820 +vn -0.109897 0.896526 0.429144 +vn -0.389544 0.238385 -0.889623 +vn -0.050188 0.420958 -0.905691 +vn -0.094066 0.787294 -0.609360 +vn -0.075655 0.633761 0.769820 +vn -0.093995 0.787394 -0.609242 +vn -0.075730 0.633828 0.769757 +vn -0.116144 0.972194 -0.203346 +vn -0.116144 0.972194 -0.203346 +vn -0.075546 0.633774 0.769820 +vn -0.076055 0.633790 0.769757 +vn -0.093896 0.787406 -0.609242 +vn -0.075551 0.633773 0.769820 +vn -0.093860 0.787416 -0.609235 +vn 0.068620 0.606192 0.792353 +vn -0.096685 0.809932 0.578500 +vn -0.096685 0.809932 0.578500 +vn -0.115507 0.972270 -0.203346 +vn -0.116151 0.972193 -0.203346 +vn -0.116151 0.972193 -0.203346 +vn -0.115507 0.972270 -0.203346 +vn -0.106020 0.887447 -0.448550 +vn -0.106030 0.887435 -0.448572 +vn -0.096546 0.809948 0.578500 +vn -0.093929 0.787333 -0.609330 +vn -0.097199 0.809995 0.578326 +vn -0.094216 0.787373 -0.609235 +vn -0.094216 0.787373 -0.609235 +vn -0.094077 0.787390 -0.609235 +vn -0.093542 0.787380 -0.609330 +vn 0.063971 0.779412 -0.623238 +vn -0.105438 0.887517 -0.448550 +vn -0.107063 0.896868 0.429146 +vn -0.106026 0.887446 -0.448550 +vn -0.107063 0.896868 0.429146 +vn -0.105438 0.887517 -0.448550 +vn -0.072160 0.603950 -0.793749 +vn -0.096552 0.809947 0.578500 +vn -0.096926 0.810028 0.578326 +vn -0.072160 0.603950 -0.793749 +vn -0.106893 0.896752 0.429429 +vn 0.066924 0.473340 -0.878334 +vn -0.071993 0.603970 -0.793749 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.992944 0.118586 0.000000 +vn -0.992943 0.118591 0.000001 +vn -0.992944 0.118586 0.000021 +vn -0.992941 0.118608 -0.000029 +vn -0.992943 0.118591 0.000033 +vn -0.992943 0.118591 0.000033 +vn -0.992941 0.118608 -0.000029 +vn -0.992944 0.118586 0.000005 +vn -0.992944 0.118586 0.000000 +vn -0.992943 0.118591 -0.000016 +vn 0.951061 0.000000 -0.309005 +vn 0.951061 0.000000 -0.309005 +vn 0.587778 0.000000 -0.809022 +vn 0.587778 0.000000 -0.809022 +vn -0.545126 0.004907 -0.838340 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.414720 0.000000 -0.909949 +vn -0.414720 0.000000 -0.909949 +vn -0.587762 0.007455 -0.809000 +vn -0.554146 0.000078 -0.832420 +vn -0.531364 -0.000000 -0.847143 +vn -0.682827 0.001833 -0.730578 +vn -0.528112 -0.004246 -0.849164 +vn -0.586911 -0.000087 -0.809652 +vn -0.623914 -0.005045 -0.781476 +vn -0.587762 -0.007348 -0.809000 +vn -0.951032 0.007683 -0.308995 +vn -0.912705 -0.001988 -0.408614 +vn -0.984686 0.000476 -0.174337 +vn -0.989809 0.000000 -0.142402 +vn -0.951030 -0.007949 -0.308995 +vn -0.982422 0.000000 -0.186673 +vn -0.857692 -0.001577 -0.514162 +vn -0.875848 0.000594 -0.482587 +vn -0.987624 0.000000 -0.156840 +vn -0.897445 -0.000375 -0.441126 +vn -0.733927 -0.000577 -0.679228 +vn -0.698811 0.000387 -0.715306 +vn -0.774443 0.001136 -0.632642 +vn 0.770594 -0.008580 -0.637269 +vn 0.850136 0.000140 -0.526563 +vn 0.824092 -0.000095 -0.566456 +vn 0.814138 -0.002443 0.580666 +vn 0.686671 0.000000 -0.726968 +vn 0.807443 0.005574 -0.589920 +vn 0.810716 0.000000 -0.585439 +vn 0.876768 -0.007467 0.480855 +vn 0.686671 0.000000 -0.726968 +vn 0.810731 0.000000 0.585419 +vn 0.770594 0.008580 -0.637269 +vn 0.289092 0.000000 -0.957301 +vn 0.758707 0.000000 0.651432 +vn 0.289092 0.000000 -0.957301 +vn 0.758707 0.000000 0.651432 +vn 0.894349 0.000459 0.447369 +vn 0.970123 0.000449 0.242614 +vn 0.999967 0.000219 0.008137 +vn 0.976114 0.000205 -0.217261 +vn 0.914033 0.000299 -0.405639 +vn 0.803090 0.001933 0.595854 +vn 0.880831 0.000220 -0.473430 +vn 0.957422 -0.000283 -0.288692 +vn 0.980677 -0.001774 0.195624 +vn 0.894398 -0.000458 -0.447272 +vn 0.970170 -0.000445 -0.242424 +vn 0.885974 -0.009071 0.463647 +vn 0.999966 -0.000218 -0.008207 +vn 0.976127 -0.000207 0.217201 +vn 0.914140 -0.000302 0.405397 +vn 0.957361 0.000298 0.288894 +vn 0.998670 -0.000317 0.051565 +vn 0.913739 0.001051 -0.406301 +vn 0.850164 -0.000141 0.526518 +vn 0.824016 0.000095 0.566567 +vn 0.842094 0.004349 0.539313 +vn 0.911851 0.005052 0.410491 +vn 0.885972 0.009308 0.463646 +vn 0.994503 -0.009859 -0.104240 +vn 0.980340 -0.002797 -0.197295 +vn 0.998645 0.004855 -0.051816 +vn 0.843359 -0.002883 -0.537342 +vn 0.785558 -0.007390 -0.618743 +vn 0.994509 0.009302 -0.104241 +vn 0.965927 0.000000 -0.258815 +vn 0.707105 0.000000 -0.707109 +vn 0.965927 0.000000 -0.258815 +vn 0.258818 0.000000 -0.965926 +vn 0.707105 0.000000 -0.707109 +vn 0.258818 0.000000 -0.965926 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.707075 0.000000 0.707139 +vn -0.965927 0.000000 0.258814 +vn -0.965927 0.000000 0.258814 +vn -0.258841 0.000000 0.965920 +vn -0.707075 0.000000 0.707139 +vn -0.258841 0.000000 0.965920 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -0.000000 -1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.115487 0.959456 0.257111 +vn 0.051462 0.436089 0.898431 +vn 0.017259 0.149929 0.988546 +vn 0.017845 0.149398 0.988616 +vn 0.032100 0.258554 0.965463 +vn 0.084743 0.721968 0.686717 +vn 0.084786 0.704529 0.704592 +vn 0.050535 0.435762 0.898642 +vn 0.051711 0.435622 0.898643 +vn 0.086421 0.721507 0.686993 +vn 0.082308 0.721992 0.686988 +vn -0.030515 0.951376 0.306518 +vn 0.098333 0.857617 0.504800 +vn 0.102375 0.857142 0.504804 +vn 0.112862 0.944112 0.309701 +vn 0.110602 0.990127 -0.086112 +vn 0.115809 0.959418 -0.257112 +vn 0.117496 0.989333 -0.086114 +vn -0.242524 0.887068 -0.392801 +vn 0.101358 0.914569 -0.391522 +vn 0.109185 0.913663 -0.391534 +vn 0.085317 0.704466 -0.704591 +vn 0.096876 0.811427 -0.576369 +vn 0.095811 0.811554 -0.576369 +vn -0.003516 0.614812 -0.788666 +vn 0.074706 0.626058 -0.776190 +vn 0.073768 0.626169 -0.776190 +vn 0.025372 0.212412 -0.976851 +vn 0.025227 0.212506 -0.976834 +vn 0.031629 0.258610 -0.965464 +vn 0.053805 0.451995 -0.890396 +vn 0.054007 0.451971 -0.890396 +vn 0.115488 -0.959456 -0.257112 +vn 0.031633 -0.258610 0.965464 +vn 0.025331 -0.212073 0.976925 +vn 0.025214 -0.212149 0.976912 +vn -0.004115 -0.614448 0.788947 +vn 0.053770 -0.451604 0.890597 +vn 0.053961 -0.451581 0.890597 +vn 0.085317 -0.704465 0.704592 +vn 0.074196 -0.626010 0.776277 +vn 0.074693 -0.625951 0.776277 +vn -0.242240 -0.886971 0.393194 +vn 0.096859 -0.811300 0.576550 +vn 0.096251 -0.811373 0.576550 +vn 0.115807 -0.959418 0.257111 +vn 0.109168 -0.913535 0.391836 +vn 0.101156 -0.914463 0.391823 +vn -0.924994 -0.379611 -0.016806 +vn 0.109354 -0.982913 0.148067 +vn 0.118365 -0.990963 -0.063097 +vn 0.117294 -0.981996 0.148072 +vn -0.031728 -0.951288 -0.306666 +vn 0.112852 -0.944044 -0.309911 +vn 0.102340 -0.856863 -0.505284 +vn 0.099384 -0.857212 -0.505283 +vn 0.084781 -0.704530 -0.704592 +vn 0.084563 -0.721437 -0.687298 +vn 0.086373 -0.721070 -0.687458 +vn 0.083155 -0.721451 -0.687455 +vn 0.017817 -0.149166 -0.988652 +vn 0.032100 -0.258554 -0.965463 +vn 0.051214 -0.435518 -0.898722 +vn 0.017128 -0.149792 -0.988569 +vn 0.051648 -0.435075 -0.898912 +vn 0.050385 -0.435225 -0.898911 +vn 0.108467 0.872461 0.476494 +vn 0.207204 0.843257 0.495969 +vn 0.108056 0.906756 0.407575 +vn 0.117064 0.979287 0.165208 +vn 0.117064 0.979287 0.165208 +vn 0.116923 0.979303 0.165208 +vn 0.116923 0.979303 0.165208 +vn 0.117088 0.979284 0.165208 +vn 0.117127 0.979277 0.165217 +vn 0.117159 0.979274 0.165217 +vn 0.117159 0.979274 0.165217 +vn 0.116741 0.979324 0.165217 +vn 0.116850 0.979248 0.165588 +vn 0.115660 0.969276 -0.217087 +vn 0.121246 0.978778 0.165207 +vn 0.116704 0.979329 0.165208 +vn 0.084957 0.962669 -0.257002 +vn 0.115762 0.969290 -0.216972 +vn 0.115868 0.969277 -0.216972 +vn 0.115868 0.969277 -0.216972 +vn 0.104708 0.884093 -0.455429 +vn 0.105671 0.883978 -0.455430 +vn 0.105671 0.883978 -0.455430 +vn 0.115727 0.969294 -0.216972 +vn 0.115727 0.969294 -0.216972 +vn 0.105510 0.883997 -0.455430 +vn 0.105545 0.884011 -0.455396 +vn 0.115891 0.969274 -0.216972 +vn 0.115891 0.969274 -0.216972 +vn 0.105693 0.883976 -0.455430 +vn 0.105730 0.883989 -0.455396 +vn -0.024632 0.264921 0.963955 +vn 0.016713 0.139937 0.990019 +vn 0.115548 0.969315 -0.216972 +vn 0.016714 0.139937 0.990019 +vn 0.115961 0.969266 -0.216972 +vn 0.116170 0.969215 -0.217087 +vn 0.115961 0.969266 -0.216972 +vn 0.306422 0.689213 -0.656575 +vn 0.045961 0.385224 0.921678 +vn 0.105756 0.883968 -0.455430 +vn 0.092333 0.771766 -0.629168 +vn 0.043520 0.385514 0.921675 +vn 0.105977 0.883941 -0.455430 +vn 0.105756 0.883968 -0.455430 +vn 0.032554 0.709807 -0.703643 +vn 0.060916 0.507119 0.859721 +vn 0.124456 0.365668 0.922387 +vn 0.095585 0.771430 -0.629094 +vn 0.046050 0.385224 0.921674 +vn 0.092265 0.771831 -0.629098 +vn 0.060625 0.507154 0.859721 +vn 0.062282 0.506955 0.859719 +vn 0.060625 0.507154 0.859721 +vn 0.092265 0.771831 -0.629098 +vn 0.040917 0.709094 0.703926 +vn 0.092124 0.771844 -0.629103 +vn 0.092685 0.771724 -0.629168 +vn 0.092314 0.771821 -0.629103 +vn 0.069846 0.667301 0.741506 +vn 0.092153 0.771844 -0.629098 +vn 0.070483 0.573292 -0.816314 +vn 0.079633 0.666164 0.741541 +vn 0.268156 0.386263 -0.882549 +vn 0.079633 0.666164 0.741541 +vn 0.068559 0.573523 -0.816315 +vn 0.069078 0.573253 -0.816462 +vn 0.068559 0.573523 -0.816315 +vn 0.079537 0.666176 0.741541 +vn 0.068476 0.573533 -0.816315 +vn 0.081138 0.665700 0.741795 +vn 0.021563 0.180551 -0.983329 +vn -0.016544 0.264066 -0.964363 +vn 0.021597 0.180547 -0.983329 +vn 0.048865 0.423030 -0.904797 +vn 0.100407 0.828765 0.550515 +vn 0.050558 0.422824 -0.904800 +vn 0.050545 0.422830 -0.904798 +vn 0.099090 0.828923 0.550516 +vn 0.099090 0.828923 0.550516 +vn 0.081860 0.665243 0.742126 +vn 0.079616 0.665882 0.741796 +vn 0.098969 0.828928 0.550530 +vn 0.098939 0.828941 0.550516 +vn 0.063246 0.964400 0.256773 +vn 0.106325 0.906868 0.407781 +vn 0.101421 0.828642 0.550514 +vn 0.099110 0.828921 0.550516 +vn 0.099142 0.828907 0.550530 +vn 0.108378 0.906625 0.407782 +vn 0.108378 0.906625 0.407782 +vn 0.108214 0.906651 0.407767 +vn 0.108247 0.906640 0.407782 +vn 0.108437 0.906624 0.407767 +vn 0.108438 0.906624 0.407767 +vn 0.108466 0.906621 0.407767 +vn 0.116957 0.979299 0.165208 +vn -0.007613 -0.711242 0.702906 +vn 0.134655 -0.698656 0.702672 +vn -0.096399 0.244063 0.964956 +vn -0.098850 0.235780 0.966766 +vn 0.373444 -0.891670 0.255859 +vn -0.004227 -0.261790 0.965116 +vn 0.048389 -0.251065 0.966760 +vn 0.048383 -0.251080 0.966756 +vn -0.008281 -0.255970 0.966649 +vn -0.280947 0.653290 0.703051 +vn -0.280409 0.654182 0.702436 +vn -0.001210 0.262397 0.964959 +vn 0.004128 0.255640 0.966763 +vn -0.048400 0.251065 0.966760 +vn -0.048392 0.251079 0.966756 +vn -0.373779 0.891527 0.255868 +vn -0.368428 0.895436 0.249911 +vn 0.017989 0.710928 0.703035 +vn -0.134653 0.698631 0.702697 +vn -0.134676 0.698606 0.702717 +vn 0.017202 0.711522 0.702453 +vn -0.367975 0.893985 -0.255703 +vn -0.374396 0.893000 -0.249755 +vn 0.015570 0.966592 0.255846 +vn -0.183240 0.950820 0.249730 +vn -0.183258 0.950812 0.249747 +vn 0.009196 0.968220 0.249931 +vn -0.280175 0.653666 -0.703010 +vn -0.281178 0.653900 -0.702391 +vn 0.009314 0.966716 -0.255682 +vn 0.015596 0.968178 -0.249777 +vn -0.183259 0.950816 -0.249730 +vn -0.183239 0.950815 -0.249748 +vn -0.101236 0.241470 -0.965113 +vn -0.093460 0.237450 -0.966893 +vn -0.134649 0.698609 -0.702719 +vn 0.017179 0.710987 -0.702996 +vn 0.017977 0.711545 -0.702411 +vn -0.134680 0.698624 -0.702699 +vn 0.104821 -0.239516 -0.965217 +vn 0.098849 -0.235777 -0.966767 +vn -0.004227 -0.261790 -0.965116 +vn -0.048390 0.251069 -0.966759 +vn 0.004227 0.261790 -0.965116 +vn -0.001480 0.255188 -0.966890 +vn -0.048403 0.251080 -0.966755 +vn 0.271614 -0.657836 -0.702480 +vn 0.377908 -0.891698 -0.249120 +vn 0.271104 -0.657598 -0.702899 +vn -0.007245 -0.711659 -0.702488 +vn 0.048380 -0.251069 -0.966759 +vn 0.048392 -0.251081 -0.966756 +vn -0.008280 -0.255971 -0.966649 +vn -0.019251 -0.966501 -0.255938 +vn 0.134630 -0.698659 -0.702674 +vn -0.007613 -0.711242 -0.702906 +vn 0.183221 -0.950640 -0.250428 +vn 0.373443 -0.891670 -0.255860 +vn 0.183206 -0.950650 -0.250401 +vn -0.015268 -0.968327 -0.249220 +vn 0.134660 -0.698681 -0.702646 +vn 0.271613 -0.657836 0.702480 +vn 0.377908 -0.891698 0.249120 +vn 0.104822 -0.239516 0.965217 +vn 0.271105 -0.657599 0.702898 +vn -0.019250 -0.966502 0.255938 +vn 0.183206 -0.950650 0.250401 +vn -0.015268 -0.968327 0.249220 +vn 0.183221 -0.950640 0.250428 +vn 0.098848 -0.235775 0.966767 +vn -0.007245 -0.711658 0.702489 +vn 0.134636 -0.698688 0.702644 +vn -0.124844 0.228688 0.965461 +vn -0.124833 0.228670 0.965467 +vn -0.340010 0.622833 0.704608 +vn -0.340034 0.622869 0.704564 +vn -0.463049 0.848216 -0.257131 +vn -0.463049 0.848216 0.257131 +vn -0.463049 0.848216 0.257131 +vn -0.340011 0.622833 -0.704607 +vn -0.463049 0.848215 -0.257131 +vn -0.124844 0.228688 -0.965461 +vn -0.340034 0.622870 -0.704564 +vn -0.124833 0.228670 -0.965467 +vn 0.211362 -0.945480 0.247779 +vn -0.232988 -0.948164 0.216107 +vn 0.224153 0.911803 -0.344051 +vn 0.243672 -0.943532 0.224434 +vn -0.233133 -0.948153 0.215996 +vn 0.289826 0.319058 -0.902332 +vn -0.212994 -0.866249 0.451936 +vn -0.208787 0.685931 -0.697070 +vn 0.226392 -0.862024 0.453499 +vn 0.197885 0.805090 -0.559171 +vn -0.212881 -0.866046 0.452379 +vn -0.210347 0.800754 -0.560844 +vn 0.197885 0.805093 -0.559167 +vn -0.220434 -0.237400 0.946071 +vn 0.103282 0.073511 -0.991932 +vn 0.125263 0.132683 -0.983211 +vn 0.091159 0.055960 0.994263 +vn -0.042991 -0.048521 0.997896 +vn 0.150277 -0.708778 0.689239 +vn 0.199205 -0.728003 0.655994 +vn -0.036690 -0.041261 -0.998475 +vn -0.180314 -0.733511 0.655323 +vn -0.162788 0.624654 -0.763746 +vn 0.154504 0.628577 -0.762246 +vn -0.180302 -0.733506 0.655332 +vn 0.154503 0.628590 -0.762236 +vn -0.130885 -0.532348 0.836346 +vn 0.140474 -0.528368 0.837314 +vn -0.096559 0.243951 -0.964969 +vn -0.130840 -0.532254 0.836413 +vn 0.103283 0.420191 -0.901539 +vn 0.103284 0.420201 -0.901534 +vn -0.111100 0.416943 -0.902117 +vn 0.118324 0.125266 0.985042 +vn -0.225864 -0.293266 -0.928967 +vn 0.400901 0.401803 0.823306 +vn -0.214124 -0.230804 -0.949147 +vn 0.283414 0.312311 0.906719 +vn 0.037927 -0.274700 0.960782 +vn 0.077991 -0.312879 0.946586 +vn -0.361975 -0.397502 -0.843188 +vn -0.077493 -0.315188 0.945860 +vn -0.077451 -0.315144 0.945878 +vn 0.043541 0.177167 -0.983217 +vn -0.046370 0.175701 -0.983351 +vn 0.016602 -0.062906 0.997881 +vn 0.043543 0.177151 -0.983220 +vn -0.015589 -0.063432 0.997864 +vn -0.015589 -0.063432 0.997864 +vn 0.041562 -0.272833 -0.961163 +vn -0.013275 -0.053997 -0.998453 +vn -0.013278 -0.054029 -0.998451 +vn 0.014139 -0.053575 -0.998464 +vn 0.429736 0.471063 0.770342 +vn -0.501603 -0.571767 -0.649213 +vn -0.507171 -0.549365 -0.664060 +vn -0.098352 0.242990 0.965030 +vn 0.041124 0.167293 0.985049 +vn -0.043783 0.165897 0.985171 +vn -0.649854 -0.723963 -0.231446 +vn -0.652614 -0.722220 -0.229113 +vn 0.041109 0.167269 0.985054 +vn 0.554682 0.606958 0.569148 +vn -0.599820 -0.656150 -0.457912 +vn -0.075302 -0.306307 -0.948950 +vn 0.614605 0.638177 0.463671 +vn -0.075306 -0.306294 -0.948954 +vn 0.075455 -0.304070 -0.949657 +vn 0.101085 0.411214 0.905917 +vn 0.157230 -0.706218 -0.690315 +vn -0.128724 -0.523755 -0.842087 +vn -0.128699 -0.523459 -0.842275 +vn 0.101066 0.411170 0.905939 +vn -0.108870 0.408016 0.906460 +vn 0.137929 -0.519643 -0.843176 +vn 0.629568 0.691544 0.354134 +vn -0.178681 -0.726913 -0.663077 +vn 0.152561 0.620724 0.769043 +vn 0.197798 -0.721407 -0.663663 +vn -0.178660 -0.726937 -0.663056 +vn -0.209965 0.685438 0.697201 +vn 0.216611 -0.944194 -0.248148 +vn 0.152582 0.620755 0.769013 +vn -0.232730 -0.947112 -0.220944 +vn -0.160846 0.616812 0.770501 +vn 0.243399 -0.942475 -0.229126 +vn -0.232774 -0.947109 -0.220911 +vn -0.212361 -0.864054 -0.456413 +vn 0.225942 -0.859651 -0.458204 +vn -0.212358 -0.863917 -0.456675 +vn 0.690578 0.723194 0.009618 +vn 0.671047 0.732589 0.114059 +vn -0.208764 0.795169 0.569319 +vn 0.196493 0.799468 0.567663 +vn 0.196509 0.799496 0.567618 +vn 0.671596 0.733457 -0.104880 +vn -0.272109 0.928788 0.251612 +vn -0.240062 0.903916 0.353985 +vn 0.223334 0.908634 0.352855 +vn 0.223355 0.908655 0.352788 +vn 0.620291 0.645047 -0.446267 +vn 0.631744 0.694039 -0.345266 +vn -0.253538 0.960562 0.114186 +vn 0.237154 0.964792 0.113731 +vn -0.653356 -0.723041 0.224361 +vn 0.237174 0.964799 0.113626 +vn -0.650592 -0.724788 0.226744 +vn 0.558625 0.611196 -0.560694 +vn -0.504730 -0.582289 0.637328 +vn -0.271569 0.928955 -0.251583 +vn 0.237418 0.965765 -0.104546 +vn 0.237413 0.965771 -0.104507 +vn -0.601458 -0.657608 0.453653 +vn -0.253797 0.961544 -0.104972 +vn -0.511363 -0.554688 0.656376 +vn 0.410938 0.415373 -0.811539 +vn 0.435042 0.477150 -0.763588 +vn -0.235568 -0.311158 0.920700 +vn -0.367874 -0.404108 0.837475 +vn -0.240999 0.907087 -0.345126 +vn 0.224130 0.911870 -0.343889 +vn -0.973761 -0.000000 -0.227571 +vn -0.757072 -0.000000 -0.653331 +vn 0.821548 -0.340386 0.457379 +vn 0.923657 -0.383100 0.009605 +vn 0.923654 -0.383111 0.009426 +vn 0.826055 -0.342289 -0.447741 +vn 0.829955 -0.343234 -0.439733 +vn 0.539732 -0.222919 -0.811786 +vn 0.534838 -0.221385 -0.815437 +vn 0.119141 -0.049717 -0.991632 +vn 0.116115 -0.048707 -0.992041 +vn -0.332093 0.137171 -0.933219 +vn -0.323540 0.134378 -0.936624 +vn -0.898402 0.371564 -0.234124 +vn -0.697894 0.289659 -0.655013 +vn -0.899641 0.372630 -0.227582 +vn -0.699331 0.290063 -0.653299 +vn -0.899445 -0.371999 0.229382 +vn -0.974878 0.000000 0.222741 +vn -0.900677 -0.373059 0.222728 +vn -0.899246 0.372466 0.229404 +vn -0.974878 0.000000 0.222741 +vn -0.706881 -0.293139 0.643731 +vn -0.708516 -0.294054 0.641512 +vn -0.767067 0.000000 0.641567 +vn -0.767067 0.000000 0.641567 +vn -0.349057 -0.145010 0.925814 +vn -0.369013 0.000000 0.929424 +vn -0.369013 0.000000 0.929424 +vn -0.341003 -0.140882 0.929446 +vn 0.100345 0.042171 0.994059 +vn 0.106152 0.000000 0.994350 +vn 0.106152 0.000000 0.994350 +vn 0.097995 0.041000 0.994342 +vn 0.524372 0.217093 0.823350 +vn 0.519332 0.214481 0.827220 +vn 0.561950 0.000000 0.827171 +vn 0.561950 0.000000 0.827172 +vn 0.821534 0.340378 0.457411 +vn 0.889262 0.000000 0.457399 +vn 0.818091 0.338279 0.465074 +vn 0.889262 0.000000 0.457399 +vn 0.923658 0.383097 0.009645 +vn 0.999956 0.000000 0.009410 +vn 0.999956 0.000000 0.009410 +vn 0.923653 0.383114 0.009383 +vn -0.900872 0.372574 0.222751 +vn 0.826056 0.342287 -0.447740 +vn 0.829956 0.343232 -0.439733 +vn 0.898143 0.000000 -0.439703 +vn -0.706862 0.293131 0.643755 +vn 0.898143 0.000000 -0.439703 +vn -0.708498 0.294047 0.641535 +vn 0.539732 0.222918 -0.811786 +vn 0.534838 0.221384 -0.815437 +vn 0.578870 0.000000 -0.815420 +vn -0.349069 0.145017 0.925808 +vn 0.578870 0.000000 -0.815420 +vn -0.341003 0.140882 0.929446 +vn 0.119136 0.049716 -0.991632 +vn 0.125807 0.000000 -0.992055 +vn 0.125807 0.000000 -0.992055 +vn 0.100341 -0.042169 0.994059 +vn 0.116120 0.048709 -0.992040 +vn 0.097995 -0.041000 0.994342 +vn -0.332093 -0.137171 -0.933219 +vn -0.323527 -0.134374 -0.936629 +vn -0.350267 -0.000000 -0.936650 +vn 0.524389 -0.217101 0.823337 +vn -0.350267 0.000000 -0.936650 +vn -0.898403 -0.371561 -0.234124 +vn -0.697914 -0.289665 -0.654989 +vn 0.519332 -0.214481 0.827220 +vn -0.699331 -0.290063 -0.653299 +vn -0.757072 0.000000 -0.653331 +vn -0.973761 0.000000 -0.227571 +vn -0.899649 -0.372633 -0.227543 +vn 0.818077 -0.338270 0.465106 +vn -0.653344 0.723028 0.224439 +vn -0.096561 -0.243976 -0.964962 +vn -0.233014 0.948181 0.216002 +vn -0.504751 0.582206 0.637387 +vn -0.111091 -0.416821 -0.902175 +vn -0.212838 0.865872 0.452732 +vn -0.212833 0.866060 0.452373 +vn -0.601526 0.657551 0.453644 +vn 0.558625 -0.611196 -0.560694 +vn 0.197919 -0.805087 -0.559162 +vn 0.197914 -0.805080 -0.559174 +vn 0.037925 0.274672 0.960790 +vn 0.077980 0.312839 0.946600 +vn -0.046377 -0.175726 -0.983346 +vn 0.016602 0.062906 0.997881 +vn 0.041559 0.272806 -0.961171 +vn -0.511349 0.554751 0.656334 +vn 0.014139 0.053575 -0.998464 +vn -0.180326 0.733559 0.655266 +vn 0.410938 -0.415373 -0.811539 +vn -0.180317 0.733569 0.655257 +vn 0.154537 -0.628587 -0.762231 +vn 0.435042 -0.477150 -0.763588 +vn -0.235593 0.311176 0.920687 +vn -0.130816 0.532255 0.836416 +vn 0.154524 -0.628569 -0.762249 +vn -0.367720 0.404003 0.837594 +vn -0.130811 0.532133 0.836495 +vn 0.103251 -0.420069 -0.901599 +vn 0.103303 -0.420192 -0.901536 +vn -0.098354 -0.243016 0.965023 +vn 0.289826 -0.319058 -0.902332 +vn -0.043789 -0.165923 0.985166 +vn -0.108864 -0.407909 0.906509 +vn 0.075444 0.304033 -0.949669 +vn 0.157294 0.706194 -0.690325 +vn -0.077474 0.315149 0.945875 +vn 0.138009 0.519917 -0.842995 +vn -0.077464 0.315182 0.945864 +vn -0.220456 0.237422 0.946060 +vn 0.103285 -0.073520 -0.991931 +vn 0.043546 -0.177164 -0.983217 +vn 0.091154 -0.055957 0.994263 +vn 0.043555 -0.177177 -0.983215 +vn -0.042991 0.048521 0.997896 +vn 0.125263 -0.132683 -0.983211 +vn -0.015593 0.063432 0.997864 +vn -0.015593 0.063430 0.997864 +vn -0.036704 0.041276 -0.998473 +vn -0.013282 0.054029 -0.998451 +vn -0.013280 0.054023 -0.998451 +vn -0.209964 -0.685387 0.697252 +vn -0.160877 -0.616809 0.770497 +vn 0.197892 0.721392 -0.663651 +vn 0.041116 -0.167295 0.985049 +vn 0.118311 -0.125251 0.985045 +vn 0.216729 0.944189 -0.248066 +vn 0.041119 -0.167267 0.985054 +vn 0.243399 0.942475 -0.229126 +vn 0.226053 0.859628 -0.458193 +vn -0.225864 0.293266 -0.928967 +vn -0.208764 -0.795169 0.569319 +vn -0.075274 0.306270 -0.948964 +vn -0.214124 0.230804 -0.949147 +vn -0.075300 0.306297 -0.948953 +vn 0.101081 -0.411282 0.905886 +vn 0.400917 -0.401840 0.823280 +vn -0.361792 0.397365 -0.843331 +vn 0.283469 -0.312373 0.906680 +vn -0.128768 0.523737 -0.842091 +vn 0.101070 -0.411107 0.905967 +vn -0.128658 0.523476 -0.842271 +vn -0.240079 -0.903974 0.353826 +vn -0.501625 0.571684 -0.649269 +vn -0.178731 0.726951 -0.663021 +vn -0.272073 -0.928799 0.251610 +vn -0.178686 0.726933 -0.663053 +vn 0.152595 -0.620754 0.769012 +vn -0.507157 0.549426 -0.664021 +vn -0.649854 0.723963 -0.231446 +vn 0.429736 -0.471063 0.770342 +vn -0.232873 0.947083 -0.220918 +vn 0.152600 -0.620708 0.769048 +vn -0.652614 0.722220 -0.229113 +vn -0.232890 0.947075 -0.220932 +vn -0.212438 0.863902 -0.456667 +vn -0.599584 0.655845 -0.458656 +vn -0.212268 0.863554 -0.457402 +vn -0.253501 -0.960572 0.114187 +vn 0.614575 -0.638163 0.463730 +vn 0.196533 -0.799462 0.567658 +vn 0.196532 -0.799488 0.567621 +vn 0.554682 -0.606958 0.569148 +vn -0.253766 -0.961577 -0.104750 +vn -0.271569 -0.928955 -0.251583 +vn 0.629546 -0.691563 0.354137 +vn 0.223375 -0.908649 0.352790 +vn 0.223363 -0.908689 0.352694 +vn -0.240999 -0.907087 -0.345126 +vn 0.671012 -0.732597 0.114216 +vn 0.690589 -0.723184 0.009541 +vn 0.237151 -0.964781 0.113832 +vn 0.243678 0.943555 0.224332 +vn 0.237136 -0.964796 0.113731 +vn 0.211354 0.945505 0.247687 +vn -0.208785 -0.685881 -0.697120 +vn -0.210347 -0.800754 -0.560844 +vn 0.237425 -0.965792 -0.104282 +vn 0.226429 0.861608 0.454270 +vn 0.237377 -0.965776 -0.104545 +vn 0.671617 -0.733437 -0.104879 +vn 0.150277 0.708778 0.689239 +vn 0.199312 0.728042 0.655919 +vn -0.162819 -0.624650 -0.763742 +vn 0.140474 0.528368 0.837314 +vn 0.620291 -0.645047 -0.446267 +vn 0.631736 -0.693991 -0.345378 +vn 0.224153 -0.911806 -0.344042 +vn 0.224151 -0.911803 -0.344051 +vn -0.650665 0.724720 0.226749 +vn -0.233131 0.948130 0.216099 +vn -0.124844 -0.228688 0.965461 +vn -0.340010 -0.622833 0.704608 +vn -0.124833 -0.228670 0.965467 +vn -0.463049 -0.848216 0.257131 +vn -0.340010 -0.622833 0.704608 +vn -0.463049 -0.848216 0.257131 +vn -0.463049 -0.848216 -0.257131 +vn -0.463049 -0.848215 -0.257131 +vn -0.340011 -0.622833 -0.704607 +vn -0.340010 -0.622833 -0.704607 +vn -0.124844 -0.228688 -0.965461 +vn -0.124833 -0.228670 -0.965467 +vn 0.271089 0.657558 0.702943 +vn 0.134651 0.698636 0.702693 +vn -0.001210 -0.262397 0.964959 +vn 0.004128 -0.255640 0.966763 +vn -0.015296 0.966599 0.255839 +vn 0.048387 0.251055 0.966763 +vn 0.098832 0.235781 0.966768 +vn 0.048396 0.251063 0.966760 +vn 0.018060 -0.710923 0.703038 +vn 0.017204 -0.711569 0.702405 +vn -0.096389 -0.244041 0.964963 +vn -0.048402 -0.251078 0.966756 +vn -0.098833 -0.235785 0.966766 +vn -0.048390 -0.251067 0.966759 +vn 0.015570 -0.966592 0.255846 +vn 0.009295 -0.968195 0.250023 +vn 0.373397 0.891690 0.255858 +vn -0.281006 -0.653261 0.703054 +vn -0.134689 -0.698670 0.702652 +vn -0.280427 -0.654222 0.702392 +vn -0.134658 -0.698656 0.702672 +vn 0.009411 -0.966715 -0.255684 +vn 0.015596 -0.968154 -0.249871 +vn -0.373779 -0.891527 0.255868 +vn -0.183254 -0.950793 0.249823 +vn -0.368504 -0.895381 0.249996 +vn -0.183235 -0.950792 0.249840 +vn 0.017179 -0.710987 -0.702996 +vn 0.018047 -0.711594 -0.702359 +vn -0.368058 -0.893951 -0.255706 +vn -0.374388 -0.892980 -0.249843 +vn -0.183253 -0.950788 -0.249840 +vn -0.183236 -0.950796 -0.249822 +vn 0.004227 -0.261790 -0.965116 +vn -0.004227 0.261790 -0.965116 +vn -0.001480 -0.255188 -0.966890 +vn -0.134661 -0.698676 -0.702651 +vn -0.280175 -0.653666 -0.703010 +vn -0.281255 -0.653918 -0.702344 +vn -0.134685 -0.698651 -0.702671 +vn -0.007291 0.711656 -0.702491 +vn -0.008297 0.255948 -0.966655 +vn -0.048392 -0.251081 -0.966756 +vn -0.101211 -0.241457 -0.965119 +vn -0.093460 -0.237450 -0.966893 +vn -0.048400 -0.251066 -0.966759 +vn -0.019308 0.966500 -0.255940 +vn -0.015323 0.968326 -0.249218 +vn -0.007656 0.711243 -0.702904 +vn 0.048394 0.251056 -0.966762 +vn 0.104830 0.239538 -0.965211 +vn 0.048390 0.251067 -0.966760 +vn 0.098832 0.235782 -0.966767 +vn 0.271595 0.657794 -0.702526 +vn 0.271088 0.657558 -0.702943 +vn 0.183222 0.950647 -0.250400 +vn 0.183263 0.950656 -0.250336 +vn 0.134670 0.698631 -0.702694 +vn 0.134655 0.698655 -0.702673 +vn 0.377918 0.891718 -0.249033 +vn 0.373397 0.891690 -0.255858 +vn -0.019436 0.968286 0.249089 +vn -0.007291 0.711655 0.702492 +vn -0.007655 0.711244 0.702903 +vn 0.271594 0.657794 0.702527 +vn 0.183263 0.950656 0.250336 +vn 0.377918 0.891718 0.249033 +vn 0.183222 0.950647 0.250400 +vn -0.004227 0.261790 0.965116 +vn -0.008298 0.255946 0.966655 +vn 0.104831 0.239537 0.965211 +vn 0.134675 0.698653 0.702671 +vn 0.104947 -0.872967 -0.476356 +vn 0.110585 -0.923733 0.366726 +vn 0.103387 -0.873219 -0.476236 +vn 0.110136 -0.923651 0.367068 +vn 0.352461 -0.495352 -0.793976 +vn 0.084364 -0.691773 -0.717170 +vn 0.082692 -0.692312 -0.716844 +vn 0.109369 -0.923750 0.367047 +vn 0.110944 -0.923690 0.366725 +vn 0.036982 -0.308789 0.950411 +vn 0.082867 -0.692200 -0.716933 +vn 0.056654 -0.474368 0.878502 +vn -0.041361 -0.317176 0.947464 +vn 0.082553 -0.692329 -0.716844 +vn 0.081978 -0.692398 -0.716844 +vn 0.083210 -0.692159 -0.716932 +vn 0.117149 -0.980903 -0.155257 +vn 0.117211 -0.980872 0.155405 +vn 0.117228 -0.980869 -0.155415 +vn 0.073995 -0.619573 0.781444 +vn 0.117187 -0.980874 -0.155415 +vn 0.074200 -0.619548 0.781444 +vn 0.112472 -0.941744 -0.316966 +vn 0.112472 -0.941744 -0.316966 +vn 0.073995 -0.619573 0.781444 +vn 0.117249 -0.980891 0.155257 +vn 0.112548 -0.941735 -0.316966 +vn 0.049623 -0.403902 -0.913455 +vn 0.116716 -0.980931 0.155405 +vn 0.067528 -0.553695 -0.829977 +vn 0.066255 -0.555642 -0.828778 +vn 0.117202 -0.980898 0.155248 +vn 0.066791 -0.555578 -0.828778 +vn 0.066791 -0.555578 -0.828778 +vn 0.117162 -0.980902 0.155257 +vn 0.016660 -0.139495 -0.990083 +vn 0.016713 -0.139489 -0.990083 +vn 0.048520 -0.404034 -0.913456 +vn 0.221552 -0.958762 -0.178016 +vn 0.048571 -0.404023 -0.913458 +vn -0.390541 -0.744777 -0.541096 +vn 0.117656 -0.980819 -0.155405 +vn 0.104341 -0.873040 -0.476356 +vn 0.071878 -0.876513 -0.475982 +vn 0.104275 -0.873113 -0.476236 +vn 0.107318 -0.872107 -0.477402 +vn 0.115667 -0.941314 -0.317094 +vn 0.082730 -0.692216 -0.716933 +vn 0.082683 -0.692314 -0.716844 +vn 0.082901 -0.692196 -0.716933 +vn 0.116963 -0.980902 0.155405 +vn 0.066359 -0.555629 -0.828778 +vn 0.117425 -0.980872 0.155248 +vn 0.066542 -0.555607 -0.828778 +vn 0.066359 -0.555629 -0.828778 +vn 0.116147 -0.980999 0.155405 +vn -0.822998 -0.175526 -0.540246 +vn 0.016660 -0.139495 -0.990083 +vn -0.135100 -0.418974 -0.897891 +vn 0.048257 -0.404061 -0.913458 +vn 0.117806 -0.980825 0.155257 +vn 0.048257 -0.404061 -0.913458 +vn 0.117211 -0.980872 -0.155405 +vn 0.117211 -0.980872 -0.155405 +vn 0.021743 -0.179887 0.983447 +vn 0.104302 -0.872841 -0.476727 +vn 0.021492 -0.179952 0.983441 +vn 0.112530 -0.941695 -0.317094 +vn 0.021308 -0.179974 0.983441 +vn 0.112530 -0.941695 -0.317094 +vn 0.323986 -0.345341 0.880780 +vn 0.117247 -0.980868 -0.155405 +vn 0.116719 -0.980955 -0.155257 +vn 0.112596 -0.941687 -0.317094 +vn 0.075089 -0.619442 0.781443 +vn 0.112569 -0.941733 -0.316966 +vn 0.056566 -0.474389 0.878496 +vn 0.057336 -0.474367 0.878458 +vn 0.057032 -0.474403 0.878458 +vn -0.196425 -0.793264 0.576324 +vn 0.094646 -0.792483 0.602505 +vn 0.094646 -0.792483 0.602505 +vn 0.056171 -0.474425 0.878502 +vn -0.192742 -0.793363 0.577431 +vn 0.073879 -0.619587 0.781444 +vn 0.073879 -0.619587 0.781444 +vn 0.117202 -0.980897 -0.155257 +vn 0.117163 -0.980903 -0.155248 +vn 0.074477 -0.619515 0.781444 +vn 0.074477 -0.619515 0.781444 +vn 0.094806 -0.792337 0.602672 +vn 0.112485 -0.941743 -0.316966 +vn 0.112518 -0.941696 -0.317094 +vn 0.110310 -0.923638 0.367047 +vn 0.094740 -0.792353 0.602661 +vn 0.110310 -0.923638 0.367047 +vn 0.110399 -0.923628 0.367047 +vn 0.117422 -0.980847 -0.155405 +vn 0.116966 -0.980927 -0.155248 +vn 0.303200 -0.921233 0.243721 +vn 0.110445 -0.923614 0.367068 +vn 0.095717 -0.792355 0.602505 +vn 0.112291 -0.941723 -0.317093 +vn 0.094643 -0.792365 0.602661 +vn 0.112291 -0.941723 -0.317093 +vn 0.117803 -0.980802 -0.155405 +vn 0.116150 -0.981022 -0.155257 +vn 0.110436 -0.923623 0.367047 +vn 0.113200 -0.941614 -0.317094 +vn 0.110403 -0.923619 0.367068 +vn 0.113103 -0.941669 -0.316966 +vn 0.094491 -0.792443 0.602583 +vn 0.104387 -0.873034 -0.476356 +vn 0.094869 -0.792457 0.602505 +vn 0.105919 -0.872647 -0.476727 +vn 0.104280 -0.873047 -0.476356 +vn 0.104280 -0.873047 -0.476356 +vn 0.110321 -0.923629 0.367068 +vn 0.110359 -0.923633 0.367047 +vn 0.117146 -0.980879 0.155415 +vn 0.117231 -0.980894 0.155257 +vn 0.093832 -0.792521 0.602583 +vn -0.284060 -0.958806 0.000000 +vn 0.095262 -0.792410 0.602505 +vn 0.117188 -0.980874 0.155415 +vn 0.104112 -0.873132 -0.476236 +vn 0.117653 -0.980801 0.155520 +vn 0.104513 -0.873019 -0.476356 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.992944 0.118586 0.000000 +vn -0.992943 0.118591 0.000001 +vn -0.992944 0.118586 0.000021 +vn -0.992941 0.118608 -0.000029 +vn -0.992943 0.118591 0.000033 +vn -0.992943 0.118591 0.000033 +vn -0.992941 0.118608 -0.000029 +vn -0.992944 0.118586 0.000000 +vn -0.992944 0.118586 0.000005 +vn -0.992943 0.118591 -0.000016 +vn 0.258820 0.000000 0.965926 +vn 0.707104 0.000000 0.707110 +vn 0.258820 0.000000 0.965926 +vn 0.965927 0.000000 0.258815 +vn 0.707104 0.000000 0.707110 +vn 0.965927 0.000000 0.258815 +vn 0.965917 0.004533 -0.258812 +vn 0.984631 0.000491 -0.174646 +vn 0.989758 0.000000 -0.142755 +vn 0.707109 0.004865 -0.707088 +vn 0.965912 -0.005536 -0.258811 +vn 0.682342 0.003011 -0.731026 +vn 0.557066 0.000148 -0.830468 +vn 0.553970 0.000078 -0.832537 +vn 0.587184 -0.000088 -0.809454 +vn 0.531297 0.000000 -0.847185 +vn 0.258815 -0.000684 -0.965927 +vn 0.267266 0.000000 -0.963623 +vn 0.541017 -0.000099 -0.841011 +vn 0.707108 -0.005188 -0.707087 +vn 0.258815 0.000684 -0.965927 +vn 0.267266 0.000000 -0.963623 +vn 0.627088 -0.001366 -0.778947 +vn 0.772615 -0.000747 -0.634875 +vn 0.912701 0.000637 -0.408627 +vn 0.987668 0.000000 -0.156563 +vn 0.897678 -0.000386 -0.440653 +vn 0.734322 -0.000585 -0.678801 +vn 0.698623 0.000392 -0.715490 +vn 0.875603 0.000600 -0.483030 +vn 0.982545 0.000000 -0.186023 +vn 0.858594 -0.002182 -0.512652 +vn -0.965927 0.000000 0.258814 +vn -0.965927 0.000000 0.258814 +vn -0.707117 0.000000 0.707096 +vn -0.707117 0.000000 0.707096 +vn -0.258815 0.000000 0.965927 +vn -0.258815 0.000000 0.965927 +vn 0.096567 -0.810069 -0.578328 +vn 0.096911 -0.809903 -0.578502 +vn 0.072022 -0.603971 0.793746 +vn 0.107144 -0.896859 -0.429144 +vn 0.071993 -0.603969 0.793750 +vn 0.107155 -0.896850 -0.429160 +vn 0.020619 -0.172350 0.984820 +vn 0.050233 -0.420955 0.905689 +vn 0.054383 -0.456150 -0.888240 +vn 0.054501 -0.456149 -0.888233 +vn 0.020552 -0.172345 0.984822 +vn 0.050178 -0.420955 0.905692 +vn 0.054502 -0.456136 -0.888240 +vn 0.050198 -0.420960 0.905689 +vn 0.724881 -0.487119 0.487096 +vn 0.093979 -0.787394 0.609245 +vn 0.097185 -0.809871 -0.578502 +vn 0.096560 -0.810070 -0.578328 +vn 0.094076 -0.787382 0.609245 +vn 0.094076 -0.787382 0.609245 +vn 0.072007 -0.603973 0.793746 +vn 0.116642 -0.976299 -0.182303 +vn 0.072160 -0.603954 0.793746 +vn 0.116623 -0.976303 -0.182295 +vn 0.072160 -0.603954 0.793746 +vn 0.389581 -0.238357 0.889614 +vn 0.020596 -0.172332 0.984824 +vn 0.020591 -0.172341 0.984822 +vn 0.050294 -0.420941 0.905692 +vn 0.050187 -0.420954 0.905692 +vn 0.107313 -0.896831 -0.429160 +vn 0.050294 -0.420941 0.905692 +vn 0.107313 -0.896831 -0.429160 +vn 0.116057 -0.976369 -0.182303 +vn 0.115995 -0.976378 -0.182295 +vn 0.106909 -0.896887 -0.429144 +vn 0.106950 -0.896874 -0.429160 +vn 0.762955 -0.457122 -0.457099 +vn 0.075664 -0.633836 -0.769757 +vn 0.075560 -0.633772 -0.769820 +vn 0.075721 -0.633753 -0.769820 +vn 0.116635 -0.976300 -0.182303 +vn 0.116635 -0.976300 -0.182303 +vn 0.116820 -0.976278 -0.182303 +vn 0.116820 -0.976278 -0.182303 +vn 0.096700 -0.810053 -0.578328 +vn 0.096769 -0.809920 -0.578502 +vn 0.096684 -0.810055 -0.578328 +vn 0.116151 -0.972193 0.203346 +vn 0.013051 -0.109198 -0.993934 +vn 0.116151 -0.972193 0.203346 +vn 0.013103 -0.109192 -0.993934 +vn 0.116425 -0.976325 -0.182303 +vn 0.116425 -0.976325 -0.182303 +vn 0.037811 -0.316381 -0.947878 +vn 0.115507 -0.972270 0.203346 +vn 0.037714 -0.316392 -0.947878 +vn 0.115507 -0.972270 0.203346 +vn 0.037955 -0.316289 -0.947903 +vn -0.063975 -0.779411 0.623238 +vn 0.106027 -0.887448 0.448547 +vn 0.068808 -0.594747 -0.800963 +vn 0.116651 -0.976323 -0.182170 +vn 0.107063 -0.896869 -0.429144 +vn 0.965166 -0.252723 -0.067716 +vn 0.107141 -0.896731 -0.429411 +vn 0.107031 -0.896744 -0.429411 +vn 0.116547 -0.976310 -0.182303 +vn 0.054538 -0.456144 -0.888233 +vn 0.105438 -0.887518 0.448547 +vn 0.105438 -0.887518 0.448547 +vn 0.093542 -0.787380 0.609330 +vn 0.054375 -0.456164 -0.888233 +vn 0.054375 -0.456164 -0.888233 +vn 0.116144 -0.972194 0.203346 +vn 0.116144 -0.972194 0.203346 +vn -0.060326 -0.818255 -0.571681 +vn 0.107130 -0.896852 -0.429161 +vn 0.106032 -0.887447 0.448547 +vn 0.106019 -0.887438 0.448569 +vn 0.096198 -0.809741 -0.578848 +vn 0.116328 -0.972172 0.203346 +vn 0.116328 -0.972172 0.203346 +vn 0.094501 -0.810189 -0.578501 +vn 0.116158 -0.972192 0.203346 +vn -0.068620 -0.606192 -0.792353 +vn 0.115935 -0.972219 0.203346 +vn 0.115935 -0.972219 0.203346 +vn 0.071144 -0.595450 -0.800236 +vn 0.107132 -0.896853 -0.429160 +vn 0.106187 -0.887418 0.448569 +vn 0.106187 -0.887418 0.448569 +vn 0.106556 -0.896929 -0.429144 +vn 0.105829 -0.887471 0.448547 +vn 0.105786 -0.887466 0.448569 +vn 0.106613 -0.896915 -0.429160 +vn 0.093933 -0.787333 0.609330 +vn 0.094077 -0.787387 0.609238 +vn 0.075551 -0.633773 -0.769820 +vn 0.094215 -0.787371 0.609238 +vn 0.075555 -0.633849 -0.769757 +vn 0.094215 -0.787371 0.609238 +vn 0.076046 -0.633714 -0.769820 +vn 0.093859 -0.787408 0.609245 +vn 0.096769 -0.809920 -0.578502 +vn 0.096769 -0.809920 -0.578502 +vn 0.093897 -0.787409 0.609238 +vn -0.271905 -0.359053 0.892832 +vn 0.072076 -0.603959 0.793750 +vn 0.313720 -0.245739 -0.917165 +vn 0.037794 -0.316308 -0.947903 +vn 0.050363 -0.420893 0.905711 +vn 0.072266 -0.603936 0.793750 +vn 0.067571 -0.217273 -0.973769 +vn 0.116174 -0.972190 0.203346 +vn 0.116664 -0.976297 -0.182303 +vn 0.116677 -0.976295 -0.182303 +vn 0.072266 -0.603936 0.793750 +vn 0.114529 -0.959571 0.257111 +vn 0.160606 -0.953017 0.256833 +vn 0.106032 -0.887447 0.448547 +vn -0.124833 -0.228670 -0.965467 +vn -0.124833 -0.228670 -0.965467 +vn -0.340034 -0.622870 -0.704564 +vn -0.340010 -0.622833 -0.704607 +vn -0.463049 -0.848216 0.257131 +vn -0.463049 -0.848216 -0.257131 +vn -0.463063 -0.848232 -0.257051 +vn -0.340034 -0.622869 0.704564 +vn -0.463063 -0.848232 0.257050 +vn -0.124833 -0.228670 0.965467 +vn -0.340010 -0.622833 0.704608 +vn -0.124833 -0.228670 0.965467 +vn -0.124833 0.228670 -0.965467 +vn -0.340011 0.622833 -0.704607 +vn -0.124833 0.228670 -0.965467 +vn -0.463063 0.848232 -0.257050 +vn -0.340034 0.622870 -0.704564 +vn -0.463049 0.848215 -0.257131 +vn -0.463063 0.848233 0.257050 +vn -0.463049 0.848216 0.257131 +vn -0.340010 0.622833 0.704608 +vn -0.340034 0.622869 0.704564 +vn -0.124833 0.228670 0.965467 +vn -0.124833 0.228670 0.965467 +vn 0.116223 0.972104 -0.203732 +vn 0.116223 0.972104 -0.203732 +vn 0.160422 0.953046 0.256843 +vn 0.116587 0.976237 0.182669 +vn 0.116071 0.972122 -0.203732 +vn 0.116071 0.972122 -0.203732 +vn 0.116647 0.976230 0.182669 +vn 0.116647 0.976230 0.182669 +vn 0.115808 0.972153 -0.203732 +vn 0.115808 0.972153 -0.203732 +vn 0.109015 0.899249 0.423636 +vn 0.116715 0.976222 0.182669 +vn 0.116715 0.976222 0.182669 +vn 0.107428 0.899439 0.423637 +vn 0.107469 0.899426 0.423654 +vn 0.116007 0.972130 -0.203732 +vn 0.116373 0.972112 -0.203606 +vn 0.116865 0.976224 0.182560 +vn 0.116352 0.972115 -0.203606 +vn 0.107533 0.899418 0.423654 +vn 0.107533 0.899418 0.423654 +vn 0.095144 0.813513 0.573711 +vn 0.135888 0.697450 0.703632 +vn 0.097137 0.813277 0.573712 +vn 0.097137 0.813277 0.573712 +vn 0.116563 0.976240 0.182669 +vn 0.020550 0.172072 -0.984870 +vn 0.116563 0.976240 0.182669 +vn 0.080868 0.252398 -0.964238 +vn 0.116302 0.976296 0.182536 +vn 0.020662 0.172079 -0.984866 +vn 0.117351 0.976146 0.182669 +vn 0.020552 0.172072 -0.984870 +vn 0.097232 0.813265 0.573712 +vn 0.097232 0.813265 0.573712 +vn 0.051373 0.414777 -0.908472 +vn -0.069757 0.471553 -0.879074 +vn 0.107392 0.899435 0.423654 +vn 0.049686 0.414979 -0.908473 +vn 0.107392 0.899435 0.423654 +vn 0.049566 0.414993 -0.908473 +vn 0.049566 0.414994 -0.908473 +vn -0.046467 0.821671 0.568065 +vn 0.139578 0.696866 -0.703488 +vn 0.108102 0.899212 0.423949 +vn 0.068871 0.599039 -0.797752 +vn 0.107149 0.899464 0.423654 +vn 0.116310 0.976295 0.182536 +vn 0.107316 0.899306 0.423949 +vn 0.116501 0.976272 0.182536 +vn 0.071511 0.598726 -0.797755 +vn 0.107091 0.899233 0.424159 +vn 0.071511 0.598726 -0.797755 +vn 0.116501 0.976272 0.182536 +vn 0.071664 0.629060 0.774046 +vn 0.071581 0.598718 -0.797755 +vn 0.071430 0.598685 -0.797793 +vn 0.075086 0.628655 0.774051 +vn 0.091703 0.791334 -0.604468 +vn 0.075086 0.628655 0.774051 +vn 0.097105 0.813280 0.573712 +vn 0.097105 0.813280 0.573712 +vn 0.095308 0.813288 0.574003 +vn 0.094477 0.791006 -0.604470 +vn 0.096886 0.813307 0.573712 +vn 0.054785 0.450252 0.891219 +vn 0.094477 0.791006 -0.604470 +vn 0.151396 0.954495 -0.256941 +vn 0.037741 0.315837 0.948062 +vn 0.107454 0.889973 -0.443172 +vn 0.053793 0.450385 0.891212 +vn 0.053813 0.450368 0.891220 +vn -0.198770 0.465725 0.862317 +vn 0.075062 0.628663 0.774047 +vn 0.075160 0.628651 0.774047 +vn 0.075176 0.628645 0.774051 +vn 0.106314 0.890110 -0.443173 +vn 0.053823 0.450345 0.891231 +vn 0.106314 0.890110 -0.443173 +vn 0.053858 0.450377 0.891212 +vn 0.073192 0.627946 0.774808 +vn 0.013025 0.109053 0.993951 +vn 0.094570 0.790994 -0.604470 +vn 0.013024 0.109053 0.993951 +vn 0.094570 0.790994 -0.604470 +vn 0.085105 0.251833 0.964021 +vn 0.062337 0.312808 0.947769 +vn 0.037739 0.315842 0.948061 +vn 0.037723 0.315839 0.948062 +vn 0.106418 0.890097 -0.443173 +vn 0.106418 0.890097 -0.443173 +vn 0.094405 0.790994 -0.604496 +vn 0.094446 0.791009 -0.604470 +vn -0.041231 0.786154 -0.616654 +vn 0.094230 0.791015 -0.604496 +vn 0.106279 0.890114 -0.443173 +vn 0.106279 0.890114 -0.443173 +vn 0.116095 0.972121 -0.203725 +vn 0.106534 0.890083 -0.443173 +vn 0.106039 0.890143 -0.443173 +vn 0.106039 0.890143 -0.443173 +vn 0.116155 0.972113 -0.203725 +vn 0.116109 0.972117 -0.203732 +vn 0.113512 -0.959692 0.257111 +vn 0.028160 -0.235762 -0.971403 +vn 0.028450 -0.235970 -0.971344 +vn 0.030494 -0.258746 -0.965464 +vn 0.102525 -0.649870 -0.753099 +vn 0.056486 -0.473001 -0.879249 +vn 0.056789 -0.472965 -0.879249 +vn 0.083311 -0.704709 -0.704588 +vn 0.080317 -0.657876 -0.748831 +vn 0.078696 -0.658071 -0.748832 +vn 0.324031 -0.881581 -0.343247 +vn 0.101463 -0.834615 -0.541409 +vn 0.099741 -0.834822 -0.541410 +vn 0.113436 -0.959701 -0.257112 +vn 0.191276 -0.917467 -0.348808 +vn 0.111030 -0.930160 -0.349963 +vn 0.999646 0.025166 0.008582 +vn 0.117967 -0.987629 -0.103304 +vn 0.199110 -0.974554 -0.102952 +vn 0.118107 -0.988803 0.091214 +vn 0.230828 -0.913929 0.333843 +vn 0.111615 -0.935113 0.336311 +vn 0.101877 -0.852834 0.512147 +vn 0.104359 -0.852535 0.512146 +vn 0.087367 -0.725785 0.682351 +vn 0.083352 -0.704703 0.704589 +vn 0.089088 -0.725250 0.682697 +vn 0.086305 -0.725585 0.682699 +vn 0.054880 -0.457677 0.887423 +vn 0.019234 -0.159203 0.987058 +vn 0.018983 -0.158931 0.987107 +vn 0.029724 -0.258838 0.965463 +vn 0.055303 -0.457296 0.887593 +vn 0.055033 -0.457328 0.887593 +vn 0.113513 0.959692 -0.257112 +vn 0.018970 0.158819 -0.987125 +vn 0.029724 0.258838 -0.965463 +vn 0.054844 0.457379 -0.887579 +vn 0.019231 0.159103 -0.987075 +vn 0.083353 0.704704 -0.704589 +vn 0.087449 0.725571 -0.682568 +vn 0.055335 0.456936 -0.887777 +vn 0.054990 0.456977 -0.887777 +vn 0.086284 0.725423 -0.682874 +vn 0.088959 0.725102 -0.682872 +vn 0.231769 0.913712 -0.333787 +vn 0.104185 0.852188 -0.512758 +vn 0.101834 0.852472 -0.512759 +vn 0.111616 0.935123 -0.336284 +vn 0.113436 0.959701 0.257111 +vn 0.186063 0.982453 0.012932 +vn 0.119276 0.992777 0.012960 +vn 0.324450 0.881384 0.343359 +vn 0.111030 0.930162 0.349957 +vn 0.179245 0.919773 0.349126 +vn 0.083310 0.704708 0.704589 +vn 0.099718 0.834621 0.541723 +vn 0.101303 0.834431 0.541722 +vn 0.102657 0.649673 0.753251 +vn 0.078684 0.657968 0.748924 +vn 0.080179 0.657789 0.748923 +vn 0.030492 0.258746 0.965464 +vn 0.028140 0.235590 0.971445 +vn 0.028352 0.235742 0.971402 +vn 0.056613 0.472488 0.879517 +vn 0.056427 0.472511 0.879517 +vn 0.309018 0.000000 -0.951056 +vn 0.309018 0.000000 -0.951056 +vn 0.809021 0.000000 -0.587780 +vn 0.809021 0.000000 -0.587780 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.809021 -0.000000 0.587780 +vn 0.809021 0.000000 0.587780 +vn 0.309017 -0.000000 0.951056 +vn 0.309017 0.000000 0.951056 +vn 0.989758 -0.000000 0.142754 +vn 0.951030 -0.007960 0.308995 +vn 0.912224 -0.001950 0.409688 +vn 0.984631 0.000491 0.174646 +vn 0.623233 -0.005086 0.782020 +vn 0.951032 0.007697 0.308996 +vn 0.527922 -0.004239 0.849283 +vn 0.587763 -0.007346 0.809000 +vn 0.587184 -0.000088 0.809454 +vn 0.683270 0.001816 0.730164 +vn 0.531310 0.000000 0.847178 +vn 0.553975 0.000078 0.832533 +vn 0.545375 0.004916 0.838178 +vn 0.414720 0.000000 0.909949 +vn 0.414720 -0.000000 0.909949 +vn 0.587763 0.007455 0.808999 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.587779 0.000000 0.809022 +vn -0.587779 0.000000 0.809022 +vn -0.951060 0.000000 0.309005 +vn -0.951060 0.000000 0.309005 +vn 0.875603 0.000600 0.483031 +vn 0.987668 0.000000 0.156563 +vn 0.897678 -0.000386 0.440653 +vn 0.734322 -0.000585 0.678801 +vn 0.698623 0.000392 0.715490 +vn 0.773546 0.001118 0.633739 +vn 0.982546 0.000000 0.186022 +vn 0.858404 -0.001554 0.512971 +vn -0.049876 0.403699 0.913532 +vn -0.110794 0.923573 -0.367066 +vn -0.048304 0.404035 0.913467 +vn -0.110232 0.923776 -0.366723 +vn -0.066427 0.555621 0.828778 +vn -0.095289 0.792158 -0.602832 +vn -0.066427 0.555621 0.828778 +vn -0.094285 0.792411 -0.602657 +vn -0.351979 0.495788 0.793918 +vn -0.082628 0.692228 0.716933 +vn -0.084735 0.691559 0.717333 +vn -0.082681 0.692222 0.716933 +vn -0.082628 0.692229 0.716933 +vn -0.110322 0.923638 -0.367045 +vn -0.067779 0.553986 0.829763 +vn -0.110358 0.923625 -0.367066 +vn -0.066323 0.555634 0.828778 +vn -0.016672 0.139494 0.990083 +vn -0.016713 0.139489 0.990083 +vn -0.303073 0.921251 -0.243810 +vn -0.048520 0.404029 0.913458 +vn -0.111037 0.923680 -0.366723 +vn -0.016663 0.139521 0.990079 +vn -0.109920 0.923814 -0.366723 +vn -0.048257 0.404061 0.913458 +vn -0.048257 0.404061 0.913458 +vn -0.110405 0.923628 -0.367045 +vn -0.117146 0.980879 -0.155415 +vn -0.117146 0.980879 -0.155415 +vn -0.117321 0.980858 -0.155415 +vn -0.117268 0.980866 -0.155405 +vn 0.390541 0.744777 0.541096 +vn -0.071874 0.876512 0.475983 +vn -0.117047 0.980892 -0.155405 +vn -0.117047 0.980892 -0.155405 +vn -0.117160 0.980879 -0.155405 +vn -0.117199 0.980872 -0.155415 +vn -0.117280 0.980863 -0.155415 +vn -0.117247 0.980868 -0.155405 +vn -0.082901 0.692196 0.716933 +vn -0.117146 0.980879 0.155415 +vn -0.117146 0.980879 0.155415 +vn -0.036985 0.308813 -0.950403 +vn -0.112472 0.941744 0.316966 +vn -0.112472 0.941744 0.316966 +vn -0.074200 0.619548 -0.781444 +vn -0.117267 0.980864 0.155415 +vn -0.021507 0.179950 -0.983441 +vn -0.117321 0.980859 0.155405 +vn -0.021359 0.179967 -0.983441 +vn 0.041347 0.317200 -0.947457 +vn -0.066542 0.555607 0.828778 +vn 0.196792 0.793205 -0.576280 +vn -0.112640 0.941724 0.316966 +vn -0.112584 0.941688 0.317094 +vn 0.192642 0.793316 -0.577528 +vn -0.117107 0.980885 -0.155405 +vn -0.110415 0.923763 -0.366703 +vn -0.117049 0.980895 -0.155385 +vn -0.117047 0.980892 0.155405 +vn -0.056654 0.474368 -0.878502 +vn -0.117047 0.980892 0.155405 +vn -0.149726 0.461189 -0.874578 +vn -0.056313 0.474484 -0.878461 +vn -0.112372 0.941713 0.317094 +vn -0.056712 0.474361 -0.878502 +vn -0.112372 0.941713 0.317094 +vn -0.117159 0.980877 0.155415 +vn -0.073995 0.619573 -0.781444 +vn -0.117199 0.980874 0.155405 +vn -0.073995 0.619573 -0.781444 +vn -0.074074 0.619581 -0.781430 +vn -0.112480 0.941701 0.317094 +vn -0.074106 0.619559 -0.781444 +vn -0.112523 0.941738 0.316966 +vn -0.117280 0.980864 0.155405 +vn -0.117246 0.980867 0.155415 +vn -0.074972 0.618605 -0.782117 +vn -0.073935 0.619597 -0.781430 +vn 0.284060 0.958806 0.000000 +vn -0.104716 0.872792 0.476727 +vn -0.112564 0.941691 0.317094 +vn -0.117188 0.980874 -0.155415 +vn -0.112601 0.941729 0.316966 +vn 0.822948 0.175562 0.540310 +vn -0.094646 0.792483 -0.602505 +vn -0.094705 0.792417 -0.602583 +vn 0.135100 0.418974 0.897891 +vn -0.104275 0.873112 0.476237 +vn -0.104275 0.873112 0.476237 +vn -0.104384 0.873099 0.476237 +vn -0.094780 0.792408 -0.602583 +vn -0.094063 0.792553 -0.602505 +vn -0.104432 0.873097 0.476230 +vn -0.110326 0.923773 -0.366703 +vn -0.851953 0.485227 0.196800 +vn -0.110387 0.923630 -0.367045 +vn -0.117107 0.980885 0.155405 +vn -0.117049 0.980892 0.155405 +vn -0.117107 0.980885 0.155405 +vn -0.112833 0.940817 0.319582 +vn -0.112430 0.941707 0.317094 +vn -0.094566 0.792493 -0.602505 +vn -0.104187 0.873123 0.476237 +vn -0.095055 0.792375 -0.602583 +vn -0.104220 0.873123 0.476230 +vn -0.104287 0.873111 0.476237 +vn -0.106417 0.872587 0.476726 +vn -0.117186 0.980874 0.155415 +vn -0.104395 0.873098 0.476237 +vn -0.104287 0.873111 0.476237 +vn -0.109645 0.923846 -0.366723 +vn -0.082672 0.692223 0.716933 +vn -0.110424 0.923626 -0.367045 +vn -0.082672 0.692223 0.716933 +vn -0.082758 0.692213 0.716933 +vn -0.112545 0.941736 0.316966 +vn -0.082758 0.692213 0.716933 +vn -0.094657 0.792482 -0.602505 +vn -0.066359 0.555629 0.828778 +vn -0.095677 0.792244 -0.602657 +vn -0.066359 0.555629 0.828778 +vn 0.340036 0.622869 -0.704564 +vn 0.463807 0.849615 -0.251073 +vn 0.463807 0.849615 -0.251073 +vn 0.463807 0.849615 0.251073 +vn 0.463807 0.849615 0.251074 +vn 0.341413 0.622066 -0.704607 +vn 0.123488 0.229430 -0.965460 +vn 0.121901 0.223301 -0.967097 +vn 0.121892 0.223278 0.967103 +vn 0.340025 0.622849 0.704586 +vn 0.340028 0.622873 0.704564 +vn 0.340036 0.622869 -0.704564 +vn 0.341430 0.622081 -0.704585 +vn 0.340018 0.622853 -0.704586 +vn 0.463045 0.848218 -0.257131 +vn 0.463817 0.849609 -0.251073 +vn 0.463817 0.849609 -0.251073 +vn 0.462431 0.850365 -0.251072 +vn 0.461700 0.848950 0.257132 +vn 0.463807 0.849615 0.251074 +vn 0.463817 0.849609 0.251073 +vn 0.463817 0.849609 0.251074 +vn 0.123487 0.229427 0.965460 +vn 0.341414 0.622067 0.704606 +vn 0.121901 0.223301 0.967097 +vn 0.340028 0.622873 0.704564 +vn 0.341430 0.622081 0.704585 +vn 0.340025 0.622849 0.704586 +vn 0.126195 0.227952 -0.965460 +vn 0.338601 0.623601 -0.704607 +vn 0.338585 0.623587 -0.704627 +vn 0.463045 0.848218 -0.257131 +vn 0.465199 0.848867 -0.251027 +vn 0.464398 0.847477 0.257132 +vn 0.463813 0.849625 0.251028 +vn 0.121901 0.223298 -0.967098 +vn 0.121921 0.223326 -0.967089 +vn 0.126193 0.227950 0.965461 +vn 0.338595 0.623606 0.704606 +vn 0.338591 0.623584 0.704627 +vn 0.340031 0.622846 -0.704586 +vn 0.339998 0.622817 -0.704628 +vn 0.463823 0.849620 -0.251028 +vn 0.463807 0.849615 -0.251073 +vn 0.463813 0.849625 0.251028 +vn 0.463817 0.849609 0.251074 +vn 0.121892 0.223278 -0.967103 +vn 0.121901 0.223298 0.967098 +vn 0.121921 0.223326 0.967089 +vn 0.340011 0.622810 0.704628 +vn 0.340018 0.622853 0.704586 +vn 0.340018 0.622853 -0.704586 +vn 0.340028 -0.622873 -0.704564 +vn 0.340025 -0.622849 -0.704586 +vn 0.463807 -0.849615 -0.251073 +vn 0.463807 -0.849615 -0.251073 +vn 0.463807 -0.849615 0.251073 +vn 0.463807 -0.849615 0.251074 +vn 0.126195 -0.227952 -0.965460 +vn 0.121921 -0.223326 -0.967089 +vn 0.121901 -0.223298 0.967098 +vn 0.121892 -0.223278 0.967103 +vn 0.340036 -0.622869 0.704564 +vn 0.340018 -0.622853 0.704586 +vn 0.338601 -0.623601 -0.704607 +vn 0.340018 -0.622853 -0.704586 +vn 0.338585 -0.623587 -0.704627 +vn 0.340011 -0.622810 -0.704628 +vn 0.463045 -0.848218 -0.257131 +vn 0.463813 -0.849625 -0.251028 +vn 0.463817 -0.849609 -0.251073 +vn 0.465199 -0.848867 -0.251027 +vn 0.464398 -0.847477 0.257132 +vn 0.463813 -0.849625 0.251028 +vn 0.463807 -0.849615 0.251073 +vn 0.463823 -0.849619 0.251028 +vn 0.126193 -0.227950 0.965461 +vn 0.338595 -0.623606 0.704606 +vn 0.121921 -0.223326 0.967089 +vn 0.340031 -0.622846 0.704586 +vn 0.338591 -0.623584 0.704627 +vn 0.339998 -0.622817 0.704628 +vn 0.123488 -0.229430 -0.965460 +vn 0.341420 -0.622062 -0.704607 +vn 0.341423 -0.622085 -0.704585 +vn 0.463045 -0.848218 -0.257131 +vn 0.462431 -0.850365 -0.251072 +vn 0.461700 -0.848950 0.257132 +vn 0.463807 -0.849615 0.251074 +vn 0.121901 -0.223301 -0.967097 +vn 0.123487 -0.229427 0.965460 +vn 0.341414 -0.622067 0.704606 +vn 0.341430 -0.622081 0.704585 +vn 0.340028 -0.622873 -0.704564 +vn 0.340025 -0.622849 -0.704586 +vn 0.463817 -0.849609 -0.251073 +vn 0.463817 -0.849609 -0.251073 +vn 0.463817 -0.849609 0.251073 +vn 0.463817 -0.849609 0.251073 +vn 0.121901 -0.223298 -0.967098 +vn 0.121892 -0.223278 -0.967103 +vn 0.121901 -0.223301 0.967097 +vn 0.340018 -0.622853 0.704586 +vn 0.340036 -0.622869 0.704564 +vn -0.107830 -0.906697 -0.407766 +vn -0.107830 -0.906697 -0.407766 +vn -0.108812 -0.906580 -0.407766 +vn -0.108778 -0.906578 -0.407780 +vn -0.115660 -0.969276 0.217087 +vn -0.116850 -0.979248 -0.165588 +vn -0.121242 -0.978778 -0.165207 +vn -0.063327 -0.964395 -0.256774 +vn -0.106396 -0.906867 -0.407765 +vn -0.107606 -0.906724 -0.407766 +vn -0.107556 -0.906723 -0.407780 +vn -0.116741 -0.979325 -0.165208 +vn -0.116704 -0.979328 -0.165217 +vn -0.117159 -0.979274 -0.165217 +vn -0.117159 -0.979274 -0.165217 +vn -0.116468 -0.979333 -0.165356 +vn -0.117088 -0.979282 -0.165217 +vn -0.117532 -0.979231 -0.165208 +vn -0.116920 -0.979279 -0.165356 +vn -0.117064 -0.979287 -0.165208 +vn -0.116954 -0.979275 -0.165356 +vn -0.116173 -0.979368 -0.165356 +vn -0.116173 -0.969215 0.217087 +vn -0.115548 -0.969315 0.216972 +vn -0.306511 -0.689098 0.656654 +vn -0.105982 -0.883939 0.455434 +vn -0.115961 -0.969266 0.216972 +vn -0.115961 -0.969266 0.216972 +vn -0.016684 -0.139918 -0.990023 +vn -0.016710 -0.139914 -0.990023 +vn -0.105756 -0.883966 0.455434 +vn 0.024644 -0.264898 -0.963961 +vn -0.105756 -0.883966 0.455434 +vn -0.124436 -0.365676 -0.922386 +vn -0.092324 -0.771695 0.629256 +vn -0.115242 -0.969351 0.216972 +vn -0.115889 -0.969250 0.217082 +vn -0.105136 -0.884040 0.455434 +vn -0.062272 -0.506943 -0.859727 +vn -0.105102 -0.884061 0.455400 +vn -0.045935 -0.385227 -0.921678 +vn -0.046050 -0.385227 -0.921672 +vn -0.115727 -0.969294 0.216972 +vn -0.043520 -0.385514 -0.921675 +vn -0.060624 -0.507140 -0.859729 +vn -0.116328 -0.969197 0.217082 +vn -0.060914 -0.507106 -0.859729 +vn -0.060624 -0.507140 -0.859729 +vn -0.115865 -0.969253 0.217082 +vn -0.081860 -0.665244 -0.742125 +vn -0.115759 -0.969265 0.217082 +vn -0.085037 -0.962662 0.257003 +vn -0.114989 -0.969382 0.216972 +vn -0.347706 -0.770985 -0.533557 +vn -0.106062 -0.883947 0.455400 +vn -0.106093 -0.883925 0.455434 +vn -0.104779 -0.884099 0.455400 +vn -0.079179 -0.666008 -0.741731 +vn -0.104871 -0.884089 0.455400 +vn -0.104917 -0.884066 0.455434 +vn -0.092677 -0.771653 0.629256 +vn -0.099083 -0.828188 -0.551623 +vn -0.091797 -0.771883 0.629102 +vn -0.101421 -0.828642 -0.550514 +vn -0.112435 -0.905281 -0.409665 +vn -0.092634 -0.771784 0.629102 +vn -0.092605 -0.771791 0.629097 +vn -0.081172 -0.666052 -0.741476 +vn -0.079512 -0.665968 -0.741731 +vn -0.032613 -0.709803 0.703645 +vn -0.091606 -0.771906 0.629102 +vn -0.091565 -0.771915 0.629097 +vn -0.040975 -0.709088 -0.703928 +vn -0.079642 -0.666235 -0.741477 +vn -0.095645 -0.771419 0.629098 +vn -0.268269 -0.386238 0.882526 +vn -0.079642 -0.666235 -0.741477 +vn -0.069092 -0.573367 0.816380 +vn -0.069849 -0.667373 -0.741441 +vn -0.068833 -0.573488 0.816317 +vn -0.070501 -0.573406 0.816232 +vn -0.098554 -0.828978 -0.550530 +vn -0.068053 -0.573700 0.816234 +vn -0.098588 -0.828983 -0.550516 +vn -0.068559 -0.573521 0.816317 +vn -0.021563 -0.180549 0.983330 +vn -0.021447 -0.180563 0.983330 +vn 0.016533 -0.264038 0.964371 +vn -0.050187 -0.422869 0.904800 +vn -0.048848 -0.422903 0.904857 +vn -0.050530 -0.422703 0.904858 +vn -0.108046 -0.906671 -0.407766 +vn -0.099454 -0.828870 -0.550530 +vn -0.098951 -0.828784 -0.550750 +vn -0.108467 -0.906621 -0.407766 +vn -0.108467 -0.906621 -0.407766 +vn -0.100471 -0.828748 -0.550530 +vn -0.099088 -0.828914 -0.550530 +vn -0.098364 -0.828854 -0.550750 +vn -0.115488 0.959453 0.257123 +vn -0.025273 0.212113 -0.976918 +vn -0.025331 0.212075 -0.976925 +vn -0.031633 0.258611 -0.965463 +vn 0.003941 0.614406 -0.788981 +vn -0.053891 0.451590 -0.890597 +vn -0.053961 0.451581 -0.890597 +vn -0.085317 0.704468 -0.704589 +vn -0.074693 0.625951 -0.776277 +vn -0.074498 0.625974 -0.776277 +vn 0.241905 0.887053 -0.393217 +vn -0.096642 0.811325 -0.576552 +vn -0.096859 0.811299 -0.576552 +vn -0.115807 0.959415 -0.257122 +vn -0.109168 0.913535 -0.391836 +vn -0.101156 0.914463 -0.391823 +vn 0.924994 0.379610 0.016807 +vn -0.117294 0.981996 -0.148072 +vn -0.118365 0.990963 0.063097 +vn -0.109354 0.982913 -0.148067 +vn 0.031724 0.951288 0.306666 +vn -0.112852 0.944044 0.309911 +vn -0.098771 0.857801 0.504402 +vn -0.102402 0.857374 0.504405 +vn -0.084560 0.721437 0.687298 +vn -0.084782 0.704534 0.704588 +vn -0.082581 0.721456 0.687518 +vn -0.086368 0.721008 0.687523 +vn -0.017817 0.149163 0.988652 +vn -0.051211 0.435519 0.898721 +vn -0.017124 0.149792 0.988569 +vn -0.032100 0.258552 0.965464 +vn -0.050381 0.435226 0.898911 +vn -0.051648 0.435075 0.898912 +vn -0.115487 -0.959454 -0.257122 +vn -0.032100 -0.258555 -0.965463 +vn -0.017842 -0.149375 -0.988620 +vn -0.051354 -0.436049 -0.898457 +vn -0.017224 -0.149936 -0.988546 +vn -0.084786 -0.704532 -0.704589 +vn -0.084743 -0.721968 -0.686717 +vn -0.051711 -0.435620 -0.898644 +vn -0.050535 -0.435760 -0.898643 +vn -0.082893 -0.721987 -0.686923 +vn -0.086427 -0.721569 -0.686927 +vn 0.029694 -0.951351 -0.306674 +vn -0.099014 -0.857533 -0.504809 +vn -0.112855 -0.944074 -0.309819 +vn -0.102373 -0.857137 -0.504813 +vn -0.115808 -0.959414 0.257123 +vn -0.107721 -0.990445 0.086110 +vn -0.117495 -0.989333 0.086114 +vn 0.242184 -0.887150 0.392825 +vn -0.098687 -0.914778 0.391717 +vn -0.109173 -0.913577 0.391738 +vn -0.085316 -0.704470 0.704588 +vn -0.096875 -0.811427 0.576369 +vn -0.096203 -0.811507 0.576369 +vn 0.003513 -0.614812 0.788665 +vn -0.074714 -0.626132 0.776130 +vn -0.074079 -0.626207 0.776129 +vn -0.025371 -0.212412 0.976851 +vn -0.031628 -0.258609 0.965464 +vn -0.025281 -0.212471 0.976840 +vn -0.053978 -0.451724 0.890523 +vn -0.053893 -0.451734 0.890523 +vn -0.994503 0.009859 0.104240 +vn -0.980340 0.002797 0.197295 +vn -0.850135 -0.000140 0.526565 +vn -0.803095 -0.001934 -0.595848 +vn -0.770607 -0.008579 0.637253 +vn -0.843359 0.002883 0.537342 +vn -0.842092 -0.004349 -0.539317 +vn -0.785559 0.007390 0.618743 +vn -0.824092 0.000095 0.566456 +vn -0.810716 0.000000 0.585439 +vn -0.758707 0.000000 -0.651432 +vn -0.686693 0.000000 0.726947 +vn -0.758707 -0.000000 -0.651432 +vn -0.824016 -0.000095 -0.566567 +vn -0.810731 0.000000 -0.585419 +vn -0.686693 0.000000 0.726947 +vn -0.770607 0.008579 0.637253 +vn -0.289086 0.000000 0.957303 +vn -0.289086 0.000000 0.957303 +vn -0.894397 0.000458 0.447273 +vn -0.970170 0.000445 0.242423 +vn -0.999966 0.000218 0.008207 +vn -0.976127 0.000207 -0.217200 +vn -0.911851 -0.005052 -0.410491 +vn -0.914140 0.000302 -0.405399 +vn -0.957361 -0.000298 -0.288894 +vn -0.998670 0.000317 -0.051565 +vn -0.913738 -0.001051 0.406302 +vn -0.894349 -0.000459 -0.447369 +vn -0.885972 -0.009308 -0.463646 +vn -0.970123 -0.000449 -0.242614 +vn -0.999967 -0.000219 -0.008137 +vn -0.976113 -0.000205 0.217261 +vn -0.914034 -0.000299 0.405637 +vn -0.880832 -0.000220 0.473429 +vn -0.957422 0.000283 0.288692 +vn -0.814135 0.002443 -0.580670 +vn -0.980677 0.001774 -0.195624 +vn -0.850165 0.000141 -0.526516 +vn -0.876770 0.007467 -0.480853 +vn -0.998645 -0.004855 0.051816 +vn -0.885974 0.009071 -0.463647 +vn -0.994509 -0.009302 0.104241 +vn -0.807438 -0.005575 0.589926 +vn 0.258815 -0.000684 0.965927 +vn 0.267266 0.000000 0.963623 +vn 0.541189 0.000100 0.840901 +vn 0.531377 -0.000000 0.847135 +vn 0.267266 0.000000 0.963623 +vn 0.586906 0.000087 0.809655 +vn 0.554151 -0.000078 0.832416 +vn 0.707108 0.005194 0.707087 +vn 0.556832 -0.000147 0.830625 +vn 0.258815 0.000684 0.965927 +vn 0.681882 -0.002989 0.731456 +vn 0.965912 0.005533 0.258810 +vn 0.707109 -0.004871 0.707088 +vn 0.989809 0.000000 0.142402 +vn 0.984686 -0.000476 0.174337 +vn 0.965917 -0.004508 0.258812 +vn 0.627701 0.001379 0.778453 +vn 0.773529 0.000705 0.633760 +vn 0.913183 -0.000619 0.407549 +vn 0.987624 -0.000000 0.156839 +vn 0.897444 0.000375 0.441127 +vn 0.733928 0.000577 0.679227 +vn 0.698811 -0.000387 0.715306 +vn 0.875847 -0.000594 0.482588 +vn 0.982422 -0.000000 0.186673 +vn 0.857903 0.002181 0.513807 +vn -0.258815 0.000000 -0.965927 +vn -0.258815 -0.000000 -0.965927 +vn -0.707117 0.000000 -0.707096 +vn -0.707117 -0.000000 -0.707096 +vn -0.965927 0.000000 -0.258815 +vn -0.965927 -0.000000 -0.258815 +vn 0.965927 0.000000 -0.258815 +vn 0.965927 0.000000 -0.258815 +vn 0.707105 0.000000 -0.707109 +vn 0.707105 0.000000 -0.707109 +vn 0.258818 0.000000 -0.965926 +vn 0.258818 0.000000 -0.965926 +vn -0.965927 0.000000 0.258815 +vn -0.965927 0.000000 0.258815 +vn -0.707105 0.000000 0.707109 +vn -0.707105 0.000000 0.707109 +vn -0.258818 0.000000 0.965926 +vn -0.258818 0.000000 0.965926 +vn 0.965927 0.000000 -0.258814 +vn 0.965927 0.000000 -0.258814 +vn 0.707075 0.000000 -0.707139 +vn 0.707075 0.000000 -0.707139 +vn 0.258845 0.000000 -0.965919 +vn 0.258845 0.000000 -0.965919 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.113513 0.959692 0.257112 +vn 0.018970 0.158819 0.987125 +vn 0.054844 0.457377 0.887580 +vn 0.019231 0.159103 0.987075 +vn 0.029723 0.258836 0.965464 +vn 0.087447 0.725573 0.682566 +vn 0.083354 0.704704 0.704588 +vn 0.054990 0.456977 0.887777 +vn 0.055332 0.456936 0.887777 +vn 0.088959 0.725103 0.682871 +vn 0.086284 0.725424 0.682873 +vn 0.231772 0.913711 0.333787 +vn 0.104185 0.852185 0.512764 +vn 0.101833 0.852468 0.512765 +vn 0.111616 0.935123 0.336284 +vn 0.186066 0.982452 -0.012932 +vn 0.113436 0.959701 -0.257111 +vn 0.119276 0.992777 -0.012960 +vn 0.324451 0.881384 -0.343358 +vn 0.111030 0.930162 -0.349957 +vn 0.179316 0.919760 -0.349125 +vn 0.083310 0.704708 -0.704589 +vn 0.101300 0.834430 -0.541725 +vn 0.099717 0.834620 -0.541725 +vn 0.102655 0.649673 -0.753251 +vn 0.078684 0.657968 -0.748924 +vn 0.080174 0.657789 -0.748923 +vn 0.028349 0.235742 -0.971402 +vn 0.028140 0.235591 -0.971445 +vn 0.030492 0.258748 -0.965464 +vn 0.056611 0.472489 -0.879517 +vn 0.056427 0.472511 -0.879517 +vn 0.113512 -0.959692 -0.257111 +vn 0.028161 -0.235764 0.971402 +vn 0.030494 -0.258744 0.965464 +vn 0.028447 -0.235969 0.971344 +vn 0.102525 -0.649869 0.753100 +vn 0.056785 -0.472947 0.879259 +vn 0.056484 -0.472983 0.879259 +vn 0.083311 -0.704710 0.704588 +vn 0.078696 -0.658072 0.748831 +vn 0.080307 -0.657879 0.748830 +vn 0.324029 -0.881582 0.343248 +vn 0.099741 -0.834820 0.541413 +vn 0.101455 -0.834614 0.541412 +vn 0.113436 -0.959701 0.257112 +vn 0.111030 -0.930160 0.349963 +vn 0.191276 -0.917467 0.348808 +vn 0.999646 0.025166 -0.008582 +vn 0.199110 -0.974554 0.102953 +vn 0.117967 -0.987629 0.103305 +vn 0.118107 -0.988803 -0.091214 +vn 0.230826 -0.913930 -0.333843 +vn 0.111615 -0.935113 -0.336311 +vn 0.101877 -0.852835 -0.512147 +vn 0.104355 -0.852536 -0.512146 +vn 0.083352 -0.704703 -0.704589 +vn 0.087367 -0.725783 -0.682354 +vn 0.089082 -0.725250 -0.682698 +vn 0.086305 -0.725584 -0.682700 +vn 0.029724 -0.258839 -0.965463 +vn 0.018983 -0.158931 -0.987107 +vn 0.054880 -0.457679 -0.887422 +vn 0.019234 -0.159203 -0.987058 +vn 0.055304 -0.457298 -0.887592 +vn 0.055033 -0.457330 -0.887592 +vn 0.106418 0.890097 0.443173 +vn 0.106418 0.890097 0.443173 +vn 0.116349 0.972089 0.203732 +vn 0.116010 0.972155 0.203607 +vn 0.151396 0.954495 0.256942 +vn 0.107454 0.889973 0.443172 +vn 0.106314 0.890110 0.443173 +vn 0.106314 0.890110 0.443173 +vn 0.115808 0.972153 0.203732 +vn 0.115808 0.972153 0.203732 +vn 0.116319 0.976294 -0.182536 +vn 0.116071 0.972122 0.203732 +vn 0.116071 0.972122 0.203732 +vn 0.116501 0.976272 -0.182536 +vn 0.116501 0.976272 -0.182536 +vn 0.116223 0.972104 0.203732 +vn 0.116223 0.972104 0.203732 +vn 0.116299 0.976272 -0.182669 +vn 0.117354 0.976170 -0.182536 +vn 0.116154 0.972112 0.203732 +vn 0.116095 0.972120 0.203725 +vn 0.116109 0.972119 0.203725 +vn 0.107317 0.899307 -0.423946 +vn -0.046469 0.821670 -0.568066 +vn 0.107113 0.899242 -0.424136 +vn 0.108119 0.899349 -0.423652 +vn 0.107133 0.899329 -0.423946 +vn 0.020662 0.172076 0.984867 +vn 0.116563 0.976240 -0.182669 +vn 0.116563 0.976240 -0.182669 +vn -0.301749 0.339572 0.890864 +vn 0.095308 0.813286 -0.574005 +vn 0.096886 0.813305 -0.573714 +vn 0.020550 0.172070 0.984870 +vn 0.080868 0.252397 0.964239 +vn 0.020552 0.172070 0.984870 +vn 0.116715 0.976222 -0.182669 +vn 0.049629 0.415012 0.908461 +vn 0.116715 0.976222 -0.182669 +vn 0.049686 0.414983 0.908471 +vn 0.107392 0.899436 -0.423652 +vn 0.107392 0.899436 -0.423652 +vn 0.051373 0.414781 0.908470 +vn 0.049567 0.414997 0.908471 +vn 0.049567 0.414997 0.908471 +vn 0.116647 0.976230 -0.182669 +vn -0.041229 0.786155 0.616652 +vn 0.160422 0.953046 -0.256843 +vn 0.116587 0.976237 -0.182669 +vn 0.116647 0.976230 -0.182669 +vn 0.071440 0.598740 0.797751 +vn 0.107533 0.899420 -0.423652 +vn 0.107533 0.899420 -0.423652 +vn 0.109016 0.899249 -0.423634 +vn 0.107471 0.899435 -0.423635 +vn 0.107427 0.899432 -0.423652 +vn 0.094230 0.791016 0.604495 +vn 0.097105 0.813279 -0.573714 +vn 0.106534 0.890083 0.443173 +vn 0.097105 0.813279 -0.573714 +vn 0.097232 0.813264 -0.573714 +vn 0.071597 0.598716 0.797755 +vn 0.097232 0.813264 -0.573714 +vn 0.071582 0.598723 0.797751 +vn 0.135888 0.697450 -0.703632 +vn 0.106039 0.890143 0.443173 +vn 0.095144 0.813512 -0.573713 +vn 0.097137 0.813275 -0.573714 +vn 0.097137 0.813275 -0.573714 +vn 0.106039 0.890143 0.443173 +vn -0.198760 0.465732 -0.862315 +vn 0.139578 0.696867 0.703488 +vn 0.068870 0.599040 0.797752 +vn 0.073192 0.627946 -0.774808 +vn 0.071511 0.598726 0.797755 +vn 0.075062 0.628663 -0.774047 +vn 0.071511 0.598726 0.797755 +vn 0.075177 0.628649 -0.774047 +vn 0.094409 0.791014 0.604470 +vn 0.075160 0.628647 -0.774051 +vn 0.094444 0.790991 0.604495 +vn 0.071664 0.629060 -0.774046 +vn 0.116865 0.976224 -0.182560 +vn 0.075086 0.628655 -0.774051 +vn 0.116373 0.972112 0.203607 +vn 0.075086 0.628655 -0.774051 +vn 0.037747 0.315836 -0.948062 +vn 0.053831 0.450352 -0.891227 +vn 0.053858 0.450377 -0.891212 +vn 0.106279 0.890114 0.443173 +vn 0.106279 0.890114 0.443173 +vn 0.054785 0.450252 -0.891219 +vn 0.053792 0.450371 -0.891220 +vn 0.053815 0.450383 -0.891212 +vn 0.094570 0.790994 0.604470 +vn 0.085107 0.251834 -0.964021 +vn 0.013024 0.109050 -0.993951 +vn 0.094570 0.790994 0.604470 +vn 0.013000 0.109053 -0.993951 +vn 0.037700 0.315842 -0.948062 +vn 0.062336 0.312815 -0.947766 +vn 0.037740 0.315849 -0.948059 +vn 0.091703 0.791334 0.604468 +vn 0.094477 0.791006 0.604470 +vn 0.094477 0.791006 0.604470 +vn 0.007245 0.711658 -0.702489 +vn -0.134635 0.698682 -0.702649 +vn 0.007654 0.711196 -0.702952 +vn -0.134683 0.698605 -0.702718 +vn 0.096395 -0.244066 -0.964956 +vn -0.373452 0.891691 -0.255774 +vn 0.098849 -0.235777 -0.966767 +vn 0.004227 0.261791 -0.965115 +vn -0.048391 0.251066 -0.966760 +vn 0.008281 0.255971 -0.966649 +vn -0.048383 0.251084 -0.966755 +vn 0.281018 -0.653255 -0.703055 +vn 0.280423 -0.654242 -0.702375 +vn 0.001210 -0.262398 -0.964959 +vn 0.048402 -0.251063 -0.966760 +vn -0.004128 -0.255641 -0.966763 +vn 0.048394 -0.251078 -0.966756 +vn 0.373797 -0.891519 -0.255869 +vn 0.015295 0.966598 -0.255839 +vn 0.368521 -0.895374 -0.249995 +vn -0.009411 -0.966714 -0.255685 +vn -0.018058 -0.710924 -0.703037 +vn -0.017204 -0.711569 -0.702406 +vn 0.134657 -0.698686 -0.702642 +vn 0.134691 -0.698650 -0.702671 +vn 0.368075 -0.893943 0.255707 +vn 0.374406 -0.892972 0.249842 +vn 0.183236 -0.950796 -0.249822 +vn -0.015596 -0.968153 -0.249872 +vn 0.183245 -0.950792 -0.249831 +vn 0.096397 -0.244062 0.964957 +vn 0.280165 -0.653671 0.703009 +vn 0.281275 -0.653931 0.702324 +vn -0.009411 -0.966714 0.255685 +vn 0.183235 -0.950794 0.249832 +vn -0.015596 -0.968153 0.249872 +vn 0.183245 -0.950794 0.249823 +vn 0.098849 -0.235777 0.966767 +vn 0.134651 -0.698656 0.702673 +vn -0.017180 -0.710988 0.702994 +vn -0.018046 -0.711594 0.702359 +vn 0.134696 -0.698677 0.702644 +vn -0.098849 0.235777 0.966767 +vn -0.104820 0.239516 0.965218 +vn 0.004227 0.261788 0.965116 +vn 0.048391 -0.251066 0.966760 +vn 0.048404 -0.251077 0.966756 +vn 0.001479 -0.255188 0.966890 +vn -0.004227 -0.261788 0.965116 +vn -0.271100 0.657590 0.702908 +vn -0.271568 0.657808 0.702523 +vn -0.377872 0.891718 0.249103 +vn 0.007244 0.711660 0.702487 +vn 0.008279 0.255971 0.966649 +vn -0.048380 0.251069 0.966759 +vn -0.048394 0.251083 0.966755 +vn 0.019308 0.966500 0.255940 +vn -0.183260 0.950639 0.250400 +vn 0.015323 0.968326 0.249219 +vn 0.007654 0.711196 0.702952 +vn -0.134695 0.698668 0.702653 +vn -0.134621 0.698613 0.702721 +vn -0.183271 0.950632 0.250421 +vn -0.373452 0.891691 0.255775 +vn -0.271567 0.657807 -0.702525 +vn -0.377872 0.891718 -0.249102 +vn -0.104823 0.239517 -0.965217 +vn -0.271101 0.657590 -0.702908 +vn -0.183260 0.950640 -0.250399 +vn 0.019437 0.968286 -0.249088 +vn -0.183271 0.950632 -0.250420 +vn -0.098849 0.235777 -0.966767 +vn -0.463823 0.849619 0.251028 +vn -0.463807 0.849615 0.251073 +vn -0.463817 0.849609 -0.251073 +vn -0.463813 0.849625 -0.251028 +vn -0.341428 0.622060 0.704606 +vn -0.123482 0.229405 0.965466 +vn -0.121901 0.223301 0.967097 +vn -0.121892 0.223278 -0.967103 +vn -0.340025 0.622849 -0.704586 +vn -0.340025 0.622849 -0.704586 +vn -0.461728 0.848959 0.257051 +vn -0.340018 0.622853 0.704586 +vn -0.341444 0.622074 0.704585 +vn -0.340018 0.622853 0.704586 +vn -0.463823 0.849619 0.251028 +vn -0.463807 0.849615 0.251074 +vn -0.463807 0.849615 0.251074 +vn -0.461729 0.848959 -0.257050 +vn -0.463813 0.849625 -0.251028 +vn -0.463807 0.849615 -0.251073 +vn -0.463817 0.849609 -0.251073 +vn -0.123482 0.229408 -0.965466 +vn -0.341426 0.622059 -0.704607 +vn -0.121901 0.223301 -0.967097 +vn -0.340018 0.622853 -0.704586 +vn -0.341444 0.622074 -0.704585 +vn -0.340018 0.622853 -0.704586 +vn -0.126183 0.227931 0.965466 +vn -0.338623 0.623640 0.704562 +vn -0.338604 0.623624 0.704585 +vn -0.463055 0.848212 -0.257131 +vn -0.463055 0.848212 0.257132 +vn -0.465193 0.848857 0.251073 +vn -0.338622 0.623639 -0.704563 +vn -0.465193 0.848857 -0.251072 +vn -0.121901 0.223298 0.967098 +vn -0.121895 0.223290 0.967100 +vn -0.126185 0.227933 -0.965466 +vn -0.338605 0.623624 -0.704585 +vn -0.340018 0.622853 0.704586 +vn -0.340018 0.622853 0.704586 +vn -0.463807 0.849615 0.251073 +vn -0.463807 0.849615 0.251074 +vn -0.463807 0.849615 -0.251073 +vn -0.463807 0.849615 -0.251073 +vn -0.121892 0.223278 0.967103 +vn -0.121901 0.223298 -0.967098 +vn -0.340018 0.622853 -0.704586 +vn -0.121895 0.223290 -0.967100 +vn -0.340018 0.622853 -0.704586 +vn -0.340025 0.622849 0.704586 +vn -0.340025 0.622849 0.704586 +vn 0.367831 0.404037 -0.837529 +vn 0.240999 -0.907087 0.345127 +vn -0.224153 -0.911803 0.344052 +vn 0.232970 0.948165 -0.216121 +vn -0.243673 0.943535 -0.224421 +vn -0.224127 -0.911877 0.343871 +vn -0.211361 0.945482 -0.247768 +vn 0.233148 0.948152 -0.215984 +vn -0.289741 -0.319000 0.902380 +vn 0.212857 0.866005 -0.452468 +vn 0.208790 -0.685880 0.697120 +vn 0.213020 0.866298 -0.451830 +vn -0.197878 -0.805077 0.559191 +vn -0.226396 0.861973 -0.453594 +vn -0.197878 -0.805080 0.559188 +vn 0.210351 -0.800769 0.560822 +vn -0.103274 -0.073503 0.991933 +vn 0.220451 0.237441 -0.946057 +vn -0.125259 -0.132695 0.983210 +vn -0.091162 -0.055962 -0.994262 +vn 0.042986 0.048520 -0.997897 +vn -0.150278 0.708829 -0.689186 +vn 0.036694 0.041263 0.998474 +vn -0.199230 0.728063 -0.655921 +vn 0.180302 0.733555 -0.655277 +vn -0.154504 -0.628608 0.762221 +vn 0.180251 0.733535 -0.655314 +vn -0.154508 -0.628576 0.762247 +vn 0.162809 -0.624633 0.763759 +vn 0.130783 0.532224 -0.836441 +vn 0.130835 0.532334 -0.836363 +vn -0.140474 0.528392 -0.837298 +vn 0.096569 -0.243970 0.964963 +vn 0.111118 -0.416942 0.902116 +vn -0.103286 -0.420191 0.901538 +vn -0.103275 -0.420068 0.901597 +vn -0.118321 -0.125259 -0.985043 +vn -0.400894 -0.401785 -0.823318 +vn 0.225880 0.293265 0.928964 +vn 0.214141 0.230812 0.949141 +vn -0.283420 -0.312307 -0.906718 +vn -0.037926 0.274673 -0.960789 +vn 0.077481 0.315179 -0.945864 +vn 0.077457 0.315154 -0.945874 +vn 0.361984 0.397488 0.843191 +vn -0.077975 0.312835 -0.946602 +vn -0.043551 -0.177166 0.983217 +vn 0.015593 0.063433 -0.997864 +vn 0.046371 -0.175704 0.983350 +vn 0.015595 0.063438 -0.997864 +vn -0.043553 -0.177148 0.983220 +vn -0.016603 0.062912 -0.997881 +vn -0.041559 0.272804 0.961172 +vn 0.013278 0.054013 0.998452 +vn 0.013279 0.054018 0.998452 +vn -0.429757 -0.471117 -0.770298 +vn -0.014138 0.053571 0.998464 +vn 0.501625 0.571683 0.649270 +vn 0.507178 0.549338 0.664077 +vn 0.098363 -0.243012 -0.965023 +vn -0.041118 -0.167268 -0.985054 +vn -0.041120 -0.167272 -0.985053 +vn 0.652698 0.722146 0.229109 +vn 0.043784 -0.165903 -0.985170 +vn 0.649926 0.723896 0.231452 +vn 0.599889 0.656093 0.457903 +vn -0.614628 -0.638174 -0.463645 +vn 0.075284 0.306312 0.948950 +vn 0.075293 0.306281 0.948959 +vn -0.554582 -0.606889 -0.569319 +vn 0.108887 -0.408015 -0.906459 +vn -0.075440 0.304026 0.949672 +vn -0.101088 -0.411214 -0.905916 +vn -0.157291 0.706248 0.690271 +vn 0.128722 0.523748 0.842092 +vn -0.138002 0.519911 0.843000 +vn -0.101068 -0.411169 -0.905939 +vn 0.128721 0.523733 0.842101 +vn 0.178669 0.726911 0.663082 +vn -0.629602 -0.691603 -0.353958 +vn -0.197814 0.721420 0.663644 +vn 0.178657 0.726925 0.663070 +vn -0.152585 -0.620754 -0.769014 +vn -0.216625 0.944193 0.248139 +vn 0.232712 0.947116 0.220946 +vn -0.243399 0.942474 0.229127 +vn 0.209960 -0.685388 -0.697251 +vn 0.232760 0.947112 0.220910 +vn 0.160873 -0.616808 -0.770499 +vn 0.212349 0.864058 0.456411 +vn -0.152606 -0.620786 -0.768984 +vn -0.225957 0.859648 0.458202 +vn 0.212344 0.863919 0.456677 +vn -0.671015 -0.732582 -0.114287 +vn -0.690587 -0.723185 -0.009691 +vn -0.196533 -0.799475 -0.567640 +vn -0.196477 -0.799383 -0.567789 +vn 0.208760 -0.795156 -0.569338 +vn -0.671579 -0.733461 0.104958 +vn -0.223330 -0.908635 -0.352854 +vn -0.223404 -0.908711 -0.352611 +vn 0.240063 -0.903917 -0.353984 +vn 0.272109 -0.928788 -0.251612 +vn -0.620286 -0.645031 0.446296 +vn -0.631748 -0.694061 0.345216 +vn -0.237164 -0.964774 -0.113858 +vn -0.237189 -0.964783 -0.113730 +vn 0.253538 -0.960562 -0.114186 +vn 0.650513 0.724826 -0.226850 +vn 0.653445 0.722973 -0.224321 +vn -0.558598 -0.611167 0.560753 +vn 0.504734 0.582337 -0.637281 +vn 0.253797 -0.961544 0.104972 +vn 0.271569 -0.928954 0.251583 +vn 0.601312 0.657552 -0.453927 +vn -0.237409 -0.965772 0.104507 +vn -0.237418 -0.965762 0.104574 +vn -0.410946 -0.415392 0.811525 +vn 0.511383 0.554673 -0.656372 +vn -0.435042 -0.477150 0.763588 +vn 0.235571 0.311132 -0.920708 +vn -0.098000 0.041003 -0.994341 +vn -0.125816 0.000000 0.992054 +vn -0.116128 -0.048711 0.992039 +vn 0.332110 0.137178 0.933212 +vn 0.323511 0.134370 0.936635 +vn 0.350250 0.000000 0.936656 +vn -0.524350 0.217086 -0.823365 +vn 0.350250 -0.000000 0.936656 +vn -0.519309 0.214474 -0.827236 +vn 0.898402 0.371564 0.234124 +vn 0.697893 0.289659 0.655014 +vn 0.973761 0.000000 0.227571 +vn 0.899641 0.372630 0.227583 +vn 0.757073 0.000000 0.653330 +vn 0.973761 -0.000000 0.227571 +vn -0.818107 0.338292 -0.465037 +vn 0.757073 -0.000000 0.653330 +vn 0.699332 0.290063 0.653298 +vn -0.821533 0.340381 -0.457410 +vn -0.923658 0.383094 -0.009743 +vn -0.923651 0.383121 -0.009331 +vn -0.826037 0.342282 0.447779 +vn -0.829974 0.343236 0.439695 +vn -0.539755 0.222925 0.811769 +vn -0.534817 0.221377 0.815453 +vn -0.119124 0.049712 0.991634 +vn -0.116128 0.048711 0.992039 +vn 0.332110 -0.137178 0.933212 +vn 0.323511 -0.134370 0.936635 +vn 0.697893 -0.289659 0.655014 +vn 0.699332 -0.290063 0.653298 +vn 0.899836 -0.372143 0.227606 +vn 0.899429 0.371985 -0.229468 +vn 0.974890 0.000000 -0.222688 +vn 0.900679 0.373060 -0.222720 +vn 0.898202 -0.372034 0.234147 +vn 0.974890 0.000000 -0.222688 +vn 0.706925 0.293163 -0.643671 +vn 0.767016 0.000000 -0.641627 +vn 0.708474 0.294031 -0.641568 +vn 0.767016 0.000000 -0.641627 +vn 0.349038 0.145004 -0.925822 +vn 0.369012 0.000000 -0.929425 +vn 0.369012 0.000000 -0.929425 +vn 0.341001 0.140884 -0.929446 +vn -0.098000 -0.041003 -0.994341 +vn -0.100348 -0.042172 -0.994058 +vn -0.106158 0.000000 -0.994349 +vn -0.106158 0.000000 -0.994349 +vn -0.524350 -0.217086 -0.823365 +vn -0.519309 -0.214474 -0.827236 +vn -0.561924 0.000000 -0.827189 +vn -0.561924 0.000000 -0.827189 +vn -0.821533 -0.340381 -0.457410 +vn -0.889262 0.000000 -0.457398 +vn -0.818107 -0.338292 -0.465037 +vn -0.889262 0.000000 -0.457398 +vn -0.923658 -0.383094 -0.009743 +vn 0.899429 -0.371985 -0.229468 +vn -0.999956 0.000000 -0.009354 +vn 0.900679 -0.373060 -0.222720 +vn -0.923651 -0.383121 -0.009331 +vn -0.999956 0.000000 -0.009354 +vn -0.826037 -0.342282 0.447779 +vn 0.706925 -0.293163 -0.643671 +vn -0.829974 -0.343236 0.439695 +vn -0.898163 0.000000 0.439662 +vn 0.708474 -0.294031 -0.641568 +vn -0.898163 0.000000 0.439662 +vn -0.539755 -0.222925 0.811769 +vn 0.349038 -0.145004 -0.925822 +vn -0.534817 -0.221377 0.815453 +vn -0.578845 0.000000 0.815438 +vn 0.341001 -0.140884 -0.929446 +vn -0.578845 0.000000 0.815438 +vn -0.119124 -0.049712 0.991634 +vn -0.125816 0.000000 0.992054 +vn -0.100348 0.042172 -0.994058 +vn -0.224168 0.911866 0.343875 +vn -0.224111 0.911812 0.344055 +vn 0.650513 -0.724826 -0.226850 +vn 0.232978 -0.948197 -0.215972 +vn 0.653445 -0.722973 -0.224321 +vn -0.631748 0.694061 0.345216 +vn 0.233142 -0.948126 -0.216109 +vn 0.096569 0.243970 0.964963 +vn 0.111118 0.416942 0.902116 +vn 0.504734 -0.582337 -0.637281 +vn -0.197878 0.805080 0.559188 +vn 0.601312 -0.657552 -0.453927 +vn -0.558598 0.611167 0.560753 +vn 0.212942 -0.865979 -0.452477 +vn 0.212933 -0.866314 -0.451840 +vn -0.197877 0.805078 0.559191 +vn -0.037926 -0.274673 -0.960789 +vn -0.077975 -0.312835 -0.946602 +vn 0.046371 0.175704 0.983350 +vn -0.016603 -0.062912 -0.997881 +vn -0.041559 -0.272804 0.961172 +vn 0.180257 -0.733561 -0.655283 +vn -0.014138 -0.053571 0.998464 +vn 0.511383 -0.554673 -0.656372 +vn -0.410946 0.415392 0.811525 +vn 0.180293 -0.733519 -0.655320 +vn -0.154515 0.628607 0.762220 +vn -0.154497 0.628580 0.762245 +vn 0.235571 -0.311132 -0.920708 +vn -0.435042 0.477150 0.763588 +vn 0.130807 -0.532222 -0.836438 +vn 0.130812 -0.532344 -0.836360 +vn 0.367831 -0.404037 -0.837529 +vn -0.103305 0.420191 0.901536 +vn -0.103257 0.420077 0.901595 +vn -0.289741 0.319000 0.902380 +vn 0.098363 0.243012 -0.965023 +vn 0.043784 0.165903 -0.985170 +vn -0.075440 -0.304026 0.949672 +vn 0.108887 0.408015 -0.906459 +vn -0.157291 -0.706248 0.690271 +vn -0.138002 -0.519911 0.843000 +vn 0.077465 -0.315187 -0.945863 +vn 0.220451 -0.237441 -0.946057 +vn 0.077475 -0.315154 -0.945873 +vn -0.103274 0.073503 0.991933 +vn -0.043546 0.177148 0.983220 +vn -0.091162 0.055962 -0.994262 +vn -0.043556 0.177163 0.983217 +vn 0.015594 -0.063438 -0.997864 +vn -0.125259 0.132695 0.983210 +vn 0.015594 -0.063433 -0.997864 +vn 0.042986 -0.048520 -0.997897 +vn 0.013279 -0.054018 0.998452 +vn 0.013277 -0.054013 0.998452 +vn 0.209960 0.685388 -0.697251 +vn 0.036694 -0.041263 0.998474 +vn 0.160873 0.616808 -0.770499 +vn -0.197814 -0.721420 0.663644 +vn -0.118321 0.125259 -0.985043 +vn -0.243399 -0.942474 0.229127 +vn -0.041119 0.167268 -0.985054 +vn -0.041119 0.167273 -0.985053 +vn -0.216625 -0.944193 0.248139 +vn -0.225957 -0.859648 0.458202 +vn 0.225880 -0.293265 0.928964 +vn 0.075299 -0.306304 0.948951 +vn 0.075277 -0.306281 0.948960 +vn 0.208760 0.795156 -0.569338 +vn 0.214141 -0.230812 0.949141 +vn -0.101076 0.411165 -0.905940 +vn -0.400894 0.401785 -0.823318 +vn -0.101079 0.411214 -0.905917 +vn 0.128719 -0.523733 0.842102 +vn 0.128724 -0.523747 0.842092 +vn -0.283420 0.312307 -0.906718 +vn 0.361984 -0.397488 0.843191 +vn 0.240063 0.903917 -0.353984 +vn 0.501625 -0.571683 0.649270 +vn 0.178672 -0.726923 0.663068 +vn 0.272109 0.928788 -0.251612 +vn 0.178655 -0.726916 0.663080 +vn -0.152598 0.620753 -0.769012 +vn 0.507178 -0.549338 0.664077 +vn 0.649926 -0.723896 0.231452 +vn -0.152594 0.620791 -0.768982 +vn 0.232714 -0.947124 0.220907 +vn 0.652698 -0.722146 0.229109 +vn 0.232758 -0.947105 0.220942 +vn -0.429757 0.471117 -0.770298 +vn 0.212316 -0.863925 0.456680 +vn 0.212377 -0.864050 0.456414 +vn 0.599889 -0.656093 0.457903 +vn 0.253538 0.960562 -0.114186 +vn -0.614628 0.638174 -0.463645 +vn -0.554582 0.606889 -0.569319 +vn -0.196508 0.799372 -0.567793 +vn -0.196501 0.799480 -0.567644 +vn 0.271569 0.928954 0.251583 +vn 0.253797 0.961544 0.104972 +vn -0.629602 0.691603 -0.353958 +vn -0.223352 0.908726 -0.352607 +vn -0.223383 0.908624 -0.352849 +vn 0.240999 0.907087 0.345127 +vn -0.690587 0.723185 -0.009691 +vn -0.671015 0.732582 -0.114287 +vn -0.237186 0.964769 -0.113858 +vn -0.237167 0.964789 -0.113730 +vn -0.211361 -0.945482 -0.247768 +vn -0.243673 -0.943535 -0.224421 +vn 0.208790 0.685880 0.697120 +vn 0.210351 0.800769 0.560822 +vn -0.237419 0.965769 0.104507 +vn -0.671579 0.733461 0.104958 +vn -0.226396 -0.861973 -0.453594 +vn -0.237407 0.965765 0.104573 +vn -0.150278 -0.708829 -0.689186 +vn -0.199230 -0.728063 -0.655921 +vn 0.162809 0.624633 0.763759 +vn -0.140474 -0.528392 -0.837298 +vn -0.620286 0.645031 0.446296 +vn -0.463817 -0.849609 0.251074 +vn -0.463813 -0.849625 0.251028 +vn -0.463823 -0.849620 -0.251028 +vn -0.463807 -0.849615 -0.251073 +vn -0.126183 -0.227931 0.965466 +vn -0.121895 -0.223290 0.967100 +vn -0.121901 -0.223298 -0.967098 +vn -0.121892 -0.223278 -0.967103 +vn -0.340025 -0.622849 -0.704586 +vn -0.340025 -0.622849 -0.704586 +vn -0.338623 -0.623640 0.704562 +vn -0.340018 -0.622853 0.704586 +vn -0.338604 -0.623624 0.704585 +vn -0.340018 -0.622853 0.704586 +vn -0.463055 -0.848212 0.257132 +vn -0.463055 -0.848212 -0.257131 +vn -0.463807 -0.849615 0.251074 +vn -0.463807 -0.849615 0.251073 +vn -0.465193 -0.848857 0.251073 +vn -0.338622 -0.623639 -0.704563 +vn -0.463807 -0.849615 -0.251073 +vn -0.465193 -0.848857 -0.251072 +vn -0.463807 -0.849615 -0.251073 +vn -0.126185 -0.227933 -0.965466 +vn -0.121895 -0.223290 -0.967100 +vn -0.340018 -0.622853 -0.704586 +vn -0.338605 -0.623624 -0.704585 +vn -0.340018 -0.622853 -0.704586 +vn -0.341428 -0.622060 0.704606 +vn -0.123482 -0.229405 0.965466 +vn -0.461728 -0.848959 0.257051 +vn -0.341444 -0.622074 0.704585 +vn -0.463807 -0.849615 0.251074 +vn -0.461729 -0.848959 -0.257050 +vn -0.463807 -0.849615 -0.251073 +vn -0.121901 -0.223301 0.967097 +vn -0.123482 -0.229408 -0.965466 +vn -0.341426 -0.622059 -0.704607 +vn -0.341444 -0.622074 -0.704585 +vn -0.340018 -0.622853 0.704586 +vn -0.340018 -0.622853 0.704586 +vn -0.463817 -0.849609 0.251073 +vn -0.463813 -0.849625 0.251028 +vn -0.463823 -0.849620 -0.251028 +vn -0.463807 -0.849615 -0.251073 +vn -0.121901 -0.223298 0.967098 +vn -0.121892 -0.223278 0.967103 +vn -0.121901 -0.223301 -0.967097 +vn -0.340018 -0.622853 -0.704586 +vn -0.340018 -0.622853 -0.704586 +vn -0.340025 -0.622849 0.704586 +vn -0.340025 -0.622849 0.704586 +vn 0.008281 -0.255971 -0.966649 +vn -0.104823 -0.239517 -0.965217 +vn -0.134621 -0.698613 -0.702721 +vn -0.134695 -0.698668 -0.702653 +vn -0.271101 -0.657590 -0.702908 +vn 0.001210 0.262398 -0.964959 +vn -0.004128 0.255641 -0.966763 +vn 0.101236 0.241471 -0.965113 +vn -0.048394 -0.251083 -0.966755 +vn -0.048380 -0.251069 -0.966759 +vn -0.098849 -0.235777 -0.966767 +vn -0.018058 0.710924 -0.703037 +vn -0.017204 0.711569 -0.702406 +vn 0.280163 0.653671 -0.703010 +vn 0.048391 0.251066 -0.966760 +vn 0.048404 0.251077 -0.966756 +vn 0.093453 0.237447 -0.966895 +vn -0.015570 0.966592 -0.255847 +vn -0.009295 0.968195 -0.250023 +vn 0.368075 0.893944 -0.255706 +vn 0.134696 0.698677 -0.702644 +vn 0.281274 0.653931 -0.702324 +vn 0.134651 0.698656 -0.702673 +vn -0.009411 0.966714 0.255685 +vn -0.015596 0.968153 0.249872 +vn 0.373797 0.891519 0.255870 +vn 0.374406 0.892972 -0.249842 +vn 0.183245 0.950795 -0.249822 +vn 0.183235 0.950794 -0.249831 +vn -0.017180 0.710988 0.702994 +vn -0.018046 0.711594 0.702359 +vn 0.281019 0.653257 0.703053 +vn 0.183245 0.950792 0.249832 +vn 0.368521 0.895374 0.249996 +vn 0.183236 0.950796 0.249823 +vn 0.004227 -0.261788 0.965116 +vn -0.004227 0.261788 0.965116 +vn 0.001479 0.255188 0.966890 +vn 0.280424 0.654242 0.702375 +vn 0.134691 0.698650 0.702671 +vn 0.134657 0.698686 0.702642 +vn 0.007244 -0.711660 0.702487 +vn 0.008279 -0.255971 0.966649 +vn 0.048394 0.251078 0.966756 +vn 0.093455 0.237446 0.966895 +vn 0.101235 0.241469 0.965114 +vn 0.048402 0.251063 0.966760 +vn 0.007654 -0.711196 0.702952 +vn 0.019437 -0.968286 0.249089 +vn -0.104820 -0.239516 0.965218 +vn -0.048383 -0.251084 0.966755 +vn -0.098849 -0.235777 0.966767 +vn -0.048391 -0.251066 0.966760 +vn -0.271568 -0.657808 0.702523 +vn -0.183259 -0.950634 0.250420 +vn -0.134635 -0.698682 0.702649 +vn -0.134683 -0.698605 0.702718 +vn -0.271100 -0.657590 0.702908 +vn -0.183272 -0.950637 0.250400 +vn -0.377872 -0.891718 0.249103 +vn 0.015295 -0.966598 0.255839 +vn -0.373452 -0.891691 0.255775 +vn 0.019308 -0.966500 -0.255939 +vn 0.015323 -0.968326 -0.249218 +vn 0.007245 -0.711658 -0.702489 +vn 0.007654 -0.711196 -0.702952 +vn -0.183259 -0.950635 -0.250420 +vn -0.374112 -0.893266 -0.249230 +vn -0.271567 -0.657807 -0.702525 +vn -0.377098 -0.890127 -0.255874 +vn -0.183272 -0.950638 -0.250399 +vn 0.004227 -0.261791 -0.965115 +vn 0.072021 -0.603961 -0.793753 +vn 0.106951 -0.896881 0.429146 +vn 0.072062 -0.603885 -0.793807 +vn 0.072265 -0.603932 -0.793753 +vn 0.068808 -0.594747 0.800963 +vn 0.020591 -0.172341 -0.984822 +vn 0.050295 -0.420945 -0.905691 +vn 0.071144 -0.595450 0.800236 +vn 0.050295 -0.420945 -0.905691 +vn 0.020607 -0.172349 -0.984820 +vn 0.020552 -0.172345 -0.984822 +vn 0.107313 -0.896830 0.429162 +vn 0.050179 -0.420966 -0.905688 +vn 0.050223 -0.420960 -0.905688 +vn 0.107313 -0.896830 0.429162 +vn 0.050198 -0.420957 -0.905691 +vn 0.096769 -0.809922 0.578500 +vn 0.096769 -0.809922 0.578500 +vn -0.060321 -0.818257 0.571679 +vn 0.094472 -0.809946 0.578845 +vn 0.096227 -0.809986 0.578500 +vn 0.116651 -0.976323 0.182170 +vn 0.116547 -0.976310 0.182303 +vn 0.107143 -0.896850 0.429162 +vn 0.107156 -0.896857 0.429146 +vn 0.114529 -0.959571 -0.257111 +vn 0.116425 -0.976325 0.182303 +vn 0.116425 -0.976325 0.182303 +vn 0.106613 -0.896921 0.429146 +vn 0.106555 -0.896921 0.429162 +vn 0.116820 -0.976278 0.182303 +vn 0.116820 -0.976278 0.182303 +vn 0.107132 -0.896852 0.429162 +vn 0.107130 -0.896851 0.429163 +vn 0.724891 -0.487112 -0.487088 +vn 0.093979 -0.787396 -0.609242 +vn 0.116635 -0.976300 0.182303 +vn 0.116635 -0.976300 0.182303 +vn 0.160607 -0.953017 -0.256833 +vn 0.116158 -0.972192 -0.203346 +vn 0.313712 -0.245738 0.917168 +vn 0.116057 -0.976370 0.182295 +vn 0.115995 -0.976376 0.182303 +vn 0.054383 -0.456144 0.888243 +vn 0.013050 -0.109194 0.993935 +vn 0.013103 -0.109188 0.993935 +vn 0.115935 -0.972219 -0.203346 +vn 0.067572 -0.217273 0.973769 +vn 0.115935 -0.972219 -0.203346 +vn 0.762958 -0.457120 0.457096 +vn 0.075560 -0.633772 0.769820 +vn 0.106032 -0.887446 -0.448550 +vn 0.037795 -0.316311 0.947902 +vn 0.072007 -0.603969 -0.793749 +vn 0.037818 -0.316383 0.947877 +vn 0.037964 -0.316366 0.947877 +vn 0.037706 -0.316322 0.947902 +vn 0.105827 -0.887459 -0.448572 +vn 0.105787 -0.887475 -0.448550 +vn 0.054498 -0.456130 0.888243 +vn 0.116328 -0.972172 -0.203346 +vn 0.054503 -0.456142 0.888236 +vn 0.116328 -0.972172 -0.203346 +vn 0.116664 -0.976297 0.182303 +vn 0.116642 -0.976301 0.182295 +vn 0.116677 -0.976295 0.182303 +vn 0.116174 -0.972190 -0.203346 +vn 0.096684 -0.810057 0.578326 +vn 0.116622 -0.976302 0.182303 +vn 0.054543 -0.456137 0.888236 +vn 0.054374 -0.456157 0.888236 +vn 0.106187 -0.887416 -0.448572 +vn 0.054374 -0.456157 0.888236 +vn 0.106187 -0.887416 -0.448572 +vn 0.965166 -0.252722 0.067716 +vn 0.020596 -0.172332 -0.984824 +vn 0.107031 -0.896743 0.429413 +vn 0.389586 -0.238357 -0.889611 +vn 0.050188 -0.420958 -0.905691 +vn 0.094077 -0.787384 -0.609242 +vn 0.075655 -0.633761 0.769820 +vn 0.094077 -0.787384 -0.609242 +vn 0.075730 -0.633828 0.769757 +vn 0.116144 -0.972194 -0.203346 +vn 0.116144 -0.972194 -0.203346 +vn 0.075546 -0.633774 0.769820 +vn 0.076055 -0.633790 0.769757 +vn 0.093896 -0.787406 -0.609242 +vn 0.075551 -0.633773 0.769820 +vn 0.093860 -0.787416 -0.609235 +vn -0.068620 -0.606192 0.792353 +vn 0.096685 -0.809932 0.578500 +vn 0.096784 -0.810045 0.578326 +vn 0.115507 -0.972270 -0.203346 +vn 0.116151 -0.972193 -0.203346 +vn 0.116151 -0.972193 -0.203346 +vn 0.115507 -0.972270 -0.203346 +vn 0.106020 -0.887447 -0.448550 +vn 0.106030 -0.887435 -0.448572 +vn 0.096546 -0.809948 0.578500 +vn 0.093929 -0.787333 -0.609330 +vn 0.097199 -0.809995 0.578326 +vn 0.094216 -0.787373 -0.609235 +vn 0.094216 -0.787373 -0.609235 +vn 0.094077 -0.787390 -0.609235 +vn 0.093542 -0.787380 -0.609330 +vn -0.063971 -0.779412 -0.623238 +vn 0.105438 -0.887517 -0.448550 +vn 0.107048 -0.896741 0.429413 +vn 0.106026 -0.887446 -0.448550 +vn 0.107156 -0.896856 0.429146 +vn 0.105438 -0.887517 -0.448550 +vn 0.072160 -0.603950 -0.793749 +vn 0.096552 -0.809947 0.578500 +vn 0.096926 -0.810028 0.578326 +vn 0.072160 -0.603950 -0.793749 +vn 0.106908 -0.896878 0.429162 +vn -0.066924 -0.473340 -0.878334 +vn 0.071993 -0.603970 -0.793749 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.992944 -0.118580 -0.000023 +vn 0.992943 -0.118591 -0.000016 +vn 0.992944 -0.118580 0.000027 +vn 0.992941 -0.118608 -0.000029 +vn 0.992943 -0.118591 0.000033 +vn 0.992943 -0.118591 0.000033 +vn 0.992941 -0.118608 -0.000029 +vn 0.992944 -0.118580 0.000028 +vn 0.992945 -0.118580 0.000023 +vn 0.992943 -0.118591 -0.000016 +vn -0.951061 0.000000 -0.309005 +vn -0.951061 0.000000 -0.309005 +vn -0.587778 0.000000 -0.809022 +vn -0.587778 0.000000 -0.809022 +vn 0.545124 -0.004906 -0.838341 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.414720 0.000000 -0.909949 +vn 0.414720 0.000000 -0.909949 +vn 0.587762 -0.007455 -0.809000 +vn 0.554146 -0.000078 -0.832420 +vn 0.531364 0.000000 -0.847143 +vn 0.682776 -0.001836 -0.730625 +vn 0.528109 0.004246 -0.849166 +vn 0.586911 0.000087 -0.809652 +vn 0.623914 0.005045 -0.781476 +vn 0.587762 0.007348 -0.809000 +vn 0.951033 -0.007683 -0.308996 +vn 0.912705 0.001988 -0.408614 +vn 0.984686 -0.000476 -0.174337 +vn 0.989809 0.000000 -0.142402 +vn 0.951030 0.007949 -0.308995 +vn 0.982422 0.000000 -0.186673 +vn 0.857720 0.001575 -0.514114 +vn 0.875848 -0.000594 -0.482587 +vn 0.987624 0.000000 -0.156840 +vn 0.897445 0.000375 -0.441126 +vn 0.733927 0.000577 -0.679228 +vn 0.698811 -0.000387 -0.715306 +vn 0.774443 -0.001136 -0.632642 +vn -0.770607 0.008579 -0.637253 +vn -0.850136 -0.000140 -0.526563 +vn -0.824092 0.000095 -0.566456 +vn -0.814137 0.002443 0.580667 +vn -0.686693 0.000000 -0.726947 +vn -0.807441 -0.005575 -0.589922 +vn -0.810716 0.000000 -0.585439 +vn -0.876768 0.007467 0.480855 +vn -0.686693 0.000000 -0.726947 +vn -0.810731 0.000000 0.585419 +vn -0.770607 -0.008579 -0.637253 +vn -0.289085 0.000000 -0.957303 +vn -0.758707 0.000000 0.651432 +vn -0.289085 0.000000 -0.957303 +vn -0.758707 0.000000 0.651432 +vn -0.894349 -0.000459 0.447369 +vn -0.970123 -0.000449 0.242614 +vn -0.999967 -0.000219 0.008137 +vn -0.976113 -0.000205 -0.217261 +vn -0.914033 -0.000299 -0.405639 +vn -0.803090 -0.001933 0.595854 +vn -0.880831 -0.000220 -0.473430 +vn -0.957422 0.000283 -0.288692 +vn -0.980677 0.001774 0.195624 +vn -0.894398 0.000458 -0.447272 +vn -0.970170 0.000445 -0.242424 +vn -0.885974 0.009071 0.463647 +vn -0.999966 0.000218 -0.008207 +vn -0.976127 0.000207 0.217201 +vn -0.914141 0.000302 0.405397 +vn -0.957361 -0.000298 0.288894 +vn -0.998670 0.000317 0.051565 +vn -0.913739 -0.001051 -0.406301 +vn -0.850164 0.000141 0.526518 +vn -0.824016 -0.000095 0.566567 +vn -0.842093 -0.004349 0.539315 +vn -0.911851 -0.005052 0.410491 +vn -0.885972 -0.009308 0.463646 +vn -0.994503 0.009859 -0.104240 +vn -0.980340 0.002797 -0.197295 +vn -0.998645 -0.004855 -0.051816 +vn -0.843359 0.002883 -0.537342 +vn -0.785559 0.007390 -0.618743 +vn -0.994509 -0.009302 -0.104241 +vn -0.965927 0.000000 -0.258815 +vn -0.707105 0.000000 -0.707109 +vn -0.965927 0.000000 -0.258815 +vn -0.258818 0.000000 -0.965926 +vn -0.707105 0.000000 -0.707109 +vn -0.258818 0.000000 -0.965926 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 0.707075 0.000000 0.707139 +vn 0.965927 0.000000 0.258814 +vn 0.965927 -0.000000 0.258814 +vn 0.258841 0.000000 0.965920 +vn 0.707075 0.000000 0.707139 +vn 0.258841 0.000000 0.965920 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.115487 -0.959453 0.257122 +vn -0.051354 -0.436051 0.898455 +vn -0.017224 -0.149933 0.988546 +vn -0.017842 -0.149373 0.988620 +vn -0.032100 -0.258554 0.965463 +vn -0.084743 -0.721968 0.686717 +vn -0.084786 -0.704532 0.704589 +vn -0.050535 -0.435762 0.898642 +vn -0.051711 -0.435622 0.898643 +vn -0.086427 -0.721568 0.686928 +vn -0.082884 -0.721987 0.686924 +vn 0.029693 -0.951351 0.306674 +vn -0.099008 -0.857539 0.504801 +vn -0.102374 -0.857142 0.504804 +vn -0.112855 -0.944074 0.309820 +vn -0.107721 -0.990445 -0.086110 +vn -0.115808 -0.959415 -0.257123 +vn -0.117495 -0.989333 -0.086114 +vn 0.242186 -0.887150 -0.392824 +vn -0.098686 -0.914779 -0.391715 +vn -0.109173 -0.913577 -0.391737 +vn -0.085316 -0.704469 -0.704588 +vn -0.096875 -0.811427 -0.576369 +vn -0.096203 -0.811507 -0.576369 +vn 0.003516 -0.614812 -0.788666 +vn -0.074714 -0.626132 -0.776130 +vn -0.074079 -0.626207 -0.776129 +vn -0.025371 -0.212412 -0.976851 +vn -0.025277 -0.212473 -0.976840 +vn -0.031628 -0.258610 -0.965464 +vn -0.053890 -0.451735 -0.890523 +vn -0.053978 -0.451724 -0.890523 +vn -0.115488 0.959453 -0.257122 +vn -0.031633 0.258610 0.965464 +vn -0.025331 0.212073 0.976925 +vn -0.025265 0.212116 0.976918 +vn 0.003946 0.614405 0.788981 +vn -0.053884 0.451591 0.890597 +vn -0.053961 0.451581 0.890597 +vn -0.085317 0.704468 0.704589 +vn -0.074498 0.625974 0.776277 +vn -0.074693 0.625951 0.776277 +vn 0.241903 0.887053 0.393217 +vn -0.096859 0.811300 0.576550 +vn -0.096642 0.811326 0.576550 +vn -0.115807 0.959415 0.257122 +vn -0.109168 0.913535 0.391836 +vn -0.101156 0.914463 0.391823 +vn 0.924994 0.379611 -0.016806 +vn -0.109354 0.982913 0.148067 +vn -0.118365 0.990963 -0.063097 +vn -0.117294 0.981996 0.148072 +vn 0.031728 0.951288 -0.306666 +vn -0.112852 0.944044 -0.309911 +vn -0.102401 0.857369 -0.504413 +vn -0.098771 0.857796 -0.504410 +vn -0.084782 0.704533 -0.704589 +vn -0.084563 0.721437 -0.687298 +vn -0.086368 0.721008 -0.687523 +vn -0.082581 0.721456 -0.687518 +vn -0.017817 0.149166 -0.988652 +vn -0.032100 0.258554 -0.965463 +vn -0.051214 0.435518 -0.898722 +vn -0.017128 0.149792 -0.988569 +vn -0.051648 0.435075 -0.898912 +vn -0.050385 0.435225 -0.898911 +vn -0.108467 -0.872461 0.476494 +vn -0.207204 -0.843257 0.495969 +vn -0.108056 -0.906756 0.407575 +vn -0.117061 -0.979262 0.165356 +vn -0.116176 -0.979392 0.165208 +vn -0.117529 -0.979206 0.165356 +vn -0.116923 -0.979303 0.165208 +vn -0.117085 -0.979259 0.165356 +vn -0.116471 -0.979356 0.165217 +vn -0.117159 -0.979274 0.165217 +vn -0.117159 -0.979274 0.165217 +vn -0.116741 -0.979324 0.165217 +vn -0.116850 -0.979248 0.165588 +vn -0.115660 -0.969276 -0.217087 +vn -0.121246 -0.978778 0.165207 +vn -0.116704 -0.979329 0.165208 +vn -0.085037 -0.962662 -0.257003 +vn -0.115759 -0.969265 -0.217082 +vn -0.114986 -0.969357 -0.217082 +vn -0.115868 -0.969277 -0.216972 +vn -0.104779 -0.884102 -0.455396 +vn -0.104869 -0.884074 -0.455429 +vn -0.104919 -0.884085 -0.455396 +vn -0.116331 -0.969221 -0.216972 +vn -0.115724 -0.969269 -0.217082 +vn -0.106061 -0.883932 -0.455430 +vn -0.106096 -0.883945 -0.455396 +vn -0.115239 -0.969327 -0.217082 +vn -0.115891 -0.969274 -0.216972 +vn -0.105101 -0.884046 -0.455430 +vn -0.105138 -0.884059 -0.455396 +vn 0.024645 -0.264897 0.963962 +vn -0.016710 -0.139912 0.990023 +vn -0.115548 -0.969315 -0.216972 +vn -0.016711 -0.139912 0.990023 +vn -0.115961 -0.969266 -0.216972 +vn -0.116170 -0.969215 -0.217087 +vn -0.115961 -0.969266 -0.216972 +vn -0.306512 -0.689096 -0.656655 +vn -0.045961 -0.385224 0.921678 +vn -0.105756 -0.883968 -0.455430 +vn -0.092324 -0.771694 -0.629257 +vn -0.043520 -0.385514 0.921675 +vn -0.105977 -0.883941 -0.455430 +vn -0.105756 -0.883968 -0.455430 +vn -0.032614 -0.709802 -0.703646 +vn -0.060916 -0.507119 0.859721 +vn -0.124456 -0.365668 0.922387 +vn -0.095645 -0.771418 -0.629099 +vn -0.046050 -0.385224 0.921674 +vn -0.091607 -0.771909 -0.629098 +vn -0.060625 -0.507154 0.859721 +vn -0.062282 -0.506955 0.859719 +vn -0.060625 -0.507154 0.859721 +vn -0.091565 -0.771910 -0.629103 +vn -0.040976 -0.709088 0.703928 +vn -0.092605 -0.771786 -0.629103 +vn -0.092677 -0.771652 -0.629257 +vn -0.091797 -0.771883 -0.629103 +vn -0.069850 -0.667373 0.741441 +vn -0.092634 -0.771787 -0.629098 +vn -0.070500 -0.573409 -0.816230 +vn -0.079642 -0.666235 0.741477 +vn -0.268273 -0.386237 -0.882525 +vn -0.079642 -0.666235 0.741477 +vn -0.068573 -0.573641 -0.816232 +vn -0.069092 -0.573370 -0.816378 +vn -0.068039 -0.573585 -0.816315 +vn -0.079546 -0.666247 0.741477 +vn -0.068833 -0.573491 -0.816315 +vn -0.081147 -0.665771 0.741731 +vn -0.021563 -0.180551 -0.983329 +vn 0.016532 -0.264039 -0.964370 +vn -0.021433 -0.180567 -0.983329 +vn -0.048846 -0.422899 -0.904859 +vn -0.100471 -0.828748 0.550530 +vn -0.050174 -0.422870 -0.904800 +vn -0.050530 -0.422699 -0.904861 +vn -0.099071 -0.828769 0.550751 +vn -0.098382 -0.828998 0.550530 +vn -0.081860 -0.665243 0.742126 +vn -0.079179 -0.666007 0.741732 +vn -0.098969 -0.828928 0.550530 +vn -0.099437 -0.828726 0.550750 +vn -0.063327 -0.964395 0.256774 +vn -0.106397 -0.906866 0.407767 +vn -0.101421 -0.828642 0.550514 +vn -0.098555 -0.828987 0.550516 +vn -0.098587 -0.828974 0.550530 +vn -0.107605 -0.906717 0.407781 +vn -0.107557 -0.906729 0.407767 +vn -0.108778 -0.906583 0.407767 +vn -0.108812 -0.906573 0.407782 +vn -0.107830 -0.906696 0.407767 +vn -0.107830 -0.906696 0.407767 +vn -0.108466 -0.906621 0.407767 +vn -0.116954 -0.979275 0.165356 +vn 0.007653 0.711197 0.702951 +vn -0.134683 0.698605 0.702717 +vn 0.096395 -0.244065 0.964956 +vn 0.098848 -0.235775 0.966767 +vn -0.373452 0.891691 0.255774 +vn 0.004227 0.261790 0.965116 +vn -0.048391 0.251065 0.966760 +vn -0.048383 0.251083 0.966756 +vn 0.008281 0.255970 0.966649 +vn 0.281019 -0.653255 0.703055 +vn 0.280423 -0.654243 0.702374 +vn 0.001210 -0.262397 0.964959 +vn -0.004128 -0.255640 0.966763 +vn 0.048401 -0.251062 0.966760 +vn 0.048393 -0.251077 0.966757 +vn 0.373797 -0.891519 0.255869 +vn 0.368522 -0.895374 0.249996 +vn -0.018059 -0.710924 0.703037 +vn 0.134657 -0.698687 0.702641 +vn 0.134691 -0.698651 0.702670 +vn -0.017204 -0.711569 0.702405 +vn 0.368075 -0.893944 -0.255706 +vn 0.374406 -0.892972 -0.249842 +vn -0.015570 -0.966592 0.255847 +vn 0.183236 -0.950796 0.249822 +vn 0.183245 -0.950792 0.249831 +vn -0.009295 -0.968195 0.250024 +vn 0.280164 -0.653671 -0.703009 +vn 0.281275 -0.653931 -0.702324 +vn -0.009411 -0.966714 -0.255685 +vn -0.015596 -0.968153 -0.249872 +vn 0.183245 -0.950794 -0.249823 +vn 0.183235 -0.950794 -0.249832 +vn 0.101236 -0.241470 -0.965113 +vn 0.093454 -0.237447 -0.966895 +vn 0.134651 -0.698656 -0.702673 +vn -0.017179 -0.710987 -0.702995 +vn -0.018046 -0.711594 -0.702359 +vn 0.134696 -0.698677 -0.702644 +vn -0.104821 0.239516 -0.965217 +vn -0.098849 0.235777 -0.966767 +vn 0.004227 0.261790 -0.965116 +vn 0.048391 -0.251066 -0.966760 +vn -0.004227 -0.261790 -0.965116 +vn 0.001480 -0.255188 -0.966890 +vn 0.048404 -0.251077 -0.966756 +vn -0.271567 0.657808 -0.702524 +vn -0.377872 0.891718 -0.249103 +vn -0.271101 0.657590 -0.702908 +vn 0.007244 0.711659 -0.702488 +vn -0.048380 0.251069 -0.966759 +vn -0.048394 0.251083 -0.966755 +vn 0.008280 0.255971 -0.966649 +vn 0.019308 0.966500 -0.255940 +vn -0.134621 0.698613 -0.702721 +vn 0.007654 0.711196 -0.702952 +vn -0.183271 0.950632 -0.250420 +vn -0.373452 0.891691 -0.255775 +vn -0.183260 0.950640 -0.250400 +vn 0.015323 0.968326 -0.249218 +vn -0.134695 0.698668 -0.702653 +vn -0.271566 0.657807 0.702525 +vn -0.377872 0.891718 0.249103 +vn -0.104822 0.239516 0.965217 +vn -0.271102 0.657590 0.702908 +vn 0.019307 0.966500 0.255939 +vn -0.183260 0.950640 0.250400 +vn 0.015323 0.968326 0.249218 +vn -0.183271 0.950632 0.250420 +vn -0.098848 0.235775 0.966767 +vn 0.007245 0.711658 0.702489 +vn -0.134635 0.698683 0.702649 +vn 0.124843 -0.228689 0.965461 +vn 0.124843 -0.228689 0.965461 +vn 0.340010 -0.622833 0.704608 +vn 0.340010 -0.622833 0.704608 +vn 0.463049 -0.848216 -0.257131 +vn 0.463049 -0.848216 0.257131 +vn 0.463049 -0.848216 0.257131 +vn 0.340011 -0.622833 -0.704607 +vn 0.463049 -0.848215 -0.257131 +vn 0.124843 -0.228689 -0.965461 +vn 0.340010 -0.622833 -0.704607 +vn 0.124843 -0.228689 -0.965461 +vn -0.211361 0.945482 0.247768 +vn 0.232970 0.948165 0.216121 +vn -0.224153 -0.911803 -0.344051 +vn -0.243673 0.943535 0.224421 +vn 0.233148 0.948152 0.215984 +vn -0.289742 -0.319000 -0.902379 +vn 0.213019 0.866295 0.451837 +vn 0.208790 -0.685879 -0.697120 +vn -0.226397 0.861969 0.453601 +vn -0.197878 -0.805077 -0.559191 +vn 0.212856 0.866002 0.452474 +vn 0.210351 -0.800769 -0.560822 +vn -0.197878 -0.805080 -0.559188 +vn 0.220451 0.237441 0.946057 +vn -0.103275 -0.073502 -0.991933 +vn -0.125260 -0.132695 -0.983210 +vn -0.091162 -0.055964 0.994262 +vn 0.042982 0.048516 0.997897 +vn -0.150279 0.708829 0.689186 +vn 0.180251 0.733535 0.655314 +vn 0.036699 0.041268 -0.998474 +vn -0.199231 0.728063 0.655920 +vn 0.162810 -0.624633 -0.763759 +vn -0.154508 -0.628576 -0.762247 +vn 0.180302 0.733555 0.655277 +vn -0.154504 -0.628608 -0.762221 +vn 0.130784 0.532229 0.836437 +vn 0.130836 0.532339 0.836359 +vn -0.140476 0.528398 0.837295 +vn 0.096570 -0.243971 -0.964962 +vn -0.103286 -0.420191 -0.901538 +vn -0.103275 -0.420068 -0.901597 +vn 0.111118 -0.416942 -0.902115 +vn -0.118320 -0.125256 0.985044 +vn 0.225879 0.293265 -0.928964 +vn -0.400893 -0.401784 0.823319 +vn 0.214140 0.230810 -0.949142 +vn -0.283421 -0.312307 0.906718 +vn -0.037925 0.274672 0.960790 +vn -0.077975 0.312835 0.946602 +vn 0.361990 0.397492 -0.843186 +vn 0.077481 0.315179 0.945864 +vn 0.077457 0.315154 0.945874 +vn -0.043551 -0.177166 -0.983217 +vn 0.046371 -0.175704 -0.983350 +vn -0.016602 0.062906 0.997881 +vn -0.043553 -0.177148 -0.983220 +vn 0.015592 0.063427 0.997865 +vn 0.015594 0.063432 0.997864 +vn -0.041560 0.272805 -0.961171 +vn 0.013280 0.054020 -0.998452 +vn 0.013280 0.054025 -0.998451 +vn -0.014140 0.053578 -0.998464 +vn -0.429758 -0.471118 0.770296 +vn 0.501625 0.571684 -0.649269 +vn 0.507178 0.549337 -0.664078 +vn 0.098363 -0.243011 0.965024 +vn -0.041120 -0.167270 0.985053 +vn 0.043784 -0.165901 0.985170 +vn 0.649926 0.723897 -0.231452 +vn 0.652698 0.722146 -0.229108 +vn -0.041117 -0.167266 0.985054 +vn -0.554582 -0.606890 0.569319 +vn 0.599889 0.656093 -0.457903 +vn 0.075293 0.306279 -0.948960 +vn -0.614628 -0.638174 0.463644 +vn 0.075284 0.306310 -0.948950 +vn -0.075438 0.304024 -0.949673 +vn -0.101088 -0.411214 0.905916 +vn -0.157291 0.706247 -0.690271 +vn 0.128724 0.523755 -0.842087 +vn 0.128723 0.523740 -0.842097 +vn -0.101068 -0.411169 0.905939 +vn 0.108887 -0.408015 0.906459 +vn -0.138002 0.519918 -0.842995 +vn -0.629603 -0.691602 0.353959 +vn 0.178669 0.726910 -0.663083 +vn -0.152606 -0.620787 0.768983 +vn -0.197814 0.721419 -0.663645 +vn 0.178657 0.726924 -0.663071 +vn 0.209960 -0.685389 0.697251 +vn -0.216625 0.944193 -0.248139 +vn -0.152585 -0.620755 0.769013 +vn 0.232712 0.947116 -0.220945 +vn 0.160873 -0.616809 0.770498 +vn -0.243399 0.942475 -0.229126 +vn 0.232760 0.947113 -0.220910 +vn 0.212349 0.864058 -0.456411 +vn -0.225957 0.859648 -0.458202 +vn 0.212344 0.863919 -0.456677 +vn -0.690587 -0.723185 0.009691 +vn -0.671016 -0.732582 0.114287 +vn 0.208760 -0.795156 0.569338 +vn -0.196533 -0.799475 0.567640 +vn -0.196477 -0.799383 0.567789 +vn -0.671579 -0.733461 -0.104958 +vn 0.272109 -0.928788 0.251612 +vn 0.240062 -0.903916 0.353985 +vn -0.223330 -0.908635 0.352855 +vn -0.223404 -0.908711 0.352612 +vn -0.620286 -0.645030 -0.446297 +vn -0.631748 -0.694061 -0.345215 +vn 0.253538 -0.960562 0.114186 +vn -0.237189 -0.964783 0.113730 +vn 0.653445 0.722973 0.224321 +vn -0.237164 -0.964774 0.113858 +vn 0.650513 0.724826 0.226850 +vn -0.558598 -0.611167 -0.560753 +vn 0.504735 0.582336 0.637282 +vn 0.271569 -0.928955 -0.251583 +vn -0.237418 -0.965762 -0.104574 +vn -0.237409 -0.965772 -0.104507 +vn 0.601310 0.657549 0.453934 +vn 0.253797 -0.961544 -0.104972 +vn 0.511383 0.554673 0.656372 +vn -0.410946 -0.415392 -0.811525 +vn -0.435042 -0.477150 -0.763588 +vn 0.235571 0.311134 0.920707 +vn 0.367834 0.404041 0.837525 +vn 0.240999 -0.907087 -0.345126 +vn -0.224127 -0.911877 -0.343870 +vn 0.699331 0.290063 -0.653299 +vn 0.757072 0.000000 -0.653331 +vn -0.818107 0.338292 0.465036 +vn 0.973761 0.000000 -0.227571 +vn 0.899641 0.372630 -0.227582 +vn 0.973761 0.000000 -0.227571 +vn 0.757072 0.000000 -0.653331 +vn -0.821533 0.340381 0.457411 +vn -0.923658 0.383094 0.009743 +vn -0.923651 0.383121 0.009331 +vn -0.826036 0.342282 -0.447780 +vn -0.829974 0.343236 -0.439694 +vn -0.539755 0.222925 -0.811769 +vn -0.534817 0.221377 -0.815453 +vn -0.119124 0.049712 -0.991634 +vn -0.116126 0.048711 -0.992039 +vn 0.332109 -0.137177 -0.933213 +vn 0.323511 -0.134370 -0.936635 +vn 0.898402 -0.371564 -0.234124 +vn 0.697894 -0.289659 -0.655013 +vn 0.899641 -0.372630 -0.227582 +vn 0.699331 -0.290063 -0.653299 +vn 0.899429 0.371985 0.229468 +vn 0.974890 0.000000 0.222688 +vn 0.900679 0.373060 0.222720 +vn 0.899227 -0.372458 0.229491 +vn 0.974890 -0.000000 0.222688 +vn 0.706924 0.293163 0.643672 +vn 0.708474 0.294031 0.641569 +vn 0.767016 -0.000000 0.641628 +vn 0.767016 0.000000 0.641628 +vn 0.349040 0.145005 0.925821 +vn 0.369013 -0.000000 0.929424 +vn 0.369013 0.000000 0.929424 +vn 0.341002 0.140885 0.929446 +vn -0.098000 -0.041003 0.994341 +vn -0.100349 -0.042173 0.994058 +vn -0.106158 0.000000 0.994349 +vn -0.106158 0.000000 0.994349 +vn -0.519310 -0.214474 0.827235 +vn -0.561925 0.000000 0.827188 +vn -0.524349 -0.217085 0.823366 +vn -0.561925 0.000000 0.827188 +vn -0.818107 -0.338292 0.465036 +vn -0.889262 0.000000 0.457399 +vn -0.889262 0.000000 0.457399 +vn -0.821533 -0.340381 0.457411 +vn -0.923651 -0.383121 0.009331 +vn -0.923658 -0.383094 0.009743 +vn -0.999956 0.000000 0.009354 +vn 0.900877 -0.372568 0.222742 +vn -0.999956 0.000000 0.009354 +vn 0.706924 -0.293163 0.643672 +vn -0.826036 -0.342282 -0.447780 +vn -0.829974 -0.343236 -0.439694 +vn -0.898164 0.000000 -0.439661 +vn 0.708474 -0.294031 0.641569 +vn -0.898164 0.000000 -0.439661 +vn 0.349040 -0.145005 0.925821 +vn -0.539755 -0.222925 -0.811769 +vn -0.534817 -0.221377 -0.815453 +vn -0.578845 0.000000 -0.815438 +vn 0.341002 -0.140885 0.929446 +vn -0.578845 0.000000 -0.815438 +vn -0.125814 0.000000 -0.992054 +vn -0.100349 0.042173 0.994058 +vn -0.119124 -0.049712 -0.991634 +vn -0.125814 0.000000 -0.992054 +vn -0.098000 0.041003 0.994341 +vn -0.116126 -0.048711 -0.992039 +vn 0.332109 0.137177 -0.933213 +vn 0.323511 0.134370 -0.936635 +vn -0.524349 0.217085 0.823366 +vn 0.350250 0.000000 -0.936656 +vn 0.350250 0.000000 -0.936656 +vn -0.519310 0.214474 0.827235 +vn 0.898402 0.371564 -0.234124 +vn 0.697894 0.289659 -0.655013 +vn 0.653445 -0.722973 0.224321 +vn 0.096570 0.243971 -0.964962 +vn 0.233142 -0.948126 0.216109 +vn 0.504735 -0.582336 0.637282 +vn 0.111118 0.416942 -0.902115 +vn 0.212932 -0.866311 0.451846 +vn 0.212941 -0.865976 0.452484 +vn 0.601310 -0.657549 0.453934 +vn -0.558598 0.611167 -0.560753 +vn -0.197878 0.805080 -0.559188 +vn -0.197877 0.805078 -0.559191 +vn -0.037925 -0.274672 0.960790 +vn -0.077975 -0.312835 0.946602 +vn 0.046371 0.175704 -0.983350 +vn -0.016602 -0.062906 0.997881 +vn -0.041560 -0.272805 -0.961171 +vn 0.511383 -0.554673 0.656372 +vn -0.014140 -0.053578 -0.998464 +vn 0.180257 -0.733561 0.655283 +vn -0.410946 0.415392 -0.811525 +vn 0.180293 -0.733519 0.655320 +vn -0.154515 0.628607 -0.762220 +vn -0.435042 0.477150 -0.763588 +vn 0.235571 -0.311134 0.920707 +vn 0.130809 -0.532228 0.836434 +vn -0.154497 0.628580 -0.762245 +vn 0.367834 -0.404041 0.837525 +vn 0.130814 -0.532349 0.836357 +vn -0.103305 0.420191 -0.901536 +vn -0.103257 0.420077 -0.901595 +vn 0.098363 0.243011 0.965024 +vn -0.289742 0.319000 -0.902379 +vn 0.043784 0.165901 0.985170 +vn 0.108887 0.408015 0.906459 +vn -0.075438 -0.304024 -0.949673 +vn -0.157291 -0.706247 -0.690271 +vn 0.077475 -0.315154 0.945873 +vn -0.138002 -0.519918 -0.842995 +vn 0.077465 -0.315187 0.945863 +vn 0.220451 -0.237441 0.946057 +vn -0.103275 0.073502 -0.991933 +vn -0.043556 0.177163 -0.983217 +vn -0.091162 0.055964 0.994262 +vn -0.043546 0.177148 -0.983220 +vn 0.042982 -0.048516 0.997897 +vn -0.125260 0.132695 -0.983210 +vn 0.015593 -0.063432 0.997864 +vn 0.015592 -0.063426 0.997865 +vn 0.036699 -0.041268 -0.998474 +vn 0.013281 -0.054025 -0.998451 +vn 0.013279 -0.054020 -0.998452 +vn 0.209960 0.685389 0.697251 +vn 0.160873 0.616809 0.770498 +vn -0.197814 -0.721419 -0.663645 +vn -0.041119 0.167266 0.985054 +vn -0.118320 0.125256 0.985044 +vn -0.216625 -0.944193 -0.248139 +vn -0.041118 0.167271 0.985053 +vn -0.243399 -0.942475 -0.229126 +vn -0.225957 -0.859648 -0.458202 +vn 0.225879 -0.293265 -0.928964 +vn 0.208760 0.795156 0.569338 +vn 0.075276 -0.306279 -0.948961 +vn 0.214140 -0.230810 -0.949142 +vn 0.075299 -0.306303 -0.948951 +vn -0.101076 0.411165 0.905940 +vn -0.400893 0.401784 0.823319 +vn 0.361990 -0.397492 -0.843186 +vn -0.283421 0.312307 0.906718 +vn 0.128720 -0.523740 -0.842097 +vn -0.101079 0.411214 0.905917 +vn 0.128726 -0.523754 -0.842087 +vn 0.240062 0.903916 0.353985 +vn 0.501625 -0.571684 -0.649269 +vn 0.178655 -0.726915 -0.663081 +vn 0.272109 0.928788 0.251612 +vn 0.178672 -0.726922 -0.663069 +vn -0.152598 0.620754 0.769011 +vn 0.507178 -0.549337 -0.664078 +vn 0.649926 -0.723897 -0.231452 +vn -0.429758 0.471118 0.770296 +vn 0.232714 -0.947124 -0.220906 +vn -0.152594 0.620792 0.768981 +vn 0.652698 -0.722146 -0.229108 +vn 0.232758 -0.947105 -0.220942 +vn 0.212316 -0.863925 -0.456680 +vn 0.599889 -0.656093 -0.457903 +vn 0.212377 -0.864050 -0.456414 +vn 0.253538 0.960562 0.114186 +vn -0.614628 0.638174 0.463644 +vn -0.196501 0.799480 0.567644 +vn -0.196508 0.799372 0.567793 +vn -0.554582 0.606890 0.569319 +vn 0.253797 0.961544 -0.104972 +vn 0.271569 0.928955 -0.251583 +vn -0.629603 0.691602 0.353959 +vn -0.223352 0.908725 0.352608 +vn -0.223383 0.908624 0.352850 +vn 0.240999 0.907087 -0.345126 +vn -0.671016 0.732582 0.114287 +vn -0.690587 0.723185 0.009691 +vn -0.237186 0.964769 0.113858 +vn -0.243673 -0.943535 0.224421 +vn -0.237167 0.964789 0.113730 +vn -0.211361 -0.945482 0.247768 +vn 0.208790 0.685879 -0.697120 +vn 0.210351 0.800769 -0.560822 +vn -0.237419 0.965769 -0.104507 +vn -0.226397 -0.861969 0.453601 +vn -0.237407 0.965765 -0.104573 +vn -0.671579 0.733461 -0.104958 +vn -0.150279 -0.708829 0.689186 +vn -0.199231 -0.728063 0.655920 +vn 0.162810 0.624633 -0.763759 +vn -0.140476 -0.528398 0.837295 +vn -0.620286 0.645030 -0.446297 +vn -0.631748 0.694061 -0.345215 +vn -0.224168 0.911866 -0.343874 +vn -0.224111 0.911812 -0.344054 +vn 0.650513 -0.724826 0.226850 +vn 0.232978 -0.948197 0.215972 +vn 0.124843 0.228689 0.965461 +vn 0.340010 0.622833 0.704608 +vn 0.124843 0.228689 0.965461 +vn 0.463049 0.848216 0.257131 +vn 0.340010 0.622833 0.704608 +vn 0.463049 0.848216 0.257131 +vn 0.463049 0.848216 -0.257131 +vn 0.463049 0.848215 -0.257131 +vn 0.340011 0.622833 -0.704607 +vn 0.340010 0.622833 -0.704607 +vn 0.124843 0.228689 -0.965461 +vn 0.124843 0.228689 -0.965461 +vn -0.271102 -0.657590 0.702908 +vn -0.134695 -0.698668 0.702652 +vn 0.001210 0.262397 0.964959 +vn -0.004128 0.255640 0.966763 +vn 0.015296 -0.966599 0.255839 +vn -0.048394 -0.251081 0.966755 +vn -0.098848 -0.235775 0.966767 +vn -0.048380 -0.251068 0.966760 +vn -0.018059 0.710924 0.703037 +vn -0.017204 0.711569 0.702405 +vn 0.096395 0.244065 0.964956 +vn 0.048404 0.251076 0.966756 +vn 0.098848 0.235775 0.966767 +vn 0.048391 0.251065 0.966760 +vn -0.015570 0.966592 0.255847 +vn -0.009295 0.968195 0.250024 +vn -0.373452 -0.891691 0.255774 +vn 0.281019 0.653255 0.703055 +vn 0.134696 0.698677 0.702643 +vn 0.280423 0.654243 0.702374 +vn 0.134651 0.698657 0.702672 +vn -0.009411 0.966714 -0.255685 +vn -0.015596 0.968153 -0.249872 +vn 0.373797 0.891519 0.255869 +vn 0.183245 0.950794 0.249823 +vn 0.368522 0.895374 0.249996 +vn 0.183235 0.950794 0.249832 +vn -0.017179 0.710987 -0.702995 +vn -0.018046 0.711594 -0.702359 +vn 0.368075 0.893944 -0.255706 +vn 0.374406 0.892972 -0.249842 +vn 0.183245 0.950792 -0.249831 +vn 0.183236 0.950796 -0.249822 +vn -0.004227 0.261790 -0.965116 +vn 0.004227 -0.261790 -0.965116 +vn 0.001480 0.255188 -0.966890 +vn 0.134657 0.698686 -0.702642 +vn 0.280164 0.653671 -0.703009 +vn 0.281275 0.653931 -0.702324 +vn 0.134691 0.698650 -0.702671 +vn 0.007244 -0.711659 -0.702488 +vn 0.008280 -0.255971 -0.966649 +vn 0.048394 0.251078 -0.966756 +vn 0.101236 0.241470 -0.965113 +vn 0.093454 0.237447 -0.966895 +vn 0.048402 0.251063 -0.966760 +vn 0.019308 -0.966500 -0.255940 +vn 0.015323 -0.968326 -0.249218 +vn 0.007654 -0.711196 -0.702952 +vn -0.048383 -0.251084 -0.966755 +vn -0.104821 -0.239516 -0.965217 +vn -0.048391 -0.251066 -0.966760 +vn -0.098849 -0.235777 -0.966767 +vn -0.271567 -0.657808 -0.702524 +vn -0.271101 -0.657590 -0.702908 +vn -0.183272 -0.950637 -0.250400 +vn -0.183259 -0.950635 -0.250420 +vn -0.134635 -0.698682 -0.702649 +vn -0.134683 -0.698605 -0.702718 +vn -0.377872 -0.891718 -0.249103 +vn -0.373452 -0.891691 -0.255775 +vn 0.019436 -0.968286 0.249089 +vn 0.007245 -0.711658 0.702489 +vn 0.007653 -0.711197 0.702951 +vn -0.271566 -0.657807 0.702525 +vn -0.183259 -0.950635 0.250420 +vn -0.377872 -0.891718 0.249103 +vn -0.183272 -0.950637 0.250400 +vn 0.004227 -0.261790 0.965116 +vn 0.008281 -0.255970 0.966649 +vn -0.104822 -0.239516 0.965217 +vn -0.134621 -0.698614 0.702720 +vn -0.104955 0.873031 -0.476236 +vn -0.110585 0.923733 0.366726 +vn -0.104861 0.873047 -0.476229 +vn -0.110136 0.923651 0.367068 +vn -0.351994 0.495776 -0.793918 +vn -0.084742 0.691557 -0.717334 +vn -0.082681 0.692222 -0.716933 +vn -0.109369 0.923750 0.367047 +vn -0.110944 0.923690 0.366725 +vn -0.036985 0.308813 0.950403 +vn -0.082562 0.692236 -0.716933 +vn -0.056654 0.474368 0.878502 +vn 0.041347 0.317200 0.947457 +vn -0.082562 0.692236 -0.716933 +vn -0.083136 0.692168 -0.716933 +vn -0.083136 0.692168 -0.716933 +vn -0.117146 0.980879 -0.155415 +vn -0.117211 0.980872 0.155405 +vn -0.117146 0.980879 -0.155415 +vn -0.073995 0.619573 0.781444 +vn -0.117187 0.980874 -0.155415 +vn -0.074200 0.619548 0.781444 +vn -0.112472 0.941744 -0.316966 +vn -0.112472 0.941744 -0.316966 +vn -0.073995 0.619573 0.781444 +vn -0.117246 0.980867 0.155415 +vn -0.112548 0.941735 -0.316966 +vn -0.049626 0.403828 -0.913488 +vn -0.117280 0.980864 0.155405 +vn -0.067581 0.554002 -0.829768 +vn -0.066307 0.555950 -0.828567 +vn -0.117199 0.980874 0.155405 +vn -0.066731 0.555585 -0.828778 +vn -0.065771 0.556014 -0.828567 +vn -0.117159 0.980877 0.155415 +vn -0.016672 0.139494 -0.990083 +vn -0.016713 0.139489 -0.990083 +vn -0.048512 0.403961 -0.913489 +vn -0.220072 0.959132 -0.177858 +vn -0.047802 0.404115 -0.913458 +vn 0.390541 0.744777 -0.541096 +vn -0.116952 0.980903 -0.155405 +vn -0.104275 0.873113 -0.476236 +vn -0.071878 0.876513 -0.475982 +vn -0.104275 0.873113 -0.476236 +vn -0.105834 0.872469 -0.477071 +vn -0.114042 0.941513 -0.317094 +vn -0.082672 0.692223 -0.716933 +vn -0.082672 0.692223 -0.716933 +vn -0.082901 0.692196 -0.716933 +vn -0.116963 0.980902 0.155405 +vn -0.066359 0.555629 -0.828778 +vn -0.116963 0.980902 0.155405 +vn -0.066542 0.555607 -0.828778 +vn -0.066359 0.555629 -0.828778 +vn -0.117909 0.980789 0.155405 +vn 0.822948 0.175562 -0.540310 +vn -0.016663 0.139521 -0.990079 +vn 0.135100 0.418974 -0.897891 +vn -0.048257 0.404061 -0.913458 +vn -0.117803 0.980800 0.155415 +vn -0.048257 0.404061 -0.913458 +vn -0.117211 0.980872 -0.155405 +vn -0.117211 0.980872 -0.155405 +vn -0.021411 0.179953 0.983442 +vn -0.104302 0.872841 -0.476727 +vn -0.021507 0.179950 0.983441 +vn -0.112530 0.941695 -0.317094 +vn -0.021308 0.179974 0.983441 +vn -0.112530 0.941695 -0.317094 +vn -0.323759 0.345535 0.880787 +vn -0.117247 0.980868 -0.155405 +vn -0.117280 0.980863 -0.155415 +vn -0.112596 0.941687 -0.317094 +vn -0.075064 0.619445 0.781443 +vn -0.112569 0.941733 -0.316966 +vn -0.056588 0.474464 0.878454 +vn -0.056452 0.474468 0.878461 +vn -0.056980 0.474405 0.878461 +vn 0.196789 0.793205 0.576281 +vn -0.094639 0.792425 0.602583 +vn -0.094712 0.792475 0.602505 +vn -0.056171 0.474425 0.878502 +vn 0.192642 0.793316 0.577528 +vn -0.073899 0.619602 0.781430 +vn -0.073879 0.619587 0.781444 +vn -0.117199 0.980872 -0.155415 +vn -0.117160 0.980879 -0.155405 +vn -0.074410 0.619523 0.781444 +vn -0.074479 0.619533 0.781430 +vn -0.095283 0.792160 0.602830 +vn -0.112485 0.941743 -0.316966 +vn -0.112518 0.941696 -0.317094 +vn -0.110403 0.923763 0.366705 +vn -0.094285 0.792411 0.602656 +vn -0.110310 0.923638 0.367047 +vn -0.110415 0.923762 0.366705 +vn -0.116963 0.980902 -0.155405 +vn -0.116963 0.980902 -0.155405 +vn -0.303073 0.921251 0.243810 +vn -0.111033 0.923680 0.366725 +vn -0.095685 0.792359 0.602505 +vn -0.112291 0.941723 -0.317093 +vn -0.094643 0.792369 0.602656 +vn -0.112291 0.941723 -0.317093 +vn -0.117803 0.980802 -0.155405 +vn -0.117909 0.980787 -0.155415 +vn -0.109905 0.923687 0.367047 +vn -0.113200 0.941614 -0.317094 +vn -0.110419 0.923753 0.366725 +vn -0.113103 0.941669 -0.316966 +vn -0.094491 0.792443 0.602583 +vn -0.104395 0.873098 -0.476236 +vn -0.094869 0.792457 0.602505 +vn -0.106421 0.872586 -0.476726 +vn -0.104287 0.873111 -0.476236 +vn -0.104288 0.873111 -0.476236 +vn -0.110321 0.923629 0.367068 +vn -0.110359 0.923633 0.367047 +vn -0.117146 0.980879 0.155415 +vn -0.117146 0.980879 0.155415 +vn -0.093832 0.792521 0.602583 +vn 0.284060 0.958806 0.000000 +vn -0.095262 0.792410 0.602505 +vn -0.117188 0.980874 0.155415 +vn -0.104113 0.873136 -0.476229 +vn -0.116954 0.980914 0.155338 +vn -0.104137 0.873129 -0.476236 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.992945 -0.118580 -0.000023 +vn 0.992943 -0.118591 -0.000016 +vn 0.992945 -0.118580 0.000027 +vn 0.992941 -0.118608 -0.000029 +vn 0.992943 -0.118591 0.000033 +vn 0.992943 -0.118591 0.000033 +vn 0.992941 -0.118608 -0.000029 +vn 0.992945 -0.118580 0.000023 +vn 0.992944 -0.118580 0.000028 +vn 0.992943 -0.118591 -0.000016 +vn 0.258820 0.000000 0.965926 +vn 0.707104 0.000000 0.707110 +vn 0.258820 0.000000 0.965926 +vn 0.965927 0.000000 0.258815 +vn 0.707104 0.000000 0.707110 +vn 0.965927 0.000000 0.258815 +vn 0.965917 0.004533 -0.258812 +vn 0.984631 0.000491 -0.174646 +vn 0.989758 0.000000 -0.142755 +vn 0.707109 0.004865 -0.707088 +vn 0.965912 -0.005536 -0.258811 +vn 0.682342 0.003011 -0.731027 +vn 0.557066 0.000148 -0.830468 +vn 0.553970 0.000078 -0.832537 +vn 0.587184 -0.000088 -0.809454 +vn 0.531297 0.000000 -0.847185 +vn 0.258815 -0.000684 -0.965927 +vn 0.267266 0.000000 -0.963623 +vn 0.541017 -0.000099 -0.841011 +vn 0.707108 -0.005188 -0.707087 +vn 0.258815 0.000684 -0.965927 +vn 0.267266 0.000000 -0.963623 +vn 0.627089 -0.001366 -0.778947 +vn 0.772614 -0.000747 -0.634875 +vn 0.912701 0.000637 -0.408627 +vn 0.987668 0.000000 -0.156563 +vn 0.897677 -0.000386 -0.440653 +vn 0.734322 -0.000585 -0.678801 +vn 0.698623 0.000392 -0.715490 +vn 0.875603 0.000600 -0.483030 +vn 0.982545 0.000000 -0.186023 +vn 0.858594 -0.002182 -0.512652 +vn -0.965927 0.000000 0.258814 +vn -0.965927 0.000000 0.258814 +vn -0.707117 0.000000 0.707096 +vn -0.707117 0.000000 0.707096 +vn -0.258815 0.000000 0.965927 +vn -0.258815 0.000000 0.965927 +vn 0.096736 -0.809959 -0.578453 +vn 0.096736 -0.809959 -0.578453 +vn 0.072157 -0.603961 0.793741 +vn 0.107116 -0.896830 -0.429211 +vn 0.072128 -0.603959 0.793745 +vn 0.107127 -0.896821 -0.429226 +vn 0.020673 -0.172349 0.984819 +vn 0.050360 -0.420912 0.905702 +vn 0.054500 -0.456202 -0.888205 +vn 0.054492 -0.456216 -0.888199 +vn 0.020590 -0.172344 0.984822 +vn 0.050268 -0.420917 0.905705 +vn 0.054494 -0.456203 -0.888205 +vn 0.050289 -0.420921 0.905702 +vn 0.724892 -0.487098 0.487100 +vn 0.094056 -0.787367 0.609267 +vn 0.096729 -0.809960 -0.578453 +vn 0.096729 -0.809960 -0.578453 +vn 0.094046 -0.787368 0.609267 +vn 0.094046 -0.787368 0.609267 +vn 0.072153 -0.603961 0.793741 +vn 0.116622 -0.976307 -0.182274 +vn 0.072140 -0.603963 0.793741 +vn 0.116603 -0.976311 -0.182266 +vn 0.072140 -0.603963 0.793741 +vn 0.389558 -0.238373 0.889619 +vn 0.020586 -0.172344 0.984822 +vn 0.020585 -0.172344 0.984822 +vn 0.050276 -0.420916 0.905705 +vn 0.050285 -0.420915 0.905705 +vn 0.107123 -0.896822 -0.429226 +vn 0.050276 -0.420916 0.905705 +vn 0.107111 -0.896827 -0.429218 +vn 0.116648 -0.976305 -0.182270 +vn 0.116618 -0.976309 -0.182266 +vn 0.107105 -0.896836 -0.429202 +vn 0.107146 -0.896823 -0.429218 +vn 0.762770 -0.457265 -0.457266 +vn 0.075704 -0.633801 -0.769783 +vn 0.075717 -0.633799 -0.769783 +vn 0.075704 -0.633801 -0.769783 +vn 0.116609 -0.976309 -0.182270 +vn 0.116609 -0.976309 -0.182270 +vn 0.116604 -0.976310 -0.182270 +vn 0.116617 -0.976308 -0.182274 +vn 0.096744 -0.809958 -0.578453 +vn 0.096744 -0.809958 -0.578453 +vn 0.096754 -0.809957 -0.578453 +vn 0.116131 -0.972195 0.203346 +vn 0.013041 -0.109180 -0.993936 +vn 0.116131 -0.972195 0.203346 +vn 0.013039 -0.109180 -0.993936 +vn 0.116642 -0.976305 -0.182274 +vn 0.116642 -0.976305 -0.182274 +vn 0.037730 -0.316339 -0.947896 +vn 0.116127 -0.972196 0.203346 +vn 0.037778 -0.316333 -0.947896 +vn 0.116127 -0.972196 0.203346 +vn 0.037778 -0.316333 -0.947896 +vn -0.064005 -0.779399 0.623250 +vn 0.106008 -0.887450 0.448547 +vn 0.068787 -0.594741 -0.800969 +vn 0.116614 -0.976308 -0.182274 +vn 0.107121 -0.896834 -0.429202 +vn 0.965082 -0.253023 -0.067797 +vn 0.107121 -0.896834 -0.429202 +vn 0.107131 -0.896832 -0.429202 +vn 0.116614 -0.976308 -0.182274 +vn 0.054438 -0.456223 -0.888199 +vn 0.106004 -0.887451 0.448547 +vn 0.106004 -0.887451 0.448547 +vn 0.094049 -0.787365 0.609271 +vn 0.054484 -0.456217 -0.888199 +vn 0.054484 -0.456217 -0.888199 +vn 0.116118 -0.972197 0.203346 +vn 0.116118 -0.972197 0.203346 +vn -0.060397 -0.818212 -0.571735 +vn 0.106658 -0.896697 -0.429603 +vn 0.106007 -0.887450 0.448547 +vn 0.105994 -0.887441 0.448569 +vn 0.096710 -0.809637 -0.578908 +vn 0.116113 -0.972198 0.203346 +vn 0.116113 -0.972198 0.203346 +vn 0.094478 -0.810227 -0.578452 +vn 0.116123 -0.972196 0.203346 +vn -0.068671 -0.606186 -0.792353 +vn 0.116151 -0.972193 0.203346 +vn 0.116151 -0.972193 0.203346 +vn 0.071127 -0.595445 -0.800242 +vn 0.107110 -0.896827 -0.429218 +vn 0.105990 -0.887441 0.448569 +vn 0.105990 -0.887441 0.448569 +vn 0.107125 -0.896829 -0.429210 +vn 0.106026 -0.887448 0.448547 +vn 0.105983 -0.887442 0.448569 +vn 0.107152 -0.896822 -0.429218 +vn 0.094030 -0.787367 0.609271 +vn 0.094053 -0.787376 0.609256 +vn 0.075697 -0.633801 -0.769783 +vn 0.094039 -0.787375 0.609260 +vn 0.075692 -0.633802 -0.769783 +vn 0.094050 -0.787376 0.609256 +vn 0.075692 -0.633802 -0.769783 +vn 0.094032 -0.787370 0.609267 +vn 0.096751 -0.809958 -0.578453 +vn 0.096751 -0.809958 -0.578453 +vn 0.094069 -0.787371 0.609260 +vn -0.271752 -0.359155 0.892837 +vn 0.072147 -0.603953 0.793748 +vn 0.313799 -0.245746 -0.917136 +vn 0.037786 -0.316332 -0.947896 +vn 0.050276 -0.420953 0.905688 +vn 0.072141 -0.603957 0.793745 +vn 0.067570 -0.217274 -0.973769 +vn 0.116136 -0.972195 0.203346 +vn 0.116627 -0.976303 -0.182293 +vn 0.116191 -0.976358 -0.182274 +vn 0.072132 -0.603955 0.793748 +vn 0.114625 -0.959560 0.257111 +vn 0.160573 -0.953023 0.256834 +vn 0.106000 -0.887451 0.448547 +vn -0.124838 -0.228679 -0.965464 +vn -0.124838 -0.228679 -0.965464 +vn -0.340014 -0.622838 -0.704602 +vn -0.340014 -0.622838 -0.704602 +vn -0.463052 -0.848221 0.257106 +vn -0.463052 -0.848221 -0.257106 +vn -0.463053 -0.848221 -0.257104 +vn -0.340013 -0.622837 0.704603 +vn -0.463053 -0.848222 0.257103 +vn -0.124838 -0.228679 0.965464 +vn -0.340013 -0.622837 0.704603 +vn -0.124838 -0.228679 0.965464 +vn -0.124838 0.228679 -0.965464 +vn -0.340014 0.622838 -0.704602 +vn -0.124838 0.228679 -0.965464 +vn -0.463053 0.848221 -0.257104 +vn -0.340014 0.622839 -0.704600 +vn -0.463053 0.848221 -0.257105 +vn -0.463053 0.848221 0.257104 +vn -0.463053 0.848221 0.257105 +vn -0.340013 0.622837 0.704603 +vn -0.340014 0.622838 0.704601 +vn -0.124838 0.228679 0.965464 +vn -0.124838 0.228679 0.965464 +vn 0.116108 0.972120 -0.203719 +vn 0.116108 0.972120 -0.203719 +vn 0.160478 0.953037 0.256842 +vn 0.116603 0.976248 0.182601 +vn 0.116115 0.972119 -0.203719 +vn 0.116115 0.972119 -0.203719 +vn 0.116648 0.976243 0.182601 +vn 0.116648 0.976243 0.182601 +vn 0.116103 0.972121 -0.203719 +vn 0.116103 0.972121 -0.203719 +vn 0.109005 0.899161 0.423825 +vn 0.116608 0.976248 0.182601 +vn 0.116601 0.976249 0.182599 +vn 0.107406 0.899353 0.423825 +vn 0.107459 0.899336 0.423847 +vn 0.116103 0.972121 -0.203719 +vn 0.116136 0.972118 -0.203713 +vn 0.116629 0.976243 0.182614 +vn 0.116117 0.972120 -0.203713 +vn 0.107422 0.899341 0.423848 +vn 0.107422 0.899341 0.423847 +vn 0.095157 0.813569 0.573629 +vn 0.135922 0.697439 0.703636 +vn 0.097144 0.813334 0.573630 +vn 0.097134 0.813337 0.573627 +vn 0.116604 0.976248 0.182599 +vn 0.020552 0.172061 -0.984872 +vn 0.116608 0.976248 0.182601 +vn 0.080879 0.252394 -0.964239 +vn 0.116596 0.976249 0.182601 +vn 0.020650 0.172068 -0.984869 +vn 0.116596 0.976249 0.182601 +vn 0.020551 0.172062 -0.984872 +vn 0.097149 0.813333 0.573630 +vn 0.097143 0.813336 0.573627 +vn 0.051397 0.414739 -0.908488 +vn -0.069803 0.471525 -0.879086 +vn 0.107419 0.899341 0.423848 +vn 0.049657 0.414950 -0.908488 +vn 0.107419 0.899341 0.423848 +vn 0.049562 0.414961 -0.908488 +vn 0.049557 0.414960 -0.908489 +vn -0.046435 0.821702 0.568023 +vn 0.139590 0.696858 -0.703494 +vn 0.107411 0.899344 0.423843 +vn 0.068915 0.599081 -0.797717 +vn 0.107426 0.899340 0.423848 +vn 0.116309 0.976283 0.182601 +vn 0.107411 0.899344 0.423843 +vn 0.116596 0.976249 0.182601 +vn 0.071509 0.598771 -0.797721 +vn 0.107092 0.899242 0.424140 +vn 0.071517 0.598772 -0.797720 +vn 0.116596 0.976249 0.182601 +vn 0.071706 0.629062 0.774041 +vn 0.071516 0.598770 -0.797721 +vn 0.071509 0.598769 -0.797723 +vn 0.075079 0.628663 0.774045 +vn 0.091709 0.791341 -0.604457 +vn 0.075086 0.628661 0.774046 +vn 0.097146 0.813335 0.573627 +vn 0.097148 0.813333 0.573630 +vn 0.095353 0.813313 0.573959 +vn 0.094478 0.791015 -0.604458 +vn 0.097153 0.813335 0.573627 +vn 0.054806 0.450156 0.891266 +vn 0.094468 0.791015 -0.604460 +vn 0.151419 0.954491 -0.256941 +vn 0.037703 0.315854 0.948059 +vn 0.107451 0.889925 -0.443270 +vn 0.053777 0.450297 0.891258 +vn 0.053802 0.450276 0.891267 +vn -0.198895 0.465626 0.862341 +vn 0.075091 0.628666 0.774042 +vn 0.075087 0.628667 0.774042 +vn 0.075107 0.628659 0.774046 +vn 0.106297 0.890060 -0.443277 +vn 0.053756 0.450256 0.891280 +vn 0.106308 0.890062 -0.443270 +vn 0.053798 0.450295 0.891258 +vn 0.073225 0.627951 0.774800 +vn 0.013022 0.109041 0.993952 +vn 0.094477 0.791014 -0.604460 +vn 0.013025 0.109041 0.993952 +vn 0.094483 0.791014 -0.604458 +vn 0.085118 0.251828 0.964021 +vn 0.062346 0.312820 0.947764 +vn 0.037740 0.315855 0.948057 +vn 0.037721 0.315851 0.948059 +vn 0.106307 0.890059 -0.443277 +vn 0.106313 0.890061 -0.443270 +vn 0.094498 0.791020 -0.604448 +vn 0.094480 0.791013 -0.604460 +vn -0.041359 0.786153 -0.616646 +vn 0.094488 0.791021 -0.604448 +vn 0.106313 0.890061 -0.443270 +vn 0.106310 0.890058 -0.443277 +vn 0.116111 0.972121 -0.203712 +vn 0.106316 0.890061 -0.443270 +vn 0.106318 0.890061 -0.443270 +vn 0.106303 0.890059 -0.443277 +vn 0.116155 0.972116 -0.203712 +vn 0.116109 0.972120 -0.203719 +vn 0.113513 -0.959692 0.257111 +vn 0.028160 -0.235761 -0.971403 +vn 0.028420 -0.235948 -0.971350 +vn 0.030494 -0.258743 -0.965465 +vn 0.102447 -0.649897 -0.753086 +vn 0.056493 -0.473058 -0.879218 +vn 0.056743 -0.473028 -0.879218 +vn 0.083311 -0.704702 -0.704595 +vn 0.080349 -0.657863 -0.748839 +vn 0.078695 -0.658061 -0.748841 +vn 0.324096 -0.881537 -0.343299 +vn 0.101500 -0.834565 -0.541479 +vn 0.099736 -0.834777 -0.541479 +vn 0.113437 -0.959701 -0.257112 +vn 0.183439 -0.918998 -0.348988 +vn 0.111032 -0.930174 -0.349926 +vn 0.999647 0.025158 0.008579 +vn 0.117966 -0.987619 -0.103402 +vn 0.190789 -0.976200 -0.103117 +vn 0.118106 -0.988792 0.091336 +vn 0.230839 -0.913941 0.333806 +vn 0.111617 -0.935127 0.336273 +vn 0.101855 -0.852651 0.512456 +vn 0.104103 -0.852380 0.512455 +vn 0.087365 -0.725803 0.682332 +vn 0.083351 -0.704697 0.704596 +vn 0.088895 -0.725328 0.682640 +vn 0.086313 -0.725638 0.682641 +vn 0.054884 -0.457646 0.887439 +vn 0.019237 -0.159199 0.987059 +vn 0.018983 -0.158924 0.987108 +vn 0.029724 -0.258835 0.965464 +vn 0.055298 -0.457274 0.887605 +vn 0.055030 -0.457306 0.887605 +vn 0.113513 0.959692 -0.257112 +vn 0.018968 0.158802 -0.987128 +vn 0.029723 0.258835 -0.965464 +vn 0.054864 0.457377 -0.887579 +vn 0.019237 0.159094 -0.987076 +vn 0.083353 0.704697 -0.704595 +vn 0.087358 0.725537 -0.682616 +vn 0.055287 0.456995 -0.887749 +vn 0.054996 0.457030 -0.887749 +vn 0.086278 0.725377 -0.682923 +vn 0.088877 0.725065 -0.682922 +vn 0.231549 0.913745 -0.333849 +vn 0.104105 0.852273 -0.512633 +vn 0.101843 0.852545 -0.512635 +vn 0.111614 0.935104 -0.336337 +vn 0.113436 0.959701 0.257111 +vn 0.189465 0.981802 0.012954 +vn 0.119276 0.992776 0.012984 +vn 0.324438 0.881391 0.343351 +vn 0.111029 0.930151 0.349987 +vn 0.182430 0.919166 0.349076 +vn 0.083309 0.704702 0.704596 +vn 0.099726 0.834688 0.541619 +vn 0.101418 0.834485 0.541618 +vn 0.102649 0.649647 0.753274 +vn 0.078679 0.657921 0.748966 +vn 0.080257 0.657732 0.748965 +vn 0.030491 0.258743 0.965465 +vn 0.028138 0.235577 0.971448 +vn 0.028375 0.235747 0.971400 +vn 0.056699 0.472830 0.879328 +vn 0.056469 0.472858 0.879328 +vn 0.309018 0.000000 -0.951056 +vn 0.309018 0.000000 -0.951056 +vn 0.809021 0.000000 -0.587780 +vn 0.809021 0.000000 -0.587780 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.809021 -0.000000 0.587780 +vn 0.809021 0.000000 0.587780 +vn 0.309017 -0.000000 0.951056 +vn 0.309017 0.000000 0.951056 +vn 0.989758 -0.000000 0.142754 +vn 0.951030 -0.007960 0.308995 +vn 0.912224 -0.001950 0.409688 +vn 0.984631 0.000491 0.174646 +vn 0.623234 -0.005086 0.782019 +vn 0.951032 0.007697 0.308996 +vn 0.527922 -0.004239 0.849282 +vn 0.587763 -0.007346 0.809000 +vn 0.587184 -0.000088 0.809454 +vn 0.683270 0.001816 0.730164 +vn 0.531310 0.000000 0.847178 +vn 0.553975 0.000078 0.832533 +vn 0.545376 0.004916 0.838177 +vn 0.414720 0.000000 0.909949 +vn 0.414720 -0.000000 0.909949 +vn 0.587763 0.007455 0.808999 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.587779 0.000000 0.809022 +vn -0.587779 0.000000 0.809022 +vn -0.951060 0.000000 0.309005 +vn -0.951060 0.000000 0.309005 +vn 0.875603 0.000600 0.483031 +vn 0.987668 0.000000 0.156563 +vn 0.897678 -0.000386 0.440653 +vn 0.734322 -0.000585 0.678801 +vn 0.698623 0.000392 0.715490 +vn 0.773546 0.001118 0.633739 +vn 0.982546 0.000000 0.186022 +vn 0.858405 -0.001554 0.512971 +vn -0.050047 0.403653 0.913542 +vn -0.110332 0.923697 -0.366894 +vn -0.048258 0.404036 0.913469 +vn -0.110332 0.923697 -0.366895 +vn -0.066332 0.555633 0.828778 +vn -0.095108 0.792211 -0.602790 +vn -0.066366 0.555648 0.828765 +vn -0.094651 0.792326 -0.602711 +vn -0.352187 0.495583 0.793953 +vn -0.082714 0.692258 0.716894 +vn -0.084498 0.691677 0.717247 +vn -0.082686 0.692262 0.716894 +vn -0.082714 0.692258 0.716894 +vn -0.110293 0.923718 -0.366853 +vn -0.067999 0.553802 0.829867 +vn -0.110367 0.923692 -0.366894 +vn -0.066388 0.555626 0.828778 +vn -0.016664 0.139509 0.990081 +vn -0.016613 0.139515 0.990081 +vn -0.303172 0.921231 -0.243763 +vn -0.048222 0.404037 0.913471 +vn -0.110815 0.923647 -0.366873 +vn -0.016664 0.139508 0.990081 +vn -0.110345 0.923703 -0.366873 +vn -0.048261 0.404034 0.913470 +vn -0.048260 0.404032 0.913471 +vn -0.110314 0.923715 -0.366853 +vn -0.117162 0.980886 -0.155356 +vn -0.117162 0.980886 -0.155356 +vn -0.117210 0.980880 -0.155356 +vn -0.117101 0.980896 -0.155336 +vn 0.390513 0.744780 0.541112 +vn -0.071815 0.876498 0.476020 +vn -0.117163 0.980889 -0.155336 +vn -0.117163 0.980889 -0.155336 +vn -0.117120 0.980894 -0.155336 +vn -0.117200 0.980882 -0.155356 +vn -0.117176 0.980885 -0.155356 +vn -0.117142 0.980890 -0.155346 +vn -0.082686 0.692262 0.716894 +vn -0.117162 0.980886 0.155356 +vn -0.117162 0.980886 0.155356 +vn -0.036885 0.308806 -0.950410 +vn -0.112487 0.941743 0.316966 +vn -0.112487 0.941743 0.316966 +vn -0.074010 0.619626 -0.781400 +vn -0.117100 0.980893 0.155356 +vn -0.021494 0.179949 -0.983441 +vn -0.117210 0.980883 0.155336 +vn -0.021503 0.179948 -0.983441 +vn 0.041362 0.317181 -0.947462 +vn -0.066368 0.555648 0.828765 +vn 0.196693 0.793214 -0.576302 +vn -0.112533 0.941737 0.316966 +vn -0.112417 0.941663 0.317227 +vn 0.192815 0.793318 -0.577468 +vn -0.117164 0.980887 -0.155346 +vn -0.110356 0.923710 -0.366853 +vn -0.117200 0.980881 -0.155359 +vn -0.117163 0.980889 0.155336 +vn -0.056664 0.474392 -0.878488 +vn -0.117163 0.980889 0.155336 +vn -0.149818 0.461114 -0.874602 +vn -0.056686 0.474379 -0.878494 +vn -0.112440 0.941660 0.317227 +vn -0.056634 0.474395 -0.878488 +vn -0.112483 0.941700 0.317094 +vn -0.117119 0.980891 0.155356 +vn -0.074015 0.619626 -0.781400 +vn -0.117200 0.980885 0.155336 +vn -0.074014 0.619644 -0.781385 +vn -0.073977 0.619666 -0.781371 +vn -0.112480 0.941701 0.317094 +vn -0.074008 0.619645 -0.781385 +vn -0.112523 0.941738 0.316966 +vn -0.117176 0.980886 0.155346 +vn -0.117142 0.980888 0.155356 +vn -0.074987 0.618732 -0.782015 +vn -0.074016 0.619662 -0.781371 +vn 0.283965 0.958835 0.000000 +vn -0.104916 0.872776 0.476712 +vn -0.112462 0.941703 0.317094 +vn -0.117134 0.980889 -0.155356 +vn -0.112499 0.941741 0.316966 +vn 0.822976 0.175545 0.540273 +vn -0.094658 0.792441 -0.602559 +vn -0.094654 0.792445 -0.602554 +vn 0.135281 0.418955 0.897873 +vn -0.104287 0.873090 0.476274 +vn -0.104287 0.873091 0.476274 +vn -0.104232 0.873097 0.476274 +vn -0.094647 0.792446 -0.602554 +vn -0.094692 0.792437 -0.602559 +vn -0.104330 0.873093 0.476260 +vn -0.110333 0.923713 -0.366853 +vn -0.853073 0.483314 0.196661 +vn -0.110333 0.923713 -0.366853 +vn -0.117164 0.980887 0.155346 +vn -0.117200 0.980883 0.155346 +vn -0.117164 0.980887 0.155346 +vn -0.113015 0.940524 0.320379 +vn -0.112483 0.941700 0.317094 +vn -0.094654 0.792445 -0.602554 +vn -0.104253 0.873094 0.476274 +vn -0.094655 0.792445 -0.602554 +vn -0.104321 0.873094 0.476260 +vn -0.104285 0.873091 0.476274 +vn -0.106104 0.872633 0.476711 +vn -0.117132 0.980890 0.155356 +vn -0.104298 0.873089 0.476274 +vn -0.104285 0.873091 0.476274 +vn -0.110376 0.923691 -0.366895 +vn -0.082687 0.692262 0.716894 +vn -0.110275 0.923720 -0.366853 +vn -0.082687 0.692262 0.716894 +vn -0.082644 0.692267 0.716894 +vn -0.112493 0.941742 0.316966 +vn -0.082644 0.692267 0.716894 +vn -0.094619 0.792449 -0.602554 +vn -0.066370 0.555648 0.828764 +vn -0.095673 0.792204 -0.602711 +vn -0.066370 0.555648 0.828764 +vn 0.340026 0.622851 -0.704584 +vn 0.463810 0.849618 -0.251057 +vn 0.463810 0.849618 -0.251057 +vn 0.463810 0.849618 0.251058 +vn 0.463810 0.849618 0.251058 +vn 0.341426 0.622065 -0.704602 +vn 0.123487 0.229418 -0.965463 +vn 0.121904 0.223305 -0.967096 +vn 0.121896 0.223286 0.967101 +vn 0.340016 0.622832 0.704606 +vn 0.340019 0.622855 0.704584 +vn 0.340026 0.622851 -0.704584 +vn 0.341425 0.622063 -0.704604 +vn 0.340010 0.622837 -0.704604 +vn 0.463048 0.848225 -0.257101 +vn 0.463819 0.849612 -0.251062 +vn 0.463820 0.849612 -0.251057 +vn 0.462436 0.850365 -0.251062 +vn 0.461709 0.848955 0.257101 +vn 0.463808 0.849617 0.251063 +vn 0.463819 0.849613 0.251058 +vn 0.463820 0.849611 0.251063 +vn 0.123486 0.229416 0.965464 +vn 0.341428 0.622066 0.704600 +vn 0.121904 0.223305 0.967096 +vn 0.340019 0.622855 0.704584 +vn 0.341425 0.622063 0.704604 +vn 0.340016 0.622833 0.704605 +vn 0.126192 0.227942 -0.965463 +vn 0.338602 0.623607 -0.704602 +vn 0.338599 0.623604 -0.704605 +vn 0.463049 0.848224 -0.257103 +vn 0.465198 0.848872 -0.251012 +vn 0.464399 0.847485 0.257104 +vn 0.463815 0.849628 0.251013 +vn 0.121903 0.223303 -0.967096 +vn 0.121898 0.223295 -0.967099 +vn 0.126190 0.227940 0.965464 +vn 0.338601 0.623609 0.704600 +vn 0.338600 0.623604 0.704605 +vn 0.340009 0.622836 -0.704606 +vn 0.340009 0.622836 -0.704606 +vn 0.463825 0.849623 -0.251012 +vn 0.463810 0.849618 -0.251057 +vn 0.463815 0.849628 0.251013 +vn 0.463820 0.849612 0.251058 +vn 0.121896 0.223286 -0.967101 +vn 0.121903 0.223303 0.967096 +vn 0.121898 0.223295 0.967099 +vn 0.340009 0.622836 0.704606 +vn 0.340009 0.622836 0.704606 +vn 0.340009 0.622836 -0.704606 +vn 0.340020 -0.622856 -0.704583 +vn 0.340016 -0.622833 -0.704605 +vn 0.463810 -0.849618 -0.251058 +vn 0.463810 -0.849618 -0.251057 +vn 0.463810 -0.849618 0.251058 +vn 0.463810 -0.849617 0.251059 +vn 0.126191 -0.227941 -0.965463 +vn 0.121898 -0.223295 -0.967099 +vn 0.121903 -0.223303 0.967096 +vn 0.121895 -0.223283 0.967102 +vn 0.340027 -0.622852 0.704583 +vn 0.340009 -0.622836 0.704605 +vn 0.338602 -0.623607 -0.704601 +vn 0.340009 -0.622837 -0.704605 +vn 0.338599 -0.623605 -0.704604 +vn 0.340009 -0.622837 -0.704605 +vn 0.463049 -0.848224 -0.257103 +vn 0.463815 -0.849628 -0.251013 +vn 0.463820 -0.849612 -0.251059 +vn 0.465198 -0.848872 -0.251013 +vn 0.464399 -0.847485 0.257104 +vn 0.463815 -0.849628 0.251014 +vn 0.463810 -0.849617 0.251059 +vn 0.463825 -0.849622 0.251014 +vn 0.126189 -0.227939 0.965464 +vn 0.338601 -0.623610 0.704599 +vn 0.121898 -0.223295 0.967099 +vn 0.340009 -0.622837 0.704605 +vn 0.338600 -0.623605 0.704604 +vn 0.340009 -0.622837 0.704605 +vn 0.123487 -0.229418 -0.965463 +vn 0.341426 -0.622066 -0.704601 +vn 0.341425 -0.622062 -0.704605 +vn 0.463049 -0.848224 -0.257103 +vn 0.462436 -0.850367 -0.251057 +vn 0.461707 -0.848955 0.257104 +vn 0.463810 -0.849618 0.251058 +vn 0.121904 -0.223306 -0.967096 +vn 0.123486 -0.229415 0.965464 +vn 0.341428 -0.622066 0.704599 +vn 0.341424 -0.622063 0.704605 +vn 0.340019 -0.622856 -0.704583 +vn 0.340016 -0.622832 -0.704606 +vn 0.463820 -0.849613 -0.251057 +vn 0.463820 -0.849613 -0.251057 +vn 0.463820 -0.849612 0.251058 +vn 0.463820 -0.849612 0.251058 +vn 0.121903 -0.223303 -0.967096 +vn 0.121895 -0.223283 -0.967102 +vn 0.121904 -0.223306 0.967096 +vn 0.340009 -0.622836 0.704606 +vn 0.340027 -0.622852 0.704583 +vn -0.108324 -0.906640 -0.407762 +vn -0.108324 -0.906640 -0.407762 +vn -0.108292 -0.906644 -0.407762 +vn -0.108258 -0.906642 -0.407776 +vn -0.115760 -0.969277 0.217028 +vn -0.116951 -0.979244 -0.165538 +vn -0.120523 -0.978864 -0.165228 +vn -0.063275 -0.964398 -0.256774 +vn -0.106347 -0.906874 -0.407761 +vn -0.108338 -0.906638 -0.407762 +vn -0.108289 -0.906638 -0.407776 +vn -0.117007 -0.979290 -0.165229 +vn -0.116961 -0.979294 -0.165240 +vn -0.116964 -0.979293 -0.165240 +vn -0.116964 -0.979293 -0.165240 +vn -0.117004 -0.979290 -0.165229 +vn -0.116954 -0.979294 -0.165240 +vn -0.116970 -0.979294 -0.165231 +vn -0.116979 -0.979293 -0.165229 +vn -0.116967 -0.979294 -0.165231 +vn -0.116973 -0.979294 -0.165231 +vn -0.116967 -0.979294 -0.165231 +vn -0.116042 -0.969243 0.217028 +vn -0.115811 -0.969281 0.216986 +vn -0.306364 -0.689195 0.656621 +vn -0.105861 -0.883949 0.455443 +vn -0.115769 -0.969286 0.216986 +vn -0.115769 -0.969286 0.216986 +vn -0.016727 -0.139917 -0.990022 +vn -0.016713 -0.139919 -0.990022 +vn -0.105581 -0.883982 0.455443 +vn 0.024644 -0.264921 -0.963955 +vn -0.105581 -0.883982 0.455443 +vn -0.124583 -0.365625 -0.922387 +vn -0.092177 -0.771763 0.629195 +vn -0.115769 -0.969286 0.216986 +vn -0.115759 -0.969287 0.216984 +vn -0.105616 -0.883978 0.455443 +vn -0.062499 -0.506835 -0.859774 +vn -0.105583 -0.883999 0.455409 +vn -0.046054 -0.385223 -0.921674 +vn -0.046011 -0.385223 -0.921676 +vn -0.115784 -0.969284 0.216986 +vn -0.043510 -0.385525 -0.921671 +vn -0.060564 -0.507067 -0.859776 +vn -0.115774 -0.969285 0.216984 +vn -0.060886 -0.507029 -0.859776 +vn -0.060564 -0.507067 -0.859776 +vn -0.115771 -0.969285 0.216986 +vn -0.081807 -0.665256 -0.742120 +vn -0.115778 -0.969285 0.216986 +vn -0.084983 -0.962667 0.257003 +vn -0.115771 -0.969285 0.216986 +vn -0.347805 -0.770911 -0.533600 +vn -0.105555 -0.884003 0.455409 +vn -0.105585 -0.883982 0.455443 +vn -0.104730 -0.884101 0.455409 +vn -0.079527 -0.665906 -0.741785 +vn -0.105585 -0.883999 0.455409 +vn -0.105630 -0.883976 0.455443 +vn -0.092772 -0.771691 0.629195 +vn -0.098914 -0.828167 -0.551685 +vn -0.092218 -0.771837 0.629098 +vn -0.101353 -0.828641 -0.550529 +vn -0.111791 -0.905534 -0.409280 +vn -0.092198 -0.771839 0.629098 +vn -0.092163 -0.771849 0.629091 +vn -0.081482 -0.666001 -0.741488 +vn -0.079544 -0.665904 -0.741785 +vn -0.032565 -0.709801 0.703649 +vn -0.092230 -0.771836 0.629096 +vn -0.092189 -0.771846 0.629091 +vn -0.040937 -0.709086 -0.703933 +vn -0.079574 -0.666230 -0.741489 +vn -0.095603 -0.771429 0.629093 +vn -0.268331 -0.386152 0.882545 +vn -0.079574 -0.666230 -0.741489 +vn -0.069150 -0.573294 0.816427 +vn -0.069819 -0.667363 -0.741453 +vn -0.068517 -0.573589 0.816273 +vn -0.070475 -0.573354 0.816271 +vn -0.098995 -0.828913 -0.550548 +vn -0.068509 -0.573590 0.816273 +vn -0.099038 -0.828919 -0.550531 +vn -0.068509 -0.573590 0.816273 +vn -0.021566 -0.180546 0.983330 +vn -0.021592 -0.180543 0.983330 +vn 0.016541 -0.264061 0.964364 +vn -0.050519 -0.422750 0.904837 +vn -0.048842 -0.422958 0.904832 +vn -0.050494 -0.422761 0.904833 +vn -0.108284 -0.906645 -0.407762 +vn -0.098977 -0.828915 -0.550548 +vn -0.099017 -0.828922 -0.550531 +vn -0.108287 -0.906644 -0.407762 +vn -0.108287 -0.906644 -0.407762 +vn -0.100425 -0.828744 -0.550544 +vn -0.099005 -0.828914 -0.550545 +vn -0.099051 -0.828918 -0.550531 +vn -0.115487 0.959453 0.257123 +vn -0.025263 0.212133 -0.976914 +vn -0.025333 0.212088 -0.976922 +vn -0.031632 0.258608 -0.965464 +vn 0.003990 0.614424 -0.788966 +vn -0.053864 0.451577 -0.890604 +vn -0.053959 0.451566 -0.890604 +vn -0.085316 0.704462 -0.704595 +vn -0.074689 0.625919 -0.776304 +vn -0.074249 0.625971 -0.776303 +vn 0.242118 0.886990 -0.393227 +vn -0.096325 0.811370 -0.576542 +vn -0.096860 0.811306 -0.576542 +vn -0.115807 0.959415 -0.257122 +vn -0.109168 0.913535 -0.391836 +vn -0.101487 0.914426 -0.391824 +vn 0.925166 0.379187 0.016876 +vn -0.117293 0.981992 -0.148103 +vn -0.118363 0.990947 0.063350 +vn -0.109710 0.982868 -0.148099 +vn 0.032129 0.951297 0.306596 +vn -0.112854 0.944061 0.309859 +vn -0.098894 0.857402 0.505057 +vn -0.102356 0.856994 0.505059 +vn -0.084645 0.721448 0.687276 +vn -0.084781 0.704528 0.704594 +vn -0.082726 0.721466 0.687490 +vn -0.086370 0.721035 0.687494 +vn -0.017818 0.149177 0.988650 +vn -0.051268 0.435506 0.898725 +vn -0.017144 0.149789 0.988569 +vn -0.032099 0.258549 0.965465 +vn -0.050430 0.435210 0.898916 +vn -0.051647 0.435065 0.898917 +vn -0.115487 -0.959454 -0.257120 +vn -0.032099 -0.258552 -0.965464 +vn -0.017844 -0.149391 -0.988617 +vn -0.051421 -0.436042 -0.898456 +vn -0.017247 -0.149933 -0.988546 +vn -0.084785 -0.704526 -0.704596 +vn -0.084763 -0.721960 -0.686723 +vn -0.051708 -0.435595 -0.898657 +vn -0.050544 -0.435733 -0.898656 +vn -0.082856 -0.721980 -0.686935 +vn -0.086426 -0.721557 -0.686939 +vn 0.029758 -0.951359 -0.306643 +vn -0.098971 -0.857538 -0.504809 +vn -0.112857 -0.944083 -0.309791 +vn -0.102374 -0.857137 -0.504813 +vn -0.115807 -0.959415 0.257121 +vn -0.109612 -0.990234 0.086147 +vn -0.117495 -0.989330 0.086149 +vn 0.242228 -0.887129 0.392847 +vn -0.100438 -0.914631 0.391616 +vn -0.109178 -0.913622 0.391631 +vn -0.085316 -0.704463 0.704594 +vn -0.096876 -0.811434 0.576359 +vn -0.096081 -0.811529 0.576359 +vn 0.003507 -0.614802 0.788674 +vn -0.074710 -0.626097 0.776158 +vn -0.073980 -0.626184 0.776158 +vn -0.025371 -0.212409 0.976851 +vn -0.031628 -0.258606 0.965465 +vn -0.025252 -0.212486 0.976838 +vn -0.053995 -0.451867 0.890450 +vn -0.053846 -0.451885 0.890450 +vn -0.994503 0.009859 0.104240 +vn -0.980340 0.002797 0.197295 +vn -0.850135 -0.000140 0.526565 +vn -0.803095 -0.001934 -0.595848 +vn -0.770607 -0.008579 0.637253 +vn -0.843359 0.002883 0.537342 +vn -0.842092 -0.004349 -0.539317 +vn -0.785558 0.007390 0.618743 +vn -0.824092 0.000095 0.566456 +vn -0.758707 0.000000 -0.651432 +vn -0.810716 0.000000 0.585439 +vn -0.686693 0.000000 0.726947 +vn -0.758707 -0.000000 -0.651432 +vn -0.824016 -0.000095 -0.566567 +vn -0.810731 0.000000 -0.585419 +vn -0.686693 0.000000 0.726947 +vn -0.770607 0.008579 0.637253 +vn -0.289086 0.000000 0.957303 +vn -0.289086 0.000000 0.957303 +vn -0.894397 0.000458 0.447273 +vn -0.970170 0.000445 0.242423 +vn -0.999966 0.000218 0.008207 +vn -0.976127 0.000207 -0.217200 +vn -0.911851 -0.005052 -0.410491 +vn -0.914140 0.000302 -0.405399 +vn -0.957361 -0.000298 -0.288894 +vn -0.998670 0.000317 -0.051565 +vn -0.913738 -0.001051 0.406302 +vn -0.894349 -0.000459 -0.447369 +vn -0.885972 -0.009308 -0.463646 +vn -0.970123 -0.000449 -0.242614 +vn -0.999967 -0.000219 -0.008137 +vn -0.976113 -0.000205 0.217261 +vn -0.914034 -0.000299 0.405637 +vn -0.880832 -0.000220 0.473429 +vn -0.957422 0.000283 0.288692 +vn -0.814136 0.002443 -0.580670 +vn -0.980677 0.001774 -0.195624 +vn -0.850165 0.000141 -0.526516 +vn -0.876770 0.007467 -0.480853 +vn -0.998645 -0.004855 0.051816 +vn -0.885974 0.009071 -0.463647 +vn -0.994509 -0.009302 0.104241 +vn -0.807439 -0.005575 0.589925 +vn 0.258815 -0.000684 0.965927 +vn 0.267266 0.000000 0.963623 +vn 0.541189 0.000100 0.840901 +vn 0.531377 -0.000000 0.847135 +vn 0.267266 0.000000 0.963623 +vn 0.586906 0.000087 0.809655 +vn 0.554151 -0.000078 0.832416 +vn 0.707108 0.005194 0.707087 +vn 0.556832 -0.000147 0.830625 +vn 0.258815 0.000684 0.965927 +vn 0.681882 -0.002989 0.731456 +vn 0.965912 0.005533 0.258810 +vn 0.707109 -0.004871 0.707088 +vn 0.989809 0.000000 0.142402 +vn 0.984686 -0.000476 0.174337 +vn 0.965917 -0.004508 0.258812 +vn 0.627701 0.001379 0.778453 +vn 0.773529 0.000705 0.633760 +vn 0.913183 -0.000619 0.407549 +vn 0.987624 -0.000000 0.156839 +vn 0.897444 0.000375 0.441127 +vn 0.733928 0.000577 0.679227 +vn 0.698811 -0.000387 0.715306 +vn 0.875847 -0.000594 0.482588 +vn 0.982422 -0.000000 0.186673 +vn 0.857903 0.002181 0.513807 +vn -0.258815 0.000000 -0.965927 +vn -0.258815 -0.000000 -0.965927 +vn -0.707117 0.000000 -0.707096 +vn -0.707117 -0.000000 -0.707096 +vn -0.965927 0.000000 -0.258815 +vn -0.965927 -0.000000 -0.258815 +vn 0.965927 0.000000 -0.258815 +vn 0.965927 0.000000 -0.258815 +vn 0.707105 0.000000 -0.707109 +vn 0.707105 0.000000 -0.707109 +vn 0.258818 0.000000 -0.965926 +vn 0.258818 0.000000 -0.965926 +vn -0.965927 0.000000 0.258815 +vn -0.965927 0.000000 0.258815 +vn -0.707105 0.000000 0.707109 +vn -0.707105 0.000000 0.707109 +vn -0.258818 0.000000 0.965926 +vn -0.258818 0.000000 0.965926 +vn 0.965927 0.000000 -0.258814 +vn 0.965927 0.000000 -0.258814 +vn 0.707075 0.000000 -0.707139 +vn 0.707075 0.000000 -0.707139 +vn 0.258845 0.000000 -0.965919 +vn 0.258845 0.000000 -0.965919 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.113513 0.959692 0.257112 +vn 0.018968 0.158802 0.987128 +vn 0.054864 0.457375 0.887580 +vn 0.019237 0.159094 0.987076 +vn 0.029723 0.258833 0.965465 +vn 0.087356 0.725539 0.682614 +vn 0.083354 0.704698 0.704594 +vn 0.054996 0.457030 0.887749 +vn 0.055285 0.456996 0.887749 +vn 0.088877 0.725066 0.682921 +vn 0.086279 0.725378 0.682922 +vn 0.231551 0.913745 0.333848 +vn 0.104104 0.852270 0.512639 +vn 0.101843 0.852542 0.512640 +vn 0.111614 0.935104 0.336337 +vn 0.189467 0.981802 -0.012954 +vn 0.113436 0.959701 -0.257111 +vn 0.119276 0.992776 -0.012984 +vn 0.324439 0.881391 -0.343350 +vn 0.111029 0.930151 -0.349987 +vn 0.182500 0.919152 -0.349074 +vn 0.083309 0.704702 -0.704596 +vn 0.101415 0.834483 -0.541621 +vn 0.099726 0.834686 -0.541622 +vn 0.102647 0.649646 -0.753275 +vn 0.078679 0.657921 -0.748966 +vn 0.080253 0.657732 -0.748965 +vn 0.028372 0.235747 -0.971400 +vn 0.028139 0.235579 -0.971448 +vn 0.030491 0.258745 -0.965464 +vn 0.056697 0.472830 -0.879328 +vn 0.056469 0.472858 -0.879328 +vn 0.113513 -0.959692 -0.257111 +vn 0.028161 -0.235763 0.971403 +vn 0.030494 -0.258741 0.965465 +vn 0.028418 -0.235948 0.971350 +vn 0.102447 -0.649896 0.753087 +vn 0.056739 -0.473010 0.879228 +vn 0.056491 -0.473040 0.879228 +vn 0.083311 -0.704703 0.704594 +vn 0.078696 -0.658063 0.748840 +vn 0.080340 -0.657865 0.748838 +vn 0.324094 -0.881537 0.343300 +vn 0.099736 -0.834775 0.541482 +vn 0.101493 -0.834564 0.541481 +vn 0.113437 -0.959701 0.257112 +vn 0.111032 -0.930174 0.349926 +vn 0.183439 -0.918998 0.348988 +vn 0.999647 0.025158 -0.008579 +vn 0.190789 -0.976200 0.103118 +vn 0.117966 -0.987619 0.103402 +vn 0.118106 -0.988792 -0.091336 +vn 0.230836 -0.913941 -0.333805 +vn 0.111617 -0.935127 -0.336272 +vn 0.101855 -0.852651 -0.512456 +vn 0.104099 -0.852381 -0.512455 +vn 0.083351 -0.704697 -0.704596 +vn 0.087364 -0.725801 -0.682334 +vn 0.088889 -0.725328 -0.682641 +vn 0.086313 -0.725637 -0.682643 +vn 0.029724 -0.258836 -0.965464 +vn 0.018983 -0.158924 -0.987108 +vn 0.054884 -0.457648 -0.887438 +vn 0.019237 -0.159199 -0.987059 +vn 0.055298 -0.457276 -0.887604 +vn 0.055030 -0.457308 -0.887604 +vn 0.106307 0.890062 0.443270 +vn 0.106313 0.890058 0.443277 +vn 0.116117 0.972119 0.203719 +vn 0.116103 0.972122 0.203714 +vn 0.151419 0.954491 0.256941 +vn 0.107451 0.889925 0.443270 +vn 0.106297 0.890063 0.443270 +vn 0.106308 0.890059 0.443277 +vn 0.116103 0.972121 0.203719 +vn 0.116103 0.972121 0.203719 +vn 0.116318 0.976282 -0.182601 +vn 0.116115 0.972119 0.203719 +vn 0.116115 0.972119 0.203719 +vn 0.116596 0.976249 -0.182601 +vn 0.116596 0.976249 -0.182601 +vn 0.116108 0.972120 0.203719 +vn 0.116108 0.972120 0.203719 +vn 0.116596 0.976249 -0.182601 +vn 0.116596 0.976249 -0.182601 +vn 0.116155 0.972115 0.203719 +vn 0.116110 0.972121 0.203712 +vn 0.116109 0.972121 0.203712 +vn 0.107411 0.899345 -0.423841 +vn -0.046437 0.821701 -0.568025 +vn 0.107114 0.899250 -0.424117 +vn 0.107411 0.899343 -0.423845 +vn 0.107427 0.899343 -0.423841 +vn 0.020650 0.172066 0.984869 +vn 0.116608 0.976248 -0.182599 +vn 0.116604 0.976248 -0.182601 +vn -0.301766 0.339556 0.890864 +vn 0.095353 0.813312 -0.573961 +vn 0.097153 0.813333 -0.573629 +vn 0.020552 0.172059 0.984872 +vn 0.080879 0.252392 0.964239 +vn 0.020551 0.172059 0.984872 +vn 0.116608 0.976248 -0.182599 +vn 0.049580 0.414993 0.908473 +vn 0.116601 0.976249 -0.182601 +vn 0.049658 0.414954 0.908486 +vn 0.107419 0.899342 -0.423845 +vn 0.107419 0.899342 -0.423845 +vn 0.051396 0.414743 0.908486 +vn 0.049563 0.414963 0.908487 +vn 0.049558 0.414965 0.908487 +vn 0.116648 0.976243 -0.182601 +vn -0.041358 0.786155 0.616644 +vn 0.160478 0.953037 -0.256842 +vn 0.116603 0.976248 -0.182601 +vn 0.116648 0.976243 -0.182601 +vn 0.071513 0.598778 0.797716 +vn 0.107422 0.899342 -0.423845 +vn 0.107422 0.899342 -0.423845 +vn 0.109006 0.899162 -0.423822 +vn 0.107460 0.899348 -0.423823 +vn 0.107405 0.899344 -0.423845 +vn 0.094488 0.791022 0.604447 +vn 0.097149 0.813334 -0.573629 +vn 0.106316 0.890061 0.443270 +vn 0.097146 0.813332 -0.573632 +vn 0.097143 0.813333 -0.573632 +vn 0.071536 0.598768 0.797721 +vn 0.097149 0.813334 -0.573629 +vn 0.071517 0.598777 0.797716 +vn 0.135922 0.697439 -0.703636 +vn 0.106318 0.890057 0.443277 +vn 0.095157 0.813568 -0.573630 +vn 0.097134 0.813334 -0.573632 +vn 0.097144 0.813334 -0.573629 +vn 0.106303 0.890063 0.443270 +vn -0.198885 0.465633 -0.862340 +vn 0.139590 0.696859 0.703493 +vn 0.068914 0.599081 0.797717 +vn 0.073225 0.627951 -0.774800 +vn 0.071509 0.598773 0.797720 +vn 0.075091 0.628666 -0.774042 +vn 0.071516 0.598770 0.797721 +vn 0.075108 0.628664 -0.774042 +vn 0.094499 0.791011 0.604460 +vn 0.075086 0.628661 -0.774046 +vn 0.094481 0.791023 0.604447 +vn 0.071706 0.629062 -0.774041 +vn 0.116629 0.976243 -0.182614 +vn 0.075087 0.628662 -0.774045 +vn 0.116136 0.972118 0.203714 +vn 0.075079 0.628662 -0.774046 +vn 0.037709 0.315853 -0.948059 +vn 0.053763 0.450262 -0.891276 +vn 0.053798 0.450295 -0.891258 +vn 0.106313 0.890058 0.443277 +vn 0.106310 0.890062 0.443270 +vn 0.054806 0.450156 -0.891266 +vn 0.053775 0.450279 -0.891267 +vn 0.053804 0.450294 -0.891258 +vn 0.094477 0.791015 0.604458 +vn 0.085120 0.251830 -0.964021 +vn 0.013024 0.109037 -0.993952 +vn 0.094483 0.791013 0.604460 +vn 0.012997 0.109041 -0.993952 +vn 0.037698 0.315854 -0.948059 +vn 0.062346 0.312827 -0.947762 +vn 0.037741 0.315862 -0.948054 +vn 0.091709 0.791341 0.604457 +vn 0.094468 0.791016 0.604458 +vn 0.094478 0.791014 0.604460 +vn 0.007260 0.711651 -0.702496 +vn -0.134657 0.698644 -0.702683 +vn 0.007629 0.711234 -0.702914 +vn -0.134656 0.698646 -0.702681 +vn 0.096398 -0.244051 -0.964959 +vn -0.373438 0.891681 -0.255830 +vn 0.098846 -0.235783 -0.966766 +vn 0.004229 0.261788 -0.965116 +vn -0.004229 -0.261788 -0.965116 +vn -0.048395 0.251071 -0.966758 +vn 0.008286 0.255964 -0.966651 +vn -0.048392 0.251075 -0.966757 +vn 0.280996 -0.653273 -0.703047 +vn 0.280433 -0.654207 -0.702404 +vn 0.048394 -0.251071 -0.966758 +vn 0.001484 -0.255179 -0.966893 +vn 0.048394 -0.251070 -0.966758 +vn 0.373773 -0.891538 -0.255839 +vn 0.015259 0.966599 -0.255838 +vn 0.368490 -0.895397 -0.249958 +vn -0.009396 -0.966715 -0.255683 +vn -0.018047 -0.710918 -0.703043 +vn -0.017198 -0.711560 -0.702415 +vn 0.134655 -0.698654 -0.702674 +vn 0.134663 -0.698645 -0.702681 +vn 0.368044 -0.893965 0.255676 +vn 0.374382 -0.892992 0.249805 +vn -0.015614 -0.966591 0.255848 +vn 0.183259 -0.950802 -0.249782 +vn -0.015639 -0.968167 -0.249815 +vn 0.183253 -0.950805 -0.249776 +vn 0.280190 -0.653667 0.703003 +vn 0.281239 -0.653912 0.702356 +vn 0.183260 -0.950804 0.249776 +vn 0.183253 -0.950803 0.249783 +vn -0.009278 -0.968210 0.249968 +vn 0.101226 -0.241460 0.965117 +vn 0.093466 -0.237448 0.966893 +vn 0.134653 -0.698647 0.702681 +vn -0.017174 -0.710982 0.703000 +vn -0.018035 -0.711585 0.702368 +vn 0.134664 -0.698652 0.702675 +vn -0.098846 0.235783 0.966766 +vn -0.104824 0.239527 0.965214 +vn 0.004229 0.261785 0.965117 +vn 0.048393 -0.251070 0.966759 +vn -0.004229 -0.261785 0.965117 +vn 0.048395 -0.251071 0.966758 +vn 0.001481 -0.255179 0.966893 +vn -0.271597 0.657800 0.702519 +vn -0.271088 0.657563 0.702939 +vn -0.377913 0.891708 0.249075 +vn 0.007258 0.711653 0.702494 +vn 0.008284 0.255963 0.966651 +vn -0.048395 0.251075 0.966757 +vn -0.048392 0.251072 0.966758 +vn 0.019272 0.966501 0.255939 +vn -0.183230 0.950646 0.250398 +vn 0.015287 0.968327 0.249217 +vn 0.007629 0.711234 0.702914 +vn -0.134655 0.698645 0.702683 +vn -0.134658 0.698646 0.702681 +vn -0.183226 0.950649 0.250391 +vn -0.373438 0.891681 0.255831 +vn -0.271597 0.657799 -0.702521 +vn -0.377913 0.891708 -0.249074 +vn -0.104827 0.239528 -0.965214 +vn -0.271089 0.657562 -0.702939 +vn -0.183230 0.950646 -0.250397 +vn 0.019401 0.968287 -0.249087 +vn -0.183226 0.950649 -0.250390 +vn -0.098846 0.235783 -0.966766 +vn -0.463826 0.849622 0.251013 +vn -0.463810 0.849617 0.251059 +vn -0.463820 0.849612 -0.251058 +vn -0.463815 0.849628 -0.251012 +vn -0.341427 0.622066 0.704600 +vn -0.123486 0.229416 0.965464 +vn -0.121904 0.223306 0.967096 +vn -0.121895 0.223283 -0.967102 +vn -0.340016 0.622833 -0.704605 +vn -0.340016 0.622832 -0.704606 +vn -0.461708 0.848954 0.257104 +vn -0.340008 0.622836 0.704606 +vn -0.341424 0.622063 0.704604 +vn -0.340009 0.622837 0.704605 +vn -0.463826 0.849622 0.251013 +vn -0.463809 0.849617 0.251061 +vn -0.463809 0.849617 0.251061 +vn -0.461708 0.848955 -0.257103 +vn -0.463815 0.849628 -0.251012 +vn -0.463809 0.849617 -0.251060 +vn -0.463820 0.849612 -0.251060 +vn -0.123487 0.229418 -0.965463 +vn -0.341426 0.622065 -0.704602 +vn -0.121904 0.223306 -0.967096 +vn -0.340009 0.622836 -0.704606 +vn -0.341424 0.622063 -0.704604 +vn -0.340009 0.622837 -0.704605 +vn -0.126189 0.227939 0.965464 +vn -0.338603 0.623609 0.704599 +vn -0.338599 0.623605 0.704604 +vn -0.463059 0.848218 -0.257105 +vn -0.463058 0.848218 0.257105 +vn -0.465192 0.848861 0.251059 +vn -0.338603 0.623608 -0.704600 +vn -0.465192 0.848861 -0.251058 +vn -0.121903 0.223303 0.967096 +vn -0.121898 0.223295 0.967099 +vn -0.126191 0.227941 -0.965463 +vn -0.338599 0.623605 -0.704604 +vn -0.340009 0.622837 0.704605 +vn -0.340009 0.622837 0.704605 +vn -0.463810 0.849617 0.251059 +vn -0.463810 0.849617 0.251059 +vn -0.463810 0.849618 -0.251058 +vn -0.463810 0.849618 -0.251058 +vn -0.121895 0.223283 0.967102 +vn -0.121903 0.223303 -0.967096 +vn -0.340009 0.622837 -0.704605 +vn -0.121898 0.223295 -0.967099 +vn -0.340009 0.622837 -0.704605 +vn -0.340016 0.622833 0.704605 +vn -0.340016 0.622832 0.704606 +vn 0.367765 0.403999 -0.837576 +vn 0.241000 -0.907108 0.345072 +vn -0.224140 -0.911826 0.343997 +vn 0.233058 0.948158 -0.216055 +vn -0.243731 0.943535 -0.224359 +vn -0.224136 -0.911838 0.343968 +vn -0.211376 0.945487 -0.247740 +vn 0.233084 0.948156 -0.216035 +vn -0.289792 -0.319040 0.902349 +vn 0.212883 0.866069 -0.452333 +vn 0.208789 -0.685887 0.697112 +vn 0.212922 0.866138 -0.452182 +vn -0.197897 -0.805075 0.559188 +vn -0.226428 0.861788 -0.453930 +vn -0.197896 -0.805089 0.559167 +vn 0.210350 -0.800782 0.560804 +vn -0.103277 -0.073503 0.991933 +vn 0.220453 0.237426 -0.946060 +vn -0.125263 -0.132692 0.983210 +vn -0.091160 -0.055957 -0.994263 +vn 0.042989 0.048519 -0.997897 +vn -0.150281 0.708784 -0.689232 +vn 0.036691 0.041260 0.998475 +vn -0.199281 0.728036 -0.655935 +vn 0.180306 0.733536 -0.655298 +vn -0.154513 -0.628584 0.762238 +vn 0.180316 0.733539 -0.655291 +vn -0.154514 -0.628578 0.762244 +vn 0.162789 -0.624613 0.763779 +vn 0.130836 0.532253 -0.836414 +vn 0.130830 0.532239 -0.836424 +vn -0.140480 0.528423 -0.837278 +vn 0.096560 -0.243961 0.964966 +vn 0.111100 -0.416912 0.902131 +vn -0.103282 -0.420160 0.901553 +vn -0.103281 -0.420153 0.901557 +vn -0.118324 -0.125266 -0.985042 +vn -0.400905 -0.401808 -0.823301 +vn 0.225881 0.293277 0.928960 +vn 0.214140 0.230806 0.949143 +vn -0.283423 -0.312320 -0.906713 +vn -0.037929 0.274686 -0.960786 +vn 0.077471 0.315166 -0.945869 +vn 0.077471 0.315166 -0.945869 +vn 0.361923 0.397456 0.843233 +vn -0.077976 0.312846 -0.946598 +vn -0.043548 -0.177166 0.983217 +vn 0.015592 0.063434 -0.997864 +vn 0.046376 -0.175715 0.983348 +vn 0.015593 0.063436 -0.997864 +vn -0.043549 -0.177159 0.983218 +vn -0.016604 0.062910 -0.997881 +vn -0.041559 0.272818 0.961168 +vn 0.013276 0.054008 0.998452 +vn 0.013276 0.054010 0.998452 +vn -0.429746 -0.471083 -0.770324 +vn -0.014137 0.053563 0.998464 +vn 0.501611 0.571706 0.649260 +vn 0.507163 0.549368 0.664064 +vn 0.098354 -0.243004 -0.965026 +vn -0.041118 -0.167279 -0.985052 +vn -0.041121 -0.167284 -0.985051 +vn 0.652636 0.722200 0.229115 +vn 0.043789 -0.165914 -0.985168 +vn 0.649878 0.723941 0.231447 +vn 0.599770 0.656035 0.458142 +vn -0.614615 -0.638168 -0.463671 +vn 0.075292 0.306300 0.948953 +vn 0.075292 0.306300 0.948953 +vn -0.554634 -0.606918 -0.569238 +vn 0.108871 -0.407991 -0.906472 +vn -0.075443 0.304045 0.949666 +vn -0.101078 -0.411189 -0.905929 +vn -0.157272 0.706212 0.690312 +vn 0.128724 0.523660 0.842146 +vn -0.137984 0.519859 0.843034 +vn -0.101075 -0.411184 -0.905931 +vn 0.128726 0.523680 0.842134 +vn 0.178682 0.726928 0.663060 +vn -0.629584 -0.691567 -0.354061 +vn -0.197868 0.721410 0.663638 +vn 0.178689 0.726920 0.663067 +vn -0.152589 -0.620745 -0.769020 +vn -0.216686 0.944186 0.248114 +vn 0.232798 0.947101 0.220919 +vn -0.243455 0.942465 0.229104 +vn 0.209954 -0.685398 -0.697244 +vn 0.232800 0.947101 0.220918 +vn 0.160856 -0.616801 -0.770508 +vn 0.212347 0.863894 0.456723 +vn -0.152588 -0.620744 -0.769021 +vn -0.226015 0.859603 0.458257 +vn 0.212347 0.863887 0.456737 +vn -0.671032 -0.732581 -0.114199 +vn -0.690588 -0.723184 -0.009662 +vn -0.196521 -0.799467 -0.567655 +vn -0.196510 -0.799448 -0.567686 +vn 0.208753 -0.795147 -0.569353 +vn -0.671597 -0.733454 0.104899 +vn -0.223355 -0.908662 -0.352768 +vn -0.223362 -0.908669 -0.352746 +vn 0.240066 -0.903948 -0.353900 +vn 0.272094 -0.928801 -0.251581 +vn -0.620284 -0.645029 0.446301 +vn -0.631741 -0.694031 0.345288 +vn -0.237153 -0.964791 -0.113741 +vn -0.237158 -0.964792 -0.113718 +vn 0.253524 -0.960568 -0.114173 +vn 0.650552 0.724805 -0.226802 +vn 0.653377 0.723020 -0.224366 +vn -0.558600 -0.611168 0.560749 +vn 0.504738 0.582313 -0.637300 +vn 0.253784 -0.961553 0.104924 +vn 0.271560 -0.928966 0.251552 +vn 0.601375 0.657568 -0.453821 +vn -0.237396 -0.965780 0.104459 +vn -0.237401 -0.965775 0.104496 +vn -0.410948 -0.415392 0.811524 +vn 0.511374 0.554705 -0.656353 +vn -0.435045 -0.477152 0.763585 +vn 0.235580 0.311144 -0.920702 +vn -0.098001 0.041003 -0.994341 +vn -0.125816 0.000000 0.992054 +vn -0.116125 -0.048710 0.992040 +vn 0.332114 0.137179 0.933211 +vn 0.323515 0.134371 0.936634 +vn 0.350250 0.000000 0.936656 +vn -0.524362 0.217092 -0.823356 +vn 0.350250 -0.000000 0.936656 +vn -0.519302 0.214470 -0.827241 +vn 0.898403 0.371563 0.234123 +vn 0.697896 0.289660 0.655010 +vn 0.973761 0.000000 0.227571 +vn 0.899643 0.372631 0.227570 +vn 0.757073 0.000000 0.653330 +vn 0.973761 -0.000000 0.227571 +vn -0.818100 0.338288 -0.465053 +vn 0.757073 -0.000000 0.653330 +vn 0.699336 0.290064 0.653293 +vn -0.821542 0.340386 -0.457390 +vn -0.923658 0.383095 -0.009728 +vn -0.923652 0.383119 -0.009357 +vn -0.826034 0.342282 0.447784 +vn -0.829970 0.343236 0.439703 +vn -0.539756 0.222926 0.811768 +vn -0.534821 0.221379 0.815449 +vn -0.119126 0.049712 0.991634 +vn -0.116125 0.048710 0.992040 +vn 0.332114 -0.137179 0.933211 +vn 0.323515 -0.134371 0.936634 +vn 0.697897 -0.289660 0.655009 +vn 0.699336 -0.290064 0.653293 +vn 0.899840 -0.372143 0.227593 +vn 0.899434 0.371986 -0.229443 +vn 0.974890 0.000000 -0.222688 +vn 0.900685 0.373062 -0.222689 +vn 0.898202 -0.372034 0.234147 +vn 0.974890 0.000000 -0.222688 +vn 0.706919 0.293160 -0.643679 +vn 0.767016 0.000000 -0.641627 +vn 0.708472 0.294030 -0.641571 +vn 0.767016 0.000000 -0.641628 +vn 0.349044 0.145007 -0.925819 +vn 0.369012 0.000000 -0.929425 +vn 0.369012 0.000000 -0.929425 +vn 0.340998 0.140883 -0.929447 +vn -0.098001 -0.041003 -0.994341 +vn -0.100345 -0.042171 -0.994059 +vn -0.106158 0.000000 -0.994349 +vn -0.106158 0.000000 -0.994349 +vn -0.524362 -0.217092 -0.823357 +vn -0.519302 -0.214470 -0.827241 +vn -0.561924 0.000000 -0.827189 +vn -0.561924 0.000000 -0.827189 +vn -0.821542 -0.340386 -0.457390 +vn -0.889262 0.000000 -0.457398 +vn -0.818101 -0.338288 -0.465051 +vn -0.889262 0.000000 -0.457398 +vn -0.923658 -0.383095 -0.009728 +vn 0.899435 -0.371987 -0.229441 +vn -0.999956 0.000000 -0.009354 +vn 0.900685 -0.373062 -0.222689 +vn -0.923651 -0.383119 -0.009357 +vn -0.999956 0.000000 -0.009354 +vn -0.826035 -0.342282 0.447782 +vn 0.706918 -0.293159 -0.643681 +vn -0.829970 -0.343236 0.439703 +vn -0.898163 0.000000 0.439662 +vn 0.708472 -0.294030 -0.641571 +vn -0.898163 0.000000 0.439662 +vn -0.539756 -0.222926 0.811768 +vn 0.349045 -0.145007 -0.925819 +vn -0.534821 -0.221379 0.815449 +vn -0.578845 0.000000 0.815437 +vn 0.340998 -0.140883 -0.929447 +vn -0.578845 0.000000 0.815437 +vn -0.119125 -0.049712 0.991634 +vn -0.125816 0.000000 0.992054 +vn -0.100345 0.042171 -0.994059 +vn -0.224140 0.911834 0.343976 +vn -0.224133 0.911828 0.343998 +vn 0.650551 -0.724807 -0.226800 +vn 0.233064 -0.948163 -0.216030 +vn 0.653376 -0.723022 -0.224364 +vn -0.631739 0.694030 0.345293 +vn 0.233086 -0.948153 -0.216048 +vn 0.096559 0.243962 0.964966 +vn 0.111100 0.416912 0.902131 +vn 0.504739 -0.582310 -0.637302 +vn -0.197900 0.805090 0.559164 +vn 0.601365 -0.657557 -0.453849 +vn -0.558603 0.611170 0.560745 +vn 0.212901 -0.866044 -0.452373 +vn 0.212898 -0.866143 -0.452185 +vn -0.197894 0.805080 0.559182 +vn -0.037929 -0.274686 -0.960786 +vn -0.077974 -0.312844 -0.946598 +vn 0.046376 0.175715 0.983348 +vn -0.016604 -0.062911 -0.997881 +vn -0.041559 -0.272819 0.961167 +vn 0.180315 -0.733533 -0.655299 +vn -0.014137 -0.053563 0.998464 +vn 0.511374 -0.554706 -0.656352 +vn -0.410948 0.415393 0.811524 +vn 0.180305 -0.733544 -0.655289 +vn -0.154515 0.628584 0.762238 +vn -0.154512 0.628579 0.762243 +vn 0.235580 -0.311146 -0.920701 +vn -0.435045 0.477152 0.763585 +vn 0.130835 -0.532263 -0.836408 +vn 0.130834 -0.532241 -0.836422 +vn 0.367766 -0.404001 -0.837574 +vn -0.103283 0.420160 0.901553 +vn -0.103280 0.420152 0.901557 +vn -0.289791 0.319039 0.902350 +vn 0.098354 0.243004 -0.965026 +vn 0.043789 0.165914 -0.985168 +vn -0.075441 -0.304045 0.949666 +vn 0.108871 0.407989 -0.906472 +vn -0.157267 -0.706211 0.690313 +vn -0.137981 -0.519860 0.843035 +vn 0.077470 -0.315165 -0.945870 +vn 0.220453 -0.237425 -0.946060 +vn 0.077471 -0.315164 -0.945870 +vn -0.103277 0.073503 0.991933 +vn -0.043546 0.177159 0.983218 +vn -0.091160 0.055957 -0.994263 +vn -0.043551 0.177166 0.983217 +vn 0.015593 -0.063437 -0.997864 +vn -0.125263 0.132693 0.983210 +vn 0.015593 -0.063433 -0.997864 +vn 0.042989 -0.048519 -0.997897 +vn 0.013276 -0.054010 0.998452 +vn 0.013275 -0.054008 0.998452 +vn 0.209953 0.685398 -0.697244 +vn 0.036691 -0.041260 0.998475 +vn 0.160855 0.616800 -0.770509 +vn -0.197867 -0.721411 0.663637 +vn -0.118325 0.125267 -0.985042 +vn -0.243462 -0.942465 0.229099 +vn -0.041120 0.167279 -0.985052 +vn -0.041120 0.167287 -0.985050 +vn -0.216685 -0.944186 0.248115 +vn -0.226013 -0.859604 0.458257 +vn 0.225881 -0.293277 0.928960 +vn 0.075290 -0.306299 0.948953 +vn 0.075291 -0.306299 0.948953 +vn 0.208752 0.795151 -0.569349 +vn 0.214139 -0.230805 0.949144 +vn -0.101076 0.411180 -0.905933 +vn -0.400906 0.401809 -0.823301 +vn -0.101076 0.411187 -0.905930 +vn 0.128727 -0.523680 0.842134 +vn 0.128723 -0.523671 0.842140 +vn -0.283421 0.312319 -0.906714 +vn 0.361928 -0.397460 0.843228 +vn 0.240064 0.903947 -0.353905 +vn 0.501611 -0.571709 0.649258 +vn 0.178678 -0.726922 0.663068 +vn 0.272094 0.928802 -0.251578 +vn 0.178687 -0.726926 0.663061 +vn -0.152589 0.620744 -0.769021 +vn 0.507164 -0.549367 0.664064 +vn 0.649877 -0.723942 0.231448 +vn -0.152589 0.620747 -0.769019 +vn 0.232802 -0.947100 0.220920 +vn 0.652634 -0.722201 0.229117 +vn 0.232796 -0.947102 0.220914 +vn -0.429747 0.471084 -0.770323 +vn 0.212342 -0.863887 0.456738 +vn 0.212345 -0.863894 0.456723 +vn 0.599769 -0.656036 0.458142 +vn 0.253524 0.960567 -0.114173 +vn -0.614613 0.638167 -0.463675 +vn -0.554634 0.606918 -0.569238 +vn -0.196517 0.799445 -0.567687 +vn -0.196515 0.799471 -0.567651 +vn 0.271559 0.928967 0.251549 +vn 0.253784 0.961552 0.104931 +vn -0.629582 0.691567 -0.354063 +vn -0.223357 0.908670 -0.352748 +vn -0.223360 0.908659 -0.352772 +vn 0.240998 0.907108 0.345072 +vn -0.690587 0.723185 -0.009662 +vn -0.671031 0.732581 -0.114199 +vn -0.237158 0.964790 -0.113742 +vn -0.237154 0.964793 -0.113718 +vn -0.211374 -0.945487 -0.247741 +vn -0.243738 -0.943534 -0.224354 +vn 0.208788 0.685887 0.697113 +vn 0.210349 0.800784 0.560802 +vn -0.237400 0.965778 0.104466 +vn -0.671597 0.733454 0.104894 +vn -0.226427 -0.861788 -0.453930 +vn -0.237396 0.965777 0.104489 +vn -0.150280 -0.708783 -0.689233 +vn -0.199279 -0.728034 -0.655938 +vn 0.162789 0.624613 0.763779 +vn -0.140480 -0.528434 -0.837271 +vn -0.620283 0.645029 0.446304 +vn -0.463819 -0.849612 0.251061 +vn -0.463815 -0.849627 0.251015 +vn -0.463825 -0.849622 -0.251015 +vn -0.463809 -0.849617 -0.251060 +vn -0.126190 -0.227939 0.965464 +vn -0.121897 -0.223294 0.967099 +vn -0.121903 -0.223303 -0.967096 +vn -0.121894 -0.223282 -0.967102 +vn -0.340017 -0.622833 -0.704605 +vn -0.340016 -0.622832 -0.704606 +vn -0.338603 -0.623608 0.704600 +vn -0.340009 -0.622837 0.704605 +vn -0.338600 -0.623606 0.704604 +vn -0.340009 -0.622836 0.704606 +vn -0.463058 -0.848218 0.257107 +vn -0.463058 -0.848218 -0.257106 +vn -0.463810 -0.849618 0.251058 +vn -0.463810 -0.849617 0.251061 +vn -0.465192 -0.848862 0.251058 +vn -0.338602 -0.623607 -0.704602 +vn -0.463809 -0.849617 -0.251060 +vn -0.465193 -0.848862 -0.251057 +vn -0.463810 -0.849618 -0.251057 +vn -0.126192 -0.227942 -0.965463 +vn -0.121897 -0.223294 -0.967099 +vn -0.340008 -0.622836 -0.704606 +vn -0.338600 -0.623605 -0.704604 +vn -0.340009 -0.622837 -0.704605 +vn -0.341427 -0.622066 0.704600 +vn -0.123486 -0.229416 0.965463 +vn -0.461708 -0.848954 0.257104 +vn -0.341424 -0.622064 0.704604 +vn -0.463809 -0.849617 0.251061 +vn -0.461708 -0.848955 -0.257103 +vn -0.463809 -0.849617 -0.251060 +vn -0.121903 -0.223306 0.967096 +vn -0.123487 -0.229418 -0.965463 +vn -0.341426 -0.622065 -0.704602 +vn -0.341424 -0.622064 -0.704604 +vn -0.340009 -0.622837 0.704605 +vn -0.340009 -0.622837 0.704605 +vn -0.463819 -0.849612 0.251061 +vn -0.463815 -0.849627 0.251015 +vn -0.463825 -0.849622 -0.251015 +vn -0.463809 -0.849617 -0.251060 +vn -0.121903 -0.223303 0.967096 +vn -0.121894 -0.223282 0.967102 +vn -0.121903 -0.223306 -0.967096 +vn -0.340009 -0.622837 -0.704605 +vn -0.340009 -0.622837 -0.704605 +vn -0.340017 -0.622833 0.704605 +vn -0.340016 -0.622832 0.704606 +vn 0.008286 -0.255964 -0.966651 +vn -0.104827 -0.239528 -0.965214 +vn -0.134658 -0.698646 -0.702681 +vn -0.134655 -0.698645 -0.702683 +vn -0.271089 -0.657562 -0.702939 +vn 0.001212 0.262395 -0.964960 +vn -0.004130 0.255633 -0.966765 +vn 0.101227 0.241463 -0.965116 +vn -0.048395 -0.251075 -0.966757 +vn -0.048392 -0.251072 -0.966758 +vn -0.098846 -0.235783 -0.966766 +vn -0.018047 0.710918 -0.703043 +vn -0.017198 0.711560 -0.702415 +vn 0.280186 0.653666 -0.703005 +vn 0.048395 0.251071 -0.966758 +vn 0.048393 0.251070 -0.966759 +vn 0.093463 0.237449 -0.966893 +vn -0.015615 0.966591 -0.255848 +vn -0.009278 0.968210 -0.249968 +vn 0.368044 0.893965 -0.255676 +vn 0.134664 0.698652 -0.702675 +vn 0.281239 0.653912 -0.702356 +vn 0.134653 0.698647 -0.702681 +vn -0.009396 0.966714 0.255685 +vn -0.015641 0.968167 0.249815 +vn 0.373773 0.891538 0.255840 +vn 0.374382 0.892992 -0.249804 +vn 0.183253 0.950804 -0.249782 +vn 0.183260 0.950804 -0.249776 +vn -0.017174 0.710982 0.703000 +vn -0.018035 0.711585 0.702368 +vn 0.280997 0.653274 0.703046 +vn 0.183253 0.950805 0.249776 +vn 0.368490 0.895397 0.249959 +vn 0.183259 0.950802 0.249783 +vn 0.004229 -0.261785 0.965117 +vn -0.004229 0.261785 0.965117 +vn 0.001481 0.255179 0.966893 +vn 0.280434 0.654206 0.702404 +vn 0.134663 0.698645 0.702681 +vn 0.134655 0.698654 0.702674 +vn 0.007258 -0.711653 0.702494 +vn 0.008284 -0.255963 0.966651 +vn 0.048394 0.251070 0.966758 +vn 0.093466 0.237449 0.966893 +vn 0.101226 0.241461 0.965117 +vn 0.048394 0.251071 0.966758 +vn 0.007629 -0.711234 0.702914 +vn 0.019401 -0.968287 0.249087 +vn -0.104824 -0.239527 0.965214 +vn -0.048392 -0.251075 0.966757 +vn -0.098846 -0.235783 0.966766 +vn -0.048395 -0.251071 0.966758 +vn -0.271597 -0.657800 0.702519 +vn -0.183230 -0.950648 0.250391 +vn -0.134657 -0.698644 0.702683 +vn -0.134656 -0.698646 0.702681 +vn -0.271088 -0.657563 0.702939 +vn -0.183226 -0.950647 0.250398 +vn -0.377913 -0.891708 0.249075 +vn 0.015259 -0.966599 0.255838 +vn -0.373438 -0.891681 0.255831 +vn 0.019272 -0.966501 -0.255938 +vn 0.015287 -0.968327 -0.249216 +vn 0.007260 -0.711651 -0.702496 +vn 0.007629 -0.711234 -0.702914 +vn -0.183230 -0.950648 -0.250390 +vn -0.374106 -0.893276 -0.249203 +vn -0.271597 -0.657799 -0.702521 +vn -0.377129 -0.890097 -0.255930 +vn -0.183226 -0.950647 -0.250397 +vn 0.004229 -0.261788 -0.965116 +vn 0.072156 -0.603951 -0.793748 +vn 0.107147 -0.896830 0.429204 +vn 0.072141 -0.603953 -0.793748 +vn 0.072141 -0.603953 -0.793748 +vn 0.068787 -0.594741 0.800969 +vn 0.020585 -0.172345 -0.984822 +vn 0.050276 -0.420920 -0.905704 +vn 0.071127 -0.595445 0.800242 +vn 0.050276 -0.420920 -0.905704 +vn 0.020661 -0.172348 -0.984819 +vn 0.020590 -0.172344 -0.984822 +vn 0.107123 -0.896825 0.429220 +vn 0.050269 -0.420927 -0.905701 +vn 0.050350 -0.420917 -0.905701 +vn 0.107110 -0.896822 0.429228 +vn 0.050288 -0.420918 -0.905704 +vn 0.096751 -0.809959 0.578451 +vn 0.096751 -0.809959 0.578451 +vn -0.060392 -0.818213 0.571734 +vn 0.094440 -0.809907 0.578905 +vn 0.096748 -0.809959 0.578451 +vn 0.116614 -0.976308 0.182274 +vn 0.116614 -0.976308 0.182274 +vn 0.107115 -0.896822 0.429228 +vn 0.107127 -0.896828 0.429213 +vn 0.114625 -0.959560 -0.257111 +vn 0.116642 -0.976305 0.182274 +vn 0.116642 -0.976305 0.182274 +vn 0.107152 -0.896825 0.429213 +vn 0.107124 -0.896825 0.429220 +vn 0.116604 -0.976309 0.182274 +vn 0.116617 -0.976308 0.182270 +vn 0.107110 -0.896826 0.429220 +vn 0.106658 -0.896696 0.429605 +vn 0.724903 -0.487090 -0.487092 +vn 0.094056 -0.787369 -0.609264 +vn 0.116609 -0.976309 0.182270 +vn 0.116609 -0.976309 0.182270 +vn 0.160573 -0.953023 -0.256834 +vn 0.116123 -0.972196 -0.203346 +vn 0.313791 -0.245746 0.917139 +vn 0.116648 -0.976305 0.182266 +vn 0.116618 -0.976308 0.182270 +vn 0.054500 -0.456196 0.888209 +vn 0.013041 -0.109176 0.993937 +vn 0.013038 -0.109176 0.993937 +vn 0.116151 -0.972193 -0.203346 +vn 0.067571 -0.217274 0.973769 +vn 0.116151 -0.972193 -0.203346 +vn 0.762773 -0.457262 0.457262 +vn 0.075717 -0.633799 0.769783 +vn 0.106000 -0.887450 -0.448550 +vn 0.037786 -0.316336 0.947895 +vn 0.072152 -0.603958 -0.793744 +vn 0.037737 -0.316342 0.947894 +vn 0.037778 -0.316337 0.947894 +vn 0.037779 -0.316337 0.947894 +vn 0.106024 -0.887436 -0.448572 +vn 0.105984 -0.887451 -0.448550 +vn 0.054490 -0.456197 0.888209 +vn 0.116113 -0.972198 -0.203346 +vn 0.054494 -0.456209 0.888202 +vn 0.116113 -0.972198 -0.203346 +vn 0.116627 -0.976303 0.182293 +vn 0.116622 -0.976308 0.182266 +vn 0.116191 -0.976358 0.182274 +vn 0.116136 -0.972195 -0.203346 +vn 0.096754 -0.809959 0.578451 +vn 0.116603 -0.976309 0.182274 +vn 0.054443 -0.456216 0.888202 +vn 0.054483 -0.456211 0.888202 +vn 0.105990 -0.887440 -0.448572 +vn 0.054483 -0.456211 0.888202 +vn 0.105990 -0.887440 -0.448572 +vn 0.965082 -0.253022 0.067797 +vn 0.020586 -0.172344 -0.984822 +vn 0.107131 -0.896831 0.429204 +vn 0.389564 -0.238374 -0.889617 +vn 0.050285 -0.420918 -0.905704 +vn 0.094047 -0.787371 -0.609264 +vn 0.075704 -0.633801 0.769783 +vn 0.094047 -0.787371 -0.609264 +vn 0.075704 -0.633801 0.769783 +vn 0.116118 -0.972197 -0.203346 +vn 0.116118 -0.972197 -0.203346 +vn 0.075692 -0.633802 0.769783 +vn 0.075692 -0.633802 0.769783 +vn 0.094069 -0.787368 -0.609264 +vn 0.075697 -0.633801 0.769783 +vn 0.094033 -0.787378 -0.609257 +vn -0.068671 -0.606186 0.792353 +vn 0.096745 -0.809960 0.578451 +vn 0.096745 -0.809960 0.578451 +vn 0.116127 -0.972196 -0.203346 +vn 0.116131 -0.972195 -0.203346 +vn 0.116131 -0.972195 -0.203346 +vn 0.116127 -0.972196 -0.203346 +vn 0.105995 -0.887450 -0.448550 +vn 0.106006 -0.887438 -0.448572 +vn 0.096730 -0.809961 0.578451 +vn 0.094026 -0.787368 -0.609271 +vn 0.096730 -0.809961 0.578451 +vn 0.094039 -0.787380 -0.609253 +vn 0.094050 -0.787376 -0.609257 +vn 0.094054 -0.787378 -0.609253 +vn 0.094049 -0.787365 -0.609271 +vn -0.064002 -0.779400 -0.623249 +vn 0.106004 -0.887449 -0.448550 +vn 0.107121 -0.896833 0.429204 +vn 0.106008 -0.887449 -0.448550 +vn 0.107121 -0.896833 0.429204 +vn 0.106004 -0.887449 -0.448550 +vn 0.072139 -0.603959 -0.793744 +vn 0.096736 -0.809961 0.578451 +vn 0.096736 -0.809961 0.578451 +vn 0.072139 -0.603959 -0.793744 +vn 0.107104 -0.896827 0.429220 +vn -0.066910 -0.473354 -0.878328 +vn 0.072128 -0.603960 -0.793744 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 -0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.992944 -0.118584 0.000000 +vn 0.992943 -0.118593 -0.000012 +vn 0.992944 -0.118584 0.000021 +vn 0.992941 -0.118609 -0.000028 +vn 0.992943 -0.118593 0.000033 +vn 0.992943 -0.118593 0.000033 +vn 0.992941 -0.118609 -0.000028 +vn 0.992944 -0.118584 0.000021 +vn 0.992944 -0.118584 0.000000 +vn 0.992943 -0.118593 -0.000012 +vn -0.951061 0.000000 -0.309005 +vn -0.951061 0.000000 -0.309005 +vn -0.587778 0.000000 -0.809022 +vn -0.587778 0.000000 -0.809022 +vn 0.545125 -0.004907 -0.838340 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.414720 0.000000 -0.909949 +vn 0.414720 0.000000 -0.909949 +vn 0.587762 -0.007455 -0.809000 +vn 0.554146 -0.000078 -0.832420 +vn 0.531364 0.000000 -0.847143 +vn 0.682776 -0.001836 -0.730626 +vn 0.528110 0.004246 -0.849165 +vn 0.586911 0.000087 -0.809652 +vn 0.623915 0.005045 -0.781476 +vn 0.587762 0.007348 -0.809000 +vn 0.951033 -0.007683 -0.308996 +vn 0.912705 0.001988 -0.408614 +vn 0.984686 -0.000476 -0.174337 +vn 0.989809 0.000000 -0.142402 +vn 0.951030 0.007949 -0.308995 +vn 0.982422 0.000000 -0.186673 +vn 0.857720 0.001575 -0.514114 +vn 0.875848 -0.000594 -0.482587 +vn 0.987624 0.000000 -0.156840 +vn 0.897445 0.000375 -0.441126 +vn 0.733927 0.000577 -0.679228 +vn 0.698811 -0.000387 -0.715306 +vn 0.774443 -0.001136 -0.632642 +vn -0.770607 0.008579 -0.637253 +vn -0.850136 -0.000140 -0.526563 +vn -0.824092 0.000095 -0.566456 +vn -0.814138 0.002443 0.580666 +vn -0.686693 0.000000 -0.726947 +vn -0.807442 -0.005574 -0.589921 +vn -0.810716 0.000000 -0.585439 +vn -0.876768 0.007467 0.480855 +vn -0.686693 0.000000 -0.726947 +vn -0.810731 0.000000 0.585419 +vn -0.770607 -0.008579 -0.637253 +vn -0.289085 0.000000 -0.957303 +vn -0.758707 0.000000 0.651432 +vn -0.289085 0.000000 -0.957303 +vn -0.758707 0.000000 0.651432 +vn -0.894349 -0.000459 0.447369 +vn -0.970123 -0.000449 0.242615 +vn -0.999967 -0.000219 0.008137 +vn -0.976113 -0.000205 -0.217261 +vn -0.914033 -0.000299 -0.405639 +vn -0.803090 -0.001933 0.595854 +vn -0.880831 -0.000220 -0.473430 +vn -0.957422 0.000283 -0.288692 +vn -0.980677 0.001774 0.195625 +vn -0.894398 0.000458 -0.447272 +vn -0.970170 0.000445 -0.242424 +vn -0.885974 0.009071 0.463647 +vn -0.999966 0.000218 -0.008207 +vn -0.976127 0.000207 0.217201 +vn -0.914141 0.000302 0.405397 +vn -0.957361 -0.000298 0.288894 +vn -0.998670 0.000317 0.051565 +vn -0.913739 -0.001051 -0.406301 +vn -0.850164 0.000141 0.526518 +vn -0.824016 -0.000095 0.566567 +vn -0.842093 -0.004349 0.539314 +vn -0.911851 -0.005052 0.410491 +vn -0.885972 -0.009308 0.463646 +vn -0.994503 0.009859 -0.104240 +vn -0.980340 0.002797 -0.197295 +vn -0.998645 -0.004855 -0.051816 +vn -0.843359 0.002883 -0.537342 +vn -0.785558 0.007390 -0.618743 +vn -0.994509 -0.009302 -0.104241 +vn -0.965927 0.000000 -0.258815 +vn -0.707105 0.000000 -0.707109 +vn -0.965927 0.000000 -0.258815 +vn -0.258818 0.000000 -0.965926 +vn -0.707105 0.000000 -0.707109 +vn -0.258818 0.000000 -0.965926 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 0.965927 0.000000 0.258814 +vn 0.707075 0.000000 0.707139 +vn 0.965927 0.000000 0.258814 +vn 0.258841 0.000000 0.965920 +vn 0.707075 0.000000 0.707139 +vn 0.258841 0.000000 0.965920 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.115487 -0.959454 0.257121 +vn -0.051421 -0.436044 0.898455 +vn -0.017247 -0.149930 0.988546 +vn -0.017844 -0.149389 0.988618 +vn -0.032099 -0.258551 0.965464 +vn -0.084763 -0.721960 0.686723 +vn -0.084785 -0.704526 0.704596 +vn -0.050544 -0.435735 0.898655 +vn -0.051708 -0.435597 0.898656 +vn -0.086426 -0.721556 0.686940 +vn -0.082847 -0.721980 0.686936 +vn 0.029758 -0.951359 0.306643 +vn -0.098966 -0.857544 0.504801 +vn -0.102374 -0.857142 0.504804 +vn -0.112856 -0.944083 0.309792 +vn -0.109612 -0.990234 -0.086147 +vn -0.115807 -0.959415 -0.257121 +vn -0.117495 -0.989330 -0.086149 +vn 0.242230 -0.887129 -0.392845 +vn -0.100439 -0.914631 -0.391614 +vn -0.109179 -0.913623 -0.391629 +vn -0.085315 -0.704463 -0.704595 +vn -0.096876 -0.811434 -0.576359 +vn -0.096081 -0.811529 -0.576359 +vn 0.003510 -0.614802 -0.788674 +vn -0.074710 -0.626097 -0.776158 +vn -0.073980 -0.626184 -0.776158 +vn -0.025371 -0.212409 -0.976851 +vn -0.025249 -0.212489 -0.976837 +vn -0.031628 -0.258607 -0.965465 +vn -0.053842 -0.451885 -0.890450 +vn -0.053995 -0.451867 -0.890450 +vn -0.115487 0.959453 -0.257123 +vn -0.031632 0.258607 0.965465 +vn -0.025332 0.212086 0.976923 +vn -0.025255 0.212136 0.976914 +vn 0.003996 0.614423 0.788967 +vn -0.053857 0.451578 0.890604 +vn -0.053959 0.451566 0.890604 +vn -0.085316 0.704462 0.704595 +vn -0.074249 0.625971 0.776303 +vn -0.074689 0.625919 0.776304 +vn 0.242115 0.886991 0.393227 +vn -0.096860 0.811307 0.576540 +vn -0.096325 0.811371 0.576540 +vn -0.115807 0.959415 0.257122 +vn -0.109168 0.913535 0.391836 +vn -0.101487 0.914426 0.391824 +vn 0.925166 0.379187 -0.016876 +vn -0.109710 0.982869 0.148099 +vn -0.118363 0.990948 -0.063350 +vn -0.117293 0.981992 0.148103 +vn 0.032133 0.951297 -0.306595 +vn -0.112854 0.944061 -0.309859 +vn -0.102356 0.856990 -0.505067 +vn -0.098894 0.857397 -0.505065 +vn -0.084781 0.704527 -0.704595 +vn -0.084649 0.721447 -0.687276 +vn -0.086370 0.721035 -0.687494 +vn -0.082726 0.721466 -0.687490 +vn -0.017819 0.149179 -0.988650 +vn -0.032100 0.258551 -0.965464 +vn -0.051271 0.435505 -0.898725 +vn -0.017147 0.149789 -0.988569 +vn -0.051647 0.435065 -0.898917 +vn -0.050434 0.435209 -0.898916 +vn -0.107837 -0.872627 0.476333 +vn -0.207206 -0.843268 0.495949 +vn -0.108284 -0.906645 0.407762 +vn -0.116967 -0.979294 0.165231 +vn -0.116967 -0.979294 0.165231 +vn -0.116970 -0.979294 0.165229 +vn -0.116979 -0.979293 0.165231 +vn -0.116955 -0.979296 0.165229 +vn -0.117004 -0.979288 0.165240 +vn -0.116964 -0.979293 0.165240 +vn -0.116964 -0.979293 0.165240 +vn -0.117007 -0.979288 0.165240 +vn -0.116951 -0.979244 0.165538 +vn -0.115760 -0.969277 -0.217028 +vn -0.120527 -0.978863 0.165228 +vn -0.116961 -0.979295 0.165229 +vn -0.084983 -0.962667 -0.257002 +vn -0.115778 -0.969285 -0.216986 +vn -0.115771 -0.969285 -0.216986 +vn -0.115771 -0.969285 -0.216986 +vn -0.104730 -0.884103 -0.455405 +vn -0.105583 -0.883984 -0.455438 +vn -0.105633 -0.883996 -0.455405 +vn -0.115774 -0.969285 -0.216986 +vn -0.115784 -0.969284 -0.216984 +vn -0.105553 -0.883988 -0.455439 +vn -0.105588 -0.884001 -0.455405 +vn -0.115769 -0.969286 -0.216984 +vn -0.115759 -0.969287 -0.216986 +vn -0.105581 -0.883984 -0.455439 +vn -0.105619 -0.883997 -0.455405 +vn 0.024645 -0.264919 0.963956 +vn -0.016712 -0.139916 0.990022 +vn -0.115811 -0.969281 -0.216986 +vn -0.016755 -0.139911 0.990022 +vn -0.115769 -0.969286 -0.216986 +vn -0.116040 -0.969244 -0.217028 +vn -0.115769 -0.969286 -0.216986 +vn -0.306365 -0.689194 -0.656622 +vn -0.046080 -0.385220 0.921674 +vn -0.105581 -0.883984 -0.455438 +vn -0.092177 -0.771762 -0.629196 +vn -0.043510 -0.385525 0.921671 +vn -0.105857 -0.883951 -0.455439 +vn -0.105581 -0.883984 -0.455438 +vn -0.032566 -0.709800 -0.703650 +vn -0.060888 -0.507042 0.859768 +vn -0.124603 -0.365616 0.922388 +vn -0.095603 -0.771428 -0.629094 +vn -0.046011 -0.385220 0.921677 +vn -0.092231 -0.771840 -0.629092 +vn -0.060566 -0.507080 0.859768 +vn -0.062509 -0.506848 0.859766 +vn -0.060566 -0.507080 0.859768 +vn -0.092188 -0.771840 -0.629098 +vn -0.040938 -0.709085 0.703933 +vn -0.092162 -0.771842 -0.629099 +vn -0.092772 -0.771690 -0.629196 +vn -0.092218 -0.771836 -0.629099 +vn -0.069820 -0.667362 0.741453 +vn -0.092199 -0.771843 -0.629092 +vn -0.070475 -0.573357 -0.816269 +vn -0.079574 -0.666230 0.741489 +vn -0.268335 -0.386151 -0.882544 +vn -0.079574 -0.666230 0.741489 +vn -0.068510 -0.573592 -0.816271 +vn -0.069151 -0.573296 -0.816425 +vn -0.068510 -0.573592 -0.816271 +vn -0.079583 -0.666229 0.741489 +vn -0.068517 -0.573591 -0.816271 +vn -0.081450 -0.665673 0.741785 +vn -0.021566 -0.180548 -0.983330 +vn 0.016541 -0.264062 -0.964364 +vn -0.021579 -0.180547 -0.983330 +vn -0.048841 -0.422954 -0.904834 +vn -0.100425 -0.828744 0.550544 +vn -0.050506 -0.422751 -0.904837 +vn -0.050494 -0.422757 -0.904835 +vn -0.099006 -0.828923 0.550531 +vn -0.099050 -0.828909 0.550545 +vn -0.081807 -0.665255 0.742121 +vn -0.079527 -0.665904 0.741786 +vn -0.099016 -0.828910 0.550548 +vn -0.098978 -0.828927 0.550531 +vn -0.063275 -0.964398 0.256774 +vn -0.106347 -0.906874 0.407763 +vn -0.101353 -0.828641 0.550529 +vn -0.098996 -0.828924 0.550531 +vn -0.099037 -0.828908 0.550548 +vn -0.108338 -0.906631 0.407778 +vn -0.108289 -0.906643 0.407764 +vn -0.108258 -0.906647 0.407764 +vn -0.108291 -0.906637 0.407778 +vn -0.108324 -0.906639 0.407764 +vn -0.108324 -0.906639 0.407764 +vn -0.108287 -0.906644 0.407764 +vn -0.116973 -0.979294 0.165231 +vn 0.007628 0.711234 0.702914 +vn -0.134656 0.698647 0.702681 +vn 0.096398 -0.244049 0.964960 +vn 0.098845 -0.235782 0.966766 +vn -0.373438 0.891681 0.255830 +vn 0.004229 0.261786 0.965117 +vn -0.048394 0.251069 0.966759 +vn -0.048392 0.251074 0.966758 +vn 0.008286 0.255962 0.966651 +vn 0.280997 -0.653273 0.703047 +vn 0.280433 -0.654207 0.702403 +vn 0.001212 -0.262394 0.964960 +vn -0.004130 -0.255631 0.966765 +vn 0.048393 -0.251070 0.966759 +vn 0.048394 -0.251068 0.966759 +vn 0.373773 -0.891538 0.255839 +vn 0.368491 -0.895397 0.249959 +vn -0.018048 -0.710918 0.703043 +vn 0.134655 -0.698655 0.702673 +vn 0.134663 -0.698646 0.702680 +vn -0.017198 -0.711560 0.702414 +vn 0.368044 -0.893965 -0.255676 +vn 0.374382 -0.892992 -0.249805 +vn -0.015614 -0.966591 0.255847 +vn 0.183259 -0.950802 0.249782 +vn 0.183253 -0.950805 0.249776 +vn -0.009279 -0.968210 0.249968 +vn 0.280189 -0.653666 -0.703004 +vn 0.281239 -0.653912 -0.702356 +vn -0.009396 -0.966715 -0.255683 +vn -0.015639 -0.968167 -0.249815 +vn 0.183253 -0.950804 -0.249782 +vn 0.183260 -0.950804 -0.249776 +vn 0.101226 -0.241462 -0.965116 +vn 0.093465 -0.237449 -0.966893 +vn 0.134653 -0.698647 -0.702681 +vn -0.017173 -0.710981 -0.703001 +vn -0.018035 -0.711585 -0.702368 +vn 0.134664 -0.698652 -0.702675 +vn -0.104825 0.239527 -0.965214 +vn -0.098846 0.235783 -0.966766 +vn 0.004229 0.261786 -0.965117 +vn 0.048395 -0.251071 -0.966758 +vn -0.004229 -0.261786 -0.965117 +vn 0.001482 -0.255179 -0.966893 +vn 0.048393 -0.251070 -0.966759 +vn -0.271597 0.657800 -0.702520 +vn -0.377913 0.891708 -0.249074 +vn -0.271088 0.657562 -0.702939 +vn 0.007259 0.711652 -0.702495 +vn -0.048392 0.251072 -0.966758 +vn -0.048395 0.251075 -0.966757 +vn 0.008285 0.255964 -0.966651 +vn 0.019272 0.966501 -0.255939 +vn -0.134658 0.698646 -0.702681 +vn 0.007629 0.711234 -0.702914 +vn -0.183226 0.950649 -0.250390 +vn -0.373438 0.891681 -0.255830 +vn -0.183230 0.950646 -0.250397 +vn 0.015287 0.968327 -0.249216 +vn -0.134655 0.698645 -0.702683 +vn -0.271596 0.657799 0.702521 +vn -0.377913 0.891708 0.249074 +vn -0.104826 0.239527 0.965214 +vn -0.271089 0.657563 0.702938 +vn 0.019272 0.966501 0.255938 +vn -0.183230 0.950646 0.250397 +vn 0.015287 0.968327 0.249216 +vn -0.183226 0.950649 0.250390 +vn -0.098845 0.235782 0.966766 +vn 0.007260 0.711651 0.702496 +vn -0.134657 0.698645 0.702683 +vn 0.124838 -0.228679 0.965464 +vn 0.124838 -0.228679 0.965464 +vn 0.340014 -0.622838 0.704602 +vn 0.340014 -0.622838 0.704602 +vn 0.463053 -0.848222 -0.257103 +vn 0.463053 -0.848222 0.257103 +vn 0.463053 -0.848222 0.257103 +vn 0.340014 -0.622839 -0.704601 +vn 0.463053 -0.848222 -0.257104 +vn 0.124838 -0.228679 -0.965464 +vn 0.340014 -0.622838 -0.704601 +vn 0.124838 -0.228679 -0.965464 +vn -0.211376 0.945487 0.247740 +vn 0.233058 0.948158 0.216055 +vn -0.224140 -0.911827 -0.343996 +vn -0.243731 0.943535 0.224359 +vn 0.233084 0.948156 0.216035 +vn -0.289793 -0.319039 -0.902349 +vn 0.212921 0.866135 0.452189 +vn 0.208789 -0.685886 -0.697113 +vn -0.226429 0.861784 0.453936 +vn -0.197897 -0.805075 -0.559188 +vn 0.212883 0.866066 0.452339 +vn 0.210350 -0.800782 -0.560804 +vn -0.197896 -0.805089 -0.559167 +vn 0.220453 0.237426 0.946060 +vn -0.103277 -0.073502 -0.991933 +vn -0.125264 -0.132692 -0.983210 +vn -0.091161 -0.055959 0.994263 +vn 0.042984 0.048515 0.997897 +vn -0.150282 0.708784 0.689232 +vn 0.180316 0.733539 0.655291 +vn 0.036697 0.041265 -0.998474 +vn -0.199282 0.728035 0.655935 +vn 0.162790 -0.624612 -0.763779 +vn -0.154514 -0.628578 -0.762244 +vn 0.180306 0.733536 0.655298 +vn -0.154513 -0.628584 -0.762238 +vn 0.130837 0.532258 0.836411 +vn 0.130831 0.532244 0.836420 +vn -0.140482 0.528429 0.837274 +vn 0.096560 -0.243962 -0.964966 +vn -0.103282 -0.420160 -0.901553 +vn -0.103281 -0.420153 -0.901557 +vn 0.111101 -0.416912 -0.902131 +vn -0.118323 -0.125264 0.985042 +vn 0.225880 0.293276 -0.928960 +vn -0.400905 -0.401807 0.823302 +vn 0.214138 0.230805 -0.949144 +vn -0.283423 -0.312320 0.906712 +vn -0.037928 0.274685 0.960786 +vn -0.077976 0.312846 0.946598 +vn 0.361929 0.397460 -0.843228 +vn 0.077471 0.315166 0.945869 +vn 0.077471 0.315166 0.945869 +vn -0.043548 -0.177166 -0.983217 +vn 0.046376 -0.175715 -0.983348 +vn -0.016602 0.062904 0.997881 +vn -0.043549 -0.177159 -0.983218 +vn 0.015591 0.063428 0.997865 +vn 0.015592 0.063429 0.997864 +vn -0.041560 0.272819 -0.961167 +vn 0.013278 0.054016 -0.998452 +vn 0.013278 0.054017 -0.998452 +vn -0.014139 0.053570 -0.998464 +vn -0.429746 -0.471084 0.770323 +vn 0.501610 0.571708 -0.649259 +vn 0.507163 0.549367 -0.664065 +vn 0.098354 -0.243002 0.965027 +vn -0.041121 -0.167282 0.985051 +vn 0.043789 -0.165911 0.985168 +vn 0.649878 0.723942 -0.231447 +vn 0.652636 0.722200 -0.229115 +vn -0.041118 -0.167277 0.985052 +vn -0.554634 -0.606919 0.569238 +vn 0.599769 0.656036 -0.458142 +vn 0.075291 0.306298 -0.948953 +vn -0.614615 -0.638168 0.463670 +vn 0.075291 0.306298 -0.948953 +vn -0.075442 0.304043 -0.949666 +vn -0.101078 -0.411189 0.905929 +vn -0.157271 0.706211 -0.690313 +vn 0.128726 0.523667 -0.842141 +vn 0.128727 0.523687 -0.842129 +vn -0.101075 -0.411184 0.905931 +vn 0.108871 -0.407991 0.906472 +vn -0.137984 0.519867 -0.843030 +vn -0.629584 -0.691566 0.354062 +vn 0.178682 0.726927 -0.663061 +vn -0.152589 -0.620746 0.769020 +vn -0.197868 0.721410 -0.663639 +vn 0.178688 0.726919 -0.663068 +vn 0.209953 -0.685399 0.697243 +vn -0.216686 0.944186 -0.248113 +vn -0.152589 -0.620746 0.769019 +vn 0.232798 0.947101 -0.220919 +vn 0.160856 -0.616803 0.770506 +vn -0.243455 0.942465 -0.229104 +vn 0.232800 0.947101 -0.220917 +vn 0.212347 0.863894 -0.456723 +vn -0.226015 0.859603 -0.458257 +vn 0.212347 0.863887 -0.456737 +vn -0.690588 -0.723184 0.009662 +vn -0.671032 -0.732580 0.114199 +vn 0.208753 -0.795147 0.569353 +vn -0.196521 -0.799467 0.567655 +vn -0.196510 -0.799448 0.567686 +vn -0.671597 -0.733454 -0.104899 +vn 0.272094 -0.928801 0.251581 +vn 0.240066 -0.903948 0.353901 +vn -0.223355 -0.908662 0.352769 +vn -0.223362 -0.908669 0.352747 +vn -0.620284 -0.645029 -0.446302 +vn -0.631741 -0.694032 -0.345287 +vn 0.253524 -0.960568 0.114173 +vn -0.237158 -0.964792 0.113718 +vn 0.653377 0.723020 0.224366 +vn -0.237153 -0.964791 0.113741 +vn 0.650552 0.724805 0.226802 +vn -0.558601 -0.611168 -0.560749 +vn 0.504738 0.582311 0.637301 +vn 0.271560 -0.928966 -0.251552 +vn -0.237401 -0.965775 -0.104496 +vn -0.237396 -0.965780 -0.104459 +vn 0.601373 0.657565 0.453827 +vn 0.253784 -0.961553 -0.104924 +vn 0.511374 0.554705 0.656353 +vn -0.410948 -0.415392 -0.811524 +vn -0.435045 -0.477152 -0.763585 +vn 0.235580 0.311146 0.920701 +vn 0.367769 0.404003 0.837572 +vn 0.241000 -0.907108 -0.345071 +vn -0.224136 -0.911838 -0.343968 +vn 0.697897 0.289660 -0.655009 +vn 0.699336 0.290063 -0.653294 +vn 0.757072 0.000000 -0.653331 +vn -0.818100 0.338288 0.465052 +vn 0.973761 0.000000 -0.227571 +vn 0.899643 0.372631 -0.227570 +vn 0.973762 0.000000 -0.227571 +vn 0.757072 0.000000 -0.653331 +vn -0.821542 0.340386 0.457391 +vn -0.923658 0.383095 0.009728 +vn -0.923652 0.383119 0.009357 +vn -0.826034 0.342282 -0.447784 +vn -0.829970 0.343236 -0.439702 +vn -0.539756 0.222926 -0.811768 +vn -0.534821 0.221379 -0.815449 +vn -0.119126 0.049712 -0.991634 +vn -0.116123 0.048710 -0.992040 +vn 0.332112 -0.137178 -0.933211 +vn 0.323515 -0.134371 -0.936634 +vn 0.898402 -0.371563 -0.234124 +vn 0.697898 -0.289660 -0.655008 +vn 0.899643 -0.372631 -0.227570 +vn 0.699336 -0.290063 -0.653294 +vn 0.899434 0.371986 0.229443 +vn 0.974890 0.000000 0.222688 +vn 0.900685 0.373062 0.222689 +vn 0.899233 -0.372461 0.229464 +vn 0.974890 -0.000000 0.222688 +vn 0.706918 0.293159 0.643680 +vn 0.767016 -0.000000 0.641628 +vn 0.708471 0.294030 0.641572 +vn 0.767016 0.000000 0.641628 +vn 0.349046 0.145008 0.925818 +vn 0.369013 -0.000000 0.929424 +vn 0.341000 0.140883 0.929447 +vn 0.369013 0.000000 0.929424 +vn -0.100347 -0.042172 0.994058 +vn -0.098001 -0.041003 0.994341 +vn -0.106158 0.000000 0.994349 +vn -0.106158 0.000000 0.994349 +vn -0.524361 -0.217091 0.823357 +vn -0.561925 0.000000 0.827188 +vn -0.519303 -0.214471 0.827240 +vn -0.561925 0.000000 0.827188 +vn -0.821542 -0.340386 0.457391 +vn -0.889262 0.000000 0.457399 +vn -0.818101 -0.338288 0.465050 +vn -0.889262 0.000000 0.457399 +vn -0.999956 0.000000 0.009354 +vn -0.923658 -0.383095 0.009728 +vn 0.900883 -0.372570 0.222712 +vn -0.999956 0.000000 0.009354 +vn -0.923651 -0.383119 0.009357 +vn 0.706917 -0.293159 0.643681 +vn -0.826035 -0.342282 -0.447783 +vn -0.829970 -0.343236 -0.439702 +vn -0.898164 0.000000 -0.439661 +vn 0.708471 -0.294030 0.641572 +vn -0.898164 0.000000 -0.439661 +vn 0.349046 -0.145008 0.925818 +vn -0.539756 -0.222926 -0.811768 +vn -0.534821 -0.221379 -0.815449 +vn -0.578845 0.000000 -0.815437 +vn 0.341000 -0.140883 0.929447 +vn -0.578845 0.000000 -0.815437 +vn -0.119125 -0.049712 -0.991634 +vn -0.100347 0.042172 0.994058 +vn -0.125814 0.000000 -0.992054 +vn -0.125814 0.000000 -0.992054 +vn -0.098001 0.041003 0.994341 +vn -0.116123 -0.048710 -0.992040 +vn 0.332113 0.137178 -0.933211 +vn 0.323515 0.134371 -0.936634 +vn -0.524361 0.217091 0.823357 +vn 0.350250 0.000000 -0.936656 +vn 0.350250 0.000000 -0.936656 +vn -0.519303 0.214471 0.827240 +vn 0.898403 0.371563 -0.234123 +vn 0.653376 -0.723022 0.224364 +vn 0.096560 0.243963 -0.964965 +vn 0.233086 -0.948153 0.216048 +vn 0.504739 -0.582309 0.637303 +vn 0.111100 0.416912 -0.902131 +vn 0.212897 -0.866140 0.452191 +vn 0.212900 -0.866041 0.452379 +vn 0.601363 -0.657555 0.453855 +vn -0.558603 0.611170 -0.560745 +vn -0.197900 0.805090 -0.559164 +vn -0.197894 0.805080 -0.559182 +vn -0.037928 -0.274685 0.960786 +vn -0.077974 -0.312844 0.946598 +vn 0.046376 0.175715 -0.983348 +vn -0.016602 -0.062904 0.997881 +vn -0.041560 -0.272820 -0.961167 +vn 0.511374 -0.554706 0.656352 +vn -0.014139 -0.053570 -0.998464 +vn 0.180315 -0.733533 0.655299 +vn -0.410948 0.415392 -0.811524 +vn 0.180305 -0.733544 0.655289 +vn -0.154515 0.628584 -0.762238 +vn -0.435045 0.477152 -0.763585 +vn 0.235581 -0.311147 0.920700 +vn 0.130836 -0.532269 0.836404 +vn -0.154512 0.628579 -0.762243 +vn 0.367770 -0.404005 0.837571 +vn 0.130835 -0.532246 0.836419 +vn -0.103283 0.420160 -0.901553 +vn -0.103280 0.420152 -0.901557 +vn 0.098354 0.243003 0.965027 +vn -0.289791 0.319038 -0.902350 +vn 0.043789 0.165912 0.985168 +vn 0.108871 0.407989 0.906472 +vn -0.075440 -0.304043 -0.949667 +vn -0.157267 -0.706211 -0.690314 +vn 0.077471 -0.315164 0.945870 +vn -0.137981 -0.519867 -0.843030 +vn 0.077470 -0.315165 0.945870 +vn 0.220453 -0.237425 0.946060 +vn -0.103278 0.073502 -0.991933 +vn -0.043551 0.177166 -0.983217 +vn -0.091161 0.055959 0.994263 +vn -0.043546 0.177159 -0.983218 +vn 0.042984 -0.048514 0.997897 +vn -0.125264 0.132692 -0.983210 +vn 0.015591 -0.063430 0.997864 +vn 0.015591 -0.063427 0.997865 +vn 0.036697 -0.041265 -0.998474 +vn 0.013278 -0.054017 -0.998452 +vn 0.013277 -0.054016 -0.998452 +vn 0.209953 0.685398 0.697244 +vn 0.160855 0.616802 0.770507 +vn -0.197867 -0.721411 -0.663638 +vn -0.041120 0.167277 0.985052 +vn -0.118324 0.125265 0.985042 +vn -0.216685 -0.944186 -0.248114 +vn -0.041119 0.167285 0.985051 +vn -0.243462 -0.942465 -0.229099 +vn -0.226013 -0.859604 -0.458257 +vn 0.225880 -0.293276 -0.928961 +vn 0.208752 0.795151 0.569349 +vn 0.075291 -0.306298 -0.948954 +vn 0.214138 -0.230804 -0.949144 +vn 0.075290 -0.306297 -0.948954 +vn -0.101076 0.411180 0.905933 +vn -0.400906 0.401808 0.823301 +vn 0.361934 -0.397464 -0.843223 +vn -0.283421 0.312318 0.906714 +vn 0.128728 -0.523687 -0.842129 +vn -0.101076 0.411187 0.905930 +vn 0.128724 -0.523678 -0.842135 +vn 0.240064 0.903947 0.353906 +vn 0.501611 -0.571710 -0.649257 +vn 0.178687 -0.726925 -0.663062 +vn 0.272094 0.928802 0.251578 +vn 0.178677 -0.726921 -0.663068 +vn -0.152589 0.620745 0.769020 +vn 0.507164 -0.549366 -0.664065 +vn 0.649876 -0.723942 -0.231448 +vn -0.429747 0.471086 0.770322 +vn 0.232802 -0.947100 -0.220919 +vn -0.152589 0.620748 0.769018 +vn 0.652634 -0.722201 -0.229116 +vn 0.232796 -0.947102 -0.220914 +vn 0.212342 -0.863887 -0.456738 +vn 0.599768 -0.656037 -0.458142 +vn 0.212345 -0.863894 -0.456723 +vn 0.253524 0.960567 0.114173 +vn -0.614613 0.638167 0.463673 +vn -0.196515 0.799471 0.567651 +vn -0.196517 0.799445 0.567687 +vn -0.554634 0.606919 0.569238 +vn 0.253784 0.961552 -0.104931 +vn 0.271559 0.928967 -0.251549 +vn -0.629583 0.691567 0.354064 +vn -0.223357 0.908669 0.352749 +vn -0.223360 0.908659 0.352773 +vn 0.240998 0.907109 -0.345071 +vn -0.671031 0.732581 0.114199 +vn -0.690587 0.723185 0.009662 +vn -0.237158 0.964790 0.113742 +vn -0.243738 -0.943534 0.224354 +vn -0.237154 0.964793 0.113718 +vn -0.211374 -0.945487 0.247741 +vn 0.208788 0.685886 -0.697114 +vn 0.210349 0.800784 -0.560802 +vn -0.237400 0.965778 -0.104466 +vn -0.226427 -0.861785 0.453936 +vn -0.237396 0.965777 -0.104489 +vn -0.671597 0.733454 -0.104894 +vn -0.150281 -0.708783 0.689233 +vn -0.199280 -0.728034 0.655937 +vn 0.162789 0.624613 -0.763779 +vn -0.140482 -0.528439 0.837267 +vn -0.620283 0.645028 -0.446305 +vn -0.631740 0.694030 -0.345293 +vn -0.224140 0.911835 -0.343975 +vn -0.224134 0.911828 -0.343997 +vn 0.650551 -0.724807 0.226800 +vn 0.233064 -0.948163 0.216030 +vn 0.124838 0.228679 0.965464 +vn 0.340013 0.622837 0.704603 +vn 0.124838 0.228679 0.965464 +vn 0.463053 0.848222 0.257101 +vn 0.340013 0.622837 0.704603 +vn 0.463053 0.848222 0.257103 +vn 0.463053 0.848222 -0.257102 +vn 0.463053 0.848222 -0.257104 +vn 0.340014 0.622838 -0.704602 +vn 0.340014 0.622838 -0.704602 +vn 0.124838 0.228679 -0.965464 +vn 0.124838 0.228679 -0.965464 +vn -0.271089 -0.657563 0.702938 +vn -0.134656 -0.698645 0.702682 +vn 0.001212 0.262394 0.964960 +vn -0.004130 0.255631 0.966765 +vn 0.015259 -0.966599 0.255838 +vn -0.048395 -0.251074 0.966757 +vn -0.098845 -0.235782 0.966766 +vn -0.048391 -0.251070 0.966759 +vn -0.018048 0.710918 0.703043 +vn -0.017198 0.711560 0.702414 +vn 0.096398 0.244050 0.964960 +vn 0.048393 0.251068 0.966759 +vn 0.098845 0.235782 0.966766 +vn 0.048394 0.251069 0.966759 +vn -0.015615 0.966591 0.255848 +vn -0.009279 0.968210 0.249968 +vn -0.373438 -0.891681 0.255830 +vn 0.280997 0.653272 0.703048 +vn 0.134664 0.698652 0.702674 +vn 0.280432 0.654208 0.702403 +vn 0.134654 0.698647 0.702681 +vn -0.009396 0.966715 -0.255685 +vn -0.015641 0.968167 -0.249815 +vn 0.373773 0.891538 0.255839 +vn 0.183253 0.950804 0.249782 +vn 0.368491 0.895397 0.249959 +vn 0.183260 0.950804 0.249776 +vn -0.017173 0.710981 -0.703001 +vn -0.018035 0.711585 -0.702368 +vn 0.368044 0.893965 -0.255676 +vn 0.374382 0.892992 -0.249805 +vn 0.183253 0.950805 -0.249776 +vn 0.183259 0.950802 -0.249782 +vn -0.004229 0.261786 -0.965117 +vn 0.004229 -0.261786 -0.965117 +vn 0.001482 0.255179 -0.966893 +vn 0.134655 0.698654 -0.702674 +vn 0.280187 0.653666 -0.703005 +vn 0.281239 0.653912 -0.702356 +vn 0.134663 0.698645 -0.702681 +vn 0.007259 -0.711652 -0.702495 +vn 0.008285 -0.255964 -0.966651 +vn 0.048394 0.251070 -0.966758 +vn 0.101226 0.241462 -0.965116 +vn 0.093464 0.237449 -0.966893 +vn 0.048394 0.251071 -0.966758 +vn 0.019272 -0.966501 -0.255939 +vn 0.015287 -0.968327 -0.249216 +vn 0.007629 -0.711234 -0.702914 +vn -0.048392 -0.251075 -0.966757 +vn -0.104825 -0.239527 -0.965214 +vn -0.048395 -0.251071 -0.966758 +vn -0.098846 -0.235783 -0.966766 +vn -0.271597 -0.657800 -0.702520 +vn -0.271088 -0.657562 -0.702939 +vn -0.183226 -0.950647 -0.250398 +vn -0.183230 -0.950648 -0.250390 +vn -0.134657 -0.698644 -0.702683 +vn -0.134656 -0.698646 -0.702681 +vn -0.377913 -0.891708 -0.249074 +vn -0.373438 -0.891681 -0.255830 +vn 0.019401 -0.968287 0.249087 +vn 0.007260 -0.711651 0.702496 +vn 0.007628 -0.711234 0.702914 +vn -0.271596 -0.657799 0.702521 +vn -0.183230 -0.950648 0.250390 +vn -0.377913 -0.891708 0.249074 +vn -0.183226 -0.950647 0.250398 +vn 0.004229 -0.261786 0.965117 +vn 0.008286 -0.255962 0.966651 +vn -0.104826 -0.239527 0.965214 +vn -0.134658 -0.698647 0.702681 +vn -0.104364 0.873082 -0.476273 +vn -0.110333 0.923696 0.366897 +vn -0.104174 0.873112 -0.476259 +vn -0.110333 0.923696 0.366897 +vn -0.352202 0.495572 -0.793954 +vn -0.084504 0.691675 -0.717248 +vn -0.082686 0.692262 -0.716894 +vn -0.110415 0.923702 0.366855 +vn -0.110211 0.923710 0.366897 +vn -0.036885 0.308806 0.950410 +vn -0.082708 0.692259 -0.716894 +vn -0.056664 0.474392 0.878488 +vn 0.041362 0.317181 0.947462 +vn -0.082708 0.692259 -0.716894 +vn -0.082597 0.692272 -0.716894 +vn -0.082597 0.692272 -0.716894 +vn -0.117162 0.980886 -0.155356 +vn -0.117174 0.980886 0.155346 +vn -0.117162 0.980886 -0.155356 +vn -0.074017 0.619644 0.781385 +vn -0.117133 0.980890 -0.155356 +vn -0.074010 0.619626 0.781400 +vn -0.112487 0.941743 -0.316966 +vn -0.112487 0.941743 -0.316966 +vn -0.074011 0.619626 0.781400 +vn -0.117142 0.980888 0.155356 +vn -0.112495 0.941742 -0.316966 +vn -0.049619 0.403872 -0.913469 +vn -0.117176 0.980886 0.155346 +vn -0.067546 0.553849 -0.829873 +vn -0.066384 0.555626 -0.828778 +vn -0.117200 0.980885 0.155336 +vn -0.066297 0.555656 -0.828765 +vn -0.066357 0.555629 -0.828778 +vn -0.117119 0.980891 0.155356 +vn -0.016664 0.139509 -0.990081 +vn -0.016613 0.139515 -0.990081 +vn -0.048222 0.404039 -0.913470 +vn -0.221009 0.958902 -0.177940 +vn -0.048252 0.404033 -0.913471 +vn 0.390513 0.744780 -0.541112 +vn -0.117173 0.980888 -0.155336 +vn -0.104287 0.873091 -0.476273 +vn -0.071818 0.876498 -0.476019 +vn -0.104287 0.873091 -0.476273 +vn -0.106670 0.872270 -0.477250 +vn -0.114951 0.941357 -0.317227 +vn -0.082687 0.692261 -0.716894 +vn -0.082687 0.692262 -0.716894 +vn -0.082686 0.692262 -0.716894 +vn -0.117165 0.980889 0.155336 +vn -0.066370 0.555648 -0.828765 +vn -0.117165 0.980889 0.155336 +vn -0.066368 0.555648 -0.828765 +vn -0.066370 0.555648 -0.828764 +vn -0.117250 0.980879 0.155336 +vn 0.822976 0.175545 -0.540273 +vn -0.016664 0.139508 -0.990081 +vn 0.135281 0.418955 -0.897873 +vn -0.048261 0.404032 -0.913471 +vn -0.117034 0.980901 0.155356 +vn -0.048260 0.404034 -0.913470 +vn -0.117174 0.980886 -0.155346 +vn -0.117136 0.980892 -0.155336 +vn -0.021495 0.179950 0.983441 +vn -0.104269 0.872854 -0.476712 +vn -0.021494 0.179949 0.983441 +vn -0.112457 0.941703 -0.317094 +vn -0.021510 0.179947 0.983441 +vn -0.112488 0.941655 -0.317227 +vn -0.323883 0.345428 0.880783 +vn -0.117142 0.980890 -0.155346 +vn -0.117176 0.980885 -0.155356 +vn -0.112494 0.941699 -0.317094 +vn -0.075072 0.619518 0.781385 +vn -0.112467 0.941745 -0.316966 +vn -0.056677 0.474381 0.878493 +vn -0.056666 0.474382 0.878494 +vn -0.056601 0.474389 0.878494 +vn 0.196690 0.793214 0.576303 +vn -0.094658 0.792445 0.602554 +vn -0.094653 0.792442 0.602559 +vn -0.056706 0.474387 0.878488 +vn 0.192815 0.793318 0.577468 +vn -0.074035 0.619660 0.781371 +vn -0.074015 0.619644 0.781385 +vn -0.117200 0.980882 -0.155356 +vn -0.117120 0.980894 -0.155336 +vn -0.073933 0.619654 0.781385 +vn -0.074001 0.619664 0.781371 +vn -0.095103 0.792213 0.602789 +vn -0.112485 0.941743 -0.316966 +vn -0.112518 0.941696 -0.317094 +vn -0.110333 0.923712 0.366855 +vn -0.094651 0.792327 0.602710 +vn -0.110333 0.923712 0.366855 +vn -0.110356 0.923709 0.366855 +vn -0.117165 0.980889 -0.155336 +vn -0.117165 0.980889 -0.155336 +vn -0.303172 0.921231 0.243763 +vn -0.110812 0.923647 0.366875 +vn -0.095680 0.792322 0.602553 +vn -0.112456 0.941703 -0.317094 +vn -0.094605 0.792332 0.602710 +vn -0.112479 0.941656 -0.317227 +vn -0.117035 0.980904 -0.155336 +vn -0.117250 0.980876 -0.155356 +vn -0.110346 0.923711 0.366855 +vn -0.112560 0.941646 -0.317227 +vn -0.110313 0.923707 0.366875 +vn -0.112364 0.941757 -0.316966 +vn -0.094656 0.792445 0.602554 +vn -0.104298 0.873090 -0.476273 +vn -0.094656 0.792445 0.602554 +vn -0.106108 0.872632 -0.476711 +vn -0.104285 0.873091 -0.476273 +vn -0.104285 0.873091 -0.476273 +vn -0.110291 0.923701 0.366897 +vn -0.110368 0.923708 0.366855 +vn -0.117162 0.980886 0.155356 +vn -0.117162 0.980886 0.155356 +vn -0.094724 0.792437 0.602554 +vn 0.283965 0.958835 0.000000 +vn -0.094635 0.792444 0.602559 +vn -0.117134 0.980889 0.155356 +vn -0.104264 0.873102 -0.476259 +vn -0.117173 0.980886 0.155346 +vn -0.104313 0.873088 -0.476273 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.992944 -0.118584 0.000000 +vn 0.992943 -0.118593 -0.000012 +vn 0.992944 -0.118584 0.000021 +vn 0.992941 -0.118609 -0.000028 +vn 0.992943 -0.118593 0.000033 +vn 0.992943 -0.118593 0.000033 +vn 0.992941 -0.118609 -0.000028 +vn 0.992944 -0.118584 0.000000 +vn 0.992944 -0.118584 0.000021 +vn 0.992943 -0.118593 -0.000012 +vn -0.000000 0.258820 0.965926 +vn -0.000000 0.707107 0.707107 +vn -0.000000 0.258820 0.965926 +vn -0.000000 0.965926 0.258820 +vn -0.000000 0.707107 0.707107 +vn -0.000000 0.965926 0.258820 +vn -0.004534 0.965916 -0.258817 +vn -0.000491 0.984631 -0.174646 +vn 0.000000 0.989755 -0.142778 +vn -0.004866 0.707100 -0.707097 +vn 0.005535 0.965911 -0.258816 +vn -0.003013 0.682350 -0.731019 +vn -0.000149 0.557063 -0.830470 +vn -0.000078 0.554059 -0.832478 +vn 0.000088 0.587177 -0.809459 +vn 0.000000 0.531425 -0.847105 +vn 0.000683 0.258819 -0.965925 +vn 0.000000 0.267262 -0.963624 +vn 0.000100 0.541024 -0.841007 +vn 0.005189 0.707099 -0.707096 +vn -0.000683 0.258819 -0.965926 +vn 0.000000 0.267262 -0.963624 +vn 0.001367 0.627100 -0.778937 +vn 0.000747 0.772622 -0.634865 +vn -0.000638 0.912701 -0.408627 +vn 0.000000 0.987664 -0.156588 +vn 0.000387 0.897693 -0.440621 +vn 0.000586 0.734306 -0.678819 +vn -0.000392 0.698589 -0.715523 +vn -0.000600 0.875609 -0.483020 +vn 0.000000 0.982547 -0.186012 +vn 0.002182 0.858586 -0.512664 +vn 0.000000 -0.965926 0.258819 +vn 0.000000 -0.965926 0.258819 +vn 0.000000 -0.707108 0.707105 +vn 0.000000 -0.707108 0.707105 +vn 0.000000 -0.258819 0.965926 +vn 0.000000 -0.258819 0.965926 +vn 0.809957 0.096750 -0.578454 +vn 0.809957 0.096750 -0.578454 +vn 0.603961 0.072139 0.793743 +vn 0.896830 0.107122 -0.429210 +vn 0.603961 0.072139 0.793743 +vn 0.896830 0.107122 -0.429209 +vn 0.172349 0.020676 0.984819 +vn 0.420907 0.050367 0.905705 +vn 0.456211 0.054494 -0.888201 +vn 0.456212 0.054491 -0.888201 +vn 0.172344 0.020585 0.984822 +vn 0.420918 0.050276 0.905705 +vn 0.456212 0.054491 -0.888201 +vn 0.420918 0.050276 0.905705 +vn 0.487095 0.724898 0.487095 +vn 0.787367 0.094078 0.609264 +vn 0.809959 0.096741 -0.578453 +vn 0.809958 0.096744 -0.578454 +vn 0.787371 0.094046 0.609264 +vn 0.787371 0.094045 0.609264 +vn 0.603961 0.072143 0.793742 +vn 0.976307 0.116621 -0.182274 +vn 0.603961 0.072139 0.793743 +vn 0.976309 0.116611 -0.182270 +vn 0.603961 0.072139 0.793742 +vn 0.238374 0.389546 0.889624 +vn 0.172343 0.020585 0.984822 +vn 0.172344 0.020585 0.984822 +vn 0.420918 0.050276 0.905705 +vn 0.420917 0.050278 0.905705 +vn 0.896831 0.107114 -0.429209 +vn 0.420917 0.050275 0.905705 +vn 0.896826 0.107126 -0.429218 +vn 0.976307 0.116626 -0.182274 +vn 0.976311 0.116593 -0.182270 +vn 0.896830 0.107120 -0.429209 +vn 0.896824 0.107142 -0.429217 +vn 0.457362 0.762654 -0.457361 +vn 0.633801 0.075703 -0.769783 +vn 0.633801 0.075707 -0.769783 +vn 0.633801 0.075703 -0.769783 +vn 0.976308 0.116616 -0.182274 +vn 0.976308 0.116616 -0.182274 +vn 0.976307 0.116621 -0.182274 +vn 0.976310 0.116607 -0.182270 +vn 0.809958 0.096744 -0.578454 +vn 0.809958 0.096743 -0.578453 +vn 0.809954 0.096777 -0.578454 +vn 0.972195 0.116130 0.203348 +vn 0.109179 0.013041 -0.993937 +vn 0.972195 0.116123 0.203351 +vn 0.109179 0.013040 -0.993937 +vn 0.976309 0.116613 -0.182270 +vn 0.976305 0.116637 -0.182274 +vn 0.316342 0.037732 -0.947895 +vn 0.972198 0.116102 0.203348 +vn 0.316336 0.037784 -0.947895 +vn 0.972199 0.116098 0.203348 +vn 0.316336 0.037783 -0.947895 +vn 0.779404 -0.063997 0.623245 +vn 0.887449 0.106000 0.448551 +vn 0.594730 0.068756 -0.800980 +vn 0.976308 0.116613 -0.182274 +vn 0.896830 0.107120 -0.429209 +vn 0.252967 0.965097 -0.067783 +vn 0.896830 0.107120 -0.429209 +vn 0.896826 0.107157 -0.429209 +vn 0.976308 0.116613 -0.182274 +vn 0.456218 0.054439 -0.888201 +vn 0.887451 0.105978 0.448553 +vn 0.887451 0.105981 0.448551 +vn 0.787367 0.094029 0.609272 +vn 0.456212 0.054491 -0.888201 +vn 0.456212 0.054491 -0.888201 +vn 0.972196 0.116125 0.203348 +vn 0.972196 0.116125 0.203348 +vn 0.818214 -0.060395 -0.571733 +vn 0.896676 0.106598 -0.429662 +vn 0.887448 0.106001 0.448553 +vn 0.887449 0.106002 0.448551 +vn 0.809637 0.096689 -0.578912 +vn 0.972195 0.116129 0.203348 +vn 0.972195 0.116129 0.203348 +vn 0.810232 0.094438 -0.578452 +vn 0.972196 0.116122 0.203348 +vn 0.606185 -0.068667 -0.792354 +vn 0.972196 0.116122 0.203348 +vn 0.972196 0.116122 0.203348 +vn 0.595442 0.071123 -0.800244 +vn 0.896826 0.107118 -0.429219 +vn 0.887448 0.106006 0.448551 +vn 0.887448 0.106006 0.448551 +vn 0.896832 0.107102 -0.429210 +vn 0.887449 0.105999 0.448551 +vn 0.887449 0.105999 0.448551 +vn 0.896825 0.107131 -0.429219 +vn 0.787366 0.094035 0.609272 +vn 0.787371 0.094047 0.609264 +vn 0.633801 0.075708 -0.769782 +vn 0.787370 0.094052 0.609264 +vn 0.633801 0.075703 -0.769783 +vn 0.787370 0.094052 0.609264 +vn 0.633801 0.075701 -0.769783 +vn 0.787371 0.094046 0.609264 +vn 0.809958 0.096745 -0.578453 +vn 0.809958 0.096746 -0.578454 +vn 0.787371 0.094046 0.609264 +vn 0.359183 -0.271703 0.892841 +vn 0.603959 0.072152 0.793743 +vn 0.245743 0.313832 -0.917126 +vn 0.316336 0.037784 -0.947894 +vn 0.420947 0.050282 0.905690 +vn 0.603960 0.072143 0.793743 +vn 0.217272 0.067569 -0.973770 +vn 0.972197 0.116113 0.203351 +vn 0.976306 0.116603 -0.182294 +vn 0.976366 0.116129 -0.182274 +vn 0.603960 0.072143 0.793743 +vn 0.959556 0.114652 0.257114 +vn 0.953022 0.160573 0.256836 +vn 0.887449 0.105999 0.448551 +vn 0.228678 -0.124838 -0.965465 +vn 0.228678 -0.124838 -0.965465 +vn 0.622840 -0.340015 -0.704599 +vn 0.622841 -0.340015 -0.704598 +vn 0.848220 -0.463052 0.257112 +vn 0.848220 -0.463051 -0.257113 +vn 0.848219 -0.463051 -0.257113 +vn 0.622840 -0.340014 0.704600 +vn 0.848219 -0.463051 0.257113 +vn 0.228678 -0.124838 0.965465 +vn 0.622840 -0.340015 0.704599 +vn 0.228678 -0.124838 0.965465 +vn -0.228678 -0.124838 -0.965465 +vn -0.622841 -0.340015 -0.704598 +vn -0.228678 -0.124838 -0.965465 +vn -0.848220 -0.463051 -0.257113 +vn -0.622841 -0.340015 -0.704598 +vn -0.848219 -0.463051 -0.257114 +vn -0.848220 -0.463052 0.257112 +vn -0.848219 -0.463051 0.257113 +vn -0.622841 -0.340015 0.704599 +vn -0.622841 -0.340015 0.704599 +vn -0.228678 -0.124838 0.965465 +vn -0.228678 -0.124838 0.965465 +vn -0.972120 0.116115 -0.203716 +vn -0.972120 0.116115 -0.203716 +vn -0.953038 0.160479 0.256837 +vn -0.976248 0.116607 0.182601 +vn -0.972120 0.116115 -0.203716 +vn -0.972120 0.116114 -0.203716 +vn -0.976248 0.116608 0.182601 +vn -0.976248 0.116608 0.182601 +vn -0.972120 0.116111 -0.203716 +vn -0.972119 0.116119 -0.203716 +vn -0.899156 0.109001 0.423836 +vn -0.976248 0.116606 0.182601 +vn -0.976248 0.116608 0.182601 +vn -0.899346 0.107422 0.423836 +vn -0.899346 0.107422 0.423836 +vn -0.972120 0.116114 -0.203716 +vn -0.972120 0.116116 -0.203717 +vn -0.976245 0.116608 0.182617 +vn -0.972120 0.116111 -0.203717 +vn -0.899346 0.107421 0.423836 +vn -0.899346 0.107421 0.423836 +vn -0.813569 0.095154 0.573630 +vn -0.697439 0.135918 0.703637 +vn -0.813332 0.097148 0.573631 +vn -0.813332 0.097148 0.573631 +vn -0.976248 0.116608 0.182601 +vn -0.172061 0.020552 -0.984872 +vn -0.976248 0.116607 0.182600 +vn -0.252393 0.080877 -0.964239 +vn -0.976247 0.116612 0.182601 +vn -0.172068 0.020654 -0.984869 +vn -0.976248 0.116604 0.182600 +vn -0.172061 0.020552 -0.984872 +vn -0.813333 0.097147 0.573631 +vn -0.813332 0.097148 0.573631 +vn -0.414737 0.051397 -0.908489 +vn -0.471523 -0.069800 -0.879087 +vn -0.899346 0.107422 0.423836 +vn -0.414944 0.049666 -0.908490 +vn -0.899345 0.107423 0.423838 +vn -0.414956 0.049564 -0.908490 +vn -0.414956 0.049564 -0.908490 +vn -0.821705 -0.046428 0.568020 +vn -0.696858 0.139588 -0.703494 +vn -0.899346 0.107419 0.423838 +vn -0.599082 0.068914 -0.797716 +vn -0.899346 0.107419 0.423838 +vn -0.976293 0.116226 0.182601 +vn -0.899345 0.107423 0.423838 +vn -0.976248 0.116607 0.182601 +vn -0.598773 0.071520 -0.797719 +vn -0.899214 0.107012 0.424221 +vn -0.598773 0.071520 -0.797719 +vn -0.976248 0.116608 0.182601 +vn -0.629065 0.071706 0.774039 +vn -0.598773 0.071520 -0.797719 +vn -0.598770 0.071505 -0.797723 +vn -0.628664 0.075091 0.774043 +vn -0.791342 0.091707 -0.604457 +vn -0.628664 0.075091 0.774043 +vn -0.813332 0.097148 0.573631 +vn -0.813332 0.097148 0.573631 +vn -0.813312 0.095343 0.573963 +vn -0.791014 0.094482 -0.604459 +vn -0.813333 0.097145 0.573631 +vn -0.450163 0.054806 0.891263 +vn -0.791014 0.094482 -0.604459 +vn -0.954493 0.151417 -0.256936 +vn -0.315854 0.037703 0.948058 +vn -0.889925 0.107449 -0.443270 +vn -0.450285 0.053784 0.891263 +vn -0.450285 0.053784 0.891263 +vn -0.465613 -0.198917 0.862344 +vn -0.628664 0.075091 0.774043 +vn -0.628664 0.075090 0.774043 +vn -0.628664 0.075091 0.774043 +vn -0.890061 0.106313 -0.443270 +vn -0.450259 0.053756 0.891278 +vn -0.890061 0.106313 -0.443270 +vn -0.450285 0.053784 0.891263 +vn -0.627946 0.073217 0.774805 +vn -0.109041 0.013024 0.993952 +vn -0.791014 0.094482 -0.604459 +vn -0.109041 0.013024 0.993952 +vn -0.791014 0.094481 -0.604459 +vn -0.251828 0.085116 0.964022 +vn -0.312812 0.062347 0.947767 +vn -0.315851 0.037727 0.948058 +vn -0.315851 0.037726 0.948058 +vn -0.890061 0.106313 -0.443270 +vn -0.890061 0.106312 -0.443272 +vn -0.791018 0.094493 -0.604452 +vn -0.791014 0.094482 -0.604459 +vn -0.786158 -0.041347 -0.616641 +vn -0.791019 0.094480 -0.604452 +vn -0.890060 0.106313 -0.443272 +vn -0.890060 0.106313 -0.443272 +vn -0.972120 0.116114 -0.203716 +vn -0.890061 0.106310 -0.443272 +vn -0.890061 0.106310 -0.443272 +vn -0.890061 0.106310 -0.443272 +vn -0.972120 0.116114 -0.203716 +vn -0.972120 0.116114 -0.203716 +vn 0.959691 0.113513 0.257114 +vn 0.235761 0.028160 -0.971403 +vn 0.235948 0.028421 -0.971350 +vn 0.258744 0.030494 -0.965465 +vn 0.649894 0.102453 -0.753087 +vn 0.473041 0.056491 -0.879227 +vn 0.473011 0.056742 -0.879228 +vn 0.704700 0.083311 -0.704597 +vn 0.657863 0.080350 -0.748840 +vn 0.658061 0.078695 -0.748841 +vn 0.881546 0.324075 -0.343296 +vn 0.834570 0.101502 -0.541470 +vn 0.834782 0.099737 -0.541471 +vn 0.959700 0.113437 -0.257114 +vn 0.919014 0.183364 -0.348986 +vn 0.930176 0.111032 -0.349922 +vn -0.025585 0.999636 0.008540 +vn 0.987619 0.117966 -0.103408 +vn 0.976216 0.190702 -0.103128 +vn 0.988792 0.118106 0.091336 +vn 0.913935 0.230857 0.333809 +vn 0.935127 0.111617 0.336273 +vn 0.852653 0.101856 0.512454 +vn 0.852380 0.104115 0.512453 +vn 0.725805 0.087358 0.682331 +vn 0.704694 0.083351 0.704598 +vn 0.725325 0.088905 0.682642 +vn 0.725636 0.086313 0.682643 +vn 0.457644 0.054885 0.887440 +vn 0.159199 0.019237 0.987059 +vn 0.158923 0.018982 0.987109 +vn 0.258836 0.029724 0.965464 +vn 0.457277 0.055294 0.887604 +vn 0.457308 0.055030 0.887604 +vn -0.959691 0.113513 -0.257113 +vn -0.158802 0.018968 -0.987128 +vn -0.258836 0.029723 -0.965464 +vn -0.457375 0.054867 -0.887580 +vn -0.159095 0.019238 -0.987076 +vn -0.704695 0.083353 -0.704597 +vn -0.725537 0.087350 -0.682617 +vn -0.457000 0.055283 -0.887747 +vn -0.457034 0.054997 -0.887747 +vn -0.725373 0.086278 -0.682928 +vn -0.725060 0.088884 -0.682926 +vn -0.913746 0.231563 -0.333837 +vn -0.852275 0.104113 -0.512629 +vn -0.852548 0.101843 -0.512630 +vn -0.935106 0.111614 -0.336331 +vn -0.959701 0.113436 0.257113 +vn -0.981787 0.189542 0.012946 +vn -0.992776 0.119276 0.012980 +vn -0.881383 0.324464 0.343346 +vn -0.930152 0.111029 0.349986 +vn -0.919152 0.182504 0.349073 +vn -0.704699 0.083309 0.704598 +vn -0.834681 0.099725 0.541629 +vn -0.834478 0.101412 0.541628 +vn -0.649646 0.102647 0.753275 +vn -0.657921 0.078679 0.748965 +vn -0.657732 0.080253 0.748964 +vn -0.258744 0.030491 0.965465 +vn -0.235577 0.028138 0.971448 +vn -0.235748 0.028375 0.971400 +vn -0.472844 0.056701 0.879320 +vn -0.472872 0.056471 0.879320 +vn 0.000000 0.309017 -0.951056 +vn 0.000000 0.309017 -0.951056 +vn 0.000000 0.809017 -0.587785 +vn 0.000000 0.809017 -0.587785 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.809017 0.587785 +vn 0.000000 0.809017 0.587785 +vn 0.000000 0.309016 0.951057 +vn 0.000000 0.309016 0.951057 +vn 0.000000 0.989755 0.142778 +vn 0.007959 0.951026 0.309007 +vn 0.001950 0.912224 0.409688 +vn -0.000491 0.984631 0.174646 +vn 0.005086 0.623247 0.782009 +vn -0.007699 0.951028 0.309008 +vn 0.004239 0.527930 0.849277 +vn 0.007347 0.587769 0.808995 +vn 0.000088 0.587177 0.809459 +vn -0.001817 0.683278 0.730156 +vn 0.000000 0.531438 0.847098 +vn -0.000078 0.554064 0.832474 +vn -0.004917 0.545375 0.838177 +vn 0.000000 0.414715 0.909951 +vn 0.000000 0.414715 0.909951 +vn -0.007456 0.587769 0.808995 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.587785 0.809017 +vn 0.000000 -0.587785 0.809017 +vn 0.000000 -0.951057 0.309017 +vn 0.000000 -0.951057 0.309017 +vn -0.000600 0.875609 0.483021 +vn 0.000000 0.987664 0.156588 +vn 0.000387 0.897693 0.440621 +vn 0.000586 0.734306 0.678819 +vn -0.000392 0.698589 0.715523 +vn -0.001117 0.773553 0.633730 +vn 0.000000 0.982548 0.186012 +vn 0.001553 0.858397 0.512984 +vn -0.403657 -0.050046 0.913541 +vn -0.923701 -0.110335 -0.366883 +vn -0.404038 -0.048262 0.913468 +vn -0.923706 -0.110319 -0.366874 +vn -0.555638 -0.066370 0.828771 +vn -0.792206 -0.095117 -0.602796 +vn -0.555638 -0.066370 0.828771 +vn -0.792327 -0.094638 -0.602712 +vn -0.495529 -0.352263 0.793953 +vn -0.692261 -0.082690 0.716894 +vn -0.691670 -0.084514 0.717251 +vn -0.692262 -0.082682 0.716894 +vn -0.692261 -0.082691 0.716894 +vn -0.923706 -0.110325 -0.366872 +vn -0.553796 -0.067997 0.829871 +vn -0.923700 -0.110344 -0.366883 +vn -0.555638 -0.066371 0.828771 +vn -0.139510 -0.016664 0.990080 +vn -0.139517 -0.016608 0.990080 +vn -0.921234 -0.303158 -0.243769 +vn -0.404039 -0.048208 0.913470 +vn -0.923646 -0.110826 -0.366872 +vn -0.139510 -0.016664 0.990080 +vn -0.923705 -0.110331 -0.366872 +vn -0.404033 -0.048259 0.913470 +vn -0.404033 -0.048259 0.913470 +vn -0.923705 -0.110331 -0.366872 +vn -0.980888 -0.117161 -0.155347 +vn -0.980888 -0.117161 -0.155347 +vn -0.980887 -0.117165 -0.155347 +vn -0.980887 -0.117165 -0.155347 +vn -0.744776 0.390524 0.541110 +vn -0.876498 -0.071836 0.476015 +vn -0.980887 -0.117166 -0.155347 +vn -0.980890 -0.117149 -0.155342 +vn -0.980889 -0.117155 -0.155342 +vn -0.980886 -0.117175 -0.155347 +vn -0.980888 -0.117161 -0.155347 +vn -0.980888 -0.117161 -0.155347 +vn -0.692261 -0.082690 0.716894 +vn -0.980888 -0.117161 0.155347 +vn -0.980888 -0.117161 0.155347 +vn -0.308806 -0.036887 -0.950409 +vn -0.941697 -0.112480 0.317104 +vn -0.941699 -0.112480 0.317097 +vn -0.619640 -0.074015 -0.781388 +vn -0.980887 -0.117165 0.155347 +vn -0.179950 -0.021494 -0.983441 +vn -0.980887 -0.117165 0.155347 +vn -0.179950 -0.021495 -0.983441 +vn -0.317181 0.041361 -0.947463 +vn -0.555637 -0.066370 0.828772 +vn -0.793213 0.196698 -0.576301 +vn -0.941696 -0.112484 0.317104 +vn -0.941696 -0.112484 0.317105 +vn -0.793317 0.192827 -0.577465 +vn -0.980888 -0.117161 -0.155347 +vn -0.923703 -0.110353 -0.366872 +vn -0.980884 -0.117180 -0.155354 +vn -0.980888 -0.117166 0.155342 +vn -0.474389 -0.056663 -0.878490 +vn -0.980889 -0.117149 0.155347 +vn -0.461129 -0.149811 -0.874595 +vn -0.474389 -0.056665 -0.878490 +vn -0.941698 -0.112468 0.317104 +vn -0.474389 -0.056665 -0.878490 +vn -0.941698 -0.112468 0.317104 +vn -0.980888 -0.117155 0.155347 +vn -0.619641 -0.074014 -0.781388 +vn -0.980887 -0.117175 0.155342 +vn -0.619649 -0.074013 -0.781382 +vn -0.619639 -0.074015 -0.781389 +vn -0.941696 -0.112491 0.317104 +vn -0.619651 -0.073998 -0.781382 +vn -0.941698 -0.112494 0.317097 +vn -0.980888 -0.117161 0.155347 +vn -0.980888 -0.117161 0.155347 +vn -0.618687 -0.075010 -0.782048 +vn -0.619639 -0.074016 -0.781389 +vn -0.958833 0.283971 0.000000 +vn -0.872774 -0.104923 0.476714 +vn -0.941700 -0.112480 0.317097 +vn -0.980891 -0.117132 -0.155347 +vn -0.941700 -0.112480 0.317097 +vn -0.175511 0.823051 0.540169 +vn -0.792443 -0.094654 -0.602556 +vn -0.792445 -0.094653 -0.602554 +vn -0.418957 0.135278 0.897872 +vn -0.873094 -0.104286 0.476268 +vn -0.873094 -0.104286 0.476268 +vn -0.873093 -0.104290 0.476268 +vn -0.792448 -0.094634 -0.602554 +vn -0.792443 -0.094656 -0.602556 +vn -0.873093 -0.104290 0.476268 +vn -0.923706 -0.110331 -0.366872 +vn -0.483524 -0.852945 0.196697 +vn -0.923705 -0.110331 -0.366874 +vn -0.980888 -0.117161 0.155347 +vn -0.980885 -0.117180 0.155347 +vn -0.980888 -0.117161 0.155347 +vn -0.940503 -0.113021 0.320438 +vn -0.941700 -0.112480 0.317097 +vn -0.792445 -0.094658 -0.602554 +vn -0.873093 -0.104275 0.476272 +vn -0.792445 -0.094656 -0.602554 +vn -0.873093 -0.104290 0.476268 +vn -0.873093 -0.104296 0.476268 +vn -0.872629 -0.106125 0.476714 +vn -0.980891 -0.117130 0.155347 +vn -0.873094 -0.104286 0.476268 +vn -0.873093 -0.104280 0.476272 +vn -0.923704 -0.110335 -0.366874 +vn -0.692262 -0.082686 0.716894 +vn -0.923704 -0.110335 -0.366874 +vn -0.692262 -0.082686 0.716894 +vn -0.692261 -0.082690 0.716894 +vn -0.941699 -0.112486 0.317097 +vn -0.692261 -0.082689 0.716894 +vn -0.792446 -0.094648 -0.602554 +vn -0.555637 -0.066367 0.828772 +vn -0.792198 -0.095709 -0.602712 +vn -0.555638 -0.066368 0.828771 +vn -0.622841 0.340016 -0.704597 +vn -0.849616 0.463814 -0.251056 +vn -0.849617 0.463815 -0.251052 +vn -0.849617 0.463814 0.251052 +vn -0.849616 0.463815 0.251056 +vn -0.622068 0.341427 -0.704599 +vn -0.229418 0.123486 -0.965463 +vn -0.223299 0.121901 -0.967098 +vn -0.223297 0.121900 0.967098 +vn -0.622840 0.340015 0.704599 +vn -0.622842 0.340015 0.704597 +vn -0.622842 0.340015 -0.704597 +vn -0.622070 0.341428 -0.704597 +vn -0.622842 0.340015 -0.704597 +vn -0.848220 0.463051 -0.257113 +vn -0.849616 0.463814 -0.251056 +vn -0.849616 0.463814 -0.251056 +vn -0.850366 0.462437 -0.251055 +vn -0.848952 0.461707 0.257113 +vn -0.849616 0.463814 0.251056 +vn -0.849616 0.463814 0.251056 +vn -0.849616 0.463814 0.251056 +vn -0.229415 0.123485 0.965464 +vn -0.622069 0.341428 0.704597 +vn -0.223299 0.121901 0.967098 +vn -0.622842 0.340015 0.704597 +vn -0.622070 0.341428 0.704597 +vn -0.622842 0.340015 0.704597 +vn -0.227940 0.126190 -0.965463 +vn -0.623612 0.338602 -0.704597 +vn -0.623611 0.338601 -0.704598 +vn -0.848220 0.463051 -0.257113 +vn -0.848864 0.465190 -0.251053 +vn -0.847485 0.464395 0.257113 +vn -0.849617 0.463814 0.251054 +vn -0.223299 0.121901 -0.967097 +vn -0.223299 0.121901 -0.967098 +vn -0.227938 0.126188 0.965464 +vn -0.623613 0.338602 0.704596 +vn -0.623611 0.338601 0.704598 +vn -0.622840 0.340014 -0.704599 +vn -0.622841 0.340015 -0.704599 +vn -0.849617 0.463814 -0.251053 +vn -0.849617 0.463815 -0.251052 +vn -0.849617 0.463814 0.251054 +vn -0.849617 0.463814 0.251052 +vn -0.223297 0.121900 -0.967098 +vn -0.223299 0.121901 0.967097 +vn -0.223299 0.121901 0.967098 +vn -0.622841 0.340015 0.704599 +vn -0.622840 0.340015 0.704599 +vn -0.622840 0.340014 -0.704599 +vn 0.622841 0.340015 -0.704598 +vn 0.622840 0.340015 -0.704599 +vn 0.849617 0.463814 -0.251052 +vn 0.849616 0.463814 -0.251054 +vn 0.849617 0.463814 0.251055 +vn 0.849617 0.463814 0.251053 +vn 0.227941 0.126191 -0.965463 +vn 0.223299 0.121901 -0.967098 +vn 0.223299 0.121901 0.967097 +vn 0.223299 0.121901 0.967098 +vn 0.622841 0.340015 0.704598 +vn 0.622840 0.340015 0.704599 +vn 0.623611 0.338601 -0.704598 +vn 0.622840 0.340015 -0.704599 +vn 0.623612 0.338602 -0.704597 +vn 0.622841 0.340015 -0.704598 +vn 0.848220 0.463051 -0.257113 +vn 0.849617 0.463814 -0.251054 +vn 0.849617 0.463814 -0.251052 +vn 0.848864 0.465190 -0.251053 +vn 0.847485 0.464395 0.257113 +vn 0.849617 0.463814 0.251054 +vn 0.849617 0.463814 0.251053 +vn 0.849617 0.463814 0.251054 +vn 0.227938 0.126189 0.965464 +vn 0.623613 0.338602 0.704596 +vn 0.223299 0.121901 0.967098 +vn 0.622840 0.340015 0.704599 +vn 0.623612 0.338601 0.704597 +vn 0.622841 0.340015 0.704598 +vn 0.229418 0.123486 -0.965463 +vn 0.622069 0.341427 -0.704598 +vn 0.622069 0.341427 -0.704598 +vn 0.848220 0.463051 -0.257113 +vn 0.850367 0.462437 -0.251053 +vn 0.848952 0.461707 0.257113 +vn 0.849617 0.463814 0.251054 +vn 0.223299 0.121901 -0.967098 +vn 0.229415 0.123485 0.965464 +vn 0.622070 0.341428 0.704596 +vn 0.622069 0.341427 0.704597 +vn 0.622841 0.340015 -0.704599 +vn 0.622841 0.340015 -0.704599 +vn 0.849617 0.463814 -0.251054 +vn 0.849617 0.463814 -0.251054 +vn 0.849617 0.463814 0.251054 +vn 0.849617 0.463814 0.251054 +vn 0.223299 0.121901 -0.967097 +vn 0.223299 0.121901 -0.967098 +vn 0.223299 0.121901 0.967098 +vn 0.622841 0.340015 0.704599 +vn 0.622841 0.340015 0.704599 +vn 0.906643 -0.108293 -0.407764 +vn 0.906643 -0.108293 -0.407764 +vn 0.906643 -0.108293 -0.407764 +vn 0.906643 -0.108295 -0.407763 +vn 0.969275 -0.115775 0.217030 +vn 0.979243 -0.116966 -0.165537 +vn 0.978870 -0.120464 -0.165233 +vn 0.964399 -0.063276 -0.256771 +vn 0.906873 -0.106349 -0.407763 +vn 0.906643 -0.108292 -0.407764 +vn 0.906643 -0.108295 -0.407763 +vn 0.979293 -0.116972 -0.165234 +vn 0.979293 -0.116972 -0.165234 +vn 0.979293 -0.116971 -0.165234 +vn 0.979293 -0.116971 -0.165234 +vn 0.979293 -0.116971 -0.165234 +vn 0.979293 -0.116971 -0.165234 +vn 0.979293 -0.116971 -0.165234 +vn 0.979293 -0.116971 -0.165234 +vn 0.979293 -0.116970 -0.165234 +vn 0.979293 -0.116971 -0.165234 +vn 0.979293 -0.116973 -0.165234 +vn 0.969246 -0.116017 0.217030 +vn 0.969285 -0.115777 0.216986 +vn 0.689215 -0.306325 0.656618 +vn 0.883959 -0.105839 0.455427 +vn 0.969285 -0.115775 0.216986 +vn 0.969285 -0.115775 0.216986 +vn 0.139920 -0.016714 -0.990022 +vn 0.139920 -0.016713 -0.990022 +vn 0.883989 -0.105587 0.455427 +vn 0.264921 0.024644 -0.963955 +vn 0.883989 -0.105587 0.455427 +vn 0.365635 -0.124574 -0.922384 +vn 0.771761 -0.092182 0.629196 +vn 0.969285 -0.115776 0.216986 +vn 0.969285 -0.115776 0.216986 +vn 0.883989 -0.105588 0.455427 +vn 0.506823 -0.062503 -0.859781 +vn 0.883989 -0.105588 0.455427 +vn 0.385225 -0.046016 -0.921674 +vn 0.385225 -0.046013 -0.921675 +vn 0.969285 -0.115775 0.216986 +vn 0.385523 -0.043510 -0.921672 +vn 0.507055 -0.060566 -0.859783 +vn 0.969285 -0.115775 0.216986 +vn 0.507015 -0.060885 -0.859784 +vn 0.507054 -0.060564 -0.859784 +vn 0.969285 -0.115774 0.216985 +vn 0.665257 -0.081805 -0.742119 +vn 0.969285 -0.115776 0.216985 +vn 0.962668 -0.084983 0.257000 +vn 0.969285 -0.115778 0.216986 +vn 0.770918 -0.347776 -0.533608 +vn 0.883989 -0.105589 0.455427 +vn 0.883991 -0.105587 0.455425 +vn 0.884091 -0.104732 0.455427 +vn 0.665903 -0.079538 -0.741786 +vn 0.883989 -0.105589 0.455427 +vn 0.883991 -0.105587 0.455425 +vn 0.771690 -0.092776 0.629196 +vn 0.828165 -0.098919 -0.551686 +vn 0.771843 -0.092192 0.629094 +vn 0.828638 -0.101350 -0.550534 +vn 0.905552 -0.111738 -0.409255 +vn 0.771843 -0.092192 0.629094 +vn 0.771842 -0.092194 0.629094 +vn 0.666001 -0.081490 -0.741487 +vn 0.665903 -0.079538 -0.741786 +vn 0.709801 -0.032566 0.703649 +vn 0.771843 -0.092191 0.629094 +vn 0.771843 -0.092191 0.629094 +vn 0.709085 -0.040937 -0.703933 +vn 0.666230 -0.079579 -0.741488 +vn 0.771430 -0.095606 0.629091 +vn 0.386176 -0.268301 0.882543 +vn 0.666230 -0.079579 -0.741488 +vn 0.573291 -0.069153 0.816428 +vn 0.667364 -0.069818 -0.741452 +vn 0.573590 -0.068512 0.816272 +vn 0.573354 -0.070476 0.816271 +vn 0.828919 -0.099010 -0.550536 +vn 0.573590 -0.068511 0.816273 +vn 0.828919 -0.099010 -0.550536 +vn 0.573590 -0.068511 0.816273 +vn 0.180546 -0.021565 0.983330 +vn 0.180543 -0.021593 0.983330 +vn 0.264061 0.016541 0.964364 +vn 0.422752 -0.050522 0.904836 +vn 0.422961 -0.048843 0.904830 +vn 0.422764 -0.050496 0.904832 +vn 0.906643 -0.108294 -0.407764 +vn 0.828919 -0.099011 -0.550536 +vn 0.828919 -0.099010 -0.550537 +vn 0.906643 -0.108293 -0.407764 +vn 0.906643 -0.108293 -0.407764 +vn 0.828749 -0.100428 -0.550535 +vn 0.828919 -0.099012 -0.550536 +vn 0.828919 -0.099009 -0.550537 +vn -0.959455 -0.115488 0.257114 +vn -0.212135 -0.025259 -0.976914 +vn -0.212087 -0.025333 -0.976922 +vn -0.258610 -0.031633 -0.965464 +vn -0.614422 0.003989 -0.788967 +vn -0.451594 -0.053857 -0.890597 +vn -0.451581 -0.053961 -0.890597 +vn -0.704459 -0.085316 -0.704598 +vn -0.625917 -0.074689 -0.776305 +vn -0.625969 -0.074255 -0.776305 +vn -0.886994 0.242108 -0.393225 +vn -0.811364 -0.096332 -0.576548 +vn -0.811302 -0.096860 -0.576548 +vn -0.959417 -0.115807 -0.257114 +vn -0.913538 -0.109168 -0.391831 +vn -0.914432 -0.101450 -0.391819 +vn -0.378814 0.925318 0.016911 +vn -0.981993 -0.117294 -0.148097 +vn -0.990948 -0.118363 0.063343 +vn -0.982874 -0.109671 -0.148093 +vn -0.951298 0.032146 0.306591 +vn -0.944063 -0.112854 0.309854 +vn -0.857364 -0.098892 0.505122 +vn -0.856956 -0.102352 0.505125 +vn -0.721451 -0.084633 0.687274 +vn -0.704525 -0.084780 0.704597 +vn -0.721470 -0.082728 0.687486 +vn -0.721039 -0.086370 0.687490 +vn -0.149178 -0.017818 0.988650 +vn -0.435507 -0.051272 0.898724 +vn -0.149789 -0.017145 0.988569 +vn -0.258551 -0.032100 0.965464 +vn -0.435206 -0.050422 0.898918 +vn -0.435060 -0.051646 0.898919 +vn 0.959456 -0.115487 -0.257113 +vn 0.258553 -0.032099 -0.965463 +vn 0.149391 -0.017844 -0.988617 +vn 0.436042 -0.051421 -0.898456 +vn 0.149932 -0.017247 -0.988546 +vn 0.704523 -0.084785 -0.704599 +vn 0.721960 -0.084756 -0.686724 +vn 0.435593 -0.051708 -0.898658 +vn 0.435732 -0.050540 -0.898657 +vn 0.721979 -0.082876 -0.686934 +vn 0.721559 -0.086426 -0.686937 +vn 0.951360 0.029766 -0.306640 +vn 0.857539 -0.098996 -0.504804 +vn 0.944081 -0.112856 -0.309797 +vn 0.857141 -0.102374 -0.504807 +vn 0.959417 -0.115808 0.257114 +vn 0.990234 -0.109608 0.086151 +vn 0.989329 -0.117495 0.086154 +vn 0.887124 0.242246 0.392846 +vn 0.914631 -0.100436 0.391616 +vn 0.913622 -0.109178 0.391631 +vn 0.704461 -0.085315 0.704596 +vn 0.811435 -0.096876 0.576358 +vn 0.811529 -0.096086 0.576358 +vn 0.614802 0.003508 0.788673 +vn 0.626098 -0.074710 0.776157 +vn 0.626185 -0.073984 0.776156 +vn 0.212408 -0.025371 0.976852 +vn 0.258607 -0.031628 0.965465 +vn 0.212487 -0.025250 0.976838 +vn 0.451871 -0.053995 0.890448 +vn 0.451889 -0.053841 0.890448 +vn -0.009860 -0.994504 0.104230 +vn -0.002795 -0.980334 0.197324 +vn 0.000141 -0.850182 0.526489 +vn 0.001933 -0.803097 -0.595846 +vn 0.008579 -0.770598 0.637264 +vn -0.002879 -0.843404 0.537272 +vn 0.004349 -0.842097 -0.539309 +vn -0.007403 -0.785391 0.618955 +vn -0.000096 -0.824044 0.566526 +vn 0.000000 -0.810595 0.585607 +vn 0.000000 -0.758721 -0.651416 +vn 0.000000 -0.686686 0.726954 +vn 0.000000 -0.758721 -0.651416 +vn 0.000095 -0.823994 -0.566598 +vn 0.000000 -0.810658 -0.585519 +vn 0.000000 -0.686686 0.726954 +vn -0.008579 -0.770598 0.637264 +vn 0.000000 -0.289089 0.957302 +vn 0.000000 -0.289089 0.957302 +vn -0.000457 -0.894421 0.447227 +vn -0.000445 -0.970161 0.242461 +vn -0.000218 -0.999967 0.008162 +vn -0.000207 -0.976140 -0.217142 +vn 0.005054 -0.911835 -0.410525 +vn -0.000301 -0.914115 -0.405454 +vn 0.000296 -0.957357 -0.288906 +vn -0.000319 -0.998670 -0.051562 +vn 0.001052 -0.913741 0.406297 +vn 0.000459 -0.894347 -0.447373 +vn 0.009307 -0.885974 -0.463641 +vn 0.000449 -0.970128 -0.242595 +vn 0.000219 -0.999967 -0.008170 +vn 0.000205 -0.976106 0.217294 +vn 0.000298 -0.914032 0.405642 +vn 0.000220 -0.880818 0.473454 +vn -0.000284 -0.957429 0.288669 +vn -0.002443 -0.814162 -0.580633 +vn -0.001772 -0.980675 -0.195636 +vn -0.000141 -0.850199 -0.526461 +vn -0.007464 -0.876750 -0.480888 +vn 0.004858 -0.998642 0.051869 +vn -0.009071 -0.885976 -0.463642 +vn 0.009300 -0.994510 0.104231 +vn 0.005571 -0.807475 0.589876 +vn 0.000683 0.258819 0.965926 +vn -0.000000 0.267262 0.963624 +vn -0.000101 0.541165 0.840916 +vn 0.000000 0.531409 0.847115 +vn 0.000000 0.267262 0.963624 +vn -0.000086 0.586906 0.809655 +vn 0.000078 0.554185 0.832394 +vn -0.005194 0.707099 0.707096 +vn 0.000149 0.556823 0.830631 +vn -0.000683 0.258819 0.965926 +vn 0.002992 0.681922 0.731419 +vn -0.005535 0.965911 0.258815 +vn 0.004870 0.707100 0.707097 +vn 0.000000 0.989812 0.142379 +vn 0.000476 0.984686 0.174337 +vn 0.004508 0.965916 0.258817 +vn -0.001381 0.627725 0.778434 +vn -0.000705 0.773534 0.633754 +vn 0.000619 0.913166 0.407587 +vn 0.000000 0.987621 0.156860 +vn -0.000376 0.897456 0.441104 +vn -0.000577 0.733926 0.679229 +vn 0.000387 0.698806 0.715311 +vn 0.000594 0.875845 0.482592 +vn 0.000000 0.982419 0.186687 +vn -0.002182 0.857891 0.513828 +vn 0.000000 -0.258819 -0.965926 +vn 0.000000 -0.258819 -0.965926 +vn 0.000000 -0.707108 -0.707105 +vn 0.000000 -0.707108 -0.707105 +vn 0.000000 -0.965926 -0.258820 +vn 0.000000 -0.965926 -0.258820 +vn 0.000000 0.965926 -0.258820 +vn 0.000000 0.965926 -0.258820 +vn 0.000000 0.707108 -0.707106 +vn 0.000000 0.707108 -0.707106 +vn 0.000000 0.258818 -0.965926 +vn 0.000000 0.258818 -0.965926 +vn 0.000000 -0.965926 0.258819 +vn 0.000000 -0.965926 0.258819 +vn 0.000000 -0.707107 0.707106 +vn 0.000000 -0.707107 0.707106 +vn 0.000000 -0.258818 0.965926 +vn 0.000000 -0.258818 0.965926 +vn -0.000000 0.965926 -0.258818 +vn 0.000000 0.965926 -0.258818 +vn 0.000000 0.707106 -0.707107 +vn 0.000000 0.707106 -0.707107 +vn 0.000000 0.258823 -0.965925 +vn 0.000000 0.258823 -0.965925 +vn 0.000000 -0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.959691 0.113513 0.257114 +vn -0.158802 0.018968 0.987128 +vn -0.457373 0.054867 0.887581 +vn -0.159095 0.019238 0.987076 +vn -0.258834 0.029723 0.965464 +vn -0.725538 0.087348 0.682616 +vn -0.704696 0.083353 0.704597 +vn -0.457034 0.054997 0.887747 +vn -0.457000 0.055280 0.887747 +vn -0.725061 0.088884 0.682925 +vn -0.725374 0.086278 0.682927 +vn -0.913745 0.231566 0.333837 +vn -0.852271 0.104113 0.512634 +vn -0.852545 0.101843 0.512636 +vn -0.935106 0.111614 0.336331 +vn -0.981787 0.189544 -0.012946 +vn -0.959701 0.113436 -0.257113 +vn -0.992776 0.119276 -0.012980 +vn -0.881383 0.324465 -0.343345 +vn -0.930152 0.111029 -0.349986 +vn -0.919139 0.182575 -0.349071 +vn -0.704699 0.083309 -0.704598 +vn -0.834477 0.101409 -0.541631 +vn -0.834679 0.099725 -0.541632 +vn -0.649646 0.102645 -0.753275 +vn -0.657921 0.078679 -0.748965 +vn -0.657733 0.080248 -0.748964 +vn -0.235747 0.028373 -0.971400 +vn -0.235579 0.028139 -0.971448 +vn -0.258746 0.030492 -0.965464 +vn -0.472845 0.056699 -0.879320 +vn -0.472872 0.056471 -0.879320 +vn 0.959691 0.113513 -0.257114 +vn 0.235762 0.028161 0.971403 +vn 0.258742 0.030494 0.965465 +vn 0.235948 0.028418 0.971350 +vn 0.649893 0.102453 0.753088 +vn 0.472994 0.056738 0.879237 +vn 0.473023 0.056489 0.879237 +vn 0.704701 0.083311 0.704597 +vn 0.658062 0.078695 0.748840 +vn 0.657865 0.080341 0.748839 +vn 0.881547 0.324073 0.343296 +vn 0.834781 0.099737 0.541474 +vn 0.834569 0.101495 0.541473 +vn 0.959700 0.113437 0.257114 +vn 0.930176 0.111032 0.349922 +vn 0.919014 0.183364 0.348986 +vn -0.025585 0.999636 -0.008540 +vn 0.976216 0.190702 0.103128 +vn 0.987619 0.117966 0.103409 +vn 0.988792 0.118106 -0.091336 +vn 0.913935 0.230855 -0.333808 +vn 0.935127 0.111617 -0.336272 +vn 0.852653 0.101856 -0.512454 +vn 0.852381 0.104111 -0.512453 +vn 0.704694 0.083351 -0.704598 +vn 0.725803 0.087358 -0.682333 +vn 0.725325 0.088899 -0.682643 +vn 0.725635 0.086313 -0.682644 +vn 0.258837 0.029724 -0.965464 +vn 0.158923 0.018982 -0.987109 +vn 0.457646 0.054886 -0.887439 +vn 0.159199 0.019237 -0.987059 +vn 0.457279 0.055294 -0.887603 +vn 0.457310 0.055030 -0.887603 +vn -0.890060 0.106313 0.443272 +vn -0.890061 0.106312 0.443270 +vn -0.972120 0.116111 0.203717 +vn -0.972120 0.116114 0.203718 +vn -0.954493 0.151417 0.256936 +vn -0.889925 0.107449 0.443270 +vn -0.890061 0.106313 0.443270 +vn -0.890061 0.106313 0.443270 +vn -0.972119 0.116119 0.203717 +vn -0.972120 0.116111 0.203716 +vn -0.976292 0.116236 -0.182601 +vn -0.972120 0.116114 0.203716 +vn -0.972120 0.116115 0.203716 +vn -0.976248 0.116607 -0.182601 +vn -0.976248 0.116608 -0.182601 +vn -0.972120 0.116115 0.203716 +vn -0.972120 0.116115 0.203716 +vn -0.976247 0.116612 -0.182600 +vn -0.976248 0.116604 -0.182601 +vn -0.972120 0.116114 0.203716 +vn -0.972120 0.116114 0.203716 +vn -0.972120 0.116115 0.203716 +vn -0.899346 0.107423 -0.423835 +vn -0.821703 -0.046430 -0.568021 +vn -0.899222 0.107034 -0.424198 +vn -0.899347 0.107419 -0.423835 +vn -0.899347 0.107419 -0.423835 +vn -0.172065 0.020654 0.984869 +vn -0.976248 0.116607 -0.182601 +vn -0.976248 0.116609 -0.182600 +vn -0.339495 -0.301838 0.890863 +vn -0.813310 0.095343 -0.573965 +vn -0.813332 0.097145 -0.573633 +vn -0.172059 0.020552 0.984872 +vn -0.252391 0.080877 0.964239 +vn -0.172059 0.020552 0.984872 +vn -0.976248 0.116606 -0.182601 +vn -0.414997 0.049569 0.908471 +vn -0.976248 0.116608 -0.182601 +vn -0.414948 0.049666 0.908488 +vn -0.899346 0.107422 -0.423835 +vn -0.899347 0.107423 -0.423834 +vn -0.414741 0.051396 0.908487 +vn -0.414960 0.049565 0.908488 +vn -0.414960 0.049565 0.908488 +vn -0.976248 0.116608 -0.182601 +vn -0.786159 -0.041346 0.616640 +vn -0.953038 0.160479 -0.256837 +vn -0.976248 0.116607 -0.182601 +vn -0.976248 0.116608 -0.182601 +vn -0.598775 0.071509 0.797719 +vn -0.899347 0.107421 -0.423834 +vn -0.899347 0.107421 -0.423834 +vn -0.899157 0.109002 -0.423834 +vn -0.899347 0.107422 -0.423834 +vn -0.899347 0.107422 -0.423834 +vn -0.791020 0.094480 0.604451 +vn -0.813331 0.097148 -0.573633 +vn -0.890061 0.106310 0.443272 +vn -0.813331 0.097148 -0.573633 +vn -0.813331 0.097148 -0.573633 +vn -0.598773 0.071520 0.797719 +vn -0.813331 0.097147 -0.573633 +vn -0.598773 0.071520 0.797719 +vn -0.697439 0.135918 -0.703637 +vn -0.890061 0.106310 0.443272 +vn -0.813568 0.095155 -0.573632 +vn -0.813331 0.097148 -0.573633 +vn -0.813331 0.097148 -0.573633 +vn -0.890061 0.106310 0.443272 +vn -0.465620 -0.198907 -0.862342 +vn -0.696859 0.139587 0.703493 +vn -0.599082 0.068913 0.797716 +vn -0.627946 0.073217 -0.774805 +vn -0.598773 0.071520 0.797719 +vn -0.628664 0.075091 -0.774043 +vn -0.598773 0.071520 0.797719 +vn -0.628664 0.075091 -0.774043 +vn -0.791012 0.094495 0.604459 +vn -0.628664 0.075090 -0.774043 +vn -0.791020 0.094483 0.604451 +vn -0.629065 0.071706 -0.774039 +vn -0.976245 0.116608 -0.182617 +vn -0.628664 0.075091 -0.774043 +vn -0.972120 0.116116 0.203718 +vn -0.628664 0.075091 -0.774043 +vn -0.315853 0.037710 -0.948058 +vn -0.450266 0.053763 -0.891274 +vn -0.450285 0.053784 -0.891263 +vn -0.890060 0.106313 0.443272 +vn -0.890060 0.106313 0.443272 +vn -0.450163 0.054806 -0.891263 +vn -0.450285 0.053784 -0.891263 +vn -0.450285 0.053784 -0.891263 +vn -0.791014 0.094482 0.604459 +vn -0.251829 0.085118 -0.964021 +vn -0.109037 0.013024 -0.993952 +vn -0.791014 0.094481 0.604459 +vn -0.109040 0.012999 -0.993952 +vn -0.315854 0.037703 -0.948058 +vn -0.312819 0.062347 -0.947764 +vn -0.315858 0.037728 -0.948056 +vn -0.791342 0.091707 0.604457 +vn -0.791014 0.094482 0.604459 +vn -0.791014 0.094482 0.604459 +vn -0.235785 -0.098847 -0.966765 +vn -0.711651 0.007260 -0.702496 +vn -0.698647 -0.134660 -0.702680 +vn -0.711233 0.007629 -0.702914 +vn -0.698647 -0.134659 -0.702680 +vn -0.891683 -0.373429 -0.255837 +vn 0.244048 0.096401 -0.964960 +vn 0.235785 0.098847 -0.966765 +vn -0.261788 0.004229 -0.965116 +vn -0.251073 -0.048392 -0.966758 +vn -0.255963 0.008287 -0.966651 +vn -0.251072 -0.048393 -0.966758 +vn 0.653281 0.280987 -0.703044 +vn 0.654193 0.280437 -0.702415 +vn 0.262395 0.001213 -0.964960 +vn 0.251072 0.048393 -0.966758 +vn 0.255633 -0.004130 -0.966765 +vn 0.251073 0.048392 -0.966758 +vn 0.891543 0.373757 -0.255847 +vn -0.966599 0.015259 -0.255837 +vn 0.895400 0.368476 -0.249967 +vn 0.966715 -0.009395 -0.255683 +vn 0.710918 -0.018047 -0.703044 +vn 0.711559 -0.017197 -0.702415 +vn 0.698647 0.134659 -0.702680 +vn 0.698647 0.134660 -0.702680 +vn 0.893969 0.368030 0.255684 +vn 0.892996 0.374367 0.249814 +vn 0.966591 -0.015615 0.255848 +vn 0.950801 0.183260 -0.249786 +vn 0.968168 -0.015640 -0.249813 +vn 0.950801 0.183260 -0.249786 +vn 0.653665 0.280199 0.703001 +vn 0.653905 0.281224 0.702369 +vn 0.950801 0.183260 0.249787 +vn 0.950801 0.183260 0.249787 +vn 0.968210 -0.009278 0.249967 +vn 0.241459 0.101226 0.965117 +vn 0.237449 0.093470 0.966893 +vn 0.698647 0.134659 0.702680 +vn 0.710982 -0.017173 0.703001 +vn 0.711585 -0.018035 0.702369 +vn 0.698647 0.134660 0.702680 +vn -0.239526 -0.104822 0.965215 +vn -0.235785 -0.098847 0.966765 +vn -0.261785 0.004229 0.965117 +vn 0.251072 0.048392 0.966758 +vn 0.251073 0.048393 0.966758 +vn 0.255180 0.001481 0.966893 +vn 0.261785 -0.004229 0.965117 +vn -0.657807 -0.271592 0.702515 +vn -0.891710 -0.377902 0.249085 +vn -0.657570 -0.271085 0.702933 +vn -0.711652 0.007258 0.702494 +vn -0.251073 -0.048393 0.966758 +vn -0.255963 0.008285 0.966651 +vn -0.251072 -0.048392 0.966758 +vn -0.966501 0.019272 0.255939 +vn -0.950646 -0.183231 0.250397 +vn -0.968328 0.015286 0.249215 +vn -0.698647 -0.134660 0.702680 +vn -0.711233 0.007629 0.702914 +vn -0.698647 -0.134659 0.702680 +vn -0.950646 -0.183231 0.250397 +vn -0.891682 -0.373429 0.255838 +vn -0.657805 -0.271592 -0.702517 +vn -0.891710 -0.377903 -0.249085 +vn -0.239528 -0.104825 -0.965214 +vn -0.657570 -0.271087 -0.702933 +vn -0.950646 -0.183231 -0.250396 +vn -0.968287 0.019401 -0.249085 +vn -0.950646 -0.183231 -0.250396 +vn -0.849617 -0.463814 0.251054 +vn -0.849617 -0.463814 0.251054 +vn -0.849617 -0.463814 -0.251054 +vn -0.849617 -0.463814 -0.251054 +vn -0.622070 -0.341429 0.704596 +vn -0.229414 -0.123485 0.965464 +vn -0.223299 -0.121901 0.967098 +vn -0.223299 -0.121901 -0.967097 +vn -0.622841 -0.340015 -0.704598 +vn -0.622841 -0.340015 -0.704599 +vn -0.848952 -0.461707 0.257113 +vn -0.622841 -0.340015 0.704599 +vn -0.622068 -0.341427 0.704598 +vn -0.622840 -0.340015 0.704599 +vn -0.849617 -0.463814 0.251054 +vn -0.849617 -0.463814 0.251053 +vn -0.849617 -0.463814 0.251053 +vn -0.848952 -0.461707 -0.257113 +vn -0.849617 -0.463814 -0.251054 +vn -0.849617 -0.463815 -0.251052 +vn -0.849617 -0.463814 -0.251052 +vn -0.229417 -0.123486 -0.965463 +vn -0.622069 -0.341428 -0.704598 +vn -0.223299 -0.121901 -0.967098 +vn -0.622841 -0.340015 -0.704599 +vn -0.622068 -0.341427 -0.704598 +vn -0.622840 -0.340015 -0.704599 +vn -0.227938 -0.126189 0.965464 +vn -0.623612 -0.338602 0.704596 +vn -0.623611 -0.338601 0.704598 +vn -0.848219 -0.463052 -0.257113 +vn -0.848219 -0.463051 0.257114 +vn -0.848864 -0.465190 0.251054 +vn -0.623611 -0.338602 -0.704598 +vn -0.848864 -0.465190 -0.251053 +vn -0.223299 -0.121901 0.967098 +vn -0.223299 -0.121901 0.967097 +vn -0.227941 -0.126191 -0.965463 +vn -0.623611 -0.338601 -0.704598 +vn -0.622841 -0.340015 0.704598 +vn -0.622840 -0.340015 0.704599 +vn -0.849617 -0.463814 0.251054 +vn -0.849617 -0.463814 0.251054 +vn -0.849617 -0.463814 -0.251054 +vn -0.849617 -0.463814 -0.251054 +vn -0.223299 -0.121901 0.967097 +vn -0.223299 -0.121901 -0.967098 +vn -0.622840 -0.340015 -0.704599 +vn -0.223299 -0.121901 -0.967097 +vn -0.622841 -0.340015 -0.704598 +vn -0.622841 -0.340015 0.704599 +vn -0.622841 -0.340015 0.704599 +vn -0.404083 0.367836 -0.837504 +vn 0.907104 0.241000 0.345083 +vn 0.911831 -0.224140 0.343984 +vn -0.948160 0.233069 -0.216038 +vn -0.943532 -0.243727 -0.224375 +vn 0.911831 -0.224140 0.343985 +vn -0.945484 -0.211385 -0.247744 +vn -0.948160 0.233070 -0.216037 +vn 0.319048 -0.289808 0.902341 +vn -0.866093 0.212897 -0.452281 +vn 0.685890 0.208789 0.697110 +vn -0.866093 0.212897 -0.452281 +vn 0.805094 -0.197902 0.559158 +vn -0.861840 -0.226433 -0.453828 +vn 0.805094 -0.197902 0.559159 +vn 0.800776 0.210350 0.560812 +vn 0.073511 -0.103280 0.991932 +vn -0.237413 0.220442 -0.946066 +vn 0.132685 -0.125261 0.983211 +vn 0.055958 -0.091157 -0.994263 +vn -0.048524 0.042994 -0.997896 +vn -0.708785 -0.150283 -0.689231 +vn -0.041264 0.036695 0.998474 +vn -0.728033 -0.199276 -0.655939 +vn 0.628574 -0.154511 0.762248 +vn -0.733537 0.180313 -0.655294 +vn 0.628574 -0.154511 0.762247 +vn -0.733537 0.180312 -0.655295 +vn 0.624623 0.162795 0.763770 +vn -0.532277 0.130840 -0.836398 +vn -0.532278 0.130841 -0.836397 +vn 0.243960 0.096561 0.964966 +vn -0.528398 -0.140480 -0.837294 +vn 0.416913 0.111102 0.902131 +vn 0.420160 -0.103281 0.901554 +vn 0.420160 -0.103281 0.901554 +vn 0.125262 -0.118319 -0.985043 +vn -0.293282 0.225869 0.928961 +vn 0.401822 -0.400913 -0.823291 +vn -0.230797 0.214126 0.949149 +vn 0.312332 -0.283429 -0.906707 +vn -0.274686 -0.037929 -0.960786 +vn -0.315160 0.077470 -0.945871 +vn -0.397494 0.361944 0.843205 +vn -0.315160 0.077470 -0.945871 +vn -0.312852 -0.077982 -0.946595 +vn 0.177163 -0.043549 0.983218 +vn 0.175712 0.046375 0.983349 +vn 0.177163 -0.043549 0.983218 +vn -0.063436 0.015593 -0.997864 +vn -0.063436 0.015593 -0.997864 +vn -0.062909 -0.016604 -0.997881 +vn -0.272818 -0.041559 0.961168 +vn -0.053562 -0.014136 0.998464 +vn -0.054010 0.013276 0.998452 +vn -0.054010 0.013276 0.998452 +vn 0.471080 -0.429746 -0.770326 +vn -0.571693 0.501611 0.649271 +vn -0.549383 0.507156 0.664057 +vn 0.243002 0.098356 -0.965026 +vn 0.167283 -0.041120 -0.985051 +vn 0.167283 -0.041120 -0.985051 +vn -0.722193 0.652647 0.229106 +vn -0.723933 0.649891 0.231436 +vn 0.165910 0.043788 -0.985168 +vn -0.656034 0.599787 0.458121 +vn 0.638169 -0.614596 -0.463694 +vn -0.306294 0.075291 0.948955 +vn -0.304051 -0.075449 0.949663 +vn 0.606943 -0.554661 -0.569185 +vn -0.306294 0.075291 0.948955 +vn 0.407992 0.108874 -0.906471 +vn -0.706209 -0.157279 0.690313 +vn 0.411189 -0.101075 -0.905929 +vn -0.519860 -0.137991 0.843033 +vn -0.523677 0.128726 0.842135 +vn -0.523678 0.128727 0.842135 +vn 0.411188 -0.101075 -0.905929 +vn -0.726929 0.178688 0.663058 +vn -0.726928 0.178688 0.663058 +vn 0.691548 -0.629562 -0.354138 +vn -0.721402 -0.197862 0.663649 +vn -0.944186 -0.216682 0.248116 +vn 0.620744 -0.152587 -0.769021 +vn -0.947099 0.232808 0.220916 +vn -0.942466 -0.243451 0.229106 +vn -0.947099 0.232809 0.220915 +vn 0.685399 0.209958 -0.697242 +vn -0.863894 0.212356 0.456719 +vn 0.616801 0.160859 -0.770507 +vn -0.859603 -0.226010 0.458259 +vn 0.620744 -0.152587 -0.769021 +vn -0.863892 0.212356 0.456723 +vn 0.732588 -0.671036 -0.114127 +vn 0.723188 -0.690584 -0.009609 +vn 0.799458 -0.196517 -0.567669 +vn 0.799458 -0.196517 -0.567668 +vn 0.795157 0.208757 -0.569338 +vn 0.733450 -0.671605 0.104868 +vn 0.908659 -0.223360 -0.352772 +vn 0.908659 -0.223360 -0.352773 +vn 0.903949 0.240068 -0.353897 +vn 0.928800 0.272093 -0.251587 +vn 0.645041 -0.620286 0.446283 +vn 0.694015 -0.631737 0.345328 +vn 0.964792 -0.237158 -0.113716 +vn 0.964792 -0.237158 -0.113716 +vn 0.960569 0.253522 -0.114169 +vn -0.724768 0.650603 -0.226774 +vn -0.723010 0.653386 -0.224374 +vn 0.611204 -0.558644 0.560666 +vn -0.582271 0.504734 -0.637341 +vn 0.961556 0.253782 0.104898 +vn 0.928963 0.271562 0.251558 +vn -0.657592 0.601467 -0.453663 +vn 0.965777 -0.237400 0.104483 +vn 0.965777 -0.237400 0.104483 +vn 0.415384 -0.410946 0.811529 +vn -0.554704 0.511359 -0.656365 +vn 0.477140 -0.435041 0.763595 +vn -0.311165 0.235575 -0.920696 +vn 0.000000 -0.125808 0.992055 +vn 0.048708 -0.116118 0.992040 +vn -0.137174 0.332105 0.933215 +vn 0.000000 0.350261 0.936652 +vn -0.217098 -0.524380 -0.823343 +vn 0.000000 0.350261 0.936652 +vn -0.214476 -0.519319 -0.827229 +vn -0.134373 0.323525 0.936630 +vn -0.371566 0.898406 0.234107 +vn -0.289656 0.697885 0.655024 +vn 0.000000 0.973766 0.227552 +vn -0.372633 0.899647 0.227552 +vn 0.000000 0.757079 0.653323 +vn 0.000000 0.973766 0.227552 +vn -0.338277 -0.818087 -0.465083 +vn 0.000000 0.757079 0.653323 +vn -0.290064 0.699342 0.653287 +vn -0.340386 -0.821545 -0.457386 +vn -0.383098 -0.923657 -0.009658 +vn -0.383114 -0.923653 -0.009410 +vn -0.342286 -0.826047 0.447758 +vn -0.343232 -0.829953 0.439738 +vn -0.222924 -0.539747 0.811775 +vn -0.221385 -0.534838 0.815437 +vn -0.049715 -0.119134 0.991633 +vn -0.048708 -0.116118 0.992040 +vn 0.137174 0.332105 0.933215 +vn 0.134373 0.323525 0.936630 +vn 0.289656 0.697885 0.655024 +vn 0.290064 0.699342 0.653287 +vn 0.372145 0.899843 0.227575 +vn -0.371995 0.899442 -0.229398 +vn 0.000000 0.974887 -0.222701 +vn -0.373062 0.900682 -0.222701 +vn 0.372036 0.898205 0.234130 +vn 0.000000 0.974887 -0.222701 +vn -0.293138 0.706881 -0.643731 +vn -0.294047 0.708504 -0.641528 +vn 0.000000 0.767055 -0.641581 +vn 0.000000 0.767055 -0.641581 +vn -0.145011 0.349056 -0.925814 +vn 0.000000 0.369007 -0.929427 +vn -0.140878 0.340995 -0.929449 +vn 0.000000 0.369007 -0.929426 +vn 0.042170 -0.100343 -0.994059 +vn -0.000000 -0.106154 -0.994350 +vn 0.041001 -0.097997 -0.994342 +vn 0.000000 -0.106154 -0.994350 +vn 0.217098 -0.524379 -0.823344 +vn 0.000000 -0.561942 -0.827176 +vn -0.000000 -0.561943 -0.827176 +vn 0.214476 -0.519318 -0.827230 +vn 0.340386 -0.821545 -0.457386 +vn 0.338278 -0.818087 -0.465082 +vn -0.000000 -0.889265 -0.457393 +vn 0.000000 -0.889265 -0.457393 +vn 0.000000 -0.999956 -0.009410 +vn 0.383098 -0.923657 -0.009658 +vn 0.371995 0.899442 -0.229398 +vn 0.373062 0.900682 -0.222701 +vn 0.383114 -0.923653 -0.009410 +vn -0.000000 -0.999956 -0.009410 +vn 0.342286 -0.826047 0.447758 +vn 0.293138 0.706881 -0.643731 +vn 0.343232 -0.829953 0.439738 +vn 0.000000 -0.898145 0.439699 +vn 0.294047 0.708503 -0.641529 +vn 0.000000 -0.898145 0.439699 +vn 0.222924 -0.539747 0.811775 +vn 0.145011 0.349056 -0.925814 +vn 0.221385 -0.534838 0.815437 +vn 0.000000 -0.578864 0.815425 +vn 0.140879 0.340995 -0.929449 +vn 0.000000 -0.578864 0.815425 +vn 0.049715 -0.119134 0.991633 +vn 0.000000 -0.125808 0.992055 +vn -0.042170 -0.100343 -0.994059 +vn -0.041001 -0.097997 -0.994342 +vn -0.645041 -0.620285 0.446283 +vn -0.911831 -0.224140 0.343985 +vn -0.911831 -0.224140 0.343986 +vn 0.724767 0.650604 -0.226774 +vn 0.948160 0.233069 -0.216037 +vn 0.723009 0.653386 -0.224374 +vn -0.694016 -0.631736 0.345328 +vn 0.948160 0.233069 -0.216037 +vn -0.243960 0.096562 0.964966 +vn -0.416913 0.111103 0.902131 +vn 0.582272 0.504734 -0.637341 +vn -0.805096 -0.197902 0.559157 +vn 0.657595 0.601472 -0.453652 +vn -0.611205 -0.558646 0.560663 +vn 0.866100 0.212898 -0.452267 +vn 0.866093 0.212898 -0.452281 +vn -0.805097 -0.197903 0.559154 +vn 0.274686 -0.037929 -0.960786 +vn 0.312851 -0.077981 -0.946596 +vn -0.175712 0.046375 0.983349 +vn 0.062910 -0.016604 -0.997881 +vn 0.272818 -0.041559 0.961168 +vn 0.733537 0.180312 -0.655294 +vn 0.053562 -0.014137 0.998464 +vn 0.554703 0.511360 -0.656366 +vn -0.415383 -0.410945 0.811530 +vn 0.733536 0.180313 -0.655296 +vn -0.628574 -0.154511 0.762247 +vn -0.628574 -0.154511 0.762247 +vn 0.311164 0.235575 -0.920696 +vn -0.477140 -0.435042 0.763595 +vn 0.532280 0.130841 -0.836396 +vn 0.532280 0.130841 -0.836396 +vn 0.404084 0.367837 -0.837504 +vn -0.420160 -0.103281 0.901554 +vn -0.420158 -0.103280 0.901554 +vn -0.319047 -0.289808 0.902342 +vn -0.243002 0.098356 -0.965026 +vn -0.165910 0.043788 -0.985168 +vn 0.304050 -0.075448 0.949664 +vn -0.407993 0.108874 -0.906470 +vn 0.706209 -0.157278 0.690313 +vn 0.519861 -0.137990 0.843032 +vn 0.315160 0.077470 -0.945871 +vn 0.237413 0.220442 -0.946066 +vn 0.315159 0.077470 -0.945872 +vn -0.073511 -0.103280 0.991932 +vn -0.177163 -0.043549 0.983218 +vn -0.055958 -0.091157 -0.994263 +vn -0.177163 -0.043549 0.983218 +vn 0.063436 0.015593 -0.997864 +vn -0.132686 -0.125261 0.983211 +vn 0.063436 0.015593 -0.997864 +vn 0.048524 0.042993 -0.997896 +vn 0.054011 0.013276 0.998452 +vn 0.054010 0.013276 0.998452 +vn -0.685398 0.209958 -0.697243 +vn 0.041265 0.036695 0.998474 +vn -0.616800 0.160859 -0.770508 +vn 0.721402 -0.197863 0.663648 +vn -0.125262 -0.118319 -0.985043 +vn 0.942465 -0.243454 0.229105 +vn -0.167282 -0.041120 -0.985051 +vn -0.167283 -0.041120 -0.985051 +vn 0.944186 -0.216682 0.248116 +vn 0.859600 -0.226011 0.458265 +vn 0.293282 0.225869 0.928961 +vn 0.306294 0.075291 0.948955 +vn 0.306293 0.075290 0.948955 +vn -0.795160 0.208757 -0.569333 +vn 0.230797 0.214126 0.949149 +vn -0.411186 -0.101075 -0.905931 +vn -0.401823 -0.400913 -0.823290 +vn -0.411190 -0.101075 -0.905929 +vn 0.523678 0.128726 0.842135 +vn 0.523676 0.128726 0.842136 +vn -0.312331 -0.283428 -0.906707 +vn 0.397493 0.361943 0.843206 +vn -0.903948 0.240067 -0.353901 +vn 0.571694 0.501611 0.649271 +vn 0.726929 0.178689 0.663057 +vn -0.928800 0.272093 -0.251587 +vn 0.726929 0.178688 0.663058 +vn -0.620743 -0.152587 -0.769022 +vn 0.549383 0.507156 0.664057 +vn 0.723933 0.649891 0.231437 +vn -0.620746 -0.152587 -0.769020 +vn 0.947100 0.232808 0.220914 +vn 0.722192 0.652648 0.229105 +vn 0.947099 0.232809 0.220914 +vn -0.471080 -0.429747 -0.770325 +vn 0.863889 0.212355 0.456729 +vn 0.863895 0.212357 0.456717 +vn 0.656035 0.599787 0.458119 +vn -0.960569 0.253521 -0.114165 +vn -0.638169 -0.614595 -0.463695 +vn -0.606943 -0.554661 -0.569185 +vn -0.799458 -0.196518 -0.567668 +vn -0.799461 -0.196518 -0.567665 +vn -0.928963 0.271562 0.251558 +vn -0.961557 0.253782 0.104898 +vn -0.691548 -0.629561 -0.354140 +vn -0.908658 -0.223360 -0.352775 +vn -0.908658 -0.223360 -0.352776 +vn -0.907103 0.240999 0.345084 +vn -0.723189 -0.690584 -0.009610 +vn -0.732588 -0.671036 -0.114127 +vn -0.964792 -0.237159 -0.113716 +vn -0.964793 -0.237158 -0.113713 +vn 0.945483 -0.211387 -0.247743 +vn 0.943532 -0.243729 -0.224374 +vn -0.685889 0.208788 0.697111 +vn -0.800778 0.210349 0.560810 +vn -0.965777 -0.237400 0.104483 +vn -0.733450 -0.671605 0.104870 +vn 0.861840 -0.226434 -0.453828 +vn -0.965776 -0.237400 0.104486 +vn 0.708784 -0.150282 -0.689232 +vn 0.728033 -0.199277 -0.655939 +vn -0.624623 0.162795 0.763770 +vn 0.528401 -0.140480 -0.837292 +vn 0.849617 -0.463814 0.251054 +vn 0.849617 -0.463814 0.251054 +vn 0.849617 -0.463814 -0.251053 +vn 0.849617 -0.463814 -0.251053 +vn 0.227939 -0.126189 0.965464 +vn 0.223299 -0.121901 0.967098 +vn 0.223299 -0.121901 -0.967098 +vn 0.223300 -0.121902 -0.967097 +vn 0.622841 -0.340015 -0.704599 +vn 0.622841 -0.340015 -0.704599 +vn 0.623612 -0.338602 0.704597 +vn 0.622840 -0.340015 0.704599 +vn 0.623611 -0.338601 0.704598 +vn 0.622841 -0.340015 0.704599 +vn 0.848219 -0.463051 0.257114 +vn 0.848219 -0.463052 -0.257113 +vn 0.849617 -0.463814 0.251054 +vn 0.849617 -0.463814 0.251054 +vn 0.848864 -0.465190 0.251053 +vn 0.623610 -0.338601 -0.704599 +vn 0.849617 -0.463814 -0.251053 +vn 0.848864 -0.465190 -0.251053 +vn 0.849617 -0.463814 -0.251053 +vn 0.227941 -0.126191 -0.965463 +vn 0.223299 -0.121901 -0.967098 +vn 0.622841 -0.340015 -0.704599 +vn 0.623610 -0.338601 -0.704598 +vn 0.622840 -0.340014 -0.704599 +vn 0.622069 -0.341429 0.704597 +vn 0.229415 -0.123485 0.965464 +vn 0.848952 -0.461707 0.257114 +vn 0.622068 -0.341427 0.704599 +vn 0.849617 -0.463815 0.251052 +vn 0.848952 -0.461707 -0.257113 +vn 0.849617 -0.463815 -0.251052 +vn 0.223300 -0.121902 0.967097 +vn 0.229418 -0.123486 -0.965463 +vn 0.622068 -0.341428 -0.704598 +vn 0.622068 -0.341427 -0.704599 +vn 0.622840 -0.340015 0.704599 +vn 0.622841 -0.340015 0.704599 +vn 0.849617 -0.463814 0.251052 +vn 0.849617 -0.463814 0.251054 +vn 0.849617 -0.463814 -0.251053 +vn 0.849617 -0.463815 -0.251052 +vn 0.223299 -0.121901 0.967098 +vn 0.223300 -0.121902 0.967097 +vn 0.223300 -0.121902 -0.967097 +vn 0.622840 -0.340014 -0.704599 +vn 0.622841 -0.340015 -0.704599 +vn 0.622841 -0.340015 0.704599 +vn 0.622841 -0.340015 0.704599 +vn 0.255964 0.008287 -0.966651 +vn 0.239528 -0.104825 -0.965214 +vn 0.698647 -0.134659 -0.702680 +vn 0.698647 -0.134659 -0.702680 +vn 0.657570 -0.271087 -0.702933 +vn -0.262396 0.001213 -0.964960 +vn -0.255633 -0.004130 -0.966765 +vn -0.241462 0.101226 -0.965116 +vn 0.251073 -0.048393 -0.966758 +vn 0.251072 -0.048392 -0.966758 +vn 0.235785 -0.098847 -0.966765 +vn -0.710918 -0.018045 -0.703044 +vn -0.711559 -0.017196 -0.702415 +vn -0.653665 0.280197 -0.703002 +vn -0.251072 0.048393 -0.966758 +vn -0.251072 0.048392 -0.966758 +vn -0.237450 0.093467 -0.966893 +vn -0.966591 -0.015615 -0.255847 +vn -0.968211 -0.009275 -0.249964 +vn -0.893970 0.368028 -0.255683 +vn -0.698647 0.134659 -0.702680 +vn -0.653905 0.281223 -0.702369 +vn -0.698647 0.134659 -0.702680 +vn -0.966715 -0.009393 0.255684 +vn -0.968168 -0.015641 0.249811 +vn -0.892997 0.374365 -0.249813 +vn -0.950801 0.183260 -0.249786 +vn -0.950801 0.183263 -0.249784 +vn -0.710982 -0.017172 0.703001 +vn -0.711585 -0.018033 0.702369 +vn -0.653283 0.280987 0.703042 +vn -0.893969 0.368028 0.255684 +vn -0.950801 0.183260 0.249785 +vn -0.892997 0.374365 0.249814 +vn -0.950800 0.183262 0.249787 +vn 0.261785 0.004229 0.965117 +vn -0.261785 -0.004229 0.965117 +vn -0.255179 0.001482 0.966893 +vn -0.654192 0.280438 0.702416 +vn -0.698647 0.134659 0.702680 +vn -0.698647 0.134659 0.702680 +vn 0.711652 0.007258 0.702494 +vn 0.255963 0.008285 0.966651 +vn -0.251072 0.048393 0.966758 +vn -0.237449 0.093470 0.966893 +vn -0.241459 0.101225 0.965117 +vn -0.251072 0.048392 0.966758 +vn 0.711233 0.007629 0.702914 +vn 0.968287 0.019401 0.249087 +vn 0.239527 -0.104822 0.965215 +vn 0.251073 -0.048393 0.966758 +vn 0.235785 -0.098847 0.966765 +vn 0.251072 -0.048393 0.966758 +vn 0.657807 -0.271592 0.702516 +vn 0.950646 -0.183231 0.250397 +vn 0.698647 -0.134659 0.702680 +vn 0.698647 -0.134659 0.702680 +vn 0.657570 -0.271085 0.702933 +vn 0.950646 -0.183230 0.250398 +vn 0.891710 -0.377902 0.249085 +vn 0.966599 0.015259 0.255839 +vn 0.891683 -0.373429 0.255838 +vn 0.966501 0.019272 -0.255939 +vn 0.968327 0.015286 -0.249216 +vn 0.711651 0.007260 -0.702496 +vn 0.711233 0.007629 -0.702914 +vn 0.950646 -0.183231 -0.250396 +vn 0.893277 -0.374097 -0.249214 +vn 0.657805 -0.271591 -0.702517 +vn 0.890100 -0.377119 -0.255938 +vn 0.950646 -0.183230 -0.250398 +vn 0.261788 0.004229 -0.965116 +vn 0.603957 0.072138 -0.793746 +vn 0.896827 0.107142 0.429211 +vn 0.603957 0.072146 -0.793745 +vn 0.603956 0.072143 -0.793746 +vn 0.594730 0.068756 0.800980 +vn 0.172344 0.020585 -0.984822 +vn 0.420921 0.050276 -0.905703 +vn 0.595442 0.071123 0.800244 +vn 0.420921 0.050276 -0.905703 +vn 0.172349 0.020664 -0.984819 +vn 0.172344 0.020585 -0.984822 +vn 0.896826 0.107114 0.429220 +vn 0.420921 0.050276 -0.905703 +vn 0.420912 0.050356 -0.905703 +vn 0.896829 0.107127 0.429211 +vn 0.420921 0.050276 -0.905703 +vn 0.809959 0.096745 0.578452 +vn 0.809959 0.096746 0.578451 +vn 0.818215 -0.060390 0.571731 +vn 0.809909 0.094400 0.578909 +vn 0.809962 0.096727 0.578451 +vn 0.976308 0.116613 0.182274 +vn 0.976308 0.116613 0.182274 +vn 0.896829 0.107122 0.429211 +vn 0.896829 0.107122 0.429212 +vn 0.959556 0.114652 -0.257114 +vn 0.976306 0.116637 0.182270 +vn 0.976308 0.116613 0.182274 +vn 0.896828 0.107132 0.429212 +vn 0.896827 0.107101 0.429221 +vn 0.976308 0.116621 0.182270 +vn 0.976309 0.116607 0.182274 +vn 0.896825 0.107118 0.429220 +vn 0.896675 0.106598 0.429664 +vn 0.487087 0.724908 -0.487087 +vn 0.787369 0.094078 -0.609261 +vn 0.976308 0.116616 0.182274 +vn 0.976308 0.116616 0.182274 +vn 0.953022 0.160573 -0.256836 +vn 0.972196 0.116122 -0.203347 +vn 0.245742 0.313825 0.917129 +vn 0.976307 0.116626 0.182270 +vn 0.976311 0.116593 0.182274 +vn 0.456205 0.054493 0.888205 +vn 0.109175 0.013040 0.993937 +vn 0.109175 0.013040 0.993937 +vn 0.972196 0.116122 -0.203347 +vn 0.217272 0.067570 0.973770 +vn 0.972196 0.116122 -0.203347 +vn 0.457360 0.762657 0.457358 +vn 0.633801 0.075707 0.769783 +vn 0.887448 0.105999 -0.448554 +vn 0.316339 0.037784 0.947893 +vn 0.603957 0.072142 -0.793745 +vn 0.316345 0.037739 0.947893 +vn 0.316339 0.037784 0.947893 +vn 0.316339 0.037784 0.947893 +vn 0.887448 0.105999 -0.448554 +vn 0.887448 0.105999 -0.448554 +vn 0.456205 0.054490 0.888205 +vn 0.972195 0.116129 -0.203347 +vn 0.456205 0.054490 0.888205 +vn 0.972195 0.116129 -0.203347 +vn 0.976306 0.116603 0.182294 +vn 0.976308 0.116622 0.182270 +vn 0.976366 0.116129 0.182274 +vn 0.972197 0.116113 -0.203351 +vn 0.809955 0.096777 0.578452 +vn 0.976308 0.116611 0.182274 +vn 0.456211 0.054444 0.888205 +vn 0.456205 0.054490 0.888205 +vn 0.887447 0.106006 -0.448554 +vn 0.456205 0.054490 0.888205 +vn 0.887447 0.106006 -0.448554 +vn 0.252966 0.965098 0.067783 +vn 0.172343 0.020585 -0.984822 +vn 0.896825 0.107157 0.429211 +vn 0.238375 0.389551 -0.889622 +vn 0.420921 0.050279 -0.905703 +vn 0.787373 0.094046 -0.609261 +vn 0.633801 0.075703 0.769783 +vn 0.787373 0.094046 -0.609261 +vn 0.633801 0.075703 0.769783 +vn 0.972196 0.116125 -0.203347 +vn 0.972196 0.116125 -0.203347 +vn 0.633801 0.075703 0.769783 +vn 0.633801 0.075701 0.769783 +vn 0.787373 0.094046 -0.609261 +vn 0.633801 0.075708 0.769782 +vn 0.787373 0.094046 -0.609261 +vn 0.606185 -0.068667 0.792354 +vn 0.809960 0.096744 0.578451 +vn 0.809959 0.096744 0.578452 +vn 0.972198 0.116102 -0.203348 +vn 0.972195 0.116130 -0.203348 +vn 0.972196 0.116123 -0.203351 +vn 0.972199 0.116098 -0.203347 +vn 0.887447 0.106002 -0.448556 +vn 0.887447 0.106001 -0.448554 +vn 0.809960 0.096744 0.578451 +vn 0.787367 0.094031 -0.609272 +vn 0.809960 0.096742 0.578452 +vn 0.787372 0.094052 -0.609261 +vn 0.787372 0.094052 -0.609261 +vn 0.787373 0.094048 -0.609261 +vn 0.787367 0.094029 -0.609272 +vn 0.779404 -0.063994 -0.623245 +vn 0.887450 0.105978 -0.448554 +vn 0.896830 0.107120 0.429211 +vn 0.887448 0.106000 -0.448554 +vn 0.896829 0.107120 0.429211 +vn 0.887449 0.105981 -0.448556 +vn 0.603957 0.072138 -0.793745 +vn 0.809959 0.096750 0.578452 +vn 0.809958 0.096750 0.578452 +vn 0.603957 0.072138 -0.793746 +vn 0.896825 0.107119 0.429219 +vn 0.473355 -0.066904 -0.878327 +vn 0.603957 0.072138 -0.793746 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.118600 0.992942 0.000000 +vn 0.118602 0.992942 -0.000003 +vn 0.118600 0.992942 0.000005 +vn 0.118602 0.992942 0.000001 +vn 0.118602 0.992942 -0.000001 +vn 0.118602 0.992942 -0.000001 +vn 0.118602 0.992942 0.000001 +vn 0.118600 0.992942 0.000005 +vn 0.118600 0.992942 0.000000 +vn 0.118602 0.992942 -0.000003 +vn -0.000000 -0.951057 -0.309017 +vn 0.000000 -0.951057 -0.309017 +vn 0.000000 -0.587784 -0.809018 +vn -0.000000 -0.587784 -0.809018 +vn 0.004907 0.545119 -0.838344 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 0.414715 -0.909951 +vn 0.000000 0.414715 -0.909951 +vn 0.007455 0.587768 -0.808995 +vn 0.000078 0.554180 -0.832397 +vn 0.000000 0.531396 -0.847123 +vn 0.001834 0.682820 -0.730585 +vn -0.004246 0.528092 -0.849176 +vn -0.000086 0.586910 -0.809652 +vn -0.005045 0.623942 -0.781455 +vn -0.007349 0.587769 -0.808996 +vn 0.007683 0.951029 -0.309007 +vn -0.001988 0.912688 -0.408652 +vn 0.000476 0.984686 -0.174337 +vn 0.000000 0.989812 -0.142379 +vn -0.007951 0.951027 -0.309007 +vn 0.000000 0.982419 -0.186687 +vn -0.001576 0.857708 -0.514135 +vn 0.000594 0.875846 -0.482591 +vn 0.000000 0.987621 -0.156861 +vn -0.000376 0.897456 -0.441103 +vn -0.000577 0.733925 -0.679230 +vn 0.000387 0.698806 -0.715311 +vn 0.001136 0.774448 -0.632636 +vn -0.008579 -0.770598 -0.637264 +vn 0.000141 -0.850183 -0.526487 +vn -0.000096 -0.824044 -0.566526 +vn -0.002443 -0.814164 0.580630 +vn -0.000000 -0.686686 -0.726954 +vn 0.005570 -0.807478 -0.589871 +vn -0.000000 -0.810595 -0.585607 +vn -0.007464 -0.876749 0.480891 +vn -0.000000 -0.686686 -0.726954 +vn 0.000000 -0.810658 0.585519 +vn 0.008579 -0.770598 -0.637264 +vn 0.000000 -0.289089 -0.957302 +vn 0.000000 -0.758721 0.651416 +vn -0.000000 -0.289089 -0.957302 +vn 0.000000 -0.758721 0.651416 +vn 0.000459 -0.894347 0.447373 +vn 0.000449 -0.970127 0.242596 +vn 0.000219 -0.999967 0.008170 +vn 0.000205 -0.976106 -0.217294 +vn 0.000298 -0.914031 -0.405644 +vn 0.001933 -0.803092 0.595852 +vn 0.000220 -0.880818 -0.473456 +vn -0.000284 -0.957429 -0.288668 +vn -0.001772 -0.980675 0.195636 +vn -0.000457 -0.894421 -0.447226 +vn -0.000445 -0.970161 -0.242461 +vn -0.009071 -0.885976 0.463642 +vn -0.000218 -0.999967 -0.008162 +vn -0.000207 -0.976140 0.217143 +vn -0.000301 -0.914116 0.405452 +vn 0.000296 -0.957358 0.288906 +vn -0.000319 -0.998670 0.051562 +vn 0.001052 -0.913741 -0.406296 +vn -0.000141 -0.850198 0.526463 +vn 0.000095 -0.823994 0.566598 +vn 0.004349 -0.842098 0.539307 +vn 0.005054 -0.911835 0.410525 +vn 0.009307 -0.885974 0.463641 +vn -0.009860 -0.994504 -0.104230 +vn -0.002794 -0.980334 -0.197325 +vn 0.004858 -0.998642 -0.051869 +vn -0.002879 -0.843404 -0.537272 +vn -0.007403 -0.785391 -0.618955 +vn 0.009300 -0.994510 -0.104231 +vn -0.000000 -0.965926 -0.258819 +vn -0.000000 -0.707107 -0.707106 +vn -0.000000 -0.965926 -0.258819 +vn -0.000000 -0.258818 -0.965926 +vn -0.000000 -0.707107 -0.707106 +vn -0.000000 -0.258818 -0.965926 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn -0.000000 0.707106 0.707107 +vn 0.000000 0.965926 0.258818 +vn -0.000000 0.965926 0.258818 +vn -0.000000 0.258819 0.965926 +vn 0.000000 0.707106 0.707107 +vn 0.000000 0.258819 0.965926 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -1.000000 -0.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 -0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.959456 -0.115487 0.257113 +vn 0.436044 -0.051422 0.898455 +vn 0.149930 -0.017247 0.988546 +vn 0.149389 -0.017844 0.988618 +vn 0.258552 -0.032099 0.965464 +vn 0.721960 -0.084756 0.686724 +vn 0.704523 -0.084785 0.704599 +vn 0.435734 -0.050540 0.898656 +vn 0.435595 -0.051708 0.898657 +vn 0.721558 -0.086426 0.686938 +vn 0.721979 -0.082867 0.686935 +vn 0.951360 0.029765 0.306641 +vn 0.857544 -0.098990 0.504795 +vn 0.857145 -0.102374 0.504798 +vn 0.944081 -0.112856 0.309797 +vn 0.990234 -0.109608 -0.086151 +vn 0.959417 -0.115808 -0.257113 +vn 0.989329 -0.117495 -0.086154 +vn 0.887124 0.242248 -0.392844 +vn 0.914631 -0.100435 -0.391615 +vn 0.913622 -0.109178 -0.391630 +vn 0.704460 -0.085315 -0.704597 +vn 0.811435 -0.096876 -0.576358 +vn 0.811529 -0.096086 -0.576358 +vn 0.614802 0.003511 -0.788674 +vn 0.626098 -0.074710 -0.776157 +vn 0.626185 -0.073984 -0.776156 +vn 0.212408 -0.025371 -0.976852 +vn 0.212490 -0.025246 -0.976837 +vn 0.258608 -0.031628 -0.965464 +vn 0.451889 -0.053838 -0.890448 +vn 0.451871 -0.053995 -0.890448 +vn -0.959456 -0.115488 -0.257114 +vn -0.258608 -0.031632 0.965464 +vn -0.212085 -0.025332 0.976923 +vn -0.212138 -0.025251 0.976914 +vn -0.614421 0.003995 0.788968 +vn -0.451594 -0.053850 0.890597 +vn -0.451581 -0.053961 0.890597 +vn -0.704459 -0.085316 0.704598 +vn -0.625969 -0.074255 0.776305 +vn -0.625917 -0.074689 0.776305 +vn -0.886994 0.242105 0.393225 +vn -0.811303 -0.096860 0.576546 +vn -0.811366 -0.096332 0.576546 +vn -0.959417 -0.115807 0.257114 +vn -0.913538 -0.109168 0.391831 +vn -0.914432 -0.101450 0.391819 +vn -0.378815 0.925318 -0.016910 +vn -0.982874 -0.109670 0.148093 +vn -0.990948 -0.118363 -0.063342 +vn -0.981992 -0.117294 0.148097 +vn -0.951298 0.032150 -0.306591 +vn -0.944063 -0.112854 -0.309854 +vn -0.856951 -0.102351 -0.505133 +vn -0.857359 -0.098892 -0.505130 +vn -0.704524 -0.084780 -0.704598 +vn -0.721451 -0.084636 -0.687273 +vn -0.721039 -0.086370 -0.687490 +vn -0.721470 -0.082728 -0.687486 +vn -0.149180 -0.017819 -0.988649 +vn -0.258552 -0.032100 -0.965464 +vn -0.435506 -0.051276 -0.898724 +vn -0.149788 -0.017149 -0.988569 +vn -0.435060 -0.051646 -0.898919 +vn -0.435206 -0.050426 -0.898918 +vn 0.872640 -0.107785 0.476321 +vn 0.843264 -0.207217 0.495952 +vn 0.906642 -0.108294 0.407766 +vn 0.979294 -0.116970 0.165234 +vn 0.979293 -0.116973 0.165234 +vn 0.979293 -0.116971 0.165234 +vn 0.979293 -0.116971 0.165234 +vn 0.979293 -0.116971 0.165234 +vn 0.979293 -0.116971 0.165234 +vn 0.979293 -0.116971 0.165234 +vn 0.979293 -0.116971 0.165234 +vn 0.979293 -0.116972 0.165234 +vn 0.979243 -0.116966 0.165537 +vn 0.969275 -0.115775 -0.217029 +vn 0.978869 -0.120468 0.165233 +vn 0.979293 -0.116972 0.165234 +vn 0.962668 -0.084983 -0.256999 +vn 0.969285 -0.115776 -0.216985 +vn 0.969285 -0.115778 -0.216985 +vn 0.969285 -0.115774 -0.216986 +vn 0.884094 -0.104733 -0.455423 +vn 0.883993 -0.105590 -0.455421 +vn 0.883992 -0.105587 -0.455423 +vn 0.969285 -0.115775 -0.216986 +vn 0.969285 -0.115775 -0.216986 +vn 0.883993 -0.105590 -0.455421 +vn 0.883992 -0.105588 -0.455423 +vn 0.969285 -0.115776 -0.216986 +vn 0.969285 -0.115776 -0.216986 +vn 0.883992 -0.105588 -0.455423 +vn 0.883992 -0.105588 -0.455423 +vn 0.264920 0.024645 0.963955 +vn 0.139917 -0.016712 0.990022 +vn 0.969285 -0.115777 -0.216986 +vn 0.139914 -0.016741 0.990022 +vn 0.969285 -0.115775 -0.216986 +vn 0.969247 -0.116015 -0.217029 +vn 0.969285 -0.115775 -0.216986 +vn 0.689214 -0.306327 -0.656619 +vn 0.385222 -0.046041 0.921675 +vn 0.883992 -0.105587 -0.455423 +vn 0.771760 -0.092182 -0.629197 +vn 0.385523 -0.043510 0.921672 +vn 0.883962 -0.105835 -0.455423 +vn 0.883992 -0.105587 -0.455423 +vn 0.709800 -0.032566 -0.703650 +vn 0.507029 -0.060887 0.859776 +vn 0.365626 -0.124594 0.922385 +vn 0.771429 -0.095606 -0.629092 +vn 0.385222 -0.046012 0.921676 +vn 0.771842 -0.092191 -0.629095 +vn 0.507067 -0.060567 0.859776 +vn 0.506835 -0.062513 0.859773 +vn 0.507069 -0.060566 0.859775 +vn 0.771842 -0.092191 -0.629095 +vn 0.709085 -0.040938 0.703933 +vn 0.771842 -0.092194 -0.629095 +vn 0.771689 -0.092776 -0.629197 +vn 0.771842 -0.092192 -0.629095 +vn 0.667363 -0.069819 0.741452 +vn 0.771842 -0.092192 -0.629095 +vn 0.573357 -0.070475 -0.816269 +vn 0.666230 -0.079579 0.741488 +vn 0.386175 -0.268305 -0.882542 +vn 0.666230 -0.079579 0.741488 +vn 0.573592 -0.068512 -0.816271 +vn 0.573293 -0.069154 -0.816427 +vn 0.573592 -0.068512 -0.816271 +vn 0.666230 -0.079577 0.741488 +vn 0.573592 -0.068512 -0.816271 +vn 0.665671 -0.081458 0.741786 +vn 0.180548 -0.021566 -0.983330 +vn 0.264063 0.016541 -0.964364 +vn 0.180547 -0.021579 -0.983330 +vn 0.422957 -0.048841 -0.904833 +vn 0.828749 -0.100429 0.550535 +vn 0.422754 -0.050509 -0.904836 +vn 0.422760 -0.050496 -0.904834 +vn 0.828919 -0.099011 0.550537 +vn 0.828920 -0.099009 0.550536 +vn 0.665256 -0.081805 0.742120 +vn 0.665902 -0.079538 0.741787 +vn 0.828920 -0.099010 0.550536 +vn 0.828919 -0.099011 0.550537 +vn 0.964399 -0.063276 0.256771 +vn 0.906872 -0.106350 0.407765 +vn 0.828638 -0.101350 0.550534 +vn 0.828920 -0.099010 0.550536 +vn 0.828919 -0.099010 0.550536 +vn 0.906642 -0.108292 0.407765 +vn 0.906642 -0.108295 0.407766 +vn 0.906642 -0.108295 0.407766 +vn 0.906642 -0.108293 0.407765 +vn 0.906642 -0.108293 0.407766 +vn 0.906642 -0.108293 0.407766 +vn 0.906642 -0.108293 0.407766 +vn 0.979293 -0.116971 0.165234 +vn -0.711234 0.007628 0.702914 +vn -0.698648 -0.134660 0.702679 +vn 0.244047 0.096400 0.964960 +vn 0.235783 0.098846 0.966765 +vn -0.891683 -0.373429 0.255837 +vn -0.261786 0.004229 0.965117 +vn -0.251071 -0.048392 0.966758 +vn -0.251071 -0.048392 0.966758 +vn -0.255962 0.008287 0.966651 +vn 0.653280 0.280988 0.703044 +vn 0.654193 0.280437 0.702415 +vn 0.262394 0.001213 0.964960 +vn 0.255632 -0.004130 0.966765 +vn 0.251071 0.048392 0.966758 +vn 0.251071 0.048392 0.966758 +vn 0.891543 0.373757 0.255847 +vn 0.895400 0.368477 0.249967 +vn 0.710918 -0.018048 0.703044 +vn 0.698648 0.134659 0.702679 +vn 0.698648 0.134660 0.702679 +vn 0.711560 -0.017197 0.702415 +vn 0.893969 0.368030 -0.255683 +vn 0.892996 0.374367 -0.249813 +vn 0.966591 -0.015615 0.255847 +vn 0.950801 0.183260 0.249787 +vn 0.950801 0.183260 0.249786 +vn 0.968210 -0.009278 0.249967 +vn 0.653665 0.280198 -0.703002 +vn 0.653905 0.281224 -0.702369 +vn 0.966715 -0.009395 -0.255684 +vn 0.968168 -0.015640 -0.249813 +vn 0.950801 0.183260 -0.249787 +vn 0.950801 0.183260 -0.249786 +vn 0.241461 0.101226 -0.965117 +vn 0.237450 0.093468 -0.966893 +vn 0.698647 0.134659 -0.702680 +vn 0.710981 -0.017172 -0.703001 +vn 0.711585 -0.018035 -0.702369 +vn 0.698647 0.134660 -0.702680 +vn -0.239527 -0.104823 -0.965214 +vn -0.235785 -0.098847 -0.966765 +vn -0.261786 0.004229 -0.965117 +vn 0.251072 0.048392 -0.966758 +vn 0.261786 -0.004229 -0.965117 +vn 0.255180 0.001483 -0.966893 +vn 0.251073 0.048393 -0.966758 +vn -0.657806 -0.271592 -0.702516 +vn -0.891710 -0.377902 -0.249085 +vn -0.657570 -0.271086 -0.702933 +vn -0.711651 0.007259 -0.702495 +vn -0.251073 -0.048393 -0.966758 +vn -0.251072 -0.048392 -0.966758 +vn -0.255963 0.008286 -0.966651 +vn -0.966501 0.019272 -0.255938 +vn -0.698647 -0.134660 -0.702680 +vn -0.711233 0.007629 -0.702914 +vn -0.950646 -0.183231 -0.250396 +vn -0.891682 -0.373429 -0.255838 +vn -0.950646 -0.183231 -0.250397 +vn -0.968328 0.015286 -0.249215 +vn -0.698647 -0.134659 -0.702680 +vn -0.657806 -0.271591 0.702517 +vn -0.891710 -0.377902 0.249085 +vn -0.239527 -0.104824 0.965214 +vn -0.657570 -0.271087 0.702932 +vn -0.966501 0.019272 0.255938 +vn -0.950646 -0.183231 0.250397 +vn -0.968328 0.015286 0.249215 +vn -0.950646 -0.183231 0.250396 +vn -0.235784 -0.098847 0.966765 +vn -0.711651 0.007260 0.702496 +vn -0.698647 -0.134660 0.702680 +vn 0.228678 0.124838 0.965465 +vn 0.228678 0.124838 0.965465 +vn 0.622841 0.340015 0.704598 +vn 0.622841 0.340015 0.704599 +vn 0.848219 0.463051 -0.257113 +vn 0.848219 0.463051 0.257113 +vn 0.848219 0.463051 0.257113 +vn 0.622842 0.340015 -0.704598 +vn 0.848219 0.463051 -0.257113 +vn 0.228678 0.124838 -0.965465 +vn 0.622841 0.340015 -0.704598 +vn 0.228678 0.124838 -0.965465 +vn -0.945484 -0.211385 0.247744 +vn -0.948160 0.233069 0.216038 +vn 0.911831 -0.224140 -0.343984 +vn -0.943532 -0.243727 0.224375 +vn -0.948160 0.233070 0.216037 +vn 0.319048 -0.289809 -0.902341 +vn -0.866090 0.212896 0.452287 +vn 0.685889 0.208789 -0.697111 +vn -0.861837 -0.226433 0.453834 +vn 0.805094 -0.197902 -0.559158 +vn -0.866090 0.212896 0.452288 +vn 0.800776 0.210350 -0.560812 +vn 0.805094 -0.197902 -0.559159 +vn -0.237413 0.220442 0.946066 +vn 0.073510 -0.103281 -0.991932 +vn 0.132685 -0.125262 -0.983211 +vn 0.055960 -0.091158 0.994263 +vn -0.048519 0.042989 0.997897 +vn -0.708784 -0.150284 0.689231 +vn -0.733537 0.180312 0.655295 +vn -0.041270 0.036700 -0.998474 +vn -0.728033 -0.199277 0.655939 +vn 0.624623 0.162795 -0.763770 +vn 0.628574 -0.154511 -0.762247 +vn -0.733537 0.180313 0.655294 +vn 0.628574 -0.154511 -0.762248 +vn -0.532283 0.130842 0.836394 +vn -0.532284 0.130842 0.836394 +vn -0.528403 -0.140482 0.837290 +vn 0.243961 0.096562 -0.964966 +vn 0.420160 -0.103281 -0.901554 +vn 0.420160 -0.103281 -0.901554 +vn 0.416913 0.111103 -0.902130 +vn 0.125260 -0.118318 0.985044 +vn -0.293281 0.225868 -0.928962 +vn 0.401821 -0.400912 0.823292 +vn -0.230796 0.214124 -0.949149 +vn 0.312331 -0.283430 0.906706 +vn -0.274685 -0.037928 0.960786 +vn -0.312852 -0.077982 0.946595 +vn -0.397498 0.361950 -0.843201 +vn -0.315160 0.077470 0.945871 +vn -0.315160 0.077470 0.945871 +vn 0.177163 -0.043549 -0.983218 +vn 0.175712 0.046375 -0.983349 +vn -0.062903 -0.016602 0.997882 +vn 0.177163 -0.043549 -0.983218 +vn -0.063430 0.015592 0.997865 +vn -0.063430 0.015592 0.997864 +vn -0.272819 -0.041560 -0.961167 +vn -0.054018 0.013278 -0.998452 +vn -0.054018 0.013278 -0.998452 +vn -0.053569 -0.014138 -0.998464 +vn 0.471081 -0.429746 0.770325 +vn -0.571695 0.501611 -0.649270 +vn -0.549381 0.507157 -0.664057 +vn 0.243000 0.098356 0.965027 +vn 0.167280 -0.041120 0.985052 +vn 0.165908 0.043788 0.985169 +vn -0.723933 0.649891 -0.231436 +vn -0.722193 0.652647 -0.229106 +vn 0.167280 -0.041120 0.985052 +vn 0.606943 -0.554660 0.569185 +vn -0.656035 0.599787 -0.458121 +vn -0.306292 0.075291 -0.948955 +vn 0.638170 -0.614596 0.463692 +vn -0.306292 0.075291 -0.948955 +vn -0.304049 -0.075447 -0.949664 +vn 0.411189 -0.101075 0.905929 +vn -0.706209 -0.157279 -0.690313 +vn -0.523685 0.128728 -0.842130 +vn -0.523684 0.128728 -0.842131 +vn 0.411188 -0.101075 0.905929 +vn 0.407992 0.108874 0.906471 +vn -0.519867 -0.137992 -0.843028 +vn 0.691547 -0.629562 0.354139 +vn -0.726928 0.178688 -0.663059 +vn 0.620746 -0.152587 0.769020 +vn -0.721401 -0.197862 -0.663650 +vn -0.726928 0.178688 -0.663058 +vn 0.685399 0.209958 0.697242 +vn -0.944186 -0.216682 -0.248116 +vn 0.620746 -0.152587 0.769020 +vn -0.947099 0.232808 -0.220915 +vn 0.616803 0.160859 0.770506 +vn -0.942466 -0.243451 -0.229106 +vn -0.947099 0.232809 -0.220915 +vn -0.863894 0.212356 -0.456719 +vn -0.859603 -0.226010 -0.458259 +vn -0.863892 0.212356 -0.456723 +vn 0.723188 -0.690584 0.009609 +vn 0.732588 -0.671037 0.114127 +vn 0.795157 0.208756 0.569338 +vn 0.799458 -0.196517 0.567669 +vn 0.799458 -0.196517 0.567668 +vn 0.733450 -0.671605 -0.104868 +vn 0.928800 0.272093 0.251587 +vn 0.903949 0.240068 0.353898 +vn 0.908659 -0.223360 0.352773 +vn 0.908659 -0.223360 0.352773 +vn 0.645040 -0.620286 -0.446283 +vn 0.694016 -0.631737 -0.345327 +vn 0.960569 0.253522 0.114169 +vn 0.964792 -0.237158 0.113716 +vn -0.723010 0.653386 0.224374 +vn 0.964792 -0.237158 0.113716 +vn -0.724768 0.650603 0.226774 +vn 0.611204 -0.558645 -0.560666 +vn -0.582270 0.504734 0.637342 +vn 0.928963 0.271562 -0.251557 +vn 0.965777 -0.237400 -0.104483 +vn 0.965777 -0.237400 -0.104483 +vn -0.657589 0.601465 0.453669 +vn 0.961556 0.253782 -0.104898 +vn -0.554704 0.511359 0.656365 +vn 0.415384 -0.410946 -0.811529 +vn 0.477139 -0.435042 -0.763595 +vn -0.311166 0.235576 0.920695 +vn -0.404087 0.367840 0.837501 +vn 0.907104 0.241000 -0.345082 +vn 0.911831 -0.224140 -0.343984 +vn -0.289656 0.697885 -0.655023 +vn -0.290064 0.699341 -0.653288 +vn 0.000000 0.757079 -0.653324 +vn -0.338278 -0.818087 0.465082 +vn 0.000000 0.973766 -0.227552 +vn -0.372633 0.899647 -0.227552 +vn 0.000000 0.973766 -0.227552 +vn 0.000000 0.757079 -0.653324 +vn -0.340385 -0.821544 0.457387 +vn -0.383098 -0.923657 0.009658 +vn -0.383114 -0.923653 0.009410 +vn -0.342285 -0.826047 -0.447759 +vn -0.343232 -0.829954 -0.439737 +vn -0.222924 -0.539747 -0.811775 +vn -0.221385 -0.534838 -0.815437 +vn -0.049715 -0.119134 -0.991633 +vn -0.048707 -0.116117 -0.992041 +vn 0.137174 0.332103 -0.933215 +vn 0.134373 0.323525 -0.936630 +vn 0.371566 0.898406 -0.234106 +vn 0.289656 0.697885 -0.655023 +vn 0.372633 0.899647 -0.227551 +vn 0.290064 0.699341 -0.653288 +vn -0.371995 0.899442 0.229398 +vn 0.000000 0.974887 0.222701 +vn -0.373062 0.900682 0.222701 +vn 0.372465 0.899242 0.229421 +vn 0.000000 0.974887 0.222701 +vn -0.293138 0.706880 0.643732 +vn 0.000000 0.767054 0.641582 +vn -0.294047 0.708503 0.641529 +vn 0.000000 0.767054 0.641582 +vn -0.145011 0.349058 0.925813 +vn 0.000000 0.369009 0.929426 +vn -0.140879 0.340996 0.929449 +vn 0.000000 0.369009 0.929426 +vn 0.042170 -0.100345 0.994059 +vn 0.041001 -0.097997 0.994342 +vn 0.000000 -0.106154 0.994350 +vn 0.000000 -0.106154 0.994350 +vn 0.217097 -0.524378 0.823344 +vn 0.000000 -0.561944 0.827176 +vn 0.214476 -0.519319 0.827229 +vn 0.000000 -0.561944 0.827175 +vn 0.340385 -0.821545 0.457386 +vn 0.000000 -0.889264 0.457394 +vn 0.338278 -0.818088 0.465081 +vn 0.000000 -0.889264 0.457394 +vn 0.000000 -0.999956 0.009410 +vn 0.383098 -0.923657 0.009658 +vn 0.372574 0.900879 0.222723 +vn 0.000000 -0.999956 0.009410 +vn 0.383114 -0.923653 0.009410 +vn 0.293138 0.706880 0.643732 +vn 0.342286 -0.826047 -0.447758 +vn 0.343232 -0.829954 -0.439737 +vn 0.000000 -0.898146 -0.439698 +vn 0.294047 0.708503 0.641530 +vn -0.000000 -0.898146 -0.439698 +vn 0.145011 0.349058 0.925813 +vn 0.222924 -0.539747 -0.811775 +vn 0.221385 -0.534838 -0.815437 +vn 0.000000 -0.578864 -0.815425 +vn 0.140879 0.340996 0.929449 +vn -0.000000 -0.578864 -0.815425 +vn 0.049715 -0.119134 -0.991633 +vn -0.042170 -0.100345 0.994059 +vn 0.000000 -0.125807 -0.992055 +vn -0.000000 -0.125807 -0.992055 +vn -0.041001 -0.097997 0.994342 +vn 0.048707 -0.116117 -0.992041 +vn -0.137174 0.332103 -0.933215 +vn -0.134373 0.323525 -0.936630 +vn -0.217098 -0.524379 0.823344 +vn 0.000000 0.350261 -0.936652 +vn 0.000000 0.350261 -0.936652 +vn -0.214476 -0.519320 0.827229 +vn -0.371566 0.898406 -0.234107 +vn -0.243961 0.096562 -0.964966 +vn 0.948160 0.233069 0.216037 +vn 0.582270 0.504734 0.637342 +vn -0.416913 0.111103 -0.902131 +vn 0.866090 0.212897 0.452287 +vn 0.866097 0.212897 0.452273 +vn 0.657593 0.601470 0.453659 +vn -0.611205 -0.558646 -0.560663 +vn -0.805096 -0.197902 -0.559157 +vn -0.805097 -0.197903 -0.559154 +vn 0.274685 -0.037928 0.960786 +vn 0.312851 -0.077981 0.946596 +vn -0.175712 0.046375 -0.983349 +vn 0.062903 -0.016602 0.997882 +vn 0.272819 -0.041560 -0.961167 +vn 0.554703 0.511360 0.656366 +vn 0.053569 -0.014138 -0.998464 +vn 0.733537 0.180312 0.655294 +vn -0.415383 -0.410946 -0.811530 +vn 0.733536 0.180313 0.655296 +vn -0.628574 -0.154511 -0.762247 +vn -0.477139 -0.435042 -0.763594 +vn 0.311166 0.235576 0.920695 +vn 0.532286 0.130842 0.836392 +vn -0.628574 -0.154511 -0.762247 +vn 0.404088 0.367841 0.837500 +vn 0.532285 0.130842 0.836393 +vn -0.420160 -0.103281 -0.901554 +vn -0.420158 -0.103280 -0.901554 +vn -0.243001 0.098356 0.965027 +vn -0.319047 -0.289808 -0.902342 +vn -0.165907 0.043788 0.985169 +vn -0.407993 0.108874 0.906470 +vn 0.304049 -0.075446 -0.949664 +vn 0.706208 -0.157278 -0.690314 +vn 0.315159 0.077470 0.945872 +vn 0.519868 -0.137991 -0.843028 +vn 0.315160 0.077470 0.945871 +vn 0.237413 0.220442 0.946066 +vn -0.073510 -0.103281 -0.991932 +vn -0.177163 -0.043549 -0.983218 +vn -0.055959 -0.091158 0.994263 +vn -0.177163 -0.043549 -0.983218 +vn 0.048519 0.042989 0.997897 +vn -0.132685 -0.125262 -0.983211 +vn 0.063430 0.015592 0.997864 +vn 0.063429 0.015592 0.997864 +vn 0.041270 0.036700 -0.998474 +vn 0.054018 0.013278 -0.998452 +vn 0.054018 0.013278 -0.998452 +vn -0.685398 0.209958 0.697243 +vn -0.616802 0.160860 0.770506 +vn 0.721402 -0.197863 -0.663649 +vn -0.167280 -0.041120 0.985052 +vn -0.125260 -0.118318 0.985044 +vn 0.944186 -0.216682 -0.248116 +vn -0.167281 -0.041120 0.985051 +vn 0.942466 -0.243454 -0.229105 +vn 0.859600 -0.226011 -0.458265 +vn 0.293281 0.225868 -0.928962 +vn -0.795160 0.208757 0.569334 +vn 0.306292 0.075290 -0.948956 +vn 0.230795 0.214124 -0.949149 +vn 0.306292 0.075290 -0.948955 +vn -0.411186 -0.101075 0.905931 +vn -0.401822 -0.400913 0.823291 +vn 0.397497 0.361949 -0.843201 +vn -0.312330 -0.283429 0.906707 +vn 0.523685 0.128728 -0.842130 +vn -0.411190 -0.101075 0.905929 +vn 0.523683 0.128727 -0.842131 +vn -0.903948 0.240066 0.353902 +vn 0.571696 0.501611 -0.649270 +vn 0.726928 0.178687 -0.663059 +vn -0.928800 0.272093 0.251587 +vn 0.726928 0.178689 -0.663057 +vn -0.620745 -0.152588 0.769021 +vn 0.549382 0.507156 -0.664057 +vn 0.723934 0.649890 -0.231437 +vn -0.471082 -0.429747 0.770324 +vn 0.947100 0.232808 -0.220913 +vn -0.620748 -0.152587 0.769019 +vn 0.722192 0.652648 -0.229105 +vn 0.947099 0.232809 -0.220914 +vn 0.863889 0.212355 -0.456729 +vn 0.656036 0.599786 -0.458119 +vn 0.863895 0.212357 -0.456717 +vn -0.960569 0.253521 0.114165 +vn -0.638169 -0.614596 0.463694 +vn -0.799461 -0.196518 0.567665 +vn -0.799458 -0.196518 0.567668 +vn -0.606943 -0.554661 0.569185 +vn -0.961557 0.253782 -0.104898 +vn -0.928964 0.271562 -0.251557 +vn -0.691547 -0.629561 0.354140 +vn -0.908658 -0.223360 0.352776 +vn -0.908658 -0.223360 0.352777 +vn -0.907104 0.240999 -0.345083 +vn -0.732588 -0.671036 0.114127 +vn -0.723189 -0.690584 0.009610 +vn -0.964792 -0.237159 0.113716 +vn 0.943532 -0.243729 0.224374 +vn -0.964793 -0.237158 0.113713 +vn 0.945483 -0.211387 0.247743 +vn -0.685888 0.208788 -0.697112 +vn -0.800778 0.210349 -0.560810 +vn -0.965777 -0.237400 -0.104483 +vn 0.861837 -0.226435 0.453834 +vn -0.965776 -0.237400 -0.104486 +vn -0.733450 -0.671605 -0.104870 +vn 0.708784 -0.150283 0.689232 +vn 0.728033 -0.199278 0.655939 +vn -0.624623 0.162796 -0.763769 +vn 0.528406 -0.140481 0.837288 +vn -0.645040 -0.620285 -0.446284 +vn -0.694016 -0.631736 -0.345327 +vn -0.911831 -0.224140 -0.343984 +vn -0.911831 -0.224140 -0.343985 +vn 0.724767 0.650604 0.226774 +vn 0.948160 0.233069 0.216037 +vn 0.723009 0.653386 0.224374 +vn -0.228679 0.124838 0.965464 +vn -0.622840 0.340014 0.704600 +vn -0.228678 0.124837 0.965465 +vn -0.848219 0.463051 0.257113 +vn -0.622841 0.340015 0.704598 +vn -0.848219 0.463051 0.257113 +vn -0.848219 0.463051 -0.257113 +vn -0.848219 0.463051 -0.257113 +vn -0.622841 0.340015 -0.704599 +vn -0.622842 0.340016 -0.704597 +vn -0.228679 0.124838 -0.965464 +vn -0.228678 0.124837 -0.965465 +vn 0.657570 -0.271087 0.702932 +vn 0.698647 -0.134659 0.702680 +vn -0.262394 0.001213 0.964960 +vn -0.255631 -0.004130 0.966766 +vn 0.966599 0.015259 0.255838 +vn 0.251071 -0.048392 0.966758 +vn 0.235784 -0.098846 0.966766 +vn 0.251071 -0.048392 0.966758 +vn -0.710918 -0.018046 0.703044 +vn -0.711560 -0.017196 0.702415 +vn -0.244047 0.096400 0.964960 +vn -0.251071 0.048392 0.966758 +vn -0.235784 0.098846 0.966766 +vn -0.251071 0.048392 0.966758 +vn -0.966591 -0.015615 0.255847 +vn -0.968211 -0.009276 0.249965 +vn 0.891683 -0.373429 0.255837 +vn -0.653281 0.280987 0.703043 +vn -0.698647 0.134659 0.702680 +vn -0.654193 0.280437 0.702415 +vn -0.698648 0.134659 0.702679 +vn -0.966715 -0.009393 -0.255684 +vn -0.968168 -0.015641 -0.249811 +vn -0.891543 0.373756 0.255846 +vn -0.950801 0.183260 0.249786 +vn -0.895401 0.368475 0.249967 +vn -0.950801 0.183262 0.249784 +vn -0.710981 -0.017171 -0.703001 +vn -0.711585 -0.018033 -0.702369 +vn -0.893970 0.368028 -0.255683 +vn -0.892997 0.374365 -0.249813 +vn -0.950801 0.183260 -0.249784 +vn -0.950801 0.183262 -0.249786 +vn -0.261787 -0.004229 -0.965116 +vn 0.261786 0.004229 -0.965117 +vn -0.255179 0.001483 -0.966893 +vn -0.698647 0.134659 -0.702680 +vn -0.653665 0.280198 -0.703001 +vn -0.653905 0.281223 -0.702369 +vn -0.698647 0.134659 -0.702680 +vn 0.711651 0.007259 -0.702495 +vn 0.255964 0.008286 -0.966651 +vn -0.251072 0.048393 -0.966758 +vn -0.241460 0.101226 -0.965117 +vn -0.237450 0.093468 -0.966893 +vn -0.251072 0.048392 -0.966758 +vn 0.966501 0.019272 -0.255939 +vn 0.968327 0.015286 -0.249216 +vn 0.711233 0.007629 -0.702914 +vn 0.251073 -0.048393 -0.966758 +vn 0.239527 -0.104823 -0.965214 +vn 0.251072 -0.048393 -0.966758 +vn 0.235785 -0.098847 -0.966765 +vn 0.657806 -0.271591 -0.702516 +vn 0.657570 -0.271086 -0.702933 +vn 0.950646 -0.183230 -0.250398 +vn 0.950646 -0.183231 -0.250396 +vn 0.698647 -0.134659 -0.702680 +vn 0.698647 -0.134659 -0.702680 +vn 0.891710 -0.377902 -0.249085 +vn 0.891683 -0.373429 -0.255838 +vn 0.968287 0.019401 0.249087 +vn 0.711651 0.007260 0.702496 +vn 0.711234 0.007628 0.702914 +vn 0.657806 -0.271591 0.702517 +vn 0.950646 -0.183231 0.250396 +vn 0.891710 -0.377902 0.249085 +vn 0.950646 -0.183230 0.250398 +vn 0.261786 0.004229 0.965117 +vn 0.255962 0.008287 0.966651 +vn 0.239527 -0.104824 0.965214 +vn 0.698648 -0.134660 0.702679 +vn -0.873094 -0.104286 -0.476267 +vn -0.923704 -0.110336 0.366876 +vn -0.873094 -0.104286 -0.476267 +vn -0.923701 -0.110324 0.366885 +vn -0.495517 -0.352278 -0.793954 +vn -0.691668 -0.084520 -0.717253 +vn -0.692262 -0.082682 -0.716894 +vn -0.923704 -0.110331 0.366876 +vn -0.923704 -0.110331 0.366876 +vn -0.308806 -0.036887 0.950409 +vn -0.692261 -0.082690 -0.716894 +vn -0.474389 -0.056663 0.878490 +vn -0.317181 0.041361 0.947463 +vn -0.692261 -0.082691 -0.716894 +vn -0.692262 -0.082687 -0.716894 +vn -0.692262 -0.082687 -0.716894 +vn -0.980888 -0.117161 -0.155347 +vn -0.980887 -0.117162 0.155347 +vn -0.980888 -0.117161 -0.155347 +vn -0.619649 -0.074015 0.781382 +vn -0.980891 -0.117131 -0.155347 +vn -0.619640 -0.074015 0.781388 +vn -0.941700 -0.112480 -0.317097 +vn -0.941697 -0.112480 -0.317105 +vn -0.619641 -0.074012 0.781388 +vn -0.980888 -0.117161 0.155347 +vn -0.941699 -0.112488 -0.317097 +vn -0.403875 -0.049619 -0.913467 +vn -0.980888 -0.117161 0.155347 +vn -0.553844 -0.067545 -0.829877 +vn -0.555638 -0.066372 -0.828771 +vn -0.980887 -0.117175 0.155342 +vn -0.555638 -0.066368 -0.828771 +vn -0.555638 -0.066368 -0.828771 +vn -0.980888 -0.117155 0.155347 +vn -0.139510 -0.016664 -0.990080 +vn -0.139517 -0.016608 -0.990080 +vn -0.404044 -0.048209 -0.913468 +vn -0.958917 -0.220939 -0.177942 +vn -0.404033 -0.048260 -0.913470 +vn -0.744776 0.390524 -0.541110 +vn -0.980886 -0.117171 -0.155347 +vn -0.873094 -0.104286 -0.476267 +vn -0.876499 -0.071839 -0.476014 +vn -0.873094 -0.104286 -0.476267 +vn -0.872253 -0.106727 -0.477267 +vn -0.941393 -0.115019 -0.317095 +vn -0.692262 -0.082686 -0.716894 +vn -0.692262 -0.082686 -0.716894 +vn -0.692261 -0.082690 -0.716894 +vn -0.980888 -0.117154 0.155347 +vn -0.555638 -0.066367 -0.828771 +vn -0.980888 -0.117167 0.155342 +vn -0.555637 -0.066370 -0.828772 +vn -0.555637 -0.066367 -0.828772 +vn -0.980888 -0.117162 0.155347 +vn -0.175511 0.823051 -0.540169 +vn -0.139510 -0.016664 -0.990080 +vn -0.418957 0.135278 -0.897872 +vn -0.404033 -0.048259 -0.913470 +vn -0.980888 -0.117162 0.155347 +vn -0.404034 -0.048259 -0.913470 +vn -0.980887 -0.117162 -0.155347 +vn -0.980887 -0.117162 -0.155347 +vn -0.179950 -0.021495 0.983441 +vn -0.872854 -0.104258 -0.476714 +vn -0.179950 -0.021494 0.983441 +vn -0.941699 -0.112481 -0.317097 +vn -0.179950 -0.021494 0.983441 +vn -0.941699 -0.112481 -0.317097 +vn -0.345361 -0.324004 0.880765 +vn -0.980888 -0.117161 -0.155347 +vn -0.980888 -0.117161 -0.155347 +vn -0.941700 -0.112480 -0.317097 +vn -0.619509 -0.075100 0.781389 +vn -0.941700 -0.112480 -0.317097 +vn -0.474388 -0.056666 0.878490 +vn -0.474388 -0.056667 0.878490 +vn -0.474389 -0.056663 0.878490 +vn -0.793213 0.196695 0.576302 +vn -0.792445 -0.094655 0.602554 +vn -0.792444 -0.094652 0.602556 +vn -0.474389 -0.056663 0.878490 +vn -0.793317 0.192827 0.577465 +vn -0.619649 -0.074018 0.781381 +vn -0.619640 -0.074007 0.781389 +vn -0.980886 -0.117175 -0.155347 +vn -0.980889 -0.117155 -0.155342 +vn -0.619649 -0.074014 0.781382 +vn -0.619649 -0.074018 0.781381 +vn -0.792208 -0.095112 0.602794 +vn -0.941698 -0.112492 -0.317097 +vn -0.941695 -0.112494 -0.317104 +vn -0.923705 -0.110331 0.366874 +vn -0.792327 -0.094639 0.602711 +vn -0.923704 -0.110330 0.366876 +vn -0.923702 -0.110353 0.366874 +vn -0.980887 -0.117166 -0.155347 +vn -0.980889 -0.117154 -0.155342 +vn -0.921234 -0.303158 0.243769 +vn -0.923646 -0.110822 0.366874 +vn -0.792318 -0.095717 0.602554 +vn -0.941698 -0.112473 -0.317104 +vn -0.792328 -0.094634 0.602711 +vn -0.941698 -0.112473 -0.317104 +vn -0.980888 -0.117162 -0.155347 +vn -0.980888 -0.117162 -0.155347 +vn -0.923705 -0.110331 0.366874 +vn -0.941697 -0.112481 -0.317104 +vn -0.923705 -0.110331 0.366874 +vn -0.941697 -0.112481 -0.317104 +vn -0.792444 -0.094645 0.602557 +vn -0.873094 -0.104286 -0.476267 +vn -0.792445 -0.094657 0.602554 +vn -0.872629 -0.106130 -0.476714 +vn -0.873095 -0.104280 -0.476267 +vn -0.873091 -0.104296 -0.476271 +vn -0.923701 -0.110325 0.366885 +vn -0.923703 -0.110344 0.366874 +vn -0.980888 -0.117161 0.155347 +vn -0.980888 -0.117161 0.155347 +vn -0.792443 -0.094653 0.602557 +vn -0.958833 0.283971 0.000000 +vn -0.792443 -0.094659 0.602556 +vn -0.980891 -0.117132 0.155347 +vn -0.873095 -0.104279 -0.476267 +vn -0.980886 -0.117171 0.155350 +vn -0.873092 -0.104290 -0.476271 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.000000 1.000000 0.000000 +vn 0.118600 0.992942 0.000000 +vn 0.118602 0.992942 -0.000003 +vn 0.118600 0.992942 0.000005 +vn 0.118602 0.992942 0.000001 +vn 0.118602 0.992942 -0.000001 +vn 0.118602 0.992942 -0.000001 +vn 0.118602 0.992942 0.000001 +vn 0.118600 0.992942 0.000000 +vn 0.118600 0.992942 0.000005 +vn 0.118602 0.992942 -0.000003 +g HeatPlate (Meshed) +f 1//1 2//1 3//1 +f 4//2 2//2 1//2 +f 3//3 5//3 6//3 +f 2//4 5//4 3//4 +f 6//5 7//5 8//5 +f 5//6 7//6 6//6 +f 9//7 10//7 11//7 +f 12//8 11//8 13//8 +f 12//9 9//9 11//9 +f 14//10 13//10 15//10 +f 14//11 12//11 13//11 +f 16//12 14//12 15//12 +f 17//13 18//13 19//13 +f 19//14 20//14 21//14 +f 18//15 20//15 19//15 +f 21//16 22//16 23//16 +f 20//17 22//17 21//17 +f 22//18 24//18 23//18 +f 25//19 26//19 27//19 +f 28//20 27//20 29//20 +f 28//21 25//21 27//21 +f 30//22 29//22 31//22 +f 30//23 28//23 29//23 +f 32//24 30//24 31//24 +f 33//25 34//25 35//25 +f 35//26 36//26 37//26 +f 34//27 36//27 35//27 +f 37//28 38//28 39//28 +f 36//29 38//29 37//29 +f 38//30 40//30 39//30 +f 41//31 42//31 43//31 +f 43//32 42//32 44//32 +f 44//33 45//33 46//33 +f 42//34 45//34 44//34 +f 46//35 47//35 48//35 +f 45//36 47//36 46//36 +f 49//37 50//37 51//37 +f 51//38 52//38 53//38 +f 50//39 52//39 51//39 +f 53//40 54//40 55//40 +f 52//41 54//41 53//41 +f 54//42 56//42 55//42 +f 57//43 58//43 59//43 +f 59//44 58//44 60//44 +f 60//45 61//45 62//45 +f 58//46 61//46 60//46 +f 62//47 63//47 64//47 +f 61//48 63//48 62//48 +f 65//49 66//49 67//49 +f 67//50 66//50 68//50 +f 68//51 69//51 70//51 +f 66//52 69//52 68//52 +f 70//53 71//53 72//53 +f 69//54 71//54 70//54 +f 73//55 74//55 75//55 +f 75//56 76//56 77//56 +f 74//57 76//57 75//57 +f 77//58 78//58 79//58 +f 76//59 78//59 77//59 +f 78//60 80//60 79//60 +f 81//61 82//61 83//61 +f 83//62 82//62 84//62 +f 84//63 85//63 86//63 +f 82//64 85//64 84//64 +f 86//65 87//65 88//65 +f 85//66 87//66 86//66 +f 88//67 89//67 90//67 +f 87//68 89//68 88//68 +f 90//69 91//69 92//69 +f 89//70 91//70 90//70 +f 93//71 94//71 95//71 +f 96//72 95//72 97//72 +f 96//73 93//73 95//73 +f 98//74 96//74 97//74 +f 99//75 97//75 100//75 +f 99//76 98//76 97//76 +f 101//77 102//77 103//77 +f 103//78 102//78 104//78 +f 104//79 105//79 106//79 +f 102//80 105//80 104//80 +f 106//81 107//81 108//81 +f 105//82 107//82 106//82 +f 108//83 109//83 110//83 +f 107//84 109//84 108//84 +f 110//85 111//85 112//85 +f 109//86 111//86 110//86 +f 7//87 113//87 8//87 +f 8//88 113//88 114//88 +f 114//89 115//89 116//89 +f 113//90 115//90 114//90 +f 116//91 74//91 73//91 +f 115//92 74//92 116//92 +f 117//93 118//93 119//93 +f 120//94 119//94 121//94 +f 120//95 117//95 119//95 +f 122//96 121//96 123//96 +f 122//97 120//97 121//97 +f 124//98 122//98 123//98 +f 72//99 71//99 125//99 +f 125//100 126//100 127//100 +f 71//101 126//101 125//101 +f 127//102 128//102 17//102 +f 126//103 128//103 127//103 +f 128//104 18//104 17//104 +f 64//105 63//105 129//105 +f 129//106 130//106 131//106 +f 63//107 130//107 129//107 +f 131//108 132//108 33//108 +f 130//109 132//109 131//109 +f 132//110 34//110 33//110 +f 133//111 134//111 135//111 +f 135//112 134//112 136//112 +f 136//113 137//113 138//113 +f 134//114 137//114 136//114 +f 138//115 139//115 140//115 +f 137//116 139//116 138//116 +f 140//117 141//117 142//117 +f 139//118 141//118 140//118 +f 142//119 143//119 144//119 +f 141//120 143//120 142//120 +f 55//121 145//121 146//121 +f 56//122 145//122 55//122 +f 146//123 147//123 148//123 +f 145//124 147//124 146//124 +f 148//125 41//125 43//125 +f 147//126 41//126 148//126 +f 48//127 47//127 149//127 +f 149//128 150//128 151//128 +f 47//129 150//129 149//129 +f 151//130 152//130 49//130 +f 150//131 152//131 151//131 +f 152//132 50//132 49//132 +f 143//133 153//133 144//133 +f 144//134 153//134 154//134 +f 154//135 155//135 156//135 +f 153//136 155//136 154//136 +f 156//137 157//137 158//137 +f 155//138 157//138 156//138 +f 158//139 159//139 160//139 +f 157//140 159//140 158//140 +f 160//141 133//141 135//141 +f 159//142 133//142 160//142 +f 161//143 162//143 163//143 +f 161//144 163//144 164//144 +f 165//145 164//145 166//145 +f 165//146 161//146 164//146 +f 167//147 166//147 168//147 +f 167//148 165//148 166//148 +f 169//149 168//149 170//149 +f 169//150 167//150 168//150 +f 171//151 170//151 172//151 +f 171//152 169//152 170//152 +f 163//153 162//153 173//153 +f 163//154 173//154 174//154 +f 174//155 173//155 175//155 +f 174//156 175//156 176//156 +f 118//157 117//157 176//157 +f 118//158 176//158 175//158 +f 39//159 177//159 178//159 +f 40//160 177//160 39//160 +f 178//161 179//161 180//161 +f 177//162 179//162 178//162 +f 180//163 57//163 59//163 +f 179//164 57//164 180//164 +f 171//165 172//165 181//165 +f 171//166 181//166 182//166 +f 183//167 32//167 31//167 +f 183//168 31//168 184//168 +f 185//169 184//169 186//169 +f 185//170 183//170 184//170 +f 181//171 186//171 182//171 +f 181//172 185//172 186//172 +f 187//173 188//173 26//173 +f 187//174 26//174 25//174 +f 188//175 187//175 189//175 +f 188//176 189//176 190//176 +f 190//177 189//177 191//177 +f 190//178 191//178 192//178 +f 23//179 193//179 194//179 +f 24//180 193//180 23//180 +f 194//181 195//181 196//181 +f 193//182 195//182 194//182 +f 196//183 65//183 67//183 +f 195//184 65//184 196//184 +f 197//185 16//185 15//185 +f 197//186 15//186 198//186 +f 199//187 198//187 200//187 +f 199//188 197//188 198//188 +f 201//189 200//189 202//189 +f 201//190 199//190 200//190 +f 10//191 9//191 203//191 +f 10//192 203//192 204//192 +f 205//193 206//193 204//193 +f 205//194 204//194 203//194 +f 207//195 208//195 206//195 +f 207//196 206//196 205//196 +f 124//197 123//197 209//197 +f 210//198 209//198 211//198 +f 210//199 124//199 209//199 +f 212//200 211//200 208//200 +f 212//201 210//201 211//201 +f 207//202 212//202 208//202 +f 79//203 80//203 213//203 +f 213//204 214//204 215//204 +f 80//205 214//205 213//205 +f 215//206 216//206 1//206 +f 214//207 216//207 215//207 +f 216//208 4//208 1//208 +f 111//209 217//209 112//209 +f 112//210 217//210 218//210 +f 218//211 219//211 220//211 +f 217//212 219//212 218//212 +f 220//213 221//213 222//213 +f 219//214 221//214 220//214 +f 222//215 223//215 224//215 +f 221//216 223//216 222//216 +f 224//217 101//217 103//217 +f 223//218 101//218 224//218 +f 201//219 202//219 225//219 +f 201//220 225//220 226//220 +f 227//221 228//221 229//221 +f 227//222 229//222 230//222 +f 231//223 230//223 232//223 +f 231//224 227//224 230//224 +f 233//225 232//225 234//225 +f 233//226 231//226 232//226 +f 235//227 234//227 236//227 +f 235//228 233//228 234//228 +f 225//229 236//229 226//229 +f 225//230 235//230 236//230 +f 237//231 238//231 229//231 +f 237//232 229//232 228//232 +f 239//233 240//233 238//233 +f 239//234 238//234 237//234 +f 240//235 239//235 99//235 +f 240//236 99//236 100//236 +f 241//237 192//237 191//237 +f 241//238 242//238 243//238 +f 241//239 191//239 242//239 +f 244//240 243//240 94//240 +f 244//241 241//241 243//241 +f 93//242 244//242 94//242 +f 91//243 245//243 92//243 +f 92//244 245//244 246//244 +f 246//245 247//245 248//245 +f 245//246 247//246 246//246 +f 248//247 249//247 250//247 +f 247//248 249//248 248//248 +f 250//249 251//249 252//249 +f 249//250 251//250 250//250 +f 252//251 81//251 83//251 +f 251//252 81//252 252//252 +f 234//253 104//253 236//253 +f 236//254 106//254 226//254 +f 104//255 106//255 236//255 +f 232//256 103//256 234//256 +f 234//257 103//257 104//257 +f 106//258 108//258 226//258 +f 232//259 224//259 103//259 +f 108//260 110//260 226//260 +f 232//261 230//261 224//261 +f 230//262 222//262 224//262 +f 222//263 229//263 220//263 +f 230//264 229//264 222//264 +f 218//265 238//265 112//265 +f 220//266 238//266 218//266 +f 112//267 238//267 110//267 +f 229//268 238//268 220//268 +f 95//269 84//269 97//269 +f 97//270 86//270 100//270 +f 84//271 86//271 97//271 +f 94//272 83//272 95//272 +f 95//273 83//273 84//273 +f 94//274 243//274 83//274 +f 86//275 88//275 100//275 +f 243//276 252//276 83//276 +f 88//277 240//277 100//277 +f 88//278 90//278 240//278 +f 252//279 242//279 250//279 +f 243//280 242//280 252//280 +f 90//281 92//281 240//281 +f 250//282 191//282 248//282 +f 242//283 191//283 250//283 +f 246//284 189//284 92//284 +f 248//285 189//285 246//285 +f 92//286 189//286 240//286 +f 191//287 189//287 248//287 +f 226//288 195//288 201//288 +f 110//289 195//289 226//289 +f 238//290 195//290 110//290 +f 201//291 195//291 193//291 +f 193//292 24//292 201//292 +f 24//293 22//293 201//293 +f 201//294 22//294 199//294 +f 238//295 203//295 195//295 +f 65//296 203//296 66//296 +f 195//297 203//297 65//297 +f 203//298 69//298 66//298 +f 22//299 20//299 199//299 +f 20//300 197//300 199//300 +f 20//301 16//301 197//301 +f 18//302 16//302 20//302 +f 71//303 9//303 126//303 +f 203//304 9//304 69//304 +f 69//305 9//305 71//305 +f 128//306 14//306 18//306 +f 18//307 14//307 16//307 +f 126//308 12//308 128//308 +f 128//309 12//309 14//309 +f 9//310 12//310 126//310 +f 240//311 53//311 238//311 +f 240//312 51//312 53//312 +f 238//313 55//313 203//313 +f 53//314 55//314 238//314 +f 189//315 49//315 240//315 +f 240//316 49//316 51//316 +f 55//317 146//317 203//317 +f 189//318 151//318 49//318 +f 189//319 149//319 151//319 +f 30//320 132//320 28//320 +f 28//321 130//321 25//321 +f 132//322 130//322 28//322 +f 32//323 34//323 30//323 +f 30//324 34//324 132//324 +f 130//325 63//325 25//325 +f 183//326 36//326 32//326 +f 32//327 36//327 34//327 +f 63//328 61//328 25//328 +f 189//329 187//329 149//329 +f 149//330 187//330 48//330 +f 61//331 187//331 25//331 +f 61//332 58//332 187//332 +f 183//333 185//333 36//333 +f 36//334 185//334 38//334 +f 58//335 57//335 187//335 +f 57//336 179//336 187//336 +f 40//337 181//337 177//337 +f 177//338 181//338 179//338 +f 38//339 181//339 40//339 +f 185//340 181//340 38//340 +f 146//341 205//341 203//341 +f 148//342 205//342 146//342 +f 43//343 205//343 148//343 +f 5//344 2//344 205//344 +f 205//345 2//345 207//345 +f 205//346 7//346 5//346 +f 2//347 4//347 207//347 +f 4//348 212//348 207//348 +f 4//349 216//349 212//349 +f 205//350 176//350 7//350 +f 7//351 176//351 113//351 +f 43//352 176//352 205//352 +f 44//353 176//353 43//353 +f 46//354 176//354 44//354 +f 176//355 115//355 113//355 +f 214//356 210//356 216//356 +f 216//357 210//357 212//357 +f 115//358 117//358 74//358 +f 176//359 117//359 115//359 +f 78//360 124//360 80//360 +f 80//361 124//361 214//361 +f 214//362 124//362 210//362 +f 76//363 122//363 78//363 +f 78//364 122//364 124//364 +f 117//365 120//365 74//365 +f 74//366 120//366 76//366 +f 76//367 120//367 122//367 +f 46//368 174//368 176//368 +f 48//369 174//369 46//369 +f 187//370 174//370 48//370 +f 179//371 174//371 187//371 +f 174//372 156//372 163//372 +f 154//373 156//373 174//373 +f 174//374 144//374 154//374 +f 156//375 158//375 163//375 +f 158//376 164//376 163//376 +f 179//377 142//377 174//377 +f 174//378 142//378 144//378 +f 158//379 160//379 164//379 +f 160//380 166//380 164//380 +f 135//381 166//381 160//381 +f 179//382 172//382 142//382 +f 140//383 172//383 138//383 +f 142//384 172//384 140//384 +f 181//385 172//385 179//385 +f 136//386 168//386 135//386 +f 135//387 168//387 166//387 +f 172//388 170//388 138//388 +f 138//389 170//389 136//389 +f 136//390 170//390 168//390 +f 102//391 233//391 235//391 +f 105//392 235//392 225//392 +f 105//393 102//393 235//393 +f 101//394 233//394 102//394 +f 101//395 231//395 233//395 +f 107//396 105//396 225//396 +f 223//397 231//397 101//397 +f 109//398 107//398 225//398 +f 227//399 231//399 223//399 +f 221//400 227//400 223//400 +f 228//401 221//401 219//401 +f 228//402 227//402 221//402 +f 237//403 111//403 109//403 +f 237//404 219//404 217//404 +f 237//405 217//405 111//405 +f 237//406 228//406 219//406 +f 82//407 96//407 98//407 +f 85//408 98//408 99//408 +f 85//409 82//409 98//409 +f 81//410 93//410 96//410 +f 81//411 96//411 82//411 +f 244//412 93//412 81//412 +f 87//413 85//413 99//413 +f 251//414 244//414 81//414 +f 239//415 87//415 99//415 +f 89//416 87//416 239//416 +f 241//417 251//417 249//417 +f 241//418 244//418 251//418 +f 91//419 89//419 239//419 +f 192//420 249//420 247//420 +f 192//421 241//421 249//421 +f 190//422 247//422 245//422 +f 190//423 245//423 91//423 +f 190//424 91//424 239//424 +f 190//425 192//425 247//425 +f 196//426 202//426 194//426 +f 196//427 225//427 202//427 +f 196//428 109//428 225//428 +f 196//429 237//429 109//429 +f 23//430 194//430 202//430 +f 21//431 23//431 202//431 +f 21//432 202//432 200//432 +f 204//433 237//433 196//433 +f 204//434 196//434 67//434 +f 204//435 67//435 68//435 +f 70//436 204//436 68//436 +f 19//437 21//437 200//437 +f 198//438 19//438 200//438 +f 15//439 17//439 19//439 +f 15//440 19//440 198//440 +f 10//441 72//441 125//441 +f 10//442 204//442 70//442 +f 10//443 70//443 72//443 +f 13//444 127//444 17//444 +f 13//445 17//445 15//445 +f 11//446 125//446 127//446 +f 11//447 127//447 13//447 +f 11//448 10//448 125//448 +f 54//449 239//449 237//449 +f 52//450 239//450 54//450 +f 56//451 54//451 237//451 +f 56//452 237//452 204//452 +f 50//453 190//453 239//453 +f 50//454 239//454 52//454 +f 145//455 56//455 204//455 +f 152//456 190//456 50//456 +f 150//457 190//457 152//457 +f 131//458 29//458 27//458 +f 129//459 27//459 26//459 +f 129//460 131//460 27//460 +f 33//461 31//461 29//461 +f 33//462 29//462 131//462 +f 64//463 129//463 26//463 +f 35//464 184//464 31//464 +f 35//465 31//465 33//465 +f 62//466 64//466 26//466 +f 188//467 190//467 150//467 +f 188//468 150//468 47//468 +f 188//469 62//469 26//469 +f 60//470 62//470 188//470 +f 186//471 184//471 35//471 +f 186//472 35//472 37//472 +f 59//473 60//473 188//473 +f 180//474 59//474 188//474 +f 182//475 178//475 180//475 +f 182//476 39//476 178//476 +f 182//477 37//477 39//477 +f 182//478 186//478 37//478 +f 206//479 145//479 204//479 +f 206//480 41//480 147//480 +f 206//481 147//481 145//481 +f 3//482 6//482 206//482 +f 3//483 206//483 208//483 +f 8//484 206//484 6//484 +f 1//485 3//485 208//485 +f 211//486 1//486 208//486 +f 215//487 1//487 211//487 +f 175//488 206//488 8//488 +f 175//489 41//489 206//489 +f 175//490 45//490 42//490 +f 175//491 42//491 41//491 +f 175//492 8//492 114//492 +f 116//493 175//493 114//493 +f 209//494 215//494 211//494 +f 209//495 213//495 215//495 +f 123//496 213//496 209//496 +f 123//497 79//497 213//497 +f 123//498 77//498 79//498 +f 118//499 175//499 116//499 +f 118//500 116//500 73//500 +f 121//501 77//501 123//501 +f 121//502 75//502 77//502 +f 119//503 75//503 121//503 +f 119//504 118//504 73//504 +f 119//505 73//505 75//505 +f 173//506 45//506 175//506 +f 173//507 47//507 45//507 +f 173//508 188//508 47//508 +f 173//509 180//509 188//509 +f 155//510 173//510 162//510 +f 155//511 153//511 173//511 +f 143//512 173//512 153//512 +f 157//513 155//513 162//513 +f 161//514 157//514 162//514 +f 141//515 180//515 173//515 +f 141//516 173//516 143//516 +f 159//517 157//517 161//517 +f 165//518 159//518 161//518 +f 165//519 133//519 159//519 +f 171//520 180//520 141//520 +f 171//521 141//521 139//521 +f 171//522 139//522 137//522 +f 171//523 182//523 180//523 +f 167//524 133//524 165//524 +f 167//525 134//525 133//525 +f 169//526 171//526 137//526 +f 169//527 137//527 134//527 +f 169//528 134//528 167//528 +g BullDogClip009 (Meshed) +f 253//529 254//529 255//529 +f 256//530 255//530 257//530 +f 256//531 253//531 255//531 +f 258//532 257//532 259//532 +f 258//533 256//533 257//533 +f 260//534 258//534 259//534 +f 261//535 262//535 263//535 +f 264//536 265//536 266//536 +f 267//537 268//537 269//537 +f 270//538 271//538 262//538 +f 267//539 272//539 268//539 +f 270//540 273//540 271//540 +f 273//541 274//541 271//541 +f 275//542 276//542 274//542 +f 277//543 276//543 275//543 +f 276//544 278//544 274//544 +f 274//545 279//545 271//545 +f 278//546 279//546 274//546 +f 280//547 281//547 278//547 +f 272//548 281//548 282//548 +f 281//549 283//549 278//549 +f 278//550 283//550 279//550 +f 280//551 282//551 281//551 +f 282//552 284//552 272//552 +f 284//553 268//553 272//553 +f 285//554 265//554 264//554 +f 265//555 286//555 266//555 +f 286//556 277//556 287//556 +f 287//557 277//557 275//557 +f 287//558 266//558 286//558 +f 288//559 261//559 263//559 +f 261//560 270//560 262//560 +f 289//561 290//561 291//561 +f 291//562 290//562 292//562 +f 292//563 293//563 294//563 +f 290//564 293//564 292//564 +f 294//565 295//565 296//565 +f 293//566 295//566 294//566 +f 297//567 298//567 299//567 +f 297//568 300//568 298//568 +f 301//569 302//569 303//569 +f 304//570 305//570 306//570 +f 301//571 307//571 302//571 +f 304//572 306//572 300//572 +f 308//573 309//573 310//573 +f 308//574 310//574 307//574 +f 311//575 312//575 313//575 +f 311//576 314//576 315//576 +f 316//577 309//577 308//577 +f 316//578 307//578 301//578 +f 311//579 315//579 312//579 +f 316//580 308//580 307//580 +f 317//581 318//581 319//581 +f 317//582 320//582 318//582 +f 321//583 299//583 322//583 +f 321//584 297//584 299//584 +f 317//585 303//585 323//585 +f 317//586 323//586 320//586 +f 324//587 317//587 319//587 +f 325//588 326//588 327//588 +f 324//589 301//589 303//589 +f 325//590 327//590 328//590 +f 324//591 303//591 317//591 +f 329//592 319//592 330//592 +f 329//593 330//593 309//593 +f 329//594 309//594 316//594 +f 329//595 316//595 301//595 +f 329//596 324//596 319//596 +f 331//597 304//597 300//597 +f 329//598 301//598 324//598 +f 331//599 300//599 297//599 +f 332//600 328//600 305//600 +f 332//601 325//601 328//601 +f 333//602 297//602 321//602 +f 333//603 331//603 297//603 +f 334//604 313//604 335//604 +f 334//605 322//605 314//605 +f 334//606 311//606 313//606 +f 334//607 314//607 311//607 +f 336//608 305//608 304//608 +f 336//609 332//609 305//609 +f 337//610 336//610 304//610 +f 337//611 304//611 331//611 +f 338//612 322//612 334//612 +f 338//613 321//613 322//613 +f 338//614 334//614 335//614 +f 339//615 326//615 325//615 +f 340//616 341//616 342//616 +f 339//617 343//617 326//617 +f 340//618 344//618 341//618 +f 345//619 337//619 331//619 +f 345//620 331//620 333//620 +f 346//621 347//621 344//621 +f 348//622 325//622 332//622 +f 315//623 346//623 344//623 +f 348//624 339//624 325//624 +f 315//625 344//625 340//625 +f 349//626 350//626 343//626 +f 349//627 343//627 339//627 +f 351//628 352//628 347//628 +f 353//629 354//629 345//629 +f 353//630 333//630 321//630 +f 353//631 335//631 354//631 +f 353//632 321//632 338//632 +f 353//633 338//633 335//633 +f 353//634 345//634 333//634 +f 355//635 347//635 346//635 +f 356//636 339//636 348//636 +f 356//637 349//637 339//637 +f 356//638 350//638 349//638 +f 314//639 346//639 315//639 +f 314//640 355//640 346//640 +f 357//641 332//641 336//641 +f 357//642 348//642 332//642 +f 358//643 359//643 352//643 +f 358//644 327//644 359//644 +f 360//645 356//645 348//645 +f 360//646 348//646 357//646 +f 306//647 358//647 352//647 +f 361//648 336//648 337//648 +f 361//649 357//649 336//649 +f 306//650 352//650 351//650 +f 362//651 345//651 354//651 +f 298//652 347//652 355//652 +f 362//653 337//653 345//653 +f 362//654 361//654 337//654 +f 298//655 351//655 347//655 +f 328//656 327//656 358//656 +f 363//657 360//657 357//657 +f 363//658 357//658 361//658 +f 305//659 358//659 306//659 +f 323//660 361//660 362//660 +f 323//661 363//661 361//661 +f 305//662 328//662 358//662 +f 364//663 350//663 356//663 +f 364//664 356//664 360//664 +f 299//665 298//665 355//665 +f 302//666 360//666 363//666 +f 322//667 355//667 314//667 +f 302//668 364//668 360//668 +f 322//669 299//669 355//669 +f 303//670 363//670 323//670 +f 300//671 306//671 351//671 +f 300//672 351//672 298//672 +f 303//673 302//673 363//673 +f 365//674 310//674 350//674 +f 365//675 350//675 364//675 +f 312//676 342//676 313//676 +f 312//677 315//677 340//677 +f 307//678 310//678 365//678 +f 307//679 364//679 302//679 +f 312//680 340//680 342//680 +f 326//681 343//681 366//681 +f 326//682 366//682 359//682 +f 326//683 359//683 327//683 +f 307//684 365//684 364//684 +f 320//685 354//685 318//685 +f 320//686 362//686 354//686 +f 320//687 323//687 362//687 +f 367//688 368//688 369//688 +f 367//689 370//689 368//689 +f 371//690 372//690 370//690 +f 371//691 370//691 367//691 +f 373//692 374//692 375//692 +f 373//693 375//693 372//693 +f 373//694 372//694 371//694 +f 376//695 377//695 374//695 +f 376//696 374//696 373//696 +f 378//697 379//697 377//697 +f 378//698 377//698 376//698 +f 380//699 379//699 378//699 +f 381//700 382//700 383//700 +f 384//701 385//701 382//701 +f 384//702 382//702 381//702 +f 386//703 387//703 385//703 +f 386//704 385//704 384//704 +f 388//705 387//705 386//705 +f 389//706 390//706 387//706 +f 389//707 387//707 388//707 +f 391//708 392//708 390//708 +f 391//709 390//709 389//709 +f 393//710 394//710 392//710 +f 393//711 392//711 391//711 +f 395//712 396//712 397//712 +f 395//713 398//713 396//713 +f 399//714 400//714 401//714 +f 399//715 401//715 402//715 +f 403//716 397//716 404//716 +f 403//717 395//717 397//717 +f 405//718 402//718 398//718 +f 405//719 399//719 402//719 +f 406//720 404//720 407//720 +f 406//721 403//721 404//721 +f 408//722 400//722 399//722 +f 409//723 405//723 398//723 +f 409//724 398//724 395//724 +f 410//725 408//725 399//725 +f 410//726 399//726 405//726 +f 411//727 406//727 407//727 +f 411//728 412//728 413//728 +f 411//729 413//729 414//729 +f 411//730 407//730 412//730 +f 415//731 410//731 405//731 +f 415//732 405//732 409//732 +f 416//733 400//733 408//733 +f 416//734 417//734 400//734 +f 418//735 416//735 408//735 +f 418//736 408//736 410//736 +f 419//737 409//737 395//737 +f 420//738 421//738 422//738 +f 419//739 395//739 403//739 +f 420//740 423//740 421//740 +f 424//741 403//741 406//741 +f 425//742 422//742 426//742 +f 424//743 419//743 403//743 +f 425//744 420//744 422//744 +f 427//745 410//745 415//745 +f 427//746 418//746 410//746 +f 428//747 423//747 420//747 +f 429//748 426//748 430//748 +f 431//749 415//749 409//749 +f 429//750 425//750 426//750 +f 431//751 409//751 419//751 +f 429//752 420//752 425//752 +f 429//753 428//753 420//753 +f 432//754 414//754 433//754 +f 434//755 435//755 423//755 +f 432//756 419//756 424//756 +f 434//757 423//757 428//757 +f 432//758 431//758 419//758 +f 436//759 411//759 414//759 +f 436//760 432//760 424//760 +f 436//761 406//761 411//761 +f 437//762 428//762 429//762 +f 436//763 414//763 432//763 +f 437//764 434//764 428//764 +f 436//765 424//765 406//765 +f 438//766 417//766 416//766 +f 439//767 437//767 429//767 +f 439//768 429//768 430//768 +f 440//769 438//769 416//769 +f 441//770 435//770 434//770 +f 440//771 416//771 418//771 +f 442//772 415//772 431//772 +f 442//773 427//773 415//773 +f 442//774 432//774 433//774 +f 443//775 434//775 437//775 +f 442//776 431//776 432//776 +f 444//777 417//777 438//777 +f 443//778 441//778 434//778 +f 445//779 401//779 435//779 +f 446//780 447//780 448//780 +f 445//781 435//781 441//781 +f 446//782 438//782 440//782 +f 446//783 444//783 438//783 +f 449//784 433//784 447//784 +f 449//785 427//785 442//785 +f 449//786 418//786 427//786 +f 449//787 440//787 418//787 +f 396//788 441//788 443//788 +f 449//789 447//789 446//789 +f 396//790 445//790 441//790 +f 449//791 446//791 440//791 +f 449//792 442//792 433//792 +f 450//793 448//793 451//793 +f 452//794 437//794 439//794 +f 450//795 451//795 453//795 +f 452//796 443//796 437//796 +f 450//797 453//797 417//797 +f 450//798 417//798 444//798 +f 450//799 444//799 446//799 +f 450//800 446//800 448//800 +f 397//801 396//801 443//801 +f 397//802 443//802 452//802 +f 454//803 439//803 430//803 +f 454//804 452//804 439//804 +f 455//805 430//805 412//805 +f 455//806 454//806 430//806 +f 404//807 397//807 452//807 +f 404//808 452//808 454//808 +f 402//809 401//809 445//809 +f 407//810 455//810 412//810 +f 407//811 454//811 455//811 +f 407//812 404//812 454//812 +f 398//813 402//813 445//813 +f 398//814 445//814 396//814 +f 456//815 457//815 458//815 +f 459//816 460//816 461//816 +f 459//817 461//817 462//817 +f 459//818 463//818 460//818 +f 464//819 462//819 465//819 +f 464//820 463//820 459//820 +f 464//821 459//821 462//821 +f 466//822 467//822 463//822 +f 466//823 464//823 465//823 +f 466//824 463//824 464//824 +f 468//825 465//825 469//825 +f 468//826 466//826 465//826 +f 468//827 467//827 466//827 +f 470//828 458//828 467//828 +f 470//829 468//829 469//829 +f 470//830 467//830 468//830 +f 471//831 469//831 456//831 +f 471//832 458//832 470//832 +f 471//833 470//833 469//833 +f 471//834 456//834 458//834 +f 472//835 456//835 473//835 +f 472//836 457//836 456//836 +f 474//837 457//837 472//837 +f 474//838 472//838 473//838 +f 475//839 473//839 476//839 +f 475//840 477//840 457//840 +f 475//841 474//841 473//841 +f 475//842 457//842 474//842 +f 478//843 476//843 479//843 +f 478//844 479//844 480//844 +f 478//845 480//845 481//845 +f 478//846 481//846 477//846 +f 478//847 475//847 476//847 +f 478//848 477//848 475//848 +f 482//849 483//849 484//849 +f 485//850 486//850 487//850 +f 485//851 487//851 488//851 +f 485//852 489//852 490//852 +f 485//853 490//853 486//853 +f 491//854 488//854 484//854 +f 491//855 492//855 489//855 +f 491//856 489//856 485//856 +f 491//857 485//857 488//857 +f 493//858 491//858 484//858 +f 493//859 492//859 491//859 +f 494//860 483//860 492//860 +f 494//861 492//861 493//861 +f 494//862 493//862 484//862 +f 494//863 484//863 483//863 +f 495//864 482//864 496//864 +f 495//865 497//865 483//865 +f 495//866 483//866 482//866 +f 498//867 499//867 497//867 +f 498//868 495//868 496//868 +f 498//869 497//869 495//869 +f 500//870 496//870 501//870 +f 500//871 498//871 496//871 +f 500//872 499//872 498//872 +f 502//873 503//873 499//873 +f 502//874 500//874 501//874 +f 502//875 499//875 500//875 +f 504//876 501//876 505//876 +f 504//877 505//877 506//877 +f 504//878 506//878 503//878 +f 504//879 503//879 502//879 +f 504//880 502//880 501//880 +f 507//881 508//881 509//881 +f 507//882 509//882 510//882 +f 511//883 510//883 512//883 +f 511//884 507//884 510//884 +f 513//885 512//885 514//885 +f 513//886 511//886 512//886 +f 515//887 514//887 516//887 +f 515//888 513//888 514//888 +f 517//889 516//889 518//889 +f 517//890 515//890 516//890 +f 519//891 520//891 521//891 +f 520//892 522//892 521//892 +f 520//893 523//893 522//893 +f 413//894 412//894 359//894 +f 524//895 525//895 522//895 +f 526//896 527//896 528//896 +f 341//897 529//897 525//897 +f 525//898 529//898 522//898 +f 347//899 426//899 344//899 +f 527//900 530//900 531//900 +f 344//901 422//901 341//901 +f 426//902 422//902 344//902 +f 530//903 532//903 422//903 +f 341//904 532//904 529//904 +f 422//905 532//905 341//905 +f 527//906 532//906 530//906 +f 529//907 533//907 534//907 +f 532//908 533//908 529//908 +f 534//909 535//909 536//909 +f 533//910 535//910 534//910 +f 535//911 537//911 536//911 +f 536//912 537//912 538//912 +f 412//913 430//913 352//913 +f 359//914 366//914 413//914 +f 352//915 359//915 412//915 +f 347//916 352//916 430//916 +f 347//917 430//917 426//917 +f 523//918 524//918 522//918 +f 528//919 539//919 526//919 +f 531//920 528//920 527//920 +f 540//921 282//921 280//921 +f 541//922 542//922 543//922 +f 540//923 280//923 544//923 +f 541//924 545//924 542//924 +f 540//925 546//925 547//925 +f 548//926 549//926 550//926 +f 540//927 544//927 546//927 +f 548//928 551//928 549//928 +f 552//929 284//929 282//929 +f 552//930 553//930 554//930 +f 552//931 555//931 284//931 +f 552//932 554//932 555//932 +f 552//933 547//933 553//933 +f 556//934 543//934 551//934 +f 552//935 282//935 540//935 +f 556//936 541//936 543//936 +f 552//937 540//937 547//937 +f 557//938 278//938 558//938 +f 557//939 280//939 278//939 +f 559//940 550//940 269//940 +f 557//941 544//941 280//941 +f 559//942 548//942 550//942 +f 557//943 558//943 560//943 +f 559//944 551//944 548//944 +f 557//945 560//945 561//945 +f 557//946 561//946 544//946 +f 559//947 556//947 551//947 +f 562//948 563//948 564//948 +f 562//949 564//949 565//949 +f 566//950 562//950 565//950 +f 566//951 565//951 545//951 +f 567//952 568//952 569//952 +f 567//953 569//953 570//953 +f 571//954 566//954 545//954 +f 571//955 545//955 541//955 +f 572//956 571//956 541//956 +f 572//957 541//957 556//957 +f 573//958 572//958 556//958 +f 573//959 556//959 559//959 +f 574//960 568//960 567//960 +f 575//961 563//961 562//961 +f 575//962 576//962 563//962 +f 577//963 578//963 579//963 +f 580//964 576//964 575//964 +f 580//965 570//965 576//965 +f 581//966 578//966 577//966 +f 582//967 575//967 562//967 +f 583//968 579//968 584//968 +f 582//969 562//969 566//969 +f 583//970 584//970 585//970 +f 583//971 577//971 579//971 +f 561//972 568//972 574//972 +f 586//973 587//973 578//973 +f 588//974 580//974 575//974 +f 588//975 575//975 582//975 +f 586//976 578//976 581//976 +f 589//977 573//977 559//977 +f 564//978 587//978 586//978 +f 589//979 559//979 269//979 +f 590//980 566//980 571//980 +f 591//981 577//981 583//981 +f 590//982 582//982 566//982 +f 592//983 585//983 549//983 +f 592//984 583//984 585//984 +f 593//985 588//985 582//985 +f 592//986 591//986 583//986 +f 593//987 582//987 590//987 +f 594//988 571//988 572//988 +f 595//989 581//989 577//989 +f 594//990 590//990 571//990 +f 595//991 577//991 591//991 +f 596//992 591//992 592//992 +f 597//993 593//993 590//993 +f 596//994 595//994 591//994 +f 597//995 590//995 594//995 +f 598//996 572//996 573//996 +f 598//997 594//997 572//997 +f 599//998 592//998 549//998 +f 599//999 596//999 592//999 +f 563//1000 569//1000 587//1000 +f 600//1001 268//1001 284//1001 +f 600//1002 594//1002 598//1002 +f 563//1003 587//1003 564//1003 +f 600//1004 597//1004 594//1004 +f 560//1005 558//1005 568//1005 +f 601//1006 581//1006 595//1006 +f 601//1007 586//1007 581//1007 +f 560//1008 568//1008 561//1008 +f 602//1009 567//1009 570//1009 +f 602//1010 570//1010 580//1010 +f 553//1011 602//1011 580//1011 +f 542//1012 595//1012 596//1012 +f 542//1013 601//1013 595//1013 +f 553//1014 580//1014 588//1014 +f 565//1015 564//1015 586//1015 +f 603//1016 269//1016 268//1016 +f 565//1017 586//1017 601//1017 +f 603//1018 573//1018 589//1018 +f 603//1019 589//1019 269//1019 +f 603//1020 598//1020 573//1020 +f 603//1021 268//1021 600//1021 +f 603//1022 600//1022 598//1022 +f 543//1023 596//1023 599//1023 +f 554//1024 588//1024 593//1024 +f 543//1025 542//1025 596//1025 +f 554//1026 553//1026 588//1026 +f 555//1027 593//1027 597//1027 +f 555//1028 600//1028 284//1028 +f 576//1029 569//1029 563//1029 +f 555//1030 597//1030 600//1030 +f 555//1031 554//1031 593//1031 +f 545//1032 601//1032 542//1032 +f 546//1033 574//1033 567//1033 +f 545//1034 565//1034 601//1034 +f 546//1035 567//1035 602//1035 +f 547//1036 602//1036 553//1036 +f 570//1037 569//1037 576//1037 +f 547//1038 546//1038 602//1038 +f 551//1039 543//1039 599//1039 +f 544//1040 561//1040 574//1040 +f 551//1041 599//1041 549//1041 +f 544//1042 574//1042 546//1042 +f 604//1043 605//1043 606//1043 +f 607//1044 608//1044 604//1044 +f 607//1045 609//1045 608//1045 +f 610//1046 611//1046 609//1046 +f 610//1047 609//1047 607//1047 +f 612//1048 613//1048 614//1048 +f 612//1049 606//1049 613//1049 +f 615//1050 616//1050 617//1050 +f 615//1051 617//1051 611//1051 +f 615//1052 611//1052 610//1052 +f 618//1053 614//1053 619//1053 +f 618//1054 604//1054 606//1054 +f 618//1055 612//1055 614//1055 +f 618//1056 606//1056 612//1056 +f 620//1057 619//1057 621//1057 +f 620//1058 604//1058 618//1058 +f 620//1059 607//1059 604//1059 +f 620//1060 618//1060 619//1060 +f 622//1061 621//1061 623//1061 +f 622//1062 620//1062 621//1062 +f 622//1063 610//1063 607//1063 +f 622//1064 607//1064 620//1064 +f 624//1065 625//1065 616//1065 +f 624//1066 623//1066 625//1066 +f 624//1067 616//1067 615//1067 +f 624//1068 615//1068 610//1068 +f 624//1069 622//1069 623//1069 +f 624//1070 610//1070 622//1070 +f 626//1071 627//1071 628//1071 +f 629//1072 630//1072 627//1072 +f 629//1073 627//1073 626//1073 +f 631//1074 632//1074 630//1074 +f 631//1075 630//1075 629//1075 +f 633//1076 634//1076 632//1076 +f 633//1077 632//1077 631//1077 +f 605//1078 628//1078 613//1078 +f 605//1079 626//1079 628//1079 +f 635//1080 636//1080 637//1080 +f 635//1081 637//1081 634//1081 +f 635//1082 634//1082 633//1082 +f 608//1083 626//1083 605//1083 +f 608//1084 629//1084 626//1084 +f 609//1085 631//1085 629//1085 +f 609//1086 629//1086 608//1086 +f 611//1087 633//1087 631//1087 +f 611//1088 631//1088 609//1088 +f 606//1089 605//1089 613//1089 +f 617//1090 616//1090 636//1090 +f 617//1091 636//1091 635//1091 +f 617//1092 635//1092 633//1092 +f 617//1093 633//1093 611//1093 +f 604//1094 608//1094 605//1094 +f 638//1095 639//1095 640//1095 +f 638//1096 640//1096 641//1096 +f 642//1097 639//1097 638//1097 +f 642//1098 643//1098 639//1098 +f 644//1099 645//1099 643//1099 +f 644//1100 643//1100 642//1100 +f 646//1101 647//1101 648//1101 +f 646//1102 641//1102 647//1102 +f 649//1103 650//1103 651//1103 +f 649//1104 651//1104 652//1104 +f 649//1105 652//1105 645//1105 +f 649//1106 645//1106 644//1106 +f 653//1107 648//1107 654//1107 +f 653//1108 638//1108 641//1108 +f 653//1109 646//1109 648//1109 +f 653//1110 641//1110 646//1110 +f 655//1111 654//1111 656//1111 +f 655//1112 638//1112 653//1112 +f 655//1113 642//1113 638//1113 +f 655//1114 653//1114 654//1114 +f 657//1115 656//1115 658//1115 +f 657//1116 655//1116 656//1116 +f 657//1117 644//1117 642//1117 +f 657//1118 642//1118 655//1118 +f 659//1119 660//1119 650//1119 +f 659//1120 658//1120 660//1120 +f 659//1121 650//1121 649//1121 +f 659//1122 649//1122 644//1122 +f 659//1123 657//1123 658//1123 +f 659//1124 644//1124 657//1124 +f 661//1125 662//1125 663//1125 +f 664//1126 665//1126 662//1126 +f 664//1127 662//1127 661//1127 +f 666//1128 667//1128 665//1128 +f 666//1129 665//1129 664//1129 +f 668//1130 669//1130 667//1130 +f 668//1131 667//1131 666//1131 +f 640//1132 661//1132 663//1132 +f 670//1133 651//1133 671//1133 +f 670//1134 671//1134 669//1134 +f 670//1135 669//1135 668//1135 +f 639//1136 661//1136 640//1136 +f 639//1137 664//1137 661//1137 +f 643//1138 666//1138 664//1138 +f 643//1139 664//1139 639//1139 +f 645//1140 668//1140 666//1140 +f 645//1141 666//1141 643//1141 +f 641//1142 663//1142 647//1142 +f 641//1143 640//1143 663//1143 +f 652//1144 651//1144 670//1144 +f 652//1145 670//1145 668//1145 +f 652//1146 668//1146 645//1146 +f 672//1147 673//1147 674//1147 +f 672//1148 675//1148 673//1148 +f 676//1149 672//1149 674//1149 +f 676//1150 674//1150 677//1150 +f 678//1151 261//1151 288//1151 +f 678//1152 288//1152 679//1152 +f 678//1153 679//1153 680//1153 +f 681//1154 682//1154 683//1154 +f 681//1155 684//1155 682//1155 +f 681//1156 677//1156 684//1156 +f 681//1157 676//1157 677//1157 +f 685//1158 678//1158 680//1158 +f 685//1159 680//1159 686//1159 +f 687//1160 685//1160 686//1160 +f 687//1161 686//1161 675//1161 +f 688//1162 675//1162 672//1162 +f 688//1163 687//1163 675//1163 +f 689//1164 672//1164 676//1164 +f 689//1165 688//1165 672//1165 +f 690//1166 689//1166 676//1166 +f 690//1167 681//1167 683//1167 +f 690//1168 676//1168 681//1168 +f 691//1169 261//1169 678//1169 +f 691//1170 678//1170 685//1170 +f 692//1171 270//1171 261//1171 +f 692//1172 261//1172 691//1172 +f 693//1173 691//1173 685//1173 +f 693//1174 685//1174 687//1174 +f 694//1175 695//1175 696//1175 +f 694//1176 696//1176 697//1176 +f 698//1177 692//1177 691//1177 +f 694//1178 697//1178 699//1178 +f 698//1179 691//1179 693//1179 +f 700//1180 701//1180 695//1180 +f 698//1181 270//1181 692//1181 +f 702//1182 693//1182 687//1182 +f 702//1183 687//1183 688//1183 +f 703//1184 698//1184 693//1184 +f 704//1185 701//1185 700//1185 +f 703//1186 693//1186 702//1186 +f 705//1187 695//1187 694//1187 +f 705//1188 700//1188 695//1188 +f 706//1189 688//1189 689//1189 +f 705//1190 694//1190 699//1190 +f 707//1191 704//1191 700//1191 +f 706//1192 702//1192 688//1192 +f 707//1193 705//1193 699//1193 +f 707//1194 700//1194 705//1194 +f 708//1195 689//1195 690//1195 +f 709//1196 710//1196 701//1196 +f 708//1197 690//1197 683//1197 +f 708//1198 683//1198 711//1198 +f 708//1199 706//1199 689//1199 +f 712//1200 679//1200 710//1200 +f 713//1201 703//1201 702//1201 +f 713//1202 702//1202 706//1202 +f 714//1203 708//1203 711//1203 +f 715//1204 709//1204 701//1204 +f 714//1205 706//1205 708//1205 +f 714//1206 713//1206 706//1206 +f 716//1207 270//1207 698//1207 +f 673//1208 712//1208 710//1208 +f 716//1209 698//1209 703//1209 +f 673//1210 710//1210 709//1210 +f 680//1211 679//1211 712//1211 +f 717//1212 716//1212 703//1212 +f 717//1213 703//1213 713//1213 +f 718//1214 701//1214 704//1214 +f 718//1215 715//1215 701//1215 +f 719//1216 711//1216 720//1216 +f 719//1217 713//1217 714//1217 +f 719//1218 717//1218 713//1218 +f 721//1219 699//1219 682//1219 +f 721//1220 704//1220 707//1220 +f 719//1221 714//1221 711//1221 +f 722//1222 273//1222 270//1222 +f 721//1223 718//1223 704//1223 +f 722//1224 270//1224 716//1224 +f 721//1225 707//1225 699//1225 +f 722//1226 716//1226 717//1226 +f 723//1227 719//1227 720//1227 +f 674//1228 709//1228 715//1228 +f 723//1229 717//1229 719//1229 +f 674//1230 673//1230 709//1230 +f 723//1231 722//1231 717//1231 +f 724//1232 725//1232 274//1232 +f 724//1233 274//1233 273//1233 +f 724//1234 720//1234 725//1234 +f 724//1235 273//1235 722//1235 +f 724//1236 723//1236 720//1236 +f 724//1237 722//1237 723//1237 +f 686//1238 680//1238 712//1238 +f 677//1239 674//1239 715//1239 +f 677//1240 715//1240 718//1240 +f 675//1241 712//1241 673//1241 +f 675//1242 686//1242 712//1242 +f 684//1243 721//1243 682//1243 +f 684//1244 718//1244 721//1244 +f 684//1245 677//1245 718//1245 +f 726//1246 727//1246 728//1246 +f 729//1247 730//1247 731//1247 +f 729//1248 731//1248 732//1248 +f 729//1249 732//1249 733//1249 +f 734//1250 735//1250 730//1250 +f 734//1251 730//1251 729//1251 +f 734//1252 729//1252 733//1252 +f 736//1253 733//1253 737//1253 +f 736//1254 734//1254 733//1254 +f 736//1255 735//1255 734//1255 +f 738//1256 739//1256 735//1256 +f 738//1257 735//1257 736//1257 +f 738//1258 736//1258 737//1258 +f 740//1259 737//1259 728//1259 +f 740//1260 738//1260 737//1260 +f 740//1261 739//1261 738//1261 +f 741//1262 727//1262 739//1262 +f 741//1263 740//1263 728//1263 +f 741//1264 728//1264 727//1264 +f 741//1265 739//1265 740//1265 +f 742//1266 743//1266 727//1266 +f 742//1267 727//1267 726//1267 +f 744//1268 743//1268 742//1268 +f 744//1269 742//1269 726//1269 +f 745//1270 746//1270 743//1270 +f 745//1271 726//1271 747//1271 +f 745//1272 743//1272 744//1272 +f 745//1273 744//1273 726//1273 +f 748//1274 749//1274 750//1274 +f 748//1275 751//1275 746//1275 +f 748//1276 750//1276 751//1276 +f 748//1277 747//1277 749//1277 +f 748//1278 746//1278 745//1278 +f 748//1279 745//1279 747//1279 +f 752//1280 753//1280 754//1280 +f 755//1281 756//1281 757//1281 +f 755//1282 757//1282 758//1282 +f 755//1283 759//1283 760//1283 +f 755//1284 758//1284 759//1284 +f 761//1285 754//1285 756//1285 +f 761//1286 760//1286 762//1286 +f 761//1287 756//1287 755//1287 +f 761//1288 755//1288 760//1288 +f 763//1289 761//1289 762//1289 +f 763//1290 754//1290 761//1290 +f 764//1291 762//1291 752//1291 +f 764//1292 763//1292 762//1292 +f 764//1293 752//1293 754//1293 +f 764//1294 754//1294 763//1294 +f 765//1295 766//1295 753//1295 +f 765//1296 752//1296 767//1296 +f 765//1297 753//1297 752//1297 +f 768//1298 767//1298 769//1298 +f 768//1299 765//1299 767//1299 +f 768//1300 766//1300 765//1300 +f 770//1301 771//1301 766//1301 +f 770//1302 766//1302 768//1302 +f 770//1303 768//1303 769//1303 +f 772//1304 769//1304 773//1304 +f 772//1305 771//1305 770//1305 +f 772//1306 770//1306 769//1306 +f 774//1307 775//1307 776//1307 +f 774//1308 776//1308 771//1308 +f 774//1309 773//1309 775//1309 +f 774//1310 771//1310 772//1310 +f 774//1311 772//1311 773//1311 +f 777//1312 778//1312 727//1312 +f 777//1313 727//1313 743//1313 +f 779//1314 780//1314 781//1314 +f 759//1315 758//1315 782//1315 +f 783//1316 775//1316 784//1316 +f 751//1317 777//1317 746//1317 +f 760//1318 759//1318 782//1318 +f 750//1319 777//1319 751//1319 +f 750//1320 779//1320 781//1320 +f 750//1321 781//1321 775//1321 +f 785//1322 758//1322 731//1322 +f 786//1323 775//1323 783//1323 +f 785//1324 782//1324 758//1324 +f 787//1325 758//1325 788//1325 +f 787//1326 731//1326 758//1326 +f 786//1327 750//1327 775//1327 +f 786//1328 777//1328 750//1328 +f 253//1329 783//1329 254//1329 +f 253//1330 786//1330 783//1330 +f 779//1331 789//1331 780//1331 +f 789//1332 790//1332 791//1332 +f 790//1333 792//1333 793//1333 +f 792//1334 794//1334 795//1334 +f 796//1335 762//1335 760//1335 +f 794//1336 797//1336 798//1336 +f 735//1337 739//1337 778//1337 +f 739//1338 727//1338 778//1338 +f 743//1339 746//1339 777//1339 +f 788//1340 798//1340 797//1340 +f 796//1341 760//1341 782//1341 +f 798//1342 795//1342 794//1342 +f 795//1343 793//1343 792//1343 +f 793//1344 791//1344 790//1344 +f 791//1345 780//1345 789//1345 +f 773//1346 769//1346 784//1346 +f 769//1347 767//1347 784//1347 +f 730//1348 785//1348 731//1348 +f 752//1349 762//1349 796//1349 +f 797//1350 787//1350 788//1350 +f 735//1351 785//1351 730//1351 +f 767//1352 752//1352 796//1352 +f 778//1353 785//1353 735//1353 +f 784//1354 767//1354 796//1354 +f 775//1355 773//1355 784//1355 +f 296//1356 696//1356 799//1356 +f 295//1357 696//1357 296//1357 +f 696//1358 695//1358 799//1358 +f 696//1359 584//1359 800//1359 +f 295//1360 584//1360 696//1360 +f 800//1361 801//1361 802//1361 +f 584//1362 801//1362 800//1362 +f 701//1363 803//1363 799//1363 +f 584//1364 804//1364 585//1364 +f 295//1365 804//1365 584//1365 +f 804//1366 549//1366 585//1366 +f 679//1367 263//1367 803//1367 +f 804//1368 805//1368 549//1368 +f 679//1369 288//1369 263//1369 +f 806//1370 285//1370 807//1370 +f 805//1371 267//1371 550//1371 +f 695//1372 701//1372 799//1372 +f 701//1373 710//1373 803//1373 +f 710//1374 679//1374 803//1374 +f 264//1375 807//1375 285//1375 +f 807//1376 808//1376 806//1376 +f 808//1377 802//1377 809//1377 +f 809//1378 802//1378 801//1378 +f 809//1379 806//1379 808//1379 +f 269//1380 550//1380 267//1380 +f 550//1381 549//1381 805//1381 +f 279//1382 810//1382 811//1382 +f 283//1383 810//1383 279//1383 +f 811//1384 812//1384 813//1384 +f 810//1385 812//1385 811//1385 +f 813//1386 289//1386 291//1386 +f 812//1387 289//1387 813//1387 +f 814//1388 260//1388 259//1388 +f 814//1389 259//1389 815//1389 +f 816//1390 815//1390 817//1390 +f 816//1391 814//1391 815//1391 +f 818//1392 817//1392 819//1392 +f 818//1393 816//1393 817//1393 +f 820//1394 821//1394 822//1394 +f 820//1395 823//1395 821//1395 +f 824//1396 822//1396 825//1396 +f 824//1397 820//1397 822//1397 +f 826//1398 825//1398 827//1398 +f 826//1399 824//1399 825//1399 +f 828//1400 829//1400 830//1400 +f 830//1401 829//1401 831//1401 +f 831//1402 832//1402 833//1402 +f 829//1403 832//1403 831//1403 +f 833//1404 834//1404 835//1404 +f 832//1405 834//1405 833//1405 +f 819//1406 835//1406 834//1406 +f 819//1407 834//1407 818//1407 +f 827//1408 782//1408 785//1408 +f 827//1409 785//1409 826//1409 +f 793//1410 836//1410 837//1410 +f 838//1411 776//1411 775//1411 +f 838//1412 781//1412 780//1412 +f 838//1413 775//1413 781//1413 +f 838//1414 839//1414 776//1414 +f 840//1415 780//1415 791//1415 +f 840//1416 837//1416 839//1416 +f 840//1417 839//1417 838//1417 +f 840//1418 838//1418 780//1418 +f 841//1419 840//1419 791//1419 +f 841//1420 837//1420 840//1420 +f 842//1421 791//1421 793//1421 +f 842//1422 841//1422 791//1422 +f 842//1423 837//1423 841//1423 +f 842//1424 793//1424 837//1424 +f 843//1425 793//1425 795//1425 +f 843//1426 844//1426 836//1426 +f 843//1427 836//1427 793//1427 +f 845//1428 795//1428 798//1428 +f 845//1429 844//1429 843//1429 +f 845//1430 843//1430 795//1430 +f 846//1431 847//1431 844//1431 +f 846//1432 845//1432 798//1432 +f 846//1433 844//1433 845//1433 +f 848//1434 798//1434 788//1434 +f 848//1435 847//1435 846//1435 +f 848//1436 846//1436 798//1436 +f 849//1437 788//1437 758//1437 +f 849//1438 758//1438 757//1438 +f 849//1439 757//1439 847//1439 +f 849//1440 848//1440 788//1440 +f 849//1441 847//1441 848//1441 +f 850//1442 792//1442 851//1442 +f 852//1443 750//1443 749//1443 +f 852//1444 749//1444 853//1444 +f 852//1445 779//1445 750//1445 +f 854//1446 789//1446 779//1446 +f 854//1447 779//1447 852//1447 +f 854//1448 852//1448 853//1448 +f 855//1449 853//1449 856//1449 +f 855//1450 854//1450 853//1450 +f 855//1451 789//1451 854//1451 +f 857//1452 790//1452 789//1452 +f 857//1453 855//1453 856//1453 +f 857//1454 789//1454 855//1454 +f 858//1455 856//1455 851//1455 +f 858//1456 857//1456 856//1456 +f 858//1457 790//1457 857//1457 +f 859//1458 792//1458 790//1458 +f 859//1459 790//1459 858//1459 +f 859//1460 858//1460 851//1460 +f 859//1461 851//1461 792//1461 +f 860//1462 794//1462 792//1462 +f 860//1463 792//1463 850//1463 +f 861//1464 860//1464 850//1464 +f 861//1465 794//1465 860//1465 +f 862//1466 850//1466 863//1466 +f 862//1467 797//1467 794//1467 +f 862//1468 794//1468 861//1468 +f 862//1469 861//1469 850//1469 +f 864//1470 863//1470 732//1470 +f 864//1471 732//1471 731//1471 +f 864//1472 787//1472 797//1472 +f 864//1473 731//1473 787//1473 +f 864//1474 797//1474 862//1474 +f 864//1475 862//1475 863//1475 +f 865//1476 866//1476 867//1476 +f 865//1477 867//1477 868//1477 +f 869//1478 266//1478 870//1478 +f 869//1479 871//1479 266//1479 +f 872//1480 873//1480 874//1480 +f 872//1481 875//1481 873//1481 +f 872//1482 868//1482 875//1482 +f 872//1483 865//1483 868//1483 +f 876//1484 869//1484 870//1484 +f 876//1485 870//1485 877//1485 +f 878//1486 807//1486 871//1486 +f 879//1487 876//1487 877//1487 +f 879//1488 877//1488 866//1488 +f 880//1489 871//1489 869//1489 +f 880//1490 878//1490 871//1490 +f 881//1491 866//1491 865//1491 +f 881//1492 879//1492 866//1492 +f 882//1493 869//1493 876//1493 +f 882//1494 880//1494 869//1494 +f 883//1495 881//1495 865//1495 +f 883//1496 872//1496 874//1496 +f 883//1497 865//1497 872//1497 +f 884//1498 878//1498 880//1498 +f 884//1499 808//1499 807//1499 +f 884//1500 807//1500 878//1500 +f 885//1501 880//1501 882//1501 +f 885//1502 884//1502 880//1502 +f 886//1503 275//1503 274//1503 +f 887//1504 876//1504 879//1504 +f 887//1505 882//1505 876//1505 +f 888//1506 287//1506 275//1506 +f 889//1507 808//1507 884//1507 +f 889//1508 884//1508 885//1508 +f 890//1509 274//1509 725//1509 +f 890//1510 725//1510 891//1510 +f 890//1511 886//1511 274//1511 +f 892//1512 887//1512 879//1512 +f 893//1513 888//1513 275//1513 +f 892//1514 879//1514 881//1514 +f 893//1515 275//1515 886//1515 +f 894//1516 885//1516 882//1516 +f 894//1517 882//1517 887//1517 +f 895//1518 890//1518 891//1518 +f 895//1519 886//1519 890//1519 +f 895//1520 893//1520 886//1520 +f 896//1521 881//1521 883//1521 +f 897//1522 266//1522 287//1522 +f 896//1523 874//1523 898//1523 +f 896//1524 883//1524 874//1524 +f 896//1525 892//1525 881//1525 +f 899//1526 287//1526 888//1526 +f 900//1527 887//1527 892//1527 +f 900//1528 894//1528 887//1528 +f 901//1529 896//1529 898//1529 +f 901//1530 892//1530 896//1530 +f 901//1531 900//1531 892//1531 +f 902//1532 897//1532 287//1532 +f 903//1533 889//1533 885//1533 +f 870//1534 266//1534 897//1534 +f 903//1535 885//1535 894//1535 +f 904//1536 903//1536 894//1536 +f 905//1537 888//1537 893//1537 +f 904//1538 894//1538 900//1538 +f 905//1539 899//1539 888//1539 +f 906//1540 898//1540 907//1540 +f 877//1541 897//1541 902//1541 +f 906//1542 901//1542 898//1542 +f 906//1543 900//1543 901//1543 +f 906//1544 904//1544 900//1544 +f 877//1545 870//1545 897//1545 +f 908//1546 802//1546 808//1546 +f 909//1547 891//1547 873//1547 +f 909//1548 895//1548 891//1548 +f 908//1549 808//1549 889//1549 +f 909//1550 893//1550 895//1550 +f 908//1551 889//1551 903//1551 +f 909//1552 905//1552 893//1552 +f 910//1553 908//1553 903//1553 +f 867//1554 287//1554 899//1554 +f 910//1555 903//1555 904//1555 +f 867//1556 902//1556 287//1556 +f 911//1557 906//1557 907//1557 +f 871//1558 807//1558 264//1558 +f 911//1559 904//1559 906//1559 +f 871//1560 264//1560 266//1560 +f 911//1561 910//1561 904//1561 +f 912//1562 800//1562 802//1562 +f 912//1563 802//1563 908//1563 +f 912//1564 908//1564 910//1564 +f 866//1565 877//1565 902//1565 +f 866//1566 902//1566 867//1566 +f 913//1567 911//1567 907//1567 +f 913//1568 910//1568 911//1568 +f 913//1569 912//1569 910//1569 +f 868//1570 899//1570 905//1570 +f 914//1571 907//1571 697//1571 +f 914//1572 697//1572 696//1572 +f 868//1573 867//1573 899//1573 +f 914//1574 696//1574 800//1574 +f 914//1575 800//1575 912//1575 +f 914//1576 913//1576 907//1576 +f 914//1577 912//1577 913//1577 +f 875//1578 909//1578 873//1578 +f 875//1579 868//1579 905//1579 +f 875//1580 905//1580 909//1580 +f 915//1581 647//1581 916//1581 +f 917//1582 844//1582 847//1582 +f 917//1583 916//1583 918//1583 +f 917//1584 919//1584 844//1584 +f 917//1585 918//1585 919//1585 +f 920//1586 921//1586 922//1586 +f 923//1587 648//1587 647//1587 +f 923//1588 647//1588 915//1588 +f 924//1589 847//1589 757//1589 +f 924//1590 915//1590 916//1590 +f 924//1591 917//1591 847//1591 +f 924//1592 916//1592 917//1592 +f 925//1593 654//1593 648//1593 +f 925//1594 648//1594 923//1594 +f 926//1595 756//1595 754//1595 +f 926//1596 757//1596 756//1596 +f 926//1597 923//1597 915//1597 +f 926//1598 924//1598 757//1598 +f 926//1599 915//1599 924//1599 +f 927//1600 656//1600 654//1600 +f 844//1601 928//1601 836//1601 +f 927//1602 654//1602 925//1602 +f 929//1603 754//1603 753//1603 +f 929//1604 926//1604 754//1604 +f 929//1605 925//1605 923//1605 +f 929//1606 923//1606 926//1606 +f 930//1607 658//1607 656//1607 +f 930//1608 656//1608 927//1608 +f 931//1609 927//1609 925//1609 +f 931//1610 929//1610 753//1610 +f 931//1611 925//1611 929//1611 +f 932//1612 650//1612 660//1612 +f 932//1613 660//1613 658//1613 +f 932//1614 658//1614 930//1614 +f 933//1615 753//1615 766//1615 +f 933//1616 927//1616 931//1616 +f 933//1617 930//1617 927//1617 +f 933//1618 931//1618 753//1618 +f 934//1619 650//1619 932//1619 +f 935//1620 930//1620 933//1620 +f 935//1621 771//1621 776//1621 +f 935//1622 766//1622 771//1622 +f 935//1623 933//1623 766//1623 +f 935//1624 932//1624 930//1624 +f 936//1625 650//1625 934//1625 +f 936//1626 937//1626 650//1626 +f 938//1627 776//1627 839//1627 +f 938//1628 934//1628 932//1628 +f 938//1629 932//1629 935//1629 +f 938//1630 935//1630 776//1630 +f 939//1631 937//1631 936//1631 +f 939//1632 940//1632 937//1632 +f 939//1633 920//1633 940//1633 +f 941//1634 839//1634 837//1634 +f 941//1635 938//1635 839//1635 +f 941//1636 936//1636 934//1636 +f 941//1637 934//1637 938//1637 +f 942//1638 837//1638 836//1638 +f 942//1639 928//1639 920//1639 +f 942//1640 836//1640 928//1640 +f 942//1641 941//1641 837//1641 +f 942//1642 939//1642 936//1642 +f 942//1643 936//1643 941//1643 +f 942//1644 920//1644 939//1644 +f 920//1645 922//1645 940//1645 +f 918//1646 943//1646 921//1646 +f 918//1647 921//1647 920//1647 +f 916//1648 647//1648 943//1648 +f 916//1649 943//1649 918//1649 +f 919//1650 920//1650 928//1650 +f 919//1651 928//1651 844//1651 +f 919//1652 918//1652 920//1652 +f 944//1653 945//1653 946//1653 +f 944//1654 947//1654 945//1654 +f 948//1655 949//1655 947//1655 +f 948//1656 947//1656 944//1656 +f 950//1657 937//1657 940//1657 +f 950//1658 650//1658 937//1658 +f 950//1659 951//1659 650//1659 +f 952//1660 647//1660 953//1660 +f 952//1661 953//1661 949//1661 +f 952//1662 949//1662 948//1662 +f 954//1663 940//1663 922//1663 +f 954//1664 946//1664 951//1664 +f 954//1665 950//1665 940//1665 +f 954//1666 951//1666 950//1666 +f 955//1667 944//1667 946//1667 +f 955//1668 946//1668 954//1668 +f 955//1669 954//1669 922//1669 +f 956//1670 922//1670 921//1670 +f 956//1671 948//1671 944//1671 +f 956//1672 955//1672 922//1672 +f 956//1673 944//1673 955//1673 +f 957//1674 943//1674 647//1674 +f 957//1675 921//1675 943//1675 +f 957//1676 647//1676 952//1676 +f 957//1677 952//1677 948//1677 +f 957//1678 956//1678 921//1678 +f 957//1679 948//1679 956//1679 +f 958//1680 959//1680 651//1680 +f 960//1681 961//1681 959//1681 +f 960//1682 959//1682 958//1682 +f 962//1683 963//1683 964//1683 +f 962//1684 964//1684 961//1684 +f 962//1685 961//1685 960//1685 +f 965//1686 966//1686 963//1686 +f 965//1687 963//1687 962//1687 +f 967//1688 651//1688 650//1688 +f 967//1689 958//1689 651//1689 +f 968//1690 663//1690 966//1690 +f 968//1691 966//1691 965//1691 +f 945//1692 958//1692 967//1692 +f 945//1693 960//1693 958//1693 +f 947//1694 962//1694 960//1694 +f 947//1695 960//1695 945//1695 +f 949//1696 965//1696 962//1696 +f 949//1697 962//1697 947//1697 +f 951//1698 967//1698 650//1698 +f 953//1699 647//1699 663//1699 +f 953//1700 968//1700 965//1700 +f 953//1701 663//1701 968//1701 +f 953//1702 965//1702 949//1702 +f 946//1703 945//1703 967//1703 +f 946//1704 967//1704 951//1704 +f 969//1705 970//1705 971//1705 +f 972//1706 973//1706 669//1706 +f 972//1707 974//1707 973//1707 +f 975//1708 976//1708 977//1708 +f 975//1709 977//1709 964//1709 +f 972//1710 978//1710 974//1710 +f 975//1711 964//1711 963//1711 +f 975//1712 979//1712 976//1712 +f 980//1713 981//1713 982//1713 +f 983//1714 984//1714 979//1714 +f 985//1715 669//1715 671//1715 +f 983//1716 979//1716 975//1716 +f 985//1717 986//1717 978//1717 +f 983//1718 975//1718 963//1718 +f 985//1719 978//1719 972//1719 +f 985//1720 972//1720 669//1720 +f 987//1721 988//1721 981//1721 +f 989//1722 990//1722 969//1722 +f 987//1723 981//1723 980//1723 +f 991//1724 992//1724 990//1724 +f 991//1725 990//1725 989//1725 +f 993//1726 963//1726 966//1726 +f 994//1727 988//1727 987//1727 +f 993//1728 983//1728 963//1728 +f 993//1729 984//1729 983//1729 +f 995//1730 986//1730 985//1730 +f 993//1731 971//1731 984//1731 +f 995//1732 982//1732 986//1732 +f 995//1733 985//1733 671//1733 +f 996//1734 971//1734 993//1734 +f 996//1735 969//1735 971//1735 +f 996//1736 993//1736 966//1736 +f 997//1737 671//1737 651//1737 +f 997//1738 995//1738 671//1738 +f 997//1739 982//1739 995//1739 +f 997//1740 980//1740 982//1740 +f 998//1741 992//1741 991//1741 +f 999//1742 1000//1742 992//1742 +f 1001//1743 1002//1743 988//1743 +f 1001//1744 988//1744 994//1744 +f 999//1745 992//1745 998//1745 +f 1003//1746 966//1746 663//1746 +f 1003//1747 989//1747 969//1747 +f 1003//1748 969//1748 996//1748 +f 1004//1749 1002//1749 1001//1749 +f 1003//1750 996//1750 966//1750 +f 1005//1751 987//1751 980//1751 +f 1006//1752 991//1752 989//1752 +f 1005//1753 997//1753 651//1753 +f 1006//1754 989//1754 1003//1754 +f 1005//1755 980//1755 997//1755 +f 1006//1756 1003//1756 663//1756 +f 1007//1757 651//1757 959//1757 +f 1007//1758 994//1758 987//1758 +f 1007//1759 987//1759 1005//1759 +f 1008//1760 1000//1760 999//1760 +f 1007//1761 1005//1761 651//1761 +f 1009//1762 1010//1762 1002//1762 +f 1009//1763 1002//1763 1004//1763 +f 1011//1764 663//1764 662//1764 +f 1011//1765 991//1765 1006//1765 +f 1011//1766 998//1766 991//1766 +f 1012//1767 976//1767 1013//1767 +f 1011//1768 1006//1768 663//1768 +f 1012//1769 1013//1769 1010//1769 +f 1012//1770 1010//1770 1009//1770 +f 1014//1771 1015//1771 1000//1771 +f 1016//1772 1001//1772 994//1772 +f 1016//1773 994//1773 1007//1773 +f 1014//1774 1000//1774 1008//1774 +f 1017//1775 1011//1775 662//1775 +f 1016//1776 1007//1776 959//1776 +f 1017//1777 998//1777 1011//1777 +f 1018//1778 959//1778 961//1778 +f 1018//1779 1004//1779 1001//1779 +f 1018//1780 1016//1780 959//1780 +f 1017//1781 999//1781 998//1781 +f 1018//1782 1001//1782 1016//1782 +f 1019//1783 1009//1783 1004//1783 +f 1020//1784 1015//1784 1014//1784 +f 1019//1785 1018//1785 961//1785 +f 1019//1786 1004//1786 1018//1786 +f 1021//1787 999//1787 1017//1787 +f 1022//1788 961//1788 964//1788 +f 1022//1789 977//1789 976//1789 +f 1022//1790 964//1790 977//1790 +f 1021//1791 662//1791 665//1791 +f 1022//1792 976//1792 1012//1792 +f 1021//1793 1017//1793 662//1793 +f 1022//1794 1012//1794 1009//1794 +f 1021//1795 1008//1795 999//1795 +f 1022//1796 1019//1796 961//1796 +f 1022//1797 1009//1797 1019//1797 +f 1023//1798 1015//1798 1020//1798 +f 1023//1799 1024//1799 1015//1799 +f 1025//1800 1008//1800 1021//1800 +f 1025//1801 1014//1801 1008//1801 +f 1025//1802 1021//1802 665//1802 +f 974//1803 1024//1803 1023//1803 +f 1026//1804 1014//1804 1025//1804 +f 1026//1805 1020//1805 1014//1805 +f 1026//1806 1025//1806 665//1806 +f 1026//1807 665//1807 667//1807 +f 978//1808 1027//1808 1024//1808 +f 978//1809 1024//1809 974//1809 +f 1028//1810 1023//1810 1020//1810 +f 1028//1811 1020//1811 1026//1811 +f 1028//1812 1026//1812 667//1812 +f 979//1813 1029//1813 1013//1813 +f 979//1814 1013//1814 976//1814 +f 986//1815 1027//1815 978//1815 +f 984//1816 970//1816 1029//1816 +f 973//1817 1028//1817 667//1817 +f 973//1818 667//1818 669//1818 +f 984//1819 1029//1819 979//1819 +f 973//1820 1023//1820 1028//1820 +f 973//1821 974//1821 1023//1821 +f 982//1822 981//1822 1027//1822 +f 971//1823 970//1823 984//1823 +f 982//1824 1027//1824 986//1824 +f 969//1825 990//1825 970//1825 +f 1030//1826 1031//1826 1032//1826 +f 1030//1827 1033//1827 981//1827 +f 1034//1828 988//1828 1002//1828 +f 1034//1829 1031//1829 1030//1829 +f 1035//1830 1036//1830 1037//1830 +f 1034//1831 1038//1831 1031//1831 +f 1035//1832 1037//1832 1039//1832 +f 1034//1833 1030//1833 988//1833 +f 1040//1834 1010//1834 1013//1834 +f 1040//1835 1002//1835 1010//1835 +f 1040//1836 1041//1836 1042//1836 +f 1040//1837 1013//1837 1041//1837 +f 1040//1838 1038//1838 1034//1838 +f 1040//1839 1042//1839 1043//1839 +f 1044//1840 1045//1840 1036//1840 +f 1040//1841 1043//1841 1038//1841 +f 1040//1842 1034//1842 1002//1842 +f 1044//1843 1036//1843 1035//1843 +f 1046//1844 1047//1844 1045//1844 +f 1046//1845 1045//1845 1044//1845 +f 1048//1846 1049//1846 1047//1846 +f 1048//1847 1047//1847 1046//1847 +f 1032//1848 1050//1848 1049//1848 +f 1032//1849 1049//1849 1048//1849 +f 1031//1850 1051//1850 1050//1850 +f 1031//1851 1050//1851 1032//1851 +f 1038//1852 1052//1852 1051//1852 +f 1038//1853 1051//1853 1031//1853 +f 1043//1854 1053//1854 1052//1854 +f 1043//1855 1052//1855 1038//1855 +f 1043//1856 1042//1856 1053//1856 +f 1054//1857 1013//1857 1029//1857 +f 1054//1858 1042//1858 1041//1858 +f 1054//1859 1041//1859 1013//1859 +f 1042//1860 1055//1860 1053//1860 +f 1054//1861 1056//1861 1042//1861 +f 1057//1862 1029//1862 970//1862 +f 1057//1863 1054//1863 1029//1863 +f 1057//1864 1058//1864 1056//1864 +f 1057//1865 1056//1865 1054//1865 +f 1059//1866 970//1866 990//1866 +f 1059//1867 1060//1867 1058//1867 +f 1059//1868 1057//1868 970//1868 +f 1059//1869 1058//1869 1057//1869 +f 1061//1870 990//1870 992//1870 +f 1061//1871 1039//1871 1060//1871 +f 1061//1872 1059//1872 990//1872 +f 1061//1873 1060//1873 1059//1873 +f 1062//1874 992//1874 1000//1874 +f 1062//1875 1039//1875 1061//1875 +f 1062//1876 1035//1876 1039//1876 +f 1062//1877 1061//1877 992//1877 +f 1063//1878 1062//1878 1000//1878 +f 1063//1879 1000//1879 1015//1879 +f 1063//1880 1044//1880 1035//1880 +f 1063//1881 1035//1881 1062//1881 +f 1064//1882 1044//1882 1063//1882 +f 1064//1883 1015//1883 1024//1883 +f 1056//1884 1065//1884 1055//1884 +f 1056//1885 1055//1885 1042//1885 +f 1064//1886 1063//1886 1015//1886 +f 1064//1887 1046//1887 1044//1887 +f 1066//1888 1024//1888 1027//1888 +f 1058//1889 1067//1889 1065//1889 +f 1066//1890 1064//1890 1024//1890 +f 1066//1891 1046//1891 1064//1891 +f 1058//1892 1065//1892 1056//1892 +f 1066//1893 1048//1893 1046//1893 +f 1033//1894 1027//1894 981//1894 +f 1060//1895 1068//1895 1067//1895 +f 1033//1896 1066//1896 1027//1896 +f 1033//1897 1048//1897 1066//1897 +f 1060//1898 1067//1898 1058//1898 +f 1033//1899 1032//1899 1048//1899 +f 1030//1900 981//1900 988//1900 +f 1030//1901 1032//1901 1033//1901 +f 1039//1902 1037//1902 1068//1902 +f 1039//1903 1068//1903 1060//1903 +f 1069//1904 1047//1904 1049//1904 +f 1069//1905 1070//1905 1071//1905 +f 1069//1906 1072//1906 1070//1906 +f 1073//1907 1055//1907 1065//1907 +f 1073//1908 1074//1908 1075//1908 +f 1073//1909 1075//1909 1055//1909 +f 1069//1910 1071//1910 1047//1910 +f 1073//1911 1076//1911 1074//1911 +f 1077//1912 616//1912 625//1912 +f 1077//1913 625//1913 1078//1913 +f 1079//1914 1065//1914 1067//1914 +f 1080//1915 1081//1915 1072//1915 +f 1079//1916 1073//1916 1065//1916 +f 1080//1917 1069//1917 1049//1917 +f 1079//1918 1076//1918 1073//1918 +f 1079//1919 1082//1919 1076//1919 +f 1080//1920 1072//1920 1069//1920 +f 1083//1921 613//1921 1084//1921 +f 1083//1922 1084//1922 1085//1922 +f 1086//1923 616//1923 1077//1923 +f 1087//1924 613//1924 1083//1924 +f 1088//1925 1089//1925 616//1925 +f 1090//1926 1091//1926 1082//1926 +f 1088//1927 616//1927 1086//1927 +f 1090//1928 1079//1928 1067//1928 +f 1092//1929 1049//1929 1050//1929 +f 1090//1930 1082//1930 1079//1930 +f 1092//1931 1078//1931 1081//1931 +f 1092//1932 1081//1932 1080//1932 +f 1093//1933 1067//1933 1068//1933 +f 1092//1934 1080//1934 1049//1934 +f 1093//1935 1085//1935 1091//1935 +f 1093//1936 1091//1936 1090//1936 +f 1093//1937 1090//1937 1067//1937 +f 1094//1938 1077//1938 1078//1938 +f 1094//1939 1078//1939 1092//1939 +f 1094//1940 1092//1940 1050//1940 +f 1095//1941 614//1941 613//1941 +f 1095//1942 613//1942 1087//1942 +f 1096//1943 1089//1943 1088//1943 +f 1097//1944 614//1944 1095//1944 +f 1098//1945 1099//1945 1089//1945 +f 1098//1946 1089//1946 1096//1946 +f 1100//1947 1085//1947 1093//1947 +f 1100//1948 1093//1948 1068//1948 +f 1100//1949 1083//1949 1085//1949 +f 1101//1950 1050//1950 1051//1950 +f 1101//1951 1086//1951 1077//1951 +f 1102//1952 1068//1952 1037//1952 +f 1101//1953 1077//1953 1094//1953 +f 1102//1954 1087//1954 1083//1954 +f 1101//1955 1094//1955 1050//1955 +f 1102//1956 1083//1956 1100//1956 +f 1102//1957 1100//1957 1068//1957 +f 1103//1958 1088//1958 1086//1958 +f 1103//1959 1086//1959 1101//1959 +f 1104//1960 619//1960 614//1960 +f 1103//1961 1101//1961 1051//1961 +f 1104//1962 614//1962 1097//1962 +f 1105//1963 1099//1963 1098//1963 +f 1106//1964 1102//1964 1037//1964 +f 1107//1965 1074//1965 1108//1965 +f 1106//1966 1095//1966 1087//1966 +f 1106//1967 1087//1967 1102//1967 +f 1107//1968 1108//1968 1099//1968 +f 1107//1969 1099//1969 1105//1969 +f 1109//1970 1051//1970 1052//1970 +f 1109//1971 1088//1971 1103//1971 +f 1109//1972 1096//1972 1088//1972 +f 1110//1973 619//1973 1104//1973 +f 1109//1974 1103//1974 1051//1974 +f 1111//1975 1095//1975 1106//1975 +f 1111//1976 1037//1976 1036//1976 +f 1111//1977 1097//1977 1095//1977 +f 1112//1978 1098//1978 1096//1978 +f 1112//1979 1096//1979 1109//1979 +f 1111//1980 1106//1980 1037//1980 +f 1112//1981 1109//1981 1052//1981 +f 1113//1982 619//1982 1110//1982 +f 1114//1983 1052//1983 1053//1983 +f 1114//1984 1105//1984 1098//1984 +f 1113//1985 621//1985 619//1985 +f 1114//1986 1098//1986 1112//1986 +f 1115//1987 1104//1987 1097//1987 +f 1114//1988 1112//1988 1052//1988 +f 1116//1989 1053//1989 1055//1989 +f 1115//1990 1097//1990 1111//1990 +f 1116//1991 1075//1991 1074//1991 +f 1116//1992 1055//1992 1075//1992 +f 1116//1993 1074//1993 1107//1993 +f 1115//1994 1111//1994 1036//1994 +f 1116//1995 1107//1995 1105//1995 +f 1116//1996 1105//1996 1114//1996 +f 1116//1997 1114//1997 1053//1997 +f 1117//1998 621//1998 1113//1998 +f 1118//1999 1036//1999 1045//1999 +f 1118//2000 1115//2000 1036//2000 +f 1118//2001 1104//2001 1115//2001 +f 1118//2002 1110//2002 1104//2002 +f 1070//2003 623//2003 621//2003 +f 1070//2004 621//2004 1117//2004 +f 1119//2005 1118//2005 1045//2005 +f 1119//2006 1110//2006 1118//2006 +f 1119//2007 1113//2007 1110//2007 +f 1072//2008 623//2008 1070//2008 +f 1120//2009 1045//2009 1047//2009 +f 1120//2010 1119//2010 1045//2010 +f 1120//2011 1113//2011 1119//2011 +f 1120//2012 1117//2012 1113//2012 +f 1076//2013 1121//2013 1108//2013 +f 1076//2014 1108//2014 1074//2014 +f 1081//2015 625//2015 623//2015 +f 1081//2016 623//2016 1072//2016 +f 1071//2017 1070//2017 1117//2017 +f 1071//2018 1120//2018 1047//2018 +f 1082//2019 1121//2019 1076//2019 +f 1071//2020 1117//2020 1120//2020 +f 1091//2021 1084//2021 1121//2021 +f 1091//2022 1121//2022 1082//2022 +f 1078//2023 625//2023 1081//2023 +f 1085//2024 1084//2024 1091//2024 +f 1122//2025 1123//2025 1124//2025 +f 1122//2026 1125//2026 1123//2026 +f 1126//2027 1127//2027 1125//2027 +f 1126//2028 1125//2028 1122//2028 +f 1128//2029 616//2029 1089//2029 +f 1128//2030 1129//2030 616//2030 +f 1130//2031 613//2031 628//2031 +f 1130//2032 628//2032 1131//2032 +f 1130//2033 1131//2033 1127//2033 +f 1130//2034 1127//2034 1126//2034 +f 1132//2035 1089//2035 1099//2035 +f 1132//2036 1129//2036 1128//2036 +f 1132//2037 1128//2037 1089//2037 +f 1132//2038 1124//2038 1129//2038 +f 1133//2039 1099//2039 1108//2039 +f 1133//2040 1108//2040 1121//2040 +f 1133//2041 1124//2041 1132//2041 +f 1133//2042 1122//2042 1124//2042 +f 1133//2043 1132//2043 1099//2043 +f 1134//2044 1121//2044 1084//2044 +f 1134//2045 1126//2045 1122//2045 +f 1134//2046 1133//2046 1121//2046 +f 1134//2047 1122//2047 1133//2047 +f 1135//2048 1084//2048 613//2048 +f 1135//2049 613//2049 1130//2049 +f 1135//2050 1130//2050 1126//2050 +f 1135//2051 1134//2051 1084//2051 +f 1135//2052 1126//2052 1134//2052 +f 1136//2053 1137//2053 1138//2053 +f 1136//2054 1138//2054 636//2054 +f 1139//2055 1140//2055 1137//2055 +f 1139//2056 1137//2056 1136//2056 +f 1141//2057 1140//2057 1139//2057 +f 1142//2058 1143//2058 1140//2058 +f 1142//2059 1140//2059 1141//2059 +f 1144//2060 1136//2060 636//2060 +f 1145//2061 628//2061 1146//2061 +f 1145//2062 1146//2062 1143//2062 +f 1145//2063 1143//2063 1142//2063 +f 1123//2064 1139//2064 1136//2064 +f 1123//2065 1136//2065 1144//2065 +f 1125//2066 1141//2066 1139//2066 +f 1125//2067 1139//2067 1123//2067 +f 1127//2068 1141//2068 1125//2068 +f 1127//2069 1142//2069 1141//2069 +f 1129//2070 636//2070 616//2070 +f 1129//2071 1144//2071 636//2071 +f 1131//2072 628//2072 1145//2072 +f 1131//2073 1145//2073 1142//2073 +f 1131//2074 1142//2074 1127//2074 +f 1124//2075 1123//2075 1144//2075 +f 1124//2076 1144//2076 1129//2076 +f 1147//2077 863//2077 1148//2077 +f 1149//2078 1146//2078 628//2078 +f 1149//2079 1148//2079 1150//2079 +f 1149//2080 1150//2080 1151//2080 +f 1149//2081 1151//2081 1146//2081 +f 1152//2082 733//2082 732//2082 +f 1152//2083 732//2083 1147//2083 +f 1153//2084 628//2084 627//2084 +f 1153//2085 1147//2085 1148//2085 +f 1153//2086 1148//2086 1149//2086 +f 1153//2087 1149//2087 628//2087 +f 1154//2088 737//2088 733//2088 +f 1154//2089 733//2089 1152//2089 +f 1155//2090 627//2090 630//2090 +f 1155//2091 1147//2091 1153//2091 +f 1155//2092 1152//2092 1147//2092 +f 1155//2093 1153//2093 627//2093 +f 1156//2094 728//2094 737//2094 +f 1156//2095 737//2095 1154//2095 +f 1157//2096 630//2096 632//2096 +f 1157//2097 1152//2097 1155//2097 +f 1157//2098 1155//2098 630//2098 +f 1157//2099 1154//2099 1152//2099 +f 1158//2100 726//2100 728//2100 +f 1158//2101 728//2101 1156//2101 +f 1159//2102 632//2102 634//2102 +f 1159//2103 1157//2103 632//2103 +f 1159//2104 1154//2104 1157//2104 +f 1159//2105 1156//2105 1154//2105 +f 1160//2106 747//2106 726//2106 +f 1160//2107 726//2107 1158//2107 +f 1161//2108 1158//2108 1156//2108 +f 1161//2109 1159//2109 634//2109 +f 1161//2110 1156//2110 1159//2110 +f 1162//2111 853//2111 749//2111 +f 1162//2112 749//2112 747//2112 +f 1162//2113 747//2113 1160//2113 +f 1163//2114 634//2114 637//2114 +f 1163//2115 1161//2115 634//2115 +f 1163//2116 1160//2116 1158//2116 +f 1163//2117 1158//2117 1161//2117 +f 1164//2118 856//2118 853//2118 +f 1164//2119 853//2119 1162//2119 +f 1165//2120 1162//2120 1160//2120 +f 1165//2121 637//2121 636//2121 +f 1165//2122 1160//2122 1163//2122 +f 1165//2123 1163//2123 637//2123 +f 1166//2124 856//2124 1164//2124 +f 1166//2125 1167//2125 856//2125 +f 1168//2126 636//2126 1138//2126 +f 1168//2127 1164//2127 1162//2127 +f 1168//2128 1165//2128 636//2128 +f 1168//2129 1162//2129 1165//2129 +f 1169//2130 1138//2130 1137//2130 +f 1169//2131 1170//2131 1167//2131 +f 1169//2132 1164//2132 1168//2132 +f 1169//2133 1167//2133 1166//2133 +f 1169//2134 1166//2134 1164//2134 +f 1169//2135 1168//2135 1138//2135 +f 1169//2136 1137//2136 1170//2136 +f 1167//2137 851//2137 856//2137 +f 1140//2138 1170//2138 1137//2138 +f 1150//2139 850//2139 851//2139 +f 1150//2140 851//2140 1167//2140 +f 1148//2141 863//2141 850//2141 +f 1148//2142 850//2142 1150//2142 +f 1151//2143 1167//2143 1170//2143 +f 1151//2144 1170//2144 1140//2144 +f 1151//2145 1143//2145 1146//2145 +f 1151//2146 1140//2146 1143//2146 +f 1151//2147 1150//2147 1167//2147 +f 1147//2148 732//2148 863//2148 +f 1171//2149 1172//2149 1173//2149 +f 1174//2150 1175//2150 1176//2150 +f 1171//2151 1177//2151 809//2151 +f 1171//2152 1173//2152 1177//2152 +f 1178//2153 277//2153 286//2153 +f 1179//2154 584//2154 1180//2154 +f 1179//2155 1180//2155 1181//2155 +f 1178//2156 1182//2156 277//2156 +f 1179//2157 1181//2157 1183//2157 +f 1184//2158 801//2158 584//2158 +f 1184//2159 584//2159 1179//2159 +f 1185//2160 1174//2160 1186//2160 +f 1184//2161 1183//2161 1171//2161 +f 1184//2162 1171//2162 801//2162 +f 1185//2163 1186//2163 1187//2163 +f 1184//2164 1179//2164 1183//2164 +f 1188//2165 1187//2165 1182//2165 +f 1188//2166 1182//2166 1178//2166 +f 1189//2167 286//2167 265//2167 +f 1189//2168 1178//2168 286//2168 +f 1189//2169 1188//2169 1178//2169 +f 1190//2170 1191//2170 1192//2170 +f 1190//2171 1192//2171 1175//2171 +f 1193//2172 1185//2172 1187//2172 +f 1193//2173 1187//2173 1188//2173 +f 1194//2174 1195//2174 1191//2174 +f 1196//2175 1175//2175 1174//2175 +f 1196//2176 1190//2176 1175//2176 +f 1197//2177 1193//2177 1188//2177 +f 1197//2178 1188//2178 1189//2178 +f 1198//2179 1196//2179 1174//2179 +f 1198//2180 1174//2180 1185//2180 +f 1199//2181 1197//2181 1189//2181 +f 1199//2182 1189//2182 265//2182 +f 1200//2183 1201//2183 1195//2183 +f 1200//2184 1195//2184 1194//2184 +f 1202//2185 1198//2185 1185//2185 +f 1202//2186 1185//2186 1193//2186 +f 1203//2187 1194//2187 1191//2187 +f 1203//2188 1191//2188 1190//2188 +f 1204//2189 1205//2189 558//2189 +f 1206//2190 1193//2190 1197//2190 +f 1206//2191 1202//2191 1193//2191 +f 1207//2192 1205//2192 1204//2192 +f 1208//2193 558//2193 278//2193 +f 1208//2194 278//2194 276//2194 +f 1209//2195 1203//2195 1190//2195 +f 1208//2196 1204//2196 558//2196 +f 1209//2197 1190//2197 1196//2197 +f 1210//2198 1211//2198 1205//2198 +f 1210//2199 1205//2199 1207//2199 +f 1212//2200 1194//2200 1203//2200 +f 1213//2201 1204//2201 1208//2201 +f 1181//2202 1201//2202 1200//2202 +f 1214//2203 276//2203 277//2203 +f 1214//2204 1208//2204 276//2204 +f 1214//2205 1213//2205 1208//2205 +f 1215//2206 1203//2206 1209//2206 +f 1215//2207 1212//2207 1203//2207 +f 1216//2208 1207//2208 1204//2208 +f 1217//2209 1209//2209 1196//2209 +f 1216//2210 1204//2210 1213//2210 +f 1217//2211 1196//2211 1198//2211 +f 1218//2212 265//2212 285//2212 +f 1218//2213 1206//2213 1197//2213 +f 1218//2214 1199//2214 265//2214 +f 1218//2215 285//2215 806//2215 +f 1219//2216 1211//2216 1210//2216 +f 1218//2217 1197//2217 1199//2217 +f 1220//2218 1214//2218 277//2218 +f 1220//2219 1213//2219 1214//2219 +f 1221//2220 1215//2220 1209//2220 +f 1220//2221 1216//2221 1213//2221 +f 1221//2222 1209//2222 1217//2222 +f 1192//2223 1191//2223 1211//2223 +f 1180//2224 584//2224 579//2224 +f 1192//2225 1211//2225 1219//2225 +f 1180//2226 579//2226 1201//2226 +f 1180//2227 1201//2227 1181//2227 +f 1172//2228 1200//2228 1194//2228 +f 1222//2229 1210//2229 1207//2229 +f 1172//2230 1194//2230 1212//2230 +f 1222//2231 1207//2231 1216//2231 +f 1223//2232 1217//2232 1198//2232 +f 1223//2233 1198//2233 1202//2233 +f 1224//2234 1216//2234 1220//2234 +f 1224//2235 1222//2235 1216//2235 +f 1173//2236 1172//2236 1212//2236 +f 1182//2237 1224//2237 1220//2237 +f 1173//2238 1212//2238 1215//2238 +f 1182//2239 1220//2239 277//2239 +f 1176//2240 1210//2240 1222//2240 +f 1176//2241 1219//2241 1210//2241 +f 1225//2242 1202//2242 1206//2242 +f 1225//2243 1206//2243 1218//2243 +f 1225//2244 1218//2244 806//2244 +f 1225//2245 1223//2245 1202//2245 +f 1226//2246 1217//2246 1223//2246 +f 1226//2247 1221//2247 1217//2247 +f 1186//2248 1176//2248 1222//2248 +f 1177//2249 1226//2249 809//2249 +f 1186//2250 1222//2250 1224//2250 +f 1177//2251 1215//2251 1221//2251 +f 1177//2252 1173//2252 1215//2252 +f 1177//2253 1221//2253 1226//2253 +f 1227//2254 809//2254 1226//2254 +f 1227//2255 806//2255 809//2255 +f 1227//2256 1223//2256 1225//2256 +f 1175//2257 1192//2257 1219//2257 +f 1227//2258 1225//2258 806//2258 +f 1175//2259 1219//2259 1176//2259 +f 1227//2260 1226//2260 1223//2260 +f 1183//2261 1181//2261 1200//2261 +f 1187//2262 1224//2262 1182//2262 +f 1187//2263 1186//2263 1224//2263 +f 1183//2264 1200//2264 1172//2264 +f 1174//2265 1176//2265 1186//2265 +f 1171//2266 809//2266 801//2266 +f 1171//2267 1183//2267 1172//2267 +f 569//2268 578//2268 587//2268 +f 568//2269 578//2269 569//2269 +f 558//2270 579//2270 568//2270 +f 568//2271 579//2271 578//2271 +f 1205//2272 1195//2272 558//2272 +f 1211//2273 1195//2273 1205//2273 +f 1191//2274 1195//2274 1211//2274 +f 579//2275 1195//2275 1201//2275 +f 558//2276 1195//2276 579//2276 +f 699//2277 697//2277 907//2277 +f 682//2278 907//2278 898//2278 +f 682//2279 699//2279 907//2279 +f 683//2280 898//2280 874//2280 +f 683//2281 682//2281 898//2281 +f 711//2282 874//2282 873//2282 +f 711//2283 683//2283 874//2283 +f 720//2284 873//2284 891//2284 +f 720//2285 891//2285 725//2285 +f 720//2286 711//2286 873//2286 +f 537//2287 1228//2287 538//2287 +f 538//2288 1228//2288 1229//2288 +f 1229//2289 1230//2289 1231//2289 +f 1228//2290 1230//2290 1229//2290 +f 309//2291 1232//2291 1233//2291 +f 1231//2292 1234//2292 1233//2292 +f 1230//2293 1234//2293 1231//2293 +f 1233//2294 1234//2294 309//2294 +f 1234//2295 451//2295 309//2295 +f 1232//2296 1235//2296 1233//2296 +f 309//2297 448//2297 310//2297 +f 451//2298 448//2298 309//2298 +f 1232//2299 1236//2299 1235//2299 +f 1234//2300 1237//2300 451//2300 +f 448//2301 447//2301 310//2301 +f 1237//2302 1238//2302 1239//2302 +f 1234//2303 1238//2303 1237//2303 +f 1240//2304 521//2304 1235//2304 +f 1238//2305 1241//2305 1242//2305 +f 414//2306 366//2306 343//2306 +f 1241//2307 526//2307 539//2307 +f 1238//2308 526//2308 1241//2308 +f 1240//2309 519//2309 521//2309 +f 1236//2310 1240//2310 1235//2310 +f 343//2311 350//2311 433//2311 +f 414//2312 413//2312 366//2312 +f 433//2313 414//2313 343//2313 +f 447//2314 433//2314 350//2314 +f 447//2315 350//2315 310//2315 +f 1242//2316 1239//2316 1238//2316 +f 1243//2317 461//2317 1244//2317 +f 490//2318 489//2318 462//2318 +f 490//2319 462//2319 461//2319 +f 1245//2320 480//2320 1246//2320 +f 486//2321 461//2321 1243//2321 +f 486//2322 1247//2322 1248//2322 +f 486//2323 490//2323 461//2323 +f 1249//2324 1245//2324 1246//2324 +f 1250//2325 486//2325 1243//2325 +f 506//2326 480//2326 479//2326 +f 1250//2327 1247//2327 486//2327 +f 509//2328 1250//2328 1243//2328 +f 506//2329 1246//2329 480//2329 +f 508//2330 1250//2330 509//2330 +f 1251//2331 1246//2331 506//2331 +f 499//2332 503//2332 476//2332 +f 497//2333 499//2333 473//2333 +f 483//2334 497//2334 456//2334 +f 492//2335 483//2335 469//2335 +f 489//2336 492//2336 465//2336 +f 1252//2337 1251//2337 506//2337 +f 1253//2338 1248//2338 1247//2338 +f 1254//2339 1253//2339 1247//2339 +f 1255//2340 1256//2340 1257//2340 +f 465//2341 462//2341 489//2341 +f 469//2342 465//2342 492//2342 +f 1258//2343 1249//2343 1246//2343 +f 456//2344 469//2344 483//2344 +f 473//2345 456//2345 497//2345 +f 476//2346 473//2346 499//2346 +f 1259//2347 1249//2347 1258//2347 +f 1260//2348 1259//2348 1258//2348 +f 1261//2349 1262//2349 1244//2349 +f 503//2350 479//2350 476//2350 +f 503//2351 506//2351 479//2351 +f 1263//2352 1251//2352 1252//2352 +f 1257//2353 1263//2353 1255//2353 +f 1257//2354 1251//2354 1263//2354 +f 1244//2355 1260//2355 1258//2355 +f 1262//2356 1260//2356 1244//2356 +f 1254//2357 1257//2357 1256//2357 +f 1264//2358 1261//2358 1244//2358 +f 461//2359 1264//2359 1244//2359 +f 1247//2360 1257//2360 1254//2360 +f 1265//2361 1266//2361 1267//2361 +f 1268//2362 1267//2362 1269//2362 +f 1268//2363 1265//2363 1267//2363 +f 1270//2364 1269//2364 1271//2364 +f 1270//2365 1268//2365 1269//2365 +f 1272//2366 1270//2366 1271//2366 +f 1265//2367 821//2367 823//2367 +f 1265//2368 823//2368 1266//2368 +f 830//2369 1273//2369 1274//2369 +f 830//2370 1274//2370 828//2370 +f 1275//2371 1276//2371 1277//2371 +f 1274//2372 1276//2372 1275//2372 +f 1273//2373 1276//2373 1274//2373 +f 1277//2374 1278//2374 1279//2374 +f 1276//2375 1278//2375 1277//2375 +f 1278//2376 1280//2376 1279//2376 +f 1280//2377 517//2377 518//2377 +f 1280//2378 518//2378 1279//2378 +f 1251//2379 1272//2379 1271//2379 +f 1251//2380 1271//2380 1246//2380 +f 295//2381 816//2381 818//2381 +f 293//2382 816//2382 295//2382 +f 290//2383 814//2383 293//2383 +f 260//2384 814//2384 290//2384 +f 293//2385 814//2385 816//2385 +f 824//2386 829//2386 820//2386 +f 824//2387 832//2387 829//2387 +f 820//2388 828//2388 823//2388 +f 1246//2389 1235//2389 1258//2389 +f 829//2390 828//2390 820//2390 +f 518//2391 1233//2391 1246//2391 +f 826//2392 834//2392 824//2392 +f 1246//2393 1233//2393 1235//2393 +f 824//2394 834//2394 832//2394 +f 1235//2395 521//2395 1258//2395 +f 521//2396 1244//2396 1258//2396 +f 823//2397 1274//2397 1266//2397 +f 828//2398 1274//2398 823//2398 +f 518//2399 1231//2399 1233//2399 +f 1266//2400 1275//2400 1267//2400 +f 518//2401 516//2401 1231//2401 +f 1274//2402 1275//2402 1266//2402 +f 521//2403 522//2403 1244//2403 +f 1277//2404 1269//2404 1275//2404 +f 1275//2405 1269//2405 1267//2405 +f 516//2406 1229//2406 1231//2406 +f 522//2407 1243//2407 1244//2407 +f 1279//2408 1271//2408 1277//2408 +f 1277//2409 1271//2409 1269//2409 +f 522//2410 529//2410 1243//2410 +f 516//2411 514//2411 1229//2411 +f 514//2412 538//2412 1229//2412 +f 786//2413 272//2413 777//2413 +f 786//2414 281//2414 272//2414 +f 253//2415 281//2415 786//2415 +f 534//2416 509//2416 529//2416 +f 529//2417 509//2417 1243//2417 +f 538//2418 512//2418 536//2418 +f 514//2419 512//2419 538//2419 +f 777//2420 267//2420 778//2420 +f 272//2421 267//2421 777//2421 +f 536//2422 510//2422 534//2422 +f 253//2423 283//2423 281//2423 +f 534//2424 510//2424 509//2424 +f 512//2425 510//2425 536//2425 +f 253//2426 256//2426 283//2426 +f 1246//2427 1271//2427 1279//2427 +f 826//2428 785//2428 834//2428 +f 818//2429 834//2429 785//2429 +f 1279//2430 518//2430 1246//2430 +f 267//2431 805//2431 778//2431 +f 256//2432 810//2432 283//2432 +f 805//2433 785//2433 778//2433 +f 256//2434 812//2434 810//2434 +f 805//2435 804//2435 785//2435 +f 256//2436 258//2436 812//2436 +f 258//2437 289//2437 812//2437 +f 804//2438 818//2438 785//2438 +f 295//2439 818//2439 804//2439 +f 258//2440 260//2440 289//2440 +f 289//2441 260//2441 290//2441 +f 819//2442 799//2442 782//2442 +f 819//2443 296//2443 799//2443 +f 259//2444 257//2444 291//2444 +f 259//2445 291//2445 292//2445 +f 817//2446 296//2446 819//2446 +f 817//2447 294//2447 296//2447 +f 815//2448 259//2448 292//2448 +f 815//2449 294//2449 817//2449 +f 815//2450 292//2450 294//2450 +f 833//2451 825//2451 822//2451 +f 833//2452 822//2452 831//2452 +f 835//2453 827//2453 825//2453 +f 835//2454 825//2454 833//2454 +f 830//2455 822//2455 821//2455 +f 830//2456 831//2456 822//2456 +f 1238//2457 1251//2457 1257//2457 +f 1234//2458 1251//2458 1238//2458 +f 1234//2459 517//2459 1251//2459 +f 1273//2460 821//2460 1265//2460 +f 526//2461 1238//2461 1257//2461 +f 1273//2462 830//2462 821//2462 +f 1247//2463 526//2463 1257//2463 +f 1276//2464 1265//2464 1268//2464 +f 1276//2465 1273//2465 1265//2465 +f 1230//2466 517//2466 1234//2466 +f 1270//2467 1278//2467 1276//2467 +f 515//2468 517//2468 1230//2468 +f 1270//2469 1276//2469 1268//2469 +f 527//2470 526//2470 1247//2470 +f 1272//2471 1280//2471 1278//2471 +f 1272//2472 1278//2472 1270//2472 +f 1228//2473 515//2473 1230//2473 +f 1250//2474 527//2474 1247//2474 +f 532//2475 527//2475 1250//2475 +f 513//2476 515//2476 1228//2476 +f 262//2477 783//2477 784//2477 +f 537//2478 513//2478 1228//2478 +f 271//2479 783//2479 262//2479 +f 271//2480 254//2480 783//2480 +f 263//2481 784//2481 796//2481 +f 263//2482 262//2482 784//2482 +f 508//2483 533//2483 532//2483 +f 279//2484 254//2484 271//2484 +f 508//2485 532//2485 1250//2485 +f 511//2486 537//2486 535//2486 +f 255//2487 254//2487 279//2487 +f 511//2488 513//2488 537//2488 +f 507//2489 535//2489 533//2489 +f 803//2490 263//2490 796//2490 +f 507//2491 533//2491 508//2491 +f 507//2492 511//2492 535//2492 +f 1272//2493 1251//2493 1280//2493 +f 517//2494 1280//2494 1251//2494 +f 835//2495 819//2495 782//2495 +f 811//2496 255//2496 279//2496 +f 782//2497 827//2497 835//2497 +f 782//2498 803//2498 796//2498 +f 813//2499 255//2499 811//2499 +f 799//2500 803//2500 782//2500 +f 257//2501 255//2501 813//2501 +f 291//2502 257//2502 813//2502 +f 1281//2503 1256//2503 1282//2503 +f 1283//2504 1263//2504 1252//2504 +f 1283//2505 1252//2505 506//2505 +f 1283//2506 506//2506 505//2506 +f 1283//2507 505//2507 1284//2507 +f 1285//2508 1255//2508 1263//2508 +f 1285//2509 1284//2509 1282//2509 +f 1285//2510 1263//2510 1283//2510 +f 1285//2511 1283//2511 1284//2511 +f 1286//2512 1285//2512 1282//2512 +f 1286//2513 1255//2513 1285//2513 +f 1287//2514 1256//2514 1255//2514 +f 1287//2515 1255//2515 1286//2515 +f 1287//2516 1286//2516 1282//2516 +f 1287//2517 1282//2517 1256//2517 +f 1288//2518 1254//2518 1256//2518 +f 1288//2519 1281//2519 1289//2519 +f 1288//2520 1256//2520 1281//2520 +f 1290//2521 1253//2521 1254//2521 +f 1290//2522 1254//2522 1288//2522 +f 1290//2523 1288//2523 1289//2523 +f 1291//2524 1289//2524 1292//2524 +f 1291//2525 1290//2525 1289//2525 +f 1291//2526 1253//2526 1290//2526 +f 1293//2527 1248//2527 1253//2527 +f 1293//2528 1291//2528 1292//2528 +f 1293//2529 1253//2529 1291//2529 +f 1294//2530 487//2530 486//2530 +f 1294//2531 486//2531 1248//2531 +f 1294//2532 1292//2532 487//2532 +f 1294//2533 1248//2533 1293//2533 +f 1294//2534 1293//2534 1292//2534 +f 1260//2535 1295//2535 1296//2535 +f 1297//2536 1298//2536 481//2536 +f 1297//2537 481//2537 480//2537 +f 1297//2538 480//2538 1245//2538 +f 1299//2539 1245//2539 1249//2539 +f 1299//2540 1297//2540 1245//2540 +f 1299//2541 1298//2541 1297//2541 +f 1300//2542 1301//2542 1298//2542 +f 1300//2543 1299//2543 1249//2543 +f 1300//2544 1298//2544 1299//2544 +f 1302//2545 1249//2545 1259//2545 +f 1302//2546 1301//2546 1300//2546 +f 1302//2547 1300//2547 1249//2547 +f 1303//2548 1296//2548 1301//2548 +f 1303//2549 1301//2549 1302//2549 +f 1303//2550 1302//2550 1259//2550 +f 1304//2551 1259//2551 1260//2551 +f 1304//2552 1303//2552 1259//2552 +f 1304//2553 1260//2553 1296//2553 +f 1304//2554 1296//2554 1303//2554 +f 1305//2555 1260//2555 1262//2555 +f 1305//2556 1295//2556 1260//2556 +f 1306//2557 1295//2557 1305//2557 +f 1306//2558 1305//2558 1262//2558 +f 1307//2559 1308//2559 1295//2559 +f 1307//2560 1262//2560 1261//2560 +f 1307//2561 1295//2561 1306//2561 +f 1307//2562 1306//2562 1262//2562 +f 1309//2563 461//2563 460//2563 +f 1309//2564 460//2564 1308//2564 +f 1309//2565 1261//2565 1264//2565 +f 1309//2566 1264//2566 461//2566 +f 1309//2567 1308//2567 1307//2567 +f 1309//2568 1307//2568 1261//2568 +f 1310//2569 1242//2569 1241//2569 +f 1310//2570 1311//2570 1242//2570 +f 1310//2571 1312//2571 1311//2571 +f 1313//2572 1314//2572 1315//2572 +f 1313//2573 1315//2573 1316//2573 +f 1317//2574 1316//2574 1318//2574 +f 1317//2575 1313//2575 1316//2575 +f 1319//2576 1317//2576 1318//2576 +f 1319//2577 1318//2577 1320//2577 +f 1321//2578 1320//2578 1312//2578 +f 1321//2579 1319//2579 1320//2579 +f 1322//2580 1321//2580 1312//2580 +f 1322//2581 1241//2581 539//2581 +f 1322//2582 539//2582 528//2582 +f 1322//2583 1310//2583 1241//2583 +f 1322//2584 1312//2584 1310//2584 +f 1323//2585 1324//2585 1325//2585 +f 1323//2586 1325//2586 1314//2586 +f 1326//2587 1323//2587 1314//2587 +f 1326//2588 1314//2588 1313//2588 +f 1327//2589 1324//2589 1323//2589 +f 1328//2590 1323//2590 1326//2590 +f 1328//2591 1327//2591 1323//2591 +f 1329//2592 1326//2592 1313//2592 +f 1329//2593 1313//2593 1317//2593 +f 1330//2594 1328//2594 1326//2594 +f 1330//2595 1326//2595 1329//2595 +f 1331//2596 1329//2596 1317//2596 +f 1331//2597 1317//2597 1319//2597 +f 1332//2598 1329//2598 1331//2598 +f 1332//2599 1330//2599 1329//2599 +f 1333//2600 1334//2600 453//2600 +f 1333//2601 453//2601 451//2601 +f 1335//2602 1321//2602 1322//2602 +f 1333//2603 451//2603 1237//2603 +f 1335//2604 1319//2604 1321//2604 +f 1335//2605 1322//2605 528//2605 +f 1335//2606 1331//2606 1319//2606 +f 1336//2607 528//2607 531//2607 +f 1337//2608 1333//2608 1237//2608 +f 1336//2609 1332//2609 1331//2609 +f 1336//2610 531//2610 1332//2610 +f 1337//2611 1334//2611 1333//2611 +f 1336//2612 1335//2612 528//2612 +f 1336//2613 1331//2613 1335//2613 +f 1338//2614 1339//2614 1324//2614 +f 1340//2615 1334//2615 1337//2615 +f 1341//2616 1237//2616 1239//2616 +f 1338//2617 1324//2617 1327//2617 +f 1341//2618 1337//2618 1237//2618 +f 1342//2619 1327//2619 1328//2619 +f 1343//2620 1340//2620 1337//2620 +f 1343//2621 1341//2621 1239//2621 +f 1343//2622 1337//2622 1341//2622 +f 1342//2623 1338//2623 1327//2623 +f 1344//2624 1345//2624 1334//2624 +f 1346//2625 1328//2625 1330//2625 +f 1346//2626 1332//2626 531//2626 +f 1346//2627 1330//2627 1332//2627 +f 1344//2628 1334//2628 1340//2628 +f 1346//2629 1342//2629 1328//2629 +f 1347//2630 1339//2630 1338//2630 +f 1348//2631 1344//2631 1340//2631 +f 1349//2632 531//2632 530//2632 +f 1348//2633 1340//2633 1343//2633 +f 1349//2634 1347//2634 1338//2634 +f 1349//2635 1346//2635 531//2635 +f 1349//2636 1338//2636 1342//2636 +f 1350//2637 1348//2637 1343//2637 +f 1349//2638 1342//2638 1346//2638 +f 1350//2639 1343//2639 1239//2639 +f 1351//2640 422//2640 421//2640 +f 1351//2641 421//2641 1339//2641 +f 1351//2642 530//2642 422//2642 +f 1351//2643 1339//2643 1347//2643 +f 1352//2644 1345//2644 1344//2644 +f 1351//2645 1349//2645 530//2645 +f 1351//2646 1347//2646 1349//2646 +f 1353//2647 1344//2647 1348//2647 +f 1353//2648 1352//2648 1344//2648 +f 1354//2649 1239//2649 1242//2649 +f 1354//2650 1350//2650 1239//2650 +f 1355//2651 1348//2651 1350//2651 +f 1355//2652 1353//2652 1348//2652 +f 1315//2653 1325//2653 1345//2653 +f 1315//2654 1345//2654 1352//2654 +f 1311//2655 1354//2655 1242//2655 +f 1311//2656 1350//2656 1354//2656 +f 1311//2657 1355//2657 1350//2657 +f 1316//2658 1352//2658 1353//2658 +f 1316//2659 1315//2659 1352//2659 +f 1318//2660 1353//2660 1355//2660 +f 1318//2661 1316//2661 1353//2661 +f 1320//2662 1355//2662 1311//2662 +f 1320//2663 1318//2663 1355//2663 +f 1312//2664 1320//2664 1311//2664 +f 1314//2665 1325//2665 1315//2665 +f 1356//2666 496//2666 1357//2666 +f 1356//2667 1357//2667 1358//2667 +f 1359//2668 394//2668 1360//2668 +f 1359//2669 1361//2669 394//2669 +f 1362//2670 387//2670 390//2670 +f 1363//2671 505//2671 501//2671 +f 1363//2672 1364//2672 1361//2672 +f 1363//2673 1356//2673 1364//2673 +f 1363//2674 501//2674 1356//2674 +f 1365//2675 1360//2675 1366//2675 +f 1365//2676 1359//2676 1360//2676 +f 1367//2677 1284//2677 505//2677 +f 1367//2678 505//2678 1363//2678 +f 1367//2679 1361//2679 1359//2679 +f 1367//2680 1363//2680 1361//2680 +f 1368//2681 1366//2681 1369//2681 +f 1368//2682 1365//2682 1366//2682 +f 1370//2683 1282//2683 1284//2683 +f 1370//2684 1359//2684 1365//2684 +f 1370//2685 1367//2685 1359//2685 +f 1370//2686 1284//2686 1367//2686 +f 1371//2687 1369//2687 1372//2687 +f 1371//2688 1368//2688 1369//2688 +f 1373//2689 1281//2689 1282//2689 +f 1373//2690 1365//2690 1368//2690 +f 1373//2691 1370//2691 1365//2691 +f 1373//2692 1282//2692 1370//2692 +f 1374//2693 1372//2693 1375//2693 +f 1374//2694 1371//2694 1372//2694 +f 1376//2695 1289//2695 1281//2695 +f 1376//2696 1281//2696 1373//2696 +f 1376//2697 1368//2697 1371//2697 +f 1376//2698 1373//2698 1368//2698 +f 1377//2699 1375//2699 383//2699 +f 1377//2700 1374//2700 1375//2700 +f 1378//2701 1376//2701 1371//2701 +f 1378//2702 1292//2702 1289//2702 +f 1378//2703 1289//2703 1376//2703 +f 1378//2704 1371//2704 1374//2704 +f 1379//2705 383//2705 382//2705 +f 1379//2706 1377//2706 383//2706 +f 1380//2707 488//2707 487//2707 +f 1380//2708 1374//2708 1377//2708 +f 1380//2709 487//2709 1292//2709 +f 1380//2710 1292//2710 1378//2710 +f 1380//2711 1378//2711 1374//2711 +f 1381//2712 382//2712 385//2712 +f 1381//2713 385//2713 1362//2713 +f 1381//2714 1379//2714 382//2714 +f 1382//2715 484//2715 488//2715 +f 1382//2716 1377//2716 1379//2716 +f 1382//2717 1380//2717 1377//2717 +f 1382//2718 488//2718 1380//2718 +f 1383//2719 482//2719 484//2719 +f 1383//2720 1382//2720 1379//2720 +f 1383//2721 484//2721 1382//2721 +f 1383//2722 1381//2722 1362//2722 +f 1362//2723 385//2723 387//2723 +f 1383//2724 1362//2724 1384//2724 +f 1383//2725 1384//2725 482//2725 +f 1383//2726 1379//2726 1381//2726 +f 1358//2727 390//2727 392//2727 +f 1358//2728 1362//2728 390//2728 +f 1364//2729 392//2729 394//2729 +f 1364//2730 1358//2730 392//2730 +f 1357//2731 496//2731 482//2731 +f 1357//2732 1384//2732 1362//2732 +f 1357//2733 482//2733 1384//2733 +f 1357//2734 1362//2734 1358//2734 +f 1361//2735 1364//2735 394//2735 +f 1356//2736 501//2736 496//2736 +f 1356//2737 1358//2737 1364//2737 +f 1385//2738 1360//2738 394//2738 +f 1385//2739 394//2739 393//2739 +f 1386//2740 1366//2740 1360//2740 +f 1386//2741 1360//2741 1385//2741 +f 1387//2742 1372//2742 1369//2742 +f 1387//2743 1369//2743 1366//2743 +f 1387//2744 1366//2744 1386//2744 +f 1388//2745 1375//2745 1372//2745 +f 1388//2746 1372//2746 1387//2746 +f 1389//2747 383//2747 1375//2747 +f 1389//2748 1375//2748 1388//2748 +f 381//2749 383//2749 1389//2749 +f 1390//2750 389//2750 388//2750 +f 1390//2751 1391//2751 1392//2751 +f 1393//2752 1394//2752 1395//2752 +f 1390//2753 388//2753 1391//2753 +f 1390//2754 1392//2754 1396//2754 +f 1397//2755 1398//2755 1399//2755 +f 1400//2756 1390//2756 1396//2756 +f 1401//2757 1389//2757 1388//2757 +f 1400//2758 389//2758 1390//2758 +f 1401//2759 1402//2759 1403//2759 +f 1400//2760 1396//2760 1404//2760 +f 1401//2761 1388//2761 1393//2761 +f 1401//2762 1393//2762 1402//2762 +f 1405//2763 1406//2763 1407//2763 +f 1408//2764 1399//2764 1409//2764 +f 1408//2765 1397//2765 1399//2765 +f 1410//2766 1407//2766 1411//2766 +f 1410//2767 1405//2767 1407//2767 +f 1412//2768 391//2768 389//2768 +f 1412//2769 1404//2769 1413//2769 +f 1414//2770 1408//2770 1409//2770 +f 1412//2771 389//2771 1400//2771 +f 1415//2772 1389//2772 1401//2772 +f 1415//2773 1403//2773 1398//2773 +f 1412//2774 1400//2774 1404//2774 +f 1415//2775 1401//2775 1403//2775 +f 1416//2776 1412//2776 1413//2776 +f 1416//2777 1413//2777 1406//2777 +f 1416//2778 391//2778 1412//2778 +f 1417//2779 381//2779 1389//2779 +f 1417//2780 1415//2780 1398//2780 +f 1417//2781 1398//2781 1397//2781 +f 1417//2782 1389//2782 1415//2782 +f 1418//2783 1410//2783 1411//2783 +f 1419//2784 1409//2784 1420//2784 +f 1421//2785 1411//2785 1422//2785 +f 1419//2786 1414//2786 1409//2786 +f 1421//2787 1418//2787 1411//2787 +f 1423//2788 393//2788 391//2788 +f 1423//2789 391//2789 1416//2789 +f 1424//2790 1419//2790 1420//2790 +f 1423//2791 1406//2791 1405//2791 +f 1423//2792 1416//2792 1406//2792 +f 1425//2793 1397//2793 1408//2793 +f 1425//2794 381//2794 1417//2794 +f 1426//2795 393//2795 1423//2795 +f 1425//2796 1417//2796 1397//2796 +f 1426//2797 1405//2797 1410//2797 +f 1426//2798 1423//2798 1405//2798 +f 1427//2799 384//2799 381//2799 +f 1427//2800 1408//2800 1414//2800 +f 1427//2801 1425//2801 1408//2801 +f 1427//2802 381//2802 1425//2802 +f 1428//2803 1421//2803 1422//2803 +f 1429//2804 1420//2804 1430//2804 +f 1429//2805 1424//2805 1420//2805 +f 1431//2806 1385//2806 393//2806 +f 1431//2807 1410//2807 1418//2807 +f 1431//2808 393//2808 1426//2808 +f 1432//2809 1430//2809 1433//2809 +f 1432//2810 1433//2810 1392//2810 +f 1431//2811 1426//2811 1410//2811 +f 1434//2812 1428//2812 1422//2812 +f 1432//2813 1429//2813 1430//2813 +f 1435//2814 1427//2814 1414//2814 +f 1434//2815 1422//2815 1436//2815 +f 1435//2816 1414//2816 1419//2816 +f 1435//2817 384//2817 1427//2817 +f 1437//2818 1431//2818 1418//2818 +f 1438//2819 386//2819 384//2819 +f 1438//2820 1419//2820 1424//2820 +f 1438//2821 1435//2821 1419//2821 +f 1437//2822 1418//2822 1421//2822 +f 1437//2823 1385//2823 1431//2823 +f 1438//2824 384//2824 1435//2824 +f 1439//2825 1434//2825 1436//2825 +f 1440//2826 1424//2826 1429//2826 +f 1441//2827 1421//2827 1428//2827 +f 1440//2828 386//2828 1438//2828 +f 1440//2829 1438//2829 1424//2829 +f 1441//2830 1386//2830 1385//2830 +f 1442//2831 388//2831 386//2831 +f 1441//2832 1437//2832 1421//2832 +f 1442//2833 1392//2833 1391//2833 +f 1441//2834 1385//2834 1437//2834 +f 1442//2835 1391//2835 388//2835 +f 1442//2836 1432//2836 1392//2836 +f 1442//2837 1429//2837 1432//2837 +f 1442//2838 386//2838 1440//2838 +f 1442//2839 1440//2839 1429//2839 +f 1443//2840 1436//2840 1444//2840 +f 1443//2841 1439//2841 1436//2841 +f 1445//2842 1386//2842 1441//2842 +f 1445//2843 1441//2843 1428//2843 +f 1445//2844 1428//2844 1434//2844 +f 1395//2845 1443//2845 1444//2845 +f 1446//2846 1387//2846 1386//2846 +f 1446//2847 1386//2847 1445//2847 +f 1446//2848 1445//2848 1434//2848 +f 1446//2849 1434//2849 1439//2849 +f 1402//2850 1444//2850 1447//2850 +f 1402//2851 1395//2851 1444//2851 +f 1448//2852 1387//2852 1446//2852 +f 1448//2853 1446//2853 1439//2853 +f 1396//2854 1392//2854 1433//2854 +f 1448//2855 1439//2855 1443//2855 +f 1396//2856 1433//2856 1449//2856 +f 1403//2857 1402//2857 1447//2857 +f 1404//2858 1449//2858 1450//2858 +f 1394//2859 1388//2859 1387//2859 +f 1394//2860 1443//2860 1395//2860 +f 1394//2861 1448//2861 1443//2861 +f 1404//2862 1396//2862 1449//2862 +f 1394//2863 1387//2863 1448//2863 +f 1413//2864 1404//2864 1450//2864 +f 1398//2865 1447//2865 1399//2865 +f 1398//2866 1403//2866 1447//2866 +f 1406//2867 1450//2867 1407//2867 +f 1406//2868 1413//2868 1450//2868 +f 1393//2869 1388//2869 1394//2869 +f 1393//2870 1395//2870 1402//2870 +f 1451//2871 1420//2871 1452//2871 +f 1451//2872 1452//2872 1453//2872 +f 1454//2873 1455//2873 1456//2873 +f 1451//2874 1457//2874 1458//2874 +f 1451//2875 1458//2875 1433//2875 +f 1451//2876 1459//2876 1457//2876 +f 1451//2877 1453//2877 1459//2877 +f 1454//2878 1460//2878 1455//2878 +f 1461//2879 1456//2879 1462//2879 +f 1461//2880 1454//2880 1456//2880 +f 1463//2881 1462//2881 1464//2881 +f 1463//2882 1461//2882 1462//2882 +f 1465//2883 1464//2883 1466//2883 +f 1465//2884 1463//2884 1464//2884 +f 1467//2885 1466//2885 1468//2885 +f 1467//2886 1465//2886 1466//2886 +f 1453//2887 1468//2887 1469//2887 +f 1453//2888 1467//2888 1468//2888 +f 1459//2889 1470//2889 1471//2889 +f 1459//2890 1469//2890 1470//2890 +f 1459//2891 1471//2891 1457//2891 +f 1459//2892 1453//2892 1469//2892 +f 1472//2893 1449//2893 1433//2893 +f 1472//2894 1458//2894 1457//2894 +f 1472//2895 1433//2895 1458//2895 +f 1457//2896 1471//2896 1473//2896 +f 1472//2897 1457//2897 1474//2897 +f 1475//2898 1450//2898 1449//2898 +f 1475//2899 1474//2899 1476//2899 +f 1475//2900 1449//2900 1472//2900 +f 1475//2901 1472//2901 1474//2901 +f 1477//2902 1407//2902 1450//2902 +f 1477//2903 1476//2903 1478//2903 +f 1477//2904 1450//2904 1475//2904 +f 1477//2905 1475//2905 1476//2905 +f 1479//2906 1411//2906 1407//2906 +f 1479//2907 1407//2907 1477//2907 +f 1479//2908 1478//2908 1480//2908 +f 1479//2909 1477//2909 1478//2909 +f 1481//2910 1422//2910 1411//2910 +f 1481//2911 1480//2911 1460//2911 +f 1481//2912 1411//2912 1479//2912 +f 1481//2913 1479//2913 1480//2913 +f 1482//2914 1422//2914 1481//2914 +f 1482//2915 1481//2915 1460//2915 +f 1482//2916 1436//2916 1422//2916 +f 1482//2917 1460//2917 1454//2917 +f 1483//2918 1482//2918 1454//2918 +f 1483//2919 1444//2919 1436//2919 +f 1474//2920 1457//2920 1473//2920 +f 1483//2921 1454//2921 1461//2921 +f 1483//2922 1436//2922 1482//2922 +f 1476//2923 1473//2923 1484//2923 +f 1485//2924 1447//2924 1444//2924 +f 1485//2925 1444//2925 1483//2925 +f 1485//2926 1483//2926 1461//2926 +f 1476//2927 1474//2927 1473//2927 +f 1485//2928 1461//2928 1463//2928 +f 1478//2929 1484//2929 1486//2929 +f 1487//2930 1399//2930 1447//2930 +f 1487//2931 1447//2931 1485//2931 +f 1487//2932 1485//2932 1463//2932 +f 1478//2933 1476//2933 1484//2933 +f 1487//2934 1463//2934 1465//2934 +f 1488//2935 1409//2935 1399//2935 +f 1480//2936 1486//2936 1489//2936 +f 1488//2937 1487//2937 1465//2937 +f 1488//2938 1465//2938 1467//2938 +f 1480//2939 1478//2939 1486//2939 +f 1488//2940 1399//2940 1487//2940 +f 1452//2941 1420//2941 1409//2941 +f 1452//2942 1409//2942 1488//2942 +f 1460//2943 1489//2943 1455//2943 +f 1452//2944 1467//2944 1453//2944 +f 1452//2945 1488//2945 1467//2945 +f 1460//2946 1480//2946 1489//2946 +f 1451//2947 1433//2947 1430//2947 +f 1451//2948 1430//2948 1420//2948 +f 1490//2949 1471//2949 1491//2949 +f 1492//2950 1493//2950 368//2950 +f 1490//2951 1494//2951 1495//2951 +f 1496//2952 1484//2952 1473//2952 +f 1492//2953 1497//2953 1493//2953 +f 1496//2954 1495//2954 1498//2954 +f 1496//2955 1490//2955 1495//2955 +f 1496//2956 1473//2956 1490//2956 +f 1499//2957 1464//2957 1500//2957 +f 1499//2958 1501//2958 1502//2958 +f 1499//2959 1500//2959 1501//2959 +f 1503//2960 377//2960 379//2960 +f 1503//2961 1504//2961 377//2961 +f 1505//2962 1492//2962 368//2962 +f 1506//2963 1503//2963 379//2963 +f 1507//2964 368//2964 370//2964 +f 1508//2965 1484//2965 1496//2965 +f 1507//2966 1505//2966 368//2966 +f 1508//2967 1498//2967 1509//2967 +f 1510//2968 1466//2968 1464//2968 +f 1508//2969 1496//2969 1498//2969 +f 1510//2970 1502//2970 1497//2970 +f 1510//2971 1464//2971 1499//2971 +f 1511//2972 1486//2972 1484//2972 +f 1511//2973 1509//2973 1504//2973 +f 1510//2974 1499//2974 1502//2974 +f 1511//2975 1484//2975 1508//2975 +f 1511//2976 1508//2976 1509//2976 +f 1512//2977 1497//2977 1492//2977 +f 1512//2978 1510//2978 1497//2978 +f 1513//2979 379//2979 1514//2979 +f 1512//2980 1466//2980 1510//2980 +f 1513//2981 1506//2981 379//2981 +f 1515//2982 1513//2982 1514//2982 +f 1516//2983 1507//2983 370//2983 +f 1517//2984 370//2984 372//2984 +f 1518//2985 1504//2985 1503//2985 +f 1517//2986 1516//2986 370//2986 +f 1518//2987 1511//2987 1504//2987 +f 1518//2988 1486//2988 1511//2988 +f 1519//2989 1468//2989 1466//2989 +f 1519//2990 1512//2990 1492//2990 +f 1520//2991 1489//2991 1486//2991 +f 1519//2992 1492//2992 1505//2992 +f 1520//2993 1486//2993 1518//2993 +f 1519//2994 1466//2994 1512//2994 +f 1520//2995 1503//2995 1506//2995 +f 1520//2996 1518//2996 1503//2996 +f 1521//2997 1468//2997 1519//2997 +f 1521//2998 1505//2998 1507//2998 +f 1521//2999 1519//2999 1505//2999 +f 1522//3000 1514//3000 1523//3000 +f 1522//3001 1515//3001 1514//3001 +f 1524//3002 1517//3002 372//3002 +f 1525//3003 1506//3003 1513//3003 +f 1525//3004 1489//3004 1520//3004 +f 1526//3005 372//3005 375//3005 +f 1525//3006 1520//3006 1506//3006 +f 1526//3007 375//3007 1494//3007 +f 1526//3008 1524//3008 372//3008 +f 1527//3009 1469//3009 1468//3009 +f 1528//3010 1522//3010 1523//3010 +f 1527//3011 1507//3011 1516//3011 +f 1527//3012 1468//3012 1521//3012 +f 1527//3013 1521//3013 1507//3013 +f 1529//3014 1525//3014 1513//3014 +f 1529//3015 1455//3015 1489//3015 +f 1530//3016 1469//3016 1527//3016 +f 1529//3017 1489//3017 1525//3017 +f 1530//3018 1516//3018 1517//3018 +f 1529//3019 1513//3019 1515//3019 +f 1530//3020 1527//3020 1516//3020 +f 1531//3021 1528//3021 1523//3021 +f 1532//3022 1470//3022 1469//3022 +f 1532//3023 1530//3023 1517//3023 +f 1531//3024 1523//3024 1533//3024 +f 1532//3025 1517//3025 1524//3025 +f 1534//3026 1515//3026 1522//3026 +f 1532//3027 1469//3027 1530//3027 +f 1535//3028 1471//3028 1470//3028 +f 1534//3029 1455//3029 1529//3029 +f 1535//3030 1494//3030 1491//3030 +f 1534//3031 1529//3031 1515//3031 +f 1535//3032 1491//3032 1471//3032 +f 1535//3033 1526//3033 1494//3033 +f 1535//3034 1524//3034 1526//3034 +f 1535//3035 1470//3035 1532//3035 +f 1535//3036 1532//3036 1524//3036 +f 1536//3037 1531//3037 1533//3037 +f 1537//3038 1456//3038 1455//3038 +f 1537//3039 1522//3039 1528//3039 +f 1537//3040 1534//3040 1522//3040 +f 1537//3041 1455//3041 1534//3041 +f 1538//3042 1536//3042 1533//3042 +f 1538//3043 1533//3043 1539//3043 +f 1540//3044 1456//3044 1537//3044 +f 1540//3045 1537//3045 1528//3045 +f 1540//3046 1528//3046 1531//3046 +f 1501//3047 1538//3047 1539//3047 +f 1541//3048 1456//3048 1540//3048 +f 1541//3049 1462//3049 1456//3049 +f 1541//3050 1540//3050 1531//3050 +f 1495//3051 1494//3051 375//3051 +f 1541//3052 1531//3052 1536//3052 +f 1495//3053 375//3053 374//3053 +f 1502//3054 1539//3054 1493//3054 +f 1502//3055 1501//3055 1539//3055 +f 1542//3056 1536//3056 1538//3056 +f 1498//3057 1495//3057 374//3057 +f 1542//3058 1541//3058 1536//3058 +f 1542//3059 1462//3059 1541//3059 +f 1509//3060 374//3060 377//3060 +f 1509//3061 1498//3061 374//3061 +f 1497//3062 1502//3062 1493//3062 +f 1504//3063 1509//3063 377//3063 +f 1500//3064 1464//3064 1462//3064 +f 1500//3065 1462//3065 1542//3065 +f 1500//3066 1542//3066 1538//3066 +f 1500//3067 1538//3067 1501//3067 +f 1490//3068 1473//3068 1471//3068 +f 1490//3069 1491//3069 1494//3069 +f 380//3070 1514//3070 379//3070 +f 1543//3071 1523//3071 1514//3071 +f 1543//3072 1514//3072 380//3072 +f 1544//3073 1533//3073 1523//3073 +f 1544//3074 1523//3074 1543//3074 +f 1545//3075 1533//3075 1544//3075 +f 1546//3076 1539//3076 1533//3076 +f 1546//3077 1533//3077 1545//3077 +f 1547//3078 1493//3078 1539//3078 +f 1547//3079 1539//3079 1546//3079 +f 369//3080 368//3080 1493//3080 +f 369//3081 1493//3081 1547//3081 +f 1548//3082 378//3082 1549//3082 +f 1548//3083 1549//3083 1550//3083 +f 1551//3084 481//3084 1298//3084 +f 1551//3085 1552//3085 481//3085 +f 1553//3086 458//3086 457//3086 +f 1554//3087 1555//3087 1552//3087 +f 1554//3088 380//3088 1548//3088 +f 1554//3089 1548//3089 1555//3089 +f 1556//3090 1298//3090 1301//3090 +f 1556//3091 1551//3091 1298//3091 +f 1557//3092 1543//3092 380//3092 +f 1557//3093 1552//3093 1551//3093 +f 1557//3094 380//3094 1554//3094 +f 1557//3095 1554//3095 1552//3095 +f 1558//3096 1301//3096 1296//3096 +f 1558//3097 1556//3097 1301//3097 +f 376//3098 373//3098 1559//3098 +f 1560//3099 1544//3099 1543//3099 +f 1560//3100 1557//3100 1551//3100 +f 1560//3101 1543//3101 1557//3101 +f 1560//3102 1551//3102 1556//3102 +f 1561//3103 1296//3103 1295//3103 +f 1561//3104 1558//3104 1296//3104 +f 1562//3105 1545//3105 1544//3105 +f 1562//3106 1560//3106 1556//3106 +f 1562//3107 1544//3107 1560//3107 +f 1562//3108 1556//3108 1558//3108 +f 1563//3109 1295//3109 1308//3109 +f 1563//3110 1561//3110 1295//3110 +f 1564//3111 1547//3111 1546//3111 +f 1564//3112 1546//3112 1545//3112 +f 1564//3113 1545//3113 1562//3113 +f 1564//3114 1558//3114 1561//3114 +f 1564//3115 1562//3115 1558//3115 +f 1565//3116 1308//3116 460//3116 +f 1565//3117 460//3117 463//3117 +f 1565//3118 1563//3118 1308//3118 +f 1566//3119 1564//3119 1561//3119 +f 1566//3120 1547//3120 1564//3120 +f 1566//3121 1561//3121 1563//3121 +f 1567//3122 463//3122 467//3122 +f 1567//3123 1565//3123 463//3123 +f 1568//3124 1563//3124 1565//3124 +f 1568//3125 369//3125 1547//3125 +f 1568//3126 1566//3126 1563//3126 +f 1568//3127 1547//3127 1566//3127 +f 1569//3128 467//3128 458//3128 +f 1569//3129 458//3129 1553//3129 +f 1569//3130 1567//3130 467//3130 +f 1570//3131 1565//3131 1567//3131 +f 1570//3132 367//3132 369//3132 +f 1570//3133 1568//3133 1565//3133 +f 1570//3134 369//3134 1568//3134 +f 1571//3135 371//3135 367//3135 +f 1571//3136 367//3136 1570//3136 +f 1571//3137 1569//3137 1553//3137 +f 1571//3138 1553//3138 1559//3138 +f 1571//3139 1570//3139 1567//3139 +f 1571//3140 1567//3140 1569//3140 +f 1571//3141 1559//3141 371//3141 +f 373//3142 371//3142 1559//3142 +f 1550//3143 1553//3143 457//3143 +f 1555//3144 457//3144 477//3144 +f 1555//3145 1550//3145 457//3145 +f 1549//3146 378//3146 376//3146 +f 1549//3147 1559//3147 1553//3147 +f 1549//3148 376//3148 1559//3148 +f 1549//3149 1553//3149 1550//3149 +f 1552//3150 477//3150 481//3150 +f 1552//3151 1555//3151 477//3151 +f 1548//3152 380//3152 378//3152 +f 1548//3153 1550//3153 1555//3153 +f 1572//3154 1573//3154 1574//3154 +f 1575//3155 1576//3155 1577//3155 +f 1572//3156 1578//3156 1573//3156 +f 1575//3157 1579//3157 1576//3157 +f 1580//3158 524//3158 523//3158 +f 1580//3159 523//3159 1581//3159 +f 1580//3160 1581//3160 1582//3160 +f 1583//3161 1577//3161 1584//3161 +f 1583//3162 1575//3162 1577//3162 +f 1585//3163 330//3163 1586//3163 +f 1587//3164 1582//3164 1578//3164 +f 1585//3165 1588//3165 1589//3165 +f 1585//3166 1589//3166 330//3166 +f 1587//3167 1580//3167 1582//3167 +f 1590//3168 1578//3168 1572//3168 +f 1590//3169 1587//3169 1578//3169 +f 1591//3170 1592//3170 1593//3170 +f 1594//3171 1595//3171 1596//3171 +f 1591//3172 1593//3172 1597//3172 +f 1598//3173 1599//3173 1588//3173 +f 1591//3174 1597//3174 1600//3174 +f 1598//3175 1585//3175 1586//3175 +f 1601//3176 1592//3176 1591//3176 +f 1601//3177 1574//3177 1592//3177 +f 1598//3178 1588//3178 1585//3178 +f 1602//3179 1596//3179 1603//3179 +f 1601//3180 1591//3180 1600//3180 +f 1604//3181 525//3181 524//3181 +f 1602//3182 1594//3182 1596//3182 +f 1604//3183 524//3183 1580//3183 +f 1604//3184 1580//3184 1587//3184 +f 1605//3185 1603//3185 1579//3185 +f 1606//3186 1587//3186 1590//3186 +f 1606//3187 1604//3187 1587//3187 +f 1605//3188 1602//3188 1603//3188 +f 1607//3189 342//3189 341//3189 +f 1607//3190 341//3190 525//3190 +f 1607//3191 525//3191 1604//3191 +f 1608//3192 520//3192 519//3192 +f 1607//3193 1604//3193 1606//3193 +f 1609//3194 1600//3194 1610//3194 +f 1608//3195 519//3195 1595//3195 +f 1609//3196 1572//3196 1574//3196 +f 1609//3197 1601//3197 1600//3197 +f 1609//3198 1574//3198 1601//3198 +f 1611//3199 523//3199 520//3199 +f 1611//3200 520//3200 1608//3200 +f 1612//3201 1572//3201 1609//3201 +f 1612//3202 1590//3202 1572//3202 +f 1612//3203 1609//3203 1610//3203 +f 1613//3204 1579//3204 1575//3204 +f 1614//3205 1606//3205 1590//3205 +f 1613//3206 1605//3206 1579//3206 +f 1614//3207 1612//3207 1610//3207 +f 1614//3208 1590//3208 1612//3208 +f 1593//3209 1613//3209 1575//3209 +f 1615//3210 1610//3210 342//3210 +f 1615//3211 342//3211 1607//3211 +f 1615//3212 1614//3212 1610//3212 +f 1615//3213 1607//3213 1606//3213 +f 1593//3214 1575//3214 1583//3214 +f 1615//3215 1606//3215 1614//3215 +f 1616//3216 1595//3216 1594//3216 +f 1616//3217 1608//3217 1595//3217 +f 1617//3218 1232//3218 309//3218 +f 1618//3219 523//3219 1611//3219 +f 1589//3220 309//3220 330//3220 +f 1618//3221 1608//3221 1616//3221 +f 1589//3222 1617//3222 309//3222 +f 1618//3223 1611//3223 1608//3223 +f 1619//3224 1236//3224 1232//3224 +f 1620//3225 1616//3225 1594//3225 +f 1620//3226 1594//3226 1602//3226 +f 1621//3227 1618//3227 1616//3227 +f 1622//3228 1236//3228 1619//3228 +f 1621//3229 1616//3229 1620//3229 +f 1623//3230 1619//3230 1232//3230 +f 1623//3231 1232//3231 1617//3231 +f 1588//3232 1623//3232 1617//3232 +f 1624//3233 1586//3233 1625//3233 +f 1624//3234 1599//3234 1598//3234 +f 1624//3235 1584//3235 1599//3235 +f 1588//3236 1617//3236 1589//3236 +f 1624//3237 1598//3237 1586//3237 +f 1626//3238 1619//3238 1623//3238 +f 1626//3239 1622//3239 1619//3239 +f 1627//3240 1620//3240 1602//3240 +f 1627//3241 1602//3241 1605//3241 +f 1599//3242 1623//3242 1588//3242 +f 1599//3243 1626//3243 1623//3243 +f 1628//3244 1240//3244 1236//3244 +f 1629//3245 1621//3245 1620//3245 +f 1629//3246 1620//3246 1627//3246 +f 1630//3247 1584//3247 1624//3247 +f 1631//3248 1628//3248 1236//3248 +f 1630//3249 1583//3249 1584//3249 +f 1630//3250 1624//3250 1625//3250 +f 1632//3251 1605//3251 1613//3251 +f 1632//3252 1627//3252 1605//3252 +f 1596//3253 519//3253 1240//3253 +f 1596//3254 1240//3254 1628//3254 +f 1576//3255 1236//3255 1622//3255 +f 1573//3256 1629//3256 1627//3256 +f 1576//3257 1631//3257 1236//3257 +f 1573//3258 1627//3258 1632//3258 +f 1592//3259 1632//3259 1613//3259 +f 1592//3260 1613//3260 1593//3260 +f 1603//3261 1628//3261 1631//3261 +f 1574//3262 1573//3262 1632//3262 +f 1603//3263 1596//3263 1628//3263 +f 1574//3264 1632//3264 1592//3264 +f 1577//3265 1622//3265 1626//3265 +f 1581//3266 1618//3266 1621//3266 +f 1577//3267 1576//3267 1622//3267 +f 1581//3268 523//3268 1618//3268 +f 1582//3269 1581//3269 1621//3269 +f 1582//3270 1621//3270 1629//3270 +f 1579//3271 1631//3271 1576//3271 +f 1579//3272 1603//3272 1631//3272 +f 1597//3273 1583//3273 1630//3273 +f 1597//3274 1593//3274 1583//3274 +f 1584//3275 1577//3275 1626//3275 +f 1597//3276 1625//3276 1600//3276 +f 1584//3277 1626//3277 1599//3277 +f 1597//3278 1630//3278 1625//3278 +f 1578//3279 1629//3279 1573//3279 +f 1595//3280 519//3280 1596//3280 +f 1578//3281 1582//3281 1629//3281 +f 1586//3282 1610//3282 1625//3282 +f 1625//3283 1610//3283 1600//3283 +f 330//3284 342//3284 1586//3284 +f 1586//3285 342//3285 1610//3285 +f 319//3286 313//3286 330//3286 +f 330//3287 313//3287 342//3287 +f 354//3288 335//3288 318//3288 +f 318//3289 335//3289 319//3289 +f 319//3290 335//3290 313//3290 +f 1339//3291 421//3291 423//3291 +f 1324//3292 423//3292 435//3292 +f 1324//3293 1339//3293 423//3293 +f 1325//3294 435//3294 401//3294 +f 1325//3295 1324//3295 435//3295 +f 1345//3296 401//3296 400//3296 +f 1345//3297 1325//3297 401//3297 +f 1334//3298 417//3298 453//3298 +f 1334//3299 400//3299 417//3299 +f 1334//3300 1345//3300 400//3300 +g BullDogClip008 (Meshed) +f 1633//3301 1634//3301 1635//3301 +f 1636//3302 1635//3302 1637//3302 +f 1636//3303 1633//3303 1635//3303 +f 1638//3304 1637//3304 1639//3304 +f 1638//3305 1636//3305 1637//3305 +f 1640//3306 1638//3306 1639//3306 +f 1641//3307 1642//3307 1643//3307 +f 1644//3308 1645//3308 1646//3308 +f 1647//3309 1648//3309 1649//3309 +f 1650//3310 1651//3310 1642//3310 +f 1647//3311 1652//3311 1648//3311 +f 1650//3312 1653//3312 1651//3312 +f 1653//3313 1654//3313 1651//3313 +f 1655//3314 1656//3314 1654//3314 +f 1657//3315 1656//3315 1655//3315 +f 1656//3316 1658//3316 1654//3316 +f 1654//3317 1659//3317 1651//3317 +f 1658//3318 1659//3318 1654//3318 +f 1660//3319 1661//3319 1658//3319 +f 1652//3320 1661//3320 1662//3320 +f 1661//3321 1663//3321 1658//3321 +f 1658//3322 1663//3322 1659//3322 +f 1660//3323 1662//3323 1661//3323 +f 1662//3324 1664//3324 1652//3324 +f 1664//3325 1648//3325 1652//3325 +f 1665//3326 1645//3326 1644//3326 +f 1645//3327 1666//3327 1646//3327 +f 1666//3328 1657//3328 1667//3328 +f 1667//3329 1657//3329 1655//3329 +f 1667//3330 1646//3330 1666//3330 +f 1668//3331 1641//3331 1643//3331 +f 1641//3332 1650//3332 1642//3332 +f 1669//3333 1670//3333 1671//3333 +f 1671//3334 1670//3334 1672//3334 +f 1672//3335 1673//3335 1674//3335 +f 1670//3336 1673//3336 1672//3336 +f 1674//3337 1675//3337 1676//3337 +f 1673//3338 1675//3338 1674//3338 +f 1677//3339 1678//3339 1679//3339 +f 1677//3340 1680//3340 1678//3340 +f 1681//3341 1682//3341 1683//3341 +f 1684//3342 1685//3342 1686//3342 +f 1681//3343 1687//3343 1682//3343 +f 1684//3344 1686//3344 1680//3344 +f 1688//3345 1689//3345 1690//3345 +f 1688//3346 1690//3346 1687//3346 +f 1691//3347 1692//3347 1693//3347 +f 1691//3348 1694//3348 1695//3348 +f 1696//3349 1689//3349 1688//3349 +f 1696//3350 1687//3350 1681//3350 +f 1691//3351 1695//3351 1692//3351 +f 1696//3352 1688//3352 1687//3352 +f 1697//3353 1698//3353 1699//3353 +f 1697//3354 1700//3354 1698//3354 +f 1701//3355 1679//3355 1702//3355 +f 1701//3356 1677//3356 1679//3356 +f 1697//3357 1683//3357 1703//3357 +f 1697//3358 1703//3358 1700//3358 +f 1704//3359 1697//3359 1699//3359 +f 1705//3360 1706//3360 1707//3360 +f 1704//3361 1681//3361 1683//3361 +f 1705//3362 1707//3362 1708//3362 +f 1704//3363 1683//3363 1697//3363 +f 1709//3364 1699//3364 1710//3364 +f 1709//3365 1710//3365 1689//3365 +f 1709//3366 1689//3366 1696//3366 +f 1709//3367 1696//3367 1681//3367 +f 1709//3368 1704//3368 1699//3368 +f 1711//3369 1684//3369 1680//3369 +f 1709//3370 1681//3370 1704//3370 +f 1711//3371 1680//3371 1677//3371 +f 1712//3372 1708//3372 1685//3372 +f 1712//3373 1705//3373 1708//3373 +f 1713//3374 1677//3374 1701//3374 +f 1713//3375 1711//3375 1677//3375 +f 1714//3376 1693//3376 1715//3376 +f 1714//3377 1702//3377 1694//3377 +f 1714//3378 1691//3378 1693//3378 +f 1714//3379 1694//3379 1691//3379 +f 1716//3380 1685//3380 1684//3380 +f 1716//3381 1712//3381 1685//3381 +f 1717//3382 1716//3382 1684//3382 +f 1717//3383 1684//3383 1711//3383 +f 1718//3384 1702//3384 1714//3384 +f 1718//3385 1701//3385 1702//3385 +f 1718//3386 1714//3386 1715//3386 +f 1719//3387 1706//3387 1705//3387 +f 1720//3388 1721//3388 1722//3388 +f 1719//3389 1723//3389 1706//3389 +f 1720//3390 1724//3390 1721//3390 +f 1725//3391 1717//3391 1711//3391 +f 1725//3392 1711//3392 1713//3392 +f 1726//3393 1727//3393 1724//3393 +f 1728//3394 1705//3394 1712//3394 +f 1695//3395 1726//3395 1724//3395 +f 1728//3396 1719//3396 1705//3396 +f 1695//3397 1724//3397 1720//3397 +f 1729//3398 1730//3398 1723//3398 +f 1729//3399 1723//3399 1719//3399 +f 1731//3400 1732//3400 1727//3400 +f 1733//3401 1734//3401 1725//3401 +f 1733//3402 1713//3402 1701//3402 +f 1733//3403 1715//3403 1734//3403 +f 1733//3404 1701//3404 1718//3404 +f 1733//3405 1718//3405 1715//3405 +f 1733//3406 1725//3406 1713//3406 +f 1735//3407 1727//3407 1726//3407 +f 1736//3408 1719//3408 1728//3408 +f 1736//3409 1729//3409 1719//3409 +f 1736//3410 1730//3410 1729//3410 +f 1694//3411 1726//3411 1695//3411 +f 1694//3412 1735//3412 1726//3412 +f 1737//3413 1712//3413 1716//3413 +f 1737//3414 1728//3414 1712//3414 +f 1738//3415 1739//3415 1732//3415 +f 1738//3416 1707//3416 1739//3416 +f 1740//3417 1736//3417 1728//3417 +f 1740//3418 1728//3418 1737//3418 +f 1686//3419 1738//3419 1732//3419 +f 1741//3420 1716//3420 1717//3420 +f 1741//3421 1737//3421 1716//3421 +f 1686//3422 1732//3422 1731//3422 +f 1742//3423 1725//3423 1734//3423 +f 1678//3424 1727//3424 1735//3424 +f 1742//3425 1717//3425 1725//3425 +f 1742//3426 1741//3426 1717//3426 +f 1678//3427 1731//3427 1727//3427 +f 1708//3428 1707//3428 1738//3428 +f 1743//3429 1740//3429 1737//3429 +f 1743//3430 1737//3430 1741//3430 +f 1685//3431 1738//3431 1686//3431 +f 1703//3432 1741//3432 1742//3432 +f 1703//3433 1743//3433 1741//3433 +f 1685//3434 1708//3434 1738//3434 +f 1744//3435 1730//3435 1736//3435 +f 1744//3436 1736//3436 1740//3436 +f 1679//3437 1678//3437 1735//3437 +f 1682//3438 1740//3438 1743//3438 +f 1702//3439 1735//3439 1694//3439 +f 1682//3440 1744//3440 1740//3440 +f 1702//3441 1679//3441 1735//3441 +f 1683//3442 1743//3442 1703//3442 +f 1680//3443 1686//3443 1731//3443 +f 1680//3444 1731//3444 1678//3444 +f 1683//3445 1682//3445 1743//3445 +f 1745//3446 1690//3446 1730//3446 +f 1745//3447 1730//3447 1744//3447 +f 1692//3448 1722//3448 1693//3448 +f 1692//3449 1695//3449 1720//3449 +f 1687//3450 1690//3450 1745//3450 +f 1687//3451 1744//3451 1682//3451 +f 1692//3452 1720//3452 1722//3452 +f 1706//3453 1723//3453 1746//3453 +f 1706//3454 1746//3454 1739//3454 +f 1706//3455 1739//3455 1707//3455 +f 1687//3456 1745//3456 1744//3456 +f 1700//3457 1734//3457 1698//3457 +f 1700//3458 1742//3458 1734//3458 +f 1700//3459 1703//3459 1742//3459 +f 1747//3460 1748//3460 1749//3460 +f 1747//3461 1750//3461 1748//3461 +f 1751//3462 1752//3462 1750//3462 +f 1751//3463 1750//3463 1747//3463 +f 1753//3464 1754//3464 1755//3464 +f 1753//3465 1755//3465 1752//3465 +f 1753//3466 1752//3466 1751//3466 +f 1756//3467 1757//3467 1754//3467 +f 1756//3468 1754//3468 1753//3468 +f 1758//3469 1759//3469 1757//3469 +f 1758//3470 1757//3470 1756//3470 +f 1760//3471 1759//3471 1758//3471 +f 1761//3472 1762//3472 1763//3472 +f 1764//3473 1765//3473 1762//3473 +f 1764//3474 1762//3474 1761//3474 +f 1766//3475 1767//3475 1765//3475 +f 1766//3476 1765//3476 1764//3476 +f 1768//3477 1767//3477 1766//3477 +f 1769//3478 1770//3478 1767//3478 +f 1769//3479 1767//3479 1768//3479 +f 1771//3480 1772//3480 1770//3480 +f 1771//3481 1770//3481 1769//3481 +f 1773//3482 1774//3482 1772//3482 +f 1773//3483 1772//3483 1771//3483 +f 1775//3484 1776//3484 1777//3484 +f 1775//3485 1778//3485 1776//3485 +f 1779//3486 1780//3486 1781//3486 +f 1779//3487 1781//3487 1782//3487 +f 1783//3488 1777//3488 1784//3488 +f 1783//3489 1775//3489 1777//3489 +f 1785//3490 1782//3490 1778//3490 +f 1785//3491 1779//3491 1782//3491 +f 1786//3492 1784//3492 1787//3492 +f 1786//3493 1783//3493 1784//3493 +f 1788//3494 1780//3494 1779//3494 +f 1789//3495 1785//3495 1778//3495 +f 1789//3496 1778//3496 1775//3496 +f 1790//3497 1788//3497 1779//3497 +f 1790//3498 1779//3498 1785//3498 +f 1791//3499 1786//3499 1787//3499 +f 1791//3500 1792//3500 1793//3500 +f 1791//3501 1793//3501 1794//3501 +f 1791//3502 1787//3502 1792//3502 +f 1795//3503 1790//3503 1785//3503 +f 1795//3504 1785//3504 1789//3504 +f 1796//3505 1780//3505 1788//3505 +f 1796//3506 1797//3506 1780//3506 +f 1798//3507 1796//3507 1788//3507 +f 1798//3508 1788//3508 1790//3508 +f 1799//3509 1789//3509 1775//3509 +f 1800//3510 1801//3510 1802//3510 +f 1799//3511 1775//3511 1783//3511 +f 1800//3512 1803//3512 1801//3512 +f 1804//3513 1783//3513 1786//3513 +f 1805//3514 1802//3514 1806//3514 +f 1804//3515 1799//3515 1783//3515 +f 1805//3516 1800//3516 1802//3516 +f 1807//3517 1790//3517 1795//3517 +f 1807//3518 1798//3518 1790//3518 +f 1808//3519 1803//3519 1800//3519 +f 1809//3520 1806//3520 1810//3520 +f 1811//3521 1795//3521 1789//3521 +f 1809//3522 1805//3522 1806//3522 +f 1811//3523 1789//3523 1799//3523 +f 1809//3524 1800//3524 1805//3524 +f 1809//3525 1808//3525 1800//3525 +f 1812//3526 1794//3526 1813//3526 +f 1814//3527 1815//3527 1803//3527 +f 1812//3528 1799//3528 1804//3528 +f 1814//3529 1803//3529 1808//3529 +f 1812//3530 1811//3530 1799//3530 +f 1816//3531 1791//3531 1794//3531 +f 1816//3532 1812//3532 1804//3532 +f 1816//3533 1786//3533 1791//3533 +f 1817//3534 1808//3534 1809//3534 +f 1816//3535 1794//3535 1812//3535 +f 1817//3536 1814//3536 1808//3536 +f 1816//3537 1804//3537 1786//3537 +f 1818//3538 1797//3538 1796//3538 +f 1819//3539 1817//3539 1809//3539 +f 1819//3540 1809//3540 1810//3540 +f 1820//3541 1818//3541 1796//3541 +f 1821//3542 1815//3542 1814//3542 +f 1820//3543 1796//3543 1798//3543 +f 1822//3544 1795//3544 1811//3544 +f 1822//3545 1807//3545 1795//3545 +f 1822//3546 1812//3546 1813//3546 +f 1823//3547 1814//3547 1817//3547 +f 1822//3548 1811//3548 1812//3548 +f 1824//3549 1797//3549 1818//3549 +f 1823//3550 1821//3550 1814//3550 +f 1825//3551 1781//3551 1815//3551 +f 1826//3552 1827//3552 1828//3552 +f 1825//3553 1815//3553 1821//3553 +f 1826//3554 1818//3554 1820//3554 +f 1826//3555 1824//3555 1818//3555 +f 1829//3556 1813//3556 1827//3556 +f 1829//3557 1807//3557 1822//3557 +f 1829//3558 1798//3558 1807//3558 +f 1829//3559 1820//3559 1798//3559 +f 1776//3560 1821//3560 1823//3560 +f 1829//3561 1827//3561 1826//3561 +f 1776//3562 1825//3562 1821//3562 +f 1829//3563 1826//3563 1820//3563 +f 1829//3564 1822//3564 1813//3564 +f 1830//3565 1828//3565 1831//3565 +f 1832//3566 1817//3566 1819//3566 +f 1830//3567 1831//3567 1833//3567 +f 1832//3568 1823//3568 1817//3568 +f 1830//3569 1833//3569 1797//3569 +f 1830//3570 1797//3570 1824//3570 +f 1830//3571 1824//3571 1826//3571 +f 1830//3572 1826//3572 1828//3572 +f 1777//3573 1776//3573 1823//3573 +f 1777//3574 1823//3574 1832//3574 +f 1834//3575 1819//3575 1810//3575 +f 1834//3576 1832//3576 1819//3576 +f 1835//3577 1810//3577 1792//3577 +f 1835//3578 1834//3578 1810//3578 +f 1784//3579 1777//3579 1832//3579 +f 1784//3580 1832//3580 1834//3580 +f 1782//3581 1781//3581 1825//3581 +f 1787//3582 1835//3582 1792//3582 +f 1787//3583 1834//3583 1835//3583 +f 1787//3584 1784//3584 1834//3584 +f 1778//3585 1782//3585 1825//3585 +f 1778//3586 1825//3586 1776//3586 +f 1836//3587 1837//3587 1838//3587 +f 1839//3588 1840//3588 1841//3588 +f 1839//3589 1841//3589 1842//3589 +f 1839//3590 1843//3590 1840//3590 +f 1844//3591 1842//3591 1845//3591 +f 1844//3592 1843//3592 1839//3592 +f 1844//3593 1839//3593 1842//3593 +f 1846//3594 1847//3594 1843//3594 +f 1846//3595 1844//3595 1845//3595 +f 1846//3596 1843//3596 1844//3596 +f 1848//3597 1845//3597 1849//3597 +f 1848//3598 1846//3598 1845//3598 +f 1848//3599 1847//3599 1846//3599 +f 1850//3600 1838//3600 1847//3600 +f 1850//3601 1848//3601 1849//3601 +f 1850//3602 1847//3602 1848//3602 +f 1851//3603 1849//3603 1836//3603 +f 1851//3604 1838//3604 1850//3604 +f 1851//3605 1850//3605 1849//3605 +f 1851//3606 1836//3606 1838//3606 +f 1852//3607 1836//3607 1853//3607 +f 1852//3608 1837//3608 1836//3608 +f 1854//3609 1837//3609 1852//3609 +f 1854//3610 1852//3610 1853//3610 +f 1855//3611 1853//3611 1856//3611 +f 1855//3612 1857//3612 1837//3612 +f 1855//3613 1854//3613 1853//3613 +f 1855//3614 1837//3614 1854//3614 +f 1858//3615 1856//3615 1859//3615 +f 1858//3616 1859//3616 1860//3616 +f 1858//3617 1860//3617 1861//3617 +f 1858//3618 1861//3618 1857//3618 +f 1858//3619 1855//3619 1856//3619 +f 1858//3620 1857//3620 1855//3620 +f 1862//3621 1863//3621 1864//3621 +f 1865//3622 1866//3622 1867//3622 +f 1865//3623 1867//3623 1868//3623 +f 1865//3624 1869//3624 1870//3624 +f 1865//3625 1870//3625 1866//3625 +f 1871//3626 1868//3626 1864//3626 +f 1871//3627 1872//3627 1869//3627 +f 1871//3628 1869//3628 1865//3628 +f 1871//3629 1865//3629 1868//3629 +f 1873//3630 1871//3630 1864//3630 +f 1873//3631 1872//3631 1871//3631 +f 1874//3632 1863//3632 1872//3632 +f 1874//3633 1872//3633 1873//3633 +f 1874//3634 1873//3634 1864//3634 +f 1874//3635 1864//3635 1863//3635 +f 1875//3636 1862//3636 1876//3636 +f 1875//3637 1877//3637 1863//3637 +f 1875//3638 1863//3638 1862//3638 +f 1878//3639 1879//3639 1877//3639 +f 1878//3640 1875//3640 1876//3640 +f 1878//3641 1877//3641 1875//3641 +f 1880//3642 1876//3642 1881//3642 +f 1880//3643 1878//3643 1876//3643 +f 1880//3644 1879//3644 1878//3644 +f 1882//3645 1883//3645 1879//3645 +f 1882//3646 1880//3646 1881//3646 +f 1882//3647 1879//3647 1880//3647 +f 1884//3648 1881//3648 1885//3648 +f 1884//3649 1885//3649 1886//3649 +f 1884//3650 1886//3650 1883//3650 +f 1884//3651 1883//3651 1882//3651 +f 1884//3652 1882//3652 1881//3652 +f 1887//3653 1888//3653 1889//3653 +f 1887//3654 1889//3654 1890//3654 +f 1891//3655 1890//3655 1892//3655 +f 1891//3656 1887//3656 1890//3656 +f 1893//3657 1891//3657 1892//3657 +f 1894//3658 1891//3658 1893//3658 +f 1895//3659 1894//3659 1893//3659 +f 1896//3660 1894//3660 1895//3660 +f 1897//3661 1895//3661 1898//3661 +f 1897//3662 1896//3662 1895//3662 +f 1899//3663 1900//3663 1901//3663 +f 1900//3664 1902//3664 1901//3664 +f 1900//3665 1903//3665 1902//3665 +f 1793//3666 1792//3666 1739//3666 +f 1904//3667 1905//3667 1902//3667 +f 1906//3668 1907//3668 1908//3668 +f 1721//3669 1909//3669 1905//3669 +f 1905//3670 1909//3670 1902//3670 +f 1727//3671 1806//3671 1724//3671 +f 1907//3672 1910//3672 1911//3672 +f 1724//3673 1802//3673 1721//3673 +f 1806//3674 1802//3674 1724//3674 +f 1910//3675 1912//3675 1802//3675 +f 1721//3676 1912//3676 1909//3676 +f 1802//3677 1912//3677 1721//3677 +f 1907//3678 1912//3678 1910//3678 +f 1909//3679 1913//3679 1914//3679 +f 1912//3680 1913//3680 1909//3680 +f 1913//3681 1915//3681 1914//3681 +f 1913//3682 1916//3682 1915//3682 +f 1916//3683 1917//3683 1915//3683 +f 1916//3684 1918//3684 1917//3684 +f 1792//3685 1810//3685 1732//3685 +f 1739//3686 1746//3686 1793//3686 +f 1732//3687 1739//3687 1792//3687 +f 1727//3688 1732//3688 1810//3688 +f 1727//3689 1810//3689 1806//3689 +f 1903//3690 1904//3690 1902//3690 +f 1908//3691 1919//3691 1906//3691 +f 1911//3692 1908//3692 1907//3692 +f 1920//3693 1662//3693 1660//3693 +f 1921//3694 1922//3694 1923//3694 +f 1920//3695 1660//3695 1924//3695 +f 1921//3696 1925//3696 1922//3696 +f 1920//3697 1926//3697 1927//3697 +f 1928//3698 1929//3698 1930//3698 +f 1920//3699 1924//3699 1926//3699 +f 1928//3700 1931//3700 1929//3700 +f 1932//3701 1664//3701 1662//3701 +f 1932//3702 1933//3702 1934//3702 +f 1932//3703 1935//3703 1664//3703 +f 1932//3704 1934//3704 1935//3704 +f 1932//3705 1927//3705 1933//3705 +f 1936//3706 1923//3706 1931//3706 +f 1932//3707 1662//3707 1920//3707 +f 1936//3708 1921//3708 1923//3708 +f 1932//3709 1920//3709 1927//3709 +f 1937//3710 1658//3710 1938//3710 +f 1937//3711 1660//3711 1658//3711 +f 1939//3712 1930//3712 1649//3712 +f 1937//3713 1924//3713 1660//3713 +f 1939//3714 1928//3714 1930//3714 +f 1937//3715 1938//3715 1940//3715 +f 1939//3716 1931//3716 1928//3716 +f 1937//3717 1940//3717 1941//3717 +f 1937//3718 1941//3718 1924//3718 +f 1939//3719 1936//3719 1931//3719 +f 1942//3720 1943//3720 1944//3720 +f 1942//3721 1944//3721 1945//3721 +f 1946//3722 1942//3722 1945//3722 +f 1946//3723 1945//3723 1925//3723 +f 1947//3724 1948//3724 1949//3724 +f 1947//3725 1949//3725 1950//3725 +f 1951//3726 1946//3726 1925//3726 +f 1951//3727 1925//3727 1921//3727 +f 1952//3728 1951//3728 1921//3728 +f 1952//3729 1921//3729 1936//3729 +f 1953//3730 1952//3730 1936//3730 +f 1953//3731 1936//3731 1939//3731 +f 1954//3732 1948//3732 1947//3732 +f 1955//3733 1943//3733 1942//3733 +f 1955//3734 1956//3734 1943//3734 +f 1957//3735 1958//3735 1959//3735 +f 1960//3736 1956//3736 1955//3736 +f 1960//3737 1950//3737 1956//3737 +f 1961//3738 1958//3738 1957//3738 +f 1962//3739 1955//3739 1942//3739 +f 1963//3740 1959//3740 1964//3740 +f 1962//3741 1942//3741 1946//3741 +f 1963//3742 1964//3742 1965//3742 +f 1963//3743 1957//3743 1959//3743 +f 1941//3744 1948//3744 1954//3744 +f 1966//3745 1967//3745 1958//3745 +f 1968//3746 1960//3746 1955//3746 +f 1968//3747 1955//3747 1962//3747 +f 1966//3748 1958//3748 1961//3748 +f 1969//3749 1953//3749 1939//3749 +f 1944//3750 1967//3750 1966//3750 +f 1969//3751 1939//3751 1649//3751 +f 1970//3752 1946//3752 1951//3752 +f 1971//3753 1957//3753 1963//3753 +f 1970//3754 1962//3754 1946//3754 +f 1972//3755 1965//3755 1929//3755 +f 1972//3756 1963//3756 1965//3756 +f 1973//3757 1968//3757 1962//3757 +f 1972//3758 1971//3758 1963//3758 +f 1973//3759 1962//3759 1970//3759 +f 1974//3760 1951//3760 1952//3760 +f 1975//3761 1961//3761 1957//3761 +f 1974//3762 1970//3762 1951//3762 +f 1975//3763 1957//3763 1971//3763 +f 1976//3764 1971//3764 1972//3764 +f 1977//3765 1973//3765 1970//3765 +f 1976//3766 1975//3766 1971//3766 +f 1977//3767 1970//3767 1974//3767 +f 1978//3768 1952//3768 1953//3768 +f 1978//3769 1974//3769 1952//3769 +f 1979//3770 1972//3770 1929//3770 +f 1979//3771 1976//3771 1972//3771 +f 1943//3772 1949//3772 1967//3772 +f 1980//3773 1648//3773 1664//3773 +f 1980//3774 1974//3774 1978//3774 +f 1943//3775 1967//3775 1944//3775 +f 1980//3776 1977//3776 1974//3776 +f 1940//3777 1938//3777 1948//3777 +f 1981//3778 1961//3778 1975//3778 +f 1981//3779 1966//3779 1961//3779 +f 1940//3780 1948//3780 1941//3780 +f 1982//3781 1947//3781 1950//3781 +f 1982//3782 1950//3782 1960//3782 +f 1933//3783 1982//3783 1960//3783 +f 1922//3784 1975//3784 1976//3784 +f 1922//3785 1981//3785 1975//3785 +f 1933//3786 1960//3786 1968//3786 +f 1945//3787 1944//3787 1966//3787 +f 1983//3788 1649//3788 1648//3788 +f 1945//3789 1966//3789 1981//3789 +f 1983//3790 1953//3790 1969//3790 +f 1983//3791 1969//3791 1649//3791 +f 1983//3792 1978//3792 1953//3792 +f 1983//3793 1648//3793 1980//3793 +f 1983//3794 1980//3794 1978//3794 +f 1923//3795 1976//3795 1979//3795 +f 1934//3796 1968//3796 1973//3796 +f 1923//3797 1922//3797 1976//3797 +f 1934//3798 1933//3798 1968//3798 +f 1935//3799 1973//3799 1977//3799 +f 1935//3800 1980//3800 1664//3800 +f 1956//3801 1949//3801 1943//3801 +f 1935//3802 1977//3802 1980//3802 +f 1935//3803 1934//3803 1973//3803 +f 1925//3804 1981//3804 1922//3804 +f 1926//3805 1954//3805 1947//3805 +f 1925//3806 1945//3806 1981//3806 +f 1926//3807 1947//3807 1982//3807 +f 1927//3808 1982//3808 1933//3808 +f 1950//3809 1949//3809 1956//3809 +f 1927//3810 1926//3810 1982//3810 +f 1931//3811 1923//3811 1979//3811 +f 1924//3812 1941//3812 1954//3812 +f 1931//3813 1979//3813 1929//3813 +f 1924//3814 1954//3814 1926//3814 +f 1984//3815 1985//3815 1986//3815 +f 1984//3816 1986//3816 1987//3816 +f 1988//3817 1989//3817 1985//3817 +f 1988//3818 1985//3818 1984//3818 +f 1990//3819 1989//3819 1988//3819 +f 1990//3820 1991//3820 1989//3820 +f 1992//3821 1993//3821 1994//3821 +f 1992//3822 1995//3822 1993//3822 +f 1992//3823 1987//3823 1995//3823 +f 1996//3824 1997//3824 1998//3824 +f 1996//3825 1998//3825 1991//3825 +f 1996//3826 1991//3826 1990//3826 +f 1999//3827 1984//3827 1987//3827 +f 1999//3828 1992//3828 1994//3828 +f 1999//3829 1987//3829 1992//3829 +f 2000//3830 1994//3830 2001//3830 +f 2000//3831 1999//3831 1994//3831 +f 2000//3832 1984//3832 1999//3832 +f 2000//3833 1988//3833 1984//3833 +f 2002//3834 2001//3834 2003//3834 +f 2002//3835 1990//3835 1988//3835 +f 2002//3836 2000//3836 2001//3836 +f 2002//3837 1988//3837 2000//3837 +f 2004//3838 2005//3838 1997//3838 +f 2004//3839 2003//3839 2005//3839 +f 2004//3840 1997//3840 1996//3840 +f 2004//3841 1996//3841 1990//3841 +f 2004//3842 2002//3842 2003//3842 +f 2004//3843 1990//3843 2002//3843 +f 2006//3844 2007//3844 2008//3844 +f 2009//3845 2010//3845 2007//3845 +f 2009//3846 2007//3846 2006//3846 +f 2011//3847 2012//3847 2010//3847 +f 2011//3848 2010//3848 2009//3848 +f 2013//3849 2014//3849 2012//3849 +f 2013//3850 2012//3850 2011//3850 +f 1986//3851 2008//3851 1995//3851 +f 1986//3852 2006//3852 2008//3852 +f 2015//3853 2016//3853 2017//3853 +f 2015//3854 2017//3854 2014//3854 +f 2015//3855 2014//3855 2013//3855 +f 1985//3856 2006//3856 1986//3856 +f 1985//3857 2009//3857 2006//3857 +f 1989//3858 2011//3858 2009//3858 +f 1989//3859 2009//3859 1985//3859 +f 1991//3860 2013//3860 2011//3860 +f 1991//3861 2011//3861 1989//3861 +f 1987//3862 1986//3862 1995//3862 +f 1998//3863 1997//3863 2016//3863 +f 1998//3864 2016//3864 2015//3864 +f 1998//3865 2015//3865 2013//3865 +f 1998//3866 2013//3866 1991//3866 +f 2018//3867 2019//3867 2020//3867 +f 2018//3868 2020//3868 2021//3868 +f 2022//3869 2019//3869 2018//3869 +f 2022//3870 2023//3870 2019//3870 +f 2024//3871 2025//3871 2023//3871 +f 2024//3872 2023//3872 2022//3872 +f 2026//3873 2027//3873 2028//3873 +f 2026//3874 2021//3874 2027//3874 +f 2029//3875 2030//3875 2031//3875 +f 2029//3876 2031//3876 2032//3876 +f 2029//3877 2032//3877 2025//3877 +f 2029//3878 2025//3878 2024//3878 +f 2033//3879 2028//3879 2034//3879 +f 2033//3880 2018//3880 2021//3880 +f 2033//3881 2026//3881 2028//3881 +f 2033//3882 2021//3882 2026//3882 +f 2035//3883 2034//3883 2036//3883 +f 2035//3884 2018//3884 2033//3884 +f 2035//3885 2022//3885 2018//3885 +f 2035//3886 2033//3886 2034//3886 +f 2037//3887 2036//3887 2038//3887 +f 2037//3888 2035//3888 2036//3888 +f 2037//3889 2024//3889 2022//3889 +f 2037//3890 2022//3890 2035//3890 +f 2039//3891 2040//3891 2030//3891 +f 2039//3892 2038//3892 2040//3892 +f 2039//3893 2030//3893 2029//3893 +f 2039//3894 2029//3894 2024//3894 +f 2039//3895 2037//3895 2038//3895 +f 2039//3896 2024//3896 2037//3896 +f 2041//3897 2042//3897 2043//3897 +f 2044//3898 2045//3898 2042//3898 +f 2044//3899 2042//3899 2041//3899 +f 2046//3900 2047//3900 2045//3900 +f 2046//3901 2045//3901 2044//3901 +f 2048//3902 2049//3902 2047//3902 +f 2048//3903 2047//3903 2046//3903 +f 2020//3904 2041//3904 2043//3904 +f 2050//3905 2031//3905 2051//3905 +f 2050//3906 2051//3906 2049//3906 +f 2050//3907 2049//3907 2048//3907 +f 2019//3908 2041//3908 2020//3908 +f 2019//3909 2044//3909 2041//3909 +f 2023//3910 2046//3910 2044//3910 +f 2023//3911 2044//3911 2019//3911 +f 2025//3912 2048//3912 2046//3912 +f 2025//3913 2046//3913 2023//3913 +f 2021//3914 2043//3914 2027//3914 +f 2021//3915 2020//3915 2043//3915 +f 2032//3916 2031//3916 2050//3916 +f 2032//3917 2050//3917 2048//3917 +f 2032//3918 2048//3918 2025//3918 +f 2052//3919 2053//3919 2054//3919 +f 2052//3920 2055//3920 2053//3920 +f 2056//3921 2052//3921 2054//3921 +f 2056//3922 2054//3922 2057//3922 +f 2058//3923 1641//3923 1668//3923 +f 2058//3924 1668//3924 2059//3924 +f 2058//3925 2059//3925 2060//3925 +f 2061//3926 2062//3926 2063//3926 +f 2061//3927 2064//3927 2062//3927 +f 2061//3928 2057//3928 2064//3928 +f 2061//3929 2056//3929 2057//3929 +f 2065//3930 2058//3930 2060//3930 +f 2065//3931 2060//3931 2066//3931 +f 2067//3932 2065//3932 2066//3932 +f 2067//3933 2066//3933 2055//3933 +f 2068//3934 2055//3934 2052//3934 +f 2068//3935 2067//3935 2055//3935 +f 2069//3936 2052//3936 2056//3936 +f 2069//3937 2068//3937 2052//3937 +f 2070//3938 2069//3938 2056//3938 +f 2070//3939 2061//3939 2063//3939 +f 2070//3940 2056//3940 2061//3940 +f 2071//3941 1641//3941 2058//3941 +f 2071//3942 2058//3942 2065//3942 +f 2072//3943 1650//3943 1641//3943 +f 2072//3944 1641//3944 2071//3944 +f 2073//3945 2071//3945 2065//3945 +f 2073//3946 2065//3946 2067//3946 +f 2074//3947 2075//3947 2076//3947 +f 2074//3948 2076//3948 2077//3948 +f 2078//3949 2072//3949 2071//3949 +f 2074//3950 2077//3950 2079//3950 +f 2078//3951 2071//3951 2073//3951 +f 2080//3952 2081//3952 2075//3952 +f 2078//3953 1650//3953 2072//3953 +f 2082//3954 2073//3954 2067//3954 +f 2082//3955 2067//3955 2068//3955 +f 2083//3956 2078//3956 2073//3956 +f 2084//3957 2081//3957 2080//3957 +f 2083//3958 2073//3958 2082//3958 +f 2085//3959 2075//3959 2074//3959 +f 2085//3960 2080//3960 2075//3960 +f 2086//3961 2068//3961 2069//3961 +f 2085//3962 2074//3962 2079//3962 +f 2087//3963 2084//3963 2080//3963 +f 2086//3964 2082//3964 2068//3964 +f 2087//3965 2085//3965 2079//3965 +f 2087//3966 2080//3966 2085//3966 +f 2088//3967 2069//3967 2070//3967 +f 2089//3968 2090//3968 2081//3968 +f 2088//3969 2070//3969 2063//3969 +f 2088//3970 2063//3970 2091//3970 +f 2088//3971 2086//3971 2069//3971 +f 2092//3972 2059//3972 2090//3972 +f 2093//3973 2083//3973 2082//3973 +f 2093//3974 2082//3974 2086//3974 +f 2094//3975 2088//3975 2091//3975 +f 2095//3976 2089//3976 2081//3976 +f 2094//3977 2086//3977 2088//3977 +f 2094//3978 2093//3978 2086//3978 +f 2096//3979 1650//3979 2078//3979 +f 2053//3980 2092//3980 2090//3980 +f 2096//3981 2078//3981 2083//3981 +f 2053//3982 2090//3982 2089//3982 +f 2060//3983 2059//3983 2092//3983 +f 2097//3984 2096//3984 2083//3984 +f 2097//3985 2083//3985 2093//3985 +f 2098//3986 2081//3986 2084//3986 +f 2098//3987 2095//3987 2081//3987 +f 2099//3988 2091//3988 2100//3988 +f 2099//3989 2093//3989 2094//3989 +f 2099//3990 2097//3990 2093//3990 +f 2101//3991 2079//3991 2062//3991 +f 2101//3992 2084//3992 2087//3992 +f 2099//3993 2094//3993 2091//3993 +f 2102//3994 1653//3994 1650//3994 +f 2101//3995 2098//3995 2084//3995 +f 2102//3996 1650//3996 2096//3996 +f 2101//3997 2087//3997 2079//3997 +f 2102//3998 2096//3998 2097//3998 +f 2103//3999 2099//3999 2100//3999 +f 2054//4000 2089//4000 2095//4000 +f 2103//4001 2097//4001 2099//4001 +f 2054//4002 2053//4002 2089//4002 +f 2103//4003 2102//4003 2097//4003 +f 2104//4004 2105//4004 1654//4004 +f 2104//4005 1654//4005 1653//4005 +f 2104//4006 2100//4006 2105//4006 +f 2104//4007 1653//4007 2102//4007 +f 2104//4008 2103//4008 2100//4008 +f 2104//4009 2102//4009 2103//4009 +f 2066//4010 2060//4010 2092//4010 +f 2057//4011 2054//4011 2095//4011 +f 2057//4012 2095//4012 2098//4012 +f 2055//4013 2092//4013 2053//4013 +f 2055//4014 2066//4014 2092//4014 +f 2064//4015 2101//4015 2062//4015 +f 2064//4016 2098//4016 2101//4016 +f 2064//4017 2057//4017 2098//4017 +f 2106//4018 2107//4018 2108//4018 +f 2109//4019 2110//4019 2111//4019 +f 2109//4020 2111//4020 2112//4020 +f 2109//4021 2112//4021 2113//4021 +f 2114//4022 2115//4022 2110//4022 +f 2114//4023 2110//4023 2109//4023 +f 2114//4024 2109//4024 2113//4024 +f 2116//4025 2113//4025 2117//4025 +f 2116//4026 2114//4026 2113//4026 +f 2116//4027 2115//4027 2114//4027 +f 2118//4028 2119//4028 2115//4028 +f 2118//4029 2115//4029 2116//4029 +f 2118//4030 2116//4030 2117//4030 +f 2120//4031 2117//4031 2108//4031 +f 2120//4032 2118//4032 2117//4032 +f 2120//4033 2119//4033 2118//4033 +f 2121//4034 2107//4034 2119//4034 +f 2121//4035 2120//4035 2108//4035 +f 2121//4036 2108//4036 2107//4036 +f 2121//4037 2119//4037 2120//4037 +f 2122//4038 2123//4038 2107//4038 +f 2122//4039 2107//4039 2106//4039 +f 2124//4040 2123//4040 2122//4040 +f 2124//4041 2122//4041 2106//4041 +f 2125//4042 2126//4042 2123//4042 +f 2125//4043 2106//4043 2127//4043 +f 2125//4044 2123//4044 2124//4044 +f 2125//4045 2124//4045 2106//4045 +f 2128//4046 2129//4046 2130//4046 +f 2128//4047 2131//4047 2126//4047 +f 2128//4048 2130//4048 2131//4048 +f 2128//4049 2127//4049 2129//4049 +f 2128//4050 2126//4050 2125//4050 +f 2128//4051 2125//4051 2127//4051 +f 2132//4052 2133//4052 2134//4052 +f 2135//4053 2136//4053 2137//4053 +f 2135//4054 2137//4054 2138//4054 +f 2135//4055 2139//4055 2140//4055 +f 2135//4056 2138//4056 2139//4056 +f 2141//4057 2134//4057 2136//4057 +f 2141//4058 2140//4058 2142//4058 +f 2141//4059 2136//4059 2135//4059 +f 2141//4060 2135//4060 2140//4060 +f 2143//4061 2141//4061 2142//4061 +f 2143//4062 2134//4062 2141//4062 +f 2144//4063 2142//4063 2132//4063 +f 2144//4064 2143//4064 2142//4064 +f 2144//4065 2132//4065 2134//4065 +f 2144//4066 2134//4066 2143//4066 +f 2145//4067 2146//4067 2133//4067 +f 2145//4068 2132//4068 2147//4068 +f 2145//4069 2133//4069 2132//4069 +f 2148//4070 2147//4070 2149//4070 +f 2148//4071 2145//4071 2147//4071 +f 2148//4072 2146//4072 2145//4072 +f 2150//4073 2151//4073 2146//4073 +f 2150//4074 2146//4074 2148//4074 +f 2150//4075 2148//4075 2149//4075 +f 2152//4076 2149//4076 2153//4076 +f 2152//4077 2151//4077 2150//4077 +f 2152//4078 2150//4078 2149//4078 +f 2154//4079 2155//4079 2156//4079 +f 2154//4080 2156//4080 2151//4080 +f 2154//4081 2153//4081 2155//4081 +f 2154//4082 2151//4082 2152//4082 +f 2154//4083 2152//4083 2153//4083 +f 2157//4084 2158//4084 2107//4084 +f 2157//4085 2107//4085 2123//4085 +f 2159//4086 2160//4086 2161//4086 +f 2139//4087 2138//4087 2162//4087 +f 2163//4088 2155//4088 2164//4088 +f 2131//4089 2157//4089 2126//4089 +f 2140//4090 2139//4090 2162//4090 +f 2130//4091 2157//4091 2131//4091 +f 2130//4092 2159//4092 2161//4092 +f 2130//4093 2161//4093 2155//4093 +f 2165//4094 2138//4094 2111//4094 +f 2166//4095 2155//4095 2163//4095 +f 2165//4096 2162//4096 2138//4096 +f 2167//4097 2138//4097 2168//4097 +f 2167//4098 2111//4098 2138//4098 +f 2166//4099 2130//4099 2155//4099 +f 2166//4100 2157//4100 2130//4100 +f 1633//4101 2163//4101 1634//4101 +f 1633//4102 2166//4102 2163//4102 +f 2159//4103 2169//4103 2160//4103 +f 2169//4104 2170//4104 2171//4104 +f 2170//4105 2172//4105 2173//4105 +f 2172//4106 2174//4106 2175//4106 +f 2176//4107 2142//4107 2140//4107 +f 2174//4108 2177//4108 2178//4108 +f 2115//4109 2119//4109 2158//4109 +f 2119//4110 2107//4110 2158//4110 +f 2123//4111 2126//4111 2157//4111 +f 2168//4112 2178//4112 2177//4112 +f 2176//4113 2140//4113 2162//4113 +f 2178//4114 2175//4114 2174//4114 +f 2175//4115 2173//4115 2172//4115 +f 2173//4116 2171//4116 2170//4116 +f 2171//4117 2160//4117 2169//4117 +f 2153//4118 2149//4118 2164//4118 +f 2149//4119 2147//4119 2164//4119 +f 2110//4120 2165//4120 2111//4120 +f 2132//4121 2142//4121 2176//4121 +f 2177//4122 2167//4122 2168//4122 +f 2115//4123 2165//4123 2110//4123 +f 2147//4124 2132//4124 2176//4124 +f 2158//4125 2165//4125 2115//4125 +f 2164//4126 2147//4126 2176//4126 +f 2155//4127 2153//4127 2164//4127 +f 1676//4128 2076//4128 2179//4128 +f 1675//4129 2076//4129 1676//4129 +f 2076//4130 2075//4130 2179//4130 +f 2076//4131 1964//4131 2180//4131 +f 1675//4132 1964//4132 2076//4132 +f 2180//4133 2181//4133 2182//4133 +f 1964//4134 2181//4134 2180//4134 +f 2081//4135 2183//4135 2179//4135 +f 1964//4136 2184//4136 1965//4136 +f 1675//4137 2184//4137 1964//4137 +f 2184//4138 1929//4138 1965//4138 +f 2059//4139 1643//4139 2183//4139 +f 2184//4140 2185//4140 1929//4140 +f 2059//4141 1668//4141 1643//4141 +f 2186//4142 1665//4142 2187//4142 +f 2185//4143 1647//4143 1930//4143 +f 2075//4144 2081//4144 2179//4144 +f 2081//4145 2090//4145 2183//4145 +f 2090//4146 2059//4146 2183//4146 +f 1644//4147 2187//4147 1665//4147 +f 2187//4148 2188//4148 2186//4148 +f 2188//4149 2182//4149 2189//4149 +f 2189//4150 2182//4150 2181//4150 +f 2189//4151 2186//4151 2188//4151 +f 1649//4152 1930//4152 1647//4152 +f 1930//4153 1929//4153 2185//4153 +f 1659//4154 2190//4154 2191//4154 +f 1663//4155 2190//4155 1659//4155 +f 2191//4156 2192//4156 2193//4156 +f 2190//4157 2192//4157 2191//4157 +f 2193//4158 1669//4158 1671//4158 +f 2192//4159 1669//4159 2193//4159 +f 2194//4160 1640//4160 1639//4160 +f 2194//4161 1639//4161 2195//4161 +f 2196//4162 2195//4162 2197//4162 +f 2196//4163 2194//4163 2195//4163 +f 2198//4164 2197//4164 2199//4164 +f 2198//4165 2196//4165 2197//4165 +f 2200//4166 2201//4166 2202//4166 +f 2200//4167 2203//4167 2201//4167 +f 2204//4168 2202//4168 2205//4168 +f 2204//4169 2200//4169 2202//4169 +f 2206//4170 2205//4170 2207//4170 +f 2206//4171 2204//4171 2205//4171 +f 2208//4172 2209//4172 2210//4172 +f 2210//4173 2209//4173 2211//4173 +f 2211//4174 2212//4174 2213//4174 +f 2209//4175 2212//4175 2211//4175 +f 2213//4176 2214//4176 2215//4176 +f 2212//4177 2214//4177 2213//4177 +f 2199//4178 2215//4178 2214//4178 +f 2199//4179 2214//4179 2198//4179 +f 2207//4180 2162//4180 2165//4180 +f 2207//4181 2165//4181 2206//4181 +f 2173//4182 2216//4182 2217//4182 +f 2218//4183 2156//4183 2155//4183 +f 2218//4184 2161//4184 2160//4184 +f 2218//4185 2155//4185 2161//4185 +f 2218//4186 2219//4186 2156//4186 +f 2220//4187 2160//4187 2171//4187 +f 2220//4188 2217//4188 2219//4188 +f 2220//4189 2219//4189 2218//4189 +f 2220//4190 2218//4190 2160//4190 +f 2221//4191 2220//4191 2171//4191 +f 2221//4192 2217//4192 2220//4192 +f 2222//4193 2171//4193 2173//4193 +f 2222//4194 2221//4194 2171//4194 +f 2222//4195 2217//4195 2221//4195 +f 2222//4196 2173//4196 2217//4196 +f 2223//4197 2173//4197 2175//4197 +f 2223//4198 2224//4198 2216//4198 +f 2223//4199 2216//4199 2173//4199 +f 2225//4200 2175//4200 2178//4200 +f 2225//4201 2224//4201 2223//4201 +f 2225//4202 2223//4202 2175//4202 +f 2226//4203 2227//4203 2224//4203 +f 2226//4204 2225//4204 2178//4204 +f 2226//4205 2224//4205 2225//4205 +f 2228//4206 2178//4206 2168//4206 +f 2228//4207 2227//4207 2226//4207 +f 2228//4208 2226//4208 2178//4208 +f 2229//4209 2168//4209 2138//4209 +f 2229//4210 2138//4210 2137//4210 +f 2229//4211 2137//4211 2227//4211 +f 2229//4212 2228//4212 2168//4212 +f 2229//4213 2227//4213 2228//4213 +f 2230//4214 2172//4214 2231//4214 +f 2232//4215 2130//4215 2129//4215 +f 2232//4216 2129//4216 2233//4216 +f 2232//4217 2159//4217 2130//4217 +f 2234//4218 2169//4218 2159//4218 +f 2234//4219 2159//4219 2232//4219 +f 2234//4220 2232//4220 2233//4220 +f 2235//4221 2233//4221 2236//4221 +f 2235//4222 2234//4222 2233//4222 +f 2235//4223 2169//4223 2234//4223 +f 2237//4224 2170//4224 2169//4224 +f 2237//4225 2235//4225 2236//4225 +f 2237//4226 2169//4226 2235//4226 +f 2238//4227 2236//4227 2231//4227 +f 2238//4228 2237//4228 2236//4228 +f 2238//4229 2170//4229 2237//4229 +f 2239//4230 2172//4230 2170//4230 +f 2239//4231 2170//4231 2238//4231 +f 2239//4232 2238//4232 2231//4232 +f 2239//4233 2231//4233 2172//4233 +f 2240//4234 2174//4234 2172//4234 +f 2240//4235 2172//4235 2230//4235 +f 2241//4236 2240//4236 2230//4236 +f 2241//4237 2174//4237 2240//4237 +f 2242//4238 2230//4238 2243//4238 +f 2242//4239 2177//4239 2174//4239 +f 2242//4240 2174//4240 2241//4240 +f 2242//4241 2241//4241 2230//4241 +f 2244//4242 2243//4242 2112//4242 +f 2244//4243 2112//4243 2111//4243 +f 2244//4244 2167//4244 2177//4244 +f 2244//4245 2111//4245 2167//4245 +f 2244//4246 2177//4246 2242//4246 +f 2244//4247 2242//4247 2243//4247 +f 2245//4248 2246//4248 2247//4248 +f 2245//4249 2247//4249 2248//4249 +f 2249//4250 1646//4250 2250//4250 +f 2249//4251 2251//4251 1646//4251 +f 2252//4252 2253//4252 2254//4252 +f 2252//4253 2255//4253 2253//4253 +f 2252//4254 2248//4254 2255//4254 +f 2252//4255 2245//4255 2248//4255 +f 2256//4256 2249//4256 2250//4256 +f 2256//4257 2250//4257 2257//4257 +f 2258//4258 2187//4258 2251//4258 +f 2259//4259 2256//4259 2257//4259 +f 2259//4260 2257//4260 2246//4260 +f 2260//4261 2251//4261 2249//4261 +f 2260//4262 2258//4262 2251//4262 +f 2261//4263 2246//4263 2245//4263 +f 2261//4264 2259//4264 2246//4264 +f 2262//4265 2249//4265 2256//4265 +f 2262//4266 2260//4266 2249//4266 +f 2263//4267 2261//4267 2245//4267 +f 2263//4268 2252//4268 2254//4268 +f 2263//4269 2245//4269 2252//4269 +f 2264//4270 2258//4270 2260//4270 +f 2264//4271 2188//4271 2187//4271 +f 2264//4272 2187//4272 2258//4272 +f 2265//4273 2260//4273 2262//4273 +f 2265//4274 2264//4274 2260//4274 +f 2266//4275 1655//4275 1654//4275 +f 2267//4276 2256//4276 2259//4276 +f 2267//4277 2262//4277 2256//4277 +f 2268//4278 1667//4278 1655//4278 +f 2269//4279 2188//4279 2264//4279 +f 2269//4280 2264//4280 2265//4280 +f 2270//4281 1654//4281 2105//4281 +f 2270//4282 2105//4282 2271//4282 +f 2270//4283 2266//4283 1654//4283 +f 2272//4284 2267//4284 2259//4284 +f 2273//4285 2268//4285 1655//4285 +f 2272//4286 2259//4286 2261//4286 +f 2273//4287 1655//4287 2266//4287 +f 2274//4288 2265//4288 2262//4288 +f 2274//4289 2262//4289 2267//4289 +f 2275//4290 2270//4290 2271//4290 +f 2275//4291 2266//4291 2270//4291 +f 2275//4292 2273//4292 2266//4292 +f 2276//4293 2261//4293 2263//4293 +f 2277//4294 1646//4294 1667//4294 +f 2276//4295 2254//4295 2278//4295 +f 2276//4296 2263//4296 2254//4296 +f 2276//4297 2272//4297 2261//4297 +f 2279//4298 1667//4298 2268//4298 +f 2280//4299 2267//4299 2272//4299 +f 2280//4300 2274//4300 2267//4300 +f 2281//4301 2276//4301 2278//4301 +f 2281//4302 2272//4302 2276//4302 +f 2281//4303 2280//4303 2272//4303 +f 2282//4304 2277//4304 1667//4304 +f 2283//4305 2269//4305 2265//4305 +f 2250//4306 1646//4306 2277//4306 +f 2283//4307 2265//4307 2274//4307 +f 2284//4308 2283//4308 2274//4308 +f 2285//4309 2268//4309 2273//4309 +f 2284//4310 2274//4310 2280//4310 +f 2285//4311 2279//4311 2268//4311 +f 2286//4312 2278//4312 2287//4312 +f 2257//4313 2277//4313 2282//4313 +f 2286//4314 2281//4314 2278//4314 +f 2286//4315 2280//4315 2281//4315 +f 2286//4316 2284//4316 2280//4316 +f 2257//4317 2250//4317 2277//4317 +f 2288//4318 2182//4318 2188//4318 +f 2289//4319 2271//4319 2253//4319 +f 2289//4320 2275//4320 2271//4320 +f 2288//4321 2188//4321 2269//4321 +f 2289//4322 2273//4322 2275//4322 +f 2288//4323 2269//4323 2283//4323 +f 2289//4324 2285//4324 2273//4324 +f 2290//4325 2288//4325 2283//4325 +f 2247//4326 1667//4326 2279//4326 +f 2290//4327 2283//4327 2284//4327 +f 2247//4328 2282//4328 1667//4328 +f 2291//4329 2286//4329 2287//4329 +f 2251//4330 2187//4330 1644//4330 +f 2291//4331 2284//4331 2286//4331 +f 2251//4332 1644//4332 1646//4332 +f 2291//4333 2290//4333 2284//4333 +f 2292//4334 2180//4334 2182//4334 +f 2292//4335 2182//4335 2288//4335 +f 2292//4336 2288//4336 2290//4336 +f 2246//4337 2257//4337 2282//4337 +f 2246//4338 2282//4338 2247//4338 +f 2293//4339 2291//4339 2287//4339 +f 2293//4340 2290//4340 2291//4340 +f 2293//4341 2292//4341 2290//4341 +f 2248//4342 2279//4342 2285//4342 +f 2294//4343 2287//4343 2077//4343 +f 2294//4344 2077//4344 2076//4344 +f 2248//4345 2247//4345 2279//4345 +f 2294//4346 2076//4346 2180//4346 +f 2294//4347 2180//4347 2292//4347 +f 2294//4348 2293//4348 2287//4348 +f 2294//4349 2292//4349 2293//4349 +f 2255//4350 2289//4350 2253//4350 +f 2255//4351 2248//4351 2285//4351 +f 2255//4352 2285//4352 2289//4352 +f 2295//4353 2027//4353 2296//4353 +f 2297//4354 2224//4354 2227//4354 +f 2297//4355 2296//4355 2298//4355 +f 2297//4356 2299//4356 2224//4356 +f 2297//4357 2298//4357 2299//4357 +f 2300//4358 2301//4358 2302//4358 +f 2303//4359 2028//4359 2027//4359 +f 2303//4360 2027//4360 2295//4360 +f 2304//4361 2227//4361 2137//4361 +f 2304//4362 2137//4362 2136//4362 +f 2304//4363 2295//4363 2296//4363 +f 2304//4364 2297//4364 2227//4364 +f 2304//4365 2296//4365 2297//4365 +f 2305//4366 2034//4366 2028//4366 +f 2305//4367 2028//4367 2303//4367 +f 2306//4368 2303//4368 2295//4368 +f 2306//4369 2304//4369 2136//4369 +f 2306//4370 2295//4370 2304//4370 +f 2307//4371 2036//4371 2034//4371 +f 2224//4372 2308//4372 2216//4372 +f 2307//4373 2034//4373 2305//4373 +f 2309//4374 2134//4374 2133//4374 +f 2309//4375 2136//4375 2134//4375 +f 2309//4376 2306//4376 2136//4376 +f 2309//4377 2305//4377 2303//4377 +f 2309//4378 2303//4378 2306//4378 +f 2310//4379 2038//4379 2036//4379 +f 2310//4380 2036//4380 2307//4380 +f 2311//4381 2133//4381 2146//4381 +f 2311//4382 2307//4382 2305//4382 +f 2311//4383 2309//4383 2133//4383 +f 2311//4384 2305//4384 2309//4384 +f 2312//4385 2040//4385 2038//4385 +f 2312//4386 2038//4386 2310//4386 +f 2313//4387 2307//4387 2311//4387 +f 2313//4388 2310//4388 2307//4388 +f 2313//4389 2311//4389 2146//4389 +f 2314//4390 2030//4390 2040//4390 +f 2314//4391 2040//4391 2312//4391 +f 2315//4392 2310//4392 2313//4392 +f 2315//4393 2146//4393 2151//4393 +f 2315//4394 2313//4394 2146//4394 +f 2315//4395 2312//4395 2310//4395 +f 2316//4396 2030//4396 2314//4396 +f 2316//4397 2317//4397 2030//4397 +f 2318//4398 2156//4398 2219//4398 +f 2318//4399 2312//4399 2315//4399 +f 2318//4400 2151//4400 2156//4400 +f 2318//4401 2314//4401 2312//4401 +f 2318//4402 2315//4402 2151//4402 +f 2319//4403 2320//4403 2317//4403 +f 2319//4404 2317//4404 2316//4404 +f 2319//4405 2300//4405 2320//4405 +f 2321//4406 2219//4406 2217//4406 +f 2321//4407 2318//4407 2219//4407 +f 2321//4408 2314//4408 2318//4408 +f 2321//4409 2316//4409 2314//4409 +f 2322//4410 2217//4410 2216//4410 +f 2322//4411 2308//4411 2300//4411 +f 2322//4412 2216//4412 2308//4412 +f 2322//4413 2321//4413 2217//4413 +f 2322//4414 2319//4414 2316//4414 +f 2322//4415 2316//4415 2321//4415 +f 2322//4416 2300//4416 2319//4416 +f 2300//4417 2302//4417 2320//4417 +f 2298//4418 2323//4418 2301//4418 +f 2298//4419 2301//4419 2300//4419 +f 2296//4420 2027//4420 2323//4420 +f 2296//4421 2323//4421 2298//4421 +f 2299//4422 2300//4422 2308//4422 +f 2299//4423 2308//4423 2224//4423 +f 2299//4424 2298//4424 2300//4424 +f 2324//4425 2325//4425 2326//4425 +f 2324//4426 2327//4426 2325//4426 +f 2328//4427 2329//4427 2327//4427 +f 2328//4428 2327//4428 2324//4428 +f 2330//4429 2317//4429 2320//4429 +f 2330//4430 2030//4430 2317//4430 +f 2330//4431 2331//4431 2030//4431 +f 2332//4432 2027//4432 2333//4432 +f 2332//4433 2333//4433 2329//4433 +f 2332//4434 2329//4434 2328//4434 +f 2334//4435 2320//4435 2302//4435 +f 2334//4436 2326//4436 2331//4436 +f 2334//4437 2330//4437 2320//4437 +f 2334//4438 2331//4438 2330//4438 +f 2335//4439 2324//4439 2326//4439 +f 2335//4440 2326//4440 2334//4440 +f 2335//4441 2334//4441 2302//4441 +f 2336//4442 2302//4442 2301//4442 +f 2336//4443 2328//4443 2324//4443 +f 2336//4444 2335//4444 2302//4444 +f 2336//4445 2324//4445 2335//4445 +f 2337//4446 2323//4446 2027//4446 +f 2337//4447 2301//4447 2323//4447 +f 2337//4448 2027//4448 2332//4448 +f 2337//4449 2332//4449 2328//4449 +f 2337//4450 2336//4450 2301//4450 +f 2337//4451 2328//4451 2336//4451 +f 2338//4452 2339//4452 2031//4452 +f 2340//4453 2341//4453 2339//4453 +f 2340//4454 2339//4454 2338//4454 +f 2342//4455 2343//4455 2344//4455 +f 2342//4456 2344//4456 2341//4456 +f 2342//4457 2341//4457 2340//4457 +f 2345//4458 2346//4458 2343//4458 +f 2345//4459 2343//4459 2342//4459 +f 2347//4460 2031//4460 2030//4460 +f 2347//4461 2338//4461 2031//4461 +f 2348//4462 2043//4462 2346//4462 +f 2348//4463 2346//4463 2345//4463 +f 2325//4464 2338//4464 2347//4464 +f 2325//4465 2340//4465 2338//4465 +f 2327//4466 2342//4466 2340//4466 +f 2327//4467 2340//4467 2325//4467 +f 2329//4468 2345//4468 2342//4468 +f 2329//4469 2342//4469 2327//4469 +f 2331//4470 2347//4470 2030//4470 +f 2333//4471 2027//4471 2043//4471 +f 2333//4472 2348//4472 2345//4472 +f 2333//4473 2043//4473 2348//4473 +f 2333//4474 2345//4474 2329//4474 +f 2326//4475 2325//4475 2347//4475 +f 2326//4476 2347//4476 2331//4476 +f 2349//4477 2350//4477 2351//4477 +f 2352//4478 2353//4478 2354//4478 +f 2355//4479 2356//4479 2357//4479 +f 2355//4480 2357//4480 2344//4480 +f 2352//4481 2354//4481 2049//4481 +f 2352//4482 2358//4482 2353//4482 +f 2355//4483 2344//4483 2343//4483 +f 2355//4484 2359//4484 2356//4484 +f 2360//4485 2361//4485 2362//4485 +f 2363//4486 2364//4486 2359//4486 +f 2365//4487 2049//4487 2051//4487 +f 2363//4488 2359//4488 2355//4488 +f 2365//4489 2366//4489 2358//4489 +f 2363//4490 2355//4490 2343//4490 +f 2365//4491 2358//4491 2352//4491 +f 2365//4492 2352//4492 2049//4492 +f 2367//4493 2368//4493 2361//4493 +f 2369//4494 2370//4494 2349//4494 +f 2367//4495 2361//4495 2360//4495 +f 2371//4496 2372//4496 2370//4496 +f 2371//4497 2370//4497 2369//4497 +f 2373//4498 2343//4498 2346//4498 +f 2374//4499 2368//4499 2367//4499 +f 2373//4500 2363//4500 2343//4500 +f 2373//4501 2364//4501 2363//4501 +f 2375//4502 2366//4502 2365//4502 +f 2373//4503 2351//4503 2364//4503 +f 2375//4504 2362//4504 2366//4504 +f 2375//4505 2365//4505 2051//4505 +f 2376//4506 2351//4506 2373//4506 +f 2376//4507 2349//4507 2351//4507 +f 2376//4508 2373//4508 2346//4508 +f 2377//4509 2051//4509 2031//4509 +f 2377//4510 2375//4510 2051//4510 +f 2377//4511 2362//4511 2375//4511 +f 2377//4512 2360//4512 2362//4512 +f 2378//4513 2372//4513 2371//4513 +f 2379//4514 2380//4514 2372//4514 +f 2381//4515 2382//4515 2368//4515 +f 2381//4516 2368//4516 2374//4516 +f 2379//4517 2372//4517 2378//4517 +f 2383//4518 2346//4518 2043//4518 +f 2383//4519 2349//4519 2376//4519 +f 2383//4520 2369//4520 2349//4520 +f 2384//4521 2382//4521 2381//4521 +f 2383//4522 2376//4522 2346//4522 +f 2385//4523 2367//4523 2360//4523 +f 2386//4524 2371//4524 2369//4524 +f 2385//4525 2377//4525 2031//4525 +f 2386//4526 2369//4526 2383//4526 +f 2385//4527 2360//4527 2377//4527 +f 2386//4528 2383//4528 2043//4528 +f 2387//4529 2031//4529 2339//4529 +f 2387//4530 2374//4530 2367//4530 +f 2387//4531 2367//4531 2385//4531 +f 2388//4532 2380//4532 2379//4532 +f 2387//4533 2385//4533 2031//4533 +f 2389//4534 2390//4534 2382//4534 +f 2391//4535 2043//4535 2042//4535 +f 2389//4536 2382//4536 2384//4536 +f 2391//4537 2378//4537 2371//4537 +f 2392//4538 2356//4538 2393//4538 +f 2391//4539 2371//4539 2386//4539 +f 2391//4540 2386//4540 2043//4540 +f 2392//4541 2393//4541 2390//4541 +f 2392//4542 2390//4542 2389//4542 +f 2394//4543 2395//4543 2380//4543 +f 2396//4544 2374//4544 2387//4544 +f 2396//4545 2381//4545 2374//4545 +f 2394//4546 2380//4546 2388//4546 +f 2397//4547 2391//4547 2042//4547 +f 2396//4548 2387//4548 2339//4548 +f 2397//4549 2378//4549 2391//4549 +f 2398//4550 2339//4550 2341//4550 +f 2398//4551 2396//4551 2339//4551 +f 2398//4552 2384//4552 2381//4552 +f 2398//4553 2381//4553 2396//4553 +f 2397//4554 2379//4554 2378//4554 +f 2399//4555 2395//4555 2394//4555 +f 2400//4556 2389//4556 2384//4556 +f 2400//4557 2384//4557 2398//4557 +f 2400//4558 2398//4558 2341//4558 +f 2401//4559 2379//4559 2397//4559 +f 2402//4560 2341//4560 2344//4560 +f 2402//4561 2357//4561 2356//4561 +f 2402//4562 2344//4562 2357//4562 +f 2401//4563 2042//4563 2045//4563 +f 2402//4564 2356//4564 2392//4564 +f 2401//4565 2388//4565 2379//4565 +f 2402//4566 2392//4566 2389//4566 +f 2401//4567 2397//4567 2042//4567 +f 2402//4568 2400//4568 2341//4568 +f 2402//4569 2389//4569 2400//4569 +f 2403//4570 2404//4570 2395//4570 +f 2403//4571 2395//4571 2399//4571 +f 2405//4572 2394//4572 2388//4572 +f 2405//4573 2401//4573 2045//4573 +f 2405//4574 2388//4574 2401//4574 +f 2353//4575 2404//4575 2403//4575 +f 2406//4576 2399//4576 2394//4576 +f 2406//4577 2394//4577 2405//4577 +f 2406//4578 2405//4578 2045//4578 +f 2406//4579 2045//4579 2047//4579 +f 2358//4580 2407//4580 2404//4580 +f 2358//4581 2404//4581 2353//4581 +f 2408//4582 2399//4582 2406//4582 +f 2408//4583 2406//4583 2047//4583 +f 2408//4584 2403//4584 2399//4584 +f 2359//4585 2409//4585 2393//4585 +f 2359//4586 2393//4586 2356//4586 +f 2366//4587 2407//4587 2358//4587 +f 2364//4588 2350//4588 2409//4588 +f 2354//4589 2353//4589 2403//4589 +f 2354//4590 2047//4590 2049//4590 +f 2364//4591 2409//4591 2359//4591 +f 2354//4592 2403//4592 2408//4592 +f 2354//4593 2408//4593 2047//4593 +f 2362//4594 2361//4594 2407//4594 +f 2351//4595 2350//4595 2364//4595 +f 2362//4596 2407//4596 2366//4596 +f 2349//4597 2370//4597 2350//4597 +f 2410//4598 2411//4598 2412//4598 +f 2410//4599 2413//4599 2361//4599 +f 2414//4600 2368//4600 2382//4600 +f 2414//4601 2410//4601 2368//4601 +f 2414//4602 2411//4602 2410//4602 +f 2415//4603 2416//4603 2417//4603 +f 2415//4604 2417//4604 2418//4604 +f 2414//4605 2419//4605 2411//4605 +f 2420//4606 2390//4606 2393//4606 +f 2420//4607 2382//4607 2390//4607 +f 2420//4608 2421//4608 2422//4608 +f 2420//4609 2393//4609 2421//4609 +f 2420//4610 2419//4610 2414//4610 +f 2420//4611 2422//4611 2423//4611 +f 2424//4612 2425//4612 2416//4612 +f 2420//4613 2423//4613 2419//4613 +f 2420//4614 2414//4614 2382//4614 +f 2424//4615 2416//4615 2415//4615 +f 2426//4616 2427//4616 2425//4616 +f 2426//4617 2425//4617 2424//4617 +f 2428//4618 2429//4618 2427//4618 +f 2428//4619 2427//4619 2426//4619 +f 2412//4620 2430//4620 2429//4620 +f 2412//4621 2429//4621 2428//4621 +f 2411//4622 2431//4622 2430//4622 +f 2411//4623 2430//4623 2412//4623 +f 2419//4624 2432//4624 2431//4624 +f 2419//4625 2431//4625 2411//4625 +f 2423//4626 2433//4626 2432//4626 +f 2423//4627 2422//4627 2433//4627 +f 2423//4628 2432//4628 2419//4628 +f 2434//4629 2393//4629 2409//4629 +f 2434//4630 2422//4630 2421//4630 +f 2434//4631 2421//4631 2393//4631 +f 2422//4632 2435//4632 2433//4632 +f 2434//4633 2436//4633 2422//4633 +f 2437//4634 2409//4634 2350//4634 +f 2437//4635 2438//4635 2436//4635 +f 2437//4636 2434//4636 2409//4636 +f 2437//4637 2436//4637 2434//4637 +f 2439//4638 2350//4638 2370//4638 +f 2439//4639 2440//4639 2438//4639 +f 2439//4640 2437//4640 2350//4640 +f 2439//4641 2438//4641 2437//4641 +f 2441//4642 2439//4642 2370//4642 +f 2441//4643 2370//4643 2372//4643 +f 2441//4644 2418//4644 2440//4644 +f 2441//4645 2440//4645 2439//4645 +f 2442//4646 2418//4646 2441//4646 +f 2442//4647 2372//4647 2380//4647 +f 2442//4648 2441//4648 2372//4648 +f 2442//4649 2415//4649 2418//4649 +f 2443//4650 2415//4650 2442//4650 +f 2443//4651 2380//4651 2395//4651 +f 2443//4652 2424//4652 2415//4652 +f 2443//4653 2442//4653 2380//4653 +f 2444//4654 2395//4654 2404//4654 +f 2436//4655 2445//4655 2435//4655 +f 2436//4656 2435//4656 2422//4656 +f 2444//4657 2443//4657 2395//4657 +f 2444//4658 2426//4658 2424//4658 +f 2444//4659 2424//4659 2443//4659 +f 2446//4660 2404//4660 2407//4660 +f 2446//4661 2444//4661 2404//4661 +f 2438//4662 2447//4662 2445//4662 +f 2446//4663 2426//4663 2444//4663 +f 2438//4664 2445//4664 2436//4664 +f 2446//4665 2428//4665 2426//4665 +f 2413//4666 2407//4666 2361//4666 +f 2413//4667 2428//4667 2446//4667 +f 2440//4668 2448//4668 2447//4668 +f 2413//4669 2412//4669 2428//4669 +f 2440//4670 2447//4670 2438//4670 +f 2413//4671 2446//4671 2407//4671 +f 2410//4672 2361//4672 2368//4672 +f 2410//4673 2412//4673 2413//4673 +f 2418//4674 2417//4674 2448//4674 +f 2418//4675 2448//4675 2440//4675 +f 2449//4676 2427//4676 2429//4676 +f 2449//4677 2450//4677 2451//4677 +f 2449//4678 2452//4678 2450//4678 +f 2453//4679 2435//4679 2445//4679 +f 2453//4680 2454//4680 2455//4680 +f 2453//4681 2455//4681 2435//4681 +f 2449//4682 2451//4682 2427//4682 +f 2453//4683 2456//4683 2454//4683 +f 2457//4684 1997//4684 2005//4684 +f 2457//4685 2005//4685 2458//4685 +f 2459//4686 2445//4686 2447//4686 +f 2460//4687 2461//4687 2452//4687 +f 2459//4688 2453//4688 2445//4688 +f 2460//4689 2449//4689 2429//4689 +f 2459//4690 2456//4690 2453//4690 +f 2459//4691 2462//4691 2456//4691 +f 2460//4692 2452//4692 2449//4692 +f 2463//4693 1995//4693 2464//4693 +f 2463//4694 2464//4694 2465//4694 +f 2466//4695 1997//4695 2457//4695 +f 2467//4696 1995//4696 2463//4696 +f 2468//4697 2469//4697 1997//4697 +f 2470//4698 2471//4698 2462//4698 +f 2468//4699 1997//4699 2466//4699 +f 2470//4700 2459//4700 2447//4700 +f 2472//4701 2429//4701 2430//4701 +f 2470//4702 2462//4702 2459//4702 +f 2472//4703 2458//4703 2461//4703 +f 2472//4704 2461//4704 2460//4704 +f 2473//4705 2447//4705 2448//4705 +f 2472//4706 2460//4706 2429//4706 +f 2473//4707 2465//4707 2471//4707 +f 2473//4708 2471//4708 2470//4708 +f 2473//4709 2470//4709 2447//4709 +f 2474//4710 2457//4710 2458//4710 +f 2474//4711 2458//4711 2472//4711 +f 2474//4712 2472//4712 2430//4712 +f 2475//4713 1993//4713 1995//4713 +f 2475//4714 1995//4714 2467//4714 +f 2476//4715 2469//4715 2468//4715 +f 2477//4716 1993//4716 2475//4716 +f 2478//4717 2479//4717 2469//4717 +f 2478//4718 2469//4718 2476//4718 +f 2480//4719 2465//4719 2473//4719 +f 2480//4720 2473//4720 2448//4720 +f 2480//4721 2463//4721 2465//4721 +f 2481//4722 2430//4722 2431//4722 +f 2481//4723 2466//4723 2457//4723 +f 2482//4724 2448//4724 2417//4724 +f 2481//4725 2457//4725 2474//4725 +f 2482//4726 2467//4726 2463//4726 +f 2481//4727 2474//4727 2430//4727 +f 2482//4728 2463//4728 2480//4728 +f 2482//4729 2480//4729 2448//4729 +f 2483//4730 2468//4730 2466//4730 +f 2483//4731 2466//4731 2481//4731 +f 2484//4732 1994//4732 1993//4732 +f 2483//4733 2481//4733 2431//4733 +f 2484//4734 1993//4734 2477//4734 +f 2485//4735 2479//4735 2478//4735 +f 2486//4736 2482//4736 2417//4736 +f 2487//4737 2454//4737 2488//4737 +f 2486//4738 2475//4738 2467//4738 +f 2486//4739 2467//4739 2482//4739 +f 2487//4740 2488//4740 2479//4740 +f 2487//4741 2479//4741 2485//4741 +f 2489//4742 2431//4742 2432//4742 +f 2489//4743 2468//4743 2483//4743 +f 2489//4744 2476//4744 2468//4744 +f 2490//4745 1994//4745 2484//4745 +f 2489//4746 2483//4746 2431//4746 +f 2491//4747 2475//4747 2486//4747 +f 2491//4748 2417//4748 2416//4748 +f 2491//4749 2477//4749 2475//4749 +f 2492//4750 2478//4750 2476//4750 +f 2492//4751 2476//4751 2489//4751 +f 2491//4752 2486//4752 2417//4752 +f 2492//4753 2489//4753 2432//4753 +f 2493//4754 1994//4754 2490//4754 +f 2494//4755 2432//4755 2433//4755 +f 2494//4756 2485//4756 2478//4756 +f 2493//4757 2001//4757 1994//4757 +f 2494//4758 2478//4758 2492//4758 +f 2495//4759 2484//4759 2477//4759 +f 2494//4760 2492//4760 2432//4760 +f 2496//4761 2433//4761 2435//4761 +f 2495//4762 2477//4762 2491//4762 +f 2496//4763 2455//4763 2454//4763 +f 2496//4764 2435//4764 2455//4764 +f 2496//4765 2454//4765 2487//4765 +f 2495//4766 2491//4766 2416//4766 +f 2496//4767 2487//4767 2485//4767 +f 2496//4768 2485//4768 2494//4768 +f 2496//4769 2494//4769 2433//4769 +f 2497//4770 2001//4770 2493//4770 +f 2498//4771 2416//4771 2425//4771 +f 2498//4772 2495//4772 2416//4772 +f 2498//4773 2484//4773 2495//4773 +f 2498//4774 2490//4774 2484//4774 +f 2450//4775 2003//4775 2001//4775 +f 2450//4776 2001//4776 2497//4776 +f 2499//4777 2498//4777 2425//4777 +f 2499//4778 2490//4778 2498//4778 +f 2499//4779 2493//4779 2490//4779 +f 2452//4780 2003//4780 2450//4780 +f 2500//4781 2425//4781 2427//4781 +f 2500//4782 2499//4782 2425//4782 +f 2500//4783 2493//4783 2499//4783 +f 2500//4784 2497//4784 2493//4784 +f 2456//4785 2501//4785 2488//4785 +f 2456//4786 2488//4786 2454//4786 +f 2461//4787 2005//4787 2003//4787 +f 2461//4788 2003//4788 2452//4788 +f 2451//4789 2450//4789 2497//4789 +f 2451//4790 2500//4790 2427//4790 +f 2462//4791 2501//4791 2456//4791 +f 2451//4792 2497//4792 2500//4792 +f 2471//4793 2464//4793 2501//4793 +f 2471//4794 2501//4794 2462//4794 +f 2458//4795 2005//4795 2461//4795 +f 2465//4796 2464//4796 2471//4796 +f 2502//4797 2503//4797 2504//4797 +f 2502//4798 2505//4798 2503//4798 +f 2506//4799 2507//4799 2505//4799 +f 2506//4800 2505//4800 2502//4800 +f 2508//4801 1997//4801 2469//4801 +f 2508//4802 2509//4802 1997//4802 +f 2510//4803 1995//4803 2008//4803 +f 2510//4804 2008//4804 2511//4804 +f 2510//4805 2511//4805 2507//4805 +f 2510//4806 2507//4806 2506//4806 +f 2512//4807 2469//4807 2479//4807 +f 2512//4808 2509//4808 2508//4808 +f 2512//4809 2508//4809 2469//4809 +f 2512//4810 2504//4810 2509//4810 +f 2513//4811 2479//4811 2488//4811 +f 2513//4812 2488//4812 2501//4812 +f 2513//4813 2504//4813 2512//4813 +f 2513//4814 2502//4814 2504//4814 +f 2513//4815 2512//4815 2479//4815 +f 2514//4816 2501//4816 2464//4816 +f 2514//4817 2506//4817 2502//4817 +f 2514//4818 2513//4818 2501//4818 +f 2514//4819 2502//4819 2513//4819 +f 2515//4820 2464//4820 1995//4820 +f 2515//4821 1995//4821 2510//4821 +f 2515//4822 2510//4822 2506//4822 +f 2515//4823 2514//4823 2464//4823 +f 2515//4824 2506//4824 2514//4824 +f 2516//4825 2517//4825 2518//4825 +f 2516//4826 2518//4826 2016//4826 +f 2519//4827 2520//4827 2517//4827 +f 2519//4828 2517//4828 2516//4828 +f 2521//4829 2520//4829 2519//4829 +f 2522//4830 2523//4830 2520//4830 +f 2522//4831 2520//4831 2521//4831 +f 2524//4832 2516//4832 2016//4832 +f 2525//4833 2008//4833 2526//4833 +f 2525//4834 2526//4834 2523//4834 +f 2525//4835 2523//4835 2522//4835 +f 2503//4836 2519//4836 2516//4836 +f 2503//4837 2516//4837 2524//4837 +f 2505//4838 2521//4838 2519//4838 +f 2505//4839 2519//4839 2503//4839 +f 2507//4840 2521//4840 2505//4840 +f 2507//4841 2522//4841 2521//4841 +f 2509//4842 2016//4842 1997//4842 +f 2509//4843 2524//4843 2016//4843 +f 2511//4844 2008//4844 2525//4844 +f 2511//4845 2525//4845 2522//4845 +f 2511//4846 2522//4846 2507//4846 +f 2504//4847 2503//4847 2524//4847 +f 2504//4848 2524//4848 2509//4848 +f 2527//4849 2243//4849 2528//4849 +f 2529//4850 2526//4850 2008//4850 +f 2529//4851 2528//4851 2530//4851 +f 2529//4852 2530//4852 2531//4852 +f 2529//4853 2531//4853 2526//4853 +f 2532//4854 2113//4854 2112//4854 +f 2532//4855 2112//4855 2527//4855 +f 2533//4856 2008//4856 2007//4856 +f 2533//4857 2527//4857 2528//4857 +f 2533//4858 2528//4858 2529//4858 +f 2533//4859 2529//4859 2008//4859 +f 2534//4860 2117//4860 2113//4860 +f 2534//4861 2113//4861 2532//4861 +f 2535//4862 2007//4862 2010//4862 +f 2535//4863 2527//4863 2533//4863 +f 2535//4864 2532//4864 2527//4864 +f 2535//4865 2533//4865 2007//4865 +f 2536//4866 2108//4866 2117//4866 +f 2536//4867 2117//4867 2534//4867 +f 2537//4868 2010//4868 2012//4868 +f 2537//4869 2532//4869 2535//4869 +f 2537//4870 2535//4870 2010//4870 +f 2537//4871 2534//4871 2532//4871 +f 2538//4872 2106//4872 2108//4872 +f 2538//4873 2108//4873 2536//4873 +f 2539//4874 2012//4874 2014//4874 +f 2539//4875 2537//4875 2012//4875 +f 2539//4876 2534//4876 2537//4876 +f 2539//4877 2536//4877 2534//4877 +f 2540//4878 2127//4878 2106//4878 +f 2540//4879 2106//4879 2538//4879 +f 2541//4880 2014//4880 2017//4880 +f 2541//4881 2538//4881 2536//4881 +f 2541//4882 2539//4882 2014//4882 +f 2541//4883 2536//4883 2539//4883 +f 2542//4884 2233//4884 2129//4884 +f 2542//4885 2129//4885 2127//4885 +f 2542//4886 2127//4886 2540//4886 +f 2543//4887 2541//4887 2017//4887 +f 2543//4888 2540//4888 2538//4888 +f 2543//4889 2538//4889 2541//4889 +f 2544//4890 2236//4890 2233//4890 +f 2544//4891 2233//4891 2542//4891 +f 2545//4892 2542//4892 2540//4892 +f 2545//4893 2543//4893 2017//4893 +f 2545//4894 2017//4894 2016//4894 +f 2545//4895 2540//4895 2543//4895 +f 2546//4896 2236//4896 2544//4896 +f 2546//4897 2547//4897 2236//4897 +f 2548//4898 2016//4898 2518//4898 +f 2548//4899 2544//4899 2542//4899 +f 2548//4900 2545//4900 2016//4900 +f 2548//4901 2542//4901 2545//4901 +f 2549//4902 2518//4902 2517//4902 +f 2549//4903 2550//4903 2547//4903 +f 2549//4904 2544//4904 2548//4904 +f 2549//4905 2546//4905 2544//4905 +f 2549//4906 2548//4906 2518//4906 +f 2549//4907 2547//4907 2546//4907 +f 2549//4908 2517//4908 2550//4908 +f 2547//4909 2231//4909 2236//4909 +f 2520//4910 2550//4910 2517//4910 +f 2530//4911 2230//4911 2231//4911 +f 2530//4912 2231//4912 2547//4912 +f 2528//4913 2243//4913 2230//4913 +f 2528//4914 2230//4914 2530//4914 +f 2531//4915 2547//4915 2550//4915 +f 2531//4916 2550//4916 2520//4916 +f 2531//4917 2523//4917 2526//4917 +f 2531//4918 2520//4918 2523//4918 +f 2531//4919 2530//4919 2547//4919 +f 2527//4920 2112//4920 2243//4920 +f 2551//4921 2552//4921 2553//4921 +f 2554//4922 2555//4922 2556//4922 +f 2551//4923 2557//4923 2189//4923 +f 2551//4924 2553//4924 2557//4924 +f 2558//4925 1657//4925 1666//4925 +f 2559//4926 1964//4926 2560//4926 +f 2559//4927 2560//4927 2561//4927 +f 2558//4928 2562//4928 1657//4928 +f 2559//4929 2561//4929 2563//4929 +f 2564//4930 2181//4930 1964//4930 +f 2564//4931 1964//4931 2559//4931 +f 2565//4932 2554//4932 2566//4932 +f 2564//4933 2563//4933 2551//4933 +f 2564//4934 2551//4934 2181//4934 +f 2565//4935 2566//4935 2567//4935 +f 2564//4936 2559//4936 2563//4936 +f 2568//4937 2567//4937 2562//4937 +f 2568//4938 2562//4938 2558//4938 +f 2569//4939 1666//4939 1645//4939 +f 2569//4940 2558//4940 1666//4940 +f 2569//4941 2568//4941 2558//4941 +f 2570//4942 2571//4942 2572//4942 +f 2570//4943 2572//4943 2555//4943 +f 2573//4944 2565//4944 2567//4944 +f 2573//4945 2567//4945 2568//4945 +f 2574//4946 2575//4946 2571//4946 +f 2576//4947 2555//4947 2554//4947 +f 2576//4948 2570//4948 2555//4948 +f 2577//4949 2573//4949 2568//4949 +f 2577//4950 2568//4950 2569//4950 +f 2578//4951 2576//4951 2554//4951 +f 2578//4952 2554//4952 2565//4952 +f 2579//4953 2577//4953 2569//4953 +f 2579//4954 2569//4954 1645//4954 +f 2580//4955 2581//4955 2575//4955 +f 2580//4956 2575//4956 2574//4956 +f 2582//4957 2578//4957 2565//4957 +f 2582//4958 2565//4958 2573//4958 +f 2583//4959 2574//4959 2571//4959 +f 2583//4960 2571//4960 2570//4960 +f 2584//4961 2585//4961 1938//4961 +f 2586//4962 2573//4962 2577//4962 +f 2586//4963 2582//4963 2573//4963 +f 2587//4964 2585//4964 2584//4964 +f 2588//4965 1938//4965 1658//4965 +f 2588//4966 1658//4966 1656//4966 +f 2589//4967 2583//4967 2570//4967 +f 2588//4968 2584//4968 1938//4968 +f 2589//4969 2570//4969 2576//4969 +f 2590//4970 2591//4970 2585//4970 +f 2590//4971 2585//4971 2587//4971 +f 2592//4972 2574//4972 2583//4972 +f 2593//4973 2584//4973 2588//4973 +f 2561//4974 2581//4974 2580//4974 +f 2594//4975 1656//4975 1657//4975 +f 2594//4976 2588//4976 1656//4976 +f 2594//4977 2593//4977 2588//4977 +f 2595//4978 2583//4978 2589//4978 +f 2595//4979 2592//4979 2583//4979 +f 2596//4980 2587//4980 2584//4980 +f 2597//4981 2589//4981 2576//4981 +f 2596//4982 2584//4982 2593//4982 +f 2597//4983 2576//4983 2578//4983 +f 2598//4984 1645//4984 1665//4984 +f 2598//4985 2586//4985 2577//4985 +f 2598//4986 2579//4986 1645//4986 +f 2598//4987 1665//4987 2186//4987 +f 2599//4988 2591//4988 2590//4988 +f 2598//4989 2577//4989 2579//4989 +f 2600//4990 2594//4990 1657//4990 +f 2600//4991 2593//4991 2594//4991 +f 2601//4992 2595//4992 2589//4992 +f 2600//4993 2596//4993 2593//4993 +f 2601//4994 2589//4994 2597//4994 +f 2572//4995 2571//4995 2591//4995 +f 2560//4996 1964//4996 1959//4996 +f 2572//4997 2591//4997 2599//4997 +f 2560//4998 1959//4998 2581//4998 +f 2560//4999 2581//4999 2561//4999 +f 2552//5000 2580//5000 2574//5000 +f 2602//5001 2590//5001 2587//5001 +f 2552//5002 2574//5002 2592//5002 +f 2602//5003 2587//5003 2596//5003 +f 2603//5004 2597//5004 2578//5004 +f 2603//5005 2578//5005 2582//5005 +f 2604//5006 2596//5006 2600//5006 +f 2604//5007 2602//5007 2596//5007 +f 2553//5008 2552//5008 2592//5008 +f 2562//5009 2604//5009 2600//5009 +f 2553//5010 2592//5010 2595//5010 +f 2562//5011 2600//5011 1657//5011 +f 2556//5012 2590//5012 2602//5012 +f 2556//5013 2599//5013 2590//5013 +f 2605//5014 2582//5014 2586//5014 +f 2605//5015 2586//5015 2598//5015 +f 2605//5016 2598//5016 2186//5016 +f 2605//5017 2603//5017 2582//5017 +f 2606//5018 2597//5018 2603//5018 +f 2606//5019 2601//5019 2597//5019 +f 2566//5020 2556//5020 2602//5020 +f 2557//5021 2606//5021 2189//5021 +f 2566//5022 2602//5022 2604//5022 +f 2557//5023 2595//5023 2601//5023 +f 2557//5024 2553//5024 2595//5024 +f 2557//5025 2601//5025 2606//5025 +f 2607//5026 2189//5026 2606//5026 +f 2607//5027 2186//5027 2189//5027 +f 2607//5028 2603//5028 2605//5028 +f 2555//5029 2572//5029 2599//5029 +f 2607//5030 2605//5030 2186//5030 +f 2555//5031 2599//5031 2556//5031 +f 2607//5032 2606//5032 2603//5032 +f 2563//5033 2561//5033 2580//5033 +f 2567//5034 2604//5034 2562//5034 +f 2567//5035 2566//5035 2604//5035 +f 2563//5036 2580//5036 2552//5036 +f 2554//5037 2556//5037 2566//5037 +f 2551//5038 2189//5038 2181//5038 +f 2551//5039 2563//5039 2552//5039 +f 1967//5040 1959//5040 1958//5040 +f 1949//5041 1959//5041 1967//5041 +f 1948//5042 1959//5042 1949//5042 +f 2571//5043 2575//5043 2591//5043 +f 2585//5044 2581//5044 1938//5044 +f 2591//5045 2581//5045 2585//5045 +f 1938//5046 2581//5046 1948//5046 +f 1948//5047 2581//5047 1959//5047 +f 2575//5048 2581//5048 2591//5048 +f 2079//5049 2077//5049 2287//5049 +f 2062//5050 2287//5050 2278//5050 +f 2062//5051 2079//5051 2287//5051 +f 2063//5052 2278//5052 2254//5052 +f 2063//5053 2062//5053 2278//5053 +f 2091//5054 2254//5054 2253//5054 +f 2091//5055 2063//5055 2254//5055 +f 2100//5056 2253//5056 2271//5056 +f 2100//5057 2271//5057 2105//5057 +f 2100//5058 2091//5058 2253//5058 +f 1918//5059 2608//5059 1917//5059 +f 1917//5060 2608//5060 2609//5060 +f 2609//5061 2610//5061 2611//5061 +f 2608//5062 2610//5062 2609//5062 +f 1689//5063 2612//5063 2613//5063 +f 2611//5064 2614//5064 2613//5064 +f 2610//5065 2614//5065 2611//5065 +f 2613//5066 2614//5066 1689//5066 +f 2614//5067 1831//5067 1689//5067 +f 2612//5068 2615//5068 2613//5068 +f 1689//5069 1828//5069 1690//5069 +f 1831//5070 1828//5070 1689//5070 +f 2612//5071 2616//5071 2615//5071 +f 2614//5072 2617//5072 1831//5072 +f 1828//5073 1827//5073 1690//5073 +f 2617//5074 2618//5074 2619//5074 +f 2614//5075 2618//5075 2617//5075 +f 2620//5076 1901//5076 2615//5076 +f 2618//5077 2621//5077 2622//5077 +f 1794//5078 1746//5078 1723//5078 +f 2621//5079 1906//5079 1919//5079 +f 2618//5080 1906//5080 2621//5080 +f 2620//5081 1899//5081 1901//5081 +f 2616//5082 2620//5082 2615//5082 +f 1723//5083 1730//5083 1813//5083 +f 1794//5084 1793//5084 1746//5084 +f 1813//5085 1794//5085 1723//5085 +f 1827//5086 1813//5086 1730//5086 +f 1827//5087 1730//5087 1690//5087 +f 2622//5088 2619//5088 2618//5088 +f 2623//5089 1841//5089 2624//5089 +f 1870//5090 1869//5090 1842//5090 +f 1870//5091 1842//5091 1841//5091 +f 2625//5092 1860//5092 2626//5092 +f 1866//5093 1841//5093 2623//5093 +f 1866//5094 2627//5094 2628//5094 +f 1866//5095 1870//5095 1841//5095 +f 2629//5096 2625//5096 2626//5096 +f 2630//5097 1866//5097 2623//5097 +f 1886//5098 1860//5098 1859//5098 +f 2630//5099 2627//5099 1866//5099 +f 1889//5100 2630//5100 2623//5100 +f 1886//5101 2626//5101 1860//5101 +f 1888//5102 2630//5102 1889//5102 +f 2631//5103 2626//5103 1886//5103 +f 1879//5104 1883//5104 1856//5104 +f 1877//5105 1879//5105 1853//5105 +f 1863//5106 1877//5106 1836//5106 +f 1872//5107 1863//5107 1849//5107 +f 1869//5108 1872//5108 1845//5108 +f 2632//5109 2631//5109 1886//5109 +f 2633//5110 2628//5110 2627//5110 +f 2634//5111 2633//5111 2627//5111 +f 2635//5112 2636//5112 2637//5112 +f 1845//5113 1842//5113 1869//5113 +f 1849//5114 1845//5114 1872//5114 +f 2638//5115 2629//5115 2626//5115 +f 1836//5116 1849//5116 1863//5116 +f 1853//5117 1836//5117 1877//5117 +f 1856//5118 1853//5118 1879//5118 +f 2639//5119 2629//5119 2638//5119 +f 2640//5120 2639//5120 2638//5120 +f 2641//5121 2642//5121 2624//5121 +f 1883//5122 1859//5122 1856//5122 +f 1883//5123 1886//5123 1859//5123 +f 2643//5124 2631//5124 2632//5124 +f 2637//5125 2643//5125 2635//5125 +f 2637//5126 2631//5126 2643//5126 +f 2624//5127 2640//5127 2638//5127 +f 2642//5128 2640//5128 2624//5128 +f 2634//5129 2637//5129 2636//5129 +f 2644//5130 2641//5130 2624//5130 +f 1841//5131 2644//5131 2624//5131 +f 2627//5132 2637//5132 2634//5132 +f 2645//5133 2646//5133 2647//5133 +f 2648//5134 2647//5134 2649//5134 +f 2648//5135 2645//5135 2647//5135 +f 2650//5136 2649//5136 2651//5136 +f 2650//5137 2648//5137 2649//5137 +f 2652//5138 2650//5138 2651//5138 +f 2645//5139 2201//5139 2203//5139 +f 2645//5140 2203//5140 2646//5140 +f 2210//5141 2653//5141 2654//5141 +f 2210//5142 2654//5142 2208//5142 +f 2654//5143 2653//5143 2655//5143 +f 2655//5144 2656//5144 2657//5144 +f 2653//5145 2656//5145 2655//5145 +f 2657//5146 2658//5146 2659//5146 +f 2656//5147 2658//5147 2657//5147 +f 2658//5148 2660//5148 2659//5148 +f 1897//5149 1898//5149 2659//5149 +f 2660//5150 1897//5150 2659//5150 +f 2631//5151 2652//5151 2651//5151 +f 2631//5152 2651//5152 2626//5152 +f 1675//5153 2196//5153 2198//5153 +f 1673//5154 2196//5154 1675//5154 +f 1670//5155 2194//5155 1673//5155 +f 1640//5156 2194//5156 1670//5156 +f 1673//5157 2194//5157 2196//5157 +f 2204//5158 2209//5158 2200//5158 +f 2204//5159 2212//5159 2209//5159 +f 2626//5160 2615//5160 2638//5160 +f 2200//5161 2208//5161 2203//5161 +f 2209//5162 2208//5162 2200//5162 +f 1898//5163 2613//5163 2626//5163 +f 2626//5164 2613//5164 2615//5164 +f 2206//5165 2214//5165 2204//5165 +f 2615//5166 1901//5166 2638//5166 +f 2204//5167 2214//5167 2212//5167 +f 1901//5168 2624//5168 2638//5168 +f 2203//5169 2654//5169 2646//5169 +f 2208//5170 2654//5170 2203//5170 +f 1898//5171 2611//5171 2613//5171 +f 2646//5172 2655//5172 2647//5172 +f 2654//5173 2655//5173 2646//5173 +f 1898//5174 1895//5174 2611//5174 +f 1901//5175 1902//5175 2624//5175 +f 2657//5176 2649//5176 2655//5176 +f 2655//5177 2649//5177 2647//5177 +f 1895//5178 2609//5178 2611//5178 +f 1902//5179 2623//5179 2624//5179 +f 2659//5180 2651//5180 2657//5180 +f 2657//5181 2651//5181 2649//5181 +f 1902//5182 1909//5182 2623//5182 +f 1895//5183 1893//5183 2609//5183 +f 1893//5184 1917//5184 2609//5184 +f 2166//5185 1652//5185 2157//5185 +f 2166//5186 1661//5186 1652//5186 +f 1633//5187 1661//5187 2166//5187 +f 1914//5188 1889//5188 1909//5188 +f 1909//5189 1889//5189 2623//5189 +f 1917//5190 1892//5190 1915//5190 +f 1893//5191 1892//5191 1917//5191 +f 2157//5192 1647//5192 2158//5192 +f 1652//5193 1647//5193 2157//5193 +f 1915//5194 1890//5194 1914//5194 +f 1633//5195 1663//5195 1661//5195 +f 1892//5196 1890//5196 1915//5196 +f 1914//5197 1890//5197 1889//5197 +f 2626//5198 2651//5198 2659//5198 +f 1633//5199 1636//5199 1663//5199 +f 2206//5200 2165//5200 2214//5200 +f 2198//5201 2214//5201 2165//5201 +f 2659//5202 1898//5202 2626//5202 +f 1647//5203 2185//5203 2158//5203 +f 1636//5204 2190//5204 1663//5204 +f 2185//5205 2165//5205 2158//5205 +f 1636//5206 2192//5206 2190//5206 +f 2185//5207 2184//5207 2165//5207 +f 1636//5208 1638//5208 2192//5208 +f 1638//5209 1669//5209 2192//5209 +f 2184//5210 2198//5210 2165//5210 +f 1675//5211 2198//5211 2184//5211 +f 1638//5212 1640//5212 1669//5212 +f 1669//5213 1640//5213 1670//5213 +f 1639//5214 1637//5214 1671//5214 +f 1639//5215 1671//5215 1672//5215 +f 2197//5216 1676//5216 2199//5216 +f 2197//5217 1674//5217 1676//5217 +f 2195//5218 1639//5218 1672//5218 +f 2195//5219 1674//5219 2197//5219 +f 2195//5220 1672//5220 1674//5220 +f 2213//5221 2205//5221 2202//5221 +f 2213//5222 2202//5222 2211//5222 +f 2215//5223 2207//5223 2205//5223 +f 2215//5224 2205//5224 2213//5224 +f 2618//5225 2631//5225 2637//5225 +f 2210//5226 2202//5226 2201//5226 +f 2614//5227 2631//5227 2618//5227 +f 2614//5228 1897//5228 2631//5228 +f 2210//5229 2211//5229 2202//5229 +f 1906//5230 2618//5230 2637//5230 +f 2653//5231 2201//5231 2645//5231 +f 2627//5232 1906//5232 2637//5232 +f 2653//5233 2210//5233 2201//5233 +f 2610//5234 1897//5234 2614//5234 +f 2656//5235 2645//5235 2648//5235 +f 2656//5236 2653//5236 2645//5236 +f 1896//5237 1897//5237 2610//5237 +f 1907//5238 1906//5238 2627//5238 +f 2650//5239 2658//5239 2656//5239 +f 2650//5240 2656//5240 2648//5240 +f 2608//5241 1896//5241 2610//5241 +f 2652//5242 2660//5242 2658//5242 +f 2630//5243 1907//5243 2627//5243 +f 2652//5244 2658//5244 2650//5244 +f 1912//5245 1907//5245 2630//5245 +f 1894//5246 1896//5246 2608//5246 +f 1918//5247 1894//5247 2608//5247 +f 1642//5248 2163//5248 2164//5248 +f 1651//5249 2163//5249 1642//5249 +f 1651//5250 1634//5250 2163//5250 +f 1888//5251 1913//5251 1912//5251 +f 1888//5252 1912//5252 2630//5252 +f 1643//5253 2164//5253 2176//5253 +f 1891//5254 1918//5254 1916//5254 +f 1643//5255 1642//5255 2164//5255 +f 1659//5256 1634//5256 1651//5256 +f 1891//5257 1894//5257 1918//5257 +f 1887//5258 1916//5258 1913//5258 +f 1635//5259 1634//5259 1659//5259 +f 1887//5260 1913//5260 1888//5260 +f 1887//5261 1891//5261 1916//5261 +f 2652//5262 2631//5262 2660//5262 +f 2183//5263 1643//5263 2176//5263 +f 1897//5264 2660//5264 2631//5264 +f 2215//5265 2199//5265 2162//5265 +f 2162//5266 2207//5266 2215//5266 +f 2191//5267 1635//5267 1659//5267 +f 2162//5268 2183//5268 2176//5268 +f 2193//5269 1635//5269 2191//5269 +f 2179//5270 2183//5270 2162//5270 +f 1637//5271 1635//5271 2193//5271 +f 1671//5272 1637//5272 2193//5272 +f 2199//5273 2179//5273 2162//5273 +f 2199//5274 1676//5274 2179//5274 +f 2661//5275 2636//5275 2662//5275 +f 2663//5276 2643//5276 2632//5276 +f 2663//5277 2632//5277 1886//5277 +f 2663//5278 1886//5278 1885//5278 +f 2663//5279 1885//5279 2664//5279 +f 2665//5280 2635//5280 2643//5280 +f 2665//5281 2664//5281 2662//5281 +f 2665//5282 2643//5282 2663//5282 +f 2665//5283 2663//5283 2664//5283 +f 2666//5284 2665//5284 2662//5284 +f 2666//5285 2635//5285 2665//5285 +f 2667//5286 2636//5286 2635//5286 +f 2667//5287 2635//5287 2666//5287 +f 2667//5288 2666//5288 2662//5288 +f 2667//5289 2662//5289 2636//5289 +f 2668//5290 2634//5290 2636//5290 +f 2668//5291 2661//5291 2669//5291 +f 2668//5292 2636//5292 2661//5292 +f 2670//5293 2633//5293 2634//5293 +f 2670//5294 2634//5294 2668//5294 +f 2670//5295 2668//5295 2669//5295 +f 2671//5296 2669//5296 2672//5296 +f 2671//5297 2670//5297 2669//5297 +f 2671//5298 2633//5298 2670//5298 +f 2673//5299 2628//5299 2633//5299 +f 2673//5300 2671//5300 2672//5300 +f 2673//5301 2633//5301 2671//5301 +f 2674//5302 1867//5302 1866//5302 +f 2674//5303 1866//5303 2628//5303 +f 2674//5304 2672//5304 1867//5304 +f 2674//5305 2628//5305 2673//5305 +f 2674//5306 2673//5306 2672//5306 +f 2640//5307 2675//5307 2676//5307 +f 2677//5308 2678//5308 1861//5308 +f 2677//5309 1861//5309 1860//5309 +f 2677//5310 1860//5310 2625//5310 +f 2679//5311 2625//5311 2629//5311 +f 2679//5312 2677//5312 2625//5312 +f 2679//5313 2678//5313 2677//5313 +f 2680//5314 2681//5314 2678//5314 +f 2680//5315 2679//5315 2629//5315 +f 2680//5316 2678//5316 2679//5316 +f 2682//5317 2629//5317 2639//5317 +f 2682//5318 2681//5318 2680//5318 +f 2682//5319 2680//5319 2629//5319 +f 2683//5320 2676//5320 2681//5320 +f 2683//5321 2681//5321 2682//5321 +f 2683//5322 2682//5322 2639//5322 +f 2684//5323 2639//5323 2640//5323 +f 2684//5324 2683//5324 2639//5324 +f 2684//5325 2640//5325 2676//5325 +f 2684//5326 2676//5326 2683//5326 +f 2685//5327 2640//5327 2642//5327 +f 2685//5328 2675//5328 2640//5328 +f 2686//5329 2675//5329 2685//5329 +f 2686//5330 2685//5330 2642//5330 +f 2687//5331 2688//5331 2675//5331 +f 2687//5332 2642//5332 2641//5332 +f 2687//5333 2675//5333 2686//5333 +f 2687//5334 2686//5334 2642//5334 +f 2689//5335 1841//5335 1840//5335 +f 2689//5336 1840//5336 2688//5336 +f 2689//5337 2641//5337 2644//5337 +f 2689//5338 2644//5338 1841//5338 +f 2689//5339 2688//5339 2687//5339 +f 2689//5340 2687//5340 2641//5340 +f 2690//5341 2622//5341 2621//5341 +f 2690//5342 2691//5342 2622//5342 +f 2690//5343 2692//5343 2691//5343 +f 2693//5344 2694//5344 2695//5344 +f 2693//5345 2695//5345 2696//5345 +f 2697//5346 2696//5346 2698//5346 +f 2697//5347 2693//5347 2696//5347 +f 2699//5348 2697//5348 2698//5348 +f 2699//5349 2698//5349 2700//5349 +f 2701//5350 2700//5350 2692//5350 +f 2701//5351 2699//5351 2700//5351 +f 2702//5352 2701//5352 2692//5352 +f 2702//5353 2621//5353 1919//5353 +f 2702//5354 1919//5354 1908//5354 +f 2702//5355 2690//5355 2621//5355 +f 2702//5356 2692//5356 2690//5356 +f 2703//5357 2704//5357 2705//5357 +f 2703//5358 2705//5358 2694//5358 +f 2706//5359 2703//5359 2694//5359 +f 2706//5360 2694//5360 2693//5360 +f 2707//5361 2704//5361 2703//5361 +f 2708//5362 2703//5362 2706//5362 +f 2708//5363 2707//5363 2703//5363 +f 2709//5364 2706//5364 2693//5364 +f 2709//5365 2693//5365 2697//5365 +f 2710//5366 2708//5366 2706//5366 +f 2710//5367 2706//5367 2709//5367 +f 2711//5368 2709//5368 2697//5368 +f 2711//5369 2697//5369 2699//5369 +f 2712//5370 2709//5370 2711//5370 +f 2712//5371 2710//5371 2709//5371 +f 2713//5372 2714//5372 1833//5372 +f 2713//5373 1833//5373 1831//5373 +f 2715//5374 2701//5374 2702//5374 +f 2713//5375 1831//5375 2617//5375 +f 2715//5376 2699//5376 2701//5376 +f 2715//5377 2702//5377 1908//5377 +f 2715//5378 2711//5378 2699//5378 +f 2716//5379 1908//5379 1911//5379 +f 2717//5380 2713//5380 2617//5380 +f 2716//5381 2712//5381 2711//5381 +f 2716//5382 1911//5382 2712//5382 +f 2717//5383 2714//5383 2713//5383 +f 2716//5384 2715//5384 1908//5384 +f 2716//5385 2711//5385 2715//5385 +f 2718//5386 2719//5386 2704//5386 +f 2720//5387 2714//5387 2717//5387 +f 2721//5388 2617//5388 2619//5388 +f 2718//5389 2704//5389 2707//5389 +f 2721//5390 2717//5390 2617//5390 +f 2722//5391 2707//5391 2708//5391 +f 2723//5392 2720//5392 2717//5392 +f 2723//5393 2721//5393 2619//5393 +f 2723//5394 2717//5394 2721//5394 +f 2722//5395 2718//5395 2707//5395 +f 2724//5396 2725//5396 2714//5396 +f 2726//5397 2708//5397 2710//5397 +f 2726//5398 2712//5398 1911//5398 +f 2726//5399 2710//5399 2712//5399 +f 2724//5400 2714//5400 2720//5400 +f 2726//5401 2722//5401 2708//5401 +f 2727//5402 2719//5402 2718//5402 +f 2728//5403 2724//5403 2720//5403 +f 2729//5404 1911//5404 1910//5404 +f 2728//5405 2720//5405 2723//5405 +f 2729//5406 2727//5406 2718//5406 +f 2729//5407 2726//5407 1911//5407 +f 2729//5408 2718//5408 2722//5408 +f 2730//5409 2728//5409 2723//5409 +f 2729//5410 2722//5410 2726//5410 +f 2730//5411 2723//5411 2619//5411 +f 2731//5412 1802//5412 1801//5412 +f 2731//5413 1801//5413 2719//5413 +f 2731//5414 1910//5414 1802//5414 +f 2731//5415 2719//5415 2727//5415 +f 2732//5416 2725//5416 2724//5416 +f 2731//5417 2729//5417 1910//5417 +f 2731//5418 2727//5418 2729//5418 +f 2733//5419 2724//5419 2728//5419 +f 2733//5420 2732//5420 2724//5420 +f 2734//5421 2619//5421 2622//5421 +f 2734//5422 2730//5422 2619//5422 +f 2735//5423 2728//5423 2730//5423 +f 2735//5424 2733//5424 2728//5424 +f 2695//5425 2705//5425 2725//5425 +f 2695//5426 2725//5426 2732//5426 +f 2691//5427 2734//5427 2622//5427 +f 2691//5428 2730//5428 2734//5428 +f 2691//5429 2735//5429 2730//5429 +f 2696//5430 2732//5430 2733//5430 +f 2696//5431 2695//5431 2732//5431 +f 2698//5432 2733//5432 2735//5432 +f 2698//5433 2696//5433 2733//5433 +f 2700//5434 2735//5434 2691//5434 +f 2700//5435 2698//5435 2735//5435 +f 2692//5436 2700//5436 2691//5436 +f 2694//5437 2705//5437 2695//5437 +f 2736//5438 1876//5438 2737//5438 +f 2736//5439 2737//5439 2738//5439 +f 2739//5440 1774//5440 2740//5440 +f 2739//5441 2741//5441 1774//5441 +f 2742//5442 1767//5442 1770//5442 +f 2743//5443 1885//5443 1881//5443 +f 2743//5444 2744//5444 2741//5444 +f 2743//5445 2736//5445 2744//5445 +f 2743//5446 1881//5446 2736//5446 +f 2745//5447 2740//5447 2746//5447 +f 2745//5448 2739//5448 2740//5448 +f 2747//5449 2664//5449 1885//5449 +f 2747//5450 1885//5450 2743//5450 +f 2747//5451 2741//5451 2739//5451 +f 2747//5452 2743//5452 2741//5452 +f 2748//5453 2746//5453 2749//5453 +f 2748//5454 2745//5454 2746//5454 +f 2750//5455 2662//5455 2664//5455 +f 2750//5456 2739//5456 2745//5456 +f 2750//5457 2747//5457 2739//5457 +f 2750//5458 2664//5458 2747//5458 +f 2751//5459 2749//5459 2752//5459 +f 2751//5460 2748//5460 2749//5460 +f 2753//5461 2661//5461 2662//5461 +f 2753//5462 2745//5462 2748//5462 +f 2753//5463 2750//5463 2745//5463 +f 2753//5464 2662//5464 2750//5464 +f 2754//5465 2752//5465 2755//5465 +f 2754//5466 2751//5466 2752//5466 +f 2756//5467 2669//5467 2661//5467 +f 2756//5468 2661//5468 2753//5468 +f 2756//5469 2748//5469 2751//5469 +f 2756//5470 2753//5470 2748//5470 +f 2757//5471 2755//5471 1763//5471 +f 2757//5472 2754//5472 2755//5472 +f 2758//5473 2756//5473 2751//5473 +f 2758//5474 2672//5474 2669//5474 +f 2758//5475 2669//5475 2756//5475 +f 2758//5476 2751//5476 2754//5476 +f 2759//5477 1763//5477 1762//5477 +f 2759//5478 2757//5478 1763//5478 +f 2760//5479 1868//5479 1867//5479 +f 2760//5480 2754//5480 2757//5480 +f 2760//5481 1867//5481 2672//5481 +f 2760//5482 2672//5482 2758//5482 +f 2760//5483 2758//5483 2754//5483 +f 2761//5484 1762//5484 1765//5484 +f 2761//5485 1765//5485 2742//5485 +f 2761//5486 2759//5486 1762//5486 +f 2762//5487 1864//5487 1868//5487 +f 2762//5488 2757//5488 2759//5488 +f 2762//5489 2760//5489 2757//5489 +f 2762//5490 1868//5490 2760//5490 +f 2763//5491 1862//5491 1864//5491 +f 2763//5492 2762//5492 2759//5492 +f 2763//5493 1864//5493 2762//5493 +f 2763//5494 2761//5494 2742//5494 +f 2742//5495 1765//5495 1767//5495 +f 2763//5496 2742//5496 2764//5496 +f 2763//5497 2764//5497 1862//5497 +f 2763//5498 2759//5498 2761//5498 +f 2738//5499 1770//5499 1772//5499 +f 2738//5500 2742//5500 1770//5500 +f 2744//5501 1772//5501 1774//5501 +f 2744//5502 2738//5502 1772//5502 +f 2737//5503 1876//5503 1862//5503 +f 2737//5504 2764//5504 2742//5504 +f 2737//5505 1862//5505 2764//5505 +f 2737//5506 2742//5506 2738//5506 +f 2741//5507 2744//5507 1774//5507 +f 2736//5508 1881//5508 1876//5508 +f 2736//5509 2738//5509 2744//5509 +f 2765//5510 2740//5510 1774//5510 +f 2765//5511 1774//5511 1773//5511 +f 2766//5512 2746//5512 2740//5512 +f 2766//5513 2740//5513 2765//5513 +f 2767//5514 2752//5514 2749//5514 +f 2767//5515 2749//5515 2746//5515 +f 2767//5516 2746//5516 2766//5516 +f 2768//5517 2755//5517 2752//5517 +f 2768//5518 2752//5518 2767//5518 +f 2769//5519 1763//5519 2755//5519 +f 2769//5520 2755//5520 2768//5520 +f 1761//5521 1763//5521 2769//5521 +f 2770//5522 1769//5522 1768//5522 +f 2770//5523 2771//5523 2772//5523 +f 2773//5524 2774//5524 2775//5524 +f 2770//5525 1768//5525 2771//5525 +f 2770//5526 2772//5526 2776//5526 +f 2777//5527 2778//5527 2779//5527 +f 2780//5528 2770//5528 2776//5528 +f 2781//5529 2769//5529 2768//5529 +f 2780//5530 1769//5530 2770//5530 +f 2781//5531 2782//5531 2783//5531 +f 2780//5532 2776//5532 2784//5532 +f 2781//5533 2768//5533 2773//5533 +f 2781//5534 2773//5534 2782//5534 +f 2785//5535 2786//5535 2787//5535 +f 2788//5536 2779//5536 2789//5536 +f 2788//5537 2777//5537 2779//5537 +f 2790//5538 2787//5538 2791//5538 +f 2790//5539 2785//5539 2787//5539 +f 2792//5540 1771//5540 1769//5540 +f 2793//5541 2788//5541 2789//5541 +f 2792//5542 1769//5542 2780//5542 +f 2792//5543 2784//5543 2794//5543 +f 2795//5544 2769//5544 2781//5544 +f 2795//5545 2783//5545 2778//5545 +f 2795//5546 2781//5546 2783//5546 +f 2792//5547 2780//5547 2784//5547 +f 2796//5548 2794//5548 2786//5548 +f 2796//5549 1771//5549 2792//5549 +f 2797//5550 1761//5550 2769//5550 +f 2797//5551 2795//5551 2778//5551 +f 2796//5552 2792//5552 2794//5552 +f 2797//5553 2778//5553 2777//5553 +f 2797//5554 2769//5554 2795//5554 +f 2798//5555 2790//5555 2791//5555 +f 2799//5556 2789//5556 2800//5556 +f 2801//5557 2791//5557 2802//5557 +f 2799//5558 2793//5558 2789//5558 +f 2801//5559 2798//5559 2791//5559 +f 2803//5560 1773//5560 1771//5560 +f 2803//5561 1771//5561 2796//5561 +f 2804//5562 2799//5562 2800//5562 +f 2803//5563 2796//5563 2786//5563 +f 2803//5564 2786//5564 2785//5564 +f 2805//5565 2777//5565 2788//5565 +f 2805//5566 1761//5566 2797//5566 +f 2805//5567 2797//5567 2777//5567 +f 2806//5568 1773//5568 2803//5568 +f 2806//5569 2785//5569 2790//5569 +f 2806//5570 2803//5570 2785//5570 +f 2807//5571 1764//5571 1761//5571 +f 2807//5572 2788//5572 2793//5572 +f 2807//5573 2805//5573 2788//5573 +f 2807//5574 1761//5574 2805//5574 +f 2808//5575 2801//5575 2802//5575 +f 2809//5576 2800//5576 2810//5576 +f 2809//5577 2804//5577 2800//5577 +f 2811//5578 2765//5578 1773//5578 +f 2811//5579 2790//5579 2798//5579 +f 2811//5580 1773//5580 2806//5580 +f 2812//5581 2810//5581 2813//5581 +f 2812//5582 2813//5582 2772//5582 +f 2811//5583 2806//5583 2790//5583 +f 2812//5584 2809//5584 2810//5584 +f 2814//5585 2808//5585 2802//5585 +f 2815//5586 2807//5586 2793//5586 +f 2815//5587 2793//5587 2799//5587 +f 2814//5588 2802//5588 2816//5588 +f 2815//5589 1764//5589 2807//5589 +f 2817//5590 2811//5590 2798//5590 +f 2818//5591 1766//5591 1764//5591 +f 2818//5592 2799//5592 2804//5592 +f 2818//5593 2815//5593 2799//5593 +f 2817//5594 2798//5594 2801//5594 +f 2818//5595 1764//5595 2815//5595 +f 2817//5596 2765//5596 2811//5596 +f 2819//5597 2814//5597 2816//5597 +f 2820//5598 2804//5598 2809//5598 +f 2820//5599 2818//5599 2804//5599 +f 2821//5600 2801//5600 2808//5600 +f 2820//5601 1766//5601 2818//5601 +f 2822//5602 1768//5602 1766//5602 +f 2821//5603 2766//5603 2765//5603 +f 2822//5604 2772//5604 2771//5604 +f 2821//5605 2817//5605 2801//5605 +f 2822//5606 2771//5606 1768//5606 +f 2821//5607 2765//5607 2817//5607 +f 2822//5608 2812//5608 2772//5608 +f 2822//5609 2809//5609 2812//5609 +f 2822//5610 1766//5610 2820//5610 +f 2822//5611 2820//5611 2809//5611 +f 2823//5612 2816//5612 2824//5612 +f 2823//5613 2819//5613 2816//5613 +f 2825//5614 2766//5614 2821//5614 +f 2825//5615 2821//5615 2808//5615 +f 2825//5616 2808//5616 2814//5616 +f 2775//5617 2823//5617 2824//5617 +f 2826//5618 2767//5618 2766//5618 +f 2826//5619 2766//5619 2825//5619 +f 2826//5620 2825//5620 2814//5620 +f 2826//5621 2814//5621 2819//5621 +f 2782//5622 2824//5622 2827//5622 +f 2782//5623 2775//5623 2824//5623 +f 2828//5624 2767//5624 2826//5624 +f 2828//5625 2826//5625 2819//5625 +f 2776//5626 2772//5626 2813//5626 +f 2828//5627 2819//5627 2823//5627 +f 2776//5628 2813//5628 2829//5628 +f 2783//5629 2782//5629 2827//5629 +f 2784//5630 2829//5630 2830//5630 +f 2774//5631 2768//5631 2767//5631 +f 2774//5632 2823//5632 2775//5632 +f 2774//5633 2828//5633 2823//5633 +f 2784//5634 2776//5634 2829//5634 +f 2774//5635 2767//5635 2828//5635 +f 2794//5636 2784//5636 2830//5636 +f 2778//5637 2827//5637 2779//5637 +f 2778//5638 2783//5638 2827//5638 +f 2786//5639 2830//5639 2787//5639 +f 2786//5640 2794//5640 2830//5640 +f 2773//5641 2768//5641 2774//5641 +f 2773//5642 2775//5642 2782//5642 +f 2831//5643 2800//5643 2832//5643 +f 2831//5644 2832//5644 2833//5644 +f 2834//5645 2835//5645 2836//5645 +f 2831//5646 2837//5646 2838//5646 +f 2831//5647 2838//5647 2813//5647 +f 2831//5648 2839//5648 2837//5648 +f 2831//5649 2833//5649 2839//5649 +f 2834//5650 2840//5650 2835//5650 +f 2841//5651 2836//5651 2842//5651 +f 2841//5652 2834//5652 2836//5652 +f 2843//5653 2842//5653 2844//5653 +f 2843//5654 2841//5654 2842//5654 +f 2845//5655 2844//5655 2846//5655 +f 2845//5656 2843//5656 2844//5656 +f 2847//5657 2846//5657 2848//5657 +f 2847//5658 2845//5658 2846//5658 +f 2833//5659 2848//5659 2849//5659 +f 2833//5660 2847//5660 2848//5660 +f 2839//5661 2850//5661 2851//5661 +f 2839//5662 2849//5662 2850//5662 +f 2839//5663 2851//5663 2837//5663 +f 2839//5664 2833//5664 2849//5664 +f 2852//5665 2829//5665 2813//5665 +f 2852//5666 2838//5666 2837//5666 +f 2852//5667 2813//5667 2838//5667 +f 2837//5668 2851//5668 2853//5668 +f 2852//5669 2837//5669 2854//5669 +f 2855//5670 2830//5670 2829//5670 +f 2855//5671 2854//5671 2856//5671 +f 2855//5672 2829//5672 2852//5672 +f 2855//5673 2852//5673 2854//5673 +f 2857//5674 2787//5674 2830//5674 +f 2857//5675 2855//5675 2856//5675 +f 2857//5676 2856//5676 2858//5676 +f 2857//5677 2830//5677 2855//5677 +f 2859//5678 2791//5678 2787//5678 +f 2859//5679 2858//5679 2860//5679 +f 2859//5680 2857//5680 2858//5680 +f 2859//5681 2787//5681 2857//5681 +f 2861//5682 2859//5682 2860//5682 +f 2861//5683 2802//5683 2791//5683 +f 2861//5684 2791//5684 2859//5684 +f 2861//5685 2860//5685 2840//5685 +f 2862//5686 2802//5686 2861//5686 +f 2862//5687 2816//5687 2802//5687 +f 2862//5688 2861//5688 2840//5688 +f 2862//5689 2840//5689 2834//5689 +f 2863//5690 2824//5690 2816//5690 +f 2863//5691 2862//5691 2834//5691 +f 2854//5692 2837//5692 2853//5692 +f 2863//5693 2816//5693 2862//5693 +f 2863//5694 2834//5694 2841//5694 +f 2864//5695 2827//5695 2824//5695 +f 2856//5696 2853//5696 2865//5696 +f 2864//5697 2824//5697 2863//5697 +f 2864//5698 2863//5698 2841//5698 +f 2856//5699 2854//5699 2853//5699 +f 2864//5700 2841//5700 2843//5700 +f 2866//5701 2779//5701 2827//5701 +f 2858//5702 2865//5702 2867//5702 +f 2866//5703 2827//5703 2864//5703 +f 2866//5704 2864//5704 2843//5704 +f 2866//5705 2843//5705 2845//5705 +f 2858//5706 2856//5706 2865//5706 +f 2868//5707 2789//5707 2779//5707 +f 2860//5708 2867//5708 2869//5708 +f 2868//5709 2866//5709 2845//5709 +f 2868//5710 2845//5710 2847//5710 +f 2860//5711 2858//5711 2867//5711 +f 2868//5712 2779//5712 2866//5712 +f 2832//5713 2800//5713 2789//5713 +f 2832//5714 2789//5714 2868//5714 +f 2840//5715 2869//5715 2835//5715 +f 2832//5716 2847//5716 2833//5716 +f 2832//5717 2868//5717 2847//5717 +f 2840//5718 2860//5718 2869//5718 +f 2831//5719 2813//5719 2810//5719 +f 2831//5720 2810//5720 2800//5720 +f 2870//5721 2871//5721 1748//5721 +f 2872//5722 2873//5722 2874//5722 +f 2875//5723 2865//5723 2853//5723 +f 2870//5724 2876//5724 2871//5724 +f 2875//5725 2874//5725 2877//5725 +f 2875//5726 2872//5726 2874//5726 +f 2875//5727 2853//5727 2872//5727 +f 2878//5728 2844//5728 2879//5728 +f 2878//5729 2880//5729 2881//5729 +f 2878//5730 2879//5730 2880//5730 +f 2882//5731 1757//5731 1759//5731 +f 2882//5732 2883//5732 1757//5732 +f 2884//5733 2870//5733 1748//5733 +f 2885//5734 2882//5734 1759//5734 +f 2886//5735 1748//5735 1750//5735 +f 2887//5736 2865//5736 2875//5736 +f 2886//5737 2884//5737 1748//5737 +f 2887//5738 2877//5738 2888//5738 +f 2889//5739 2846//5739 2844//5739 +f 2887//5740 2875//5740 2877//5740 +f 2889//5741 2881//5741 2876//5741 +f 2889//5742 2844//5742 2878//5742 +f 2890//5743 2867//5743 2865//5743 +f 2890//5744 2888//5744 2883//5744 +f 2889//5745 2878//5745 2881//5745 +f 2890//5746 2865//5746 2887//5746 +f 2890//5747 2887//5747 2888//5747 +f 2891//5748 2876//5748 2870//5748 +f 2891//5749 2889//5749 2876//5749 +f 2892//5750 1759//5750 2893//5750 +f 2891//5751 2846//5751 2889//5751 +f 2892//5752 2885//5752 1759//5752 +f 2894//5753 2892//5753 2893//5753 +f 2895//5754 2886//5754 1750//5754 +f 2896//5755 1750//5755 1752//5755 +f 2897//5756 2883//5756 2882//5756 +f 2896//5757 2895//5757 1750//5757 +f 2897//5758 2890//5758 2883//5758 +f 2897//5759 2867//5759 2890//5759 +f 2898//5760 2848//5760 2846//5760 +f 2898//5761 2891//5761 2870//5761 +f 2899//5762 2869//5762 2867//5762 +f 2898//5763 2870//5763 2884//5763 +f 2899//5764 2867//5764 2897//5764 +f 2898//5765 2846//5765 2891//5765 +f 2899//5766 2882//5766 2885//5766 +f 2899//5767 2897//5767 2882//5767 +f 2900//5768 2848//5768 2898//5768 +f 2900//5769 2884//5769 2886//5769 +f 2900//5770 2898//5770 2884//5770 +f 2901//5771 2893//5771 2902//5771 +f 2901//5772 2894//5772 2893//5772 +f 2903//5773 2896//5773 1752//5773 +f 2904//5774 2885//5774 2892//5774 +f 2904//5775 2869//5775 2899//5775 +f 2905//5776 1752//5776 1755//5776 +f 2904//5777 2899//5777 2885//5777 +f 2905//5778 1755//5778 2873//5778 +f 2905//5779 2903//5779 1752//5779 +f 2906//5780 2849//5780 2848//5780 +f 2907//5781 2901//5781 2902//5781 +f 2906//5782 2886//5782 2895//5782 +f 2906//5783 2848//5783 2900//5783 +f 2906//5784 2900//5784 2886//5784 +f 2908//5785 2904//5785 2892//5785 +f 2908//5786 2835//5786 2869//5786 +f 2909//5787 2849//5787 2906//5787 +f 2908//5788 2869//5788 2904//5788 +f 2909//5789 2895//5789 2896//5789 +f 2908//5790 2892//5790 2894//5790 +f 2909//5791 2906//5791 2895//5791 +f 2910//5792 2907//5792 2902//5792 +f 2911//5793 2850//5793 2849//5793 +f 2911//5794 2909//5794 2896//5794 +f 2910//5795 2902//5795 2912//5795 +f 2911//5796 2896//5796 2903//5796 +f 2913//5797 2894//5797 2901//5797 +f 2911//5798 2849//5798 2909//5798 +f 2914//5799 2851//5799 2850//5799 +f 2913//5800 2835//5800 2908//5800 +f 2914//5801 2873//5801 2915//5801 +f 2913//5802 2908//5802 2894//5802 +f 2914//5803 2915//5803 2851//5803 +f 2914//5804 2905//5804 2873//5804 +f 2914//5805 2903//5805 2905//5805 +f 2914//5806 2850//5806 2911//5806 +f 2914//5807 2911//5807 2903//5807 +f 2916//5808 2910//5808 2912//5808 +f 2917//5809 2836//5809 2835//5809 +f 2917//5810 2901//5810 2907//5810 +f 2917//5811 2913//5811 2901//5811 +f 2917//5812 2835//5812 2913//5812 +f 2918//5813 2916//5813 2912//5813 +f 2918//5814 2912//5814 2919//5814 +f 2920//5815 2836//5815 2917//5815 +f 2920//5816 2917//5816 2907//5816 +f 2920//5817 2907//5817 2910//5817 +f 2880//5818 2918//5818 2919//5818 +f 2921//5819 2836//5819 2920//5819 +f 2921//5820 2842//5820 2836//5820 +f 2921//5821 2920//5821 2910//5821 +f 2874//5822 2873//5822 1755//5822 +f 2921//5823 2910//5823 2916//5823 +f 2874//5824 1755//5824 1754//5824 +f 2881//5825 2919//5825 2871//5825 +f 2881//5826 2880//5826 2919//5826 +f 2922//5827 2916//5827 2918//5827 +f 2877//5828 2874//5828 1754//5828 +f 2922//5829 2921//5829 2916//5829 +f 2922//5830 2842//5830 2921//5830 +f 2888//5831 1754//5831 1757//5831 +f 2888//5832 2877//5832 1754//5832 +f 2876//5833 2881//5833 2871//5833 +f 2883//5834 2888//5834 1757//5834 +f 2879//5835 2844//5835 2842//5835 +f 2879//5836 2842//5836 2922//5836 +f 2879//5837 2922//5837 2918//5837 +f 2879//5838 2918//5838 2880//5838 +f 2872//5839 2853//5839 2851//5839 +f 2872//5840 2915//5840 2873//5840 +f 2872//5841 2851//5841 2915//5841 +f 1760//5842 2893//5842 1759//5842 +f 2923//5843 2902//5843 2893//5843 +f 2923//5844 2893//5844 1760//5844 +f 2924//5845 2912//5845 2902//5845 +f 2924//5846 2902//5846 2923//5846 +f 2925//5847 2912//5847 2924//5847 +f 2926//5848 2919//5848 2912//5848 +f 2926//5849 2912//5849 2925//5849 +f 2927//5850 2871//5850 2919//5850 +f 2927//5851 2919//5851 2926//5851 +f 1749//5852 1748//5852 2871//5852 +f 1749//5853 2871//5853 2927//5853 +f 2928//5854 1758//5854 2929//5854 +f 2928//5855 2929//5855 2930//5855 +f 2931//5856 1861//5856 2678//5856 +f 2931//5857 2932//5857 1861//5857 +f 2933//5858 1838//5858 1837//5858 +f 2934//5859 2935//5859 2932//5859 +f 2934//5860 1760//5860 2928//5860 +f 2934//5861 2928//5861 2935//5861 +f 2936//5862 2678//5862 2681//5862 +f 2936//5863 2931//5863 2678//5863 +f 2937//5864 2923//5864 1760//5864 +f 2937//5865 2932//5865 2931//5865 +f 2937//5866 1760//5866 2934//5866 +f 2937//5867 2934//5867 2932//5867 +f 2938//5868 2681//5868 2676//5868 +f 2938//5869 2936//5869 2681//5869 +f 1756//5870 1753//5870 2939//5870 +f 2940//5871 2924//5871 2923//5871 +f 2940//5872 2937//5872 2931//5872 +f 2940//5873 2923//5873 2937//5873 +f 2940//5874 2931//5874 2936//5874 +f 2941//5875 2676//5875 2675//5875 +f 2941//5876 2938//5876 2676//5876 +f 2942//5877 2925//5877 2924//5877 +f 2942//5878 2940//5878 2936//5878 +f 2942//5879 2924//5879 2940//5879 +f 2942//5880 2936//5880 2938//5880 +f 2943//5881 2675//5881 2688//5881 +f 2943//5882 2941//5882 2675//5882 +f 2944//5883 2926//5883 2925//5883 +f 2944//5884 2925//5884 2942//5884 +f 2944//5885 2938//5885 2941//5885 +f 2944//5886 2942//5886 2938//5886 +f 2945//5887 2688//5887 1840//5887 +f 2945//5888 1840//5888 1843//5888 +f 2945//5889 2943//5889 2688//5889 +f 2946//5890 2944//5890 2941//5890 +f 2946//5891 2927//5891 2926//5891 +f 2946//5892 2926//5892 2944//5892 +f 2946//5893 2941//5893 2943//5893 +f 2947//5894 1843//5894 1847//5894 +f 2947//5895 2945//5895 1843//5895 +f 2948//5896 2943//5896 2945//5896 +f 2948//5897 1749//5897 2927//5897 +f 2948//5898 2927//5898 2946//5898 +f 2948//5899 2946//5899 2943//5899 +f 2949//5900 1847//5900 1838//5900 +f 2949//5901 1838//5901 2933//5901 +f 2949//5902 2947//5902 1847//5902 +f 2950//5903 2945//5903 2947//5903 +f 2950//5904 1747//5904 1749//5904 +f 2950//5905 2948//5905 2945//5905 +f 2950//5906 1749//5906 2948//5906 +f 2951//5907 1751//5907 1747//5907 +f 2951//5908 1747//5908 2950//5908 +f 2951//5909 2949//5909 2933//5909 +f 2951//5910 2933//5910 2939//5910 +f 2951//5911 2950//5911 2947//5911 +f 2951//5912 2947//5912 2949//5912 +f 2951//5913 2939//5913 1751//5913 +f 1753//5914 1751//5914 2939//5914 +f 2930//5915 2933//5915 1837//5915 +f 2935//5916 1837//5916 1857//5916 +f 2935//5917 2930//5917 1837//5917 +f 2929//5918 1758//5918 1756//5918 +f 2929//5919 2939//5919 2933//5919 +f 2929//5920 1756//5920 2939//5920 +f 2929//5921 2933//5921 2930//5921 +f 2932//5922 1857//5922 1861//5922 +f 2932//5923 2935//5923 1857//5923 +f 2928//5924 1760//5924 1758//5924 +f 2928//5925 2930//5925 2935//5925 +f 2952//5926 2953//5926 2954//5926 +f 2955//5927 2956//5927 2957//5927 +f 2952//5928 2958//5928 2953//5928 +f 2955//5929 2959//5929 2956//5929 +f 2960//5930 1904//5930 1903//5930 +f 2960//5931 1903//5931 2961//5931 +f 2960//5932 2961//5932 2962//5932 +f 2963//5933 2957//5933 2964//5933 +f 2963//5934 2955//5934 2957//5934 +f 2965//5935 1710//5935 2966//5935 +f 2967//5936 2962//5936 2958//5936 +f 2965//5937 2968//5937 2969//5937 +f 2965//5938 2969//5938 1710//5938 +f 2967//5939 2960//5939 2962//5939 +f 2970//5940 2958//5940 2952//5940 +f 2970//5941 2967//5941 2958//5941 +f 2971//5942 2972//5942 2973//5942 +f 2974//5943 2975//5943 2976//5943 +f 2971//5944 2973//5944 2977//5944 +f 2978//5945 2979//5945 2968//5945 +f 2971//5946 2977//5946 2980//5946 +f 2978//5947 2965//5947 2966//5947 +f 2981//5948 2972//5948 2971//5948 +f 2981//5949 2954//5949 2972//5949 +f 2978//5950 2968//5950 2965//5950 +f 2982//5951 2976//5951 2983//5951 +f 2981//5952 2971//5952 2980//5952 +f 2984//5953 1905//5953 1904//5953 +f 2982//5954 2974//5954 2976//5954 +f 2984//5955 1904//5955 2960//5955 +f 2984//5956 2960//5956 2967//5956 +f 2985//5957 2983//5957 2959//5957 +f 2986//5958 2967//5958 2970//5958 +f 2986//5959 2984//5959 2967//5959 +f 2985//5960 2982//5960 2983//5960 +f 2987//5961 1722//5961 1721//5961 +f 2987//5962 1721//5962 1905//5962 +f 2987//5963 1905//5963 2984//5963 +f 2988//5964 1900//5964 1899//5964 +f 2987//5965 2984//5965 2986//5965 +f 2989//5966 2980//5966 2990//5966 +f 2988//5967 1899//5967 2975//5967 +f 2989//5968 2952//5968 2954//5968 +f 2989//5969 2981//5969 2980//5969 +f 2989//5970 2954//5970 2981//5970 +f 2991//5971 1903//5971 1900//5971 +f 2991//5972 1900//5972 2988//5972 +f 2992//5973 2952//5973 2989//5973 +f 2992//5974 2970//5974 2952//5974 +f 2992//5975 2989//5975 2990//5975 +f 2993//5976 2959//5976 2955//5976 +f 2994//5977 2986//5977 2970//5977 +f 2993//5978 2985//5978 2959//5978 +f 2994//5979 2992//5979 2990//5979 +f 2994//5980 2970//5980 2992//5980 +f 2973//5981 2993//5981 2955//5981 +f 2995//5982 2990//5982 1722//5982 +f 2995//5983 1722//5983 2987//5983 +f 2995//5984 2994//5984 2990//5984 +f 2995//5985 2987//5985 2986//5985 +f 2973//5986 2955//5986 2963//5986 +f 2995//5987 2986//5987 2994//5987 +f 2996//5988 2975//5988 2974//5988 +f 2996//5989 2988//5989 2975//5989 +f 2997//5990 2612//5990 1689//5990 +f 2998//5991 1903//5991 2991//5991 +f 2969//5992 1689//5992 1710//5992 +f 2998//5993 2988//5993 2996//5993 +f 2969//5994 2997//5994 1689//5994 +f 2998//5995 2991//5995 2988//5995 +f 2999//5996 2616//5996 2612//5996 +f 3000//5997 2996//5997 2974//5997 +f 3000//5998 2974//5998 2982//5998 +f 3001//5999 2998//5999 2996//5999 +f 3002//6000 2616//6000 2999//6000 +f 3001//6001 2996//6001 3000//6001 +f 3003//6002 2999//6002 2612//6002 +f 3003//6003 2612//6003 2997//6003 +f 2968//6004 3003//6004 2997//6004 +f 3004//6005 2966//6005 3005//6005 +f 3004//6006 2979//6006 2978//6006 +f 3004//6007 2964//6007 2979//6007 +f 2968//6008 2997//6008 2969//6008 +f 3004//6009 2978//6009 2966//6009 +f 3006//6010 2999//6010 3003//6010 +f 3006//6011 3002//6011 2999//6011 +f 3007//6012 3000//6012 2982//6012 +f 3007//6013 2982//6013 2985//6013 +f 2979//6014 3003//6014 2968//6014 +f 2979//6015 3006//6015 3003//6015 +f 3008//6016 2620//6016 2616//6016 +f 3009//6017 3001//6017 3000//6017 +f 3009//6018 3000//6018 3007//6018 +f 3010//6019 2964//6019 3004//6019 +f 3011//6020 3008//6020 2616//6020 +f 3010//6021 2963//6021 2964//6021 +f 3010//6022 3004//6022 3005//6022 +f 3012//6023 2985//6023 2993//6023 +f 3012//6024 3007//6024 2985//6024 +f 2976//6025 1899//6025 2620//6025 +f 2976//6026 2620//6026 3008//6026 +f 2956//6027 2616//6027 3002//6027 +f 2953//6028 3009//6028 3007//6028 +f 2956//6029 3011//6029 2616//6029 +f 2953//6030 3007//6030 3012//6030 +f 2972//6031 3012//6031 2993//6031 +f 2972//6032 2993//6032 2973//6032 +f 2983//6033 3008//6033 3011//6033 +f 2954//6034 2953//6034 3012//6034 +f 2983//6035 2976//6035 3008//6035 +f 2954//6036 3012//6036 2972//6036 +f 2957//6037 3002//6037 3006//6037 +f 2961//6038 2998//6038 3001//6038 +f 2957//6039 2956//6039 3002//6039 +f 2961//6040 1903//6040 2998//6040 +f 2962//6041 2961//6041 3001//6041 +f 2962//6042 3001//6042 3009//6042 +f 2959//6043 3011//6043 2956//6043 +f 2959//6044 2983//6044 3011//6044 +f 2977//6045 2963//6045 3010//6045 +f 2977//6046 2973//6046 2963//6046 +f 2964//6047 2957//6047 3006//6047 +f 2977//6048 3005//6048 2980//6048 +f 2964//6049 3006//6049 2979//6049 +f 2977//6050 3010//6050 3005//6050 +f 2958//6051 3009//6051 2953//6051 +f 2975//6052 1899//6052 2976//6052 +f 2958//6053 2962//6053 3009//6053 +f 2966//6054 1722//6054 3005//6054 +f 3005//6055 1722//6055 2980//6055 +f 2980//6056 1722//6056 2990//6056 +f 1734//6057 1715//6057 1698//6057 +f 1698//6058 1715//6058 1699//6058 +f 1699//6059 1715//6059 1710//6059 +f 1722//6060 1715//6060 1693//6060 +f 1710//6061 1715//6061 2966//6061 +f 2966//6062 1715//6062 1722//6062 +f 2719//6063 1801//6063 1803//6063 +f 2704//6064 1803//6064 1815//6064 +f 2704//6065 2719//6065 1803//6065 +f 2705//6066 1815//6066 1781//6066 +f 2705//6067 2704//6067 1815//6067 +f 2725//6068 1781//6068 1780//6068 +f 2725//6069 2705//6069 1781//6069 +f 2714//6070 1797//6070 1833//6070 +f 2714//6071 1780//6071 1797//6071 +f 2714//6072 2725//6072 1780//6072 +g Mirror450x225 (Meshed) +f 3013//6073 3014//6073 3015//6073 +f 3013//6074 3015//6074 3016//6074 +f 3017//6075 3016//6075 3018//6075 +f 3017//6076 3013//6076 3016//6076 +f 3019//6077 3018//6077 3020//6077 +f 3019//6078 3017//6078 3018//6078 +f 3021//6079 3022//6079 3015//6079 +f 3021//6080 3015//6080 3014//6080 +f 3023//6081 3024//6081 3025//6081 +f 3023//6082 3025//6082 3026//6082 +f 3027//6083 3026//6083 3028//6083 +f 3027//6084 3023//6084 3026//6084 +f 3021//6085 3028//6085 3022//6085 +f 3021//6086 3027//6086 3028//6086 +f 3029//6087 3030//6087 3025//6087 +f 3029//6088 3025//6088 3024//6088 +f 3030//6089 3029//6089 3031//6089 +f 3030//6090 3031//6090 3032//6090 +f 3032//6091 3033//6091 3034//6091 +f 3031//6092 3033//6092 3032//6092 +f 3034//6093 3035//6093 3036//6093 +f 3033//6094 3035//6094 3034//6094 +f 3036//6095 3037//6095 3038//6095 +f 3035//6096 3037//6096 3036//6096 +f 3038//6097 3039//6097 3040//6097 +f 3037//6098 3039//6098 3038//6098 +f 3040//6099 3041//6099 3042//6099 +f 3039//6100 3041//6100 3040//6100 +f 3043//6101 3044//6101 3042//6101 +f 3043//6102 3042//6102 3041//6102 +f 3045//6103 3046//6103 3044//6103 +f 3045//6104 3044//6104 3043//6104 +f 3047//6105 3048//6105 3049//6105 +f 3047//6106 3049//6106 3050//6106 +f 3051//6107 3050//6107 3052//6107 +f 3051//6108 3047//6108 3050//6108 +f 3045//6109 3052//6109 3046//6109 +f 3045//6110 3051//6110 3052//6110 +f 3049//6111 3048//6111 3053//6111 +f 3049//6112 3053//6112 3054//6112 +f 3055//6113 3056//6113 3057//6113 +f 3055//6114 3057//6114 3058//6114 +f 3059//6115 3058//6115 3060//6115 +f 3059//6116 3055//6116 3058//6116 +f 3053//6117 3060//6117 3054//6117 +f 3053//6118 3059//6118 3060//6118 +f 3057//6119 3056//6119 3061//6119 +f 3057//6120 3061//6120 3062//6120 +f 3063//6121 3064//6121 3062//6121 +f 3063//6122 3062//6122 3061//6122 +f 3064//6123 3065//6123 3066//6123 +f 3063//6124 3065//6124 3064//6124 +f 3066//6125 3067//6125 3068//6125 +f 3065//6126 3067//6126 3066//6126 +f 3068//6127 3069//6127 3070//6127 +f 3067//6128 3069//6128 3068//6128 +f 3070//6129 3071//6129 3072//6129 +f 3069//6130 3071//6130 3070//6130 +f 3072//6131 3073//6131 3074//6131 +f 3071//6132 3073//6132 3072//6132 +f 3074//6133 3073//6133 3075//6133 +f 3074//6134 3075//6134 3076//6134 +f 3076//6135 3075//6135 3019//6135 +f 3076//6136 3019//6136 3020//6136 +f 3017//6137 3019//6137 3013//6137 +f 3013//6138 3019//6138 3014//6138 +f 3019//6139 3035//6139 3014//6139 +f 3014//6140 3035//6140 3033//6140 +f 3033//6141 3031//6141 3014//6141 +f 3031//6142 3021//6142 3014//6142 +f 3019//6143 3037//6143 3035//6143 +f 3075//6144 3073//6144 3019//6144 +f 3037//6145 3073//6145 3039//6145 +f 3019//6146 3073//6146 3037//6146 +f 3039//6147 3071//6147 3041//6147 +f 3073//6148 3071//6148 3039//6148 +f 3071//6149 3069//6149 3041//6149 +f 3021//6150 3024//6150 3027//6150 +f 3027//6151 3024//6151 3023//6151 +f 3056//6152 3053//6152 3061//6152 +f 3059//6153 3053//6153 3055//6153 +f 3055//6154 3053//6154 3056//6154 +f 3053//6155 3063//6155 3061//6155 +f 3031//6156 3029//6156 3021//6156 +f 3021//6157 3029//6157 3024//6157 +f 3063//6158 3048//6158 3065//6158 +f 3065//6159 3048//6159 3067//6159 +f 3053//6160 3048//6160 3063//6160 +f 3067//6161 3045//6161 3069//6161 +f 3041//6162 3045//6162 3043//6162 +f 3069//6163 3045//6163 3041//6163 +f 3048//6164 3045//6164 3067//6164 +f 3045//6165 3047//6165 3051//6165 +f 3048//6166 3047//6166 3045//6166 +f 3077//6167 3078//6167 3079//6167 +f 3077//6168 3079//6168 3080//6168 +f 3081//6169 3082//6169 3080//6169 +f 3081//6170 3080//6170 3079//6170 +f 3083//6171 3084//6171 3082//6171 +f 3083//6172 3082//6172 3081//6172 +f 3085//6173 3086//6173 3087//6173 +f 3085//6174 3087//6174 3088//6174 +f 3089//6175 3088//6175 3090//6175 +f 3089//6176 3085//6176 3088//6176 +f 3091//6177 3090//6177 3092//6177 +f 3091//6178 3089//6178 3090//6178 +f 3093//6179 3092//6179 3094//6179 +f 3093//6180 3091//6180 3092//6180 +f 3083//6181 3094//6181 3084//6181 +f 3083//6182 3093//6182 3094//6182 +f 3087//6183 3086//6183 3095//6183 +f 3087//6184 3095//6184 3096//6184 +f 3097//6185 3098//6185 3099//6185 +f 3097//6186 3099//6186 3100//6186 +f 3101//6187 3100//6187 3102//6187 +f 3101//6188 3097//6188 3100//6188 +f 3095//6189 3102//6189 3096//6189 +f 3095//6190 3101//6190 3102//6190 +f 3099//6191 3098//6191 3103//6191 +f 3099//6192 3103//6192 3104//6192 +f 3105//6193 3106//6193 3107//6193 +f 3105//6194 3107//6194 3108//6194 +f 3109//6195 3108//6195 3110//6195 +f 3109//6196 3105//6196 3108//6196 +f 3103//6197 3110//6197 3104//6197 +f 3103//6198 3109//6198 3110//6198 +f 3111//6199 3112//6199 3107//6199 +f 3111//6200 3107//6200 3106//6200 +f 3113//6201 3114//6201 3115//6201 +f 3113//6202 3115//6202 3116//6202 +f 3117//6203 3116//6203 3118//6203 +f 3117//6204 3113//6204 3116//6204 +f 3119//6205 3118//6205 3120//6205 +f 3119//6206 3117//6206 3118//6206 +f 3121//6207 3120//6207 3122//6207 +f 3121//6208 3119//6208 3120//6208 +f 3111//6209 3122//6209 3112//6209 +f 3111//6210 3121//6210 3122//6210 +f 3115//6211 3114//6211 3123//6211 +f 3115//6212 3123//6212 3124//6212 +f 3125//6213 3126//6213 3124//6213 +f 3125//6214 3124//6214 3123//6214 +f 3127//6215 3128//6215 3126//6215 +f 3127//6216 3126//6216 3125//6216 +f 3129//6217 3078//6217 3077//6217 +f 3129//6218 3077//6218 3130//6218 +f 3131//6219 3130//6219 3132//6219 +f 3131//6220 3129//6220 3130//6220 +f 3133//6221 3132//6221 3134//6221 +f 3133//6222 3131//6222 3132//6222 +f 3135//6223 3134//6223 3136//6223 +f 3135//6224 3133//6224 3134//6224 +f 3127//6225 3136//6225 3128//6225 +f 3127//6226 3135//6226 3136//6226 +f 3109//6227 3103//6227 3105//6227 +f 3105//6228 3103//6228 3106//6228 +f 3103//6229 3123//6229 3106//6229 +f 3103//6230 3125//6230 3123//6230 +f 3103//6231 3079//6231 3125//6231 +f 3123//6232 3111//6232 3106//6232 +f 3103//6233 3098//6233 3079//6233 +f 3098//6234 3081//6234 3079//6234 +f 3111//6235 3119//6235 3121//6235 +f 3123//6236 3114//6236 3111//6236 +f 3101//6237 3095//6237 3097//6237 +f 3097//6238 3095//6238 3098//6238 +f 3098//6239 3095//6239 3081//6239 +f 3114//6240 3117//6240 3111//6240 +f 3111//6241 3117//6241 3119//6241 +f 3114//6242 3113//6242 3117//6242 +f 3127//6243 3133//6243 3135//6243 +f 3125//6244 3078//6244 3127//6244 +f 3079//6245 3078//6245 3125//6245 +f 3127//6246 3131//6246 3133//6246 +f 3078//6247 3131//6247 3127//6247 +f 3078//6248 3129//6248 3131//6248 +f 3083//6249 3091//6249 3093//6249 +f 3081//6250 3086//6250 3083//6250 +f 3095//6251 3086//6251 3081//6251 +f 3083//6252 3089//6252 3091//6252 +f 3086//6253 3089//6253 3083//6253 +f 3086//6254 3085//6254 3089//6254 +f 3137//6255 3138//6255 3139//6255 +f 3137//6256 3139//6256 3140//6256 +f 3141//6257 3142//6257 3143//6257 +f 3141//6258 3143//6258 3144//6258 +f 3145//6259 3144//6259 3146//6259 +f 3145//6260 3141//6260 3144//6260 +f 3147//6261 3146//6261 3148//6261 +f 3147//6262 3145//6262 3146//6262 +f 3149//6263 3148//6263 3150//6263 +f 3149//6264 3147//6264 3148//6264 +f 3137//6265 3150//6265 3138//6265 +f 3137//6266 3149//6266 3150//6266 +f 3143//6267 3142//6267 3151//6267 +f 3143//6268 3151//6268 3152//6268 +f 3152//6269 3151//6269 3153//6269 +f 3152//6270 3153//6270 3154//6270 +f 3155//6271 3156//6271 3154//6271 +f 3155//6272 3154//6272 3153//6272 +f 3157//6273 3158//6273 3159//6273 +f 3157//6274 3159//6274 3160//6274 +f 3161//6275 3160//6275 3162//6275 +f 3161//6276 3157//6276 3160//6276 +f 3163//6277 3162//6277 3164//6277 +f 3163//6278 3161//6278 3162//6278 +f 3165//6279 3164//6279 3166//6279 +f 3165//6280 3163//6280 3164//6280 +f 3155//6281 3166//6281 3156//6281 +f 3155//6282 3165//6282 3166//6282 +f 3159//6283 3158//6283 3167//6283 +f 3159//6284 3167//6284 3168//6284 +f 3169//6285 3170//6285 3171//6285 +f 3169//6286 3171//6286 3172//6286 +f 3173//6287 3172//6287 3174//6287 +f 3173//6288 3169//6288 3172//6288 +f 3175//6289 3174//6289 3176//6289 +f 3175//6290 3173//6290 3174//6290 +f 3177//6291 3176//6291 3178//6291 +f 3177//6292 3175//6292 3176//6292 +f 3167//6293 3178//6293 3168//6293 +f 3167//6294 3177//6294 3178//6294 +f 3179//6295 3180//6295 3171//6295 +f 3179//6296 3171//6296 3170//6296 +f 3181//6297 3182//6297 3180//6297 +f 3181//6298 3180//6298 3179//6298 +f 3183//6299 3140//6299 3139//6299 +f 3183//6300 3139//6300 3184//6300 +f 3185//6301 3184//6301 3186//6301 +f 3185//6302 3183//6302 3184//6302 +f 3181//6303 3186//6303 3182//6303 +f 3181//6304 3185//6304 3186//6304 +f 3177//6305 3167//6305 3175//6305 +f 3175//6306 3169//6306 3173//6306 +f 3167//6307 3169//6307 3175//6307 +f 3167//6308 3170//6308 3169//6308 +f 3167//6309 3179//6309 3170//6309 +f 3167//6310 3158//6310 3179//6310 +f 3179//6311 3158//6311 3153//6311 +f 3157//6312 3155//6312 3158//6312 +f 3158//6313 3155//6313 3153//6313 +f 3161//6314 3163//6314 3157//6314 +f 3157//6315 3163//6315 3155//6315 +f 3163//6316 3165//6316 3155//6316 +f 3179//6317 3151//6317 3181//6317 +f 3153//6318 3151//6318 3179//6318 +f 3181//6319 3140//6319 3185//6319 +f 3185//6320 3140//6320 3183//6320 +f 3151//6321 3140//6321 3181//6321 +f 3141//6322 3145//6322 3142//6322 +f 3142//6323 3137//6323 3151//6323 +f 3151//6324 3137//6324 3140//6324 +f 3145//6325 3147//6325 3142//6325 +f 3142//6326 3147//6326 3137//6326 +f 3147//6327 3149//6327 3137//6327 +f 3187//6328 3188//6328 3189//6328 +f 3187//6329 3189//6329 3190//6329 +f 3191//6330 3192//6330 3193//6330 +f 3191//6331 3193//6331 3194//6331 +f 3195//6332 3194//6332 3196//6332 +f 3195//6333 3191//6333 3194//6333 +f 3197//6334 3196//6334 3198//6334 +f 3197//6335 3195//6335 3196//6335 +f 3199//6336 3198//6336 3200//6336 +f 3199//6337 3197//6337 3198//6337 +f 3187//6338 3200//6338 3188//6338 +f 3187//6339 3199//6339 3200//6339 +f 3193//6340 3192//6340 3201//6340 +f 3193//6341 3201//6341 3202//6341 +f 3202//6342 3201//6342 3203//6342 +f 3202//6343 3203//6343 3204//6343 +f 3205//6344 3206//6344 3204//6344 +f 3205//6345 3204//6345 3203//6345 +f 3207//6346 3208//6346 3209//6346 +f 3207//6347 3209//6347 3210//6347 +f 3211//6348 3210//6348 3212//6348 +f 3211//6349 3207//6349 3210//6349 +f 3213//6350 3212//6350 3214//6350 +f 3213//6351 3211//6351 3212//6351 +f 3215//6352 3214//6352 3216//6352 +f 3215//6353 3213//6353 3214//6353 +f 3205//6354 3216//6354 3206//6354 +f 3205//6355 3215//6355 3216//6355 +f 3209//6356 3208//6356 3217//6356 +f 3209//6357 3217//6357 3218//6357 +f 3219//6358 3220//6358 3221//6358 +f 3219//6359 3221//6359 3222//6359 +f 3223//6360 3222//6360 3224//6360 +f 3223//6361 3219//6361 3222//6361 +f 3225//6362 3224//6362 3226//6362 +f 3225//6363 3223//6363 3224//6363 +f 3227//6364 3226//6364 3228//6364 +f 3227//6365 3225//6365 3226//6365 +f 3217//6366 3228//6366 3218//6366 +f 3217//6367 3227//6367 3228//6367 +f 3229//6368 3230//6368 3221//6368 +f 3229//6369 3221//6369 3220//6369 +f 3231//6370 3232//6370 3230//6370 +f 3231//6371 3230//6371 3229//6371 +f 3233//6372 3190//6372 3189//6372 +f 3233//6373 3189//6373 3234//6373 +f 3235//6374 3234//6374 3236//6374 +f 3235//6375 3233//6375 3234//6375 +f 3231//6376 3236//6376 3232//6376 +f 3231//6377 3235//6377 3236//6377 +f 3227//6378 3217//6378 3225//6378 +f 3225//6379 3219//6379 3223//6379 +f 3217//6380 3219//6380 3225//6380 +f 3217//6381 3220//6381 3219//6381 +f 3217//6382 3229//6382 3220//6382 +f 3217//6383 3208//6383 3229//6383 +f 3229//6384 3208//6384 3203//6384 +f 3207//6385 3211//6385 3208//6385 +f 3208//6386 3205//6386 3203//6386 +f 3211//6387 3213//6387 3208//6387 +f 3208//6388 3213//6388 3205//6388 +f 3213//6389 3215//6389 3205//6389 +f 3229//6390 3201//6390 3231//6390 +f 3203//6391 3201//6391 3229//6391 +f 3231//6392 3190//6392 3235//6392 +f 3235//6393 3190//6393 3233//6393 +f 3201//6394 3190//6394 3231//6394 +f 3191//6395 3195//6395 3192//6395 +f 3192//6396 3187//6396 3201//6396 +f 3201//6397 3187//6397 3190//6397 +f 3195//6398 3197//6398 3192//6398 +f 3192//6399 3197//6399 3187//6399 +f 3197//6400 3199//6400 3187//6400 +f 3237//6401 3238//6401 3239//6401 +f 3237//6402 3239//6402 3240//6402 +f 3241//6403 3242//6403 3243//6403 +f 3241//6404 3243//6404 3244//6404 +f 3245//6405 3244//6405 3246//6405 +f 3245//6406 3241//6406 3244//6406 +f 3237//6407 3246//6407 3238//6407 +f 3237//6408 3245//6408 3246//6408 +f 3243//6409 3242//6409 3247//6409 +f 3243//6410 3247//6410 3248//6410 +f 3248//6411 3247//6411 3249//6411 +f 3248//6412 3249//6412 3250//6412 +f 3250//6413 3251//6413 3252//6413 +f 3249//6414 3251//6414 3250//6414 +f 3252//6415 3253//6415 3254//6415 +f 3251//6416 3253//6416 3252//6416 +f 3254//6417 3255//6417 3256//6417 +f 3253//6418 3255//6418 3254//6418 +f 3256//6419 3257//6419 3258//6419 +f 3255//6420 3257//6420 3256//6420 +f 3258//6421 3259//6421 3260//6421 +f 3257//6422 3259//6422 3258//6422 +f 3261//6423 3262//6423 3260//6423 +f 3261//6424 3260//6424 3259//6424 +f 3262//6425 3261//6425 3263//6425 +f 3262//6426 3263//6426 3264//6426 +f 3265//6427 3266//6427 3267//6427 +f 3265//6428 3267//6428 3268//6428 +f 3269//6429 3268//6429 3270//6429 +f 3269//6430 3265//6430 3268//6430 +f 3263//6431 3270//6431 3264//6431 +f 3263//6432 3269//6432 3270//6432 +f 3267//6433 3266//6433 3271//6433 +f 3267//6434 3271//6434 3272//6434 +f 3273//6435 3274//6435 3275//6435 +f 3273//6436 3275//6436 3276//6436 +f 3277//6437 3276//6437 3278//6437 +f 3277//6438 3273//6438 3276//6438 +f 3271//6439 3278//6439 3272//6439 +f 3271//6440 3277//6440 3278//6440 +f 3279//6441 3280//6441 3275//6441 +f 3279//6442 3275//6442 3274//6442 +f 3281//6443 3282//6443 3280//6443 +f 3281//6444 3280//6444 3279//6444 +f 3282//6445 3283//6445 3284//6445 +f 3281//6446 3283//6446 3282//6446 +f 3284//6447 3285//6447 3286//6447 +f 3283//6448 3285//6448 3284//6448 +f 3286//6449 3287//6449 3288//6449 +f 3285//6450 3287//6450 3286//6450 +f 3288//6451 3289//6451 3290//6451 +f 3287//6452 3289//6452 3288//6452 +f 3290//6453 3291//6453 3292//6453 +f 3289//6454 3291//6454 3290//6454 +f 3292//6455 3291//6455 3293//6455 +f 3292//6456 3293//6456 3294//6456 +f 3295//6457 3296//6457 3294//6457 +f 3295//6458 3294//6458 3293//6458 +f 3297//6459 3298//6459 3296//6459 +f 3297//6460 3296//6460 3295//6460 +f 3298//6461 3299//6461 3300//6461 +f 3297//6462 3299//6462 3298//6462 +f 3300//6463 3301//6463 3302//6463 +f 3299//6464 3301//6464 3300//6464 +f 3302//6465 3303//6465 3304//6465 +f 3301//6466 3303//6466 3302//6466 +f 3304//6467 3305//6467 3306//6467 +f 3303//6468 3305//6468 3304//6468 +f 3306//6469 3307//6469 3308//6469 +f 3305//6470 3307//6470 3306//6470 +f 3308//6471 3307//6471 3309//6471 +f 3308//6472 3309//6472 3310//6472 +f 3311//6473 3312//6473 3310//6473 +f 3311//6474 3310//6474 3309//6474 +f 3313//6475 3240//6475 3239//6475 +f 3313//6476 3239//6476 3314//6476 +f 3315//6477 3314//6477 3316//6477 +f 3315//6478 3313//6478 3314//6478 +f 3311//6479 3316//6479 3312//6479 +f 3311//6480 3315//6480 3316//6480 +f 3253//6481 3251//6481 3301//6481 +f 3303//6482 3249//6482 3305//6482 +f 3251//6483 3249//6483 3303//6483 +f 3277//6484 3271//6484 3273//6484 +f 3273//6485 3271//6485 3274//6485 +f 3263//6486 3261//6486 3259//6486 +f 3247//6487 3242//6487 3249//6487 +f 3249//6488 3237//6488 3305//6488 +f 3274//6489 3281//6489 3279//6489 +f 3271//6490 3281//6490 3274//6490 +f 3242//6491 3237//6491 3249//6491 +f 3305//6492 3237//6492 3240//6492 +f 3271//6493 3283//6493 3281//6493 +f 3242//6494 3241//6494 3237//6494 +f 3237//6495 3241//6495 3245//6495 +f 3293//6496 3297//6496 3295//6496 +f 3291//6497 3297//6497 3293//6497 +f 3289//6498 3299//6498 3291//6498 +f 3291//6499 3299//6499 3297//6499 +f 3271//6500 3266//6500 3283//6500 +f 3309//6501 3307//6501 3311//6501 +f 3285//6502 3257//6502 3287//6502 +f 3287//6503 3255//6503 3289//6503 +f 3257//6504 3255//6504 3287//6504 +f 3283//6505 3259//6505 3285//6505 +f 3266//6506 3259//6506 3283//6506 +f 3285//6507 3259//6507 3257//6507 +f 3299//6508 3253//6508 3301//6508 +f 3289//6509 3253//6509 3299//6509 +f 3255//6510 3253//6510 3289//6510 +f 3266//6511 3263//6511 3259//6511 +f 3269//6512 3263//6512 3265//6512 +f 3265//6513 3263//6513 3266//6513 +f 3311//6514 3240//6514 3315//6514 +f 3315//6515 3240//6515 3313//6515 +f 3305//6516 3240//6516 3307//6516 +f 3307//6517 3240//6517 3311//6517 +f 3301//6518 3251//6518 3303//6518 +f 3317//6519 3318//6519 3319//6519 +f 3317//6520 3319//6520 3320//6520 +f 3321//6521 3322//6521 3323//6521 +f 3321//6522 3323//6522 3324//6522 +f 3325//6523 3324//6523 3326//6523 +f 3325//6524 3321//6524 3324//6524 +f 3319//6525 3326//6525 3320//6525 +f 3319//6526 3325//6526 3326//6526 +f 3327//6527 3328//6527 3323//6527 +f 3327//6528 3323//6528 3322//6528 +f 3329//6529 3330//6529 3328//6529 +f 3329//6530 3328//6530 3327//6530 +f 3330//6531 3331//6531 3332//6531 +f 3329//6532 3331//6532 3330//6532 +f 3332//6533 3333//6533 3334//6533 +f 3331//6534 3333//6534 3332//6534 +f 3334//6535 3335//6535 3336//6535 +f 3333//6536 3335//6536 3334//6536 +f 3336//6537 3337//6537 3338//6537 +f 3335//6538 3337//6538 3336//6538 +f 3338//6539 3339//6539 3340//6539 +f 3337//6540 3339//6540 3338//6540 +f 3340//6541 3339//6541 3341//6541 +f 3340//6542 3341//6542 3342//6542 +f 3343//6543 3344//6543 3342//6543 +f 3343//6544 3342//6544 3341//6544 +f 3345//6545 3346//6545 3347//6545 +f 3345//6546 3347//6546 3348//6546 +f 3349//6547 3348//6547 3350//6547 +f 3349//6548 3345//6548 3348//6548 +f 3343//6549 3350//6549 3344//6549 +f 3343//6550 3349//6550 3350//6550 +f 3351//6551 3352//6551 3347//6551 +f 3351//6552 3347//6552 3346//6552 +f 3353//6553 3354//6553 3355//6553 +f 3353//6554 3355//6554 3356//6554 +f 3357//6555 3356//6555 3358//6555 +f 3357//6556 3353//6556 3356//6556 +f 3351//6557 3358//6557 3352//6557 +f 3351//6558 3357//6558 3358//6558 +f 3355//6559 3354//6559 3359//6559 +f 3355//6560 3359//6560 3360//6560 +f 3360//6561 3359//6561 3361//6561 +f 3360//6562 3361//6562 3362//6562 +f 3362//6563 3363//6563 3364//6563 +f 3361//6564 3363//6564 3362//6564 +f 3364//6565 3365//6565 3366//6565 +f 3363//6566 3365//6566 3364//6566 +f 3366//6567 3367//6567 3368//6567 +f 3365//6568 3367//6568 3366//6568 +f 3368//6569 3369//6569 3370//6569 +f 3367//6570 3369//6570 3368//6570 +f 3370//6571 3371//6571 3372//6571 +f 3369//6572 3371//6572 3370//6572 +f 3373//6573 3374//6573 3372//6573 +f 3373//6574 3372//6574 3371//6574 +f 3374//6575 3373//6575 3375//6575 +f 3374//6576 3375//6576 3376//6576 +f 3377//6577 3318//6577 3317//6577 +f 3377//6578 3317//6578 3378//6578 +f 3379//6579 3378//6579 3380//6579 +f 3379//6580 3377//6580 3378//6580 +f 3375//6581 3380//6581 3376//6581 +f 3375//6582 3379//6582 3380//6582 +f 3325//6583 3319//6583 3321//6583 +f 3321//6584 3319//6584 3322//6584 +f 3322//6585 3329//6585 3327//6585 +f 3319//6586 3329//6586 3322//6586 +f 3319//6587 3331//6587 3329//6587 +f 3339//6588 3343//6588 3341//6588 +f 3319//6589 3369//6589 3331//6589 +f 3331//6590 3367//6590 3333//6590 +f 3369//6591 3367//6591 3331//6591 +f 3318//6592 3371//6592 3319//6592 +f 3319//6593 3371//6593 3369//6593 +f 3333//6594 3365//6594 3335//6594 +f 3335//6595 3365//6595 3337//6595 +f 3367//6596 3365//6596 3333//6596 +f 3379//6597 3375//6597 3377//6597 +f 3377//6598 3375//6598 3318//6598 +f 3318//6599 3375//6599 3371//6599 +f 3343//6600 3346//6600 3349//6600 +f 3349//6601 3346//6601 3345//6601 +f 3337//6602 3346//6602 3339//6602 +f 3339//6603 3346//6603 3343//6603 +f 3365//6604 3363//6604 3337//6604 +f 3337//6605 3363//6605 3346//6605 +f 3363//6606 3361//6606 3346//6606 +f 3375//6607 3373//6607 3371//6607 +f 3359//6608 3354//6608 3361//6608 +f 3361//6609 3351//6609 3346//6609 +f 3354//6610 3351//6610 3361//6610 +f 3351//6611 3353//6611 3357//6611 +f 3354//6612 3353//6612 3351//6612 +f 3381//6613 3382//6613 3383//6613 +f 3381//6614 3383//6614 3384//6614 +f 3385//6615 3384//6615 3386//6615 +f 3381//6616 3384//6616 3385//6616 +f 3387//6617 3385//6617 3386//6617 +f 3387//6618 3386//6618 3388//6618 +f 3386//6619 3389//6619 3390//6619 +f 3388//6620 3386//6620 3390//6620 +f 3384//6621 3383//6621 3386//6621 +f 3383//6622 3389//6622 3386//6622 +f 3385//6623 3387//6623 3391//6623 +f 3385//6624 3391//6624 3392//6624 +f 3382//6625 3381//6625 3385//6625 +f 3392//6626 3382//6626 3385//6626 +f 3392//6627 3391//6627 3390//6627 +f 3392//6628 3390//6628 3389//6628 +f 3254//6629 3250//6629 3252//6629 +f 3256//6630 3250//6630 3254//6630 +f 3228//6631 3226//6631 3389//6631 +f 3389//6632 3218//6632 3228//6632 +f 3260//6633 3250//6633 3256//6633 +f 3226//6634 3224//6634 3389//6634 +f 3316//6635 3324//6635 3312//6635 +f 3314//6636 3324//6636 3316//6636 +f 3326//6637 3324//6637 3314//6637 +f 3239//6638 3320//6638 3314//6638 +f 3314//6639 3320//6639 3326//6639 +f 3324//6640 3323//6640 3312//6640 +f 3260//6641 3262//6641 3250//6641 +f 3389//6642 3209//6642 3218//6642 +f 3389//6643 3210//6643 3209//6643 +f 3212//6644 3383//6644 3214//6644 +f 3210//6645 3383//6645 3212//6645 +f 3389//6646 3383//6646 3210//6646 +f 3087//6647 3383//6647 3162//6647 +f 3096//6648 3383//6648 3087//6648 +f 3214//6649 3383//6649 3196//6649 +f 3148//6650 3383//6650 3054//6650 +f 3164//6651 3383//6651 3146//6651 +f 3146//6652 3383//6652 3148//6652 +f 3198//6653 3383//6653 3096//6653 +f 3162//6654 3383//6654 3164//6654 +f 3196//6655 3383//6655 3198//6655 +f 3262//6656 3248//6656 3250//6656 +f 3222//6657 3108//6657 3224//6657 +f 3221//6658 3110//6658 3222//6658 +f 3222//6659 3110//6659 3108//6659 +f 3221//6660 3104//6660 3110//6660 +f 3224//6661 3107//6661 3389//6661 +f 3332//6662 3334//6662 3330//6662 +f 3108//6663 3107//6663 3224//6663 +f 3328//6664 3340//6664 3342//6664 +f 3330//6665 3340//6665 3328//6665 +f 3221//6666 3232//6666 3104//6666 +f 3230//6667 3232//6667 3221//6667 +f 3334//6668 3336//6668 3330//6668 +f 3330//6669 3336//6669 3340//6669 +f 3232//6670 3236//6670 3104//6670 +f 3336//6671 3338//6671 3340//6671 +f 3239//6672 3238//6672 3320//6672 +f 3236//6673 3234//6673 3104//6673 +f 3238//6674 3317//6674 3320//6674 +f 3216//6675 3193//6675 3206//6675 +f 3204//6676 3193//6676 3202//6676 +f 3206//6677 3193//6677 3204//6677 +f 3214//6678 3194//6678 3216//6678 +f 3246//6679 3378//6679 3238//6679 +f 3216//6680 3194//6680 3193//6680 +f 3238//6681 3378//6681 3317//6681 +f 3214//6682 3196//6682 3194//6682 +f 3246//6683 3380//6683 3378//6683 +f 3244//6684 3380//6684 3246//6684 +f 3243//6685 3380//6685 3244//6685 +f 3188//6686 3099//6686 3189//6686 +f 3107//6687 3112//6687 3389//6687 +f 3370//6688 3372//6688 3368//6688 +f 3188//6689 3100//6689 3099//6689 +f 3200//6690 3100//6690 3188//6690 +f 3243//6691 3376//6691 3380//6691 +f 3200//6692 3102//6692 3100//6692 +f 3198//6693 3102//6693 3200//6693 +f 3372//6694 3362//6694 3368//6694 +f 3366//6695 3362//6695 3364//6695 +f 3368//6696 3362//6696 3366//6696 +f 3372//6697 3374//6697 3362//6697 +f 3374//6698 3360//6698 3362//6698 +f 3198//6699 3096//6699 3102//6699 +f 3120//6700 3178//6700 3122//6700 +f 3342//6701 3392//6701 3328//6701 +f 3022//6702 3392//6702 3015//6702 +f 3275//6703 3392//6703 3022//6703 +f 3294//6704 3392//6704 3280//6704 +f 3310//6705 3392//6705 3296//6705 +f 3280//6706 3392//6706 3275//6706 +f 3296//6707 3392//6707 3294//6707 +f 3312//6708 3392//6708 3310//6708 +f 3122//6709 3176//6709 3112//6709 +f 3328//6710 3392//6710 3323//6710 +f 3178//6711 3176//6711 3122//6711 +f 3344//6712 3392//6712 3342//6712 +f 3350//6713 3392//6713 3344//6713 +f 3348//6714 3392//6714 3350//6714 +f 3347//6715 3392//6715 3348//6715 +f 3352//6716 3392//6716 3347//6716 +f 3118//6717 3168//6717 3120//6717 +f 3358//6718 3392//6718 3352//6718 +f 3116//6719 3168//6719 3118//6719 +f 3120//6720 3168//6720 3178//6720 +f 3015//6721 3392//6721 3389//6721 +f 3323//6722 3392//6722 3312//6722 +f 3262//6723 3382//6723 3248//6723 +f 3248//6724 3382//6724 3243//6724 +f 3054//6725 3382//6725 3049//6725 +f 3176//6726 3174//6726 3112//6726 +f 3264//6727 3382//6727 3262//6727 +f 3243//6728 3382//6728 3376//6728 +f 3383//6729 3382//6729 3054//6729 +f 3374//6730 3382//6730 3360//6730 +f 3356//6731 3382//6731 3358//6731 +f 3355//6732 3382//6732 3356//6732 +f 3360//6733 3382//6733 3355//6733 +f 3049//6734 3382//6734 3264//6734 +f 3124//6735 3128//6735 3115//6735 +f 3376//6736 3382//6736 3374//6736 +f 3126//6737 3128//6737 3124//6737 +f 3358//6738 3382//6738 3392//6738 +f 3076//6739 3020//6739 3184//6739 +f 3099//6740 3104//6740 3189//6740 +f 3189//6741 3104//6741 3234//6741 +f 3139//6742 3138//6742 3076//6742 +f 3076//6743 3138//6743 3062//6743 +f 3159//6744 3168//6744 3134//6744 +f 3159//6745 3134//6745 3132//6745 +f 3159//6746 3132//6746 3130//6746 +f 3128//6747 3136//6747 3115//6747 +f 3134//6748 3168//6748 3136//6748 +f 3267//6749 3272//6749 3044//6749 +f 3044//6750 3272//6750 3030//6750 +f 3115//6751 3136//6751 3116//6751 +f 3116//6752 3136//6752 3168//6752 +f 3080//6753 3084//6753 3077//6753 +f 3082//6754 3084//6754 3080//6754 +f 3077//6755 3094//6755 3130//6755 +f 3084//6756 3094//6756 3077//6756 +f 3092//6757 3159//6757 3094//6757 +f 3090//6758 3159//6758 3092//6758 +f 3094//6759 3159//6759 3130//6759 +f 3090//6760 3160//6760 3159//6760 +f 3088//6761 3160//6761 3090//6761 +f 3088//6762 3162//6762 3160//6762 +f 3087//6763 3162//6763 3088//6763 +f 3172//6764 3016//6764 3174//6764 +f 3171//6765 3018//6765 3172//6765 +f 3172//6766 3018//6766 3016//6766 +f 3171//6767 3020//6767 3018//6767 +f 3112//6768 3015//6768 3389//6768 +f 3174//6769 3015//6769 3112//6769 +f 3016//6770 3015//6770 3174//6770 +f 3171//6771 3182//6771 3020//6771 +f 3180//6772 3182//6772 3171//6772 +f 3182//6773 3186//6773 3020//6773 +f 3186//6774 3184//6774 3020//6774 +f 3154//6775 3143//6775 3152//6775 +f 3156//6776 3143//6776 3154//6776 +f 3166//6777 3143//6777 3156//6777 +f 3139//6778 3076//6778 3184//6778 +f 3166//6779 3144//6779 3143//6779 +f 3164//6780 3144//6780 3166//6780 +f 3164//6781 3146//6781 3144//6781 +f 3138//6782 3057//6782 3062//6782 +f 3036//6783 3040//6783 3034//6783 +f 3038//6784 3040//6784 3036//6784 +f 3138//6785 3058//6785 3057//6785 +f 3150//6786 3058//6786 3138//6786 +f 3034//6787 3042//6787 3032//6787 +f 3040//6788 3042//6788 3034//6788 +f 3062//6789 3074//6789 3076//6789 +f 3148//6790 3060//6790 3150//6790 +f 3150//6791 3060//6791 3058//6791 +f 3148//6792 3054//6792 3060//6792 +f 3062//6793 3064//6793 3074//6793 +f 3064//6794 3066//6794 3074//6794 +f 3070//6795 3066//6795 3068//6795 +f 3072//6796 3066//6796 3070//6796 +f 3074//6797 3066//6797 3072//6797 +f 3028//6798 3276//6798 3022//6798 +f 3026//6799 3278//6799 3028//6799 +f 3028//6800 3278//6800 3276//6800 +f 3025//6801 3272//6801 3026//6801 +f 3026//6802 3272//6802 3278//6802 +f 3276//6803 3275//6803 3022//6803 +f 3025//6804 3030//6804 3272//6804 +f 3042//6805 3030//6805 3032//6805 +f 3042//6806 3044//6806 3030//6806 +f 3284//6807 3286//6807 3282//6807 +f 3280//6808 3292//6808 3294//6808 +f 3282//6809 3292//6809 3280//6809 +f 3286//6810 3288//6810 3282//6810 +f 3282//6811 3288//6811 3292//6811 +f 3288//6812 3290//6812 3292//6812 +f 3300//6813 3302//6813 3298//6813 +f 3046//6814 3267//6814 3044//6814 +f 3296//6815 3308//6815 3310//6815 +f 3298//6816 3308//6816 3296//6816 +f 3298//6817 3304//6817 3308//6817 +f 3302//6818 3304//6818 3298//6818 +f 3304//6819 3306//6819 3308//6819 +f 3052//6820 3268//6820 3046//6820 +f 3046//6821 3268//6821 3267//6821 +f 3050//6822 3270//6822 3052//6822 +f 3049//6823 3270//6823 3050//6823 +f 3052//6824 3270//6824 3268//6824 +f 3258//6825 3260//6825 3256//6825 +f 3049//6826 3264//6826 3270//6826 +f 3387//6827 3388//6827 3390//6827 +f 3387//6828 3390//6828 3391//6828 +g BullDogClip007 (Meshed) +f 3393//6829 3394//6829 3395//6829 +f 3396//6830 3395//6830 3397//6830 +f 3396//6831 3393//6831 3395//6831 +f 3398//6832 3397//6832 3399//6832 +f 3398//6833 3396//6833 3397//6833 +f 3400//6834 3398//6834 3399//6834 +f 3401//6835 3402//6835 3403//6835 +f 3404//6836 3405//6836 3406//6836 +f 3407//6837 3408//6837 3409//6837 +f 3410//6838 3411//6838 3402//6838 +f 3407//6839 3412//6839 3408//6839 +f 3410//6840 3413//6840 3411//6840 +f 3413//6841 3414//6841 3411//6841 +f 3415//6842 3416//6842 3414//6842 +f 3417//6843 3416//6843 3415//6843 +f 3416//6844 3418//6844 3414//6844 +f 3414//6845 3419//6845 3411//6845 +f 3418//6846 3419//6846 3414//6846 +f 3420//6847 3421//6847 3418//6847 +f 3412//6848 3421//6848 3422//6848 +f 3421//6849 3423//6849 3418//6849 +f 3418//6850 3423//6850 3419//6850 +f 3420//6851 3422//6851 3421//6851 +f 3422//6852 3424//6852 3412//6852 +f 3424//6853 3408//6853 3412//6853 +f 3425//6854 3405//6854 3404//6854 +f 3405//6855 3426//6855 3406//6855 +f 3426//6856 3417//6856 3427//6856 +f 3427//6857 3417//6857 3415//6857 +f 3427//6858 3406//6858 3426//6858 +f 3428//6859 3401//6859 3403//6859 +f 3401//6860 3410//6860 3402//6860 +f 3429//6861 3430//6861 3431//6861 +f 3431//6862 3430//6862 3432//6862 +f 3432//6863 3433//6863 3434//6863 +f 3430//6864 3433//6864 3432//6864 +f 3434//6865 3435//6865 3436//6865 +f 3433//6866 3435//6866 3434//6866 +f 3437//6867 3438//6867 3439//6867 +f 3437//6868 3440//6868 3438//6868 +f 3441//6869 3442//6869 3443//6869 +f 3444//6870 3445//6870 3446//6870 +f 3441//6871 3447//6871 3442//6871 +f 3444//6872 3446//6872 3440//6872 +f 3448//6873 3449//6873 3450//6873 +f 3448//6874 3450//6874 3447//6874 +f 3451//6875 3452//6875 3453//6875 +f 3451//6876 3454//6876 3455//6876 +f 3456//6877 3449//6877 3448//6877 +f 3456//6878 3447//6878 3441//6878 +f 3451//6879 3455//6879 3452//6879 +f 3456//6880 3448//6880 3447//6880 +f 3457//6881 3458//6881 3459//6881 +f 3457//6882 3460//6882 3458//6882 +f 3461//6883 3439//6883 3462//6883 +f 3461//6884 3437//6884 3439//6884 +f 3457//6885 3443//6885 3463//6885 +f 3457//6886 3463//6886 3460//6886 +f 3464//6887 3457//6887 3459//6887 +f 3465//6888 3466//6888 3467//6888 +f 3464//6889 3441//6889 3443//6889 +f 3465//6890 3467//6890 3468//6890 +f 3464//6891 3443//6891 3457//6891 +f 3469//6892 3459//6892 3470//6892 +f 3469//6893 3470//6893 3449//6893 +f 3469//6894 3449//6894 3456//6894 +f 3469//6895 3456//6895 3441//6895 +f 3469//6896 3464//6896 3459//6896 +f 3471//6897 3444//6897 3440//6897 +f 3469//6898 3441//6898 3464//6898 +f 3471//6899 3440//6899 3437//6899 +f 3472//6900 3468//6900 3445//6900 +f 3472//6901 3465//6901 3468//6901 +f 3473//6902 3437//6902 3461//6902 +f 3473//6903 3471//6903 3437//6903 +f 3474//6904 3453//6904 3475//6904 +f 3474//6905 3462//6905 3454//6905 +f 3474//6906 3451//6906 3453//6906 +f 3474//6907 3454//6907 3451//6907 +f 3476//6908 3445//6908 3444//6908 +f 3476//6909 3472//6909 3445//6909 +f 3477//6910 3476//6910 3444//6910 +f 3477//6911 3444//6911 3471//6911 +f 3478//6912 3462//6912 3474//6912 +f 3478//6913 3461//6913 3462//6913 +f 3478//6914 3474//6914 3475//6914 +f 3479//6915 3466//6915 3465//6915 +f 3480//6916 3481//6916 3482//6916 +f 3479//6917 3483//6917 3466//6917 +f 3480//6918 3484//6918 3481//6918 +f 3485//6919 3477//6919 3471//6919 +f 3485//6920 3471//6920 3473//6920 +f 3486//6921 3487//6921 3484//6921 +f 3488//6922 3465//6922 3472//6922 +f 3455//6923 3486//6923 3484//6923 +f 3488//6924 3479//6924 3465//6924 +f 3455//6925 3484//6925 3480//6925 +f 3489//6926 3490//6926 3483//6926 +f 3489//6927 3483//6927 3479//6927 +f 3491//6928 3492//6928 3487//6928 +f 3493//6929 3494//6929 3485//6929 +f 3493//6930 3473//6930 3461//6930 +f 3493//6931 3475//6931 3494//6931 +f 3493//6932 3461//6932 3478//6932 +f 3493//6933 3478//6933 3475//6933 +f 3493//6934 3485//6934 3473//6934 +f 3495//6935 3487//6935 3486//6935 +f 3496//6936 3479//6936 3488//6936 +f 3496//6937 3489//6937 3479//6937 +f 3496//6938 3490//6938 3489//6938 +f 3454//6939 3486//6939 3455//6939 +f 3454//6940 3495//6940 3486//6940 +f 3497//6941 3472//6941 3476//6941 +f 3497//6942 3488//6942 3472//6942 +f 3498//6943 3499//6943 3492//6943 +f 3498//6944 3467//6944 3499//6944 +f 3500//6945 3496//6945 3488//6945 +f 3500//6946 3488//6946 3497//6946 +f 3446//6947 3498//6947 3492//6947 +f 3501//6948 3476//6948 3477//6948 +f 3501//6949 3497//6949 3476//6949 +f 3446//6950 3492//6950 3491//6950 +f 3502//6951 3485//6951 3494//6951 +f 3438//6952 3487//6952 3495//6952 +f 3502//6953 3477//6953 3485//6953 +f 3502//6954 3501//6954 3477//6954 +f 3438//6955 3491//6955 3487//6955 +f 3468//6956 3467//6956 3498//6956 +f 3503//6957 3500//6957 3497//6957 +f 3503//6958 3497//6958 3501//6958 +f 3445//6959 3498//6959 3446//6959 +f 3463//6960 3501//6960 3502//6960 +f 3463//6961 3503//6961 3501//6961 +f 3445//6962 3468//6962 3498//6962 +f 3504//6963 3490//6963 3496//6963 +f 3504//6964 3496//6964 3500//6964 +f 3439//6965 3438//6965 3495//6965 +f 3442//6966 3500//6966 3503//6966 +f 3462//6967 3495//6967 3454//6967 +f 3442//6968 3504//6968 3500//6968 +f 3462//6969 3439//6969 3495//6969 +f 3443//6970 3503//6970 3463//6970 +f 3440//6971 3446//6971 3491//6971 +f 3440//6972 3491//6972 3438//6972 +f 3443//6973 3442//6973 3503//6973 +f 3505//6974 3450//6974 3490//6974 +f 3505//6975 3490//6975 3504//6975 +f 3452//6976 3482//6976 3453//6976 +f 3452//6977 3455//6977 3480//6977 +f 3447//6978 3450//6978 3505//6978 +f 3447//6979 3504//6979 3442//6979 +f 3452//6980 3480//6980 3482//6980 +f 3466//6981 3483//6981 3506//6981 +f 3466//6982 3506//6982 3499//6982 +f 3466//6983 3499//6983 3467//6983 +f 3447//6984 3505//6984 3504//6984 +f 3460//6985 3494//6985 3458//6985 +f 3460//6986 3502//6986 3494//6986 +f 3460//6987 3463//6987 3502//6987 +f 3507//6988 3508//6988 3509//6988 +f 3507//6989 3510//6989 3508//6989 +f 3511//6990 3512//6990 3510//6990 +f 3511//6991 3510//6991 3507//6991 +f 3513//6992 3514//6992 3515//6992 +f 3513//6993 3515//6993 3512//6993 +f 3513//6994 3512//6994 3511//6994 +f 3516//6995 3517//6995 3514//6995 +f 3516//6996 3514//6996 3513//6996 +f 3518//6997 3519//6997 3517//6997 +f 3518//6998 3517//6998 3516//6998 +f 3520//6999 3519//6999 3518//6999 +f 3521//7000 3522//7000 3523//7000 +f 3524//7001 3525//7001 3522//7001 +f 3524//7002 3522//7002 3521//7002 +f 3526//7003 3527//7003 3525//7003 +f 3526//7004 3525//7004 3524//7004 +f 3528//7005 3527//7005 3526//7005 +f 3529//7006 3530//7006 3527//7006 +f 3529//7007 3527//7007 3528//7007 +f 3531//7008 3532//7008 3530//7008 +f 3531//7009 3530//7009 3529//7009 +f 3533//7010 3534//7010 3532//7010 +f 3533//7011 3532//7011 3531//7011 +f 3535//7012 3536//7012 3537//7012 +f 3535//7013 3538//7013 3536//7013 +f 3539//7014 3540//7014 3541//7014 +f 3539//7015 3541//7015 3542//7015 +f 3543//7016 3537//7016 3544//7016 +f 3543//7017 3535//7017 3537//7017 +f 3545//7018 3542//7018 3538//7018 +f 3545//7019 3539//7019 3542//7019 +f 3546//7020 3544//7020 3547//7020 +f 3546//7021 3543//7021 3544//7021 +f 3548//7022 3540//7022 3539//7022 +f 3549//7023 3545//7023 3538//7023 +f 3549//7024 3538//7024 3535//7024 +f 3550//7025 3548//7025 3539//7025 +f 3550//7026 3539//7026 3545//7026 +f 3551//7027 3546//7027 3547//7027 +f 3551//7028 3552//7028 3553//7028 +f 3551//7029 3553//7029 3554//7029 +f 3551//7030 3547//7030 3552//7030 +f 3555//7031 3550//7031 3545//7031 +f 3555//7032 3545//7032 3549//7032 +f 3556//7033 3540//7033 3548//7033 +f 3556//7034 3557//7034 3540//7034 +f 3558//7035 3556//7035 3548//7035 +f 3558//7036 3548//7036 3550//7036 +f 3559//7037 3549//7037 3535//7037 +f 3560//7038 3561//7038 3562//7038 +f 3559//7039 3535//7039 3543//7039 +f 3560//7040 3563//7040 3561//7040 +f 3564//7041 3543//7041 3546//7041 +f 3565//7042 3562//7042 3566//7042 +f 3564//7043 3559//7043 3543//7043 +f 3565//7044 3560//7044 3562//7044 +f 3567//7045 3550//7045 3555//7045 +f 3567//7046 3558//7046 3550//7046 +f 3568//7047 3563//7047 3560//7047 +f 3569//7048 3566//7048 3570//7048 +f 3571//7049 3555//7049 3549//7049 +f 3569//7050 3565//7050 3566//7050 +f 3571//7051 3549//7051 3559//7051 +f 3569//7052 3560//7052 3565//7052 +f 3569//7053 3568//7053 3560//7053 +f 3572//7054 3554//7054 3573//7054 +f 3574//7055 3575//7055 3563//7055 +f 3572//7056 3559//7056 3564//7056 +f 3574//7057 3563//7057 3568//7057 +f 3572//7058 3571//7058 3559//7058 +f 3576//7059 3551//7059 3554//7059 +f 3576//7060 3572//7060 3564//7060 +f 3576//7061 3546//7061 3551//7061 +f 3577//7062 3568//7062 3569//7062 +f 3576//7063 3554//7063 3572//7063 +f 3577//7064 3574//7064 3568//7064 +f 3576//7065 3564//7065 3546//7065 +f 3578//7066 3557//7066 3556//7066 +f 3579//7067 3577//7067 3569//7067 +f 3579//7068 3569//7068 3570//7068 +f 3580//7069 3578//7069 3556//7069 +f 3581//7070 3575//7070 3574//7070 +f 3580//7071 3556//7071 3558//7071 +f 3582//7072 3555//7072 3571//7072 +f 3582//7073 3567//7073 3555//7073 +f 3582//7074 3572//7074 3573//7074 +f 3583//7075 3574//7075 3577//7075 +f 3582//7076 3571//7076 3572//7076 +f 3584//7077 3557//7077 3578//7077 +f 3583//7078 3581//7078 3574//7078 +f 3585//7079 3541//7079 3575//7079 +f 3586//7080 3587//7080 3588//7080 +f 3585//7081 3575//7081 3581//7081 +f 3586//7082 3578//7082 3580//7082 +f 3586//7083 3584//7083 3578//7083 +f 3589//7084 3573//7084 3587//7084 +f 3589//7085 3567//7085 3582//7085 +f 3589//7086 3558//7086 3567//7086 +f 3589//7087 3580//7087 3558//7087 +f 3536//7088 3581//7088 3583//7088 +f 3589//7089 3587//7089 3586//7089 +f 3536//7090 3585//7090 3581//7090 +f 3589//7091 3586//7091 3580//7091 +f 3589//7092 3582//7092 3573//7092 +f 3590//7093 3588//7093 3591//7093 +f 3592//7094 3577//7094 3579//7094 +f 3590//7095 3591//7095 3593//7095 +f 3592//7096 3583//7096 3577//7096 +f 3590//7097 3593//7097 3557//7097 +f 3590//7098 3557//7098 3584//7098 +f 3590//7099 3584//7099 3586//7099 +f 3590//7100 3586//7100 3588//7100 +f 3537//7101 3536//7101 3583//7101 +f 3537//7102 3583//7102 3592//7102 +f 3594//7103 3579//7103 3570//7103 +f 3594//7104 3592//7104 3579//7104 +f 3595//7105 3570//7105 3552//7105 +f 3595//7106 3594//7106 3570//7106 +f 3544//7107 3537//7107 3592//7107 +f 3544//7108 3592//7108 3594//7108 +f 3542//7109 3541//7109 3585//7109 +f 3547//7110 3595//7110 3552//7110 +f 3547//7111 3594//7111 3595//7111 +f 3547//7112 3544//7112 3594//7112 +f 3538//7113 3542//7113 3585//7113 +f 3538//7114 3585//7114 3536//7114 +f 3596//7115 3597//7115 3598//7115 +f 3599//7116 3600//7116 3601//7116 +f 3599//7117 3601//7117 3602//7117 +f 3599//7118 3603//7118 3600//7118 +f 3604//7119 3602//7119 3605//7119 +f 3604//7120 3603//7120 3599//7120 +f 3604//7121 3599//7121 3602//7121 +f 3606//7122 3607//7122 3603//7122 +f 3606//7123 3604//7123 3605//7123 +f 3606//7124 3603//7124 3604//7124 +f 3608//7125 3605//7125 3609//7125 +f 3608//7126 3606//7126 3605//7126 +f 3608//7127 3607//7127 3606//7127 +f 3610//7128 3598//7128 3607//7128 +f 3610//7129 3608//7129 3609//7129 +f 3610//7130 3607//7130 3608//7130 +f 3611//7131 3609//7131 3596//7131 +f 3611//7132 3598//7132 3610//7132 +f 3611//7133 3610//7133 3609//7133 +f 3611//7134 3596//7134 3598//7134 +f 3612//7135 3596//7135 3613//7135 +f 3612//7136 3597//7136 3596//7136 +f 3614//7137 3597//7137 3612//7137 +f 3614//7138 3612//7138 3613//7138 +f 3615//7139 3613//7139 3616//7139 +f 3615//7140 3617//7140 3597//7140 +f 3615//7141 3614//7141 3613//7141 +f 3615//7142 3597//7142 3614//7142 +f 3618//7143 3616//7143 3619//7143 +f 3618//7144 3619//7144 3620//7144 +f 3618//7145 3620//7145 3621//7145 +f 3618//7146 3621//7146 3617//7146 +f 3618//7147 3615//7147 3616//7147 +f 3618//7148 3617//7148 3615//7148 +f 3622//7149 3623//7149 3624//7149 +f 3625//7150 3626//7150 3627//7150 +f 3625//7151 3627//7151 3628//7151 +f 3625//7152 3629//7152 3630//7152 +f 3625//7153 3630//7153 3626//7153 +f 3631//7154 3628//7154 3624//7154 +f 3631//7155 3632//7155 3629//7155 +f 3631//7156 3629//7156 3625//7156 +f 3631//7157 3625//7157 3628//7157 +f 3633//7158 3631//7158 3624//7158 +f 3633//7159 3632//7159 3631//7159 +f 3634//7160 3623//7160 3632//7160 +f 3634//7161 3632//7161 3633//7161 +f 3634//7162 3633//7162 3624//7162 +f 3634//7163 3624//7163 3623//7163 +f 3635//7164 3622//7164 3636//7164 +f 3635//7165 3637//7165 3623//7165 +f 3635//7166 3623//7166 3622//7166 +f 3638//7167 3639//7167 3637//7167 +f 3638//7168 3635//7168 3636//7168 +f 3638//7169 3637//7169 3635//7169 +f 3640//7170 3636//7170 3641//7170 +f 3640//7171 3638//7171 3636//7171 +f 3640//7172 3639//7172 3638//7172 +f 3642//7173 3643//7173 3639//7173 +f 3642//7174 3640//7174 3641//7174 +f 3642//7175 3639//7175 3640//7175 +f 3644//7176 3641//7176 3645//7176 +f 3644//7177 3645//7177 3646//7177 +f 3644//7178 3646//7178 3643//7178 +f 3644//7179 3643//7179 3642//7179 +f 3644//7180 3642//7180 3641//7180 +f 3647//7181 3648//7181 3649//7181 +f 3647//7182 3649//7182 3650//7182 +f 3651//7183 3650//7183 3652//7183 +f 3651//7184 3647//7184 3650//7184 +f 3653//7185 3652//7185 3654//7185 +f 3653//7186 3651//7186 3652//7186 +f 3655//7187 3654//7187 3656//7187 +f 3655//7188 3653//7188 3654//7188 +f 3657//7189 3656//7189 3658//7189 +f 3657//7190 3655//7190 3656//7190 +f 3659//7191 3660//7191 3661//7191 +f 3660//7192 3662//7192 3661//7192 +f 3660//7193 3663//7193 3662//7193 +f 3553//7194 3552//7194 3499//7194 +f 3664//7195 3665//7195 3662//7195 +f 3666//7196 3667//7196 3668//7196 +f 3481//7197 3669//7197 3665//7197 +f 3665//7198 3669//7198 3662//7198 +f 3487//7199 3566//7199 3484//7199 +f 3667//7200 3670//7200 3671//7200 +f 3484//7201 3562//7201 3481//7201 +f 3566//7202 3562//7202 3484//7202 +f 3670//7203 3672//7203 3562//7203 +f 3481//7204 3672//7204 3669//7204 +f 3562//7205 3672//7205 3481//7205 +f 3667//7206 3672//7206 3670//7206 +f 3669//7207 3673//7207 3674//7207 +f 3672//7208 3673//7208 3669//7208 +f 3674//7209 3675//7209 3676//7209 +f 3673//7210 3675//7210 3674//7210 +f 3675//7211 3677//7211 3676//7211 +f 3676//7212 3677//7212 3678//7212 +f 3552//7213 3570//7213 3492//7213 +f 3499//7214 3506//7214 3553//7214 +f 3492//7215 3499//7215 3552//7215 +f 3487//7216 3492//7216 3570//7216 +f 3487//7217 3570//7217 3566//7217 +f 3663//7218 3664//7218 3662//7218 +f 3668//7219 3679//7219 3666//7219 +f 3671//7220 3668//7220 3667//7220 +f 3680//7221 3422//7221 3420//7221 +f 3681//7222 3682//7222 3683//7222 +f 3680//7223 3420//7223 3684//7223 +f 3681//7224 3685//7224 3682//7224 +f 3680//7225 3686//7225 3687//7225 +f 3688//7226 3689//7226 3690//7226 +f 3680//7227 3684//7227 3686//7227 +f 3688//7228 3691//7228 3689//7228 +f 3692//7229 3424//7229 3422//7229 +f 3692//7230 3693//7230 3694//7230 +f 3692//7231 3695//7231 3424//7231 +f 3692//7232 3694//7232 3695//7232 +f 3692//7233 3687//7233 3693//7233 +f 3696//7234 3683//7234 3691//7234 +f 3692//7235 3422//7235 3680//7235 +f 3696//7236 3681//7236 3683//7236 +f 3692//7237 3680//7237 3687//7237 +f 3697//7238 3418//7238 3698//7238 +f 3697//7239 3420//7239 3418//7239 +f 3699//7240 3690//7240 3409//7240 +f 3697//7241 3684//7241 3420//7241 +f 3699//7242 3688//7242 3690//7242 +f 3697//7243 3698//7243 3700//7243 +f 3699//7244 3691//7244 3688//7244 +f 3697//7245 3700//7245 3701//7245 +f 3697//7246 3701//7246 3684//7246 +f 3699//7247 3696//7247 3691//7247 +f 3702//7248 3703//7248 3704//7248 +f 3702//7249 3704//7249 3705//7249 +f 3706//7250 3702//7250 3705//7250 +f 3706//7251 3705//7251 3685//7251 +f 3707//7252 3708//7252 3709//7252 +f 3707//7253 3709//7253 3710//7253 +f 3711//7254 3706//7254 3685//7254 +f 3711//7255 3685//7255 3681//7255 +f 3712//7256 3711//7256 3681//7256 +f 3712//7257 3681//7257 3696//7257 +f 3713//7258 3712//7258 3696//7258 +f 3713//7259 3696//7259 3699//7259 +f 3714//7260 3708//7260 3707//7260 +f 3715//7261 3703//7261 3702//7261 +f 3715//7262 3716//7262 3703//7262 +f 3717//7263 3718//7263 3719//7263 +f 3720//7264 3716//7264 3715//7264 +f 3720//7265 3710//7265 3716//7265 +f 3721//7266 3718//7266 3717//7266 +f 3722//7267 3715//7267 3702//7267 +f 3723//7268 3719//7268 3724//7268 +f 3722//7269 3702//7269 3706//7269 +f 3723//7270 3724//7270 3725//7270 +f 3723//7271 3717//7271 3719//7271 +f 3701//7272 3708//7272 3714//7272 +f 3726//7273 3727//7273 3718//7273 +f 3728//7274 3720//7274 3715//7274 +f 3728//7275 3715//7275 3722//7275 +f 3726//7276 3718//7276 3721//7276 +f 3729//7277 3713//7277 3699//7277 +f 3704//7278 3727//7278 3726//7278 +f 3729//7279 3699//7279 3409//7279 +f 3730//7280 3706//7280 3711//7280 +f 3731//7281 3717//7281 3723//7281 +f 3730//7282 3722//7282 3706//7282 +f 3732//7283 3725//7283 3689//7283 +f 3732//7284 3723//7284 3725//7284 +f 3733//7285 3728//7285 3722//7285 +f 3732//7286 3731//7286 3723//7286 +f 3733//7287 3722//7287 3730//7287 +f 3734//7288 3711//7288 3712//7288 +f 3735//7289 3721//7289 3717//7289 +f 3734//7290 3730//7290 3711//7290 +f 3735//7291 3717//7291 3731//7291 +f 3736//7292 3731//7292 3732//7292 +f 3737//7293 3733//7293 3730//7293 +f 3736//7294 3735//7294 3731//7294 +f 3737//7295 3730//7295 3734//7295 +f 3738//7296 3712//7296 3713//7296 +f 3738//7297 3734//7297 3712//7297 +f 3739//7298 3732//7298 3689//7298 +f 3739//7299 3736//7299 3732//7299 +f 3703//7300 3709//7300 3727//7300 +f 3740//7301 3408//7301 3424//7301 +f 3740//7302 3734//7302 3738//7302 +f 3703//7303 3727//7303 3704//7303 +f 3740//7304 3737//7304 3734//7304 +f 3700//7305 3698//7305 3708//7305 +f 3741//7306 3721//7306 3735//7306 +f 3741//7307 3726//7307 3721//7307 +f 3700//7308 3708//7308 3701//7308 +f 3742//7309 3707//7309 3710//7309 +f 3742//7310 3710//7310 3720//7310 +f 3693//7311 3742//7311 3720//7311 +f 3682//7312 3735//7312 3736//7312 +f 3682//7313 3741//7313 3735//7313 +f 3693//7314 3720//7314 3728//7314 +f 3705//7315 3704//7315 3726//7315 +f 3743//7316 3409//7316 3408//7316 +f 3705//7317 3726//7317 3741//7317 +f 3743//7318 3713//7318 3729//7318 +f 3743//7319 3729//7319 3409//7319 +f 3743//7320 3738//7320 3713//7320 +f 3743//7321 3408//7321 3740//7321 +f 3743//7322 3740//7322 3738//7322 +f 3683//7323 3736//7323 3739//7323 +f 3694//7324 3728//7324 3733//7324 +f 3683//7325 3682//7325 3736//7325 +f 3694//7326 3693//7326 3728//7326 +f 3695//7327 3733//7327 3737//7327 +f 3695//7328 3740//7328 3424//7328 +f 3716//7329 3709//7329 3703//7329 +f 3695//7330 3737//7330 3740//7330 +f 3695//7331 3694//7331 3733//7331 +f 3685//7332 3741//7332 3682//7332 +f 3686//7333 3714//7333 3707//7333 +f 3685//7334 3705//7334 3741//7334 +f 3686//7335 3707//7335 3742//7335 +f 3687//7336 3742//7336 3693//7336 +f 3710//7337 3709//7337 3716//7337 +f 3687//7338 3686//7338 3742//7338 +f 3691//7339 3683//7339 3739//7339 +f 3684//7340 3701//7340 3714//7340 +f 3691//7341 3739//7341 3689//7341 +f 3684//7342 3714//7342 3686//7342 +f 3744//7343 3745//7343 3746//7343 +f 3747//7344 3748//7344 3744//7344 +f 3747//7345 3749//7345 3748//7345 +f 3750//7346 3751//7346 3749//7346 +f 3750//7347 3749//7347 3747//7347 +f 3752//7348 3753//7348 3754//7348 +f 3752//7349 3755//7349 3753//7349 +f 3752//7350 3746//7350 3755//7350 +f 3756//7351 3757//7351 3758//7351 +f 3756//7352 3758//7352 3751//7352 +f 3756//7353 3751//7353 3750//7353 +f 3759//7354 3744//7354 3746//7354 +f 3759//7355 3752//7355 3754//7355 +f 3759//7356 3746//7356 3752//7356 +f 3760//7357 3754//7357 3761//7357 +f 3760//7358 3744//7358 3759//7358 +f 3760//7359 3747//7359 3744//7359 +f 3760//7360 3759//7360 3754//7360 +f 3762//7361 3761//7361 3763//7361 +f 3762//7362 3760//7362 3761//7362 +f 3762//7363 3750//7363 3747//7363 +f 3762//7364 3747//7364 3760//7364 +f 3764//7365 3765//7365 3757//7365 +f 3764//7366 3763//7366 3765//7366 +f 3764//7367 3757//7367 3756//7367 +f 3764//7368 3756//7368 3750//7368 +f 3764//7369 3762//7369 3763//7369 +f 3764//7370 3750//7370 3762//7370 +f 3766//7371 3767//7371 3768//7371 +f 3769//7372 3770//7372 3767//7372 +f 3769//7373 3767//7373 3766//7373 +f 3771//7374 3772//7374 3770//7374 +f 3771//7375 3770//7375 3769//7375 +f 3773//7376 3774//7376 3772//7376 +f 3773//7377 3772//7377 3771//7377 +f 3745//7378 3768//7378 3755//7378 +f 3745//7379 3766//7379 3768//7379 +f 3775//7380 3776//7380 3777//7380 +f 3775//7381 3777//7381 3774//7381 +f 3775//7382 3774//7382 3773//7382 +f 3748//7383 3766//7383 3745//7383 +f 3748//7384 3769//7384 3766//7384 +f 3749//7385 3771//7385 3769//7385 +f 3749//7386 3769//7386 3748//7386 +f 3751//7387 3773//7387 3771//7387 +f 3751//7388 3771//7388 3749//7388 +f 3746//7389 3745//7389 3755//7389 +f 3758//7390 3757//7390 3776//7390 +f 3758//7391 3776//7391 3775//7391 +f 3758//7392 3775//7392 3773//7392 +f 3758//7393 3773//7393 3751//7393 +f 3744//7394 3748//7394 3745//7394 +f 3778//7395 3779//7395 3780//7395 +f 3778//7396 3780//7396 3781//7396 +f 3782//7397 3779//7397 3778//7397 +f 3782//7398 3783//7398 3779//7398 +f 3784//7399 3785//7399 3783//7399 +f 3784//7400 3783//7400 3782//7400 +f 3786//7401 3787//7401 3788//7401 +f 3786//7402 3781//7402 3787//7402 +f 3789//7403 3790//7403 3791//7403 +f 3789//7404 3791//7404 3792//7404 +f 3789//7405 3792//7405 3785//7405 +f 3789//7406 3785//7406 3784//7406 +f 3793//7407 3788//7407 3794//7407 +f 3793//7408 3778//7408 3781//7408 +f 3793//7409 3786//7409 3788//7409 +f 3793//7410 3781//7410 3786//7410 +f 3795//7411 3794//7411 3796//7411 +f 3795//7412 3778//7412 3793//7412 +f 3795//7413 3782//7413 3778//7413 +f 3795//7414 3793//7414 3794//7414 +f 3797//7415 3796//7415 3798//7415 +f 3797//7416 3795//7416 3796//7416 +f 3797//7417 3784//7417 3782//7417 +f 3797//7418 3782//7418 3795//7418 +f 3799//7419 3800//7419 3790//7419 +f 3799//7420 3798//7420 3800//7420 +f 3799//7421 3790//7421 3789//7421 +f 3799//7422 3789//7422 3784//7422 +f 3799//7423 3797//7423 3798//7423 +f 3799//7424 3784//7424 3797//7424 +f 3801//7425 3802//7425 3803//7425 +f 3804//7426 3805//7426 3802//7426 +f 3804//7427 3802//7427 3801//7427 +f 3806//7428 3807//7428 3805//7428 +f 3806//7429 3805//7429 3804//7429 +f 3808//7430 3809//7430 3807//7430 +f 3808//7431 3807//7431 3806//7431 +f 3780//7432 3801//7432 3803//7432 +f 3810//7433 3791//7433 3811//7433 +f 3810//7434 3811//7434 3809//7434 +f 3810//7435 3809//7435 3808//7435 +f 3779//7436 3801//7436 3780//7436 +f 3779//7437 3804//7437 3801//7437 +f 3783//7438 3806//7438 3804//7438 +f 3783//7439 3804//7439 3779//7439 +f 3785//7440 3808//7440 3806//7440 +f 3785//7441 3806//7441 3783//7441 +f 3781//7442 3803//7442 3787//7442 +f 3781//7443 3780//7443 3803//7443 +f 3792//7444 3791//7444 3810//7444 +f 3792//7445 3810//7445 3808//7445 +f 3792//7446 3808//7446 3785//7446 +f 3812//7447 3813//7447 3814//7447 +f 3812//7448 3815//7448 3813//7448 +f 3816//7449 3812//7449 3814//7449 +f 3816//7450 3814//7450 3817//7450 +f 3818//7451 3401//7451 3428//7451 +f 3818//7452 3428//7452 3819//7452 +f 3818//7453 3819//7453 3820//7453 +f 3821//7454 3822//7454 3823//7454 +f 3821//7455 3824//7455 3822//7455 +f 3821//7456 3817//7456 3824//7456 +f 3821//7457 3816//7457 3817//7457 +f 3825//7458 3818//7458 3820//7458 +f 3825//7459 3820//7459 3826//7459 +f 3827//7460 3825//7460 3826//7460 +f 3827//7461 3826//7461 3815//7461 +f 3828//7462 3815//7462 3812//7462 +f 3828//7463 3827//7463 3815//7463 +f 3829//7464 3812//7464 3816//7464 +f 3829//7465 3828//7465 3812//7465 +f 3830//7466 3829//7466 3816//7466 +f 3830//7467 3821//7467 3823//7467 +f 3830//7468 3816//7468 3821//7468 +f 3831//7469 3401//7469 3818//7469 +f 3831//7470 3818//7470 3825//7470 +f 3832//7471 3410//7471 3401//7471 +f 3832//7472 3401//7472 3831//7472 +f 3833//7473 3831//7473 3825//7473 +f 3833//7474 3825//7474 3827//7474 +f 3834//7475 3835//7475 3836//7475 +f 3834//7476 3836//7476 3837//7476 +f 3838//7477 3832//7477 3831//7477 +f 3834//7478 3837//7478 3839//7478 +f 3838//7479 3831//7479 3833//7479 +f 3840//7480 3841//7480 3835//7480 +f 3838//7481 3410//7481 3832//7481 +f 3842//7482 3833//7482 3827//7482 +f 3842//7483 3827//7483 3828//7483 +f 3843//7484 3838//7484 3833//7484 +f 3844//7485 3841//7485 3840//7485 +f 3843//7486 3833//7486 3842//7486 +f 3845//7487 3835//7487 3834//7487 +f 3845//7488 3840//7488 3835//7488 +f 3846//7489 3828//7489 3829//7489 +f 3845//7490 3834//7490 3839//7490 +f 3847//7491 3844//7491 3840//7491 +f 3846//7492 3842//7492 3828//7492 +f 3847//7493 3845//7493 3839//7493 +f 3847//7494 3840//7494 3845//7494 +f 3848//7495 3829//7495 3830//7495 +f 3849//7496 3850//7496 3841//7496 +f 3848//7497 3830//7497 3823//7497 +f 3848//7498 3823//7498 3851//7498 +f 3848//7499 3846//7499 3829//7499 +f 3852//7500 3819//7500 3850//7500 +f 3853//7501 3843//7501 3842//7501 +f 3853//7502 3842//7502 3846//7502 +f 3854//7503 3848//7503 3851//7503 +f 3855//7504 3849//7504 3841//7504 +f 3854//7505 3846//7505 3848//7505 +f 3854//7506 3853//7506 3846//7506 +f 3856//7507 3410//7507 3838//7507 +f 3813//7508 3852//7508 3850//7508 +f 3856//7509 3838//7509 3843//7509 +f 3813//7510 3850//7510 3849//7510 +f 3820//7511 3819//7511 3852//7511 +f 3857//7512 3856//7512 3843//7512 +f 3857//7513 3843//7513 3853//7513 +f 3858//7514 3841//7514 3844//7514 +f 3858//7515 3855//7515 3841//7515 +f 3859//7516 3851//7516 3860//7516 +f 3859//7517 3853//7517 3854//7517 +f 3859//7518 3857//7518 3853//7518 +f 3861//7519 3839//7519 3822//7519 +f 3861//7520 3844//7520 3847//7520 +f 3859//7521 3854//7521 3851//7521 +f 3862//7522 3413//7522 3410//7522 +f 3861//7523 3858//7523 3844//7523 +f 3862//7524 3410//7524 3856//7524 +f 3861//7525 3847//7525 3839//7525 +f 3862//7526 3856//7526 3857//7526 +f 3863//7527 3859//7527 3860//7527 +f 3814//7528 3849//7528 3855//7528 +f 3863//7529 3857//7529 3859//7529 +f 3814//7530 3813//7530 3849//7530 +f 3863//7531 3862//7531 3857//7531 +f 3864//7532 3865//7532 3414//7532 +f 3864//7533 3414//7533 3413//7533 +f 3864//7534 3860//7534 3865//7534 +f 3864//7535 3413//7535 3862//7535 +f 3864//7536 3863//7536 3860//7536 +f 3864//7537 3862//7537 3863//7537 +f 3826//7538 3820//7538 3852//7538 +f 3817//7539 3814//7539 3855//7539 +f 3817//7540 3855//7540 3858//7540 +f 3815//7541 3852//7541 3813//7541 +f 3815//7542 3826//7542 3852//7542 +f 3824//7543 3861//7543 3822//7543 +f 3824//7544 3858//7544 3861//7544 +f 3824//7545 3817//7545 3858//7545 +f 3866//7546 3867//7546 3868//7546 +f 3869//7547 3870//7547 3871//7547 +f 3869//7548 3871//7548 3872//7548 +f 3869//7549 3872//7549 3873//7549 +f 3874//7550 3875//7550 3870//7550 +f 3874//7551 3870//7551 3869//7551 +f 3874//7552 3869//7552 3873//7552 +f 3876//7553 3873//7553 3877//7553 +f 3876//7554 3874//7554 3873//7554 +f 3876//7555 3875//7555 3874//7555 +f 3878//7556 3879//7556 3875//7556 +f 3878//7557 3875//7557 3876//7557 +f 3878//7558 3876//7558 3877//7558 +f 3880//7559 3877//7559 3868//7559 +f 3880//7560 3878//7560 3877//7560 +f 3880//7561 3879//7561 3878//7561 +f 3881//7562 3867//7562 3879//7562 +f 3881//7563 3880//7563 3868//7563 +f 3881//7564 3868//7564 3867//7564 +f 3881//7565 3879//7565 3880//7565 +f 3882//7566 3883//7566 3867//7566 +f 3882//7567 3867//7567 3866//7567 +f 3884//7568 3883//7568 3882//7568 +f 3884//7569 3882//7569 3866//7569 +f 3885//7570 3886//7570 3883//7570 +f 3885//7571 3866//7571 3887//7571 +f 3885//7572 3883//7572 3884//7572 +f 3885//7573 3884//7573 3866//7573 +f 3888//7574 3889//7574 3890//7574 +f 3888//7575 3891//7575 3886//7575 +f 3888//7576 3890//7576 3891//7576 +f 3888//7577 3887//7577 3889//7577 +f 3888//7578 3886//7578 3885//7578 +f 3888//7579 3885//7579 3887//7579 +f 3892//7580 3893//7580 3894//7580 +f 3895//7581 3896//7581 3897//7581 +f 3895//7582 3897//7582 3898//7582 +f 3895//7583 3899//7583 3900//7583 +f 3895//7584 3898//7584 3899//7584 +f 3901//7585 3894//7585 3896//7585 +f 3901//7586 3900//7586 3902//7586 +f 3901//7587 3896//7587 3895//7587 +f 3901//7588 3895//7588 3900//7588 +f 3903//7589 3901//7589 3902//7589 +f 3903//7590 3894//7590 3901//7590 +f 3904//7591 3902//7591 3892//7591 +f 3904//7592 3903//7592 3902//7592 +f 3904//7593 3892//7593 3894//7593 +f 3904//7594 3894//7594 3903//7594 +f 3905//7595 3906//7595 3893//7595 +f 3905//7596 3892//7596 3907//7596 +f 3905//7597 3893//7597 3892//7597 +f 3908//7598 3907//7598 3909//7598 +f 3908//7599 3905//7599 3907//7599 +f 3908//7600 3906//7600 3905//7600 +f 3910//7601 3911//7601 3906//7601 +f 3910//7602 3906//7602 3908//7602 +f 3910//7603 3908//7603 3909//7603 +f 3912//7604 3909//7604 3913//7604 +f 3912//7605 3911//7605 3910//7605 +f 3912//7606 3910//7606 3909//7606 +f 3914//7607 3915//7607 3916//7607 +f 3914//7608 3916//7608 3911//7608 +f 3914//7609 3913//7609 3915//7609 +f 3914//7610 3911//7610 3912//7610 +f 3914//7611 3912//7611 3913//7611 +f 3917//7612 3918//7612 3867//7612 +f 3917//7613 3867//7613 3883//7613 +f 3919//7614 3920//7614 3921//7614 +f 3899//7615 3898//7615 3922//7615 +f 3923//7616 3915//7616 3924//7616 +f 3891//7617 3917//7617 3886//7617 +f 3900//7618 3899//7618 3922//7618 +f 3890//7619 3917//7619 3891//7619 +f 3890//7620 3919//7620 3921//7620 +f 3890//7621 3921//7621 3915//7621 +f 3925//7622 3898//7622 3871//7622 +f 3926//7623 3915//7623 3923//7623 +f 3925//7624 3922//7624 3898//7624 +f 3927//7625 3898//7625 3928//7625 +f 3927//7626 3871//7626 3898//7626 +f 3926//7627 3890//7627 3915//7627 +f 3926//7628 3917//7628 3890//7628 +f 3393//7629 3923//7629 3394//7629 +f 3393//7630 3926//7630 3923//7630 +f 3919//7631 3929//7631 3920//7631 +f 3929//7632 3930//7632 3931//7632 +f 3930//7633 3932//7633 3933//7633 +f 3932//7634 3934//7634 3935//7634 +f 3936//7635 3902//7635 3900//7635 +f 3934//7636 3937//7636 3938//7636 +f 3875//7637 3879//7637 3918//7637 +f 3879//7638 3867//7638 3918//7638 +f 3883//7639 3886//7639 3917//7639 +f 3928//7640 3938//7640 3937//7640 +f 3936//7641 3900//7641 3922//7641 +f 3938//7642 3935//7642 3934//7642 +f 3935//7643 3933//7643 3932//7643 +f 3933//7644 3931//7644 3930//7644 +f 3931//7645 3920//7645 3929//7645 +f 3913//7646 3909//7646 3924//7646 +f 3909//7647 3907//7647 3924//7647 +f 3870//7648 3925//7648 3871//7648 +f 3892//7649 3902//7649 3936//7649 +f 3937//7650 3927//7650 3928//7650 +f 3875//7651 3925//7651 3870//7651 +f 3907//7652 3892//7652 3936//7652 +f 3918//7653 3925//7653 3875//7653 +f 3924//7654 3907//7654 3936//7654 +f 3915//7655 3913//7655 3924//7655 +f 3436//7656 3836//7656 3939//7656 +f 3435//7657 3836//7657 3436//7657 +f 3836//7658 3835//7658 3939//7658 +f 3836//7659 3724//7659 3940//7659 +f 3435//7660 3724//7660 3836//7660 +f 3940//7661 3941//7661 3942//7661 +f 3724//7662 3941//7662 3940//7662 +f 3841//7663 3943//7663 3939//7663 +f 3724//7664 3944//7664 3725//7664 +f 3435//7665 3944//7665 3724//7665 +f 3944//7666 3689//7666 3725//7666 +f 3819//7667 3403//7667 3943//7667 +f 3944//7668 3945//7668 3689//7668 +f 3819//7669 3428//7669 3403//7669 +f 3946//7670 3425//7670 3947//7670 +f 3945//7671 3407//7671 3690//7671 +f 3835//7672 3841//7672 3939//7672 +f 3841//7673 3850//7673 3943//7673 +f 3850//7674 3819//7674 3943//7674 +f 3404//7675 3947//7675 3425//7675 +f 3947//7676 3948//7676 3946//7676 +f 3948//7677 3942//7677 3949//7677 +f 3949//7678 3942//7678 3941//7678 +f 3949//7679 3946//7679 3948//7679 +f 3409//7680 3690//7680 3407//7680 +f 3690//7681 3689//7681 3945//7681 +f 3419//7682 3950//7682 3951//7682 +f 3423//7683 3950//7683 3419//7683 +f 3951//7684 3952//7684 3953//7684 +f 3950//7685 3952//7685 3951//7685 +f 3953//7686 3429//7686 3431//7686 +f 3952//7687 3429//7687 3953//7687 +f 3954//7688 3400//7688 3399//7688 +f 3954//7689 3399//7689 3955//7689 +f 3956//7690 3955//7690 3957//7690 +f 3956//7691 3954//7691 3955//7691 +f 3958//7692 3957//7692 3959//7692 +f 3958//7693 3956//7693 3957//7693 +f 3960//7694 3961//7694 3962//7694 +f 3960//7695 3963//7695 3961//7695 +f 3964//7696 3962//7696 3965//7696 +f 3964//7697 3960//7697 3962//7697 +f 3966//7698 3965//7698 3967//7698 +f 3966//7699 3964//7699 3965//7699 +f 3968//7700 3969//7700 3970//7700 +f 3970//7701 3969//7701 3971//7701 +f 3971//7702 3972//7702 3973//7702 +f 3969//7703 3972//7703 3971//7703 +f 3973//7704 3974//7704 3975//7704 +f 3972//7705 3974//7705 3973//7705 +f 3959//7706 3975//7706 3974//7706 +f 3959//7707 3974//7707 3958//7707 +f 3967//7708 3922//7708 3925//7708 +f 3967//7709 3925//7709 3966//7709 +f 3933//7710 3976//7710 3977//7710 +f 3978//7711 3916//7711 3915//7711 +f 3978//7712 3921//7712 3920//7712 +f 3978//7713 3915//7713 3921//7713 +f 3978//7714 3979//7714 3916//7714 +f 3980//7715 3920//7715 3931//7715 +f 3980//7716 3977//7716 3979//7716 +f 3980//7717 3979//7717 3978//7717 +f 3980//7718 3978//7718 3920//7718 +f 3981//7719 3980//7719 3931//7719 +f 3981//7720 3977//7720 3980//7720 +f 3982//7721 3931//7721 3933//7721 +f 3982//7722 3981//7722 3931//7722 +f 3982//7723 3977//7723 3981//7723 +f 3982//7724 3933//7724 3977//7724 +f 3983//7725 3933//7725 3935//7725 +f 3983//7726 3984//7726 3976//7726 +f 3983//7727 3976//7727 3933//7727 +f 3985//7728 3935//7728 3938//7728 +f 3985//7729 3984//7729 3983//7729 +f 3985//7730 3983//7730 3935//7730 +f 3986//7731 3987//7731 3984//7731 +f 3986//7732 3985//7732 3938//7732 +f 3986//7733 3984//7733 3985//7733 +f 3988//7734 3938//7734 3928//7734 +f 3988//7735 3987//7735 3986//7735 +f 3988//7736 3986//7736 3938//7736 +f 3989//7737 3928//7737 3898//7737 +f 3989//7738 3898//7738 3897//7738 +f 3989//7739 3897//7739 3987//7739 +f 3989//7740 3988//7740 3928//7740 +f 3989//7741 3987//7741 3988//7741 +f 3990//7742 3932//7742 3991//7742 +f 3992//7743 3890//7743 3889//7743 +f 3992//7744 3889//7744 3993//7744 +f 3992//7745 3919//7745 3890//7745 +f 3994//7746 3929//7746 3919//7746 +f 3994//7747 3919//7747 3992//7747 +f 3994//7748 3992//7748 3993//7748 +f 3995//7749 3993//7749 3996//7749 +f 3995//7750 3994//7750 3993//7750 +f 3995//7751 3929//7751 3994//7751 +f 3997//7752 3930//7752 3929//7752 +f 3997//7753 3995//7753 3996//7753 +f 3997//7754 3929//7754 3995//7754 +f 3998//7755 3996//7755 3991//7755 +f 3998//7756 3997//7756 3996//7756 +f 3998//7757 3930//7757 3997//7757 +f 3999//7758 3932//7758 3930//7758 +f 3999//7759 3930//7759 3998//7759 +f 3999//7760 3998//7760 3991//7760 +f 3999//7761 3991//7761 3932//7761 +f 4000//7762 3934//7762 3932//7762 +f 4000//7763 3932//7763 3990//7763 +f 4001//7764 4000//7764 3990//7764 +f 4001//7765 3934//7765 4000//7765 +f 4002//7766 3990//7766 4003//7766 +f 4002//7767 3937//7767 3934//7767 +f 4002//7768 3934//7768 4001//7768 +f 4002//7769 4001//7769 3990//7769 +f 4004//7770 4003//7770 3872//7770 +f 4004//7771 3872//7771 3871//7771 +f 4004//7772 3927//7772 3937//7772 +f 4004//7773 3871//7773 3927//7773 +f 4004//7774 3937//7774 4002//7774 +f 4004//7775 4002//7775 4003//7775 +f 4005//7776 4006//7776 4007//7776 +f 4005//7777 4007//7777 4008//7777 +f 4009//7778 3406//7778 4010//7778 +f 4009//7779 4011//7779 3406//7779 +f 4012//7780 4013//7780 4014//7780 +f 4012//7781 4015//7781 4013//7781 +f 4012//7782 4008//7782 4015//7782 +f 4012//7783 4005//7783 4008//7783 +f 4016//7784 4009//7784 4010//7784 +f 4016//7785 4010//7785 4017//7785 +f 4018//7786 3947//7786 4011//7786 +f 4019//7787 4016//7787 4017//7787 +f 4019//7788 4017//7788 4006//7788 +f 4020//7789 4011//7789 4009//7789 +f 4020//7790 4018//7790 4011//7790 +f 4021//7791 4006//7791 4005//7791 +f 4021//7792 4019//7792 4006//7792 +f 4022//7793 4009//7793 4016//7793 +f 4022//7794 4020//7794 4009//7794 +f 4023//7795 4021//7795 4005//7795 +f 4023//7796 4012//7796 4014//7796 +f 4023//7797 4005//7797 4012//7797 +f 4024//7798 4018//7798 4020//7798 +f 4024//7799 3948//7799 3947//7799 +f 4024//7800 3947//7800 4018//7800 +f 4025//7801 4020//7801 4022//7801 +f 4025//7802 4024//7802 4020//7802 +f 4026//7803 3415//7803 3414//7803 +f 4027//7804 4016//7804 4019//7804 +f 4027//7805 4022//7805 4016//7805 +f 4028//7806 3427//7806 3415//7806 +f 4029//7807 3948//7807 4024//7807 +f 4029//7808 4024//7808 4025//7808 +f 4030//7809 3414//7809 3865//7809 +f 4030//7810 3865//7810 4031//7810 +f 4030//7811 4026//7811 3414//7811 +f 4032//7812 4027//7812 4019//7812 +f 4033//7813 4028//7813 3415//7813 +f 4032//7814 4019//7814 4021//7814 +f 4033//7815 3415//7815 4026//7815 +f 4034//7816 4025//7816 4022//7816 +f 4034//7817 4022//7817 4027//7817 +f 4035//7818 4030//7818 4031//7818 +f 4035//7819 4026//7819 4030//7819 +f 4035//7820 4033//7820 4026//7820 +f 4036//7821 4021//7821 4023//7821 +f 4037//7822 3406//7822 3427//7822 +f 4036//7823 4014//7823 4038//7823 +f 4036//7824 4023//7824 4014//7824 +f 4036//7825 4032//7825 4021//7825 +f 4039//7826 3427//7826 4028//7826 +f 4040//7827 4027//7827 4032//7827 +f 4040//7828 4034//7828 4027//7828 +f 4041//7829 4036//7829 4038//7829 +f 4041//7830 4032//7830 4036//7830 +f 4041//7831 4040//7831 4032//7831 +f 4042//7832 4037//7832 3427//7832 +f 4043//7833 4029//7833 4025//7833 +f 4010//7834 3406//7834 4037//7834 +f 4043//7835 4025//7835 4034//7835 +f 4044//7836 4043//7836 4034//7836 +f 4045//7837 4028//7837 4033//7837 +f 4044//7838 4034//7838 4040//7838 +f 4045//7839 4039//7839 4028//7839 +f 4046//7840 4038//7840 4047//7840 +f 4017//7841 4037//7841 4042//7841 +f 4046//7842 4041//7842 4038//7842 +f 4046//7843 4040//7843 4041//7843 +f 4046//7844 4044//7844 4040//7844 +f 4017//7845 4010//7845 4037//7845 +f 4048//7846 3942//7846 3948//7846 +f 4049//7847 4031//7847 4013//7847 +f 4049//7848 4035//7848 4031//7848 +f 4048//7849 3948//7849 4029//7849 +f 4049//7850 4033//7850 4035//7850 +f 4048//7851 4029//7851 4043//7851 +f 4049//7852 4045//7852 4033//7852 +f 4050//7853 4048//7853 4043//7853 +f 4007//7854 3427//7854 4039//7854 +f 4050//7855 4043//7855 4044//7855 +f 4007//7856 4042//7856 3427//7856 +f 4051//7857 4046//7857 4047//7857 +f 4011//7858 3947//7858 3404//7858 +f 4051//7859 4044//7859 4046//7859 +f 4011//7860 3404//7860 3406//7860 +f 4051//7861 4050//7861 4044//7861 +f 4052//7862 3940//7862 3942//7862 +f 4052//7863 3942//7863 4048//7863 +f 4052//7864 4048//7864 4050//7864 +f 4006//7865 4017//7865 4042//7865 +f 4006//7866 4042//7866 4007//7866 +f 4053//7867 4051//7867 4047//7867 +f 4053//7868 4050//7868 4051//7868 +f 4053//7869 4052//7869 4050//7869 +f 4008//7870 4039//7870 4045//7870 +f 4054//7871 4047//7871 3837//7871 +f 4054//7872 3837//7872 3836//7872 +f 4008//7873 4007//7873 4039//7873 +f 4054//7874 3836//7874 3940//7874 +f 4054//7875 3940//7875 4052//7875 +f 4054//7876 4053//7876 4047//7876 +f 4054//7877 4052//7877 4053//7877 +f 4015//7878 4049//7878 4013//7878 +f 4015//7879 4008//7879 4045//7879 +f 4015//7880 4045//7880 4049//7880 +f 4055//7881 3787//7881 4056//7881 +f 4057//7882 3984//7882 3987//7882 +f 4057//7883 4056//7883 4058//7883 +f 4057//7884 4059//7884 3984//7884 +f 4057//7885 4058//7885 4059//7885 +f 4060//7886 4061//7886 4062//7886 +f 4063//7887 3788//7887 3787//7887 +f 4063//7888 3787//7888 4055//7888 +f 4064//7889 3987//7889 3897//7889 +f 4064//7890 3897//7890 3896//7890 +f 4064//7891 4055//7891 4056//7891 +f 4064//7892 4057//7892 3987//7892 +f 4064//7893 4056//7893 4057//7893 +f 4065//7894 3794//7894 3788//7894 +f 4065//7895 3788//7895 4063//7895 +f 4066//7896 3896//7896 3894//7896 +f 4066//7897 4063//7897 4055//7897 +f 4066//7898 4064//7898 3896//7898 +f 4066//7899 4055//7899 4064//7899 +f 4067//7900 3796//7900 3794//7900 +f 3984//7901 4068//7901 3976//7901 +f 4067//7902 3794//7902 4065//7902 +f 4069//7903 3894//7903 3893//7903 +f 4069//7904 4066//7904 3894//7904 +f 4069//7905 4065//7905 4063//7905 +f 4069//7906 4063//7906 4066//7906 +f 4070//7907 3798//7907 3796//7907 +f 4070//7908 3796//7908 4067//7908 +f 4071//7909 4067//7909 4065//7909 +f 4071//7910 4069//7910 3893//7910 +f 4071//7911 4065//7911 4069//7911 +f 4072//7912 3800//7912 3798//7912 +f 4072//7913 3798//7913 4070//7913 +f 4073//7914 3893//7914 3906//7914 +f 4073//7915 4067//7915 4071//7915 +f 4073//7916 4070//7916 4067//7916 +f 4073//7917 4071//7917 3893//7917 +f 4074//7918 3790//7918 3800//7918 +f 4074//7919 3800//7919 4072//7919 +f 4075//7920 4070//7920 4073//7920 +f 4075//7921 3906//7921 3911//7921 +f 4075//7922 4073//7922 3906//7922 +f 4075//7923 4072//7923 4070//7923 +f 4076//7924 3790//7924 4074//7924 +f 4076//7925 4077//7925 3790//7925 +f 4078//7926 3916//7926 3979//7926 +f 4078//7927 4072//7927 4075//7927 +f 4078//7928 3911//7928 3916//7928 +f 4078//7929 4074//7929 4072//7929 +f 4078//7930 4075//7930 3911//7930 +f 4079//7931 4080//7931 4077//7931 +f 4079//7932 4077//7932 4076//7932 +f 4079//7933 4060//7933 4080//7933 +f 4081//7934 3979//7934 3977//7934 +f 4081//7935 4078//7935 3979//7935 +f 4081//7936 4074//7936 4078//7936 +f 4081//7937 4076//7937 4074//7937 +f 4082//7938 3977//7938 3976//7938 +f 4082//7939 4068//7939 4060//7939 +f 4082//7940 3976//7940 4068//7940 +f 4082//7941 4081//7941 3977//7941 +f 4082//7942 4079//7942 4076//7942 +f 4082//7943 4076//7943 4081//7943 +f 4082//7944 4060//7944 4079//7944 +f 4060//7945 4062//7945 4080//7945 +f 4058//7946 4083//7946 4061//7946 +f 4058//7947 4061//7947 4060//7947 +f 4056//7948 3787//7948 4083//7948 +f 4056//7949 4083//7949 4058//7949 +f 4059//7950 4060//7950 4068//7950 +f 4059//7951 4068//7951 3984//7951 +f 4059//7952 4058//7952 4060//7952 +f 4084//7953 4085//7953 4086//7953 +f 4084//7954 4087//7954 4085//7954 +f 4088//7955 4089//7955 4087//7955 +f 4088//7956 4087//7956 4084//7956 +f 4090//7957 4077//7957 4080//7957 +f 4090//7958 3790//7958 4077//7958 +f 4090//7959 4091//7959 3790//7959 +f 4092//7960 3787//7960 4093//7960 +f 4092//7961 4093//7961 4089//7961 +f 4092//7962 4089//7962 4088//7962 +f 4094//7963 4080//7963 4062//7963 +f 4094//7964 4086//7964 4091//7964 +f 4094//7965 4090//7965 4080//7965 +f 4094//7966 4091//7966 4090//7966 +f 4095//7967 4084//7967 4086//7967 +f 4095//7968 4086//7968 4094//7968 +f 4095//7969 4094//7969 4062//7969 +f 4096//7970 4062//7970 4061//7970 +f 4096//7971 4088//7971 4084//7971 +f 4096//7972 4095//7972 4062//7972 +f 4096//7973 4084//7973 4095//7973 +f 4097//7974 4083//7974 3787//7974 +f 4097//7975 4061//7975 4083//7975 +f 4097//7976 3787//7976 4092//7976 +f 4097//7977 4092//7977 4088//7977 +f 4097//7978 4096//7978 4061//7978 +f 4097//7979 4088//7979 4096//7979 +f 4098//7980 4099//7980 3791//7980 +f 4100//7981 4101//7981 4099//7981 +f 4100//7982 4099//7982 4098//7982 +f 4102//7983 4103//7983 4104//7983 +f 4102//7984 4104//7984 4101//7984 +f 4102//7985 4101//7985 4100//7985 +f 4105//7986 4106//7986 4103//7986 +f 4105//7987 4103//7987 4102//7987 +f 4107//7988 3791//7988 3790//7988 +f 4107//7989 4098//7989 3791//7989 +f 4108//7990 3803//7990 4106//7990 +f 4108//7991 4106//7991 4105//7991 +f 4085//7992 4098//7992 4107//7992 +f 4085//7993 4100//7993 4098//7993 +f 4087//7994 4102//7994 4100//7994 +f 4087//7995 4100//7995 4085//7995 +f 4089//7996 4105//7996 4102//7996 +f 4089//7997 4102//7997 4087//7997 +f 4091//7998 4107//7998 3790//7998 +f 4093//7999 3787//7999 3803//7999 +f 4093//8000 4108//8000 4105//8000 +f 4093//8001 3803//8001 4108//8001 +f 4093//8002 4105//8002 4089//8002 +f 4086//8003 4085//8003 4107//8003 +f 4086//8004 4107//8004 4091//8004 +f 4109//8005 4110//8005 4111//8005 +f 4112//8006 4113//8006 3809//8006 +f 4112//8007 4114//8007 4113//8007 +f 4115//8008 4116//8008 4117//8008 +f 4115//8009 4117//8009 4104//8009 +f 4112//8010 4118//8010 4114//8010 +f 4115//8011 4104//8011 4103//8011 +f 4115//8012 4119//8012 4116//8012 +f 4120//8013 4121//8013 4122//8013 +f 4123//8014 4124//8014 4119//8014 +f 4125//8015 3809//8015 3811//8015 +f 4123//8016 4119//8016 4115//8016 +f 4125//8017 4126//8017 4118//8017 +f 4123//8018 4115//8018 4103//8018 +f 4125//8019 4118//8019 4112//8019 +f 4125//8020 4112//8020 3809//8020 +f 4127//8021 4128//8021 4121//8021 +f 4129//8022 4130//8022 4109//8022 +f 4127//8023 4121//8023 4120//8023 +f 4131//8024 4132//8024 4130//8024 +f 4131//8025 4130//8025 4129//8025 +f 4133//8026 4103//8026 4106//8026 +f 4134//8027 4128//8027 4127//8027 +f 4133//8028 4123//8028 4103//8028 +f 4133//8029 4124//8029 4123//8029 +f 4135//8030 4126//8030 4125//8030 +f 4133//8031 4111//8031 4124//8031 +f 4135//8032 4122//8032 4126//8032 +f 4135//8033 4125//8033 3811//8033 +f 4136//8034 4111//8034 4133//8034 +f 4136//8035 4109//8035 4111//8035 +f 4136//8036 4133//8036 4106//8036 +f 4137//8037 3811//8037 3791//8037 +f 4137//8038 4135//8038 3811//8038 +f 4137//8039 4122//8039 4135//8039 +f 4137//8040 4120//8040 4122//8040 +f 4138//8041 4132//8041 4131//8041 +f 4139//8042 4140//8042 4132//8042 +f 4141//8043 4142//8043 4128//8043 +f 4141//8044 4128//8044 4134//8044 +f 4139//8045 4132//8045 4138//8045 +f 4143//8046 4106//8046 3803//8046 +f 4143//8047 4129//8047 4109//8047 +f 4143//8048 4109//8048 4136//8048 +f 4144//8049 4142//8049 4141//8049 +f 4143//8050 4136//8050 4106//8050 +f 4145//8051 4127//8051 4120//8051 +f 4146//8052 4131//8052 4129//8052 +f 4145//8053 4137//8053 3791//8053 +f 4146//8054 4129//8054 4143//8054 +f 4145//8055 4120//8055 4137//8055 +f 4146//8056 4143//8056 3803//8056 +f 4147//8057 3791//8057 4099//8057 +f 4147//8058 4134//8058 4127//8058 +f 4147//8059 4127//8059 4145//8059 +f 4148//8060 4140//8060 4139//8060 +f 4147//8061 4145//8061 3791//8061 +f 4149//8062 4150//8062 4142//8062 +f 4149//8063 4142//8063 4144//8063 +f 4151//8064 3803//8064 3802//8064 +f 4151//8065 4131//8065 4146//8065 +f 4151//8066 4138//8066 4131//8066 +f 4152//8067 4116//8067 4153//8067 +f 4151//8068 4146//8068 3803//8068 +f 4152//8069 4153//8069 4150//8069 +f 4152//8070 4150//8070 4149//8070 +f 4154//8071 4155//8071 4140//8071 +f 4156//8072 4141//8072 4134//8072 +f 4156//8073 4134//8073 4147//8073 +f 4154//8074 4140//8074 4148//8074 +f 4157//8075 4151//8075 3802//8075 +f 4156//8076 4147//8076 4099//8076 +f 4157//8077 4138//8077 4151//8077 +f 4158//8078 4099//8078 4101//8078 +f 4158//8079 4144//8079 4141//8079 +f 4158//8080 4156//8080 4099//8080 +f 4157//8081 4139//8081 4138//8081 +f 4158//8082 4141//8082 4156//8082 +f 4159//8083 4149//8083 4144//8083 +f 4160//8084 4155//8084 4154//8084 +f 4159//8085 4158//8085 4101//8085 +f 4159//8086 4144//8086 4158//8086 +f 4161//8087 4139//8087 4157//8087 +f 4162//8088 4101//8088 4104//8088 +f 4162//8089 4117//8089 4116//8089 +f 4162//8090 4104//8090 4117//8090 +f 4161//8091 3802//8091 3805//8091 +f 4162//8092 4116//8092 4152//8092 +f 4161//8093 4157//8093 3802//8093 +f 4162//8094 4152//8094 4149//8094 +f 4161//8095 4148//8095 4139//8095 +f 4162//8096 4159//8096 4101//8096 +f 4162//8097 4149//8097 4159//8097 +f 4163//8098 4155//8098 4160//8098 +f 4163//8099 4164//8099 4155//8099 +f 4165//8100 4148//8100 4161//8100 +f 4165//8101 4154//8101 4148//8101 +f 4165//8102 4161//8102 3805//8102 +f 4114//8103 4164//8103 4163//8103 +f 4166//8104 4154//8104 4165//8104 +f 4166//8105 4160//8105 4154//8105 +f 4166//8106 4165//8106 3805//8106 +f 4166//8107 3805//8107 3807//8107 +f 4118//8108 4167//8108 4164//8108 +f 4118//8109 4164//8109 4114//8109 +f 4168//8110 4163//8110 4160//8110 +f 4168//8111 4160//8111 4166//8111 +f 4168//8112 4166//8112 3807//8112 +f 4119//8113 4169//8113 4153//8113 +f 4119//8114 4153//8114 4116//8114 +f 4126//8115 4167//8115 4118//8115 +f 4124//8116 4110//8116 4169//8116 +f 4113//8117 4168//8117 3807//8117 +f 4113//8118 3807//8118 3809//8118 +f 4124//8119 4169//8119 4119//8119 +f 4113//8120 4163//8120 4168//8120 +f 4113//8121 4114//8121 4163//8121 +f 4122//8122 4121//8122 4167//8122 +f 4111//8123 4110//8123 4124//8123 +f 4122//8124 4167//8124 4126//8124 +f 4109//8125 4130//8125 4110//8125 +f 4170//8126 4171//8126 4172//8126 +f 4173//8127 4174//8127 4175//8127 +f 4173//8128 4176//8128 4121//8128 +f 4177//8129 4128//8129 4142//8129 +f 4177//8130 4173//8130 4128//8130 +f 4177//8131 4174//8131 4173//8131 +f 4178//8132 4179//8132 4180//8132 +f 4177//8133 4181//8133 4174//8133 +f 4178//8134 4180//8134 4170//8134 +f 4182//8135 4150//8135 4153//8135 +f 4182//8136 4142//8136 4150//8136 +f 4182//8137 4183//8137 4184//8137 +f 4182//8138 4153//8138 4183//8138 +f 4182//8139 4181//8139 4177//8139 +f 4182//8140 4184//8140 4185//8140 +f 4186//8141 4187//8141 4179//8141 +f 4182//8142 4185//8142 4181//8142 +f 4182//8143 4177//8143 4142//8143 +f 4186//8144 4179//8144 4178//8144 +f 4188//8145 4189//8145 4187//8145 +f 4188//8146 4187//8146 4186//8146 +f 4190//8147 4191//8147 4189//8147 +f 4190//8148 4189//8148 4188//8148 +f 4175//8149 4192//8149 4191//8149 +f 4175//8150 4191//8150 4190//8150 +f 4174//8151 4193//8151 4192//8151 +f 4174//8152 4192//8152 4175//8152 +f 4181//8153 4194//8153 4193//8153 +f 4181//8154 4193//8154 4174//8154 +f 4185//8155 4195//8155 4194//8155 +f 4185//8156 4194//8156 4181//8156 +f 4185//8157 4184//8157 4195//8157 +f 4196//8158 4153//8158 4169//8158 +f 4196//8159 4184//8159 4183//8159 +f 4196//8160 4183//8160 4153//8160 +f 4184//8161 4197//8161 4195//8161 +f 4196//8162 4198//8162 4184//8162 +f 4199//8163 4169//8163 4110//8163 +f 4199//8164 4200//8164 4198//8164 +f 4199//8165 4196//8165 4169//8165 +f 4199//8166 4198//8166 4196//8166 +f 4201//8167 4110//8167 4130//8167 +f 4201//8168 4172//8168 4200//8168 +f 4201//8169 4200//8169 4199//8169 +f 4201//8170 4199//8170 4110//8170 +f 4202//8171 4201//8171 4130//8171 +f 4202//8172 4130//8172 4132//8172 +f 4202//8173 4170//8173 4172//8173 +f 4202//8174 4172//8174 4201//8174 +f 4203//8175 4132//8175 4140//8175 +f 4203//8176 4202//8176 4132//8176 +f 4203//8177 4170//8177 4202//8177 +f 4203//8178 4178//8178 4170//8178 +f 4204//8179 4203//8179 4140//8179 +f 4204//8180 4178//8180 4203//8180 +f 4204//8181 4140//8181 4155//8181 +f 4204//8182 4186//8182 4178//8182 +f 4205//8183 4155//8183 4164//8183 +f 4198//8184 4206//8184 4197//8184 +f 4205//8185 4186//8185 4204//8185 +f 4198//8186 4197//8186 4184//8186 +f 4205//8187 4204//8187 4155//8187 +f 4205//8188 4188//8188 4186//8188 +f 4207//8189 4164//8189 4167//8189 +f 4200//8190 4208//8190 4206//8190 +f 4207//8191 4205//8191 4164//8191 +f 4207//8192 4188//8192 4205//8192 +f 4200//8193 4206//8193 4198//8193 +f 4207//8194 4190//8194 4188//8194 +f 4176//8195 4167//8195 4121//8195 +f 4172//8196 4171//8196 4208//8196 +f 4176//8197 4207//8197 4167//8197 +f 4176//8198 4190//8198 4207//8198 +f 4172//8199 4208//8199 4200//8199 +f 4176//8200 4175//8200 4190//8200 +f 4173//8201 4121//8201 4128//8201 +f 4173//8202 4175//8202 4176//8202 +f 4170//8203 4180//8203 4171//8203 +f 4209//8204 4189//8204 4191//8204 +f 4209//8205 4210//8205 4211//8205 +f 4209//8206 4212//8206 4210//8206 +f 4213//8207 4197//8207 4206//8207 +f 4213//8208 4214//8208 4215//8208 +f 4213//8209 4215//8209 4197//8209 +f 4209//8210 4211//8210 4189//8210 +f 4213//8211 4216//8211 4214//8211 +f 4217//8212 3757//8212 3765//8212 +f 4217//8213 3765//8213 4218//8213 +f 4219//8214 4206//8214 4208//8214 +f 4220//8215 4221//8215 4212//8215 +f 4219//8216 4213//8216 4206//8216 +f 4220//8217 4209//8217 4191//8217 +f 4219//8218 4216//8218 4213//8218 +f 4219//8219 4222//8219 4216//8219 +f 4220//8220 4212//8220 4209//8220 +f 4223//8221 3755//8221 4224//8221 +f 4223//8222 4224//8222 4225//8222 +f 4226//8223 3757//8223 4217//8223 +f 4227//8224 3755//8224 4223//8224 +f 4228//8225 4229//8225 3757//8225 +f 4230//8226 4231//8226 4222//8226 +f 4228//8227 3757//8227 4226//8227 +f 4230//8228 4219//8228 4208//8228 +f 4232//8229 4191//8229 4192//8229 +f 4230//8230 4222//8230 4219//8230 +f 4232//8231 4218//8231 4221//8231 +f 4232//8232 4221//8232 4220//8232 +f 4233//8233 4208//8233 4171//8233 +f 4232//8234 4220//8234 4191//8234 +f 4233//8235 4225//8235 4231//8235 +f 4233//8236 4231//8236 4230//8236 +f 4233//8237 4230//8237 4208//8237 +f 4234//8238 4217//8238 4218//8238 +f 4234//8239 4218//8239 4232//8239 +f 4234//8240 4232//8240 4192//8240 +f 4235//8241 3753//8241 3755//8241 +f 4235//8242 3755//8242 4227//8242 +f 4236//8243 4229//8243 4228//8243 +f 4237//8244 3753//8244 4235//8244 +f 4238//8245 4239//8245 4229//8245 +f 4238//8246 4229//8246 4236//8246 +f 4240//8247 4225//8247 4233//8247 +f 4240//8248 4233//8248 4171//8248 +f 4240//8249 4223//8249 4225//8249 +f 4241//8250 4192//8250 4193//8250 +f 4241//8251 4226//8251 4217//8251 +f 4242//8252 4171//8252 4180//8252 +f 4241//8253 4217//8253 4234//8253 +f 4242//8254 4227//8254 4223//8254 +f 4241//8255 4234//8255 4192//8255 +f 4242//8256 4223//8256 4240//8256 +f 4242//8257 4240//8257 4171//8257 +f 4243//8258 4228//8258 4226//8258 +f 4243//8259 4226//8259 4241//8259 +f 4244//8260 3754//8260 3753//8260 +f 4243//8261 4241//8261 4193//8261 +f 4244//8262 3753//8262 4237//8262 +f 4245//8263 4239//8263 4238//8263 +f 4246//8264 4242//8264 4180//8264 +f 4247//8265 4214//8265 4248//8265 +f 4246//8266 4235//8266 4227//8266 +f 4246//8267 4227//8267 4242//8267 +f 4247//8268 4248//8268 4239//8268 +f 4247//8269 4239//8269 4245//8269 +f 4249//8270 4193//8270 4194//8270 +f 4249//8271 4228//8271 4243//8271 +f 4249//8272 4236//8272 4228//8272 +f 4250//8273 3754//8273 4244//8273 +f 4249//8274 4243//8274 4193//8274 +f 4251//8275 4235//8275 4246//8275 +f 4251//8276 4180//8276 4179//8276 +f 4251//8277 4237//8277 4235//8277 +f 4252//8278 4238//8278 4236//8278 +f 4252//8279 4236//8279 4249//8279 +f 4251//8280 4246//8280 4180//8280 +f 4252//8281 4249//8281 4194//8281 +f 4253//8282 3754//8282 4250//8282 +f 4254//8283 4194//8283 4195//8283 +f 4254//8284 4245//8284 4238//8284 +f 4253//8285 3761//8285 3754//8285 +f 4254//8286 4238//8286 4252//8286 +f 4255//8287 4244//8287 4237//8287 +f 4254//8288 4252//8288 4194//8288 +f 4256//8289 4195//8289 4197//8289 +f 4255//8290 4237//8290 4251//8290 +f 4256//8291 4215//8291 4214//8291 +f 4256//8292 4197//8292 4215//8292 +f 4256//8293 4214//8293 4247//8293 +f 4255//8294 4251//8294 4179//8294 +f 4256//8295 4247//8295 4245//8295 +f 4256//8296 4245//8296 4254//8296 +f 4256//8297 4254//8297 4195//8297 +f 4257//8298 3761//8298 4253//8298 +f 4258//8299 4179//8299 4187//8299 +f 4258//8300 4255//8300 4179//8300 +f 4258//8301 4244//8301 4255//8301 +f 4258//8302 4250//8302 4244//8302 +f 4210//8303 3763//8303 3761//8303 +f 4210//8304 3761//8304 4257//8304 +f 4259//8305 4258//8305 4187//8305 +f 4259//8306 4250//8306 4258//8306 +f 4259//8307 4253//8307 4250//8307 +f 4212//8308 3763//8308 4210//8308 +f 4260//8309 4187//8309 4189//8309 +f 4260//8310 4259//8310 4187//8310 +f 4260//8311 4253//8311 4259//8311 +f 4260//8312 4257//8312 4253//8312 +f 4216//8313 4261//8313 4248//8313 +f 4216//8314 4248//8314 4214//8314 +f 4221//8315 3765//8315 3763//8315 +f 4221//8316 3763//8316 4212//8316 +f 4211//8317 4210//8317 4257//8317 +f 4211//8318 4260//8318 4189//8318 +f 4222//8319 4261//8319 4216//8319 +f 4211//8320 4257//8320 4260//8320 +f 4231//8321 4224//8321 4261//8321 +f 4231//8322 4261//8322 4222//8322 +f 4218//8323 3765//8323 4221//8323 +f 4225//8324 4224//8324 4231//8324 +f 4262//8325 4263//8325 4264//8325 +f 4262//8326 4265//8326 4263//8326 +f 4266//8327 4267//8327 4265//8327 +f 4266//8328 4265//8328 4262//8328 +f 4268//8329 3757//8329 4229//8329 +f 4268//8330 4269//8330 3757//8330 +f 4270//8331 3755//8331 3768//8331 +f 4270//8332 3768//8332 4271//8332 +f 4270//8333 4271//8333 4267//8333 +f 4270//8334 4267//8334 4266//8334 +f 4272//8335 4229//8335 4239//8335 +f 4272//8336 4269//8336 4268//8336 +f 4272//8337 4268//8337 4229//8337 +f 4272//8338 4264//8338 4269//8338 +f 4273//8339 4239//8339 4248//8339 +f 4273//8340 4248//8340 4261//8340 +f 4273//8341 4264//8341 4272//8341 +f 4273//8342 4262//8342 4264//8342 +f 4273//8343 4272//8343 4239//8343 +f 4274//8344 4261//8344 4224//8344 +f 4274//8345 4266//8345 4262//8345 +f 4274//8346 4273//8346 4261//8346 +f 4274//8347 4262//8347 4273//8347 +f 4275//8348 4224//8348 3755//8348 +f 4275//8349 3755//8349 4270//8349 +f 4275//8350 4270//8350 4266//8350 +f 4275//8351 4274//8351 4224//8351 +f 4275//8352 4266//8352 4274//8352 +f 4276//8353 4277//8353 4278//8353 +f 4276//8354 4278//8354 3776//8354 +f 4279//8355 4280//8355 4277//8355 +f 4279//8356 4277//8356 4276//8356 +f 4281//8357 4280//8357 4279//8357 +f 4282//8358 4283//8358 4280//8358 +f 4282//8359 4280//8359 4281//8359 +f 4284//8360 4276//8360 3776//8360 +f 4285//8361 3768//8361 4286//8361 +f 4285//8362 4286//8362 4283//8362 +f 4285//8363 4283//8363 4282//8363 +f 4263//8364 4279//8364 4276//8364 +f 4263//8365 4276//8365 4284//8365 +f 4265//8366 4281//8366 4279//8366 +f 4265//8367 4279//8367 4263//8367 +f 4267//8368 4281//8368 4265//8368 +f 4267//8369 4282//8369 4281//8369 +f 4269//8370 3776//8370 3757//8370 +f 4269//8371 4284//8371 3776//8371 +f 4271//8372 3768//8372 4285//8372 +f 4271//8373 4285//8373 4282//8373 +f 4271//8374 4282//8374 4267//8374 +f 4264//8375 4263//8375 4284//8375 +f 4264//8376 4284//8376 4269//8376 +f 4287//8377 4003//8377 4288//8377 +f 4289//8378 4286//8378 3768//8378 +f 4289//8379 4288//8379 4290//8379 +f 4289//8380 4290//8380 4291//8380 +f 4289//8381 4291//8381 4286//8381 +f 4292//8382 3873//8382 3872//8382 +f 4292//8383 3872//8383 4287//8383 +f 4293//8384 3768//8384 3767//8384 +f 4293//8385 4287//8385 4288//8385 +f 4293//8386 4288//8386 4289//8386 +f 4293//8387 4289//8387 3768//8387 +f 4294//8388 3877//8388 3873//8388 +f 4294//8389 3873//8389 4292//8389 +f 4295//8390 3767//8390 3770//8390 +f 4295//8391 4287//8391 4293//8391 +f 4295//8392 4292//8392 4287//8392 +f 4295//8393 4293//8393 3767//8393 +f 4296//8394 3868//8394 3877//8394 +f 4296//8395 3877//8395 4294//8395 +f 4297//8396 3770//8396 3772//8396 +f 4297//8397 4292//8397 4295//8397 +f 4297//8398 4295//8398 3770//8398 +f 4297//8399 4294//8399 4292//8399 +f 4298//8400 3866//8400 3868//8400 +f 4298//8401 3868//8401 4296//8401 +f 4299//8402 3772//8402 3774//8402 +f 4299//8403 4297//8403 3772//8403 +f 4299//8404 4294//8404 4297//8404 +f 4299//8405 4296//8405 4294//8405 +f 4300//8406 3887//8406 3866//8406 +f 4300//8407 3866//8407 4298//8407 +f 4301//8408 4298//8408 4296//8408 +f 4301//8409 4299//8409 3774//8409 +f 4301//8410 4296//8410 4299//8410 +f 4302//8411 3993//8411 3889//8411 +f 4302//8412 3889//8412 3887//8412 +f 4302//8413 3887//8413 4300//8413 +f 4303//8414 3774//8414 3777//8414 +f 4303//8415 4301//8415 3774//8415 +f 4303//8416 4300//8416 4298//8416 +f 4303//8417 4298//8417 4301//8417 +f 4304//8418 3996//8418 3993//8418 +f 4304//8419 3993//8419 4302//8419 +f 4305//8420 4302//8420 4300//8420 +f 4305//8421 3777//8421 3776//8421 +f 4305//8422 4300//8422 4303//8422 +f 4305//8423 4303//8423 3777//8423 +f 4306//8424 3996//8424 4304//8424 +f 4306//8425 4307//8425 3996//8425 +f 4308//8426 3776//8426 4278//8426 +f 4308//8427 4304//8427 4302//8427 +f 4308//8428 4305//8428 3776//8428 +f 4308//8429 4302//8429 4305//8429 +f 4309//8430 4278//8430 4277//8430 +f 4309//8431 4310//8431 4307//8431 +f 4309//8432 4304//8432 4308//8432 +f 4309//8433 4307//8433 4306//8433 +f 4309//8434 4306//8434 4304//8434 +f 4309//8435 4308//8435 4278//8435 +f 4309//8436 4277//8436 4310//8436 +f 4307//8437 3991//8437 3996//8437 +f 4280//8438 4310//8438 4277//8438 +f 4290//8439 3990//8439 3991//8439 +f 4290//8440 3991//8440 4307//8440 +f 4288//8441 4003//8441 3990//8441 +f 4288//8442 3990//8442 4290//8442 +f 4291//8443 4307//8443 4310//8443 +f 4291//8444 4310//8444 4280//8444 +f 4291//8445 4283//8445 4286//8445 +f 4291//8446 4280//8446 4283//8446 +f 4291//8447 4290//8447 4307//8447 +f 4287//8448 3872//8448 4003//8448 +f 4311//8449 4312//8449 4313//8449 +f 4314//8450 4315//8450 4316//8450 +f 4311//8451 4317//8451 3949//8451 +f 4311//8452 4313//8452 4317//8452 +f 4318//8453 3417//8453 3426//8453 +f 4319//8454 3724//8454 4320//8454 +f 4319//8455 4320//8455 4321//8455 +f 4318//8456 4322//8456 3417//8456 +f 4319//8457 4321//8457 4323//8457 +f 4324//8458 3941//8458 3724//8458 +f 4324//8459 3724//8459 4319//8459 +f 4325//8460 4314//8460 4326//8460 +f 4324//8461 4323//8461 4311//8461 +f 4324//8462 4311//8462 3941//8462 +f 4325//8463 4326//8463 4327//8463 +f 4324//8464 4319//8464 4323//8464 +f 4328//8465 4327//8465 4322//8465 +f 4328//8466 4322//8466 4318//8466 +f 4329//8467 3426//8467 3405//8467 +f 4329//8468 4318//8468 3426//8468 +f 4329//8469 4328//8469 4318//8469 +f 4330//8470 4331//8470 4332//8470 +f 4330//8471 4332//8471 4315//8471 +f 4333//8472 4325//8472 4327//8472 +f 4333//8473 4327//8473 4328//8473 +f 4334//8474 4335//8474 4331//8474 +f 4336//8475 4315//8475 4314//8475 +f 4336//8476 4330//8476 4315//8476 +f 4337//8477 4333//8477 4328//8477 +f 4337//8478 4328//8478 4329//8478 +f 4338//8479 4336//8479 4314//8479 +f 4338//8480 4314//8480 4325//8480 +f 4339//8481 4337//8481 4329//8481 +f 4339//8482 4329//8482 3405//8482 +f 4340//8483 4341//8483 4335//8483 +f 4340//8484 4335//8484 4334//8484 +f 4342//8485 4338//8485 4325//8485 +f 4342//8486 4325//8486 4333//8486 +f 4343//8487 4334//8487 4331//8487 +f 4343//8488 4331//8488 4330//8488 +f 4344//8489 4345//8489 3698//8489 +f 4346//8490 4333//8490 4337//8490 +f 4346//8491 4342//8491 4333//8491 +f 4347//8492 4345//8492 4344//8492 +f 4348//8493 3698//8493 3418//8493 +f 4348//8494 3418//8494 3416//8494 +f 4349//8495 4343//8495 4330//8495 +f 4348//8496 4344//8496 3698//8496 +f 4349//8497 4330//8497 4336//8497 +f 4350//8498 4351//8498 4345//8498 +f 4350//8499 4345//8499 4347//8499 +f 4352//8500 4334//8500 4343//8500 +f 4353//8501 4344//8501 4348//8501 +f 4321//8502 4341//8502 4340//8502 +f 4354//8503 3416//8503 3417//8503 +f 4354//8504 4348//8504 3416//8504 +f 4354//8505 4353//8505 4348//8505 +f 4355//8506 4343//8506 4349//8506 +f 4355//8507 4352//8507 4343//8507 +f 4356//8508 4347//8508 4344//8508 +f 4357//8509 4349//8509 4336//8509 +f 4356//8510 4344//8510 4353//8510 +f 4357//8511 4336//8511 4338//8511 +f 4358//8512 3405//8512 3425//8512 +f 4358//8513 4346//8513 4337//8513 +f 4358//8514 4339//8514 3405//8514 +f 4358//8515 3425//8515 3946//8515 +f 4359//8516 4351//8516 4350//8516 +f 4358//8517 4337//8517 4339//8517 +f 4360//8518 4354//8518 3417//8518 +f 4360//8519 4353//8519 4354//8519 +f 4361//8520 4355//8520 4349//8520 +f 4360//8521 4356//8521 4353//8521 +f 4361//8522 4349//8522 4357//8522 +f 4332//8523 4331//8523 4351//8523 +f 4320//8524 3724//8524 3719//8524 +f 4332//8525 4351//8525 4359//8525 +f 4320//8526 3719//8526 4341//8526 +f 4320//8527 4341//8527 4321//8527 +f 4312//8528 4340//8528 4334//8528 +f 4362//8529 4350//8529 4347//8529 +f 4312//8530 4334//8530 4352//8530 +f 4362//8531 4347//8531 4356//8531 +f 4363//8532 4357//8532 4338//8532 +f 4363//8533 4338//8533 4342//8533 +f 4364//8534 4356//8534 4360//8534 +f 4364//8535 4362//8535 4356//8535 +f 4313//8536 4312//8536 4352//8536 +f 4322//8537 4364//8537 4360//8537 +f 4313//8538 4352//8538 4355//8538 +f 4322//8539 4360//8539 3417//8539 +f 4316//8540 4350//8540 4362//8540 +f 4316//8541 4359//8541 4350//8541 +f 4365//8542 4342//8542 4346//8542 +f 4365//8543 4346//8543 4358//8543 +f 4365//8544 4358//8544 3946//8544 +f 4365//8545 4363//8545 4342//8545 +f 4366//8546 4357//8546 4363//8546 +f 4366//8547 4361//8547 4357//8547 +f 4326//8548 4316//8548 4362//8548 +f 4317//8549 4366//8549 3949//8549 +f 4326//8550 4362//8550 4364//8550 +f 4317//8551 4355//8551 4361//8551 +f 4317//8552 4313//8552 4355//8552 +f 4317//8553 4361//8553 4366//8553 +f 4367//8554 3949//8554 4366//8554 +f 4367//8555 3946//8555 3949//8555 +f 4367//8556 4363//8556 4365//8556 +f 4315//8557 4332//8557 4359//8557 +f 4367//8558 4365//8558 3946//8558 +f 4315//8559 4359//8559 4316//8559 +f 4367//8560 4366//8560 4363//8560 +f 4323//8561 4321//8561 4340//8561 +f 4327//8562 4364//8562 4322//8562 +f 4327//8563 4326//8563 4364//8563 +f 4323//8564 4340//8564 4312//8564 +f 4314//8565 4316//8565 4326//8565 +f 4311//8566 3949//8566 3941//8566 +f 4311//8567 4323//8567 4312//8567 +f 3709//8568 3718//8568 3727//8568 +f 3708//8569 3718//8569 3709//8569 +f 3698//8570 3719//8570 3708//8570 +f 3708//8571 3719//8571 3718//8571 +f 4345//8572 4341//8572 3698//8572 +f 3698//8573 4341//8573 3719//8573 +f 4351//8574 4335//8574 4345//8574 +f 4331//8575 4335//8575 4351//8575 +f 4345//8576 4335//8576 4341//8576 +f 3839//8577 3837//8577 4047//8577 +f 3822//8578 4047//8578 4038//8578 +f 3822//8579 3839//8579 4047//8579 +f 3823//8580 4038//8580 4014//8580 +f 3823//8581 3822//8581 4038//8581 +f 3851//8582 4014//8582 4013//8582 +f 3851//8583 3823//8583 4014//8583 +f 3860//8584 4013//8584 4031//8584 +f 3860//8585 4031//8585 3865//8585 +f 3860//8586 3851//8586 4013//8586 +f 3677//8587 4368//8587 3678//8587 +f 3678//8588 4368//8588 4369//8588 +f 4369//8589 4370//8589 4371//8589 +f 4368//8590 4370//8590 4369//8590 +f 3449//8591 4372//8591 4373//8591 +f 4371//8592 4374//8592 4373//8592 +f 4370//8593 4374//8593 4371//8593 +f 4373//8594 4374//8594 3449//8594 +f 4374//8595 3591//8595 3449//8595 +f 4372//8596 4375//8596 4373//8596 +f 3449//8597 3588//8597 3450//8597 +f 3591//8598 3588//8598 3449//8598 +f 4372//8599 4376//8599 4375//8599 +f 4374//8600 4377//8600 3591//8600 +f 3588//8601 3587//8601 3450//8601 +f 4377//8602 4378//8602 4379//8602 +f 4374//8603 4378//8603 4377//8603 +f 4380//8604 3661//8604 4375//8604 +f 4378//8605 4381//8605 4382//8605 +f 3554//8606 3506//8606 3483//8606 +f 4381//8607 3666//8607 3679//8607 +f 4378//8608 3666//8608 4381//8608 +f 4380//8609 3659//8609 3661//8609 +f 4376//8610 4380//8610 4375//8610 +f 3483//8611 3490//8611 3573//8611 +f 3554//8612 3553//8612 3506//8612 +f 3573//8613 3554//8613 3483//8613 +f 3587//8614 3573//8614 3490//8614 +f 3587//8615 3490//8615 3450//8615 +f 4382//8616 4379//8616 4378//8616 +f 4383//8617 3601//8617 4384//8617 +f 3630//8618 3629//8618 3602//8618 +f 3630//8619 3602//8619 3601//8619 +f 4385//8620 3620//8620 4386//8620 +f 3626//8621 3601//8621 4383//8621 +f 3626//8622 4387//8622 4388//8622 +f 3626//8623 3630//8623 3601//8623 +f 4389//8624 4385//8624 4386//8624 +f 4390//8625 3626//8625 4383//8625 +f 3646//8626 3620//8626 3619//8626 +f 4390//8627 4387//8627 3626//8627 +f 3649//8628 4390//8628 4383//8628 +f 3646//8629 4386//8629 3620//8629 +f 3648//8630 4390//8630 3649//8630 +f 4391//8631 4386//8631 3646//8631 +f 3639//8632 3643//8632 3616//8632 +f 3637//8633 3639//8633 3613//8633 +f 3623//8634 3637//8634 3596//8634 +f 3632//8635 3623//8635 3609//8635 +f 3629//8636 3632//8636 3605//8636 +f 4392//8637 4391//8637 3646//8637 +f 4393//8638 4388//8638 4387//8638 +f 4394//8639 4393//8639 4387//8639 +f 4395//8640 4396//8640 4397//8640 +f 3605//8641 3602//8641 3629//8641 +f 3609//8642 3605//8642 3632//8642 +f 4398//8643 4389//8643 4386//8643 +f 3596//8644 3609//8644 3623//8644 +f 3613//8645 3596//8645 3637//8645 +f 3616//8646 3613//8646 3639//8646 +f 4399//8647 4389//8647 4398//8647 +f 4400//8648 4399//8648 4398//8648 +f 4401//8649 4402//8649 4384//8649 +f 3643//8650 3619//8650 3616//8650 +f 3643//8651 3646//8651 3619//8651 +f 4403//8652 4391//8652 4392//8652 +f 4397//8653 4403//8653 4395//8653 +f 4397//8654 4391//8654 4403//8654 +f 4384//8655 4400//8655 4398//8655 +f 4402//8656 4400//8656 4384//8656 +f 4394//8657 4397//8657 4396//8657 +f 4404//8658 4401//8658 4384//8658 +f 3601//8659 4404//8659 4384//8659 +f 4387//8660 4397//8660 4394//8660 +f 4405//8661 4406//8661 4407//8661 +f 4408//8662 4407//8662 4409//8662 +f 4408//8663 4405//8663 4407//8663 +f 4410//8664 4409//8664 4411//8664 +f 4410//8665 4408//8665 4409//8665 +f 4412//8666 4410//8666 4411//8666 +f 4405//8667 3961//8667 3963//8667 +f 4405//8668 3963//8668 4406//8668 +f 3970//8669 4413//8669 4414//8669 +f 3970//8670 4414//8670 3968//8670 +f 4415//8671 4416//8671 4417//8671 +f 4414//8672 4416//8672 4415//8672 +f 4413//8673 4416//8673 4414//8673 +f 4417//8674 4418//8674 4419//8674 +f 4416//8675 4418//8675 4417//8675 +f 4418//8676 4420//8676 4419//8676 +f 4420//8677 3657//8677 3658//8677 +f 4420//8678 3658//8678 4419//8678 +f 4391//8679 4412//8679 4411//8679 +f 4391//8680 4411//8680 4386//8680 +f 3435//8681 3956//8681 3958//8681 +f 3433//8682 3956//8682 3435//8682 +f 3430//8683 3954//8683 3433//8683 +f 3400//8684 3954//8684 3430//8684 +f 3433//8685 3954//8685 3956//8685 +f 3964//8686 3969//8686 3960//8686 +f 3964//8687 3972//8687 3969//8687 +f 4386//8688 4375//8688 4398//8688 +f 3960//8689 3968//8689 3963//8689 +f 3969//8690 3968//8690 3960//8690 +f 3658//8691 4373//8691 4386//8691 +f 4386//8692 4373//8692 4375//8692 +f 3966//8693 3974//8693 3964//8693 +f 4375//8694 3661//8694 4398//8694 +f 3964//8695 3974//8695 3972//8695 +f 3661//8696 4384//8696 4398//8696 +f 3963//8697 4414//8697 4406//8697 +f 3968//8698 4414//8698 3963//8698 +f 3658//8699 4371//8699 4373//8699 +f 4406//8700 4415//8700 4407//8700 +f 4414//8701 4415//8701 4406//8701 +f 3658//8702 3656//8702 4371//8702 +f 3661//8703 3662//8703 4384//8703 +f 4417//8704 4409//8704 4415//8704 +f 4415//8705 4409//8705 4407//8705 +f 3656//8706 4369//8706 4371//8706 +f 3662//8707 4383//8707 4384//8707 +f 4419//8708 4411//8708 4417//8708 +f 4417//8709 4411//8709 4409//8709 +f 3662//8710 3669//8710 4383//8710 +f 3656//8711 3654//8711 4369//8711 +f 3654//8712 3678//8712 4369//8712 +f 3926//8713 3412//8713 3917//8713 +f 3926//8714 3421//8714 3412//8714 +f 3393//8715 3421//8715 3926//8715 +f 3674//8716 3649//8716 3669//8716 +f 3669//8717 3649//8717 4383//8717 +f 3678//8718 3652//8718 3676//8718 +f 3654//8719 3652//8719 3678//8719 +f 3917//8720 3407//8720 3918//8720 +f 3412//8721 3407//8721 3917//8721 +f 3676//8722 3650//8722 3674//8722 +f 3393//8723 3423//8723 3421//8723 +f 3652//8724 3650//8724 3676//8724 +f 3674//8725 3650//8725 3649//8725 +f 4386//8726 4411//8726 4419//8726 +f 3393//8727 3396//8727 3423//8727 +f 3966//8728 3925//8728 3974//8728 +f 3958//8729 3974//8729 3925//8729 +f 4419//8730 3658//8730 4386//8730 +f 3407//8731 3945//8731 3918//8731 +f 3396//8732 3950//8732 3423//8732 +f 3945//8733 3925//8733 3918//8733 +f 3396//8734 3952//8734 3950//8734 +f 3945//8735 3944//8735 3925//8735 +f 3396//8736 3398//8736 3952//8736 +f 3398//8737 3429//8737 3952//8737 +f 3944//8738 3958//8738 3925//8738 +f 3435//8739 3958//8739 3944//8739 +f 3398//8740 3400//8740 3429//8740 +f 3429//8741 3400//8741 3430//8741 +f 3399//8742 3397//8742 3431//8742 +f 3399//8743 3431//8743 3432//8743 +f 3957//8744 3436//8744 3959//8744 +f 3957//8745 3434//8745 3436//8745 +f 3955//8746 3399//8746 3432//8746 +f 3955//8747 3434//8747 3957//8747 +f 3955//8748 3432//8748 3434//8748 +f 3973//8749 3965//8749 3962//8749 +f 3973//8750 3962//8750 3971//8750 +f 3975//8751 3967//8751 3965//8751 +f 3975//8752 3965//8752 3973//8752 +f 4378//8753 4391//8753 4397//8753 +f 3970//8754 3962//8754 3961//8754 +f 4374//8755 4391//8755 4378//8755 +f 4374//8756 3657//8756 4391//8756 +f 3970//8757 3971//8757 3962//8757 +f 3666//8758 4378//8758 4397//8758 +f 4413//8759 3961//8759 4405//8759 +f 4387//8760 3666//8760 4397//8760 +f 4413//8761 3970//8761 3961//8761 +f 4370//8762 3657//8762 4374//8762 +f 4416//8763 4405//8763 4408//8763 +f 4416//8764 4413//8764 4405//8764 +f 3655//8765 3657//8765 4370//8765 +f 3667//8766 3666//8766 4387//8766 +f 4410//8767 4418//8767 4416//8767 +f 4410//8768 4416//8768 4408//8768 +f 4368//8769 3655//8769 4370//8769 +f 4412//8770 4420//8770 4418//8770 +f 4390//8771 3667//8771 4387//8771 +f 4412//8772 4418//8772 4410//8772 +f 3672//8773 3667//8773 4390//8773 +f 3653//8774 3655//8774 4368//8774 +f 3677//8775 3653//8775 4368//8775 +f 3402//8776 3923//8776 3924//8776 +f 3411//8777 3923//8777 3402//8777 +f 3411//8778 3394//8778 3923//8778 +f 3648//8779 3673//8779 3672//8779 +f 3648//8780 3672//8780 4390//8780 +f 3403//8781 3924//8781 3936//8781 +f 3651//8782 3677//8782 3675//8782 +f 3403//8783 3402//8783 3924//8783 +f 3419//8784 3394//8784 3411//8784 +f 3651//8785 3653//8785 3677//8785 +f 3647//8786 3675//8786 3673//8786 +f 3395//8787 3394//8787 3419//8787 +f 3647//8788 3673//8788 3648//8788 +f 3647//8789 3651//8789 3675//8789 +f 4412//8790 4391//8790 4420//8790 +f 3943//8791 3403//8791 3936//8791 +f 3657//8792 4420//8792 4391//8792 +f 3975//8793 3959//8793 3922//8793 +f 3922//8794 3967//8794 3975//8794 +f 3951//8795 3395//8795 3419//8795 +f 3922//8796 3943//8796 3936//8796 +f 3953//8797 3395//8797 3951//8797 +f 3939//8798 3943//8798 3922//8798 +f 3397//8799 3395//8799 3953//8799 +f 3431//8800 3397//8800 3953//8800 +f 3959//8801 3939//8801 3922//8801 +f 3959//8802 3436//8802 3939//8802 +f 4421//8803 4396//8803 4422//8803 +f 4423//8804 4403//8804 4392//8804 +f 4423//8805 4392//8805 3646//8805 +f 4423//8806 3646//8806 3645//8806 +f 4423//8807 3645//8807 4424//8807 +f 4425//8808 4395//8808 4403//8808 +f 4425//8809 4424//8809 4422//8809 +f 4425//8810 4403//8810 4423//8810 +f 4425//8811 4423//8811 4424//8811 +f 4426//8812 4425//8812 4422//8812 +f 4426//8813 4395//8813 4425//8813 +f 4427//8814 4396//8814 4395//8814 +f 4427//8815 4395//8815 4426//8815 +f 4427//8816 4426//8816 4422//8816 +f 4427//8817 4422//8817 4396//8817 +f 4428//8818 4394//8818 4396//8818 +f 4428//8819 4421//8819 4429//8819 +f 4428//8820 4396//8820 4421//8820 +f 4430//8821 4393//8821 4394//8821 +f 4430//8822 4394//8822 4428//8822 +f 4430//8823 4428//8823 4429//8823 +f 4431//8824 4429//8824 4432//8824 +f 4431//8825 4430//8825 4429//8825 +f 4431//8826 4393//8826 4430//8826 +f 4433//8827 4388//8827 4393//8827 +f 4433//8828 4431//8828 4432//8828 +f 4433//8829 4393//8829 4431//8829 +f 4434//8830 3627//8830 3626//8830 +f 4434//8831 3626//8831 4388//8831 +f 4434//8832 4432//8832 3627//8832 +f 4434//8833 4388//8833 4433//8833 +f 4434//8834 4433//8834 4432//8834 +f 4400//8835 4435//8835 4436//8835 +f 4437//8836 4438//8836 3621//8836 +f 4437//8837 3621//8837 3620//8837 +f 4437//8838 3620//8838 4385//8838 +f 4439//8839 4385//8839 4389//8839 +f 4439//8840 4437//8840 4385//8840 +f 4439//8841 4438//8841 4437//8841 +f 4440//8842 4441//8842 4438//8842 +f 4440//8843 4439//8843 4389//8843 +f 4440//8844 4438//8844 4439//8844 +f 4442//8845 4389//8845 4399//8845 +f 4442//8846 4441//8846 4440//8846 +f 4442//8847 4440//8847 4389//8847 +f 4443//8848 4436//8848 4441//8848 +f 4443//8849 4441//8849 4442//8849 +f 4443//8850 4442//8850 4399//8850 +f 4444//8851 4399//8851 4400//8851 +f 4444//8852 4443//8852 4399//8852 +f 4444//8853 4400//8853 4436//8853 +f 4444//8854 4436//8854 4443//8854 +f 4445//8855 4400//8855 4402//8855 +f 4445//8856 4435//8856 4400//8856 +f 4446//8857 4435//8857 4445//8857 +f 4446//8858 4445//8858 4402//8858 +f 4447//8859 4448//8859 4435//8859 +f 4447//8860 4402//8860 4401//8860 +f 4447//8861 4435//8861 4446//8861 +f 4447//8862 4446//8862 4402//8862 +f 4449//8863 3601//8863 3600//8863 +f 4449//8864 3600//8864 4448//8864 +f 4449//8865 4401//8865 4404//8865 +f 4449//8866 4404//8866 3601//8866 +f 4449//8867 4448//8867 4447//8867 +f 4449//8868 4447//8868 4401//8868 +f 4450//8869 4382//8869 4381//8869 +f 4450//8870 4451//8870 4382//8870 +f 4450//8871 4452//8871 4451//8871 +f 4453//8872 4454//8872 4455//8872 +f 4453//8873 4455//8873 4456//8873 +f 4457//8874 4456//8874 4458//8874 +f 4457//8875 4453//8875 4456//8875 +f 4459//8876 4457//8876 4458//8876 +f 4459//8877 4458//8877 4460//8877 +f 4461//8878 4460//8878 4452//8878 +f 4461//8879 4459//8879 4460//8879 +f 4462//8880 4461//8880 4452//8880 +f 4462//8881 4381//8881 3679//8881 +f 4462//8882 3679//8882 3668//8882 +f 4462//8883 4450//8883 4381//8883 +f 4462//8884 4452//8884 4450//8884 +f 4463//8885 4464//8885 4465//8885 +f 4463//8886 4465//8886 4454//8886 +f 4466//8887 4463//8887 4454//8887 +f 4466//8888 4454//8888 4453//8888 +f 4467//8889 4464//8889 4463//8889 +f 4468//8890 4463//8890 4466//8890 +f 4468//8891 4467//8891 4463//8891 +f 4469//8892 4466//8892 4453//8892 +f 4469//8893 4453//8893 4457//8893 +f 4470//8894 4468//8894 4466//8894 +f 4470//8895 4466//8895 4469//8895 +f 4471//8896 4469//8896 4457//8896 +f 4471//8897 4457//8897 4459//8897 +f 4472//8898 4469//8898 4471//8898 +f 4472//8899 4470//8899 4469//8899 +f 4473//8900 4474//8900 3593//8900 +f 4473//8901 3593//8901 3591//8901 +f 4475//8902 4461//8902 4462//8902 +f 4473//8903 3591//8903 4377//8903 +f 4475//8904 4459//8904 4461//8904 +f 4475//8905 4462//8905 3668//8905 +f 4475//8906 4471//8906 4459//8906 +f 4476//8907 3668//8907 3671//8907 +f 4477//8908 4473//8908 4377//8908 +f 4476//8909 4472//8909 4471//8909 +f 4476//8910 3671//8910 4472//8910 +f 4477//8911 4474//8911 4473//8911 +f 4476//8912 4475//8912 3668//8912 +f 4476//8913 4471//8913 4475//8913 +f 4478//8914 4479//8914 4464//8914 +f 4480//8915 4474//8915 4477//8915 +f 4481//8916 4377//8916 4379//8916 +f 4478//8917 4464//8917 4467//8917 +f 4481//8918 4477//8918 4377//8918 +f 4482//8919 4467//8919 4468//8919 +f 4483//8920 4480//8920 4477//8920 +f 4483//8921 4481//8921 4379//8921 +f 4483//8922 4477//8922 4481//8922 +f 4482//8923 4478//8923 4467//8923 +f 4484//8924 4485//8924 4474//8924 +f 4486//8925 4468//8925 4470//8925 +f 4486//8926 4472//8926 3671//8926 +f 4486//8927 4470//8927 4472//8927 +f 4484//8928 4474//8928 4480//8928 +f 4486//8929 4482//8929 4468//8929 +f 4487//8930 4479//8930 4478//8930 +f 4488//8931 4484//8931 4480//8931 +f 4489//8932 3671//8932 3670//8932 +f 4488//8933 4480//8933 4483//8933 +f 4489//8934 4487//8934 4478//8934 +f 4489//8935 4486//8935 3671//8935 +f 4489//8936 4478//8936 4482//8936 +f 4490//8937 4488//8937 4483//8937 +f 4489//8938 4482//8938 4486//8938 +f 4490//8939 4483//8939 4379//8939 +f 4491//8940 3562//8940 3561//8940 +f 4491//8941 3561//8941 4479//8941 +f 4491//8942 3670//8942 3562//8942 +f 4491//8943 4479//8943 4487//8943 +f 4492//8944 4485//8944 4484//8944 +f 4491//8945 4489//8945 3670//8945 +f 4491//8946 4487//8946 4489//8946 +f 4493//8947 4484//8947 4488//8947 +f 4493//8948 4492//8948 4484//8948 +f 4494//8949 4379//8949 4382//8949 +f 4494//8950 4490//8950 4379//8950 +f 4495//8951 4488//8951 4490//8951 +f 4495//8952 4493//8952 4488//8952 +f 4455//8953 4465//8953 4485//8953 +f 4455//8954 4485//8954 4492//8954 +f 4451//8955 4494//8955 4382//8955 +f 4451//8956 4490//8956 4494//8956 +f 4451//8957 4495//8957 4490//8957 +f 4456//8958 4492//8958 4493//8958 +f 4456//8959 4455//8959 4492//8959 +f 4458//8960 4493//8960 4495//8960 +f 4458//8961 4456//8961 4493//8961 +f 4460//8962 4495//8962 4451//8962 +f 4460//8963 4458//8963 4495//8963 +f 4452//8964 4460//8964 4451//8964 +f 4454//8965 4465//8965 4455//8965 +f 4496//8966 3636//8966 4497//8966 +f 4496//8967 4497//8967 4498//8967 +f 4499//8968 3534//8968 4500//8968 +f 4499//8969 4501//8969 3534//8969 +f 4502//8970 3527//8970 3530//8970 +f 4503//8971 3645//8971 3641//8971 +f 4503//8972 4504//8972 4501//8972 +f 4503//8973 4496//8973 4504//8973 +f 4503//8974 3641//8974 4496//8974 +f 4505//8975 4500//8975 4506//8975 +f 4505//8976 4499//8976 4500//8976 +f 4507//8977 4424//8977 3645//8977 +f 4507//8978 3645//8978 4503//8978 +f 4507//8979 4501//8979 4499//8979 +f 4507//8980 4503//8980 4501//8980 +f 4508//8981 4506//8981 4509//8981 +f 4508//8982 4505//8982 4506//8982 +f 4510//8983 4422//8983 4424//8983 +f 4510//8984 4499//8984 4505//8984 +f 4510//8985 4507//8985 4499//8985 +f 4510//8986 4424//8986 4507//8986 +f 4511//8987 4509//8987 4512//8987 +f 4511//8988 4508//8988 4509//8988 +f 4513//8989 4421//8989 4422//8989 +f 4513//8990 4505//8990 4508//8990 +f 4513//8991 4510//8991 4505//8991 +f 4513//8992 4422//8992 4510//8992 +f 4514//8993 4512//8993 4515//8993 +f 4514//8994 4511//8994 4512//8994 +f 4516//8995 4429//8995 4421//8995 +f 4516//8996 4421//8996 4513//8996 +f 4516//8997 4508//8997 4511//8997 +f 4516//8998 4513//8998 4508//8998 +f 4517//8999 4515//8999 3523//8999 +f 4517//9000 4514//9000 4515//9000 +f 4518//9001 4516//9001 4511//9001 +f 4518//9002 4432//9002 4429//9002 +f 4518//9003 4429//9003 4516//9003 +f 4518//9004 4511//9004 4514//9004 +f 4519//9005 3523//9005 3522//9005 +f 4519//9006 4517//9006 3523//9006 +f 4520//9007 3628//9007 3627//9007 +f 4520//9008 4514//9008 4517//9008 +f 4520//9009 3627//9009 4432//9009 +f 4520//9010 4432//9010 4518//9010 +f 4520//9011 4518//9011 4514//9011 +f 4521//9012 3522//9012 3525//9012 +f 4521//9013 3525//9013 4502//9013 +f 4521//9014 4519//9014 3522//9014 +f 4522//9015 3624//9015 3628//9015 +f 4522//9016 4517//9016 4519//9016 +f 4522//9017 4520//9017 4517//9017 +f 4522//9018 3628//9018 4520//9018 +f 4523//9019 3622//9019 3624//9019 +f 4523//9020 4522//9020 4519//9020 +f 4523//9021 3624//9021 4522//9021 +f 4523//9022 4521//9022 4502//9022 +f 4502//9023 3525//9023 3527//9023 +f 4523//9024 4502//9024 4524//9024 +f 4523//9025 4524//9025 3622//9025 +f 4523//9026 4519//9026 4521//9026 +f 4498//9027 3530//9027 3532//9027 +f 4498//9028 4502//9028 3530//9028 +f 4504//9029 3532//9029 3534//9029 +f 4504//9030 4498//9030 3532//9030 +f 4497//9031 3636//9031 3622//9031 +f 4497//9032 4524//9032 4502//9032 +f 4497//9033 3622//9033 4524//9033 +f 4497//9034 4502//9034 4498//9034 +f 4501//9035 4504//9035 3534//9035 +f 4496//9036 3641//9036 3636//9036 +f 4496//9037 4498//9037 4504//9037 +f 4525//9038 4500//9038 3534//9038 +f 4525//9039 3534//9039 3533//9039 +f 4526//9040 4506//9040 4500//9040 +f 4526//9041 4500//9041 4525//9041 +f 4527//9042 4512//9042 4509//9042 +f 4527//9043 4509//9043 4506//9043 +f 4527//9044 4506//9044 4526//9044 +f 4528//9045 4515//9045 4512//9045 +f 4528//9046 4512//9046 4527//9046 +f 4529//9047 3523//9047 4515//9047 +f 4529//9048 4515//9048 4528//9048 +f 3521//9049 3523//9049 4529//9049 +f 4530//9050 3529//9050 3528//9050 +f 4530//9051 4531//9051 4532//9051 +f 4533//9052 4534//9052 4535//9052 +f 4530//9053 3528//9053 4531//9053 +f 4530//9054 4532//9054 4536//9054 +f 4537//9055 4538//9055 4539//9055 +f 4540//9056 4530//9056 4536//9056 +f 4541//9057 4529//9057 4528//9057 +f 4540//9058 3529//9058 4530//9058 +f 4541//9059 4542//9059 4543//9059 +f 4540//9060 4536//9060 4544//9060 +f 4541//9061 4528//9061 4533//9061 +f 4541//9062 4533//9062 4542//9062 +f 4545//9063 4546//9063 4547//9063 +f 4548//9064 4539//9064 4549//9064 +f 4548//9065 4537//9065 4539//9065 +f 4550//9066 4547//9066 4551//9066 +f 4550//9067 4545//9067 4547//9067 +f 4552//9068 3531//9068 3529//9068 +f 4552//9069 3529//9069 4540//9069 +f 4553//9070 4548//9070 4549//9070 +f 4552//9071 4544//9071 4554//9071 +f 4555//9072 4529//9072 4541//9072 +f 4555//9073 4543//9073 4538//9073 +f 4552//9074 4540//9074 4544//9074 +f 4555//9075 4541//9075 4543//9075 +f 4556//9076 4554//9076 4546//9076 +f 4556//9077 3531//9077 4552//9077 +f 4557//9078 3521//9078 4529//9078 +f 4556//9079 4552//9079 4554//9079 +f 4557//9080 4555//9080 4538//9080 +f 4557//9081 4538//9081 4537//9081 +f 4557//9082 4529//9082 4555//9082 +f 4558//9083 4550//9083 4551//9083 +f 4559//9084 4549//9084 4560//9084 +f 4561//9085 4551//9085 4562//9085 +f 4559//9086 4553//9086 4549//9086 +f 4561//9087 4558//9087 4551//9087 +f 4563//9088 3533//9088 3531//9088 +f 4563//9089 3531//9089 4556//9089 +f 4564//9090 4559//9090 4560//9090 +f 4563//9091 4556//9091 4546//9091 +f 4563//9092 4546//9092 4545//9092 +f 4565//9093 4537//9093 4548//9093 +f 4565//9094 3521//9094 4557//9094 +f 4566//9095 3533//9095 4563//9095 +f 4565//9096 4557//9096 4537//9096 +f 4566//9097 4545//9097 4550//9097 +f 4566//9098 4563//9098 4545//9098 +f 4567//9099 3524//9099 3521//9099 +f 4567//9100 4548//9100 4553//9100 +f 4567//9101 4565//9101 4548//9101 +f 4567//9102 3521//9102 4565//9102 +f 4568//9103 4561//9103 4562//9103 +f 4569//9104 4560//9104 4570//9104 +f 4569//9105 4564//9105 4560//9105 +f 4571//9106 4525//9106 3533//9106 +f 4571//9107 4550//9107 4558//9107 +f 4571//9108 3533//9108 4566//9108 +f 4572//9109 4570//9109 4573//9109 +f 4572//9110 4573//9110 4532//9110 +f 4571//9111 4566//9111 4550//9111 +f 4574//9112 4568//9112 4562//9112 +f 4572//9113 4569//9113 4570//9113 +f 4575//9114 4567//9114 4553//9114 +f 4574//9115 4562//9115 4576//9115 +f 4575//9116 4553//9116 4559//9116 +f 4575//9117 3524//9117 4567//9117 +f 4577//9118 4571//9118 4558//9118 +f 4578//9119 3526//9119 3524//9119 +f 4578//9120 4559//9120 4564//9120 +f 4578//9121 4575//9121 4559//9121 +f 4577//9122 4558//9122 4561//9122 +f 4577//9123 4525//9123 4571//9123 +f 4578//9124 3524//9124 4575//9124 +f 4579//9125 4574//9125 4576//9125 +f 4580//9126 4564//9126 4569//9126 +f 4581//9127 4561//9127 4568//9127 +f 4580//9128 3526//9128 4578//9128 +f 4580//9129 4578//9129 4564//9129 +f 4581//9130 4526//9130 4525//9130 +f 4582//9131 3528//9131 3526//9131 +f 4581//9132 4577//9132 4561//9132 +f 4582//9133 4532//9133 4531//9133 +f 4581//9134 4525//9134 4577//9134 +f 4582//9135 4531//9135 3528//9135 +f 4582//9136 4572//9136 4532//9136 +f 4582//9137 4569//9137 4572//9137 +f 4582//9138 3526//9138 4580//9138 +f 4582//9139 4580//9139 4569//9139 +f 4583//9140 4576//9140 4584//9140 +f 4583//9141 4579//9141 4576//9141 +f 4585//9142 4526//9142 4581//9142 +f 4585//9143 4581//9143 4568//9143 +f 4585//9144 4568//9144 4574//9144 +f 4535//9145 4583//9145 4584//9145 +f 4586//9146 4527//9146 4526//9146 +f 4586//9147 4526//9147 4585//9147 +f 4586//9148 4585//9148 4574//9148 +f 4586//9149 4574//9149 4579//9149 +f 4542//9150 4584//9150 4587//9150 +f 4542//9151 4535//9151 4584//9151 +f 4588//9152 4527//9152 4586//9152 +f 4588//9153 4586//9153 4579//9153 +f 4536//9154 4532//9154 4573//9154 +f 4588//9155 4579//9155 4583//9155 +f 4536//9156 4573//9156 4589//9156 +f 4543//9157 4542//9157 4587//9157 +f 4544//9158 4589//9158 4590//9158 +f 4534//9159 4528//9159 4527//9159 +f 4534//9160 4583//9160 4535//9160 +f 4534//9161 4588//9161 4583//9161 +f 4544//9162 4536//9162 4589//9162 +f 4534//9163 4527//9163 4588//9163 +f 4554//9164 4544//9164 4590//9164 +f 4538//9165 4587//9165 4539//9165 +f 4538//9166 4543//9166 4587//9166 +f 4546//9167 4590//9167 4547//9167 +f 4546//9168 4554//9168 4590//9168 +f 4533//9169 4528//9169 4534//9169 +f 4533//9170 4535//9170 4542//9170 +f 4591//9171 4592//9171 4593//9171 +f 4591//9172 4594//9172 4592//9172 +f 4595//9173 4596//9173 4597//9173 +f 4598//9174 4599//9174 4600//9174 +f 4598//9175 4595//9175 4599//9175 +f 4601//9176 4600//9176 4602//9176 +f 4601//9177 4598//9177 4600//9177 +f 4603//9178 4602//9178 4604//9178 +f 4603//9179 4601//9179 4602//9179 +f 4605//9180 4604//9180 4606//9180 +f 4605//9181 4603//9181 4604//9181 +f 4594//9182 4606//9182 4607//9182 +f 4594//9183 4605//9183 4606//9183 +f 4592//9184 4608//9184 4609//9184 +f 4592//9185 4607//9185 4608//9185 +f 4592//9186 4609//9186 4593//9186 +f 4592//9187 4594//9187 4607//9187 +f 4610//9188 4589//9188 4573//9188 +f 4610//9189 4611//9189 4593//9189 +f 4610//9190 4573//9190 4611//9190 +f 4593//9191 4609//9191 4612//9191 +f 4610//9192 4593//9192 4613//9192 +f 4614//9193 4590//9193 4589//9193 +f 4614//9194 4589//9194 4610//9194 +f 4614//9195 4613//9195 4615//9195 +f 4614//9196 4610//9196 4613//9196 +f 4616//9197 4547//9197 4590//9197 +f 4616//9198 4615//9198 4617//9198 +f 4616//9199 4614//9199 4615//9199 +f 4616//9200 4590//9200 4614//9200 +f 4618//9201 4551//9201 4547//9201 +f 4618//9202 4617//9202 4619//9202 +f 4618//9203 4616//9203 4617//9203 +f 4618//9204 4547//9204 4616//9204 +f 4620//9205 4562//9205 4551//9205 +f 4620//9206 4551//9206 4618//9206 +f 4620//9207 4619//9207 4596//9207 +f 4620//9208 4618//9208 4619//9208 +f 4621//9209 4562//9209 4620//9209 +f 4621//9210 4620//9210 4596//9210 +f 4621//9211 4576//9211 4562//9211 +f 4621//9212 4596//9212 4595//9212 +f 4622//9213 4584//9213 4576//9213 +f 4622//9214 4621//9214 4595//9214 +f 4622//9215 4595//9215 4598//9215 +f 4622//9216 4576//9216 4621//9216 +f 4613//9217 4593//9217 4612//9217 +f 4623//9218 4587//9218 4584//9218 +f 4623//9219 4584//9219 4622//9219 +f 4623//9220 4622//9220 4598//9220 +f 4615//9221 4612//9221 4624//9221 +f 4623//9222 4598//9222 4601//9222 +f 4615//9223 4613//9223 4612//9223 +f 4625//9224 4539//9224 4587//9224 +f 4625//9225 4587//9225 4623//9225 +f 4625//9226 4623//9226 4601//9226 +f 4617//9227 4624//9227 4626//9227 +f 4625//9228 4601//9228 4603//9228 +f 4617//9229 4615//9229 4624//9229 +f 4627//9230 4549//9230 4539//9230 +f 4627//9231 4625//9231 4603//9231 +f 4627//9232 4603//9232 4605//9232 +f 4619//9233 4626//9233 4628//9233 +f 4627//9234 4539//9234 4625//9234 +f 4619//9235 4617//9235 4626//9235 +f 4629//9236 4560//9236 4549//9236 +f 4629//9237 4549//9237 4627//9237 +f 4629//9238 4605//9238 4594//9238 +f 4596//9239 4628//9239 4597//9239 +f 4629//9240 4627//9240 4605//9240 +f 4591//9241 4573//9241 4570//9241 +f 4591//9242 4570//9242 4560//9242 +f 4596//9243 4619//9243 4628//9243 +f 4591//9244 4560//9244 4629//9244 +f 4591//9245 4629//9245 4594//9245 +f 4591//9246 4593//9246 4611//9246 +f 4591//9247 4611//9247 4573//9247 +f 4595//9248 4597//9248 4599//9248 +f 4630//9249 4609//9249 4631//9249 +f 4632//9250 4633//9250 3508//9250 +f 4630//9251 4634//9251 4635//9251 +f 4636//9252 4624//9252 4612//9252 +f 4632//9253 4637//9253 4633//9253 +f 4636//9254 4635//9254 4638//9254 +f 4636//9255 4630//9255 4635//9255 +f 4636//9256 4612//9256 4630//9256 +f 4639//9257 4602//9257 4640//9257 +f 4639//9258 4641//9258 4642//9258 +f 4639//9259 4640//9259 4641//9259 +f 4643//9260 3517//9260 3519//9260 +f 4643//9261 4644//9261 3517//9261 +f 4645//9262 4632//9262 3508//9262 +f 4646//9263 4643//9263 3519//9263 +f 4647//9264 3508//9264 3510//9264 +f 4648//9265 4624//9265 4636//9265 +f 4647//9266 4645//9266 3508//9266 +f 4648//9267 4638//9267 4649//9267 +f 4650//9268 4604//9268 4602//9268 +f 4648//9269 4636//9269 4638//9269 +f 4650//9270 4642//9270 4637//9270 +f 4650//9271 4602//9271 4639//9271 +f 4651//9272 4626//9272 4624//9272 +f 4651//9273 4649//9273 4644//9273 +f 4650//9274 4639//9274 4642//9274 +f 4651//9275 4624//9275 4648//9275 +f 4651//9276 4648//9276 4649//9276 +f 4652//9277 4637//9277 4632//9277 +f 4652//9278 4650//9278 4637//9278 +f 4653//9279 3519//9279 4654//9279 +f 4652//9280 4604//9280 4650//9280 +f 4653//9281 4646//9281 3519//9281 +f 4655//9282 4653//9282 4654//9282 +f 4656//9283 4647//9283 3510//9283 +f 4657//9284 3510//9284 3512//9284 +f 4658//9285 4644//9285 4643//9285 +f 4657//9286 4656//9286 3510//9286 +f 4658//9287 4651//9287 4644//9287 +f 4658//9288 4626//9288 4651//9288 +f 4659//9289 4606//9289 4604//9289 +f 4659//9290 4652//9290 4632//9290 +f 4660//9291 4628//9291 4626//9291 +f 4659//9292 4632//9292 4645//9292 +f 4660//9293 4626//9293 4658//9293 +f 4659//9294 4604//9294 4652//9294 +f 4660//9295 4643//9295 4646//9295 +f 4660//9296 4658//9296 4643//9296 +f 4661//9297 4606//9297 4659//9297 +f 4661//9298 4645//9298 4647//9298 +f 4661//9299 4659//9299 4645//9299 +f 4662//9300 4654//9300 4663//9300 +f 4662//9301 4655//9301 4654//9301 +f 4664//9302 4657//9302 3512//9302 +f 4665//9303 4646//9303 4653//9303 +f 4665//9304 4628//9304 4660//9304 +f 4666//9305 3512//9305 3515//9305 +f 4665//9306 4660//9306 4646//9306 +f 4666//9307 3515//9307 4634//9307 +f 4666//9308 4664//9308 3512//9308 +f 4667//9309 4607//9309 4606//9309 +f 4668//9310 4662//9310 4663//9310 +f 4667//9311 4647//9311 4656//9311 +f 4667//9312 4606//9312 4661//9312 +f 4667//9313 4661//9313 4647//9313 +f 4669//9314 4665//9314 4653//9314 +f 4669//9315 4597//9315 4628//9315 +f 4670//9316 4607//9316 4667//9316 +f 4669//9317 4628//9317 4665//9317 +f 4670//9318 4656//9318 4657//9318 +f 4669//9319 4653//9319 4655//9319 +f 4670//9320 4667//9320 4656//9320 +f 4671//9321 4668//9321 4663//9321 +f 4672//9322 4608//9322 4607//9322 +f 4672//9323 4670//9323 4657//9323 +f 4671//9324 4663//9324 4673//9324 +f 4672//9325 4657//9325 4664//9325 +f 4674//9326 4655//9326 4662//9326 +f 4672//9327 4607//9327 4670//9327 +f 4675//9328 4609//9328 4608//9328 +f 4674//9329 4597//9329 4669//9329 +f 4675//9330 4634//9330 4631//9330 +f 4674//9331 4669//9331 4655//9331 +f 4675//9332 4631//9332 4609//9332 +f 4675//9333 4666//9333 4634//9333 +f 4675//9334 4664//9334 4666//9334 +f 4675//9335 4608//9335 4672//9335 +f 4675//9336 4672//9336 4664//9336 +f 4676//9337 4671//9337 4673//9337 +f 4677//9338 4599//9338 4597//9338 +f 4677//9339 4662//9339 4668//9339 +f 4677//9340 4674//9340 4662//9340 +f 4677//9341 4597//9341 4674//9341 +f 4678//9342 4676//9342 4673//9342 +f 4678//9343 4673//9343 4679//9343 +f 4680//9344 4599//9344 4677//9344 +f 4680//9345 4677//9345 4668//9345 +f 4680//9346 4668//9346 4671//9346 +f 4641//9347 4678//9347 4679//9347 +f 4681//9348 4599//9348 4680//9348 +f 4681//9349 4600//9349 4599//9349 +f 4681//9350 4680//9350 4671//9350 +f 4635//9351 4634//9351 3515//9351 +f 4681//9352 4671//9352 4676//9352 +f 4635//9353 3515//9353 3514//9353 +f 4642//9354 4679//9354 4633//9354 +f 4642//9355 4641//9355 4679//9355 +f 4682//9356 4676//9356 4678//9356 +f 4638//9357 4635//9357 3514//9357 +f 4682//9358 4681//9358 4676//9358 +f 4682//9359 4600//9359 4681//9359 +f 4649//9360 3514//9360 3517//9360 +f 4649//9361 4638//9361 3514//9361 +f 4637//9362 4642//9362 4633//9362 +f 4644//9363 4649//9363 3517//9363 +f 4640//9364 4602//9364 4600//9364 +f 4640//9365 4600//9365 4682//9365 +f 4640//9366 4682//9366 4678//9366 +f 4640//9367 4678//9367 4641//9367 +f 4630//9368 4612//9368 4609//9368 +f 4630//9369 4631//9369 4634//9369 +f 3520//9370 4654//9370 3519//9370 +f 4683//9371 4663//9371 4654//9371 +f 4683//9372 4654//9372 3520//9372 +f 4684//9373 4673//9373 4663//9373 +f 4684//9374 4663//9374 4683//9374 +f 4685//9375 4673//9375 4684//9375 +f 4686//9376 4679//9376 4673//9376 +f 4686//9377 4673//9377 4685//9377 +f 4687//9378 4633//9378 4679//9378 +f 4687//9379 4679//9379 4686//9379 +f 3509//9380 3508//9380 4633//9380 +f 3509//9381 4633//9381 4687//9381 +f 4688//9382 3518//9382 4689//9382 +f 4688//9383 4689//9383 4690//9383 +f 4691//9384 3621//9384 4438//9384 +f 4691//9385 4692//9385 3621//9385 +f 4693//9386 3598//9386 3597//9386 +f 4694//9387 4695//9387 4692//9387 +f 4694//9388 3520//9388 4688//9388 +f 4694//9389 4688//9389 4695//9389 +f 4696//9390 4438//9390 4441//9390 +f 4696//9391 4691//9391 4438//9391 +f 4697//9392 4683//9392 3520//9392 +f 4697//9393 4692//9393 4691//9393 +f 4697//9394 3520//9394 4694//9394 +f 4697//9395 4694//9395 4692//9395 +f 4698//9396 4441//9396 4436//9396 +f 4698//9397 4696//9397 4441//9397 +f 3516//9398 3513//9398 4699//9398 +f 4700//9399 4684//9399 4683//9399 +f 4700//9400 4697//9400 4691//9400 +f 4700//9401 4683//9401 4697//9401 +f 4700//9402 4691//9402 4696//9402 +f 4701//9403 4436//9403 4435//9403 +f 4701//9404 4698//9404 4436//9404 +f 4702//9405 4685//9405 4684//9405 +f 4702//9406 4700//9406 4696//9406 +f 4702//9407 4684//9407 4700//9407 +f 4702//9408 4696//9408 4698//9408 +f 4703//9409 4435//9409 4448//9409 +f 4703//9410 4701//9410 4435//9410 +f 4704//9411 4686//9411 4685//9411 +f 4704//9412 4685//9412 4702//9412 +f 4704//9413 4698//9413 4701//9413 +f 4704//9414 4702//9414 4698//9414 +f 4705//9415 4448//9415 3600//9415 +f 4705//9416 3600//9416 3603//9416 +f 4705//9417 4703//9417 4448//9417 +f 4706//9418 4704//9418 4701//9418 +f 4706//9419 4687//9419 4686//9419 +f 4706//9420 4686//9420 4704//9420 +f 4706//9421 4701//9421 4703//9421 +f 4707//9422 3603//9422 3607//9422 +f 4707//9423 4705//9423 3603//9423 +f 4708//9424 4703//9424 4705//9424 +f 4708//9425 3509//9425 4687//9425 +f 4708//9426 4687//9426 4706//9426 +f 4708//9427 4706//9427 4703//9427 +f 4709//9428 3607//9428 3598//9428 +f 4709//9429 3598//9429 4693//9429 +f 4709//9430 4707//9430 3607//9430 +f 4710//9431 4705//9431 4707//9431 +f 4710//9432 3507//9432 3509//9432 +f 4710//9433 4708//9433 4705//9433 +f 4710//9434 3509//9434 4708//9434 +f 4711//9435 3511//9435 3507//9435 +f 4711//9436 3507//9436 4710//9436 +f 4711//9437 4709//9437 4693//9437 +f 4711//9438 4693//9438 4699//9438 +f 4711//9439 4710//9439 4707//9439 +f 4711//9440 4707//9440 4709//9440 +f 4711//9441 4699//9441 3511//9441 +f 3513//9442 3511//9442 4699//9442 +f 4690//9443 4693//9443 3597//9443 +f 4695//9444 3597//9444 3617//9444 +f 4695//9445 4690//9445 3597//9445 +f 4689//9446 3518//9446 3516//9446 +f 4689//9447 4699//9447 4693//9447 +f 4689//9448 3516//9448 4699//9448 +f 4689//9449 4693//9449 4690//9449 +f 4692//9450 3617//9450 3621//9450 +f 4692//9451 4695//9451 3617//9451 +f 4688//9452 3520//9452 3518//9452 +f 4688//9453 4690//9453 4695//9453 +f 4712//9454 4713//9454 4714//9454 +f 4715//9455 4716//9455 4717//9455 +f 4712//9456 4718//9456 4713//9456 +f 4715//9457 4719//9457 4716//9457 +f 4720//9458 3664//9458 3663//9458 +f 4720//9459 3663//9459 4721//9459 +f 4720//9460 4721//9460 4722//9460 +f 4723//9461 4717//9461 4724//9461 +f 4723//9462 4715//9462 4717//9462 +f 4725//9463 3470//9463 4726//9463 +f 4727//9464 4722//9464 4718//9464 +f 4725//9465 4728//9465 4729//9465 +f 4725//9466 4729//9466 3470//9466 +f 4727//9467 4720//9467 4722//9467 +f 4730//9468 4718//9468 4712//9468 +f 4730//9469 4727//9469 4718//9469 +f 4731//9470 4732//9470 4733//9470 +f 4734//9471 4735//9471 4736//9471 +f 4731//9472 4733//9472 4737//9472 +f 4738//9473 4739//9473 4728//9473 +f 4731//9474 4737//9474 4740//9474 +f 4738//9475 4725//9475 4726//9475 +f 4741//9476 4732//9476 4731//9476 +f 4741//9477 4714//9477 4732//9477 +f 4738//9478 4728//9478 4725//9478 +f 4742//9479 4736//9479 4743//9479 +f 4741//9480 4731//9480 4740//9480 +f 4744//9481 3665//9481 3664//9481 +f 4742//9482 4734//9482 4736//9482 +f 4744//9483 3664//9483 4720//9483 +f 4744//9484 4720//9484 4727//9484 +f 4745//9485 4743//9485 4719//9485 +f 4746//9486 4727//9486 4730//9486 +f 4746//9487 4744//9487 4727//9487 +f 4745//9488 4742//9488 4743//9488 +f 4747//9489 3482//9489 3481//9489 +f 4747//9490 3481//9490 3665//9490 +f 4747//9491 3665//9491 4744//9491 +f 4748//9492 3660//9492 3659//9492 +f 4747//9493 4744//9493 4746//9493 +f 4749//9494 4740//9494 4750//9494 +f 4748//9495 3659//9495 4735//9495 +f 4749//9496 4712//9496 4714//9496 +f 4749//9497 4741//9497 4740//9497 +f 4749//9498 4714//9498 4741//9498 +f 4751//9499 3663//9499 3660//9499 +f 4751//9500 3660//9500 4748//9500 +f 4752//9501 4712//9501 4749//9501 +f 4752//9502 4730//9502 4712//9502 +f 4752//9503 4749//9503 4750//9503 +f 4753//9504 4719//9504 4715//9504 +f 4754//9505 4746//9505 4730//9505 +f 4753//9506 4745//9506 4719//9506 +f 4754//9507 4752//9507 4750//9507 +f 4754//9508 4730//9508 4752//9508 +f 4733//9509 4753//9509 4715//9509 +f 4755//9510 4750//9510 3482//9510 +f 4755//9511 3482//9511 4747//9511 +f 4755//9512 4754//9512 4750//9512 +f 4755//9513 4747//9513 4746//9513 +f 4733//9514 4715//9514 4723//9514 +f 4755//9515 4746//9515 4754//9515 +f 4756//9516 4735//9516 4734//9516 +f 4756//9517 4748//9517 4735//9517 +f 4757//9518 4372//9518 3449//9518 +f 4758//9519 3663//9519 4751//9519 +f 4729//9520 3449//9520 3470//9520 +f 4758//9521 4748//9521 4756//9521 +f 4729//9522 4757//9522 3449//9522 +f 4758//9523 4751//9523 4748//9523 +f 4759//9524 4376//9524 4372//9524 +f 4760//9525 4756//9525 4734//9525 +f 4760//9526 4734//9526 4742//9526 +f 4761//9527 4758//9527 4756//9527 +f 4762//9528 4376//9528 4759//9528 +f 4761//9529 4756//9529 4760//9529 +f 4763//9530 4759//9530 4372//9530 +f 4763//9531 4372//9531 4757//9531 +f 4728//9532 4763//9532 4757//9532 +f 4764//9533 4726//9533 4765//9533 +f 4764//9534 4739//9534 4738//9534 +f 4764//9535 4724//9535 4739//9535 +f 4728//9536 4757//9536 4729//9536 +f 4764//9537 4738//9537 4726//9537 +f 4766//9538 4759//9538 4763//9538 +f 4766//9539 4762//9539 4759//9539 +f 4767//9540 4760//9540 4742//9540 +f 4767//9541 4742//9541 4745//9541 +f 4739//9542 4763//9542 4728//9542 +f 4739//9543 4766//9543 4763//9543 +f 4768//9544 4380//9544 4376//9544 +f 4769//9545 4761//9545 4760//9545 +f 4769//9546 4760//9546 4767//9546 +f 4770//9547 4724//9547 4764//9547 +f 4771//9548 4768//9548 4376//9548 +f 4770//9549 4723//9549 4724//9549 +f 4770//9550 4764//9550 4765//9550 +f 4772//9551 4745//9551 4753//9551 +f 4772//9552 4767//9552 4745//9552 +f 4736//9553 3659//9553 4380//9553 +f 4736//9554 4380//9554 4768//9554 +f 4716//9555 4376//9555 4762//9555 +f 4713//9556 4769//9556 4767//9556 +f 4716//9557 4771//9557 4376//9557 +f 4713//9558 4767//9558 4772//9558 +f 4732//9559 4772//9559 4753//9559 +f 4732//9560 4753//9560 4733//9560 +f 4743//9561 4768//9561 4771//9561 +f 4714//9562 4713//9562 4772//9562 +f 4743//9563 4736//9563 4768//9563 +f 4714//9564 4772//9564 4732//9564 +f 4717//9565 4762//9565 4766//9565 +f 4721//9566 4758//9566 4761//9566 +f 4717//9567 4716//9567 4762//9567 +f 4721//9568 3663//9568 4758//9568 +f 4722//9569 4721//9569 4761//9569 +f 4722//9570 4761//9570 4769//9570 +f 4719//9571 4771//9571 4716//9571 +f 4719//9572 4743//9572 4771//9572 +f 4737//9573 4723//9573 4770//9573 +f 4737//9574 4733//9574 4723//9574 +f 4724//9575 4717//9575 4766//9575 +f 4737//9576 4765//9576 4740//9576 +f 4724//9577 4766//9577 4739//9577 +f 4737//9578 4770//9578 4765//9578 +f 4718//9579 4769//9579 4713//9579 +f 4735//9580 3659//9580 4736//9580 +f 4718//9581 4722//9581 4769//9581 +f 4726//9582 4750//9582 4765//9582 +f 4765//9583 4750//9583 4740//9583 +f 3470//9584 3482//9584 4726//9584 +f 4726//9585 3482//9585 4750//9585 +f 3459//9586 3453//9586 3470//9586 +f 3470//9587 3453//9587 3482//9587 +f 3494//9588 3475//9588 3458//9588 +f 3458//9589 3475//9589 3459//9589 +f 3459//9590 3475//9590 3453//9590 +f 4479//9591 3561//9591 3563//9591 +f 4464//9592 3563//9592 3575//9592 +f 4464//9593 4479//9593 3563//9593 +f 4465//9594 3575//9594 3541//9594 +f 4465//9595 4464//9595 3575//9595 +f 4485//9596 3541//9596 3540//9596 +f 4485//9597 4465//9597 3541//9597 +f 4474//9598 3557//9598 3593//9598 +f 4474//9599 3540//9599 3557//9599 +f 4474//9600 4485//9600 3540//9600 +g BullDogClip010 (Meshed) +f 4773//9601 4774//9601 4775//9601 +f 4776//9602 4775//9602 4777//9602 +f 4776//9603 4773//9603 4775//9603 +f 4778//9604 4777//9604 4779//9604 +f 4778//9605 4776//9605 4777//9605 +f 4780//9606 4778//9606 4779//9606 +f 4781//9607 4782//9607 4783//9607 +f 4784//9608 4785//9608 4786//9608 +f 4787//9609 4788//9609 4789//9609 +f 4790//9610 4791//9610 4782//9610 +f 4787//9611 4792//9611 4788//9611 +f 4790//9612 4793//9612 4791//9612 +f 4793//9613 4794//9613 4791//9613 +f 4795//9614 4796//9614 4794//9614 +f 4797//9615 4796//9615 4795//9615 +f 4796//9616 4798//9616 4794//9616 +f 4794//9617 4799//9617 4791//9617 +f 4798//9618 4799//9618 4794//9618 +f 4800//9619 4801//9619 4798//9619 +f 4792//9620 4801//9620 4802//9620 +f 4801//9621 4803//9621 4798//9621 +f 4798//9622 4803//9622 4799//9622 +f 4800//9623 4802//9623 4801//9623 +f 4802//9624 4804//9624 4792//9624 +f 4804//9625 4788//9625 4792//9625 +f 4805//9626 4785//9626 4784//9626 +f 4785//9627 4806//9627 4786//9627 +f 4806//9628 4797//9628 4807//9628 +f 4807//9629 4797//9629 4795//9629 +f 4807//9630 4786//9630 4806//9630 +f 4808//9631 4781//9631 4783//9631 +f 4781//9632 4790//9632 4782//9632 +f 4809//9633 4810//9633 4811//9633 +f 4811//9634 4810//9634 4812//9634 +f 4812//9635 4813//9635 4814//9635 +f 4810//9636 4813//9636 4812//9636 +f 4814//9637 4815//9637 4816//9637 +f 4813//9638 4815//9638 4814//9638 +f 4817//9639 4818//9639 4819//9639 +f 4817//9640 4820//9640 4818//9640 +f 4821//9641 4822//9641 4823//9641 +f 4824//9642 4825//9642 4826//9642 +f 4821//9643 4827//9643 4822//9643 +f 4824//9644 4826//9644 4820//9644 +f 4828//9645 4829//9645 4830//9645 +f 4828//9646 4830//9646 4827//9646 +f 4831//9647 4832//9647 4833//9647 +f 4831//9648 4834//9648 4835//9648 +f 4836//9649 4829//9649 4828//9649 +f 4836//9650 4827//9650 4821//9650 +f 4831//9651 4835//9651 4832//9651 +f 4836//9652 4828//9652 4827//9652 +f 4837//9653 4838//9653 4839//9653 +f 4837//9654 4840//9654 4838//9654 +f 4841//9655 4819//9655 4842//9655 +f 4841//9656 4817//9656 4819//9656 +f 4837//9657 4823//9657 4843//9657 +f 4837//9658 4843//9658 4840//9658 +f 4844//9659 4837//9659 4839//9659 +f 4845//9660 4846//9660 4847//9660 +f 4844//9661 4821//9661 4823//9661 +f 4845//9662 4847//9662 4848//9662 +f 4844//9663 4823//9663 4837//9663 +f 4849//9664 4839//9664 4850//9664 +f 4849//9665 4850//9665 4829//9665 +f 4849//9666 4829//9666 4836//9666 +f 4849//9667 4836//9667 4821//9667 +f 4849//9668 4844//9668 4839//9668 +f 4851//9669 4824//9669 4820//9669 +f 4849//9670 4821//9670 4844//9670 +f 4851//9671 4820//9671 4817//9671 +f 4852//9672 4848//9672 4825//9672 +f 4852//9673 4845//9673 4848//9673 +f 4853//9674 4817//9674 4841//9674 +f 4853//9675 4851//9675 4817//9675 +f 4854//9676 4833//9676 4855//9676 +f 4854//9677 4842//9677 4834//9677 +f 4854//9678 4831//9678 4833//9678 +f 4854//9679 4834//9679 4831//9679 +f 4856//9680 4825//9680 4824//9680 +f 4856//9681 4852//9681 4825//9681 +f 4857//9682 4856//9682 4824//9682 +f 4857//9683 4824//9683 4851//9683 +f 4858//9684 4842//9684 4854//9684 +f 4858//9685 4841//9685 4842//9685 +f 4858//9686 4854//9686 4855//9686 +f 4859//9687 4846//9687 4845//9687 +f 4860//9688 4861//9688 4862//9688 +f 4859//9689 4863//9689 4846//9689 +f 4860//9690 4864//9690 4861//9690 +f 4865//9691 4857//9691 4851//9691 +f 4865//9692 4851//9692 4853//9692 +f 4866//9693 4867//9693 4864//9693 +f 4868//9694 4845//9694 4852//9694 +f 4835//9695 4866//9695 4864//9695 +f 4868//9696 4859//9696 4845//9696 +f 4835//9697 4864//9697 4860//9697 +f 4869//9698 4870//9698 4863//9698 +f 4869//9699 4863//9699 4859//9699 +f 4871//9700 4872//9700 4867//9700 +f 4873//9701 4874//9701 4865//9701 +f 4873//9702 4853//9702 4841//9702 +f 4873//9703 4855//9703 4874//9703 +f 4873//9704 4841//9704 4858//9704 +f 4873//9705 4858//9705 4855//9705 +f 4873//9706 4865//9706 4853//9706 +f 4875//9707 4867//9707 4866//9707 +f 4876//9708 4859//9708 4868//9708 +f 4876//9709 4869//9709 4859//9709 +f 4876//9710 4870//9710 4869//9710 +f 4834//9711 4866//9711 4835//9711 +f 4834//9712 4875//9712 4866//9712 +f 4877//9713 4852//9713 4856//9713 +f 4877//9714 4868//9714 4852//9714 +f 4878//9715 4879//9715 4872//9715 +f 4878//9716 4847//9716 4879//9716 +f 4880//9717 4876//9717 4868//9717 +f 4880//9718 4868//9718 4877//9718 +f 4826//9719 4878//9719 4872//9719 +f 4881//9720 4856//9720 4857//9720 +f 4881//9721 4877//9721 4856//9721 +f 4826//9722 4872//9722 4871//9722 +f 4882//9723 4865//9723 4874//9723 +f 4818//9724 4867//9724 4875//9724 +f 4882//9725 4857//9725 4865//9725 +f 4882//9726 4881//9726 4857//9726 +f 4818//9727 4871//9727 4867//9727 +f 4848//9728 4847//9728 4878//9728 +f 4883//9729 4880//9729 4877//9729 +f 4883//9730 4877//9730 4881//9730 +f 4825//9731 4878//9731 4826//9731 +f 4843//9732 4881//9732 4882//9732 +f 4843//9733 4883//9733 4881//9733 +f 4825//9734 4848//9734 4878//9734 +f 4884//9735 4870//9735 4876//9735 +f 4884//9736 4876//9736 4880//9736 +f 4819//9737 4818//9737 4875//9737 +f 4822//9738 4880//9738 4883//9738 +f 4842//9739 4875//9739 4834//9739 +f 4822//9740 4884//9740 4880//9740 +f 4842//9741 4819//9741 4875//9741 +f 4823//9742 4883//9742 4843//9742 +f 4820//9743 4826//9743 4871//9743 +f 4820//9744 4871//9744 4818//9744 +f 4823//9745 4822//9745 4883//9745 +f 4885//9746 4830//9746 4870//9746 +f 4885//9747 4870//9747 4884//9747 +f 4832//9748 4862//9748 4833//9748 +f 4832//9749 4835//9749 4860//9749 +f 4827//9750 4830//9750 4885//9750 +f 4827//9751 4884//9751 4822//9751 +f 4832//9752 4860//9752 4862//9752 +f 4846//9753 4863//9753 4886//9753 +f 4846//9754 4886//9754 4879//9754 +f 4846//9755 4879//9755 4847//9755 +f 4827//9756 4885//9756 4884//9756 +f 4840//9757 4874//9757 4838//9757 +f 4840//9758 4882//9758 4874//9758 +f 4840//9759 4843//9759 4882//9759 +f 4887//9760 4888//9760 4889//9760 +f 4887//9761 4890//9761 4888//9761 +f 4891//9762 4892//9762 4890//9762 +f 4891//9763 4890//9763 4887//9763 +f 4893//9764 4894//9764 4895//9764 +f 4893//9765 4895//9765 4892//9765 +f 4893//9766 4892//9766 4891//9766 +f 4896//9767 4897//9767 4894//9767 +f 4896//9768 4894//9768 4893//9768 +f 4898//9769 4899//9769 4897//9769 +f 4898//9770 4897//9770 4896//9770 +f 4900//9771 4899//9771 4898//9771 +f 4901//9772 4902//9772 4903//9772 +f 4904//9773 4905//9773 4902//9773 +f 4904//9774 4902//9774 4901//9774 +f 4906//9775 4907//9775 4905//9775 +f 4906//9776 4905//9776 4904//9776 +f 4908//9777 4907//9777 4906//9777 +f 4909//9778 4910//9778 4907//9778 +f 4909//9779 4907//9779 4908//9779 +f 4911//9780 4912//9780 4910//9780 +f 4911//9781 4910//9781 4909//9781 +f 4913//9782 4914//9782 4912//9782 +f 4913//9783 4912//9783 4911//9783 +f 4915//9784 4916//9784 4917//9784 +f 4915//9785 4918//9785 4916//9785 +f 4919//9786 4920//9786 4921//9786 +f 4919//9787 4921//9787 4922//9787 +f 4923//9788 4917//9788 4924//9788 +f 4923//9789 4915//9789 4917//9789 +f 4925//9790 4922//9790 4918//9790 +f 4925//9791 4919//9791 4922//9791 +f 4926//9792 4924//9792 4927//9792 +f 4926//9793 4923//9793 4924//9793 +f 4928//9794 4920//9794 4919//9794 +f 4929//9795 4925//9795 4918//9795 +f 4929//9796 4918//9796 4915//9796 +f 4930//9797 4928//9797 4919//9797 +f 4930//9798 4919//9798 4925//9798 +f 4931//9799 4926//9799 4927//9799 +f 4931//9800 4932//9800 4933//9800 +f 4931//9801 4933//9801 4934//9801 +f 4931//9802 4927//9802 4932//9802 +f 4935//9803 4930//9803 4925//9803 +f 4935//9804 4925//9804 4929//9804 +f 4936//9805 4920//9805 4928//9805 +f 4936//9806 4937//9806 4920//9806 +f 4938//9807 4936//9807 4928//9807 +f 4938//9808 4928//9808 4930//9808 +f 4939//9809 4929//9809 4915//9809 +f 4940//9810 4941//9810 4942//9810 +f 4939//9811 4915//9811 4923//9811 +f 4940//9812 4943//9812 4941//9812 +f 4944//9813 4923//9813 4926//9813 +f 4945//9814 4942//9814 4946//9814 +f 4944//9815 4939//9815 4923//9815 +f 4945//9816 4940//9816 4942//9816 +f 4947//9817 4930//9817 4935//9817 +f 4947//9818 4938//9818 4930//9818 +f 4948//9819 4943//9819 4940//9819 +f 4949//9820 4946//9820 4950//9820 +f 4951//9821 4935//9821 4929//9821 +f 4949//9822 4945//9822 4946//9822 +f 4951//9823 4929//9823 4939//9823 +f 4949//9824 4940//9824 4945//9824 +f 4949//9825 4948//9825 4940//9825 +f 4952//9826 4934//9826 4953//9826 +f 4954//9827 4955//9827 4943//9827 +f 4952//9828 4939//9828 4944//9828 +f 4954//9829 4943//9829 4948//9829 +f 4952//9830 4951//9830 4939//9830 +f 4956//9831 4931//9831 4934//9831 +f 4956//9832 4952//9832 4944//9832 +f 4956//9833 4926//9833 4931//9833 +f 4957//9834 4948//9834 4949//9834 +f 4956//9835 4934//9835 4952//9835 +f 4957//9836 4954//9836 4948//9836 +f 4956//9837 4944//9837 4926//9837 +f 4958//9838 4937//9838 4936//9838 +f 4959//9839 4957//9839 4949//9839 +f 4959//9840 4949//9840 4950//9840 +f 4960//9841 4958//9841 4936//9841 +f 4961//9842 4955//9842 4954//9842 +f 4960//9843 4936//9843 4938//9843 +f 4962//9844 4935//9844 4951//9844 +f 4962//9845 4947//9845 4935//9845 +f 4962//9846 4952//9846 4953//9846 +f 4963//9847 4954//9847 4957//9847 +f 4962//9848 4951//9848 4952//9848 +f 4964//9849 4937//9849 4958//9849 +f 4963//9850 4961//9850 4954//9850 +f 4965//9851 4921//9851 4955//9851 +f 4966//9852 4967//9852 4968//9852 +f 4965//9853 4955//9853 4961//9853 +f 4966//9854 4958//9854 4960//9854 +f 4966//9855 4964//9855 4958//9855 +f 4969//9856 4953//9856 4967//9856 +f 4969//9857 4947//9857 4962//9857 +f 4969//9858 4938//9858 4947//9858 +f 4969//9859 4960//9859 4938//9859 +f 4916//9860 4961//9860 4963//9860 +f 4969//9861 4967//9861 4966//9861 +f 4916//9862 4965//9862 4961//9862 +f 4969//9863 4966//9863 4960//9863 +f 4969//9864 4962//9864 4953//9864 +f 4970//9865 4968//9865 4971//9865 +f 4972//9866 4957//9866 4959//9866 +f 4970//9867 4971//9867 4973//9867 +f 4972//9868 4963//9868 4957//9868 +f 4970//9869 4973//9869 4937//9869 +f 4970//9870 4937//9870 4964//9870 +f 4970//9871 4964//9871 4966//9871 +f 4970//9872 4966//9872 4968//9872 +f 4917//9873 4916//9873 4963//9873 +f 4917//9874 4963//9874 4972//9874 +f 4974//9875 4959//9875 4950//9875 +f 4974//9876 4972//9876 4959//9876 +f 4975//9877 4950//9877 4932//9877 +f 4975//9878 4974//9878 4950//9878 +f 4924//9879 4917//9879 4972//9879 +f 4924//9880 4972//9880 4974//9880 +f 4922//9881 4921//9881 4965//9881 +f 4927//9882 4975//9882 4932//9882 +f 4927//9883 4974//9883 4975//9883 +f 4927//9884 4924//9884 4974//9884 +f 4918//9885 4922//9885 4965//9885 +f 4918//9886 4965//9886 4916//9886 +f 4976//9887 4977//9887 4978//9887 +f 4979//9888 4980//9888 4981//9888 +f 4979//9889 4981//9889 4982//9889 +f 4979//9890 4983//9890 4980//9890 +f 4984//9891 4982//9891 4985//9891 +f 4984//9892 4983//9892 4979//9892 +f 4984//9893 4979//9893 4982//9893 +f 4986//9894 4987//9894 4983//9894 +f 4986//9895 4984//9895 4985//9895 +f 4986//9896 4983//9896 4984//9896 +f 4988//9897 4985//9897 4989//9897 +f 4988//9898 4986//9898 4985//9898 +f 4988//9899 4987//9899 4986//9899 +f 4990//9900 4978//9900 4987//9900 +f 4990//9901 4988//9901 4989//9901 +f 4990//9902 4987//9902 4988//9902 +f 4991//9903 4989//9903 4976//9903 +f 4991//9904 4978//9904 4990//9904 +f 4991//9905 4990//9905 4989//9905 +f 4991//9906 4976//9906 4978//9906 +f 4992//9907 4976//9907 4993//9907 +f 4992//9908 4977//9908 4976//9908 +f 4994//9909 4977//9909 4992//9909 +f 4994//9910 4992//9910 4993//9910 +f 4995//9911 4993//9911 4996//9911 +f 4995//9912 4997//9912 4977//9912 +f 4995//9913 4994//9913 4993//9913 +f 4995//9914 4977//9914 4994//9914 +f 4998//9915 4996//9915 4999//9915 +f 4998//9916 4999//9916 5000//9916 +f 4998//9917 5000//9917 5001//9917 +f 4998//9918 5001//9918 4997//9918 +f 4998//9919 4995//9919 4996//9919 +f 4998//9920 4997//9920 4995//9920 +f 5002//9921 5003//9921 5004//9921 +f 5005//9922 5006//9922 5007//9922 +f 5005//9923 5007//9923 5008//9923 +f 5005//9924 5009//9924 5010//9924 +f 5005//9925 5010//9925 5006//9925 +f 5011//9926 5008//9926 5004//9926 +f 5011//9927 5012//9927 5009//9927 +f 5011//9928 5009//9928 5005//9928 +f 5011//9929 5005//9929 5008//9929 +f 5013//9930 5011//9930 5004//9930 +f 5013//9931 5012//9931 5011//9931 +f 5014//9932 5003//9932 5012//9932 +f 5014//9933 5012//9933 5013//9933 +f 5014//9934 5013//9934 5004//9934 +f 5014//9935 5004//9935 5003//9935 +f 5015//9936 5002//9936 5016//9936 +f 5015//9937 5017//9937 5003//9937 +f 5015//9938 5003//9938 5002//9938 +f 5018//9939 5019//9939 5017//9939 +f 5018//9940 5015//9940 5016//9940 +f 5018//9941 5017//9941 5015//9941 +f 5020//9942 5016//9942 5021//9942 +f 5020//9943 5018//9943 5016//9943 +f 5020//9944 5019//9944 5018//9944 +f 5022//9945 5023//9945 5019//9945 +f 5022//9946 5020//9946 5021//9946 +f 5022//9947 5019//9947 5020//9947 +f 5024//9948 5021//9948 5025//9948 +f 5024//9949 5025//9949 5026//9949 +f 5024//9950 5026//9950 5023//9950 +f 5024//9951 5023//9951 5022//9951 +f 5024//9952 5022//9952 5021//9952 +f 5027//9953 5028//9953 5029//9953 +f 5027//9954 5029//9954 5030//9954 +f 5031//9955 5030//9955 5032//9955 +f 5031//9956 5027//9956 5030//9956 +f 5033//9957 5032//9957 5034//9957 +f 5033//9958 5031//9958 5032//9958 +f 5035//9959 5034//9959 5036//9959 +f 5035//9960 5033//9960 5034//9960 +f 5037//9961 5036//9961 5038//9961 +f 5037//9962 5035//9962 5036//9962 +f 5039//9963 5040//9963 5041//9963 +f 5040//9964 5042//9964 5041//9964 +f 5040//9965 5043//9965 5042//9965 +f 4933//9966 4932//9966 4879//9966 +f 5044//9967 5045//9967 5042//9967 +f 5046//9968 5047//9968 5048//9968 +f 4861//9969 5049//9969 5045//9969 +f 5045//9970 5049//9970 5042//9970 +f 4867//9971 4946//9971 4864//9971 +f 5047//9972 5050//9972 5051//9972 +f 4864//9973 4942//9973 4861//9973 +f 4946//9974 4942//9974 4864//9974 +f 5050//9975 5052//9975 4942//9975 +f 4861//9976 5052//9976 5049//9976 +f 4942//9977 5052//9977 4861//9977 +f 5047//9978 5052//9978 5050//9978 +f 5049//9979 5053//9979 5054//9979 +f 5052//9980 5053//9980 5049//9980 +f 5054//9981 5055//9981 5056//9981 +f 5053//9982 5055//9982 5054//9982 +f 5055//9983 5057//9983 5056//9983 +f 5056//9984 5057//9984 5058//9984 +f 4932//9985 4950//9985 4872//9985 +f 4879//9986 4886//9986 4933//9986 +f 4872//9987 4879//9987 4932//9987 +f 4867//9988 4872//9988 4950//9988 +f 4867//9989 4950//9989 4946//9989 +f 5043//9990 5044//9990 5042//9990 +f 5048//9991 5059//9991 5046//9991 +f 5051//9992 5048//9992 5047//9992 +f 5060//9993 4802//9993 4800//9993 +f 5061//9994 5062//9994 5063//9994 +f 5060//9995 4800//9995 5064//9995 +f 5061//9996 5065//9996 5062//9996 +f 5060//9997 5066//9997 5067//9997 +f 5068//9998 5069//9998 5070//9998 +f 5060//9999 5064//9999 5066//9999 +f 5068//10000 5071//10000 5069//10000 +f 5072//10001 4804//10001 4802//10001 +f 5072//10002 5073//10002 5074//10002 +f 5072//10003 5075//10003 4804//10003 +f 5072//10004 5074//10004 5075//10004 +f 5072//10005 5067//10005 5073//10005 +f 5076//10006 5063//10006 5071//10006 +f 5072//10007 4802//10007 5060//10007 +f 5076//10008 5061//10008 5063//10008 +f 5072//10009 5060//10009 5067//10009 +f 5077//10010 4798//10010 5078//10010 +f 5077//10011 4800//10011 4798//10011 +f 5079//10012 5070//10012 4789//10012 +f 5077//10013 5064//10013 4800//10013 +f 5079//10014 5068//10014 5070//10014 +f 5077//10015 5078//10015 5080//10015 +f 5079//10016 5071//10016 5068//10016 +f 5077//10017 5080//10017 5081//10017 +f 5077//10018 5081//10018 5064//10018 +f 5079//10019 5076//10019 5071//10019 +f 5082//10020 5083//10020 5084//10020 +f 5082//10021 5084//10021 5085//10021 +f 5086//10022 5082//10022 5085//10022 +f 5086//10023 5085//10023 5065//10023 +f 5087//10024 5088//10024 5089//10024 +f 5087//10025 5089//10025 5090//10025 +f 5091//10026 5086//10026 5065//10026 +f 5091//10027 5065//10027 5061//10027 +f 5092//10028 5091//10028 5061//10028 +f 5092//10029 5061//10029 5076//10029 +f 5093//10030 5092//10030 5076//10030 +f 5093//10031 5076//10031 5079//10031 +f 5094//10032 5088//10032 5087//10032 +f 5095//10033 5083//10033 5082//10033 +f 5095//10034 5096//10034 5083//10034 +f 5097//10035 5098//10035 5099//10035 +f 5100//10036 5096//10036 5095//10036 +f 5100//10037 5090//10037 5096//10037 +f 5101//10038 5098//10038 5097//10038 +f 5102//10039 5095//10039 5082//10039 +f 5103//10040 5099//10040 5104//10040 +f 5102//10041 5082//10041 5086//10041 +f 5103//10042 5104//10042 5105//10042 +f 5103//10043 5097//10043 5099//10043 +f 5081//10044 5088//10044 5094//10044 +f 5106//10045 5107//10045 5098//10045 +f 5108//10046 5100//10046 5095//10046 +f 5108//10047 5095//10047 5102//10047 +f 5106//10048 5098//10048 5101//10048 +f 5109//10049 5093//10049 5079//10049 +f 5084//10050 5107//10050 5106//10050 +f 5109//10051 5079//10051 4789//10051 +f 5110//10052 5086//10052 5091//10052 +f 5111//10053 5097//10053 5103//10053 +f 5110//10054 5102//10054 5086//10054 +f 5112//10055 5105//10055 5069//10055 +f 5112//10056 5103//10056 5105//10056 +f 5113//10057 5108//10057 5102//10057 +f 5112//10058 5111//10058 5103//10058 +f 5113//10059 5102//10059 5110//10059 +f 5114//10060 5091//10060 5092//10060 +f 5115//10061 5101//10061 5097//10061 +f 5114//10062 5110//10062 5091//10062 +f 5115//10063 5097//10063 5111//10063 +f 5116//10064 5111//10064 5112//10064 +f 5117//10065 5113//10065 5110//10065 +f 5116//10066 5115//10066 5111//10066 +f 5117//10067 5110//10067 5114//10067 +f 5118//10068 5092//10068 5093//10068 +f 5118//10069 5114//10069 5092//10069 +f 5119//10070 5112//10070 5069//10070 +f 5119//10071 5116//10071 5112//10071 +f 5083//10072 5089//10072 5107//10072 +f 5120//10073 4788//10073 4804//10073 +f 5120//10074 5114//10074 5118//10074 +f 5083//10075 5107//10075 5084//10075 +f 5120//10076 5117//10076 5114//10076 +f 5080//10077 5078//10077 5088//10077 +f 5121//10078 5101//10078 5115//10078 +f 5121//10079 5106//10079 5101//10079 +f 5080//10080 5088//10080 5081//10080 +f 5122//10081 5087//10081 5090//10081 +f 5122//10082 5090//10082 5100//10082 +f 5073//10083 5122//10083 5100//10083 +f 5062//10084 5115//10084 5116//10084 +f 5062//10085 5121//10085 5115//10085 +f 5073//10086 5100//10086 5108//10086 +f 5085//10087 5084//10087 5106//10087 +f 5123//10088 4789//10088 4788//10088 +f 5085//10089 5106//10089 5121//10089 +f 5123//10090 5093//10090 5109//10090 +f 5123//10091 5109//10091 4789//10091 +f 5123//10092 5118//10092 5093//10092 +f 5123//10093 4788//10093 5120//10093 +f 5123//10094 5120//10094 5118//10094 +f 5063//10095 5116//10095 5119//10095 +f 5074//10096 5108//10096 5113//10096 +f 5063//10097 5062//10097 5116//10097 +f 5074//10098 5073//10098 5108//10098 +f 5075//10099 5113//10099 5117//10099 +f 5075//10100 5120//10100 4804//10100 +f 5096//10101 5089//10101 5083//10101 +f 5075//10102 5117//10102 5120//10102 +f 5075//10103 5074//10103 5113//10103 +f 5065//10104 5121//10104 5062//10104 +f 5066//10105 5094//10105 5087//10105 +f 5065//10106 5085//10106 5121//10106 +f 5066//10107 5087//10107 5122//10107 +f 5067//10108 5122//10108 5073//10108 +f 5090//10109 5089//10109 5096//10109 +f 5067//10110 5066//10110 5122//10110 +f 5071//10111 5063//10111 5119//10111 +f 5064//10112 5081//10112 5094//10112 +f 5071//10113 5119//10113 5069//10113 +f 5064//10114 5094//10114 5066//10114 +f 5124//10115 5125//10115 5126//10115 +f 5127//10116 5128//10116 5124//10116 +f 5127//10117 5129//10117 5128//10117 +f 5130//10118 5131//10118 5129//10118 +f 5130//10119 5129//10119 5127//10119 +f 5132//10120 5133//10120 5134//10120 +f 5132//10121 5135//10121 5133//10121 +f 5132//10122 5126//10122 5135//10122 +f 5136//10123 5137//10123 5138//10123 +f 5136//10124 5138//10124 5131//10124 +f 5136//10125 5131//10125 5130//10125 +f 5139//10126 5124//10126 5126//10126 +f 5139//10127 5132//10127 5134//10127 +f 5139//10128 5126//10128 5132//10128 +f 5140//10129 5134//10129 5141//10129 +f 5140//10130 5124//10130 5139//10130 +f 5140//10131 5127//10131 5124//10131 +f 5140//10132 5139//10132 5134//10132 +f 5142//10133 5141//10133 5143//10133 +f 5142//10134 5140//10134 5141//10134 +f 5142//10135 5130//10135 5127//10135 +f 5142//10136 5127//10136 5140//10136 +f 5144//10137 5145//10137 5137//10137 +f 5144//10138 5143//10138 5145//10138 +f 5144//10139 5137//10139 5136//10139 +f 5144//10140 5136//10140 5130//10140 +f 5144//10141 5142//10141 5143//10141 +f 5144//10142 5130//10142 5142//10142 +f 5146//10143 5147//10143 5148//10143 +f 5149//10144 5150//10144 5147//10144 +f 5149//10145 5147//10145 5146//10145 +f 5151//10146 5152//10146 5150//10146 +f 5151//10147 5150//10147 5149//10147 +f 5153//10148 5154//10148 5152//10148 +f 5153//10149 5152//10149 5151//10149 +f 5125//10150 5148//10150 5135//10150 +f 5125//10151 5146//10151 5148//10151 +f 5155//10152 5156//10152 5157//10152 +f 5155//10153 5157//10153 5154//10153 +f 5155//10154 5154//10154 5153//10154 +f 5128//10155 5146//10155 5125//10155 +f 5128//10156 5149//10156 5146//10156 +f 5129//10157 5151//10157 5149//10157 +f 5129//10158 5149//10158 5128//10158 +f 5131//10159 5153//10159 5151//10159 +f 5131//10160 5151//10160 5129//10160 +f 5126//10161 5125//10161 5135//10161 +f 5138//10162 5137//10162 5156//10162 +f 5138//10163 5156//10163 5155//10163 +f 5138//10164 5155//10164 5153//10164 +f 5138//10165 5153//10165 5131//10165 +f 5124//10166 5128//10166 5125//10166 +f 5158//10167 5159//10167 5160//10167 +f 5158//10168 5160//10168 5161//10168 +f 5162//10169 5159//10169 5158//10169 +f 5162//10170 5163//10170 5159//10170 +f 5164//10171 5165//10171 5163//10171 +f 5164//10172 5163//10172 5162//10172 +f 5166//10173 5167//10173 5168//10173 +f 5166//10174 5161//10174 5167//10174 +f 5169//10175 5170//10175 5171//10175 +f 5169//10176 5171//10176 5172//10176 +f 5169//10177 5172//10177 5165//10177 +f 5169//10178 5165//10178 5164//10178 +f 5173//10179 5168//10179 5174//10179 +f 5173//10180 5158//10180 5161//10180 +f 5173//10181 5166//10181 5168//10181 +f 5173//10182 5161//10182 5166//10182 +f 5175//10183 5174//10183 5176//10183 +f 5175//10184 5158//10184 5173//10184 +f 5175//10185 5162//10185 5158//10185 +f 5175//10186 5173//10186 5174//10186 +f 5177//10187 5176//10187 5178//10187 +f 5177//10188 5175//10188 5176//10188 +f 5177//10189 5164//10189 5162//10189 +f 5177//10190 5162//10190 5175//10190 +f 5179//10191 5180//10191 5170//10191 +f 5179//10192 5178//10192 5180//10192 +f 5179//10193 5170//10193 5169//10193 +f 5179//10194 5169//10194 5164//10194 +f 5179//10195 5177//10195 5178//10195 +f 5179//10196 5164//10196 5177//10196 +f 5181//10197 5182//10197 5183//10197 +f 5184//10198 5185//10198 5182//10198 +f 5184//10199 5182//10199 5181//10199 +f 5186//10200 5187//10200 5185//10200 +f 5186//10201 5185//10201 5184//10201 +f 5188//10202 5189//10202 5187//10202 +f 5188//10203 5187//10203 5186//10203 +f 5160//10204 5181//10204 5183//10204 +f 5190//10205 5171//10205 5191//10205 +f 5190//10206 5191//10206 5189//10206 +f 5190//10207 5189//10207 5188//10207 +f 5159//10208 5181//10208 5160//10208 +f 5159//10209 5184//10209 5181//10209 +f 5163//10210 5186//10210 5184//10210 +f 5163//10211 5184//10211 5159//10211 +f 5165//10212 5188//10212 5186//10212 +f 5165//10213 5186//10213 5163//10213 +f 5161//10214 5183//10214 5167//10214 +f 5161//10215 5160//10215 5183//10215 +f 5172//10216 5171//10216 5190//10216 +f 5172//10217 5190//10217 5188//10217 +f 5172//10218 5188//10218 5165//10218 +f 5192//10219 5193//10219 5194//10219 +f 5192//10220 5195//10220 5193//10220 +f 5196//10221 5192//10221 5194//10221 +f 5196//10222 5194//10222 5197//10222 +f 5198//10223 4781//10223 4808//10223 +f 5198//10224 4808//10224 5199//10224 +f 5198//10225 5199//10225 5200//10225 +f 5201//10226 5202//10226 5203//10226 +f 5201//10227 5204//10227 5202//10227 +f 5201//10228 5197//10228 5204//10228 +f 5201//10229 5196//10229 5197//10229 +f 5205//10230 5198//10230 5200//10230 +f 5205//10231 5200//10231 5206//10231 +f 5207//10232 5205//10232 5206//10232 +f 5207//10233 5206//10233 5195//10233 +f 5208//10234 5195//10234 5192//10234 +f 5208//10235 5207//10235 5195//10235 +f 5209//10236 5192//10236 5196//10236 +f 5209//10237 5208//10237 5192//10237 +f 5210//10238 5209//10238 5196//10238 +f 5210//10239 5201//10239 5203//10239 +f 5210//10240 5196//10240 5201//10240 +f 5211//10241 4781//10241 5198//10241 +f 5211//10242 5198//10242 5205//10242 +f 5212//10243 4790//10243 4781//10243 +f 5212//10244 4781//10244 5211//10244 +f 5213//10245 5211//10245 5205//10245 +f 5213//10246 5205//10246 5207//10246 +f 5214//10247 5215//10247 5216//10247 +f 5214//10248 5216//10248 5217//10248 +f 5218//10249 5212//10249 5211//10249 +f 5214//10250 5217//10250 5219//10250 +f 5218//10251 5211//10251 5213//10251 +f 5220//10252 5221//10252 5215//10252 +f 5218//10253 4790//10253 5212//10253 +f 5222//10254 5213//10254 5207//10254 +f 5222//10255 5207//10255 5208//10255 +f 5223//10256 5218//10256 5213//10256 +f 5224//10257 5221//10257 5220//10257 +f 5223//10258 5213//10258 5222//10258 +f 5225//10259 5215//10259 5214//10259 +f 5225//10260 5220//10260 5215//10260 +f 5226//10261 5208//10261 5209//10261 +f 5225//10262 5214//10262 5219//10262 +f 5227//10263 5224//10263 5220//10263 +f 5226//10264 5222//10264 5208//10264 +f 5227//10265 5225//10265 5219//10265 +f 5227//10266 5220//10266 5225//10266 +f 5228//10267 5209//10267 5210//10267 +f 5229//10268 5230//10268 5221//10268 +f 5228//10269 5210//10269 5203//10269 +f 5228//10270 5203//10270 5231//10270 +f 5228//10271 5226//10271 5209//10271 +f 5232//10272 5199//10272 5230//10272 +f 5233//10273 5223//10273 5222//10273 +f 5233//10274 5222//10274 5226//10274 +f 5234//10275 5228//10275 5231//10275 +f 5235//10276 5229//10276 5221//10276 +f 5234//10277 5226//10277 5228//10277 +f 5234//10278 5233//10278 5226//10278 +f 5236//10279 4790//10279 5218//10279 +f 5193//10280 5232//10280 5230//10280 +f 5236//10281 5218//10281 5223//10281 +f 5193//10282 5230//10282 5229//10282 +f 5200//10283 5199//10283 5232//10283 +f 5237//10284 5236//10284 5223//10284 +f 5237//10285 5223//10285 5233//10285 +f 5238//10286 5221//10286 5224//10286 +f 5238//10287 5235//10287 5221//10287 +f 5239//10288 5231//10288 5240//10288 +f 5239//10289 5233//10289 5234//10289 +f 5239//10290 5237//10290 5233//10290 +f 5241//10291 5219//10291 5202//10291 +f 5241//10292 5224//10292 5227//10292 +f 5239//10293 5234//10293 5231//10293 +f 5242//10294 4793//10294 4790//10294 +f 5241//10295 5238//10295 5224//10295 +f 5242//10296 4790//10296 5236//10296 +f 5241//10297 5227//10297 5219//10297 +f 5242//10298 5236//10298 5237//10298 +f 5243//10299 5239//10299 5240//10299 +f 5194//10300 5229//10300 5235//10300 +f 5243//10301 5237//10301 5239//10301 +f 5194//10302 5193//10302 5229//10302 +f 5243//10303 5242//10303 5237//10303 +f 5244//10304 5245//10304 4794//10304 +f 5244//10305 4794//10305 4793//10305 +f 5244//10306 5240//10306 5245//10306 +f 5244//10307 4793//10307 5242//10307 +f 5244//10308 5243//10308 5240//10308 +f 5244//10309 5242//10309 5243//10309 +f 5206//10310 5200//10310 5232//10310 +f 5197//10311 5194//10311 5235//10311 +f 5197//10312 5235//10312 5238//10312 +f 5195//10313 5232//10313 5193//10313 +f 5195//10314 5206//10314 5232//10314 +f 5204//10315 5241//10315 5202//10315 +f 5204//10316 5238//10316 5241//10316 +f 5204//10317 5197//10317 5238//10317 +f 5246//10318 5247//10318 5248//10318 +f 5249//10319 5250//10319 5251//10319 +f 5249//10320 5251//10320 5252//10320 +f 5249//10321 5252//10321 5253//10321 +f 5254//10322 5255//10322 5250//10322 +f 5254//10323 5250//10323 5249//10323 +f 5254//10324 5249//10324 5253//10324 +f 5256//10325 5253//10325 5257//10325 +f 5256//10326 5254//10326 5253//10326 +f 5256//10327 5255//10327 5254//10327 +f 5258//10328 5259//10328 5255//10328 +f 5258//10329 5255//10329 5256//10329 +f 5258//10330 5256//10330 5257//10330 +f 5260//10331 5257//10331 5248//10331 +f 5260//10332 5258//10332 5257//10332 +f 5260//10333 5259//10333 5258//10333 +f 5261//10334 5247//10334 5259//10334 +f 5261//10335 5260//10335 5248//10335 +f 5261//10336 5248//10336 5247//10336 +f 5261//10337 5259//10337 5260//10337 +f 5262//10338 5263//10338 5247//10338 +f 5262//10339 5247//10339 5246//10339 +f 5264//10340 5263//10340 5262//10340 +f 5264//10341 5262//10341 5246//10341 +f 5265//10342 5266//10342 5263//10342 +f 5265//10343 5246//10343 5267//10343 +f 5265//10344 5263//10344 5264//10344 +f 5265//10345 5264//10345 5246//10345 +f 5268//10346 5269//10346 5270//10346 +f 5268//10347 5271//10347 5266//10347 +f 5268//10348 5270//10348 5271//10348 +f 5268//10349 5267//10349 5269//10349 +f 5268//10350 5266//10350 5265//10350 +f 5268//10351 5265//10351 5267//10351 +f 5272//10352 5273//10352 5274//10352 +f 5275//10353 5276//10353 5277//10353 +f 5275//10354 5277//10354 5278//10354 +f 5275//10355 5279//10355 5280//10355 +f 5275//10356 5278//10356 5279//10356 +f 5281//10357 5274//10357 5276//10357 +f 5281//10358 5280//10358 5282//10358 +f 5281//10359 5276//10359 5275//10359 +f 5281//10360 5275//10360 5280//10360 +f 5283//10361 5281//10361 5282//10361 +f 5283//10362 5274//10362 5281//10362 +f 5284//10363 5282//10363 5272//10363 +f 5284//10364 5283//10364 5282//10364 +f 5284//10365 5272//10365 5274//10365 +f 5284//10366 5274//10366 5283//10366 +f 5285//10367 5286//10367 5273//10367 +f 5285//10368 5272//10368 5287//10368 +f 5285//10369 5273//10369 5272//10369 +f 5288//10370 5287//10370 5289//10370 +f 5288//10371 5285//10371 5287//10371 +f 5288//10372 5286//10372 5285//10372 +f 5290//10373 5291//10373 5286//10373 +f 5290//10374 5286//10374 5288//10374 +f 5290//10375 5288//10375 5289//10375 +f 5292//10376 5289//10376 5293//10376 +f 5292//10377 5291//10377 5290//10377 +f 5292//10378 5290//10378 5289//10378 +f 5294//10379 5295//10379 5296//10379 +f 5294//10380 5296//10380 5291//10380 +f 5294//10381 5293//10381 5295//10381 +f 5294//10382 5291//10382 5292//10382 +f 5294//10383 5292//10383 5293//10383 +f 5297//10384 5298//10384 5247//10384 +f 5297//10385 5247//10385 5263//10385 +f 5299//10386 5300//10386 5301//10386 +f 5279//10387 5278//10387 5302//10387 +f 5303//10388 5295//10388 5304//10388 +f 5271//10389 5297//10389 5266//10389 +f 5280//10390 5279//10390 5302//10390 +f 5270//10391 5297//10391 5271//10391 +f 5270//10392 5299//10392 5301//10392 +f 5270//10393 5301//10393 5295//10393 +f 5305//10394 5278//10394 5251//10394 +f 5306//10395 5295//10395 5303//10395 +f 5305//10396 5302//10396 5278//10396 +f 5307//10397 5278//10397 5308//10397 +f 5307//10398 5251//10398 5278//10398 +f 5306//10399 5270//10399 5295//10399 +f 5306//10400 5297//10400 5270//10400 +f 4773//10401 5303//10401 4774//10401 +f 4773//10402 5306//10402 5303//10402 +f 5299//10403 5309//10403 5300//10403 +f 5309//10404 5310//10404 5311//10404 +f 5310//10405 5312//10405 5313//10405 +f 5312//10406 5314//10406 5315//10406 +f 5316//10407 5282//10407 5280//10407 +f 5314//10408 5317//10408 5318//10408 +f 5255//10409 5259//10409 5298//10409 +f 5259//10410 5247//10410 5298//10410 +f 5263//10411 5266//10411 5297//10411 +f 5308//10412 5318//10412 5317//10412 +f 5316//10413 5280//10413 5302//10413 +f 5318//10414 5315//10414 5314//10414 +f 5315//10415 5313//10415 5312//10415 +f 5313//10416 5311//10416 5310//10416 +f 5311//10417 5300//10417 5309//10417 +f 5293//10418 5289//10418 5304//10418 +f 5289//10419 5287//10419 5304//10419 +f 5250//10420 5305//10420 5251//10420 +f 5272//10421 5282//10421 5316//10421 +f 5317//10422 5307//10422 5308//10422 +f 5255//10423 5305//10423 5250//10423 +f 5287//10424 5272//10424 5316//10424 +f 5298//10425 5305//10425 5255//10425 +f 5304//10426 5287//10426 5316//10426 +f 5295//10427 5293//10427 5304//10427 +f 4816//10428 5216//10428 5319//10428 +f 4815//10429 5216//10429 4816//10429 +f 5216//10430 5215//10430 5319//10430 +f 5216//10431 5104//10431 5320//10431 +f 4815//10432 5104//10432 5216//10432 +f 5320//10433 5321//10433 5322//10433 +f 5104//10434 5321//10434 5320//10434 +f 5221//10435 5323//10435 5319//10435 +f 5104//10436 5324//10436 5105//10436 +f 4815//10437 5324//10437 5104//10437 +f 5324//10438 5069//10438 5105//10438 +f 5199//10439 4783//10439 5323//10439 +f 5324//10440 5325//10440 5069//10440 +f 5199//10441 4808//10441 4783//10441 +f 5326//10442 4805//10442 5327//10442 +f 5325//10443 4787//10443 5070//10443 +f 5215//10444 5221//10444 5319//10444 +f 5221//10445 5230//10445 5323//10445 +f 5230//10446 5199//10446 5323//10446 +f 4784//10447 5327//10447 4805//10447 +f 5327//10448 5328//10448 5326//10448 +f 5328//10449 5322//10449 5329//10449 +f 5329//10450 5322//10450 5321//10450 +f 5329//10451 5326//10451 5328//10451 +f 4789//10452 5070//10452 4787//10452 +f 5070//10453 5069//10453 5325//10453 +f 4799//10454 5330//10454 5331//10454 +f 4803//10455 5330//10455 4799//10455 +f 5331//10456 5332//10456 5333//10456 +f 5330//10457 5332//10457 5331//10457 +f 5333//10458 4809//10458 4811//10458 +f 5332//10459 4809//10459 5333//10459 +f 5334//10460 4780//10460 4779//10460 +f 5334//10461 4779//10461 5335//10461 +f 5336//10462 5335//10462 5337//10462 +f 5336//10463 5334//10463 5335//10463 +f 5338//10464 5337//10464 5339//10464 +f 5338//10465 5336//10465 5337//10465 +f 5340//10466 5341//10466 5342//10466 +f 5340//10467 5343//10467 5341//10467 +f 5344//10468 5342//10468 5345//10468 +f 5344//10469 5340//10469 5342//10469 +f 5346//10470 5345//10470 5347//10470 +f 5346//10471 5344//10471 5345//10471 +f 5348//10472 5349//10472 5350//10472 +f 5350//10473 5349//10473 5351//10473 +f 5351//10474 5352//10474 5353//10474 +f 5349//10475 5352//10475 5351//10475 +f 5353//10476 5354//10476 5355//10476 +f 5352//10477 5354//10477 5353//10477 +f 5339//10478 5355//10478 5354//10478 +f 5339//10479 5354//10479 5338//10479 +f 5347//10480 5302//10480 5305//10480 +f 5347//10481 5305//10481 5346//10481 +f 5313//10482 5356//10482 5357//10482 +f 5358//10483 5296//10483 5295//10483 +f 5358//10484 5301//10484 5300//10484 +f 5358//10485 5295//10485 5301//10485 +f 5358//10486 5359//10486 5296//10486 +f 5360//10487 5300//10487 5311//10487 +f 5360//10488 5357//10488 5359//10488 +f 5360//10489 5359//10489 5358//10489 +f 5360//10490 5358//10490 5300//10490 +f 5361//10491 5360//10491 5311//10491 +f 5361//10492 5357//10492 5360//10492 +f 5362//10493 5311//10493 5313//10493 +f 5362//10494 5361//10494 5311//10494 +f 5362//10495 5357//10495 5361//10495 +f 5362//10496 5313//10496 5357//10496 +f 5363//10497 5313//10497 5315//10497 +f 5363//10498 5364//10498 5356//10498 +f 5363//10499 5356//10499 5313//10499 +f 5365//10500 5315//10500 5318//10500 +f 5365//10501 5364//10501 5363//10501 +f 5365//10502 5363//10502 5315//10502 +f 5366//10503 5367//10503 5364//10503 +f 5366//10504 5365//10504 5318//10504 +f 5366//10505 5364//10505 5365//10505 +f 5368//10506 5318//10506 5308//10506 +f 5368//10507 5367//10507 5366//10507 +f 5368//10508 5366//10508 5318//10508 +f 5369//10509 5308//10509 5278//10509 +f 5369//10510 5278//10510 5277//10510 +f 5369//10511 5277//10511 5367//10511 +f 5369//10512 5368//10512 5308//10512 +f 5369//10513 5367//10513 5368//10513 +f 5370//10514 5312//10514 5371//10514 +f 5372//10515 5270//10515 5269//10515 +f 5372//10516 5269//10516 5373//10516 +f 5372//10517 5299//10517 5270//10517 +f 5374//10518 5309//10518 5299//10518 +f 5374//10519 5299//10519 5372//10519 +f 5374//10520 5372//10520 5373//10520 +f 5375//10521 5373//10521 5376//10521 +f 5375//10522 5374//10522 5373//10522 +f 5375//10523 5309//10523 5374//10523 +f 5377//10524 5310//10524 5309//10524 +f 5377//10525 5375//10525 5376//10525 +f 5377//10526 5309//10526 5375//10526 +f 5378//10527 5376//10527 5371//10527 +f 5378//10528 5377//10528 5376//10528 +f 5378//10529 5310//10529 5377//10529 +f 5379//10530 5312//10530 5310//10530 +f 5379//10531 5310//10531 5378//10531 +f 5379//10532 5378//10532 5371//10532 +f 5379//10533 5371//10533 5312//10533 +f 5380//10534 5314//10534 5312//10534 +f 5380//10535 5312//10535 5370//10535 +f 5381//10536 5380//10536 5370//10536 +f 5381//10537 5314//10537 5380//10537 +f 5382//10538 5370//10538 5383//10538 +f 5382//10539 5317//10539 5314//10539 +f 5382//10540 5314//10540 5381//10540 +f 5382//10541 5381//10541 5370//10541 +f 5384//10542 5383//10542 5252//10542 +f 5384//10543 5252//10543 5251//10543 +f 5384//10544 5307//10544 5317//10544 +f 5384//10545 5251//10545 5307//10545 +f 5384//10546 5317//10546 5382//10546 +f 5384//10547 5382//10547 5383//10547 +f 5385//10548 5386//10548 5387//10548 +f 5385//10549 5387//10549 5388//10549 +f 5389//10550 4786//10550 5390//10550 +f 5389//10551 5391//10551 4786//10551 +f 5392//10552 5393//10552 5394//10552 +f 5392//10553 5395//10553 5393//10553 +f 5392//10554 5388//10554 5395//10554 +f 5392//10555 5385//10555 5388//10555 +f 5396//10556 5389//10556 5390//10556 +f 5396//10557 5390//10557 5397//10557 +f 5398//10558 5327//10558 5391//10558 +f 5399//10559 5396//10559 5397//10559 +f 5399//10560 5397//10560 5386//10560 +f 5400//10561 5391//10561 5389//10561 +f 5400//10562 5398//10562 5391//10562 +f 5401//10563 5386//10563 5385//10563 +f 5401//10564 5399//10564 5386//10564 +f 5402//10565 5389//10565 5396//10565 +f 5402//10566 5400//10566 5389//10566 +f 5403//10567 5401//10567 5385//10567 +f 5403//10568 5392//10568 5394//10568 +f 5403//10569 5385//10569 5392//10569 +f 5404//10570 5398//10570 5400//10570 +f 5404//10571 5328//10571 5327//10571 +f 5404//10572 5327//10572 5398//10572 +f 5405//10573 5400//10573 5402//10573 +f 5405//10574 5404//10574 5400//10574 +f 5406//10575 4795//10575 4794//10575 +f 5407//10576 5396//10576 5399//10576 +f 5407//10577 5402//10577 5396//10577 +f 5408//10578 4807//10578 4795//10578 +f 5409//10579 5328//10579 5404//10579 +f 5409//10580 5404//10580 5405//10580 +f 5410//10581 4794//10581 5245//10581 +f 5410//10582 5245//10582 5411//10582 +f 5410//10583 5406//10583 4794//10583 +f 5412//10584 5407//10584 5399//10584 +f 5413//10585 5408//10585 4795//10585 +f 5412//10586 5399//10586 5401//10586 +f 5413//10587 4795//10587 5406//10587 +f 5414//10588 5405//10588 5402//10588 +f 5414//10589 5402//10589 5407//10589 +f 5415//10590 5410//10590 5411//10590 +f 5415//10591 5406//10591 5410//10591 +f 5415//10592 5413//10592 5406//10592 +f 5416//10593 5401//10593 5403//10593 +f 5417//10594 4786//10594 4807//10594 +f 5416//10595 5394//10595 5418//10595 +f 5416//10596 5403//10596 5394//10596 +f 5416//10597 5412//10597 5401//10597 +f 5419//10598 4807//10598 5408//10598 +f 5420//10599 5407//10599 5412//10599 +f 5420//10600 5414//10600 5407//10600 +f 5421//10601 5416//10601 5418//10601 +f 5421//10602 5412//10602 5416//10602 +f 5421//10603 5420//10603 5412//10603 +f 5422//10604 5417//10604 4807//10604 +f 5423//10605 5409//10605 5405//10605 +f 5390//10606 4786//10606 5417//10606 +f 5423//10607 5405//10607 5414//10607 +f 5424//10608 5423//10608 5414//10608 +f 5425//10609 5408//10609 5413//10609 +f 5424//10610 5414//10610 5420//10610 +f 5425//10611 5419//10611 5408//10611 +f 5426//10612 5418//10612 5427//10612 +f 5397//10613 5417//10613 5422//10613 +f 5426//10614 5421//10614 5418//10614 +f 5426//10615 5420//10615 5421//10615 +f 5426//10616 5424//10616 5420//10616 +f 5397//10617 5390//10617 5417//10617 +f 5428//10618 5322//10618 5328//10618 +f 5429//10619 5411//10619 5393//10619 +f 5429//10620 5415//10620 5411//10620 +f 5428//10621 5328//10621 5409//10621 +f 5429//10622 5413//10622 5415//10622 +f 5428//10623 5409//10623 5423//10623 +f 5429//10624 5425//10624 5413//10624 +f 5430//10625 5428//10625 5423//10625 +f 5387//10626 4807//10626 5419//10626 +f 5430//10627 5423//10627 5424//10627 +f 5387//10628 5422//10628 4807//10628 +f 5431//10629 5426//10629 5427//10629 +f 5391//10630 5327//10630 4784//10630 +f 5431//10631 5424//10631 5426//10631 +f 5391//10632 4784//10632 4786//10632 +f 5431//10633 5430//10633 5424//10633 +f 5432//10634 5320//10634 5322//10634 +f 5432//10635 5322//10635 5428//10635 +f 5432//10636 5428//10636 5430//10636 +f 5386//10637 5397//10637 5422//10637 +f 5386//10638 5422//10638 5387//10638 +f 5433//10639 5431//10639 5427//10639 +f 5433//10640 5430//10640 5431//10640 +f 5433//10641 5432//10641 5430//10641 +f 5388//10642 5419//10642 5425//10642 +f 5434//10643 5427//10643 5217//10643 +f 5434//10644 5217//10644 5216//10644 +f 5388//10645 5387//10645 5419//10645 +f 5434//10646 5216//10646 5320//10646 +f 5434//10647 5320//10647 5432//10647 +f 5434//10648 5433//10648 5427//10648 +f 5434//10649 5432//10649 5433//10649 +f 5395//10650 5429//10650 5393//10650 +f 5395//10651 5388//10651 5425//10651 +f 5395//10652 5425//10652 5429//10652 +f 5435//10653 5364//10653 5367//10653 +f 5435//10654 5436//10654 5437//10654 +f 5435//10655 5438//10655 5364//10655 +f 5435//10656 5437//10656 5438//10656 +f 5439//10657 5168//10657 5167//10657 +f 5440//10658 5441//10658 5442//10658 +f 5439//10659 5167//10659 5443//10659 +f 5444//10660 5367//10660 5277//10660 +f 5444//10661 5443//10661 5436//10661 +f 5444//10662 5435//10662 5367//10662 +f 5444//10663 5436//10663 5435//10663 +f 5445//10664 5174//10664 5168//10664 +f 5445//10665 5168//10665 5439//10665 +f 5446//10666 5277//10666 5276//10666 +f 5446//10667 5439//10667 5443//10667 +f 5446//10668 5444//10668 5277//10668 +f 5446//10669 5443//10669 5444//10669 +f 5447//10670 5176//10670 5174//10670 +f 5364//10671 5448//10671 5356//10671 +f 5447//10672 5174//10672 5445//10672 +f 5449//10673 5274//10673 5273//10673 +f 5449//10674 5276//10674 5274//10674 +f 5449//10675 5446//10675 5276//10675 +f 5449//10676 5445//10676 5439//10676 +f 5449//10677 5439//10677 5446//10677 +f 5450//10678 5178//10678 5176//10678 +f 5450//10679 5176//10679 5447//10679 +f 5451//10680 5447//10680 5445//10680 +f 5451//10681 5449//10681 5273//10681 +f 5451//10682 5445//10682 5449//10682 +f 5452//10683 5170//10683 5180//10683 +f 5452//10684 5180//10684 5178//10684 +f 5452//10685 5178//10685 5450//10685 +f 5453//10686 5273//10686 5286//10686 +f 5453//10687 5447//10687 5451//10687 +f 5453//10688 5451//10688 5273//10688 +f 5453//10689 5450//10689 5447//10689 +f 5454//10690 5170//10690 5452//10690 +f 5455//10691 5450//10691 5453//10691 +f 5455//10692 5286//10692 5291//10692 +f 5455//10693 5453//10693 5286//10693 +f 5455//10694 5452//10694 5450//10694 +f 5456//10695 5170//10695 5454//10695 +f 5456//10696 5457//10696 5170//10696 +f 5458//10697 5296//10697 5359//10697 +f 5458//10698 5454//10698 5452//10698 +f 5458//10699 5452//10699 5455//10699 +f 5458//10700 5455//10700 5291//10700 +f 5458//10701 5291//10701 5296//10701 +f 5459//10702 5457//10702 5456//10702 +f 5459//10703 5460//10703 5457//10703 +f 5459//10704 5440//10704 5460//10704 +f 5461//10705 5359//10705 5357//10705 +f 5461//10706 5458//10706 5359//10706 +f 5461//10707 5456//10707 5454//10707 +f 5461//10708 5454//10708 5458//10708 +f 5462//10709 5357//10709 5356//10709 +f 5462//10710 5448//10710 5440//10710 +f 5462//10711 5356//10711 5448//10711 +f 5462//10712 5461//10712 5357//10712 +f 5462//10713 5459//10713 5456//10713 +f 5462//10714 5456//10714 5461//10714 +f 5462//10715 5440//10715 5459//10715 +f 5440//10716 5442//10716 5460//10716 +f 5437//10717 5463//10717 5441//10717 +f 5437//10718 5441//10718 5440//10718 +f 5436//10719 5167//10719 5463//10719 +f 5436//10720 5463//10720 5437//10720 +f 5438//10721 5440//10721 5448//10721 +f 5438//10722 5448//10722 5364//10722 +f 5438//10723 5437//10723 5440//10723 +f 5443//10724 5167//10724 5436//10724 +f 5464//10725 5465//10725 5466//10725 +f 5464//10726 5467//10726 5465//10726 +f 5468//10727 5469//10727 5467//10727 +f 5468//10728 5467//10728 5464//10728 +f 5470//10729 5457//10729 5460//10729 +f 5470//10730 5170//10730 5457//10730 +f 5470//10731 5471//10731 5170//10731 +f 5472//10732 5167//10732 5473//10732 +f 5472//10733 5473//10733 5469//10733 +f 5472//10734 5469//10734 5468//10734 +f 5474//10735 5460//10735 5442//10735 +f 5474//10736 5466//10736 5471//10736 +f 5474//10737 5470//10737 5460//10737 +f 5474//10738 5471//10738 5470//10738 +f 5475//10739 5464//10739 5466//10739 +f 5475//10740 5466//10740 5474//10740 +f 5475//10741 5474//10741 5442//10741 +f 5476//10742 5442//10742 5441//10742 +f 5476//10743 5468//10743 5464//10743 +f 5476//10744 5475//10744 5442//10744 +f 5476//10745 5464//10745 5475//10745 +f 5477//10746 5463//10746 5167//10746 +f 5477//10747 5441//10747 5463//10747 +f 5477//10748 5167//10748 5472//10748 +f 5477//10749 5472//10749 5468//10749 +f 5477//10750 5476//10750 5441//10750 +f 5477//10751 5468//10751 5476//10751 +f 5478//10752 5479//10752 5171//10752 +f 5480//10753 5481//10753 5479//10753 +f 5480//10754 5479//10754 5478//10754 +f 5482//10755 5483//10755 5484//10755 +f 5482//10756 5484//10756 5481//10756 +f 5482//10757 5481//10757 5480//10757 +f 5485//10758 5486//10758 5483//10758 +f 5485//10759 5483//10759 5482//10759 +f 5487//10760 5171//10760 5170//10760 +f 5487//10761 5478//10761 5171//10761 +f 5488//10762 5183//10762 5486//10762 +f 5488//10763 5486//10763 5485//10763 +f 5465//10764 5478//10764 5487//10764 +f 5465//10765 5480//10765 5478//10765 +f 5467//10766 5482//10766 5480//10766 +f 5467//10767 5480//10767 5465//10767 +f 5469//10768 5485//10768 5482//10768 +f 5469//10769 5482//10769 5467//10769 +f 5471//10770 5487//10770 5170//10770 +f 5473//10771 5167//10771 5183//10771 +f 5473//10772 5488//10772 5485//10772 +f 5473//10773 5183//10773 5488//10773 +f 5473//10774 5485//10774 5469//10774 +f 5466//10775 5465//10775 5487//10775 +f 5466//10776 5487//10776 5471//10776 +f 5489//10777 5490//10777 5491//10777 +f 5492//10778 5493//10778 5189//10778 +f 5492//10779 5494//10779 5493//10779 +f 5495//10780 5496//10780 5497//10780 +f 5495//10781 5497//10781 5484//10781 +f 5492//10782 5498//10782 5494//10782 +f 5495//10783 5484//10783 5483//10783 +f 5495//10784 5499//10784 5496//10784 +f 5500//10785 5501//10785 5502//10785 +f 5503//10786 5504//10786 5499//10786 +f 5505//10787 5189//10787 5191//10787 +f 5503//10788 5499//10788 5495//10788 +f 5505//10789 5506//10789 5498//10789 +f 5503//10790 5495//10790 5483//10790 +f 5505//10791 5498//10791 5492//10791 +f 5505//10792 5492//10792 5189//10792 +f 5507//10793 5508//10793 5501//10793 +f 5509//10794 5510//10794 5489//10794 +f 5507//10795 5501//10795 5500//10795 +f 5511//10796 5512//10796 5510//10796 +f 5511//10797 5510//10797 5509//10797 +f 5513//10798 5483//10798 5486//10798 +f 5514//10799 5508//10799 5507//10799 +f 5513//10800 5503//10800 5483//10800 +f 5513//10801 5504//10801 5503//10801 +f 5515//10802 5506//10802 5505//10802 +f 5513//10803 5491//10803 5504//10803 +f 5515//10804 5502//10804 5506//10804 +f 5515//10805 5505//10805 5191//10805 +f 5516//10806 5491//10806 5513//10806 +f 5516//10807 5489//10807 5491//10807 +f 5516//10808 5513//10808 5486//10808 +f 5517//10809 5191//10809 5171//10809 +f 5517//10810 5515//10810 5191//10810 +f 5517//10811 5502//10811 5515//10811 +f 5517//10812 5500//10812 5502//10812 +f 5518//10813 5512//10813 5511//10813 +f 5519//10814 5520//10814 5512//10814 +f 5521//10815 5522//10815 5508//10815 +f 5521//10816 5508//10816 5514//10816 +f 5519//10817 5512//10817 5518//10817 +f 5523//10818 5486//10818 5183//10818 +f 5523//10819 5509//10819 5489//10819 +f 5523//10820 5489//10820 5516//10820 +f 5524//10821 5522//10821 5521//10821 +f 5523//10822 5516//10822 5486//10822 +f 5525//10823 5507//10823 5500//10823 +f 5526//10824 5511//10824 5509//10824 +f 5525//10825 5517//10825 5171//10825 +f 5526//10826 5509//10826 5523//10826 +f 5525//10827 5500//10827 5517//10827 +f 5526//10828 5523//10828 5183//10828 +f 5527//10829 5171//10829 5479//10829 +f 5527//10830 5514//10830 5507//10830 +f 5527//10831 5507//10831 5525//10831 +f 5528//10832 5520//10832 5519//10832 +f 5527//10833 5525//10833 5171//10833 +f 5529//10834 5530//10834 5522//10834 +f 5529//10835 5522//10835 5524//10835 +f 5531//10836 5183//10836 5182//10836 +f 5531//10837 5511//10837 5526//10837 +f 5531//10838 5518//10838 5511//10838 +f 5532//10839 5496//10839 5533//10839 +f 5531//10840 5526//10840 5183//10840 +f 5532//10841 5533//10841 5530//10841 +f 5532//10842 5530//10842 5529//10842 +f 5534//10843 5535//10843 5520//10843 +f 5536//10844 5521//10844 5514//10844 +f 5536//10845 5514//10845 5527//10845 +f 5534//10846 5520//10846 5528//10846 +f 5537//10847 5531//10847 5182//10847 +f 5536//10848 5527//10848 5479//10848 +f 5537//10849 5518//10849 5531//10849 +f 5538//10850 5479//10850 5481//10850 +f 5538//10851 5524//10851 5521//10851 +f 5538//10852 5536//10852 5479//10852 +f 5537//10853 5519//10853 5518//10853 +f 5538//10854 5521//10854 5536//10854 +f 5539//10855 5529//10855 5524//10855 +f 5540//10856 5535//10856 5534//10856 +f 5539//10857 5538//10857 5481//10857 +f 5539//10858 5524//10858 5538//10858 +f 5541//10859 5519//10859 5537//10859 +f 5542//10860 5481//10860 5484//10860 +f 5542//10861 5497//10861 5496//10861 +f 5542//10862 5484//10862 5497//10862 +f 5541//10863 5182//10863 5185//10863 +f 5542//10864 5496//10864 5532//10864 +f 5541//10865 5537//10865 5182//10865 +f 5542//10866 5532//10866 5529//10866 +f 5541//10867 5528//10867 5519//10867 +f 5542//10868 5539//10868 5481//10868 +f 5542//10869 5529//10869 5539//10869 +f 5543//10870 5535//10870 5540//10870 +f 5543//10871 5544//10871 5535//10871 +f 5545//10872 5528//10872 5541//10872 +f 5545//10873 5534//10873 5528//10873 +f 5545//10874 5541//10874 5185//10874 +f 5494//10875 5544//10875 5543//10875 +f 5546//10876 5534//10876 5545//10876 +f 5546//10877 5540//10877 5534//10877 +f 5546//10878 5545//10878 5185//10878 +f 5546//10879 5185//10879 5187//10879 +f 5498//10880 5547//10880 5544//10880 +f 5498//10881 5544//10881 5494//10881 +f 5548//10882 5543//10882 5540//10882 +f 5548//10883 5540//10883 5546//10883 +f 5548//10884 5546//10884 5187//10884 +f 5499//10885 5549//10885 5533//10885 +f 5499//10886 5533//10886 5496//10886 +f 5506//10887 5547//10887 5498//10887 +f 5504//10888 5490//10888 5549//10888 +f 5493//10889 5548//10889 5187//10889 +f 5493//10890 5187//10890 5189//10890 +f 5504//10891 5549//10891 5499//10891 +f 5493//10892 5543//10892 5548//10892 +f 5493//10893 5494//10893 5543//10893 +f 5502//10894 5501//10894 5547//10894 +f 5491//10895 5490//10895 5504//10895 +f 5502//10896 5547//10896 5506//10896 +f 5489//10897 5510//10897 5490//10897 +f 5550//10898 5551//10898 5552//10898 +f 5553//10899 5554//10899 5555//10899 +f 5553//10900 5556//10900 5501//10900 +f 5557//10901 5508//10901 5522//10901 +f 5557//10902 5553//10902 5508//10902 +f 5557//10903 5554//10903 5553//10903 +f 5558//10904 5559//10904 5560//10904 +f 5557//10905 5561//10905 5554//10905 +f 5558//10906 5560//10906 5550//10906 +f 5562//10907 5530//10907 5533//10907 +f 5562//10908 5522//10908 5530//10908 +f 5562//10909 5563//10909 5564//10909 +f 5562//10910 5533//10910 5563//10910 +f 5562//10911 5561//10911 5557//10911 +f 5562//10912 5564//10912 5565//10912 +f 5566//10913 5567//10913 5559//10913 +f 5562//10914 5565//10914 5561//10914 +f 5562//10915 5557//10915 5522//10915 +f 5566//10916 5559//10916 5558//10916 +f 5568//10917 5569//10917 5567//10917 +f 5568//10918 5567//10918 5566//10918 +f 5570//10919 5571//10919 5569//10919 +f 5570//10920 5569//10920 5568//10920 +f 5555//10921 5572//10921 5571//10921 +f 5555//10922 5571//10922 5570//10922 +f 5554//10923 5573//10923 5572//10923 +f 5554//10924 5572//10924 5555//10924 +f 5561//10925 5574//10925 5573//10925 +f 5561//10926 5573//10926 5554//10926 +f 5565//10927 5575//10927 5574//10927 +f 5565//10928 5574//10928 5561//10928 +f 5565//10929 5564//10929 5575//10929 +f 5576//10930 5533//10930 5549//10930 +f 5576//10931 5564//10931 5563//10931 +f 5576//10932 5563//10932 5533//10932 +f 5564//10933 5577//10933 5575//10933 +f 5576//10934 5578//10934 5564//10934 +f 5579//10935 5549//10935 5490//10935 +f 5579//10936 5580//10936 5578//10936 +f 5579//10937 5576//10937 5549//10937 +f 5579//10938 5578//10938 5576//10938 +f 5581//10939 5490//10939 5510//10939 +f 5581//10940 5552//10940 5580//10940 +f 5581//10941 5580//10941 5579//10941 +f 5581//10942 5579//10942 5490//10942 +f 5582//10943 5581//10943 5510//10943 +f 5582//10944 5510//10944 5512//10944 +f 5582//10945 5550//10945 5552//10945 +f 5582//10946 5552//10946 5581//10946 +f 5583//10947 5512//10947 5520//10947 +f 5583//10948 5582//10948 5512//10948 +f 5583//10949 5550//10949 5582//10949 +f 5583//10950 5558//10950 5550//10950 +f 5584//10951 5583//10951 5520//10951 +f 5584//10952 5558//10952 5583//10952 +f 5584//10953 5520//10953 5535//10953 +f 5584//10954 5566//10954 5558//10954 +f 5585//10955 5535//10955 5544//10955 +f 5578//10956 5586//10956 5577//10956 +f 5585//10957 5566//10957 5584//10957 +f 5578//10958 5577//10958 5564//10958 +f 5585//10959 5584//10959 5535//10959 +f 5585//10960 5568//10960 5566//10960 +f 5587//10961 5544//10961 5547//10961 +f 5580//10962 5588//10962 5586//10962 +f 5587//10963 5585//10963 5544//10963 +f 5587//10964 5568//10964 5585//10964 +f 5580//10965 5586//10965 5578//10965 +f 5587//10966 5570//10966 5568//10966 +f 5556//10967 5547//10967 5501//10967 +f 5552//10968 5551//10968 5588//10968 +f 5556//10969 5587//10969 5547//10969 +f 5556//10970 5570//10970 5587//10970 +f 5552//10971 5588//10971 5580//10971 +f 5556//10972 5555//10972 5570//10972 +f 5553//10973 5501//10973 5508//10973 +f 5553//10974 5555//10974 5556//10974 +f 5550//10975 5560//10975 5551//10975 +f 5589//10976 5590//10976 5591//10976 +f 5589//10977 5592//10977 5590//10977 +f 5593//10978 5577//10978 5586//10978 +f 5593//10979 5594//10979 5595//10979 +f 5593//10980 5595//10980 5577//10980 +f 5589//10981 5591//10981 5569//10981 +f 5593//10982 5596//10982 5594//10982 +f 5597//10983 5137//10983 5145//10983 +f 5597//10984 5145//10984 5598//10984 +f 5599//10985 5586//10985 5588//10985 +f 5600//10986 5601//10986 5592//10986 +f 5599//10987 5593//10987 5586//10987 +f 5600//10988 5589//10988 5571//10988 +f 5599//10989 5596//10989 5593//10989 +f 5599//10990 5602//10990 5596//10990 +f 5600//10991 5592//10991 5589//10991 +f 5603//10992 5135//10992 5604//10992 +f 5603//10993 5604//10993 5605//10993 +f 5606//10994 5137//10994 5597//10994 +f 5607//10995 5135//10995 5603//10995 +f 5608//10996 5609//10996 5137//10996 +f 5610//10997 5611//10997 5602//10997 +f 5608//10998 5137//10998 5606//10998 +f 5610//10999 5599//10999 5588//10999 +f 5612//11000 5571//11000 5572//11000 +f 5610//11001 5602//11001 5599//11001 +f 5612//11002 5598//11002 5601//11002 +f 5612//11003 5601//11003 5600//11003 +f 5613//11004 5588//11004 5551//11004 +f 5612//11005 5600//11005 5571//11005 +f 5613//11006 5605//11006 5611//11006 +f 5613//11007 5611//11007 5610//11007 +f 5613//11008 5610//11008 5588//11008 +f 5614//11009 5597//11009 5598//11009 +f 5614//11010 5598//11010 5612//11010 +f 5614//11011 5612//11011 5572//11011 +f 5615//11012 5133//11012 5135//11012 +f 5615//11013 5135//11013 5607//11013 +f 5616//11014 5609//11014 5608//11014 +f 5617//11015 5133//11015 5615//11015 +f 5618//11016 5619//11016 5609//11016 +f 5618//11017 5609//11017 5616//11017 +f 5620//11018 5605//11018 5613//11018 +f 5620//11019 5613//11019 5551//11019 +f 5620//11020 5603//11020 5605//11020 +f 5621//11021 5572//11021 5573//11021 +f 5621//11022 5606//11022 5597//11022 +f 5622//11023 5551//11023 5560//11023 +f 5621//11024 5597//11024 5614//11024 +f 5622//11025 5607//11025 5603//11025 +f 5621//11026 5614//11026 5572//11026 +f 5622//11027 5603//11027 5620//11027 +f 5622//11028 5620//11028 5551//11028 +f 5623//11029 5608//11029 5606//11029 +f 5623//11030 5606//11030 5621//11030 +f 5624//11031 5134//11031 5133//11031 +f 5623//11032 5621//11032 5573//11032 +f 5624//11033 5133//11033 5617//11033 +f 5625//11034 5619//11034 5618//11034 +f 5626//11035 5622//11035 5560//11035 +f 5627//11036 5594//11036 5628//11036 +f 5626//11037 5615//11037 5607//11037 +f 5626//11038 5607//11038 5622//11038 +f 5627//11039 5628//11039 5619//11039 +f 5627//11040 5619//11040 5625//11040 +f 5629//11041 5573//11041 5574//11041 +f 5629//11042 5608//11042 5623//11042 +f 5629//11043 5616//11043 5608//11043 +f 5630//11044 5134//11044 5624//11044 +f 5629//11045 5623//11045 5573//11045 +f 5631//11046 5615//11046 5626//11046 +f 5631//11047 5560//11047 5559//11047 +f 5631//11048 5617//11048 5615//11048 +f 5632//11049 5618//11049 5616//11049 +f 5632//11050 5616//11050 5629//11050 +f 5631//11051 5626//11051 5560//11051 +f 5632//11052 5629//11052 5574//11052 +f 5633//11053 5134//11053 5630//11053 +f 5634//11054 5574//11054 5575//11054 +f 5634//11055 5625//11055 5618//11055 +f 5633//11056 5141//11056 5134//11056 +f 5634//11057 5618//11057 5632//11057 +f 5635//11058 5624//11058 5617//11058 +f 5634//11059 5632//11059 5574//11059 +f 5636//11060 5575//11060 5577//11060 +f 5635//11061 5617//11061 5631//11061 +f 5636//11062 5595//11062 5594//11062 +f 5636//11063 5577//11063 5595//11063 +f 5636//11064 5594//11064 5627//11064 +f 5635//11065 5631//11065 5559//11065 +f 5636//11066 5627//11066 5625//11066 +f 5636//11067 5625//11067 5634//11067 +f 5636//11068 5634//11068 5575//11068 +f 5637//11069 5141//11069 5633//11069 +f 5638//11070 5559//11070 5567//11070 +f 5638//11071 5635//11071 5559//11071 +f 5638//11072 5624//11072 5635//11072 +f 5638//11073 5630//11073 5624//11073 +f 5590//11074 5143//11074 5141//11074 +f 5590//11075 5141//11075 5637//11075 +f 5639//11076 5638//11076 5567//11076 +f 5639//11077 5630//11077 5638//11077 +f 5639//11078 5633//11078 5630//11078 +f 5592//11079 5143//11079 5590//11079 +f 5640//11080 5567//11080 5569//11080 +f 5640//11081 5639//11081 5567//11081 +f 5640//11082 5633//11082 5639//11082 +f 5640//11083 5637//11083 5633//11083 +f 5596//11084 5641//11084 5628//11084 +f 5596//11085 5628//11085 5594//11085 +f 5601//11086 5145//11086 5143//11086 +f 5601//11087 5143//11087 5592//11087 +f 5591//11088 5590//11088 5637//11088 +f 5591//11089 5640//11089 5569//11089 +f 5602//11090 5641//11090 5596//11090 +f 5591//11091 5637//11091 5640//11091 +f 5611//11092 5604//11092 5641//11092 +f 5611//11093 5641//11093 5602//11093 +f 5598//11094 5145//11094 5601//11094 +f 5605//11095 5604//11095 5611//11095 +f 5589//11096 5569//11096 5571//11096 +f 5642//11097 5643//11097 5644//11097 +f 5642//11098 5645//11098 5643//11098 +f 5646//11099 5647//11099 5645//11099 +f 5646//11100 5645//11100 5642//11100 +f 5648//11101 5137//11101 5609//11101 +f 5648//11102 5649//11102 5137//11102 +f 5650//11103 5135//11103 5148//11103 +f 5650//11104 5148//11104 5651//11104 +f 5650//11105 5651//11105 5647//11105 +f 5650//11106 5647//11106 5646//11106 +f 5652//11107 5609//11107 5619//11107 +f 5652//11108 5649//11108 5648//11108 +f 5652//11109 5648//11109 5609//11109 +f 5652//11110 5644//11110 5649//11110 +f 5653//11111 5619//11111 5628//11111 +f 5653//11112 5628//11112 5641//11112 +f 5653//11113 5644//11113 5652//11113 +f 5653//11114 5642//11114 5644//11114 +f 5653//11115 5652//11115 5619//11115 +f 5654//11116 5641//11116 5604//11116 +f 5654//11117 5646//11117 5642//11117 +f 5654//11118 5653//11118 5641//11118 +f 5654//11119 5642//11119 5653//11119 +f 5655//11120 5604//11120 5135//11120 +f 5655//11121 5135//11121 5650//11121 +f 5655//11122 5650//11122 5646//11122 +f 5655//11123 5654//11123 5604//11123 +f 5655//11124 5646//11124 5654//11124 +f 5656//11125 5657//11125 5658//11125 +f 5656//11126 5658//11126 5156//11126 +f 5659//11127 5660//11127 5657//11127 +f 5659//11128 5657//11128 5656//11128 +f 5661//11129 5660//11129 5659//11129 +f 5662//11130 5663//11130 5660//11130 +f 5662//11131 5660//11131 5661//11131 +f 5664//11132 5656//11132 5156//11132 +f 5665//11133 5148//11133 5666//11133 +f 5665//11134 5666//11134 5663//11134 +f 5665//11135 5663//11135 5662//11135 +f 5643//11136 5659//11136 5656//11136 +f 5643//11137 5656//11137 5664//11137 +f 5645//11138 5661//11138 5659//11138 +f 5645//11139 5659//11139 5643//11139 +f 5647//11140 5661//11140 5645//11140 +f 5647//11141 5662//11141 5661//11141 +f 5649//11142 5156//11142 5137//11142 +f 5649//11143 5664//11143 5156//11143 +f 5651//11144 5148//11144 5665//11144 +f 5651//11145 5665//11145 5662//11145 +f 5651//11146 5662//11146 5647//11146 +f 5644//11147 5643//11147 5664//11147 +f 5644//11148 5664//11148 5649//11148 +f 5667//11149 5383//11149 5668//11149 +f 5669//11150 5666//11150 5148//11150 +f 5669//11151 5668//11151 5670//11151 +f 5669//11152 5670//11152 5671//11152 +f 5669//11153 5671//11153 5666//11153 +f 5672//11154 5253//11154 5252//11154 +f 5672//11155 5252//11155 5667//11155 +f 5673//11156 5148//11156 5147//11156 +f 5673//11157 5667//11157 5668//11157 +f 5673//11158 5668//11158 5669//11158 +f 5673//11159 5669//11159 5148//11159 +f 5674//11160 5257//11160 5253//11160 +f 5674//11161 5253//11161 5672//11161 +f 5675//11162 5147//11162 5150//11162 +f 5675//11163 5667//11163 5673//11163 +f 5675//11164 5672//11164 5667//11164 +f 5675//11165 5673//11165 5147//11165 +f 5676//11166 5248//11166 5257//11166 +f 5676//11167 5257//11167 5674//11167 +f 5677//11168 5150//11168 5152//11168 +f 5677//11169 5672//11169 5675//11169 +f 5677//11170 5675//11170 5150//11170 +f 5677//11171 5674//11171 5672//11171 +f 5678//11172 5246//11172 5248//11172 +f 5678//11173 5248//11173 5676//11173 +f 5679//11174 5152//11174 5154//11174 +f 5679//11175 5677//11175 5152//11175 +f 5679//11176 5674//11176 5677//11176 +f 5679//11177 5676//11177 5674//11177 +f 5680//11178 5267//11178 5246//11178 +f 5680//11179 5246//11179 5678//11179 +f 5681//11180 5154//11180 5157//11180 +f 5681//11181 5678//11181 5676//11181 +f 5681//11182 5679//11182 5154//11182 +f 5681//11183 5676//11183 5679//11183 +f 5682//11184 5373//11184 5269//11184 +f 5682//11185 5269//11185 5267//11185 +f 5682//11186 5267//11186 5680//11186 +f 5683//11187 5681//11187 5157//11187 +f 5683//11188 5680//11188 5678//11188 +f 5683//11189 5678//11189 5681//11189 +f 5684//11190 5376//11190 5373//11190 +f 5684//11191 5373//11191 5682//11191 +f 5685//11192 5682//11192 5680//11192 +f 5685//11193 5683//11193 5157//11193 +f 5685//11194 5157//11194 5156//11194 +f 5685//11195 5680//11195 5683//11195 +f 5686//11196 5376//11196 5684//11196 +f 5686//11197 5687//11197 5376//11197 +f 5688//11198 5156//11198 5658//11198 +f 5688//11199 5684//11199 5682//11199 +f 5688//11200 5685//11200 5156//11200 +f 5688//11201 5682//11201 5685//11201 +f 5689//11202 5658//11202 5657//11202 +f 5689//11203 5690//11203 5687//11203 +f 5689//11204 5684//11204 5688//11204 +f 5689//11205 5686//11205 5684//11205 +f 5689//11206 5688//11206 5658//11206 +f 5689//11207 5687//11207 5686//11207 +f 5689//11208 5657//11208 5690//11208 +f 5687//11209 5371//11209 5376//11209 +f 5660//11210 5690//11210 5657//11210 +f 5670//11211 5370//11211 5371//11211 +f 5670//11212 5371//11212 5687//11212 +f 5668//11213 5383//11213 5370//11213 +f 5668//11214 5370//11214 5670//11214 +f 5671//11215 5687//11215 5690//11215 +f 5671//11216 5690//11216 5660//11216 +f 5671//11217 5663//11217 5666//11217 +f 5671//11218 5660//11218 5663//11218 +f 5671//11219 5670//11219 5687//11219 +f 5667//11220 5252//11220 5383//11220 +f 5691//11221 5692//11221 5693//11221 +f 5694//11222 5695//11222 5696//11222 +f 5691//11223 5697//11223 5329//11223 +f 5691//11224 5693//11224 5697//11224 +f 5698//11225 4797//11225 4806//11225 +f 5699//11226 5104//11226 5700//11226 +f 5699//11227 5700//11227 5701//11227 +f 5698//11228 5702//11228 4797//11228 +f 5699//11229 5701//11229 5703//11229 +f 5704//11230 5321//11230 5104//11230 +f 5704//11231 5104//11231 5699//11231 +f 5705//11232 5694//11232 5706//11232 +f 5704//11233 5703//11233 5691//11233 +f 5704//11234 5691//11234 5321//11234 +f 5705//11235 5706//11235 5707//11235 +f 5704//11236 5699//11236 5703//11236 +f 5708//11237 5707//11237 5702//11237 +f 5708//11238 5702//11238 5698//11238 +f 5709//11239 4806//11239 4785//11239 +f 5709//11240 5698//11240 4806//11240 +f 5709//11241 5708//11241 5698//11241 +f 5710//11242 5711//11242 5712//11242 +f 5710//11243 5712//11243 5695//11243 +f 5713//11244 5705//11244 5707//11244 +f 5713//11245 5707//11245 5708//11245 +f 5714//11246 5715//11246 5711//11246 +f 5716//11247 5695//11247 5694//11247 +f 5716//11248 5710//11248 5695//11248 +f 5717//11249 5713//11249 5708//11249 +f 5717//11250 5708//11250 5709//11250 +f 5718//11251 5716//11251 5694//11251 +f 5718//11252 5694//11252 5705//11252 +f 5719//11253 5717//11253 5709//11253 +f 5719//11254 5709//11254 4785//11254 +f 5720//11255 5721//11255 5715//11255 +f 5720//11256 5715//11256 5714//11256 +f 5722//11257 5718//11257 5705//11257 +f 5722//11258 5705//11258 5713//11258 +f 5723//11259 5714//11259 5711//11259 +f 5723//11260 5711//11260 5710//11260 +f 5724//11261 5725//11261 5078//11261 +f 5726//11262 5713//11262 5717//11262 +f 5726//11263 5722//11263 5713//11263 +f 5727//11264 5725//11264 5724//11264 +f 5728//11265 5078//11265 4798//11265 +f 5728//11266 4798//11266 4796//11266 +f 5729//11267 5723//11267 5710//11267 +f 5728//11268 5724//11268 5078//11268 +f 5729//11269 5710//11269 5716//11269 +f 5730//11270 5731//11270 5725//11270 +f 5730//11271 5725//11271 5727//11271 +f 5732//11272 5714//11272 5723//11272 +f 5733//11273 5724//11273 5728//11273 +f 5701//11274 5721//11274 5720//11274 +f 5734//11275 4796//11275 4797//11275 +f 5734//11276 5728//11276 4796//11276 +f 5734//11277 5733//11277 5728//11277 +f 5735//11278 5723//11278 5729//11278 +f 5735//11279 5732//11279 5723//11279 +f 5736//11280 5727//11280 5724//11280 +f 5737//11281 5729//11281 5716//11281 +f 5736//11282 5724//11282 5733//11282 +f 5737//11283 5716//11283 5718//11283 +f 5738//11284 4785//11284 4805//11284 +f 5738//11285 5726//11285 5717//11285 +f 5738//11286 5719//11286 4785//11286 +f 5738//11287 4805//11287 5326//11287 +f 5739//11288 5731//11288 5730//11288 +f 5738//11289 5717//11289 5719//11289 +f 5740//11290 5734//11290 4797//11290 +f 5740//11291 5733//11291 5734//11291 +f 5741//11292 5735//11292 5729//11292 +f 5740//11293 5736//11293 5733//11293 +f 5741//11294 5729//11294 5737//11294 +f 5712//11295 5711//11295 5731//11295 +f 5700//11296 5104//11296 5099//11296 +f 5712//11297 5731//11297 5739//11297 +f 5700//11298 5099//11298 5721//11298 +f 5700//11299 5721//11299 5701//11299 +f 5692//11300 5720//11300 5714//11300 +f 5742//11301 5730//11301 5727//11301 +f 5692//11302 5714//11302 5732//11302 +f 5742//11303 5727//11303 5736//11303 +f 5743//11304 5737//11304 5718//11304 +f 5743//11305 5718//11305 5722//11305 +f 5744//11306 5736//11306 5740//11306 +f 5744//11307 5742//11307 5736//11307 +f 5693//11308 5692//11308 5732//11308 +f 5702//11309 5744//11309 5740//11309 +f 5693//11310 5732//11310 5735//11310 +f 5702//11311 5740//11311 4797//11311 +f 5696//11312 5730//11312 5742//11312 +f 5696//11313 5739//11313 5730//11313 +f 5745//11314 5722//11314 5726//11314 +f 5745//11315 5726//11315 5738//11315 +f 5745//11316 5738//11316 5326//11316 +f 5745//11317 5743//11317 5722//11317 +f 5746//11318 5737//11318 5743//11318 +f 5746//11319 5741//11319 5737//11319 +f 5706//11320 5696//11320 5742//11320 +f 5697//11321 5746//11321 5329//11321 +f 5706//11322 5742//11322 5744//11322 +f 5697//11323 5735//11323 5741//11323 +f 5697//11324 5693//11324 5735//11324 +f 5697//11325 5741//11325 5746//11325 +f 5747//11326 5329//11326 5746//11326 +f 5747//11327 5326//11327 5329//11327 +f 5747//11328 5743//11328 5745//11328 +f 5695//11329 5712//11329 5739//11329 +f 5747//11330 5745//11330 5326//11330 +f 5695//11331 5739//11331 5696//11331 +f 5747//11332 5746//11332 5743//11332 +f 5703//11333 5701//11333 5720//11333 +f 5707//11334 5744//11334 5702//11334 +f 5707//11335 5706//11335 5744//11335 +f 5703//11336 5720//11336 5692//11336 +f 5694//11337 5696//11337 5706//11337 +f 5691//11338 5329//11338 5321//11338 +f 5691//11339 5703//11339 5692//11339 +f 5089//11340 5098//11340 5107//11340 +f 5088//11341 5098//11341 5089//11341 +f 5078//11342 5099//11342 5088//11342 +f 5088//11343 5099//11343 5098//11343 +f 5725//11344 5721//11344 5078//11344 +f 5078//11345 5721//11345 5099//11345 +f 5731//11346 5715//11346 5725//11346 +f 5711//11347 5715//11347 5731//11347 +f 5725//11348 5715//11348 5721//11348 +f 5219//11349 5217//11349 5427//11349 +f 5202//11350 5427//11350 5418//11350 +f 5202//11351 5219//11351 5427//11351 +f 5203//11352 5418//11352 5394//11352 +f 5203//11353 5202//11353 5418//11353 +f 5231//11354 5394//11354 5393//11354 +f 5231//11355 5203//11355 5394//11355 +f 5240//11356 5393//11356 5411//11356 +f 5240//11357 5411//11357 5245//11357 +f 5240//11358 5231//11358 5393//11358 +f 5057//11359 5748//11359 5058//11359 +f 5058//11360 5748//11360 5749//11360 +f 5749//11361 5750//11361 5751//11361 +f 5748//11362 5750//11362 5749//11362 +f 4829//11363 5752//11363 5753//11363 +f 5751//11364 5754//11364 5753//11364 +f 5750//11365 5754//11365 5751//11365 +f 5753//11366 5754//11366 4829//11366 +f 5754//11367 4971//11367 4829//11367 +f 5752//11368 5755//11368 5753//11368 +f 4829//11369 4968//11369 4830//11369 +f 4971//11370 4968//11370 4829//11370 +f 5752//11371 5756//11371 5755//11371 +f 5754//11372 5757//11372 4971//11372 +f 4968//11373 4967//11373 4830//11373 +f 5757//11374 5758//11374 5759//11374 +f 5754//11375 5758//11375 5757//11375 +f 5760//11376 5041//11376 5755//11376 +f 5758//11377 5761//11377 5762//11377 +f 4934//11378 4886//11378 4863//11378 +f 5761//11379 5046//11379 5059//11379 +f 5758//11380 5046//11380 5761//11380 +f 5760//11381 5039//11381 5041//11381 +f 5756//11382 5760//11382 5755//11382 +f 4863//11383 4870//11383 4953//11383 +f 4934//11384 4933//11384 4886//11384 +f 4953//11385 4934//11385 4863//11385 +f 4967//11386 4953//11386 4870//11386 +f 4967//11387 4870//11387 4830//11387 +f 5762//11388 5759//11388 5758//11388 +f 5763//11389 4981//11389 5764//11389 +f 5010//11390 5009//11390 4982//11390 +f 5010//11391 4982//11391 4981//11391 +f 5765//11392 5000//11392 5766//11392 +f 5006//11393 4981//11393 5763//11393 +f 5006//11394 5767//11394 5768//11394 +f 5006//11395 5010//11395 4981//11395 +f 5769//11396 5765//11396 5766//11396 +f 5770//11397 5006//11397 5763//11397 +f 5026//11398 5000//11398 4999//11398 +f 5770//11399 5767//11399 5006//11399 +f 5029//11400 5770//11400 5763//11400 +f 5026//11401 5766//11401 5000//11401 +f 5028//11402 5770//11402 5029//11402 +f 5771//11403 5766//11403 5026//11403 +f 5019//11404 5023//11404 4996//11404 +f 5017//11405 5019//11405 4993//11405 +f 5003//11406 5017//11406 4976//11406 +f 5012//11407 5003//11407 4989//11407 +f 5009//11408 5012//11408 4985//11408 +f 5772//11409 5771//11409 5026//11409 +f 5773//11410 5768//11410 5767//11410 +f 5774//11411 5773//11411 5767//11411 +f 5775//11412 5776//11412 5777//11412 +f 4985//11413 4982//11413 5009//11413 +f 4989//11414 4985//11414 5012//11414 +f 5778//11415 5769//11415 5766//11415 +f 4976//11416 4989//11416 5003//11416 +f 4993//11417 4976//11417 5017//11417 +f 4996//11418 4993//11418 5019//11418 +f 5779//11419 5769//11419 5778//11419 +f 5780//11420 5779//11420 5778//11420 +f 5781//11421 5782//11421 5764//11421 +f 5023//11422 4999//11422 4996//11422 +f 5023//11423 5026//11423 4999//11423 +f 5783//11424 5771//11424 5772//11424 +f 5777//11425 5783//11425 5775//11425 +f 5777//11426 5771//11426 5783//11426 +f 5764//11427 5780//11427 5778//11427 +f 5782//11428 5780//11428 5764//11428 +f 5774//11429 5777//11429 5776//11429 +f 5784//11430 5781//11430 5764//11430 +f 4981//11431 5784//11431 5764//11431 +f 5767//11432 5777//11432 5774//11432 +f 5785//11433 5786//11433 5787//11433 +f 5788//11434 5787//11434 5789//11434 +f 5788//11435 5785//11435 5787//11435 +f 5790//11436 5789//11436 5791//11436 +f 5790//11437 5788//11437 5789//11437 +f 5792//11438 5790//11438 5791//11438 +f 5785//11439 5341//11439 5343//11439 +f 5785//11440 5343//11440 5786//11440 +f 5350//11441 5793//11441 5794//11441 +f 5350//11442 5794//11442 5348//11442 +f 5795//11443 5796//11443 5797//11443 +f 5794//11444 5796//11444 5795//11444 +f 5793//11445 5796//11445 5794//11445 +f 5797//11446 5798//11446 5799//11446 +f 5796//11447 5798//11447 5797//11447 +f 5798//11448 5800//11448 5799//11448 +f 5800//11449 5037//11449 5038//11449 +f 5800//11450 5038//11450 5799//11450 +f 5771//11451 5792//11451 5791//11451 +f 5771//11452 5791//11452 5766//11452 +f 4815//11453 5336//11453 5338//11453 +f 4813//11454 5336//11454 4815//11454 +f 4810//11455 5334//11455 4813//11455 +f 4780//11456 5334//11456 4810//11456 +f 4813//11457 5334//11457 5336//11457 +f 5344//11458 5349//11458 5340//11458 +f 5344//11459 5352//11459 5349//11459 +f 5766//11460 5755//11460 5778//11460 +f 5340//11461 5348//11461 5343//11461 +f 5349//11462 5348//11462 5340//11462 +f 5038//11463 5753//11463 5766//11463 +f 5766//11464 5753//11464 5755//11464 +f 5346//11465 5354//11465 5344//11465 +f 5755//11466 5041//11466 5778//11466 +f 5344//11467 5354//11467 5352//11467 +f 5041//11468 5764//11468 5778//11468 +f 5343//11469 5794//11469 5786//11469 +f 5348//11470 5794//11470 5343//11470 +f 5038//11471 5751//11471 5753//11471 +f 5786//11472 5795//11472 5787//11472 +f 5794//11473 5795//11473 5786//11473 +f 5038//11474 5036//11474 5751//11474 +f 5041//11475 5042//11475 5764//11475 +f 5797//11476 5789//11476 5795//11476 +f 5795//11477 5789//11477 5787//11477 +f 5036//11478 5749//11478 5751//11478 +f 5042//11479 5763//11479 5764//11479 +f 5799//11480 5791//11480 5797//11480 +f 5797//11481 5791//11481 5789//11481 +f 5042//11482 5049//11482 5763//11482 +f 5036//11483 5034//11483 5749//11483 +f 5034//11484 5058//11484 5749//11484 +f 5306//11485 4792//11485 5297//11485 +f 5306//11486 4801//11486 4792//11486 +f 4773//11487 4801//11487 5306//11487 +f 5054//11488 5029//11488 5049//11488 +f 5049//11489 5029//11489 5763//11489 +f 5058//11490 5032//11490 5056//11490 +f 5034//11491 5032//11491 5058//11491 +f 5297//11492 4787//11492 5298//11492 +f 4792//11493 4787//11493 5297//11493 +f 5056//11494 5030//11494 5054//11494 +f 4773//11495 4803//11495 4801//11495 +f 5032//11496 5030//11496 5056//11496 +f 5054//11497 5030//11497 5029//11497 +f 5766//11498 5791//11498 5799//11498 +f 4773//11499 4776//11499 4803//11499 +f 5346//11500 5305//11500 5354//11500 +f 5338//11501 5354//11501 5305//11501 +f 5799//11502 5038//11502 5766//11502 +f 4787//11503 5325//11503 5298//11503 +f 4776//11504 5330//11504 4803//11504 +f 5325//11505 5305//11505 5298//11505 +f 4776//11506 5332//11506 5330//11506 +f 5325//11507 5324//11507 5305//11507 +f 4776//11508 4778//11508 5332//11508 +f 4778//11509 4809//11509 5332//11509 +f 5324//11510 5338//11510 5305//11510 +f 4815//11511 5338//11511 5324//11511 +f 4778//11512 4780//11512 4809//11512 +f 4809//11513 4780//11513 4810//11513 +f 4779//11514 4777//11514 4811//11514 +f 4779//11515 4811//11515 4812//11515 +f 5337//11516 4816//11516 5339//11516 +f 5337//11517 4814//11517 4816//11517 +f 5335//11518 4779//11518 4812//11518 +f 5335//11519 4814//11519 5337//11519 +f 5335//11520 4812//11520 4814//11520 +f 5353//11521 5345//11521 5342//11521 +f 5353//11522 5342//11522 5351//11522 +f 5355//11523 5347//11523 5345//11523 +f 5355//11524 5345//11524 5353//11524 +f 5758//11525 5771//11525 5777//11525 +f 5350//11526 5342//11526 5341//11526 +f 5754//11527 5771//11527 5758//11527 +f 5754//11528 5037//11528 5771//11528 +f 5350//11529 5351//11529 5342//11529 +f 5046//11530 5758//11530 5777//11530 +f 5793//11531 5341//11531 5785//11531 +f 5767//11532 5046//11532 5777//11532 +f 5793//11533 5350//11533 5341//11533 +f 5750//11534 5037//11534 5754//11534 +f 5796//11535 5785//11535 5788//11535 +f 5796//11536 5793//11536 5785//11536 +f 5035//11537 5037//11537 5750//11537 +f 5047//11538 5046//11538 5767//11538 +f 5790//11539 5798//11539 5796//11539 +f 5790//11540 5796//11540 5788//11540 +f 5748//11541 5035//11541 5750//11541 +f 5792//11542 5800//11542 5798//11542 +f 5770//11543 5047//11543 5767//11543 +f 5792//11544 5798//11544 5790//11544 +f 5052//11545 5047//11545 5770//11545 +f 5033//11546 5035//11546 5748//11546 +f 5057//11547 5033//11547 5748//11547 +f 4782//11548 5303//11548 5304//11548 +f 4791//11549 5303//11549 4782//11549 +f 4791//11550 4774//11550 5303//11550 +f 5028//11551 5053//11551 5052//11551 +f 5028//11552 5052//11552 5770//11552 +f 4783//11553 5304//11553 5316//11553 +f 5031//11554 5057//11554 5055//11554 +f 4783//11555 4782//11555 5304//11555 +f 4799//11556 4774//11556 4791//11556 +f 5031//11557 5033//11557 5057//11557 +f 5027//11558 5055//11558 5053//11558 +f 4775//11559 4774//11559 4799//11559 +f 5027//11560 5053//11560 5028//11560 +f 5027//11561 5031//11561 5055//11561 +f 5792//11562 5771//11562 5800//11562 +f 5323//11563 4783//11563 5316//11563 +f 5037//11564 5800//11564 5771//11564 +f 5355//11565 5339//11565 5302//11565 +f 5302//11566 5347//11566 5355//11566 +f 5331//11567 4775//11567 4799//11567 +f 5302//11568 5323//11568 5316//11568 +f 5333//11569 4775//11569 5331//11569 +f 5319//11570 5323//11570 5302//11570 +f 4777//11571 4775//11571 5333//11571 +f 4811//11572 4777//11572 5333//11572 +f 5339//11573 5319//11573 5302//11573 +f 5339//11574 4816//11574 5319//11574 +f 5801//11575 5776//11575 5802//11575 +f 5803//11576 5783//11576 5772//11576 +f 5803//11577 5772//11577 5026//11577 +f 5803//11578 5026//11578 5025//11578 +f 5803//11579 5025//11579 5804//11579 +f 5805//11580 5775//11580 5783//11580 +f 5805//11581 5804//11581 5802//11581 +f 5805//11582 5783//11582 5803//11582 +f 5805//11583 5803//11583 5804//11583 +f 5806//11584 5805//11584 5802//11584 +f 5806//11585 5775//11585 5805//11585 +f 5807//11586 5776//11586 5775//11586 +f 5807//11587 5775//11587 5806//11587 +f 5807//11588 5806//11588 5802//11588 +f 5807//11589 5802//11589 5776//11589 +f 5808//11590 5774//11590 5776//11590 +f 5808//11591 5801//11591 5809//11591 +f 5808//11592 5776//11592 5801//11592 +f 5810//11593 5773//11593 5774//11593 +f 5810//11594 5774//11594 5808//11594 +f 5810//11595 5808//11595 5809//11595 +f 5811//11596 5809//11596 5812//11596 +f 5811//11597 5810//11597 5809//11597 +f 5811//11598 5773//11598 5810//11598 +f 5813//11599 5768//11599 5773//11599 +f 5813//11600 5811//11600 5812//11600 +f 5813//11601 5773//11601 5811//11601 +f 5814//11602 5007//11602 5006//11602 +f 5814//11603 5006//11603 5768//11603 +f 5814//11604 5812//11604 5007//11604 +f 5814//11605 5768//11605 5813//11605 +f 5814//11606 5813//11606 5812//11606 +f 5780//11607 5815//11607 5816//11607 +f 5817//11608 5818//11608 5001//11608 +f 5817//11609 5001//11609 5000//11609 +f 5817//11610 5000//11610 5765//11610 +f 5819//11611 5765//11611 5769//11611 +f 5819//11612 5817//11612 5765//11612 +f 5819//11613 5818//11613 5817//11613 +f 5820//11614 5821//11614 5818//11614 +f 5820//11615 5819//11615 5769//11615 +f 5820//11616 5818//11616 5819//11616 +f 5822//11617 5769//11617 5779//11617 +f 5822//11618 5821//11618 5820//11618 +f 5822//11619 5820//11619 5769//11619 +f 5823//11620 5816//11620 5821//11620 +f 5823//11621 5821//11621 5822//11621 +f 5823//11622 5822//11622 5779//11622 +f 5824//11623 5779//11623 5780//11623 +f 5824//11624 5823//11624 5779//11624 +f 5824//11625 5780//11625 5816//11625 +f 5824//11626 5816//11626 5823//11626 +f 5825//11627 5780//11627 5782//11627 +f 5825//11628 5815//11628 5780//11628 +f 5826//11629 5815//11629 5825//11629 +f 5826//11630 5825//11630 5782//11630 +f 5827//11631 5828//11631 5815//11631 +f 5827//11632 5782//11632 5781//11632 +f 5827//11633 5815//11633 5826//11633 +f 5827//11634 5826//11634 5782//11634 +f 5829//11635 4981//11635 4980//11635 +f 5829//11636 4980//11636 5828//11636 +f 5829//11637 5781//11637 5784//11637 +f 5829//11638 5784//11638 4981//11638 +f 5829//11639 5828//11639 5827//11639 +f 5829//11640 5827//11640 5781//11640 +f 5830//11641 5762//11641 5761//11641 +f 5830//11642 5831//11642 5762//11642 +f 5830//11643 5832//11643 5831//11643 +f 5833//11644 5834//11644 5835//11644 +f 5833//11645 5835//11645 5836//11645 +f 5837//11646 5836//11646 5838//11646 +f 5837//11647 5833//11647 5836//11647 +f 5839//11648 5837//11648 5838//11648 +f 5839//11649 5838//11649 5840//11649 +f 5841//11650 5840//11650 5832//11650 +f 5841//11651 5839//11651 5840//11651 +f 5842//11652 5841//11652 5832//11652 +f 5842//11653 5761//11653 5059//11653 +f 5842//11654 5059//11654 5048//11654 +f 5842//11655 5830//11655 5761//11655 +f 5842//11656 5832//11656 5830//11656 +f 5843//11657 5844//11657 5845//11657 +f 5843//11658 5845//11658 5834//11658 +f 5846//11659 5843//11659 5834//11659 +f 5846//11660 5834//11660 5833//11660 +f 5847//11661 5844//11661 5843//11661 +f 5848//11662 5843//11662 5846//11662 +f 5848//11663 5847//11663 5843//11663 +f 5849//11664 5846//11664 5833//11664 +f 5849//11665 5833//11665 5837//11665 +f 5850//11666 5848//11666 5846//11666 +f 5850//11667 5846//11667 5849//11667 +f 5851//11668 5849//11668 5837//11668 +f 5851//11669 5837//11669 5839//11669 +f 5852//11670 5849//11670 5851//11670 +f 5852//11671 5850//11671 5849//11671 +f 5853//11672 5854//11672 4973//11672 +f 5853//11673 4973//11673 4971//11673 +f 5855//11674 5841//11674 5842//11674 +f 5853//11675 4971//11675 5757//11675 +f 5855//11676 5839//11676 5841//11676 +f 5855//11677 5842//11677 5048//11677 +f 5855//11678 5851//11678 5839//11678 +f 5856//11679 5048//11679 5051//11679 +f 5857//11680 5853//11680 5757//11680 +f 5856//11681 5852//11681 5851//11681 +f 5856//11682 5051//11682 5852//11682 +f 5857//11683 5854//11683 5853//11683 +f 5856//11684 5855//11684 5048//11684 +f 5856//11685 5851//11685 5855//11685 +f 5858//11686 5859//11686 5844//11686 +f 5860//11687 5854//11687 5857//11687 +f 5861//11688 5757//11688 5759//11688 +f 5858//11689 5844//11689 5847//11689 +f 5861//11690 5857//11690 5757//11690 +f 5862//11691 5847//11691 5848//11691 +f 5863//11692 5860//11692 5857//11692 +f 5863//11693 5861//11693 5759//11693 +f 5863//11694 5857//11694 5861//11694 +f 5862//11695 5858//11695 5847//11695 +f 5864//11696 5865//11696 5854//11696 +f 5866//11697 5848//11697 5850//11697 +f 5866//11698 5852//11698 5051//11698 +f 5866//11699 5850//11699 5852//11699 +f 5864//11700 5854//11700 5860//11700 +f 5866//11701 5862//11701 5848//11701 +f 5867//11702 5859//11702 5858//11702 +f 5868//11703 5864//11703 5860//11703 +f 5869//11704 5051//11704 5050//11704 +f 5868//11705 5860//11705 5863//11705 +f 5869//11706 5867//11706 5858//11706 +f 5869//11707 5866//11707 5051//11707 +f 5869//11708 5858//11708 5862//11708 +f 5870//11709 5868//11709 5863//11709 +f 5869//11710 5862//11710 5866//11710 +f 5870//11711 5863//11711 5759//11711 +f 5871//11712 4942//11712 4941//11712 +f 5871//11713 4941//11713 5859//11713 +f 5871//11714 5050//11714 4942//11714 +f 5871//11715 5859//11715 5867//11715 +f 5872//11716 5865//11716 5864//11716 +f 5871//11717 5869//11717 5050//11717 +f 5871//11718 5867//11718 5869//11718 +f 5873//11719 5864//11719 5868//11719 +f 5873//11720 5872//11720 5864//11720 +f 5874//11721 5759//11721 5762//11721 +f 5874//11722 5870//11722 5759//11722 +f 5875//11723 5868//11723 5870//11723 +f 5875//11724 5873//11724 5868//11724 +f 5835//11725 5845//11725 5865//11725 +f 5835//11726 5865//11726 5872//11726 +f 5831//11727 5874//11727 5762//11727 +f 5831//11728 5870//11728 5874//11728 +f 5831//11729 5875//11729 5870//11729 +f 5836//11730 5872//11730 5873//11730 +f 5836//11731 5835//11731 5872//11731 +f 5838//11732 5873//11732 5875//11732 +f 5838//11733 5836//11733 5873//11733 +f 5840//11734 5875//11734 5831//11734 +f 5840//11735 5838//11735 5875//11735 +f 5832//11736 5840//11736 5831//11736 +f 5834//11737 5845//11737 5835//11737 +f 5876//11738 5016//11738 5877//11738 +f 5876//11739 5877//11739 5878//11739 +f 5879//11740 4914//11740 5880//11740 +f 5879//11741 5881//11741 4914//11741 +f 5882//11742 4907//11742 4910//11742 +f 5883//11743 5025//11743 5021//11743 +f 5883//11744 5884//11744 5881//11744 +f 5883//11745 5876//11745 5884//11745 +f 5883//11746 5021//11746 5876//11746 +f 5885//11747 5880//11747 5886//11747 +f 5885//11748 5879//11748 5880//11748 +f 5887//11749 5804//11749 5025//11749 +f 5887//11750 5025//11750 5883//11750 +f 5887//11751 5881//11751 5879//11751 +f 5887//11752 5883//11752 5881//11752 +f 5888//11753 5886//11753 5889//11753 +f 5888//11754 5885//11754 5886//11754 +f 5890//11755 5802//11755 5804//11755 +f 5890//11756 5879//11756 5885//11756 +f 5890//11757 5887//11757 5879//11757 +f 5890//11758 5804//11758 5887//11758 +f 5891//11759 5889//11759 5892//11759 +f 5891//11760 5888//11760 5889//11760 +f 5893//11761 5801//11761 5802//11761 +f 5893//11762 5885//11762 5888//11762 +f 5893//11763 5890//11763 5885//11763 +f 5893//11764 5802//11764 5890//11764 +f 5894//11765 5892//11765 5895//11765 +f 5894//11766 5891//11766 5892//11766 +f 5896//11767 5809//11767 5801//11767 +f 5896//11768 5801//11768 5893//11768 +f 5896//11769 5888//11769 5891//11769 +f 5896//11770 5893//11770 5888//11770 +f 5897//11771 5895//11771 4903//11771 +f 5897//11772 5894//11772 5895//11772 +f 5898//11773 5896//11773 5891//11773 +f 5898//11774 5812//11774 5809//11774 +f 5898//11775 5809//11775 5896//11775 +f 5898//11776 5891//11776 5894//11776 +f 5899//11777 4903//11777 4902//11777 +f 5899//11778 5897//11778 4903//11778 +f 5900//11779 5008//11779 5007//11779 +f 5900//11780 5894//11780 5897//11780 +f 5900//11781 5007//11781 5812//11781 +f 5900//11782 5812//11782 5898//11782 +f 5900//11783 5898//11783 5894//11783 +f 5901//11784 4902//11784 4905//11784 +f 5901//11785 4905//11785 5882//11785 +f 5901//11786 5899//11786 4902//11786 +f 5902//11787 5004//11787 5008//11787 +f 5902//11788 5897//11788 5899//11788 +f 5902//11789 5900//11789 5897//11789 +f 5902//11790 5008//11790 5900//11790 +f 5903//11791 5002//11791 5004//11791 +f 5903//11792 5902//11792 5899//11792 +f 5903//11793 5004//11793 5902//11793 +f 5903//11794 5901//11794 5882//11794 +f 5882//11795 4905//11795 4907//11795 +f 5903//11796 5882//11796 5904//11796 +f 5903//11797 5904//11797 5002//11797 +f 5903//11798 5899//11798 5901//11798 +f 5878//11799 4910//11799 4912//11799 +f 5878//11800 5882//11800 4910//11800 +f 5884//11801 4912//11801 4914//11801 +f 5884//11802 5878//11802 4912//11802 +f 5877//11803 5016//11803 5002//11803 +f 5877//11804 5904//11804 5882//11804 +f 5877//11805 5002//11805 5904//11805 +f 5877//11806 5882//11806 5878//11806 +f 5881//11807 5884//11807 4914//11807 +f 5876//11808 5021//11808 5016//11808 +f 5876//11809 5878//11809 5884//11809 +f 5905//11810 5880//11810 4914//11810 +f 5905//11811 4914//11811 4913//11811 +f 5906//11812 5886//11812 5880//11812 +f 5906//11813 5880//11813 5905//11813 +f 5907//11814 5892//11814 5889//11814 +f 5907//11815 5889//11815 5886//11815 +f 5907//11816 5886//11816 5906//11816 +f 5908//11817 5895//11817 5892//11817 +f 5908//11818 5892//11818 5907//11818 +f 5909//11819 4903//11819 5895//11819 +f 5909//11820 5895//11820 5908//11820 +f 4901//11821 4903//11821 5909//11821 +f 5910//11822 4909//11822 4908//11822 +f 5910//11823 5911//11823 5912//11823 +f 5913//11824 5914//11824 5915//11824 +f 5910//11825 4908//11825 5911//11825 +f 5910//11826 5912//11826 5916//11826 +f 5917//11827 5918//11827 5919//11827 +f 5920//11828 5910//11828 5916//11828 +f 5921//11829 5909//11829 5908//11829 +f 5920//11830 4909//11830 5910//11830 +f 5921//11831 5922//11831 5923//11831 +f 5920//11832 5916//11832 5924//11832 +f 5921//11833 5908//11833 5913//11833 +f 5921//11834 5913//11834 5922//11834 +f 5925//11835 5926//11835 5927//11835 +f 5928//11836 5919//11836 5929//11836 +f 5928//11837 5917//11837 5919//11837 +f 5930//11838 5927//11838 5931//11838 +f 5930//11839 5925//11839 5927//11839 +f 5932//11840 4911//11840 4909//11840 +f 5932//11841 5924//11841 5933//11841 +f 5934//11842 5928//11842 5929//11842 +f 5932//11843 4909//11843 5920//11843 +f 5935//11844 5909//11844 5921//11844 +f 5935//11845 5923//11845 5918//11845 +f 5932//11846 5920//11846 5924//11846 +f 5935//11847 5921//11847 5923//11847 +f 5936//11848 5932//11848 5933//11848 +f 5936//11849 5933//11849 5926//11849 +f 5936//11850 4911//11850 5932//11850 +f 5937//11851 4901//11851 5909//11851 +f 5937//11852 5935//11852 5918//11852 +f 5937//11853 5918//11853 5917//11853 +f 5937//11854 5909//11854 5935//11854 +f 5938//11855 5930//11855 5931//11855 +f 5939//11856 5929//11856 5940//11856 +f 5941//11857 5931//11857 5942//11857 +f 5939//11858 5934//11858 5929//11858 +f 5941//11859 5938//11859 5931//11859 +f 5943//11860 4913//11860 4911//11860 +f 5943//11861 4911//11861 5936//11861 +f 5944//11862 5939//11862 5940//11862 +f 5943//11863 5926//11863 5925//11863 +f 5943//11864 5936//11864 5926//11864 +f 5945//11865 5917//11865 5928//11865 +f 5945//11866 4901//11866 5937//11866 +f 5946//11867 4913//11867 5943//11867 +f 5945//11868 5937//11868 5917//11868 +f 5946//11869 5925//11869 5930//11869 +f 5946//11870 5943//11870 5925//11870 +f 5947//11871 4904//11871 4901//11871 +f 5947//11872 5928//11872 5934//11872 +f 5947//11873 5945//11873 5928//11873 +f 5947//11874 4901//11874 5945//11874 +f 5948//11875 5941//11875 5942//11875 +f 5949//11876 5940//11876 5950//11876 +f 5949//11877 5944//11877 5940//11877 +f 5951//11878 5905//11878 4913//11878 +f 5951//11879 5930//11879 5938//11879 +f 5951//11880 4913//11880 5946//11880 +f 5952//11881 5950//11881 5953//11881 +f 5952//11882 5953//11882 5912//11882 +f 5951//11883 5946//11883 5930//11883 +f 5954//11884 5948//11884 5942//11884 +f 5952//11885 5949//11885 5950//11885 +f 5955//11886 5947//11886 5934//11886 +f 5954//11887 5942//11887 5956//11887 +f 5955//11888 5934//11888 5939//11888 +f 5955//11889 4904//11889 5947//11889 +f 5957//11890 5951//11890 5938//11890 +f 5958//11891 4906//11891 4904//11891 +f 5958//11892 5939//11892 5944//11892 +f 5958//11893 5955//11893 5939//11893 +f 5957//11894 5938//11894 5941//11894 +f 5957//11895 5905//11895 5951//11895 +f 5958//11896 4904//11896 5955//11896 +f 5959//11897 5954//11897 5956//11897 +f 5960//11898 5944//11898 5949//11898 +f 5961//11899 5941//11899 5948//11899 +f 5960//11900 4906//11900 5958//11900 +f 5960//11901 5958//11901 5944//11901 +f 5961//11902 5906//11902 5905//11902 +f 5962//11903 4908//11903 4906//11903 +f 5961//11904 5957//11904 5941//11904 +f 5962//11905 5912//11905 5911//11905 +f 5961//11906 5905//11906 5957//11906 +f 5962//11907 5911//11907 4908//11907 +f 5962//11908 5952//11908 5912//11908 +f 5962//11909 5949//11909 5952//11909 +f 5962//11910 4906//11910 5960//11910 +f 5962//11911 5960//11911 5949//11911 +f 5963//11912 5956//11912 5964//11912 +f 5963//11913 5959//11913 5956//11913 +f 5965//11914 5906//11914 5961//11914 +f 5965//11915 5961//11915 5948//11915 +f 5965//11916 5948//11916 5954//11916 +f 5915//11917 5963//11917 5964//11917 +f 5966//11918 5907//11918 5906//11918 +f 5966//11919 5906//11919 5965//11919 +f 5966//11920 5965//11920 5954//11920 +f 5966//11921 5954//11921 5959//11921 +f 5922//11922 5964//11922 5967//11922 +f 5922//11923 5915//11923 5964//11923 +f 5968//11924 5907//11924 5966//11924 +f 5968//11925 5966//11925 5959//11925 +f 5916//11926 5912//11926 5953//11926 +f 5968//11927 5959//11927 5963//11927 +f 5916//11928 5953//11928 5969//11928 +f 5923//11929 5922//11929 5967//11929 +f 5924//11930 5969//11930 5970//11930 +f 5914//11931 5908//11931 5907//11931 +f 5914//11932 5963//11932 5915//11932 +f 5914//11933 5968//11933 5963//11933 +f 5924//11934 5916//11934 5969//11934 +f 5914//11935 5907//11935 5968//11935 +f 5933//11936 5924//11936 5970//11936 +f 5918//11937 5967//11937 5919//11937 +f 5918//11938 5923//11938 5967//11938 +f 5926//11939 5970//11939 5927//11939 +f 5926//11940 5933//11940 5970//11940 +f 5913//11941 5908//11941 5914//11941 +f 5913//11942 5915//11942 5922//11942 +f 5971//11943 5940//11943 5972//11943 +f 5971//11944 5972//11944 5973//11944 +f 5974//11945 5975//11945 5976//11945 +f 5971//11946 5977//11946 5978//11946 +f 5971//11947 5978//11947 5953//11947 +f 5971//11948 5979//11948 5977//11948 +f 5971//11949 5973//11949 5979//11949 +f 5974//11950 5980//11950 5975//11950 +f 5981//11951 5976//11951 5982//11951 +f 5981//11952 5974//11952 5976//11952 +f 5983//11953 5982//11953 5984//11953 +f 5983//11954 5981//11954 5982//11954 +f 5985//11955 5984//11955 5986//11955 +f 5985//11956 5983//11956 5984//11956 +f 5987//11957 5986//11957 5988//11957 +f 5987//11958 5985//11958 5986//11958 +f 5973//11959 5988//11959 5989//11959 +f 5973//11960 5987//11960 5988//11960 +f 5979//11961 5990//11961 5991//11961 +f 5979//11962 5989//11962 5990//11962 +f 5979//11963 5991//11963 5977//11963 +f 5979//11964 5973//11964 5989//11964 +f 5992//11965 5969//11965 5953//11965 +f 5992//11966 5978//11966 5977//11966 +f 5992//11967 5953//11967 5978//11967 +f 5977//11968 5991//11968 5993//11968 +f 5992//11969 5977//11969 5994//11969 +f 5995//11970 5970//11970 5969//11970 +f 5995//11971 5969//11971 5992//11971 +f 5995//11972 5994//11972 5996//11972 +f 5995//11973 5992//11973 5994//11973 +f 5997//11974 5927//11974 5970//11974 +f 5997//11975 5996//11975 5998//11975 +f 5997//11976 5995//11976 5996//11976 +f 5997//11977 5970//11977 5995//11977 +f 5999//11978 5927//11978 5997//11978 +f 5999//11979 5931//11979 5927//11979 +f 5999//11980 5998//11980 6000//11980 +f 5999//11981 5997//11981 5998//11981 +f 6001//11982 5931//11982 5999//11982 +f 6001//11983 5999//11983 6000//11983 +f 6001//11984 5942//11984 5931//11984 +f 6001//11985 6000//11985 5980//11985 +f 6002//11986 5956//11986 5942//11986 +f 6002//11987 5980//11987 5974//11987 +f 6002//11988 6001//11988 5980//11988 +f 6002//11989 5942//11989 6001//11989 +f 6003//11990 5956//11990 6002//11990 +f 6003//11991 5964//11991 5956//11991 +f 6003//11992 6002//11992 5974//11992 +f 5994//11993 5977//11993 5993//11993 +f 6003//11994 5974//11994 5981//11994 +f 5996//11995 5993//11995 6004//11995 +f 6005//11996 5967//11996 5964//11996 +f 6005//11997 5964//11997 6003//11997 +f 6005//11998 6003//11998 5981//11998 +f 5996//11999 5994//11999 5993//11999 +f 6005//12000 5981//12000 5983//12000 +f 5998//12001 6004//12001 6006//12001 +f 6007//12002 5919//12002 5967//12002 +f 6007//12003 5967//12003 6005//12003 +f 6007//12004 6005//12004 5983//12004 +f 5998//12005 5996//12005 6004//12005 +f 6007//12006 5983//12006 5985//12006 +f 6008//12007 6007//12007 5985//12007 +f 6000//12008 6006//12008 6009//12008 +f 6008//12009 5929//12009 5919//12009 +f 6008//12010 5985//12010 5987//12010 +f 6000//12011 5998//12011 6006//12011 +f 6008//12012 5919//12012 6007//12012 +f 5972//12013 5940//12013 5929//12013 +f 5972//12014 5929//12014 6008//12014 +f 5980//12015 6009//12015 5975//12015 +f 5972//12016 5987//12016 5973//12016 +f 5972//12017 6008//12017 5987//12017 +f 5980//12018 6000//12018 6009//12018 +f 5971//12019 5953//12019 5950//12019 +f 5971//12020 5950//12020 5940//12020 +f 6010//12021 5991//12021 6011//12021 +f 6012//12022 6013//12022 4888//12022 +f 6010//12023 6014//12023 6015//12023 +f 6016//12024 6004//12024 5993//12024 +f 6012//12025 6017//12025 6013//12025 +f 6016//12026 6015//12026 6018//12026 +f 6016//12027 6010//12027 6015//12027 +f 6016//12028 5993//12028 6010//12028 +f 6019//12029 5984//12029 6020//12029 +f 6019//12030 6021//12030 6022//12030 +f 6019//12031 6020//12031 6021//12031 +f 6023//12032 4897//12032 4899//12032 +f 6023//12033 6024//12033 4897//12033 +f 6025//12034 6012//12034 4888//12034 +f 6026//12035 6023//12035 4899//12035 +f 6027//12036 4888//12036 4890//12036 +f 6028//12037 6004//12037 6016//12037 +f 6027//12038 6025//12038 4888//12038 +f 6028//12039 6018//12039 6029//12039 +f 6030//12040 5986//12040 5984//12040 +f 6028//12041 6016//12041 6018//12041 +f 6030//12042 6022//12042 6017//12042 +f 6030//12043 5984//12043 6019//12043 +f 6031//12044 6006//12044 6004//12044 +f 6031//12045 6029//12045 6024//12045 +f 6030//12046 6019//12046 6022//12046 +f 6031//12047 6004//12047 6028//12047 +f 6031//12048 6028//12048 6029//12048 +f 6032//12049 6017//12049 6012//12049 +f 6032//12050 6030//12050 6017//12050 +f 6033//12051 4899//12051 6034//12051 +f 6032//12052 5986//12052 6030//12052 +f 6033//12053 6026//12053 4899//12053 +f 6035//12054 6033//12054 6034//12054 +f 6036//12055 6027//12055 4890//12055 +f 6037//12056 4890//12056 4892//12056 +f 6038//12057 6024//12057 6023//12057 +f 6037//12058 6036//12058 4890//12058 +f 6038//12059 6031//12059 6024//12059 +f 6038//12060 6006//12060 6031//12060 +f 6039//12061 5988//12061 5986//12061 +f 6039//12062 6032//12062 6012//12062 +f 6040//12063 6009//12063 6006//12063 +f 6039//12064 6012//12064 6025//12064 +f 6040//12065 6006//12065 6038//12065 +f 6039//12066 5986//12066 6032//12066 +f 6040//12067 6023//12067 6026//12067 +f 6040//12068 6038//12068 6023//12068 +f 6041//12069 5988//12069 6039//12069 +f 6041//12070 6025//12070 6027//12070 +f 6041//12071 6039//12071 6025//12071 +f 6042//12072 6034//12072 6043//12072 +f 6042//12073 6035//12073 6034//12073 +f 6044//12074 6037//12074 4892//12074 +f 6045//12075 6026//12075 6033//12075 +f 6045//12076 6009//12076 6040//12076 +f 6046//12077 4892//12077 4895//12077 +f 6045//12078 6040//12078 6026//12078 +f 6046//12079 4895//12079 6014//12079 +f 6046//12080 6044//12080 4892//12080 +f 6047//12081 5989//12081 5988//12081 +f 6048//12082 6042//12082 6043//12082 +f 6047//12083 6027//12083 6036//12083 +f 6047//12084 5988//12084 6041//12084 +f 6047//12085 6041//12085 6027//12085 +f 6049//12086 6045//12086 6033//12086 +f 6049//12087 5975//12087 6009//12087 +f 6050//12088 5989//12088 6047//12088 +f 6049//12089 6009//12089 6045//12089 +f 6050//12090 6036//12090 6037//12090 +f 6049//12091 6033//12091 6035//12091 +f 6050//12092 6047//12092 6036//12092 +f 6051//12093 6048//12093 6043//12093 +f 6052//12094 5990//12094 5989//12094 +f 6052//12095 6050//12095 6037//12095 +f 6051//12096 6043//12096 6053//12096 +f 6052//12097 6037//12097 6044//12097 +f 6054//12098 6035//12098 6042//12098 +f 6052//12099 5989//12099 6050//12099 +f 6055//12100 5991//12100 5990//12100 +f 6054//12101 5975//12101 6049//12101 +f 6055//12102 6014//12102 6011//12102 +f 6054//12103 6049//12103 6035//12103 +f 6055//12104 6011//12104 5991//12104 +f 6055//12105 6046//12105 6014//12105 +f 6055//12106 6044//12106 6046//12106 +f 6055//12107 5990//12107 6052//12107 +f 6055//12108 6052//12108 6044//12108 +f 6056//12109 6051//12109 6053//12109 +f 6057//12110 5976//12110 5975//12110 +f 6057//12111 6042//12111 6048//12111 +f 6057//12112 6054//12112 6042//12112 +f 6057//12113 5975//12113 6054//12113 +f 6058//12114 6056//12114 6053//12114 +f 6058//12115 6053//12115 6059//12115 +f 6060//12116 5976//12116 6057//12116 +f 6060//12117 6057//12117 6048//12117 +f 6060//12118 6048//12118 6051//12118 +f 6021//12119 6058//12119 6059//12119 +f 6061//12120 5976//12120 6060//12120 +f 6061//12121 5982//12121 5976//12121 +f 6061//12122 6060//12122 6051//12122 +f 6015//12123 6014//12123 4895//12123 +f 6061//12124 6051//12124 6056//12124 +f 6015//12125 4895//12125 4894//12125 +f 6022//12126 6059//12126 6013//12126 +f 6022//12127 6021//12127 6059//12127 +f 6062//12128 6056//12128 6058//12128 +f 6018//12129 6015//12129 4894//12129 +f 6062//12130 6061//12130 6056//12130 +f 6062//12131 5982//12131 6061//12131 +f 6029//12132 4894//12132 4897//12132 +f 6029//12133 6018//12133 4894//12133 +f 6017//12134 6022//12134 6013//12134 +f 6024//12135 6029//12135 4897//12135 +f 6020//12136 5984//12136 5982//12136 +f 6020//12137 5982//12137 6062//12137 +f 6020//12138 6062//12138 6058//12138 +f 6020//12139 6058//12139 6021//12139 +f 6010//12140 5993//12140 5991//12140 +f 6010//12141 6011//12141 6014//12141 +f 4900//12142 6034//12142 4899//12142 +f 6063//12143 6043//12143 6034//12143 +f 6063//12144 6034//12144 4900//12144 +f 6064//12145 6053//12145 6043//12145 +f 6064//12146 6043//12146 6063//12146 +f 6065//12147 6053//12147 6064//12147 +f 6066//12148 6059//12148 6053//12148 +f 6066//12149 6053//12149 6065//12149 +f 6067//12150 6013//12150 6059//12150 +f 6067//12151 6059//12151 6066//12151 +f 4889//12152 4888//12152 6013//12152 +f 4889//12153 6013//12153 6067//12153 +f 6068//12154 4898//12154 6069//12154 +f 6068//12155 6069//12155 6070//12155 +f 6071//12156 5001//12156 5818//12156 +f 6071//12157 6072//12157 5001//12157 +f 6073//12158 4978//12158 4977//12158 +f 6074//12159 6075//12159 6072//12159 +f 6074//12160 4900//12160 6068//12160 +f 6074//12161 6068//12161 6075//12161 +f 6076//12162 5818//12162 5821//12162 +f 6076//12163 6071//12163 5818//12163 +f 6077//12164 6063//12164 4900//12164 +f 6077//12165 6072//12165 6071//12165 +f 6077//12166 4900//12166 6074//12166 +f 6077//12167 6074//12167 6072//12167 +f 6078//12168 5821//12168 5816//12168 +f 6078//12169 6076//12169 5821//12169 +f 4896//12170 4893//12170 6079//12170 +f 6080//12171 6064//12171 6063//12171 +f 6080//12172 6077//12172 6071//12172 +f 6080//12173 6063//12173 6077//12173 +f 6080//12174 6071//12174 6076//12174 +f 6081//12175 5816//12175 5815//12175 +f 6081//12176 6078//12176 5816//12176 +f 6082//12177 6065//12177 6064//12177 +f 6082//12178 6080//12178 6076//12178 +f 6082//12179 6064//12179 6080//12179 +f 6082//12180 6076//12180 6078//12180 +f 6083//12181 5815//12181 5828//12181 +f 6083//12182 6081//12182 5815//12182 +f 6084//12183 6066//12183 6065//12183 +f 6084//12184 6065//12184 6082//12184 +f 6084//12185 6078//12185 6081//12185 +f 6084//12186 6082//12186 6078//12186 +f 6085//12187 5828//12187 4980//12187 +f 6085//12188 4980//12188 4983//12188 +f 6085//12189 6083//12189 5828//12189 +f 6086//12190 6084//12190 6081//12190 +f 6086//12191 6067//12191 6066//12191 +f 6086//12192 6066//12192 6084//12192 +f 6086//12193 6081//12193 6083//12193 +f 6087//12194 4983//12194 4987//12194 +f 6087//12195 6085//12195 4983//12195 +f 6088//12196 6083//12196 6085//12196 +f 6088//12197 4889//12197 6067//12197 +f 6088//12198 6067//12198 6086//12198 +f 6088//12199 6086//12199 6083//12199 +f 6089//12200 4987//12200 4978//12200 +f 6089//12201 4978//12201 6073//12201 +f 6089//12202 6087//12202 4987//12202 +f 6090//12203 6085//12203 6087//12203 +f 6090//12204 4887//12204 4889//12204 +f 6090//12205 6088//12205 6085//12205 +f 6090//12206 4889//12206 6088//12206 +f 6091//12207 4891//12207 4887//12207 +f 6091//12208 4887//12208 6090//12208 +f 6091//12209 6089//12209 6073//12209 +f 6091//12210 6073//12210 6079//12210 +f 6091//12211 6090//12211 6087//12211 +f 6091//12212 6087//12212 6089//12212 +f 6091//12213 6079//12213 4891//12213 +f 4893//12214 4891//12214 6079//12214 +f 6070//12215 6073//12215 4977//12215 +f 6075//12216 4977//12216 4997//12216 +f 6075//12217 6070//12217 4977//12217 +f 6069//12218 4898//12218 4896//12218 +f 6069//12219 6079//12219 6073//12219 +f 6069//12220 4896//12220 6079//12220 +f 6069//12221 6073//12221 6070//12221 +f 6072//12222 4997//12222 5001//12222 +f 6072//12223 6075//12223 4997//12223 +f 6068//12224 4900//12224 4898//12224 +f 6068//12225 6070//12225 6075//12225 +f 6092//12226 6093//12226 6094//12226 +f 6095//12227 6096//12227 6097//12227 +f 6092//12228 6098//12228 6093//12228 +f 6095//12229 6099//12229 6096//12229 +f 6100//12230 5044//12230 5043//12230 +f 6100//12231 5043//12231 6101//12231 +f 6100//12232 6101//12232 6102//12232 +f 6103//12233 6097//12233 6104//12233 +f 6103//12234 6095//12234 6097//12234 +f 6105//12235 4850//12235 6106//12235 +f 6107//12236 6102//12236 6098//12236 +f 6105//12237 6108//12237 6109//12237 +f 6105//12238 6109//12238 4850//12238 +f 6107//12239 6100//12239 6102//12239 +f 6110//12240 6098//12240 6092//12240 +f 6110//12241 6107//12241 6098//12241 +f 6111//12242 6112//12242 6113//12242 +f 6114//12243 6115//12243 6116//12243 +f 6111//12244 6113//12244 6117//12244 +f 6118//12245 6119//12245 6108//12245 +f 6111//12246 6117//12246 6120//12246 +f 6118//12247 6105//12247 6106//12247 +f 6121//12248 6112//12248 6111//12248 +f 6121//12249 6094//12249 6112//12249 +f 6118//12250 6108//12250 6105//12250 +f 6122//12251 6116//12251 6123//12251 +f 6121//12252 6111//12252 6120//12252 +f 6124//12253 5045//12253 5044//12253 +f 6122//12254 6114//12254 6116//12254 +f 6124//12255 5044//12255 6100//12255 +f 6124//12256 6100//12256 6107//12256 +f 6125//12257 6123//12257 6099//12257 +f 6126//12258 6107//12258 6110//12258 +f 6126//12259 6124//12259 6107//12259 +f 6125//12260 6122//12260 6123//12260 +f 6127//12261 4862//12261 4861//12261 +f 6127//12262 4861//12262 5045//12262 +f 6127//12263 5045//12263 6124//12263 +f 6128//12264 5040//12264 5039//12264 +f 6127//12265 6124//12265 6126//12265 +f 6129//12266 6120//12266 6130//12266 +f 6128//12267 5039//12267 6115//12267 +f 6129//12268 6092//12268 6094//12268 +f 6129//12269 6121//12269 6120//12269 +f 6129//12270 6094//12270 6121//12270 +f 6131//12271 5043//12271 5040//12271 +f 6131//12272 5040//12272 6128//12272 +f 6132//12273 6092//12273 6129//12273 +f 6132//12274 6110//12274 6092//12274 +f 6132//12275 6129//12275 6130//12275 +f 6133//12276 6099//12276 6095//12276 +f 6134//12277 6126//12277 6110//12277 +f 6133//12278 6125//12278 6099//12278 +f 6134//12279 6132//12279 6130//12279 +f 6134//12280 6110//12280 6132//12280 +f 6113//12281 6133//12281 6095//12281 +f 6135//12282 6130//12282 4862//12282 +f 6135//12283 4862//12283 6127//12283 +f 6135//12284 6134//12284 6130//12284 +f 6135//12285 6127//12285 6126//12285 +f 6113//12286 6095//12286 6103//12286 +f 6135//12287 6126//12287 6134//12287 +f 6136//12288 6115//12288 6114//12288 +f 6136//12289 6128//12289 6115//12289 +f 6137//12290 5752//12290 4829//12290 +f 6138//12291 5043//12291 6131//12291 +f 6109//12292 4829//12292 4850//12292 +f 6138//12293 6128//12293 6136//12293 +f 6109//12294 6137//12294 4829//12294 +f 6138//12295 6131//12295 6128//12295 +f 6139//12296 5756//12296 5752//12296 +f 6140//12297 6136//12297 6114//12297 +f 6140//12298 6114//12298 6122//12298 +f 6141//12299 6138//12299 6136//12299 +f 6142//12300 5756//12300 6139//12300 +f 6141//12301 6136//12301 6140//12301 +f 6143//12302 6139//12302 5752//12302 +f 6143//12303 5752//12303 6137//12303 +f 6108//12304 6143//12304 6137//12304 +f 6144//12305 6106//12305 6145//12305 +f 6144//12306 6119//12306 6118//12306 +f 6144//12307 6104//12307 6119//12307 +f 6108//12308 6137//12308 6109//12308 +f 6144//12309 6118//12309 6106//12309 +f 6146//12310 6139//12310 6143//12310 +f 6146//12311 6142//12311 6139//12311 +f 6147//12312 6140//12312 6122//12312 +f 6147//12313 6122//12313 6125//12313 +f 6119//12314 6143//12314 6108//12314 +f 6119//12315 6146//12315 6143//12315 +f 6148//12316 5760//12316 5756//12316 +f 6149//12317 6141//12317 6140//12317 +f 6149//12318 6140//12318 6147//12318 +f 6150//12319 6104//12319 6144//12319 +f 6151//12320 6148//12320 5756//12320 +f 6150//12321 6103//12321 6104//12321 +f 6150//12322 6144//12322 6145//12322 +f 6152//12323 6125//12323 6133//12323 +f 6152//12324 6147//12324 6125//12324 +f 6116//12325 5039//12325 5760//12325 +f 6116//12326 5760//12326 6148//12326 +f 6096//12327 5756//12327 6142//12327 +f 6093//12328 6149//12328 6147//12328 +f 6096//12329 6151//12329 5756//12329 +f 6093//12330 6147//12330 6152//12330 +f 6112//12331 6152//12331 6133//12331 +f 6112//12332 6133//12332 6113//12332 +f 6123//12333 6148//12333 6151//12333 +f 6094//12334 6093//12334 6152//12334 +f 6123//12335 6116//12335 6148//12335 +f 6094//12336 6152//12336 6112//12336 +f 6097//12337 6142//12337 6146//12337 +f 6101//12338 6138//12338 6141//12338 +f 6097//12339 6096//12339 6142//12339 +f 6101//12340 5043//12340 6138//12340 +f 6102//12341 6101//12341 6141//12341 +f 6102//12342 6141//12342 6149//12342 +f 6099//12343 6151//12343 6096//12343 +f 6099//12344 6123//12344 6151//12344 +f 6117//12345 6103//12345 6150//12345 +f 6117//12346 6113//12346 6103//12346 +f 6104//12347 6097//12347 6146//12347 +f 6117//12348 6145//12348 6120//12348 +f 6104//12349 6146//12349 6119//12349 +f 6117//12350 6150//12350 6145//12350 +f 6098//12351 6149//12351 6093//12351 +f 6115//12352 5039//12352 6116//12352 +f 6098//12353 6102//12353 6149//12353 +f 6106//12354 6130//12354 6145//12354 +f 6145//12355 6130//12355 6120//12355 +f 4850//12356 4862//12356 6106//12356 +f 6106//12357 4862//12357 6130//12357 +f 4839//12358 4833//12358 4850//12358 +f 4850//12359 4833//12359 4862//12359 +f 4874//12360 4855//12360 4838//12360 +f 4838//12361 4855//12361 4839//12361 +f 4839//12362 4855//12362 4833//12362 +f 5859//12363 4941//12363 4943//12363 +f 5844//12364 4943//12364 4955//12364 +f 5844//12365 5859//12365 4943//12365 +f 5845//12366 4955//12366 4921//12366 +f 5845//12367 5844//12367 4955//12367 +f 5865//12368 4921//12368 4920//12368 +f 5865//12369 5845//12369 4921//12369 +f 5854//12370 4937//12370 4973//12370 +f 5854//12371 4920//12371 4937//12371 +f 5854//12372 5865//12372 4920//12372 +g BullDogClip006 (Meshed) +f 6153//12373 6154//12373 6155//12373 +f 6156//12374 6155//12374 6157//12374 +f 6156//12375 6153//12375 6155//12375 +f 6158//12376 6157//12376 6159//12376 +f 6158//12377 6156//12377 6157//12377 +f 6160//12378 6158//12378 6159//12378 +f 6161//12379 6162//12379 6163//12379 +f 6164//12380 6165//12380 6166//12380 +f 6167//12381 6168//12381 6169//12381 +f 6170//12382 6171//12382 6162//12382 +f 6167//12383 6172//12383 6168//12383 +f 6170//12384 6173//12384 6171//12384 +f 6173//12385 6174//12385 6171//12385 +f 6175//12386 6176//12386 6174//12386 +f 6177//12387 6176//12387 6175//12387 +f 6176//12388 6178//12388 6174//12388 +f 6174//12389 6179//12389 6171//12389 +f 6178//12390 6179//12390 6174//12390 +f 6180//12391 6181//12391 6178//12391 +f 6172//12392 6181//12392 6182//12392 +f 6181//12393 6183//12393 6178//12393 +f 6178//12394 6183//12394 6179//12394 +f 6180//12395 6182//12395 6181//12395 +f 6182//12396 6184//12396 6172//12396 +f 6184//12397 6168//12397 6172//12397 +f 6185//12398 6165//12398 6164//12398 +f 6165//12399 6186//12399 6166//12399 +f 6186//12400 6177//12400 6187//12400 +f 6187//12401 6177//12401 6175//12401 +f 6187//12402 6166//12402 6186//12402 +f 6188//12403 6161//12403 6163//12403 +f 6161//12404 6170//12404 6162//12404 +f 6189//12405 6190//12405 6191//12405 +f 6191//12406 6190//12406 6192//12406 +f 6192//12407 6193//12407 6194//12407 +f 6190//12408 6193//12408 6192//12408 +f 6194//12409 6195//12409 6196//12409 +f 6193//12410 6195//12410 6194//12410 +f 6197//12411 6198//12411 6199//12411 +f 6197//12412 6200//12412 6198//12412 +f 6201//12413 6202//12413 6203//12413 +f 6204//12414 6205//12414 6206//12414 +f 6201//12415 6207//12415 6202//12415 +f 6204//12416 6206//12416 6200//12416 +f 6208//12417 6209//12417 6210//12417 +f 6208//12418 6210//12418 6207//12418 +f 6211//12419 6212//12419 6213//12419 +f 6211//12420 6214//12420 6215//12420 +f 6216//12421 6209//12421 6208//12421 +f 6216//12422 6207//12422 6201//12422 +f 6211//12423 6215//12423 6212//12423 +f 6216//12424 6208//12424 6207//12424 +f 6217//12425 6218//12425 6219//12425 +f 6217//12426 6220//12426 6218//12426 +f 6221//12427 6199//12427 6222//12427 +f 6221//12428 6197//12428 6199//12428 +f 6217//12429 6203//12429 6223//12429 +f 6217//12430 6223//12430 6220//12430 +f 6224//12431 6217//12431 6219//12431 +f 6225//12432 6226//12432 6227//12432 +f 6224//12433 6201//12433 6203//12433 +f 6225//12434 6227//12434 6228//12434 +f 6224//12435 6203//12435 6217//12435 +f 6229//12436 6219//12436 6230//12436 +f 6229//12437 6230//12437 6209//12437 +f 6229//12438 6209//12438 6216//12438 +f 6229//12439 6216//12439 6201//12439 +f 6229//12440 6224//12440 6219//12440 +f 6231//12441 6204//12441 6200//12441 +f 6229//12442 6201//12442 6224//12442 +f 6231//12443 6200//12443 6197//12443 +f 6232//12444 6228//12444 6205//12444 +f 6232//12445 6225//12445 6228//12445 +f 6233//12446 6197//12446 6221//12446 +f 6233//12447 6231//12447 6197//12447 +f 6234//12448 6213//12448 6235//12448 +f 6234//12449 6222//12449 6214//12449 +f 6234//12450 6211//12450 6213//12450 +f 6234//12451 6214//12451 6211//12451 +f 6236//12452 6205//12452 6204//12452 +f 6236//12453 6232//12453 6205//12453 +f 6237//12454 6236//12454 6204//12454 +f 6237//12455 6204//12455 6231//12455 +f 6238//12456 6222//12456 6234//12456 +f 6238//12457 6221//12457 6222//12457 +f 6238//12458 6234//12458 6235//12458 +f 6239//12459 6226//12459 6225//12459 +f 6240//12460 6241//12460 6242//12460 +f 6239//12461 6243//12461 6226//12461 +f 6240//12462 6244//12462 6241//12462 +f 6245//12463 6237//12463 6231//12463 +f 6245//12464 6231//12464 6233//12464 +f 6246//12465 6247//12465 6244//12465 +f 6248//12466 6225//12466 6232//12466 +f 6215//12467 6246//12467 6244//12467 +f 6248//12468 6239//12468 6225//12468 +f 6215//12469 6244//12469 6240//12469 +f 6249//12470 6250//12470 6243//12470 +f 6249//12471 6243//12471 6239//12471 +f 6251//12472 6252//12472 6247//12472 +f 6253//12473 6254//12473 6245//12473 +f 6253//12474 6233//12474 6221//12474 +f 6253//12475 6235//12475 6254//12475 +f 6253//12476 6221//12476 6238//12476 +f 6253//12477 6238//12477 6235//12477 +f 6253//12478 6245//12478 6233//12478 +f 6255//12479 6247//12479 6246//12479 +f 6256//12480 6239//12480 6248//12480 +f 6256//12481 6249//12481 6239//12481 +f 6256//12482 6250//12482 6249//12482 +f 6214//12483 6246//12483 6215//12483 +f 6214//12484 6255//12484 6246//12484 +f 6257//12485 6232//12485 6236//12485 +f 6257//12486 6248//12486 6232//12486 +f 6258//12487 6259//12487 6252//12487 +f 6258//12488 6227//12488 6259//12488 +f 6260//12489 6256//12489 6248//12489 +f 6260//12490 6248//12490 6257//12490 +f 6206//12491 6258//12491 6252//12491 +f 6261//12492 6236//12492 6237//12492 +f 6261//12493 6257//12493 6236//12493 +f 6206//12494 6252//12494 6251//12494 +f 6262//12495 6245//12495 6254//12495 +f 6198//12496 6247//12496 6255//12496 +f 6262//12497 6237//12497 6245//12497 +f 6262//12498 6261//12498 6237//12498 +f 6198//12499 6251//12499 6247//12499 +f 6228//12500 6227//12500 6258//12500 +f 6263//12501 6260//12501 6257//12501 +f 6263//12502 6257//12502 6261//12502 +f 6205//12503 6258//12503 6206//12503 +f 6223//12504 6261//12504 6262//12504 +f 6223//12505 6263//12505 6261//12505 +f 6205//12506 6228//12506 6258//12506 +f 6264//12507 6250//12507 6256//12507 +f 6264//12508 6256//12508 6260//12508 +f 6199//12509 6198//12509 6255//12509 +f 6202//12510 6260//12510 6263//12510 +f 6222//12511 6255//12511 6214//12511 +f 6202//12512 6264//12512 6260//12512 +f 6222//12513 6199//12513 6255//12513 +f 6203//12514 6263//12514 6223//12514 +f 6200//12515 6206//12515 6251//12515 +f 6200//12516 6251//12516 6198//12516 +f 6203//12517 6202//12517 6263//12517 +f 6265//12518 6210//12518 6250//12518 +f 6265//12519 6250//12519 6264//12519 +f 6212//12520 6242//12520 6213//12520 +f 6212//12521 6215//12521 6240//12521 +f 6207//12522 6210//12522 6265//12522 +f 6207//12523 6264//12523 6202//12523 +f 6212//12524 6240//12524 6242//12524 +f 6226//12525 6243//12525 6266//12525 +f 6226//12526 6266//12526 6259//12526 +f 6226//12527 6259//12527 6227//12527 +f 6207//12528 6265//12528 6264//12528 +f 6220//12529 6254//12529 6218//12529 +f 6220//12530 6262//12530 6254//12530 +f 6220//12531 6223//12531 6262//12531 +f 6267//12532 6268//12532 6269//12532 +f 6267//12533 6270//12533 6268//12533 +f 6271//12534 6272//12534 6270//12534 +f 6271//12535 6270//12535 6267//12535 +f 6273//12536 6274//12536 6275//12536 +f 6273//12537 6275//12537 6272//12537 +f 6273//12538 6272//12538 6271//12538 +f 6276//12539 6277//12539 6274//12539 +f 6276//12540 6274//12540 6273//12540 +f 6278//12541 6279//12541 6277//12541 +f 6278//12542 6277//12542 6276//12542 +f 6280//12543 6279//12543 6278//12543 +f 6281//12544 6282//12544 6283//12544 +f 6284//12545 6285//12545 6282//12545 +f 6284//12546 6282//12546 6281//12546 +f 6286//12547 6287//12547 6285//12547 +f 6286//12548 6285//12548 6284//12548 +f 6288//12549 6287//12549 6286//12549 +f 6289//12550 6290//12550 6287//12550 +f 6289//12551 6287//12551 6288//12551 +f 6291//12552 6292//12552 6290//12552 +f 6291//12553 6290//12553 6289//12553 +f 6293//12554 6294//12554 6292//12554 +f 6293//12555 6292//12555 6291//12555 +f 6295//12556 6296//12556 6297//12556 +f 6295//12557 6298//12557 6296//12557 +f 6299//12558 6300//12558 6301//12558 +f 6299//12559 6301//12559 6302//12559 +f 6303//12560 6297//12560 6304//12560 +f 6303//12561 6295//12561 6297//12561 +f 6305//12562 6302//12562 6298//12562 +f 6305//12563 6299//12563 6302//12563 +f 6306//12564 6304//12564 6307//12564 +f 6306//12565 6303//12565 6304//12565 +f 6308//12566 6300//12566 6299//12566 +f 6309//12567 6305//12567 6298//12567 +f 6309//12568 6298//12568 6295//12568 +f 6310//12569 6308//12569 6299//12569 +f 6310//12570 6299//12570 6305//12570 +f 6311//12571 6306//12571 6307//12571 +f 6311//12572 6312//12572 6313//12572 +f 6311//12573 6313//12573 6314//12573 +f 6311//12574 6307//12574 6312//12574 +f 6315//12575 6310//12575 6305//12575 +f 6315//12576 6305//12576 6309//12576 +f 6316//12577 6300//12577 6308//12577 +f 6316//12578 6317//12578 6300//12578 +f 6318//12579 6316//12579 6308//12579 +f 6318//12580 6308//12580 6310//12580 +f 6319//12581 6309//12581 6295//12581 +f 6320//12582 6321//12582 6322//12582 +f 6319//12583 6295//12583 6303//12583 +f 6320//12584 6323//12584 6321//12584 +f 6324//12585 6303//12585 6306//12585 +f 6325//12586 6322//12586 6326//12586 +f 6324//12587 6319//12587 6303//12587 +f 6325//12588 6320//12588 6322//12588 +f 6327//12589 6310//12589 6315//12589 +f 6327//12590 6318//12590 6310//12590 +f 6328//12591 6323//12591 6320//12591 +f 6329//12592 6326//12592 6330//12592 +f 6331//12593 6315//12593 6309//12593 +f 6329//12594 6325//12594 6326//12594 +f 6331//12595 6309//12595 6319//12595 +f 6329//12596 6320//12596 6325//12596 +f 6329//12597 6328//12597 6320//12597 +f 6332//12598 6314//12598 6333//12598 +f 6334//12599 6335//12599 6323//12599 +f 6332//12600 6319//12600 6324//12600 +f 6334//12601 6323//12601 6328//12601 +f 6332//12602 6331//12602 6319//12602 +f 6336//12603 6311//12603 6314//12603 +f 6336//12604 6332//12604 6324//12604 +f 6336//12605 6306//12605 6311//12605 +f 6337//12606 6328//12606 6329//12606 +f 6336//12607 6314//12607 6332//12607 +f 6337//12608 6334//12608 6328//12608 +f 6336//12609 6324//12609 6306//12609 +f 6338//12610 6317//12610 6316//12610 +f 6339//12611 6337//12611 6329//12611 +f 6339//12612 6329//12612 6330//12612 +f 6340//12613 6338//12613 6316//12613 +f 6341//12614 6335//12614 6334//12614 +f 6340//12615 6316//12615 6318//12615 +f 6342//12616 6315//12616 6331//12616 +f 6342//12617 6327//12617 6315//12617 +f 6342//12618 6332//12618 6333//12618 +f 6343//12619 6334//12619 6337//12619 +f 6342//12620 6331//12620 6332//12620 +f 6344//12621 6317//12621 6338//12621 +f 6343//12622 6341//12622 6334//12622 +f 6345//12623 6301//12623 6335//12623 +f 6346//12624 6347//12624 6348//12624 +f 6345//12625 6335//12625 6341//12625 +f 6346//12626 6338//12626 6340//12626 +f 6346//12627 6344//12627 6338//12627 +f 6349//12628 6333//12628 6347//12628 +f 6349//12629 6327//12629 6342//12629 +f 6349//12630 6318//12630 6327//12630 +f 6349//12631 6340//12631 6318//12631 +f 6296//12632 6341//12632 6343//12632 +f 6349//12633 6347//12633 6346//12633 +f 6296//12634 6345//12634 6341//12634 +f 6349//12635 6346//12635 6340//12635 +f 6349//12636 6342//12636 6333//12636 +f 6350//12637 6348//12637 6351//12637 +f 6352//12638 6337//12638 6339//12638 +f 6350//12639 6351//12639 6353//12639 +f 6352//12640 6343//12640 6337//12640 +f 6350//12641 6353//12641 6317//12641 +f 6350//12642 6317//12642 6344//12642 +f 6350//12643 6344//12643 6346//12643 +f 6350//12644 6346//12644 6348//12644 +f 6297//12645 6296//12645 6343//12645 +f 6297//12646 6343//12646 6352//12646 +f 6354//12647 6339//12647 6330//12647 +f 6354//12648 6352//12648 6339//12648 +f 6355//12649 6330//12649 6312//12649 +f 6355//12650 6354//12650 6330//12650 +f 6304//12651 6297//12651 6352//12651 +f 6304//12652 6352//12652 6354//12652 +f 6302//12653 6301//12653 6345//12653 +f 6307//12654 6355//12654 6312//12654 +f 6307//12655 6354//12655 6355//12655 +f 6307//12656 6304//12656 6354//12656 +f 6298//12657 6302//12657 6345//12657 +f 6298//12658 6345//12658 6296//12658 +f 6356//12659 6357//12659 6358//12659 +f 6359//12660 6360//12660 6361//12660 +f 6359//12661 6361//12661 6362//12661 +f 6359//12662 6363//12662 6360//12662 +f 6364//12663 6362//12663 6365//12663 +f 6364//12664 6363//12664 6359//12664 +f 6364//12665 6359//12665 6362//12665 +f 6366//12666 6367//12666 6363//12666 +f 6366//12667 6364//12667 6365//12667 +f 6366//12668 6363//12668 6364//12668 +f 6368//12669 6365//12669 6369//12669 +f 6368//12670 6366//12670 6365//12670 +f 6368//12671 6367//12671 6366//12671 +f 6370//12672 6358//12672 6367//12672 +f 6370//12673 6368//12673 6369//12673 +f 6370//12674 6367//12674 6368//12674 +f 6371//12675 6369//12675 6356//12675 +f 6371//12676 6358//12676 6370//12676 +f 6371//12677 6370//12677 6369//12677 +f 6371//12678 6356//12678 6358//12678 +f 6372//12679 6356//12679 6373//12679 +f 6372//12680 6357//12680 6356//12680 +f 6374//12681 6357//12681 6372//12681 +f 6374//12682 6372//12682 6373//12682 +f 6375//12683 6373//12683 6376//12683 +f 6375//12684 6377//12684 6357//12684 +f 6375//12685 6374//12685 6373//12685 +f 6375//12686 6357//12686 6374//12686 +f 6378//12687 6376//12687 6379//12687 +f 6378//12688 6379//12688 6380//12688 +f 6378//12689 6380//12689 6381//12689 +f 6378//12690 6381//12690 6377//12690 +f 6378//12691 6375//12691 6376//12691 +f 6378//12692 6377//12692 6375//12692 +f 6382//12693 6383//12693 6384//12693 +f 6385//12694 6386//12694 6387//12694 +f 6385//12695 6387//12695 6388//12695 +f 6385//12696 6389//12696 6390//12696 +f 6385//12697 6390//12697 6386//12697 +f 6391//12698 6388//12698 6384//12698 +f 6391//12699 6392//12699 6389//12699 +f 6391//12700 6389//12700 6385//12700 +f 6391//12701 6385//12701 6388//12701 +f 6393//12702 6391//12702 6384//12702 +f 6393//12703 6392//12703 6391//12703 +f 6394//12704 6383//12704 6392//12704 +f 6394//12705 6392//12705 6393//12705 +f 6394//12706 6393//12706 6384//12706 +f 6394//12707 6384//12707 6383//12707 +f 6395//12708 6382//12708 6396//12708 +f 6395//12709 6397//12709 6383//12709 +f 6395//12710 6383//12710 6382//12710 +f 6398//12711 6399//12711 6397//12711 +f 6398//12712 6395//12712 6396//12712 +f 6398//12713 6397//12713 6395//12713 +f 6400//12714 6396//12714 6401//12714 +f 6400//12715 6398//12715 6396//12715 +f 6400//12716 6399//12716 6398//12716 +f 6402//12717 6403//12717 6399//12717 +f 6402//12718 6400//12718 6401//12718 +f 6402//12719 6399//12719 6400//12719 +f 6404//12720 6401//12720 6405//12720 +f 6404//12721 6405//12721 6406//12721 +f 6404//12722 6406//12722 6403//12722 +f 6404//12723 6403//12723 6402//12723 +f 6404//12724 6402//12724 6401//12724 +f 6407//12725 6408//12725 6409//12725 +f 6410//12726 6408//12726 6407//12726 +f 6411//12727 6407//12727 6412//12727 +f 6411//12728 6410//12728 6407//12728 +f 6413//12729 6412//12729 6414//12729 +f 6413//12730 6411//12730 6412//12730 +f 6415//12731 6414//12731 6416//12731 +f 6415//12732 6413//12732 6414//12732 +f 6417//12733 6416//12733 6418//12733 +f 6417//12734 6415//12734 6416//12734 +f 6419//12735 6420//12735 6421//12735 +f 6420//12736 6422//12736 6421//12736 +f 6420//12737 6423//12737 6422//12737 +f 6313//12738 6312//12738 6259//12738 +f 6424//12739 6425//12739 6422//12739 +f 6426//12740 6427//12740 6428//12740 +f 6241//12741 6429//12741 6425//12741 +f 6425//12742 6429//12742 6422//12742 +f 6247//12743 6326//12743 6244//12743 +f 6427//12744 6430//12744 6431//12744 +f 6244//12745 6322//12745 6241//12745 +f 6326//12746 6322//12746 6244//12746 +f 6430//12747 6432//12747 6322//12747 +f 6241//12748 6432//12748 6429//12748 +f 6322//12749 6432//12749 6241//12749 +f 6427//12750 6432//12750 6430//12750 +f 6429//12751 6433//12751 6434//12751 +f 6432//12752 6433//12752 6429//12752 +f 6434//12753 6435//12753 6436//12753 +f 6433//12754 6435//12754 6434//12754 +f 6435//12755 6437//12755 6436//12755 +f 6436//12756 6437//12756 6438//12756 +f 6312//12757 6330//12757 6252//12757 +f 6259//12758 6266//12758 6313//12758 +f 6252//12759 6259//12759 6312//12759 +f 6247//12760 6252//12760 6330//12760 +f 6247//12761 6330//12761 6326//12761 +f 6423//12762 6424//12762 6422//12762 +f 6428//12763 6439//12763 6426//12763 +f 6431//12764 6428//12764 6427//12764 +f 6440//12765 6182//12765 6180//12765 +f 6441//12766 6442//12766 6443//12766 +f 6440//12767 6180//12767 6444//12767 +f 6441//12768 6445//12768 6442//12768 +f 6440//12769 6446//12769 6447//12769 +f 6448//12770 6449//12770 6450//12770 +f 6440//12771 6444//12771 6446//12771 +f 6448//12772 6451//12772 6449//12772 +f 6452//12773 6184//12773 6182//12773 +f 6452//12774 6453//12774 6454//12774 +f 6452//12775 6455//12775 6184//12775 +f 6452//12776 6454//12776 6455//12776 +f 6452//12777 6447//12777 6453//12777 +f 6456//12778 6443//12778 6451//12778 +f 6452//12779 6182//12779 6440//12779 +f 6456//12780 6441//12780 6443//12780 +f 6452//12781 6440//12781 6447//12781 +f 6457//12782 6178//12782 6458//12782 +f 6457//12783 6180//12783 6178//12783 +f 6459//12784 6450//12784 6169//12784 +f 6457//12785 6444//12785 6180//12785 +f 6459//12786 6448//12786 6450//12786 +f 6457//12787 6458//12787 6460//12787 +f 6459//12788 6451//12788 6448//12788 +f 6457//12789 6460//12789 6461//12789 +f 6457//12790 6461//12790 6444//12790 +f 6459//12791 6456//12791 6451//12791 +f 6462//12792 6463//12792 6464//12792 +f 6462//12793 6464//12793 6465//12793 +f 6466//12794 6462//12794 6465//12794 +f 6466//12795 6465//12795 6445//12795 +f 6467//12796 6468//12796 6469//12796 +f 6467//12797 6469//12797 6470//12797 +f 6471//12798 6466//12798 6445//12798 +f 6471//12799 6445//12799 6441//12799 +f 6472//12800 6471//12800 6441//12800 +f 6472//12801 6441//12801 6456//12801 +f 6473//12802 6472//12802 6456//12802 +f 6473//12803 6456//12803 6459//12803 +f 6474//12804 6468//12804 6467//12804 +f 6475//12805 6463//12805 6462//12805 +f 6475//12806 6476//12806 6463//12806 +f 6477//12807 6478//12807 6479//12807 +f 6480//12808 6476//12808 6475//12808 +f 6480//12809 6470//12809 6476//12809 +f 6481//12810 6478//12810 6477//12810 +f 6482//12811 6475//12811 6462//12811 +f 6483//12812 6479//12812 6484//12812 +f 6482//12813 6462//12813 6466//12813 +f 6483//12814 6484//12814 6485//12814 +f 6483//12815 6477//12815 6479//12815 +f 6461//12816 6468//12816 6474//12816 +f 6486//12817 6487//12817 6478//12817 +f 6488//12818 6480//12818 6475//12818 +f 6488//12819 6475//12819 6482//12819 +f 6486//12820 6478//12820 6481//12820 +f 6489//12821 6473//12821 6459//12821 +f 6464//12822 6487//12822 6486//12822 +f 6489//12823 6459//12823 6169//12823 +f 6490//12824 6466//12824 6471//12824 +f 6491//12825 6477//12825 6483//12825 +f 6490//12826 6482//12826 6466//12826 +f 6492//12827 6485//12827 6449//12827 +f 6492//12828 6483//12828 6485//12828 +f 6493//12829 6488//12829 6482//12829 +f 6492//12830 6491//12830 6483//12830 +f 6493//12831 6482//12831 6490//12831 +f 6494//12832 6471//12832 6472//12832 +f 6495//12833 6481//12833 6477//12833 +f 6494//12834 6490//12834 6471//12834 +f 6495//12835 6477//12835 6491//12835 +f 6496//12836 6491//12836 6492//12836 +f 6497//12837 6493//12837 6490//12837 +f 6496//12838 6495//12838 6491//12838 +f 6497//12839 6490//12839 6494//12839 +f 6498//12840 6472//12840 6473//12840 +f 6498//12841 6494//12841 6472//12841 +f 6499//12842 6492//12842 6449//12842 +f 6499//12843 6496//12843 6492//12843 +f 6463//12844 6469//12844 6487//12844 +f 6500//12845 6168//12845 6184//12845 +f 6500//12846 6494//12846 6498//12846 +f 6463//12847 6487//12847 6464//12847 +f 6500//12848 6497//12848 6494//12848 +f 6460//12849 6458//12849 6468//12849 +f 6501//12850 6481//12850 6495//12850 +f 6501//12851 6486//12851 6481//12851 +f 6460//12852 6468//12852 6461//12852 +f 6502//12853 6467//12853 6470//12853 +f 6502//12854 6470//12854 6480//12854 +f 6453//12855 6502//12855 6480//12855 +f 6442//12856 6495//12856 6496//12856 +f 6442//12857 6501//12857 6495//12857 +f 6453//12858 6480//12858 6488//12858 +f 6465//12859 6464//12859 6486//12859 +f 6503//12860 6169//12860 6168//12860 +f 6465//12861 6486//12861 6501//12861 +f 6503//12862 6473//12862 6489//12862 +f 6503//12863 6489//12863 6169//12863 +f 6503//12864 6498//12864 6473//12864 +f 6503//12865 6168//12865 6500//12865 +f 6503//12866 6500//12866 6498//12866 +f 6443//12867 6496//12867 6499//12867 +f 6454//12868 6488//12868 6493//12868 +f 6443//12869 6442//12869 6496//12869 +f 6454//12870 6453//12870 6488//12870 +f 6455//12871 6493//12871 6497//12871 +f 6455//12872 6500//12872 6184//12872 +f 6476//12873 6469//12873 6463//12873 +f 6455//12874 6497//12874 6500//12874 +f 6455//12875 6454//12875 6493//12875 +f 6445//12876 6501//12876 6442//12876 +f 6446//12877 6474//12877 6467//12877 +f 6445//12878 6465//12878 6501//12878 +f 6446//12879 6467//12879 6502//12879 +f 6447//12880 6502//12880 6453//12880 +f 6470//12881 6469//12881 6476//12881 +f 6447//12882 6446//12882 6502//12882 +f 6451//12883 6443//12883 6499//12883 +f 6444//12884 6461//12884 6474//12884 +f 6451//12885 6499//12885 6449//12885 +f 6444//12886 6474//12886 6446//12886 +f 6504//12887 6505//12887 6506//12887 +f 6507//12888 6508//12888 6504//12888 +f 6507//12889 6509//12889 6508//12889 +f 6510//12890 6511//12890 6509//12890 +f 6510//12891 6509//12891 6507//12891 +f 6512//12892 6513//12892 6514//12892 +f 6512//12893 6515//12893 6513//12893 +f 6512//12894 6506//12894 6515//12894 +f 6516//12895 6517//12895 6518//12895 +f 6516//12896 6518//12896 6511//12896 +f 6516//12897 6511//12897 6510//12897 +f 6519//12898 6504//12898 6506//12898 +f 6519//12899 6512//12899 6514//12899 +f 6519//12900 6506//12900 6512//12900 +f 6520//12901 6514//12901 6521//12901 +f 6520//12902 6504//12902 6519//12902 +f 6520//12903 6507//12903 6504//12903 +f 6520//12904 6519//12904 6514//12904 +f 6522//12905 6521//12905 6523//12905 +f 6522//12906 6520//12906 6521//12906 +f 6522//12907 6510//12907 6507//12907 +f 6522//12908 6507//12908 6520//12908 +f 6524//12909 6525//12909 6517//12909 +f 6524//12910 6523//12910 6525//12910 +f 6524//12911 6517//12911 6516//12911 +f 6524//12912 6516//12912 6510//12912 +f 6524//12913 6522//12913 6523//12913 +f 6524//12914 6510//12914 6522//12914 +f 6526//12915 6527//12915 6528//12915 +f 6529//12916 6530//12916 6527//12916 +f 6529//12917 6527//12917 6526//12917 +f 6531//12918 6532//12918 6530//12918 +f 6531//12919 6530//12919 6529//12919 +f 6533//12920 6534//12920 6532//12920 +f 6533//12921 6532//12921 6531//12921 +f 6505//12922 6528//12922 6515//12922 +f 6505//12923 6526//12923 6528//12923 +f 6535//12924 6536//12924 6537//12924 +f 6535//12925 6537//12925 6534//12925 +f 6535//12926 6534//12926 6533//12926 +f 6508//12927 6526//12927 6505//12927 +f 6508//12928 6529//12928 6526//12928 +f 6509//12929 6531//12929 6529//12929 +f 6509//12930 6529//12930 6508//12930 +f 6511//12931 6533//12931 6531//12931 +f 6511//12932 6531//12932 6509//12932 +f 6506//12933 6505//12933 6515//12933 +f 6518//12934 6517//12934 6536//12934 +f 6518//12935 6536//12935 6535//12935 +f 6518//12936 6535//12936 6533//12936 +f 6518//12937 6533//12937 6511//12937 +f 6504//12938 6508//12938 6505//12938 +f 6538//12939 6539//12939 6540//12939 +f 6538//12940 6540//12940 6541//12940 +f 6542//12941 6539//12941 6538//12941 +f 6542//12942 6543//12942 6539//12942 +f 6544//12943 6545//12943 6543//12943 +f 6544//12944 6543//12944 6542//12944 +f 6546//12945 6547//12945 6548//12945 +f 6546//12946 6541//12946 6547//12946 +f 6549//12947 6550//12947 6551//12947 +f 6549//12948 6551//12948 6552//12948 +f 6549//12949 6552//12949 6545//12949 +f 6549//12950 6545//12950 6544//12950 +f 6553//12951 6548//12951 6554//12951 +f 6553//12952 6538//12952 6541//12952 +f 6553//12953 6546//12953 6548//12953 +f 6553//12954 6541//12954 6546//12954 +f 6555//12955 6554//12955 6556//12955 +f 6555//12956 6538//12956 6553//12956 +f 6555//12957 6542//12957 6538//12957 +f 6555//12958 6553//12958 6554//12958 +f 6557//12959 6556//12959 6558//12959 +f 6557//12960 6555//12960 6556//12960 +f 6557//12961 6544//12961 6542//12961 +f 6557//12962 6542//12962 6555//12962 +f 6559//12963 6560//12963 6550//12963 +f 6559//12964 6558//12964 6560//12964 +f 6559//12965 6550//12965 6549//12965 +f 6559//12966 6549//12966 6544//12966 +f 6559//12967 6557//12967 6558//12967 +f 6559//12968 6544//12968 6557//12968 +f 6561//12969 6562//12969 6563//12969 +f 6564//12970 6565//12970 6562//12970 +f 6564//12971 6562//12971 6561//12971 +f 6566//12972 6567//12972 6565//12972 +f 6566//12973 6565//12973 6564//12973 +f 6568//12974 6569//12974 6567//12974 +f 6568//12975 6567//12975 6566//12975 +f 6540//12976 6561//12976 6563//12976 +f 6570//12977 6551//12977 6571//12977 +f 6570//12978 6571//12978 6569//12978 +f 6570//12979 6569//12979 6568//12979 +f 6539//12980 6561//12980 6540//12980 +f 6539//12981 6564//12981 6561//12981 +f 6543//12982 6566//12982 6564//12982 +f 6543//12983 6564//12983 6539//12983 +f 6545//12984 6568//12984 6566//12984 +f 6545//12985 6566//12985 6543//12985 +f 6541//12986 6563//12986 6547//12986 +f 6541//12987 6540//12987 6563//12987 +f 6552//12988 6551//12988 6570//12988 +f 6552//12989 6570//12989 6568//12989 +f 6552//12990 6568//12990 6545//12990 +f 6572//12991 6573//12991 6574//12991 +f 6572//12992 6575//12992 6573//12992 +f 6576//12993 6572//12993 6574//12993 +f 6576//12994 6574//12994 6577//12994 +f 6578//12995 6161//12995 6188//12995 +f 6578//12996 6188//12996 6579//12996 +f 6578//12997 6579//12997 6580//12997 +f 6581//12998 6582//12998 6583//12998 +f 6581//12999 6584//12999 6582//12999 +f 6581//13000 6577//13000 6584//13000 +f 6581//13001 6576//13001 6577//13001 +f 6585//13002 6578//13002 6580//13002 +f 6585//13003 6580//13003 6586//13003 +f 6587//13004 6585//13004 6586//13004 +f 6587//13005 6586//13005 6575//13005 +f 6588//13006 6575//13006 6572//13006 +f 6588//13007 6587//13007 6575//13007 +f 6589//13008 6572//13008 6576//13008 +f 6589//13009 6588//13009 6572//13009 +f 6590//13010 6589//13010 6576//13010 +f 6590//13011 6581//13011 6583//13011 +f 6590//13012 6576//13012 6581//13012 +f 6591//13013 6161//13013 6578//13013 +f 6591//13014 6578//13014 6585//13014 +f 6592//13015 6170//13015 6161//13015 +f 6592//13016 6161//13016 6591//13016 +f 6593//13017 6591//13017 6585//13017 +f 6593//13018 6585//13018 6587//13018 +f 6594//13019 6595//13019 6596//13019 +f 6594//13020 6596//13020 6597//13020 +f 6598//13021 6592//13021 6591//13021 +f 6594//13022 6597//13022 6599//13022 +f 6598//13023 6591//13023 6593//13023 +f 6600//13024 6601//13024 6595//13024 +f 6598//13025 6170//13025 6592//13025 +f 6602//13026 6593//13026 6587//13026 +f 6602//13027 6587//13027 6588//13027 +f 6603//13028 6598//13028 6593//13028 +f 6604//13029 6601//13029 6600//13029 +f 6603//13030 6593//13030 6602//13030 +f 6605//13031 6595//13031 6594//13031 +f 6605//13032 6600//13032 6595//13032 +f 6606//13033 6588//13033 6589//13033 +f 6605//13034 6594//13034 6599//13034 +f 6607//13035 6604//13035 6600//13035 +f 6606//13036 6602//13036 6588//13036 +f 6607//13037 6605//13037 6599//13037 +f 6607//13038 6600//13038 6605//13038 +f 6608//13039 6589//13039 6590//13039 +f 6609//13040 6610//13040 6601//13040 +f 6608//13041 6590//13041 6583//13041 +f 6608//13042 6583//13042 6611//13042 +f 6608//13043 6606//13043 6589//13043 +f 6612//13044 6579//13044 6610//13044 +f 6613//13045 6603//13045 6602//13045 +f 6613//13046 6602//13046 6606//13046 +f 6614//13047 6608//13047 6611//13047 +f 6615//13048 6609//13048 6601//13048 +f 6614//13049 6606//13049 6608//13049 +f 6614//13050 6613//13050 6606//13050 +f 6616//13051 6170//13051 6598//13051 +f 6573//13052 6612//13052 6610//13052 +f 6616//13053 6598//13053 6603//13053 +f 6573//13054 6610//13054 6609//13054 +f 6580//13055 6579//13055 6612//13055 +f 6617//13056 6616//13056 6603//13056 +f 6617//13057 6603//13057 6613//13057 +f 6618//13058 6601//13058 6604//13058 +f 6618//13059 6615//13059 6601//13059 +f 6619//13060 6611//13060 6620//13060 +f 6619//13061 6613//13061 6614//13061 +f 6619//13062 6617//13062 6613//13062 +f 6621//13063 6599//13063 6582//13063 +f 6621//13064 6604//13064 6607//13064 +f 6619//13065 6614//13065 6611//13065 +f 6622//13066 6173//13066 6170//13066 +f 6621//13067 6618//13067 6604//13067 +f 6622//13068 6170//13068 6616//13068 +f 6621//13069 6607//13069 6599//13069 +f 6622//13070 6616//13070 6617//13070 +f 6623//13071 6619//13071 6620//13071 +f 6574//13072 6609//13072 6615//13072 +f 6623//13073 6617//13073 6619//13073 +f 6574//13074 6573//13074 6609//13074 +f 6623//13075 6622//13075 6617//13075 +f 6624//13076 6625//13076 6174//13076 +f 6624//13077 6174//13077 6173//13077 +f 6624//13078 6620//13078 6625//13078 +f 6624//13079 6173//13079 6622//13079 +f 6624//13080 6623//13080 6620//13080 +f 6624//13081 6622//13081 6623//13081 +f 6586//13082 6580//13082 6612//13082 +f 6577//13083 6574//13083 6615//13083 +f 6577//13084 6615//13084 6618//13084 +f 6575//13085 6612//13085 6573//13085 +f 6575//13086 6586//13086 6612//13086 +f 6584//13087 6621//13087 6582//13087 +f 6584//13088 6618//13088 6621//13088 +f 6584//13089 6577//13089 6618//13089 +f 6626//13090 6627//13090 6628//13090 +f 6629//13091 6630//13091 6631//13091 +f 6629//13092 6631//13092 6632//13092 +f 6629//13093 6632//13093 6633//13093 +f 6634//13094 6635//13094 6630//13094 +f 6634//13095 6630//13095 6629//13095 +f 6634//13096 6629//13096 6633//13096 +f 6636//13097 6633//13097 6637//13097 +f 6636//13098 6634//13098 6633//13098 +f 6636//13099 6635//13099 6634//13099 +f 6638//13100 6639//13100 6635//13100 +f 6638//13101 6635//13101 6636//13101 +f 6638//13102 6636//13102 6637//13102 +f 6640//13103 6637//13103 6628//13103 +f 6640//13104 6638//13104 6637//13104 +f 6640//13105 6639//13105 6638//13105 +f 6641//13106 6627//13106 6639//13106 +f 6641//13107 6640//13107 6628//13107 +f 6641//13108 6628//13108 6627//13108 +f 6641//13109 6639//13109 6640//13109 +f 6642//13110 6643//13110 6627//13110 +f 6642//13111 6627//13111 6626//13111 +f 6644//13112 6643//13112 6642//13112 +f 6644//13113 6642//13113 6626//13113 +f 6645//13114 6646//13114 6643//13114 +f 6645//13115 6626//13115 6647//13115 +f 6645//13116 6643//13116 6644//13116 +f 6645//13117 6644//13117 6626//13117 +f 6648//13118 6649//13118 6650//13118 +f 6648//13119 6651//13119 6646//13119 +f 6648//13120 6650//13120 6651//13120 +f 6648//13121 6647//13121 6649//13121 +f 6648//13122 6646//13122 6645//13122 +f 6648//13123 6645//13123 6647//13123 +f 6652//13124 6653//13124 6654//13124 +f 6655//13125 6656//13125 6657//13125 +f 6655//13126 6657//13126 6658//13126 +f 6655//13127 6659//13127 6660//13127 +f 6655//13128 6658//13128 6659//13128 +f 6661//13129 6654//13129 6656//13129 +f 6661//13130 6660//13130 6662//13130 +f 6661//13131 6656//13131 6655//13131 +f 6661//13132 6655//13132 6660//13132 +f 6663//13133 6661//13133 6662//13133 +f 6663//13134 6654//13134 6661//13134 +f 6664//13135 6662//13135 6652//13135 +f 6664//13136 6663//13136 6662//13136 +f 6664//13137 6652//13137 6654//13137 +f 6664//13138 6654//13138 6663//13138 +f 6665//13139 6666//13139 6653//13139 +f 6665//13140 6652//13140 6667//13140 +f 6665//13141 6653//13141 6652//13141 +f 6668//13142 6667//13142 6669//13142 +f 6668//13143 6665//13143 6667//13143 +f 6668//13144 6666//13144 6665//13144 +f 6670//13145 6671//13145 6666//13145 +f 6670//13146 6666//13146 6668//13146 +f 6670//13147 6668//13147 6669//13147 +f 6672//13148 6669//13148 6673//13148 +f 6672//13149 6671//13149 6670//13149 +f 6672//13150 6670//13150 6669//13150 +f 6674//13151 6675//13151 6676//13151 +f 6674//13152 6676//13152 6671//13152 +f 6674//13153 6673//13153 6675//13153 +f 6674//13154 6671//13154 6672//13154 +f 6674//13155 6672//13155 6673//13155 +f 6677//13156 6678//13156 6627//13156 +f 6677//13157 6627//13157 6643//13157 +f 6679//13158 6680//13158 6681//13158 +f 6659//13159 6658//13159 6682//13159 +f 6683//13160 6675//13160 6684//13160 +f 6651//13161 6677//13161 6646//13161 +f 6660//13162 6659//13162 6682//13162 +f 6650//13163 6677//13163 6651//13163 +f 6650//13164 6679//13164 6681//13164 +f 6685//13165 6658//13165 6631//13165 +f 6650//13166 6681//13166 6675//13166 +f 6686//13167 6675//13167 6683//13167 +f 6685//13168 6682//13168 6658//13168 +f 6687//13169 6658//13169 6688//13169 +f 6687//13170 6631//13170 6658//13170 +f 6686//13171 6650//13171 6675//13171 +f 6686//13172 6677//13172 6650//13172 +f 6153//13173 6683//13173 6154//13173 +f 6153//13174 6686//13174 6683//13174 +f 6679//13175 6689//13175 6680//13175 +f 6689//13176 6690//13176 6691//13176 +f 6690//13177 6692//13177 6693//13177 +f 6692//13178 6694//13178 6695//13178 +f 6696//13179 6662//13179 6660//13179 +f 6694//13180 6697//13180 6698//13180 +f 6635//13181 6639//13181 6678//13181 +f 6639//13182 6627//13182 6678//13182 +f 6643//13183 6646//13183 6677//13183 +f 6688//13184 6698//13184 6697//13184 +f 6696//13185 6660//13185 6682//13185 +f 6698//13186 6695//13186 6694//13186 +f 6695//13187 6693//13187 6692//13187 +f 6693//13188 6691//13188 6690//13188 +f 6691//13189 6680//13189 6689//13189 +f 6673//13190 6669//13190 6684//13190 +f 6669//13191 6667//13191 6684//13191 +f 6630//13192 6685//13192 6631//13192 +f 6652//13193 6662//13193 6696//13193 +f 6697//13194 6687//13194 6688//13194 +f 6635//13195 6685//13195 6630//13195 +f 6667//13196 6652//13196 6696//13196 +f 6678//13197 6685//13197 6635//13197 +f 6684//13198 6667//13198 6696//13198 +f 6675//13199 6673//13199 6684//13199 +f 6196//13200 6596//13200 6699//13200 +f 6195//13201 6596//13201 6196//13201 +f 6596//13202 6595//13202 6699//13202 +f 6596//13203 6484//13203 6700//13203 +f 6195//13204 6484//13204 6596//13204 +f 6700//13205 6701//13205 6702//13205 +f 6484//13206 6701//13206 6700//13206 +f 6601//13207 6703//13207 6699//13207 +f 6484//13208 6704//13208 6485//13208 +f 6195//13209 6704//13209 6484//13209 +f 6704//13210 6449//13210 6485//13210 +f 6579//13211 6163//13211 6703//13211 +f 6704//13212 6705//13212 6449//13212 +f 6579//13213 6188//13213 6163//13213 +f 6706//13214 6185//13214 6707//13214 +f 6705//13215 6167//13215 6450//13215 +f 6595//13216 6601//13216 6699//13216 +f 6601//13217 6610//13217 6703//13217 +f 6610//13218 6579//13218 6703//13218 +f 6164//13219 6707//13219 6185//13219 +f 6707//13220 6708//13220 6706//13220 +f 6708//13221 6702//13221 6709//13221 +f 6709//13222 6702//13222 6701//13222 +f 6709//13223 6706//13223 6708//13223 +f 6169//13224 6450//13224 6167//13224 +f 6450//13225 6449//13225 6705//13225 +f 6179//13226 6710//13226 6711//13226 +f 6183//13227 6710//13227 6179//13227 +f 6711//13228 6712//13228 6713//13228 +f 6710//13229 6712//13229 6711//13229 +f 6713//13230 6189//13230 6191//13230 +f 6712//13231 6189//13231 6713//13231 +f 6714//13232 6160//13232 6159//13232 +f 6714//13233 6159//13233 6715//13233 +f 6716//13234 6715//13234 6717//13234 +f 6716//13235 6714//13235 6715//13235 +f 6718//13236 6717//13236 6719//13236 +f 6718//13237 6716//13237 6717//13237 +f 6720//13238 6721//13238 6722//13238 +f 6720//13239 6723//13239 6721//13239 +f 6724//13240 6722//13240 6725//13240 +f 6724//13241 6720//13241 6722//13241 +f 6726//13242 6725//13242 6727//13242 +f 6726//13243 6724//13243 6725//13243 +f 6728//13244 6729//13244 6730//13244 +f 6730//13245 6729//13245 6731//13245 +f 6731//13246 6732//13246 6733//13246 +f 6729//13247 6732//13247 6731//13247 +f 6733//13248 6734//13248 6735//13248 +f 6732//13249 6734//13249 6733//13249 +f 6719//13250 6735//13250 6734//13250 +f 6719//13251 6734//13251 6718//13251 +f 6727//13252 6682//13252 6685//13252 +f 6727//13253 6685//13253 6726//13253 +f 6693//13254 6736//13254 6737//13254 +f 6738//13255 6676//13255 6675//13255 +f 6738//13256 6681//13256 6680//13256 +f 6738//13257 6675//13257 6681//13257 +f 6738//13258 6739//13258 6676//13258 +f 6740//13259 6680//13259 6691//13259 +f 6740//13260 6737//13260 6739//13260 +f 6740//13261 6739//13261 6738//13261 +f 6740//13262 6738//13262 6680//13262 +f 6741//13263 6740//13263 6691//13263 +f 6741//13264 6737//13264 6740//13264 +f 6742//13265 6691//13265 6693//13265 +f 6742//13266 6741//13266 6691//13266 +f 6742//13267 6737//13267 6741//13267 +f 6742//13268 6693//13268 6737//13268 +f 6743//13269 6693//13269 6695//13269 +f 6743//13270 6744//13270 6736//13270 +f 6743//13271 6736//13271 6693//13271 +f 6745//13272 6695//13272 6698//13272 +f 6745//13273 6744//13273 6743//13273 +f 6745//13274 6743//13274 6695//13274 +f 6746//13275 6747//13275 6744//13275 +f 6746//13276 6745//13276 6698//13276 +f 6746//13277 6744//13277 6745//13277 +f 6748//13278 6698//13278 6688//13278 +f 6748//13279 6747//13279 6746//13279 +f 6748//13280 6746//13280 6698//13280 +f 6749//13281 6688//13281 6658//13281 +f 6749//13282 6658//13282 6657//13282 +f 6749//13283 6657//13283 6747//13283 +f 6749//13284 6748//13284 6688//13284 +f 6749//13285 6747//13285 6748//13285 +f 6750//13286 6692//13286 6751//13286 +f 6752//13287 6650//13287 6649//13287 +f 6752//13288 6649//13288 6753//13288 +f 6752//13289 6679//13289 6650//13289 +f 6754//13290 6689//13290 6679//13290 +f 6754//13291 6679//13291 6752//13291 +f 6754//13292 6752//13292 6753//13292 +f 6755//13293 6753//13293 6756//13293 +f 6755//13294 6754//13294 6753//13294 +f 6755//13295 6689//13295 6754//13295 +f 6757//13296 6690//13296 6689//13296 +f 6757//13297 6755//13297 6756//13297 +f 6757//13298 6689//13298 6755//13298 +f 6758//13299 6756//13299 6751//13299 +f 6758//13300 6757//13300 6756//13300 +f 6758//13301 6690//13301 6757//13301 +f 6759//13302 6692//13302 6690//13302 +f 6759//13303 6690//13303 6758//13303 +f 6759//13304 6758//13304 6751//13304 +f 6759//13305 6751//13305 6692//13305 +f 6760//13306 6694//13306 6692//13306 +f 6760//13307 6692//13307 6750//13307 +f 6761//13308 6760//13308 6750//13308 +f 6761//13309 6694//13309 6760//13309 +f 6762//13310 6750//13310 6763//13310 +f 6762//13311 6697//13311 6694//13311 +f 6762//13312 6694//13312 6761//13312 +f 6762//13313 6761//13313 6750//13313 +f 6764//13314 6763//13314 6632//13314 +f 6764//13315 6632//13315 6631//13315 +f 6764//13316 6687//13316 6697//13316 +f 6764//13317 6631//13317 6687//13317 +f 6764//13318 6697//13318 6762//13318 +f 6764//13319 6762//13319 6763//13319 +f 6765//13320 6766//13320 6767//13320 +f 6765//13321 6767//13321 6768//13321 +f 6769//13322 6166//13322 6770//13322 +f 6769//13323 6771//13323 6166//13323 +f 6772//13324 6773//13324 6774//13324 +f 6772//13325 6775//13325 6773//13325 +f 6772//13326 6768//13326 6775//13326 +f 6772//13327 6765//13327 6768//13327 +f 6776//13328 6769//13328 6770//13328 +f 6776//13329 6770//13329 6777//13329 +f 6778//13330 6707//13330 6771//13330 +f 6779//13331 6776//13331 6777//13331 +f 6779//13332 6777//13332 6766//13332 +f 6780//13333 6771//13333 6769//13333 +f 6780//13334 6778//13334 6771//13334 +f 6781//13335 6766//13335 6765//13335 +f 6781//13336 6779//13336 6766//13336 +f 6782//13337 6769//13337 6776//13337 +f 6782//13338 6780//13338 6769//13338 +f 6783//13339 6781//13339 6765//13339 +f 6783//13340 6772//13340 6774//13340 +f 6783//13341 6765//13341 6772//13341 +f 6784//13342 6778//13342 6780//13342 +f 6784//13343 6708//13343 6707//13343 +f 6784//13344 6707//13344 6778//13344 +f 6785//13345 6780//13345 6782//13345 +f 6785//13346 6784//13346 6780//13346 +f 6786//13347 6175//13347 6174//13347 +f 6787//13348 6776//13348 6779//13348 +f 6787//13349 6782//13349 6776//13349 +f 6788//13350 6187//13350 6175//13350 +f 6789//13351 6708//13351 6784//13351 +f 6789//13352 6784//13352 6785//13352 +f 6790//13353 6174//13353 6625//13353 +f 6790//13354 6625//13354 6791//13354 +f 6790//13355 6786//13355 6174//13355 +f 6792//13356 6787//13356 6779//13356 +f 6793//13357 6788//13357 6175//13357 +f 6792//13358 6779//13358 6781//13358 +f 6793//13359 6175//13359 6786//13359 +f 6794//13360 6785//13360 6782//13360 +f 6794//13361 6782//13361 6787//13361 +f 6795//13362 6790//13362 6791//13362 +f 6795//13363 6786//13363 6790//13363 +f 6795//13364 6793//13364 6786//13364 +f 6796//13365 6781//13365 6783//13365 +f 6797//13366 6166//13366 6187//13366 +f 6796//13367 6774//13367 6798//13367 +f 6796//13368 6783//13368 6774//13368 +f 6796//13369 6792//13369 6781//13369 +f 6799//13370 6187//13370 6788//13370 +f 6800//13371 6787//13371 6792//13371 +f 6800//13372 6794//13372 6787//13372 +f 6801//13373 6796//13373 6798//13373 +f 6801//13374 6792//13374 6796//13374 +f 6801//13375 6800//13375 6792//13375 +f 6802//13376 6797//13376 6187//13376 +f 6803//13377 6789//13377 6785//13377 +f 6770//13378 6166//13378 6797//13378 +f 6803//13379 6785//13379 6794//13379 +f 6804//13380 6803//13380 6794//13380 +f 6805//13381 6788//13381 6793//13381 +f 6804//13382 6794//13382 6800//13382 +f 6805//13383 6799//13383 6788//13383 +f 6806//13384 6798//13384 6807//13384 +f 6777//13385 6797//13385 6802//13385 +f 6806//13386 6801//13386 6798//13386 +f 6806//13387 6800//13387 6801//13387 +f 6806//13388 6804//13388 6800//13388 +f 6777//13389 6770//13389 6797//13389 +f 6808//13390 6702//13390 6708//13390 +f 6809//13391 6791//13391 6773//13391 +f 6809//13392 6795//13392 6791//13392 +f 6808//13393 6708//13393 6789//13393 +f 6809//13394 6793//13394 6795//13394 +f 6808//13395 6789//13395 6803//13395 +f 6809//13396 6805//13396 6793//13396 +f 6810//13397 6808//13397 6803//13397 +f 6767//13398 6187//13398 6799//13398 +f 6810//13399 6803//13399 6804//13399 +f 6767//13400 6802//13400 6187//13400 +f 6811//13401 6806//13401 6807//13401 +f 6771//13402 6707//13402 6164//13402 +f 6811//13403 6804//13403 6806//13403 +f 6771//13404 6164//13404 6166//13404 +f 6811//13405 6810//13405 6804//13405 +f 6812//13406 6700//13406 6702//13406 +f 6812//13407 6702//13407 6808//13407 +f 6812//13408 6808//13408 6810//13408 +f 6766//13409 6777//13409 6802//13409 +f 6766//13410 6802//13410 6767//13410 +f 6813//13411 6811//13411 6807//13411 +f 6813//13412 6810//13412 6811//13412 +f 6813//13413 6812//13413 6810//13413 +f 6768//13414 6799//13414 6805//13414 +f 6814//13415 6807//13415 6597//13415 +f 6814//13416 6597//13416 6596//13416 +f 6768//13417 6767//13417 6799//13417 +f 6814//13418 6596//13418 6700//13418 +f 6814//13419 6700//13419 6812//13419 +f 6814//13420 6813//13420 6807//13420 +f 6814//13421 6812//13421 6813//13421 +f 6775//13422 6809//13422 6773//13422 +f 6775//13423 6768//13423 6805//13423 +f 6775//13424 6805//13424 6809//13424 +f 6815//13425 6744//13425 6747//13425 +f 6815//13426 6816//13426 6817//13426 +f 6815//13427 6818//13427 6744//13427 +f 6815//13428 6817//13428 6818//13428 +f 6819//13429 6548//13429 6547//13429 +f 6820//13430 6821//13430 6822//13430 +f 6819//13431 6547//13431 6823//13431 +f 6824//13432 6747//13432 6657//13432 +f 6824//13433 6657//13433 6656//13433 +f 6824//13434 6823//13434 6816//13434 +f 6824//13435 6815//13435 6747//13435 +f 6824//13436 6816//13436 6815//13436 +f 6825//13437 6554//13437 6548//13437 +f 6825//13438 6548//13438 6819//13438 +f 6826//13439 6819//13439 6823//13439 +f 6826//13440 6824//13440 6656//13440 +f 6826//13441 6823//13441 6824//13441 +f 6827//13442 6556//13442 6554//13442 +f 6744//13443 6828//13443 6736//13443 +f 6827//13444 6554//13444 6825//13444 +f 6829//13445 6654//13445 6653//13445 +f 6829//13446 6656//13446 6654//13446 +f 6829//13447 6826//13447 6656//13447 +f 6829//13448 6825//13448 6819//13448 +f 6829//13449 6819//13449 6826//13449 +f 6830//13450 6558//13450 6556//13450 +f 6830//13451 6556//13451 6827//13451 +f 6831//13452 6653//13452 6666//13452 +f 6831//13453 6827//13453 6825//13453 +f 6831//13454 6829//13454 6653//13454 +f 6831//13455 6825//13455 6829//13455 +f 6832//13456 6560//13456 6558//13456 +f 6832//13457 6558//13457 6830//13457 +f 6833//13458 6827//13458 6831//13458 +f 6833//13459 6830//13459 6827//13459 +f 6833//13460 6831//13460 6666//13460 +f 6834//13461 6550//13461 6560//13461 +f 6834//13462 6560//13462 6832//13462 +f 6835//13463 6830//13463 6833//13463 +f 6835//13464 6666//13464 6671//13464 +f 6835//13465 6833//13465 6666//13465 +f 6835//13466 6832//13466 6830//13466 +f 6836//13467 6550//13467 6834//13467 +f 6836//13468 6837//13468 6550//13468 +f 6838//13469 6676//13469 6739//13469 +f 6838//13470 6832//13470 6835//13470 +f 6838//13471 6671//13471 6676//13471 +f 6838//13472 6834//13472 6832//13472 +f 6838//13473 6835//13473 6671//13473 +f 6839//13474 6840//13474 6837//13474 +f 6839//13475 6837//13475 6836//13475 +f 6839//13476 6820//13476 6840//13476 +f 6841//13477 6739//13477 6737//13477 +f 6841//13478 6838//13478 6739//13478 +f 6841//13479 6834//13479 6838//13479 +f 6841//13480 6836//13480 6834//13480 +f 6842//13481 6737//13481 6736//13481 +f 6842//13482 6828//13482 6820//13482 +f 6842//13483 6736//13483 6828//13483 +f 6842//13484 6841//13484 6737//13484 +f 6842//13485 6839//13485 6836//13485 +f 6842//13486 6836//13486 6841//13486 +f 6842//13487 6820//13487 6839//13487 +f 6820//13488 6822//13488 6840//13488 +f 6817//13489 6843//13489 6821//13489 +f 6817//13490 6821//13490 6820//13490 +f 6816//13491 6547//13491 6843//13491 +f 6816//13492 6843//13492 6817//13492 +f 6818//13493 6820//13493 6828//13493 +f 6818//13494 6828//13494 6744//13494 +f 6818//13495 6817//13495 6820//13495 +f 6823//13496 6547//13496 6816//13496 +f 6844//13497 6845//13497 6846//13497 +f 6844//13498 6847//13498 6845//13498 +f 6848//13499 6849//13499 6847//13499 +f 6848//13500 6847//13500 6844//13500 +f 6850//13501 6837//13501 6840//13501 +f 6850//13502 6550//13502 6837//13502 +f 6850//13503 6851//13503 6550//13503 +f 6852//13504 6547//13504 6853//13504 +f 6852//13505 6853//13505 6849//13505 +f 6852//13506 6849//13506 6848//13506 +f 6854//13507 6840//13507 6822//13507 +f 6854//13508 6846//13508 6851//13508 +f 6854//13509 6850//13509 6840//13509 +f 6854//13510 6851//13510 6850//13510 +f 6855//13511 6844//13511 6846//13511 +f 6855//13512 6846//13512 6854//13512 +f 6855//13513 6854//13513 6822//13513 +f 6856//13514 6822//13514 6821//13514 +f 6856//13515 6848//13515 6844//13515 +f 6856//13516 6855//13516 6822//13516 +f 6856//13517 6844//13517 6855//13517 +f 6857//13518 6843//13518 6547//13518 +f 6857//13519 6821//13519 6843//13519 +f 6857//13520 6547//13520 6852//13520 +f 6857//13521 6852//13521 6848//13521 +f 6857//13522 6856//13522 6821//13522 +f 6857//13523 6848//13523 6856//13523 +f 6858//13524 6859//13524 6551//13524 +f 6860//13525 6861//13525 6859//13525 +f 6860//13526 6859//13526 6858//13526 +f 6862//13527 6863//13527 6864//13527 +f 6862//13528 6864//13528 6861//13528 +f 6862//13529 6861//13529 6860//13529 +f 6865//13530 6866//13530 6863//13530 +f 6865//13531 6863//13531 6862//13531 +f 6867//13532 6551//13532 6550//13532 +f 6867//13533 6858//13533 6551//13533 +f 6868//13534 6563//13534 6866//13534 +f 6868//13535 6866//13535 6865//13535 +f 6845//13536 6858//13536 6867//13536 +f 6845//13537 6860//13537 6858//13537 +f 6847//13538 6862//13538 6860//13538 +f 6847//13539 6860//13539 6845//13539 +f 6849//13540 6865//13540 6862//13540 +f 6849//13541 6862//13541 6847//13541 +f 6851//13542 6867//13542 6550//13542 +f 6853//13543 6547//13543 6563//13543 +f 6853//13544 6868//13544 6865//13544 +f 6853//13545 6563//13545 6868//13545 +f 6853//13546 6865//13546 6849//13546 +f 6846//13547 6845//13547 6867//13547 +f 6846//13548 6867//13548 6851//13548 +f 6869//13549 6870//13549 6871//13549 +f 6872//13550 6873//13550 6569//13550 +f 6872//13551 6874//13551 6873//13551 +f 6875//13552 6876//13552 6877//13552 +f 6875//13553 6877//13553 6864//13553 +f 6872//13554 6878//13554 6874//13554 +f 6875//13555 6864//13555 6863//13555 +f 6875//13556 6879//13556 6876//13556 +f 6880//13557 6881//13557 6882//13557 +f 6883//13558 6884//13558 6879//13558 +f 6885//13559 6569//13559 6571//13559 +f 6883//13560 6879//13560 6875//13560 +f 6885//13561 6886//13561 6878//13561 +f 6883//13562 6875//13562 6863//13562 +f 6885//13563 6878//13563 6872//13563 +f 6885//13564 6872//13564 6569//13564 +f 6887//13565 6888//13565 6881//13565 +f 6889//13566 6890//13566 6869//13566 +f 6887//13567 6881//13567 6880//13567 +f 6891//13568 6892//13568 6890//13568 +f 6891//13569 6890//13569 6889//13569 +f 6893//13570 6863//13570 6866//13570 +f 6894//13571 6888//13571 6887//13571 +f 6893//13572 6883//13572 6863//13572 +f 6893//13573 6884//13573 6883//13573 +f 6895//13574 6886//13574 6885//13574 +f 6893//13575 6871//13575 6884//13575 +f 6895//13576 6882//13576 6886//13576 +f 6895//13577 6885//13577 6571//13577 +f 6896//13578 6871//13578 6893//13578 +f 6896//13579 6869//13579 6871//13579 +f 6896//13580 6893//13580 6866//13580 +f 6897//13581 6571//13581 6551//13581 +f 6897//13582 6895//13582 6571//13582 +f 6897//13583 6882//13583 6895//13583 +f 6897//13584 6880//13584 6882//13584 +f 6898//13585 6892//13585 6891//13585 +f 6899//13586 6900//13586 6892//13586 +f 6901//13587 6902//13587 6888//13587 +f 6901//13588 6888//13588 6894//13588 +f 6899//13589 6892//13589 6898//13589 +f 6903//13590 6866//13590 6563//13590 +f 6903//13591 6889//13591 6869//13591 +f 6903//13592 6869//13592 6896//13592 +f 6904//13593 6902//13593 6901//13593 +f 6903//13594 6896//13594 6866//13594 +f 6905//13595 6887//13595 6880//13595 +f 6906//13596 6891//13596 6889//13596 +f 6905//13597 6897//13597 6551//13597 +f 6906//13598 6889//13598 6903//13598 +f 6905//13599 6880//13599 6897//13599 +f 6906//13600 6903//13600 6563//13600 +f 6907//13601 6551//13601 6859//13601 +f 6907//13602 6894//13602 6887//13602 +f 6907//13603 6887//13603 6905//13603 +f 6908//13604 6900//13604 6899//13604 +f 6907//13605 6905//13605 6551//13605 +f 6909//13606 6910//13606 6902//13606 +f 6909//13607 6902//13607 6904//13607 +f 6911//13608 6563//13608 6562//13608 +f 6911//13609 6891//13609 6906//13609 +f 6911//13610 6898//13610 6891//13610 +f 6912//13611 6876//13611 6913//13611 +f 6911//13612 6906//13612 6563//13612 +f 6912//13613 6913//13613 6910//13613 +f 6912//13614 6910//13614 6909//13614 +f 6914//13615 6915//13615 6900//13615 +f 6916//13616 6901//13616 6894//13616 +f 6916//13617 6894//13617 6907//13617 +f 6914//13618 6900//13618 6908//13618 +f 6917//13619 6911//13619 6562//13619 +f 6916//13620 6907//13620 6859//13620 +f 6917//13621 6898//13621 6911//13621 +f 6918//13622 6859//13622 6861//13622 +f 6918//13623 6904//13623 6901//13623 +f 6918//13624 6916//13624 6859//13624 +f 6917//13625 6899//13625 6898//13625 +f 6918//13626 6901//13626 6916//13626 +f 6919//13627 6909//13627 6904//13627 +f 6920//13628 6915//13628 6914//13628 +f 6919//13629 6918//13629 6861//13629 +f 6919//13630 6904//13630 6918//13630 +f 6921//13631 6899//13631 6917//13631 +f 6922//13632 6861//13632 6864//13632 +f 6922//13633 6877//13633 6876//13633 +f 6922//13634 6864//13634 6877//13634 +f 6921//13635 6562//13635 6565//13635 +f 6922//13636 6876//13636 6912//13636 +f 6921//13637 6917//13637 6562//13637 +f 6922//13638 6912//13638 6909//13638 +f 6921//13639 6908//13639 6899//13639 +f 6922//13640 6919//13640 6861//13640 +f 6922//13641 6909//13641 6919//13641 +f 6923//13642 6915//13642 6920//13642 +f 6923//13643 6924//13643 6915//13643 +f 6925//13644 6908//13644 6921//13644 +f 6925//13645 6914//13645 6908//13645 +f 6925//13646 6921//13646 6565//13646 +f 6874//13647 6924//13647 6923//13647 +f 6926//13648 6914//13648 6925//13648 +f 6926//13649 6920//13649 6914//13649 +f 6926//13650 6925//13650 6565//13650 +f 6926//13651 6565//13651 6567//13651 +f 6878//13652 6927//13652 6924//13652 +f 6878//13653 6924//13653 6874//13653 +f 6928//13654 6923//13654 6920//13654 +f 6928//13655 6920//13655 6926//13655 +f 6928//13656 6926//13656 6567//13656 +f 6879//13657 6929//13657 6913//13657 +f 6879//13658 6913//13658 6876//13658 +f 6886//13659 6927//13659 6878//13659 +f 6884//13660 6870//13660 6929//13660 +f 6873//13661 6928//13661 6567//13661 +f 6873//13662 6567//13662 6569//13662 +f 6884//13663 6929//13663 6879//13663 +f 6873//13664 6923//13664 6928//13664 +f 6873//13665 6874//13665 6923//13665 +f 6882//13666 6881//13666 6927//13666 +f 6871//13667 6870//13667 6884//13667 +f 6882//13668 6927//13668 6886//13668 +f 6869//13669 6890//13669 6870//13669 +f 6930//13670 6931//13670 6932//13670 +f 6933//13671 6934//13671 6935//13671 +f 6933//13672 6936//13672 6881//13672 +f 6937//13673 6888//13673 6902//13673 +f 6937//13674 6933//13674 6888//13674 +f 6937//13675 6934//13675 6933//13675 +f 6938//13676 6939//13676 6940//13676 +f 6937//13677 6941//13677 6934//13677 +f 6938//13678 6940//13678 6930//13678 +f 6942//13679 6910//13679 6913//13679 +f 6942//13680 6902//13680 6910//13680 +f 6942//13681 6943//13681 6944//13681 +f 6942//13682 6913//13682 6943//13682 +f 6942//13683 6941//13683 6937//13683 +f 6942//13684 6944//13684 6945//13684 +f 6946//13685 6947//13685 6939//13685 +f 6942//13686 6945//13686 6941//13686 +f 6942//13687 6937//13687 6902//13687 +f 6946//13688 6939//13688 6938//13688 +f 6948//13689 6949//13689 6947//13689 +f 6948//13690 6947//13690 6946//13690 +f 6950//13691 6951//13691 6949//13691 +f 6950//13692 6949//13692 6948//13692 +f 6935//13693 6952//13693 6951//13693 +f 6935//13694 6951//13694 6950//13694 +f 6934//13695 6953//13695 6952//13695 +f 6934//13696 6952//13696 6935//13696 +f 6941//13697 6954//13697 6953//13697 +f 6941//13698 6953//13698 6934//13698 +f 6945//13699 6955//13699 6954//13699 +f 6945//13700 6954//13700 6941//13700 +f 6945//13701 6944//13701 6955//13701 +f 6956//13702 6913//13702 6929//13702 +f 6956//13703 6944//13703 6943//13703 +f 6956//13704 6943//13704 6913//13704 +f 6944//13705 6957//13705 6955//13705 +f 6956//13706 6958//13706 6944//13706 +f 6959//13707 6929//13707 6870//13707 +f 6959//13708 6960//13708 6958//13708 +f 6959//13709 6956//13709 6929//13709 +f 6959//13710 6958//13710 6956//13710 +f 6961//13711 6870//13711 6890//13711 +f 6961//13712 6932//13712 6960//13712 +f 6961//13713 6960//13713 6959//13713 +f 6961//13714 6959//13714 6870//13714 +f 6962//13715 6961//13715 6890//13715 +f 6962//13716 6890//13716 6892//13716 +f 6962//13717 6930//13717 6932//13717 +f 6962//13718 6932//13718 6961//13718 +f 6963//13719 6892//13719 6900//13719 +f 6963//13720 6962//13720 6892//13720 +f 6963//13721 6930//13721 6962//13721 +f 6963//13722 6938//13722 6930//13722 +f 6964//13723 6963//13723 6900//13723 +f 6964//13724 6938//13724 6963//13724 +f 6964//13725 6900//13725 6915//13725 +f 6964//13726 6946//13726 6938//13726 +f 6965//13727 6915//13727 6924//13727 +f 6958//13728 6966//13728 6957//13728 +f 6965//13729 6946//13729 6964//13729 +f 6958//13730 6957//13730 6944//13730 +f 6965//13731 6964//13731 6915//13731 +f 6965//13732 6948//13732 6946//13732 +f 6967//13733 6924//13733 6927//13733 +f 6960//13734 6968//13734 6966//13734 +f 6967//13735 6965//13735 6924//13735 +f 6967//13736 6948//13736 6965//13736 +f 6960//13737 6966//13737 6958//13737 +f 6967//13738 6950//13738 6948//13738 +f 6936//13739 6927//13739 6881//13739 +f 6932//13740 6931//13740 6968//13740 +f 6936//13741 6967//13741 6927//13741 +f 6936//13742 6950//13742 6967//13742 +f 6932//13743 6968//13743 6960//13743 +f 6936//13744 6935//13744 6950//13744 +f 6933//13745 6881//13745 6888//13745 +f 6933//13746 6935//13746 6936//13746 +f 6930//13747 6940//13747 6931//13747 +f 6969//13748 6970//13748 6971//13748 +f 6969//13749 6972//13749 6970//13749 +f 6973//13750 6957//13750 6966//13750 +f 6973//13751 6974//13751 6975//13751 +f 6973//13752 6975//13752 6957//13752 +f 6969//13753 6971//13753 6949//13753 +f 6973//13754 6976//13754 6974//13754 +f 6977//13755 6517//13755 6525//13755 +f 6977//13756 6525//13756 6978//13756 +f 6979//13757 6966//13757 6968//13757 +f 6980//13758 6981//13758 6972//13758 +f 6979//13759 6973//13759 6966//13759 +f 6980//13760 6969//13760 6951//13760 +f 6979//13761 6976//13761 6973//13761 +f 6979//13762 6982//13762 6976//13762 +f 6980//13763 6972//13763 6969//13763 +f 6983//13764 6515//13764 6984//13764 +f 6983//13765 6984//13765 6985//13765 +f 6986//13766 6517//13766 6977//13766 +f 6987//13767 6515//13767 6983//13767 +f 6988//13768 6989//13768 6517//13768 +f 6990//13769 6991//13769 6982//13769 +f 6988//13770 6517//13770 6986//13770 +f 6990//13771 6979//13771 6968//13771 +f 6992//13772 6951//13772 6952//13772 +f 6990//13773 6982//13773 6979//13773 +f 6992//13774 6978//13774 6981//13774 +f 6992//13775 6981//13775 6980//13775 +f 6993//13776 6968//13776 6931//13776 +f 6992//13777 6980//13777 6951//13777 +f 6993//13778 6985//13778 6991//13778 +f 6993//13779 6991//13779 6990//13779 +f 6993//13780 6990//13780 6968//13780 +f 6994//13781 6977//13781 6978//13781 +f 6994//13782 6978//13782 6992//13782 +f 6994//13783 6992//13783 6952//13783 +f 6995//13784 6513//13784 6515//13784 +f 6995//13785 6515//13785 6987//13785 +f 6996//13786 6989//13786 6988//13786 +f 6997//13787 6513//13787 6995//13787 +f 6998//13788 6999//13788 6989//13788 +f 6998//13789 6989//13789 6996//13789 +f 7000//13790 6985//13790 6993//13790 +f 7000//13791 6993//13791 6931//13791 +f 7000//13792 6983//13792 6985//13792 +f 7001//13793 6952//13793 6953//13793 +f 7001//13794 6986//13794 6977//13794 +f 7002//13795 6931//13795 6940//13795 +f 7001//13796 6977//13796 6994//13796 +f 7002//13797 6987//13797 6983//13797 +f 7001//13798 6994//13798 6952//13798 +f 7002//13799 6983//13799 7000//13799 +f 7002//13800 7000//13800 6931//13800 +f 7003//13801 6988//13801 6986//13801 +f 7003//13802 6986//13802 7001//13802 +f 7004//13803 6514//13803 6513//13803 +f 7003//13804 7001//13804 6953//13804 +f 7004//13805 6513//13805 6997//13805 +f 7005//13806 6999//13806 6998//13806 +f 7006//13807 7002//13807 6940//13807 +f 7007//13808 6974//13808 7008//13808 +f 7006//13809 6995//13809 6987//13809 +f 7006//13810 6987//13810 7002//13810 +f 7007//13811 7008//13811 6999//13811 +f 7007//13812 6999//13812 7005//13812 +f 7009//13813 6953//13813 6954//13813 +f 7009//13814 6988//13814 7003//13814 +f 7009//13815 6996//13815 6988//13815 +f 7010//13816 6514//13816 7004//13816 +f 7009//13817 7003//13817 6953//13817 +f 7011//13818 6995//13818 7006//13818 +f 7011//13819 6940//13819 6939//13819 +f 7011//13820 6997//13820 6995//13820 +f 7012//13821 6998//13821 6996//13821 +f 7012//13822 6996//13822 7009//13822 +f 7011//13823 7006//13823 6940//13823 +f 7012//13824 7009//13824 6954//13824 +f 7013//13825 6514//13825 7010//13825 +f 7014//13826 6954//13826 6955//13826 +f 7014//13827 7005//13827 6998//13827 +f 7013//13828 6521//13828 6514//13828 +f 7014//13829 6998//13829 7012//13829 +f 7015//13830 7004//13830 6997//13830 +f 7014//13831 7012//13831 6954//13831 +f 7016//13832 6955//13832 6957//13832 +f 7015//13833 6997//13833 7011//13833 +f 7016//13834 6975//13834 6974//13834 +f 7016//13835 6957//13835 6975//13835 +f 7016//13836 6974//13836 7007//13836 +f 7015//13837 7011//13837 6939//13837 +f 7016//13838 7007//13838 7005//13838 +f 7016//13839 7005//13839 7014//13839 +f 7016//13840 7014//13840 6955//13840 +f 7017//13841 6521//13841 7013//13841 +f 7018//13842 6939//13842 6947//13842 +f 7018//13843 7015//13843 6939//13843 +f 7018//13844 7004//13844 7015//13844 +f 7018//13845 7010//13845 7004//13845 +f 6970//13846 6523//13846 6521//13846 +f 6970//13847 6521//13847 7017//13847 +f 7019//13848 7018//13848 6947//13848 +f 7019//13849 7010//13849 7018//13849 +f 7019//13850 7013//13850 7010//13850 +f 6972//13851 6523//13851 6970//13851 +f 7020//13852 6947//13852 6949//13852 +f 7020//13853 7019//13853 6947//13853 +f 7020//13854 7013//13854 7019//13854 +f 7020//13855 7017//13855 7013//13855 +f 6976//13856 7021//13856 7008//13856 +f 6976//13857 7008//13857 6974//13857 +f 6981//13858 6525//13858 6523//13858 +f 6981//13859 6523//13859 6972//13859 +f 6971//13860 6970//13860 7017//13860 +f 6971//13861 7020//13861 6949//13861 +f 6982//13862 7021//13862 6976//13862 +f 6971//13863 7017//13863 7020//13863 +f 6991//13864 6984//13864 7021//13864 +f 6991//13865 7021//13865 6982//13865 +f 6978//13866 6525//13866 6981//13866 +f 6985//13867 6984//13867 6991//13867 +f 6969//13868 6949//13868 6951//13868 +f 7022//13869 7023//13869 7024//13869 +f 7022//13870 7025//13870 7023//13870 +f 7026//13871 7027//13871 7025//13871 +f 7026//13872 7025//13872 7022//13872 +f 7028//13873 6517//13873 6989//13873 +f 7028//13874 7029//13874 6517//13874 +f 7030//13875 6515//13875 6528//13875 +f 7030//13876 6528//13876 7031//13876 +f 7030//13877 7031//13877 7027//13877 +f 7030//13878 7027//13878 7026//13878 +f 7032//13879 6989//13879 6999//13879 +f 7032//13880 7029//13880 7028//13880 +f 7032//13881 7028//13881 6989//13881 +f 7032//13882 7024//13882 7029//13882 +f 7033//13883 6999//13883 7008//13883 +f 7033//13884 7008//13884 7021//13884 +f 7033//13885 7024//13885 7032//13885 +f 7033//13886 7022//13886 7024//13886 +f 7033//13887 7032//13887 6999//13887 +f 7034//13888 7021//13888 6984//13888 +f 7034//13889 7026//13889 7022//13889 +f 7034//13890 7033//13890 7021//13890 +f 7034//13891 7022//13891 7033//13891 +f 7035//13892 6984//13892 6515//13892 +f 7035//13893 6515//13893 7030//13893 +f 7035//13894 7030//13894 7026//13894 +f 7035//13895 7034//13895 6984//13895 +f 7035//13896 7026//13896 7034//13896 +f 7036//13897 7037//13897 7038//13897 +f 7036//13898 7038//13898 6536//13898 +f 7039//13899 7040//13899 7037//13899 +f 7039//13900 7037//13900 7036//13900 +f 7041//13901 7040//13901 7039//13901 +f 7042//13902 7043//13902 7040//13902 +f 7042//13903 7040//13903 7041//13903 +f 7044//13904 7036//13904 6536//13904 +f 7045//13905 6528//13905 7046//13905 +f 7045//13906 7046//13906 7043//13906 +f 7045//13907 7043//13907 7042//13907 +f 7023//13908 7039//13908 7036//13908 +f 7023//13909 7036//13909 7044//13909 +f 7025//13910 7041//13910 7039//13910 +f 7025//13911 7039//13911 7023//13911 +f 7027//13912 7041//13912 7025//13912 +f 7027//13913 7042//13913 7041//13913 +f 7029//13914 6536//13914 6517//13914 +f 7029//13915 7044//13915 6536//13915 +f 7031//13916 6528//13916 7045//13916 +f 7031//13917 7045//13917 7042//13917 +f 7031//13918 7042//13918 7027//13918 +f 7024//13919 7023//13919 7044//13919 +f 7024//13920 7044//13920 7029//13920 +f 7047//13921 6763//13921 7048//13921 +f 7049//13922 7046//13922 6528//13922 +f 7049//13923 7048//13923 7050//13923 +f 7049//13924 7050//13924 7051//13924 +f 7049//13925 7051//13925 7046//13925 +f 7052//13926 6633//13926 6632//13926 +f 7052//13927 6632//13927 7047//13927 +f 7053//13928 6528//13928 6527//13928 +f 7053//13929 7047//13929 7048//13929 +f 7053//13930 7048//13930 7049//13930 +f 7053//13931 7049//13931 6528//13931 +f 7054//13932 6637//13932 6633//13932 +f 7054//13933 6633//13933 7052//13933 +f 7055//13934 6527//13934 6530//13934 +f 7055//13935 7047//13935 7053//13935 +f 7055//13936 7052//13936 7047//13936 +f 7055//13937 7053//13937 6527//13937 +f 7056//13938 6628//13938 6637//13938 +f 7056//13939 6637//13939 7054//13939 +f 7057//13940 6530//13940 6532//13940 +f 7057//13941 7052//13941 7055//13941 +f 7057//13942 7055//13942 6530//13942 +f 7057//13943 7054//13943 7052//13943 +f 7058//13944 6626//13944 6628//13944 +f 7058//13945 6628//13945 7056//13945 +f 7059//13946 6532//13946 6534//13946 +f 7059//13947 7057//13947 6532//13947 +f 7059//13948 7054//13948 7057//13948 +f 7059//13949 7056//13949 7054//13949 +f 7060//13950 6647//13950 6626//13950 +f 7060//13951 6626//13951 7058//13951 +f 7061//13952 6534//13952 6537//13952 +f 7061//13953 7058//13953 7056//13953 +f 7061//13954 7059//13954 6534//13954 +f 7061//13955 7056//13955 7059//13955 +f 7062//13956 6753//13956 6649//13956 +f 7062//13957 6649//13957 6647//13957 +f 7062//13958 6647//13958 7060//13958 +f 7063//13959 7061//13959 6537//13959 +f 7063//13960 7060//13960 7058//13960 +f 7063//13961 7058//13961 7061//13961 +f 7064//13962 6756//13962 6753//13962 +f 7064//13963 6753//13963 7062//13963 +f 7065//13964 7062//13964 7060//13964 +f 7065//13965 7063//13965 6537//13965 +f 7065//13966 6537//13966 6536//13966 +f 7065//13967 7060//13967 7063//13967 +f 7066//13968 6756//13968 7064//13968 +f 7066//13969 7067//13969 6756//13969 +f 7068//13970 6536//13970 7038//13970 +f 7068//13971 7064//13971 7062//13971 +f 7068//13972 7065//13972 6536//13972 +f 7068//13973 7062//13973 7065//13973 +f 7069//13974 7038//13974 7037//13974 +f 7069//13975 7070//13975 7067//13975 +f 7069//13976 7064//13976 7068//13976 +f 7069//13977 7066//13977 7064//13977 +f 7069//13978 7068//13978 7038//13978 +f 7069//13979 7067//13979 7066//13979 +f 7069//13980 7037//13980 7070//13980 +f 7067//13981 6751//13981 6756//13981 +f 7040//13982 7070//13982 7037//13982 +f 7050//13983 6750//13983 6751//13983 +f 7050//13984 6751//13984 7067//13984 +f 7048//13985 6763//13985 6750//13985 +f 7048//13986 6750//13986 7050//13986 +f 7051//13987 7067//13987 7070//13987 +f 7051//13988 7070//13988 7040//13988 +f 7051//13989 7043//13989 7046//13989 +f 7051//13990 7040//13990 7043//13990 +f 7051//13991 7050//13991 7067//13991 +f 7047//13992 6632//13992 6763//13992 +f 7071//13993 7072//13993 7073//13993 +f 7074//13994 7075//13994 7076//13994 +f 7071//13995 7077//13995 6709//13995 +f 7071//13996 7073//13996 7077//13996 +f 7078//13997 6177//13997 6186//13997 +f 7079//13998 6484//13998 7080//13998 +f 7079//13999 7080//13999 7081//13999 +f 7078//14000 7082//14000 6177//14000 +f 7079//14001 7081//14001 7083//14001 +f 7084//14002 6701//14002 6484//14002 +f 7084//14003 6484//14003 7079//14003 +f 7085//14004 7074//14004 7086//14004 +f 7084//14005 7083//14005 7071//14005 +f 7084//14006 7071//14006 6701//14006 +f 7085//14007 7086//14007 7087//14007 +f 7084//14008 7079//14008 7083//14008 +f 7088//14009 7087//14009 7082//14009 +f 7088//14010 7082//14010 7078//14010 +f 7089//14011 6186//14011 6165//14011 +f 7089//14012 7078//14012 6186//14012 +f 7089//14013 7088//14013 7078//14013 +f 7090//14014 7091//14014 7092//14014 +f 7090//14015 7092//14015 7075//14015 +f 7093//14016 7085//14016 7087//14016 +f 7093//14017 7087//14017 7088//14017 +f 7094//14018 7095//14018 7091//14018 +f 7096//14019 7075//14019 7074//14019 +f 7096//14020 7090//14020 7075//14020 +f 7097//14021 7093//14021 7088//14021 +f 7097//14022 7088//14022 7089//14022 +f 7098//14023 7096//14023 7074//14023 +f 7098//14024 7074//14024 7085//14024 +f 7099//14025 7097//14025 7089//14025 +f 7099//14026 7089//14026 6165//14026 +f 7100//14027 7101//14027 7095//14027 +f 7100//14028 7095//14028 7094//14028 +f 7102//14029 7098//14029 7085//14029 +f 7102//14030 7085//14030 7093//14030 +f 7103//14031 7094//14031 7091//14031 +f 7103//14032 7091//14032 7090//14032 +f 7104//14033 7105//14033 6458//14033 +f 7106//14034 7093//14034 7097//14034 +f 7106//14035 7102//14035 7093//14035 +f 7107//14036 7105//14036 7104//14036 +f 7108//14037 6458//14037 6178//14037 +f 7108//14038 6178//14038 6176//14038 +f 7109//14039 7103//14039 7090//14039 +f 7108//14040 7104//14040 6458//14040 +f 7109//14041 7090//14041 7096//14041 +f 7110//14042 7111//14042 7105//14042 +f 7110//14043 7105//14043 7107//14043 +f 7112//14044 7094//14044 7103//14044 +f 7113//14045 7104//14045 7108//14045 +f 7081//14046 7101//14046 7100//14046 +f 7114//14047 6176//14047 6177//14047 +f 7114//14048 7108//14048 6176//14048 +f 7114//14049 7113//14049 7108//14049 +f 7115//14050 7103//14050 7109//14050 +f 7115//14051 7112//14051 7103//14051 +f 7116//14052 7107//14052 7104//14052 +f 7117//14053 7109//14053 7096//14053 +f 7116//14054 7104//14054 7113//14054 +f 7117//14055 7096//14055 7098//14055 +f 7118//14056 6165//14056 6185//14056 +f 7118//14057 7106//14057 7097//14057 +f 7118//14058 7099//14058 6165//14058 +f 7118//14059 6185//14059 6706//14059 +f 7119//14060 7111//14060 7110//14060 +f 7118//14061 7097//14061 7099//14061 +f 7120//14062 7114//14062 6177//14062 +f 7120//14063 7113//14063 7114//14063 +f 7121//14064 7115//14064 7109//14064 +f 7120//14065 7116//14065 7113//14065 +f 7121//14066 7109//14066 7117//14066 +f 7092//14067 7091//14067 7111//14067 +f 7080//14068 6484//14068 6479//14068 +f 7092//14069 7111//14069 7119//14069 +f 7080//14070 6479//14070 7101//14070 +f 7080//14071 7101//14071 7081//14071 +f 7072//14072 7100//14072 7094//14072 +f 7122//14073 7110//14073 7107//14073 +f 7072//14074 7094//14074 7112//14074 +f 7122//14075 7107//14075 7116//14075 +f 7123//14076 7117//14076 7098//14076 +f 7123//14077 7098//14077 7102//14077 +f 7124//14078 7116//14078 7120//14078 +f 7124//14079 7122//14079 7116//14079 +f 7073//14080 7072//14080 7112//14080 +f 7082//14081 7124//14081 7120//14081 +f 7073//14082 7112//14082 7115//14082 +f 7082//14083 7120//14083 6177//14083 +f 7076//14084 7110//14084 7122//14084 +f 7076//14085 7119//14085 7110//14085 +f 7125//14086 7102//14086 7106//14086 +f 7125//14087 7106//14087 7118//14087 +f 7125//14088 7118//14088 6706//14088 +f 7125//14089 7123//14089 7102//14089 +f 7126//14090 7117//14090 7123//14090 +f 7126//14091 7121//14091 7117//14091 +f 7086//14092 7076//14092 7122//14092 +f 7077//14093 7126//14093 6709//14093 +f 7086//14094 7122//14094 7124//14094 +f 7077//14095 7115//14095 7121//14095 +f 7077//14096 7073//14096 7115//14096 +f 7077//14097 7121//14097 7126//14097 +f 7127//14098 6709//14098 7126//14098 +f 7127//14099 6706//14099 6709//14099 +f 7127//14100 7123//14100 7125//14100 +f 7075//14101 7092//14101 7119//14101 +f 7127//14102 7125//14102 6706//14102 +f 7075//14103 7119//14103 7076//14103 +f 7127//14104 7126//14104 7123//14104 +f 7083//14105 7081//14105 7100//14105 +f 7087//14106 7124//14106 7082//14106 +f 7087//14107 7086//14107 7124//14107 +f 7083//14108 7100//14108 7072//14108 +f 7074//14109 7076//14109 7086//14109 +f 7071//14110 6709//14110 6701//14110 +f 7071//14111 7083//14111 7072//14111 +f 6487//14112 6479//14112 6478//14112 +f 6469//14113 6479//14113 6487//14113 +f 6468//14114 6479//14114 6469//14114 +f 6458//14115 6479//14115 6468//14115 +f 7105//14116 7101//14116 6458//14116 +f 7111//14117 7101//14117 7105//14117 +f 7091//14118 7101//14118 7111//14118 +f 7095//14119 7101//14119 7091//14119 +f 6458//14120 7101//14120 6479//14120 +f 6599//14121 6597//14121 6807//14121 +f 6582//14122 6807//14122 6798//14122 +f 6582//14123 6599//14123 6807//14123 +f 6583//14124 6798//14124 6774//14124 +f 6583//14125 6582//14125 6798//14125 +f 6611//14126 6774//14126 6773//14126 +f 6611//14127 6583//14127 6774//14127 +f 6620//14128 6773//14128 6791//14128 +f 6620//14129 6791//14129 6625//14129 +f 6620//14130 6611//14130 6773//14130 +f 6437//14131 7128//14131 6438//14131 +f 6437//14132 7129//14132 7128//14132 +f 7128//14133 7130//14133 7131//14133 +f 7129//14134 7130//14134 7128//14134 +f 6209//14135 7132//14135 7133//14135 +f 7131//14136 7134//14136 7133//14136 +f 7130//14137 7134//14137 7131//14137 +f 7133//14138 7134//14138 6209//14138 +f 7134//14139 6351//14139 6209//14139 +f 7132//14140 7135//14140 7133//14140 +f 6209//14141 6348//14141 6210//14141 +f 6351//14142 6348//14142 6209//14142 +f 7132//14143 7136//14143 7135//14143 +f 7134//14144 7137//14144 6351//14144 +f 6348//14145 6347//14145 6210//14145 +f 7137//14146 7138//14146 7139//14146 +f 7134//14147 7138//14147 7137//14147 +f 7140//14148 6421//14148 7135//14148 +f 7138//14149 7141//14149 7142//14149 +f 6314//14150 6266//14150 6243//14150 +f 7141//14151 6426//14151 6439//14151 +f 7138//14152 6426//14152 7141//14152 +f 7140//14153 6419//14153 6421//14153 +f 7136//14154 7140//14154 7135//14154 +f 6243//14155 6250//14155 6333//14155 +f 6314//14156 6313//14156 6266//14156 +f 6333//14157 6314//14157 6243//14157 +f 6347//14158 6333//14158 6250//14158 +f 6347//14159 6250//14159 6210//14159 +f 7142//14160 7139//14160 7138//14160 +f 7143//14161 6361//14161 7144//14161 +f 6390//14162 6389//14162 6362//14162 +f 6390//14163 6362//14163 6361//14163 +f 7145//14164 6380//14164 7146//14164 +f 6386//14165 6361//14165 7143//14165 +f 6386//14166 7147//14166 7148//14166 +f 6386//14167 6390//14167 6361//14167 +f 7149//14168 7145//14168 7146//14168 +f 7150//14169 6386//14169 7143//14169 +f 6406//14170 6380//14170 6379//14170 +f 7150//14171 7147//14171 6386//14171 +f 6409//14172 7150//14172 7143//14172 +f 6406//14173 7146//14173 6380//14173 +f 6408//14174 7150//14174 6409//14174 +f 7151//14175 7146//14175 6406//14175 +f 6399//14176 6403//14176 6376//14176 +f 6397//14177 6399//14177 6373//14177 +f 6383//14178 6397//14178 6356//14178 +f 6392//14179 6383//14179 6369//14179 +f 6389//14180 6392//14180 6365//14180 +f 7152//14181 7151//14181 6406//14181 +f 7153//14182 7148//14182 7147//14182 +f 7154//14183 7153//14183 7147//14183 +f 7155//14184 7156//14184 7157//14184 +f 6365//14185 6362//14185 6389//14185 +f 6369//14186 6365//14186 6392//14186 +f 7158//14187 7149//14187 7146//14187 +f 6356//14188 6369//14188 6383//14188 +f 6373//14189 6356//14189 6397//14189 +f 6376//14190 6373//14190 6399//14190 +f 7159//14191 7149//14191 7158//14191 +f 7160//14192 7159//14192 7158//14192 +f 7161//14193 7162//14193 7144//14193 +f 6403//14194 6379//14194 6376//14194 +f 6403//14195 6406//14195 6379//14195 +f 7163//14196 7151//14196 7152//14196 +f 7157//14197 7163//14197 7155//14197 +f 7157//14198 7151//14198 7163//14198 +f 7144//14199 7160//14199 7158//14199 +f 7162//14200 7160//14200 7144//14200 +f 7154//14201 7157//14201 7156//14201 +f 7164//14202 7161//14202 7144//14202 +f 6361//14203 7164//14203 7144//14203 +f 7147//14204 7157//14204 7154//14204 +f 7165//14205 7166//14205 7167//14205 +f 7168//14206 7167//14206 7169//14206 +f 7168//14207 7165//14207 7167//14207 +f 7170//14208 7169//14208 7171//14208 +f 7170//14209 7168//14209 7169//14209 +f 7172//14210 7170//14210 7171//14210 +f 7165//14211 6721//14211 6723//14211 +f 7165//14212 6723//14212 7166//14212 +f 6730//14213 7173//14213 7174//14213 +f 6730//14214 7174//14214 6728//14214 +f 7174//14215 7173//14215 7175//14215 +f 7175//14216 7176//14216 7177//14216 +f 7173//14217 7176//14217 7175//14217 +f 7177//14218 7178//14218 7179//14218 +f 7176//14219 7178//14219 7177//14219 +f 7178//14220 7180//14220 7179//14220 +f 7180//14221 6417//14221 6418//14221 +f 7180//14222 6418//14222 7179//14222 +f 7172//14223 7171//14223 7146//14223 +f 7151//14224 7172//14224 7146//14224 +f 6195//14225 6716//14225 6718//14225 +f 6193//14226 6716//14226 6195//14226 +f 6190//14227 6714//14227 6193//14227 +f 6160//14228 6714//14228 6190//14228 +f 6193//14229 6714//14229 6716//14229 +f 6724//14230 6729//14230 6720//14230 +f 6724//14231 6732//14231 6729//14231 +f 7146//14232 7135//14232 7158//14232 +f 6720//14233 6728//14233 6723//14233 +f 6729//14234 6728//14234 6720//14234 +f 6418//14235 7133//14235 7146//14235 +f 7146//14236 7133//14236 7135//14236 +f 6726//14237 6734//14237 6724//14237 +f 7135//14238 6421//14238 7158//14238 +f 6724//14239 6734//14239 6732//14239 +f 6421//14240 7144//14240 7158//14240 +f 6723//14241 7174//14241 7166//14241 +f 6728//14242 7174//14242 6723//14242 +f 6418//14243 7131//14243 7133//14243 +f 7166//14244 7175//14244 7167//14244 +f 7174//14245 7175//14245 7166//14245 +f 6418//14246 6416//14246 7131//14246 +f 6421//14247 6422//14247 7144//14247 +f 7177//14248 7169//14248 7175//14248 +f 7175//14249 7169//14249 7167//14249 +f 6416//14250 7128//14250 7131//14250 +f 6422//14251 7143//14251 7144//14251 +f 7179//14252 7171//14252 7177//14252 +f 7177//14253 7171//14253 7169//14253 +f 6422//14254 6429//14254 7143//14254 +f 6416//14255 6414//14255 7128//14255 +f 6414//14256 6438//14256 7128//14256 +f 6686//14257 6172//14257 6677//14257 +f 6686//14258 6181//14258 6172//14258 +f 6153//14259 6181//14259 6686//14259 +f 6434//14260 6409//14260 6429//14260 +f 6429//14261 6409//14261 7143//14261 +f 6438//14262 6412//14262 6436//14262 +f 6414//14263 6412//14263 6438//14263 +f 6677//14264 6167//14264 6678//14264 +f 6172//14265 6167//14265 6677//14265 +f 6436//14266 6407//14266 6434//14266 +f 6153//14267 6183//14267 6181//14267 +f 6412//14268 6407//14268 6436//14268 +f 6434//14269 6407//14269 6409//14269 +f 7146//14270 7171//14270 7179//14270 +f 6153//14271 6156//14271 6183//14271 +f 6726//14272 6685//14272 6734//14272 +f 6718//14273 6734//14273 6685//14273 +f 7179//14274 6418//14274 7146//14274 +f 6167//14275 6705//14275 6678//14275 +f 6156//14276 6710//14276 6183//14276 +f 6705//14277 6685//14277 6678//14277 +f 6156//14278 6712//14278 6710//14278 +f 6705//14279 6704//14279 6685//14279 +f 6156//14280 6158//14280 6712//14280 +f 6158//14281 6189//14281 6712//14281 +f 6704//14282 6718//14282 6685//14282 +f 6195//14283 6718//14283 6704//14283 +f 6158//14284 6160//14284 6189//14284 +f 6189//14285 6160//14285 6190//14285 +f 6159//14286 6157//14286 6191//14286 +f 6159//14287 6191//14287 6192//14287 +f 6717//14288 6196//14288 6719//14288 +f 6717//14289 6194//14289 6196//14289 +f 6715//14290 6159//14290 6192//14290 +f 6715//14291 6194//14291 6717//14291 +f 6715//14292 6192//14292 6194//14292 +f 6733//14293 6725//14293 6722//14293 +f 6733//14294 6722//14294 6731//14294 +f 6735//14295 6727//14295 6725//14295 +f 6735//14296 6725//14296 6733//14296 +f 7138//14297 7151//14297 7157//14297 +f 6730//14298 6722//14298 6721//14298 +f 7134//14299 7151//14299 7138//14299 +f 7134//14300 6417//14300 7151//14300 +f 6730//14301 6731//14301 6722//14301 +f 6426//14302 7138//14302 7157//14302 +f 7173//14303 6721//14303 7165//14303 +f 7147//14304 6426//14304 7157//14304 +f 7173//14305 6730//14305 6721//14305 +f 7130//14306 6417//14306 7134//14306 +f 7176//14307 7165//14307 7168//14307 +f 7176//14308 7173//14308 7165//14308 +f 6415//14309 6417//14309 7130//14309 +f 6427//14310 6426//14310 7147//14310 +f 7170//14311 7178//14311 7176//14311 +f 7170//14312 7176//14312 7168//14312 +f 7129//14313 6415//14313 7130//14313 +f 7172//14314 7180//14314 7178//14314 +f 7150//14315 6427//14315 7147//14315 +f 7172//14316 7178//14316 7170//14316 +f 6432//14317 6427//14317 7150//14317 +f 6413//14318 6415//14318 7129//14318 +f 6437//14319 6413//14319 7129//14319 +f 6162//14320 6683//14320 6684//14320 +f 6171//14321 6683//14321 6162//14321 +f 6171//14322 6154//14322 6683//14322 +f 6408//14323 6433//14323 6432//14323 +f 6408//14324 6432//14324 7150//14324 +f 6163//14325 6684//14325 6696//14325 +f 6411//14326 6437//14326 6435//14326 +f 6163//14327 6162//14327 6684//14327 +f 6179//14328 6154//14328 6171//14328 +f 6411//14329 6413//14329 6437//14329 +f 6410//14330 6435//14330 6433//14330 +f 6155//14331 6154//14331 6179//14331 +f 6410//14332 6433//14332 6408//14332 +f 6410//14333 6411//14333 6435//14333 +f 7172//14334 7151//14334 7180//14334 +f 6703//14335 6163//14335 6696//14335 +f 6417//14336 7180//14336 7151//14336 +f 6735//14337 6719//14337 6682//14337 +f 6682//14338 6727//14338 6735//14338 +f 6711//14339 6155//14339 6179//14339 +f 6682//14340 6703//14340 6696//14340 +f 6713//14341 6155//14341 6711//14341 +f 6699//14342 6703//14342 6682//14342 +f 6157//14343 6155//14343 6713//14343 +f 6191//14344 6157//14344 6713//14344 +f 6719//14345 6699//14345 6682//14345 +f 6719//14346 6196//14346 6699//14346 +f 7181//14347 7156//14347 7182//14347 +f 7183//14348 7163//14348 7152//14348 +f 7183//14349 7152//14349 6406//14349 +f 7183//14350 6406//14350 6405//14350 +f 7183//14351 6405//14351 7184//14351 +f 7185//14352 7155//14352 7163//14352 +f 7185//14353 7184//14353 7182//14353 +f 7185//14354 7163//14354 7183//14354 +f 7185//14355 7183//14355 7184//14355 +f 7186//14356 7185//14356 7182//14356 +f 7186//14357 7155//14357 7185//14357 +f 7187//14358 7156//14358 7155//14358 +f 7187//14359 7155//14359 7186//14359 +f 7187//14360 7186//14360 7182//14360 +f 7187//14361 7182//14361 7156//14361 +f 7188//14362 7154//14362 7156//14362 +f 7188//14363 7181//14363 7189//14363 +f 7188//14364 7156//14364 7181//14364 +f 7190//14365 7153//14365 7154//14365 +f 7190//14366 7154//14366 7188//14366 +f 7190//14367 7188//14367 7189//14367 +f 7191//14368 7189//14368 7192//14368 +f 7191//14369 7190//14369 7189//14369 +f 7191//14370 7153//14370 7190//14370 +f 7193//14371 7148//14371 7153//14371 +f 7193//14372 7191//14372 7192//14372 +f 7193//14373 7153//14373 7191//14373 +f 7194//14374 6387//14374 6386//14374 +f 7194//14375 6386//14375 7148//14375 +f 7194//14376 7192//14376 6387//14376 +f 7194//14377 7148//14377 7193//14377 +f 7194//14378 7193//14378 7192//14378 +f 7160//14379 7195//14379 7196//14379 +f 7197//14380 7198//14380 6381//14380 +f 7197//14381 6381//14381 6380//14381 +f 7197//14382 6380//14382 7145//14382 +f 7199//14383 7145//14383 7149//14383 +f 7199//14384 7197//14384 7145//14384 +f 7199//14385 7198//14385 7197//14385 +f 7200//14386 7201//14386 7198//14386 +f 7200//14387 7199//14387 7149//14387 +f 7200//14388 7198//14388 7199//14388 +f 7202//14389 7149//14389 7159//14389 +f 7202//14390 7201//14390 7200//14390 +f 7202//14391 7200//14391 7149//14391 +f 7203//14392 7196//14392 7201//14392 +f 7203//14393 7201//14393 7202//14393 +f 7203//14394 7202//14394 7159//14394 +f 7204//14395 7159//14395 7160//14395 +f 7204//14396 7203//14396 7159//14396 +f 7204//14397 7160//14397 7196//14397 +f 7204//14398 7196//14398 7203//14398 +f 7205//14399 7160//14399 7162//14399 +f 7205//14400 7195//14400 7160//14400 +f 7206//14401 7195//14401 7205//14401 +f 7206//14402 7205//14402 7162//14402 +f 7207//14403 7208//14403 7195//14403 +f 7207//14404 7162//14404 7161//14404 +f 7207//14405 7195//14405 7206//14405 +f 7207//14406 7206//14406 7162//14406 +f 7209//14407 6361//14407 6360//14407 +f 7209//14408 6360//14408 7208//14408 +f 7209//14409 7161//14409 7164//14409 +f 7209//14410 7164//14410 6361//14410 +f 7209//14411 7208//14411 7207//14411 +f 7209//14412 7207//14412 7161//14412 +f 7210//14413 7142//14413 7141//14413 +f 7210//14414 7211//14414 7142//14414 +f 7210//14415 7212//14415 7211//14415 +f 7213//14416 7214//14416 7215//14416 +f 7213//14417 7215//14417 7216//14417 +f 7217//14418 7216//14418 7218//14418 +f 7217//14419 7213//14419 7216//14419 +f 7219//14420 7217//14420 7218//14420 +f 7219//14421 7218//14421 7220//14421 +f 7221//14422 7220//14422 7212//14422 +f 7221//14423 7219//14423 7220//14423 +f 7222//14424 7221//14424 7212//14424 +f 7222//14425 7141//14425 6439//14425 +f 7222//14426 6439//14426 6428//14426 +f 7222//14427 7210//14427 7141//14427 +f 7222//14428 7212//14428 7210//14428 +f 7223//14429 7224//14429 7225//14429 +f 7223//14430 7225//14430 7214//14430 +f 7226//14431 7223//14431 7214//14431 +f 7226//14432 7214//14432 7213//14432 +f 7227//14433 7224//14433 7223//14433 +f 7228//14434 7223//14434 7226//14434 +f 7228//14435 7227//14435 7223//14435 +f 7229//14436 7226//14436 7213//14436 +f 7229//14437 7213//14437 7217//14437 +f 7230//14438 7228//14438 7226//14438 +f 7230//14439 7226//14439 7229//14439 +f 7231//14440 7229//14440 7217//14440 +f 7231//14441 7217//14441 7219//14441 +f 7232//14442 7229//14442 7231//14442 +f 7232//14443 7230//14443 7229//14443 +f 7233//14444 7234//14444 6353//14444 +f 7233//14445 6353//14445 6351//14445 +f 7235//14446 7221//14446 7222//14446 +f 7233//14447 6351//14447 7137//14447 +f 7235//14448 7219//14448 7221//14448 +f 7235//14449 7222//14449 6428//14449 +f 7235//14450 7231//14450 7219//14450 +f 7236//14451 6428//14451 6431//14451 +f 7237//14452 7233//14452 7137//14452 +f 7236//14453 7232//14453 7231//14453 +f 7236//14454 6431//14454 7232//14454 +f 7237//14455 7234//14455 7233//14455 +f 7236//14456 7235//14456 6428//14456 +f 7236//14457 7231//14457 7235//14457 +f 7238//14458 7239//14458 7224//14458 +f 7240//14459 7234//14459 7237//14459 +f 7241//14460 7137//14460 7139//14460 +f 7238//14461 7224//14461 7227//14461 +f 7241//14462 7237//14462 7137//14462 +f 7242//14463 7227//14463 7228//14463 +f 7243//14464 7240//14464 7237//14464 +f 7243//14465 7241//14465 7139//14465 +f 7243//14466 7237//14466 7241//14466 +f 7242//14467 7238//14467 7227//14467 +f 7244//14468 7245//14468 7234//14468 +f 7246//14469 7228//14469 7230//14469 +f 7246//14470 7232//14470 6431//14470 +f 7246//14471 7230//14471 7232//14471 +f 7244//14472 7234//14472 7240//14472 +f 7246//14473 7242//14473 7228//14473 +f 7247//14474 7239//14474 7238//14474 +f 7248//14475 7244//14475 7240//14475 +f 7249//14476 6431//14476 6430//14476 +f 7248//14477 7240//14477 7243//14477 +f 7249//14478 7247//14478 7238//14478 +f 7249//14479 7246//14479 6431//14479 +f 7249//14480 7238//14480 7242//14480 +f 7250//14481 7248//14481 7243//14481 +f 7249//14482 7242//14482 7246//14482 +f 7250//14483 7243//14483 7139//14483 +f 7251//14484 6322//14484 6321//14484 +f 7251//14485 6321//14485 7239//14485 +f 7251//14486 6430//14486 6322//14486 +f 7251//14487 7239//14487 7247//14487 +f 7252//14488 7245//14488 7244//14488 +f 7251//14489 7249//14489 6430//14489 +f 7251//14490 7247//14490 7249//14490 +f 7253//14491 7244//14491 7248//14491 +f 7253//14492 7252//14492 7244//14492 +f 7254//14493 7139//14493 7142//14493 +f 7254//14494 7250//14494 7139//14494 +f 7255//14495 7248//14495 7250//14495 +f 7255//14496 7253//14496 7248//14496 +f 7215//14497 7225//14497 7245//14497 +f 7215//14498 7245//14498 7252//14498 +f 7211//14499 7254//14499 7142//14499 +f 7211//14500 7250//14500 7254//14500 +f 7211//14501 7255//14501 7250//14501 +f 7216//14502 7252//14502 7253//14502 +f 7216//14503 7215//14503 7252//14503 +f 7218//14504 7253//14504 7255//14504 +f 7218//14505 7216//14505 7253//14505 +f 7220//14506 7255//14506 7211//14506 +f 7220//14507 7218//14507 7255//14507 +f 7212//14508 7220//14508 7211//14508 +f 7214//14509 7225//14509 7215//14509 +f 7256//14510 6396//14510 7257//14510 +f 7256//14511 7257//14511 7258//14511 +f 7259//14512 6294//14512 7260//14512 +f 7259//14513 7261//14513 6294//14513 +f 7262//14514 6287//14514 6290//14514 +f 7263//14515 6405//14515 6401//14515 +f 7263//14516 7264//14516 7261//14516 +f 7263//14517 7256//14517 7264//14517 +f 7263//14518 6401//14518 7256//14518 +f 7265//14519 7260//14519 7266//14519 +f 7265//14520 7259//14520 7260//14520 +f 7267//14521 7184//14521 6405//14521 +f 7267//14522 6405//14522 7263//14522 +f 7267//14523 7261//14523 7259//14523 +f 7267//14524 7263//14524 7261//14524 +f 7268//14525 7266//14525 7269//14525 +f 7268//14526 7265//14526 7266//14526 +f 7270//14527 7182//14527 7184//14527 +f 7270//14528 7259//14528 7265//14528 +f 7270//14529 7267//14529 7259//14529 +f 7270//14530 7184//14530 7267//14530 +f 7271//14531 7269//14531 7272//14531 +f 7271//14532 7268//14532 7269//14532 +f 7273//14533 7181//14533 7182//14533 +f 7273//14534 7265//14534 7268//14534 +f 7273//14535 7270//14535 7265//14535 +f 7273//14536 7182//14536 7270//14536 +f 7274//14537 7272//14537 7275//14537 +f 7274//14538 7271//14538 7272//14538 +f 7276//14539 7189//14539 7181//14539 +f 7276//14540 7181//14540 7273//14540 +f 7276//14541 7268//14541 7271//14541 +f 7276//14542 7273//14542 7268//14542 +f 7277//14543 7275//14543 6283//14543 +f 7277//14544 7274//14544 7275//14544 +f 7278//14545 7276//14545 7271//14545 +f 7278//14546 7192//14546 7189//14546 +f 7278//14547 7189//14547 7276//14547 +f 7278//14548 7271//14548 7274//14548 +f 7279//14549 6283//14549 6282//14549 +f 7279//14550 7277//14550 6283//14550 +f 7280//14551 6388//14551 6387//14551 +f 7280//14552 7274//14552 7277//14552 +f 7280//14553 6387//14553 7192//14553 +f 7280//14554 7192//14554 7278//14554 +f 7280//14555 7278//14555 7274//14555 +f 7281//14556 6282//14556 6285//14556 +f 7281//14557 6285//14557 7262//14557 +f 7281//14558 7279//14558 6282//14558 +f 7282//14559 6384//14559 6388//14559 +f 7282//14560 7277//14560 7279//14560 +f 7282//14561 7280//14561 7277//14561 +f 7282//14562 6388//14562 7280//14562 +f 7283//14563 6382//14563 6384//14563 +f 7283//14564 7282//14564 7279//14564 +f 7283//14565 6384//14565 7282//14565 +f 7283//14566 7281//14566 7262//14566 +f 7262//14567 6285//14567 6287//14567 +f 7283//14568 7262//14568 7284//14568 +f 7283//14569 7284//14569 6382//14569 +f 7283//14570 7279//14570 7281//14570 +f 7258//14571 6290//14571 6292//14571 +f 7258//14572 7262//14572 6290//14572 +f 7264//14573 6292//14573 6294//14573 +f 7264//14574 7258//14574 6292//14574 +f 7257//14575 6396//14575 6382//14575 +f 7257//14576 7284//14576 7262//14576 +f 7257//14577 6382//14577 7284//14577 +f 7257//14578 7262//14578 7258//14578 +f 7261//14579 7264//14579 6294//14579 +f 7256//14580 6401//14580 6396//14580 +f 7256//14581 7258//14581 7264//14581 +f 7285//14582 7260//14582 6294//14582 +f 7285//14583 6294//14583 6293//14583 +f 7286//14584 7266//14584 7260//14584 +f 7286//14585 7260//14585 7285//14585 +f 7287//14586 7272//14586 7269//14586 +f 7287//14587 7269//14587 7266//14587 +f 7287//14588 7266//14588 7286//14588 +f 7288//14589 7275//14589 7272//14589 +f 7288//14590 7272//14590 7287//14590 +f 7289//14591 6283//14591 7275//14591 +f 7289//14592 7275//14592 7288//14592 +f 6281//14593 6283//14593 7289//14593 +f 7290//14594 6289//14594 6288//14594 +f 7290//14595 7291//14595 7292//14595 +f 7293//14596 7294//14596 7295//14596 +f 7290//14597 6288//14597 7291//14597 +f 7290//14598 7292//14598 7296//14598 +f 7297//14599 7298//14599 7299//14599 +f 7300//14600 7290//14600 7296//14600 +f 7301//14601 7289//14601 7288//14601 +f 7300//14602 6289//14602 7290//14602 +f 7301//14603 7302//14603 7303//14603 +f 7300//14604 7296//14604 7304//14604 +f 7301//14605 7288//14605 7293//14605 +f 7301//14606 7293//14606 7302//14606 +f 7305//14607 7306//14607 7307//14607 +f 7308//14608 7299//14608 7309//14608 +f 7308//14609 7297//14609 7299//14609 +f 7310//14610 7307//14610 7311//14610 +f 7310//14611 7305//14611 7307//14611 +f 7312//14612 6291//14612 6289//14612 +f 7312//14613 7304//14613 7313//14613 +f 7314//14614 7308//14614 7309//14614 +f 7312//14615 6289//14615 7300//14615 +f 7315//14616 7289//14616 7301//14616 +f 7315//14617 7303//14617 7298//14617 +f 7312//14618 7300//14618 7304//14618 +f 7315//14619 7301//14619 7303//14619 +f 7316//14620 7312//14620 7313//14620 +f 7316//14621 7313//14621 7306//14621 +f 7316//14622 6291//14622 7312//14622 +f 7317//14623 6281//14623 7289//14623 +f 7317//14624 7315//14624 7298//14624 +f 7317//14625 7298//14625 7297//14625 +f 7317//14626 7289//14626 7315//14626 +f 7318//14627 7310//14627 7311//14627 +f 7319//14628 7309//14628 7320//14628 +f 7321//14629 7311//14629 7322//14629 +f 7319//14630 7314//14630 7309//14630 +f 7321//14631 7318//14631 7311//14631 +f 7323//14632 6293//14632 6291//14632 +f 7323//14633 6291//14633 7316//14633 +f 7324//14634 7319//14634 7320//14634 +f 7323//14635 7306//14635 7305//14635 +f 7323//14636 7316//14636 7306//14636 +f 7325//14637 7297//14637 7308//14637 +f 7325//14638 6281//14638 7317//14638 +f 7326//14639 6293//14639 7323//14639 +f 7325//14640 7317//14640 7297//14640 +f 7326//14641 7305//14641 7310//14641 +f 7326//14642 7323//14642 7305//14642 +f 7327//14643 6284//14643 6281//14643 +f 7327//14644 7308//14644 7314//14644 +f 7327//14645 7325//14645 7308//14645 +f 7327//14646 6281//14646 7325//14646 +f 7328//14647 7321//14647 7322//14647 +f 7329//14648 7320//14648 7330//14648 +f 7329//14649 7324//14649 7320//14649 +f 7331//14650 7285//14650 6293//14650 +f 7331//14651 7310//14651 7318//14651 +f 7331//14652 6293//14652 7326//14652 +f 7332//14653 7330//14653 7333//14653 +f 7332//14654 7333//14654 7292//14654 +f 7331//14655 7326//14655 7310//14655 +f 7334//14656 7328//14656 7322//14656 +f 7332//14657 7329//14657 7330//14657 +f 7335//14658 7327//14658 7314//14658 +f 7334//14659 7322//14659 7336//14659 +f 7335//14660 7314//14660 7319//14660 +f 7335//14661 6284//14661 7327//14661 +f 7337//14662 7331//14662 7318//14662 +f 7338//14663 6286//14663 6284//14663 +f 7338//14664 7319//14664 7324//14664 +f 7338//14665 7335//14665 7319//14665 +f 7337//14666 7318//14666 7321//14666 +f 7337//14667 7285//14667 7331//14667 +f 7338//14668 6284//14668 7335//14668 +f 7339//14669 7334//14669 7336//14669 +f 7340//14670 7324//14670 7329//14670 +f 7341//14671 7321//14671 7328//14671 +f 7340//14672 6286//14672 7338//14672 +f 7340//14673 7338//14673 7324//14673 +f 7341//14674 7286//14674 7285//14674 +f 7342//14675 6288//14675 6286//14675 +f 7341//14676 7337//14676 7321//14676 +f 7342//14677 7292//14677 7291//14677 +f 7341//14678 7285//14678 7337//14678 +f 7342//14679 7291//14679 6288//14679 +f 7342//14680 7332//14680 7292//14680 +f 7342//14681 7329//14681 7332//14681 +f 7342//14682 6286//14682 7340//14682 +f 7342//14683 7340//14683 7329//14683 +f 7343//14684 7336//14684 7344//14684 +f 7343//14685 7339//14685 7336//14685 +f 7345//14686 7286//14686 7341//14686 +f 7345//14687 7341//14687 7328//14687 +f 7345//14688 7328//14688 7334//14688 +f 7295//14689 7343//14689 7344//14689 +f 7346//14690 7287//14690 7286//14690 +f 7346//14691 7286//14691 7345//14691 +f 7346//14692 7345//14692 7334//14692 +f 7346//14693 7334//14693 7339//14693 +f 7302//14694 7344//14694 7347//14694 +f 7302//14695 7295//14695 7344//14695 +f 7348//14696 7287//14696 7346//14696 +f 7348//14697 7346//14697 7339//14697 +f 7296//14698 7292//14698 7333//14698 +f 7348//14699 7339//14699 7343//14699 +f 7296//14700 7333//14700 7349//14700 +f 7303//14701 7302//14701 7347//14701 +f 7304//14702 7349//14702 7350//14702 +f 7294//14703 7288//14703 7287//14703 +f 7294//14704 7343//14704 7295//14704 +f 7294//14705 7348//14705 7343//14705 +f 7304//14706 7296//14706 7349//14706 +f 7294//14707 7287//14707 7348//14707 +f 7313//14708 7304//14708 7350//14708 +f 7298//14709 7347//14709 7299//14709 +f 7298//14710 7303//14710 7347//14710 +f 7306//14711 7350//14711 7307//14711 +f 7306//14712 7313//14712 7350//14712 +f 7293//14713 7288//14713 7294//14713 +f 7293//14714 7295//14714 7302//14714 +f 7351//14715 7330//14715 7320//14715 +f 7351//14716 7320//14716 7352//14716 +f 7351//14717 7352//14717 7353//14717 +f 7354//14718 7355//14718 7356//14718 +f 7351//14719 7357//14719 7358//14719 +f 7351//14720 7358//14720 7333//14720 +f 7351//14721 7359//14721 7357//14721 +f 7351//14722 7353//14722 7359//14722 +f 7354//14723 7360//14723 7355//14723 +f 7361//14724 7356//14724 7362//14724 +f 7361//14725 7354//14725 7356//14725 +f 7363//14726 7362//14726 7364//14726 +f 7363//14727 7361//14727 7362//14727 +f 7365//14728 7364//14728 7366//14728 +f 7365//14729 7363//14729 7364//14729 +f 7367//14730 7366//14730 7368//14730 +f 7367//14731 7365//14731 7366//14731 +f 7353//14732 7368//14732 7369//14732 +f 7353//14733 7367//14733 7368//14733 +f 7359//14734 7370//14734 7371//14734 +f 7359//14735 7369//14735 7370//14735 +f 7359//14736 7371//14736 7357//14736 +f 7359//14737 7353//14737 7369//14737 +f 7372//14738 7349//14738 7333//14738 +f 7372//14739 7358//14739 7357//14739 +f 7372//14740 7333//14740 7358//14740 +f 7357//14741 7371//14741 7373//14741 +f 7372//14742 7357//14742 7374//14742 +f 7375//14743 7350//14743 7349//14743 +f 7375//14744 7374//14744 7376//14744 +f 7375//14745 7349//14745 7372//14745 +f 7375//14746 7372//14746 7374//14746 +f 7377//14747 7307//14747 7350//14747 +f 7377//14748 7376//14748 7378//14748 +f 7377//14749 7350//14749 7375//14749 +f 7377//14750 7375//14750 7376//14750 +f 7379//14751 7311//14751 7307//14751 +f 7379//14752 7307//14752 7377//14752 +f 7379//14753 7378//14753 7380//14753 +f 7379//14754 7377//14754 7378//14754 +f 7381//14755 7322//14755 7311//14755 +f 7381//14756 7380//14756 7360//14756 +f 7381//14757 7311//14757 7379//14757 +f 7381//14758 7379//14758 7380//14758 +f 7382//14759 7322//14759 7381//14759 +f 7382//14760 7381//14760 7360//14760 +f 7382//14761 7336//14761 7322//14761 +f 7382//14762 7360//14762 7354//14762 +f 7383//14763 7382//14763 7354//14763 +f 7383//14764 7344//14764 7336//14764 +f 7374//14765 7357//14765 7373//14765 +f 7383//14766 7354//14766 7361//14766 +f 7383//14767 7336//14767 7382//14767 +f 7376//14768 7373//14768 7384//14768 +f 7385//14769 7347//14769 7344//14769 +f 7385//14770 7344//14770 7383//14770 +f 7385//14771 7383//14771 7361//14771 +f 7376//14772 7374//14772 7373//14772 +f 7385//14773 7361//14773 7363//14773 +f 7378//14774 7384//14774 7386//14774 +f 7387//14775 7299//14775 7347//14775 +f 7387//14776 7347//14776 7385//14776 +f 7387//14777 7385//14777 7363//14777 +f 7378//14778 7376//14778 7384//14778 +f 7387//14779 7363//14779 7365//14779 +f 7388//14780 7309//14780 7299//14780 +f 7380//14781 7386//14781 7389//14781 +f 7388//14782 7387//14782 7365//14782 +f 7388//14783 7365//14783 7367//14783 +f 7380//14784 7378//14784 7386//14784 +f 7388//14785 7299//14785 7387//14785 +f 7352//14786 7320//14786 7309//14786 +f 7352//14787 7309//14787 7388//14787 +f 7360//14788 7389//14788 7355//14788 +f 7352//14789 7367//14789 7353//14789 +f 7352//14790 7388//14790 7367//14790 +f 7360//14791 7380//14791 7389//14791 +f 7351//14792 7333//14792 7330//14792 +f 7390//14793 7371//14793 7391//14793 +f 7392//14794 7393//14794 6268//14794 +f 7390//14795 7394//14795 7395//14795 +f 7396//14796 7384//14796 7373//14796 +f 7392//14797 7397//14797 7393//14797 +f 7396//14798 7395//14798 7398//14798 +f 7396//14799 7390//14799 7395//14799 +f 7396//14800 7373//14800 7390//14800 +f 7399//14801 7364//14801 7400//14801 +f 7399//14802 7401//14802 7402//14802 +f 7399//14803 7400//14803 7401//14803 +f 7403//14804 6277//14804 6279//14804 +f 7403//14805 7404//14805 6277//14805 +f 7405//14806 7392//14806 6268//14806 +f 7406//14807 7403//14807 6279//14807 +f 7407//14808 6268//14808 6270//14808 +f 7408//14809 7384//14809 7396//14809 +f 7407//14810 7405//14810 6268//14810 +f 7408//14811 7398//14811 7409//14811 +f 7410//14812 7366//14812 7364//14812 +f 7408//14813 7396//14813 7398//14813 +f 7410//14814 7402//14814 7397//14814 +f 7410//14815 7364//14815 7399//14815 +f 7411//14816 7386//14816 7384//14816 +f 7411//14817 7409//14817 7404//14817 +f 7410//14818 7399//14818 7402//14818 +f 7411//14819 7384//14819 7408//14819 +f 7411//14820 7408//14820 7409//14820 +f 7412//14821 7397//14821 7392//14821 +f 7412//14822 7410//14822 7397//14822 +f 7413//14823 6279//14823 7414//14823 +f 7412//14824 7366//14824 7410//14824 +f 7413//14825 7406//14825 6279//14825 +f 7415//14826 7413//14826 7414//14826 +f 7416//14827 7407//14827 6270//14827 +f 7417//14828 6270//14828 6272//14828 +f 7418//14829 7404//14829 7403//14829 +f 7417//14830 7416//14830 6270//14830 +f 7418//14831 7411//14831 7404//14831 +f 7418//14832 7386//14832 7411//14832 +f 7419//14833 7368//14833 7366//14833 +f 7419//14834 7412//14834 7392//14834 +f 7420//14835 7389//14835 7386//14835 +f 7419//14836 7392//14836 7405//14836 +f 7420//14837 7386//14837 7418//14837 +f 7419//14838 7366//14838 7412//14838 +f 7420//14839 7403//14839 7406//14839 +f 7420//14840 7418//14840 7403//14840 +f 7421//14841 7368//14841 7419//14841 +f 7421//14842 7405//14842 7407//14842 +f 7421//14843 7419//14843 7405//14843 +f 7422//14844 7414//14844 7423//14844 +f 7422//14845 7415//14845 7414//14845 +f 7424//14846 7417//14846 6272//14846 +f 7425//14847 7406//14847 7413//14847 +f 7425//14848 7389//14848 7420//14848 +f 7426//14849 6272//14849 6275//14849 +f 7425//14850 7420//14850 7406//14850 +f 7426//14851 6275//14851 7394//14851 +f 7426//14852 7424//14852 6272//14852 +f 7427//14853 7369//14853 7368//14853 +f 7428//14854 7422//14854 7423//14854 +f 7427//14855 7407//14855 7416//14855 +f 7427//14856 7368//14856 7421//14856 +f 7427//14857 7421//14857 7407//14857 +f 7429//14858 7425//14858 7413//14858 +f 7429//14859 7355//14859 7389//14859 +f 7430//14860 7369//14860 7427//14860 +f 7429//14861 7389//14861 7425//14861 +f 7430//14862 7416//14862 7417//14862 +f 7429//14863 7413//14863 7415//14863 +f 7430//14864 7427//14864 7416//14864 +f 7431//14865 7428//14865 7423//14865 +f 7432//14866 7370//14866 7369//14866 +f 7432//14867 7430//14867 7417//14867 +f 7431//14868 7423//14868 7433//14868 +f 7432//14869 7417//14869 7424//14869 +f 7434//14870 7415//14870 7422//14870 +f 7432//14871 7369//14871 7430//14871 +f 7435//14872 7371//14872 7370//14872 +f 7434//14873 7355//14873 7429//14873 +f 7435//14874 7394//14874 7391//14874 +f 7434//14875 7429//14875 7415//14875 +f 7435//14876 7391//14876 7371//14876 +f 7435//14877 7426//14877 7394//14877 +f 7435//14878 7424//14878 7426//14878 +f 7435//14879 7370//14879 7432//14879 +f 7435//14880 7432//14880 7424//14880 +f 7436//14881 7431//14881 7433//14881 +f 7437//14882 7356//14882 7355//14882 +f 7437//14883 7422//14883 7428//14883 +f 7437//14884 7434//14884 7422//14884 +f 7437//14885 7355//14885 7434//14885 +f 7438//14886 7436//14886 7433//14886 +f 7438//14887 7433//14887 7439//14887 +f 7440//14888 7356//14888 7437//14888 +f 7440//14889 7437//14889 7428//14889 +f 7440//14890 7428//14890 7431//14890 +f 7401//14891 7438//14891 7439//14891 +f 7441//14892 7356//14892 7440//14892 +f 7441//14893 7362//14893 7356//14893 +f 7441//14894 7440//14894 7431//14894 +f 7395//14895 7394//14895 6275//14895 +f 7441//14896 7431//14896 7436//14896 +f 7395//14897 6275//14897 6274//14897 +f 7402//14898 7439//14898 7393//14898 +f 7402//14899 7401//14899 7439//14899 +f 7442//14900 7436//14900 7438//14900 +f 7398//14901 7395//14901 6274//14901 +f 7442//14902 7441//14902 7436//14902 +f 7442//14903 7362//14903 7441//14903 +f 7409//14904 6274//14904 6277//14904 +f 7409//14905 7398//14905 6274//14905 +f 7397//14906 7402//14906 7393//14906 +f 7404//14907 7409//14907 6277//14907 +f 7400//14908 7364//14908 7362//14908 +f 7400//14909 7362//14909 7442//14909 +f 7400//14910 7442//14910 7438//14910 +f 7400//14911 7438//14911 7401//14911 +f 7390//14912 7373//14912 7371//14912 +f 7390//14913 7391//14913 7394//14913 +f 6280//14914 7414//14914 6279//14914 +f 7443//14915 7423//14915 7414//14915 +f 7443//14916 7414//14916 6280//14916 +f 7444//14917 7433//14917 7423//14917 +f 7444//14918 7423//14918 7443//14918 +f 7445//14919 7433//14919 7444//14919 +f 7446//14920 7439//14920 7433//14920 +f 7446//14921 7433//14921 7445//14921 +f 7447//14922 7393//14922 7439//14922 +f 7447//14923 7439//14923 7446//14923 +f 6269//14924 6268//14924 7393//14924 +f 6269//14925 7393//14925 7447//14925 +f 7448//14926 6278//14926 7449//14926 +f 7448//14927 7449//14927 7450//14927 +f 7451//14928 6381//14928 7198//14928 +f 7451//14929 7452//14929 6381//14929 +f 7453//14930 6358//14930 6357//14930 +f 7454//14931 7455//14931 7452//14931 +f 7454//14932 6280//14932 7448//14932 +f 7454//14933 7448//14933 7455//14933 +f 7456//14934 7198//14934 7201//14934 +f 7456//14935 7451//14935 7198//14935 +f 7457//14936 7443//14936 6280//14936 +f 7457//14937 7452//14937 7451//14937 +f 7457//14938 6280//14938 7454//14938 +f 7457//14939 7454//14939 7452//14939 +f 7458//14940 7201//14940 7196//14940 +f 7458//14941 7456//14941 7201//14941 +f 6276//14942 6273//14942 7459//14942 +f 7460//14943 7444//14943 7443//14943 +f 7460//14944 7457//14944 7451//14944 +f 7460//14945 7443//14945 7457//14945 +f 7460//14946 7451//14946 7456//14946 +f 7461//14947 7196//14947 7195//14947 +f 7461//14948 7458//14948 7196//14948 +f 7462//14949 7445//14949 7444//14949 +f 7462//14950 7460//14950 7456//14950 +f 7462//14951 7444//14951 7460//14951 +f 7462//14952 7456//14952 7458//14952 +f 7463//14953 7195//14953 7208//14953 +f 7463//14954 7461//14954 7195//14954 +f 7464//14955 7446//14955 7445//14955 +f 7464//14956 7445//14956 7462//14956 +f 7464//14957 7458//14957 7461//14957 +f 7464//14958 7462//14958 7458//14958 +f 7465//14959 7208//14959 6360//14959 +f 7465//14960 6360//14960 6363//14960 +f 7465//14961 7463//14961 7208//14961 +f 7466//14962 7464//14962 7461//14962 +f 7466//14963 7447//14963 7446//14963 +f 7466//14964 7446//14964 7464//14964 +f 7466//14965 7461//14965 7463//14965 +f 7467//14966 6363//14966 6367//14966 +f 7467//14967 7465//14967 6363//14967 +f 7468//14968 7463//14968 7465//14968 +f 7468//14969 6269//14969 7447//14969 +f 7468//14970 7447//14970 7466//14970 +f 7468//14971 7466//14971 7463//14971 +f 7469//14972 6367//14972 6358//14972 +f 7469//14973 6358//14973 7453//14973 +f 7469//14974 7467//14974 6367//14974 +f 7470//14975 7465//14975 7467//14975 +f 7470//14976 6267//14976 6269//14976 +f 7470//14977 7468//14977 7465//14977 +f 7470//14978 6269//14978 7468//14978 +f 7471//14979 6271//14979 6267//14979 +f 7471//14980 6267//14980 7470//14980 +f 7471//14981 7469//14981 7453//14981 +f 7471//14982 7453//14982 7459//14982 +f 7471//14983 7470//14983 7467//14983 +f 7471//14984 7467//14984 7469//14984 +f 7471//14985 7459//14985 6271//14985 +f 6273//14986 6271//14986 7459//14986 +f 7450//14987 7453//14987 6357//14987 +f 7455//14988 6357//14988 6377//14988 +f 7455//14989 7450//14989 6357//14989 +f 7449//14990 6278//14990 6276//14990 +f 7449//14991 7459//14991 7453//14991 +f 7449//14992 6276//14992 7459//14992 +f 7449//14993 7453//14993 7450//14993 +f 7452//14994 6377//14994 6381//14994 +f 7452//14995 7455//14995 6377//14995 +f 7448//14996 6280//14996 6278//14996 +f 7448//14997 7450//14997 7455//14997 +f 7472//14998 7473//14998 7474//14998 +f 7475//14999 7476//14999 7477//14999 +f 7472//15000 7478//15000 7473//15000 +f 7475//15001 7479//15001 7476//15001 +f 7480//15002 6424//15002 6423//15002 +f 7480//15003 6423//15003 7481//15003 +f 7480//15004 7481//15004 7482//15004 +f 7483//15005 7477//15005 7484//15005 +f 7483//15006 7475//15006 7477//15006 +f 7485//15007 6230//15007 7486//15007 +f 7487//15008 7482//15008 7478//15008 +f 7485//15009 7488//15009 7489//15009 +f 7485//15010 7489//15010 6230//15010 +f 7487//15011 7480//15011 7482//15011 +f 7490//15012 7478//15012 7472//15012 +f 7490//15013 7487//15013 7478//15013 +f 7491//15014 7492//15014 7493//15014 +f 7494//15015 7495//15015 7496//15015 +f 7491//15016 7493//15016 7497//15016 +f 7498//15017 7499//15017 7488//15017 +f 7491//15018 7497//15018 7500//15018 +f 7498//15019 7485//15019 7486//15019 +f 7501//15020 7492//15020 7491//15020 +f 7501//15021 7474//15021 7492//15021 +f 7498//15022 7488//15022 7485//15022 +f 7502//15023 7496//15023 7503//15023 +f 7501//15024 7491//15024 7500//15024 +f 7504//15025 6425//15025 6424//15025 +f 7502//15026 7494//15026 7496//15026 +f 7504//15027 6424//15027 7480//15027 +f 7504//15028 7480//15028 7487//15028 +f 7505//15029 7503//15029 7479//15029 +f 7506//15030 7487//15030 7490//15030 +f 7506//15031 7504//15031 7487//15031 +f 7505//15032 7502//15032 7503//15032 +f 7507//15033 6242//15033 6241//15033 +f 7507//15034 6241//15034 6425//15034 +f 7507//15035 6425//15035 7504//15035 +f 7508//15036 6420//15036 6419//15036 +f 7507//15037 7504//15037 7506//15037 +f 7509//15038 7500//15038 7510//15038 +f 7508//15039 6419//15039 7495//15039 +f 7509//15040 7472//15040 7474//15040 +f 7509//15041 7501//15041 7500//15041 +f 7509//15042 7474//15042 7501//15042 +f 7511//15043 6423//15043 6420//15043 +f 7511//15044 6420//15044 7508//15044 +f 7512//15045 7472//15045 7509//15045 +f 7512//15046 7490//15046 7472//15046 +f 7512//15047 7509//15047 7510//15047 +f 7513//15048 7479//15048 7475//15048 +f 7514//15049 7506//15049 7490//15049 +f 7513//15050 7505//15050 7479//15050 +f 7514//15051 7512//15051 7510//15051 +f 7514//15052 7490//15052 7512//15052 +f 7493//15053 7513//15053 7475//15053 +f 7515//15054 7510//15054 6242//15054 +f 7515//15055 6242//15055 7507//15055 +f 7515//15056 7514//15056 7510//15056 +f 7515//15057 7507//15057 7506//15057 +f 7493//15058 7475//15058 7483//15058 +f 7515//15059 7506//15059 7514//15059 +f 7516//15060 7495//15060 7494//15060 +f 7516//15061 7508//15061 7495//15061 +f 7517//15062 7132//15062 6209//15062 +f 7518//15063 6423//15063 7511//15063 +f 7489//15064 6209//15064 6230//15064 +f 7518//15065 7508//15065 7516//15065 +f 7489//15066 7517//15066 6209//15066 +f 7518//15067 7511//15067 7508//15067 +f 7519//15068 7136//15068 7132//15068 +f 7520//15069 7516//15069 7494//15069 +f 7520//15070 7494//15070 7502//15070 +f 7521//15071 7518//15071 7516//15071 +f 7522//15072 7136//15072 7519//15072 +f 7521//15073 7516//15073 7520//15073 +f 7523//15074 7519//15074 7132//15074 +f 7523//15075 7132//15075 7517//15075 +f 7488//15076 7523//15076 7517//15076 +f 7524//15077 7486//15077 7525//15077 +f 7524//15078 7499//15078 7498//15078 +f 7524//15079 7484//15079 7499//15079 +f 7488//15080 7517//15080 7489//15080 +f 7524//15081 7498//15081 7486//15081 +f 7526//15082 7519//15082 7523//15082 +f 7526//15083 7522//15083 7519//15083 +f 7527//15084 7520//15084 7502//15084 +f 7527//15085 7502//15085 7505//15085 +f 7499//15086 7523//15086 7488//15086 +f 7499//15087 7526//15087 7523//15087 +f 7528//15088 7140//15088 7136//15088 +f 7529//15089 7521//15089 7520//15089 +f 7529//15090 7520//15090 7527//15090 +f 7530//15091 7484//15091 7524//15091 +f 7531//15092 7528//15092 7136//15092 +f 7530//15093 7483//15093 7484//15093 +f 7530//15094 7524//15094 7525//15094 +f 7532//15095 7505//15095 7513//15095 +f 7532//15096 7527//15096 7505//15096 +f 7496//15097 6419//15097 7140//15097 +f 7496//15098 7140//15098 7528//15098 +f 7476//15099 7136//15099 7522//15099 +f 7473//15100 7529//15100 7527//15100 +f 7476//15101 7531//15101 7136//15101 +f 7473//15102 7527//15102 7532//15102 +f 7492//15103 7532//15103 7513//15103 +f 7492//15104 7513//15104 7493//15104 +f 7503//15105 7528//15105 7531//15105 +f 7474//15106 7473//15106 7532//15106 +f 7503//15107 7496//15107 7528//15107 +f 7474//15108 7532//15108 7492//15108 +f 7477//15109 7522//15109 7526//15109 +f 7481//15110 7518//15110 7521//15110 +f 7477//15111 7476//15111 7522//15111 +f 7481//15112 6423//15112 7518//15112 +f 7482//15113 7481//15113 7521//15113 +f 7482//15114 7521//15114 7529//15114 +f 7479//15115 7531//15115 7476//15115 +f 7479//15116 7503//15116 7531//15116 +f 7497//15117 7483//15117 7530//15117 +f 7497//15118 7493//15118 7483//15118 +f 7484//15119 7477//15119 7526//15119 +f 7497//15120 7525//15120 7500//15120 +f 7484//15121 7526//15121 7499//15121 +f 7497//15122 7530//15122 7525//15122 +f 7478//15123 7529//15123 7473//15123 +f 7495//15124 6419//15124 7496//15124 +f 7478//15125 7482//15125 7529//15125 +f 6230//15126 6242//15126 7486//15126 +f 7486//15127 6242//15127 7525//15127 +f 7525//15128 6242//15128 7500//15128 +f 7500//15129 6242//15129 7510//15129 +f 6254//15130 6235//15130 6218//15130 +f 6218//15131 6235//15131 6219//15131 +f 6219//15132 6235//15132 6230//15132 +f 6242//15133 6235//15133 6213//15133 +f 6230//15134 6235//15134 6242//15134 +f 7239//15135 6321//15135 6323//15135 +f 7224//15136 6323//15136 6335//15136 +f 7224//15137 7239//15137 6323//15137 +f 7225//15138 6335//15138 6301//15138 +f 7225//15139 7224//15139 6335//15139 +f 7245//15140 6301//15140 6300//15140 +f 7245//15141 7225//15141 6301//15141 +f 7234//15142 6317//15142 6353//15142 +f 7234//15143 6300//15143 6317//15143 +f 7234//15144 7245//15144 6300//15144 +g BullDogClip005 (Meshed) +f 7533//15145 7534//15145 7535//15145 +f 7536//15146 7535//15146 7537//15146 +f 7536//15147 7533//15147 7535//15147 +f 7538//15148 7537//15148 7539//15148 +f 7538//15149 7536//15149 7537//15149 +f 7540//15150 7538//15150 7539//15150 +f 7541//15151 7542//15151 7543//15151 +f 7544//15152 7545//15152 7546//15152 +f 7547//15153 7548//15153 7549//15153 +f 7550//15154 7551//15154 7542//15154 +f 7547//15155 7552//15155 7548//15155 +f 7550//15156 7553//15156 7551//15156 +f 7553//15157 7554//15157 7551//15157 +f 7555//15158 7556//15158 7554//15158 +f 7557//15159 7556//15159 7555//15159 +f 7556//15160 7558//15160 7554//15160 +f 7554//15161 7559//15161 7551//15161 +f 7558//15162 7559//15162 7554//15162 +f 7560//15163 7561//15163 7558//15163 +f 7552//15164 7561//15164 7562//15164 +f 7561//15165 7563//15165 7558//15165 +f 7558//15166 7563//15166 7559//15166 +f 7560//15167 7562//15167 7561//15167 +f 7562//15168 7564//15168 7552//15168 +f 7564//15169 7548//15169 7552//15169 +f 7565//15170 7545//15170 7544//15170 +f 7545//15171 7566//15171 7546//15171 +f 7566//15172 7557//15172 7567//15172 +f 7567//15173 7557//15173 7555//15173 +f 7567//15174 7546//15174 7566//15174 +f 7568//15175 7541//15175 7543//15175 +f 7541//15176 7550//15176 7542//15176 +f 7569//15177 7570//15177 7571//15177 +f 7571//15178 7570//15178 7572//15178 +f 7572//15179 7573//15179 7574//15179 +f 7570//15180 7573//15180 7572//15180 +f 7574//15181 7575//15181 7576//15181 +f 7573//15182 7575//15182 7574//15182 +f 7577//15183 7578//15183 7579//15183 +f 7577//15184 7580//15184 7578//15184 +f 7581//15185 7582//15185 7583//15185 +f 7584//15186 7585//15186 7586//15186 +f 7581//15187 7587//15187 7582//15187 +f 7584//15188 7586//15188 7580//15188 +f 7588//15189 7589//15189 7590//15189 +f 7588//15190 7590//15190 7587//15190 +f 7591//15191 7592//15191 7593//15191 +f 7591//15192 7594//15192 7595//15192 +f 7596//15193 7589//15193 7588//15193 +f 7596//15194 7587//15194 7581//15194 +f 7591//15195 7595//15195 7592//15195 +f 7596//15196 7588//15196 7587//15196 +f 7597//15197 7598//15197 7599//15197 +f 7597//15198 7600//15198 7598//15198 +f 7601//15199 7579//15199 7602//15199 +f 7601//15200 7577//15200 7579//15200 +f 7597//15201 7583//15201 7603//15201 +f 7597//15202 7603//15202 7600//15202 +f 7604//15203 7597//15203 7599//15203 +f 7605//15204 7606//15204 7607//15204 +f 7604//15205 7581//15205 7583//15205 +f 7605//15206 7607//15206 7608//15206 +f 7604//15207 7583//15207 7597//15207 +f 7609//15208 7599//15208 7610//15208 +f 7609//15209 7610//15209 7589//15209 +f 7609//15210 7589//15210 7596//15210 +f 7609//15211 7596//15211 7581//15211 +f 7609//15212 7604//15212 7599//15212 +f 7611//15213 7584//15213 7580//15213 +f 7609//15214 7581//15214 7604//15214 +f 7611//15215 7580//15215 7577//15215 +f 7612//15216 7608//15216 7585//15216 +f 7612//15217 7605//15217 7608//15217 +f 7613//15218 7577//15218 7601//15218 +f 7613//15219 7611//15219 7577//15219 +f 7614//15220 7593//15220 7615//15220 +f 7614//15221 7602//15221 7594//15221 +f 7614//15222 7591//15222 7593//15222 +f 7614//15223 7594//15223 7591//15223 +f 7616//15224 7585//15224 7584//15224 +f 7616//15225 7612//15225 7585//15225 +f 7617//15226 7616//15226 7584//15226 +f 7617//15227 7584//15227 7611//15227 +f 7618//15228 7602//15228 7614//15228 +f 7618//15229 7601//15229 7602//15229 +f 7618//15230 7614//15230 7615//15230 +f 7619//15231 7606//15231 7605//15231 +f 7620//15232 7621//15232 7622//15232 +f 7619//15233 7623//15233 7606//15233 +f 7620//15234 7624//15234 7621//15234 +f 7625//15235 7617//15235 7611//15235 +f 7625//15236 7611//15236 7613//15236 +f 7626//15237 7627//15237 7624//15237 +f 7628//15238 7605//15238 7612//15238 +f 7595//15239 7626//15239 7624//15239 +f 7628//15240 7619//15240 7605//15240 +f 7595//15241 7624//15241 7620//15241 +f 7629//15242 7630//15242 7623//15242 +f 7629//15243 7623//15243 7619//15243 +f 7631//15244 7632//15244 7627//15244 +f 7633//15245 7634//15245 7625//15245 +f 7633//15246 7613//15246 7601//15246 +f 7633//15247 7615//15247 7634//15247 +f 7633//15248 7601//15248 7618//15248 +f 7633//15249 7618//15249 7615//15249 +f 7633//15250 7625//15250 7613//15250 +f 7635//15251 7627//15251 7626//15251 +f 7636//15252 7619//15252 7628//15252 +f 7636//15253 7629//15253 7619//15253 +f 7636//15254 7630//15254 7629//15254 +f 7594//15255 7626//15255 7595//15255 +f 7594//15256 7635//15256 7626//15256 +f 7637//15257 7612//15257 7616//15257 +f 7637//15258 7628//15258 7612//15258 +f 7638//15259 7639//15259 7632//15259 +f 7638//15260 7607//15260 7639//15260 +f 7640//15261 7636//15261 7628//15261 +f 7640//15262 7628//15262 7637//15262 +f 7586//15263 7638//15263 7632//15263 +f 7641//15264 7616//15264 7617//15264 +f 7641//15265 7637//15265 7616//15265 +f 7586//15266 7632//15266 7631//15266 +f 7642//15267 7625//15267 7634//15267 +f 7578//15268 7627//15268 7635//15268 +f 7642//15269 7617//15269 7625//15269 +f 7642//15270 7641//15270 7617//15270 +f 7578//15271 7631//15271 7627//15271 +f 7608//15272 7607//15272 7638//15272 +f 7643//15273 7640//15273 7637//15273 +f 7643//15274 7637//15274 7641//15274 +f 7585//15275 7638//15275 7586//15275 +f 7603//15276 7641//15276 7642//15276 +f 7603//15277 7643//15277 7641//15277 +f 7585//15278 7608//15278 7638//15278 +f 7644//15279 7630//15279 7636//15279 +f 7644//15280 7636//15280 7640//15280 +f 7579//15281 7578//15281 7635//15281 +f 7582//15282 7640//15282 7643//15282 +f 7602//15283 7635//15283 7594//15283 +f 7582//15284 7644//15284 7640//15284 +f 7602//15285 7579//15285 7635//15285 +f 7583//15286 7643//15286 7603//15286 +f 7580//15287 7586//15287 7631//15287 +f 7580//15288 7631//15288 7578//15288 +f 7583//15289 7582//15289 7643//15289 +f 7645//15290 7590//15290 7630//15290 +f 7645//15291 7630//15291 7644//15291 +f 7592//15292 7622//15292 7593//15292 +f 7592//15293 7595//15293 7620//15293 +f 7587//15294 7590//15294 7645//15294 +f 7587//15295 7644//15295 7582//15295 +f 7592//15296 7620//15296 7622//15296 +f 7606//15297 7623//15297 7646//15297 +f 7606//15298 7646//15298 7639//15298 +f 7606//15299 7639//15299 7607//15299 +f 7587//15300 7645//15300 7644//15300 +f 7600//15301 7634//15301 7598//15301 +f 7600//15302 7642//15302 7634//15302 +f 7600//15303 7603//15303 7642//15303 +f 7647//15304 7648//15304 7649//15304 +f 7647//15305 7650//15305 7648//15305 +f 7651//15306 7652//15306 7650//15306 +f 7651//15307 7650//15307 7647//15307 +f 7653//15308 7654//15308 7655//15308 +f 7653//15309 7655//15309 7652//15309 +f 7653//15310 7652//15310 7651//15310 +f 7656//15311 7657//15311 7654//15311 +f 7656//15312 7654//15312 7653//15312 +f 7658//15313 7659//15313 7657//15313 +f 7658//15314 7657//15314 7656//15314 +f 7660//15315 7659//15315 7658//15315 +f 7661//15316 7662//15316 7663//15316 +f 7664//15317 7665//15317 7662//15317 +f 7664//15318 7662//15318 7661//15318 +f 7666//15319 7667//15319 7665//15319 +f 7666//15320 7665//15320 7664//15320 +f 7668//15321 7667//15321 7666//15321 +f 7669//15322 7670//15322 7667//15322 +f 7669//15323 7667//15323 7668//15323 +f 7671//15324 7672//15324 7670//15324 +f 7671//15325 7670//15325 7669//15325 +f 7673//15326 7674//15326 7672//15326 +f 7673//15327 7672//15327 7671//15327 +f 7675//15328 7676//15328 7677//15328 +f 7675//15329 7678//15329 7676//15329 +f 7679//15330 7680//15330 7681//15330 +f 7679//15331 7681//15331 7682//15331 +f 7683//15332 7677//15332 7684//15332 +f 7683//15333 7675//15333 7677//15333 +f 7685//15334 7682//15334 7678//15334 +f 7685//15335 7679//15335 7682//15335 +f 7686//15336 7684//15336 7687//15336 +f 7686//15337 7683//15337 7684//15337 +f 7688//15338 7680//15338 7679//15338 +f 7689//15339 7685//15339 7678//15339 +f 7689//15340 7678//15340 7675//15340 +f 7690//15341 7688//15341 7679//15341 +f 7690//15342 7679//15342 7685//15342 +f 7691//15343 7686//15343 7687//15343 +f 7691//15344 7692//15344 7693//15344 +f 7691//15345 7693//15345 7694//15345 +f 7691//15346 7687//15346 7692//15346 +f 7695//15347 7690//15347 7685//15347 +f 7695//15348 7685//15348 7689//15348 +f 7696//15349 7680//15349 7688//15349 +f 7696//15350 7697//15350 7680//15350 +f 7698//15351 7696//15351 7688//15351 +f 7698//15352 7688//15352 7690//15352 +f 7699//15353 7689//15353 7675//15353 +f 7700//15354 7701//15354 7702//15354 +f 7699//15355 7675//15355 7683//15355 +f 7700//15356 7703//15356 7701//15356 +f 7704//15357 7683//15357 7686//15357 +f 7705//15358 7702//15358 7706//15358 +f 7704//15359 7699//15359 7683//15359 +f 7705//15360 7700//15360 7702//15360 +f 7707//15361 7690//15361 7695//15361 +f 7707//15362 7698//15362 7690//15362 +f 7708//15363 7703//15363 7700//15363 +f 7709//15364 7706//15364 7710//15364 +f 7711//15365 7695//15365 7689//15365 +f 7709//15366 7705//15366 7706//15366 +f 7711//15367 7689//15367 7699//15367 +f 7709//15368 7700//15368 7705//15368 +f 7709//15369 7708//15369 7700//15369 +f 7712//15370 7694//15370 7713//15370 +f 7714//15371 7715//15371 7703//15371 +f 7712//15372 7699//15372 7704//15372 +f 7714//15373 7703//15373 7708//15373 +f 7712//15374 7711//15374 7699//15374 +f 7716//15375 7691//15375 7694//15375 +f 7716//15376 7712//15376 7704//15376 +f 7716//15377 7686//15377 7691//15377 +f 7717//15378 7708//15378 7709//15378 +f 7716//15379 7694//15379 7712//15379 +f 7717//15380 7714//15380 7708//15380 +f 7716//15381 7704//15381 7686//15381 +f 7718//15382 7697//15382 7696//15382 +f 7719//15383 7717//15383 7709//15383 +f 7719//15384 7709//15384 7710//15384 +f 7720//15385 7718//15385 7696//15385 +f 7721//15386 7715//15386 7714//15386 +f 7720//15387 7696//15387 7698//15387 +f 7722//15388 7695//15388 7711//15388 +f 7722//15389 7707//15389 7695//15389 +f 7722//15390 7712//15390 7713//15390 +f 7723//15391 7714//15391 7717//15391 +f 7722//15392 7711//15392 7712//15392 +f 7724//15393 7697//15393 7718//15393 +f 7723//15394 7721//15394 7714//15394 +f 7725//15395 7681//15395 7715//15395 +f 7726//15396 7727//15396 7728//15396 +f 7725//15397 7715//15397 7721//15397 +f 7726//15398 7718//15398 7720//15398 +f 7726//15399 7724//15399 7718//15399 +f 7729//15400 7713//15400 7727//15400 +f 7729//15401 7707//15401 7722//15401 +f 7729//15402 7698//15402 7707//15402 +f 7729//15403 7720//15403 7698//15403 +f 7676//15404 7721//15404 7723//15404 +f 7729//15405 7727//15405 7726//15405 +f 7676//15406 7725//15406 7721//15406 +f 7729//15407 7726//15407 7720//15407 +f 7729//15408 7722//15408 7713//15408 +f 7730//15409 7728//15409 7731//15409 +f 7732//15410 7717//15410 7719//15410 +f 7730//15411 7731//15411 7733//15411 +f 7732//15412 7723//15412 7717//15412 +f 7730//15413 7733//15413 7697//15413 +f 7730//15414 7697//15414 7724//15414 +f 7730//15415 7724//15415 7726//15415 +f 7730//15416 7726//15416 7728//15416 +f 7677//15417 7676//15417 7723//15417 +f 7677//15418 7723//15418 7732//15418 +f 7734//15419 7719//15419 7710//15419 +f 7734//15420 7732//15420 7719//15420 +f 7735//15421 7710//15421 7692//15421 +f 7735//15422 7734//15422 7710//15422 +f 7684//15423 7677//15423 7732//15423 +f 7684//15424 7732//15424 7734//15424 +f 7682//15425 7681//15425 7725//15425 +f 7687//15426 7735//15426 7692//15426 +f 7687//15427 7734//15427 7735//15427 +f 7687//15428 7684//15428 7734//15428 +f 7678//15429 7682//15429 7725//15429 +f 7678//15430 7725//15430 7676//15430 +f 7736//15431 7737//15431 7738//15431 +f 7739//15432 7740//15432 7741//15432 +f 7739//15433 7741//15433 7742//15433 +f 7739//15434 7743//15434 7740//15434 +f 7744//15435 7742//15435 7745//15435 +f 7744//15436 7743//15436 7739//15436 +f 7744//15437 7739//15437 7742//15437 +f 7746//15438 7747//15438 7743//15438 +f 7746//15439 7744//15439 7745//15439 +f 7746//15440 7743//15440 7744//15440 +f 7748//15441 7745//15441 7749//15441 +f 7748//15442 7746//15442 7745//15442 +f 7748//15443 7747//15443 7746//15443 +f 7750//15444 7738//15444 7747//15444 +f 7750//15445 7748//15445 7749//15445 +f 7750//15446 7747//15446 7748//15446 +f 7751//15447 7749//15447 7736//15447 +f 7751//15448 7738//15448 7750//15448 +f 7751//15449 7750//15449 7749//15449 +f 7751//15450 7736//15450 7738//15450 +f 7752//15451 7736//15451 7753//15451 +f 7752//15452 7737//15452 7736//15452 +f 7754//15453 7737//15453 7752//15453 +f 7754//15454 7752//15454 7753//15454 +f 7755//15455 7753//15455 7756//15455 +f 7755//15456 7757//15456 7737//15456 +f 7755//15457 7754//15457 7753//15457 +f 7755//15458 7737//15458 7754//15458 +f 7758//15459 7756//15459 7759//15459 +f 7758//15460 7759//15460 7760//15460 +f 7758//15461 7760//15461 7761//15461 +f 7758//15462 7761//15462 7757//15462 +f 7758//15463 7755//15463 7756//15463 +f 7758//15464 7757//15464 7755//15464 +f 7762//15465 7763//15465 7764//15465 +f 7765//15466 7766//15466 7767//15466 +f 7765//15467 7767//15467 7768//15467 +f 7765//15468 7769//15468 7770//15468 +f 7765//15469 7770//15469 7766//15469 +f 7771//15470 7768//15470 7764//15470 +f 7771//15471 7772//15471 7769//15471 +f 7771//15472 7769//15472 7765//15472 +f 7771//15473 7765//15473 7768//15473 +f 7773//15474 7771//15474 7764//15474 +f 7773//15475 7772//15475 7771//15475 +f 7774//15476 7763//15476 7772//15476 +f 7774//15477 7772//15477 7773//15477 +f 7774//15478 7773//15478 7764//15478 +f 7774//15479 7764//15479 7763//15479 +f 7775//15480 7762//15480 7776//15480 +f 7775//15481 7777//15481 7763//15481 +f 7775//15482 7763//15482 7762//15482 +f 7778//15483 7779//15483 7777//15483 +f 7778//15484 7775//15484 7776//15484 +f 7778//15485 7777//15485 7775//15485 +f 7780//15486 7776//15486 7781//15486 +f 7780//15487 7778//15487 7776//15487 +f 7780//15488 7779//15488 7778//15488 +f 7782//15489 7783//15489 7779//15489 +f 7782//15490 7780//15490 7781//15490 +f 7782//15491 7779//15491 7780//15491 +f 7784//15492 7781//15492 7785//15492 +f 7784//15493 7785//15493 7786//15493 +f 7784//15494 7786//15494 7783//15494 +f 7784//15495 7783//15495 7782//15495 +f 7784//15496 7782//15496 7781//15496 +f 7787//15497 7788//15497 7789//15497 +f 7787//15498 7789//15498 7790//15498 +f 7791//15499 7790//15499 7792//15499 +f 7791//15500 7787//15500 7790//15500 +f 7793//15501 7792//15501 7794//15501 +f 7793//15502 7791//15502 7792//15502 +f 7795//15503 7794//15503 7796//15503 +f 7795//15504 7793//15504 7794//15504 +f 7797//15505 7796//15505 7798//15505 +f 7797//15506 7795//15506 7796//15506 +f 7799//15507 7800//15507 7801//15507 +f 7800//15508 7802//15508 7801//15508 +f 7800//15509 7803//15509 7802//15509 +f 7693//15510 7692//15510 7639//15510 +f 7804//15511 7805//15511 7802//15511 +f 7806//15512 7807//15512 7808//15512 +f 7621//15513 7809//15513 7805//15513 +f 7805//15514 7809//15514 7802//15514 +f 7627//15515 7706//15515 7624//15515 +f 7807//15516 7810//15516 7811//15516 +f 7624//15517 7702//15517 7621//15517 +f 7706//15518 7702//15518 7624//15518 +f 7810//15519 7812//15519 7702//15519 +f 7621//15520 7812//15520 7809//15520 +f 7702//15521 7812//15521 7621//15521 +f 7807//15522 7812//15522 7810//15522 +f 7809//15523 7813//15523 7814//15523 +f 7812//15524 7813//15524 7809//15524 +f 7814//15525 7815//15525 7816//15525 +f 7813//15526 7815//15526 7814//15526 +f 7815//15527 7817//15527 7816//15527 +f 7816//15528 7817//15528 7818//15528 +f 7692//15529 7710//15529 7632//15529 +f 7639//15530 7646//15530 7693//15530 +f 7632//15531 7639//15531 7692//15531 +f 7627//15532 7632//15532 7710//15532 +f 7627//15533 7710//15533 7706//15533 +f 7803//15534 7804//15534 7802//15534 +f 7808//15535 7819//15535 7806//15535 +f 7811//15536 7808//15536 7807//15536 +f 7820//15537 7562//15537 7560//15537 +f 7821//15538 7822//15538 7823//15538 +f 7820//15539 7560//15539 7824//15539 +f 7821//15540 7825//15540 7822//15540 +f 7820//15541 7826//15541 7827//15541 +f 7828//15542 7829//15542 7830//15542 +f 7820//15543 7824//15543 7826//15543 +f 7828//15544 7831//15544 7829//15544 +f 7832//15545 7564//15545 7562//15545 +f 7832//15546 7833//15546 7834//15546 +f 7832//15547 7835//15547 7564//15547 +f 7832//15548 7834//15548 7835//15548 +f 7832//15549 7827//15549 7833//15549 +f 7836//15550 7823//15550 7831//15550 +f 7832//15551 7562//15551 7820//15551 +f 7836//15552 7821//15552 7823//15552 +f 7832//15553 7820//15553 7827//15553 +f 7837//15554 7558//15554 7838//15554 +f 7837//15555 7560//15555 7558//15555 +f 7839//15556 7830//15556 7549//15556 +f 7837//15557 7824//15557 7560//15557 +f 7839//15558 7828//15558 7830//15558 +f 7837//15559 7838//15559 7840//15559 +f 7839//15560 7831//15560 7828//15560 +f 7837//15561 7840//15561 7841//15561 +f 7837//15562 7841//15562 7824//15562 +f 7839//15563 7836//15563 7831//15563 +f 7842//15564 7843//15564 7844//15564 +f 7842//15565 7844//15565 7845//15565 +f 7846//15566 7842//15566 7845//15566 +f 7846//15567 7845//15567 7825//15567 +f 7847//15568 7848//15568 7849//15568 +f 7847//15569 7849//15569 7850//15569 +f 7851//15570 7846//15570 7825//15570 +f 7851//15571 7825//15571 7821//15571 +f 7852//15572 7851//15572 7821//15572 +f 7852//15573 7821//15573 7836//15573 +f 7853//15574 7852//15574 7836//15574 +f 7853//15575 7836//15575 7839//15575 +f 7854//15576 7848//15576 7847//15576 +f 7855//15577 7843//15577 7842//15577 +f 7855//15578 7856//15578 7843//15578 +f 7857//15579 7858//15579 7859//15579 +f 7860//15580 7856//15580 7855//15580 +f 7860//15581 7850//15581 7856//15581 +f 7861//15582 7858//15582 7857//15582 +f 7862//15583 7855//15583 7842//15583 +f 7863//15584 7859//15584 7864//15584 +f 7862//15585 7842//15585 7846//15585 +f 7863//15586 7864//15586 7865//15586 +f 7863//15587 7857//15587 7859//15587 +f 7841//15588 7848//15588 7854//15588 +f 7866//15589 7867//15589 7858//15589 +f 7868//15590 7860//15590 7855//15590 +f 7868//15591 7855//15591 7862//15591 +f 7866//15592 7858//15592 7861//15592 +f 7869//15593 7853//15593 7839//15593 +f 7844//15594 7867//15594 7866//15594 +f 7869//15595 7839//15595 7549//15595 +f 7870//15596 7846//15596 7851//15596 +f 7871//15597 7857//15597 7863//15597 +f 7870//15598 7862//15598 7846//15598 +f 7872//15599 7865//15599 7829//15599 +f 7872//15600 7863//15600 7865//15600 +f 7873//15601 7868//15601 7862//15601 +f 7872//15602 7871//15602 7863//15602 +f 7873//15603 7862//15603 7870//15603 +f 7874//15604 7851//15604 7852//15604 +f 7875//15605 7861//15605 7857//15605 +f 7874//15606 7870//15606 7851//15606 +f 7875//15607 7857//15607 7871//15607 +f 7876//15608 7871//15608 7872//15608 +f 7877//15609 7873//15609 7870//15609 +f 7876//15610 7875//15610 7871//15610 +f 7877//15611 7870//15611 7874//15611 +f 7878//15612 7852//15612 7853//15612 +f 7878//15613 7874//15613 7852//15613 +f 7879//15614 7872//15614 7829//15614 +f 7879//15615 7876//15615 7872//15615 +f 7843//15616 7849//15616 7867//15616 +f 7880//15617 7548//15617 7564//15617 +f 7880//15618 7874//15618 7878//15618 +f 7843//15619 7867//15619 7844//15619 +f 7880//15620 7877//15620 7874//15620 +f 7840//15621 7838//15621 7848//15621 +f 7881//15622 7861//15622 7875//15622 +f 7881//15623 7866//15623 7861//15623 +f 7840//15624 7848//15624 7841//15624 +f 7882//15625 7847//15625 7850//15625 +f 7882//15626 7850//15626 7860//15626 +f 7833//15627 7882//15627 7860//15627 +f 7822//15628 7875//15628 7876//15628 +f 7822//15629 7881//15629 7875//15629 +f 7833//15630 7860//15630 7868//15630 +f 7845//15631 7844//15631 7866//15631 +f 7883//15632 7549//15632 7548//15632 +f 7845//15633 7866//15633 7881//15633 +f 7883//15634 7853//15634 7869//15634 +f 7883//15635 7869//15635 7549//15635 +f 7883//15636 7878//15636 7853//15636 +f 7883//15637 7548//15637 7880//15637 +f 7883//15638 7880//15638 7878//15638 +f 7823//15639 7876//15639 7879//15639 +f 7834//15640 7868//15640 7873//15640 +f 7823//15641 7822//15641 7876//15641 +f 7834//15642 7833//15642 7868//15642 +f 7835//15643 7873//15643 7877//15643 +f 7835//15644 7880//15644 7564//15644 +f 7856//15645 7849//15645 7843//15645 +f 7835//15646 7877//15646 7880//15646 +f 7835//15647 7834//15647 7873//15647 +f 7825//15648 7881//15648 7822//15648 +f 7826//15649 7854//15649 7847//15649 +f 7825//15650 7845//15650 7881//15650 +f 7826//15651 7847//15651 7882//15651 +f 7827//15652 7882//15652 7833//15652 +f 7850//15653 7849//15653 7856//15653 +f 7827//15654 7826//15654 7882//15654 +f 7831//15655 7823//15655 7879//15655 +f 7824//15656 7841//15656 7854//15656 +f 7831//15657 7879//15657 7829//15657 +f 7824//15658 7854//15658 7826//15658 +f 7884//15659 7885//15659 7886//15659 +f 7887//15660 7888//15660 7884//15660 +f 7887//15661 7889//15661 7888//15661 +f 7890//15662 7891//15662 7889//15662 +f 7890//15663 7889//15663 7887//15663 +f 7892//15664 7893//15664 7894//15664 +f 7892//15665 7895//15665 7893//15665 +f 7892//15666 7886//15666 7895//15666 +f 7896//15667 7897//15667 7898//15667 +f 7896//15668 7898//15668 7891//15668 +f 7896//15669 7891//15669 7890//15669 +f 7899//15670 7884//15670 7886//15670 +f 7899//15671 7892//15671 7894//15671 +f 7899//15672 7886//15672 7892//15672 +f 7900//15673 7894//15673 7901//15673 +f 7900//15674 7884//15674 7899//15674 +f 7900//15675 7887//15675 7884//15675 +f 7900//15676 7899//15676 7894//15676 +f 7902//15677 7901//15677 7903//15677 +f 7902//15678 7900//15678 7901//15678 +f 7902//15679 7890//15679 7887//15679 +f 7902//15680 7887//15680 7900//15680 +f 7904//15681 7905//15681 7897//15681 +f 7904//15682 7903//15682 7905//15682 +f 7904//15683 7897//15683 7896//15683 +f 7904//15684 7896//15684 7890//15684 +f 7904//15685 7902//15685 7903//15685 +f 7904//15686 7890//15686 7902//15686 +f 7906//15687 7907//15687 7908//15687 +f 7909//15688 7910//15688 7907//15688 +f 7909//15689 7907//15689 7906//15689 +f 7911//15690 7912//15690 7910//15690 +f 7911//15691 7910//15691 7909//15691 +f 7913//15692 7914//15692 7912//15692 +f 7913//15693 7912//15693 7911//15693 +f 7885//15694 7908//15694 7895//15694 +f 7885//15695 7906//15695 7908//15695 +f 7915//15696 7916//15696 7917//15696 +f 7915//15697 7917//15697 7914//15697 +f 7915//15698 7914//15698 7913//15698 +f 7888//15699 7906//15699 7885//15699 +f 7888//15700 7909//15700 7906//15700 +f 7889//15701 7911//15701 7909//15701 +f 7889//15702 7909//15702 7888//15702 +f 7891//15703 7913//15703 7911//15703 +f 7891//15704 7911//15704 7889//15704 +f 7886//15705 7885//15705 7895//15705 +f 7898//15706 7897//15706 7916//15706 +f 7898//15707 7916//15707 7915//15707 +f 7898//15708 7915//15708 7913//15708 +f 7898//15709 7913//15709 7891//15709 +f 7884//15710 7888//15710 7885//15710 +f 7918//15711 7919//15711 7920//15711 +f 7918//15712 7920//15712 7921//15712 +f 7922//15713 7919//15713 7918//15713 +f 7922//15714 7923//15714 7919//15714 +f 7924//15715 7925//15715 7923//15715 +f 7924//15716 7923//15716 7922//15716 +f 7926//15717 7927//15717 7928//15717 +f 7926//15718 7921//15718 7927//15718 +f 7929//15719 7930//15719 7931//15719 +f 7929//15720 7931//15720 7932//15720 +f 7929//15721 7932//15721 7925//15721 +f 7929//15722 7925//15722 7924//15722 +f 7933//15723 7928//15723 7934//15723 +f 7933//15724 7918//15724 7921//15724 +f 7933//15725 7926//15725 7928//15725 +f 7933//15726 7921//15726 7926//15726 +f 7935//15727 7934//15727 7936//15727 +f 7935//15728 7918//15728 7933//15728 +f 7935//15729 7922//15729 7918//15729 +f 7935//15730 7933//15730 7934//15730 +f 7937//15731 7936//15731 7938//15731 +f 7937//15732 7935//15732 7936//15732 +f 7937//15733 7924//15733 7922//15733 +f 7937//15734 7922//15734 7935//15734 +f 7939//15735 7940//15735 7930//15735 +f 7939//15736 7938//15736 7940//15736 +f 7939//15737 7930//15737 7929//15737 +f 7939//15738 7929//15738 7924//15738 +f 7939//15739 7937//15739 7938//15739 +f 7939//15740 7924//15740 7937//15740 +f 7941//15741 7942//15741 7943//15741 +f 7944//15742 7945//15742 7942//15742 +f 7944//15743 7942//15743 7941//15743 +f 7946//15744 7947//15744 7945//15744 +f 7946//15745 7945//15745 7944//15745 +f 7948//15746 7949//15746 7947//15746 +f 7948//15747 7947//15747 7946//15747 +f 7920//15748 7941//15748 7943//15748 +f 7950//15749 7931//15749 7951//15749 +f 7950//15750 7951//15750 7949//15750 +f 7950//15751 7949//15751 7948//15751 +f 7919//15752 7941//15752 7920//15752 +f 7919//15753 7944//15753 7941//15753 +f 7923//15754 7946//15754 7944//15754 +f 7923//15755 7944//15755 7919//15755 +f 7925//15756 7948//15756 7946//15756 +f 7925//15757 7946//15757 7923//15757 +f 7921//15758 7943//15758 7927//15758 +f 7921//15759 7920//15759 7943//15759 +f 7932//15760 7931//15760 7950//15760 +f 7932//15761 7950//15761 7948//15761 +f 7932//15762 7948//15762 7925//15762 +f 7952//15763 7953//15763 7954//15763 +f 7952//15764 7955//15764 7953//15764 +f 7956//15765 7952//15765 7954//15765 +f 7956//15766 7954//15766 7957//15766 +f 7958//15767 7541//15767 7568//15767 +f 7958//15768 7568//15768 7959//15768 +f 7958//15769 7959//15769 7960//15769 +f 7961//15770 7962//15770 7963//15770 +f 7961//15771 7964//15771 7962//15771 +f 7961//15772 7957//15772 7964//15772 +f 7961//15773 7956//15773 7957//15773 +f 7965//15774 7958//15774 7960//15774 +f 7965//15775 7960//15775 7966//15775 +f 7967//15776 7965//15776 7966//15776 +f 7967//15777 7966//15777 7955//15777 +f 7968//15778 7955//15778 7952//15778 +f 7968//15779 7967//15779 7955//15779 +f 7969//15780 7952//15780 7956//15780 +f 7969//15781 7968//15781 7952//15781 +f 7970//15782 7969//15782 7956//15782 +f 7970//15783 7961//15783 7963//15783 +f 7970//15784 7956//15784 7961//15784 +f 7971//15785 7541//15785 7958//15785 +f 7971//15786 7958//15786 7965//15786 +f 7972//15787 7550//15787 7541//15787 +f 7972//15788 7541//15788 7971//15788 +f 7973//15789 7971//15789 7965//15789 +f 7973//15790 7965//15790 7967//15790 +f 7974//15791 7975//15791 7976//15791 +f 7974//15792 7976//15792 7977//15792 +f 7978//15793 7972//15793 7971//15793 +f 7974//15794 7977//15794 7979//15794 +f 7978//15795 7971//15795 7973//15795 +f 7980//15796 7981//15796 7975//15796 +f 7978//15797 7550//15797 7972//15797 +f 7982//15798 7973//15798 7967//15798 +f 7982//15799 7967//15799 7968//15799 +f 7983//15800 7978//15800 7973//15800 +f 7984//15801 7981//15801 7980//15801 +f 7983//15802 7973//15802 7982//15802 +f 7985//15803 7975//15803 7974//15803 +f 7985//15804 7980//15804 7975//15804 +f 7986//15805 7968//15805 7969//15805 +f 7985//15806 7974//15806 7979//15806 +f 7987//15807 7984//15807 7980//15807 +f 7986//15808 7982//15808 7968//15808 +f 7987//15809 7985//15809 7979//15809 +f 7987//15810 7980//15810 7985//15810 +f 7988//15811 7969//15811 7970//15811 +f 7989//15812 7990//15812 7981//15812 +f 7988//15813 7970//15813 7963//15813 +f 7988//15814 7963//15814 7991//15814 +f 7988//15815 7986//15815 7969//15815 +f 7992//15816 7959//15816 7990//15816 +f 7993//15817 7983//15817 7982//15817 +f 7993//15818 7982//15818 7986//15818 +f 7994//15819 7988//15819 7991//15819 +f 7995//15820 7989//15820 7981//15820 +f 7994//15821 7986//15821 7988//15821 +f 7994//15822 7993//15822 7986//15822 +f 7996//15823 7550//15823 7978//15823 +f 7953//15824 7992//15824 7990//15824 +f 7996//15825 7978//15825 7983//15825 +f 7953//15826 7990//15826 7989//15826 +f 7960//15827 7959//15827 7992//15827 +f 7997//15828 7996//15828 7983//15828 +f 7997//15829 7983//15829 7993//15829 +f 7998//15830 7981//15830 7984//15830 +f 7998//15831 7995//15831 7981//15831 +f 7999//15832 7991//15832 8000//15832 +f 7999//15833 7993//15833 7994//15833 +f 7999//15834 7997//15834 7993//15834 +f 8001//15835 7979//15835 7962//15835 +f 8001//15836 7984//15836 7987//15836 +f 7999//15837 7994//15837 7991//15837 +f 8002//15838 7553//15838 7550//15838 +f 8001//15839 7998//15839 7984//15839 +f 8002//15840 7550//15840 7996//15840 +f 8001//15841 7987//15841 7979//15841 +f 8002//15842 7996//15842 7997//15842 +f 8003//15843 7999//15843 8000//15843 +f 7954//15844 7989//15844 7995//15844 +f 8003//15845 7997//15845 7999//15845 +f 7954//15846 7953//15846 7989//15846 +f 8003//15847 8002//15847 7997//15847 +f 8004//15848 8005//15848 7554//15848 +f 8004//15849 7554//15849 7553//15849 +f 8004//15850 8000//15850 8005//15850 +f 8004//15851 7553//15851 8002//15851 +f 8004//15852 8003//15852 8000//15852 +f 8004//15853 8002//15853 8003//15853 +f 7966//15854 7960//15854 7992//15854 +f 7957//15855 7954//15855 7995//15855 +f 7957//15856 7995//15856 7998//15856 +f 7955//15857 7992//15857 7953//15857 +f 7955//15858 7966//15858 7992//15858 +f 7964//15859 8001//15859 7962//15859 +f 7964//15860 7998//15860 8001//15860 +f 7964//15861 7957//15861 7998//15861 +f 8006//15862 8007//15862 8008//15862 +f 8009//15863 8010//15863 8011//15863 +f 8009//15864 8011//15864 8012//15864 +f 8009//15865 8012//15865 8013//15865 +f 8014//15866 8015//15866 8010//15866 +f 8014//15867 8010//15867 8009//15867 +f 8014//15868 8009//15868 8013//15868 +f 8016//15869 8013//15869 8017//15869 +f 8016//15870 8014//15870 8013//15870 +f 8016//15871 8015//15871 8014//15871 +f 8018//15872 8019//15872 8015//15872 +f 8018//15873 8015//15873 8016//15873 +f 8018//15874 8016//15874 8017//15874 +f 8020//15875 8017//15875 8008//15875 +f 8020//15876 8018//15876 8017//15876 +f 8020//15877 8019//15877 8018//15877 +f 8021//15878 8007//15878 8019//15878 +f 8021//15879 8020//15879 8008//15879 +f 8021//15880 8008//15880 8007//15880 +f 8021//15881 8019//15881 8020//15881 +f 8022//15882 8023//15882 8007//15882 +f 8022//15883 8007//15883 8006//15883 +f 8024//15884 8023//15884 8022//15884 +f 8024//15885 8022//15885 8006//15885 +f 8025//15886 8026//15886 8023//15886 +f 8025//15887 8006//15887 8027//15887 +f 8025//15888 8023//15888 8024//15888 +f 8025//15889 8024//15889 8006//15889 +f 8028//15890 8029//15890 8030//15890 +f 8028//15891 8031//15891 8026//15891 +f 8028//15892 8030//15892 8031//15892 +f 8028//15893 8027//15893 8029//15893 +f 8028//15894 8026//15894 8025//15894 +f 8028//15895 8025//15895 8027//15895 +f 8032//15896 8033//15896 8034//15896 +f 8035//15897 8036//15897 8037//15897 +f 8035//15898 8037//15898 8038//15898 +f 8035//15899 8039//15899 8040//15899 +f 8035//15900 8038//15900 8039//15900 +f 8041//15901 8034//15901 8036//15901 +f 8041//15902 8040//15902 8042//15902 +f 8041//15903 8036//15903 8035//15903 +f 8041//15904 8035//15904 8040//15904 +f 8043//15905 8041//15905 8042//15905 +f 8043//15906 8034//15906 8041//15906 +f 8044//15907 8042//15907 8032//15907 +f 8044//15908 8043//15908 8042//15908 +f 8044//15909 8032//15909 8034//15909 +f 8044//15910 8034//15910 8043//15910 +f 8045//15911 8046//15911 8033//15911 +f 8045//15912 8032//15912 8047//15912 +f 8045//15913 8033//15913 8032//15913 +f 8048//15914 8047//15914 8049//15914 +f 8048//15915 8045//15915 8047//15915 +f 8048//15916 8046//15916 8045//15916 +f 8050//15917 8051//15917 8046//15917 +f 8050//15918 8046//15918 8048//15918 +f 8050//15919 8048//15919 8049//15919 +f 8052//15920 8049//15920 8053//15920 +f 8052//15921 8051//15921 8050//15921 +f 8052//15922 8050//15922 8049//15922 +f 8054//15923 8055//15923 8056//15923 +f 8054//15924 8056//15924 8051//15924 +f 8054//15925 8053//15925 8055//15925 +f 8054//15926 8051//15926 8052//15926 +f 8054//15927 8052//15927 8053//15927 +f 8057//15928 8058//15928 8007//15928 +f 8057//15929 8007//15929 8023//15929 +f 8059//15930 8060//15930 8061//15930 +f 8039//15931 8038//15931 8062//15931 +f 8063//15932 8055//15932 8064//15932 +f 8031//15933 8057//15933 8026//15933 +f 8040//15934 8039//15934 8062//15934 +f 8030//15935 8057//15935 8031//15935 +f 8030//15936 8059//15936 8061//15936 +f 8030//15937 8061//15937 8055//15937 +f 8065//15938 8038//15938 8011//15938 +f 8066//15939 8055//15939 8063//15939 +f 8065//15940 8062//15940 8038//15940 +f 8067//15941 8038//15941 8068//15941 +f 8067//15942 8011//15942 8038//15942 +f 8066//15943 8030//15943 8055//15943 +f 8066//15944 8057//15944 8030//15944 +f 7533//15945 8063//15945 7534//15945 +f 7533//15946 8066//15946 8063//15946 +f 8059//15947 8069//15947 8060//15947 +f 8069//15948 8070//15948 8071//15948 +f 8070//15949 8072//15949 8073//15949 +f 8072//15950 8074//15950 8075//15950 +f 8076//15951 8042//15951 8040//15951 +f 8074//15952 8077//15952 8078//15952 +f 8015//15953 8019//15953 8058//15953 +f 8019//15954 8007//15954 8058//15954 +f 8023//15955 8026//15955 8057//15955 +f 8068//15956 8078//15956 8077//15956 +f 8076//15957 8040//15957 8062//15957 +f 8078//15958 8075//15958 8074//15958 +f 8075//15959 8073//15959 8072//15959 +f 8073//15960 8071//15960 8070//15960 +f 8071//15961 8060//15961 8069//15961 +f 8053//15962 8049//15962 8064//15962 +f 8049//15963 8047//15963 8064//15963 +f 8010//15964 8065//15964 8011//15964 +f 8032//15965 8042//15965 8076//15965 +f 8077//15966 8067//15966 8068//15966 +f 8015//15967 8065//15967 8010//15967 +f 8047//15968 8032//15968 8076//15968 +f 8058//15969 8065//15969 8015//15969 +f 8064//15970 8047//15970 8076//15970 +f 8055//15971 8053//15971 8064//15971 +f 7576//15972 7976//15972 8079//15972 +f 7575//15973 7976//15973 7576//15973 +f 7976//15974 7975//15974 8079//15974 +f 7976//15975 7864//15975 8080//15975 +f 7575//15976 7864//15976 7976//15976 +f 8080//15977 8081//15977 8082//15977 +f 7864//15978 8081//15978 8080//15978 +f 7981//15979 8083//15979 8079//15979 +f 7864//15980 8084//15980 7865//15980 +f 7575//15981 8084//15981 7864//15981 +f 8084//15982 7829//15982 7865//15982 +f 7959//15983 7543//15983 8083//15983 +f 8084//15984 8085//15984 7829//15984 +f 7959//15985 7568//15985 7543//15985 +f 8086//15986 7565//15986 8087//15986 +f 8085//15987 7547//15987 7830//15987 +f 7975//15988 7981//15988 8079//15988 +f 7981//15989 7990//15989 8083//15989 +f 7990//15990 7959//15990 8083//15990 +f 7544//15991 8087//15991 7565//15991 +f 8087//15992 8088//15992 8086//15992 +f 8088//15993 8082//15993 8089//15993 +f 8089//15994 8082//15994 8081//15994 +f 8089//15995 8086//15995 8088//15995 +f 7549//15996 7830//15996 7547//15996 +f 7830//15997 7829//15997 8085//15997 +f 7559//15998 8090//15998 8091//15998 +f 7563//15999 8090//15999 7559//15999 +f 8091//16000 8092//16000 8093//16000 +f 8090//16001 8092//16001 8091//16001 +f 8093//16002 7569//16002 7571//16002 +f 8092//16003 7569//16003 8093//16003 +f 8094//16004 7540//16004 7539//16004 +f 8094//16005 7539//16005 8095//16005 +f 8096//16006 8095//16006 8097//16006 +f 8096//16007 8094//16007 8095//16007 +f 8098//16008 8097//16008 8099//16008 +f 8098//16009 8096//16009 8097//16009 +f 8100//16010 8101//16010 8102//16010 +f 8100//16011 8103//16011 8101//16011 +f 8104//16012 8102//16012 8105//16012 +f 8104//16013 8100//16013 8102//16013 +f 8106//16014 8105//16014 8107//16014 +f 8106//16015 8104//16015 8105//16015 +f 8108//16016 8109//16016 8110//16016 +f 8110//16017 8109//16017 8111//16017 +f 8111//16018 8112//16018 8113//16018 +f 8109//16019 8112//16019 8111//16019 +f 8113//16020 8114//16020 8115//16020 +f 8112//16021 8114//16021 8113//16021 +f 8099//16022 8115//16022 8114//16022 +f 8099//16023 8114//16023 8098//16023 +f 8107//16024 8062//16024 8065//16024 +f 8107//16025 8065//16025 8106//16025 +f 8073//16026 8116//16026 8117//16026 +f 8118//16027 8056//16027 8055//16027 +f 8118//16028 8061//16028 8060//16028 +f 8118//16029 8055//16029 8061//16029 +f 8118//16030 8119//16030 8056//16030 +f 8120//16031 8060//16031 8071//16031 +f 8120//16032 8117//16032 8119//16032 +f 8120//16033 8119//16033 8118//16033 +f 8120//16034 8118//16034 8060//16034 +f 8121//16035 8120//16035 8071//16035 +f 8121//16036 8117//16036 8120//16036 +f 8122//16037 8071//16037 8073//16037 +f 8122//16038 8121//16038 8071//16038 +f 8122//16039 8117//16039 8121//16039 +f 8122//16040 8073//16040 8117//16040 +f 8123//16041 8073//16041 8075//16041 +f 8123//16042 8124//16042 8116//16042 +f 8123//16043 8116//16043 8073//16043 +f 8125//16044 8075//16044 8078//16044 +f 8125//16045 8124//16045 8123//16045 +f 8125//16046 8123//16046 8075//16046 +f 8126//16047 8127//16047 8124//16047 +f 8126//16048 8125//16048 8078//16048 +f 8126//16049 8124//16049 8125//16049 +f 8128//16050 8078//16050 8068//16050 +f 8128//16051 8127//16051 8126//16051 +f 8128//16052 8126//16052 8078//16052 +f 8129//16053 8068//16053 8038//16053 +f 8129//16054 8038//16054 8037//16054 +f 8129//16055 8037//16055 8127//16055 +f 8129//16056 8128//16056 8068//16056 +f 8129//16057 8127//16057 8128//16057 +f 8130//16058 8072//16058 8131//16058 +f 8132//16059 8030//16059 8029//16059 +f 8132//16060 8029//16060 8133//16060 +f 8132//16061 8059//16061 8030//16061 +f 8134//16062 8069//16062 8059//16062 +f 8134//16063 8059//16063 8132//16063 +f 8134//16064 8132//16064 8133//16064 +f 8135//16065 8133//16065 8136//16065 +f 8135//16066 8134//16066 8133//16066 +f 8135//16067 8069//16067 8134//16067 +f 8137//16068 8070//16068 8069//16068 +f 8137//16069 8135//16069 8136//16069 +f 8137//16070 8069//16070 8135//16070 +f 8138//16071 8136//16071 8131//16071 +f 8138//16072 8137//16072 8136//16072 +f 8138//16073 8070//16073 8137//16073 +f 8139//16074 8072//16074 8070//16074 +f 8139//16075 8070//16075 8138//16075 +f 8139//16076 8138//16076 8131//16076 +f 8139//16077 8131//16077 8072//16077 +f 8140//16078 8074//16078 8072//16078 +f 8140//16079 8072//16079 8130//16079 +f 8141//16080 8140//16080 8130//16080 +f 8141//16081 8074//16081 8140//16081 +f 8142//16082 8130//16082 8143//16082 +f 8142//16083 8077//16083 8074//16083 +f 8142//16084 8074//16084 8141//16084 +f 8142//16085 8141//16085 8130//16085 +f 8144//16086 8143//16086 8012//16086 +f 8144//16087 8012//16087 8011//16087 +f 8144//16088 8067//16088 8077//16088 +f 8144//16089 8011//16089 8067//16089 +f 8144//16090 8077//16090 8142//16090 +f 8144//16091 8142//16091 8143//16091 +f 8145//16092 8146//16092 8147//16092 +f 8145//16093 8147//16093 8148//16093 +f 8149//16094 7546//16094 8150//16094 +f 8149//16095 8151//16095 7546//16095 +f 8152//16096 8153//16096 8154//16096 +f 8152//16097 8155//16097 8153//16097 +f 8152//16098 8148//16098 8155//16098 +f 8152//16099 8145//16099 8148//16099 +f 8156//16100 8149//16100 8150//16100 +f 8156//16101 8150//16101 8157//16101 +f 8158//16102 8087//16102 8151//16102 +f 8159//16103 8156//16103 8157//16103 +f 8159//16104 8157//16104 8146//16104 +f 8160//16105 8151//16105 8149//16105 +f 8160//16106 8158//16106 8151//16106 +f 8161//16107 8146//16107 8145//16107 +f 8161//16108 8159//16108 8146//16108 +f 8162//16109 8149//16109 8156//16109 +f 8162//16110 8160//16110 8149//16110 +f 8163//16111 8161//16111 8145//16111 +f 8163//16112 8152//16112 8154//16112 +f 8163//16113 8145//16113 8152//16113 +f 8164//16114 8158//16114 8160//16114 +f 8164//16115 8088//16115 8087//16115 +f 8164//16116 8087//16116 8158//16116 +f 8165//16117 8160//16117 8162//16117 +f 8165//16118 8164//16118 8160//16118 +f 8166//16119 7555//16119 7554//16119 +f 8167//16120 8156//16120 8159//16120 +f 8167//16121 8162//16121 8156//16121 +f 8168//16122 7567//16122 7555//16122 +f 8169//16123 8088//16123 8164//16123 +f 8169//16124 8164//16124 8165//16124 +f 8170//16125 7554//16125 8005//16125 +f 8170//16126 8005//16126 8171//16126 +f 8170//16127 8166//16127 7554//16127 +f 8172//16128 8167//16128 8159//16128 +f 8173//16129 8168//16129 7555//16129 +f 8172//16130 8159//16130 8161//16130 +f 8173//16131 7555//16131 8166//16131 +f 8174//16132 8165//16132 8162//16132 +f 8174//16133 8162//16133 8167//16133 +f 8175//16134 8170//16134 8171//16134 +f 8175//16135 8166//16135 8170//16135 +f 8175//16136 8173//16136 8166//16136 +f 8176//16137 8161//16137 8163//16137 +f 8177//16138 7546//16138 7567//16138 +f 8176//16139 8154//16139 8178//16139 +f 8176//16140 8163//16140 8154//16140 +f 8176//16141 8172//16141 8161//16141 +f 8179//16142 7567//16142 8168//16142 +f 8180//16143 8167//16143 8172//16143 +f 8180//16144 8174//16144 8167//16144 +f 8181//16145 8176//16145 8178//16145 +f 8181//16146 8172//16146 8176//16146 +f 8181//16147 8180//16147 8172//16147 +f 8182//16148 8177//16148 7567//16148 +f 8183//16149 8169//16149 8165//16149 +f 8150//16150 7546//16150 8177//16150 +f 8183//16151 8165//16151 8174//16151 +f 8184//16152 8183//16152 8174//16152 +f 8185//16153 8168//16153 8173//16153 +f 8184//16154 8174//16154 8180//16154 +f 8185//16155 8179//16155 8168//16155 +f 8186//16156 8178//16156 8187//16156 +f 8157//16157 8177//16157 8182//16157 +f 8186//16158 8181//16158 8178//16158 +f 8186//16159 8180//16159 8181//16159 +f 8186//16160 8184//16160 8180//16160 +f 8157//16161 8150//16161 8177//16161 +f 8188//16162 8082//16162 8088//16162 +f 8189//16163 8171//16163 8153//16163 +f 8189//16164 8175//16164 8171//16164 +f 8188//16165 8088//16165 8169//16165 +f 8189//16166 8173//16166 8175//16166 +f 8188//16167 8169//16167 8183//16167 +f 8189//16168 8185//16168 8173//16168 +f 8190//16169 8188//16169 8183//16169 +f 8147//16170 7567//16170 8179//16170 +f 8190//16171 8183//16171 8184//16171 +f 8147//16172 8182//16172 7567//16172 +f 8191//16173 8186//16173 8187//16173 +f 8151//16174 8087//16174 7544//16174 +f 8191//16175 8184//16175 8186//16175 +f 8151//16176 7544//16176 7546//16176 +f 8191//16177 8190//16177 8184//16177 +f 8192//16178 8080//16178 8082//16178 +f 8192//16179 8082//16179 8188//16179 +f 8192//16180 8188//16180 8190//16180 +f 8146//16181 8157//16181 8182//16181 +f 8146//16182 8182//16182 8147//16182 +f 8193//16183 8191//16183 8187//16183 +f 8193//16184 8190//16184 8191//16184 +f 8193//16185 8192//16185 8190//16185 +f 8148//16186 8179//16186 8185//16186 +f 8194//16187 8187//16187 7977//16187 +f 8194//16188 7977//16188 7976//16188 +f 8148//16189 8147//16189 8179//16189 +f 8194//16190 7976//16190 8080//16190 +f 8194//16191 8080//16191 8192//16191 +f 8194//16192 8193//16192 8187//16192 +f 8194//16193 8192//16193 8193//16193 +f 8155//16194 8189//16194 8153//16194 +f 8155//16195 8148//16195 8185//16195 +f 8155//16196 8185//16196 8189//16196 +f 8195//16197 7927//16197 8196//16197 +f 8197//16198 8124//16198 8127//16198 +f 8197//16199 8196//16199 8198//16199 +f 8197//16200 8199//16200 8124//16200 +f 8197//16201 8198//16201 8199//16201 +f 8200//16202 8201//16202 8202//16202 +f 8203//16203 7928//16203 7927//16203 +f 8203//16204 7927//16204 8195//16204 +f 8204//16205 8127//16205 8037//16205 +f 8204//16206 8195//16206 8196//16206 +f 8204//16207 8197//16207 8127//16207 +f 8204//16208 8196//16208 8197//16208 +f 8205//16209 7934//16209 7928//16209 +f 8205//16210 7928//16210 8203//16210 +f 8206//16211 8037//16211 8036//16211 +f 8206//16212 8203//16212 8195//16212 +f 8206//16213 8204//16213 8037//16213 +f 8206//16214 8195//16214 8204//16214 +f 8207//16215 7936//16215 7934//16215 +f 8124//16216 8208//16216 8116//16216 +f 8207//16217 7934//16217 8205//16217 +f 8209//16218 8034//16218 8033//16218 +f 8209//16219 8036//16219 8034//16219 +f 8209//16220 8206//16220 8036//16220 +f 8209//16221 8205//16221 8203//16221 +f 8209//16222 8203//16222 8206//16222 +f 8210//16223 7938//16223 7936//16223 +f 8210//16224 7936//16224 8207//16224 +f 8211//16225 8033//16225 8046//16225 +f 8211//16226 8207//16226 8205//16226 +f 8211//16227 8209//16227 8033//16227 +f 8211//16228 8205//16228 8209//16228 +f 8212//16229 7940//16229 7938//16229 +f 8212//16230 7938//16230 8210//16230 +f 8213//16231 8207//16231 8211//16231 +f 8213//16232 8210//16232 8207//16232 +f 8213//16233 8211//16233 8046//16233 +f 8214//16234 7930//16234 7940//16234 +f 8214//16235 7940//16235 8212//16235 +f 8215//16236 8210//16236 8213//16236 +f 8215//16237 8046//16237 8051//16237 +f 8215//16238 8213//16238 8046//16238 +f 8215//16239 8212//16239 8210//16239 +f 8216//16240 8217//16240 7930//16240 +f 8216//16241 7930//16241 8214//16241 +f 8218//16242 8056//16242 8119//16242 +f 8218//16243 8214//16243 8212//16243 +f 8218//16244 8212//16244 8215//16244 +f 8218//16245 8215//16245 8051//16245 +f 8218//16246 8051//16246 8056//16246 +f 8219//16247 8220//16247 8217//16247 +f 8219//16248 8200//16248 8220//16248 +f 8219//16249 8217//16249 8216//16249 +f 8221//16250 8119//16250 8117//16250 +f 8221//16251 8216//16251 8214//16251 +f 8221//16252 8218//16252 8119//16252 +f 8221//16253 8214//16253 8218//16253 +f 8222//16254 8117//16254 8116//16254 +f 8222//16255 8208//16255 8200//16255 +f 8222//16256 8116//16256 8208//16256 +f 8222//16257 8216//16257 8221//16257 +f 8222//16258 8221//16258 8117//16258 +f 8222//16259 8219//16259 8216//16259 +f 8222//16260 8200//16260 8219//16260 +f 8200//16261 8202//16261 8220//16261 +f 8198//16262 8223//16262 8201//16262 +f 8198//16263 8201//16263 8200//16263 +f 8196//16264 7927//16264 8223//16264 +f 8196//16265 8223//16265 8198//16265 +f 8199//16266 8200//16266 8208//16266 +f 8199//16267 8208//16267 8124//16267 +f 8199//16268 8198//16268 8200//16268 +f 8224//16269 8225//16269 8226//16269 +f 8224//16270 8227//16270 8225//16270 +f 8228//16271 8229//16271 8227//16271 +f 8228//16272 8227//16272 8224//16272 +f 8230//16273 8217//16273 8220//16273 +f 8230//16274 7930//16274 8217//16274 +f 8230//16275 8231//16275 7930//16275 +f 8232//16276 7927//16276 8233//16276 +f 8232//16277 8233//16277 8229//16277 +f 8232//16278 8229//16278 8228//16278 +f 8234//16279 8220//16279 8202//16279 +f 8234//16280 8226//16280 8231//16280 +f 8234//16281 8230//16281 8220//16281 +f 8234//16282 8231//16282 8230//16282 +f 8235//16283 8224//16283 8226//16283 +f 8235//16284 8226//16284 8234//16284 +f 8235//16285 8234//16285 8202//16285 +f 8236//16286 8202//16286 8201//16286 +f 8236//16287 8228//16287 8224//16287 +f 8236//16288 8235//16288 8202//16288 +f 8236//16289 8224//16289 8235//16289 +f 8237//16290 8223//16290 7927//16290 +f 8237//16291 8201//16291 8223//16291 +f 8237//16292 7927//16292 8232//16292 +f 8237//16293 8232//16293 8228//16293 +f 8237//16294 8236//16294 8201//16294 +f 8237//16295 8228//16295 8236//16295 +f 8238//16296 8239//16296 7931//16296 +f 8240//16297 8241//16297 8239//16297 +f 8240//16298 8239//16298 8238//16298 +f 8242//16299 8243//16299 8244//16299 +f 8242//16300 8244//16300 8241//16300 +f 8242//16301 8241//16301 8240//16301 +f 8245//16302 8246//16302 8243//16302 +f 8245//16303 8243//16303 8242//16303 +f 8247//16304 7931//16304 7930//16304 +f 8247//16305 8238//16305 7931//16305 +f 8248//16306 7943//16306 8246//16306 +f 8248//16307 8246//16307 8245//16307 +f 8225//16308 8238//16308 8247//16308 +f 8225//16309 8240//16309 8238//16309 +f 8227//16310 8242//16310 8240//16310 +f 8227//16311 8240//16311 8225//16311 +f 8229//16312 8245//16312 8242//16312 +f 8229//16313 8242//16313 8227//16313 +f 8231//16314 8247//16314 7930//16314 +f 8233//16315 7927//16315 7943//16315 +f 8233//16316 8248//16316 8245//16316 +f 8233//16317 7943//16317 8248//16317 +f 8233//16318 8245//16318 8229//16318 +f 8226//16319 8225//16319 8247//16319 +f 8226//16320 8247//16320 8231//16320 +f 8249//16321 8250//16321 8251//16321 +f 8252//16322 8253//16322 7949//16322 +f 8252//16323 8254//16323 8253//16323 +f 8255//16324 8256//16324 8257//16324 +f 8255//16325 8257//16325 8244//16325 +f 8252//16326 8258//16326 8254//16326 +f 8255//16327 8244//16327 8243//16327 +f 8255//16328 8259//16328 8256//16328 +f 8260//16329 8261//16329 8262//16329 +f 8263//16330 8264//16330 8259//16330 +f 8265//16331 7949//16331 7951//16331 +f 8263//16332 8259//16332 8255//16332 +f 8265//16333 8266//16333 8258//16333 +f 8263//16334 8255//16334 8243//16334 +f 8265//16335 8258//16335 8252//16335 +f 8265//16336 8252//16336 7949//16336 +f 8267//16337 8268//16337 8261//16337 +f 8269//16338 8270//16338 8249//16338 +f 8267//16339 8261//16339 8260//16339 +f 8271//16340 8272//16340 8270//16340 +f 8271//16341 8270//16341 8269//16341 +f 8273//16342 8243//16342 8246//16342 +f 8274//16343 8268//16343 8267//16343 +f 8273//16344 8263//16344 8243//16344 +f 8275//16345 8266//16345 8265//16345 +f 8273//16346 8264//16346 8263//16346 +f 8275//16347 8262//16347 8266//16347 +f 8273//16348 8251//16348 8264//16348 +f 8275//16349 8265//16349 7951//16349 +f 8276//16350 8251//16350 8273//16350 +f 8276//16351 8249//16351 8251//16351 +f 8277//16352 7951//16352 7931//16352 +f 8276//16353 8273//16353 8246//16353 +f 8277//16354 8275//16354 7951//16354 +f 8277//16355 8262//16355 8275//16355 +f 8277//16356 8260//16356 8262//16356 +f 8278//16357 8272//16357 8271//16357 +f 8279//16358 8280//16358 8268//16358 +f 8281//16359 8282//16359 8272//16359 +f 8279//16360 8268//16360 8274//16360 +f 8281//16361 8272//16361 8278//16361 +f 8283//16362 8246//16362 7943//16362 +f 8283//16363 8269//16363 8249//16363 +f 8284//16364 8280//16364 8279//16364 +f 8283//16365 8249//16365 8276//16365 +f 8283//16366 8276//16366 8246//16366 +f 8285//16367 8267//16367 8260//16367 +f 8285//16368 8277//16368 7931//16368 +f 8285//16369 8260//16369 8277//16369 +f 8286//16370 8271//16370 8269//16370 +f 8286//16371 8269//16371 8283//16371 +f 8286//16372 8283//16372 7943//16372 +f 8287//16373 7931//16373 8239//16373 +f 8287//16374 8285//16374 7931//16374 +f 8287//16375 8274//16375 8267//16375 +f 8287//16376 8267//16376 8285//16376 +f 8288//16377 8282//16377 8281//16377 +f 8289//16378 8290//16378 8280//16378 +f 8289//16379 8280//16379 8284//16379 +f 8291//16380 7943//16380 7942//16380 +f 8291//16381 8271//16381 8286//16381 +f 8291//16382 8278//16382 8271//16382 +f 8292//16383 8256//16383 8293//16383 +f 8292//16384 8293//16384 8290//16384 +f 8291//16385 8286//16385 7943//16385 +f 8292//16386 8290//16386 8289//16386 +f 8294//16387 8295//16387 8282//16387 +f 8296//16388 8279//16388 8274//16388 +f 8296//16389 8287//16389 8239//16389 +f 8294//16390 8282//16390 8288//16390 +f 8296//16391 8274//16391 8287//16391 +f 8297//16392 8291//16392 7942//16392 +f 8298//16393 8239//16393 8241//16393 +f 8297//16394 8278//16394 8291//16394 +f 8298//16395 8296//16395 8239//16395 +f 8298//16396 8279//16396 8296//16396 +f 8298//16397 8284//16397 8279//16397 +f 8297//16398 8281//16398 8278//16398 +f 8299//16399 8284//16399 8298//16399 +f 8299//16400 8289//16400 8284//16400 +f 8300//16401 8295//16401 8294//16401 +f 8299//16402 8298//16402 8241//16402 +f 8301//16403 8241//16403 8244//16403 +f 8302//16404 8281//16404 8297//16404 +f 8301//16405 8257//16405 8256//16405 +f 8301//16406 8244//16406 8257//16406 +f 8301//16407 8256//16407 8292//16407 +f 8302//16408 7942//16408 7945//16408 +f 8301//16409 8292//16409 8289//16409 +f 8302//16410 8297//16410 7942//16410 +f 8301//16411 8299//16411 8241//16411 +f 8302//16412 8288//16412 8281//16412 +f 8301//16413 8289//16413 8299//16413 +f 8303//16414 8295//16414 8300//16414 +f 8303//16415 8304//16415 8295//16415 +f 8305//16416 8288//16416 8302//16416 +f 8305//16417 8294//16417 8288//16417 +f 8305//16418 8302//16418 7945//16418 +f 8254//16419 8304//16419 8303//16419 +f 8306//16420 8294//16420 8305//16420 +f 8306//16421 8300//16421 8294//16421 +f 8306//16422 8305//16422 7945//16422 +f 8306//16423 7945//16423 7947//16423 +f 8258//16424 8307//16424 8304//16424 +f 8258//16425 8304//16425 8254//16425 +f 8308//16426 8303//16426 8300//16426 +f 8308//16427 8300//16427 8306//16427 +f 8308//16428 8306//16428 7947//16428 +f 8259//16429 8309//16429 8293//16429 +f 8259//16430 8293//16430 8256//16430 +f 8266//16431 8307//16431 8258//16431 +f 8264//16432 8250//16432 8309//16432 +f 8253//16433 8308//16433 7947//16433 +f 8253//16434 7947//16434 7949//16434 +f 8264//16435 8309//16435 8259//16435 +f 8253//16436 8303//16436 8308//16436 +f 8253//16437 8254//16437 8303//16437 +f 8262//16438 8261//16438 8307//16438 +f 8251//16439 8250//16439 8264//16439 +f 8262//16440 8307//16440 8266//16440 +f 8249//16441 8270//16441 8250//16441 +f 8310//16442 8311//16442 8312//16442 +f 8310//16443 8313//16443 8261//16443 +f 8314//16444 8268//16444 8280//16444 +f 8314//16445 8311//16445 8310//16445 +f 8315//16446 8316//16446 8317//16446 +f 8314//16447 8318//16447 8311//16447 +f 8315//16448 8317//16448 8319//16448 +f 8314//16449 8310//16449 8268//16449 +f 8320//16450 8290//16450 8293//16450 +f 8320//16451 8280//16451 8290//16451 +f 8320//16452 8321//16452 8322//16452 +f 8320//16453 8293//16453 8321//16453 +f 8320//16454 8318//16454 8314//16454 +f 8320//16455 8322//16455 8323//16455 +f 8324//16456 8325//16456 8316//16456 +f 8320//16457 8323//16457 8318//16457 +f 8320//16458 8314//16458 8280//16458 +f 8324//16459 8316//16459 8315//16459 +f 8326//16460 8327//16460 8325//16460 +f 8326//16461 8325//16461 8324//16461 +f 8328//16462 8329//16462 8327//16462 +f 8328//16463 8327//16463 8326//16463 +f 8312//16464 8330//16464 8329//16464 +f 8312//16465 8329//16465 8328//16465 +f 8311//16466 8331//16466 8330//16466 +f 8311//16467 8330//16467 8312//16467 +f 8318//16468 8332//16468 8331//16468 +f 8318//16469 8331//16469 8311//16469 +f 8323//16470 8333//16470 8332//16470 +f 8323//16471 8332//16471 8318//16471 +f 8323//16472 8322//16472 8333//16472 +f 8334//16473 8293//16473 8309//16473 +f 8334//16474 8322//16474 8321//16474 +f 8334//16475 8321//16475 8293//16475 +f 8322//16476 8335//16476 8333//16476 +f 8334//16477 8336//16477 8322//16477 +f 8337//16478 8309//16478 8250//16478 +f 8337//16479 8334//16479 8309//16479 +f 8337//16480 8338//16480 8336//16480 +f 8337//16481 8336//16481 8334//16481 +f 8339//16482 8250//16482 8270//16482 +f 8339//16483 8340//16483 8338//16483 +f 8339//16484 8337//16484 8250//16484 +f 8339//16485 8338//16485 8337//16485 +f 8341//16486 8270//16486 8272//16486 +f 8341//16487 8319//16487 8340//16487 +f 8341//16488 8339//16488 8270//16488 +f 8341//16489 8340//16489 8339//16489 +f 8342//16490 8272//16490 8282//16490 +f 8342//16491 8319//16491 8341//16491 +f 8342//16492 8315//16492 8319//16492 +f 8342//16493 8341//16493 8272//16493 +f 8343//16494 8342//16494 8282//16494 +f 8343//16495 8282//16495 8295//16495 +f 8343//16496 8324//16496 8315//16496 +f 8343//16497 8315//16497 8342//16497 +f 8344//16498 8324//16498 8343//16498 +f 8344//16499 8295//16499 8304//16499 +f 8336//16500 8345//16500 8335//16500 +f 8336//16501 8335//16501 8322//16501 +f 8344//16502 8343//16502 8295//16502 +f 8344//16503 8326//16503 8324//16503 +f 8346//16504 8304//16504 8307//16504 +f 8338//16505 8347//16505 8345//16505 +f 8346//16506 8344//16506 8304//16506 +f 8346//16507 8326//16507 8344//16507 +f 8338//16508 8345//16508 8336//16508 +f 8346//16509 8328//16509 8326//16509 +f 8313//16510 8307//16510 8261//16510 +f 8340//16511 8348//16511 8347//16511 +f 8313//16512 8346//16512 8307//16512 +f 8313//16513 8328//16513 8346//16513 +f 8340//16514 8347//16514 8338//16514 +f 8313//16515 8312//16515 8328//16515 +f 8310//16516 8261//16516 8268//16516 +f 8310//16517 8312//16517 8313//16517 +f 8319//16518 8317//16518 8348//16518 +f 8319//16519 8348//16519 8340//16519 +f 8349//16520 8327//16520 8329//16520 +f 8349//16521 8350//16521 8351//16521 +f 8349//16522 8352//16522 8350//16522 +f 8353//16523 8335//16523 8345//16523 +f 8353//16524 8354//16524 8355//16524 +f 8353//16525 8355//16525 8335//16525 +f 8349//16526 8351//16526 8327//16526 +f 8353//16527 8356//16527 8354//16527 +f 8357//16528 7897//16528 7905//16528 +f 8357//16529 7905//16529 8358//16529 +f 8359//16530 8345//16530 8347//16530 +f 8360//16531 8361//16531 8352//16531 +f 8359//16532 8353//16532 8345//16532 +f 8360//16533 8349//16533 8329//16533 +f 8359//16534 8356//16534 8353//16534 +f 8359//16535 8362//16535 8356//16535 +f 8360//16536 8352//16536 8349//16536 +f 8363//16537 7895//16537 8364//16537 +f 8363//16538 8364//16538 8365//16538 +f 8366//16539 7897//16539 8357//16539 +f 8367//16540 7895//16540 8363//16540 +f 8368//16541 8369//16541 7897//16541 +f 8370//16542 8371//16542 8362//16542 +f 8368//16543 7897//16543 8366//16543 +f 8370//16544 8359//16544 8347//16544 +f 8372//16545 8329//16545 8330//16545 +f 8370//16546 8362//16546 8359//16546 +f 8372//16547 8358//16547 8361//16547 +f 8372//16548 8361//16548 8360//16548 +f 8373//16549 8347//16549 8348//16549 +f 8372//16550 8360//16550 8329//16550 +f 8373//16551 8365//16551 8371//16551 +f 8373//16552 8371//16552 8370//16552 +f 8373//16553 8370//16553 8347//16553 +f 8374//16554 8357//16554 8358//16554 +f 8374//16555 8358//16555 8372//16555 +f 8374//16556 8372//16556 8330//16556 +f 8375//16557 7893//16557 7895//16557 +f 8375//16558 7895//16558 8367//16558 +f 8376//16559 8369//16559 8368//16559 +f 8377//16560 7893//16560 8375//16560 +f 8378//16561 8379//16561 8369//16561 +f 8378//16562 8369//16562 8376//16562 +f 8380//16563 8365//16563 8373//16563 +f 8380//16564 8373//16564 8348//16564 +f 8380//16565 8363//16565 8365//16565 +f 8381//16566 8330//16566 8331//16566 +f 8381//16567 8366//16567 8357//16567 +f 8382//16568 8348//16568 8317//16568 +f 8381//16569 8357//16569 8374//16569 +f 8382//16570 8367//16570 8363//16570 +f 8381//16571 8374//16571 8330//16571 +f 8382//16572 8363//16572 8380//16572 +f 8382//16573 8380//16573 8348//16573 +f 8383//16574 8368//16574 8366//16574 +f 8383//16575 8366//16575 8381//16575 +f 8384//16576 7894//16576 7893//16576 +f 8383//16577 8381//16577 8331//16577 +f 8384//16578 7893//16578 8377//16578 +f 8385//16579 8379//16579 8378//16579 +f 8386//16580 8382//16580 8317//16580 +f 8387//16581 8354//16581 8388//16581 +f 8386//16582 8375//16582 8367//16582 +f 8386//16583 8367//16583 8382//16583 +f 8387//16584 8388//16584 8379//16584 +f 8387//16585 8379//16585 8385//16585 +f 8389//16586 8331//16586 8332//16586 +f 8389//16587 8368//16587 8383//16587 +f 8389//16588 8376//16588 8368//16588 +f 8390//16589 7894//16589 8384//16589 +f 8389//16590 8383//16590 8331//16590 +f 8391//16591 8375//16591 8386//16591 +f 8391//16592 8317//16592 8316//16592 +f 8391//16593 8377//16593 8375//16593 +f 8392//16594 8378//16594 8376//16594 +f 8392//16595 8376//16595 8389//16595 +f 8391//16596 8386//16596 8317//16596 +f 8392//16597 8389//16597 8332//16597 +f 8393//16598 7894//16598 8390//16598 +f 8394//16599 8332//16599 8333//16599 +f 8394//16600 8385//16600 8378//16600 +f 8393//16601 7901//16601 7894//16601 +f 8394//16602 8378//16602 8392//16602 +f 8395//16603 8384//16603 8377//16603 +f 8394//16604 8392//16604 8332//16604 +f 8396//16605 8333//16605 8335//16605 +f 8395//16606 8377//16606 8391//16606 +f 8396//16607 8355//16607 8354//16607 +f 8396//16608 8335//16608 8355//16608 +f 8396//16609 8354//16609 8387//16609 +f 8395//16610 8391//16610 8316//16610 +f 8396//16611 8387//16611 8385//16611 +f 8396//16612 8385//16612 8394//16612 +f 8396//16613 8394//16613 8333//16613 +f 8397//16614 7901//16614 8393//16614 +f 8398//16615 8316//16615 8325//16615 +f 8398//16616 8395//16616 8316//16616 +f 8398//16617 8384//16617 8395//16617 +f 8398//16618 8390//16618 8384//16618 +f 8350//16619 7903//16619 7901//16619 +f 8350//16620 7901//16620 8397//16620 +f 8399//16621 8398//16621 8325//16621 +f 8399//16622 8390//16622 8398//16622 +f 8399//16623 8393//16623 8390//16623 +f 8352//16624 7903//16624 8350//16624 +f 8400//16625 8325//16625 8327//16625 +f 8400//16626 8399//16626 8325//16626 +f 8400//16627 8393//16627 8399//16627 +f 8400//16628 8397//16628 8393//16628 +f 8356//16629 8401//16629 8388//16629 +f 8356//16630 8388//16630 8354//16630 +f 8361//16631 7905//16631 7903//16631 +f 8361//16632 7903//16632 8352//16632 +f 8351//16633 8350//16633 8397//16633 +f 8351//16634 8400//16634 8327//16634 +f 8362//16635 8401//16635 8356//16635 +f 8351//16636 8397//16636 8400//16636 +f 8371//16637 8364//16637 8401//16637 +f 8371//16638 8401//16638 8362//16638 +f 8358//16639 7905//16639 8361//16639 +f 8365//16640 8364//16640 8371//16640 +f 8402//16641 8403//16641 8404//16641 +f 8402//16642 8405//16642 8403//16642 +f 8406//16643 8407//16643 8405//16643 +f 8406//16644 8405//16644 8402//16644 +f 8408//16645 7897//16645 8369//16645 +f 8408//16646 8409//16646 7897//16646 +f 8410//16647 7895//16647 7908//16647 +f 8410//16648 7908//16648 8411//16648 +f 8410//16649 8411//16649 8407//16649 +f 8410//16650 8407//16650 8406//16650 +f 8412//16651 8369//16651 8379//16651 +f 8412//16652 8409//16652 8408//16652 +f 8412//16653 8408//16653 8369//16653 +f 8412//16654 8404//16654 8409//16654 +f 8413//16655 8379//16655 8388//16655 +f 8413//16656 8388//16656 8401//16656 +f 8413//16657 8404//16657 8412//16657 +f 8413//16658 8402//16658 8404//16658 +f 8413//16659 8412//16659 8379//16659 +f 8414//16660 8401//16660 8364//16660 +f 8414//16661 8406//16661 8402//16661 +f 8414//16662 8413//16662 8401//16662 +f 8414//16663 8402//16663 8413//16663 +f 8415//16664 8364//16664 7895//16664 +f 8415//16665 7895//16665 8410//16665 +f 8415//16666 8410//16666 8406//16666 +f 8415//16667 8414//16667 8364//16667 +f 8415//16668 8406//16668 8414//16668 +f 8416//16669 8417//16669 8418//16669 +f 8416//16670 8418//16670 7916//16670 +f 8419//16671 8420//16671 8417//16671 +f 8419//16672 8417//16672 8416//16672 +f 8421//16673 8420//16673 8419//16673 +f 8422//16674 8423//16674 8420//16674 +f 8422//16675 8420//16675 8421//16675 +f 8424//16676 8416//16676 7916//16676 +f 8425//16677 7908//16677 8426//16677 +f 8425//16678 8426//16678 8423//16678 +f 8425//16679 8423//16679 8422//16679 +f 8403//16680 8419//16680 8416//16680 +f 8403//16681 8416//16681 8424//16681 +f 8405//16682 8421//16682 8419//16682 +f 8405//16683 8419//16683 8403//16683 +f 8407//16684 8421//16684 8405//16684 +f 8407//16685 8422//16685 8421//16685 +f 8409//16686 7916//16686 7897//16686 +f 8409//16687 8424//16687 7916//16687 +f 8411//16688 7908//16688 8425//16688 +f 8411//16689 8425//16689 8422//16689 +f 8411//16690 8422//16690 8407//16690 +f 8404//16691 8403//16691 8424//16691 +f 8404//16692 8424//16692 8409//16692 +f 8427//16693 8143//16693 8428//16693 +f 8429//16694 8426//16694 7908//16694 +f 8429//16695 8428//16695 8430//16695 +f 8429//16696 8430//16696 8431//16696 +f 8429//16697 8431//16697 8426//16697 +f 8432//16698 8013//16698 8012//16698 +f 8432//16699 8012//16699 8427//16699 +f 8433//16700 7908//16700 7907//16700 +f 8433//16701 8427//16701 8428//16701 +f 8433//16702 8428//16702 8429//16702 +f 8433//16703 8429//16703 7908//16703 +f 8434//16704 8017//16704 8013//16704 +f 8434//16705 8013//16705 8432//16705 +f 8435//16706 7907//16706 7910//16706 +f 8435//16707 8427//16707 8433//16707 +f 8435//16708 8432//16708 8427//16708 +f 8435//16709 8433//16709 7907//16709 +f 8436//16710 8008//16710 8017//16710 +f 8436//16711 8017//16711 8434//16711 +f 8437//16712 7910//16712 7912//16712 +f 8437//16713 8432//16713 8435//16713 +f 8437//16714 8435//16714 7910//16714 +f 8437//16715 8434//16715 8432//16715 +f 8438//16716 8006//16716 8008//16716 +f 8438//16717 8008//16717 8436//16717 +f 8439//16718 8437//16718 7912//16718 +f 8439//16719 8434//16719 8437//16719 +f 8439//16720 8436//16720 8434//16720 +f 8440//16721 8027//16721 8006//16721 +f 8440//16722 8006//16722 8438//16722 +f 8441//16723 7914//16723 7917//16723 +f 8441//16724 7912//16724 7914//16724 +f 8441//16725 8438//16725 8436//16725 +f 8441//16726 8439//16726 7912//16726 +f 8441//16727 8436//16727 8439//16727 +f 8442//16728 8133//16728 8029//16728 +f 8442//16729 8029//16729 8027//16729 +f 8442//16730 8027//16730 8440//16730 +f 8443//16731 8441//16731 7917//16731 +f 8443//16732 8440//16732 8438//16732 +f 8443//16733 8438//16733 8441//16733 +f 8444//16734 8136//16734 8133//16734 +f 8444//16735 8133//16735 8442//16735 +f 8445//16736 8442//16736 8440//16736 +f 8445//16737 8443//16737 7917//16737 +f 8445//16738 7917//16738 7916//16738 +f 8445//16739 8440//16739 8443//16739 +f 8446//16740 8136//16740 8444//16740 +f 8446//16741 8447//16741 8136//16741 +f 8448//16742 7916//16742 8418//16742 +f 8448//16743 8444//16743 8442//16743 +f 8448//16744 8445//16744 7916//16744 +f 8448//16745 8442//16745 8445//16745 +f 8449//16746 8418//16746 8417//16746 +f 8449//16747 8450//16747 8447//16747 +f 8449//16748 8444//16748 8448//16748 +f 8449//16749 8446//16749 8444//16749 +f 8449//16750 8448//16750 8418//16750 +f 8449//16751 8447//16751 8446//16751 +f 8449//16752 8417//16752 8450//16752 +f 8447//16753 8131//16753 8136//16753 +f 8420//16754 8450//16754 8417//16754 +f 8430//16755 8130//16755 8131//16755 +f 8430//16756 8131//16756 8447//16756 +f 8428//16757 8143//16757 8130//16757 +f 8428//16758 8130//16758 8430//16758 +f 8431//16759 8447//16759 8450//16759 +f 8431//16760 8450//16760 8420//16760 +f 8431//16761 8423//16761 8426//16761 +f 8431//16762 8420//16762 8423//16762 +f 8431//16763 8430//16763 8447//16763 +f 8427//16764 8012//16764 8143//16764 +f 8451//16765 8452//16765 8453//16765 +f 8454//16766 8455//16766 8456//16766 +f 8451//16767 8457//16767 8089//16767 +f 8451//16768 8453//16768 8457//16768 +f 8458//16769 7557//16769 7566//16769 +f 8459//16770 7864//16770 8460//16770 +f 8459//16771 8460//16771 8461//16771 +f 8458//16772 8462//16772 7557//16772 +f 8459//16773 8461//16773 8463//16773 +f 8464//16774 8081//16774 7864//16774 +f 8464//16775 7864//16775 8459//16775 +f 8465//16776 8454//16776 8466//16776 +f 8464//16777 8463//16777 8451//16777 +f 8464//16778 8451//16778 8081//16778 +f 8465//16779 8466//16779 8467//16779 +f 8464//16780 8459//16780 8463//16780 +f 8468//16781 8467//16781 8462//16781 +f 8468//16782 8462//16782 8458//16782 +f 8469//16783 7566//16783 7545//16783 +f 8469//16784 8458//16784 7566//16784 +f 8469//16785 8468//16785 8458//16785 +f 8470//16786 8471//16786 8472//16786 +f 8470//16787 8472//16787 8455//16787 +f 8473//16788 8465//16788 8467//16788 +f 8473//16789 8467//16789 8468//16789 +f 8474//16790 8475//16790 8471//16790 +f 8476//16791 8455//16791 8454//16791 +f 8476//16792 8470//16792 8455//16792 +f 8477//16793 8473//16793 8468//16793 +f 8477//16794 8468//16794 8469//16794 +f 8478//16795 8476//16795 8454//16795 +f 8478//16796 8454//16796 8465//16796 +f 8479//16797 8477//16797 8469//16797 +f 8479//16798 8469//16798 7545//16798 +f 8480//16799 8481//16799 8475//16799 +f 8480//16800 8475//16800 8474//16800 +f 8482//16801 8478//16801 8465//16801 +f 8482//16802 8465//16802 8473//16802 +f 8483//16803 8474//16803 8471//16803 +f 8483//16804 8471//16804 8470//16804 +f 8484//16805 8485//16805 7838//16805 +f 8486//16806 8473//16806 8477//16806 +f 8486//16807 8482//16807 8473//16807 +f 8487//16808 8485//16808 8484//16808 +f 8488//16809 7838//16809 7558//16809 +f 8488//16810 7558//16810 7556//16810 +f 8489//16811 8483//16811 8470//16811 +f 8488//16812 8484//16812 7838//16812 +f 8489//16813 8470//16813 8476//16813 +f 8490//16814 8491//16814 8485//16814 +f 8490//16815 8485//16815 8487//16815 +f 8492//16816 8474//16816 8483//16816 +f 8493//16817 8484//16817 8488//16817 +f 8461//16818 8481//16818 8480//16818 +f 8494//16819 7556//16819 7557//16819 +f 8494//16820 8488//16820 7556//16820 +f 8494//16821 8493//16821 8488//16821 +f 8495//16822 8483//16822 8489//16822 +f 8495//16823 8492//16823 8483//16823 +f 8496//16824 8487//16824 8484//16824 +f 8497//16825 8489//16825 8476//16825 +f 8496//16826 8484//16826 8493//16826 +f 8497//16827 8476//16827 8478//16827 +f 8498//16828 7545//16828 7565//16828 +f 8498//16829 8486//16829 8477//16829 +f 8498//16830 8479//16830 7545//16830 +f 8498//16831 7565//16831 8086//16831 +f 8499//16832 8491//16832 8490//16832 +f 8498//16833 8477//16833 8479//16833 +f 8500//16834 8494//16834 7557//16834 +f 8500//16835 8493//16835 8494//16835 +f 8501//16836 8495//16836 8489//16836 +f 8500//16837 8496//16837 8493//16837 +f 8501//16838 8489//16838 8497//16838 +f 8472//16839 8471//16839 8491//16839 +f 8460//16840 7864//16840 7859//16840 +f 8472//16841 8491//16841 8499//16841 +f 8460//16842 7859//16842 8481//16842 +f 8460//16843 8481//16843 8461//16843 +f 8452//16844 8480//16844 8474//16844 +f 8502//16845 8490//16845 8487//16845 +f 8452//16846 8474//16846 8492//16846 +f 8502//16847 8487//16847 8496//16847 +f 8503//16848 8497//16848 8478//16848 +f 8503//16849 8478//16849 8482//16849 +f 8504//16850 8496//16850 8500//16850 +f 8504//16851 8502//16851 8496//16851 +f 8453//16852 8452//16852 8492//16852 +f 8462//16853 8504//16853 8500//16853 +f 8453//16854 8492//16854 8495//16854 +f 8462//16855 8500//16855 7557//16855 +f 8456//16856 8490//16856 8502//16856 +f 8456//16857 8499//16857 8490//16857 +f 8505//16858 8482//16858 8486//16858 +f 8505//16859 8486//16859 8498//16859 +f 8505//16860 8498//16860 8086//16860 +f 8505//16861 8503//16861 8482//16861 +f 8506//16862 8497//16862 8503//16862 +f 8506//16863 8501//16863 8497//16863 +f 8466//16864 8456//16864 8502//16864 +f 8457//16865 8506//16865 8089//16865 +f 8466//16866 8502//16866 8504//16866 +f 8457//16867 8495//16867 8501//16867 +f 8457//16868 8453//16868 8495//16868 +f 8457//16869 8501//16869 8506//16869 +f 8507//16870 8089//16870 8506//16870 +f 8507//16871 8086//16871 8089//16871 +f 8507//16872 8503//16872 8505//16872 +f 8455//16873 8472//16873 8499//16873 +f 8507//16874 8505//16874 8086//16874 +f 8455//16875 8499//16875 8456//16875 +f 8507//16876 8506//16876 8503//16876 +f 8463//16877 8461//16877 8480//16877 +f 8467//16878 8504//16878 8462//16878 +f 8467//16879 8466//16879 8504//16879 +f 8463//16880 8480//16880 8452//16880 +f 8454//16881 8456//16881 8466//16881 +f 8451//16882 8089//16882 8081//16882 +f 8451//16883 8463//16883 8452//16883 +f 7867//16884 7859//16884 7858//16884 +f 7849//16885 7859//16885 7867//16885 +f 7848//16886 7859//16886 7849//16886 +f 7838//16887 7859//16887 7848//16887 +f 8485//16888 8481//16888 7838//16888 +f 8491//16889 8481//16889 8485//16889 +f 8471//16890 8481//16890 8491//16890 +f 8475//16891 8481//16891 8471//16891 +f 7838//16892 8481//16892 7859//16892 +f 7979//16893 7977//16893 8187//16893 +f 7962//16894 8187//16894 8178//16894 +f 7962//16895 7979//16895 8187//16895 +f 7963//16896 8178//16896 8154//16896 +f 7963//16897 7962//16897 8178//16897 +f 7991//16898 8154//16898 8153//16898 +f 7991//16899 7963//16899 8154//16899 +f 8000//16900 8153//16900 8171//16900 +f 8000//16901 8171//16901 8005//16901 +f 8000//16902 7991//16902 8153//16902 +f 7817//16903 8508//16903 7818//16903 +f 7818//16904 8508//16904 8509//16904 +f 8509//16905 8510//16905 8511//16905 +f 8508//16906 8510//16906 8509//16906 +f 7589//16907 8512//16907 8513//16907 +f 8511//16908 8514//16908 8513//16908 +f 8510//16909 8514//16909 8511//16909 +f 8513//16910 8514//16910 7589//16910 +f 8514//16911 7731//16911 7589//16911 +f 8512//16912 8515//16912 8513//16912 +f 7589//16913 7728//16913 7590//16913 +f 7731//16914 7728//16914 7589//16914 +f 8512//16915 8516//16915 8515//16915 +f 8514//16916 8517//16916 7731//16916 +f 7728//16917 7727//16917 7590//16917 +f 8517//16918 8518//16918 8519//16918 +f 8514//16919 8518//16919 8517//16919 +f 8520//16920 7801//16920 8515//16920 +f 8518//16921 8521//16921 8522//16921 +f 7694//16922 7646//16922 7623//16922 +f 8521//16923 7806//16923 7819//16923 +f 8518//16924 7806//16924 8521//16924 +f 8520//16925 7799//16925 7801//16925 +f 8516//16926 8520//16926 8515//16926 +f 7623//16927 7630//16927 7713//16927 +f 7694//16928 7693//16928 7646//16928 +f 7713//16929 7694//16929 7623//16929 +f 7727//16930 7713//16930 7630//16930 +f 7727//16931 7630//16931 7590//16931 +f 8522//16932 8519//16932 8518//16932 +f 8523//16933 7741//16933 8524//16933 +f 7770//16934 7769//16934 7742//16934 +f 7770//16935 7742//16935 7741//16935 +f 8525//16936 7760//16936 8526//16936 +f 7766//16937 7741//16937 8523//16937 +f 7766//16938 8527//16938 8528//16938 +f 7766//16939 7770//16939 7741//16939 +f 8529//16940 8525//16940 8526//16940 +f 8530//16941 7766//16941 8523//16941 +f 7786//16942 7760//16942 7759//16942 +f 8530//16943 8527//16943 7766//16943 +f 7789//16944 8530//16944 8523//16944 +f 7786//16945 8526//16945 7760//16945 +f 7788//16946 8530//16946 7789//16946 +f 8531//16947 8526//16947 7786//16947 +f 7779//16948 7783//16948 7756//16948 +f 7777//16949 7779//16949 7753//16949 +f 7763//16950 7777//16950 7736//16950 +f 7772//16951 7763//16951 7749//16951 +f 7769//16952 7772//16952 7745//16952 +f 8532//16953 8531//16953 7786//16953 +f 8533//16954 8528//16954 8527//16954 +f 8534//16955 8533//16955 8527//16955 +f 8535//16956 8536//16956 8537//16956 +f 7745//16957 7742//16957 7769//16957 +f 7749//16958 7745//16958 7772//16958 +f 8538//16959 8529//16959 8526//16959 +f 7736//16960 7749//16960 7763//16960 +f 7753//16961 7736//16961 7777//16961 +f 7756//16962 7753//16962 7779//16962 +f 8539//16963 8529//16963 8538//16963 +f 8540//16964 8539//16964 8538//16964 +f 8541//16965 8542//16965 8524//16965 +f 7783//16966 7759//16966 7756//16966 +f 7783//16967 7786//16967 7759//16967 +f 8543//16968 8531//16968 8532//16968 +f 8537//16969 8543//16969 8535//16969 +f 8537//16970 8531//16970 8543//16970 +f 8524//16971 8540//16971 8538//16971 +f 8542//16972 8540//16972 8524//16972 +f 8534//16973 8537//16973 8536//16973 +f 8544//16974 8541//16974 8524//16974 +f 7741//16975 8544//16975 8524//16975 +f 8527//16976 8537//16976 8534//16976 +f 8545//16977 8546//16977 8547//16977 +f 8548//16978 8547//16978 8549//16978 +f 8548//16979 8545//16979 8547//16979 +f 8550//16980 8549//16980 8551//16980 +f 8550//16981 8548//16981 8549//16981 +f 8552//16982 8550//16982 8551//16982 +f 8545//16983 8101//16983 8103//16983 +f 8545//16984 8103//16984 8546//16984 +f 8110//16985 8553//16985 8554//16985 +f 8110//16986 8554//16986 8108//16986 +f 8555//16987 8556//16987 8557//16987 +f 8554//16988 8556//16988 8555//16988 +f 8553//16989 8556//16989 8554//16989 +f 8557//16990 8558//16990 8559//16990 +f 8556//16991 8558//16991 8557//16991 +f 8558//16992 8560//16992 8559//16992 +f 7797//16993 7798//16993 8559//16993 +f 8560//16994 7797//16994 8559//16994 +f 8531//16995 8552//16995 8551//16995 +f 8531//16996 8551//16996 8526//16996 +f 7569//16997 7540//16997 7570//16997 +f 7575//16998 8096//16998 8098//16998 +f 7573//16999 8096//16999 7575//16999 +f 7570//17000 8094//17000 7573//17000 +f 7540//17001 8094//17001 7570//17001 +f 7573//17002 8094//17002 8096//17002 +f 8104//17003 8109//17003 8100//17003 +f 8104//17004 8112//17004 8109//17004 +f 8100//17005 8108//17005 8103//17005 +f 8526//17006 8515//17006 8538//17006 +f 8109//17007 8108//17007 8100//17007 +f 7798//17008 8513//17008 8526//17008 +f 8106//17009 8114//17009 8104//17009 +f 8526//17010 8513//17010 8515//17010 +f 8104//17011 8114//17011 8112//17011 +f 8515//17012 7801//17012 8538//17012 +f 7801//17013 8524//17013 8538//17013 +f 8103//17014 8554//17014 8546//17014 +f 8108//17015 8554//17015 8103//17015 +f 7798//17016 8511//17016 8513//17016 +f 8546//17017 8555//17017 8547//17017 +f 8554//17018 8555//17018 8546//17018 +f 7798//17019 7796//17019 8511//17019 +f 7801//17020 7802//17020 8524//17020 +f 8557//17021 8549//17021 8555//17021 +f 8555//17022 8549//17022 8547//17022 +f 7796//17023 8509//17023 8511//17023 +f 8559//17024 8551//17024 8557//17024 +f 7802//17025 8523//17025 8524//17025 +f 8557//17026 8551//17026 8549//17026 +f 7802//17027 7809//17027 8523//17027 +f 7796//17028 7794//17028 8509//17028 +f 7794//17029 7818//17029 8509//17029 +f 8066//17030 7552//17030 8057//17030 +f 8066//17031 7561//17031 7552//17031 +f 7533//17032 7561//17032 8066//17032 +f 7814//17033 7789//17033 7809//17033 +f 7809//17034 7789//17034 8523//17034 +f 8057//17035 7547//17035 8058//17035 +f 7818//17036 7792//17036 7816//17036 +f 7552//17037 7547//17037 8057//17037 +f 7794//17038 7792//17038 7818//17038 +f 7533//17039 7563//17039 7561//17039 +f 7816//17040 7790//17040 7814//17040 +f 7814//17041 7790//17041 7789//17041 +f 7533//17042 7536//17042 7563//17042 +f 7792//17043 7790//17043 7816//17043 +f 8526//17044 8551//17044 8559//17044 +f 8106//17045 8065//17045 8114//17045 +f 7547//17046 8085//17046 8058//17046 +f 8098//17047 8114//17047 8065//17047 +f 8559//17048 7798//17048 8526//17048 +f 7536//17049 8090//17049 7563//17049 +f 8085//17050 8065//17050 8058//17050 +f 8085//17051 8084//17051 8065//17051 +f 7536//17052 7538//17052 8090//17052 +f 8090//17053 7538//17053 8092//17053 +f 7538//17054 7569//17054 8092//17054 +f 8084//17055 8098//17055 8065//17055 +f 7575//17056 8098//17056 8084//17056 +f 7538//17057 7540//17057 7569//17057 +f 8099//17058 7576//17058 8079//17058 +f 7539//17059 7537//17059 7571//17059 +f 7539//17060 7571//17060 7572//17060 +f 8097//17061 7576//17061 8099//17061 +f 8097//17062 7574//17062 7576//17062 +f 8095//17063 7539//17063 7572//17063 +f 8095//17064 7574//17064 8097//17064 +f 8095//17065 7572//17065 7574//17065 +f 8113//17066 8105//17066 8102//17066 +f 8113//17067 8102//17067 8111//17067 +f 8115//17068 8107//17068 8105//17068 +f 8115//17069 8105//17069 8113//17069 +f 8518//17070 8531//17070 8537//17070 +f 8110//17071 8102//17071 8101//17071 +f 8514//17072 8531//17072 8518//17072 +f 8514//17073 7797//17073 8531//17073 +f 8110//17074 8111//17074 8102//17074 +f 7806//17075 8518//17075 8537//17075 +f 8553//17076 8101//17076 8545//17076 +f 8527//17077 7806//17077 8537//17077 +f 8553//17078 8110//17078 8101//17078 +f 8510//17079 7797//17079 8514//17079 +f 8556//17080 8545//17080 8548//17080 +f 8556//17081 8553//17081 8545//17081 +f 7795//17082 7797//17082 8510//17082 +f 7807//17083 7806//17083 8527//17083 +f 8550//17084 8558//17084 8556//17084 +f 8550//17085 8556//17085 8548//17085 +f 8508//17086 7795//17086 8510//17086 +f 8552//17087 8560//17087 8558//17087 +f 8530//17088 7807//17088 8527//17088 +f 8552//17089 8558//17089 8550//17089 +f 7812//17090 7807//17090 8530//17090 +f 7793//17091 7795//17091 8508//17091 +f 7817//17092 7793//17092 8508//17092 +f 7542//17093 8063//17093 8064//17093 +f 7551//17094 8063//17094 7542//17094 +f 7551//17095 7534//17095 8063//17095 +f 7788//17096 7813//17096 7812//17096 +f 7788//17097 7812//17097 8530//17097 +f 7543//17098 8064//17098 8076//17098 +f 7791//17099 7817//17099 7815//17099 +f 7543//17100 7542//17100 8064//17100 +f 7559//17101 7534//17101 7551//17101 +f 7791//17102 7793//17102 7817//17102 +f 7787//17103 7815//17103 7813//17103 +f 7787//17104 7813//17104 7788//17104 +f 7535//17105 7534//17105 7559//17105 +f 7787//17106 7791//17106 7815//17106 +f 8552//17107 8531//17107 8560//17107 +f 7797//17108 8560//17108 8531//17108 +f 8083//17109 7543//17109 8076//17109 +f 8115//17110 8099//17110 8062//17110 +f 8062//17111 8107//17111 8115//17111 +f 8091//17112 7535//17112 7559//17112 +f 8062//17113 8083//17113 8076//17113 +f 8093//17114 7535//17114 8091//17114 +f 8079//17115 8083//17115 8062//17115 +f 7537//17116 7535//17116 8093//17116 +f 7571//17117 7537//17117 8093//17117 +f 8099//17118 8079//17118 8062//17118 +f 8561//17119 8536//17119 8562//17119 +f 8563//17120 8543//17120 8532//17120 +f 8563//17121 8532//17121 7786//17121 +f 8563//17122 7786//17122 7785//17122 +f 8563//17123 7785//17123 8564//17123 +f 8565//17124 8535//17124 8543//17124 +f 8565//17125 8564//17125 8562//17125 +f 8565//17126 8543//17126 8563//17126 +f 8565//17127 8563//17127 8564//17127 +f 8566//17128 8565//17128 8562//17128 +f 8566//17129 8535//17129 8565//17129 +f 8567//17130 8536//17130 8535//17130 +f 8567//17131 8535//17131 8566//17131 +f 8567//17132 8566//17132 8562//17132 +f 8567//17133 8562//17133 8536//17133 +f 8568//17134 8534//17134 8536//17134 +f 8568//17135 8561//17135 8569//17135 +f 8568//17136 8536//17136 8561//17136 +f 8570//17137 8533//17137 8534//17137 +f 8570//17138 8534//17138 8568//17138 +f 8570//17139 8568//17139 8569//17139 +f 8571//17140 8569//17140 8572//17140 +f 8571//17141 8570//17141 8569//17141 +f 8571//17142 8533//17142 8570//17142 +f 8573//17143 8528//17143 8533//17143 +f 8573//17144 8571//17144 8572//17144 +f 8573//17145 8533//17145 8571//17145 +f 8574//17146 7767//17146 7766//17146 +f 8574//17147 7766//17147 8528//17147 +f 8574//17148 8572//17148 7767//17148 +f 8574//17149 8528//17149 8573//17149 +f 8574//17150 8573//17150 8572//17150 +f 8540//17151 8575//17151 8576//17151 +f 8577//17152 8578//17152 7761//17152 +f 8577//17153 7761//17153 7760//17153 +f 8577//17154 7760//17154 8525//17154 +f 8579//17155 8525//17155 8529//17155 +f 8579//17156 8577//17156 8525//17156 +f 8579//17157 8578//17157 8577//17157 +f 8580//17158 8581//17158 8578//17158 +f 8580//17159 8579//17159 8529//17159 +f 8580//17160 8578//17160 8579//17160 +f 8582//17161 8529//17161 8539//17161 +f 8582//17162 8581//17162 8580//17162 +f 8582//17163 8580//17163 8529//17163 +f 8583//17164 8576//17164 8581//17164 +f 8583//17165 8581//17165 8582//17165 +f 8583//17166 8582//17166 8539//17166 +f 8584//17167 8539//17167 8540//17167 +f 8584//17168 8583//17168 8539//17168 +f 8584//17169 8540//17169 8576//17169 +f 8584//17170 8576//17170 8583//17170 +f 8585//17171 8540//17171 8542//17171 +f 8585//17172 8575//17172 8540//17172 +f 8586//17173 8575//17173 8585//17173 +f 8586//17174 8585//17174 8542//17174 +f 8587//17175 8588//17175 8575//17175 +f 8587//17176 8542//17176 8541//17176 +f 8587//17177 8575//17177 8586//17177 +f 8587//17178 8586//17178 8542//17178 +f 8589//17179 7741//17179 7740//17179 +f 8589//17180 7740//17180 8588//17180 +f 8589//17181 8541//17181 8544//17181 +f 8589//17182 8544//17182 7741//17182 +f 8589//17183 8588//17183 8587//17183 +f 8589//17184 8587//17184 8541//17184 +f 8590//17185 8522//17185 8521//17185 +f 8590//17186 8591//17186 8522//17186 +f 8590//17187 8592//17187 8591//17187 +f 8593//17188 8594//17188 8595//17188 +f 8593//17189 8595//17189 8596//17189 +f 8597//17190 8596//17190 8598//17190 +f 8597//17191 8593//17191 8596//17191 +f 8599//17192 8597//17192 8598//17192 +f 8599//17193 8598//17193 8600//17193 +f 8601//17194 8600//17194 8592//17194 +f 8601//17195 8599//17195 8600//17195 +f 8602//17196 8601//17196 8592//17196 +f 8602//17197 8521//17197 7819//17197 +f 8602//17198 7819//17198 7808//17198 +f 8602//17199 8590//17199 8521//17199 +f 8602//17200 8592//17200 8590//17200 +f 8603//17201 8604//17201 8605//17201 +f 8603//17202 8605//17202 8594//17202 +f 8606//17203 8603//17203 8594//17203 +f 8606//17204 8594//17204 8593//17204 +f 8607//17205 8604//17205 8603//17205 +f 8608//17206 8603//17206 8606//17206 +f 8608//17207 8607//17207 8603//17207 +f 8609//17208 8606//17208 8593//17208 +f 8609//17209 8593//17209 8597//17209 +f 8610//17210 8608//17210 8606//17210 +f 8610//17211 8606//17211 8609//17211 +f 8611//17212 8609//17212 8597//17212 +f 8611//17213 8597//17213 8599//17213 +f 8612//17214 8609//17214 8611//17214 +f 8612//17215 8610//17215 8609//17215 +f 8613//17216 8614//17216 7733//17216 +f 8613//17217 7733//17217 7731//17217 +f 8615//17218 8601//17218 8602//17218 +f 8613//17219 7731//17219 8517//17219 +f 8615//17220 8599//17220 8601//17220 +f 8615//17221 8602//17221 7808//17221 +f 8615//17222 8611//17222 8599//17222 +f 8616//17223 7808//17223 7811//17223 +f 8617//17224 8613//17224 8517//17224 +f 8616//17225 8612//17225 8611//17225 +f 8616//17226 7811//17226 8612//17226 +f 8617//17227 8614//17227 8613//17227 +f 8616//17228 8615//17228 7808//17228 +f 8616//17229 8611//17229 8615//17229 +f 8618//17230 8619//17230 8604//17230 +f 8620//17231 8614//17231 8617//17231 +f 8621//17232 8517//17232 8519//17232 +f 8618//17233 8604//17233 8607//17233 +f 8621//17234 8617//17234 8517//17234 +f 8622//17235 8607//17235 8608//17235 +f 8623//17236 8620//17236 8617//17236 +f 8623//17237 8621//17237 8519//17237 +f 8623//17238 8617//17238 8621//17238 +f 8622//17239 8618//17239 8607//17239 +f 8624//17240 8625//17240 8614//17240 +f 8626//17241 8608//17241 8610//17241 +f 8626//17242 8612//17242 7811//17242 +f 8626//17243 8610//17243 8612//17243 +f 8624//17244 8614//17244 8620//17244 +f 8626//17245 8622//17245 8608//17245 +f 8627//17246 8619//17246 8618//17246 +f 8628//17247 8624//17247 8620//17247 +f 8629//17248 7811//17248 7810//17248 +f 8628//17249 8620//17249 8623//17249 +f 8629//17250 8627//17250 8618//17250 +f 8629//17251 8626//17251 7811//17251 +f 8629//17252 8618//17252 8622//17252 +f 8630//17253 8628//17253 8623//17253 +f 8629//17254 8622//17254 8626//17254 +f 8630//17255 8623//17255 8519//17255 +f 8631//17256 7702//17256 7701//17256 +f 8631//17257 7701//17257 8619//17257 +f 8631//17258 7810//17258 7702//17258 +f 8631//17259 8619//17259 8627//17259 +f 8632//17260 8625//17260 8624//17260 +f 8631//17261 8629//17261 7810//17261 +f 8631//17262 8627//17262 8629//17262 +f 8633//17263 8624//17263 8628//17263 +f 8633//17264 8632//17264 8624//17264 +f 8634//17265 8519//17265 8522//17265 +f 8634//17266 8630//17266 8519//17266 +f 8635//17267 8628//17267 8630//17267 +f 8635//17268 8633//17268 8628//17268 +f 8595//17269 8605//17269 8625//17269 +f 8595//17270 8625//17270 8632//17270 +f 8591//17271 8634//17271 8522//17271 +f 8591//17272 8630//17272 8634//17272 +f 8591//17273 8635//17273 8630//17273 +f 8596//17274 8632//17274 8633//17274 +f 8596//17275 8595//17275 8632//17275 +f 8598//17276 8633//17276 8635//17276 +f 8598//17277 8596//17277 8633//17277 +f 8600//17278 8635//17278 8591//17278 +f 8600//17279 8598//17279 8635//17279 +f 8592//17280 8600//17280 8591//17280 +f 8594//17281 8605//17281 8595//17281 +f 8636//17282 7776//17282 8637//17282 +f 8636//17283 8637//17283 8638//17283 +f 8639//17284 7674//17284 8640//17284 +f 8639//17285 8641//17285 7674//17285 +f 8642//17286 7667//17286 7670//17286 +f 8643//17287 7785//17287 7781//17287 +f 8643//17288 8644//17288 8641//17288 +f 8643//17289 8636//17289 8644//17289 +f 8643//17290 7781//17290 8636//17290 +f 8645//17291 8640//17291 8646//17291 +f 8645//17292 8639//17292 8640//17292 +f 8647//17293 8564//17293 7785//17293 +f 8647//17294 7785//17294 8643//17294 +f 8647//17295 8641//17295 8639//17295 +f 8647//17296 8643//17296 8641//17296 +f 8648//17297 8646//17297 8649//17297 +f 8648//17298 8645//17298 8646//17298 +f 8650//17299 8562//17299 8564//17299 +f 8650//17300 8639//17300 8645//17300 +f 8650//17301 8647//17301 8639//17301 +f 8650//17302 8564//17302 8647//17302 +f 8651//17303 8649//17303 8652//17303 +f 8651//17304 8648//17304 8649//17304 +f 8653//17305 8561//17305 8562//17305 +f 8653//17306 8645//17306 8648//17306 +f 8653//17307 8650//17307 8645//17307 +f 8653//17308 8562//17308 8650//17308 +f 8654//17309 8652//17309 8655//17309 +f 8654//17310 8651//17310 8652//17310 +f 8656//17311 8569//17311 8561//17311 +f 8656//17312 8561//17312 8653//17312 +f 8656//17313 8648//17313 8651//17313 +f 8656//17314 8653//17314 8648//17314 +f 8657//17315 8655//17315 7663//17315 +f 8657//17316 8654//17316 8655//17316 +f 8658//17317 8656//17317 8651//17317 +f 8658//17318 8572//17318 8569//17318 +f 8658//17319 8569//17319 8656//17319 +f 8658//17320 8651//17320 8654//17320 +f 8659//17321 7663//17321 7662//17321 +f 8659//17322 8657//17322 7663//17322 +f 8660//17323 7768//17323 7767//17323 +f 8660//17324 8654//17324 8657//17324 +f 8660//17325 7767//17325 8572//17325 +f 8660//17326 8572//17326 8658//17326 +f 8660//17327 8658//17327 8654//17327 +f 8661//17328 7662//17328 7665//17328 +f 8661//17329 7665//17329 8642//17329 +f 8661//17330 8659//17330 7662//17330 +f 8662//17331 7764//17331 7768//17331 +f 8662//17332 8657//17332 8659//17332 +f 8662//17333 8660//17333 8657//17333 +f 8662//17334 7768//17334 8660//17334 +f 8663//17335 7762//17335 7764//17335 +f 8663//17336 8662//17336 8659//17336 +f 8663//17337 7764//17337 8662//17337 +f 8663//17338 8661//17338 8642//17338 +f 8642//17339 7665//17339 7667//17339 +f 8663//17340 8642//17340 8664//17340 +f 8663//17341 8664//17341 7762//17341 +f 8663//17342 8659//17342 8661//17342 +f 8638//17343 7670//17343 7672//17343 +f 8638//17344 8642//17344 7670//17344 +f 8644//17345 7672//17345 7674//17345 +f 8644//17346 8638//17346 7672//17346 +f 8637//17347 7776//17347 7762//17347 +f 8637//17348 8664//17348 8642//17348 +f 8637//17349 7762//17349 8664//17349 +f 8637//17350 8642//17350 8638//17350 +f 8641//17351 8644//17351 7674//17351 +f 8636//17352 7781//17352 7776//17352 +f 8636//17353 8638//17353 8644//17353 +f 8665//17354 8640//17354 7674//17354 +f 8665//17355 7674//17355 7673//17355 +f 8666//17356 8646//17356 8640//17356 +f 8666//17357 8640//17357 8665//17357 +f 8667//17358 8652//17358 8649//17358 +f 8667//17359 8649//17359 8646//17359 +f 8667//17360 8646//17360 8666//17360 +f 8668//17361 8655//17361 8652//17361 +f 8668//17362 8652//17362 8667//17362 +f 8669//17363 7663//17363 8655//17363 +f 8669//17364 8655//17364 8668//17364 +f 7661//17365 7663//17365 8669//17365 +f 8670//17366 7669//17366 7668//17366 +f 8670//17367 8671//17367 8672//17367 +f 8673//17368 8674//17368 8675//17368 +f 8670//17369 7668//17369 8671//17369 +f 8670//17370 8672//17370 8676//17370 +f 8677//17371 8678//17371 8679//17371 +f 8680//17372 8670//17372 8676//17372 +f 8681//17373 8669//17373 8668//17373 +f 8680//17374 7669//17374 8670//17374 +f 8681//17375 8682//17375 8683//17375 +f 8680//17376 8676//17376 8684//17376 +f 8681//17377 8668//17377 8673//17377 +f 8681//17378 8673//17378 8682//17378 +f 8685//17379 8686//17379 8687//17379 +f 8688//17380 8679//17380 8689//17380 +f 8688//17381 8677//17381 8679//17381 +f 8690//17382 8687//17382 8691//17382 +f 8690//17383 8685//17383 8687//17383 +f 8692//17384 7671//17384 7669//17384 +f 8692//17385 8684//17385 8693//17385 +f 8694//17386 8688//17386 8689//17386 +f 8692//17387 7669//17387 8680//17387 +f 8695//17388 8669//17388 8681//17388 +f 8695//17389 8683//17389 8678//17389 +f 8692//17390 8680//17390 8684//17390 +f 8695//17391 8681//17391 8683//17391 +f 8696//17392 8692//17392 8693//17392 +f 8696//17393 8693//17393 8686//17393 +f 8696//17394 7671//17394 8692//17394 +f 8697//17395 7661//17395 8669//17395 +f 8697//17396 8695//17396 8678//17396 +f 8697//17397 8678//17397 8677//17397 +f 8697//17398 8669//17398 8695//17398 +f 8698//17399 8690//17399 8691//17399 +f 8699//17400 8689//17400 8700//17400 +f 8701//17401 8691//17401 8702//17401 +f 8699//17402 8694//17402 8689//17402 +f 8701//17403 8698//17403 8691//17403 +f 8703//17404 7673//17404 7671//17404 +f 8703//17405 7671//17405 8696//17405 +f 8704//17406 8699//17406 8700//17406 +f 8703//17407 8686//17407 8685//17407 +f 8703//17408 8696//17408 8686//17408 +f 8705//17409 8677//17409 8688//17409 +f 8705//17410 7661//17410 8697//17410 +f 8706//17411 7673//17411 8703//17411 +f 8705//17412 8697//17412 8677//17412 +f 8706//17413 8685//17413 8690//17413 +f 8706//17414 8703//17414 8685//17414 +f 8707//17415 7664//17415 7661//17415 +f 8707//17416 8688//17416 8694//17416 +f 8707//17417 8705//17417 8688//17417 +f 8707//17418 7661//17418 8705//17418 +f 8708//17419 8701//17419 8702//17419 +f 8709//17420 8700//17420 8710//17420 +f 8709//17421 8704//17421 8700//17421 +f 8711//17422 8665//17422 7673//17422 +f 8711//17423 8690//17423 8698//17423 +f 8711//17424 7673//17424 8706//17424 +f 8712//17425 8710//17425 8713//17425 +f 8712//17426 8713//17426 8672//17426 +f 8711//17427 8706//17427 8690//17427 +f 8714//17428 8708//17428 8702//17428 +f 8712//17429 8709//17429 8710//17429 +f 8715//17430 8707//17430 8694//17430 +f 8714//17431 8702//17431 8716//17431 +f 8715//17432 8694//17432 8699//17432 +f 8715//17433 7664//17433 8707//17433 +f 8717//17434 8711//17434 8698//17434 +f 8718//17435 7666//17435 7664//17435 +f 8718//17436 8699//17436 8704//17436 +f 8718//17437 8715//17437 8699//17437 +f 8717//17438 8698//17438 8701//17438 +f 8717//17439 8665//17439 8711//17439 +f 8718//17440 7664//17440 8715//17440 +f 8719//17441 8714//17441 8716//17441 +f 8720//17442 8704//17442 8709//17442 +f 8721//17443 8701//17443 8708//17443 +f 8720//17444 7666//17444 8718//17444 +f 8720//17445 8718//17445 8704//17445 +f 8721//17446 8666//17446 8665//17446 +f 8722//17447 7668//17447 7666//17447 +f 8721//17448 8717//17448 8701//17448 +f 8722//17449 8672//17449 8671//17449 +f 8721//17450 8665//17450 8717//17450 +f 8722//17451 8671//17451 7668//17451 +f 8722//17452 8712//17452 8672//17452 +f 8722//17453 8709//17453 8712//17453 +f 8722//17454 7666//17454 8720//17454 +f 8722//17455 8720//17455 8709//17455 +f 8723//17456 8716//17456 8724//17456 +f 8723//17457 8719//17457 8716//17457 +f 8725//17458 8666//17458 8721//17458 +f 8725//17459 8721//17459 8708//17459 +f 8725//17460 8708//17460 8714//17460 +f 8675//17461 8723//17461 8724//17461 +f 8726//17462 8667//17462 8666//17462 +f 8726//17463 8666//17463 8725//17463 +f 8726//17464 8725//17464 8714//17464 +f 8726//17465 8714//17465 8719//17465 +f 8682//17466 8724//17466 8727//17466 +f 8682//17467 8675//17467 8724//17467 +f 8728//17468 8667//17468 8726//17468 +f 8728//17469 8726//17469 8719//17469 +f 8676//17470 8672//17470 8713//17470 +f 8728//17471 8719//17471 8723//17471 +f 8676//17472 8713//17472 8729//17472 +f 8683//17473 8682//17473 8727//17473 +f 8684//17474 8729//17474 8730//17474 +f 8674//17475 8668//17475 8667//17475 +f 8674//17476 8723//17476 8675//17476 +f 8674//17477 8728//17477 8723//17477 +f 8684//17478 8676//17478 8729//17478 +f 8674//17479 8667//17479 8728//17479 +f 8693//17480 8684//17480 8730//17480 +f 8678//17481 8727//17481 8679//17481 +f 8678//17482 8683//17482 8727//17482 +f 8686//17483 8730//17483 8687//17483 +f 8686//17484 8693//17484 8730//17484 +f 8673//17485 8668//17485 8674//17485 +f 8673//17486 8675//17486 8682//17486 +f 8731//17487 8710//17487 8700//17487 +f 8731//17488 8700//17488 8732//17488 +f 8731//17489 8732//17489 8733//17489 +f 8734//17490 8735//17490 8736//17490 +f 8731//17491 8737//17491 8738//17491 +f 8731//17492 8738//17492 8713//17492 +f 8731//17493 8739//17493 8737//17493 +f 8731//17494 8733//17494 8739//17494 +f 8734//17495 8740//17495 8735//17495 +f 8741//17496 8736//17496 8742//17496 +f 8741//17497 8734//17497 8736//17497 +f 8743//17498 8742//17498 8744//17498 +f 8743//17499 8741//17499 8742//17499 +f 8745//17500 8744//17500 8746//17500 +f 8745//17501 8743//17501 8744//17501 +f 8747//17502 8746//17502 8748//17502 +f 8747//17503 8745//17503 8746//17503 +f 8733//17504 8748//17504 8749//17504 +f 8733//17505 8747//17505 8748//17505 +f 8739//17506 8750//17506 8751//17506 +f 8739//17507 8749//17507 8750//17507 +f 8739//17508 8751//17508 8737//17508 +f 8739//17509 8733//17509 8749//17509 +f 8752//17510 8729//17510 8713//17510 +f 8752//17511 8738//17511 8737//17511 +f 8752//17512 8713//17512 8738//17512 +f 8737//17513 8751//17513 8753//17513 +f 8752//17514 8737//17514 8754//17514 +f 8755//17515 8730//17515 8729//17515 +f 8755//17516 8754//17516 8756//17516 +f 8755//17517 8729//17517 8752//17517 +f 8755//17518 8752//17518 8754//17518 +f 8757//17519 8687//17519 8730//17519 +f 8757//17520 8756//17520 8758//17520 +f 8757//17521 8730//17521 8755//17521 +f 8757//17522 8755//17522 8756//17522 +f 8759//17523 8691//17523 8687//17523 +f 8759//17524 8687//17524 8757//17524 +f 8759//17525 8758//17525 8760//17525 +f 8759//17526 8757//17526 8758//17526 +f 8761//17527 8702//17527 8691//17527 +f 8761//17528 8760//17528 8740//17528 +f 8761//17529 8691//17529 8759//17529 +f 8761//17530 8759//17530 8760//17530 +f 8762//17531 8702//17531 8761//17531 +f 8762//17532 8761//17532 8740//17532 +f 8762//17533 8716//17533 8702//17533 +f 8762//17534 8740//17534 8734//17534 +f 8763//17535 8762//17535 8734//17535 +f 8763//17536 8724//17536 8716//17536 +f 8754//17537 8737//17537 8753//17537 +f 8763//17538 8734//17538 8741//17538 +f 8763//17539 8716//17539 8762//17539 +f 8756//17540 8753//17540 8764//17540 +f 8765//17541 8727//17541 8724//17541 +f 8765//17542 8724//17542 8763//17542 +f 8765//17543 8763//17543 8741//17543 +f 8756//17544 8754//17544 8753//17544 +f 8765//17545 8741//17545 8743//17545 +f 8758//17546 8764//17546 8766//17546 +f 8767//17547 8679//17547 8727//17547 +f 8767//17548 8727//17548 8765//17548 +f 8767//17549 8765//17549 8743//17549 +f 8758//17550 8756//17550 8764//17550 +f 8767//17551 8743//17551 8745//17551 +f 8768//17552 8689//17552 8679//17552 +f 8760//17553 8766//17553 8769//17553 +f 8768//17554 8767//17554 8745//17554 +f 8768//17555 8745//17555 8747//17555 +f 8760//17556 8758//17556 8766//17556 +f 8768//17557 8679//17557 8767//17557 +f 8732//17558 8700//17558 8689//17558 +f 8732//17559 8689//17559 8768//17559 +f 8740//17560 8769//17560 8735//17560 +f 8732//17561 8747//17561 8733//17561 +f 8732//17562 8768//17562 8747//17562 +f 8740//17563 8760//17563 8769//17563 +f 8731//17564 8713//17564 8710//17564 +f 8770//17565 8771//17565 7648//17565 +f 8772//17566 8773//17566 8774//17566 +f 8775//17567 8764//17567 8753//17567 +f 8770//17568 8776//17568 8771//17568 +f 8775//17569 8774//17569 8777//17569 +f 8775//17570 8772//17570 8774//17570 +f 8775//17571 8753//17571 8772//17571 +f 8778//17572 8744//17572 8779//17572 +f 8778//17573 8780//17573 8781//17573 +f 8778//17574 8779//17574 8780//17574 +f 8782//17575 7657//17575 7659//17575 +f 8782//17576 8783//17576 7657//17576 +f 8784//17577 8770//17577 7648//17577 +f 8785//17578 8782//17578 7659//17578 +f 8786//17579 7648//17579 7650//17579 +f 8787//17580 8764//17580 8775//17580 +f 8786//17581 8784//17581 7648//17581 +f 8787//17582 8777//17582 8788//17582 +f 8789//17583 8746//17583 8744//17583 +f 8787//17584 8775//17584 8777//17584 +f 8789//17585 8781//17585 8776//17585 +f 8789//17586 8744//17586 8778//17586 +f 8790//17587 8766//17587 8764//17587 +f 8790//17588 8788//17588 8783//17588 +f 8789//17589 8778//17589 8781//17589 +f 8790//17590 8764//17590 8787//17590 +f 8790//17591 8787//17591 8788//17591 +f 8791//17592 8776//17592 8770//17592 +f 8791//17593 8789//17593 8776//17593 +f 8792//17594 7659//17594 8793//17594 +f 8791//17595 8746//17595 8789//17595 +f 8792//17596 8785//17596 7659//17596 +f 8794//17597 8792//17597 8793//17597 +f 8795//17598 8786//17598 7650//17598 +f 8796//17599 7650//17599 7652//17599 +f 8797//17600 8783//17600 8782//17600 +f 8796//17601 8795//17601 7650//17601 +f 8797//17602 8790//17602 8783//17602 +f 8797//17603 8766//17603 8790//17603 +f 8798//17604 8748//17604 8746//17604 +f 8798//17605 8791//17605 8770//17605 +f 8799//17606 8769//17606 8766//17606 +f 8798//17607 8770//17607 8784//17607 +f 8799//17608 8766//17608 8797//17608 +f 8798//17609 8746//17609 8791//17609 +f 8799//17610 8782//17610 8785//17610 +f 8799//17611 8797//17611 8782//17611 +f 8800//17612 8748//17612 8798//17612 +f 8800//17613 8784//17613 8786//17613 +f 8800//17614 8798//17614 8784//17614 +f 8801//17615 8793//17615 8802//17615 +f 8801//17616 8794//17616 8793//17616 +f 8803//17617 8796//17617 7652//17617 +f 8804//17618 8785//17618 8792//17618 +f 8804//17619 8769//17619 8799//17619 +f 8805//17620 7652//17620 7655//17620 +f 8804//17621 8799//17621 8785//17621 +f 8805//17622 7655//17622 8773//17622 +f 8805//17623 8803//17623 7652//17623 +f 8806//17624 8749//17624 8748//17624 +f 8807//17625 8801//17625 8802//17625 +f 8806//17626 8786//17626 8795//17626 +f 8806//17627 8748//17627 8800//17627 +f 8806//17628 8800//17628 8786//17628 +f 8808//17629 8804//17629 8792//17629 +f 8808//17630 8735//17630 8769//17630 +f 8809//17631 8749//17631 8806//17631 +f 8808//17632 8769//17632 8804//17632 +f 8809//17633 8795//17633 8796//17633 +f 8808//17634 8792//17634 8794//17634 +f 8809//17635 8806//17635 8795//17635 +f 8810//17636 8807//17636 8802//17636 +f 8811//17637 8750//17637 8749//17637 +f 8811//17638 8809//17638 8796//17638 +f 8810//17639 8802//17639 8812//17639 +f 8811//17640 8796//17640 8803//17640 +f 8813//17641 8794//17641 8801//17641 +f 8811//17642 8749//17642 8809//17642 +f 8814//17643 8751//17643 8750//17643 +f 8813//17644 8735//17644 8808//17644 +f 8814//17645 8773//17645 8815//17645 +f 8813//17646 8808//17646 8794//17646 +f 8814//17647 8815//17647 8751//17647 +f 8814//17648 8805//17648 8773//17648 +f 8814//17649 8803//17649 8805//17649 +f 8814//17650 8750//17650 8811//17650 +f 8814//17651 8811//17651 8803//17651 +f 8816//17652 8810//17652 8812//17652 +f 8817//17653 8736//17653 8735//17653 +f 8817//17654 8801//17654 8807//17654 +f 8817//17655 8813//17655 8801//17655 +f 8817//17656 8735//17656 8813//17656 +f 8818//17657 8816//17657 8812//17657 +f 8818//17658 8812//17658 8819//17658 +f 8820//17659 8736//17659 8817//17659 +f 8820//17660 8817//17660 8807//17660 +f 8820//17661 8807//17661 8810//17661 +f 8780//17662 8818//17662 8819//17662 +f 8821//17663 8736//17663 8820//17663 +f 8821//17664 8742//17664 8736//17664 +f 8821//17665 8820//17665 8810//17665 +f 8774//17666 8773//17666 7655//17666 +f 8821//17667 8810//17667 8816//17667 +f 8774//17668 7655//17668 7654//17668 +f 8781//17669 8819//17669 8771//17669 +f 8781//17670 8780//17670 8819//17670 +f 8822//17671 8816//17671 8818//17671 +f 8777//17672 8774//17672 7654//17672 +f 8822//17673 8821//17673 8816//17673 +f 8822//17674 8742//17674 8821//17674 +f 8788//17675 7654//17675 7657//17675 +f 8788//17676 8777//17676 7654//17676 +f 8776//17677 8781//17677 8771//17677 +f 8783//17678 8788//17678 7657//17678 +f 8779//17679 8744//17679 8742//17679 +f 8779//17680 8742//17680 8822//17680 +f 8779//17681 8822//17681 8818//17681 +f 8779//17682 8818//17682 8780//17682 +f 8772//17683 8753//17683 8751//17683 +f 8772//17684 8815//17684 8773//17684 +f 8772//17685 8751//17685 8815//17685 +f 7660//17686 8793//17686 7659//17686 +f 8823//17687 8802//17687 8793//17687 +f 8823//17688 8793//17688 7660//17688 +f 8824//17689 8812//17689 8802//17689 +f 8824//17690 8802//17690 8823//17690 +f 8825//17691 8812//17691 8824//17691 +f 8826//17692 8819//17692 8812//17692 +f 8826//17693 8812//17693 8825//17693 +f 8827//17694 8771//17694 8819//17694 +f 8827//17695 8819//17695 8826//17695 +f 7649//17696 7648//17696 8771//17696 +f 7649//17697 8771//17697 8827//17697 +f 8828//17698 7658//17698 8829//17698 +f 8828//17699 8829//17699 8830//17699 +f 8831//17700 7761//17700 8578//17700 +f 8831//17701 8832//17701 7761//17701 +f 8833//17702 7738//17702 7737//17702 +f 8834//17703 8835//17703 8832//17703 +f 8834//17704 7660//17704 8828//17704 +f 8834//17705 8828//17705 8835//17705 +f 8836//17706 8578//17706 8581//17706 +f 8836//17707 8831//17707 8578//17707 +f 8837//17708 8823//17708 7660//17708 +f 8837//17709 8832//17709 8831//17709 +f 8837//17710 7660//17710 8834//17710 +f 8837//17711 8834//17711 8832//17711 +f 8838//17712 8581//17712 8576//17712 +f 8838//17713 8836//17713 8581//17713 +f 7656//17714 7653//17714 8839//17714 +f 8840//17715 8824//17715 8823//17715 +f 8840//17716 8837//17716 8831//17716 +f 8840//17717 8823//17717 8837//17717 +f 8840//17718 8831//17718 8836//17718 +f 8841//17719 8576//17719 8575//17719 +f 8841//17720 8838//17720 8576//17720 +f 8842//17721 8825//17721 8824//17721 +f 8842//17722 8840//17722 8836//17722 +f 8842//17723 8824//17723 8840//17723 +f 8842//17724 8836//17724 8838//17724 +f 8843//17725 8575//17725 8588//17725 +f 8843//17726 8841//17726 8575//17726 +f 8844//17727 8826//17727 8825//17727 +f 8844//17728 8825//17728 8842//17728 +f 8844//17729 8838//17729 8841//17729 +f 8844//17730 8842//17730 8838//17730 +f 8845//17731 8588//17731 7740//17731 +f 8845//17732 7740//17732 7743//17732 +f 8845//17733 8843//17733 8588//17733 +f 8846//17734 8844//17734 8841//17734 +f 8846//17735 8827//17735 8826//17735 +f 8846//17736 8826//17736 8844//17736 +f 8846//17737 8841//17737 8843//17737 +f 8847//17738 7743//17738 7747//17738 +f 8847//17739 8845//17739 7743//17739 +f 8848//17740 8843//17740 8845//17740 +f 8848//17741 7649//17741 8827//17741 +f 8848//17742 8827//17742 8846//17742 +f 8848//17743 8846//17743 8843//17743 +f 8849//17744 7747//17744 7738//17744 +f 8849//17745 7738//17745 8833//17745 +f 8849//17746 8847//17746 7747//17746 +f 8850//17747 8845//17747 8847//17747 +f 8850//17748 7647//17748 7649//17748 +f 8850//17749 8848//17749 8845//17749 +f 8850//17750 7649//17750 8848//17750 +f 8851//17751 7651//17751 7647//17751 +f 8851//17752 7647//17752 8850//17752 +f 8851//17753 8849//17753 8833//17753 +f 8851//17754 8833//17754 8839//17754 +f 8851//17755 8850//17755 8847//17755 +f 8851//17756 8847//17756 8849//17756 +f 8851//17757 8839//17757 7651//17757 +f 7653//17758 7651//17758 8839//17758 +f 8830//17759 8833//17759 7737//17759 +f 8835//17760 7737//17760 7757//17760 +f 8835//17761 8830//17761 7737//17761 +f 8829//17762 7658//17762 7656//17762 +f 8829//17763 8839//17763 8833//17763 +f 8829//17764 7656//17764 8839//17764 +f 8829//17765 8833//17765 8830//17765 +f 8832//17766 7757//17766 7761//17766 +f 8832//17767 8835//17767 7757//17767 +f 8828//17768 7660//17768 7658//17768 +f 8828//17769 8830//17769 8835//17769 +f 8852//17770 8853//17770 8854//17770 +f 8855//17771 8856//17771 8857//17771 +f 8852//17772 8858//17772 8853//17772 +f 8855//17773 8859//17773 8856//17773 +f 8860//17774 7804//17774 7803//17774 +f 8860//17775 7803//17775 8861//17775 +f 8860//17776 8861//17776 8862//17776 +f 8863//17777 8857//17777 8864//17777 +f 8863//17778 8855//17778 8857//17778 +f 8865//17779 7610//17779 8866//17779 +f 8867//17780 8862//17780 8858//17780 +f 8865//17781 8868//17781 8869//17781 +f 8865//17782 8869//17782 7610//17782 +f 8867//17783 8860//17783 8862//17783 +f 8870//17784 8858//17784 8852//17784 +f 8870//17785 8867//17785 8858//17785 +f 8871//17786 8872//17786 8873//17786 +f 8874//17787 8875//17787 8876//17787 +f 8871//17788 8873//17788 8877//17788 +f 8878//17789 8879//17789 8868//17789 +f 8871//17790 8877//17790 8880//17790 +f 8878//17791 8865//17791 8866//17791 +f 8881//17792 8872//17792 8871//17792 +f 8881//17793 8854//17793 8872//17793 +f 8878//17794 8868//17794 8865//17794 +f 8882//17795 8876//17795 8883//17795 +f 8881//17796 8871//17796 8880//17796 +f 8884//17797 7805//17797 7804//17797 +f 8882//17798 8874//17798 8876//17798 +f 8884//17799 7804//17799 8860//17799 +f 8884//17800 8860//17800 8867//17800 +f 8885//17801 8883//17801 8859//17801 +f 8886//17802 8867//17802 8870//17802 +f 8886//17803 8884//17803 8867//17803 +f 8885//17804 8882//17804 8883//17804 +f 8887//17805 7622//17805 7621//17805 +f 8887//17806 7621//17806 7805//17806 +f 8887//17807 7805//17807 8884//17807 +f 8888//17808 7800//17808 7799//17808 +f 8887//17809 8884//17809 8886//17809 +f 8889//17810 8880//17810 8890//17810 +f 8888//17811 7799//17811 8875//17811 +f 8889//17812 8852//17812 8854//17812 +f 8889//17813 8881//17813 8880//17813 +f 8889//17814 8854//17814 8881//17814 +f 8891//17815 7803//17815 7800//17815 +f 8891//17816 7800//17816 8888//17816 +f 8892//17817 8852//17817 8889//17817 +f 8892//17818 8870//17818 8852//17818 +f 8892//17819 8889//17819 8890//17819 +f 8893//17820 8859//17820 8855//17820 +f 8894//17821 8886//17821 8870//17821 +f 8893//17822 8885//17822 8859//17822 +f 8894//17823 8892//17823 8890//17823 +f 8894//17824 8870//17824 8892//17824 +f 8873//17825 8893//17825 8855//17825 +f 8895//17826 8890//17826 7622//17826 +f 8895//17827 7622//17827 8887//17827 +f 8895//17828 8894//17828 8890//17828 +f 8895//17829 8887//17829 8886//17829 +f 8873//17830 8855//17830 8863//17830 +f 8895//17831 8886//17831 8894//17831 +f 8896//17832 8875//17832 8874//17832 +f 8896//17833 8888//17833 8875//17833 +f 8897//17834 8512//17834 7589//17834 +f 8898//17835 7803//17835 8891//17835 +f 8869//17836 7589//17836 7610//17836 +f 8898//17837 8888//17837 8896//17837 +f 8869//17838 8897//17838 7589//17838 +f 8898//17839 8891//17839 8888//17839 +f 8899//17840 8516//17840 8512//17840 +f 8900//17841 8896//17841 8874//17841 +f 8900//17842 8874//17842 8882//17842 +f 8901//17843 8898//17843 8896//17843 +f 8902//17844 8516//17844 8899//17844 +f 8901//17845 8896//17845 8900//17845 +f 8903//17846 8899//17846 8512//17846 +f 8903//17847 8512//17847 8897//17847 +f 8868//17848 8903//17848 8897//17848 +f 8904//17849 8866//17849 8905//17849 +f 8904//17850 8879//17850 8878//17850 +f 8904//17851 8864//17851 8879//17851 +f 8868//17852 8897//17852 8869//17852 +f 8904//17853 8878//17853 8866//17853 +f 8906//17854 8899//17854 8903//17854 +f 8906//17855 8902//17855 8899//17855 +f 8907//17856 8900//17856 8882//17856 +f 8907//17857 8882//17857 8885//17857 +f 8879//17858 8903//17858 8868//17858 +f 8879//17859 8906//17859 8903//17859 +f 8908//17860 8520//17860 8516//17860 +f 8909//17861 8901//17861 8900//17861 +f 8909//17862 8900//17862 8907//17862 +f 8910//17863 8864//17863 8904//17863 +f 8911//17864 8908//17864 8516//17864 +f 8910//17865 8863//17865 8864//17865 +f 8910//17866 8904//17866 8905//17866 +f 8912//17867 8885//17867 8893//17867 +f 8912//17868 8907//17868 8885//17868 +f 8876//17869 7799//17869 8520//17869 +f 8876//17870 8520//17870 8908//17870 +f 8856//17871 8516//17871 8902//17871 +f 8853//17872 8909//17872 8907//17872 +f 8856//17873 8911//17873 8516//17873 +f 8853//17874 8907//17874 8912//17874 +f 8872//17875 8912//17875 8893//17875 +f 8872//17876 8893//17876 8873//17876 +f 8883//17877 8908//17877 8911//17877 +f 8854//17878 8853//17878 8912//17878 +f 8883//17879 8876//17879 8908//17879 +f 8854//17880 8912//17880 8872//17880 +f 8857//17881 8902//17881 8906//17881 +f 8861//17882 8898//17882 8901//17882 +f 8857//17883 8856//17883 8902//17883 +f 8861//17884 7803//17884 8898//17884 +f 8862//17885 8861//17885 8901//17885 +f 8862//17886 8901//17886 8909//17886 +f 8859//17887 8911//17887 8856//17887 +f 8859//17888 8883//17888 8911//17888 +f 8877//17889 8863//17889 8910//17889 +f 8877//17890 8873//17890 8863//17890 +f 8864//17891 8857//17891 8906//17891 +f 8877//17892 8905//17892 8880//17892 +f 8864//17893 8906//17893 8879//17893 +f 8877//17894 8910//17894 8905//17894 +f 8858//17895 8909//17895 8853//17895 +f 8875//17896 7799//17896 8876//17896 +f 8858//17897 8862//17897 8909//17897 +f 7634//17898 7615//17898 7598//17898 +f 7598//17899 7615//17899 7599//17899 +f 7599//17900 7615//17900 7610//17900 +f 7622//17901 7615//17901 7593//17901 +f 7610//17902 7615//17902 8866//17902 +f 8866//17903 7615//17903 8905//17903 +f 8905//17904 7615//17904 8880//17904 +f 8880//17905 7615//17905 8890//17905 +f 8890//17906 7615//17906 7622//17906 +f 8619//17907 7701//17907 7703//17907 +f 8604//17908 7703//17908 7715//17908 +f 8604//17909 8619//17909 7703//17909 +f 8605//17910 7715//17910 7681//17910 +f 8605//17911 8604//17911 7715//17911 +f 8625//17912 7681//17912 7680//17912 +f 8625//17913 8605//17913 7681//17913 +f 8614//17914 7697//17914 7733//17914 +f 8614//17915 7680//17915 7697//17915 +f 8614//17916 8625//17916 7680//17916 diff --git a/resources/meshes/imade3d_jellybox_2_platform.stl b/resources/meshes/imade3d_jellybox_2_platform.stl new file mode 100644 index 0000000000..d897e1c3e0 Binary files /dev/null and b/resources/meshes/imade3d_jellybox_2_platform.stl differ diff --git a/resources/meshes/leapfrog_bolt_pro_platform.stl b/resources/meshes/leapfrog_bolt_pro_platform.stl new file mode 100644 index 0000000000..be006a5ee3 Binary files /dev/null and b/resources/meshes/leapfrog_bolt_pro_platform.stl differ diff --git a/resources/meshes/skriware_2_platform.stl b/resources/meshes/skriware_2_platform.stl new file mode 100644 index 0000000000..b85b33ad94 Binary files /dev/null and b/resources/meshes/skriware_2_platform.stl differ diff --git a/resources/meshes/stereotech_start.stl b/resources/meshes/stereotech_start.stl new file mode 100644 index 0000000000..fad5a2ea93 Binary files /dev/null and b/resources/meshes/stereotech_start.stl differ diff --git a/resources/meshes/stereotech_ste320_platform.obj b/resources/meshes/stereotech_ste320_platform.obj new file mode 100644 index 0000000000..9534f1ed89 --- /dev/null +++ b/resources/meshes/stereotech_ste320_platform.obj @@ -0,0 +1,19752 @@ +# Blender v2.79 (sub 0) OBJ File: 'stereotech_ste320_platform.blend' +# www.blender.org +mtllib stereotech_ste320_platform.mtl +o Object.2 +v 88.137001 111.915756 -4.052029 +v 88.797012 112.625763 -3.034035 +v 88.137001 112.573746 -3.086033 +v 88.137001 112.725754 -2.934032 +v 88.137001 111.557755 -4.458027 +v 88.137001 104.647766 -13.754009 +v -91.084991 112.015762 -3.900036 +v -90.270996 111.963760 -3.948032 +v -90.880997 114.757767 -6.034023 +v -91.899002 112.319763 -3.490032 +v 90.779007 111.963760 -3.948032 +v 89.813004 112.015762 -3.900036 +v 88.797012 115.419739 -5.118031 +v 89.813004 114.809753 -5.982029 +v 86.869003 106.275757 -17.514000 +v 91.031006 114.809753 -5.982029 +v 114.605011 117.907745 -1.814034 +v 114.553009 108.561752 -14.416008 +v 114.909012 113.943756 -1.206039 +v 114.553009 105.767761 -12.334011 +v 88.137001 123.087723 11.087936 +v 91.793007 113.639755 -1.662033 +v 113.435005 104.647766 -13.806007 +v 112.366997 104.091782 -14.568008 +v 110.284996 103.533768 -15.278004 +v 92.151001 113.181747 -2.324039 +v 92.151001 112.777756 -2.832035 +v 88.137001 104.699768 -13.754009 +v -89.460999 116.587738 -3.594032 +v -88.901001 113.285751 -2.120037 +v -89.257004 113.639755 -1.662033 +v -88.798996 115.773743 -4.662029 +v -13.410998 127.101730 10.629936 +v -51.233002 121.185730 2.629951 +v -89.408997 112.219742 -3.594032 +v -90.270996 114.757767 -6.034023 +v -88.901001 112.625763 -2.986031 +v -89.053001 115.267746 -5.372032 +v 88.745010 113.181747 -2.272034 +v -88.037003 123.039734 11.139931 +v -88.037003 104.647766 -13.754009 +v -88.037003 104.699768 -13.754009 +v 88.951004 116.333740 -3.948032 +v 113.639000 118.925751 -0.444038 +v 113.435005 107.495758 -15.888004 +v -91.899002 115.115738 -5.576027 +v 114.605011 115.063766 0.265957 +v -55.258999 103.533768 -15.278004 +v 98.147003 124.259735 12.663929 +v 90.779007 113.995743 -1.206039 +v -90.576988 114.047760 -1.156036 +v 109.677002 106.275757 -17.463997 +v 112.366997 106.933762 -16.650002 +v 91.793007 116.435745 -3.748032 +v 92.151001 115.977737 -4.406029 +v 39.535000 114.007767 -7.062023 +v 91.745010 115.115738 -5.576027 +v -110.441002 103.533768 -15.278004 +v -92.304993 113.181747 -2.324039 +v -91.847000 113.691742 -1.614037 +v -92.304993 115.977737 -4.406029 +v -60.097004 108.791763 -14.084007 +v 39.368999 113.895752 -7.250027 +v -101.805000 123.241730 11.339931 +v -111.862999 103.885757 -14.872009 +v -10.211000 111.457764 -10.554016 +v 89.307007 116.587738 -3.594032 +v -98.196991 127.051727 10.577930 +v -56.134998 125.655731 11.619930 +v -88.037003 123.087723 11.087936 +v -98.857002 124.207733 12.611931 +v -88.037003 113.029755 -2.528034 +v 89.103012 113.639755 -1.662033 +v 89.813004 113.943756 -1.256035 +v 89.864998 116.791748 -3.338036 +v 91.031006 116.739746 -3.338036 +v 113.181015 119.229752 -0.038036 +v 113.943001 115.825745 1.281960 +v 100.075012 126.697723 10.119934 +v 18.236996 125.133728 7.963943 +v -57.355000 126.721725 10.095940 +v -101.296989 126.341736 9.563934 +v -113.030998 107.139755 -16.296001 +v -109.778999 106.275757 -17.463997 +v -111.862999 106.681763 -16.954002 +v -113.893005 104.953766 -13.400013 +v -114.403000 108.205750 -14.924004 +v -114.403000 105.361771 -12.840012 +v -99.063004 124.155731 12.559933 +v -115.010994 109.423752 -13.296013 +v 101.142998 123.545731 11.695930 +v 98.805008 127.001724 10.477936 +v -90.833000 113.995743 -1.156036 +v -91.443001 116.687744 -3.442036 +v -90.576988 116.839752 -3.238029 +v -60.617004 106.275757 -17.476002 +v 88.137001 123.039734 11.139931 +v -113.741005 118.925751 -0.444038 +v -114.707001 117.857742 -1.866035 +v -114.097000 115.825745 1.233955 +v -114.707001 115.063766 0.265957 +v -115.010994 113.943756 -1.206039 +v -115.010994 106.581757 -11.162014 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.999912 0.069875 +vt 0.000240 0.795821 +vt 0.000240 0.069875 +vt 0.999760 0.000088 +vt 0.000088 0.000088 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.999912 0.795821 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vn 0.0208 -0.8263 0.5628 +vn 0.0000 -0.7071 0.7071 +vn 1.0000 0.0000 0.0000 +vn 1.0000 0.0034 0.0000 +vn 0.0854 0.6080 0.7894 +vn 0.5312 0.4954 0.6873 +vn -0.0106 -0.7776 0.6287 +vn -0.0031 -0.8193 0.5734 +vn 0.7216 0.4139 0.5550 +vn 0.7210 0.4140 0.5556 +vn -0.0192 0.8060 -0.5916 +vn 0.0000 0.8038 -0.5949 +vn -0.0005 0.8039 -0.5947 +vn 0.0003 0.8032 -0.5957 +vn 0.9962 0.0680 -0.0546 +vn 0.9997 -0.0154 -0.0207 +vn -0.0033 -0.8058 0.5922 +vn 0.0015 -0.8032 0.5956 +vn 0.0064 -0.7982 0.6024 +vn -0.0027 -0.8060 0.5919 +vn 0.0081 -0.7977 0.6031 +vn -0.0514 -0.8341 0.5493 +vn 0.0282 -0.7824 0.6222 +vn -0.0014 -0.8037 0.5950 +vn -0.0095 -0.8023 0.5969 +vn 0.0091 -0.8047 0.5936 +vn -0.8518 -0.3271 -0.4092 +vn -0.0124 -0.7500 0.6613 +vn -0.0052 0.8155 -0.5787 +vn -0.4520 0.5336 0.7148 +vn -0.8203 0.3567 0.4472 +vn 0.0718 0.5960 0.7998 +vn 0.9985 0.0329 0.0441 +vn 0.0000 -0.8043 0.5942 +vn 0.0000 0.0000 -1.0000 +vn 0.7865 0.4323 -0.4411 +vn 0.0000 0.5815 0.8136 +vn -0.0000 0.8027 -0.5964 +vn -0.0014 0.8104 -0.5859 +vn 0.4958 0.5193 0.6961 +vn 0.9868 0.0958 0.1309 +vn 0.8558 -0.3091 -0.4148 +vn 0.0000 -0.7942 0.6077 +vn -0.0000 -0.8024 0.5968 +vn -0.0165 -0.8056 0.5922 +vn -0.4409 -0.5131 -0.7364 +vn 0.8517 -0.3092 -0.4230 +vn 0.6620 -0.4423 -0.6051 +vn -0.9600 0.1551 0.2329 +vn 0.0017 -0.6231 -0.7821 +vn 0.0014 0.7754 -0.6314 +vn 0.3623 -0.5508 -0.7519 +vn 0.6634 -0.4422 -0.6036 +vn -0.0007 0.8053 -0.5929 +vn 0.3971 -0.5167 -0.7585 +vn -0.9136 -0.2431 -0.3259 +vn -1.0000 0.0000 0.0000 +vn 0.0001 0.8039 -0.5948 +vn -0.7069 0.4834 0.5164 +vn 0.0000 -0.7942 0.6076 +vn 0.9630 0.1612 0.2161 +vn 0.8858 -0.2772 -0.3723 +vn -0.0002 0.8025 -0.5966 +vn 0.0002 0.8033 -0.5956 +vn 0.0008 -0.8046 0.5938 +vn 0.0000 0.5983 0.8013 +vn -0.0009 0.8114 -0.5845 +vn -0.0862 0.6677 0.7394 +vn -0.0008 0.5817 0.8134 +vn 0.0004 -0.8043 0.5942 +vn 0.7742 -0.3835 -0.5034 +vn 0.5812 -0.4738 -0.6616 +vn 0.0034 -0.8033 0.5955 +vn 0.0123 -0.8027 0.5963 +vn 0.0734 -0.5894 -0.8045 +vn -0.0273 -0.6117 -0.7906 +vn -0.5564 -0.4774 -0.6801 +vn -0.4955 -0.5194 -0.6962 +vn -0.0012 0.8022 -0.5971 +vn -0.0074 0.8188 -0.5740 +vn -0.9130 -0.2436 -0.3272 +vn -0.0014 0.8053 -0.5928 +vn 0.0041 0.7951 -0.6064 +vn -0.5799 0.5071 0.6377 +vn 0.0009 0.8009 -0.5987 +vn 0.7419 0.3802 0.5522 +vn 0.6926 0.3903 0.6066 +vn 0.0002 0.8058 -0.5922 +vn -0.0000 0.8044 -0.5940 +vn -0.0001 0.8194 -0.5733 +vn 0.0368 0.8496 -0.5261 +vn 0.0059 -0.8055 0.5926 +vn -0.0048 0.7871 -0.6168 +vn 0.0000 0.8046 -0.5938 +vn 0.0002 0.8057 -0.5923 +vn -0.8054 -0.3504 -0.4782 +vn -0.3696 0.5975 0.7116 +vn 0.0029 0.8012 -0.5984 +vn 0.3443 0.5106 0.7879 +vn 0.3723 0.5223 0.7672 +vn -0.4855 0.4931 0.7219 +vn 0.0617 -0.7814 0.6210 +vn 0.0016 0.6231 0.7821 +vn -0.0200 -0.8120 0.5833 +vn -0.2646 -0.8517 0.4523 +vn 0.2818 -0.5831 -0.7619 +vn -0.5651 0.4640 0.6822 +vn 0.0000 -0.8024 0.5967 +vn 0.0000 -0.6320 -0.7750 +vn -0.0001 0.8032 -0.5957 +vn -0.0002 -0.6233 -0.7819 +vn 0.0000 -0.6255 -0.7803 +vn -0.0002 -0.6257 -0.7801 +vn 0.0000 0.7349 0.6782 +vn -0.0002 0.8032 -0.5957 +vn 1.0000 -0.0003 0.0000 +vn 1.0000 -0.0001 0.0000 +vn 0.4765 -0.5039 -0.7205 +vn 0.0138 0.6945 -0.7193 +vn 0.8108 -0.3806 -0.4447 +vn -0.0012 0.8131 -0.5822 +vn 0.0505 -0.7943 0.6054 +vn -0.9996 0.0230 -0.0176 +vn 0.9939 -0.0950 -0.0566 +vn 0.9052 -0.2442 -0.3479 +vn 0.5058 -0.5151 -0.6920 +vn -0.0334 -0.8085 0.5876 +vn -0.1404 -0.7504 0.6459 +vn 0.9631 0.1607 0.2158 +vn -1.0000 0.0001 0.0000 +vn -0.0216 -0.8040 0.5942 +vn 0.0595 -0.8016 0.5948 +vn -0.0601 -0.8062 0.5886 +vn -0.0053 -0.8041 0.5945 +vn -0.0165 -0.8052 0.5927 +vn 0.0005 -0.8028 0.5962 +vn 0.0012 -0.8027 0.5964 +vn 0.0025 -0.8037 0.5950 +vn 0.0288 -0.8205 0.5709 +vn -0.0201 -0.7891 0.6139 +vn -0.3515 -0.5302 -0.7715 +vn -0.2984 -0.5700 -0.7655 +vn -0.5657 -0.4925 -0.6614 +vn -0.6660 -0.4865 -0.5655 +vn -0.7845 -0.3597 -0.5051 +vn -0.0163 0.7816 -0.6236 +vn 0.0040 0.7997 -0.6003 +vn -0.1948 0.9169 -0.3484 +vn 0.0011 0.8016 -0.5979 +vn 0.0307 0.6880 -0.7251 +vn -0.0050 0.8152 -0.5792 +vn -0.9620 0.1205 0.2450 +vn 0.8703 0.2908 0.3976 +vn 0.0031 0.7962 -0.6050 +vn 0.0003 0.8034 -0.5954 +vn -0.0001 0.8199 -0.5726 +vn 0.8867 0.2883 0.3616 +vn 0.7084 0.4927 0.5054 +vn -0.0008 0.5819 0.8133 +vn -0.0004 0.5725 0.8199 +vn -0.0004 0.5723 0.8200 +vn 0.0134 0.6979 -0.7161 +vn 0.0001 -0.8056 0.5925 +vn -0.7073 0.4351 0.5571 +vn -0.8963 -0.2985 -0.3281 +vn -0.0002 0.8035 -0.5952 +vn -0.0002 0.7619 -0.6477 +vn 0.0136 -0.7944 0.6072 +vn 0.0097 -0.7969 0.6040 +vn 0.0016 -0.8024 0.5968 +vn -0.0855 0.7101 0.6989 +vn -0.3348 0.5983 0.7280 +vn 0.1337 -0.9136 0.3840 +vn 0.0051 -0.8020 0.5972 +vn -0.0338 -0.8193 0.5724 +vn 0.1480 -0.7284 0.6690 +vn 0.1206 -0.5934 -0.7958 +vn -0.3639 -0.5568 -0.7467 +vn -0.0119 0.7981 -0.6024 +vn 0.0003 0.8035 -0.5954 +vn -0.0005 0.8028 -0.5962 +vn 0.0028 0.8040 -0.5947 +vn 0.0139 0.8073 -0.5900 +vn 0.0002 0.8033 -0.5955 +vn -0.0149 0.7715 -0.6361 +vn -0.0009 0.7999 -0.6002 +vn -0.8786 0.3014 0.3705 +vn -0.8961 0.2692 0.3528 +vn -0.9868 0.0984 0.1289 +vn -0.9963 0.0688 -0.0509 +vn 0.0013 -0.8040 0.5946 +vn -0.0350 -0.7850 0.6185 +vn 0.0113 -0.8068 0.5907 +vn -0.9596 -0.1662 -0.2269 +vn -0.9581 -0.1720 -0.2291 +vn 0.0061 -0.8056 0.5925 +vn -0.9998 0.0128 0.0171 +vn 0.0496 -0.7998 0.5982 +vn -0.7138 0.3950 0.5783 +vn 0.0008 0.8046 -0.5938 +vn 0.0000 0.8060 -0.5919 +usemtl Material.001 +s off +f 1/1/1 2/2/1 3/3/1 +f 4/4/2 3/3/2 2/2/2 +f 3/3/3 5/5/3 1/1/3 +f 3/3/4 6/6/4 5/5/4 +f 7/7/5 8/8/5 9/9/5 +f 9/9/6 10/10/6 7/7/6 +f 1/1/7 11/11/7 12/12/7 +f 2/2/8 1/1/8 12/12/8 +f 13/13/9 2/2/9 12/12/9 +f 14/14/10 13/13/10 12/12/10 +f 15/15/11 13/13/11 14/14/11 +f 15/15/12 14/14/12 16/16/12 +f 15/15/13 16/16/13 17/17/13 +f 18/18/14 15/15/14 17/17/14 +f 18/18/15 17/17/15 19/19/15 +f 20/20/16 18/18/16 19/19/16 +f 19/19/17 21/21/17 20/20/17 +f 21/21/18 22/22/18 20/20/18 +f 23/23/19 20/20/19 22/22/19 +f 24/24/20 23/23/20 22/22/20 +f 25/25/21 24/24/21 22/22/21 +f 25/25/22 22/22/22 26/26/22 +f 26/26/23 27/27/23 25/25/23 +f 28/28/24 25/25/24 27/27/24 +f 27/27/25 11/11/25 28/28/25 +f 28/28/26 11/11/26 5/5/26 +f 28/28/3 5/5/3 6/6/3 +f 29/29/27 30/30/27 31/31/27 +f 5/5/28 11/11/28 1/1/28 +f 32/32/29 33/33/29 34/34/29 +f 8/8/30 35/35/30 36/36/30 +f 35/35/31 37/37/31 38/38/31 +f 12/12/32 11/11/32 14/14/32 +f 39/39/33 2/2/33 13/13/33 +f 6/40/34 40/41/34 41/42/34 +f 28/43/35 41/42/35 42/44/35 +f 15/15/36 43/45/36 13/13/36 +f 11/11/37 16/16/37 14/14/37 +f 44/46/38 17/17/38 16/16/38 +f 18/18/39 45/47/39 15/15/39 +f 46/48/40 10/10/40 9/9/40 +f 47/49/41 19/19/41 17/17/41 +f 20/20/42 23/23/42 18/18/42 +f 28/28/43 48/50/43 25/25/43 +f 49/51/44 21/21/44 19/19/44 +f 21/21/45 50/52/45 22/22/45 +f 29/29/46 31/31/46 51/53/46 +f 23/23/47 45/47/47 18/18/47 +f 23/23/48 24/24/48 45/47/48 +f 37/37/49 32/32/49 38/38/49 +f 52/54/50 25/25/50 15/15/50 +f 52/54/51 15/15/51 53/55/51 +f 24/24/52 52/54/52 53/55/52 +f 24/24/53 53/55/53 45/47/53 +f 45/47/54 53/55/54 15/15/54 +f 28/28/43 42/56/43 48/50/43 +f 25/25/55 52/54/55 24/24/55 +f 54/57/56 26/26/56 22/22/56 +f 55/58/57 27/27/57 26/26/57 +f 34/34/58 33/33/58 56/59/58 +f 11/11/59 27/27/59 57/60/59 +f 58/61/60 48/50/60 42/56/60 +f 46/48/61 59/62/61 10/10/61 +f 60/63/62 59/62/62 61/64/62 +f 62/65/63 63/66/63 15/15/63 +f 63/66/64 43/45/64 15/15/64 +f 64/67/65 65/68/65 60/63/65 +f 8/8/66 36/36/66 9/9/66 +f 63/66/67 66/69/67 67/70/67 +f 67/70/68 66/69/68 56/59/68 +f 68/71/69 69/72/69 33/33/69 +f 70/73/70 71/74/70 72/75/70 +f 73/76/71 43/45/71 67/70/71 +f 73/76/72 67/70/72 74/77/72 +f 21/21/73 73/76/73 74/77/73 +f 21/21/74 74/77/74 50/52/74 +f 74/77/75 75/78/75 50/52/75 +f 50/52/76 75/78/76 76/79/76 +f 76/79/77 54/57/77 50/52/77 +f 54/57/78 22/22/78 50/52/78 +f 77/80/79 54/57/79 76/79/79 +f 77/80/80 55/58/80 54/57/80 +f 55/58/81 26/26/81 54/57/81 +f 57/60/82 55/58/82 77/80/82 +f 57/60/83 77/80/83 16/16/83 +f 11/11/84 57/60/84 16/16/84 +f 44/46/85 16/16/85 77/80/85 +f 78/81/86 44/46/86 77/80/86 +f 79/82/87 78/81/87 77/80/87 +f 80/83/88 79/82/88 77/80/88 +f 80/83/89 77/80/89 75/78/89 +f 81/84/90 82/85/90 68/71/90 +f 83/86/91 84/87/91 85/88/91 +f 41/42/35 28/43/35 6/40/35 +f 86/89/92 65/68/92 64/67/92 +f 67/70/93 33/33/93 75/78/93 +f 80/83/94 75/78/94 33/33/94 +f 80/83/95 33/33/95 79/82/95 +f 87/90/96 86/89/96 88/91/96 +f 82/85/97 89/92/97 68/71/97 +f 87/90/98 90/93/98 36/36/98 +f 91/94/99 79/82/99 92/95/99 +f 49/51/100 91/94/100 92/95/100 +f 64/67/101 89/92/101 82/85/101 +f 71/74/102 30/30/102 72/75/102 +f 49/51/103 92/95/103 33/33/103 +f 64/67/104 60/63/104 93/96/104 +f 30/30/105 71/74/105 31/31/105 +f 93/96/106 94/97/106 95/98/106 +f 35/35/107 38/38/107 36/36/107 +f 49/51/108 70/73/108 21/21/108 +f 25/25/109 48/50/109 15/15/109 +f 56/59/110 84/87/110 34/34/110 +f 96/99/111 58/61/111 84/87/111 +f 96/99/112 48/50/112 58/61/112 +f 96/99/113 15/15/113 48/50/113 +f 70/73/114 97/100/114 21/21/114 +f 62/65/115 15/15/115 96/99/115 +f 97/100/3 4/4/3 21/21/3 +f 97/100/116 3/3/116 4/4/116 +f 97/100/117 6/6/117 3/3/117 +f 93/96/118 60/63/118 94/97/118 +f 40/41/34 6/40/34 97/101/34 +f 63/66/119 62/65/119 66/69/119 +f 60/63/120 61/64/120 94/97/120 +f 63/66/121 67/70/121 43/45/121 +f 96/99/110 84/87/110 62/65/110 +f 97/100/114 70/73/114 40/102/114 +f 37/37/122 72/75/122 30/30/122 +f 37/37/123 30/30/123 32/32/123 +f 39/39/124 13/13/124 43/45/124 +f 73/76/125 39/39/125 43/45/125 +f 74/77/126 67/70/126 75/78/126 +f 2/2/127 39/39/127 4/4/127 +f 39/39/128 73/76/128 4/4/128 +f 40/102/57 70/73/57 72/75/57 +f 61/64/129 59/62/129 46/48/129 +f 40/102/130 72/75/130 41/103/130 +f 21/21/131 4/4/131 73/76/131 +f 42/56/57 41/103/57 72/75/57 +f 72/75/132 37/37/132 42/56/132 +f 37/37/133 35/35/133 42/56/133 +f 35/35/134 8/8/134 42/56/134 +f 8/8/135 7/7/135 42/56/135 +f 7/7/136 10/10/136 42/56/136 +f 58/61/137 42/56/137 10/10/137 +f 58/61/138 10/10/138 59/62/138 +f 59/62/139 60/63/139 58/61/139 +f 58/61/140 60/63/140 65/68/140 +f 84/87/141 58/61/141 65/68/141 +f 85/88/142 84/87/142 65/68/142 +f 65/68/143 83/86/143 85/88/143 +f 65/68/144 86/89/144 83/86/144 +f 83/86/145 86/89/145 87/90/145 +f 83/86/146 87/90/146 84/87/146 +f 87/90/147 36/36/147 84/87/147 +f 36/36/148 38/38/148 84/87/148 +f 34/34/149 84/87/149 38/38/149 +f 75/78/150 77/80/150 76/79/150 +f 34/34/151 38/38/151 32/32/151 +f 27/27/152 55/58/152 57/60/152 +f 17/17/153 44/46/153 47/49/153 +f 32/32/154 29/29/154 33/33/154 +f 29/29/155 81/84/155 33/33/155 +f 68/71/156 33/33/156 81/84/156 +f 44/46/157 78/81/157 47/49/157 +f 91/94/158 78/81/158 79/82/158 +f 69/72/159 68/71/159 71/74/159 +f 69/72/160 71/74/160 49/51/160 +f 69/72/161 49/51/161 33/33/161 +f 62/65/162 84/87/162 66/69/162 +f 49/51/163 71/74/163 70/73/163 +f 82/85/164 98/104/164 64/67/164 +f 32/32/165 30/30/165 29/29/165 +f 67/70/166 56/59/166 33/33/166 +f 92/95/167 79/82/167 33/33/167 +f 47/49/168 49/51/168 19/19/168 +f 47/49/169 78/81/169 49/51/169 +f 91/94/170 49/51/170 78/81/170 +f 56/59/171 66/69/171 84/87/171 +f 68/71/172 89/92/172 71/74/172 +f 89/92/173 64/67/173 71/74/173 +f 31/31/174 71/74/174 64/67/174 +f 51/53/175 31/31/175 64/67/175 +f 51/53/176 64/67/176 93/96/176 +f 51/53/177 93/96/177 95/98/177 +f 95/98/178 29/29/178 51/53/178 +f 29/29/179 95/98/179 82/85/179 +f 81/84/180 29/29/180 82/85/180 +f 95/98/181 94/97/181 82/85/181 +f 94/97/182 61/64/182 82/85/182 +f 61/64/183 46/48/183 82/85/183 +f 98/104/184 82/85/184 46/48/184 +f 46/48/185 9/9/185 98/104/185 +f 98/104/186 9/9/186 99/105/186 +f 100/106/187 98/104/187 99/105/187 +f 101/107/188 100/106/188 99/105/188 +f 102/108/189 101/107/189 99/105/189 +f 102/108/190 99/105/190 103/109/190 +f 103/109/191 64/67/191 102/108/191 +f 100/106/192 102/108/192 64/67/192 +f 88/91/193 64/67/193 103/109/193 +f 88/91/194 103/109/194 87/90/194 +f 103/109/195 90/93/195 87/90/195 +f 86/89/196 64/67/196 88/91/196 +f 99/105/197 90/93/197 103/109/197 +f 101/107/198 102/108/198 100/106/198 +f 64/67/199 98/104/199 100/106/199 +f 99/105/200 9/9/200 90/93/200 +f 9/9/201 36/36/201 90/93/201 +o Object.1 +v 48.512997 7.723976 -16.801991 +v 48.512997 7.467979 -16.751991 +v 47.499004 8.637976 -16.701988 +v 48.868999 8.637976 -16.701988 +v 110.033005 -93.979813 -6.437996 +v 110.033005 -9.447980 -0.342022 +v 110.033005 -93.979813 -5.982002 +v 105.612999 -113.485764 -23.353962 +v 105.967003 -113.533768 -23.049961 +v 105.561005 -115.057770 -23.049961 +v 45.061001 8.533972 -16.801991 +v 45.061001 6.505978 -16.801991 +v 48.512997 6.505978 -16.801991 +v 44.956997 6.505978 -18.681988 +v 44.956997 6.505978 -18.581985 +v 44.956997 6.453981 -18.681988 +v 32.715008 -2.589997 -18.681988 +v 26.314997 -1.369998 -18.681988 +v 15.035001 -0.048010 -18.681988 +v 5.967000 6.505978 -18.681988 +v -33.022999 6.505978 -18.681988 +v 0.049000 6.505978 -23.507973 +v 110.033005 -9.447981 -6.338013 +v 47.295010 7.419975 -16.701988 +v -0.662998 8.533972 -23.609970 +v 0.050999 8.533972 -23.505970 +v 0.760998 6.505978 -23.609970 +v 0.760998 8.533972 -23.609970 +v 101.803009 -115.923752 -16.039978 +v 101.751007 -115.973755 -16.343979 +v 102.413010 -116.633759 -16.039978 +v -105.715004 -113.129761 -16.701973 +v -107.238998 -114.705765 -16.701973 +v -105.921005 -114.295761 -16.701973 +v 1.879002 8.533970 -24.525969 +v 1.879002 6.505976 -24.525969 +v 47.243008 6.505978 -20.305979 +v 47.243008 6.505978 -22.897976 +v 47.243008 8.533972 -22.897976 +v 52.833000 6.505978 -22.897976 +v 88.545013 6.505976 -34.479950 +v 61.771004 6.505978 -18.681988 +v 55.118999 6.505978 -18.681988 +v 55.118999 6.505978 -18.581985 +v 55.118999 6.453981 -16.701988 +v 52.527004 6.453981 -16.701988 +v 44.603008 -10.871976 -16.701984 +v 55.271004 0.609993 -16.701984 +v 60.605007 29.769928 -16.701988 +v 55.118999 8.637976 -16.701988 +v 54.357006 24.029942 -16.701988 +v 52.271008 9.143970 -16.701988 +v -105.715004 -114.805756 -16.701973 +v 52.575005 8.637976 -16.701988 +v 51.204998 8.637976 -18.681988 +v 51.053005 8.637976 -16.751991 +v 2.895001 94.741791 -15.024002 +v 3.099003 94.995789 -14.568005 +v 2.489003 96.571793 -14.872009 +v 101.651016 -115.771759 -16.701973 +v 101.954994 -115.871765 -16.495975 +v 101.920998 -115.773758 -16.495975 +v 50.290997 9.095974 -18.681988 +v 51.357002 8.229971 -20.305979 +v 50.443005 8.991972 -20.305979 +v 51.561001 8.533972 -20.305979 +v 103.327011 -114.857758 -16.701973 +v 102.157013 -115.619751 -16.701973 +v 102.461014 -116.429749 -16.495975 +v 51.508999 7.619982 -20.305979 +v 51.409008 8.333975 -16.701988 +v 51.561001 7.619982 -16.751991 +v 51.561001 8.533972 -16.801991 +v -19.559002 -109.523773 -18.681974 +v -18.035000 -109.929779 -18.681974 +v -18.797001 -109.675766 -16.701973 +v 55.014996 6.505978 -16.801991 +v 48.868999 8.637976 -18.681988 +v 51.561001 6.505978 -16.801991 +v 51.561001 6.505978 -20.305979 +v 55.014996 8.533972 -16.801991 +v 55.118999 8.533972 -18.681988 +v 52.833000 8.533972 -20.305979 +v 52.833000 8.533972 -22.897976 +v 64.005005 8.533972 -18.581985 +v 85.749008 8.533972 -20.815981 +v 101.917000 -115.727768 -16.499973 +v -8.382998 -90.827805 -16.701977 +v -7.872997 -89.659805 -16.701977 +v -8.178996 -90.575806 -18.681976 +v 48.512997 7.671974 -20.305979 +v 89.864998 -109.571777 -16.701973 +v 85.749008 8.533970 -26.401966 +v 0.760998 8.533970 -27.573963 +v 48.512997 8.533972 -16.801991 +v 88.951004 8.533970 -28.687962 +v 105.003006 -119.633743 -21.677961 +v 105.612999 -115.009766 -21.677963 +v 106.019005 -114.295761 -21.677963 +v 101.195007 -113.839767 -16.495975 +v 101.090996 -113.991760 -16.295975 +v 101.243011 -112.977768 -16.395973 +v 106.375008 -119.377747 -21.677961 +v -9.197001 -91.387802 -18.681976 +v -76.303001 -91.437805 -18.681976 +v 101.599014 -112.571762 -16.599976 +v 48.512997 7.419975 -20.305979 +v 10.057004 -117.497757 -18.681973 +v -8.634997 -91.031815 -18.681976 +v 44.956997 6.453981 -16.701988 +v -2.744998 -115.263748 -18.681974 +v 2.842999 -115.263748 -18.681974 +v -2.744998 -115.263748 -16.701973 +v -51.462997 6.505978 -20.305979 +v -50.291004 6.047977 -20.305979 +v -51.105000 6.505978 -20.305979 +v 48.868999 6.453981 -18.681988 +v 2.536999 0.509995 -16.701984 +v 88.545013 8.533970 -34.479950 +v -88.291000 6.505976 -34.531944 +v -88.138992 8.533970 -34.583946 +v -88.443001 8.533970 -34.479950 +v -85.647003 8.533970 -26.401966 +v -88.901001 8.533970 -33.921951 +v -88.953003 8.533970 -28.587959 +v -88.242996 8.533970 -26.401966 +v -85.647003 6.505976 -26.401966 +v -85.647003 6.505978 -20.763981 +v -85.647003 8.533972 -20.763981 +v -63.959003 8.533972 -18.581985 +v -91.747002 8.533972 -18.581985 +v -61.721004 6.505978 -18.681988 +v -95.301003 36.423923 -16.701992 +v -89.053001 30.887932 -18.581985 +v -56.083004 25.603939 -18.681992 +v -55.069004 8.533972 -18.681988 +v -52.783001 8.533972 -20.305979 +v -52.783001 8.533972 -22.897976 +v -47.143002 8.533972 -22.897976 +v -49.632996 5.995983 -16.701988 +v 103.327011 -111.401764 -12.077988 +v 102.767014 -111.505768 -11.823986 +v 101.954994 -112.267761 -11.723988 +v -1.776996 8.533970 -24.525969 +v -2.082996 8.533970 -25.591970 +v -2.744998 -117.853760 -16.701973 +v -2.744998 -117.853760 -18.681973 +v 2.536999 0.509995 -18.681988 +v 101.295013 -114.957764 -16.395973 +v 101.447006 -113.943756 -16.547977 +v -0.662998 8.533970 -27.573963 +v -44.856995 8.533972 -18.681988 +v -1.015003 6.505976 -27.419964 +v 0.405003 6.505976 -27.673964 +v 1.879002 6.505976 -26.657965 +v 1.622998 8.533970 -26.963964 +v 44.956997 8.533972 -18.681988 +v 47.499004 8.533972 -20.305979 +v 44.956997 8.533972 -18.581985 +v 44.956997 8.637976 -16.701988 +v 37.337002 9.501972 -16.701988 +v 38.402996 9.857975 -16.701988 +v 37.896999 9.601971 -18.681988 +v 3.861004 9.653973 -18.681990 +v 3.861004 9.653973 -16.701988 +v 102.209007 -112.215759 -12.229984 +v 107.185005 -115.619751 -14.719978 +v 104.851013 -117.343765 -15.075977 +v 106.019005 -117.091751 -15.277977 +v -2.744998 10.515970 -16.701988 +v 2.795003 10.515970 -16.701988 +v 107.237007 -116.077744 -15.125980 +v -2.491000 63.653858 -16.701992 +v -2.744998 10.515970 -18.681990 +v 104.395004 -116.839752 -16.701973 +v 103.985016 -117.143753 -16.447975 +v 105.765015 -116.839752 -16.395973 +v 101.447006 -113.433762 -12.181988 +v -3.454997 9.805973 -18.681990 +v -3.758998 9.653973 -16.701988 +v 48.717007 5.133986 -16.701988 +v 48.107006 5.589977 -16.701988 +v 47.547005 6.453981 -16.701988 +v 48.868999 6.453981 -16.701988 +v -49.683002 5.943981 -18.681988 +v -50.242996 5.943981 -18.681988 +v -51.462997 7.419975 -20.305979 +v 50.036995 5.943981 -18.681988 +v 39.064999 -4.467999 -18.681988 +v 51.204998 6.453981 -18.681988 +v 51.204998 6.401979 -16.701988 +v 104.699005 -110.995758 -16.191975 +v 103.528999 -111.249771 -16.547977 +v 105.003006 -111.047760 -16.649975 +v 52.729000 8.077980 -16.701988 +v 51.461010 6.809977 -16.701988 +v 51.612999 7.519976 -16.701988 +v 103.275009 -117.039764 -16.495975 +v 52.678997 8.333975 -14.009998 +v 102.004997 -115.415756 -16.395973 +v 52.271008 9.143970 -13.905998 +v 52.575005 6.757975 -13.753998 +v 88.951004 -63.243870 -16.701977 +v 85.241013 -63.243870 -16.701977 +v 88.951004 -63.243874 -18.681980 +v -51.105000 6.453981 -18.681988 +v -44.146999 -7.567998 -18.681986 +v 51.764996 5.437979 -13.805996 +v 51.764996 5.385984 -16.701988 +v 102.819016 -116.887741 -16.343979 +v -51.105000 6.453981 -16.701988 +v 45.008995 -8.989991 -16.701984 +v 45.008995 -9.699982 -18.681986 +v 44.603008 -10.871976 -18.681986 +v 43.788994 -11.833980 -18.681986 +v 44.247002 -11.377987 -16.701984 +v 43.230999 -12.291986 -16.701984 +v -55.069004 6.505978 -18.681988 +v 103.377014 -117.039764 -15.887978 +v 104.139008 -117.395767 -16.039978 +v 55.167000 -19.253960 -16.701984 +v 55.471004 -19.809959 -18.681986 +v 55.014996 -18.591961 -18.681986 +v 38.150997 -28.649952 -18.681984 +v 41.859005 -13.157982 -18.681986 +v 39.064999 -14.477971 -18.681986 +v 40.079006 -14.019979 -16.701984 +v 34.135006 -16.001970 -18.681986 +v 34.135006 -16.001968 -16.701984 +v 29.667002 -17.015974 -16.701984 +v 55.471004 -19.809959 -16.701984 +v 38.402996 -28.801945 -16.701984 +v -52.476997 6.453981 -16.701988 +v -55.069004 6.453981 -16.701988 +v 54.609005 -43.227905 -18.681982 +v 54.609005 -43.227905 -16.701981 +v 55.014996 -44.041916 -16.701981 +v 55.014996 -44.041916 -18.681982 +v 105.157005 -117.243744 -15.887978 +v 54.861004 -45.313919 -18.681982 +v 54.861004 -45.313919 -16.701981 +v 104.595001 -117.191742 -16.395973 +v 102.819016 -116.481766 -16.447975 +v 4.823002 -84.225815 -16.701977 +v -16.713001 -110.691757 -18.681974 +v -1.473003 -121.257751 -18.681973 +v 8.077001 -88.645828 -18.681976 +v 5.484997 -84.021820 -18.681978 +v 7.923001 -89.659805 -18.681976 +v 102.971008 -116.381760 -16.091980 +v 4.164998 -84.225815 -18.681978 +v 106.833008 -115.667755 -14.971977 +v 105.919006 -116.481766 -15.125980 +v 102.261002 -116.025757 -15.887978 +v 4.164998 -84.225815 -16.701977 +v 8.433003 -88.135803 -16.701977 +v 3.251004 -83.769821 -16.701977 +v 101.751007 -113.333755 -16.395973 +v 101.905014 -112.823761 -16.395973 +v 3.505002 -83.969818 -18.681978 +v -7.872997 -89.659805 -18.681976 +v 2.795003 -83.259827 -18.681978 +v -8.382998 -88.135803 -18.681976 +v -51.815002 5.485981 -16.701988 +v -2.744998 -83.259827 -18.681978 +v 101.651016 -114.449768 -16.039978 +v 102.461014 -111.857758 -16.143978 +v 101.447006 -113.791763 -15.989975 +v -2.896998 -83.511826 -16.701977 +v -2.590999 -82.955826 -16.701977 +v -2.491000 -82.597824 -18.681978 +v -2.491000 -30.121950 -16.701981 +v -2.491000 -30.121950 -18.681984 +v -3.454997 -28.749943 -18.681984 +v -2.949001 -29.207951 -16.701984 +v -4.115001 -28.497944 -16.701984 +v 2.589001 -30.121950 -16.701981 +v -32.665005 -16.357971 -16.701984 +v -37.237003 -28.497944 -16.701984 +v -37.237003 -28.497944 -18.681984 +v -38.101002 -28.649952 -18.681984 +v -2.438998 -19.453959 -18.681986 +v -24.485003 -17.881969 -18.681986 +v 101.142998 -114.195755 -16.091980 +v -89.053001 -60.857876 -18.581978 +v -89.053001 -49.833897 -18.681982 +v -36.729000 -15.239978 -18.681986 +v -41.757000 -13.157982 -18.681986 +v 1.423001 97.537781 -14.468010 +v 1.727002 97.385788 -14.772007 +v -42.518997 -12.747978 -16.701984 +v -36.729000 -15.239978 -16.701984 +v -24.485003 -17.881969 -16.701984 +v -2.438998 -19.453957 -16.701984 +v 3.557004 -28.749943 -16.701984 +v 3.861004 -28.597950 -18.681984 +v 2.641003 -29.767946 -18.681984 +v 2.795003 -83.259827 -16.701977 +v 101.803009 -112.267761 -16.039978 +v -51.462997 7.419975 -16.801991 +v -50.394997 4.827988 -16.701988 +v 2.995000 -29.207951 -16.701984 +v 102.209007 -111.453766 -16.295975 +v 101.905014 -111.809769 -16.447975 +v 102.461014 -111.299759 -16.547977 +v 2.080998 6.505976 -25.235970 +v 2.536999 -19.453957 -16.701984 +v -2.438998 0.509995 -16.701984 +v -2.438998 0.509995 -18.681988 +v 2.536999 -19.453959 -18.681986 +v -29.564997 -1.927996 -18.681988 +v -39.015003 -4.467999 -18.681988 +v -44.856995 6.505978 -18.681988 +v 108.761002 -86.407822 -6.692001 +v 108.609001 -86.207825 -6.338005 +v 109.319008 -87.627823 -6.338005 +v 107.947006 -85.393829 -6.338005 +v -44.856995 6.505978 -18.581985 +v -47.143002 6.505978 -22.897976 +v -47.143002 6.505978 -20.305979 +v -47.396999 8.533972 -20.305979 +v -44.856995 8.533972 -18.581985 +v -44.957001 8.533972 -16.801991 +v -44.856995 8.637976 -16.701988 +v -44.856995 6.453981 -16.701988 +v -32.665005 -2.589997 -16.701984 +v -47.449001 6.453981 -16.701988 +v -48.819004 6.453981 -18.681988 +v -48.819004 6.401979 -16.701988 +v 109.677002 -48.537907 -6.338009 +v 106.833008 -115.819763 -15.277977 +v -48.767002 6.605984 -20.305979 +v -48.463001 7.671974 -16.751991 +v -47.195004 7.419975 -16.701988 +v -47.294998 6.857981 -13.905998 +v 103.581001 -110.895767 -16.701973 +v -47.449001 8.637976 -16.701988 +v -48.819004 8.637976 -16.701988 +v -48.667004 8.281973 -16.751991 +v -48.819004 8.637976 -18.681988 +v -49.683002 9.095974 -18.681988 +v -38.356998 9.857975 -18.681990 +v -37.543003 9.553974 -18.681988 +v 0.049000 8.533972 -18.681988 +v 54.760998 24.535942 -18.681990 +v 88.951004 30.683926 -18.681992 +v 49.275002 8.943975 -18.681988 +v 48.260998 9.601971 -16.701988 +v 102.461014 -111.605774 -16.039978 +v 49.275002 10.161974 -16.701988 +v 50.594997 10.211971 -16.701988 +v 49.579006 10.109972 -13.753998 +v 48.461010 9.753969 -14.009998 +v 104.647003 -110.537766 -16.395973 +v 47.803001 9.095974 -13.905998 +v 103.427002 -110.691757 -16.343979 +v 107.543015 -112.315765 -16.495975 +v 106.933014 -111.553757 -16.649975 +v 106.781006 -111.453766 -16.295975 +v 107.847015 -112.977768 -16.495975 +v 109.015015 -111.705765 -16.701973 +v 47.446999 8.381971 -13.857998 +v 48.613003 7.519976 -13.705997 +v 49.327007 8.791973 -13.705997 +v 48.613003 7.519976 -14.971992 +v 105.919006 -110.943756 -16.243977 +v 49.327007 8.791973 -14.971992 +v 50.036995 7.519976 -15.837994 +v 50.747002 8.791973 -14.971992 +v 50.747002 8.791973 -13.705997 +v 51.461010 7.519976 -13.705997 +v 51.461010 7.519976 -14.971992 +v 50.747002 6.299984 -13.705997 +v 50.747002 6.299984 -14.971992 +v 49.327007 6.299984 -13.705997 +v 50.443005 4.827988 -13.857998 +v 105.815002 -111.351761 -16.295975 +v 107.033005 -112.215759 -16.243977 +v 50.747002 4.877981 -16.701988 +v 49.680996 4.775984 -16.701988 +v 44.603008 -8.075992 -16.701984 +v 43.230999 -6.651999 -16.701984 +v 43.230999 -6.651999 -18.681986 +v 55.471004 0.865990 -18.681988 +v 55.167000 0.305993 -18.681988 +v 106.881004 -112.267761 -16.649975 +v 44.247002 -7.567998 -18.681986 +v 44.907009 -8.785982 -18.681986 +v 107.795013 -114.553757 -16.343979 +v -50.191006 4.775984 -14.009998 +v -49.177006 4.877981 -16.701988 +v 107.390999 -113.739761 -16.701973 +v -55.069004 0.305993 -16.701984 +v -43.181004 -6.651999 -16.701984 +v -39.015003 -4.467999 -16.701984 +v 108.685013 -47.165901 -6.338009 +v 105.867004 -84.225815 -6.338005 +v 106.375008 -84.377823 -6.692001 +v -44.757000 -8.533983 -16.701984 +v 55.727001 1.119994 -16.701984 +v 88.951004 30.683929 -18.581985 +v 88.951004 8.637974 -24.725969 +v 88.951004 9.043972 -24.115971 +v 88.951004 8.943975 -22.847975 +v 88.951004 8.637976 -18.581985 +v 106.985016 -116.025757 -16.343979 +v 107.137009 -115.211761 -16.701973 +v 88.951004 8.637976 -22.439976 +v 91.946999 8.637976 -22.439976 +v 91.946999 8.637976 -18.581985 +v 91.946999 33.375923 -18.581989 +v 91.946999 9.095974 -23.305973 +v 91.946999 9.043972 -24.115971 +v 91.946999 8.637974 -24.725969 +v 91.946999 8.637974 -28.687962 +v 89.051010 8.533970 -28.687962 +v 85.749008 6.505976 -26.401966 +v 52.833000 6.505978 -20.305979 +v 101.090996 -113.533768 -15.581978 +v 101.499001 -114.501755 -15.277977 +v 101.347008 -113.229767 -15.381977 +v 88.951004 6.505976 -28.687962 +v 88.951004 6.453979 -24.725969 +v 91.946999 6.453979 -28.687962 +v 91.946999 6.453979 -24.725969 +v 91.946999 5.995981 -24.115971 +v 88.951004 6.095980 -24.319971 +v 88.951004 -14.119972 -29.553957 +v -51.462997 6.505978 -16.801991 +v 88.951004 6.095982 -22.847975 +v 88.951004 6.453981 -22.439976 +v 88.951004 -12.953974 -28.891958 +v 88.951004 6.453981 -18.581985 +v 105.157005 -116.839752 -15.023979 +v 88.951004 -12.495982 -27.573961 +v 103.985016 -115.363770 -16.701973 +v 106.170998 -116.329758 -16.547977 +v 88.951004 -12.595988 -26.911963 +v 88.951004 -13.461984 -25.843966 +v 88.951004 -14.477972 -25.591969 +v 88.951004 -49.627899 -18.581978 +v -89.509003 -109.471756 -16.701973 +v -89.053001 -109.471756 -18.681974 +v 88.951004 -49.627903 -18.681982 +v 95.756996 -55.877888 -16.701981 +v 91.946999 -52.323898 -18.681982 +v 95.909012 -56.233894 -18.681980 +v 103.427002 -115.109756 -6.691998 +v -105.969002 -114.195755 -6.338001 +v -105.868996 -114.449768 -6.338001 +v 96.013016 -63.243870 -16.701977 +v 92.151001 -60.857876 -16.701981 +v 92.151001 -63.243870 -16.701977 +v 96.013016 -63.243874 -18.681980 +v 92.151001 -63.243874 -18.681980 +v 91.946999 -60.857876 -18.629978 +v 104.241013 -115.467758 -6.338001 +v 2.743001 96.213791 -14.516006 +v 102.413010 -108.657776 -21.677963 +v 102.157013 -108.457779 -21.373964 +v 104.343002 -108.253784 -21.677963 +v 109.471008 -114.753754 -16.701973 +v 109.471008 -113.181763 -18.681974 +v 109.471008 -113.181763 -16.701973 +v -105.921005 -114.247757 -3.442009 +v 60.909004 -48.865894 -16.701981 +v 88.951004 -60.857876 -16.701981 +v 88.951004 -61.209877 -14.923985 +v 91.946999 -61.009880 -15.229984 +v -105.969002 -114.247757 -6.338001 +v 91.946999 -61.467873 -14.719982 +v 91.946999 -64.567871 -16.801979 +v 91.946999 -64.463867 -18.123974 +v 88.951004 -64.567871 -16.801979 +v 88.951004 -64.361862 -17.563980 +v 110.081009 -112.723755 -21.677963 +v 88.951004 -64.919861 -18.833979 +v 88.951004 -65.429871 -19.087975 +v 88.951004 -85.493820 -25.843956 +v 91.946999 -85.139816 -25.691957 +v 103.937004 -116.991760 -15.023979 +v 102.615005 -116.125763 -15.277977 +v 102.004997 -115.619751 -15.229977 +v 102.667007 -116.481766 -15.125980 +v -44.856995 -8.785982 -18.681986 +v -44.957001 -9.699982 -16.701984 +v -44.856995 -10.209991 -18.681986 +v 91.946999 -86.003815 -26.301954 +v 88.951004 -86.359818 -26.911953 +v 88.951004 -115.161758 -28.791948 +v 88.951004 -68.729866 -18.681980 +v 88.951004 -109.471756 -18.681974 +v 88.951004 -117.753769 -28.791946 +v 88.951004 -119.481750 -20.561962 +v 88.951004 -118.463745 -18.833971 +v 88.951004 -119.225754 -19.595966 +v 106.323013 -116.939743 -16.701973 +v 107.795013 -115.057770 -16.701973 +v 107.543015 -115.567749 -16.447975 +v 103.023010 -114.143768 -16.701973 +v 103.071007 -114.295761 -6.338001 +v 91.946999 -110.943756 -18.681974 +v 91.946999 -118.157745 -18.733969 +v 91.946999 -119.225754 -19.595966 +v 103.123016 -114.501755 -3.442009 +v 91.946999 -119.481750 -20.561962 +v 91.946999 -119.481750 -26.605953 +v 92.151001 -119.481750 -26.605953 +v 92.151001 -121.463745 -26.605953 +v 91.946999 -120.853745 -26.605953 +v 91.946999 -121.257751 -26.911949 +v 91.946999 -121.257751 -30.111940 +v 88.951004 -121.257751 -30.111940 +v 88.951004 -119.481766 -30.111940 +v 88.951004 -117.753769 -30.111940 +v 91.946999 -117.753769 -30.111940 +v 91.946999 -117.753769 -28.791946 +v 88.951004 -119.481766 -33.107933 +v 103.023010 -114.501755 -6.338001 +v -16.713001 -110.691757 -16.701973 +v -9.959002 -117.497757 -16.701973 +v 17.525005 -119.481750 -18.681973 +v -7.977001 -119.481750 -18.681973 +v -9.959002 -117.497757 -18.681973 +v -9.854999 -118.157745 -16.701973 +v 98.195000 -119.481750 -20.257967 +v 98.755005 -119.481750 -21.171963 +v 102.971008 -113.687759 -6.338001 +v 98.755005 -119.481766 -34.225933 +v 99.008995 -121.463745 -22.187960 +v 98.755005 -121.463745 -34.225933 +v 102.919006 -114.043762 -6.691998 +v 103.833008 -116.787750 -6.691998 +v 102.461014 -115.973755 -6.795998 +v 92.251007 -119.481766 -36.511929 +v 92.151001 -121.463745 -31.025938 +v 92.151001 -121.463745 -32.397938 +v 92.303001 -121.463745 -31.687939 +v 92.251007 -125.473755 -31.991938 +v 92.051010 -125.473755 -30.821941 +v 102.565002 -125.473755 -36.663925 +v 91.897003 -125.473755 -32.803936 +v 104.241013 -115.567749 -6.691998 +v 91.389008 -125.473755 -33.211937 +v 91.135010 -121.463745 -33.311935 +v 89.917007 -125.473755 -33.311935 +v 50.965008 -125.473755 -36.639927 +v -9.244998 -119.023743 -18.681973 +v -9.854999 -118.157745 -18.681973 +v 59.587002 29.617935 -16.701988 +v 106.423004 -116.787750 -16.495975 +v -54.967003 8.533972 -16.801991 +v -105.921005 -114.501755 -6.386002 +v 49.680996 8.991972 -20.305979 +v 52.527004 8.533972 -20.305979 +v 101.699005 -115.819763 -15.277977 +v 88.899002 -125.473755 -31.077942 +v -49.125000 -125.473755 -30.415941 +v -103.834999 -125.473755 -36.563927 +v 103.785004 -84.073822 -6.338005 +v -4.979000 -119.481750 -16.701973 +v -5.080997 -119.481750 -16.701973 +v 109.471008 -108.963760 -6.691998 +v 110.033005 -108.963760 -6.338001 +v 109.471008 -108.963760 -6.338001 +v -105.883003 -114.463760 -6.338001 +v -0.052997 -125.473740 -20.509966 +v -51.462997 7.723976 -16.701988 +v -52.173004 -125.473740 -28.537947 +v -0.510997 -125.473740 -20.509966 +v -1.728999 -125.473740 -19.953968 +v -2.491000 -125.473740 -18.985968 +v -7.468997 -119.481750 -13.705982 +v -7.977001 -119.481750 -16.701973 +v -9.449000 -119.481750 -14.009983 +v -105.915001 -114.495758 -6.338001 +v 106.527000 -119.633743 -21.373962 +v 108.863007 -118.109741 -21.373962 +v 107.289001 -119.329742 -19.495968 +v 105.308998 -117.343765 -16.701973 +v 8.229001 -119.481750 -13.705982 +v -0.459003 -119.481750 -16.191975 +v 105.205002 -115.315765 -16.701973 +v -88.698997 -121.463745 -31.687939 +v -88.850990 -121.463745 -32.397938 +v -88.698997 -125.473755 -31.687939 +v -89.356995 -125.473755 -33.007935 +v -2.744998 -125.473740 -17.005970 +v -90.477005 -121.463745 -33.411934 +v -88.850990 -121.463745 -36.207928 +v 105.967003 -114.449768 -16.701973 +v -91.084991 -121.463745 -33.311935 +v -92.053001 -121.463745 -32.397938 +v -51.462997 8.533972 -16.801991 +v -88.546997 -121.463745 -36.663925 +v -92.100998 -121.463745 -36.359928 +v -92.457001 -121.463745 -36.663925 +v -95.505005 -121.463745 -36.663925 +v -103.834999 -121.463745 -36.563927 +v -105.107002 -121.463745 -36.107929 +v -105.107002 -125.473755 -36.107929 +v -106.224998 -121.463745 -35.393929 +v -106.224998 -125.473755 -35.393929 +v -114.044998 -125.473740 -27.367949 +v -114.044998 -121.463745 -27.367949 +v 105.663002 -113.029755 -16.701973 +v 108.556999 -116.887741 -16.701973 +v -114.806992 -125.473740 -25.539951 +v -114.806992 -121.463745 -25.539951 +v -114.911003 -121.463745 -11.975986 +v -114.806992 -125.473740 -11.265984 +v -114.555000 -121.463745 -10.553989 +v -98.908989 -121.463745 -22.187960 +v -98.805000 -121.463745 -33.717934 +v -98.453003 -121.463745 -34.683929 +v -97.385002 -121.463745 -35.851929 +v -97.385002 -119.481766 -35.851929 +v -95.505005 -119.481766 -36.663925 +v 104.699005 -112.467758 -16.701973 +v 105.053009 -112.571762 -5.320000 +v 105.256996 -112.671768 -6.338001 +v 104.189011 -112.519760 -6.338001 +v -92.404999 -119.481766 -36.663925 +v -98.959000 -119.481766 -32.701935 +v -92.053001 -119.481766 -36.207928 +v -98.908989 -119.481750 -22.187960 +v -92.053001 -119.481766 -33.107933 +v -98.147003 -119.481750 -20.257967 +v 105.919006 -113.181763 -6.338001 +v 105.256996 -112.671768 -3.442009 +v -92.053001 -119.481766 -30.111940 +v -97.385002 -119.481750 -19.495968 +v -96.014999 -119.481750 -18.833971 +v -92.053001 -119.481750 -20.561962 +v -89.053001 -119.481750 -20.867964 +v -16.103001 -119.481750 -18.529972 +v 88.341003 8.533972 -20.815981 +v 8.229001 -121.463745 -13.705982 +v -7.468997 -121.463745 -13.705982 +v 85.749008 6.505978 -20.815981 +v 8.891004 -119.481750 -13.857983 +v -88.850990 -119.481750 -26.605953 +v -89.053001 -119.481750 -21.323963 +v -89.053001 -119.481750 -26.605953 +v -88.850990 -121.463745 -26.605953 +v -89.053001 -120.953751 -26.605953 +v -89.053001 -121.257751 -30.111940 +v -89.053001 -117.753769 -30.111940 +v -92.053001 -121.257751 -30.111940 +v -92.053001 -117.753769 -30.111940 +v -92.053001 -117.753769 -28.791946 +v -89.053001 -117.753769 -28.791946 +v -92.053001 -115.161758 -28.791948 +v -89.053001 -115.161758 -28.791948 +v -89.053001 -86.003815 -28.891949 +v -89.053001 -86.459824 -27.573952 +v -89.053001 -86.003815 -26.301954 +v -89.053001 -85.139816 -25.691957 +v -92.053001 -86.003815 -26.301954 +v 105.983002 -113.633759 -6.338001 +v -92.053001 -111.095779 -18.581970 +v -92.053001 -86.459824 -27.573952 +v 105.663002 -112.823761 -6.691998 +v 105.409012 -112.619766 -6.338001 +v 104.699005 -112.367767 -6.691998 +v -92.053001 -86.359818 -28.283951 +v -92.053001 -118.463745 -18.833971 +v -89.815002 -109.571777 -18.581970 +v 105.461014 -114.705765 -23.353962 +v -108.000999 -110.437775 -16.701973 +v -90.375000 -109.877777 -16.701973 +v -103.481003 -110.743759 -16.649975 +v -105.158997 -110.843765 -16.701973 +v -105.359001 -110.639755 -16.447975 +v 102.461014 -115.973755 -15.533978 +v -103.786995 -110.639755 -16.243977 +v -102.614998 -111.351761 -16.191975 +v 101.853004 -115.923752 -15.733978 +v 104.851013 -112.419769 -6.338001 +v -102.263000 -111.299759 -16.599976 +v -101.195000 -112.773758 -16.547977 +v 103.937004 -112.467758 -6.338001 +v 103.427002 -112.823761 -6.691998 +v 101.954994 -110.691757 -6.691998 +v 103.733002 -103.071777 -6.691998 +v -101.700996 -112.875763 -16.295975 +v 105.509003 -102.817795 -6.641998 +v 104.189011 -102.817795 -6.338001 +v -102.462997 -111.961761 -16.599976 +v -101.500992 -113.485764 -16.295975 +v -101.752998 -112.977768 -16.649975 +v -101.852997 -115.263748 -16.447975 +v -101.653000 -115.263748 -16.295975 +v -101.091003 -114.043762 -16.343979 +v -101.397003 -115.467758 -16.495975 +v 103.681015 -100.175797 -6.589996 +v 101.547012 -114.449768 -15.837978 +v -102.311005 -116.685760 -16.701973 +v -101.042999 -113.637756 -16.701973 +v 109.015015 -111.705765 -18.681974 +v 108.051010 -110.437775 -16.701973 +v 101.651016 -113.585770 -15.429977 +v 103.785004 -99.871796 -6.691998 +v 104.395004 -90.575806 -6.692001 +v 105.765015 -90.017807 -6.692001 +v -102.462997 -116.581741 -16.395973 +v -102.768997 -116.991760 -16.649975 +v -103.786995 -117.295746 -16.495975 +v 101.699005 -112.823761 -15.939980 +v -104.901001 -117.395767 -16.701973 +v -105.359001 -117.191742 -16.495975 +v 103.327011 -87.931824 -6.338005 +v 105.919006 -89.761810 -6.338005 +v 105.157005 -90.473801 -6.338005 +v 104.241013 -87.425827 -6.338005 +v 106.118996 -88.745804 -6.338005 +v -103.481003 -116.939743 -16.395973 +v -105.816994 -116.939743 -16.495975 +v -104.952995 -116.839752 -16.547977 +v -54.967003 -18.591961 -16.701984 +v 105.003006 -87.425827 -6.338005 +v 106.071014 -88.593811 -6.692001 +v -104.497002 -115.467758 -16.701973 +v -106.834999 -115.619751 -16.701973 +v -105.462990 -115.211761 -6.338001 +v -109.678993 -121.463745 -6.743999 +v 109.777000 -121.463745 -6.743999 +v -52.731003 5.943981 -22.491976 +v -50.597000 4.723982 -22.643974 +v -52.731003 5.943981 -20.509981 +v 105.409012 -87.627823 -6.692001 +v 107.947006 -85.393829 -6.692001 +v -105.766998 -114.905762 -6.691998 +v -106.072998 -114.043762 -6.691998 +v -106.987000 -115.619751 -6.691998 +v -107.291000 -115.009766 -6.691998 +v -109.425003 -108.963760 -6.691998 +v 104.547012 -87.373825 -6.692001 +v -109.221001 -115.315765 -6.691998 +v -109.425003 -108.963760 -6.338001 +v -44.501003 -10.871976 -16.701984 +v -109.425003 -93.979813 -6.691998 +v -105.259003 -102.919785 -6.641998 +v -105.662994 -112.925766 -6.691998 +v -104.901001 -102.919785 -6.537998 +v -103.481003 -102.665771 -6.641998 +v -104.596992 -112.367767 -6.691998 +v -105.229004 -112.661758 -6.414001 +v 88.951004 8.533970 -34.021950 +v -106.072998 -113.891769 -6.338001 +v 103.681015 -87.627823 -6.692001 +v -105.969002 -113.687759 -3.442009 +v 103.123016 -88.187820 -6.692001 +v 100.481003 -88.237808 -6.692001 +v -107.748993 -114.857758 -16.701973 +v -109.221001 -115.515762 -16.701973 +v 102.004997 -85.493820 -6.692001 +v 101.142998 -86.663818 -6.338005 +v -108.511002 -116.887741 -16.701973 +v -109.221001 -115.515762 -18.681974 +v -108.511002 -116.887741 -18.681973 +v -107.392990 -118.005753 -16.701973 +v -107.392990 -118.005753 -18.681973 +v -106.020996 -118.719742 -18.681973 +v -106.020996 -118.719742 -16.701973 +v -104.444992 -118.971741 -16.701973 +v -102.210991 -118.415741 -16.701973 +v 105.308998 -110.639755 -16.547977 +v -76.303001 -91.437805 -16.701977 +v -77.675003 -90.473801 -18.681976 +v -101.500992 -118.005753 -18.681973 +v -101.500992 -113.381760 -18.681974 +v 101.243011 -114.905762 -15.685978 +v -103.125000 -111.299759 -18.681974 +v 105.357010 -84.073822 -6.692001 +v -104.444992 -110.995758 -18.681974 +v -108.000999 -110.437775 -18.681974 +v -96.014999 -76.097847 -18.681978 +v -96.014999 -76.097839 -16.701977 +v -95.962990 -68.729866 -18.681980 +v -95.962990 -68.729858 -16.701977 +v -92.053001 -68.729866 -18.681980 +v -92.053001 -85.139816 -25.691957 +v -92.053001 -67.005859 -18.833979 +v -92.053001 -66.243866 -19.191975 +v 102.109009 -84.783829 -6.692001 +v 102.109009 -84.783829 -6.338005 +v -92.053001 -63.243874 -18.681980 +v -92.053001 -52.523895 -18.681982 +v -92.053001 -14.119971 -25.639967 +v 109.422997 -117.497757 -19.495968 +v -89.053001 -49.807899 -25.641962 +v -89.053001 -14.477972 -25.591969 +v -8.024997 -88.645828 -16.701977 +v -89.053001 -71.067856 -18.581974 +v 103.985016 -84.073822 -6.692001 +v 109.575012 -111.249771 -21.677963 +v 110.185005 -93.979813 -5.982002 +v 109.729004 -116.991760 -21.373962 +v 0.127003 6.505976 -34.507950 +v -88.850990 6.505976 -34.073948 +v 103.023010 -116.685760 -15.685978 +v 102.004997 -85.597824 -6.338005 +v 16.762997 -110.691757 -16.701973 +v -9.197001 -91.387802 -16.701977 +v 18.844997 -109.675766 -16.701973 +v 100.633003 -87.779800 -6.338005 +v -105.868996 -114.501755 -6.338001 +v 89.864998 -109.571777 -18.581970 +v -91.747002 8.533970 -28.587959 +v 90.423004 -109.877777 -16.701973 +v 103.885010 -112.619766 -16.701973 +v 103.071007 -113.687759 -16.701973 +v 103.327011 -112.925766 -6.338001 +v 107.795013 -108.913773 -21.373964 +v 108.051010 -109.471756 -21.677963 +v 100.433014 70.257843 -6.338024 +v 103.785004 -9.447981 -6.338013 +v 76.401001 -91.437805 -16.701977 +v 77.063004 -91.183807 -16.701977 +v 76.707001 -91.335800 -18.681976 +v -88.242996 6.505976 -26.401966 +v 9.601003 -91.437805 -18.681976 +v 8.991002 -91.235809 -16.701977 +v 43.152992 -91.463806 -16.701977 +v -88.242996 8.533972 -20.763981 +v -91.747002 6.505978 -18.581985 +v -88.242996 6.505978 -20.763981 +v -91.747002 8.533972 -22.085978 +v -88.242996 6.505978 -22.085978 +v -91.747002 6.505978 -22.085978 +v 96.571014 -121.463745 -18.985968 +v 16.863003 -121.463745 -18.629971 +v 110.233002 -115.871765 -21.373964 +v -88.242996 8.533972 -22.085978 +v 97.027008 -119.481750 -19.239969 +v 97.485016 -121.463745 -19.495968 +v -8.940997 -119.225754 -16.701973 +v 106.271011 -121.463745 -35.393929 +v 114.095016 -121.463745 -27.419949 +v 114.095016 -125.473740 -27.419949 +v 110.336998 -115.467758 -19.495970 +v 109.523010 -116.787750 -19.191967 +v 96.060997 -119.481750 -18.833971 +v -92.053001 33.579922 -18.681992 +v -60.196999 29.669926 -18.681992 +v 0.508999 93.623795 -6.338024 +v 98.499008 -121.463745 -20.715963 +v 105.157005 -121.463745 -36.107929 +v 103.885010 -121.463745 -36.563927 +v 105.157005 -125.473755 -36.107929 +v 103.885010 -125.473755 -36.563927 +v 95.555008 -121.463745 -36.663925 +v 96.571014 -121.463745 -36.411926 +v 97.941010 -121.463745 -35.445930 +v 97.485016 -119.481766 -35.851929 +v 100.889008 68.125854 -6.338024 +v 100.989006 67.921844 -6.692020 +v 96.571014 -119.481766 -36.411926 +v 101.853004 66.905853 -6.692020 +v 101.853004 66.905853 -6.338024 +v -43.691002 -11.833980 -18.681986 +v 92.151001 -121.463745 -36.259926 +v 92.454994 -121.463745 -36.663925 +v 88.545013 -121.463745 -36.663925 +v 102.157013 65.787857 -6.692020 +v 102.308998 65.635849 -6.338024 +v 106.271011 -125.473755 -35.393929 +v -50.242996 9.095974 -18.681988 +v -52.529003 6.505978 -20.305979 +v 91.135010 -125.473755 -30.059940 +v 104.699005 68.429855 -6.692020 +v 105.765015 68.987854 -6.692020 +v 110.185005 -114.705765 -19.191969 +v 110.539009 -113.485764 -19.495970 +v -1.321002 6.505978 -23.963972 +v 110.491013 -113.281769 -21.373964 +v -88.747002 -119.481766 -36.511929 +v 88.899002 -119.481766 -36.359928 +v -1.776996 6.505976 -24.525969 +v 88.849007 -121.463745 -36.459927 +v 105.919006 69.239853 -6.338024 +v 106.118996 70.257843 -6.692020 +v 88.951004 -119.481766 -36.055931 +v 88.899002 -121.463745 -36.259926 +v 88.951004 -121.257751 -36.155930 +v 88.951004 -121.257751 -33.107933 +v 91.946999 -121.257751 -33.107933 +v 88.951004 -117.753769 -33.107933 +v 88.951004 -117.753769 -34.379932 +v 88.951004 -115.161758 -34.379936 +v 88.951004 -120.749741 -36.563927 +v 88.951004 -85.493820 -29.297949 +v 88.951004 6.505976 -33.973949 +v 109.319008 68.683853 -6.692020 +v 105.765015 71.069855 -6.692020 +v 106.118996 69.953842 -6.338024 +v 105.967003 70.715851 -6.338024 +v 105.256996 68.581848 -6.338024 +v 110.185005 -108.963760 -0.800011 +v 110.033005 -93.979813 -0.800011 +v -1.576999 6.505976 -26.963964 +v 88.951004 92.151794 -36.563953 +v 91.946999 -121.005753 -36.511925 +v 102.971008 69.649841 -6.338024 +v 109.371002 -87.931824 -6.692001 +v 91.946999 92.151794 -36.563953 +v 91.946999 -85.139832 -29.449947 +v 91.946999 -115.161758 -34.379936 +v 19.659008 -109.523773 -18.681974 +v 103.023010 70.563843 -6.692020 +v 103.071007 69.343842 -6.692020 +v 101.954994 73.305832 -6.692020 +v 103.427002 71.173843 -6.692020 +v 88.951004 -86.359818 -28.283951 +v 91.946999 -86.207825 -28.587948 +v 91.946999 -86.459824 -27.573952 +v 100.481003 70.763840 -6.692020 +v 101.142998 72.339844 -6.338024 +v 102.004997 75.031830 -6.338024 +v 102.004997 73.507843 -6.338024 +v 91.946999 -115.161758 -28.791948 +v 91.946999 -71.067856 -18.681978 +v 91.946999 -67.461868 -17.057980 +v 91.946999 -70.863846 -15.075981 +v 102.004997 75.031830 -6.692020 +v 91.946999 -66.547867 -16.091984 +v 100.633003 75.235840 -7.048019 +v 100.837006 89.965805 -6.896019 +v 91.946999 -70.305847 -14.667984 +v -55.425003 -19.809959 -18.681986 +v -55.069004 -19.253962 -18.681986 +v 88.951004 -70.967850 -15.429981 +v 90.197006 -71.005859 -16.701977 +v 100.737015 89.713806 -7.352020 +v 101.090996 90.017807 -7.148022 +v 100.685013 75.387833 -7.404018 +v 2.033002 8.533970 -26.301966 +v 96.060997 -75.843842 -16.701977 +v 92.151001 -71.067856 -16.701977 +v 96.013016 -68.729858 -16.701977 +v 92.151001 -68.729858 -16.701977 +v 96.013016 -68.729866 -18.681980 +v 92.151001 -68.729866 -18.681980 +v 92.151001 -71.067856 -18.681978 +v 88.951004 -71.067856 -18.581974 +v 90.167007 -71.007858 -16.749977 +v 88.951004 -70.967850 -16.701977 +v 96.060997 -75.843849 -18.681978 +v 101.651016 -113.129761 -18.681974 +v 102.361000 -111.909760 -18.681974 +v 101.599014 -112.671768 -19.087969 +v 102.261002 -111.657761 -19.139971 +v 100.533005 89.661804 -7.100025 +v 103.174995 -111.249771 -18.935970 +v 102.004997 90.017807 -6.338024 +v 103.275009 -110.791763 -19.191969 +v 104.951004 -110.691757 -19.139971 +v 103.833008 -111.047760 -18.681974 +v 102.004997 90.017807 -6.692020 +v 105.919006 -111.299759 -18.681974 +v 103.833008 83.921814 -6.590019 +v 103.377014 81.231827 -6.692020 +v 105.867004 -110.995758 -19.139971 +v 106.881004 -112.113770 -18.681974 +v 104.036995 81.231827 -6.338024 +v 103.833008 80.975815 -6.642021 +v 108.051010 -110.437775 -18.681974 +v 107.491013 -113.381760 -18.681974 +v 107.491013 -114.553757 -18.681974 +v -85.142998 -68.729866 -18.681980 +v 106.681015 -116.077744 -18.681974 +v 108.051010 -117.497757 -18.681973 +v 109.471008 -114.753754 -18.681974 +v 109.015015 -116.229767 -18.681974 +v 107.491013 -118.005753 -16.701973 +v 106.781006 -118.415741 -18.681973 +v 106.071014 -118.719742 -16.701973 +v 105.205002 81.431824 -6.338024 +v 104.951004 80.773819 -6.692020 +v 105.663002 81.431824 -6.692020 +v 103.327011 71.069855 -6.338024 +v 101.243011 -114.857758 -16.701973 +v 101.699005 -114.705765 -16.649975 +v 103.174995 -113.333755 -6.338001 +v 103.123016 -113.433762 -6.338001 +v 104.088997 71.577835 -6.338024 +v 105.509003 71.273834 -6.338024 +v 104.088997 71.577835 -6.692020 +v 101.447006 -111.299759 -6.691998 +v 101.499001 -114.705765 -6.691998 +v 101.395004 -115.009766 -6.743999 +v 101.295013 -116.481766 -6.691998 +v 102.361000 -116.633759 -6.895996 +v 101.347008 -115.315765 -6.895996 +v 101.195007 -113.533768 -6.844002 +v 109.471008 75.031830 -6.692020 +v 109.471008 90.017807 -6.692020 +v 110.033005 75.031830 -6.338024 +v 101.142998 -113.637756 -7.147999 +v 101.195007 -114.705765 -7.047997 +v 101.395004 -112.671768 -7.251999 +v 110.081009 90.017807 -6.386024 +v 101.347008 -113.333755 -7.299995 +v 110.185005 90.017807 -5.982025 +v 110.033005 90.017807 -5.982025 +v 101.699005 -114.449768 -7.047997 +v 102.361000 -116.481766 -7.147999 +v 110.033005 32.791924 -6.338017 +v 110.033005 75.031830 -5.982025 +v -55.069004 8.533972 -18.581985 +v 103.581001 -117.191742 -7.100002 +v 110.185005 75.031830 -0.800034 +v 110.185005 90.017807 -0.800034 +v 110.995003 73.507843 -5.880024 +v 110.795013 73.203827 -5.776024 +v 103.785004 -114.857758 -23.353962 +v 103.275009 -116.581741 -7.047997 +v 104.799004 -116.887741 -7.047997 +v 110.947006 73.611832 -0.852039 +v 110.691002 73.355835 -0.900036 +v 105.815002 -116.735748 -7.100002 +v 110.033005 90.575806 -0.800034 +v 110.033005 90.017807 -0.394035 +v 111.148994 91.795807 -5.524029 +v 110.947006 91.441803 -0.852039 +v 105.919006 -116.481766 -6.691998 +v 107.085007 -115.315765 -6.691998 +v 107.443008 -114.095764 -6.895996 +v 107.033005 -115.871765 -7.047997 +v 107.947006 -114.501755 -6.691998 +v 107.491013 -115.771759 -6.691998 +v 105.713013 -117.191742 -6.947998 +v 111.148994 91.745789 -1.206036 +v 110.795013 91.899796 -1.104034 +v 106.071014 -117.039764 -6.691998 +v 104.547012 -107.947784 -21.373964 +v 110.033005 94.537796 -0.342033 +v 105.053009 -117.343765 -6.691998 +v 102.361000 -118.415741 -6.691998 +v 108.609001 -116.735748 -6.691998 +v 103.985016 -118.871750 -6.691998 +v 107.543015 -117.905746 -6.691998 +v 105.357010 -118.871750 -6.691998 +v 110.843002 91.947800 -5.624023 +v 110.539009 91.441803 -5.982025 +v 106.629013 -118.463745 -6.338001 +v 104.901016 -118.919754 -6.338001 +v 106.527000 -118.919754 -6.338001 +v 107.947006 -118.005753 -6.338001 +v 107.289001 -118.515747 -0.342010 +v 108.556999 -117.395767 -0.342010 +v 109.471008 -115.973755 -0.342010 +v 109.981003 95.403793 -6.338024 +v 109.471008 97.027786 -6.338028 +v 109.777000 96.213791 -0.342033 +v -105.900993 -114.483765 -6.361996 +v 109.471008 -114.501755 -6.338001 +v 109.067017 -116.735748 -6.338001 +v 108.761002 -116.533768 -6.338001 +v 109.219009 -115.567749 -6.691998 +v 5.484997 94.031784 -0.342033 +v 4.571003 92.609787 -0.342033 +v 108.709015 75.031830 -0.342033 +v 103.833008 -116.735748 -15.229977 +v 107.847015 -113.077759 -6.691998 +v 107.289001 -113.229767 -6.691998 +v 3.961003 91.999802 -3.338032 +v 2.795003 94.741791 -3.338032 +v 2.080998 93.167801 -3.338032 +v 105.003006 -117.395767 -16.039978 +v 5.080998 93.269791 -3.338032 +v 1.675000 97.233780 -3.338036 +v 2.589001 96.061783 -3.338032 +v 105.157005 -102.613785 -6.338001 +v 105.561005 -100.175797 -6.641998 +v 109.471008 -93.979813 -6.691998 +v 106.071014 -89.507812 -6.692001 +v 109.471008 -93.979813 -6.338001 +v -43.181004 -6.651999 -18.681986 +v 110.033005 -108.963760 -5.982002 +v 110.995003 -110.487762 -5.880001 +v 110.691002 -110.639755 -5.880001 +v 110.033005 -109.523773 -5.982002 +v 2.743001 95.555786 -0.546036 +v 2.384999 96.419785 -0.546040 +v 109.981003 -114.347763 -6.338001 +v 110.033005 -108.963760 -0.800011 +v 110.033005 -113.485764 -0.342010 +v 110.033005 -108.963760 -0.394012 +v 109.981003 -93.979813 -0.342010 +v 109.677002 -108.963760 -0.138016 +v 108.709015 -108.963760 -0.342010 +v 2.080998 93.319794 -0.394035 +v 2.589001 94.285797 -0.444035 +v 0.760998 93.775787 -0.342033 +v 77.573013 -90.779800 -18.681976 +v -52.273003 9.043974 -16.701988 +v -52.476997 8.637976 -16.701988 +v -52.225002 9.095974 -13.957996 +v 110.081009 -115.315765 -21.677963 +v 103.377014 -117.191742 -11.519985 +v 105.105011 -117.395767 -11.265987 +v 102.717003 -116.887741 -11.367989 +v 0.965001 98.299789 -14.262009 +v -0.510997 97.943787 -14.058010 +v 0.965001 97.891785 -14.210011 +v 0.965001 92.405792 -0.596039 +v 1.117001 92.507797 -3.338032 +v 2.536999 91.085800 -3.338032 +v 2.795003 10.515970 -18.681990 +v 0.050999 92.251785 -3.338032 +v 0.861004 90.575806 -3.338032 +v 0.861004 90.575806 -0.342033 +v 2.536999 91.085800 -0.342033 +v -1.625003 92.813797 -3.338032 +v -4.520999 92.609787 -3.338032 +v 2.589001 63.653858 -16.701992 +v -2.590999 64.009857 -18.681995 +v 105.969009 28.575939 -6.338017 +v 110.185005 -111.909760 -21.373964 +v 104.547012 65.077850 -6.338024 +v 104.036995 -117.091751 -15.837978 +v 104.291008 -116.887741 -15.887978 +v -2.187000 93.675797 -0.394035 +v -2.491000 93.879791 -0.596039 +v 102.971008 65.329849 -6.338024 +v -1.321002 92.661804 -0.648033 +v 105.612999 65.177856 -6.692020 +v 103.479004 65.177856 -6.692020 +v 109.371002 68.935852 -6.338024 +v 108.915001 67.715851 -6.338024 +v 108.153015 66.601852 -6.692020 +v 108.153015 66.601852 -6.338024 +v 107.085007 65.787857 -6.692020 +v 106.833008 65.635849 -6.338024 +v -0.662998 93.775787 -0.342033 +v -2.538997 94.995789 -0.342033 +v 48.767006 5.233984 -13.753998 +v 0.050999 -119.481750 -28.231947 +v -1.424999 94.995789 -0.342033 +v -0.662998 93.775787 -1.662029 +v 47.698997 6.299984 -13.753998 +v -1.424999 94.995789 -1.662029 +v 109.981003 -111.505768 -19.495970 +v -0.711002 96.265793 -1.662029 +v 0.760998 96.265793 -0.342033 +v -0.711002 96.265793 -0.342033 +v 110.033005 74.473831 -5.982025 +v 110.033005 75.031830 -0.800034 +v 49.223003 6.147984 -16.701988 +v 110.033005 75.031830 -0.394035 +v 32.715008 -2.589997 -16.701984 +v -0.052997 97.689789 -0.394039 +v -2.491000 95.961792 -0.496037 +v 109.981003 90.017807 -0.342033 +v 109.981003 75.031830 -0.342033 +v 105.713013 -116.735748 -15.785980 +v 105.663002 -116.735748 -16.343979 +v -2.643001 95.555786 -3.338032 +v 0.912999 -119.481750 -28.077950 +v 109.422997 -110.437775 -19.495970 +v 51.561001 7.267975 -20.305979 +v -2.339000 93.675797 -3.338032 +v -5.435001 94.031784 -3.338032 +v 51.813000 9.449970 -13.753998 +v 109.118996 -110.589767 -19.191969 +v -4.520999 92.609787 -0.342033 +v -5.435001 94.031784 -0.342033 +v 107.795013 -108.913773 -19.495970 +v -109.982994 -61.467873 -0.342014 +v 16.141003 25.147945 -0.342026 +v -42.929005 14.529964 -0.342026 +v 106.681015 -108.657776 -19.191969 +v 91.946999 -117.753769 -33.107933 +v 106.071014 -117.039764 -16.039978 +v 107.491013 -115.567749 -15.785980 +v 105.967003 -116.887741 -15.785980 +v 107.137009 -116.229767 -16.039978 +v -109.982994 -113.485764 -0.342010 +v -109.931000 -93.979813 -0.342010 +v -109.525002 -108.963760 -0.138016 +v -3.200999 91.489807 -0.342033 +v -3.200999 91.489807 -3.338032 +v -1.676998 90.779800 -3.338032 +v -0.814998 90.575806 -0.342033 +v -108.610992 -108.963760 -0.342010 +v -48.263000 5.333982 -16.701988 +v 110.895004 -110.943756 -5.424000 +v 106.423004 -116.685760 -16.295975 +v 110.795013 -110.791763 -1.052010 +v -105.662994 100.281784 -0.342037 +v 91.946999 -117.753769 -34.379932 +v -105.898994 -114.479767 -6.338001 +v 105.765015 -108.099777 -21.373964 +v 105.919006 -108.457779 -21.677963 +v -105.890999 -114.499756 -6.338001 +v -105.662994 -119.225754 -0.342010 +v 104.901016 -119.429749 -6.338001 +v 104.901016 -119.429749 -0.342010 +v 104.901016 -111.147766 -12.281986 +v 104.395004 -111.095779 -12.485985 +v 106.629013 -111.605774 -12.281986 +v -89.053001 -118.157745 -18.733969 +v 107.747002 -113.229767 -15.685978 +v 107.947006 -114.501755 -15.887978 +v -105.868996 -114.449768 -5.827999 +v 105.561005 -108.047775 -19.495970 +v -106.477005 99.975784 -0.342037 +v -75.412994 56.795872 -0.342030 +v -104.800995 -119.429749 -6.338001 +v 102.109009 -118.157745 -6.338001 +v 102.971008 -118.667740 -6.338001 +v 101.954994 -117.243744 -6.338001 +v 102.004997 -117.447754 -6.691998 +v 103.733002 -117.243744 -6.691998 +v 100.889008 -115.871765 -6.338001 +v 100.481003 -114.449768 -6.691998 +v 100.533005 -114.957764 -6.338001 +v -108.610992 75.031830 -0.342033 +v 100.889008 -112.113770 -6.691998 +v 100.481003 -113.229767 -6.338001 +v 18.135006 -109.929779 -18.681974 +v 49.514996 -105.711777 -6.338001 +v -109.731003 96.213791 -0.342033 +v -109.982994 94.537796 -0.342033 +v 58.928997 -48.765903 -16.701981 +v -108.610992 90.017807 -0.342033 +v -109.931000 90.017807 -0.342033 +v 102.919006 -108.201782 -19.495970 +v -109.373001 90.017807 -0.138039 +v 59.232998 -48.665901 -18.681982 +v -51.511002 9.805973 -20.305981 +v -52.529003 8.533972 -20.305979 +v -50.445004 8.943975 -20.305979 +v 7.923001 -89.303802 -16.701977 +v -109.931000 75.031830 -0.342033 +v 102.004997 -110.487762 -6.338001 +v 107.443008 -113.637756 -15.785980 +v 106.881004 -115.619751 -15.939980 +v 102.004997 -108.963760 -6.338001 +v 102.004997 -108.963760 -6.691998 +v 100.837006 -108.913773 -6.895996 +v 101.090996 -108.963760 -7.147999 +v 100.481003 -108.505768 -7.100002 +v 100.685013 -108.609756 -7.403996 +v 100.633003 -94.537811 -7.453999 +v 100.433014 -94.637802 -7.147999 +v 100.785004 -94.079803 -6.947998 +v 102.004997 -93.979813 -6.338001 +v -55.069004 6.505978 -18.581985 +v 106.933014 -115.719742 -16.295975 +v 106.271011 -116.329758 -16.295975 +v 100.889008 -94.131805 -7.299995 +v 102.004997 -93.979813 -6.691998 +v -47.501003 8.485975 -13.753998 +v -48.514999 7.519976 -13.705997 +v 103.377014 -100.327789 -6.691998 +v 105.053009 -100.227798 -6.338001 +v -109.982994 75.031830 -0.394035 +v -109.982994 75.031830 -0.800034 +v -109.982994 74.473831 -0.800034 +v -109.982994 74.473831 -5.982025 +v 105.612999 -116.991760 -15.481979 +v -109.168999 68.429855 -6.338024 +v -109.982994 -93.979813 -6.338001 +v -109.982994 75.031830 -6.338024 +v 107.947006 -113.585770 -16.091980 +v 107.289001 -112.925766 -16.143978 +v 106.881004 -111.809769 -16.191975 +v 100.481003 -109.571777 -19.495970 +v 100.889008 -109.571777 -19.191969 +v 107.491013 -114.399765 -16.191975 +v 107.695000 -115.211761 -16.143978 +v -54.967003 6.505978 -16.801991 +v -47.957005 5.791981 -13.753998 +v 102.971008 -108.505768 -19.191969 +v -47.601002 6.095982 -14.009998 +v -4.062999 -84.225815 -18.681978 +v -108.864998 67.715851 -6.338024 +v 106.881004 -111.453766 -15.939980 +v 107.747002 -112.773758 -15.837978 +v -108.053001 66.601852 -6.338024 +v -109.168999 -87.373825 -6.338005 +v 110.795013 -92.149811 -5.776005 +v 110.591003 -92.455811 -5.982006 +v 110.843002 -92.047806 -1.308014 +v 100.481003 75.591827 -7.148022 +v -108.864998 -86.663818 -6.692001 +v -109.221001 -87.627823 -6.692001 +v -105.766998 -89.913803 -6.692001 +v -109.425003 -93.979813 -6.338001 +v 109.471008 75.031830 -6.338024 +v -49.225002 5.029982 -13.753998 +v -109.982994 -108.963760 -6.338001 +v -109.883003 -93.979813 -6.537998 +v -110.135002 -108.963760 -5.982002 +v -109.982994 -93.979813 -5.982002 +v -109.982994 -93.417801 -5.982002 +v -110.135002 -93.979813 -0.800011 +v -110.896996 -92.555801 -5.930000 +v -111.048996 -92.251801 -5.624004 +v -110.797005 -91.997803 -5.424004 +v -110.692993 -92.149811 -5.776005 +v 110.895004 73.049835 -5.424023 +v -110.797005 -92.707809 -0.800014 +v -111.048996 -92.303802 -1.104015 +v -110.797005 -92.047806 -1.308014 +v -110.541000 -92.455811 -0.852020 +v -109.982994 -93.979813 -0.800011 +v 110.947006 91.441803 -5.930019 +v -110.135002 -108.963760 -0.800011 +v -109.982994 -93.979813 -0.444012 +v 109.067017 97.789780 -0.342037 +v -49.225002 6.299984 -13.705997 +v 109.471008 75.031830 -0.138039 +v -109.425003 -113.181763 -16.701973 +v 111.047005 -92.403809 -5.828003 +v -4.473003 -28.497944 -18.681984 +v -38.557003 -29.005939 -16.701984 +v 2.795003 94.995789 -0.648033 +v -50.701000 6.299984 -13.705997 +v -49.225002 6.299984 -14.971992 +v 105.919006 -111.453766 -15.989975 +v 104.189011 -110.537766 -15.837978 +v 105.663002 -110.691757 -15.785980 +v -107.596992 -114.805756 -16.547977 +v 99.365005 -110.995758 -21.373964 +v 99.465012 -110.791763 -19.495970 +v 100.633003 -109.419785 -21.373964 +v 0.760998 93.775787 -1.662029 +v 0.050999 95.047791 -2.476032 +v 107.543015 -117.905746 -6.338001 +v 106.375008 -111.047760 -15.887978 +v 106.781006 -111.605774 -15.633980 +v 105.105011 -110.589767 -15.685978 +v 103.479004 -111.199768 -15.533978 +v 105.357010 -110.843765 -15.533978 +v 0.661000 97.943787 -14.668007 +v -48.514999 7.519976 -14.971992 +v -54.815002 -43.737915 -18.681982 +v -51.105000 8.533972 -16.801991 +v -50.597000 8.891973 -16.801991 +v -109.982994 -108.963760 -0.394012 +v -109.982994 -108.963760 -0.800011 +v -109.982994 -109.523773 -0.800011 +v 110.081009 -112.571762 -19.191969 +v -110.797005 -110.943756 -5.424000 +v -110.645004 -110.639755 -5.880001 +v -111.100998 -110.791763 -1.358009 +v -110.949005 -110.537766 -0.952011 +v -110.797005 -110.943756 -1.308010 +v -110.645004 -110.691757 -0.952011 +v 107.033005 -112.163757 -18.985970 +v 107.543015 -113.077759 -18.985970 +v 2.842999 -115.263748 -16.701973 +v -1.576999 8.533970 -26.963964 +v -2.034999 6.505976 -25.945969 +v 88.951004 -66.547867 -16.091984 +v -110.997002 -110.589767 -5.776001 +v -109.731003 -115.161758 -6.338001 +v -109.168999 -115.567749 -6.338001 +v -109.016998 -116.735748 -6.338001 +v -109.982994 -108.963760 -5.982002 +v -106.173004 -116.839752 -6.691998 +v -108.864998 -116.277756 -6.691998 +v -108.710999 -116.533768 -6.338001 +v -107.645004 -117.753769 -6.691998 +v -107.645004 -117.753769 -6.338001 +v -105.004997 -118.871750 -6.691998 +v -106.528992 -118.463745 -6.691998 +v -103.428993 -118.819748 -6.691998 +v -104.039001 -118.919754 -6.338001 +v -106.528992 -118.463745 -6.338001 +v -107.900993 -118.005753 -6.338001 +v -106.477005 -118.919754 -6.338001 +v -106.783005 -116.277756 -16.547977 +v -106.882996 -116.429749 -16.701973 +v 101.295013 -113.281769 -15.887978 +v -108.511002 -117.395767 -0.342010 +v -109.425003 -115.973755 -0.342010 +v 91.946999 -65.987869 -15.989979 +v 88.951004 -70.611847 -14.819981 +v -47.396999 6.505978 -20.305979 +v -102.311005 -118.415741 -6.691998 +v -44.957001 6.505978 -16.801991 +v -37.543003 9.553974 -16.701988 +v -49.632996 6.047977 -20.305979 +v 101.547012 -114.247757 -18.681974 +v -48.463001 7.367973 -20.305979 +v 103.174995 -110.843765 -15.581978 +v 102.361000 -111.453766 -15.989975 +v -107.187004 -118.515747 -0.342010 +v 101.803009 -111.857758 -15.733978 +v 102.308998 -111.757767 -15.429977 +v -48.463001 7.723976 -20.305979 +v -48.920998 8.585974 -20.305979 +v -0.407001 97.841782 -14.364010 +v -102.058998 -118.157745 -6.338001 +v -56.083004 25.603943 -16.701988 +v -38.356998 9.857975 -16.701988 +v 103.937004 -117.243744 -15.581978 +v 104.901016 -111.147766 -15.685978 +v 103.937004 -110.995758 -16.091980 +v 105.967003 -111.453766 -15.733978 +v 100.175003 -110.285782 -21.677963 +v 107.695000 -114.347763 -19.087969 +v 49.579006 9.043974 -16.701988 +v 106.729004 -112.011765 -15.685978 +v 50.799007 10.161974 -13.957996 +v 99.261002 -111.809769 -21.677963 +v 102.413010 -111.909760 -15.481979 +v 47.344994 8.129974 -13.957996 +v 106.781006 -112.163757 -15.989975 +v -102.311005 -84.531815 -6.692001 +v -102.210991 -84.579819 -6.338005 +v -101.852997 -85.797821 -6.338005 +v -101.957001 -85.493820 -6.692001 +v -103.682999 -84.073822 -6.692001 +v -106.072998 -84.273819 -6.692001 +v -105.462990 -84.121826 -6.338005 +v -103.682999 -84.073822 -6.338005 +v -77.876999 -46.811897 -6.338009 +v -105.359001 -99.819794 -6.691998 +v 49.327007 6.299984 -14.971992 +v 107.237007 -115.871765 -19.139971 +v 102.004997 -92.351807 -6.338005 +v 101.853004 -92.097809 -6.692001 +v 103.681015 -90.321808 -6.692001 +v 100.533005 -89.965805 -6.692001 +v 103.123016 -89.761810 -6.692001 +v 102.919006 -88.897827 -6.692001 +v -49.225002 8.791973 -14.971992 +v 98.857010 -113.333755 -21.677963 +v 100.533005 -89.965805 -6.338005 +v -106.631004 -115.819763 -6.996002 +v -105.207001 -115.415756 -6.691998 +v 0.150998 93.523804 -16.701996 +v 0.760998 93.727798 -6.338024 +v 0.861004 93.775787 -16.701996 +v 0.965001 93.879791 -6.338024 +v 0.965001 93.839798 -6.362019 +v 0.965001 93.827789 -6.386024 +v 0.965001 93.851807 -6.338024 +v 1.012997 93.879791 -3.442032 +v 0.967000 93.829788 -6.338024 +v 1.012997 93.879791 -6.338024 +v 0.991002 93.853806 -6.338024 +v 0.967000 93.839798 -6.338024 +v 50.898998 93.979797 -6.338024 +v 100.585007 93.879791 -6.338024 +v 100.989006 92.913788 -6.338024 +v 101.954994 91.745789 -6.338024 +v -100.432999 -88.237808 -6.338005 +v 100.433014 69.801849 -6.692020 +v 103.785004 68.581848 -6.692020 +v 104.088997 68.477844 -6.338024 +v -100.634995 -87.527817 -6.692001 +v 103.327011 68.987854 -6.338024 +v -106.783005 -84.579819 -6.338005 +v 111.148994 -92.149811 -5.424004 +v -107.645004 -85.189819 -6.338005 +v -52.072998 -9.547987 -6.338013 +v -89.053001 -119.225754 -19.595966 +v 101.905014 91.847809 -6.692020 +v 103.123016 93.269791 -6.692020 +v 104.699005 92.761795 -6.692020 +v 104.547012 91.847809 -7.200020 +v 101.803009 93.423798 -7.200020 +v 103.479004 92.455795 -8.776016 +v 104.547012 91.847809 -8.572021 +v -104.596992 -115.567749 -6.691998 +v 107.289001 93.423798 -8.572021 +v 106.170998 92.761795 -6.996025 +v 106.071014 93.371796 -6.692020 +v 105.612999 84.023819 -6.692020 +v -49.225002 8.791973 -13.705997 +v -50.701000 8.791973 -13.705997 +v 104.036995 83.821823 -6.338024 +v 105.157005 83.669815 -6.338024 +v 98.702995 -115.467758 -21.373964 +v 98.702995 -112.467758 -21.373964 +v 99.213013 -116.025757 -21.677963 +v 100.127007 -117.601746 -21.677961 +v 109.471008 90.017807 -6.338024 +v 109.471008 95.555786 -6.338024 +v 109.118996 96.875793 -6.338028 +v 99.771004 -117.649750 -19.495968 +v 108.305008 98.247787 -6.338028 +v 107.947006 98.603790 -6.692024 +v 109.219009 96.623795 -6.692024 +v 106.729004 94.489792 -6.692020 +v 106.170998 96.571793 -6.692024 +v 103.985016 97.233780 -6.692024 +v 105.867004 99.771790 -6.692024 +v 106.681015 -116.533768 -15.329979 +v 102.667007 96.265793 -6.692020 +v 100.433014 95.251785 -6.692020 +v 104.291008 99.975784 -6.692024 +v 101.295013 97.537781 -6.692024 +v 102.004997 98.399780 -6.692024 +v 102.209007 99.365784 -6.692024 +v 103.985016 99.975784 -6.338028 +v 106.375008 99.619781 -6.338028 +v 104.036995 100.533783 -6.338028 +v 105.713013 100.281784 -6.338028 +v -51.919003 9.295971 -13.753998 +v 107.947006 99.061783 -6.338028 +v 107.289001 99.571777 -0.342037 +v 103.681015 -90.321808 -6.338005 +v 104.901016 100.485794 -0.342037 +v 103.327011 -90.017807 -6.338005 +v 102.919006 -89.051819 -6.338005 +v 107.747002 -114.705765 -15.177979 +v 103.327011 -114.043762 -23.353962 +v 105.308998 -118.919754 -18.681973 +v 0.150998 96.519791 -6.338028 +v -104.800995 100.485794 -6.338028 +v -52.375004 98.501770 -6.338028 +v 0.050999 96.519791 -6.338028 +v -0.662998 96.367783 -6.338028 +v -52.324997 98.451782 -6.338028 +v -102.210991 99.415787 -6.338028 +v -103.834999 99.923782 -6.338028 +v -105.662994 100.281784 -6.338028 +v -104.800995 100.485794 -0.342037 +v 111.148994 -92.199814 -1.308014 +v 110.995003 -92.455811 -0.900017 +v -6.959003 100.281784 -3.338036 +v 49.223003 6.247982 -20.305979 +v 48.767006 5.081984 -20.305979 +v 48.512997 6.553980 -20.305979 +v -7.265002 100.381775 -0.342037 +v -5.893001 95.657791 -0.342033 +v -6.248996 99.519775 -0.342037 +v -6.655002 100.075775 -0.342037 +v -48.363003 9.601971 -13.753998 +v 7.008999 100.281784 -3.338036 +v -47.805004 9.195972 -13.857998 +v 0.661000 97.689789 -3.338036 +v 6.043003 98.857773 -3.338036 +v 5.942997 95.503784 -3.338032 +v 5.994999 95.657791 -0.342033 +v 102.971008 -118.719742 -16.701973 +v 47.295010 5.943981 -20.509981 +v 47.295010 5.943981 -22.491976 +v 105.461014 -117.091751 -19.139969 +v 107.390999 -114.449768 -15.075977 +v 107.747002 -113.637756 -15.125980 +v 7.671002 100.485794 -0.342037 +v 6.043003 98.857773 -0.342037 +v 6.757000 100.075775 -0.342037 +v 6.501004 99.823776 -3.338036 +v 51.154995 5.029982 -20.305979 +v 50.036995 4.371986 -20.509981 +v 52.781002 5.943981 -22.491976 +v 51.256996 5.029982 -22.695976 +v 51.053005 6.705982 -22.591976 +v 106.019005 -116.581741 -18.681973 +v 103.733002 -118.919754 -18.681973 +v 52.223000 9.195972 -22.695976 +v 52.781002 7.315979 -22.695976 +v 102.261002 -118.415741 -18.681973 +v 98.857010 -115.871765 -19.495970 +v -0.253002 93.575790 -6.234024 +v 1.470997 95.047791 -0.342033 +v 0.760998 96.265793 -1.662029 +v 1.470997 95.047791 -1.662029 +v 0.608998 92.251785 -16.649998 +v 1.318997 97.385788 -0.444038 +v -0.001003 97.789780 -0.648037 +v -1.015003 97.537781 -0.546040 +v -2.187000 96.671783 -0.596043 +v -0.662998 97.689789 -3.338036 +v -2.286998 96.519791 -3.338036 +v -5.996997 98.857773 -3.338036 +v -5.893001 95.757797 -3.338032 +v 107.543015 -113.739761 -15.125980 +v 100.685013 93.575790 -6.692020 +v 98.551003 -114.295761 -19.495970 +v 102.361000 94.437790 -6.692020 +v 107.033005 -112.571762 -14.871983 +v 52.781002 5.943981 -20.509981 +v 52.781002 9.095974 -22.491976 +v -107.900993 99.061783 -6.338028 +v -105.563004 99.823776 -6.338028 +v -107.034996 99.265793 -6.338028 +v -105.510994 99.875778 -6.692024 +v 101.803009 93.423798 -8.572021 +v 103.528999 93.013809 -9.082020 +v 105.157005 92.861786 -9.082020 +v 106.527000 -111.401764 -14.871983 +v -100.432999 95.757797 -6.692020 +v -100.535004 96.213791 -6.338024 +v -100.432999 94.285797 -6.338024 +v -100.432999 94.285797 -6.692020 +v -103.635002 97.129791 -6.692024 +v -102.210991 95.299789 -6.692020 +v -101.700996 96.623795 -7.200024 +v -107.848999 98.603790 -6.692024 +v -104.800995 97.233780 -6.692024 +v -106.072998 96.623795 -6.692024 +v -106.631004 94.437790 -6.692020 +v -109.320999 96.113800 -6.692020 +v -108.864998 97.333786 -6.692024 +v -108.710999 97.585785 -6.338028 +v -109.425003 97.027786 -6.338028 +v -109.016998 97.789780 -0.342037 +v -107.900993 99.061783 -0.342037 +v -109.273003 96.165787 -6.338024 +v -109.425003 90.017807 -6.692020 +v -109.425003 90.017807 -6.338024 +v -109.982994 90.017807 -6.338024 +v -109.883003 95.403793 -6.338024 +v -109.982994 90.017807 -5.982025 +v -109.982994 90.575806 -5.982025 +v -109.982994 90.017807 -0.800034 +v -109.982994 90.017807 -0.394035 +v -110.135002 75.031830 -0.800034 +v -110.896996 73.611832 -0.852039 +v -110.593002 73.407837 -0.852039 +v -110.745003 73.101837 -1.206036 +v -110.797005 73.049835 -5.524029 +v -111.100998 73.203827 -1.358032 +v -111.048996 73.305832 -5.624023 +v 107.289001 94.489792 -6.996025 +v -110.135002 75.031830 -5.982025 +v -110.541000 73.507843 -5.982025 +v 106.323013 97.181793 -6.996029 +v 104.189011 -116.939743 -18.681973 +v 52.781002 9.095974 -20.509981 +v 51.154995 10.057970 -20.305981 +v 101.295013 -115.109756 -15.381977 +v 104.395004 -117.395767 -19.191967 +v 51.764996 9.705973 -22.695978 +v 50.036995 10.719973 -20.509983 +v 47.295010 9.095974 -22.491976 +v 48.767006 9.957973 -20.305981 +v 47.295010 9.095974 -20.509981 +v -0.101001 97.891785 -14.516010 +v -1.321002 97.789780 -14.516010 +v 47.295010 7.315979 -22.695976 +v 48.157005 9.601971 -22.643974 +v 102.919006 97.281784 -6.996029 +v 50.036995 4.371986 -22.491976 +v 48.971004 4.981985 -22.695976 +v 48.613003 7.061974 -22.695976 +v 48.971004 8.229971 -22.591976 +v 102.667007 -116.839752 -15.533978 +v 107.491013 -112.163757 -14.719978 +v 104.547012 -118.971741 -16.701973 +v 106.833008 -111.453766 -14.819977 +v 110.743011 -92.199814 -0.952015 +v 110.033005 -93.417801 -0.800011 +v 100.785004 96.671783 -6.338028 +v -106.072998 65.329849 -6.338024 +v -79.072998 27.889935 -6.338017 +v 101.954994 98.299789 -6.338028 +v 102.057007 99.109772 -6.338028 +v 50.036995 10.719973 -22.491978 +v -107.645004 -85.189819 -6.692001 +v -100.380997 -89.455811 -6.692001 +v -103.987000 -87.425827 -6.692001 +v -105.207001 -87.527817 -6.692001 +v -105.921005 -88.289825 -6.692001 +v -106.072998 -89.051819 -6.692001 +v -106.072998 -89.051819 -6.338005 +v -105.259003 -90.369812 -6.338005 +v -105.563004 -87.831818 -6.338005 +v -104.596992 -90.575806 -6.338005 +v -104.901001 -87.425827 -6.338005 +v -103.481003 -90.217804 -6.338005 +v -104.749001 -90.523804 -6.692001 +v -103.582993 -90.321808 -6.692001 +v -103.635002 -99.871796 -6.691998 +v -105.207001 -100.175797 -6.537998 +v -103.834999 -100.327789 -6.338001 +v -51.259003 5.081984 -20.305979 +v -105.107002 -102.665771 -6.338001 +v -103.887001 -102.713776 -6.338001 +v 107.947006 -113.533768 -14.719978 +v 107.443008 -114.143768 -14.719978 +v 0.050999 96.519791 -3.442036 +v 104.088997 -112.875763 -23.353962 +v 106.071014 -110.895767 -14.667980 +v -101.957001 -108.963760 -6.691998 +v -103.735001 -112.571762 -6.691998 +v -101.957001 -110.487762 -6.691998 +v -103.072998 -113.181763 -6.691998 +v -48.567005 9.905972 -16.701988 +v -102.873001 -114.195755 -6.691998 +v -101.700996 -113.229767 -6.691998 +v 106.271011 -111.401764 -14.261982 +v -104.345001 -116.839752 -6.844002 +v -102.973000 -116.429749 -6.691998 +v -102.415001 99.519775 -6.692024 +v 107.595009 -112.619766 -14.515984 +v -104.648994 -117.091751 -7.147999 +v -105.462990 -116.735748 -6.691998 +v -103.887001 -115.467758 -6.691998 +v -101.904999 98.299789 -6.692024 +v -103.709000 -115.247757 -6.338001 +v -103.277000 -115.009766 -6.338001 +v -102.986992 -114.329758 -6.338001 +v -103.224991 -114.857758 -6.338001 +v -103.329002 -114.957764 -6.033997 +v -103.329002 -114.957764 -6.338001 +v -103.481003 -115.109756 -16.701973 +v -0.711002 98.299789 -14.516010 +v 0.508999 98.299789 -14.668007 +v -76.303001 43.333900 -6.338020 +v 51.357002 7.571976 -22.591976 +v -102.973000 -113.673767 -6.338001 +v -100.738998 93.371796 -6.692020 +v -102.973000 -113.943756 -16.701973 +v -101.700996 95.605789 -6.996025 +v -104.444992 98.195786 -7.200024 +v 49.528999 8.585974 -22.695976 +v 104.647003 -119.681747 -19.191967 +v -103.125000 -113.333755 -16.701973 +v -103.786995 -112.619766 -6.338001 +v -107.187004 96.623795 -7.200024 +v -107.187004 95.605789 -6.996025 +v -104.191002 -112.419769 -6.338001 +v 103.223000 -113.229767 -23.049961 +v -106.173004 93.575790 -6.692020 +v 103.023010 -114.143768 -23.049961 +v -109.425003 75.031830 -6.692020 +v -110.135002 90.017807 -5.982025 +v 103.581001 -115.161758 -23.049961 +v -104.852997 -112.519760 -16.701973 +v -103.530998 -111.147766 -16.701973 +v -104.243004 -112.467758 -16.701973 +v -103.072998 -111.453766 -16.343979 +v 106.423004 -111.757767 -14.771980 +v -104.139000 -111.095779 -16.243977 +v -110.493004 91.441803 -0.800034 +v -105.158997 -111.147766 -16.547977 +v -110.135002 90.017807 -0.800034 +v -108.917000 -111.705765 -16.701973 +v -109.221001 -112.419769 -18.681974 +v 105.205002 -110.639755 -14.261982 +v -108.511002 -111.047760 -18.681974 +v -107.445000 -114.399765 -18.681974 +v -107.086998 -112.467758 -18.681974 +v -107.445000 -112.977768 -19.037971 +v 106.577011 -111.909760 -14.467983 +v -107.596992 -115.363770 -19.191969 +v -106.834999 -115.819763 -18.681974 +v -105.411003 -116.839752 -18.681973 +v -103.887001 -116.939743 -18.681973 +v -103.682999 -118.919754 -18.681973 +v -102.920998 -118.719742 -16.701973 +v -103.072998 -116.633759 -18.681973 +v -102.311005 -116.077744 -18.681974 +v -101.752998 -115.211761 -18.681974 +v -101.091003 -114.501755 -19.191969 +v -101.348991 -112.723755 -19.191969 +v -109.425003 75.031830 -6.338024 +v -99.262993 -111.605774 -19.191969 +v -108.406990 67.005844 -6.692020 +v -102.415001 -111.505768 -19.087969 +v 107.999008 -114.247757 -14.871983 +v -99.873001 -110.589767 -19.191969 +v -103.735001 -110.943756 -18.985970 +v -107.645004 66.243851 -6.692020 +v 98.857010 -113.333755 -19.191969 +v -105.462990 -110.639755 -19.191969 +v -106.173004 -111.505768 -18.681974 +v -101.142990 -109.319763 -19.191969 +v -109.168999 -110.791763 -19.191969 +v -110.083000 -113.181763 -19.191969 +v -109.320999 -110.437775 -19.495970 +v -106.273003 65.429855 -6.692020 +v -103.735001 65.125854 -6.338024 +v -108.814995 -109.827759 -21.373964 +v -108.663002 -109.675766 -19.495970 +v -106.631004 -108.353775 -21.373964 +v -106.987000 -108.861771 -21.677963 +v -108.558998 -110.029770 -21.677963 +v -102.311005 65.583847 -6.692020 +v -102.058998 65.839859 -6.338024 +v -110.034996 -112.773758 -21.677963 +v -110.235001 -112.267761 -21.373964 +v 101.499001 -115.009766 -11.975986 +v 101.699005 -114.247757 -11.723988 +v -110.339005 -112.823761 -19.495970 +v -110.083000 -114.957764 -19.191969 +v -109.425003 -116.787750 -19.191967 +v -110.235001 -115.667755 -19.495970 +v -110.441002 -114.653763 -21.373964 +v -110.135002 -115.871765 -21.373964 +v -110.135002 -114.347763 -21.677963 +v -109.883003 -115.719742 -21.677963 +v -103.682999 -108.305771 -21.677963 +v -101.904999 91.745789 -6.338024 +v -100.939003 72.135834 -6.338024 +v -105.921005 -113.687759 -21.677963 +v -105.563004 -115.009766 -21.677963 +v -108.000999 -118.415741 -21.677961 +v -104.648994 -115.467758 -21.677963 +v -103.987000 -115.415756 -21.677963 +v -103.329002 -114.957764 -21.677963 +v -105.921005 -119.481750 -21.677961 +v -104.549004 -119.681747 -21.677961 +v -103.025002 -114.347763 -21.677963 +v -102.415001 -119.277740 -21.677961 +v -103.277000 -119.835754 -21.373962 +v -105.662994 -119.835754 -21.373962 +v -105.107002 -119.939743 -19.495968 +v -107.392990 -119.225754 -19.495968 +v -105.107002 -119.633743 -19.191967 +v -101.957001 90.017807 -6.338024 +v -108.610992 -117.905746 -19.191967 +v -108.814995 -118.109741 -19.495968 +v -101.957001 91.541809 -6.692020 +v -102.415001 94.081787 -6.692020 +v -105.715004 -117.191742 -19.191967 +v -108.968994 -117.953751 -21.373962 +v -107.544991 -119.125748 -21.373962 +v -104.749001 92.813797 -6.692020 +v -104.444992 91.847809 -7.200020 +v -101.700996 93.423798 -7.200020 +v -101.700996 96.623795 -8.572025 +v -101.700996 95.047791 -8.824017 +v -101.700996 93.423798 -8.572021 +v -103.481003 97.637772 -8.776020 +v -102.362991 95.909790 -9.082020 +v -105.563004 -116.839752 -18.985968 +v -103.329002 95.451797 -9.334015 +v -103.072998 94.537796 -9.082020 +v 107.390999 -113.381760 -14.619984 +v -103.635002 -117.295746 -19.191967 +v -104.091003 -116.991760 -18.935968 +v -102.718994 -116.581741 -19.037970 +v -99.063004 -115.819763 -19.191969 +v -103.682999 95.961792 -9.334015 +v -103.786995 97.181793 -9.082024 +v -104.091003 93.879791 -9.334015 +v 105.409012 -111.249771 -14.515984 +v -103.277000 93.117798 -9.082020 +v -98.756996 -114.295761 -19.191969 +v -98.453003 -114.295761 -19.495970 +v -98.552994 -112.875763 -19.495970 +v -98.453003 -113.891769 -21.373964 +v -99.262993 -110.995758 -19.495970 +v -99.262993 -110.995758 -21.373964 +v -99.566994 -111.047760 -21.677963 +v -100.687004 -109.675766 -21.677963 +v -104.397003 -112.467758 -21.677963 +v -105.107002 94.031784 -9.334015 +v -105.411003 93.927795 -9.082020 +v -105.411003 -112.823761 -21.677963 +v -105.662994 94.895782 -9.334015 +v -105.259003 -112.723755 -23.049961 +v -105.921005 -113.637756 -23.049961 +v -105.462990 -113.333755 -23.353962 +v -105.359001 95.861786 -9.334015 +v -105.662994 95.861786 -9.082020 +v -104.596992 96.213791 -9.334015 +v -106.072998 96.623795 -9.082024 +v -105.158997 -114.957764 -23.353962 +v -104.901001 -112.875763 -23.353962 +v -104.243004 -112.773758 -23.353962 +v -106.631004 94.489792 -9.082020 +v -49.938999 4.371986 -22.491976 +v -103.277000 -113.991760 -23.353962 +v -103.530998 -114.705765 -23.353962 +v -104.444992 98.195786 -8.572025 +v -105.462990 97.637772 -6.996029 +v -107.187004 96.623795 -8.572025 +v -107.187004 93.423798 -8.572021 +v -107.187004 93.423798 -7.200020 +v -105.510994 92.455795 -8.776016 +v -106.072998 92.761795 -6.996025 +v -103.938995 -115.363770 -23.049961 +v -103.530998 -115.109756 -23.049961 +v -103.025002 -114.449768 -23.049961 +v -104.444992 91.847809 -8.572021 +v -103.481003 -112.823761 -23.049961 +v -103.224991 -113.129761 -21.677963 +v -98.756996 -114.095764 -21.677963 +v 104.395004 -110.995758 -14.619984 +v -100.738998 -118.259750 -21.677961 +v -101.752998 -119.329742 -21.373962 +v -104.901001 92.813797 -9.082020 +v -103.072998 92.661804 -8.824017 +v -99.618996 -117.497757 -19.495968 +v -100.738998 -118.667740 -19.495968 +v -100.177002 -117.701752 -19.191967 +v 105.308998 -110.589767 -14.467983 +v 103.528999 -110.743759 -14.467983 +v -101.348991 -118.767746 -19.191967 +v -102.768997 -119.429749 -19.191967 +v -102.462997 -119.633743 -19.495968 +v -98.756996 -115.871765 -19.495970 +v -98.705002 -115.667755 -21.373964 +v 104.747002 -111.047760 -14.209984 +v -99.976997 -117.953751 -21.373962 +v 103.427002 -110.743759 -14.161983 +v -104.243004 -112.467758 -23.049961 +v -105.207001 -115.263748 -23.049961 +v 104.088997 -110.843765 -14.009983 +v 102.157013 -112.367767 -13.957981 +v 103.581001 -111.299759 -14.313984 +v -105.816994 -114.601761 -23.049961 +v -101.348991 -108.809769 -21.373964 +v 107.795013 -115.009766 -14.819977 +v -100.535004 -109.419785 -19.495970 +v -102.111000 -108.457779 -19.495970 +v -102.566994 -108.609756 -19.191969 +v -108.406990 -109.877777 -19.191969 +v -106.425003 -108.305771 -19.495970 +v -101.904999 90.017807 -6.692020 +v 105.308998 -115.263748 -6.338001 +v -105.662994 -108.099777 -21.373964 +v -104.444992 -107.947784 -19.495970 +v -106.072998 -108.505768 -19.191969 +v -104.701004 -108.253784 -19.191969 +v -103.224991 -108.099777 -21.373964 +v -109.168999 68.429855 -6.692020 +v -105.411003 81.127823 -6.642021 +v -111.100998 91.847809 -5.424023 +v -110.949005 91.593796 -5.828022 +v -110.745003 91.899796 -1.104034 +v -110.692993 91.847809 -5.776024 +v -110.797005 91.999802 -5.424023 +v -111.048996 91.745789 -1.206036 +v -110.896996 91.441803 -0.852039 +v 102.413010 -111.249771 -14.209984 +v -106.987000 -111.857758 -19.139971 +v -105.766998 70.969849 -6.692020 +v -105.921005 70.715851 -6.338024 +v -106.072998 69.953842 -6.692020 +v -105.921005 69.343842 -6.338024 +v -105.462990 68.783844 -6.692020 +v -109.472992 -113.991760 -18.681974 +v -104.901001 68.477844 -6.692020 +v -104.749001 68.477844 -6.338024 +v 101.447006 -113.229767 -13.653984 +v 101.651016 -112.315765 -13.753983 +v 101.651016 -112.061768 -14.009983 +v 101.751007 -113.333755 -13.857983 +v -105.816994 -111.147766 -16.649975 +v 101.599014 -113.739761 -14.109982 +v 102.209007 -112.061768 -14.363983 +v -106.631004 -111.351761 -16.495975 +v -106.934998 -111.961761 -16.649975 +v -107.238998 -111.961761 -16.395973 +v 101.142998 -113.687759 -14.009983 +v 101.142998 -113.791763 -13.705982 +v -105.868996 -110.995758 -16.091980 +v -107.445000 -112.419769 -16.091980 +v -103.987000 68.477844 -6.338024 +v -104.139000 68.477844 -6.692020 +v -103.177002 69.087845 -6.692020 +v -107.900993 -113.637756 -16.295975 +v -107.544991 -112.977768 -16.599976 +v -60.555000 29.769928 -16.701988 +v -95.911003 37.593914 -16.701992 +v -107.848999 -114.653763 -16.143978 +v -107.696999 -113.891769 -15.989975 +v -100.535004 71.221832 -6.692020 +v -100.535004 68.835846 -6.692020 +v 101.547012 -115.211761 -14.009983 +v 101.195007 -114.553757 -13.957981 +v -107.086998 -115.211761 -16.091980 +v -101.195000 72.543839 -6.692020 +v -106.477005 -116.077744 -15.989975 +v -106.477005 -116.381760 -16.495975 +v -101.904999 73.305832 -6.692020 +v -103.481003 71.273834 -6.692020 +v -107.291000 -114.247757 -16.191975 +v -107.696999 -114.043762 -16.547977 +v -101.852997 73.203827 -6.338024 +v -101.957001 75.031830 -6.338024 +v -107.493004 -115.667755 -16.295975 +v -101.957001 75.031830 -6.692020 +v -103.735001 80.873825 -6.692020 +v -103.329002 83.565811 -6.692020 +v -107.445000 -113.485764 -16.547977 +v -106.730995 -112.215759 -16.395973 +v -107.187004 -113.029755 -16.143978 +v -103.786995 83.617813 -6.338024 +v -103.735001 84.023819 -6.642021 +v -105.868996 -111.453766 -16.295975 +v -105.055000 83.717819 -6.338024 +v -104.952995 81.231827 -6.338024 +v 105.663002 -115.109756 -6.691998 +v -105.004997 -111.147766 -16.243977 +v -105.207001 80.821823 -6.692020 +v -103.834999 81.331818 -6.338024 +v -103.987000 71.577835 -6.692020 +v -103.987000 71.577835 -6.338024 +v -105.207001 71.425842 -6.692020 +v 101.347008 -115.109756 -13.601982 +v -105.311005 71.373840 -6.338024 +v 101.803009 -115.161758 -13.447983 +v -106.376991 -116.787750 -16.343979 +v -106.934998 -116.381760 -16.143978 +v -92.053001 -119.023743 -19.291965 +v -105.868996 -117.091751 -16.091980 +v -105.158997 -117.343765 -16.091980 +v -104.901001 -116.887741 -15.887978 +v -104.139000 -117.395767 -16.039978 +v -103.277000 -116.735748 -15.785980 +v -103.834999 -116.735748 -16.039978 +v 101.803009 -114.857758 -13.805981 +v -106.528992 -116.381760 -15.887978 +v -105.462990 -116.633759 -16.243977 +v -103.072998 70.815842 -6.338024 +v -104.852997 -117.039764 -16.447975 +v -104.749001 -116.839752 -16.295975 +v -102.873001 -116.481766 -16.295975 +v -103.177002 69.087845 -6.338024 +v -102.362991 -115.923752 -16.143978 +v -102.210991 -116.229767 -16.343979 +v -102.920998 -116.381760 -16.039978 +v -102.873001 69.953842 -6.338024 +v -102.873001 70.105850 -6.692020 +v -101.805000 -115.263748 -16.243977 +v -101.600998 -113.029755 -16.191975 +v -101.195000 -113.433762 -16.191975 +v -101.449005 -115.161758 -16.295975 +v -92.053001 41.909908 -16.701992 +v 102.667007 -116.177765 -13.753983 +v -101.245003 -112.823761 -15.837978 +v -101.245003 -115.263748 -15.989975 +v 103.377014 -114.905762 -21.677963 +v -101.805000 -116.125763 -16.039978 +v -101.852997 -115.973755 -15.785980 +v -102.362991 -116.685760 -16.039978 +v -103.682999 -117.243744 -16.295975 +v 103.275009 -116.533768 -13.601982 +v 103.633011 -117.191742 -13.653984 +v -102.768997 -116.887741 -15.837978 +v -101.852997 -115.415756 -15.785980 +v -101.549004 -113.891769 -15.785980 +v -101.904999 -112.419769 -16.143978 +v -101.904999 -112.671768 -15.837978 +v -102.973000 -111.505768 -15.989975 +v -102.566994 -111.705765 -15.633980 +v 101.699005 -115.923752 -13.653984 +v -102.873001 -111.299759 -16.143978 +v -101.805000 -112.011765 -16.143978 +v -104.648994 -110.691757 -16.091980 +v -103.376991 -110.843765 -16.091980 +v -104.292992 -110.537766 -15.785980 +v -102.614998 -111.047760 -15.887978 +v -102.415001 -111.453766 -15.581978 +v -104.701004 -110.589767 -15.581978 +v -103.938995 -111.147766 -15.939980 +v -101.700996 -112.163757 -15.633980 +v -105.462990 83.921814 -6.642021 +v -105.614998 -111.047760 -15.481979 +v -104.852997 -111.095779 -15.939980 +v -105.868996 -110.943756 -15.989975 +v -106.783005 -111.505768 -15.533978 +v -107.291000 -112.723755 -15.939980 +v -107.392990 -112.215759 -15.533978 +v -100.838997 75.031830 -6.896019 +v -100.482994 75.335831 -7.048019 +v -105.662994 -110.743759 -15.685978 +v -105.311005 -110.691757 -15.989975 +v -100.939003 75.083832 -7.200020 +v -100.687004 75.335831 -7.352020 +v 102.819016 -116.939743 -13.551983 +v -100.939003 89.965805 -7.200020 +v -100.586998 89.459808 -7.454021 +v -100.482994 89.713806 -7.048019 +v -106.882996 -112.163757 -15.429977 +v -106.020996 -111.453766 -15.481979 +v -105.921005 -111.505768 -15.837978 +v -107.238998 -113.281769 -15.733978 +v -107.493004 -113.433762 -15.329979 +v 104.189011 -117.395767 -13.247982 +v -107.291000 -114.653763 -15.381977 +v -107.392990 -114.553757 -15.785980 +v -106.987000 -115.415756 -15.685978 +v -107.848999 -114.399765 -15.381977 +v -107.848999 -113.433762 -15.685978 +v -107.596992 -115.415756 -15.533978 +v 106.223007 -116.481766 -12.891987 +v 105.157005 -117.191742 -13.043983 +v 106.781006 -116.581741 -13.195984 +v -95.962990 44.299896 -18.681993 +v -95.911003 37.593910 -18.681992 +v -107.187004 -115.567749 -15.177979 +v -106.477005 -116.025757 -15.381977 +v -105.055000 -116.839752 -15.125980 +v -105.563004 -116.633759 -15.481979 +v -103.582993 -117.039764 -15.533978 +v -105.510994 -117.039764 -15.633980 +v -106.730995 -116.429749 -15.685978 +v -95.962990 44.299900 -16.701992 +v -104.800995 -117.395767 -15.229977 +v 106.681015 -116.481766 -13.399986 +v 107.491013 -115.771759 -12.943985 +v -103.834999 -117.343765 -15.277977 +v 107.237007 -115.363770 -12.737984 +v 107.595009 -114.043762 -12.533985 +v 107.443008 -114.095764 -12.991985 +v 106.577011 -116.077744 -13.295986 +v -100.482994 71.019852 -6.338024 +v -100.482994 69.039841 -6.338024 +v -107.187004 -116.025757 -15.277977 +v -106.072998 -117.039764 -15.429977 +v -100.939003 67.921844 -6.338024 +v -100.838997 68.125854 -6.692020 +v -105.311005 -117.143753 -15.023979 +v -103.887001 -116.887741 -14.971977 +v -102.514992 -116.229767 -14.871983 +v -103.329002 -116.581741 -15.229977 +v -102.058998 -115.619751 -15.229977 +v -104.444992 65.077850 -6.692020 +v -102.566994 -116.429749 -15.429977 +v -102.058998 -116.277756 -15.277977 +v -101.904999 66.649857 -6.338024 +v -102.768997 -116.939743 -15.277977 +v -101.904999 66.649857 -6.692020 +v -101.904999 -116.277756 -15.023979 +v -101.042999 -114.347763 -14.871983 +v -101.600998 -115.923752 -15.075977 +v -101.142990 -114.753754 -15.075977 +v -101.195000 -114.399765 -15.177979 +v 105.461014 -116.735748 -13.095985 +v 104.901016 -116.839752 -13.499981 +v 104.036995 -116.839752 -13.247982 +v 102.209007 -116.429749 -13.399986 +v -101.348991 -112.571762 -14.667980 +v -101.195000 -112.925766 -14.871983 +v 106.323013 -116.581741 -13.447983 +v 105.308998 -117.143753 -13.551983 +v -102.159004 -111.505768 -14.415981 +v -101.449005 -112.773758 -14.467983 +v -102.566994 -111.095779 -14.567982 +v -103.177002 -110.791763 -14.567982 +v 105.409012 -117.295746 -13.143982 +v 107.543015 -115.363770 -13.247982 +v -102.362991 -111.453766 -14.871983 +v -103.582993 -110.995758 -14.771980 +v -104.039001 -111.095779 -14.567982 +v -105.107002 -111.147766 -14.415981 +v -102.920998 -111.453766 -14.771980 +v -103.635002 -111.047760 -14.209984 +v -104.497002 -111.095779 -14.261982 +v -104.952995 -110.743759 -14.057983 +v -105.969002 -111.505768 -14.057983 +v -106.730995 -111.605774 -13.857983 +v -106.882996 -112.467758 -13.905983 +v -106.273003 -111.505768 -14.467983 +v -105.816994 -110.791763 -14.261982 +v -104.648994 -110.537766 -14.467983 +v 107.085007 -112.519760 -12.891987 +v 107.543015 -113.181763 -13.043983 +v 107.033005 -112.619766 -12.685986 +v 105.967003 -111.453766 -12.685986 +v 105.867004 -110.943756 -12.737984 +v -102.820999 -111.095779 -14.313984 +v -105.921005 -110.895767 -14.057983 +v -106.934998 -111.757767 -14.363983 +v -107.596992 -112.619766 -13.857983 +v -107.341003 -113.281769 -13.705982 +v -107.848999 -114.295761 -13.653984 +v -107.797005 -114.705765 -13.957981 +v -107.596992 -115.109756 -13.499981 +v -107.544991 -115.515762 -13.805981 +v -106.682999 -116.633759 -13.551983 +v -105.510994 -117.039764 -13.195984 +v -106.882996 -115.515762 -13.653984 +v -92.053001 44.299900 -16.701992 +v -107.341003 -113.943756 -13.805981 +v 104.241013 -115.415756 -21.677963 +v -106.882996 -112.113770 -14.363983 +v 107.795013 -112.925766 -12.637985 +v 107.137009 -111.705765 -12.485985 +v 107.338997 -113.077759 -12.533985 +v -92.053001 44.299896 -18.681993 +v -107.493004 -113.433762 -14.209984 +v 107.390999 -114.195755 -12.789986 +v -107.493004 -115.211761 -14.009983 +v 106.781006 -112.061768 -12.381985 +v 105.308998 -111.199768 -12.585987 +v -106.324989 -116.125763 -13.653984 +v -106.882996 -115.819763 -13.905983 +v -105.766998 -116.939743 -13.753983 +v -105.207001 -117.191742 -13.705982 +v -106.882996 -116.277756 -13.857983 +v -105.462990 -117.295746 -13.447983 +v -104.701004 -117.395767 -13.195984 +v -103.682999 -116.735748 -13.399986 +v -105.766998 -116.633759 -13.705982 +v -104.749001 -116.787750 -13.399986 +v -103.329002 -116.685760 -12.991985 +v -102.820999 -116.429749 -13.399986 +v -101.653000 -115.315765 -12.685986 +v -103.987000 -117.295746 -13.095985 +v -102.111000 -116.429749 -12.943985 +v -102.873001 -117.039764 -13.195984 +v 105.815002 -110.843765 -12.229984 +v -101.600998 -115.871765 -12.891987 +v -102.210991 -116.429749 -13.347980 +v -101.397003 -115.515762 -13.143982 +v -102.111000 -115.923752 -13.347980 +v -102.210991 -115.719742 -13.095985 +v -101.600998 -114.295761 -12.891987 +v -101.500992 -113.533768 -13.043983 +v -101.142990 -113.229767 -12.943985 +v -101.752998 -112.571762 -12.943985 +v -101.348991 -113.891769 -12.533985 +v -102.159004 -112.011765 -12.333984 +v 103.985016 -111.147766 -12.181988 +v -95.505005 36.679909 -18.681992 +v -101.091003 -113.533768 -12.637985 +v -101.397003 -112.571762 -12.533985 +v -102.311005 -111.299759 -12.533985 +v -103.177002 -110.895767 -12.181988 +v -103.329002 -111.249771 -12.229984 +v -102.920998 -111.553757 -12.585987 +v -101.852997 -111.857758 -12.839985 +v -103.682999 -111.147766 -12.585987 +v -103.530998 -110.691757 -12.485985 +v -104.749001 -110.537766 -12.333984 +v 102.513016 -111.453766 -12.381985 +v -104.852997 -110.843765 -12.585987 +v -104.596992 -111.047760 -12.129986 +v 104.343002 -110.743759 -12.585987 +v 103.071007 -110.895767 -12.027985 +v 104.647003 -110.537766 -12.229984 +v -106.376991 -111.857758 -12.077988 +v 101.347008 -112.619766 -11.975986 +v 102.308998 -111.351761 -12.181988 +v -105.158997 -110.895767 -11.923985 +v -106.631004 -111.705765 -11.771988 +v -105.715004 -110.791763 -12.281986 +v -106.425003 -111.249771 -11.923985 +v -107.238998 -111.961761 -11.923985 +v -107.797005 -114.043762 -11.571987 +v -107.596992 -112.619766 -11.823986 +v -100.838997 93.167801 -6.338024 +v -107.238998 -115.567749 -11.367989 +v -107.341003 -113.839767 -11.671986 +v 104.547012 -110.843765 -12.027985 +v 101.090996 -114.653763 -19.191969 +v -107.392990 -113.585770 -12.077988 +v -106.987000 -112.671768 -11.975986 +v -107.139000 -112.519760 -12.281986 +v -106.224998 -111.199768 -12.381985 +v -107.392990 -112.215759 -12.181988 +v 101.090996 -113.739761 -11.923985 +v -103.530998 -110.691757 -12.281986 +v -103.938995 99.923782 -6.692024 +v -102.007004 99.109772 -6.692024 +v 102.615005 -116.177765 -11.315990 +v 102.109009 -115.667755 -11.367989 +v -107.748993 -114.601761 -11.975986 +v -107.341003 -115.057770 -11.975986 +v -106.987000 -116.077744 -11.875984 +v -107.034996 -115.263748 -11.671986 +v -106.934998 -115.567749 -11.419991 +v -106.224998 -116.229767 -11.467987 +v 101.395004 -115.109756 -11.467987 +v 101.142998 -114.601761 -11.875984 +v 101.243011 -113.839767 -11.571987 +v -107.900993 -113.839767 -11.923985 +v -107.696999 -114.905762 -11.519985 +v -107.696999 -112.875763 -12.027985 +v -107.645004 -115.315765 -11.771988 +v -106.987000 -116.177765 -11.367989 +v -106.682999 -116.581741 -11.619991 +v -105.969002 -117.091751 -11.467987 +v 102.461014 -116.633759 -11.723988 +v 103.123016 -116.735748 -11.771988 +v 1.575001 97.891785 -14.820004 +v -105.411003 -117.243744 -11.213989 +v -104.648994 -117.395767 -11.467987 +v -104.444992 -117.243744 -11.009991 +v -105.510994 -116.633759 -11.315990 +v -51.105000 8.637976 -18.681988 +v -104.901001 -116.787750 -11.419991 +v 103.174995 -113.381760 -21.677963 +v -106.224998 -116.429749 -11.771988 +v -104.901001 -116.887741 -11.571987 +v 104.495010 -117.343765 -11.467987 +v -103.125000 -116.939743 -11.467987 +v 104.799004 -117.191742 -10.961990 +v -103.887001 -117.343765 -11.315990 +v -102.973000 -117.091751 -11.161987 +v -102.873001 -116.787750 -10.857990 +v -102.007004 -116.329758 -10.857990 +v -101.957001 -115.515762 -10.757988 +v -101.296989 -115.263748 -11.061989 +v -101.805000 -116.125763 -11.161987 +v -101.852997 -115.363770 -11.161987 +v -101.348991 -113.485764 -11.061989 +v -101.397003 -112.419769 -10.553989 +v -101.805000 -112.367767 -10.909988 +v -103.329002 -110.743759 -10.553989 +v 103.427002 -116.685760 -11.213989 +v 103.681015 -116.735748 -11.519985 +v -102.210991 -111.351761 -10.451988 +v 101.803009 -115.567749 -19.037971 +v 101.853004 -115.363770 -18.681974 +v -103.887001 -110.743759 -10.047993 +v -101.957001 -112.113770 -10.299995 +v -101.091003 -113.381760 -10.605991 +v 106.681015 -116.685760 -11.113991 +v 106.019005 -116.991760 -11.367989 +v 102.461014 -116.125763 -18.681974 +v 106.071014 -116.939743 -10.909988 +v 106.729004 -116.277756 -10.757988 +v 105.003006 -116.787750 -11.213989 +v 107.491013 -115.009766 -10.605991 +v 107.847015 -114.957764 -10.809990 +v -101.091003 -114.347763 -10.605991 +v -101.653000 -114.601761 -10.857990 +v -102.514992 -116.077744 -11.161987 +v -103.987000 -116.787750 -11.213989 +v -102.614998 -116.429749 -11.367989 +v -49.938999 4.371986 -20.509981 +v -48.158997 5.385984 -20.305979 +v -102.058998 -115.515762 -11.061989 +v -101.752998 -113.077759 -10.605991 +v -92.053001 -85.493820 -29.297949 +v -47.195004 5.943981 -22.491976 +v 107.289001 -115.619751 -11.265987 +v -104.091003 -110.895767 -10.605991 +v -102.920998 -111.505768 -10.605991 +v -103.887001 -111.095779 -10.147995 +v -0.762996 93.775787 -6.338024 +v -1.220996 94.185791 -16.701996 +v -0.559001 93.623795 -16.701996 +v -1.321002 92.507797 -16.701996 +v -0.101001 92.051788 -16.495998 +v 107.847015 -113.077759 -10.857990 +v 107.595009 -114.501755 -11.161987 +v 107.491013 -112.315765 -10.809990 +v -2.438998 93.217789 -16.548000 +v -47.195004 5.943981 -20.509981 +v -1.828998 92.661804 -16.495998 +v -0.863002 91.745789 -16.599998 +v 0.661000 91.947800 -16.395996 +v -105.921005 -111.505768 -10.247990 +v -105.207001 -111.095779 -10.451988 +v -104.901001 -111.147766 -10.147995 +v -106.376991 -111.249771 -10.299995 +v -105.411003 -110.691757 -10.351990 +v 1.827000 92.507797 -16.344002 +v 1.370999 92.405792 -16.447998 +v 1.879002 92.861786 -16.701996 +v 2.185002 96.975800 -16.702000 +v 1.423001 94.437790 -16.701996 +v -103.481003 -111.095779 -10.657990 +v 1.167004 94.031784 -6.386024 +v -104.139000 -110.537766 -10.351990 +v -105.311005 -110.895767 -9.895992 +v -106.273003 -111.047760 -9.995991 +v 1.522999 94.793793 -3.748028 +v 1.522999 94.741791 -6.338024 +v -106.987000 -111.605774 -10.095989 +v -107.748993 -112.875763 -9.943993 +v 104.241013 -110.537766 -10.247990 +v 105.561005 -110.691757 -10.503990 +v 104.189011 -110.691757 -10.503990 +v 105.308998 -111.147766 -10.553989 +v 106.223007 -111.249771 -10.757988 +v 106.681015 -111.909760 -10.757988 +v 1.522999 94.793793 -6.338024 +v -107.900993 -113.637756 -9.895992 +v -107.596992 -113.381760 -9.537994 +v -106.834999 -112.011765 -9.689995 +v -107.291000 -113.433762 -9.689995 +v 103.681015 -110.995758 -10.503990 +v 104.088997 -111.147766 -10.095989 +v -107.291000 -113.077759 -10.095989 +v -107.493004 -112.619766 -10.147995 +v -107.493004 -113.791763 -10.047993 +v 1.522999 95.299789 -6.338024 +v 1.522999 95.299789 -3.442032 +v 106.474998 -111.757767 -10.299995 +v 106.071014 -111.095779 -10.147995 +v 106.071014 -111.553757 -10.399990 +v -106.834999 -115.667755 -9.741989 +v -105.868996 -116.429749 -9.333992 +v -106.072998 -116.381760 -9.637989 +v 1.318997 95.809799 -6.338024 +v 1.510998 95.333786 -6.338024 +v 1.423001 95.555786 -5.880024 +v 1.167004 96.013794 -6.338024 +v -104.139000 -117.039764 -9.485989 +v -105.816994 -116.887741 -9.689995 +v -104.952995 -117.295746 -9.485989 +v -106.579002 -116.685760 -9.485989 +v 107.137009 -112.671768 -10.451988 +v 107.237007 -112.113770 -10.351990 +v -107.034996 -116.125763 -9.791992 +v 107.643005 -113.687759 -10.451988 +v 107.847015 -113.533768 -10.503990 +v -107.596992 -115.415756 -9.689995 +v 107.338997 -113.485764 -10.605991 +v 106.881004 -115.923752 -10.757988 +v 107.338997 -114.601761 -10.809990 +v 0.813000 96.317795 -16.702000 +v 1.218999 97.737793 -16.702000 +v -0.153003 96.519791 -16.702000 +v -0.304996 98.043793 -16.702000 +v -1.424999 95.451797 -16.701996 +v -0.966998 96.165787 -16.701996 +v -59.183002 29.717934 -16.701988 +v -107.341003 -115.819763 -9.437992 +v -107.645004 -114.805756 -9.437992 +v -0.711002 96.317795 -6.338028 +v -0.711002 96.367783 -6.386028 +v -0.711002 96.317795 -4.710026 +v -1.118999 95.961792 -3.442032 +v -1.118999 96.013794 -6.338024 +v -106.425003 -116.277756 -9.233994 +v -1.118999 95.961792 -6.338024 +v -105.715004 -117.143753 -9.181992 +v -103.530998 -117.295746 -9.081997 +v -103.834999 -117.091751 -8.875992 +v -89.053001 -115.161758 -34.379936 +v -103.682999 -116.787750 -8.977997 +v -104.701004 -116.839752 -9.385994 +v -89.053001 -121.257751 -26.911949 +v -101.957001 -116.329758 -8.977997 +v -102.111000 -115.719742 -9.129993 +v -1.473003 94.843781 -6.338024 +v -1.118999 94.081787 -4.000027 +v -1.118999 94.081787 -6.338024 +v -1.015003 93.979797 -6.338024 +v 106.118996 -116.329758 -11.161987 +v -102.159004 -115.719742 -8.775993 +v -103.025002 -116.429749 -9.081997 +v -0.914996 93.879791 -6.338024 +v -0.914996 93.827789 -3.442032 +v -102.415001 -116.429749 -8.723995 +v 107.237007 -115.109756 -11.113991 +v -102.768997 -116.939743 -8.977997 +v -101.700996 -115.415756 -8.623993 +v -101.348991 -114.553757 -8.519993 +v -5.283000 94.741791 -16.701996 +v -2.970996 94.251785 -16.556000 +v -101.348991 -113.943756 -9.029995 +v 107.338997 -112.977768 -10.909988 +v -101.805000 -112.925766 -8.723995 +v 102.870995 -116.735748 -19.139969 +v -102.007004 -111.961761 -8.215996 +v -102.263000 -112.163757 -8.419994 +v -102.566994 -111.657761 -8.723995 +v -102.111000 -111.505768 -8.671993 +v -101.042999 -113.433762 -8.775993 +v -101.449005 -112.267761 -8.571999 +v -1.828998 99.671783 -16.702000 +v -0.914996 98.043793 -16.702000 +v -101.549004 -115.515762 -9.181992 +v -0.407001 97.891785 -16.192001 +v -1.828998 97.233780 -16.496002 +v -101.195000 -113.281769 -8.419994 +v -101.195000 -115.057770 -8.823994 +v 99.671005 -116.939743 -19.191967 +v -1.828998 97.891785 -16.496002 +v -1.424999 98.147781 -16.296001 +v -102.159004 -111.453766 -8.367996 +v -103.481003 -110.895767 -8.013992 +v -103.224991 -111.401764 -8.267994 +v -104.397003 -110.995758 -7.961998 +v -104.648994 -111.095779 -8.267994 +v -103.329002 -111.249771 -8.571999 +v 0.099003 98.451782 -16.496002 +v -0.510997 98.347778 -16.192001 +v -102.920998 -110.943756 -8.571999 +v 0.405003 100.027771 -16.702000 +v 1.774998 97.891785 -16.702000 +v 1.117001 98.247787 -16.296001 +v -104.039001 -110.589767 -8.419994 +v 1.575001 97.689789 -16.192001 +v 2.795003 97.027786 -16.344006 +v 2.690999 97.233780 -16.496002 +v -104.701004 -110.537766 -8.113998 +v -106.121002 -110.995758 -7.961998 +v -106.528992 -111.757767 -7.757996 +v -105.411003 -111.147766 -7.909992 +v 1.879002 99.671783 -16.702000 +v -106.631004 -112.113770 -7.961998 +v -107.493004 -113.791763 -7.557999 +v 3.757000 98.399780 -18.681999 +v 2.589001 99.313782 -18.681999 +v 3.199002 98.909790 -16.702000 +v 1.167004 99.875778 -18.681999 +v -4.776996 96.419785 -18.681999 +v -107.139000 -115.009766 -7.809998 +v -107.291000 -113.533768 -7.861996 +v -107.445000 -113.943756 -8.061993 +v -107.900993 -114.143768 -7.861996 +v -107.187004 -115.619751 -7.961998 +v -0.356998 100.027771 -18.681999 +v -3.101001 98.909790 -18.681999 +v -106.224998 -116.839752 -7.403996 +v -107.392990 -115.819763 -7.709999 +v -107.848999 -114.601761 -7.709999 +v -1.828998 99.671783 -18.681999 +v -107.900993 -113.533768 -7.809998 +v -107.645004 -112.571762 -7.909992 +v -106.834999 -111.605774 -8.215996 +v -106.987000 -112.315765 -8.215996 +v -4.979000 95.351791 -16.701996 +v -3.658999 98.399780 -16.702000 +v -5.131000 95.047791 -18.681999 +v -9.396998 90.727798 -18.681999 +v -106.324989 -111.095779 -8.165993 +v -105.662994 -110.743759 -8.165993 +v -105.411003 -111.047760 -8.419994 +v -58.879002 29.821922 -18.681992 +v -4.520999 97.129791 -16.702000 +v -1.728999 97.485779 -18.681999 +v -2.797000 96.013794 -18.681999 +v -3.300998 95.147797 -19.191994 +v -2.896998 94.337799 -18.681999 +v -107.291000 -112.215759 -7.709999 +v -2.896998 94.031784 -18.985994 +v -2.386997 93.269791 -18.681999 +v -107.596992 -114.957764 -7.453999 +v -38.557003 76.353836 -18.681997 +v -39.167004 76.911835 -18.681997 +v -107.034996 -115.771759 -7.351997 +v -0.814998 92.151810 -18.681999 +v -2.134998 92.861786 -18.935995 +v -105.563004 -117.039764 -7.251999 +v -105.107002 -117.243744 -7.299995 +v -5.080997 65.229858 -18.681995 +v -104.444992 -117.039764 -7.199997 +v -104.292992 -116.887741 -7.657997 +v -105.004997 -116.787750 -7.403996 +v -38.457005 74.983841 -16.701996 +v -38.457005 74.983841 -18.681997 +v -39.167004 74.117844 -18.681997 +v -38.915005 74.321838 -16.701996 +v -105.921005 -116.685760 -7.861996 +v -104.292992 -117.143753 -7.809998 +v -8.382998 69.191849 -18.681995 +v -1.066997 92.151810 -18.985994 +v 0.508999 92.051788 -18.681999 +v -9.854999 72.543839 -18.681995 +v -40.489002 74.015839 -18.681997 +v -105.563004 -117.191742 -7.709999 +v 0.813000 91.947800 -19.037996 +v 1.781003 92.563797 -18.681999 +v -1.015003 86.765823 -18.681997 +v -1.473003 86.055817 -18.681997 +v -1.524997 85.803802 -16.701996 +v -1.473003 84.989807 -18.681997 +v -1.169002 84.479813 -18.681997 +v -1.169002 84.479813 -16.701996 +v 0.302998 83.973816 -18.681997 +v 0.813000 84.127808 -16.701996 +v 0.813000 84.127808 -18.681997 +v -102.614998 -116.381760 -7.100002 +v -102.311005 -116.633759 -7.199997 +v -101.500992 -115.667755 -7.199997 +v -101.904999 -115.567749 -7.100002 +v -101.549004 -114.705765 -7.605999 +v -102.263000 -115.819763 -7.403996 +v -102.920998 -116.429749 -7.251999 +v -101.700996 -115.467758 -7.657997 +v -1.015003 76.759827 -18.681997 +v -0.510997 77.011826 -18.681997 +v -1.015003 76.759827 -16.701996 +v -1.372997 76.353836 -16.701996 +v -1.473003 76.049835 -18.681997 +v -8.891002 72.287842 -18.681995 +v -9.854999 72.543839 -16.701996 +v 3.099003 96.519791 -14.568008 +v 2.641003 97.233780 -14.820004 +v 1.827000 97.943787 -14.668007 +v -101.957001 -116.077744 -7.657997 +v -103.072998 -117.091751 -7.605999 +v -101.449005 -115.667755 -7.453999 +v -101.195000 -113.333755 -7.557999 +v -1.473003 74.983841 -16.701996 +v -1.524997 75.235840 -18.681997 +v 88.951004 -64.919861 -16.343983 +v -101.653000 -114.501755 -7.299995 +v -101.397003 -113.943756 -7.047997 +v -101.700996 -112.977768 -7.505993 +v -101.752998 -112.671768 -6.996002 +v -102.614998 -111.705765 -7.403996 +v -101.600998 -112.519760 -7.557999 +v -102.820999 -110.943756 -7.299995 +v -101.549004 -112.113770 -7.299995 +v -101.142990 -113.077759 -7.147999 +v -101.042999 -114.095764 -7.199997 +v -1.015003 74.321838 -18.681997 +v -8.178996 71.629837 -16.701996 +v -7.924999 71.019852 -18.681995 +v -0.253002 73.965836 -18.681997 +v -0.762996 74.117844 -16.701996 +v -102.718994 -111.351761 -6.895996 +v -103.481003 -111.299759 -7.299995 +v 0.302998 73.965836 -16.701996 +v 1.064999 74.321838 -18.681997 +v -104.596992 -110.537766 -7.251999 +v -105.563004 -110.995758 -7.403996 +v -8.024997 69.697830 -18.681995 +v -7.924999 70.053833 -16.701996 +v 38.454998 85.241821 -18.681997 +v 38.659008 84.735825 -16.701996 +v 39.217007 84.127808 -18.681997 +v 9.905004 72.543839 -18.681995 +v 9.295003 72.441833 -18.681995 +v -103.582993 -110.791763 -6.895996 +v -103.682999 -110.639755 -7.251999 +v -102.362991 -111.299759 -7.047997 +v 8.685002 72.087830 -16.701996 +v 8.433003 71.883850 -18.681995 +v 8.077001 71.325836 -18.681995 +v 7.975003 71.019852 -16.701996 +v 7.975003 70.053833 -18.681995 +v -4.421001 65.329849 -18.681995 +v 8.229001 69.445847 -16.701996 +v 8.229001 69.445847 -18.681995 +v -3.454997 65.025864 -16.701996 +v -2.896998 64.567856 -18.681995 +v -104.901001 -111.147766 -7.251999 +v -106.425003 -111.757767 -7.351997 +v -2.896998 64.567856 -16.701992 +v 4.823002 65.277847 -18.681995 +v 4.164998 65.277847 -18.681995 +v -105.359001 -111.095779 -6.895996 +v -106.528992 -111.757767 -6.795998 +v -106.834999 -112.267761 -7.251999 +v -107.238998 -113.129761 -6.895996 +v -106.528992 -111.351761 -6.844002 +v -107.645004 -112.773758 -6.895996 +v 4.164998 65.277847 -16.701996 +v 3.251004 64.821854 -18.681995 +v 3.505002 65.025864 -16.701996 +v 2.795003 64.315857 -18.681995 +v -107.900993 -114.195755 -7.100002 +v -106.425003 -116.581741 -7.199997 +v -106.324989 -116.887741 -6.895996 +v -107.645004 -115.315765 -7.047997 +v -107.544991 -114.753754 -7.299995 +v -107.848999 -113.533768 -7.199997 +v -107.341003 -112.519760 -7.351997 +v -8.178996 69.445847 -16.701996 +v -107.341003 -113.891769 -6.947998 +v 106.781006 -111.351761 -10.503990 +v -107.086998 -115.161758 -6.895996 +v -105.715004 -116.581741 -7.047997 +v 104.951004 -110.537766 -10.247990 +v 4.823002 65.277847 -16.701996 +v -104.852997 -117.395767 -6.947998 +v -92.053001 -120.749741 -26.605953 +v 102.819016 -111.147766 -9.843990 +v 102.261002 -112.267761 -9.895992 +v 103.581001 -111.249771 -9.995991 +v 103.123016 -111.401764 -10.299995 +v 54.861004 26.365932 -18.681992 +v -88.850990 -121.463745 -30.973942 +v -102.362991 -116.533768 -7.047997 +v -104.549004 -117.295746 -7.100002 +v -103.177002 -117.191742 -6.795998 +v -102.415001 -116.735748 -6.895996 +v -101.500992 -115.467758 -6.996002 +v -101.653000 -115.973755 -6.691998 +v -101.904999 -117.243744 -6.691998 +v -100.939003 -116.077744 -6.691998 +v -101.852997 -117.143753 -6.338001 +v 59.943001 29.617931 -18.681992 +v 58.928997 29.821922 -18.681992 +v 55.014996 25.755932 -18.681992 +v 54.508999 26.873936 -16.701988 +v -105.311005 -117.243744 -6.691998 +v -104.191002 -117.343765 -6.691998 +v 54.760998 24.535946 -16.701988 +v -100.634995 -115.415756 -6.338001 +v -100.380997 -114.247757 -6.338001 +v 102.413010 -111.299759 -10.147995 +v 101.954994 -112.671768 -9.995991 +v -47.195004 9.095974 -20.509981 +v -2.339000 -119.481750 -26.553949 +v 101.499001 -113.181763 -9.537994 +v 101.651016 -113.687759 -9.943993 +v -100.482994 -89.965805 -6.338005 +v 106.118996 -113.891769 -6.338001 +v 106.019005 -113.687759 -6.338001 +v 101.853004 -111.809769 -9.995991 +v -100.939003 -91.083801 -6.692001 +v -102.973000 -88.441818 -6.692001 +v -103.072998 -89.761810 -6.692001 +v -102.973000 -89.507812 -6.338005 +v -103.025002 -88.289825 -6.338005 +v -103.938995 -87.475815 -6.338005 +v -96.470993 -121.463745 -18.985968 +v 55.014996 25.449936 -16.701988 +v -101.904999 -92.251801 -6.692001 +v -101.957001 -92.455811 -6.338005 +v -100.939003 -91.083801 -6.338005 +v -100.432999 -113.229767 -6.338001 +v -100.482994 -114.957764 -6.691998 +v -100.432999 -113.229767 -6.691998 +v -101.142990 -114.957764 -6.691998 +v -101.142990 -113.077759 -6.691998 +v -100.738998 -112.315765 -6.691998 +v 60.909004 29.921925 -18.681992 +v -101.397003 -113.077759 -6.996002 +v -9.197001 72.441833 -16.701996 +v -101.348991 -114.601761 -7.047997 +v -102.111000 -115.567749 -6.691998 +v 88.951004 44.299896 -18.681993 +v 85.241013 44.299896 -18.681993 +v 88.951004 44.195896 -16.701992 +v 101.195007 -113.585770 -9.589989 +v 101.954994 -115.161758 -9.537994 +v -102.415001 -116.077744 -6.996002 +v -103.428993 -116.787750 -7.047997 +v 77.621002 44.755901 -18.681993 +v 78.029007 45.671898 -18.681993 +v 77.773010 45.009903 -16.701992 +v 101.295013 -112.875763 -9.791992 +v 101.954994 -112.315765 -10.247990 +v 101.243011 -113.891769 -10.047993 +v 90.169006 90.727798 -16.701996 +v 77.925003 71.221832 -16.701996 +v 88.951004 49.785889 -18.681993 +v 85.241013 49.785889 -18.681993 +v 77.773010 71.525848 -18.681995 +v 85.241013 44.299900 -16.701992 +v 85.241013 49.785892 -16.701992 +v 101.447006 -115.567749 -9.637989 +v 101.142998 -114.501755 -9.791992 +v 88.951004 42.013905 -16.701992 +v 92.151001 41.909908 -16.701992 +v 88.951004 42.061909 -15.229996 +v 88.951004 42.519909 -14.719997 +v 88.951004 46.737896 -15.989994 +v 91.946999 47.295887 -15.989994 +v 88.951004 45.975895 -16.343998 +v 91.946999 45.975895 -16.343998 +v 91.946999 45.465900 -17.309994 +v 91.946999 42.013905 -18.581989 +v 91.946999 45.465900 -17.867989 +v 102.057007 -116.077744 -9.791992 +v 101.905014 -116.177765 -9.485989 +v 91.946999 45.619900 -18.377991 +v 88.951004 45.517895 -18.123989 +v 101.699005 -114.957764 -9.943993 +v -100.939003 -111.857758 -6.338001 +v -101.904999 -110.691757 -6.338001 +v -101.957001 -108.963760 -6.338001 +v -100.939003 -108.913773 -7.199997 +v -101.091003 -93.979813 -7.100002 +v -100.586998 -108.405777 -7.453999 +v -100.432999 -108.609756 -7.100002 +v 88.951004 46.227898 -18.985989 +v -40.233006 83.973816 -16.701996 +v -101.957001 -93.979813 -6.338001 +v -100.535004 -94.179810 -7.047997 +v -101.957001 -93.979813 -6.691998 +v 102.615005 -116.481766 -9.791992 +v -100.738998 -94.179810 -7.351997 +v 88.951004 46.737892 -19.191988 +v 91.946999 46.737892 -19.191988 +v 7.975003 70.053833 -16.701996 +v 88.951004 35.661919 -26.911968 +v 88.951004 36.831909 -25.691973 +v 91.946999 35.661919 -26.911968 +v 88.951004 35.561916 -27.925966 +v 102.615005 -116.077744 -9.537994 +v 104.189011 -116.839752 -9.437992 +v 91.946999 35.509918 -27.573967 +v 88.951004 36.221912 -29.145964 +v 103.023010 -116.581741 -9.129993 +v 104.495010 -116.839752 -9.129993 +v 91.946999 36.831909 -29.449963 +v 88.951004 37.185909 -29.553963 +v 88.951004 97.333771 -29.601969 +v 91.946999 97.333771 -29.601969 +v 101.853004 -115.315765 -9.385994 +v -97.385002 -121.463745 -19.495968 +v -105.868996 -110.843765 -7.251999 +v -106.730995 -111.401764 -7.251999 +v -105.462990 -110.743759 -6.947998 +v 91.946999 36.221912 -29.145964 +v 91.946999 -14.119972 -29.553957 +v -98.453003 -121.463745 -20.715963 +v -92.053001 -117.753769 -34.379932 +v 91.946999 -12.495982 -27.215963 +v 91.946999 -13.461984 -25.843966 +v 91.946999 -12.495982 -27.925961 +v -39.167004 84.127808 -16.701996 +v 91.946999 -13.205988 -29.145958 +v 106.118996 -114.043762 -6.691998 +v -103.786995 -117.343765 -7.403996 +v 106.019005 -113.687759 -5.066002 +v 102.413010 -116.685760 -9.485989 +v 100.937012 -118.415741 -19.191967 +v -106.072998 -116.329758 -7.657997 +v -39.423000 84.023819 -18.681997 +v 103.327011 -116.991760 -9.081997 +v 103.785004 -117.343765 -9.333992 +v -38.761005 84.479813 -18.681997 +v -38.457005 84.989807 -16.701996 +v 111.047005 -110.537766 -0.952011 +v -38.405003 85.241821 -18.681997 +v -38.761005 86.565811 -18.681997 +v -10.311000 90.527786 -18.681999 +v 105.308998 -117.295746 -9.029995 +v 105.157005 -117.039764 -8.875992 +v -98.147003 -119.481766 -35.141930 +v 102.004997 -119.429749 -19.495968 +v 106.933014 -116.429749 -8.977997 +v 106.019005 -117.039764 -8.977997 +v 107.491013 -113.129761 -6.947998 +v -113.893005 -121.463745 -9.281994 +v 101.447006 -119.125748 -21.373962 +v 107.289001 -115.719742 -9.181992 +v 105.256996 -117.243744 -9.437992 +v 105.967003 -116.429749 -9.181992 +v 100.937012 -118.415741 -21.677961 +v 107.899002 -114.653763 -8.823994 +v 107.595009 -114.553757 -8.519993 +v 106.781006 -116.077744 -8.723995 +v -40.994999 76.759827 -18.681997 +v -39.980999 77.115829 -18.681997 +v 107.643005 -115.363770 -8.977997 +v 107.289001 -115.923752 -8.723995 +v 102.361000 -119.581741 -21.373962 +v 107.899002 -113.433762 -8.875992 +v 107.237007 -115.057770 -9.081997 +v 107.595009 -113.943756 -9.029995 +v -106.987000 -115.363770 -9.537994 +v 91.845001 6.505976 -25.081970 +v 88.341003 6.505976 -26.401966 +v -9.959002 90.527786 -18.681999 +v -9.653003 90.627808 -16.701996 +v 88.341003 6.505976 -25.081970 +v 107.085007 -112.619766 -8.775993 +v 88.341003 8.533970 -25.081970 +v 91.845001 8.533970 -25.081970 +v 91.845001 8.533970 -28.587959 +v 91.845001 6.505976 -28.587959 +v 106.985016 -111.605774 -8.671993 +v 107.543015 -112.467758 -8.367996 +v 107.747002 -113.891769 -8.471996 +v 106.833008 -111.809769 -8.215996 +v 107.289001 -112.467758 -8.267994 +v 88.341003 8.533970 -26.401966 +v 107.390999 -113.637756 -8.671993 +v 104.951004 -115.415756 -23.049961 +v 88.341003 6.505978 -20.815981 +v 91.845001 6.505978 -18.581985 +v 88.341003 6.505978 -22.085978 +v 91.845001 6.505978 -22.085978 +v 106.527000 -111.809769 -8.267994 +v 88.341003 8.533972 -22.085978 +v 91.845001 8.533972 -18.581985 +v 104.799004 -111.095779 -8.113998 +v 104.189011 -111.047760 -8.419994 +v 105.509003 -111.047760 -8.623993 +v 106.223007 -110.995758 -8.571999 +v 106.729004 -111.809769 -8.775993 +v 91.845001 8.533972 -22.085978 +v 105.663002 -110.743759 -8.215996 +v 104.747002 -110.537766 -8.113998 +v 103.633011 -110.691757 -8.013992 +v -2.692996 92.965790 -16.701996 +v -1.524997 91.947800 -16.701996 +v 104.036995 -110.691757 -8.419994 +v -2.949001 94.031784 -16.548000 +v 102.667007 -111.095779 -8.165993 +v 101.751007 -111.961761 -8.113998 +v 103.123016 -110.843765 -8.013992 +v 101.499001 -112.723755 -7.657997 +v 102.513016 -111.757767 -7.757996 +v 101.954994 -112.467758 -7.657997 +v 101.499001 -114.043762 -7.505993 +v 101.699005 -113.687759 -7.757996 +v -52.783001 6.505978 -22.897976 +v 101.599014 -114.247757 -8.013992 +v 102.057007 -112.215759 -8.267994 +v -3.200999 94.337799 -16.495998 +v -3.405002 95.099792 -16.344002 +v -2.896998 95.403793 -16.495998 +v -101.042999 -114.501755 -12.891987 +v -55.069004 0.305993 -18.681988 +v -55.221001 -19.557961 -16.701984 +v -55.625004 -20.063957 -16.701984 +v -95.505005 -55.623890 -16.701981 +v -95.709000 -55.877892 -18.681980 +v -54.815002 -43.737915 -16.701981 +v -54.863003 -45.007904 -16.701981 +v -54.967003 -44.397919 -18.681982 +v -88.850990 -63.243874 -18.681980 +v 101.243011 -114.905762 -7.909992 +v 101.142998 -113.433762 -7.861996 +v 101.195007 -114.653763 -7.605999 +v 101.195007 -113.687759 -7.605999 +v -85.142998 -63.243874 -18.681980 +v -88.850990 -63.243870 -16.701977 +v 101.699005 -115.923752 -7.757996 +v 101.954994 -116.125763 -7.403996 +v 102.308998 -116.025757 -7.403996 +v 104.241013 -117.091751 -7.199997 +v 102.565002 -116.025757 -7.557999 +v -85.142998 -63.243870 -16.701977 +v -88.850990 -60.857876 -16.701981 +v -103.682999 -117.295746 -13.347980 +v -92.053001 -60.857876 -18.581978 +v -92.053001 -60.857876 -16.701981 +v -89.053001 -60.957882 -18.581978 +v -89.053001 -64.567871 -18.377975 +v -89.053001 -65.175873 -18.985975 +v 101.905014 -115.109756 -7.757996 +v 102.109009 -115.667755 -7.909992 +v -89.053001 -65.987869 -19.191975 +v 102.971008 -116.787750 -7.861996 +v 104.547012 -116.839752 -7.505993 +v 102.767014 -116.381760 -7.861996 +v -92.053001 -64.463867 -18.123974 +v -89.053001 -64.463867 -17.057980 +v -107.848999 -113.333755 -14.009983 +v -92.053001 -64.361862 -17.563980 +v -89.053001 -64.767868 -16.547981 +v -92.053001 -64.919861 -16.343983 +v -92.053001 -63.243870 -16.701977 +v -92.053001 -65.681870 -15.989979 +v 104.901016 -116.991760 -7.757996 +v 104.291008 -117.343765 -7.709999 +v -95.962990 -63.243870 -16.701977 +v -95.962990 -63.243874 -18.681980 +v -95.911003 -56.537888 -16.701981 +v -77.723000 -63.957870 -16.701977 +v -60.196999 -48.613895 -16.701981 +v 103.581001 -117.243744 -7.403996 +v 102.513016 -116.735748 -7.709999 +v 105.561005 -117.243744 -7.299995 +v -102.007004 -112.267761 -14.415981 +v -85.142998 -68.729858 -16.701977 +v -88.850990 -68.729858 -16.701977 +v -77.675003 -90.473801 -16.701977 +v -102.058998 -112.419769 -14.619984 +v -77.927002 -89.813812 -16.701977 +v -77.723000 -63.957874 -18.681980 +v -101.500992 -114.501755 -14.667980 +v -101.500992 -113.687759 -14.619984 +v -102.058998 -115.771759 -14.771980 +v -101.549004 -114.043762 -15.023979 +v -101.653000 -112.215759 -14.971977 +v 105.867004 -116.685760 -7.709999 +v 106.019005 -116.991760 -7.657997 +v 107.137009 -115.515762 -7.605999 +v -88.850990 -71.067856 -16.701977 +v -88.850990 -68.729866 -18.681980 +v -92.053001 -71.067856 -16.701977 +v 106.474998 -116.787750 -7.505993 +v 106.423004 -116.735748 -7.199997 +v -92.053001 -70.967850 -18.581974 +v -89.053001 -70.967850 -15.581982 +v -92.053001 -70.967850 -15.581982 +v -92.053001 -67.461868 -18.123974 +v -89.053001 -67.005859 -18.833979 +v -89.053001 -67.461868 -18.123974 +v 107.443008 -115.771759 -7.251999 +v -89.053001 -67.461868 -17.057980 +v -92.053001 -67.357864 -16.801979 +v -89.053001 -67.005859 -16.343983 +v -89.053001 -70.457855 -14.719982 +v -89.053001 -70.915848 -15.229980 +v -92.053001 -70.763855 -14.923981 +v -48.767002 10.009974 -20.305981 +v -49.938999 10.719973 -20.509983 +v -92.053001 -61.467873 -14.719982 +v -92.053001 -61.009880 -15.229984 +v -89.053001 -61.619881 -14.667984 +v -89.053001 -60.957882 -15.581985 +v 107.695000 -113.637756 -6.996002 +v 107.899002 -114.449768 -7.147999 +v -89.053001 -65.175873 -16.191978 +v -89.053001 -66.243866 -15.989979 +v 107.899002 -113.433762 -7.453999 +v 107.795013 -115.161758 -7.351997 +v 107.695000 -112.977768 -7.557999 +v 107.390999 -114.143768 -7.453999 +v -92.053001 -67.005859 -16.343983 +v -92.053001 -68.729858 -16.717979 +v 106.019005 -111.299759 -6.947998 +v 105.713013 -111.351761 -7.147999 +v 106.577011 -111.961761 -7.251999 +v -52.731003 9.095974 -22.491976 +v 107.491013 -114.247757 -7.100002 +v 107.185005 -112.977768 -7.251999 +v 105.765015 -110.843765 -7.403996 +v 107.137009 -112.519760 -7.505993 +v 106.271011 -111.047760 -7.047997 +v 106.881004 -111.505768 -7.403996 +v 104.343002 -110.995758 -6.947998 +v 105.561005 -110.843765 -6.947998 +v 104.088997 -111.147766 -7.100002 +v 105.409012 -111.095779 -7.453999 +v -2.896998 94.233795 -16.548000 +v 103.071007 -111.505768 -7.147999 +v 102.919006 -111.147766 -6.844002 +v 102.209007 -111.809769 -6.795998 +v -89.053001 -70.967850 -18.581974 +v 104.799004 -110.537766 -7.199997 +v 103.733002 -110.639755 -7.251999 +v 103.427002 -110.791763 -6.895996 +v 102.615005 -111.147766 -6.947998 +v 101.751007 -112.113770 -6.844002 +v 101.905014 -111.757767 -7.199997 +v 102.109009 -111.961761 -7.403996 +v 103.733002 -111.047760 -7.403996 +v 102.004997 -112.467758 -7.299995 +v -60.859001 -48.865898 -18.681982 +v -52.731003 9.095974 -20.509981 +v -54.407001 -45.817917 -18.681982 +v -60.196999 -48.613899 -18.681982 +v -54.407001 -45.817917 -16.701981 +v -59.539001 -48.561893 -16.701981 +v -58.879002 -48.765907 -18.681982 +v -101.805000 -115.009766 -16.701973 +v -102.311005 -115.871765 -16.701973 +v -103.125000 -116.481766 -16.701973 +v -5.080997 -84.173828 -16.701977 +v -4.421001 -84.273819 -16.701977 +v -4.776996 -84.225815 -18.681978 +v -2.844997 94.995789 -16.144001 +v -2.386997 93.471786 -16.344002 +v 8.433003 -90.827805 -16.701977 +v 0.251004 98.451782 -14.262009 +v 8.433003 -90.827805 -18.681976 +v 16.762997 -110.691757 -18.681974 +v -103.449005 -115.077759 -6.338001 +v -103.481003 -115.109756 -4.762005 +v 10.057004 -117.497757 -16.701973 +v 8.737004 -119.377747 -16.701973 +v 9.347005 -119.023743 -16.701973 +v -2.996997 93.371796 -16.191998 +v -2.744998 93.117798 -16.395996 +v 9.347005 -119.023743 -18.681973 +v -52.681000 7.823975 -22.695976 +v 8.737004 -119.377747 -18.681973 +v 2.842999 -117.853760 -18.681973 +v 5.129002 -119.481750 -18.781969 +v 5.029004 -121.257751 -18.681973 +v 2.842999 -117.853760 -16.701973 +v 1.981000 -117.853760 -16.701973 +v 13.766995 -119.481750 -17.361977 +v 0.912999 -119.481750 -23.305958 +v -2.339000 92.507797 -16.191998 +v -2.187000 92.861786 -15.888000 +v 14.324994 -121.463745 -17.767975 +v 10.767003 -121.463745 -14.619984 +v -50.852997 6.605984 -22.591976 +v 48.512997 8.485975 -20.305979 +v 49.070995 8.687971 -20.305979 +v 10.767003 -119.481750 -14.619984 +v 16.204998 -119.481750 -18.529972 +v 2.232999 -119.481750 -24.421953 +v 1.675000 -119.481750 -23.711958 +v 1.318997 -121.463745 -23.457958 +v 2.232999 -121.463745 -24.421953 +v 0.050999 -119.481750 -23.153959 +v -0.407001 -121.463745 -23.201958 +v -1.118999 -119.481750 -18.781969 +v -5.080997 -119.481750 -18.781969 +v -1.321002 -121.463745 -18.833971 +v -92.053001 -64.919861 -18.833979 +v -3.048999 95.909790 -15.989998 +v 104.901016 -115.415756 -21.677963 +v 107.947006 -118.563766 -19.191967 +v 0.302998 -119.481750 -19.291965 +v -0.459003 -121.463745 -19.191967 +v 1.218999 -119.481750 -18.781969 +v 100.481003 95.503784 -6.338024 +v 5.129002 -121.463745 -18.781969 +v 1.370999 -121.463745 -18.781969 +v 1.622998 -125.473740 -18.429966 +v 1.774998 -121.463745 -17.411976 +v 1.423001 -125.473740 -16.649971 +v 1.370999 -121.463745 -16.599976 +v 5.129002 -121.463745 -16.599976 +v 5.129002 -119.481750 -16.599976 +v 0.557004 -119.481750 -16.191975 +v 1.218999 -119.481750 -16.599976 +v 102.057007 -112.571762 -6.947998 +v 1.522999 -117.853760 -16.701973 +v 5.029004 -121.257751 -16.701973 +v 1.522999 -121.257751 -16.701973 +v 102.209007 -115.819763 -7.199997 +v 104.799004 -116.839752 -6.691998 +v 101.803009 96.623795 -7.200024 +v 1.522999 -121.257751 -18.681973 +v 1.522999 -121.257751 -17.563976 +v 101.803009 96.623795 -8.572025 +v 102.667007 93.775787 -9.082020 +v 1.522999 -117.853760 -18.681973 +v 104.189011 93.623795 -9.082020 +v 105.256996 93.727798 -9.082020 +v 106.729004 94.489792 -9.082020 +v 1.981000 -117.853760 -18.681973 +v 2.795003 -117.601746 -17.411976 +v 2.795003 -117.343765 -16.091980 +v 107.289001 95.099792 -8.776016 +v 0.099003 -117.853760 -16.191975 +v 0.965001 -117.701752 -16.905975 +v 1.271001 -117.601746 -15.229977 +v 1.522999 -119.785751 -17.513973 +v 1.271001 -117.701752 -17.819973 +v -2.744998 97.079788 -16.396000 +v -2.386997 96.775787 -16.600002 +v -3.200999 96.113800 -16.447998 +v -2.643001 96.013794 -16.243999 +v 0.965001 -119.785751 -16.495975 +v 107.289001 93.423798 -7.200020 +v 107.289001 96.623795 -7.200024 +v 105.765015 97.485779 -8.776020 +v 104.547012 98.195786 -8.572025 +v 104.547012 98.195786 -7.200024 +v 103.581001 97.079788 -9.082024 +v 102.413010 95.809799 -9.082020 +v 104.595001 96.471786 -9.082024 +v 103.223000 95.657791 -9.082020 +v 104.189011 96.165787 -9.334015 +v 103.327011 94.947784 -9.334015 +v 103.174995 94.437790 -9.082020 +v 0.813000 -125.169739 -16.395969 +v 0.508999 -125.473740 -16.039974 +v 104.291008 93.827789 -9.334015 +v -0.052997 -119.785751 -16.191975 +v 0.661000 -119.481750 -16.649975 +v -0.101001 -119.481750 -16.495975 +v 105.967003 94.741791 -9.082020 +v 1.117001 -119.481750 -18.223972 +v 105.357010 96.213791 -9.082020 +v 106.423004 96.265793 -9.082020 +v 107.289001 96.623795 -8.572025 +v -1.169002 -119.481750 -17.867970 +v -1.424999 -119.785751 -17.361977 +v 0.608998 -119.481750 -18.733969 +v 1.218999 -119.785751 -18.581970 +v -1.015003 -119.785751 -18.781969 +v -1.220996 -125.273727 -18.581966 +v -1.473003 -119.785751 -17.767975 +v -1.473003 -117.853760 -16.701973 +v -1.473003 -121.257751 -17.615974 +v -0.914996 -119.785751 -16.547977 +v -0.863002 -125.273727 -16.447971 +v -1.728999 -125.473740 -17.715969 +v -1.272998 -125.473740 -16.547974 +v -4.979000 -121.257751 -18.681973 +v -1.473003 -121.257751 -17.795975 +v -1.473003 -117.853760 -18.681973 +v -1.473003 -121.257751 -16.701973 +v -4.979000 -121.257751 -16.701973 +v -1.982997 -117.853760 -16.701973 +v -0.762996 -117.853760 -15.581978 +v -0.814998 -117.853760 -16.447975 +v -1.169002 -117.701752 -17.615974 +v -0.914996 -117.701752 -16.905975 +v -1.118999 -115.619751 -17.309975 +v -0.762996 -115.619751 -16.751976 +v -0.253002 -117.701752 -16.495975 +v 0.405003 -117.701752 -16.495975 +v 0.050999 -116.025757 -14.515984 +v -0.711002 93.727798 -6.338024 +v -0.863002 -115.771759 -15.023979 +v -2.692996 -117.343765 -16.091980 +v -2.692996 -117.601746 -17.667976 +v -1.931003 -117.853760 -18.681973 +v -0.711002 93.727798 -5.272026 +v -0.304996 -117.853760 -19.139969 +v -0.662998 -117.701752 -18.681973 +v -1.169002 -115.619751 -17.819973 +v 0.251004 -117.701752 -18.885967 +v -0.711002 -115.619751 -18.681974 +v 101.547012 -113.891769 -6.795998 +v 101.699005 -113.585770 -7.047997 +v 101.954994 -116.177765 -11.419991 +v -0.711002 -115.467758 -18.985970 +v -1.982997 -115.467758 -18.733971 +v -0.253002 -115.467758 -19.901968 +v 0.251004 -115.619751 -18.885969 +v -1.169002 -115.771759 -20.153971 +v -2.692996 -116.025757 -19.291967 +v 0.050999 -116.025757 -20.867966 +v 1.423001 -115.771759 -20.053967 +v -1.473003 -117.601746 -20.001966 +v 0.050999 -117.343765 -20.867964 +v -2.692996 -117.343765 -19.291965 +v -0.304996 -117.853760 -19.901966 +v 1.218999 -117.853760 -19.595966 +v 1.271001 -117.601746 -20.153969 +v -1.576999 92.661804 -16.243999 +v -1.473003 92.251785 -16.447998 +v 2.795003 -117.343765 -19.291965 +v 2.795003 -116.025757 -19.291967 +v 1.879002 -115.467758 -18.985970 +v 2.795003 -115.771759 -17.867970 +v 2.285001 -115.467758 -17.867970 +v 0.861004 -115.619751 -18.629971 +v 1.271001 -115.619751 -17.767975 +v 2.795003 -116.025757 -16.091980 +v 109.067017 -117.447754 -21.677961 +v 1.879002 -115.467758 -16.343979 +v 0.965001 -115.467758 -15.633980 +v 88.951004 45.465900 -17.309994 +v 1.064999 -115.771759 -15.125980 +v -0.610996 -115.467758 -16.343979 +v -1.272998 -115.467758 -15.887978 +v 104.547012 -119.987747 -19.495968 +v 0.302998 -115.619751 -16.495975 +v 0.912999 -115.619751 -16.801975 +v 51.256996 6.657976 -20.305979 +v 50.137001 6.047977 -20.305979 +v -49.328999 4.723982 -22.643974 +v 0.861004 -117.701752 -18.629971 +v 103.427002 -119.581741 -21.677961 +v 49.937008 5.943981 -16.701988 +v -88.953003 6.505976 -28.587959 +v -91.747002 6.505976 -28.587959 +v -91.747002 6.505976 -25.081970 +v -91.747002 8.533970 -25.081970 +v -88.242996 8.533970 -25.081970 +v -88.242996 6.505976 -25.081970 +v -0.814998 91.947800 -15.838001 +v -0.101001 91.593796 -16.243999 +v 0.355000 91.593796 -16.040001 +v -0.863002 91.693787 -16.191998 +v -1.272998 92.405792 -15.940002 +v -0.204997 92.151810 -16.040001 +v -2.692996 -116.025757 -16.091980 +v 77.925003 -90.169800 -18.681976 +v 77.925003 -64.261871 -18.681980 +v 85.241013 -68.729866 -18.681980 +v 85.241013 -63.243874 -18.681980 +v 85.241013 -68.729858 -16.701977 +v 88.951004 -68.729858 -16.701977 +v -2.692996 -115.771759 -17.309975 +v 88.951004 -67.563866 -17.309978 +v -2.034999 -115.467758 -16.801975 +v 88.951004 -61.619881 -14.667984 +v 88.951004 -65.987869 -15.989979 +v 88.951004 -67.357864 -18.377975 +v 91.946999 -67.357864 -18.377975 +v 91.946999 -66.749863 -18.985975 +v 88.951004 -66.749863 -18.985975 +v 91.946999 -65.987869 -19.191975 +v 91.946999 -65.175873 -18.985975 +v 91.946999 -14.477972 -25.591969 +v 78.029007 -64.615860 -16.701977 +v 77.621002 -63.701874 -16.701977 +v 60.605007 -48.713905 -18.681982 +v 59.587002 -48.561893 -16.701981 +v 0.861004 92.303802 -16.144001 +v -0.253002 92.151810 -16.243999 +v 102.667007 -116.429749 -13.247982 +v 77.773010 -90.473801 -16.701977 +v 104.747002 -112.773758 -23.353962 +v 1.928998 92.405792 -16.344002 +v 103.023010 -114.095764 -21.677963 +v -47.501003 6.299984 -22.695976 +v 1.575001 -125.321747 -17.615971 +v -47.195004 9.095974 -22.491976 +v 2.489003 92.861786 -15.734001 +v -0.711002 -119.481750 -18.581970 +v -5.080997 -119.481750 -18.681973 +v -2.187000 -119.481750 -24.421953 +v -2.491000 -119.481750 -25.235954 +v -1.625003 -119.481750 -27.621948 +v 105.003006 -112.519760 -21.677963 +v 103.785004 -112.671768 -21.677963 +v 103.937004 -112.571762 -23.049961 +v 111.148994 -110.691757 -1.206013 +v 104.647003 -112.467758 -23.049961 +v 0.050999 -117.343765 -14.515984 +v 2.232999 -119.481750 -26.963949 +v 2.589001 -119.481750 -25.691954 +v 2.690999 92.861786 -15.888000 +v 2.995000 93.269791 -15.888000 +v 2.589001 -121.463745 -25.691954 +v -0.001003 -121.463745 -28.231947 +v -1.625003 -121.463745 -27.621948 +v -2.339000 -121.463745 -26.553949 +v -2.491000 -121.463745 -25.235954 +v -1.220996 -119.481750 -23.457958 +v -1.625003 -121.463745 -23.711958 +v 1.318997 92.251785 -15.786003 +v 107.847015 -113.485764 -7.047997 +v 0.912999 -121.463745 -28.077950 +v 2.232999 -121.463745 -26.963949 +v 103.123016 -113.485764 -3.442009 +v 107.289001 -115.211761 -7.100002 +v 107.033005 -115.363770 -7.299995 +v 105.409012 -112.773758 -23.049961 +v 47.902996 5.791981 -13.905998 +v 105.561005 -112.875763 -21.677963 +v 2.690999 93.727798 -15.786003 +v -14.274997 -119.481750 -17.767975 +v -10.669002 -119.481750 -14.619984 +v -9.449000 -121.463745 -14.009983 +v -5.080997 -121.463745 -18.781969 +v -5.080997 -121.463745 -16.599976 +v -15.445002 -121.463745 -18.377972 +v -10.669002 -121.463745 -14.619984 +v -1.728999 -121.463745 -17.667976 +v -1.321002 -121.463745 -16.547977 +v -13.716998 -121.463745 -17.361977 +v 106.729004 -115.973755 -7.147999 +v -0.052997 91.947800 -15.838001 +v 39.064999 -4.467999 -16.701984 +v 0.050999 -121.463745 -15.939980 +v -0.559001 -125.473740 -16.039974 +v -110.389000 -125.473740 -6.843998 +v 110.491013 -125.473740 -6.843998 +v 111.809006 -125.473740 -7.351994 +v 111.148994 -121.463745 -7.100002 +v 113.029007 -121.463745 -8.215996 +v 115.011017 -121.463745 -11.975986 +v 114.653008 -121.463745 -10.553989 +v 114.653008 -125.473740 -10.553986 +v 113.995003 -121.463745 -9.281994 +v 1.167004 -121.463745 -16.343979 +v 1.117001 -125.473740 -20.305964 +v -0.204997 -121.463745 -16.091980 +v 1.370999 -126.795731 -19.595966 +v -1.118999 -119.481750 -16.599976 +v 1.012997 -127.049728 -19.191967 +v -0.001003 -126.591736 -20.257967 +v -1.118999 -126.287735 -20.153969 +v -0.610996 -126.795731 -19.901966 +v -1.931003 -126.591736 -19.291965 +v 105.205002 -116.839752 -7.251999 +v -2.438998 -126.491730 -18.429966 +v -2.491000 -126.591736 -17.715969 +v -1.776996 -127.049728 -17.715969 +v -2.590999 -126.387726 -17.105972 +v -2.491000 -125.829727 -16.343975 +v -2.082996 -125.473740 -15.733974 +v -1.828998 -126.387726 -15.733974 +v -1.576999 -125.473740 -15.329975 +v -48.667004 9.957973 -22.695978 +v -0.101001 -125.321747 -16.143974 +v -89.104996 -125.473755 -30.569941 +v -89.356995 -121.463745 -30.363941 +v -90.780998 -121.463745 -29.959944 +v -91.595001 -121.463745 -30.363941 +v -92.053001 -121.463745 -26.605953 +v -92.053001 -121.205750 -26.859949 +v -92.053001 -121.257751 -33.107933 +v -89.053001 -121.257751 -33.107933 +v -89.053001 -121.257751 -36.259926 +v -89.053001 -117.753769 -34.379932 +v -89.053001 -117.753769 -33.107933 +v -92.053001 -117.753769 -33.107933 +v -92.053001 -115.161758 -34.379936 +v -92.053001 -120.853760 -36.563927 +v -92.053001 -84.835815 -29.553949 +v -92.053001 -13.815971 -29.449957 +v -89.053001 -14.119972 -29.553957 +v -92.053001 -14.323983 -36.563942 +v -92.053001 -13.205988 -29.145958 +v -92.053001 -12.595988 -28.283960 +v -92.053001 6.453979 -28.687962 +v -92.053001 8.637974 -28.687962 +v -92.053001 36.221912 -29.145964 +v -92.053001 37.185909 -29.553963 +v -92.053001 92.151794 -36.563953 +v -92.053001 97.333771 -29.601969 +v -89.053001 92.151794 -36.563953 +v -89.053001 -120.953751 -36.563927 +v -92.053001 -121.257751 -36.207928 +v 101.547012 -114.857758 -8.061993 +v -89.053001 -85.493820 -29.297949 +v -1.169002 -125.473740 -18.935968 +v -89.053001 3.657980 -33.059952 +v -0.253002 -121.463745 -19.391968 +v -0.356998 -125.373734 -19.239969 +v 91.946999 6.453981 -22.439976 +v 0.912999 -121.463745 -19.191967 +v 0.150998 -125.473740 -19.443964 +v -89.053001 -12.495982 -27.925961 +v -89.053001 -13.205988 -29.145958 +v 0.912999 -125.473740 -19.191967 +v -92.053001 -12.595988 -26.911963 +v -89.053001 -12.495982 -27.215963 +v -89.053001 49.301884 -32.625961 +v 1.318997 -125.373734 -18.629967 +v -89.053001 37.185909 -29.553963 +v -89.053001 8.637974 -28.687962 +v -89.053001 8.637974 -24.725969 +v -92.053001 8.637974 -24.725969 +v -92.053001 8.943974 -24.319971 +v 1.522999 -119.785751 -17.767975 +v -89.053001 9.043974 -23.101974 +v -89.053001 8.943974 -24.319971 +v -92.053001 9.043974 -23.101974 +v -92.053001 8.637976 -22.439976 +v -92.053001 8.637976 -18.581985 +v -92.053001 35.661919 -28.283966 +v -89.053001 36.527912 -29.297964 +v -89.053001 8.637976 -18.581985 +v -89.053001 35.561916 -27.925966 +v -89.053001 8.637976 -22.439976 +v -92.053001 37.541912 -25.591974 +v -92.053001 36.527912 -25.843971 +v -92.053001 35.661919 -26.911968 +v -89.053001 35.661919 -26.911968 +v 0.709004 -119.785751 -19.037970 +v -89.053001 36.527912 -25.843971 +v -89.053001 46.737892 -19.191988 +v -89.053001 41.909908 -18.581989 +v -77.826996 45.313896 -18.681993 +v -60.859001 29.921925 -18.681992 +v -77.826996 45.313900 -16.701992 +v -88.850990 41.909908 -16.701992 +v -92.053001 41.909908 -18.581989 +v -89.053001 42.013905 -18.581989 +v -89.053001 46.227898 -18.985989 +v -89.053001 42.165905 -15.075996 +v -92.053001 42.265900 -14.923996 +v -89.053001 42.671909 -14.667999 +v -92.053001 42.519909 -14.719997 +v -92.053001 45.465900 -17.309994 +v -89.053001 45.517895 -17.057995 +v -89.053001 45.517895 -18.123989 +v -92.053001 45.619900 -18.377991 +v -92.053001 46.737892 -19.191988 +v -92.053001 47.295883 -19.191988 +v -92.053001 48.057884 -18.833992 +v -92.053001 49.785889 -18.681993 +v -92.053001 92.151810 -18.681999 +v -92.053001 100.281784 -25.591982 +v -89.053001 100.281784 -25.591982 +v -89.053001 47.295883 -19.191988 +v -89.053001 48.413891 -18.377991 +v -92.053001 48.617893 -17.563995 +v -89.053001 48.617893 -17.867989 +v -0.101001 -119.785751 -19.191967 +v -92.053001 48.261890 -16.547997 +v -92.053001 49.785892 -16.701992 +v -95.962990 49.785892 -16.701992 +v -95.962990 49.785889 -18.681993 +v -96.014999 57.151875 -16.701992 +v -95.962990 56.895878 -18.681993 +v -108.000999 91.489807 -18.681999 +v -108.000999 91.489807 -16.701996 +v -77.826996 71.221832 -16.701996 +v -89.509003 90.527786 -16.701996 +v -104.444992 93.775787 -16.701996 +v -105.563004 94.385788 -16.701996 +v -104.444992 93.775787 -18.681999 +v -105.563004 94.385788 -18.681999 +v -105.715004 94.793793 -18.681999 +v -105.614998 95.451797 -18.681999 +v -108.917000 92.761795 -18.681999 +v -109.425003 94.233795 -18.681999 +v -109.425003 95.809799 -18.681999 +v -109.425003 94.233795 -16.701996 +v -107.392990 99.061783 -16.702000 +v -104.701004 96.265793 -16.701996 +v -104.039001 96.213791 -16.701996 +v -105.107002 96.113800 -18.681999 +v -104.039001 96.213791 -18.681999 +v -103.481003 95.809799 -16.701996 +v -103.277000 95.451797 -18.681999 +v -103.224991 95.251785 -16.701996 +v -102.210991 99.467773 -16.702000 +v -103.376991 94.385788 -16.701996 +v -90.375000 90.881790 -16.701996 +v -90.375000 90.881790 -18.581993 +v -92.053001 92.151810 -18.581993 +v -92.053001 105.667770 -18.223999 +v -89.053001 105.157776 -18.477997 +v -89.053001 105.867767 -18.072002 +v -89.053001 90.527786 -18.581993 +v -89.053001 90.527786 -18.681999 +v -49.683002 90.527786 -17.641994 +v -49.910999 90.527786 -16.701996 +v -10.311000 90.527786 -16.701996 +v -40.233006 87.123810 -16.701996 +v -39.167004 86.917801 -16.701996 +v -39.980999 87.123810 -18.681997 +v -38.356998 85.547821 -16.701996 +v 2.743001 93.471786 -16.295998 +v 1.522999 74.983841 -16.701996 +v 1.622998 75.235840 -18.681997 +v 10.363004 90.527786 -18.681999 +v -49.938999 10.719973 -22.491978 +v 1.423001 76.353836 -18.681997 +v 1.064999 76.759827 -18.681997 +v 1.622998 85.241821 -18.681997 +v 1.271001 86.565811 -18.681997 +v 0.302998 87.123810 -18.681997 +v 9.753003 90.627808 -18.681999 +v -1.015003 86.765823 -16.701996 +v -0.253002 83.973816 -16.701996 +v 1.423001 84.735825 -16.701996 +v 5.585003 94.489792 -16.701996 +v 1.622998 85.547821 -16.701996 +v -91.595001 -125.473755 -33.007935 +v 5.181004 95.047791 -16.701996 +v 1.064999 86.765823 -16.701996 +v 4.571003 97.129791 -18.681999 +v 4.215001 97.789780 -16.702000 +v 3.403004 94.233795 -16.701996 +v 3.099003 93.423798 -16.701996 +v 3.147000 93.523804 -16.495998 +v 110.895004 -110.943756 -1.358009 +v 106.375008 -119.377747 -19.191967 +v 1.774998 92.151810 -16.447998 +v 0.251004 91.693787 -16.495998 +v 0.456998 -125.473740 -14.871979 +v 105.919006 -114.753754 -6.691998 +v 115.011017 -125.473740 -11.975983 +v 113.539017 -125.473740 -8.723991 +v -90.477005 -125.473755 -33.411934 +v 89.407013 -125.473755 -30.363941 +v 90.527008 -125.473755 -29.959944 +v 90.831009 -121.463745 -29.959944 +v 89.917007 -121.463745 -30.059940 +v 88.951004 -121.463745 -26.605953 +v 88.951004 -121.463745 -30.973942 +v 88.951004 -121.463745 -33.463936 +v 88.951004 -121.205750 -26.859949 +v 88.951004 -121.463745 -32.397938 +v 88.797012 -121.463745 -31.991938 +v 88.899002 -125.473755 -32.297935 +v 0.251004 91.999802 -16.395996 +v -51.105000 10.057970 -22.695978 +v 104.747002 -119.987747 -21.373962 +v 1.827000 92.609787 -16.344002 +v 3.047002 94.947784 -16.243999 +v 3.147000 94.081787 -16.295998 +v 2.279004 92.753799 -16.344002 +v 2.795003 94.233795 -16.701996 +v 2.895001 95.147797 -16.701996 +v 3.147000 94.843781 -16.295998 +v 2.895001 95.861786 -16.295998 +v 1.423001 97.537781 -16.448002 +v 2.437001 96.723785 -16.296001 +v 1.218999 95.961792 -16.701996 +v 2.795003 95.861786 -16.092003 +v 89.917007 -121.463745 -33.311935 +v -1.728999 97.281784 -16.244003 +v -1.473003 97.841782 -16.092007 +v -2.949001 96.471786 -16.040005 +v -49.632996 8.791973 -22.591976 +v 3.351002 95.809799 -16.144001 +v 3.403004 95.709793 -16.701996 +v 2.185002 92.557785 -16.344002 +v 88.951004 -121.005753 -26.657949 +v 2.064999 92.541794 -16.344002 +v 0.861004 97.891785 -18.681999 +v 0.050999 98.043793 -18.681999 +v -1.118999 97.943787 -18.985994 +v -0.356998 98.147781 -18.985994 +v -4.421001 98.551788 -19.191994 +v -3.300998 99.671783 -19.191994 +v -3.200999 100.075775 -19.495995 +v 114.909012 -125.473740 -25.539951 +v 114.909012 -121.463745 -25.539951 +v -5.183002 98.043793 -19.495995 +v -4.167003 99.313782 -21.373989 +v -5.183002 98.043793 -21.373989 +v -5.234996 97.181793 -19.191994 +v -5.945003 95.147797 -19.495995 +v -5.842998 96.317795 -21.373989 +v -5.741000 93.319794 -19.495995 +v -5.335002 93.117798 -19.191994 +v -2.797000 96.723785 -19.139996 +v 91.946999 6.453981 -18.581985 +v 91.946999 5.995983 -23.101974 +v -0.101001 91.593796 -19.191994 +v 4.571003 91.593796 -19.191994 +v 1.370999 91.999802 -19.139996 +v 5.181004 95.047791 -18.681999 +v 9.195004 90.881790 -16.701996 +v 10.057004 90.527786 -16.701996 +v 10.363004 90.527786 -16.701996 +v 3.453000 94.995789 -15.838001 +v 9.295003 72.441833 -16.701996 +v 9.905004 72.543839 -16.701996 +v 38.507000 86.055817 -16.701996 +v 39.217007 86.917801 -16.701996 +v 3.251004 94.133789 -15.734001 +v 40.335003 87.123810 -16.701996 +v 40.030998 87.123810 -18.681997 +v 41.045010 86.765823 -18.681997 +v 88.951004 90.527786 -18.681999 +v 41.654995 85.547821 -18.681997 +v 76.049011 72.543839 -18.681995 +v 76.707001 72.391830 -18.681995 +v 88.951004 47.803890 -18.985989 +v 88.951004 48.617893 -17.867989 +v 91.946999 48.261890 -18.629990 +v 91.946999 47.295883 -19.191988 +v 91.946999 52.019886 -18.581989 +v 91.946999 48.617893 -17.309994 +v 88.951004 48.413891 -16.801994 +v 88.951004 49.785892 -16.701992 +v 88.951004 51.919880 -15.075996 +v 88.951004 48.057888 -16.343998 +v 88.951004 51.513882 -14.719997 +v 91.946999 51.513882 -14.719997 +v 91.946999 42.265900 -14.923996 +v 91.946999 42.013905 -15.581997 +v 88.951004 42.013905 -18.581989 +v 91.946999 41.909908 -18.581989 +v 91.946999 36.527912 -25.843971 +v 56.285000 -125.473740 -13.247978 +v 1.827000 -126.235733 -19.799967 +v 91.946999 52.123882 -18.581989 +v 91.946999 91.999802 -18.681999 +v 96.060997 57.151875 -18.681995 +v 2.285001 -126.845734 -18.019970 +v 88.951004 52.123882 -18.581989 +v 88.951004 52.123882 -16.701992 +v 91.946999 51.919880 -15.075996 +v 91.946999 48.057888 -16.343998 +v 92.151001 52.123882 -16.701992 +v 92.151001 49.785892 -16.701992 +v 92.151001 49.785889 -18.681993 +v 96.013016 49.785889 -18.681993 +v 96.013016 49.785892 -16.701992 +v 96.060997 56.895878 -16.701992 +v 108.051010 91.489807 -16.701996 +v 108.556999 92.099792 -18.681999 +v 109.015015 92.761795 -16.701996 +v 109.523010 95.047791 -16.701996 +v 109.271011 93.471786 -18.681999 +v 109.523010 95.047791 -18.681999 +v 104.547012 93.775787 -18.681999 +v 105.357010 94.081787 -18.681999 +v 109.271011 96.571793 -18.681999 +v 105.765015 94.793793 -18.681999 +v 105.713013 95.451797 -18.681999 +v 105.157005 96.113800 -18.681999 +v 102.971008 99.771790 -18.681999 +v 2.895001 96.013794 -15.686001 +v 3.099003 96.519791 -15.786007 +v 102.261002 99.467773 -16.702000 +v 103.733002 99.975784 -16.702000 +v 104.547012 100.027771 -18.681999 +v 106.071014 99.771790 -16.702000 +v 103.885010 96.113800 -16.701996 +v 105.157005 96.113800 -16.701996 +v -1.828998 -126.795731 -16.295971 +v 106.781006 99.467773 -18.681999 +v 108.051010 98.551788 -18.681999 +v 109.271011 96.571793 -16.702000 +v 108.556999 97.943787 -16.702000 +v 105.612999 94.385788 -16.701996 +v 104.547012 93.775787 -16.701996 +v 103.427002 94.385788 -16.701996 +v 103.733002 94.081787 -18.681999 +v 91.946999 91.999802 -18.581993 +v 91.946999 105.157776 -18.477997 +v 88.951004 90.527786 -18.581993 +v 90.169006 90.727798 -18.581993 +v 89.559006 90.527786 -16.701996 +v 1.575001 97.485779 -15.686005 +v 2.690999 97.027786 -15.634007 +v 49.657005 90.527786 -18.681999 +v 39.469006 87.021805 -18.681997 +v 38.507000 86.055817 -18.681997 +v -0.610996 -125.473740 -14.923973 +v -89.612999 -125.473755 -30.163940 +v -113.893005 -125.473740 -9.281990 +v 39.012997 84.279800 -16.701996 +v -112.369003 -121.463745 -7.757996 +v 39.469006 77.011826 -18.681997 +v 38.507000 76.049835 -18.681997 +v 38.507000 74.983841 -18.681997 +v 39.012997 74.321838 -18.681997 +v 40.030998 73.915833 -18.681997 +v 1.370999 97.637772 -16.092007 +v 2.536999 96.419785 -15.888004 +v 2.033002 97.585785 -16.144005 +v 42.977001 72.543839 -16.701996 +v 76.049011 72.543839 -16.701996 +v 40.030998 73.915833 -16.701996 +v 39.217007 74.117844 -16.701996 +v 40.840996 74.117844 -16.701996 +v -111.759003 -125.473740 -7.351994 +v 41.402996 74.725830 -18.681997 +v 41.654995 75.539825 -16.701996 +v 41.654995 75.539825 -18.681997 +v 41.402996 76.353836 -18.681997 +v 41.402996 76.353836 -16.701996 +v 40.840996 76.911835 -18.681997 +v 41.555004 84.989807 -18.681997 +v 41.654995 85.547821 -16.701996 +v 41.555004 86.055817 -16.701996 +v 41.045010 86.765823 -16.701996 +v 76.707001 72.391830 -16.701996 +v 40.840996 76.911835 -16.701996 +v 41.045010 84.279800 -16.701996 +v 39.775005 77.115829 -16.701996 +v 40.030998 77.115829 -18.681997 +v 41.251003 84.479813 -18.681997 +v 55.956997 -125.473740 -11.037987 +v 1.423001 -125.473740 -15.229973 +v 2.232999 -125.473740 -15.887974 +v 40.335003 83.973816 -18.681997 +v 39.775005 83.973816 -16.701996 +v 39.012997 76.759827 -16.701996 +v 2.795003 -125.473740 -18.477966 +v 2.795003 -125.473740 -16.905972 +v 38.454998 75.793839 -16.701996 +v 38.507000 74.983841 -16.701996 +v 2.690999 -126.387726 -17.667973 +v 1.423001 98.147781 -15.990002 +v 2.895001 96.775787 -16.144005 +v 1.981000 -126.693726 -19.139969 +v 1.675000 -127.049728 -16.905972 +v 2.690999 -126.135727 -16.801971 +v 88.951004 105.157776 -18.477997 +v 88.951004 100.281784 -25.591982 +v 91.946999 100.281784 -25.591982 +v 91.946999 105.867767 -18.072002 +v 1.675000 -126.439728 -15.581974 +v 1.470997 -126.897736 -16.039974 +v 1.167004 -127.101730 -17.667973 +v 0.608998 -127.101730 -18.681973 +v -0.559001 -127.101730 -18.681973 +v 103.581001 95.809799 -18.681999 +v 103.377014 95.451797 -16.701996 +v -0.559001 -126.083725 -18.681973 +v -1.118999 -127.101730 -17.667973 +v 104.088997 96.213791 -18.681999 +v -1.169002 -126.949738 -15.939976 +v -0.559001 -127.101730 -16.701969 +v 0.608998 -127.101730 -16.701969 +v -1.118999 -126.083725 -17.667973 +v -0.510997 -126.083725 -16.701969 +v 0.050999 -125.425735 -17.667973 +v 0.661000 -126.083725 -16.701969 +v 0.813000 -126.591736 -15.277973 +v -1.066997 -126.591736 -15.381973 +v 107.491013 99.061783 -16.702000 +v 1.064999 -126.083725 -15.075974 +v 105.765015 94.793793 -16.701996 +v 105.765015 95.251785 -16.701996 +v 95.603004 36.679909 -18.681992 +v 95.909012 37.237911 -16.701992 +v 96.013016 44.299900 -16.701992 +v 96.013016 44.299896 -18.681993 +v 92.151001 44.299900 -16.701992 +v 92.151001 44.299896 -18.681993 +v 96.013016 37.593910 -18.681992 +v -0.304996 -126.235733 -14.971973 +v 1.167004 -126.083725 -17.667973 +v 0.608998 -126.083725 -18.681973 +v 1.423001 76.353836 -16.701996 +v 0.813000 76.911835 -16.701996 +v 0.050999 77.115829 -16.701996 +v 2.536999 93.423798 -18.681999 +v 2.995000 95.299789 -18.681999 +v 3.299001 94.489792 -19.139996 +v 2.842999 93.775787 -18.985994 +v 5.636998 94.081787 -19.191994 +v 3.099003 95.961792 -19.087994 +v 2.589001 96.875793 -19.037996 +v 2.489003 96.775787 -18.681999 +v 2.080998 97.485779 -19.087994 +v 5.585003 96.265793 -19.191994 +v 1.318997 98.247787 -19.191994 +v 0.661000 98.043793 -18.985994 +v 5.129002 97.537781 -19.191994 +v -52.681000 8.077980 -16.701988 +v -0.762996 100.991776 -19.495995 +v 0.050999 101.043777 -21.373989 +v -1.372997 100.837784 -21.373989 +v 0.251004 100.737778 -21.677988 +v 1.423001 100.837784 -21.373989 +v 3.351002 99.671783 -21.677988 +v -0.510997 96.419785 -21.677988 +v -1.372997 95.503784 -21.677988 +v -1.931003 100.381775 -21.677988 +v 2.080998 -125.473740 -19.647968 +v -1.272998 94.285797 -21.677988 +v -5.335002 93.117798 -21.677988 +v -4.421001 98.551788 -21.677988 +v -5.639003 94.689789 -21.677988 +v -5.386996 96.823792 -21.677988 +v -5.741000 93.319794 -21.373989 +v -4.573001 91.185806 -21.373989 +v -5.031002 91.847809 -19.495995 +v -4.625003 91.745789 -19.191994 +v 0.709004 89.357803 -19.191994 +v 1.879002 89.613800 -19.191994 +v 0.251004 89.051804 -19.495995 +v 1.827000 89.307800 -19.495995 +v 2.232999 89.459808 -21.373989 +v 0.251004 89.051804 -21.373989 +v -1.576999 89.255798 -21.373989 +v -0.459003 89.357803 -21.677988 +v 1.470997 94.589798 -21.677988 +v 4.875004 98.095795 -21.677988 +v 1.318997 89.459808 -21.677988 +v 5.536999 96.471786 -21.677988 +v 2.947003 90.119797 -21.677988 +v 4.215001 90.727798 -21.373989 +v 3.605000 90.221802 -19.495995 +v 4.519001 91.033798 -19.495995 +v 5.585003 92.761795 -21.373989 +v 5.333004 92.203796 -19.495995 +v 6.043003 94.947784 -21.373989 +v 5.994999 94.133789 -19.495995 +v 5.994999 95.909790 -19.495995 +v 4.977002 92.251785 -21.677988 +v 5.739003 94.689789 -21.677988 +v 5.790997 96.723785 -21.373989 +v 5.484997 97.485779 -19.495995 +v 3.809003 99.723770 -19.495995 +v 3.709004 99.415787 -19.191994 +v 0.251004 100.737778 -19.191994 +v 1.012997 100.941772 -19.495995 +v 2.947003 100.281784 -21.373989 +v 4.367001 99.161774 -21.373989 +v 1.928998 97.891785 -15.786007 +v 0.099003 97.995773 -15.582005 +v 0.709004 96.367783 -23.049986 +v -0.356998 96.471786 -23.049986 +v 0.608998 96.419785 -21.677988 +v -0.304996 96.165787 -23.353987 +v -0.762996 95.909790 -23.353987 +v -1.118999 94.641785 -23.353987 +v -0.459003 93.927795 -23.353987 +v 1.218999 95.199783 -23.353987 +v 1.012997 94.385788 -23.353987 +v 0.912999 93.775787 -23.049986 +v 0.203000 93.523804 -23.049986 +v -0.863002 93.827789 -23.049986 +v -0.356998 93.575790 -21.677988 +v -1.321002 94.385788 -23.049986 +v -1.372997 95.555786 -23.049986 +v -3.405002 90.475800 -21.677988 +v -4.015003 90.627808 -19.495995 +v -3.048999 89.865799 -21.373989 +v -2.491000 89.613800 -19.495995 +v -1.828998 89.613800 -19.191994 +v 0.965001 93.827789 -21.677988 +v 1.522999 94.793793 -23.049986 +v -90.780998 -125.473755 -29.959944 +v 1.470997 95.503784 -23.049986 +v 1.423001 95.555786 -21.677988 +v -92.053001 -121.463745 -30.973942 +v -92.100998 -125.473755 -32.297935 +v -92.000992 -125.473755 -30.821941 +v -92.205002 -125.473755 -31.383940 +v 3.453000 90.475800 -19.191994 +v -0.662998 98.347778 -15.582005 +v 0.355000 98.399780 -15.990002 +v -0.610996 98.247787 -16.040005 +v -1.524997 97.433792 -15.888004 +v -0.510997 97.891785 -15.990002 +v 3.299001 93.879791 -16.040001 +v -89.053001 6.453979 -28.687962 +v -89.053001 97.333771 -29.601969 +v -0.459003 98.299789 -15.534004 +v 103.275009 -111.351761 -8.319996 +v -2.590999 96.213791 -15.786003 +v 104.139008 -110.943756 -7.909992 +v -3.405002 95.199783 -15.534000 +v -2.896998 96.419785 -15.940006 +v -3.048999 94.133789 -15.838001 +v -3.253001 93.979797 -15.534000 +v -2.996997 93.371796 -15.534000 +v -89.053001 -13.205987 -26.049965 +v -2.286998 92.507797 -15.534000 +v -2.034999 92.455795 -15.126003 +v -92.053001 -13.461984 -25.843966 +v -2.082996 92.965790 -15.686001 +v -0.711002 91.693787 -15.430000 +v -1.220996 91.795807 -15.278000 +v -92.053001 5.995981 -24.115971 +v -92.053001 6.453979 -24.725969 +v -89.053001 5.995981 -24.115971 +v -89.053001 6.453979 -24.725969 +v -0.204997 91.947800 -14.972000 +v -0.459003 92.151810 -15.076000 +v 107.595009 -114.399765 -13.195984 +v 1.167004 92.405792 -15.278000 +v -0.153003 91.999802 -15.582001 +v -89.053001 6.453981 -18.581985 +v -89.053001 5.995983 -23.101974 +v -92.053001 6.453981 -22.439976 +v -92.053001 6.453981 -18.581985 +v 1.622998 91.999802 -15.330002 +v -89.053001 6.453981 -22.439976 +v -92.053001 5.995983 -23.101974 +v -2.134998 93.065796 -15.278000 +v -2.538997 93.879791 -15.534000 +v -3.101001 93.727798 -15.330002 +v -3.200999 95.555786 -15.330002 +v -2.896998 96.471786 -15.382004 +v -3.048999 96.571793 -15.686005 +v -2.538997 97.281784 -15.786007 +v -1.424999 98.043793 -15.990002 +v -1.524997 97.891785 -15.482006 +v -2.643001 95.961792 -15.582001 +v -2.797000 94.995789 -15.634003 +v 0.965001 91.745789 -15.330002 +v 2.033002 92.557785 -14.820000 +v 0.709004 92.051788 -14.924000 +v 1.774998 92.761795 -15.178001 +v 2.895001 93.319794 -15.230000 +v 2.690999 93.879791 -15.126003 +v 3.251004 93.879791 -15.076000 +v 3.453000 95.351791 -14.924000 +v 3.403004 95.555786 -14.668003 +v 3.453000 94.589798 -14.972000 +v 3.047002 93.523804 -14.772003 +v 3.099003 93.423798 -14.972000 +v 1.928998 92.861786 -14.924000 +v 3.047002 94.995789 -15.126003 +v 2.641003 97.079788 -14.416008 +v 107.947006 -114.601761 -12.943985 +v -1.982997 97.841782 -14.162010 +v -1.676998 97.637772 -13.906010 +v -85.142998 44.299900 -16.701992 +v -2.590999 96.419785 -13.754009 +v -2.134998 96.975800 -13.906010 +v -89.053001 46.737896 -15.989994 +v -89.053001 51.513882 -14.719997 +v -2.234996 97.027786 -14.364010 +v -92.053001 45.823891 -16.547997 +v -2.744998 97.027786 -13.958008 +v -3.101001 96.519791 -14.010010 +v -3.300998 95.299789 -13.654007 +v -2.949001 94.947784 -13.602005 +v -2.643001 96.061783 -14.110004 +v -2.949001 95.909790 -14.262005 +v -3.353000 95.147797 -14.058006 +v -3.200999 94.185791 -14.010006 +v -2.744998 92.965790 -13.654007 +v -3.101001 93.623795 -13.602005 +v -2.538997 93.471786 -13.958004 +v -89.053001 52.019886 -18.581989 +v -0.762996 91.847809 -13.144005 +v -1.776996 92.455795 -13.248005 +v -1.982997 92.203796 -13.552006 +v -2.692996 93.827789 -13.448006 +v -89.053001 48.057888 -16.343998 +v 106.833008 -111.605774 -12.839985 +v -2.386997 93.471786 -13.754005 +v -2.949001 94.489792 -14.058006 +v -92.053001 47.803894 -16.191994 +v -0.662998 91.693787 -13.552006 +v -1.321002 92.405792 -13.706005 +v 0.508999 92.151810 -13.448006 +v -0.559001 92.151810 -13.196007 +v -88.850990 52.123882 -16.701992 +v 1.318997 92.151810 -13.500004 +v 1.064999 91.745789 -13.400009 +v 103.785004 -112.671768 -6.338001 +v -103.376991 94.385788 -18.681999 +v 0.709004 91.643799 -13.248005 +v -105.715004 94.793793 -16.701996 +v -109.472992 95.047791 -16.701996 +v 0.251004 91.899796 -13.044006 +v 1.117001 92.203796 -12.944008 +v -105.411003 95.809799 -16.701996 +v -48.871002 7.009981 -22.695976 +v -102.920998 99.771790 -18.681999 +v 2.232999 93.217789 -12.992008 +v 2.842999 94.689789 -12.840008 +v 3.099003 94.689789 -13.144005 +v 2.743001 93.879791 -13.144005 +v -103.682999 99.975784 -16.702000 +v -103.682999 99.975784 -18.681999 +v 3.047002 95.657791 -12.486008 +v 2.795003 95.709793 -12.686008 +v 2.795003 96.265793 -12.434010 +v -106.020996 99.771790 -18.681999 +v 3.453000 95.099792 -12.686008 +v 2.743001 97.079788 -12.486012 +v 2.080998 97.079788 -12.382011 +v -108.511002 97.943787 -16.702000 +v -107.392990 99.061783 -18.681999 +v -108.511002 97.943787 -18.681999 +v 2.232999 96.975800 -12.790012 +v 3.099003 96.213791 -12.992008 +v 3.403004 94.793793 -13.044006 +v -109.221001 96.571793 -16.702000 +v 3.099003 93.423798 -12.944008 +v 2.743001 92.913788 -13.144005 +v 2.795003 93.575790 -12.686008 +v 1.727002 92.051788 -13.044006 +v -108.511002 92.099792 -16.701996 +v 3.199002 96.165787 -12.534008 +v 2.641003 97.281784 -12.686012 +v 105.663002 -116.735748 -9.385994 +v -1.066997 98.195786 -11.976013 +v 0.099003 98.499771 -12.334011 +v -1.676998 97.995773 -12.182014 +v -106.020996 99.771790 -16.702000 +v 104.139008 -117.343765 -9.437992 +v -2.491000 97.281784 -11.876011 +v -1.931003 97.689789 -12.334011 +v -3.200999 95.861786 -12.130009 +v -3.200999 96.265793 -11.976009 +v -3.405002 94.793793 -11.724010 +v -3.048999 96.113800 -11.620014 +v -3.200999 94.689789 -11.468010 +v 101.499001 -115.363770 -9.437992 +v -1.728999 97.281784 -11.976013 +v -2.590999 96.165787 -11.876007 +v -2.187000 96.975800 -12.282013 +v -0.304996 97.891785 -12.130013 +v 0.608998 98.247787 -12.130013 +v 0.965001 97.841782 -12.182014 +v 2.080998 97.737793 -12.334011 +v 1.167004 98.195786 -12.686012 +v 0.709004 97.789780 -12.486012 +v -0.711002 98.095795 -12.534012 +v 1.522999 97.841782 -12.790012 +v -0.762996 97.841782 -12.434013 +v -2.692996 96.165787 -12.182011 +v -2.896998 94.793793 -11.976009 +v -2.896998 93.523804 -11.924007 +v -1.828998 92.203796 -11.724010 +v 0.709004 91.899796 -11.520008 +v -0.253002 91.593796 -11.420013 +v -49.683002 90.527786 -18.681999 +v -1.015003 91.795807 -11.214012 +v -1.372997 91.847809 -11.468010 +v -2.034999 92.251785 -11.468010 +v -2.692996 92.965790 -11.620014 +v -2.590999 93.065796 -11.316013 +v -3.148997 93.827789 -11.876007 +v -2.744998 93.775787 -11.368011 +v -2.844997 94.537796 -11.572010 +v -2.034999 93.013809 -11.724010 +v -1.828998 92.557785 -11.214012 +v -0.304996 92.203796 -11.368011 +v -1.118999 92.405792 -11.368011 +v -1.321002 92.455795 -11.620014 +v 0.813000 92.251785 -11.162010 +v 1.981000 92.913788 -11.214012 +v 2.080998 92.507797 -11.368011 +v 2.842999 93.879791 -11.214012 +v 3.299001 94.185791 -11.062012 +v 2.589001 92.761795 -10.858013 +v 1.167004 91.795807 -11.114014 +v 0.861004 91.745789 -11.420013 +v 0.405003 91.999802 -10.962013 +v 1.827000 92.761795 -10.962013 +v 0.557004 87.021805 -16.701996 +v 3.147000 96.317795 -10.452015 +v 2.895001 95.555786 -10.554012 +v 3.199002 94.185791 -10.606014 +v 2.842999 95.861786 -10.858013 +v 2.795003 94.337799 -10.962013 +v 2.133000 97.027786 -10.706017 +v 3.147000 95.757797 -11.010014 +v 2.489003 93.523804 -10.910011 +v 3.351002 96.013794 -10.758011 +v 2.536999 97.385788 -10.400017 +v 2.384999 97.079788 -10.248016 +v 0.661000 98.095795 -10.048019 +v 1.167004 97.737793 -10.200016 +v 1.271001 97.585785 -10.452015 +v 2.589001 96.419785 -10.504017 +v 2.589001 97.027786 -10.858017 +v -39.423000 77.011826 -16.701996 +v -40.233006 77.115829 -16.701996 +v 2.185002 97.737793 -10.504017 +v 0.965001 98.347778 -10.452015 +v 0.912999 97.943787 -10.658016 +v -0.356998 97.995773 -10.504017 +v 0.099003 98.451782 -10.400017 +v -1.881000 97.789780 -10.300022 +v -1.272998 97.689789 -10.352016 +v -1.372997 97.537781 -9.996017 +v -1.424999 97.891785 -9.844017 +v -40.233006 83.973816 -18.681997 +v -40.743000 84.127808 -16.701996 +v -2.286998 96.875793 -10.248016 +v -2.744998 95.861786 -9.690018 +v -2.949001 95.503784 -10.096012 +v -41.201000 84.479813 -16.701996 +v -41.353001 84.735825 -18.681997 +v -41.452999 76.049835 -18.681997 +v -41.201000 76.555832 -16.701996 +v -41.557003 75.539825 -16.701996 +v -41.557003 75.235840 -18.681997 +v -3.048999 94.185791 -9.996014 +v -2.844997 93.217789 -9.742012 +v -3.148997 93.827789 -9.538017 +v -3.253001 95.351791 -10.048016 +v -3.253001 95.861786 -9.690018 +v -41.557003 85.547821 -18.681997 +v -41.557003 85.241821 -16.701996 +v -2.844997 93.167801 -9.486012 +v -1.931003 92.303802 -9.690018 +v -40.994999 74.321838 -18.681997 +v -75.946999 72.543839 -18.681995 +v 0.355000 91.745789 -9.486012 +v -1.118999 91.795807 -9.282017 +v -40.994999 86.765823 -18.681997 +v -41.452999 86.055817 -16.701996 +v -75.946999 72.543839 -16.701996 +v -77.266998 72.035843 -18.681995 +v 0.861004 91.693787 -9.282017 +v 1.064999 91.745789 -9.030018 +v -0.510997 91.795807 -9.030018 +v -76.960999 72.239853 -16.701996 +v -2.187000 92.557785 -9.234016 +v 0.203000 92.151810 -9.082020 +v -1.220996 92.355804 -9.590012 +v -1.321002 92.507797 -9.334015 +v -38.356998 75.539825 -16.701996 +v -2.949001 93.775787 -9.334015 +v -2.538997 93.827789 -9.638012 +v -40.233006 73.965836 -16.701996 +v -40.994999 74.321838 -16.701996 +v -2.844997 96.927780 -9.896019 +v -42.901005 72.543839 -16.701996 +v -42.901005 72.543839 -18.681995 +v -2.996997 96.265793 -10.200012 +v -1.576999 98.095795 -10.096016 +v -2.643001 96.519791 -9.638016 +v -0.510997 98.399780 -10.096016 +v 1.522999 98.147781 -10.400017 +v 0.251004 97.891785 -10.400017 +v -0.407001 92.099792 -9.538017 +v 0.965001 92.251785 -9.334015 +v 2.536999 92.661804 -8.978020 +v 3.251004 93.827789 -8.776016 +v 2.033002 92.303802 -8.824017 +v 2.641003 93.167801 -8.624016 +v 1.218999 92.405792 -8.978020 +v 2.133000 93.065796 -8.876015 +v 2.690999 93.827789 -9.082020 +v 2.743001 94.133789 -8.776016 +v 2.795003 95.757797 -8.572021 +v 3.251004 94.385788 -9.082020 +v 1.879002 92.761795 -9.234016 +v 3.251004 95.961792 -8.420017 +v 2.995000 94.133789 -8.572021 +v 2.795003 96.571793 -8.268021 +v -40.994999 86.765823 -16.701996 +v 3.453000 94.489792 -8.776016 +v 3.251004 96.265793 -8.724018 +v 2.947003 95.503784 -8.928017 +v 2.995000 96.419785 -8.876019 +v 2.133000 97.027786 -8.368023 +v 1.575001 97.585785 -8.672020 +v 0.760998 97.943787 -8.572025 +v 0.050999 98.451782 -8.420021 +v -0.052997 97.891785 -8.216022 +v -1.524997 97.585785 -8.320023 +v -2.234996 96.723785 -7.962025 +v -2.386997 97.079788 -7.710026 +v -3.148997 95.555786 -8.114021 +v -1.372997 98.147781 -8.216022 +v 0.355000 98.451782 -8.216022 +v 0.709004 98.347778 -8.472023 +v 1.727002 97.943787 -8.216022 +v 2.489003 97.385788 -8.320023 +v 0.965001 97.943787 -8.014019 +v 2.080998 97.385788 -8.166019 +v -0.356998 97.943787 -7.962025 +v -0.814998 98.247787 -7.910019 +v -2.339000 97.537781 -8.062019 +v 103.785004 -116.735748 -16.191975 +v -2.896998 96.823792 -7.862022 +v -2.797000 95.605789 -8.014015 +v -2.844997 95.199783 -7.658020 +v -2.949001 94.437790 -8.062016 +v -77.675003 71.525848 -18.681995 +v -3.253001 94.185791 -7.910015 +v -3.353000 95.451797 -7.758018 +v -92.053001 52.123882 -18.581989 +v -92.053001 52.019886 -16.701992 +v -3.200999 96.165787 -8.014015 +v -89.053001 51.919880 -15.075996 +v -2.949001 94.133789 -7.454021 +v -2.491000 93.727798 -7.810020 +v -2.234996 93.167801 -7.454021 +v -2.339000 93.065796 -7.962021 +v -0.914996 91.693787 -7.658020 +v -1.424999 92.251785 -7.862019 +v -0.204997 91.999802 -7.810020 +v -92.053001 46.485893 -16.091999 +v 1.675000 92.661804 -7.558022 +v 1.981000 92.661804 -7.710022 +v 0.965001 91.899796 -7.710022 +v -89.053001 45.975895 -16.343998 +v 2.690999 92.913788 -7.506016 +v 1.271001 91.795807 -7.404018 +v -0.711002 91.693787 -7.404018 +v -2.187000 92.405792 -7.506016 +v -2.844997 93.167801 -7.810020 +v -2.590999 92.965790 -7.404018 +v -92.053001 51.665882 -14.819996 +v -92.053001 51.971882 -15.229996 +v -0.559001 92.251785 -7.506016 +v -0.863002 91.947800 -7.252022 +v 0.355000 92.151810 -7.352020 +v 0.813000 91.899796 -7.200020 +v 1.928998 92.661804 -7.148022 +v 2.995000 93.371796 -7.148022 +v 2.437001 93.217789 -7.100025 +v -89.053001 52.123882 -18.581989 +v 2.641003 93.727798 -7.558022 +v -88.850990 49.785889 -18.681993 +v -88.850990 49.785892 -16.701992 +v 3.147000 94.741791 -7.048019 +v 2.895001 95.555786 -7.454021 +v -85.142998 49.785889 -18.681993 +v 3.251004 94.793793 -7.606022 +v 3.251004 93.879791 -7.404018 +v -85.142998 44.299896 -18.681993 +v 3.299001 94.185791 -7.100025 +v 3.299001 96.013794 -7.100025 +v 2.743001 96.113800 -7.100025 +v 2.690999 96.623795 -7.558025 +v 1.879002 97.233780 -7.200024 +v -85.142998 49.785892 -16.701992 +v 0.608998 97.891785 -6.996029 +v 0.813000 97.841782 -7.404022 +v -0.101001 98.195786 -7.454025 +v 1.675000 98.043793 -7.300022 +v 2.947003 96.519791 -7.558025 +v 2.690999 97.181793 -7.148026 +v -88.850990 44.299896 -18.681993 +v -88.850990 44.299900 -16.701992 +v 2.337003 97.585785 -7.148026 +v 1.318997 98.147781 -6.996029 +v -0.814998 97.891785 -6.896023 +v -0.101001 98.451782 -7.252026 +v -1.524997 97.637772 -7.404022 +v -2.491000 97.333786 -6.948025 +v -2.996997 96.571793 -7.200024 +v -2.844997 95.147797 -7.148022 +v -2.590999 96.113800 -7.048019 +v -2.797000 96.013794 -6.796021 +v -2.692996 94.233795 -6.996025 +v -2.996997 93.879791 -7.252022 +v -2.286998 93.117798 -6.692020 +v -1.066997 92.303802 -6.692020 +v -0.762996 91.947800 -7.200020 +v 0.203000 91.847809 -7.148022 +v 0.150998 92.151810 -6.692020 +v -1.776996 92.203796 -6.744022 +v -2.692996 92.913788 -6.948021 +v -1.828998 92.099792 -6.896019 +v -3.101001 93.575790 -7.048019 +v -3.300998 95.861786 -6.996025 +v -3.353000 95.251785 -6.844025 +v -2.996997 95.709793 -6.744022 +v -2.896998 96.571793 -6.796024 +v -2.187000 97.281784 -6.796024 +v -1.372997 98.195786 -7.100029 +v -4.776996 65.277847 -16.701996 +v -0.711002 98.299789 -6.948025 +v -1.424999 97.585785 -6.896023 +v -2.082996 96.927780 -7.200024 +v -1.931003 97.129791 -6.996029 +v 103.785004 -112.671768 -5.880001 +v -2.996997 94.185791 -6.692020 +v -1.015003 91.745789 -6.844025 +v -0.356998 91.593796 -6.896019 +v 0.557004 91.643799 -6.692020 +v 1.675000 91.999802 -6.948021 +v 1.774998 92.355804 -7.100025 +v 3.199002 93.727798 -6.896019 +v 3.147000 94.133789 -7.048019 +v 2.536999 93.423798 -6.996025 +v 2.995000 94.995789 -6.948021 +v 2.589001 93.675797 -6.692020 +v 1.167004 92.405792 -6.692020 +v 3.403004 94.843781 -6.896019 +v 3.351002 95.909790 -6.692020 +v 2.895001 95.809799 -6.896019 +v -49.938999 10.263969 -16.701988 +v -48.871002 10.057970 -14.009998 +v 2.285001 92.405792 -6.692020 +v -50.597000 10.009974 -13.705997 +v -52.629002 8.281973 -13.905998 +v -50.701000 8.791973 -14.971992 +v -49.938999 7.519976 -15.837994 +v -50.701000 6.299984 -14.971992 +v -50.852997 5.081984 -13.705997 +v -51.663002 5.333982 -14.009998 +v -52.021004 5.691984 -13.905998 +v -50.597000 6.047977 -16.701988 +v -51.462997 8.485975 -20.305979 +v -55.069004 8.637976 -16.701988 +v -50.952999 8.637976 -20.305979 +v 101.243011 -113.229767 -12.077988 +v 2.232999 97.689789 -8.420021 +v -48.463001 8.533972 -20.305979 +v -48.463001 8.533972 -16.801991 +v -48.463001 6.505978 -20.305979 +v -48.463001 6.505978 -16.801991 +v 101.499001 -112.419769 -11.823986 +v -51.411003 7.925978 -20.305979 +v -50.852997 10.109972 -16.701988 +v -52.681000 6.961975 -14.009998 +v -51.411003 7.519976 -13.705997 +v -51.411003 7.519976 -14.971992 +v -50.091000 10.263969 -13.957996 +vn -0.2603 -0.1851 -0.9476 +vn 0.0000 0.1088 -0.9941 +vn 1.0000 -0.0000 0.0000 +vn 0.6291 -0.1676 -0.7590 +vn 0.0449 0.1915 0.9805 +vn -0.0145 0.0000 0.9999 +vn 0.0000 -0.0519 0.9987 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.0413 0.0069 -0.9991 +vn 0.1441 0.0008 -0.9896 +vn -0.1418 0.0011 -0.9899 +vn -0.1449 0.0000 -0.9894 +vn -0.7381 -0.6341 0.2305 +vn 0.0000 0.0000 1.0000 +vn -0.6338 0.0000 -0.7735 +vn -1.0000 -0.0020 0.0000 +vn 0.0000 0.9997 0.0263 +vn -0.8356 -0.2269 0.5002 +vn -0.5945 -0.2062 0.7772 +vn 0.5907 0.8058 -0.0420 +vn 0.6403 0.7680 0.0107 +vn -0.1293 0.1985 0.9715 +vn 0.9701 0.2417 -0.0210 +vn 0.9778 0.2091 -0.0143 +vn -0.9999 0.0008 0.0146 +vn -0.2573 -0.9660 0.0249 +vn 0.0321 0.0546 0.9980 +vn 0.0000 -0.0448 0.9990 +vn 0.9983 0.0000 0.0583 +vn 0.9985 0.0027 0.0552 +vn 0.0000 1.0000 -0.0000 +vn 0.4880 0.3827 0.7845 +vn -0.9156 0.3998 -0.0435 +vn -0.9316 0.3634 -0.0054 +vn -0.9113 0.0972 -0.4001 +vn -0.9983 0.0000 0.0583 +vn -0.5969 0.1252 -0.7925 +vn -0.1133 -0.5943 -0.7962 +vn 0.0006 -0.0257 -0.9997 +vn -0.3237 -0.0000 -0.9462 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.0493 0.9988 +vn -0.5465 -0.5730 -0.6107 +vn -0.6651 -0.7466 -0.0118 +vn -0.0037 -0.0042 -1.0000 +vn -0.0112 -0.0007 -0.9999 +vn -0.4889 -0.8689 0.0767 +vn 0.4400 -0.3610 0.8223 +vn -0.1060 -0.9041 -0.4140 +vn 0.0181 -0.0875 -0.9960 +vn -0.9401 0.0917 -0.3282 +vn -0.2838 -0.1004 -0.9536 +vn -0.2926 -0.1080 -0.9501 +vn 0.1759 0.0441 0.9834 +vn -0.5665 0.0589 0.8219 +vn -0.5769 0.0502 0.8153 +vn -0.3165 0.9477 -0.0417 +vn 0.0015 0.9987 0.0509 +vn 0.0045 1.0000 0.0000 +vn 0.5592 -0.8050 0.1980 +vn 0.2524 -0.5113 0.8215 +vn 0.3971 -0.5832 0.7087 +vn -1.0000 0.0048 0.0000 +vn -0.1459 0.7428 0.6534 +vn 0.7998 -0.4865 0.3515 +vn -0.7071 0.7071 0.0000 +vn -0.6471 0.7613 -0.0409 +vn 0.0000 0.9997 -0.0263 +vn 0.1907 0.4651 0.8645 +vn -0.4000 0.9162 0.0241 +vn -0.0393 0.9989 0.0262 +vn 0.1469 -0.9672 0.2073 +vn -0.5883 -0.7850 -0.1943 +vn -0.5878 -0.5330 0.6086 +vn 0.9642 0.2651 -0.0073 +vn 0.0431 0.0391 0.9983 +vn 0.5476 0.1215 -0.8279 +vn 0.4517 0.1139 0.8848 +vn 0.9977 -0.0673 -0.0093 +vn -0.2786 -0.0967 -0.9555 +vn -0.4890 -0.2620 -0.8320 +vn 0.8521 -0.5233 0.0094 +vn 0.8132 -0.5802 0.0466 +vn -0.3811 -0.4453 -0.8102 +vn 0.5092 0.8606 0.0000 +vn -0.9747 0.2103 -0.0754 +vn -0.9449 0.3273 0.0000 +vn -0.7634 0.6459 0.0000 +vn -0.8166 0.5745 0.0566 +vn -0.6687 0.7433 -0.0165 +vn 0.0131 0.9999 0.0000 +vn -0.6332 -0.7398 -0.2275 +vn -0.4070 -0.8911 0.2009 +vn -0.3883 -0.9051 0.1734 +vn 0.9356 0.3503 0.0453 +vn -0.4271 0.9041 0.0096 +vn -0.2946 0.9531 -0.0696 +vn -0.3163 0.9487 -0.0000 +vn -0.2213 0.9752 0.0000 +vn -0.6628 -0.7483 0.0269 +vn -0.6649 -0.7469 0.0000 +vn -0.8949 -0.4463 0.0000 +vn -0.0563 -0.4916 0.8690 +vn -0.9928 0.1202 0.0000 +vn -0.1491 -0.7634 -0.6285 +vn -0.0707 -0.2475 -0.9663 +vn -0.6139 0.7894 0.0000 +vn -0.1205 -0.2463 -0.9617 +vn 0.5359 0.7251 -0.4325 +vn -0.1525 0.9870 0.0507 +vn -0.5506 0.4904 0.6756 +vn 0.4948 0.6693 0.5543 +vn 0.4464 0.8948 0.0000 +vn 0.3724 0.0454 -0.9270 +vn 0.7642 -0.2308 -0.6023 +vn 0.8073 -0.2438 -0.5375 +vn 0.8736 -0.4685 -0.1315 +vn -0.8761 0.4822 -0.0059 +vn -0.9335 0.3582 0.0176 +vn -0.9987 0.0019 -0.0501 +vn -0.8182 -0.5749 0.0000 +vn -0.8871 -0.4445 0.1239 +vn 0.5318 0.1010 0.8408 +vn 0.9331 0.3572 -0.0413 +vn -0.5190 -0.8523 -0.0645 +vn 0.1733 -0.9849 0.0000 +vn -0.3215 -0.0331 0.9463 +vn -0.1073 -0.0111 0.9942 +vn 0.0038 -0.0091 -1.0000 +vn -0.6947 -0.6020 -0.3937 +vn 0.3822 0.9230 -0.0440 +vn 0.3953 0.9185 0.0000 +vn 0.2652 0.9642 0.0000 +vn 0.1803 0.9677 0.1764 +vn 0.2109 0.9775 0.0000 +vn 0.0711 0.9975 0.0000 +vn -0.8713 -0.3217 0.3706 +vn -0.0015 -0.9970 -0.0768 +vn -0.0015 -0.9971 -0.0763 +vn -0.9769 -0.2103 0.0387 +vn 0.9996 0.0029 0.0268 +vn 1.0000 0.0039 0.0000 +vn -0.4771 0.1399 0.8677 +vn -0.7096 0.2249 0.6677 +vn 0.7452 0.6663 0.0283 +vn -0.9311 -0.3647 0.0000 +vn 0.9128 -0.4055 -0.0485 +vn -0.8167 0.4987 0.2903 +vn 0.6282 -0.7708 0.1057 +vn -0.7617 0.4524 0.4638 +vn 0.6913 -0.7208 0.0508 +vn -0.6780 0.6887 -0.2571 +vn -0.0895 0.9960 0.0000 +vn -0.0446 -0.9990 0.0000 +vn 0.8868 0.4434 0.1303 +vn 0.7756 0.6308 -0.0233 +vn -0.9876 -0.1237 -0.0968 +vn 0.9984 0.0000 0.0561 +vn -0.0131 0.9999 0.0091 +vn -0.5082 0.8609 0.0226 +vn 0.9874 -0.1246 -0.0975 +vn -0.5857 0.7259 -0.3606 +vn 0.9629 -0.2700 -0.0014 +vn 0.0015 -0.0398 -0.9992 +vn 0.0375 -0.0098 -0.9992 +vn 0.9670 -0.2543 -0.0165 +vn -0.0030 -0.3489 -0.9372 +vn 0.9761 0.2036 0.0758 +vn 0.0534 0.0713 -0.9960 +vn 0.8043 0.2690 0.5299 +vn -0.4667 0.3495 -0.8124 +vn -0.0020 0.0422 -0.9991 +vn -0.4684 -0.8835 0.0000 +vn 0.2805 -0.3748 -0.8837 +vn 0.5380 -0.4888 0.6867 +vn 0.0266 -0.9995 0.0184 +vn 0.0000 -0.9986 0.0525 +vn -0.4731 0.4703 0.7450 +vn -0.0378 0.9991 0.0215 +vn -0.3132 0.9484 0.0490 +vn 0.3193 -0.3615 0.8760 +vn -0.1310 0.3909 0.9110 +vn -0.7061 0.7080 0.0125 +vn -0.3357 0.4652 0.8191 +vn -0.5307 0.8475 -0.0128 +vn 0.7578 0.6361 0.1457 +vn 0.0342 0.1291 0.9910 +vn -0.0586 0.0960 0.9937 +vn -0.1170 0.0656 0.9910 +vn 0.8720 -0.4895 0.0000 +vn 0.0215 0.4088 0.9124 +vn 0.0438 -0.0279 0.9987 +vn 0.4988 -0.2800 0.8202 +vn 0.0000 -0.5628 0.8266 +vn 0.4961 0.2278 -0.8378 +vn -0.8720 -0.4895 0.0000 +vn -0.8631 0.5051 0.0000 +vn 0.0000 -0.1027 0.9947 +vn 0.0091 -0.1046 0.9945 +vn -0.0422 -0.3998 0.9156 +vn 0.0074 0.0705 0.9975 +vn 0.4184 -0.9081 0.0163 +vn 0.4463 -0.8943 0.0320 +vn 0.0952 -0.9954 -0.0073 +vn -0.7201 -0.6938 0.0000 +vn -0.4643 -0.8857 0.0000 +vn -0.5592 -0.7697 0.3079 +vn -0.8792 -0.4764 -0.0038 +vn -0.9930 -0.1108 0.0397 +vn 0.4577 0.1114 0.8821 +vn -0.4204 -0.9072 0.0143 +vn -0.9122 -0.4052 0.0601 +vn 0.0410 -0.9989 -0.0224 +vn -0.8977 -0.3061 0.3170 +vn 0.9987 -0.0052 -0.0517 +vn 0.4652 0.8284 0.3119 +vn 0.8785 -0.4769 0.0271 +vn 0.7454 -0.6665 -0.0109 +vn 0.6670 -0.7450 0.0093 +vn 0.6710 -0.7408 0.0331 +vn 0.6637 -0.7475 -0.0254 +vn 0.6640 -0.7478 0.0001 +vn 0.0068 -0.0122 -0.9999 +vn 0.0112 0.0962 -0.9953 +vn -1.0000 -0.0001 0.0000 +vn -0.9849 0.1699 -0.0317 +vn -0.0266 -0.8837 -0.4673 +vn 0.0603 -0.9961 0.0640 +vn 0.0000 -0.8325 0.5541 +vn 0.0347 -0.9991 0.0262 +vn -0.3789 0.2085 0.9017 +vn -0.6097 -0.0080 0.7926 +vn 0.0174 0.9998 0.0131 +vn 0.0000 0.7997 0.6004 +vn -0.0200 0.7499 0.6612 +vn 0.2398 -0.2426 0.9400 +vn -0.0800 -0.0222 0.9965 +vn -0.0007 -1.0000 -0.0002 +vn 0.6651 0.7468 -0.0001 +vn 0.6657 0.7436 0.0619 +vn 0.6691 0.7419 0.0442 +vn 0.7005 0.7098 -0.0738 +vn -0.6095 -0.7926 -0.0139 +vn -0.9272 -0.3746 -0.0007 +vn -0.9305 -0.3663 -0.0012 +vn 0.9969 0.0346 0.0703 +vn -0.9964 -0.0852 0.0000 +vn 0.0000 0.0218 -0.9998 +vn -0.0164 -0.0061 -0.9998 +vn -0.4029 -0.9153 0.0008 +vn -0.8917 -0.2760 0.3587 +vn -0.1587 0.7582 -0.6324 +vn -0.9304 -0.3664 0.0088 +vn -0.0456 0.9799 0.1940 +vn 0.9999 0.0000 -0.0166 +vn 0.0186 0.7439 0.6680 +vn 0.0000 -0.9969 -0.0784 +vn -0.0814 -0.9621 -0.2601 +vn 0.0502 0.0035 -0.9987 +vn 0.0138 -0.1109 0.9937 +vn 0.4033 0.4085 0.8188 +vn 0.9987 0.0000 0.0504 +vn -0.0267 0.5766 -0.8166 +vn 0.0359 0.7762 -0.6294 +vn 0.7168 -0.5607 -0.4145 +vn 0.8961 0.4437 -0.0149 +vn -0.9201 -0.3917 -0.0015 +vn -0.0326 -0.0072 0.9994 +vn -0.9163 -0.4004 -0.0009 +vn 0.0000 -0.6281 0.7782 +vn -0.9180 -0.3964 -0.0117 +vn 0.6071 -0.6296 0.4847 +vn 0.0000 -0.9666 0.2562 +vn 0.9733 -0.2269 -0.0336 +vn -0.0133 0.9999 0.0089 +vn -0.0002 -0.0000 -1.0000 +vn 0.9919 0.1271 -0.0000 +vn 0.9998 0.0000 -0.0211 +vn 0.9765 0.0624 -0.2062 +vn 0.0940 0.0313 -0.9951 +vn -0.9997 0.0225 -0.0101 +vn -0.9987 0.0504 0.0000 +vn -0.9742 0.0296 -0.2237 +vn -0.9856 0.0160 -0.1685 +vn -0.9165 0.0176 0.3996 +vn -0.6257 -0.0392 0.7791 +vn -0.6686 -0.0238 0.7432 +vn -0.0678 0.0206 0.9975 +vn 0.7983 -0.5998 0.0550 +vn 0.4761 0.8463 -0.2390 +vn 0.8572 0.5150 0.0000 +vn -0.0265 -0.9983 0.0524 +vn 0.0326 -0.1250 -0.9916 +vn -0.4477 -0.8935 -0.0353 +vn 0.6516 0.7579 -0.0313 +vn 0.5085 0.2517 -0.8235 +vn 0.0000 0.9980 -0.0639 +vn -0.1550 0.0001 0.9879 +vn -0.9984 0.0568 0.0000 +vn -0.1413 -0.0214 0.9897 +vn 0.8597 0.2154 -0.4631 +vn -0.6477 -0.2579 0.7169 +vn -0.0989 -0.3110 0.9453 +vn 0.0000 -1.0000 -0.0001 +vn 0.5444 -0.8344 -0.0858 +vn 0.1667 -0.3097 0.9361 +vn 0.1657 -0.6170 0.7693 +vn 0.0000 1.0000 -0.0001 +vn -0.0057 0.1448 0.9894 +vn -0.9778 0.0000 0.2093 +vn -0.8941 0.0450 0.4457 +vn -0.0077 0.1430 0.9897 +vn 0.0000 1.0000 0.0001 +vn 0.0000 0.1225 0.9925 +vn 0.0000 -0.0249 -0.9997 +vn -0.0120 0.0000 -0.9999 +vn -0.3375 0.0000 -0.9413 +vn -0.5382 0.0000 -0.8428 +vn -0.7162 0.0000 -0.6979 +vn 0.3303 -0.8290 0.4513 +vn -0.9230 0.0000 -0.3848 +vn -0.9996 -0.0273 -0.0077 +vn -0.0169 -0.0411 0.9990 +vn -0.9699 0.0178 0.2428 +vn -0.3965 0.0000 -0.9180 +vn -0.0206 -0.0353 0.9992 +vn 0.1406 0.9877 -0.0689 +vn 0.1409 0.9900 0.0119 +vn 0.6103 0.7922 0.0000 +vn 0.2238 0.0000 0.9746 +vn 0.6102 0.7921 -0.0173 +vn 0.0000 0.5768 -0.8169 +vn 0.5037 0.8639 0.0002 +vn 0.9899 0.1402 -0.0224 +vn -0.4181 -0.8839 0.2094 +vn 0.0518 -0.0341 0.9981 +vn 0.1562 -0.2294 0.9607 +vn 0.1341 -0.9905 0.0309 +vn 0.8982 -0.1119 -0.4250 +vn -0.7330 -0.6651 -0.1426 +vn -0.0037 0.1149 0.9934 +vn -0.0216 -0.1513 0.9883 +vn -0.0261 0.7693 -0.6384 +vn 0.6899 0.3397 0.6393 +vn 0.0295 0.9734 -0.2271 +vn 0.8939 -0.2596 0.3655 +vn 0.9987 -0.0290 0.0408 +vn 0.5067 0.8461 0.1651 +vn 0.3181 0.3604 -0.8769 +vn -0.0017 0.0858 0.9963 +vn 0.0040 0.0382 0.9993 +vn 0.3065 -0.8550 0.4183 +vn 0.0517 -0.9846 -0.1668 +vn 0.3753 0.3028 0.8761 +vn 0.6813 0.3653 0.6343 +vn 0.0277 0.0029 -0.9996 +vn -0.1108 0.8696 -0.4812 +vn -0.5407 -0.1773 0.8223 +vn -0.8049 -0.5517 -0.2187 +vn -0.7450 0.0910 0.6609 +vn -0.6043 0.0517 0.7951 +vn 0.1043 -0.0089 0.9945 +vn 0.5009 -0.1976 0.8427 +vn 0.1127 -0.1007 0.9885 +vn 0.1307 0.0404 0.9906 +vn 0.5991 0.0389 -0.7997 +vn 0.9725 0.2091 0.1028 +vn 0.1597 -0.2799 0.9467 +vn -0.0422 0.1198 0.9919 +vn 0.9554 0.2952 0.0000 +vn 0.7961 0.6052 0.0000 +vn 0.9565 0.1210 0.2654 +vn 0.9859 -0.1519 0.0704 +vn 0.0264 0.0201 0.9994 +vn 0.5079 0.8610 -0.0251 +vn 0.5208 -0.6954 0.4951 +vn 0.3003 -0.6542 0.6942 +vn 0.9941 -0.0961 -0.0500 +vn 0.1713 -0.8369 -0.5198 +vn -0.0505 -0.7635 0.6439 +vn -0.0426 -0.0775 0.9961 +vn -0.0320 0.6645 0.7466 +vn 0.9852 -0.1690 -0.0282 +vn -0.7524 -0.6361 -0.1711 +vn -0.0096 0.1470 0.9891 +vn -0.4774 -0.8784 -0.0228 +vn -0.4963 -0.8681 0.0000 +vn -0.7000 -0.4797 -0.5291 +vn 0.7798 0.6260 0.0000 +vn 0.8174 0.5161 -0.2559 +vn 0.9424 0.3345 0.0065 +vn -0.2759 -0.9362 0.2178 +vn -0.9995 -0.0321 0.0000 +vn 0.9309 0.3622 -0.0463 +vn 0.0120 0.0000 -0.9999 +vn 0.0050 0.0048 -1.0000 +vn 0.2790 -0.0065 -0.9603 +vn -0.0768 0.0212 -0.9968 +vn -0.0029 0.0055 -1.0000 +vn 0.4606 -0.8799 0.1166 +vn 0.9288 -0.3406 0.1462 +vn 0.0000 -0.9894 -0.1453 +vn 0.2800 -0.9546 0.1018 +vn 0.9446 0.3232 -0.0567 +vn -0.9739 0.2237 -0.0392 +vn -0.9722 0.2343 0.0003 +vn 0.5428 0.8399 0.0000 +vn -0.7743 0.4301 -0.4641 +vn -0.8881 -0.4596 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.4616 -0.8871 0.0000 +vn -0.1579 -0.9875 0.0000 +vn 0.0028 -0.0354 0.9994 +vn 0.0205 -0.0285 0.9994 +vn 0.5845 -0.8103 0.0422 +vn 0.4832 0.8698 -0.0999 +vn 0.5749 0.8182 0.0000 +vn 0.5894 -0.8066 0.0443 +vn 0.0106 -0.0000 -0.9999 +vn -0.4269 -0.0168 -0.9042 +vn 0.0089 0.0069 -0.9999 +vn 0.2861 0.9582 -0.0008 +vn 0.0084 0.0363 -0.9993 +vn 0.0085 0.0541 -0.9985 +vn 0.0062 -0.0022 -1.0000 +vn -0.9441 0.3295 0.0000 +vn -1.0000 0.0071 -0.0000 +vn 0.0000 -0.0024 -1.0000 +vn -0.9894 0.1449 0.0000 +vn 0.0693 0.9490 0.3077 +vn 0.6505 -0.7577 0.0529 +vn 0.0162 0.0014 -0.9999 +vn -0.9793 -0.1468 0.1393 +vn -0.0043 0.0026 -1.0000 +vn -0.2855 -0.1263 -0.9500 +vn 0.7900 -0.6120 -0.0362 +vn -0.0029 -0.9971 -0.0754 +vn 0.0003 0.0020 -1.0000 +vn -0.6329 -0.0276 -0.7738 +vn 0.3139 0.4286 -0.8472 +vn -0.9912 0.1267 0.0372 +vn -0.7646 0.6183 0.1817 +vn -0.7727 0.0285 -0.6342 +vn -0.3467 0.7429 -0.5726 +vn -0.8998 0.4112 -0.1457 +vn -0.9997 -0.0239 -0.0097 +vn -0.1281 -0.9820 0.1388 +vn 0.0015 -1.0000 0.0000 +vn -0.4808 -0.8768 0.0000 +vn -0.7951 0.6060 -0.0249 +vn 0.6638 0.5690 -0.4854 +vn -0.0732 -0.1023 0.9921 +vn 0.0498 0.0829 0.9953 +vn -0.3582 0.9336 -0.0073 +vn -0.0015 0.9948 -0.1020 +vn 0.0066 0.9845 0.1750 +vn 0.0045 0.0247 0.9997 +vn 0.9113 -0.4101 0.0380 +vn -0.5667 0.8238 -0.0127 +vn -0.5351 0.8448 0.0000 +vn -0.1283 0.8369 -0.5321 +vn -0.0007 1.0000 0.0000 +vn 0.4873 -0.0002 0.8733 +vn -0.4994 -0.8664 0.0000 +vn -0.7098 -0.7044 0.0000 +vn -0.9878 -0.1557 0.0000 +vn -0.8175 -0.5759 0.0000 +vn -0.7588 -0.6494 0.0502 +vn -0.0461 0.7249 -0.6873 +vn 0.2310 0.8796 0.4160 +vn 0.7138 0.0000 -0.7004 +vn 0.9112 -0.4103 0.0378 +vn 0.7614 -0.3428 0.5502 +vn 0.0033 0.0000 1.0000 +vn -0.6656 -0.7414 -0.0855 +vn 0.0019 -0.0760 0.9971 +vn -0.6672 -0.7445 -0.0251 +vn -0.0036 -0.0037 -1.0000 +vn 0.3873 0.0290 0.9215 +vn 0.6561 0.0544 0.7527 +vn 0.7687 -0.0297 0.6389 +vn 0.9439 -0.0467 0.3270 +vn 0.3375 0.0000 -0.9413 +vn 0.8293 0.0775 -0.5534 +vn 0.7881 0.0000 -0.6155 +vn -0.9662 -0.2067 -0.1539 +vn -0.7846 -0.6200 0.0000 +vn 0.6857 0.7244 -0.0715 +vn 0.8113 0.5825 0.0489 +vn -0.7985 -0.0361 -0.6009 +vn -0.9111 -0.3271 0.2507 +vn 0.5396 0.0000 -0.8419 +vn 0.0000 -0.0060 -1.0000 +vn 0.9922 0.1243 0.0000 +vn 0.0000 0.0765 -0.9971 +vn 0.0749 0.1309 -0.9886 +vn 0.5994 -0.1906 0.7774 +vn 0.7953 -0.0811 0.6008 +vn 0.0434 -0.0064 0.9990 +vn 0.2407 0.0000 -0.9706 +vn 0.6335 -0.0711 -0.7705 +vn 0.5759 -0.0348 -0.8168 +vn 0.9942 -0.1013 -0.0364 +vn 0.0008 0.1515 -0.9885 +vn 0.5224 0.0000 -0.8527 +vn 0.9612 0.0000 -0.2759 +vn 0.5570 0.0278 -0.8300 +vn -0.9392 0.2618 0.2222 +vn 0.9856 -0.0164 -0.1686 +vn 0.9701 -0.0005 -0.2425 +vn 0.8711 0.0276 -0.4903 +vn 0.9696 -0.2448 0.0000 +vn -0.9671 -0.1929 -0.1657 +vn 0.9945 -0.0991 -0.0338 +vn -0.6915 0.6957 -0.1944 +vn 0.9995 0.0101 0.0293 +vn 0.6293 -0.0503 0.7755 +vn 0.0230 0.1145 -0.9932 +vn 0.0174 -0.0000 -0.9998 +vn 0.9133 0.3655 -0.1798 +vn 0.9698 0.0382 0.2410 +vn -0.0568 0.7592 0.6484 +vn 0.0470 0.6274 0.7773 +vn -0.0248 0.9702 0.2411 +vn -0.7367 0.4272 -0.5242 +vn 0.0334 0.9994 0.0000 +vn -0.4599 -0.0028 0.8880 +vn 0.0279 -0.9980 0.0571 +vn 0.4985 0.0013 -0.8669 +vn 0.0315 0.9981 -0.0536 +vn 0.0307 0.9981 -0.0531 +vn -0.0329 -0.9995 0.0008 +vn 0.0068 -0.9993 0.0373 +vn 0.0018 -0.9986 0.0531 +vn -0.7153 0.4163 0.5612 +vn -0.7412 0.5065 0.4405 +vn -0.5345 0.8018 -0.2673 +vn -0.4433 0.7409 0.5045 +vn -0.4311 0.0000 0.9023 +vn -0.3985 0.5123 0.7608 +vn -0.0565 0.4965 0.8662 +vn -0.2983 0.9544 0.0137 +vn 0.0821 0.6798 0.7288 +vn 0.1156 0.0181 -0.9931 +vn 0.2708 0.8159 0.5108 +vn 0.5927 0.7004 0.3976 +vn 0.3927 0.5565 -0.7322 +vn 0.2811 0.1115 0.9532 +vn -0.0212 -0.0073 -0.9997 +vn 0.0005 0.0000 -1.0000 +vn 0.7959 -0.6051 -0.0170 +vn 0.7235 -0.6898 0.0276 +vn 0.5853 -0.8097 -0.0422 +vn 0.4491 -0.8932 0.0239 +vn 0.0435 0.4602 -0.8867 +vn -0.5100 0.5518 -0.6598 +vn -0.1461 -0.9891 0.0176 +vn -0.8982 0.1745 0.4034 +vn 0.1590 -0.0048 0.9873 +vn 0.2271 0.4326 0.8725 +vn -0.5592 -0.2496 0.7906 +vn -0.1495 0.1123 0.9824 +vn -0.9098 -0.3966 0.1225 +vn -0.2177 0.3401 0.9148 +vn 0.0583 -0.0276 0.9979 +vn -0.9945 0.1046 -0.0096 +vn -0.8664 0.4993 -0.0084 +vn -0.9371 0.3491 -0.0025 +vn 0.8980 -0.4195 0.1328 +vn -0.1936 -0.9041 0.3810 +vn -0.2901 -0.9570 0.0000 +vn 0.4317 0.0066 -0.9020 +vn -0.6750 0.0198 -0.7375 +vn -0.1909 -0.0217 -0.9814 +vn -0.4442 -0.3417 0.8282 +vn -0.8845 -0.0888 0.4581 +vn -0.1626 -0.1248 0.9788 +vn 0.5330 0.0000 -0.8461 +vn -0.9834 -0.0311 0.1789 +vn -0.9628 0.2593 0.0760 +vn 0.4484 -0.0043 -0.8938 +vn -0.6876 0.1020 -0.7189 +vn -0.4889 -0.1049 -0.8660 +vn 0.0966 -0.1901 -0.9770 +vn -0.0214 0.0422 -0.9989 +vn -0.5665 -0.3294 -0.7554 +vn -0.7439 -0.5723 -0.3452 +vn -0.4313 -0.7726 -0.4660 +vn -0.8394 -0.1225 -0.5296 +vn -0.8946 -0.3904 0.2172 +vn -0.3680 -0.4050 0.8370 +vn -0.2048 -0.1935 -0.9595 +vn 0.8291 0.1011 0.5499 +vn 0.0189 0.0944 -0.9954 +vn -0.0973 -0.0885 0.9913 +vn -0.1384 0.6779 -0.7220 +vn 0.9075 0.2472 0.3397 +vn 0.8817 -0.4718 0.0024 +vn -0.6844 0.6844 -0.2516 +vn 0.5470 0.1218 -0.8282 +vn 0.4288 0.1484 -0.8911 +vn -0.9429 0.2376 -0.2334 +vn 0.3709 -0.0062 -0.9286 +vn 0.6281 -0.2255 -0.7447 +vn 0.5657 -0.6079 -0.5571 +vn 0.2937 -0.3608 -0.8852 +vn 0.4415 0.5406 0.7161 +vn 0.3517 0.8513 -0.3893 +vn 0.5984 -0.6702 -0.4391 +vn -0.1594 0.7472 -0.6452 +vn 0.2822 -0.9448 0.1663 +vn -0.8561 0.5169 -0.0036 +vn 0.3755 -0.8498 -0.3699 +vn 0.2503 -0.9486 0.1938 +vn 0.5412 -0.8408 -0.0121 +vn 0.6620 -0.7495 0.0089 +vn 0.9929 0.0174 0.1180 +vn 0.9540 0.2996 -0.0080 +vn 0.8637 -0.5035 0.0205 +vn 0.6617 0.2196 -0.7169 +vn 0.8988 -0.3140 0.3059 +vn 0.8804 -0.4598 -0.1157 +vn 0.3786 0.7092 -0.5948 +vn 0.8582 -0.0327 -0.5123 +vn -0.0050 0.0049 -1.0000 +vn 0.0000 -0.8676 -0.4972 +vn -0.6493 0.0128 -0.7604 +vn -0.0132 0.0003 -0.9999 +vn -0.0058 -0.0044 -1.0000 +vn 0.9912 0.0164 0.1315 +vn 0.9997 0.0239 0.0000 +vn 0.4118 -0.0061 -0.9112 +vn 0.6812 -0.7184 -0.1406 +vn 0.7667 -0.6420 0.0000 +vn 0.9487 -0.0021 -0.3162 +vn 0.9999 -0.0101 0.0000 +vn 0.9995 -0.0101 -0.0293 +vn 0.8461 0.5324 -0.0248 +vn 0.0254 -0.0508 -0.9984 +vn 0.1532 0.0000 -0.9882 +vn 0.9237 0.3827 0.0184 +vn 0.9895 0.0000 -0.1445 +vn 1.0000 -0.0097 0.0000 +vn 0.9999 -0.0109 0.0012 +vn 1.0000 -0.0009 -0.0085 +vn 0.9752 -0.2203 0.0232 +vn 0.5101 0.0014 0.8601 +vn -0.2058 -0.0603 0.9767 +vn 0.0484 0.0262 0.9985 +vn 0.4643 -0.8857 0.0000 +vn -0.0008 0.9987 0.0513 +vn -0.5400 0.8411 0.0325 +vn -0.8935 0.4490 0.0071 +vn 0.8233 -0.0820 -0.5616 +vn 0.0000 -0.7071 0.7072 +vn -0.1831 -0.7279 0.6608 +vn 0.1060 0.1257 0.9864 +vn -0.1752 0.0012 -0.9845 +vn 0.6329 -0.7742 0.0063 +vn 0.6288 0.7776 0.0000 +vn 0.2335 -0.9721 -0.0232 +vn -0.2911 0.9567 0.0000 +vn 0.5956 0.0000 -0.8033 +vn -0.9987 0.0029 0.0510 +vn 0.7721 0.6289 -0.0911 +vn 0.7194 0.1605 -0.6758 +vn 0.0568 -0.0104 0.9983 +vn 0.2836 -0.9589 0.0000 +vn -0.0491 0.2950 0.9542 +vn -0.6051 -0.7878 0.1151 +vn -0.0537 -0.2856 0.9568 +vn 0.0000 -0.9623 -0.2718 +vn 0.9309 -0.3480 0.1110 +vn 0.8260 -0.4626 -0.3222 +vn 0.8254 -0.5646 0.0000 +vn 0.6401 0.7651 0.0693 +vn -0.1129 -0.9892 0.0932 +vn 0.3799 -0.9168 -0.1232 +vn 0.1689 0.4078 0.8973 +vn -0.0309 -0.0476 0.9984 +vn 0.5890 -0.8048 0.0737 +vn 0.6062 -0.7953 0.0000 +vn -0.5983 -0.8004 0.0373 +vn 0.8482 0.5297 0.0000 +vn -0.8391 -0.5438 0.0149 +vn 0.9743 0.2173 0.0591 +vn 0.7469 0.6621 -0.0613 +vn 0.6539 0.7565 0.0000 +vn 0.3992 0.9142 0.0699 +vn -0.2836 -0.9589 0.0000 +vn -0.0999 0.0824 0.9916 +vn -0.2083 0.9779 0.0187 +vn -0.9985 -0.0026 0.0538 +vn -0.6311 -0.1979 0.7500 +vn 0.8809 0.4603 -0.1099 +vn 0.9919 -0.1234 0.0302 +vn 0.8462 -0.5310 -0.0440 +vn 0.5589 -0.1196 -0.8205 +vn 0.8938 0.4482 0.0161 +vn 0.3766 0.1066 0.9202 +vn 0.9696 -0.2446 0.0000 +vn 0.5909 0.3088 0.7453 +vn 0.8412 0.5407 0.0000 +vn 0.4717 0.5039 0.7236 +vn 0.3268 0.4124 0.8503 +vn 0.0114 -0.0463 0.9989 +vn 0.0749 -0.9945 -0.0736 +vn 0.2677 -0.8032 0.5321 +vn 0.4498 -0.5193 0.7266 +vn -0.4160 0.0011 0.9094 +vn 0.6470 0.7625 0.0000 +vn 0.3574 0.9331 -0.0393 +vn 0.2178 0.0192 0.9758 +vn 0.6662 0.2456 -0.7042 +vn -0.8623 -0.5039 0.0499 +vn 0.2377 -0.7132 -0.6594 +vn -0.9201 -0.3894 0.0421 +vn -0.5654 0.8242 0.0313 +vn 0.9968 -0.0080 -0.0792 +vn 0.8774 0.4798 0.0000 +vn 0.3722 0.9282 0.0000 +vn 0.2173 0.5420 -0.8118 +vn 0.3279 0.6895 -0.6458 +vn -0.0224 -0.0159 0.9996 +vn -0.4801 0.8758 -0.0504 +vn -0.1836 0.9830 -0.0041 +vn -0.0010 -1.0000 0.0000 +vn -0.2388 -0.9008 0.3627 +vn -0.1549 -0.9688 0.1936 +vn 0.3975 -0.0826 0.9139 +vn -0.1050 0.9611 0.2553 +vn 0.7068 -0.7074 0.0000 +vn 0.2993 -0.9542 0.0000 +vn 0.1238 0.9922 -0.0140 +vn -0.4922 -0.8320 0.2560 +vn 0.1634 0.9812 -0.1032 +vn -0.8527 -0.1437 -0.5023 +vn -0.9365 -0.3444 0.0662 +vn -0.7857 -0.5775 0.2218 +vn -0.2066 -0.1519 -0.9666 +vn 0.0301 -0.2554 -0.9664 +vn -0.7807 -0.6066 0.1499 +vn -0.8547 -0.3424 -0.3902 +vn -0.8699 -0.3388 -0.3584 +vn 0.0870 0.6723 -0.7351 +vn -0.9173 0.1602 0.3646 +vn -0.6254 -0.0188 -0.7801 +vn 0.4382 -0.8979 -0.0419 +vn -0.0580 0.9948 0.0843 +vn 0.2586 0.0000 0.9660 +vn 0.0900 0.9908 -0.1010 +vn -0.6122 0.7809 -0.1242 +vn -0.9795 0.2006 -0.0204 +vn 0.9883 -0.1501 0.0270 +vn 0.7074 -0.7068 -0.0000 +vn -0.7742 0.4303 0.4642 +vn -0.8248 0.5654 0.0032 +vn -0.7425 0.6204 -0.2526 +vn -0.2443 -0.0061 0.9697 +vn -0.9902 0.0000 0.1399 +vn -0.9996 0.0289 0.0000 +vn -0.0428 -0.9991 0.0000 +vn -0.0651 -0.9893 0.1305 +vn -0.5639 -0.7061 -0.4282 +vn -0.6017 -0.7873 -0.1345 +vn -0.8311 -0.0050 -0.5560 +vn -0.8364 -0.0048 -0.5482 +vn -0.4956 0.0013 0.8686 +vn -0.4472 0.0000 0.8944 +vn -0.9984 0.0000 0.0572 +vn -0.6481 0.7033 -0.2922 +vn -0.0473 0.9860 -0.1596 +vn 0.4784 0.0000 -0.8781 +vn 0.5117 0.0033 -0.8592 +vn 0.1204 -0.0772 0.9897 +vn 0.0000 -0.0136 0.9999 +vn -0.3434 0.0000 0.9392 +vn -0.1536 0.7290 -0.6671 +vn 0.0192 -0.0913 -0.9956 +vn 0.1809 0.0079 -0.9835 +vn 0.1551 -0.3615 -0.9194 +vn -0.1441 -0.9069 -0.3959 +vn 0.0272 -0.0055 -0.9996 +vn 0.7065 -0.7077 0.0000 +vn -0.6651 0.7119 -0.2255 +vn -0.8575 0.5145 0.0010 +vn -0.9442 0.1858 -0.2721 +vn -0.9909 0.0000 0.1343 +vn 0.1094 0.9708 -0.2132 +vn 0.7054 -0.7063 0.0601 +vn -0.7074 0.7068 0.0000 +vn 0.0566 -0.0222 -0.9982 +vn -0.4883 0.8690 0.0797 +vn -0.4093 0.7285 0.5494 +vn 0.2005 -0.0075 -0.9797 +vn -0.3471 0.9171 -0.1961 +vn -0.3901 0.9208 0.0000 +vn 0.1775 0.0300 0.9837 +vn -0.3275 0.6395 0.6955 +vn -0.0410 0.7030 0.7100 +vn 0.3612 0.9313 -0.0477 +vn -0.7070 0.7070 0.0171 +vn -0.9485 0.3168 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.9483 -0.3173 0.0000 +vn -0.5491 -0.8353 0.0270 +vn 0.7299 -0.3714 0.5739 +vn -0.0083 0.0162 0.9998 +vn -0.4104 -0.8879 -0.2077 +vn -0.4100 -0.8886 -0.2055 +vn 0.6410 0.3685 -0.6733 +vn 0.9278 -0.3730 0.0028 +vn 0.8085 -0.5876 -0.0325 +vn -0.9381 0.2628 0.2257 +vn 0.8726 -0.2188 -0.4367 +vn 0.6677 -0.7430 0.0461 +vn -0.7849 0.5793 -0.2197 +vn -0.9996 0.0290 0.0000 +vn -0.1471 -0.9891 0.0000 +vn -0.0335 -0.9174 -0.3966 +vn 0.7827 -0.5845 -0.2136 +vn -0.8309 0.5565 -0.0038 +vn -0.8386 -0.4460 -0.3129 +vn -0.7800 0.0051 -0.6257 +vn -0.7777 0.0050 -0.6286 +vn -0.5510 -0.0008 0.8345 +vn -0.5566 -0.0009 0.8308 +vn -0.5224 0.7693 -0.3678 +vn -0.0956 0.9896 0.1078 +vn -0.9324 0.3443 -0.1101 +vn 0.4752 0.0022 -0.8799 +vn 0.4464 0.0000 -0.8948 +vn 0.0970 -0.0215 -0.9950 +vn 0.0124 0.0046 -0.9999 +vn -0.0434 0.0069 -0.9990 +vn 0.5209 -0.8536 0.0000 +vn 0.5526 -0.8289 -0.0874 +vn 0.8315 -0.5507 0.0731 +vn -0.7589 -0.6229 -0.1899 +vn -0.9177 -0.3974 0.0000 +vn 0.9914 -0.0237 -0.1287 +vn 0.9999 -0.0164 0.0000 +vn 0.5135 -0.8544 0.0794 +vn 0.9684 -0.0039 -0.2493 +vn 0.8805 0.4734 -0.0258 +vn 0.8457 0.5337 -0.0030 +vn -0.5357 -0.0077 -0.8444 +vn -0.9196 0.0093 -0.3927 +vn -0.8417 -0.5394 -0.0247 +vn 0.2610 0.0000 -0.9653 +vn -0.4208 0.7809 -0.4616 +vn -0.8587 -0.5120 0.0199 +vn 0.6680 -0.5932 -0.4493 +vn 0.9796 -0.2005 0.0135 +vn 0.6973 -0.7123 0.0796 +vn -0.9310 -0.3645 -0.0173 +vn -0.8805 -0.4583 0.1208 +vn 0.0000 -0.0596 0.9982 +vn 0.0219 0.6098 0.7922 +vn 0.9365 0.0000 0.3506 +vn -0.4023 0.5584 0.7255 +vn 0.8749 0.4817 0.0505 +vn 0.0452 0.0123 0.9989 +vn -0.3084 0.3780 0.8729 +vn 0.8751 0.4811 0.0522 +vn -0.8707 0.4890 -0.0527 +vn -0.9421 0.3348 0.0180 +vn 0.1264 -0.0314 -0.9915 +vn 0.8818 -0.4708 -0.0282 +vn 0.8791 -0.4766 0.0000 +vn 0.4881 0.5229 -0.6988 +vn 0.4421 0.8969 0.0104 +vn 0.8294 -0.5586 -0.0065 +vn 0.4023 0.9154 0.0140 +vn 0.1072 0.5305 -0.8409 +vn 0.1328 0.0691 0.9887 +vn -0.9197 0.0000 0.3927 +vn 0.9999 0.0092 -0.0073 +vn 0.9884 0.1510 0.0132 +vn 0.0227 -0.0378 0.9990 +vn -0.2585 0.0219 0.9658 +vn -0.9847 0.1740 -0.0062 +vn 0.0000 0.0972 -0.9953 +vn -0.2401 -0.9698 0.0434 +vn 0.0117 0.0345 0.9993 +vn 0.3579 -0.9299 -0.0848 +vn -0.5991 0.7996 -0.0408 +vn -0.7499 0.6613 0.0180 +vn 0.9877 0.1541 -0.0265 +vn 0.9955 0.0941 -0.0089 +vn 0.9100 -0.4128 0.0390 +vn 0.9547 -0.2927 -0.0545 +vn 0.0000 -0.0378 0.9993 +vn 0.8853 -0.4643 0.0240 +vn 0.5644 -0.8244 0.0426 +vn 0.7205 0.4006 -0.5660 +vn 0.9198 -0.3924 -0.0054 +vn -0.5402 0.8416 0.0000 +vn -0.3179 -0.9480 -0.0176 +vn -0.7536 -0.6556 0.0481 +vn 0.0628 0.2777 -0.9586 +vn 0.3532 0.1561 0.9224 +vn -0.7788 0.6267 -0.0266 +vn -0.0164 -0.1966 0.9803 +vn -0.0186 -0.2231 0.9746 +vn 0.0000 -0.1133 0.9936 +vn 0.0000 0.5390 0.8423 +vn 0.4553 0.2844 0.8437 +vn 0.4727 -0.2658 0.8402 +vn 0.8717 -0.4901 0.0000 +vn -0.0951 0.0535 0.9940 +vn 0.0000 0.1574 0.9875 +vn -0.9724 0.0112 -0.2329 +vn 0.4010 0.6049 0.6880 +vn -0.0850 0.4482 0.8899 +vn -0.9863 -0.1595 -0.0428 +vn -0.7701 -0.6379 0.0048 +vn 0.4223 0.9065 0.0000 +vn -0.4654 -0.8848 -0.0230 +vn 0.7478 -0.6639 0.0000 +vn -0.8643 0.5030 0.0000 +vn -0.0065 0.0073 -1.0000 +vn -0.5760 0.8173 -0.0129 +vn 0.0800 0.9958 0.0448 +vn -0.9365 0.0012 0.3506 +vn 0.5643 0.8243 0.0465 +vn 0.0151 0.0073 0.9999 +vn -0.0399 -0.6257 -0.7791 +vn -0.1123 0.5116 0.8518 +vn 0.8860 -0.4635 -0.0136 +vn -0.8682 0.4960 0.0147 +vn 0.8676 -0.4973 0.0000 +vn 0.0895 -0.9960 0.0000 +vn -0.3655 -0.7215 0.5882 +vn -0.2062 0.0175 0.9784 +vn 0.8711 -0.4905 -0.0247 +vn 0.2587 -0.9624 0.0832 +vn 0.0728 0.0406 0.9965 +vn 0.5551 0.0000 0.8318 +vn 0.9120 0.0000 0.4103 +vn 0.0285 -0.9980 0.0565 +vn 0.0954 0.2232 0.9701 +vn -0.9996 0.0000 -0.0293 +vn -0.9999 0.0101 0.0000 +vn -0.8883 0.4594 0.0000 +vn 0.3152 0.0630 -0.9469 +vn 0.7765 0.0000 -0.6301 +vn 0.9375 -0.0382 0.3458 +vn -0.1533 -0.0416 0.9873 +vn 0.9824 0.0544 -0.1785 +vn -0.0386 -0.0762 0.9963 +vn 0.0000 0.7264 -0.6873 +vn -0.4260 -0.6426 0.6368 +vn -0.9919 0.0319 0.1229 +vn -0.9992 0.0387 0.0000 +vn -0.8944 0.0000 -0.4472 +vn -0.4472 -0.8944 0.0000 +vn -0.2827 -0.7519 -0.5956 +vn -0.0568 0.0000 -0.9984 +vn 0.1930 0.2617 -0.9457 +vn -0.8505 -0.5242 -0.0440 +vn -0.4572 0.5069 -0.7307 +vn -0.8917 -0.4527 0.0068 +vn -0.8775 -0.4795 -0.0055 +vn -0.7131 0.7011 0.0081 +vn -0.7092 0.7050 0.0086 +vn 0.8438 0.5367 0.0065 +vn 0.9391 0.3432 -0.0182 +vn 0.0000 0.0341 0.9994 +vn -0.8835 0.4684 0.0006 +vn 0.2171 -0.8893 0.4024 +vn -0.2798 0.0267 -0.9597 +vn -0.9992 -0.0047 -0.0407 +vn -0.9992 -0.0404 -0.0044 +vn 0.9285 -0.3692 -0.0399 +vn 0.0000 -0.0607 -0.9982 +vn -0.9992 -0.0406 0.0000 +vn -0.7530 -0.6580 0.0000 +vn -0.9323 -0.3450 -0.1086 +vn -0.9005 -0.4269 0.0830 +vn -0.7648 -0.6321 -0.1245 +vn 0.0322 -0.9750 -0.2200 +vn -0.1696 -0.9260 0.3372 +vn -0.2586 -0.9660 0.0000 +vn -0.5368 -0.8437 0.0000 +vn -0.6056 -0.3336 0.7225 +vn -0.8132 -0.0461 -0.5802 +vn -0.7511 -0.6601 -0.0093 +vn -0.8412 -0.5407 0.0115 +vn 0.0193 -0.5901 0.8071 +vn -1.0000 -0.0002 0.0000 +vn -0.0296 -0.8633 0.5038 +vn -0.0305 -0.9995 0.0000 +vn 0.6753 0.7034 0.2220 +vn 0.0317 0.9976 -0.0613 +vn 0.8692 -0.4942 -0.0156 +vn -0.9756 -0.2188 0.0202 +vn -0.9106 -0.4131 -0.0095 +vn 0.8225 0.4590 0.3358 +vn 1.0000 0.0067 0.0000 +vn -0.0379 0.9989 0.0262 +vn -0.4463 0.8948 -0.0122 +vn 0.5412 -0.8399 -0.0397 +vn 0.9283 -0.3704 0.0317 +vn -0.3620 0.8015 -0.4760 +vn -0.5401 -0.8415 -0.0073 +vn 0.9921 0.1233 0.0239 +vn -0.5005 0.5809 0.6419 +vn 0.9484 0.3172 0.0046 +vn -0.6458 -0.7634 0.0120 +vn 0.9176 0.3962 -0.0317 +vn -0.1300 -0.9770 -0.1692 +vn -0.0755 0.6063 0.7916 +vn -0.0009 -0.9488 0.3159 +vn -0.4289 0.7325 0.5286 +vn -0.0262 -0.9983 0.0524 +vn 0.9511 -0.2534 -0.1768 +vn 0.0192 0.0375 0.9991 +vn 0.6641 0.7476 -0.0000 +vn 0.3499 0.9368 0.0000 +vn -0.0074 1.0000 0.0000 +vn -0.0356 0.5642 -0.8248 +vn 0.5211 -0.8535 0.0000 +vn -0.4223 -0.9064 0.0111 +vn -0.6612 0.7467 0.0724 +vn -0.2558 -0.9315 0.2585 +vn -0.6646 0.5347 -0.5220 +vn 0.3300 -0.1208 -0.9362 +vn 0.9613 0.0943 0.2587 +vn -0.5310 0.3718 0.7615 +vn 0.6011 -0.7975 -0.0520 +vn -0.7844 0.6200 -0.0163 +vn -0.5917 -0.7985 0.1109 +vn -0.4834 0.8753 -0.0135 +vn -0.0391 0.9990 0.0211 +vn 0.7500 -0.6614 -0.0090 +vn -0.1184 0.0587 0.9912 +vn -0.2911 -0.9566 -0.0093 +vn 0.9449 0.3275 0.0000 +vn -0.5816 0.3488 -0.7349 +vn 0.2669 -0.1434 0.9530 +vn -0.3007 -0.2441 0.9220 +vn -0.7539 -0.6301 0.1861 +vn -0.3058 -0.0055 0.9521 +vn 0.9344 0.2747 -0.2268 +vn 0.9383 0.3453 0.0208 +vn -0.0802 0.9586 -0.2733 +vn -0.0270 0.9996 0.0000 +vn 0.3166 0.9485 0.0000 +vn 0.8631 0.5051 0.0000 +vn -0.0243 -0.0169 -0.9996 +vn 0.4971 0.2909 0.8174 +vn 0.7769 0.3738 0.5067 +vn 0.8936 0.0000 0.4490 +vn -0.6127 -0.7438 0.2671 +vn -0.3187 0.0000 -0.9479 +vn -0.3270 -0.3970 -0.8576 +vn 0.0534 0.0151 0.9985 +vn 0.9338 -0.3574 -0.0175 +vn 0.0000 0.1809 0.9835 +vn 0.8412 -0.5407 0.0120 +vn 0.9069 -0.2832 0.3120 +vn -0.6104 -0.2554 -0.7498 +vn 0.5372 0.8431 -0.0246 +vn 0.1647 0.0044 0.9863 +vn 0.0884 -0.0605 0.9943 +vn -0.7676 -0.4126 -0.4904 +vn -0.9922 -0.0385 0.1184 +vn 0.5741 0.8188 0.0042 +vn -0.9348 -0.0755 0.3472 +vn -0.3033 -0.0075 0.9529 +vn -0.9053 -0.0272 0.4240 +vn -0.8732 -0.4874 0.0000 +vn -0.9990 0.0457 0.0000 +vn 0.7144 0.3560 0.6024 +vn 0.5555 0.8315 0.0000 +vn -0.5663 0.6725 -0.4765 +vn 0.3574 -0.9338 0.0175 +vn 0.9618 0.2516 -0.1080 +vn -0.0688 0.1830 0.9807 +vn 0.0334 0.0188 0.9993 +vn -0.4988 -0.2800 0.8202 +vn 0.3815 -0.9244 -0.0043 +vn 0.3345 -0.9424 -0.0011 +vn 0.5975 -0.8019 0.0021 +vn 0.0655 -0.0383 0.9971 +vn -0.4971 0.2909 0.8174 +vn 0.9958 0.0904 -0.0174 +vn -0.7360 0.6770 0.0000 +vn -0.4624 0.7930 -0.3966 +vn -0.4624 0.7928 -0.3970 +vn 0.7618 -0.6448 -0.0632 +vn 0.7073 -0.7069 0.0001 +vn -0.9991 0.0000 0.0416 +vn -0.9831 -0.1637 0.0819 +vn 0.4776 -0.7857 0.3930 +vn 0.0001 0.0000 -1.0000 +vn 0.0000 0.5788 0.8154 +vn 0.0452 -0.0686 0.9966 +vn 0.9554 -0.2952 0.0000 +vn -0.1309 -0.1094 0.9853 +vn -0.1411 -0.1080 0.9841 +vn 0.9162 -0.3924 0.0815 +vn -0.1942 -0.4755 0.8580 +vn 0.6692 -0.3557 0.6524 +vn 0.6721 0.7380 0.0607 +vn -0.9007 -0.2664 0.3431 +vn 0.3249 0.9451 0.0364 +vn -0.9650 -0.2624 0.0000 +vn 0.1623 0.9757 0.1473 +vn -0.0852 0.9572 -0.2766 +vn 0.8509 0.4952 0.1753 +vn -0.4376 0.8361 0.3308 +vn 0.8696 0.4676 -0.1586 +vn 0.5417 0.8093 -0.2274 +vn 0.7206 0.6752 0.1579 +vn 0.1079 -0.5694 0.8150 +vn -0.7524 -0.6399 0.1562 +vn -0.3237 0.9330 0.1572 +vn 0.5387 0.6453 -0.5416 +vn -0.8980 0.3062 0.3160 +vn -0.9967 0.0497 -0.0640 +vn -0.0639 -0.3680 0.9276 +vn -0.9996 -0.0289 0.0000 +vn -0.9908 -0.0541 0.1243 +vn -0.8681 -0.4964 0.0017 +vn -0.1487 -0.4614 0.8746 +vn -0.3467 -0.6037 0.7179 +vn -0.4980 -0.8672 0.0030 +vn -0.4947 -0.8690 0.0000 +vn -0.3847 -0.9229 -0.0131 +vn 0.4983 -0.8670 0.0000 +vn 0.4920 -0.8704 -0.0166 +vn 0.1751 -0.5004 0.8479 +vn 0.1841 -0.4141 0.8914 +vn -0.0569 -0.0059 -0.9984 +vn 0.0131 -0.0128 -0.9998 +vn 0.7173 0.6067 0.3426 +vn 0.4722 -0.0467 -0.8803 +vn 0.7773 0.0000 -0.6292 +vn -0.8920 0.0000 -0.4519 +vn -0.5701 -0.0754 -0.8181 +vn -0.7642 -0.4432 -0.4686 +vn -0.4603 -0.8836 0.0863 +vn -0.6115 -0.0118 -0.7912 +vn -0.8635 -0.5015 0.0540 +vn -0.0784 0.0074 -0.9969 +vn -0.8323 -0.5344 -0.1475 +vn 0.8101 0.4806 -0.3359 +vn 0.8324 0.5347 -0.1455 +vn 0.2463 0.4229 -0.8721 +vn 0.1212 0.0464 -0.9915 +vn 0.4707 -0.4211 -0.7753 +vn 0.2411 0.3659 -0.8989 +vn -0.2732 0.9325 -0.2362 +vn 0.1462 0.9812 0.1263 +vn 0.0000 0.0948 0.9955 +vn 0.4792 0.8774 -0.0220 +vn 0.7078 0.7062 0.0176 +vn 0.8001 0.5995 -0.0223 +vn -0.8502 -0.5264 -0.0126 +vn 0.9117 0.4107 0.0092 +vn 0.3352 0.9422 0.0000 +vn 0.1766 0.9633 0.2023 +vn 0.3574 0.9338 0.0166 +vn 0.7047 0.7022 0.1017 +vn 0.9684 0.2287 0.0995 +vn 0.0278 0.0667 -0.9974 +vn 0.5755 -0.5734 -0.5831 +vn 0.3238 -0.9457 -0.0291 +vn 0.4566 -0.8248 0.3334 +vn -0.8940 0.4474 0.0239 +vn -0.9863 0.1652 -0.0032 +vn -0.9107 0.4035 -0.0878 +vn 0.1095 0.0607 0.9921 +vn -0.2149 0.5614 -0.7991 +vn -0.2303 0.9731 0.0000 +vn 0.8654 -0.5010 0.0123 +vn 0.0021 1.0000 0.0000 +vn -0.6538 -0.7564 -0.0210 +vn 0.0724 -0.5647 0.8221 +vn -0.0001 -0.0000 1.0000 +vn 0.4483 0.8937 0.0160 +vn 0.7673 -0.3894 -0.5096 +vn -0.0832 -0.1110 0.9903 +vn -0.3312 0.8132 0.4786 +vn 0.0000 0.9977 0.0678 +vn 0.3748 0.2895 0.8808 +vn -0.9330 0.3600 -0.0023 +vn -0.9529 0.2989 0.0525 +vn -0.8410 0.5405 -0.0241 +vn -0.5760 -0.8174 -0.0033 +vn 0.0914 0.8872 -0.4523 +vn -0.5053 -0.8629 0.0000 +vn 0.5398 -0.7858 0.3019 +vn 0.6515 0.7587 0.0000 +vn 0.8938 0.3775 -0.2421 +vn -0.1355 0.1983 -0.9707 +vn -0.2436 0.0472 -0.9687 +vn -0.8623 0.5055 0.0312 +vn 0.9294 -0.3386 -0.1473 +vn -0.9036 0.4284 0.0000 +vn -0.9999 0.0150 0.0000 +vn -0.6696 0.7427 -0.0053 +vn 0.9060 -0.2603 -0.3338 +vn 0.0000 -0.9909 -0.1344 +vn -0.0047 0.9977 -0.0669 +vn -0.4091 0.9120 0.0283 +vn 0.5051 -0.8629 0.0149 +vn 0.0895 0.0725 -0.9933 +vn -0.4440 -0.1318 -0.8863 +vn -0.3238 -0.9457 -0.0291 +vn 0.1257 -0.0264 0.9917 +vn -0.8067 0.3835 0.4497 +vn -0.8891 -0.4570 -0.0254 +vn -0.1304 -0.0720 -0.9888 +vn 0.7884 0.6148 -0.0212 +vn -0.7536 -0.1144 0.6473 +vn -0.4584 -0.8331 0.3094 +vn 0.0792 0.0328 0.9963 +vn 0.1433 0.1178 0.9826 +vn 0.0383 -0.1756 0.9837 +vn 0.2281 0.1330 0.9645 +vn -0.8639 -0.5036 0.0000 +vn -0.8732 0.4874 0.0000 +vn 0.0639 -0.9979 0.0074 +vn -0.0129 0.0362 0.9993 +vn -0.4792 0.2675 0.8360 +vn 0.0659 -0.0368 0.9971 +vn -0.4777 -0.2784 0.8333 +vn 0.0000 -0.5556 0.8314 +vn -0.4510 0.6054 -0.6558 +vn 0.2280 0.2072 0.9514 +vn 0.0000 -0.9999 0.0100 +vn 0.0000 0.0365 0.9993 +vn 0.0172 -0.0862 0.9961 +vn 0.2124 0.8937 0.3953 +vn -0.1974 0.9253 0.3239 +vn -0.1826 0.1915 0.9644 +vn -0.5622 0.2845 -0.7765 +vn -0.5927 0.8051 -0.0213 +vn -0.5844 0.8111 -0.0236 +vn 0.0393 -0.0786 -0.9961 +vn -0.9203 -0.3849 0.0705 +vn -0.9196 0.3928 -0.0069 +vn 0.9666 0.2565 0.0000 +vn 0.9965 0.0334 0.0764 +vn -0.9809 -0.1905 0.0395 +vn 0.1325 -0.5411 0.8305 +vn 0.8060 0.5886 -0.0623 +vn -0.9380 0.3464 0.0150 +vn -0.1945 0.2180 0.9564 +vn -0.5931 0.8045 -0.0310 +vn -0.2390 0.9708 0.0227 +vn 0.0000 0.9993 -0.0371 +vn 0.2875 0.9571 0.0352 +vn -0.0170 -0.2568 0.9663 +vn -0.7684 -0.6355 -0.0747 +vn -0.0875 0.1750 -0.9807 +vn 0.6732 0.7382 0.0440 +vn 0.4101 0.9120 0.0025 +vn -0.9994 0.0298 0.0158 +vn 0.8278 0.5592 -0.0455 +vn -0.3730 -0.2433 0.8954 +vn 0.9958 0.0918 0.0031 +vn 0.9625 0.2711 0.0090 +vn 0.0011 0.9994 -0.0332 +vn -0.8865 0.3491 -0.3036 +vn -0.3519 0.9360 0.0000 +vn -0.4785 0.8778 -0.0202 +vn -0.3532 0.9317 0.0850 +vn -0.5001 -0.8659 0.0000 +vn -0.1010 -0.4714 -0.8761 +vn -0.1894 0.0557 -0.9803 +vn 0.0127 -0.1238 -0.9922 +vn 0.3306 -0.5752 -0.7482 +vn -0.6774 -0.2930 -0.6747 +vn 0.9753 0.0516 0.2146 +vn 0.3043 0.2368 0.9227 +vn 0.0148 -0.2124 0.9771 +vn -0.0719 -0.1201 0.9902 +vn -0.1372 0.8011 -0.5826 +vn -0.6068 -0.0130 -0.7947 +vn -0.7766 0.6213 -0.1044 +vn -0.6768 0.6751 0.2936 +vn -0.8001 0.5995 -0.0217 +vn -0.7517 0.6595 0.0000 +vn -0.9108 0.4127 0.0095 +vn -0.9274 0.3670 0.0718 +vn -0.9911 0.0169 0.1319 +vn -0.9997 0.0247 0.0000 +vn 0.9624 0.2566 0.0892 +vn -0.9998 0.0186 0.0000 +vn -0.9627 0.0000 -0.2704 +vn -0.9997 0.0197 -0.0138 +vn -0.9365 0.0000 0.3506 +vn 0.0000 -0.0366 0.9993 +vn -0.0568 0.0000 0.9984 +vn -0.0236 -0.0352 0.9991 +vn 0.8652 -0.4980 0.0590 +vn 0.8748 -0.4845 -0.0047 +vn -0.2813 -0.9595 0.0149 +vn -0.7074 -0.7064 -0.0255 +vn 0.8583 0.0327 -0.5122 +vn 0.4732 0.1268 0.8718 +vn -0.6108 0.1627 -0.7749 +vn 0.8659 -0.5002 0.0000 +vn 0.1263 0.4171 0.9000 +vn 0.4652 0.8285 -0.3118 +vn 0.9940 -0.0583 -0.0927 +vn 0.2525 0.2273 0.9405 +vn -0.8396 -0.5065 -0.1963 +vn 0.1870 -0.7617 0.6204 +vn 0.5135 0.8580 0.0080 +vn -0.5136 0.8580 0.0075 +vn 0.0229 0.9995 -0.0231 +vn -0.5053 0.8629 0.0000 +vn 0.0800 -0.9570 -0.2787 +vn -0.0056 -0.9355 0.3533 +vn 0.9167 0.3979 0.0367 +vn -0.2352 0.1107 -0.9656 +vn -0.2447 0.3332 0.9106 +vn 0.1388 -0.7097 0.6907 +vn 0.2075 0.0357 -0.9776 +vn 0.1396 0.0453 -0.9892 +vn -0.5255 -0.6395 0.5611 +vn -0.7008 -0.5516 -0.4524 +vn 0.3798 0.3064 -0.8729 +vn -0.3344 -0.7084 0.6216 +vn -0.1578 -0.9867 0.0390 +vn 0.1707 0.0195 -0.9851 +vn -0.3113 -0.8661 0.3911 +vn 0.0000 -0.9997 -0.0263 +vn -0.5978 -0.0749 0.7982 +vn -0.6188 -0.4026 0.6746 +vn 0.1248 0.9640 0.2349 +vn -0.8651 0.5007 -0.0292 +vn -0.8419 0.3175 -0.4363 +vn 0.1630 -0.9859 0.0369 +vn 0.5992 -0.7871 0.1465 +vn -0.9890 -0.1165 0.0910 +vn -0.7700 0.6342 0.0703 +vn -0.3688 0.8212 0.4355 +vn 0.4289 0.5722 -0.6991 +vn 0.1487 0.9888 -0.0135 +vn -0.5069 0.8620 -0.0050 +vn 0.5642 0.7937 0.2276 +vn 0.5061 0.8625 0.0000 +vn 0.3112 -0.4473 -0.8385 +vn -0.7497 0.5231 0.4054 +vn -0.7704 0.6376 0.0000 +vn -0.5776 0.8163 0.0000 +vn -0.4869 0.8356 -0.2543 +vn 0.9807 -0.1956 0.0000 +vn 0.8508 0.5255 0.0000 +vn 0.0000 1.0000 0.0080 +vn -0.0983 0.4017 0.9105 +vn -0.2948 0.9190 0.2616 +vn 0.5117 0.8540 -0.0943 +vn 0.2834 -0.0015 -0.9590 +vn -0.5991 0.7573 0.2601 +vn -0.4815 -0.7411 0.4679 +vn 0.8172 -0.3848 -0.4291 +vn 0.1675 -0.7251 -0.6680 +vn 0.0953 -0.3607 -0.9278 +vn -0.0002 0.9971 0.0763 +vn -0.2704 -0.2411 0.9321 +vn 0.1302 -0.3703 0.9197 +vn 0.6730 -0.0323 -0.7390 +vn 0.8870 0.0212 -0.4612 +vn 0.6428 -0.5691 0.5128 +vn -0.0032 -0.0802 -0.9968 +vn 0.8376 -0.3060 0.4525 +vn -0.5883 0.1028 0.8021 +vn -0.1816 0.9794 -0.0879 +vn 0.2082 -0.9781 0.0000 +vn 0.5516 0.5938 0.5858 +vn -0.0078 0.0061 -1.0000 +vn 0.5857 0.6353 0.5033 +vn -0.0867 0.1052 -0.9907 +vn 0.1246 -0.0495 -0.9910 +vn 0.2968 0.9489 0.1076 +vn 0.5441 0.4429 0.7126 +vn -0.0134 0.7764 -0.6301 +vn -0.0572 0.9889 0.1369 +vn -0.4198 0.7717 -0.4777 +vn -0.4620 0.8386 -0.2888 +vn -0.6257 0.2669 0.7330 +vn -0.3997 0.6737 -0.6216 +vn -0.8978 0.4047 -0.1740 +vn 0.8782 -0.4783 0.0000 +vn 0.8782 -0.4783 -0.0059 +vn -0.1216 -0.1818 -0.9758 +vn -0.5111 0.8595 0.0000 +vn -0.0190 0.1660 -0.9859 +vn 0.2086 0.6631 0.7188 +vn 0.0226 0.0818 -0.9964 +vn -0.9539 0.0203 -0.2995 +vn 0.3714 0.0000 0.9285 +vn 0.9483 -0.3175 0.0000 +vn 0.9998 -0.0213 0.0006 +vn 0.0000 -0.1217 0.9926 +vn 0.4855 -0.2126 -0.8480 +vn 0.4228 0.1781 0.8885 +vn 0.3466 0.6050 0.7169 +vn 0.0164 -0.0726 -0.9972 +vn 0.0406 0.4548 0.8897 +vn -0.8977 0.3945 -0.1960 +vn 0.1583 -0.1210 0.9800 +vn 0.6138 0.7893 -0.0152 +vn -0.0550 -0.1996 -0.9783 +vn 0.0943 -0.0685 0.9932 +vn -0.3138 0.6543 0.6881 +vn -0.8961 0.3928 -0.2068 +vn -0.3341 0.0853 0.9387 +vn -0.4361 -0.8810 -0.1835 +vn -0.4156 0.2711 -0.8682 +vn 0.0201 -0.9801 0.1973 +vn -0.9252 0.3458 0.1563 +vn -0.9624 0.2714 -0.0123 +vn -0.7238 0.1584 -0.6716 +vn -0.5357 0.0000 -0.8444 +vn -0.4045 0.0222 -0.9143 +vn -0.6093 -0.3340 -0.7192 +vn -0.5164 0.8563 -0.0071 +vn -0.5776 0.8162 -0.0136 +vn -0.1162 -0.1064 -0.9875 +vn -0.0153 0.0305 -0.9994 +vn 0.3582 0.1063 -0.9276 +vn -0.0675 0.0364 0.9971 +vn -0.9889 0.1487 0.0050 +vn -0.6091 -0.7857 0.1077 +vn -0.3571 -0.1544 -0.9212 +vn -0.1398 -0.5743 0.8066 +vn -0.1279 -0.6012 0.7888 +vn 0.9408 0.3370 0.0363 +vn -0.1706 -0.7013 0.6922 +vn 0.2291 0.5344 -0.8136 +vn -0.0841 -0.4503 -0.8889 +vn -0.0573 -0.7939 -0.6053 +vn -0.9452 0.3253 0.0278 +vn 0.4703 0.6579 0.5883 +vn -0.8877 0.4594 -0.0294 +vn -0.7660 0.6404 0.0558 +vn -0.7950 0.1473 0.5884 +vn -0.3225 -0.5160 0.7935 +vn -0.8804 0.4734 -0.0268 +vn -0.9789 0.0496 0.1980 +vn -0.4154 -0.6190 0.6666 +vn -0.6433 -0.2763 0.7140 +vn -0.4555 -0.5674 0.6860 +vn 0.7741 0.4064 -0.4854 +vn 0.8718 -0.4899 -0.0026 +vn -0.8842 0.4671 0.0004 +vn -0.2974 -0.5869 -0.7531 +vn -0.8837 0.4680 0.0000 +vn 0.2681 -0.7743 0.5732 +vn 0.3929 -0.9177 -0.0585 +vn 0.1630 -0.9859 0.0368 +vn -0.8921 -0.2430 -0.3809 +vn -0.3967 0.6956 0.5990 +vn 0.5529 0.0802 0.8294 +vn 0.9837 -0.1355 0.1184 +vn 0.7376 -0.6720 0.0667 +vn -0.8529 -0.3631 -0.3751 +vn 0.0311 -0.0580 0.9978 +vn 0.5557 0.4253 0.7144 +vn 0.8678 0.1631 -0.4693 +vn 0.0336 0.0202 0.9992 +vn 0.0574 -0.0461 0.9973 +vn -0.8008 -0.5837 0.1346 +vn 0.3958 0.8856 0.2429 +vn -0.5270 -0.8203 0.2222 +vn -0.9531 0.2486 0.1727 +vn -0.9543 0.2489 0.1651 +vn -0.1782 0.6037 0.7771 +vn 0.1101 0.9046 0.4118 +vn -0.0732 0.2397 0.9681 +vn -0.7002 0.2678 0.6619 +vn 0.9753 -0.1994 -0.0954 +vn -0.0847 -0.9704 -0.2263 +vn -0.7568 0.6535 0.0084 +vn 0.4128 -0.3185 0.8533 +vn -0.5593 0.8287 -0.0218 +vn -0.4518 0.6695 -0.5896 +vn -0.4143 0.5576 -0.7194 +vn 0.9093 -0.3467 -0.2299 +vn 0.3656 -0.8582 0.3604 +vn -0.6054 0.3257 -0.7262 +vn -0.5010 0.2916 -0.8149 +vn 0.8414 -0.0427 -0.5388 +vn -0.2640 -0.9404 -0.2144 +vn -0.0436 0.0235 0.9988 +vn 0.9790 0.1903 -0.0737 +vn -0.7649 0.0000 0.6441 +vn -0.5848 -0.2103 0.7835 +vn 0.0201 0.0381 0.9991 +vn 0.2064 0.0677 0.9761 +vn -0.9696 -0.2436 -0.0252 +vn -0.6144 -0.1543 -0.7738 +vn -0.7269 0.0462 -0.6852 +vn 0.0440 -0.9146 0.4019 +vn -0.7560 -0.4835 0.4413 +vn -0.0026 -0.9385 -0.3453 +vn 0.1147 -0.6060 -0.7871 +vn 0.0000 -0.8920 -0.4520 +vn 0.0000 -0.9985 -0.0553 +vn -0.2979 -0.9539 0.0354 +vn -0.2150 -0.6883 0.6928 +vn -0.1885 -0.3823 0.9046 +vn -0.4494 -0.5726 0.6858 +vn 0.9913 -0.0298 -0.1284 +vn -0.5898 -0.4294 0.6839 +vn -0.6173 -0.7866 -0.0147 +vn -0.6354 -0.7721 0.0103 +vn -0.3529 -0.9354 -0.0212 +vn -0.1825 -0.4837 -0.8560 +vn -0.4842 -0.5883 -0.6477 +vn 0.2395 -0.4170 0.8768 +vn -0.8641 -0.5025 0.0291 +vn 0.3022 0.3524 -0.8857 +vn -0.3472 -0.3575 0.8670 +vn 0.2498 -0.1917 -0.9491 +vn -0.9250 -0.2107 0.3162 +vn -0.1857 -0.4353 0.8809 +vn -0.7568 -0.1356 0.6394 +vn -0.0336 -0.6728 0.7390 +vn 0.1027 -0.9875 0.1198 +vn 0.1970 -0.4416 0.8753 +vn 0.1108 -0.3434 0.9326 +vn 0.1913 0.2142 -0.9579 +vn 0.3346 -0.1622 -0.9283 +vn -0.3246 -0.5168 0.7922 +vn 0.1948 -0.0280 -0.9804 +vn 0.2631 -0.0378 -0.9640 +vn -0.0070 0.0793 0.9968 +vn 0.0439 -0.0088 0.9990 +vn 0.7001 -0.1406 0.7001 +vn 0.7062 0.0497 0.7062 +vn 0.9974 0.0702 0.0151 +vn 0.9263 0.3498 -0.1399 +vn 0.7632 0.2882 0.5783 +vn 0.9630 0.2694 0.0000 +vn 0.6779 0.1896 -0.7103 +vn 0.5807 0.4741 -0.6618 +vn 0.4900 -0.6448 0.5866 +vn -0.1276 -0.8531 -0.5060 +vn 0.5842 -0.7688 -0.2599 +vn -0.5285 -0.3401 -0.7779 +vn 0.7472 0.0323 -0.6638 +vn -0.8597 0.5075 -0.0583 +vn -0.8097 0.5865 0.0214 +vn -0.6841 0.4955 -0.5352 +vn -0.6257 0.1969 -0.7548 +vn -0.0757 0.3100 -0.9477 +vn -0.3368 0.2377 -0.9111 +vn -0.5028 -0.8641 -0.0230 +vn -0.0968 0.3964 -0.9130 +vn -0.0966 0.4925 0.8649 +vn -0.5091 -0.8606 -0.0128 +vn 0.5285 -0.8488 -0.0137 +vn 0.3506 -0.5631 -0.7483 +vn 0.6171 -0.4731 -0.6288 +vn 0.7928 -0.6078 0.0452 +vn -0.4895 -0.8720 0.0000 +vn 0.2173 -0.3999 0.8904 +vn 0.9627 0.2700 -0.0201 +vn 0.9762 0.1603 -0.1464 +vn -0.2100 -0.9434 -0.2567 +vn 0.3201 -0.5270 -0.7873 +vn 0.0909 -0.4311 -0.8977 +vn -0.1814 -0.4780 -0.8594 +vn 0.7148 -0.6842 -0.1447 +vn 0.5472 -0.5238 0.6529 +vn -0.0348 0.4028 -0.9146 +vn 0.4511 -0.4959 0.7420 +vn 0.3703 -0.7943 0.4817 +vn 0.3325 -0.5935 0.7329 +vn 0.4884 -0.8716 0.0435 +vn 0.3149 -0.9485 -0.0345 +vn 0.1148 -0.9918 0.0569 +vn 0.0905 -0.7824 0.6162 +vn -0.6760 -0.0000 -0.7369 +vn 0.0614 -0.7034 0.7081 +vn 0.5408 -0.3201 0.7778 +vn 0.6344 -0.3363 0.6961 +vn 0.8832 -0.4682 -0.0264 +vn 0.9819 -0.1894 0.0066 +vn 0.9896 -0.1404 -0.0302 +vn 0.7375 -0.1046 -0.6672 +vn 0.3502 -0.1667 -0.9217 +vn 0.0504 0.0704 0.9962 +vn -0.1296 -0.2813 -0.9508 +vn -0.4945 -0.8692 -0.0067 +vn 0.4924 -0.6356 -0.5946 +vn -0.1278 -0.5096 -0.8509 +vn 0.4429 -0.2464 -0.8621 +vn 0.8728 -0.4857 -0.0485 +vn 0.6107 -0.7883 0.0750 +vn -0.0845 0.9773 0.1945 +vn -0.2828 -0.2975 -0.9119 +vn -0.2816 -0.2906 -0.9145 +vn -0.0595 0.9980 -0.0199 +vn 0.4893 0.8662 0.1019 +vn 0.4228 0.9050 0.0474 +vn 0.3128 0.6694 -0.6738 +vn 0.8966 0.2515 -0.3644 +vn 0.0863 -0.4611 -0.8831 +vn 0.5784 -0.2058 -0.7894 +vn 0.3300 -0.1447 -0.9328 +vn 0.0703 -0.4539 -0.8883 +vn -0.0552 -0.6994 -0.7126 +vn -0.1788 0.2591 0.9492 +vn 0.6159 -0.7762 0.1350 +vn -0.0781 -0.9902 -0.1155 +vn 0.3708 0.2940 -0.8810 +vn 0.3486 -0.3386 -0.8740 +vn -0.1748 0.6939 -0.6985 +vn -0.2442 0.9693 -0.0274 +vn 0.4855 -0.8742 0.0000 +vn -0.5748 -0.5296 -0.6238 +vn -0.7338 -0.6762 -0.0652 +vn -0.9829 -0.1060 0.1504 +vn -0.1270 0.8192 -0.5592 +vn -0.4555 -0.0853 -0.8861 +vn -0.4183 0.5133 -0.7493 +vn -0.5257 -0.0567 -0.8488 +vn 0.4980 -0.8671 -0.0139 +vn -0.3311 0.9431 0.0321 +vn 0.2122 0.4641 -0.8600 +vn 0.5103 -0.8600 0.0000 +vn 0.6323 -0.1170 0.7659 +vn 0.7713 0.6226 -0.1321 +vn 0.6307 0.5091 0.5857 +vn 0.4568 0.4568 0.7633 +vn 0.4146 0.6792 0.6057 +vn 0.2977 0.5970 0.7450 +vn 0.7866 -0.2492 -0.5649 +vn -0.1750 -0.5008 0.8477 +vn -0.3680 0.6012 0.7094 +vn 0.1876 -0.9822 0.0030 +vn -0.2538 0.9673 0.0031 +vn -0.1533 0.5843 -0.7969 +vn -0.1778 0.9834 0.0357 +vn -0.1353 0.7485 0.6491 +vn -0.1385 0.7539 0.6423 +vn 0.1090 0.6532 0.7493 +vn 0.1660 0.7597 0.6288 +vn 0.2131 0.9752 0.0595 +vn 0.0118 0.0005 -0.9999 +vn -0.8683 -0.4958 -0.0149 +vn 0.3538 0.9348 -0.0317 +vn 0.8747 0.4847 0.0051 +vn 0.0000 0.9967 -0.0807 +vn 0.0000 0.8279 -0.5609 +vn -0.5068 0.6310 -0.5874 +vn -0.3319 0.5646 0.7557 +vn -0.3970 0.7941 -0.4602 +vn 0.5203 0.8524 0.0514 +vn 0.2303 0.6085 -0.7594 +vn -0.4470 0.8941 0.0271 +vn 0.6737 0.6429 -0.3643 +vn 0.6377 0.1695 -0.7514 +vn 0.7235 0.6904 0.0000 +vn -0.1276 -0.0321 0.9913 +vn 0.5394 0.1015 0.8359 +vn 0.6871 -0.1325 0.7143 +vn 0.2934 -0.9435 0.1539 +vn -0.8839 -0.4676 -0.0004 +vn -0.0084 0.4951 -0.8688 +vn -0.8810 -0.4724 -0.0274 +vn -0.0863 0.7373 0.6701 +vn 0.2403 -0.7237 -0.6470 +vn -0.4414 0.3148 0.8403 +vn 0.8920 -0.4445 -0.0821 +vn -0.1005 -0.6893 -0.7174 +vn -0.3825 -0.7464 -0.5445 +vn 0.5713 -0.8207 0.0068 +vn 0.0783 -0.9963 -0.0350 +vn 0.5529 -0.8188 0.1544 +vn -0.4474 -0.8930 0.0492 +vn -0.4587 0.8882 0.0261 +vn -0.4084 -0.2851 -0.8671 +vn -0.9652 -0.2614 -0.0095 +vn 0.8683 0.4960 0.0010 +vn -0.6270 -0.3512 -0.6954 +vn -0.0824 0.4895 -0.8681 +vn -0.7290 -0.1339 -0.6713 +vn -0.9953 -0.0364 0.0895 +vn -0.8725 -0.4886 0.0066 +vn -0.7879 -0.4582 0.4114 +vn -0.0569 -0.0177 0.9982 +vn -0.0969 -0.2741 -0.9568 +vn -0.0669 0.1176 0.9908 +vn 0.8755 0.4804 0.0513 +vn -0.8626 -0.0315 0.5050 +vn -0.9959 0.0860 -0.0297 +vn -0.9178 0.3916 0.0651 +vn -0.7785 0.0672 -0.6241 +vn -0.1911 0.0521 -0.9802 +vn -0.5218 0.8524 0.0355 +vn 0.0694 0.1325 -0.9888 +vn -0.5164 0.4459 0.7311 +vn -0.8622 0.5018 -0.0693 +vn -0.5091 0.4244 0.7488 +vn -0.5783 0.2468 0.7776 +vn -0.0745 0.1354 0.9880 +vn -0.5526 0.7101 0.4364 +vn -0.8885 -0.4589 0.0000 +vn -0.0436 -0.0672 0.9968 +vn -0.5774 0.5486 0.6046 +vn -0.9197 0.0000 -0.3927 +vn 0.0487 0.0487 0.9976 +vn 0.5963 0.3580 0.7185 +vn 0.7809 -0.5978 0.1814 +vn 0.8248 -0.5315 -0.1929 +vn 0.5338 -0.7316 0.4240 +vn 0.3504 -0.9322 -0.0905 +vn -0.0038 0.0051 -1.0000 +vn -0.0851 -0.9946 -0.0589 +vn -0.0654 -0.9973 0.0328 +vn 0.9371 -0.2823 0.2052 +vn -0.5591 -0.7806 0.2795 +vn -0.5897 -0.7881 0.1766 +vn -0.8817 -0.4718 0.0000 +vn 0.1885 -0.0752 0.9792 +vn 0.8187 0.4269 0.3840 +vn -0.9866 -0.1631 0.0000 +vn -0.9944 -0.0869 0.0597 +vn 0.4684 0.8603 -0.2012 +vn -0.8658 0.3833 0.3215 +vn -0.9431 0.2361 0.2343 +vn 0.5209 -0.1316 0.8434 +vn -0.9866 0.1581 -0.0408 +vn 0.1370 -0.4476 -0.8837 +vn 0.9213 -0.3579 -0.1518 +vn -0.2728 0.4446 -0.8531 +vn -0.2590 0.3558 -0.8980 +vn -0.5704 0.4566 -0.6827 +vn -0.5284 0.1651 -0.8328 +vn -0.9496 0.2967 0.1015 +vn -0.7036 -0.7036 -0.0994 +vn -0.5700 0.6504 0.5020 +vn -0.5586 0.6182 0.5529 +vn -0.5219 0.8230 0.2241 +vn -0.9285 0.3617 -0.0842 +vn -0.8876 0.3315 -0.3197 +vn -0.8135 0.0451 0.5798 +vn -0.2803 -0.0743 -0.9570 +vn -0.7567 0.4061 -0.5123 +vn -0.1830 -0.1595 0.9701 +vn -0.5097 -0.8591 0.0453 +vn 0.7933 0.5219 -0.3135 +vn 0.8017 0.2270 0.5530 +vn 0.7108 0.3574 -0.6058 +vn -0.3127 -0.1839 -0.9319 +vn 0.1556 -0.0702 -0.9853 +vn 0.2805 -0.0429 -0.9589 +vn 0.8719 -0.4897 -0.0041 +vn 0.8684 -0.0547 -0.4928 +vn -0.5801 -0.4393 -0.6859 +vn 0.3946 -0.0698 0.9162 +vn 0.5734 0.2037 0.7936 +vn 0.2517 0.0240 0.9675 +vn 0.3715 0.0783 0.9251 +vn 0.4525 -0.5986 0.6610 +vn -0.1825 0.9552 0.2331 +vn 0.3381 -0.9254 -0.1712 +vn 0.4130 -0.9087 0.0602 +vn 0.1499 -0.2059 -0.9670 +vn 0.1509 0.2566 -0.9547 +vn 0.0888 -0.4053 0.9099 +vn 0.0359 -0.5973 0.8012 +vn 0.1041 0.6247 0.7739 +vn 0.4590 -0.4162 -0.7849 +vn -0.6025 0.0909 -0.7929 +vn -0.9551 0.0201 -0.2957 +vn 0.5247 -0.3531 -0.7746 +vn -0.0215 0.6084 -0.7933 +vn 0.1236 -0.9923 0.0000 +vn -0.6972 0.3177 0.6427 +vn -0.9696 -0.1339 0.2048 +vn -0.8852 -0.1779 -0.4299 +vn 0.1515 -0.9834 -0.1000 +vn -0.3153 0.0430 0.9480 +vn 0.9189 0.0000 -0.3945 +vn -0.6168 -0.5924 -0.5183 +vn -0.6100 -0.3226 0.7237 +vn 0.5913 0.1925 0.7831 +vn -0.5542 -0.8230 0.1243 +vn -0.3036 -0.8553 -0.4199 +vn 0.5308 0.7184 -0.4496 +vn -0.1230 -0.3464 0.9300 +vn -0.0663 -0.3760 0.9243 +vn -0.0288 -0.3260 0.9449 +vn -0.1050 0.9673 0.2307 +vn 0.8484 0.0109 -0.5293 +vn -0.5150 -0.8572 0.0000 +vn -0.1157 -0.3721 0.9209 +vn -0.4290 -0.5942 0.6803 +vn -0.5303 -0.1063 0.8411 +vn 0.2322 0.2735 0.9334 +vn 0.3582 0.2414 0.9019 +vn -0.6204 -0.7441 -0.2477 +vn 0.1147 0.5782 -0.8078 +vn 0.1040 0.5669 -0.8172 +vn 0.1698 0.5388 -0.8252 +vn -0.2674 0.9623 -0.0500 +vn 0.6422 -0.7656 -0.0389 +vn -0.2332 0.4482 -0.8630 +vn -0.6277 0.6779 -0.3825 +vn -0.3315 0.8560 -0.3966 +vn -0.9696 -0.2250 -0.0966 +vn -0.8164 -0.4250 0.3911 +vn 0.0212 0.0213 -0.9995 +vn -0.1675 0.0837 -0.9823 +vn 0.9224 -0.3817 0.0585 +vn -0.9510 0.2840 0.1220 +vn -0.4624 -0.0124 0.8866 +vn 0.3975 0.2251 -0.8895 +vn 0.9877 -0.0097 0.1563 +vn -0.8762 -0.4803 -0.0407 +vn 0.0085 -0.0051 -1.0000 +vn 0.7399 -0.5064 0.4428 +vn 0.6190 -0.6168 0.4861 +vn -0.9435 0.3312 0.0000 +vn 0.3202 -0.3190 -0.8920 +vn 0.3132 -0.3330 -0.8894 +vn 0.7476 0.5063 0.4299 +vn 0.3830 0.2780 -0.8809 +vn 0.3408 -0.9388 0.0496 +vn -0.6016 0.7988 0.0000 +vn 0.4614 -0.2436 -0.8531 +vn 0.3714 -0.2936 -0.8808 +vn -0.1952 0.1404 0.9707 +vn 0.4036 -0.9096 -0.0984 +vn -0.0161 -0.8469 -0.5315 +vn -0.0423 -0.7415 -0.6696 +vn -0.2338 -0.6309 -0.7398 +vn 0.3408 0.8059 -0.4842 +vn 0.5749 -0.6074 0.5482 +vn 0.6165 -0.3599 -0.7002 +vn 0.6670 -0.4492 -0.5944 +vn 0.3773 -0.0576 0.9243 +vn 0.0852 0.0000 0.9964 +vn 0.7285 -0.6754 0.1148 +vn -0.5745 0.0000 0.8185 +vn -0.3693 0.6901 0.6225 +vn 0.6078 -0.7464 -0.2712 +vn 0.4938 -0.0985 0.8640 +vn 0.1792 -0.1481 0.9726 +vn -0.8626 0.1721 0.4758 +vn -0.7402 -0.3225 -0.5899 +vn 0.9989 0.0351 0.0298 +vn -0.0041 0.0051 -1.0000 +vn -0.6012 -0.6169 -0.5080 +vn -0.2380 0.0000 -0.9713 +vn -0.6833 -0.5658 0.4615 +vn -0.9032 -0.3775 -0.2040 +vn -0.3115 -0.4673 -0.8274 +vn -0.2027 -0.5213 -0.8290 +vn 0.0156 0.1303 -0.9914 +vn 0.1000 0.8372 -0.5377 +vn 0.2833 0.9532 -0.1051 +vn -0.0872 0.9754 -0.2023 +vn 0.3760 0.3376 -0.8629 +vn 0.2487 0.6581 0.7106 +vn -0.2889 -0.7644 0.5765 +vn -0.2390 -0.0559 0.9694 +vn -0.0815 -0.1541 0.9847 +vn 0.5514 0.0103 -0.8342 +vn 0.6053 0.0248 -0.7956 +vn -0.0792 -0.3439 0.9357 +vn 0.0105 0.0456 0.9989 +vn 0.2385 -0.2724 0.9322 +vn -0.0568 -0.9983 0.0102 +vn -0.0685 -0.8685 -0.4909 +vn 0.0355 -0.6019 -0.7978 +vn 0.0005 -0.0085 -1.0000 +vn -0.0267 -0.4686 -0.8830 +vn -0.0105 -0.3309 -0.9436 +vn -0.2152 0.9497 -0.2276 +vn 0.0285 -0.6082 -0.7933 +vn -0.8034 -0.3945 -0.4461 +vn -0.6077 0.4675 -0.6420 +vn -0.5348 0.4594 -0.7092 +vn -0.2124 -0.4729 -0.8551 +vn -0.0981 0.0217 -0.9949 +vn -0.2961 0.9192 -0.2596 +vn 0.4453 -0.0753 0.8922 +vn -0.3919 0.8678 -0.3054 +vn -0.4466 0.0015 -0.8947 +vn 0.5185 -0.7811 -0.3479 +vn -0.2066 -0.2890 -0.9348 +vn -0.1429 0.9892 -0.0336 +vn -0.1567 0.9876 -0.0125 +vn -0.1745 0.5295 0.8302 +vn -0.4565 0.1246 -0.8809 +vn 0.5376 0.6460 -0.5419 +vn 0.3079 -0.3079 0.9002 +vn 0.6202 -0.7324 0.2812 +vn 0.4340 0.0000 0.9009 +vn 0.5690 -0.3796 0.7295 +vn 0.8421 -0.3738 0.3888 +vn -0.2307 0.1860 0.9551 +vn -0.3024 -0.9510 -0.0638 +vn 0.5013 -0.0882 -0.8608 +vn 0.9888 0.0337 0.1453 +vn 0.8217 0.1122 0.5588 +vn 0.9577 -0.1050 -0.2678 +vn 0.1828 -0.2040 0.9618 +vn 0.0582 0.9983 0.0085 +vn 0.9030 0.4107 -0.1263 +vn 0.3538 0.8608 0.3659 +vn -0.6874 -0.2180 -0.6928 +vn -0.6727 -0.0565 -0.7378 +vn 0.9687 0.0000 -0.2482 +vn 0.2958 -0.6027 0.7411 +vn -1.0000 -0.0078 0.0000 +vn -0.7459 0.2000 0.6354 +vn 0.8303 -0.0099 -0.5572 +vn -0.6015 0.1798 0.7784 +vn -0.5014 -0.0027 -0.8652 +vn -0.5135 -0.0040 -0.8581 +vn -0.2372 0.0351 0.9708 +vn 0.9700 0.1526 0.1890 +vn 0.4094 0.2429 0.8795 +vn 0.5683 -0.7594 -0.3169 +vn 0.5145 0.8165 -0.2618 +vn 0.2005 0.9445 0.2604 +vn 0.0484 0.3556 -0.9334 +vn -0.0291 -0.9868 -0.1592 +vn 0.1406 0.3629 -0.9212 +vn 0.7333 0.6702 0.1145 +vn 0.0487 0.0123 -0.9987 +vn -0.4471 -0.8945 -0.0023 +vn 0.7016 -0.4408 -0.5599 +vn 0.0361 -0.7175 -0.6957 +vn -0.0035 -0.6424 -0.7663 +vn 0.3583 -0.3562 0.8630 +vn 0.3547 -0.2360 0.9047 +vn 0.9984 0.0568 0.0000 +vn 0.9901 0.0298 -0.1369 +vn 0.7576 0.6484 0.0755 +vn 0.7087 0.6603 0.2486 +vn -0.4011 0.2421 0.8834 +vn -0.8481 0.4201 -0.3230 +vn 0.9015 0.3683 -0.2273 +vn 0.8880 0.4433 0.1225 +vn 0.0173 0.1481 0.9888 +vn -0.7555 -0.6091 -0.2413 +vn -0.6747 -0.7377 -0.0237 +vn 0.9894 0.0000 -0.1454 +vn -0.7706 -0.2770 0.5740 +vn -0.2405 0.7121 0.6596 +vn -0.3697 -0.1791 -0.9117 +vn 0.9229 -0.3764 0.0813 +vn 0.9188 -0.3934 0.0328 +vn 0.1313 0.4239 0.8962 +vn 0.0077 0.3122 0.9500 +vn -0.1042 0.3941 0.9131 +vn 0.0686 -0.5505 0.8320 +vn 0.1946 -0.5311 0.8246 +vn -0.4363 0.8924 0.1147 +vn -0.5202 0.6868 0.5077 +vn -0.1683 -0.8739 0.4560 +vn -0.3068 0.4051 -0.8612 +vn 0.2666 0.0701 -0.9612 +vn 0.3826 -0.5054 -0.7734 +vn 0.3199 -0.3431 -0.8831 +vn 0.7904 -0.6002 -0.1226 +vn 0.3155 -0.8433 -0.4351 +vn 0.8107 -0.5855 0.0000 +vn 0.1648 -0.5334 0.8297 +vn 0.9824 -0.1868 0.0000 +vn 0.0387 -0.6326 0.7735 +vn 0.8653 -0.3296 -0.3777 +vn 0.8992 -0.3520 0.2598 +vn 0.8954 0.0032 -0.4453 +vn -0.0525 0.9822 -0.1801 +vn -0.2344 -0.5243 0.8186 +vn 0.2190 -0.9238 -0.3141 +vn 0.8653 0.0925 0.4927 +vn 0.0044 0.1743 -0.9847 +vn 0.6572 0.3404 0.6724 +vn 0.7303 0.6218 -0.2830 +vn 0.2832 0.5682 0.7726 +vn 0.3695 -0.7500 -0.5486 +vn 0.7098 -0.4768 -0.5185 +vn 0.1385 0.5488 -0.8244 +vn -0.0270 -0.8724 -0.4880 +vn -0.2916 -0.4215 -0.8586 +vn -0.2212 -0.9021 0.3706 +vn 0.0509 -0.9958 0.0761 +vn 0.0615 -0.9939 0.0920 +vn -0.0223 -0.5227 0.8522 +vn 0.2069 -0.2759 0.9386 +vn 0.2811 -0.3748 0.8835 +vn 0.2649 -0.1001 0.9591 +vn 0.6098 -0.6509 -0.4522 +vn 0.2953 -0.9300 -0.2189 +vn -0.0520 0.3073 -0.9502 +vn -0.1851 0.0553 -0.9812 +vn -0.0155 -0.1311 0.9912 +vn -0.7892 -0.4501 -0.4178 +vn -0.3230 -0.1584 -0.9330 +vn -0.9992 -0.0387 0.0000 +vn -0.9992 -0.0388 0.0000 +vn 0.1601 0.2649 0.9509 +vn 0.2000 0.8080 0.5542 +vn 0.1721 0.7424 0.6474 +vn -0.1449 0.9230 0.3563 +vn -0.1273 0.9084 0.3981 +vn 0.0125 0.0000 -0.9999 +vn -0.6556 0.7535 0.0499 +vn 0.0041 -0.0038 -1.0000 +vn 0.0939 0.0017 -0.9956 +vn -0.7557 0.6454 0.1108 +vn -0.1798 0.1536 0.9716 +vn -0.1948 0.1473 0.9697 +vn -0.0046 -0.0055 -1.0000 +vn -0.9480 -0.2583 0.1862 +vn -0.9478 -0.2603 0.1843 +vn -0.1948 -0.3641 0.9108 +vn -0.7419 -0.4616 0.4863 +vn -0.3587 -0.2458 0.9005 +vn 0.4861 0.6221 0.6137 +vn 0.3036 0.1789 0.9358 +vn -0.3729 -0.3645 0.8533 +vn 0.8810 -0.0707 0.4678 +vn -0.5065 -0.8581 0.0848 +vn -0.0290 -0.9403 0.3391 +vn -0.4108 -0.2183 0.8852 +vn 0.7515 -0.5220 -0.4034 +vn -0.5948 -0.0748 0.8004 +vn 0.2228 -0.0013 0.9749 +vn -0.1883 -0.0275 -0.9817 +vn -0.1472 -0.0215 -0.9889 +vn -0.0401 -0.1246 0.9914 +vn -0.9741 0.1199 -0.1915 +vn -0.8614 -0.4525 -0.2308 +vn 0.9149 -0.0451 -0.4012 +vn -0.4082 0.1794 0.8951 +vn -0.8438 -0.4946 0.2084 +vn -0.2008 -0.1382 -0.9698 +vn -0.2649 0.2638 0.9275 +vn 0.7374 0.6745 0.0356 +vn 0.5722 0.5234 -0.6314 +vn 0.5643 0.4702 -0.6786 +vn 0.1935 0.2492 -0.9489 +vn -0.3637 -0.8711 -0.3298 +vn -0.1513 -0.8586 -0.4898 +vn -0.3698 -0.7163 -0.5917 +vn -0.5070 0.8620 0.0000 +vn -0.7401 -0.6263 -0.2449 +vn -0.4853 0.8738 -0.0314 +vn 0.2549 0.2845 -0.9242 +vn -0.3586 -0.4771 -0.8023 +vn 0.4971 0.8677 0.0000 +vn 0.4954 0.8687 -0.0046 +vn 0.3764 0.0230 0.9262 +vn 0.3266 0.3657 -0.8715 +vn 0.0570 0.2066 -0.9768 +vn -0.3061 -0.6964 0.6491 +vn 0.1093 0.5023 -0.8578 +vn 0.5010 0.8655 0.0000 +vn -0.4974 0.8675 0.0000 +vn -0.0406 0.8318 0.5536 +vn -0.0486 0.9956 -0.0798 +vn -0.3295 0.9283 0.1722 +vn -0.3368 0.5875 -0.7358 +vn -0.4138 0.1082 -0.9039 +vn -0.3360 0.2057 0.9191 +vn 0.0310 -0.2376 0.9709 +vn -0.2933 -0.2971 0.9087 +vn 0.2042 -0.5806 0.7882 +vn 0.4081 0.3793 0.8304 +vn -0.1957 -0.1053 -0.9750 +vn 0.2518 -0.3154 0.9149 +vn 0.7342 -0.6542 -0.1817 +vn 0.7496 -0.6105 -0.2557 +vn 0.3060 -0.0605 -0.9501 +vn -0.3742 0.8101 -0.4514 +vn -0.7056 0.3872 -0.5935 +vn -0.9179 0.1900 0.3484 +vn 0.2131 0.0695 -0.9745 +vn 0.1529 0.1417 -0.9780 +vn -0.7905 -0.6045 0.0983 +vn -0.8949 -0.3571 -0.2678 +vn -0.7886 -0.0510 0.6127 +vn 0.0972 -0.4446 0.8905 +vn -0.4774 -0.8585 -0.1874 +vn 0.3256 0.0398 0.9447 +vn 0.2322 -0.0312 0.9722 +vn 0.9493 0.2884 0.1253 +vn 0.4884 0.3510 0.7989 +vn -0.6679 -0.7437 -0.0273 +vn 0.4255 0.2705 0.8636 +vn 0.0005 -0.1346 0.9909 +vn -0.5367 -0.8378 0.1003 +vn -0.5637 -0.7603 0.3228 +vn 0.3780 -0.7664 0.5193 +vn -0.1991 0.1139 -0.9733 +vn -0.3198 -0.1685 -0.9324 +vn 0.7402 0.1973 -0.6427 +vn 0.1909 0.1325 -0.9726 +vn 0.2825 -0.0694 -0.9568 +vn -0.0463 0.2287 -0.9724 +vn 0.5084 0.1360 -0.8503 +vn -0.0900 0.2419 -0.9661 +vn 0.1646 -0.9461 -0.2788 +vn 0.1549 0.5961 -0.7878 +vn -0.2414 -0.9291 -0.2801 +vn -0.2486 0.9152 -0.3173 +vn 0.3368 -0.7745 -0.5355 +vn 0.5501 -0.0921 0.8300 +vn -0.5785 0.3168 -0.7517 +vn 0.4144 -0.6299 0.6569 +vn 0.2133 -0.4119 0.8859 +vn 0.5285 -0.0790 0.8452 +vn -0.1652 -0.9794 -0.1163 +vn -0.4597 -0.8629 0.2099 +vn -0.1193 -0.9262 0.3577 +vn -0.3040 0.6781 0.6692 +vn 0.3743 0.1366 0.9172 +vn 0.8168 -0.5436 0.1933 +vn -0.3889 0.4447 0.8068 +vn -0.3302 0.2427 0.9122 +vn 0.1096 0.9337 -0.3409 +vn -0.0608 0.1822 0.9814 +vn 0.7945 -0.5956 -0.1188 +vn 0.1335 0.1794 0.9747 +vn 0.9377 -0.3405 0.0687 +vn -0.4622 0.5330 0.7087 +vn -0.0196 0.5552 0.8315 +vn -0.0269 -0.0455 0.9986 +vn 0.8974 -0.3131 -0.3108 +vn 0.7338 -0.3882 0.5575 +vn 0.7911 -0.2914 -0.5378 +vn 0.6192 -0.5360 -0.5738 +vn 0.4099 0.1773 0.8947 +vn 0.8383 0.4388 -0.3236 +vn -0.2547 0.1035 -0.9615 +vn -0.6555 0.6957 -0.2937 +vn -0.6166 0.7851 -0.0589 +vn -0.1577 0.4166 -0.8953 +vn -0.2758 0.6652 -0.6939 +vn 0.7844 -0.1014 -0.6119 +vn -0.5074 -0.1281 -0.8521 +vn 0.6653 0.3853 -0.6395 +vn 0.0616 0.7205 0.6907 +vn 0.1052 0.5789 0.8085 +vn 0.4993 0.8664 0.0000 +vn -0.0305 0.9995 0.0090 +vn 0.5889 0.1102 -0.8007 +vn 0.1979 0.2917 0.9358 +vn -0.3885 -0.0216 -0.9212 +vn 0.6036 -0.2862 -0.7441 +vn 0.2555 0.9639 -0.0751 +vn -0.0802 -0.0717 -0.9942 +vn -0.1741 -0.1558 -0.9723 +vn 0.7551 0.2009 -0.6240 +vn 0.6960 -0.0252 -0.7176 +vn 0.9684 0.1605 -0.1907 +vn 0.6949 0.6915 -0.1974 +vn 0.6079 0.6156 0.5014 +vn 0.1676 0.1087 0.9798 +vn -0.2564 -0.1571 0.9537 +vn -0.9210 -0.0340 0.3881 +vn -0.1507 0.2498 -0.9565 +vn 0.9001 0.1133 0.4207 +vn -0.9684 -0.0986 0.2290 +vn -0.8886 0.2308 0.3963 +vn -0.4500 -0.0011 -0.8931 +vn -0.9808 -0.1944 -0.0178 +vn -0.9902 -0.1383 0.0207 +vn -0.8863 -0.4621 0.0316 +vn -0.7947 -0.3878 0.4670 +vn -0.7966 -0.6044 0.0079 +vn -0.7419 -0.5998 -0.2998 +vn -0.2141 -0.5419 -0.8127 +vn -0.9139 -0.4059 0.0000 +vn -0.1031 -0.2119 -0.9718 +vn -0.1703 -0.1436 -0.9749 +vn -0.2235 -0.9706 -0.0898 +vn -0.0725 -0.9365 0.3431 +vn -0.2049 0.1287 0.9703 +vn 0.0171 0.1676 0.9857 +vn -0.0403 -0.0167 0.9990 +vn 0.5755 -0.8166 -0.0452 +vn -0.9088 0.2142 0.3580 +vn 0.2914 0.7841 0.5480 +vn 0.0582 -0.1652 0.9845 +vn 0.5079 0.7196 -0.4734 +vn 0.3402 0.9333 -0.1152 +vn 0.4306 0.8029 0.4122 +vn -0.1587 -0.7041 -0.6922 +vn -0.7712 0.0717 0.6325 +vn 0.0524 -0.1752 -0.9831 +vn -0.0518 -0.2249 -0.9730 +vn -0.0010 0.0000 -1.0000 +vn -0.2074 -0.8960 0.3926 +vn 0.3628 0.8324 0.4190 +vn 0.8707 -0.4845 0.0848 +vn -0.0302 0.0233 0.9993 +vn -0.1281 0.0989 0.9868 +vn 0.0815 -0.7180 0.6912 +vn 0.1749 -0.7962 0.5792 +vn 0.3776 -0.7139 0.5897 +vn 0.0665 -0.1257 0.9898 +vn 0.4569 -0.1361 0.8791 +vn 0.8320 -0.5144 0.2077 +vn -0.8511 -0.5250 0.0000 +vn 0.1751 0.0110 -0.9845 +vn 0.1761 0.0052 -0.9844 +vn -0.3115 0.6059 -0.7320 +vn 0.6401 0.3538 -0.6820 +vn 0.5518 0.6360 -0.5395 +vn 0.4865 0.8315 0.2681 +vn 0.2742 0.7458 -0.6071 +vn 0.2291 0.2641 -0.9369 +vn -0.9270 -0.2542 0.2758 +vn 0.3980 0.8055 0.4389 +vn -0.3036 0.4348 0.8478 +vn 0.2725 0.1164 0.9551 +vn 0.5692 0.7336 0.3712 +vn -0.3108 -0.9453 -0.0989 +vn 0.4545 0.0967 0.8855 +vn 0.1466 -0.8001 0.5817 +vn -0.7082 -0.5651 0.4232 +vn 0.1884 -0.8490 -0.4937 +vn -0.3664 0.6186 0.6951 +vn -0.0114 0.3222 0.9466 +vn -0.0012 -0.0001 -1.0000 +vn 0.4997 -0.3929 0.7720 +vn -0.4890 0.2539 0.8345 +vn 0.4244 -0.9052 -0.0209 +vn -0.7778 0.5341 0.3314 +vn -0.2654 0.4895 0.8306 +vn -0.1814 0.4405 -0.8792 +vn 0.5542 -0.8139 -0.1743 +vn -0.4005 0.5449 -0.7367 +vn 0.0232 -0.2361 0.9715 +vn 0.2768 -0.0892 -0.9568 +vn 0.5223 -0.6315 -0.5731 +vn -0.5710 0.5294 -0.6275 +vn -0.0327 -0.0060 0.9994 +vn -0.6618 0.6136 -0.4306 +vn -0.6293 0.4248 -0.6508 +vn -0.8948 0.3304 0.3002 +vn -0.9655 0.2600 -0.0165 +vn -0.7158 0.0680 -0.6950 +vn -0.0889 0.9863 0.1389 +vn 0.4953 -0.8687 -0.0033 +vn -0.5845 -0.8068 0.0857 +vn 0.0005 0.0008 -1.0000 +vn 0.8197 -0.5058 -0.2688 +vn 0.0000 0.9413 -0.3375 +vn -0.4549 -0.8725 -0.1784 +vn -0.6472 -0.7623 -0.0016 +vn 0.0440 0.5067 0.8610 +vn 0.2244 0.1653 -0.9604 +vn 0.1316 -0.0078 0.9913 +vn 0.5010 -0.8655 0.0000 +vn 0.3307 0.9367 0.1152 +vn -0.1314 -0.0097 0.9913 +vn 0.3326 -0.8152 -0.4742 +vn 0.0500 -0.9749 -0.2170 +vn -0.0786 -0.3310 -0.9403 +vn -0.1485 0.1663 -0.9748 +vn -0.1628 0.1588 -0.9738 +vn -0.3010 0.5547 0.7757 +vn 0.0098 0.2794 -0.9601 +vn 0.7623 -0.6472 -0.0066 +vn 0.0536 0.2616 -0.9637 +vn -0.5937 -0.7998 0.0881 +vn -0.0632 0.5917 -0.8037 +vn -0.0668 0.5521 -0.8311 +vn 0.3109 0.8864 0.3429 +vn -0.0258 0.8175 0.5754 +vn -0.1087 0.8983 0.4257 +vn -0.1845 0.8814 0.4348 +vn 0.0006 -0.3017 -0.9534 +vn -0.0795 -0.9953 -0.0551 +vn 0.9957 -0.0921 0.0000 +vn -0.8936 0.4487 -0.0090 +vn -0.3799 0.3313 0.8637 +vn 0.0000 0.8569 -0.5155 +vn -0.2321 -0.1611 -0.9593 +vn -0.8123 0.1966 0.5492 +vn -0.5758 0.3994 0.7134 +vn 0.4222 -0.1354 0.8963 +vn -0.0265 0.0443 -0.9987 +vn -0.0977 -0.9606 -0.2602 +vn 0.6357 -0.4969 0.5907 +vn 0.0128 -0.1072 -0.9942 +vn -0.1547 -0.1786 -0.9717 +vn -0.3382 0.0324 -0.9405 +vn 0.0311 -0.2056 0.9781 +vn -0.4883 -0.7439 0.4562 +vn 0.6668 0.6617 -0.3430 +vn -0.9274 -0.3741 0.0031 +vn -0.7931 -0.5909 -0.1476 +vn 0.1340 0.1682 -0.9766 +vn 0.0900 -0.2863 -0.9539 +vn -0.3278 -0.8738 -0.3593 +vn -0.0141 -0.1739 0.9847 +vn -0.3525 -0.6532 -0.6701 +vn 0.1184 0.0565 -0.9914 +vn -0.2538 -0.1264 0.9590 +vn 0.5087 -0.1809 0.8417 +vn -0.3855 -0.1750 -0.9059 +vn 0.2440 -0.1519 0.9578 +vn -0.4763 -0.0475 0.8780 +vn -0.5268 0.2149 0.8223 +vn 0.8777 -0.4786 0.0242 +vn -0.6732 0.0880 -0.7342 +vn -0.7835 0.4147 -0.4627 +vn -0.0139 0.8064 0.5912 +vn -0.4410 0.2641 -0.8578 +vn -0.4994 0.8662 0.0184 +vn 0.0378 0.9983 -0.0436 +vn -0.7384 -0.0483 0.6726 +vn -0.9398 -0.2817 -0.1933 +vn 0.0000 0.9450 0.3270 +vn 0.5974 -0.8018 -0.0144 +vn -0.2527 -0.0758 0.9646 +vn -0.3045 -0.1937 0.9326 +vn -0.6575 0.7535 0.0000 +vn -0.5080 -0.4864 0.7109 +vn -0.3247 -0.8656 -0.3812 +vn -0.8416 0.5399 0.0129 +vn -0.0794 -0.9569 0.2794 +vn -0.0825 -0.7663 0.6371 +vn -0.6574 0.7534 -0.0177 +vn -0.3518 0.4511 0.8202 +vn 0.3056 0.9509 -0.0491 +vn 0.1855 0.8038 -0.5653 +vn 0.3994 -0.9168 0.0006 +vn 0.2747 -0.1666 -0.9470 +vn 0.9069 0.4213 0.0000 +vn 0.7002 0.7140 0.0000 +vn 0.2414 0.2549 -0.9363 +vn -0.6141 0.7849 -0.0832 +vn 0.7070 0.7071 0.0127 +vn -0.4915 0.2386 0.8375 +vn -0.3785 0.6639 0.6450 +vn -0.2381 0.2550 -0.9372 +vn -0.8834 -0.4683 -0.0189 +vn 0.4763 -0.6340 0.6092 +vn -0.4686 0.2081 -0.8586 +vn 0.5078 -0.4311 0.7459 +vn 0.8308 -0.3875 0.3996 +vn 0.0878 0.6413 0.7623 +vn -0.8739 0.3119 0.3730 +vn -0.9687 -0.1275 -0.2131 +vn -0.8895 -0.2931 -0.3505 +vn -0.3132 -0.7673 0.5596 +vn -0.9610 -0.2562 0.1040 +vn -0.2705 -0.4926 0.8272 +vn -0.8571 -0.5151 -0.0002 +vn -0.0355 0.1572 -0.9869 +vn 0.0944 0.0567 -0.9939 +vn -0.7435 -0.1362 -0.6547 +vn 0.3485 0.2419 -0.9056 +vn 0.4818 0.3111 -0.8192 +vn -0.9533 0.3018 0.0133 +vn 0.6472 -0.0086 -0.7623 +vn -0.1318 0.1120 -0.9849 +vn 0.4439 -0.8792 -0.1733 +vn -0.5739 0.2771 -0.7706 +vn 0.8998 -0.0968 0.4255 +vn -0.4992 -0.1127 0.8591 +vn 0.7412 -0.0496 -0.6695 +vn -0.5999 0.5260 0.6028 +vn 0.8479 -0.4809 -0.2232 +vn 0.7680 -0.1421 0.6246 +vn 0.1022 -0.0903 0.9907 +vn -0.2536 0.8115 -0.5264 +vn 0.7576 0.3845 0.5275 +vn 0.3823 0.3680 0.8476 +vn -0.2824 -0.5407 0.7924 +vn -0.2645 -0.4986 0.8255 +vn 0.0960 -0.4073 0.9082 +vn -0.1885 -0.8771 0.4419 +vn -0.1939 -0.9024 -0.3849 +vn -0.2048 0.9758 -0.0770 +vn -0.4952 -0.8329 -0.2470 +vn -0.1143 0.1523 -0.9817 +vn -0.2632 0.1751 0.9487 +vn 0.2523 0.8925 -0.3738 +vn 0.3228 0.9141 0.2453 +vn 0.5390 0.6911 0.4815 +vn 0.3638 0.9260 -0.1009 +vn 0.7544 0.6563 0.0069 +vn -0.9261 0.3125 -0.2115 +vn -0.8976 -0.0792 0.4336 +vn 0.0767 0.2432 0.9669 +vn 0.4983 0.6634 0.5581 +vn -0.8745 -0.0872 0.4772 +vn 0.2360 0.9038 0.3569 +vn -0.4171 -0.4349 0.7981 +vn 0.0578 -0.5976 0.7997 +vn -0.4783 -0.8764 0.0564 +vn 0.0242 0.2464 0.9689 +vn -0.1140 0.4319 0.8947 +vn 0.0013 0.3158 0.9488 +vn -0.6365 -0.5835 -0.5044 +vn 0.1197 -0.0070 0.9928 +vn 0.3954 -0.5394 0.7435 +vn 0.8848 -0.3951 0.2470 +vn 0.6160 0.7872 -0.0292 +vn 0.0365 -0.6276 0.7776 +vn 0.0299 0.1238 0.9919 +vn 0.7862 0.1024 0.6094 +vn 0.7368 0.0521 -0.6742 +vn 0.9012 -0.4087 0.1439 +vn 0.8838 -0.3929 0.2539 +vn -0.4812 0.2598 -0.8373 +vn -0.3582 -0.1104 -0.9271 +vn -0.0977 -0.0678 -0.9929 +vn -0.3251 -0.5932 -0.7365 +vn -0.6479 -0.2426 -0.7221 +vn -0.7009 -0.2951 -0.6493 +vn 0.0102 0.1471 -0.9891 +vn 0.2272 -0.9225 -0.3121 +vn -0.5781 0.0693 -0.8130 +vn -0.9647 -0.0224 0.2625 +vn 0.0326 0.0948 0.9950 +vn -0.8528 -0.5215 -0.0277 +vn -0.5781 -0.2879 0.7635 +vn -0.4503 0.0964 -0.8877 +vn -0.5139 0.8579 0.0000 +vn -0.9387 -0.1770 -0.2957 +vn -0.7105 0.7016 0.0539 +vn -0.6766 0.6411 0.3622 +vn -0.4692 0.8823 0.0366 +vn -0.2577 0.4847 -0.8358 +vn -0.1145 0.9928 0.0346 +vn -0.8260 0.5560 -0.0926 +vn -0.2721 0.1864 -0.9440 +vn -0.2179 -0.9621 0.1638 +vn 0.5946 -0.7740 -0.2178 +vn -0.5700 0.8201 0.0506 +vn -0.8242 0.5594 -0.0882 +vn 0.2478 0.6666 0.7030 +vn -0.0234 -0.9810 -0.1924 +vn -0.9678 0.2493 0.0357 +vn 0.3489 0.5526 0.7569 +vn -0.2509 -0.9635 0.0932 +vn -0.0643 0.0857 -0.9942 +vn -0.0737 0.6028 -0.7945 +vn -0.1498 -0.0491 -0.9875 +vn -0.7474 0.0446 0.6629 +vn -0.2035 0.8123 0.5466 +vn -0.6355 0.4982 0.5899 +vn -0.4143 0.7443 0.5238 +vn -0.8279 -0.3953 0.3980 +vn 0.1237 -0.0265 -0.9920 +vn -0.7388 0.6610 0.1311 +vn -0.5979 0.1525 0.7869 +vn -0.6388 0.1388 0.7568 +vn -0.6152 0.1243 0.7785 +vn -0.8590 -0.3216 0.3984 +vn -0.6371 -0.3541 0.6846 +vn 0.8036 -0.0152 -0.5950 +vn -0.4672 -0.6569 0.5917 +vn -0.5381 -0.5761 0.6153 +vn -0.2075 0.0554 0.9767 +vn -0.3458 -0.8609 0.3733 +vn -0.0440 -0.3210 0.9461 +vn -0.0145 0.9504 0.3107 +vn 0.3162 -0.1338 0.9392 +vn -0.9973 -0.0728 0.0000 +vn -0.7729 0.6337 0.0331 +vn 0.1272 0.9913 -0.0336 +vn 0.1686 0.5032 -0.8476 +vn -0.0752 -0.9952 0.0623 +vn 0.0253 -0.9878 -0.1534 +vn 0.3216 -0.7990 0.5081 +vn 0.7167 -0.1325 -0.6847 +vn 0.9997 0.0000 0.0263 +vn -0.2444 -0.2800 -0.9284 +vn 0.8590 0.5120 0.0000 +vn 0.3251 0.9457 0.0000 +vn 0.0000 -0.3412 0.9400 +vn -0.2891 0.9573 0.0000 +vn 0.1881 -0.1577 0.9694 +vn 0.1965 -0.1714 0.9654 +vn -0.6492 0.5662 0.5079 +vn -0.8386 0.5437 0.0340 +vn -0.4244 0.6219 0.6581 +vn -0.3300 0.8581 0.3935 +vn -0.3598 0.9147 0.1842 +vn -0.4057 0.7406 0.5356 +vn 0.4472 -0.8944 0.0000 +vn 0.8396 -0.5416 0.0408 +vn -0.2567 -0.9665 0.0000 +vn 0.6078 0.5809 0.5414 +vn 0.1700 -0.2362 -0.9567 +vn 0.6154 -0.6962 -0.3696 +vn 0.5072 -0.2129 -0.8351 +vn 0.5775 -0.0990 -0.8104 +vn -0.4878 0.1559 -0.8589 +vn 0.9974 -0.0637 -0.0343 +vn 0.0000 -0.7929 -0.6094 +vn -0.6177 0.5411 -0.5707 +vn -0.0036 -0.1392 -0.9903 +vn -0.9150 -0.1030 0.3900 +vn 0.4661 0.2127 0.8588 +vn 0.1915 0.0880 0.9775 +vn -0.9603 -0.2714 0.0649 +vn -0.7723 -0.5764 0.2671 +vn -0.2020 -0.0668 -0.9771 +vn -0.0536 0.1208 -0.9912 +vn -0.0820 0.3074 -0.9480 +vn 0.4139 0.4499 -0.7914 +vn -0.0451 0.4489 -0.8924 +vn 0.2281 0.2244 -0.9474 +vn 0.8911 0.3255 -0.3162 +vn 0.9761 0.1056 -0.1897 +vn 0.8044 -0.1135 -0.5832 +vn 0.8726 0.4869 0.0391 +vn -0.7926 -0.6038 0.0843 +vn 0.4229 0.9053 0.0394 +vn 0.3914 -0.0086 0.9202 +vn 0.3408 -0.1364 0.9302 +vn -0.9083 0.2740 0.3160 +vn 0.2630 0.0342 0.9642 +vn 0.4196 0.3112 0.8527 +vn -0.6140 0.7875 -0.0529 +vn 0.4722 0.2823 0.8351 +vn -0.4518 -0.3913 0.8017 +vn -0.3749 -0.6241 -0.6855 +vn -0.2601 0.9628 0.0730 +vn -0.2623 -0.3270 -0.9079 +vn 0.0739 0.1702 -0.9826 +vn -0.9965 0.0754 0.0368 +vn 0.8239 0.5636 0.0591 +vn 0.1032 0.9249 0.3659 +vn 0.3986 0.8786 0.2631 +vn 0.3054 0.7798 0.5465 +vn 0.5433 -0.8393 0.0173 +vn 0.0642 0.9920 -0.1087 +vn 0.8419 -0.5371 -0.0518 +vn 0.9960 -0.0799 0.0390 +vn 0.9227 0.3855 0.0000 +vn -0.1982 -0.0498 0.9789 +vn 0.0334 0.5167 0.8555 +vn -0.4458 -0.8915 0.0806 +vn 0.5704 0.6460 0.5073 +vn -0.1799 -0.2776 0.9437 +vn 0.1050 -0.4363 -0.8937 +vn 0.1622 -0.2486 -0.9549 +vn -0.8768 -0.4808 0.0000 +vn -0.3604 0.9043 -0.2289 +vn 0.2940 -0.8161 0.4975 +vn 0.4963 -0.8632 0.0928 +vn 0.7848 -0.6021 0.1468 +vn 0.8872 -0.4526 -0.0892 +vn -0.3443 0.1102 0.9324 +vn -0.0190 -0.0216 0.9996 +vn 0.4464 -0.8948 0.0000 +vn 0.7426 -0.6692 -0.0263 +vn -0.5699 -0.0153 0.8216 +vn 0.0920 0.1049 0.9902 +vn -0.2874 0.1234 0.9498 +vn -0.5561 0.2388 0.7961 +vn 0.3476 -0.1478 0.9259 +vn 0.2457 0.0018 0.9693 +vn -0.6855 -0.6135 -0.3920 +vn -0.4243 -0.3066 -0.8521 +vn -0.7710 -0.1412 -0.6210 +vn -0.2953 0.0047 -0.9554 +vn 0.9945 0.0039 0.1048 +vn 0.3136 -0.2682 -0.9109 +vn 0.8119 -0.1472 0.5649 +vn 0.8516 0.3215 0.4141 +vn 0.8538 0.5190 0.0405 +vn 0.7723 0.1794 0.6093 +vn 0.6213 -0.0749 -0.7800 +vn 0.3562 -0.9330 0.0504 +vn 0.7660 0.5746 -0.2881 +vn 0.7739 0.4722 0.4221 +vn 0.5249 0.4573 0.7179 +vn 0.6408 0.3554 -0.6804 +vn 0.1995 0.3034 -0.9318 +vn 0.6314 0.7669 -0.1152 +vn -0.0442 0.1201 0.9918 +vn 0.3792 0.8332 0.4024 +vn -0.2714 -0.3952 -0.8776 +vn 0.2083 0.1010 -0.9728 +vn 0.1767 -0.1333 0.9752 +vn 0.2224 -0.9638 0.1468 +vn -0.6141 0.7884 -0.0379 +vn -0.6139 -0.7894 0.0000 +vn 0.0884 -0.1869 -0.9784 +vn 0.2185 -0.5728 -0.7900 +vn 0.2763 -0.6223 -0.7324 +vn 0.6944 -0.5382 -0.4776 +vn 0.6646 -0.5213 -0.5353 +vn 0.4577 -0.6266 0.6308 +vn 0.0808 -0.0160 -0.9966 +vn 0.7683 -0.6365 0.0669 +vn 0.9762 -0.1983 -0.0874 +vn 0.8668 -0.3003 -0.3982 +vn 0.1971 0.9797 0.0354 +vn -0.9638 -0.2433 -0.1089 +vn -0.6631 0.7465 0.0555 +vn -0.4143 -0.8841 -0.2163 +vn -0.2837 -0.8646 0.4148 +vn -0.0863 -0.0477 0.9951 +vn -0.7815 0.6239 0.0000 +vn -0.0816 -0.9142 0.3969 +vn 0.1324 -0.9808 -0.1431 +vn -0.0801 -0.1405 -0.9868 +vn 0.3107 -0.8597 0.4054 +vn 0.3384 -0.8794 0.3348 +vn -0.8163 0.5776 0.0100 +vn -0.9225 0.3854 -0.0227 +vn 0.5661 0.2748 0.7772 +vn -0.2293 -0.1668 -0.9590 +vn 0.7419 -0.6232 0.2473 +vn 0.0113 0.0340 0.9994 +vn -0.0760 -0.1078 0.9913 +vn 0.0194 0.4743 0.8801 +vn -0.6065 0.0164 0.7949 +vn -0.2084 0.9768 -0.0486 +vn 0.0831 0.6655 -0.7417 +vn 0.0326 -0.0570 -0.9978 +vn -0.3294 0.1156 -0.9371 +vn 0.9994 0.0178 -0.0284 +vn -0.0479 0.1703 0.9842 +vn 0.5296 -0.7293 -0.4332 +vn 0.6111 0.7820 -0.1225 +vn 0.6128 0.7902 0.0000 +vn 0.0405 -0.0142 -0.9991 +vn -0.0251 -0.0947 0.9952 +vn 0.5978 0.0749 0.7982 +vn 0.3614 0.9323 0.0134 +vn 0.7143 0.4643 0.5236 +vn 0.7999 -0.2106 0.5619 +vn 0.9706 -0.0281 0.2392 +vn -0.1870 0.0476 0.9812 +vn 0.9286 -0.3183 -0.1910 +vn -0.9723 0.0736 0.2218 +vn -0.7993 0.5719 -0.1846 +vn -0.0038 -0.0756 0.9971 +vn -0.6089 -0.7877 0.0939 +vn -0.6650 -0.7467 -0.0153 +vn -0.9410 -0.3344 -0.0517 +vn -0.6941 -0.6928 0.1955 +vn -0.9909 -0.0423 -0.1274 +vn -0.9627 0.2675 0.0413 +vn -0.9790 0.2038 -0.0000 +vn -0.1476 0.9887 -0.0265 +vn -0.7393 0.6732 0.0152 +vn 0.7469 -0.6177 -0.2462 +vn 0.8031 -0.5959 0.0000 +vn 0.9304 0.0475 -0.3634 +vn 0.9996 -0.0289 0.0000 +vn -0.3001 0.9535 0.0271 +vn -0.2567 0.9424 0.2145 +vn -0.7076 0.0018 -0.7066 +vn -0.5129 0.0899 -0.8537 +vn 0.0000 0.9986 0.0525 +vn -0.1298 -0.0299 0.9911 +vn -0.5677 0.8177 -0.0952 +vn -0.1462 0.7849 -0.6021 +vn -0.1961 0.8423 -0.5021 +vn -0.4900 0.7342 -0.4700 +vn 0.0452 -0.0678 -0.9967 +vn -0.6632 0.7471 -0.0445 +vn -0.6713 0.2132 -0.7098 +vn 0.7666 0.0460 -0.6405 +vn 0.8655 0.0000 -0.5008 +vn 0.7684 -0.1719 -0.6165 +vn -0.7254 -0.1087 0.6797 +vn -0.8868 -0.2498 0.3887 +vn -0.0144 0.0603 -0.9981 +vn -0.6377 0.6377 -0.4321 +vn -0.0782 0.4200 -0.9041 +vn -0.8028 0.5742 -0.1604 +vn 0.0000 0.8843 -0.4669 +vn -0.0109 0.2552 -0.9668 +vn -0.6251 -0.5952 -0.5050 +vn -0.0081 0.9573 0.2891 +vn -0.4592 -0.2787 -0.8435 +vn 0.9224 -0.3756 -0.0898 +vn 0.9483 0.3175 0.0000 +vn 0.9351 0.3449 0.0821 +vn 0.7173 0.5943 -0.3636 +vn 0.9995 0.0301 0.0000 +vn 0.2174 -0.0659 0.9739 +vn 0.0490 -0.9988 0.0000 +vn -0.4466 0.0014 -0.8947 +vn -0.5847 -0.0005 -0.8113 +vn 0.4994 -0.6387 -0.5853 +vn 0.0276 0.7716 0.6355 +vn 0.4472 0.0000 0.8944 +vn 0.4467 -0.0001 0.8947 +vn 0.1393 0.9903 0.0000 +vn 0.9995 -0.0301 0.0000 +vn -0.0396 0.0012 -0.9992 +vn -0.0328 0.0000 -0.9995 +vn 0.8332 0.4720 -0.2881 +vn 0.2454 0.8176 0.5208 +vn 0.3484 0.9077 -0.2338 +vn 0.0000 0.3745 0.9272 +vn 0.8303 0.0079 -0.5572 +vn 0.0000 0.7217 -0.6922 +vn 0.9196 0.0126 -0.3928 +vn -0.5822 -0.0004 -0.8130 +vn -0.4262 0.0000 -0.9046 +vn 0.4019 -0.8096 0.4277 +vn 0.8165 0.5440 0.1936 +vn 0.9259 -0.3777 0.0000 +vn 0.9894 -0.0000 0.1453 +vn 0.0000 0.9952 -0.0981 +vn 0.2974 0.5082 -0.8083 +vn -0.0406 0.8788 0.4754 +vn 0.5941 0.4281 -0.6810 +vn 0.1702 0.9708 -0.1691 +vn 0.0524 0.0682 -0.9963 +vn -0.0970 -0.1262 -0.9872 +vn 0.0141 0.3897 0.9208 +vn 0.9671 -0.2103 0.1432 +vn 0.0000 0.0008 1.0000 +vn -0.0790 -0.0877 -0.9930 +vn 0.6834 0.7300 0.0000 +vn 0.7652 -0.5394 0.3515 +vn 0.0803 -0.0278 -0.9964 +vn 0.8561 -0.4297 -0.2872 +vn 0.8081 0.5823 -0.0888 +vn 0.0000 0.8022 -0.5971 +vn -0.2298 0.9647 -0.1286 +vn 0.1434 -0.9339 -0.3276 +vn -0.4363 0.8880 -0.1454 +vn -0.3188 -0.3623 -0.8759 +vn 0.9365 0.0095 0.3506 +vn 0.6073 0.3169 0.7285 +vn 0.5833 0.7966 0.1590 +vn 0.7588 0.1774 0.6266 +vn 0.8545 -0.0793 -0.5134 +vn -0.4351 0.0000 0.9004 +vn -0.1191 0.0740 0.9901 +vn 0.2808 -0.1905 -0.9407 +vn -0.7312 0.4961 -0.4682 +vn -0.3082 0.2867 -0.9071 +vn -0.0883 0.1364 -0.9867 +vn -0.7071 0.0000 0.7071 +vn -0.6727 0.2167 -0.7075 +vn -0.2339 0.9722 -0.0075 +vn -0.4956 0.7657 0.4100 +vn -0.4813 0.8665 0.1321 +vn 0.0113 0.1494 0.9887 +vn -0.0344 0.0025 0.9994 +vn 0.0000 0.4460 0.8950 +vn -0.7551 0.5816 0.3026 +vn -0.8299 0.4785 -0.2868 +vn -0.8543 0.3738 -0.3613 +vn 0.0000 0.9109 0.4126 +vn 0.4536 0.8385 0.3017 +vn -0.3203 -0.1169 -0.9401 +vn 0.3169 -0.1744 0.9323 +vn -0.2715 -0.7215 -0.6369 +vn -0.6438 -0.4832 0.5933 +vn -0.5211 -0.3184 0.7919 +vn -0.6534 -0.1146 0.7483 +vn -0.9383 0.1225 0.3233 +vn -0.5622 0.7320 0.3849 +vn -0.3820 0.9229 0.0488 +vn -0.9285 0.0586 0.3666 +vn -0.3682 0.8279 -0.4231 +vn 0.0184 0.1174 0.9929 +vn -0.3460 0.5782 -0.7389 +vn -1.0000 0.0000 0.0048 +vn 0.1587 -0.9271 0.3395 +vn -0.0238 0.1392 0.9900 +vn 0.2934 0.4527 0.8420 +vn 0.0052 0.8209 0.5710 +vn 0.0251 0.2250 -0.9740 +vn -0.2705 0.4619 0.8447 +vn -0.4976 0.3043 -0.8123 +vn -0.1332 0.5538 -0.8219 +vn -0.1504 -0.9759 0.1580 +vn -0.4228 0.6433 0.6383 +vn -0.1816 0.1771 -0.9673 +vn 0.3792 0.0943 0.9205 +vn 0.3839 -0.5335 -0.7537 +vn 0.8732 -0.2816 -0.3978 +vn 0.9421 -0.2745 0.1928 +vn -0.0311 -0.8173 -0.5754 +vn 0.3654 -0.2778 -0.8884 +vn 0.6709 0.3346 -0.6618 +vn 0.0462 0.0230 -0.9987 +vn 0.6650 0.7230 -0.1873 +vn 0.2427 0.0092 -0.9701 +vn 0.0044 0.1364 -0.9906 +vn -0.0300 -0.8639 0.5028 +vn -0.4884 0.0075 -0.8726 +vn 0.8527 0.0322 -0.5214 +vn 0.0431 -0.4072 0.9123 +vn -0.9263 -0.3462 0.1486 +vn 0.6693 -0.6775 -0.3051 +vn -0.0779 0.3244 -0.9427 +vn 0.0955 -0.4038 0.9098 +vn 0.9710 0.2236 0.0849 +vn -0.5923 0.4771 -0.6493 +vn -0.4861 0.1556 -0.8599 +vn -0.9057 0.1390 -0.4005 +vn 0.2245 -0.0654 0.9723 +vn 0.7570 -0.6348 0.1549 +vn -0.8979 -0.4401 0.0000 +vn 0.3872 -0.8821 0.2683 +vn 0.0314 -0.3357 0.9414 +vn 0.7913 0.0277 -0.6108 +vn -0.1032 -0.4276 -0.8981 +vn -0.3493 -0.8958 0.2748 +vn 0.1630 0.0713 0.9841 +vn 0.3817 0.5088 0.7717 +vn -0.4562 -0.2488 0.8544 +vn -0.5751 -0.5802 -0.5768 +vn -0.0619 -0.3271 -0.9430 +vn 0.0591 -0.9932 -0.1004 +vn -0.1743 0.5027 -0.8467 +vn 0.3550 0.5401 -0.7631 +vn -0.0465 -0.0398 0.9981 +vn 0.0000 0.0015 1.0000 +vn 0.0502 0.0036 0.9987 +vn 0.5102 0.4932 0.7046 +vn 0.4300 0.8712 -0.2370 +vn 0.5369 0.5802 -0.6125 +vn 0.4152 0.5793 -0.7015 +vn 0.1487 0.2481 0.9573 +vn -0.1429 0.9892 -0.0335 +vn -0.4355 -0.8248 0.3606 +vn 0.0287 -0.5135 0.8576 +vn 0.3607 -0.8553 0.3720 +vn -0.5670 0.8232 0.0301 +vn -0.7711 0.6351 -0.0452 +vn 0.0000 -0.0961 0.9954 +vn 0.5721 0.4785 0.6661 +vn -0.1748 -0.2056 0.9629 +vn -0.4351 0.0434 -0.8993 +vn -0.9056 0.4231 0.0301 +vn -0.5083 -0.6560 -0.5579 +vn -0.1072 -0.5585 0.8225 +vn -0.3875 0.5327 0.7524 +vn 0.3728 0.1966 -0.9068 +vn 0.6737 -0.4503 -0.5860 +vn 0.7958 0.0867 -0.5994 +vn -0.4694 -0.4026 0.7859 +vn 0.6147 0.0155 0.7886 +vn -0.9452 0.0878 -0.3145 +vn 0.0054 0.0953 0.9954 +vn 0.6176 -0.7718 -0.1513 +vn -0.2646 -0.8789 0.3969 +vn -0.5746 -0.7212 0.3869 +vn -0.6803 -0.0637 -0.7301 +vn -0.1576 0.8590 -0.4870 +vn -0.7380 0.0000 -0.6748 +vn -0.9375 0.0658 -0.3416 +vn -0.0869 -0.9885 0.1234 +vn 0.1551 -0.9696 0.1892 +vn 0.0181 0.3257 0.9453 +vn 0.0000 -0.0002 -1.0000 +vn 0.5239 0.2532 0.8133 +vn -0.2153 -0.3871 -0.8965 +vn 0.7138 0.5057 0.4845 +vn 0.1157 -0.1734 0.9780 +vn -0.9973 -0.0729 -0.0090 +vn 0.3275 -0.0670 -0.9425 +vn 0.3094 -0.4119 -0.8571 +vn 0.8854 -0.4647 -0.0056 +vn 0.9214 0.2723 0.2771 +vn -0.6221 -0.7808 0.0585 +vn -0.2638 0.4912 -0.8301 +vn -0.7356 -0.6640 -0.1346 +vn 0.0360 0.2251 -0.9737 +vn -0.6444 -0.6412 -0.4166 +vn -0.5884 -0.6458 -0.4865 +vn 0.5773 -0.4034 0.7100 +vn -0.4912 0.3388 0.8025 +vn -0.5117 -0.0223 -0.8589 +vn 0.4384 -0.3622 0.8226 +vn 0.8307 -0.5533 -0.0621 +vn -0.2669 -0.5349 -0.8016 +vn 0.1214 -0.5087 0.8523 +vn -0.4363 0.2212 0.8722 +vn -0.4464 -0.8948 -0.0122 +vn 0.5838 -0.0346 -0.8111 +vn -0.9094 0.3971 -0.1233 +vn -0.0019 -0.2422 -0.9702 +vn 0.3424 -0.4704 -0.8133 +vn -0.5477 0.7324 0.4044 +vn -0.4786 0.8780 -0.0059 +vn -0.0317 0.3322 0.9427 +vn 0.1740 -0.5593 0.8105 +vn -0.8868 -0.0262 0.4615 +vn -0.2505 0.1253 -0.9600 +vn -0.1583 -0.0707 0.9849 +vn 0.7882 -0.5982 0.1447 +vn 0.3105 0.8244 0.4732 +vn 0.2761 0.4519 0.8482 +vn 0.5608 0.5505 0.6184 +vn 0.2011 0.0619 0.9776 +vn 0.9218 0.2837 0.2641 +vn 0.4535 0.0719 0.8884 +vn 0.7742 0.1722 -0.6091 +vn 0.0000 0.9987 -0.0504 +vn -0.3353 0.9421 0.0042 +vn -0.7311 -0.6286 -0.2651 +vn -0.7820 -0.6227 0.0258 +vn 0.1086 0.2275 -0.9677 +vn 0.2063 -0.6559 -0.7261 +vn 0.3256 0.9437 -0.0577 +vn 0.3276 0.9421 -0.0711 +vn 0.6646 0.6161 -0.4228 +vn 0.3878 0.2863 -0.8761 +vn 0.3266 -0.0395 -0.9444 +vn -0.6845 0.7271 -0.0518 +vn -0.4005 -0.1727 -0.8999 +vn 0.9139 -0.2784 -0.2955 +vn 0.3424 -0.9033 -0.2584 +vn 0.3494 -0.3142 0.8827 +vn 0.8490 0.4546 -0.2694 +vn 0.9298 0.0157 0.3676 +vn 0.9276 -0.2975 -0.2259 +vn 0.9145 -0.3772 0.1460 +vn -0.7844 0.0697 0.6163 +vn 0.0345 -0.0017 -0.9994 +vn -0.6606 0.5480 0.5131 +vn 0.0358 0.0000 -0.9994 +vn -0.1548 0.3797 0.9120 +vn -0.4970 0.7221 -0.4812 +vn 0.3605 0.1775 0.9157 +vn -0.6220 -0.3035 0.7218 +vn 0.0352 -0.1385 -0.9897 +vn 0.1471 -0.5694 0.8088 +vn 0.0140 -0.2732 0.9618 +vn 0.1003 -0.8947 -0.4354 +vn -0.2057 -0.3946 -0.8956 +vn -0.1223 -0.6596 -0.7416 +vn -0.4685 -0.8549 -0.2228 +vn -0.5001 -0.3716 -0.7822 +vn -0.4792 -0.3561 0.8022 +vn -0.6707 -0.3496 0.6542 +vn -0.5871 -0.6800 0.4392 +vn 0.0722 0.9446 -0.3203 +vn 0.0566 0.8341 -0.5487 +vn 0.1164 0.8298 -0.5458 +vn -0.2456 0.5906 0.7687 +vn -0.7721 0.5804 0.2590 +vn -0.3359 -0.1751 0.9255 +vn 0.8704 0.0000 -0.4924 +vn -0.0184 -0.9927 -0.1191 +vn 0.3332 0.0000 0.9429 +vn 0.0502 0.2720 -0.9610 +vn -0.0682 -0.2726 0.9597 +vn -0.1648 -0.1808 0.9696 +vn 0.0973 -0.0590 0.9935 +vn -0.3416 -0.3919 0.8543 +vn -0.8279 -0.2709 -0.4911 +vn 0.8052 0.2843 -0.5204 +vn 0.8904 0.0260 -0.4545 +vn 0.2411 0.0152 -0.9704 +vn 0.6345 -0.7672 -0.0932 +vn 0.5111 -0.4724 0.7180 +vn -0.1484 0.9778 -0.1477 +vn 0.3070 -0.7827 -0.5413 +vn 0.1919 -0.6414 -0.7428 +vn -0.3421 -0.2143 0.9149 +vn -0.0082 -0.4199 -0.9075 +vn -0.0823 -0.4420 -0.8932 +vn -0.5306 0.5973 0.6014 +vn -0.1837 0.5492 0.8152 +vn 0.0021 -0.9494 0.3142 +vn -0.4623 -0.5876 0.6641 +vn -0.5861 -0.6978 0.4117 +vn -0.6149 -0.2540 0.7466 +vn 0.5159 0.8250 -0.2306 +vn 0.7503 0.5523 -0.3634 +vn 0.2431 0.2493 -0.9374 +vn -0.4828 -0.3049 -0.8210 +vn -0.5043 0.5601 0.6572 +vn -0.4052 -0.0185 -0.9140 +vn -0.8939 0.4361 0.1042 +vn -0.1553 0.0327 -0.9873 +vn 0.0000 0.0014 -1.0000 +vn 0.9726 0.2315 0.0203 +vn 0.1658 0.1803 0.9695 +vn -0.2819 0.0251 0.9591 +vn -0.9532 0.1772 0.2449 +vn -0.8784 0.4563 -0.1420 +vn 0.5035 0.2732 0.8197 +vn 0.2268 -0.0299 0.9735 +vn -0.6900 0.7238 -0.0046 +vn -0.6228 0.7120 -0.3242 +vn -0.1884 0.8253 0.5323 +vn 0.7482 -0.0157 -0.6633 +vn 0.6143 -0.3732 0.6953 +vn 0.5933 -0.7625 0.2580 +vn -0.1359 0.2422 0.9607 +vn 0.8911 -0.2195 0.3971 +vn 0.2861 -0.0370 0.9575 +vn 0.1254 0.9921 0.0000 +vn 0.4471 0.8911 0.0773 +vn 0.9952 0.0000 -0.0975 +vn 0.2858 0.6304 -0.7218 +vn -0.3459 -0.6492 -0.6774 +vn -0.1771 -0.4530 -0.8738 +vn 0.9747 -0.2102 0.0762 +vn 0.1268 -0.1865 0.9742 +vn -0.2737 -0.0623 -0.9598 +vn 0.8029 0.5770 0.1497 +vn -0.3378 0.0963 -0.9363 +vn 0.5603 0.0102 -0.8282 +vn -0.8421 0.5392 -0.0159 +vn 0.9051 -0.3686 0.2119 +vn 0.4881 -0.1988 0.8499 +vn -0.6653 0.7461 -0.0272 +vn 0.9927 0.0741 -0.0950 +vn 0.9477 0.1009 0.3028 +vn 0.9993 -0.0378 0.0000 +vn 0.6028 -0.2108 0.7695 +vn -0.8764 0.1379 0.4614 +vn -0.4553 -0.0087 -0.8903 +vn -0.1977 0.4212 0.8851 +vn -0.3901 0.0035 -0.9207 +vn -0.9800 0.0000 0.1991 +vn -0.9083 -0.3811 0.1725 +vn -0.6091 -0.0775 -0.7893 +vn 0.6186 0.5735 -0.5371 +vn -0.0336 0.1188 0.9923 +vn -0.6639 0.1804 0.7257 +vn -0.3992 0.6287 -0.6674 +vn 0.0849 -0.0168 -0.9962 +vn 0.2437 0.0576 -0.9681 +vn 0.3471 0.7394 0.5769 +vn 0.3167 -0.5383 -0.7810 +vn 0.1944 -0.3304 -0.9236 +vn -0.1627 0.8639 -0.4767 +vn 0.0308 -0.9171 -0.3974 +vn 0.0377 -0.4161 -0.9085 +vn 0.0014 -0.9280 -0.3726 +vn 0.0080 0.0007 -1.0000 +vn 0.0333 0.9994 0.0000 +vn 0.1614 -0.8289 0.5357 +vn 0.9406 0.3391 0.0175 +vn 0.6278 -0.2181 0.7472 +vn 0.6487 -0.7440 -0.1605 +vn -0.2212 -0.2110 -0.9521 +vn 0.1785 -0.9166 -0.3578 +vn 0.3093 0.7129 -0.6293 +vn -0.6416 0.7563 0.1280 +vn -0.0793 -0.0839 0.9933 +vn -0.6307 0.6921 -0.3509 +vn 0.0826 -0.2327 -0.9690 +vn 0.1508 0.1514 -0.9769 +vn 0.3189 0.4364 -0.8413 +vn -0.1834 0.8909 0.4156 +vn -0.1027 -0.2336 0.9669 +vn -0.0279 -0.9965 0.0785 +vn -0.3336 -0.7119 -0.6180 +vn -0.5909 -0.5930 -0.5469 +vn 0.7109 0.6897 -0.1380 +vn 0.0683 0.4949 0.8663 +vn 0.9256 0.2415 -0.2914 +vn 0.2814 0.1195 -0.9521 +vn -0.3354 -0.1053 -0.9362 +vn -0.5002 -0.0517 -0.8644 +vn -0.0635 -0.9818 0.1789 +vn 0.0178 -0.9093 -0.4159 +vn -0.9927 -0.0419 -0.1133 +vn -0.4720 0.0764 -0.8783 +vn 0.0327 -0.1905 -0.9811 +vn 0.6180 -0.3667 -0.6954 +vn 0.5648 -0.6529 -0.5047 +vn 0.8743 -0.0725 0.4799 +vn 0.1234 -0.6204 0.7745 +vn -0.4184 -0.6758 0.6068 +vn -0.6677 -0.3327 -0.6659 +vn -0.4838 -0.7037 0.5204 +vn -0.1662 0.1334 0.9770 +vn -0.8401 0.1882 0.5087 +vn -0.8209 0.3804 -0.4259 +vn -0.6536 0.7559 0.0365 +vn -0.2993 0.4360 -0.8487 +vn -0.3072 -0.2512 0.9179 +vn -0.0147 -0.9600 0.2797 +vn 0.6081 -0.1506 0.7795 +vn -0.0509 0.3242 0.9446 +vn 0.1306 0.0716 0.9889 +vn 0.1239 -0.0465 0.9912 +vn 0.1471 0.0293 0.9887 +vn -0.6032 -0.7693 -0.2105 +vn -0.6652 -0.5074 0.5477 +vn -0.1684 -0.2981 -0.9396 +vn 0.9342 0.3567 0.0000 +vn -0.8833 -0.0276 0.4680 +vn -0.0540 -0.1608 0.9855 +vn 0.4365 -0.1164 0.8921 +vn 0.4667 -0.2741 0.8409 +vn -0.2496 -0.3650 0.8969 +vn -0.0627 -0.1776 0.9821 +vn 0.4695 -0.2750 0.8390 +vn -0.9117 0.3900 0.1294 +vn -0.8800 0.2305 0.4152 +vn -0.9488 -0.2498 -0.1934 +vn -0.6506 -0.0154 -0.7593 +vn 0.9921 0.0018 0.1257 +vn 0.2763 0.0430 -0.9601 +vn -0.2163 0.1985 -0.9559 +vn -0.2189 0.1958 -0.9559 +vn 0.0581 -0.1391 -0.9886 +vn 1.0000 -0.0079 0.0000 +vn -0.7149 0.6636 0.2203 +vn 0.1608 -0.0872 -0.9831 +vn 0.3389 -0.9163 0.2133 +vn 0.0000 -0.0427 -0.9991 +vn 0.7914 0.5485 0.2698 +vn 0.6667 0.6653 -0.3360 +vn 0.3561 0.7144 -0.6024 +vn -0.9902 0.0901 0.1064 +vn 0.0333 0.9994 -0.0036 +vn 0.0000 -0.9960 0.0889 +vn 0.0000 0.8414 0.5404 +vn -0.1326 -0.0583 0.9895 +vn -0.4998 -0.3625 -0.7866 +vn 0.6741 -0.7007 0.2336 +vn -0.8076 -0.3554 0.4707 +vn -0.0167 0.8427 -0.5382 +vn 0.1850 -0.8810 -0.4355 +vn -0.2354 0.0943 -0.9673 +vn -0.1709 -0.2471 -0.9538 +vn -0.0184 0.2479 0.9686 +vn 0.0594 0.6443 -0.7624 +vn -0.0656 -0.0219 0.9976 +vn 0.4515 0.5603 0.6945 +vn 0.5379 0.8138 0.2202 +vn 0.1130 0.0225 0.9933 +vn 0.6512 0.5712 -0.4997 +vn 0.8527 0.0878 0.5150 +vn 0.8851 0.0946 -0.4557 +vn 0.0547 0.8087 0.5857 +vn 0.4640 -0.1816 -0.8670 +vn 0.5173 -0.1936 -0.8336 +vn 0.0024 0.0050 -1.0000 +vn 0.4636 -0.2743 0.8425 +vn 0.6117 -0.6009 -0.5145 +vn 0.6593 -0.7071 -0.2557 +vn 0.1937 -0.3895 0.9004 +vn 0.1774 -0.1378 0.9744 +vn 0.0261 0.7438 0.6679 +vn -0.0427 0.0727 -0.9964 +vn -0.3120 0.6394 -0.7027 +vn 0.9679 -0.0725 -0.2405 +vn 0.4941 -0.3462 -0.7975 +vn -0.0636 0.7085 0.7028 +vn -0.9150 0.2077 -0.3459 +vn -0.0176 -0.0059 0.9998 +vn 0.0000 0.4213 -0.9069 +vn 0.0000 0.7929 -0.6094 +vn -0.4416 -0.5869 0.6786 +vn -0.3027 -0.8904 0.3400 +vn 0.0708 -0.5415 0.8377 +vn 0.2047 -0.5401 0.8163 +vn 0.2820 -0.7439 -0.6059 +vn 0.0279 0.9965 -0.0784 +vn 0.0536 -0.3368 -0.9401 +vn -0.3530 -0.6195 0.7012 +vn -0.1371 0.5994 -0.7886 +vn 0.4327 -0.7457 -0.5066 +vn -0.0781 0.2047 -0.9757 +vn 0.1417 -0.2112 0.9671 +vn -0.5609 -0.1766 0.8089 +vn -0.5027 0.8645 -0.0002 +vn -0.9560 -0.2052 0.2098 +vn -0.5139 0.2827 -0.8100 +vn 0.0041 0.0068 1.0000 +vn 0.0122 -0.3453 -0.9384 +vn 0.4657 0.1176 -0.8771 +vn 0.7932 0.4706 -0.3864 +vn -0.0911 0.0517 -0.9945 +vn 0.3326 -0.2992 -0.8944 +vn 0.3678 -0.8998 0.2347 +vn -0.1109 0.1716 0.9789 +vn -0.2386 0.5149 0.8234 +vn -0.2073 0.1781 0.9619 +vn -0.7364 -0.5818 -0.3454 +vn -0.7146 0.3436 -0.6094 +vn -0.5699 0.8086 -0.1458 +vn 0.3120 -0.2748 -0.9094 +vn 0.2431 -0.5384 -0.8069 +vn 0.0083 -0.2618 -0.9651 +vn 0.0483 0.2580 -0.9649 +vn 0.4416 -0.4416 0.7810 +vn -0.0348 -0.1857 -0.9820 +vn 0.0100 -0.4213 -0.9069 +vn 0.6584 0.6322 0.4085 +vn 0.7695 0.6378 0.0331 +vn 0.4970 0.8377 -0.2263 +vn -0.0179 -0.6573 -0.7534 +vn 0.8229 0.5681 0.0015 +vn 0.2511 0.6906 0.6783 +vn 0.0571 -0.8576 -0.5112 +vn 0.0403 -0.3231 0.9455 +vn 0.3438 0.4725 -0.8115 +vn -0.2840 -0.6706 -0.6853 +vn 0.3258 0.4887 -0.8094 +vn -0.1183 0.0290 -0.9926 +vn -0.3505 -0.9286 -0.1220 +vn -0.1640 -0.3102 0.9364 +vn -0.1052 0.0258 -0.9941 +vn 0.0584 0.0587 -0.9966 +vn -0.9311 -0.2816 -0.2319 +vn -0.0173 0.9998 0.0000 +vn 0.0971 0.9900 0.1022 +vn -0.1193 -0.8167 -0.5647 +vn 0.7891 0.3554 -0.5010 +vn 0.8156 -0.0854 -0.5722 +vn 0.0304 -0.7437 0.6678 +vn -0.9930 0.0924 -0.0734 +vn -0.7459 0.6516 0.1381 +vn -0.1342 -0.0366 -0.9903 +vn -0.5850 0.7703 0.2537 +vn -0.4226 0.3393 -0.8404 +vn 0.3433 -0.9286 -0.1407 +vn -0.0182 -0.9550 0.2961 +vn 0.1082 -0.1151 -0.9874 +vn -0.1314 0.9890 0.0674 +vn 0.2852 0.9338 0.2160 +vn 0.0000 -0.9893 0.1461 +vn 0.2903 0.9340 0.2081 +vn -0.2829 0.7305 0.6215 +vn 0.3883 -0.7257 0.5679 +vn 0.4688 -0.4476 0.7615 +vn 0.0381 -0.3421 -0.9389 +vn -0.1056 0.9441 0.3124 +vn -0.4438 -0.4080 -0.7979 +vn 0.5624 -0.2540 -0.7869 +vn -0.0283 0.3316 0.9430 +vn -0.1105 -0.0585 0.9922 +vn -0.7475 0.1724 0.6415 +vn -0.6996 -0.1406 -0.7005 +vn -0.7184 0.0687 -0.6922 +vn 0.3450 -0.3819 0.8574 +vn -0.4867 0.8585 0.1614 +vn 0.0530 -0.9972 -0.0530 +vn 0.0000 0.9986 0.0531 +vn -0.6057 0.3280 -0.7249 +vn 0.0599 -0.9977 -0.0303 +vn -0.3014 0.3644 0.8811 +vn -0.3220 0.4888 -0.8108 +vn -0.6788 0.6449 0.3513 +vn -0.1928 0.3426 -0.9195 +vn -0.0212 -0.0639 0.9977 +vn -0.0356 -0.0089 0.9993 +vn 0.9703 0.2418 -0.0063 +vn -0.0649 0.0283 0.9975 +vn 0.9167 -0.3994 -0.0136 +vn -0.0418 -0.0540 0.9977 +vn -0.0849 0.9963 0.0106 +vn 0.3609 -0.2584 -0.8961 +vn -0.0126 0.0000 -0.9999 +vn -0.5030 0.8643 0.0000 +vn -0.2268 0.9739 -0.0034 +vn 0.2357 -0.8855 -0.4005 +vn 0.4436 0.8962 -0.0064 +vn 0.6123 0.7905 -0.0153 +vn -0.0453 0.4512 -0.8913 +vn 0.9810 0.1937 -0.0080 +vn 0.0926 0.0417 0.9948 +vn 0.3181 0.8207 0.4747 +vn -0.9282 -0.1598 -0.3360 +vn -0.1272 -0.0112 -0.9918 +vn -0.6102 -0.7827 -0.1228 +vn 0.4101 -0.1341 -0.9021 +vn -0.1432 -0.4195 0.8964 +vn 0.0015 -0.0256 0.9997 +vn -0.9871 0.0293 -0.1572 +vn -0.8157 0.4788 0.3246 +vn -0.6819 0.6521 -0.3314 +vn -0.0165 0.0471 0.9988 +vn -0.5777 0.2974 0.7601 +vn 0.0864 0.6794 0.7287 +vn -0.2905 0.2325 0.9282 +vn -0.5364 0.7157 0.4472 +vn 0.1120 -0.1495 0.9824 +vn 0.0194 0.1051 0.9943 +vn 0.1498 0.9887 -0.0030 +vn 0.0488 0.0954 0.9942 +vn -0.0448 0.5788 0.8142 +vn 0.3323 -0.9431 -0.0052 +vn 0.3411 -0.9400 -0.0060 +vn 0.7015 0.2959 -0.6484 +vn 0.5629 0.3502 0.7487 +vn 0.9468 0.3168 -0.0570 +vn 0.2027 0.9524 -0.2277 +vn 0.0000 0.3412 0.9400 +vn 0.4629 0.8864 0.0000 +vn -0.8321 -0.5546 0.0000 +vn -0.9940 0.0583 -0.0927 +vn -0.7070 0.7072 -0.0000 +vn 0.6065 -0.7948 -0.0182 +vn -0.5472 0.8370 0.0059 +vn -0.1523 -0.0263 0.9880 +vn 0.0123 0.3491 -0.9370 +vn 0.1191 0.0642 0.9908 +vn 0.6067 -0.7949 0.0028 +vn -0.6930 0.7209 0.0000 +vn -0.7818 0.6233 -0.0158 +vn 0.7123 -0.7019 0.0000 +vn -0.1224 0.8694 -0.4787 +vn 0.2257 0.9057 -0.3588 +vn 0.4362 0.8964 0.0789 +vn -0.7729 -0.3332 -0.5400 +vn -0.1196 0.1487 -0.9816 +vn 0.5019 -0.8649 0.0000 +vn -0.9991 0.0227 -0.0360 +vn -0.2287 0.1823 -0.9563 +vn -0.9811 -0.1935 0.0082 +vn 0.8248 0.5646 -0.0285 +vn -0.6646 -0.7212 -0.1954 +vn 0.9894 0.0000 -0.1453 +vn -0.2286 -0.9661 0.1203 +vn -0.6003 0.0131 -0.7997 +vn 0.0248 0.6308 -0.7756 +vn 0.1990 0.7008 -0.6851 +vn 0.1439 -0.0031 -0.9896 +vn -0.8368 -0.0559 -0.5447 +vn -0.0183 -0.6081 -0.7937 +vn 0.2982 0.9276 0.2249 +vn -0.0047 -0.0041 -1.0000 +vn -0.1660 0.9580 -0.2337 +vn -0.0492 -0.9476 0.3156 +vn 0.5120 -0.8349 -0.2021 +vn 0.2316 0.7443 0.6264 +vn -0.0802 -0.0515 -0.9954 +vn 0.6930 0.2460 -0.6776 +vn 0.8463 -0.3538 -0.3982 +vn 0.7220 -0.6765 0.1451 +vn 0.0258 0.9989 0.0390 +vn 0.0824 -0.9852 -0.1503 +vn -0.0296 0.9992 0.0276 +vn 0.9486 0.1250 -0.2907 +vn -0.5343 -0.4069 0.7409 +vn -0.1295 -0.1036 -0.9862 +vn 0.0378 -0.9992 -0.0137 +vn 0.7723 0.6111 -0.1736 +vn 0.3385 -0.0410 0.9401 +vn 0.0825 0.0387 -0.9958 +vn 0.0129 -0.3401 0.9403 +vn -0.9940 -0.0583 -0.0927 +vn 0.6076 0.2086 -0.7664 +vn -0.9998 0.0201 0.0000 +vn 0.5613 0.2361 0.7932 +vn -0.5942 0.0750 0.8008 +vn 0.9625 0.2713 0.0049 +vn 0.4964 -0.8681 0.0000 +vn 0.3763 0.0000 0.9265 +vn 0.0473 0.9988 -0.0137 +vn 0.0012 0.0004 1.0000 +vn 0.0010 0.0005 -1.0000 +vn 0.6747 0.0000 0.7381 +vn 0.3178 0.9439 0.0891 +vn -0.8757 0.4810 -0.0424 +vn 0.6623 0.0331 0.7485 +vn -0.4963 0.8680 -0.0158 +vn 0.8127 0.2290 0.5358 +vn 0.5921 0.0289 0.8053 +vn 0.8461 -0.5324 0.0248 +vn 0.4312 -0.0630 0.9001 +vn -0.1395 -0.9902 -0.0005 +vn 0.0061 0.0430 0.9991 +vn 0.1142 0.1345 0.9843 +vn -0.0267 0.0016 0.9996 +vn 0.3210 0.0589 0.9452 +vn 0.1144 -0.0121 0.9934 +vn -0.7250 0.0421 -0.6874 +vn -0.0920 0.2520 0.9633 +vn -0.2358 0.9588 0.1584 +vn -0.3115 0.7031 0.6392 +vn 0.0359 0.0104 0.9993 +vn -0.0498 0.0423 0.9979 +vn -0.1465 0.0578 -0.9875 +vn -0.5818 -0.8075 -0.0975 +vn 0.7019 -0.7122 -0.0031 +vn 0.1544 -0.0221 -0.9878 +vn 0.0000 -0.0262 0.9997 +vn 0.2711 0.3008 -0.9143 +vn -0.6119 -0.0752 0.7874 +vn 0.0010 0.0669 -0.9978 +vn -0.2419 0.5060 -0.8279 +vn 0.0913 -0.9093 -0.4060 +vn 0.1479 -0.9886 0.0272 +vn 0.3365 -0.0820 0.9381 +vn -0.9979 -0.0612 -0.0209 +vn -0.9666 0.2516 -0.0481 +vn 0.2925 -0.7525 -0.5901 +vn -0.2391 0.0396 0.9702 +vn -0.7864 0.5651 0.2496 +vn -0.9868 0.1243 -0.1043 +vn -0.9444 0.1995 -0.2613 +vn -0.9586 -0.0354 0.2827 +vn -0.8953 -0.0061 -0.4454 +vn -0.5242 -0.0402 -0.8506 +vn -0.1219 0.9924 -0.0178 +vn 0.4421 -0.2595 0.8586 +vn -0.0280 0.9992 0.0299 +vn -0.4459 0.8947 -0.0255 +vn 0.5819 -0.2619 -0.7699 +vn 0.7732 0.2219 0.5940 +vn -0.9820 -0.0629 0.1779 +vn -0.9777 -0.1470 -0.1500 +vn -0.3020 0.9448 -0.1273 +vn -0.7644 -0.5397 -0.3528 +vn -0.4802 0.0804 0.8734 +vn -0.0834 0.0714 0.9940 +vn -0.5083 -0.0000 -0.8612 +vn -0.3371 -0.4044 -0.8502 +vn -0.3718 -0.4205 -0.8276 +vn 0.1952 0.9720 -0.1310 +vn 0.2931 -0.2830 -0.9133 +vn 0.2957 -0.9553 0.0000 +vn 0.4262 -0.8878 0.1735 +vn 0.5589 -0.1002 -0.8231 +vn 0.1916 -0.9812 0.0235 +vn -0.9555 -0.1526 -0.2524 +vn 0.4593 -0.2703 0.8461 +vn -0.3425 0.2110 -0.9155 +vn 0.9318 -0.3528 -0.0851 +vn -0.0876 -0.6457 -0.7586 +vn 0.0304 -0.9204 -0.3898 +vn 0.8768 -0.0163 0.4806 +vn 0.3854 -0.1734 0.9063 +vn 0.3717 -0.3646 0.8538 +vn 0.5095 -0.8605 0.0000 +vn 0.4088 0.0869 0.9085 +vn 0.3766 0.3363 0.8632 +vn 0.4988 0.8666 -0.0084 +vn 0.5024 0.8646 -0.0098 +vn 0.4958 0.8684 0.0000 +vn 0.1268 0.4043 0.9058 +vn -0.0720 -0.0720 0.9948 +vn 0.9177 0.0633 0.3923 +vn -0.4895 0.8720 0.0000 +vn -0.2064 0.5485 0.8103 +vn 0.8846 0.4663 -0.0052 +vn -0.5049 0.8629 -0.0211 +vn -0.3635 0.3486 0.8639 +vn 0.0482 0.8954 0.4426 +vn -0.4971 0.8677 0.0000 +vn -0.3591 0.6268 -0.6915 +vn -0.3344 0.3075 -0.8908 +vn -0.4981 0.8395 -0.2170 +vn -0.3703 0.2621 -0.8912 +vn -0.8854 0.0348 -0.4636 +vn 0.8846 0.4663 -0.0001 +vn 0.3870 0.0062 0.9220 +vn 0.5120 0.3864 0.7672 +vn -0.2850 -0.3550 -0.8904 +vn -0.5818 -0.5008 -0.6409 +vn 0.2861 0.0097 0.9581 +vn 0.5839 0.7461 0.3201 +vn 0.2020 0.7083 0.6764 +vn 0.2332 -0.1633 -0.9586 +vn 0.1453 0.0063 -0.9894 +vn 0.4414 0.8882 0.1279 +vn 0.2068 0.0857 -0.9746 +vn 0.9046 0.0927 0.4161 +vn -0.3932 -0.5139 0.7625 +vn 0.4008 -0.0645 0.9139 +vn -0.3486 0.0049 0.9372 +vn 0.4801 0.0827 -0.8733 +vn 0.3385 0.3966 -0.8533 +vn -0.4024 0.8602 0.3132 +vn 0.4841 0.7302 -0.4821 +vn -0.9112 0.0192 -0.4116 +vn 0.0980 0.3422 -0.9345 +vn -0.3536 0.9088 0.2215 +vn 0.9562 0.2913 -0.0297 +vn -0.8845 -0.0680 0.4616 +vn 0.1650 0.4873 -0.8575 +vn -0.8474 0.0016 0.5309 +vn -0.4667 0.8655 0.1822 +vn -0.0302 0.2278 -0.9732 +vn 0.4923 0.8704 0.0000 +vn 0.3691 0.1233 -0.9212 +vn 0.5012 0.8038 -0.3205 +vn 0.0769 -0.7899 -0.6083 +vn -0.0401 -0.4296 -0.9021 +vn -0.7055 -0.0881 -0.7032 +vn 0.9412 0.0269 -0.3367 +vn -0.6732 0.0000 0.7395 +vn 0.4458 0.8951 0.0110 +vn 0.2047 0.9788 -0.0060 +vn -0.1836 0.9830 0.0054 +vn -0.1836 0.9830 -0.0063 +vn 0.5860 0.8083 -0.0574 +vn 0.1027 -0.0544 -0.9932 +vn -0.3988 0.9170 -0.0036 +vn -0.7210 0.6924 -0.0253 +vn -0.7213 0.6926 0.0000 +vn 0.0298 -0.9991 -0.0298 +vn 0.0403 0.9984 -0.0405 +vn -0.0286 -0.6923 -0.7210 +vn 0.5264 0.0244 -0.8499 +vn 0.0000 -0.8944 -0.4472 +vn 0.4551 -0.4039 0.7935 +vn 0.3267 -0.8927 0.3104 +vn 0.4938 -0.0117 0.8695 +vn -0.2700 0.2404 0.9324 +vn -0.4902 -0.0213 0.8713 +vn -0.0148 -0.5946 -0.8039 +vn -0.1107 -0.9808 0.1606 +vn 0.7621 0.5984 -0.2472 +vn -0.0116 0.2766 0.9609 +vn 0.5095 0.8605 0.0003 +vn -0.3662 -0.9305 0.0064 +vn -0.3607 -0.9324 -0.0244 +vn 0.3150 0.9491 0.0000 +vn 0.1669 -0.8894 0.4257 +vn 0.6782 0.7348 0.0000 +vn 0.5646 0.8252 0.0148 +vn -0.6291 -0.7771 -0.0191 +vn -0.6292 -0.7772 -0.0029 +vn -0.8835 -0.4683 0.0083 +vn -0.9872 -0.1591 -0.0139 +vn 0.9952 -0.0096 -0.0976 +vn 0.0000 -0.2465 -0.9692 +vn 0.6431 -0.7563 -0.1201 +vn -0.2483 0.2122 -0.9451 +vn 0.2178 0.0050 0.9760 +vn 0.8680 0.0122 0.4964 +vn 0.8563 0.0000 0.5165 +vn -0.8845 -0.4653 -0.0330 +vn 0.6439 0.6843 0.3421 +vn -0.2321 0.8316 -0.5046 +vn 0.0277 0.9898 0.1399 +vn -0.7781 0.4070 0.4784 +vn -0.9305 0.3643 -0.0382 +vn 0.0840 0.8791 0.4692 +vn 0.1481 0.9862 0.0740 +vn -0.3610 0.8478 -0.3885 +vn -0.0970 0.0380 0.9946 +vn -0.1316 0.0418 0.9904 +vn 0.1163 0.8755 -0.4691 +vn 0.5488 0.8180 0.1723 +vn -0.1101 0.1541 0.9819 +vn 0.4998 0.8658 0.0227 +vn 0.3673 0.9294 -0.0363 +vn 0.2347 0.9719 0.0157 +vn 0.0992 0.9943 -0.0382 +vn -0.1571 0.9857 0.0605 +vn -0.2351 0.9720 0.0000 +vn -0.4079 0.4932 0.7684 +vn -0.4940 -0.0000 -0.8694 +vn -0.4923 -0.0000 -0.8704 +vn -0.8950 0.4460 0.0002 +vn -0.9677 0.2497 0.0359 +vn 0.8293 -0.2637 0.4926 +vn -0.1411 -0.8531 -0.5024 +vn 0.0000 -1.0000 0.0007 +vn 0.9285 -0.3421 0.1446 +vn 0.0000 0.4252 0.9051 +vn 0.4114 -0.8444 -0.3430 +vn 0.5289 -0.1036 -0.8424 +vn 0.5617 0.4783 -0.6751 +vn 0.3267 -0.8927 -0.3104 +vn 0.4605 -0.8794 -0.1207 +vn 0.1400 0.9350 -0.3259 +vn 0.5061 0.8491 -0.1514 +vn 0.8276 -0.5526 -0.0986 +vn -0.0777 0.9796 0.1851 +vn -0.1414 0.9877 0.0673 +vn 0.5082 0.8526 0.1219 +vn 0.6164 -0.4775 -0.6261 +vn 0.5822 -0.6781 0.4486 +vn 0.5092 0.8607 0.0000 +vn 0.9998 0.0201 0.0000 +vn -0.1520 0.9875 -0.0405 +vn 0.3628 0.8064 0.4670 +vn -0.6632 0.7471 -0.0449 +vn -0.9133 0.4068 0.0179 +vn -0.9920 0.0058 -0.1263 +vn -0.9971 -0.0099 0.0750 +vn 0.0280 0.9996 0.0000 +vn 0.0119 0.9979 0.0637 +vn 0.5093 0.0320 0.8600 +vn 0.0003 0.8946 0.4468 +vn 0.3906 -0.5987 -0.6993 +vn 0.2329 -0.9705 0.0626 +vn 0.5143 0.0776 0.8541 +vn 0.1350 -0.7236 -0.6769 +vn -0.9867 -0.1623 0.0022 +vn -0.0632 0.9900 -0.1260 +vn -0.9377 -0.0061 -0.3475 +vn 0.2093 0.0000 0.9778 +vn 0.3421 -0.4772 -0.8095 +vn 0.7800 0.0000 -0.6258 +vn -0.0965 0.9876 -0.1242 +vn 0.3362 -0.2554 -0.9065 +vn 0.0003 0.0000 -1.0000 +vn 0.1467 -0.0403 0.9884 +vn -0.1325 0.9900 -0.0491 +vn -0.9888 0.0504 0.1405 +vn -0.8498 -0.0279 0.5263 +vn -0.9939 -0.0688 -0.0862 +vn 0.0000 0.0276 -0.9996 +vn -0.9482 0.0079 -0.3175 +vn -0.9618 0.0000 -0.2736 +vn -0.2144 -0.9707 0.1085 +vn 0.4953 -0.8686 0.0116 +vn 0.0000 -0.3964 -0.9181 +vn 0.9925 -0.1218 0.0121 +vn 0.2074 0.0000 0.9782 +vn -0.3397 0.9404 -0.0172 +vn 0.3397 -0.9405 -0.0083 +vn 0.0944 0.8904 0.4452 +vn -0.9998 0.0000 -0.0186 +vn -0.6818 -0.7315 0.0000 +vn -0.3680 -0.5098 0.7776 +vn -0.1097 -0.9633 0.2451 +vn 0.7634 -0.5800 -0.2842 +vn -1.0000 -0.0054 0.0000 +vn -0.9987 0.0000 0.0514 +vn -0.9665 0.2541 -0.0352 +vn -0.7810 0.6235 0.0358 +vn 0.6622 -0.6863 -0.3006 +vn 0.0830 -0.9246 0.3717 +vn 0.6715 -0.7410 0.0000 +vn 0.6699 -0.7421 0.0209 +vn -0.1961 -0.5906 0.7828 +vn -0.0229 0.0399 -0.9989 +vn -0.9964 -0.0844 0.0000 +vn -0.9943 0.0000 0.1068 +vn -0.1730 -0.8945 0.4123 +vn 0.0281 -0.2458 0.9689 +vn 0.0223 -0.2610 0.9651 +vn -0.0245 -0.7069 0.7069 +vn 0.0166 -0.8413 0.5403 +vn -0.3870 0.0000 0.9221 +vn -0.9994 0.0345 0.0000 +vn -0.9951 0.0077 -0.0989 +vn -0.9131 0.4056 0.0420 +vn -0.8922 0.0000 0.4516 +vn -0.9030 -0.0107 0.4295 +vn 0.6669 -0.7452 0.0000 +vn 0.6537 -0.7466 -0.1235 +vn 0.3558 -0.9346 0.0000 +vn 0.1749 0.3774 0.9094 +vn -0.2210 -0.0669 -0.9730 +vn 0.0788 -0.9969 0.0000 +vn -0.1143 -0.9914 0.0640 +vn -0.2202 -0.0584 -0.9737 +vn -0.5438 -0.3907 -0.7427 +vn 0.3296 -0.5617 -0.7588 +vn 0.2747 0.9614 0.0139 +vn 0.6817 -0.0735 -0.7279 +vn -0.5905 0.0255 -0.8066 +vn 0.0000 0.9997 0.0242 +vn -0.4464 0.8929 -0.0591 +vn -0.5902 0.8052 0.0572 +vn -0.4483 -0.0220 -0.8936 +vn 0.2331 -0.0622 -0.9705 +vn 0.9164 0.4002 0.0000 +vn 0.8428 -0.0218 -0.5377 +vn -0.0395 0.9366 0.3483 +vn 0.4710 -0.8368 -0.2792 +vn -0.3810 0.8006 0.4625 +vn -0.2745 -0.9606 -0.0430 +vn 0.0007 -0.9971 -0.0762 +vn -0.0156 -0.7746 -0.6323 +vn -0.5040 0.0000 0.8637 +vn 0.0277 0.7676 -0.6403 +vn 0.1554 0.9877 -0.0152 +vn 0.1783 0.9840 0.0048 +vn -0.6098 0.7924 -0.0164 +vn 0.0000 0.1792 -0.9838 +vn -0.4720 -0.8707 -0.1383 +vn 0.0171 0.0059 0.9998 +vn 0.0000 -0.3146 -0.9492 +vn -0.0742 -0.4950 -0.8657 +vn -0.0489 -0.0169 0.9987 +vn -0.3388 0.9332 -0.1196 +vn -0.0493 0.9807 0.1892 +vn 0.0000 0.9969 0.0785 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.0770 0.9970 +vn 0.0818 0.2601 0.9621 +vn -0.0122 -0.2459 0.9692 +vn -0.5207 0.8358 0.1743 +vn -0.3860 0.8646 0.3218 +vn 0.0597 0.9808 -0.1857 +vn -0.0336 -0.7706 0.6365 +vn 0.0287 0.9986 0.0446 +vn 0.7227 0.5149 -0.4611 +vn 0.0906 0.9217 -0.3771 +vn 0.1165 0.9590 -0.2585 +vn -0.9129 -0.4075 -0.0249 +vn -0.6599 -0.7434 0.1089 +vn -0.6673 -0.7434 0.0454 +vn -0.2239 -0.9738 -0.0404 +vn 0.0844 0.8623 0.4994 +vn 0.3597 0.8301 0.4260 +vn -0.0349 -0.9977 0.0586 +vn 0.4875 0.0000 0.8731 +vn 0.2961 -0.9551 -0.0028 +vn -0.2137 -0.9765 -0.0271 +vn 0.6149 -0.7867 0.0547 +vn -0.1380 0.9899 0.0326 +vn -0.0261 -0.1193 0.9925 +vn -0.5935 -0.3339 -0.7323 +vn -0.1134 -0.1134 0.9871 +vn 0.3237 -0.9462 0.0000 +vn 0.4894 0.8623 0.1304 +vn 0.6122 -0.7853 0.0922 +vn 0.9147 -0.3994 -0.0616 +vn 0.4776 -0.8768 -0.0554 +vn 0.5104 0.6150 -0.6010 +vn 0.5044 0.4590 0.7314 +vn -0.2857 0.8895 0.3565 +vn -0.7066 0.7066 -0.0378 +vn -0.9985 0.0099 0.0542 +vn 0.4704 0.8658 -0.1708 +vn -0.9971 0.0000 -0.0765 +vn -0.8661 0.4998 0.0102 +vn 0.8949 -0.4460 -0.0188 +vn 0.2573 -0.9658 0.0316 +vn 0.3763 0.8363 -0.3987 +vn -0.1662 -0.1662 -0.9720 +vn 0.5873 0.8033 0.0990 +vn 0.4998 -0.8661 0.0000 +vn -0.4906 0.3199 -0.8105 +vn -0.9769 0.2137 -0.0075 +vn -0.9162 -0.4004 0.0140 +vn -0.2366 -0.5054 -0.8298 +vn 0.6120 0.7908 0.0000 +vn 0.9303 0.3669 0.0000 +vn 0.4855 -0.0000 -0.8742 +vn 0.5067 0.0245 -0.8618 +vn 0.4938 -0.0117 -0.8695 +vn 0.5051 -0.0000 -0.8631 +vn 0.9675 -0.2228 -0.1195 +vn 0.8666 0.4879 0.1048 +vn 0.6122 0.7873 0.0733 +vn 0.0457 -0.9120 -0.4076 +vn -0.9780 0.2082 -0.0112 +vn 0.0882 -0.8939 -0.4394 +vn -0.6115 -0.7859 -0.0919 +vn -0.2850 -0.8801 -0.3798 +vn -0.8681 0.4934 -0.0535 +vn -0.2104 -0.9776 -0.0063 +vn -0.5012 0.0114 -0.8653 +vn 0.9067 -0.4218 0.0000 +vn -0.5032 0.0118 -0.8641 +vn 0.0266 0.0381 -0.9989 +vn -0.0437 -0.0000 -0.9990 +vn -0.1336 0.8394 -0.5269 +vn -0.4376 -0.8976 -0.0533 +vn -0.2173 0.9215 -0.3218 +vn 0.4900 -0.8717 0.0000 +vn 0.8486 -0.1150 -0.5164 +vn 0.2188 -0.0027 -0.9758 +vn 0.0207 0.9998 0.0000 +vn 0.0475 0.9936 -0.1027 +vn -0.4700 -0.0286 -0.8822 +vn -0.1735 0.0399 -0.9840 +vn -0.4678 0.7425 -0.4794 +vn -0.1994 0.7877 0.5829 +vn -0.4861 -0.0373 0.8731 +vn -0.3143 -0.0648 0.9471 +vn -0.3262 -0.0688 0.9428 +vn -0.5776 0.8017 -0.1541 +vn 0.0247 0.1169 0.9928 +vn -0.0527 -0.0543 0.9971 +vn 0.9984 -0.0562 0.0000 +vn 0.2495 -0.2181 0.9435 +vn -0.7163 -0.5076 -0.4789 +vn 0.2452 -0.3147 -0.9170 +vn -0.0350 0.5820 0.8125 +vn 0.1203 -0.9637 0.2382 +vn 0.0000 -0.9857 0.1687 +vn -0.2988 -0.9478 0.1111 +vn -0.2351 -0.9688 -0.0787 +vn -0.9743 -0.0873 0.2077 +vn 0.8829 0.0204 0.4691 +vn 0.9026 0.0420 0.4284 +vn 0.9875 0.0106 0.1571 +vn 0.1837 -0.9791 0.0872 +vn 0.5547 0.0000 -0.8321 +vn 0.1224 -0.6117 0.7816 +vn 0.2888 -0.8738 0.3913 +vn 0.4794 -0.8548 0.1989 +vn -0.0599 -0.6540 0.7541 +vn 0.1627 0.5705 0.8050 +vn -0.5397 0.7674 -0.3462 +vn -0.7200 0.6130 -0.3252 +vn -0.6912 0.7181 0.0817 +vn -0.9930 0.0121 0.1174 +vn -0.9285 -0.0335 0.3697 +vn -0.8279 0.0370 0.5596 +vn 0.5115 -0.8589 0.0269 +vn -0.9982 0.0606 0.0000 +vn -0.8661 0.0431 -0.4981 +vn -0.9423 0.0064 -0.3347 +vn 0.4747 -0.8801 0.0000 +vn -0.4967 -0.8679 0.0000 +vn -0.4977 -0.8673 0.0007 +vn -0.9997 0.0231 -0.0105 +vn -0.9986 0.0524 0.0000 +vn -0.1578 -0.8698 0.4675 +vn 0.0577 0.3179 0.9464 +vn -0.4618 0.5011 -0.7319 +vn 0.8779 0.4745 0.0648 +vn -0.4896 -0.8718 -0.0141 +vn -0.0994 0.6783 -0.7280 +vn -0.5921 -0.8057 -0.0156 +vn -0.3253 -0.8767 0.3543 +vn 0.1305 -0.0510 0.9901 +vn -0.8540 -0.5174 -0.0543 +vn -0.9436 -0.3311 0.0045 +vn -0.3491 -0.7132 0.6078 +vn 0.0000 -0.9994 0.0340 +vn 0.0000 -0.0493 -0.9988 +vn -0.4980 0.0000 0.8672 +vn 0.5051 0.0000 0.8631 +vn 0.5525 -0.4117 0.7247 +vn -0.9629 0.0000 -0.2699 +vn -0.7862 0.0000 -0.6179 +vn 0.0433 -0.9137 0.4041 +vn 0.0981 -0.9855 0.1387 +vn 0.3420 -0.0090 0.9397 +vn -0.1059 0.6832 -0.7225 +vn 0.3516 0.0000 0.9361 +vn 0.8313 0.0000 0.5558 +vn 0.1643 -0.7929 -0.5868 +vn 0.2166 -0.9114 -0.3498 +vn 0.2323 -0.0301 -0.9722 +vn 0.3859 0.0395 -0.9217 +vn 0.8756 -0.3678 -0.3132 +vn 0.3662 -0.7495 0.5515 +vn 0.7054 -0.0532 -0.7068 +vn 0.8673 0.0694 -0.4929 +vn 0.6749 0.4363 0.5951 +vn 0.0562 -0.9877 -0.1456 +vn 0.8664 0.4583 0.1983 +vn 0.9934 0.0000 0.1146 +vn -0.0406 -0.0106 -0.9991 +vn -0.1661 0.0000 0.9861 +vn -0.6450 0.0000 0.7642 +vn -0.9630 0.0000 0.2695 +vn 0.0909 0.1532 -0.9840 +vn -0.1306 -0.0466 -0.9903 +vn -0.1759 0.0046 0.9844 +vn -0.9670 -0.2523 0.0367 +vn -0.9810 -0.1825 0.0651 +vn -0.8664 0.4992 0.0107 +vn -0.6896 0.2863 0.6651 +vn -0.9970 -0.0573 0.0514 +vn -0.0405 -0.0237 0.9989 +vn 0.2894 0.7206 -0.6301 +vn -0.0005 -0.0014 -1.0000 +vn -0.1575 0.0793 0.9843 +vn -0.0225 -0.0225 0.9995 +vn 0.8725 0.4885 -0.0074 +vn -0.4073 -0.4080 0.8171 +vn 0.3721 0.4526 -0.8104 +vn -0.0856 0.0796 0.9931 +vn -0.1518 0.0000 0.9884 +vn -0.4503 -0.0016 0.8929 +vn -0.9314 -0.3615 -0.0418 +vn -0.2266 -0.0896 0.9699 +vn -0.5450 -0.8382 0.0208 +vn -0.1269 -0.9722 0.1967 +vn -0.0075 0.0740 0.9972 +vn -0.5066 0.0339 0.8615 +vn -0.6684 -0.0360 0.7430 +vn -0.2300 -0.9699 0.0794 +vn -0.3479 -0.9368 0.0377 +vn -0.6991 0.4804 0.5297 +vn -0.2126 0.8909 0.4014 +vn 0.5447 -0.2591 -0.7976 +vn -0.6680 -0.7409 -0.0700 +vn 0.4048 -0.0388 -0.9136 +vn 0.0000 -0.0249 0.9997 +vn 0.3593 0.0407 0.9323 +vn 0.2511 -0.0195 0.9678 +vn 0.5102 0.0300 0.8595 +vn 0.9697 0.0000 0.2441 +vn 0.8882 0.0000 0.4595 +vn -0.5583 0.6517 -0.5135 +vn 0.0632 -0.4387 0.8964 +vn -0.0079 -0.0152 0.9999 +vn 0.9432 0.3042 0.1332 +vn 0.8873 -0.4611 -0.0083 +vn 0.6156 0.4520 -0.6455 +vn 0.0000 -0.4956 0.8686 +vn 0.0000 0.6518 0.7584 +vn -0.0030 0.9971 0.0761 +vn 0.8581 -0.5135 -0.0092 +vn 0.1005 -0.9802 -0.1703 +vn -0.5549 0.0280 -0.8314 +vn 0.8052 0.5912 -0.0453 +vn -0.8893 0.2097 -0.4064 +vn -0.1022 -0.9948 0.0000 +vn 0.5379 0.8430 0.0031 +vn 0.0000 -1.0000 -0.0009 +vn 0.1539 -0.4444 -0.8825 +vn 0.0138 -0.0276 -0.9995 +vn -0.7220 0.4832 0.4952 +vn -0.0482 0.7719 0.6339 +vn 0.0952 -0.8786 -0.4680 +vn 0.0257 -0.0514 -0.9983 +vn 0.5243 -0.0757 -0.8482 +vn -0.2365 -0.6112 -0.7554 +vn -0.3885 -0.6909 -0.6097 +vn 0.3782 0.0018 -0.9257 +vn 0.0000 -0.0504 -0.9987 +vn 0.0000 -0.4007 -0.9162 +vn -0.4416 0.8207 -0.3624 +vn -0.0005 -0.1184 0.9930 +vn -0.4137 -0.0873 -0.9062 +vn -0.6376 -0.3039 -0.7078 +vn -0.3060 0.0698 -0.9495 +vn -0.7667 -0.2188 -0.6035 +vn -0.8380 -0.2939 -0.4598 +vn -0.7821 -0.0024 -0.6232 +vn 0.0000 -1.0000 0.0001 +vn -0.4388 -0.8850 -0.1559 +vn -0.5302 -0.8266 -0.1884 +vn -0.5301 -0.8265 0.1895 +vn -0.2143 -0.3117 0.9257 +vn -0.3403 -0.0154 -0.9402 +vn 0.0000 0.0249 -0.9997 +vn -0.9465 -0.1882 0.2620 +vn 0.2356 0.6214 0.7473 +vn -0.8653 0.2201 0.4503 +vn -0.7521 -0.2090 0.6250 +vn -0.6148 -0.1708 0.7700 +vn 0.0000 0.7605 0.6494 +vn 0.1677 0.0535 -0.9844 +vn 0.3719 0.9262 -0.0614 +vn 0.2974 -0.2691 0.9160 +vn -0.0033 -0.0456 0.9990 +vn 0.5026 0.8645 0.0000 +vn 0.6640 -0.7390 0.1136 +vn -0.9396 0.0251 -0.3412 +vn -0.7696 -0.0156 -0.6384 +vn 0.2648 0.0061 0.9643 +vn -0.2888 0.6538 0.6994 +vn -0.3817 0.0132 0.9242 +vn -0.0331 -0.4863 0.8731 +vn -0.0001 -0.7094 0.7048 +vn -0.0171 -0.9997 0.0160 +vn 0.9110 -0.4123 0.0066 +vn 0.9739 -0.2269 0.0000 +vn -0.3699 0.0113 0.9290 +vn -0.0842 0.1181 0.9894 +vn 0.0345 -0.0015 0.9994 +vn 0.0000 -0.9969 -0.0786 +vn -0.3445 0.2543 0.9037 +vn -0.2308 0.9174 0.3244 +vn 0.5797 0.0069 -0.8148 +vn 0.9395 0.0112 -0.3423 +vn 0.8954 -0.3728 0.2434 +vn 0.5993 -0.7982 -0.0607 +vn 0.0000 -0.8000 -0.6000 +vn -0.1445 0.9867 0.0749 +vn 0.9315 0.0044 -0.3637 +vn -0.1236 0.9906 0.0585 +vn -0.1935 0.8435 0.5012 +vn -0.0236 -0.7069 -0.7069 +vn -0.0130 -0.6611 -0.7502 +vn 0.3498 -0.6997 -0.6229 +vn -0.2341 -0.0269 -0.9718 +vn -0.6775 0.7352 -0.0215 +vn -0.4582 0.1085 -0.8822 +vn -0.7577 0.6510 0.0456 +vn 0.9660 -0.2548 -0.0429 +vn 0.9439 -0.0040 0.3303 +vn -0.0282 0.0605 -0.9978 +vn 0.9086 0.0238 0.4170 +vn 0.0000 0.6228 0.7824 +vn 0.3828 -0.0632 0.9217 +vn 0.3475 0.0272 0.9373 +vn -0.2823 0.4472 -0.8487 +vn 0.0000 0.7517 -0.6595 +vn -0.5336 0.8454 0.0252 +vn 0.0000 -0.4937 0.8696 +vn -0.5349 0.4455 0.7179 +vn -0.7198 0.1296 0.6820 +vn -0.1690 -0.0298 0.9852 +vn 0.0385 -0.9439 0.3280 +vn -0.0312 -0.8639 0.5027 +vn -0.7316 0.0139 0.6816 +vn 0.0333 -0.9994 0.0000 +vn 0.0855 0.9622 -0.2587 +vn -0.0277 -0.0542 0.9981 +vn 0.0178 -0.9886 -0.1493 +vn 0.0000 -0.7767 -0.6298 +vn 0.5545 0.6523 -0.5167 +vn -0.9875 0.0589 -0.1461 +vn -0.9961 0.0553 -0.0691 +vn 0.3946 0.9072 -0.1461 +vn 0.7580 0.5877 -0.2831 +vn 0.0000 -0.9966 0.0818 +vn 0.0000 -0.8525 -0.5228 +vn -0.0578 0.8372 0.5439 +vn 0.5994 0.8005 0.0000 +vn -0.0297 0.0040 0.9996 +vn 0.9693 0.0155 -0.2455 +vn 0.9922 -0.0171 -0.1237 +vn 0.9366 0.0198 -0.3498 +vn 0.0000 0.7767 -0.6298 +vn 0.8088 0.0195 -0.5878 +vn 0.6659 0.0440 -0.7447 +vn 0.4797 0.6943 -0.5365 +vn 0.3769 0.0260 0.9259 +vn -0.0089 -0.0000 -1.0000 +vn -0.0037 -0.0041 -1.0000 +vn 0.6719 0.7407 0.0000 +vn 0.6682 0.7425 -0.0456 +vn 0.0617 -0.9972 0.0432 +vn -0.0227 -0.9803 0.1963 +vn -0.6620 -0.3293 0.6733 +vn 0.3231 0.0468 -0.9452 +vn 0.0185 -0.6276 0.7783 +vn 0.0182 -0.6261 0.7796 +vn -0.2886 0.8148 -0.5028 +vn -0.8122 0.4487 -0.3728 +vn 0.0216 0.9895 0.1427 +vn -0.1720 -0.2843 -0.9432 +vn 0.0000 -0.2407 -0.9706 +vn 0.0334 0.0000 0.9994 +vn 0.0000 0.0040 -1.0000 +vn 0.5060 -0.8623 0.0184 +vn -0.0530 -0.5878 0.8073 +vn 0.0472 -0.9140 0.4030 +vn -0.6063 -0.0062 -0.7952 +vn 0.0376 -0.9278 0.3711 +vn -0.4091 0.0266 -0.9121 +vn -0.0907 0.6090 -0.7879 +vn -0.3568 -0.4055 -0.8416 +vn -1.0000 -0.0071 0.0000 +vn -0.9997 0.0000 -0.0263 +vn -0.9443 -0.3286 0.0177 +vn -0.9441 -0.3296 0.0000 +vn 0.4790 0.8778 0.0000 +vn -0.1614 0.9190 -0.3598 +vn 0.1292 0.7221 -0.6796 +vn 0.1868 -0.0001 -0.9824 +vn -0.0780 -0.9927 0.0922 +vn 0.0932 -0.9956 0.0000 +vn 0.0400 0.0285 -0.9988 +vn -0.5864 -0.8100 0.0000 +vn -0.7060 -0.7060 0.0549 +vn -0.9088 -0.4169 -0.0182 +vn -0.6561 -0.7387 -0.1543 +vn 0.3784 0.9256 0.0000 +vn 0.6035 0.7974 0.0000 +vn -0.0200 -0.0265 0.9994 +vn -0.3140 0.0000 0.9494 +vn -0.6670 0.0000 0.7451 +vn -0.0109 -0.4964 0.8680 +vn 0.0832 -0.0071 0.9965 +vn 0.6651 0.7468 0.0000 +vn -0.1897 -0.9815 -0.0241 +vn -0.4147 -0.9068 0.0762 +vn -0.2167 0.1321 0.9673 +vn -0.8576 -0.5071 -0.0857 +vn 0.4631 -0.0050 0.8863 +vn -0.6762 0.6285 -0.3845 +vn 0.5060 0.8625 -0.0063 +vn -0.2060 -0.2341 -0.9501 +vn 0.7729 0.6337 -0.0331 +vn 0.0138 0.0000 0.9999 +vn 0.1411 0.9892 -0.0396 +vn 0.9368 0.0000 -0.3499 +vn -0.6369 0.7633 -0.1079 +vn -0.8533 0.5209 0.0232 +vn 0.5139 0.8578 0.0000 +vn -0.2562 -0.9648 -0.0591 +vn -0.3397 -0.9405 0.0000 +vn -0.3841 -0.0569 0.9215 +vn -0.6576 0.0000 0.7533 +vn 0.8403 -0.5421 0.0000 +vn 0.8829 -0.4681 -0.0364 +vn 0.6493 -0.0170 -0.7604 +vn 0.9625 0.2588 -0.0811 +vn -0.0472 -0.0052 0.9989 +vn 0.4791 0.8674 0.1346 +vn -0.1429 0.9889 -0.0401 +vn 0.9678 0.2516 -0.0117 +vn -0.7017 0.7040 0.1090 +vn -0.9703 0.2390 -0.0369 +vn -0.8313 -0.0414 -0.5542 +vn 0.6862 -0.0322 0.7267 +vn -0.9079 -0.4159 -0.0524 +vn -0.3422 0.5292 -0.7765 +vn 0.9416 0.3317 0.0587 +vn 0.9352 -0.3510 -0.0475 +vn 0.3668 -0.7229 0.5855 +vn 0.1266 -0.7196 0.6827 +vn 0.4128 -0.2551 0.8744 +vn -0.0205 -0.0365 0.9991 +vn -0.0937 -0.0175 0.9954 +vn -0.0082 -0.0202 0.9998 +vn -0.0643 0.4226 0.9040 +vn -0.0508 0.3126 0.9485 +vn -0.1161 -0.1693 0.9787 +vn -0.8389 -0.3796 0.3900 +vn -0.0565 0.0306 0.9979 +vn -0.2290 0.0653 -0.9712 +vn 0.1180 0.0441 -0.9920 +vn 0.9743 -0.2251 -0.0022 +vn -0.2102 0.0201 0.9774 +vn 0.2768 -0.0713 -0.9583 +vn 0.7150 0.5701 -0.4046 +vn -0.7702 -0.6375 0.0195 +vn -0.1276 -0.1283 -0.9835 +vn -0.3791 -0.5104 -0.7719 +vn -0.7756 -0.5907 -0.2227 +vn 0.8539 -0.0248 0.5198 +vn -0.0038 -0.6979 0.7162 +vn -0.7052 -0.7004 0.1102 +vn -0.9656 -0.2373 -0.1062 +vn 0.1623 0.0000 0.9867 +vn -0.2607 -0.0464 -0.9643 +vn -0.1765 -0.0090 -0.9843 +vn -0.6281 -0.0239 -0.7778 +vn 0.9903 0.0062 -0.1391 +vn 0.8982 -0.2158 -0.3829 +vn 0.5345 -0.0231 0.8449 +vn 1.0000 -0.0002 0.0000 +vn 0.9887 -0.0089 -0.1496 +vn 0.9997 0.0254 0.0000 +vn 0.5389 0.6105 0.5804 +vn 0.3579 0.9293 0.0913 +vn 0.1829 0.4747 -0.8609 +vn 0.1437 0.8962 -0.4198 +vn -0.0391 -0.4517 -0.8913 +vn -0.3849 -0.6979 -0.6040 +vn -0.3968 -0.7194 0.5701 +vn -0.3393 0.0000 0.9407 +vn -0.1389 -0.7956 0.5897 +vn 0.2810 0.4677 0.8381 +vn -0.0354 0.1255 0.9915 +vn -0.1533 0.8560 -0.4938 +vn 0.0113 0.2762 -0.9610 +vn 0.3612 0.6475 0.6711 +vn 0.2263 0.9726 -0.0534 +vn -0.1677 -0.9857 -0.0179 +vn 0.6873 0.0099 -0.7264 +vn 0.8134 -0.0596 -0.5787 +vn -0.0240 0.6661 -0.7455 +vn -0.1806 0.8167 -0.5480 +vn 0.1359 -0.4485 -0.8834 +vn 0.0672 -0.3290 -0.9419 +vn 0.5013 -0.6984 0.5108 +vn -0.1009 -0.2709 -0.9573 +vn -0.5281 -0.0622 0.8469 +vn 0.2702 -0.7498 -0.6039 +vn 0.1088 -0.0082 -0.9940 +vn 0.0688 -0.0577 0.9960 +vn 0.6438 -0.4797 -0.5962 +vn 0.2934 -0.8751 0.3849 +vn 0.3392 0.0281 -0.9403 +vn -0.1446 -0.8497 -0.5070 +vn -0.2035 0.8977 0.3907 +vn -0.6736 0.7240 -0.1487 +vn 0.2169 -0.3504 0.9111 +vn -0.0351 -0.7437 0.6676 +vn -0.9781 0.0000 -0.2082 +vn -0.9582 0.2044 -0.2003 +vn -0.0212 -0.6425 -0.7660 +vn 0.1395 -0.7012 -0.6991 +vn -0.0769 0.0509 -0.9957 +vn -0.8175 0.5414 -0.1964 +vn -0.3621 0.1956 0.9114 +vn -0.0557 0.1024 -0.9932 +vn 0.0523 0.0000 -0.9986 +vn 0.1953 -0.9020 -0.3850 +vn 0.9999 0.0148 0.0000 +vn -0.9120 0.4102 0.0040 +vn -0.2812 0.3436 0.8960 +vn -0.6920 0.4620 -0.5546 +vn -0.8150 0.0892 0.5726 +vn -0.8941 -0.2213 0.3893 +vn -0.9848 -0.1193 -0.1263 +vn -0.2142 -0.9760 0.0384 +vn 0.1233 0.1455 -0.9816 +vn 0.1950 -0.9806 0.0208 +vn -0.5357 -0.5473 0.6430 +vn 0.1283 0.0498 -0.9905 +vn -0.6128 -0.7831 -0.1057 +vn -0.8788 -0.3413 0.3336 +vn 0.2046 -0.8527 0.4806 +vn 0.5041 -0.8628 0.0376 +vn 0.0320 -0.8934 -0.4482 +vn -0.0000 -1.0000 0.0005 +vn -0.6148 -0.7795 -0.1200 +vn -0.0988 -0.0282 0.9947 +vn 0.0157 -0.0744 0.9971 +vn 0.9994 0.0222 -0.0268 +vn 0.9997 0.0222 -0.0039 +vn -0.9430 -0.3329 0.0000 +vn -0.7684 0.6399 -0.0104 +vn 0.9911 0.1327 -0.0141 +vn 0.9058 -0.4236 0.0058 +vn 0.9060 -0.4233 0.0000 +vn 0.2883 -0.5569 0.7790 +vn 0.6593 0.7519 -0.0005 +vn 0.8923 0.4514 0.0022 +vn 0.8913 0.4509 -0.0473 +vn -0.0752 -0.9923 -0.0984 +vn -0.6888 -0.0699 -0.7216 +vn -0.1678 -0.8355 -0.5232 +vn -0.2228 -0.9211 -0.3191 +vn -0.0850 -0.8338 0.5455 +vn 0.7057 0.0085 0.7085 +vn 0.6873 0.0000 0.7264 +vn 0.9004 -0.4350 0.0070 +vn 0.5361 -0.4984 -0.6813 +vn 0.5563 -0.2048 0.8053 +vn 0.6996 -0.6998 -0.1443 +vn 0.5980 -0.4529 0.6613 +vn -0.0564 0.0984 0.9935 +vn -0.0035 -0.0859 -0.9963 +vn 0.9027 0.4299 -0.0168 +vn -0.9017 0.1948 0.3860 +vn -0.8924 0.2199 0.3941 +vn -0.8917 0.4107 0.1904 +vn 0.2326 -0.1947 0.9529 +vn -0.5004 0.5563 0.6634 +vn -0.6129 0.7289 0.3050 +vn -0.3159 0.2434 -0.9170 +vn -0.4753 0.5385 0.6958 +vn -0.2143 0.5648 0.7969 +vn 0.4862 -0.1019 0.8679 +vn 0.1031 -0.3042 0.9470 +vn 0.0924 0.0211 0.9955 +vn 0.4187 -0.9081 0.0068 +vn 0.1184 0.0731 -0.9903 +vn 0.7434 0.6439 0.1808 +vn 0.0769 0.0666 0.9948 +vn 0.0919 0.0488 0.9946 +vn -0.9276 0.1944 0.3192 +vn 0.6376 0.0862 0.7655 +vn 0.9033 0.4273 -0.0390 +vn 0.9350 -0.0033 0.3546 +vn 0.6269 0.0000 0.7791 +vn 0.9008 -0.0650 0.4293 +vn 0.2926 -0.1433 0.9454 +vn 1.0000 -0.0001 0.0000 +vn 0.2887 -0.1385 0.9473 +vn 0.0238 -0.7104 0.7034 +vn 0.0169 -0.1267 0.9918 +vn 0.0187 -0.1310 0.9912 +vn 0.6748 -0.6748 -0.2988 +vn 0.1070 -0.3468 0.9318 +vn 0.6967 -0.7158 0.0474 +vn 0.1390 -0.5489 0.8243 +vn -0.1008 -0.2193 0.9704 +vn 0.0000 -0.1128 -0.9936 +vn 0.6739 -0.6802 -0.2885 +vn -0.9944 0.0000 0.1052 +vn 0.1554 -0.0607 0.9860 +vn 0.1006 0.0913 0.9907 +vn 0.7402 0.6715 0.0356 +vn 0.8416 0.5394 -0.0285 +vn -0.2293 0.7316 0.6420 +vn -0.2141 0.7997 0.5609 +vn -0.6392 -0.0293 -0.7684 +vn -0.1623 0.0123 -0.9867 +vn -0.0366 0.1367 0.9899 +vn -0.0460 0.0460 0.9979 +vn -0.5773 0.5774 0.5774 +vn 1.0000 0.0000 -0.0075 +vn -0.7133 0.6957 0.0846 +vn -0.7809 0.6247 0.0000 +vn -0.5238 0.3112 0.7929 +vn -0.8452 0.2224 0.4860 +vn -0.9617 0.2530 0.1054 +vn -0.9864 -0.1101 -0.1222 +vn -0.6198 -0.0692 0.7817 +vn 0.1182 -0.3880 0.9141 +vn 0.3659 -0.4445 0.8177 +vn -0.0805 -0.0099 0.9967 +vn 0.9177 0.0000 -0.3973 +vn 0.2877 0.2736 0.9178 +vn -0.0260 -0.0247 0.9994 +vn -0.0357 -0.0767 0.9964 +vn -0.5897 0.8070 0.0325 +vn -0.5985 0.4343 0.6732 +vn -0.8720 0.2653 0.4113 +vn -0.1356 -0.0529 -0.9893 +vn -0.9176 -0.2801 0.2820 +vn -0.1003 -0.9748 0.1991 +vn -0.0142 -0.3678 0.9298 +vn 0.0000 -0.3989 0.9170 +vn 0.0892 0.6011 0.7942 +vn -0.4105 -0.9111 0.0368 +vn 0.1911 -0.6987 0.6894 +vn 0.6938 0.7176 0.0607 +vn 0.7028 0.7032 0.1079 +vn 0.0000 0.9987 0.0504 +vn 0.8837 -0.0636 -0.4636 +vn -0.8428 -0.5381 -0.0081 +vn 0.4854 -0.2908 0.8245 +vn 0.1811 -0.9831 -0.0278 +vn 0.0176 -0.0256 0.9995 +vn -0.1476 -0.6724 0.7253 +vn 0.7410 0.0092 0.6715 +vn 0.6212 -0.0202 0.7834 +vn 0.0536 -0.8073 0.5878 +vn -0.0258 -0.5027 0.8641 +vn -0.0484 -0.9644 0.2601 +vn 0.0350 -0.9816 -0.1879 +vn -0.7784 -0.2248 -0.5861 +vn 0.5821 0.0000 -0.8131 +vn -1.0000 0.0001 0.0000 +vn 0.0482 -0.2587 -0.9647 +vn -0.9828 -0.1568 -0.0971 +vn -0.6819 -0.4081 -0.6070 +vn 0.0000 0.2590 -0.9659 +vn 1.0000 0.0001 0.0000 +vn 0.4449 0.8955 0.0109 +vn -0.0446 0.5880 0.8076 +vn 0.0686 0.0000 0.9976 +vn 0.0000 -0.1897 0.9818 +vn 0.1515 -0.4449 -0.8827 +vn 0.0468 0.7759 -0.6291 +vn 0.4050 -0.1831 -0.8958 +vn -0.7308 -0.5043 -0.4600 +vn -0.0212 -0.0025 -0.9998 +vn 0.3660 -0.8989 -0.2408 +vn 0.0484 -0.9002 -0.4328 +vn 0.0347 0.9994 0.0000 +vn 0.1119 0.9860 0.1237 +vn 0.0000 0.9996 0.0285 +vn 0.0000 0.6593 0.7519 +vn 0.0000 -0.0221 0.9998 +vn 0.0000 -0.8651 -0.5015 +vn -0.9942 0.0000 0.1079 +vn -0.9962 -0.0869 0.0000 +vn 1.0000 -0.0067 0.0000 +vn 1.0000 -0.0065 -0.0008 +vn 0.9440 -0.3272 -0.0423 +vn 0.9329 -0.3336 0.1356 +vn -0.1505 -0.2240 -0.9629 +vn 0.7969 -0.6039 0.0176 +vn 0.9750 -0.2167 0.0484 +vn -0.9774 -0.1877 -0.0975 +vn 0.9875 -0.1579 0.0000 +vn 0.0439 -0.0310 -0.9986 +vn -0.7805 -0.4671 -0.4156 +vn 0.3521 0.0428 0.9350 +vn 0.1349 0.5148 0.8466 +vn -0.3261 0.9449 0.0281 +vn -0.1602 0.9863 -0.0400 +vn 0.0868 0.9943 0.0618 +vn -0.3891 0.7992 0.4582 +vn -0.5681 -0.8135 0.1247 +vn 0.2427 0.9681 -0.0616 +vn -0.4055 0.4452 -0.7984 +vn 0.8514 0.5246 0.0000 +vn 0.9866 0.1631 0.0000 +vn -0.9828 -0.1546 -0.1007 +vn 0.3223 0.0527 0.9452 +vn -0.7770 -0.4177 0.4709 +vn 0.5275 0.8422 -0.1118 +vn -0.1783 0.9840 -0.0061 +vn -0.9561 0.2693 -0.1156 +vn 0.2017 0.1304 0.9707 +vn 0.3885 -0.0743 0.9185 +vn -0.5762 0.8173 0.0000 +vn 0.0039 -0.0079 1.0000 +vn -0.1618 0.9854 0.0523 +vn -0.0734 -0.0658 0.9951 +vn -0.0208 0.8222 -0.5688 +vn -0.7169 0.3224 -0.6181 +vn 0.9934 0.1144 0.0000 +vn 0.9910 -0.0633 -0.1183 +vn -0.6243 0.0009 -0.7812 +vn 0.7895 0.6128 0.0343 +vn -0.3525 0.0391 0.9350 +vn -0.9552 0.0000 0.2959 +vn -0.2924 0.0902 -0.9520 +vn -0.7271 -0.6774 0.1118 +vn -0.0955 -0.2527 -0.9628 +vn 0.2409 0.9706 0.0000 +vn -0.2420 0.9703 0.0000 +vn -0.5048 0.8550 0.1193 +vn -0.8641 0.4946 -0.0934 +vn -0.6705 -0.0269 0.7414 +vn 0.9905 0.0397 0.1319 +vn -0.9553 0.2957 0.0000 +vn -0.3474 0.0420 0.9368 +vn -0.9553 -0.2957 0.0000 +vn -0.7046 -0.7096 0.0000 +vn -0.9843 0.1764 0.0000 +vn -0.9812 -0.1931 0.0000 +vn -0.8122 -0.5834 0.0000 +vn -0.2251 -0.9743 0.0000 +vn -0.0790 0.1423 -0.9867 +vn 0.0272 -0.0622 0.9977 +vn -0.8548 -0.5189 0.0000 +vn -0.6928 -0.7212 0.0000 +vn -0.3116 0.9502 0.0000 +vn -0.5818 0.8133 0.0000 +vn -0.5858 0.8104 -0.0057 +vn -0.2082 0.1469 -0.9670 +vn -0.1879 -0.9819 -0.0243 +vn -0.2442 -0.9697 0.0000 +vn 0.1819 -0.9830 0.0235 +vn -0.8584 0.5117 -0.0376 +vn -0.0005 -0.0008 -1.0000 +vn -0.4832 0.8747 0.0381 +vn 0.0138 -0.0468 0.9988 +vn -0.2337 0.9701 -0.0661 +vn 0.3706 0.9229 0.1048 +vn 0.8652 -0.4997 -0.0419 +vn 0.9979 0.0641 0.0000 +vn 0.8848 0.4343 0.1689 +vn 0.9936 -0.1131 0.0000 +vn 0.7732 0.6340 -0.0144 +vn 0.0414 -0.0231 -0.9989 +vn 0.4232 -0.9059 -0.0178 +vn 0.6838 0.7277 0.0530 +vn -0.8985 0.4322 -0.0764 +vn 0.8421 -0.3307 -0.4260 +vn 0.8578 -0.3921 -0.3323 +vn 0.3698 0.9273 0.0574 +vn 0.6407 -0.7368 0.2159 +vn 0.7945 0.6073 0.0000 +vn 0.7052 -0.7052 0.0727 +vn 0.8850 0.4178 -0.2056 +vn 0.1362 0.9887 -0.0619 +vn 0.7086 -0.7056 0.0000 +vn 0.0000 -0.0017 1.0000 +vn -0.6129 0.1625 -0.7733 +vn -0.0505 0.0016 -0.9987 +vn 0.3466 -0.0585 -0.9362 +vn -0.9967 0.0000 -0.0807 +vn 0.0000 0.8028 -0.5963 +vn -0.1180 0.8191 -0.5614 +vn 0.6481 -0.6631 0.3745 +vn 0.0000 -0.4964 0.8681 +vn -0.1168 -0.9825 0.1449 +vn 0.4874 -0.8310 -0.2682 +vn 0.9458 0.2113 0.2468 +vn 0.0000 -0.9948 -0.1014 +vn -0.2498 -0.9417 -0.2255 +vn 0.0000 -0.0071 1.0000 +vn -0.2380 -0.9387 -0.2495 +vn 0.9865 0.0868 0.1391 +vn 0.9928 0.0465 0.1107 +vn 0.3952 -0.0778 -0.9153 +vn 0.8754 0.0000 0.4834 +vn 0.7930 -0.6085 -0.0283 +vn 0.6222 -0.7824 0.0246 +vn -0.3039 -0.9397 0.1569 +vn 0.0000 -0.9807 0.1956 +vn 0.4684 -0.8329 -0.2948 +vn 0.0000 -0.8265 -0.5630 +vn -0.0198 -0.9336 0.3578 +vn 0.3505 0.9323 -0.0890 +vn 0.4783 0.8782 0.0000 +vn -0.4955 0.8659 -0.0689 +vn -0.3453 0.3304 0.8784 +vn 0.7235 0.6898 0.0269 +vn 0.3473 0.0328 0.9372 +vn 0.5844 0.8103 -0.0434 +vn 0.0003 -0.0000 1.0000 +vn -0.9371 0.3491 0.0000 +vn 0.7726 -0.2632 0.5778 +vn -0.8172 -0.5764 0.0000 +vn -0.6484 0.0634 -0.7587 +vn -0.0932 -0.9956 0.0000 +vn 0.8839 0.4600 -0.0846 +vn 0.9880 -0.1484 0.0432 +vn 0.4471 0.8942 0.0230 +vn -0.1179 0.1898 0.9747 +vn 0.0000 -0.9987 -0.0504 +vn -0.7861 0.0058 -0.6181 +vn -0.5748 0.8143 -0.0811 +vn -0.7650 -0.6425 -0.0448 +vn 0.6914 -0.2905 0.6615 +vn -0.9967 -0.0788 0.0182 +vn -0.8671 0.4969 0.0358 +vn 0.8738 -0.0615 0.4824 +vn -0.3534 0.9355 0.0000 +vn 0.6212 -0.1715 0.7647 +vn 0.8859 -0.4610 -0.0508 +vn 0.6016 -0.0963 0.7930 +vn 0.0000 0.0427 -0.9991 +vn -0.0245 0.0002 -0.9997 +vn 0.7801 0.6257 0.0029 +vn 0.3368 -0.7366 0.5866 +vn -0.0273 0.0000 -0.9996 +vn 0.6292 -0.6851 0.3672 +vn 0.6648 -0.7396 0.1057 +vn 0.3653 -0.4948 0.7885 +vn -0.8106 0.5856 0.0000 +vn 0.9999 -0.0147 0.0000 +vn -0.9902 0.0890 0.1075 +vn -0.0396 -0.3522 0.9351 +vn -0.0774 -0.0351 -0.9964 +vn 0.9121 -0.4091 -0.0257 +vn 0.9986 0.0000 0.0525 +vn 0.1094 0.7355 0.6686 +vn 0.1658 -0.2895 0.9427 +vn -0.0485 -0.0822 0.9954 +vn -0.9778 -0.0032 0.2093 +vn 0.0432 0.9737 -0.2236 +vn -0.3789 -0.2089 0.9015 +vn -0.0384 -0.7181 0.6949 +vn 0.0347 0.9994 -0.0038 +vn 0.0325 0.9995 0.0000 +vn -0.0122 -0.9994 0.0326 +vn 0.0270 -0.9335 0.3575 +vn -0.0176 -0.7439 0.6681 +vn -0.3824 -0.2162 0.8984 +vn -0.4604 -0.2496 0.8519 +vn -0.7449 -0.4879 0.4550 +vn -0.7743 -0.5121 0.3718 +vn -0.4513 -0.7221 0.5243 +vn 0.0000 -0.4213 -0.9069 +vn 0.0679 0.0000 0.9977 +vn -0.4414 -0.7164 0.5403 +vn -0.0502 -0.7885 -0.6129 +vn -0.2170 -0.7250 0.6537 +vn 0.0369 -0.8441 0.5348 +vn 0.0289 -0.9652 0.2599 +vn 0.1611 -0.9825 0.0930 +vn -0.8659 0.0000 -0.5002 +vn 0.0000 -0.8389 0.5443 +vn 0.4732 -0.8413 0.2613 +vn -0.6290 -0.7742 -0.0706 +vn 0.2805 0.9374 0.2064 +vn -0.8920 -0.4467 0.0696 +vn 0.1355 0.8751 0.4646 +vn -0.3329 -0.9430 0.0000 +vn -0.4491 -0.8908 0.0690 +vn 0.1785 -0.9835 -0.0289 +vn 0.7703 -0.6344 0.0647 +vn 0.1649 -0.9863 0.0000 +vn -0.8761 0.0000 0.4821 +vn -0.4891 -0.8296 0.2692 +vn -0.6747 -0.7375 -0.0292 +vn -0.1576 -0.9859 0.0556 +vn -0.2566 -0.9586 0.1232 +vn 0.6522 -0.4734 -0.5920 +vn 0.3165 -0.9477 -0.0401 +vn -0.4908 -0.8325 -0.2571 +vn -0.8849 0.0452 -0.4635 +vn 0.4031 -0.2437 -0.8821 +vn 0.3799 0.9250 -0.0116 +vn 0.8456 -0.0399 -0.5323 +vn 0.8651 0.0000 -0.5015 +vn -0.1425 -0.9863 0.0826 +vn -0.0847 -0.9928 0.0849 +vn 0.5962 -0.2138 0.7739 +vn 0.2112 0.0753 0.9745 +vn 0.0207 -0.0089 0.9997 +vn 0.0165 -0.0331 0.9993 +vn -0.0757 -0.9963 -0.0418 +vn 0.0008 -0.0542 0.9985 +vn -0.0462 -0.9694 -0.2412 +vn 0.0938 -0.9952 -0.0271 +vn 0.8244 0.4406 0.3553 +vn 0.2133 -0.9750 -0.0618 +vn 0.6272 -0.7285 0.2756 +vn 0.1193 0.3209 -0.9396 +vn 0.7491 0.2568 0.6106 +vn 0.5267 0.7683 0.3637 +vn 0.6436 -0.7349 0.2138 +vn 0.4074 0.4063 0.8179 +vn 0.8158 -0.5007 -0.2894 +vn 0.0808 0.1481 0.9857 +vn 0.1140 0.2454 0.9627 +vn 0.1919 0.3186 0.9283 +vn 0.0617 0.6037 0.7948 +vn 0.3706 0.9050 0.2086 +vn 0.3123 -0.9264 -0.2105 +vn 0.0573 0.1096 -0.9923 +vn -0.0684 0.0249 -0.9973 +vn 0.2501 0.9545 -0.1623 +vn -0.1431 0.9891 -0.0346 +vn -0.3515 0.9355 0.0375 +vn -0.0968 0.6689 -0.7370 +vn 0.5278 -0.6352 -0.5639 +vn 0.1105 0.7359 -0.6680 +vn 0.1751 0.5092 -0.8426 +vn -0.0001 0.0000 -1.0000 +vn -0.3247 0.4419 -0.8362 +vn -0.5140 0.2873 -0.8082 +vn -0.7270 0.2780 -0.6278 +vn -0.6071 0.0717 -0.7914 +vn -0.8980 -0.0306 -0.4390 +vn -0.6332 -0.1224 -0.7643 +vn -0.6676 -0.3654 -0.6488 +vn -0.8772 -0.4801 0.0000 +vn -0.8987 -0.4335 -0.0664 +vn -0.6190 -0.2986 0.7265 +vn 0.1783 -0.8149 0.5516 +vn 0.1153 -0.7099 0.6948 +vn 0.1602 -0.9861 -0.0452 +vn 0.2016 -0.9795 0.0000 +vn -0.1109 -0.9938 0.0000 +vn -0.0812 0.9743 0.2102 +vn -0.1881 0.7015 -0.6874 +vn 0.5636 -0.0232 -0.8257 +vn 0.0555 -0.8596 -0.5080 +vn 0.0378 -0.6588 -0.7514 +vn 0.2490 -0.6143 -0.7488 +vn 0.8400 -0.1777 -0.5126 +vn 0.4696 -0.7340 -0.4906 +vn 0.5382 -0.8412 -0.0519 +vn 0.6641 -0.7475 0.0143 +vn 0.8286 -0.5581 -0.0432 +vn 0.8194 -0.5701 -0.0594 +vn 0.6066 -0.4221 0.6737 +vn 0.9763 -0.2046 0.0702 +vn 0.9396 -0.3223 -0.1157 +vn 0.9997 0.0000 0.0256 +vn 0.5956 0.0000 0.8033 +vn 0.6459 0.0154 0.7633 +vn 0.1072 -0.9228 -0.3700 +vn 0.7815 -0.2442 -0.5742 +vn 0.8526 0.0101 0.5224 +vn 0.1816 -0.4350 -0.8819 +vn 0.6629 0.0941 -0.7427 +vn 0.7299 0.0827 -0.6785 +vn 0.9890 0.1403 -0.0466 +vn 0.9510 0.3077 0.0301 +vn 0.6524 0.2111 0.7279 +vn 0.6145 0.4602 0.6408 +vn 0.6008 0.4543 0.6578 +vn 0.1961 0.5130 0.8357 +vn 0.0226 0.8030 0.5955 +vn 0.4332 -0.8047 -0.4060 +vn 0.2740 0.6291 0.7275 +vn 0.3991 0.9162 0.0364 +vn 0.3402 0.9325 0.1209 +vn 0.6185 0.7841 -0.0509 +vn 0.1628 -0.1123 -0.9802 +vn 0.4949 0.6274 -0.6013 +vn 0.1175 0.1397 0.9832 +vn -0.5573 0.8288 0.0499 +vn -0.3290 -0.6984 0.6357 +vn -0.0779 0.0569 0.9953 +vn 0.0971 0.9948 -0.0306 +vn 0.0000 0.9993 0.0379 +vn 0.0692 0.7090 -0.7018 +vn -0.3516 0.6290 -0.6933 +vn 0.1432 -0.4602 -0.8762 +vn 0.1507 -0.4247 -0.8927 +vn -0.2267 -0.7949 -0.5627 +vn -0.2735 -0.9589 -0.0753 +vn -0.3066 -0.8468 -0.4347 +vn -0.2568 -0.8340 -0.4884 +vn -0.4862 -0.3991 -0.7774 +vn -0.7728 -0.6343 -0.0192 +vn -0.8584 -0.0880 0.5054 +vn 0.0034 -0.6038 0.7972 +vn -0.8180 -0.0364 -0.5741 +vn -0.5064 0.1422 -0.8505 +vn 0.0571 0.8422 -0.5361 +vn -0.7519 -0.0360 0.6583 +vn -0.9990 -0.0444 -0.0017 +vn -0.4868 0.0451 0.8724 +vn -0.6106 -0.7878 0.0805 +vn -0.4050 -0.2959 -0.8651 +vn -0.6904 0.6946 -0.2024 +vn -0.6544 -0.7555 -0.0300 +vn -0.5532 -0.8314 0.0528 +vn -0.3661 -0.4801 0.7972 +vn -0.0980 -0.9720 0.2135 +vn -0.1231 -0.6006 0.7900 +vn -0.3828 -0.9238 -0.0102 +vn -0.2220 -0.5356 -0.8148 +vn -0.2528 -0.3799 0.8898 +vn -0.5238 -0.6047 -0.6000 +vn -0.9083 0.0000 0.4184 +vn 0.1861 -0.9760 0.1129 +vn 0.3344 -0.9422 0.0230 +vn -0.3299 -0.3817 -0.8634 +vn 0.8330 -0.5531 -0.0106 +vn 0.8570 -0.5135 -0.0439 +vn 0.6865 -0.4114 -0.5996 +vn -0.1719 -0.0381 -0.9844 +vn 0.5919 -0.1498 -0.7920 +vn 0.7414 0.0543 -0.6689 +vn 0.9961 0.0730 0.0486 +vn 0.9982 0.0496 0.0330 +vn -0.2729 0.0000 -0.9620 +vn 0.4446 0.0000 -0.8957 +vn 0.7500 0.6614 0.0012 +vn 0.7276 0.6855 0.0270 +vn 0.4610 0.4066 -0.7888 +vn 0.0802 -0.8227 -0.5628 +vn 0.8143 0.0047 0.5804 +vn 0.3397 0.0281 0.9401 +vn 0.2099 0.3311 -0.9200 +vn 0.8667 0.4130 0.2797 +vn -0.5040 -0.4659 -0.7273 +vn -0.6040 0.6699 -0.4318 +vn -0.6693 0.7424 0.0281 +vn 0.5767 0.0348 -0.8162 +vn 0.7991 0.5984 0.0583 +vn 0.7996 -0.0124 -0.6004 +vn 0.9400 -0.0007 -0.3412 +vn 0.8211 0.4796 -0.3096 +vn 0.8617 0.5033 -0.0638 +vn 0.6496 -0.2228 0.7269 +vn 0.5156 -0.1080 -0.8500 +vn 0.6726 -0.4530 -0.5852 +vn 0.4122 -0.4640 0.7841 +vn 0.5141 -0.5141 0.6866 +vn 0.3279 -0.6378 0.6969 +vn 0.4570 -0.8890 0.0268 +vn 0.3768 -0.3587 -0.8540 +vn 0.6271 0.2556 -0.7358 +vn 0.4521 0.4372 -0.7775 +vn 0.1175 0.9147 -0.3867 +vn -0.1865 -0.4914 -0.8507 +vn -0.2000 -0.9758 0.0887 +vn -0.0891 -0.7984 -0.5956 +vn 0.1724 -0.8376 -0.5184 +vn 0.3750 -0.6847 0.6250 +vn -0.1713 -0.5883 0.7903 +vn 0.9924 -0.0492 0.1129 +vn -0.5967 -0.4969 0.6301 +vn -0.7679 -0.6395 0.0381 +vn 0.9999 -0.0120 0.0000 +vn -0.9962 -0.0818 0.0289 +vn -0.7271 0.6843 -0.0557 +vn 0.1965 0.5385 -0.8194 +vn 0.1484 0.9887 -0.0223 +vn 0.2225 0.1118 -0.9685 +vn -0.0609 0.2017 -0.9775 +vn -0.2881 0.7016 -0.6518 +vn -0.4386 0.8042 -0.4011 +vn -0.1039 0.6366 -0.7642 +vn 0.0281 0.9988 0.0398 +vn -0.1421 0.4734 0.8693 +vn 0.7087 0.2541 0.6582 +vn 0.1579 0.0793 -0.9843 +vn 0.0516 0.0012 0.9987 +vn 0.7161 0.6414 -0.2753 +vn 0.5066 -0.2171 0.8344 +vn 0.0047 -0.0903 0.9959 +vn 0.9060 0.1086 0.4092 +vn 0.7681 -0.6395 0.0327 +vn 0.7946 -0.1940 0.5752 +vn 0.8100 0.5864 0.0000 +vn -0.1400 0.9639 -0.2263 +vn 0.7437 -0.6538 0.1393 +vn -0.0326 -0.1480 -0.9885 +vn -0.4921 -0.7690 0.4079 +vn -0.8380 -0.5440 0.0424 +vn -0.0850 0.0021 0.9964 +vn -0.0947 -0.2110 0.9729 +vn -0.6665 -0.3449 0.6609 +vn -0.9994 -0.0340 0.0000 +vn -0.4184 0.0103 0.9082 +vn -0.9340 0.3572 0.0000 +vn -0.5766 0.4612 -0.6744 +vn 0.9536 0.0000 -0.3011 +vn -0.4760 0.8726 -0.1092 +vn -0.2333 0.6209 0.7484 +vn -0.6063 0.5914 0.5316 +vn 0.0972 0.3154 0.9440 +vn -0.0561 0.0333 0.9979 +vn 0.0996 0.9748 0.1997 +vn 0.0413 0.7598 0.6489 +vn 0.0000 0.3626 0.9320 +vn 0.7373 0.4148 -0.5333 +vn 0.1730 0.9217 0.3471 +vn 0.3968 0.7987 0.4525 +vn 0.0237 -0.0002 -0.9997 +vn 0.0171 0.0057 -0.9998 +vn 0.4500 0.4876 0.7481 +vn 0.6450 0.1597 0.7473 +vn -0.6811 -0.3619 0.6364 +vn -0.9013 0.3691 0.2269 +vn -0.0842 0.0036 0.9964 +vn -0.0121 0.5296 0.8482 +vn -0.1538 0.2827 0.9468 +vn -0.2027 0.0000 -0.9792 +vn -0.0142 -0.4460 0.8949 +vn 0.6840 -0.4257 -0.5924 +vn 0.5628 -0.4528 -0.6915 +vn 0.8516 -0.0227 -0.5236 +vn 0.7483 -0.2167 0.6269 +vn 0.0000 -0.8163 0.5777 +vn 0.9491 -0.2461 -0.1968 +vn 0.3146 0.0407 0.9484 +vn 0.0069 0.3898 0.9209 +vn -0.1612 0.0966 0.9822 +vn -0.1977 0.1486 0.9689 +vn -0.9359 -0.1849 0.2997 +vn -0.7795 -0.4989 0.3788 +vn -0.7443 -0.6675 -0.0223 +vn -0.9131 -0.4050 -0.0470 +vn -0.0997 -0.0740 -0.9923 +vn 0.0275 -0.0311 0.9991 +vn -0.7021 -0.6643 0.2564 +vn -0.9926 -0.0641 -0.1036 +vn 0.3807 0.0292 0.9243 +vn 0.5144 0.6255 0.5866 +vn 0.1215 0.0412 -0.9917 +vn 0.7043 -0.7099 0.0000 +vn 0.0392 0.2066 0.9776 +vn 0.0486 -0.7063 0.7063 +vn -0.8994 0.4012 0.1733 +vn 0.1968 0.8236 0.5320 +vn 0.1924 0.8154 0.5460 +vn -0.5689 -0.3152 0.7596 +vn 0.5430 0.6432 -0.5398 +vn 0.7519 0.6588 -0.0247 +vn -0.2325 0.1887 -0.9541 +vn -0.2449 0.3910 -0.8872 +vn 0.0308 0.1304 -0.9910 +vn 0.0336 0.1927 -0.9807 +vn -0.0749 -0.1593 -0.9844 +vn -0.2629 0.2485 -0.9323 +vn 0.2975 -0.4694 -0.8314 +vn -0.3325 -0.9258 -0.1795 +vn -0.1027 -0.9163 0.3871 +vn 0.3631 -0.8751 -0.3198 +vn -0.0780 -0.2935 0.9528 +vn 0.1135 0.0518 0.9922 +vn 0.6456 -0.6032 -0.4683 +vn 0.0000 -0.4076 0.9131 +vn 0.0348 -0.7441 0.6671 +vn -0.6357 0.0078 -0.7719 +vn -0.8021 -0.0999 -0.5888 +vn -0.7144 -0.3008 -0.6318 +vn -0.4367 -0.3589 -0.8249 +vn 0.1031 0.0350 0.9941 +vn -0.7183 -0.5902 0.3684 +vn 0.0371 -0.8535 -0.5197 +vn -0.0403 -0.2959 -0.9544 +vn -0.0820 -0.2809 -0.9562 +vn -0.3274 -0.7131 -0.6199 +vn 0.2242 -0.2797 0.9336 +vn -0.0000 0.7071 -0.7071 +vn -0.1968 -0.4441 0.8741 +vn 0.0743 0.5248 0.8480 +vn 0.1009 0.7748 -0.6241 +vn -0.1524 -0.0651 -0.9862 +vn -0.0953 -0.0407 -0.9946 +vn 0.0102 0.0533 -0.9985 +vn -0.1890 0.9031 -0.3856 +vn 0.1351 0.2737 -0.9523 +vn -0.2591 0.9513 0.1671 +vn 0.1125 -0.5990 -0.7928 +vn -0.0968 -0.2956 -0.9504 +vn 0.2100 -0.8110 -0.5460 +vn 0.4475 0.8943 0.0019 +vn 0.4872 0.8605 -0.1488 +vn 0.8951 0.4458 0.0048 +vn 0.9941 -0.0586 0.0915 +vn 0.2192 0.3900 0.8943 +vn 0.1261 0.2593 0.9575 +vn 0.0000 0.8224 -0.5689 +vn 0.0000 0.8224 -0.5690 +vn -0.6737 -0.0369 0.7381 +vn -0.8868 0.3136 0.3395 +vn 0.0970 0.5399 0.8361 +vn -0.8232 0.2690 0.5001 +vn -0.8078 0.1463 -0.5710 +vn -0.6679 0.3906 -0.6335 +vn -0.6367 0.6940 0.3361 +vn -0.0540 0.2864 0.9566 +vn -0.6657 0.7456 0.0284 +vn 0.0086 -0.2703 -0.9627 +vn -0.2498 0.9397 -0.2335 +vn -0.6656 0.7423 0.0764 +vn 0.0016 -0.0018 1.0000 +vn 0.4439 -0.8950 -0.0447 +vn 0.3474 -0.4800 0.8055 +vn -0.3415 0.8379 -0.4258 +vn -0.9796 -0.1390 0.1450 +vn 0.1486 -0.2669 0.9522 +vn 0.2582 -0.3024 -0.9175 +vn -0.0254 -0.3387 -0.9406 +vn 0.2940 -0.2185 0.9305 +vn 0.8172 -0.4550 -0.3538 +vn 0.5724 -0.7947 0.2019 +vn 0.7708 -0.6239 -0.1289 +vn 0.5283 0.0462 -0.8478 +vn 0.4817 -0.1235 0.8676 +vn 0.7690 0.2312 0.5960 +vn 0.9857 -0.1600 0.0536 +vn -0.1815 -0.9789 -0.0939 +vn -0.6028 0.6180 0.5047 +vn -0.4976 0.4609 0.7348 +vn -0.4444 0.8785 0.1754 +vn 0.9741 -0.2111 0.0812 +vn -0.5411 0.8290 0.1415 +vn -0.2589 0.2730 -0.9265 +vn 0.5246 -0.6837 -0.5073 +vn 0.4730 -0.1073 0.8745 +vn -0.8559 -0.1066 0.5060 +vn -0.9024 -0.3800 0.2030 +vn 0.3367 0.0184 0.9414 +vn -0.0379 -0.7762 -0.6294 +vn -0.1106 -0.0168 0.9937 +vn 0.6095 0.4163 -0.6747 +vn -0.9388 0.3437 0.0206 +vn 0.5794 0.0407 -0.8140 +vn 0.0638 -0.1654 -0.9842 +vn 0.8107 0.1174 -0.5736 +vn 0.7040 0.1020 0.7028 +vn 0.2180 -0.7084 0.6714 +vn 0.0560 -0.7800 0.6233 +vn -0.0990 0.4636 0.8805 +vn -0.3725 0.7782 -0.5056 +vn -0.4313 0.8336 -0.3451 +vn -0.1156 0.1405 -0.9833 +vn 0.0869 0.2124 -0.9733 +vn 0.0000 -0.7986 0.6019 +vn 0.9794 -0.0127 0.2014 +vn 0.1847 0.8018 0.5684 +vn 0.4332 -0.2501 0.8659 +vn 0.9008 -0.1781 0.3960 +vn 0.9101 -0.2239 0.3486 +vn 0.9236 0.3729 -0.0892 +vn -0.2308 -0.0443 0.9720 +vn -0.3125 0.0000 0.9499 +vn 0.5939 -0.6471 0.4780 +vn 0.6284 -0.7233 0.2862 +vn 0.2907 -0.7531 0.5902 +vn -0.1577 0.1399 0.9775 +vn 0.6999 -0.6525 -0.2904 +vn -0.2637 0.2302 0.9367 +vn -0.0414 0.8170 0.5752 +vn 0.5592 -0.1784 -0.8096 +vn 0.3046 0.1831 -0.9347 +vn -0.1393 0.1093 -0.9842 +vn -0.5082 -0.0413 -0.8602 +vn -0.0367 0.0654 0.9972 +vn -0.8403 0.2897 0.4582 +vn -0.6981 -0.6890 -0.1947 +vn -0.0890 -0.1246 0.9882 +vn -0.3202 -0.7925 0.5191 +vn 0.1802 0.1244 0.9757 +vn 1.0000 -0.0009 0.0000 +vn -0.3475 0.7249 -0.5948 +vn -0.5049 -0.8289 0.2410 +vn 0.0398 -0.9895 -0.1388 +vn -0.1897 -0.0810 -0.9785 +vn -0.1676 -0.0716 -0.9833 +vn 0.2073 0.7677 -0.6064 +vn -0.0735 0.2464 0.9664 +vn 0.0000 0.2412 -0.9705 +vn -0.3185 -0.1839 -0.9299 +vn -0.3275 0.8461 -0.4205 +vn 0.3426 0.5551 -0.7580 +vn 0.4955 -0.1931 -0.8469 +vn 0.8231 0.3785 -0.4235 +vn -0.2747 0.9218 -0.2733 +vn 0.3469 -0.1737 -0.9217 +vn 0.3166 0.0014 0.9486 +vn 0.6234 0.1230 -0.7722 +vn 0.1288 -0.0988 0.9867 +vn 0.2560 0.0336 0.9661 +vn 0.7414 0.6508 -0.1636 +vn 0.5261 0.6542 0.5434 +vn 0.2503 0.9265 -0.2811 +vn -0.0039 -0.0102 -0.9999 +vn 0.7773 -0.0795 -0.6241 +vn 0.3557 0.9344 0.0171 +vn 0.0619 0.2906 0.9548 +vn -0.0952 0.4906 0.8662 +vn -0.0984 0.7176 0.6895 +vn 0.0346 -0.9994 0.0000 +vn 0.7672 -0.5308 0.3599 +vn 0.3638 -0.2517 0.8968 +vn 0.2810 -0.8777 0.3881 +vn -0.0176 0.0059 0.9998 +vn 0.1726 -0.3877 -0.9055 +vn 0.0505 0.0844 0.9951 +vn -0.4227 0.3394 -0.8403 +vn -0.3888 0.4650 -0.7954 +vn -0.2336 0.9111 0.3395 +vn -0.0469 0.9254 -0.3762 +vn 0.1606 0.9070 -0.3894 +vn 0.0200 0.9049 -0.4251 +vn -0.7008 0.5390 -0.4673 +vn -0.5616 0.3153 0.7650 +vn -0.2591 0.2476 0.9336 +vn 0.5936 0.6515 0.4725 +vn -0.0355 0.1112 0.9932 +vn -0.0276 0.7716 0.6355 +vn 0.7584 -0.5116 0.4038 +vn 0.4694 -0.0643 -0.8806 +vn 0.8087 -0.5381 -0.2376 +vn 0.0445 0.5880 0.8076 +vn 0.0000 -0.4252 0.9051 +vn -0.4807 0.2298 -0.8462 +vn -0.6509 0.1456 -0.7451 +vn -0.3004 -0.0948 -0.9491 +vn -0.0837 -0.0000 -0.9965 +vn -0.8279 -0.4184 -0.3734 +vn -0.3406 -0.3784 -0.8607 +vn 0.0000 0.8073 -0.5901 +vn 0.6493 0.5897 0.4803 +vn -0.4048 -0.5502 0.7304 +vn -0.5572 -0.4133 0.7202 +vn -0.3190 -0.0752 0.9448 +vn -0.3714 0.0426 0.9275 +vn -0.1314 0.0151 0.9912 +vn -0.0349 -0.9381 -0.3447 +vn 0.5843 0.6502 0.4857 +vn -0.3828 -0.0531 -0.9223 +vn 0.8165 0.2577 0.5167 +vn -0.0417 -0.9429 -0.3304 +vn 0.8568 0.3639 -0.3654 +vn 0.7753 0.2555 -0.5777 +vn 0.0909 -0.1296 -0.9874 +vn 0.1257 -0.0974 -0.9873 +vn 0.0813 0.9353 0.3444 +vn -0.8115 -0.5844 0.0000 +vn -0.0627 -0.2015 -0.9775 +vn -0.4960 0.8683 0.0000 +vn 0.0660 -0.8932 -0.4448 +vn 0.9371 0.3491 0.0000 +vn 0.9886 -0.1502 0.0000 +vn -0.9453 -0.3262 0.0000 +vn -0.1069 -0.9386 0.3281 +vn -0.9972 -0.0588 -0.0468 +vn -0.0395 -0.6649 0.7459 +vn 0.0856 -0.5228 0.8482 +vn -0.1511 0.1071 0.9827 +vn -0.7029 -0.3613 0.6127 +vn -0.0695 0.0763 -0.9947 +vn -0.1167 0.0081 -0.9931 +vn 0.0836 0.4840 0.8711 +vn 0.2084 0.9003 0.3820 +vn -0.4463 -0.0867 0.8907 +vn 0.7372 0.5549 -0.3855 +vn -0.2132 -0.0937 -0.9725 +vn -0.5338 0.6149 0.5805 +vn -0.7676 0.2631 -0.5845 +vn -0.8603 -0.3781 -0.3421 +vn -0.1516 -0.2499 -0.9563 +vn -0.3285 0.5072 0.7968 +vn -0.9840 0.1727 0.0433 +vn -0.7250 0.3187 -0.6106 +vn 0.2586 0.9660 0.0000 +vn -0.6333 -0.1446 0.7603 +vn -0.6285 -0.3211 0.7084 +vn 0.6433 0.2035 0.7381 +vn 0.4865 0.0866 0.8694 +vn 0.1548 0.0728 0.9853 +vn -0.4481 -0.5820 -0.6786 +vn -0.7505 -0.6510 -0.1137 +vn -0.3890 -0.9081 -0.1547 +vn -0.7395 -0.2779 0.6131 +vn -0.4324 -0.2628 -0.8625 +vn -0.6155 -0.1032 -0.7814 +vn 0.1411 0.4402 -0.8867 +vn -0.1645 -0.1905 0.9678 +vn 0.9759 -0.2132 0.0459 +vn -0.9859 0.1630 0.0388 +vn 0.3391 -0.1431 -0.9298 +vn 0.4898 0.0000 -0.8718 +vn -0.9178 0.3931 -0.0567 +vn -0.8881 0.4596 0.0000 +vn 0.3640 -0.5491 0.7523 +vn 0.5066 -0.5171 0.6899 +vn 0.5590 -0.7088 -0.4303 +vn -0.6950 -0.4994 0.5173 +vn 0.3374 -0.9261 0.1687 +vn -0.0818 0.0341 -0.9961 +vn 0.1359 -0.1029 0.9854 +vn -0.9178 -0.3931 0.0568 +vn -0.6420 0.6032 0.4733 +vn -0.5676 0.2108 0.7958 +vn -0.7659 -0.6404 -0.0571 +vn -0.3317 0.1432 0.9325 +vn 0.5556 -0.2399 0.7961 +vn -0.8801 -0.2217 0.4198 +vn -0.9160 -0.3023 -0.2636 +vn 0.2425 0.0000 -0.9701 +vn -0.3673 0.0721 0.9273 +vn 0.8116 -0.5836 -0.0251 +vn -0.8872 0.3940 -0.2403 +vn -0.3195 -0.2080 0.9245 +vn 0.8822 0.4478 -0.1457 +vn 0.9120 0.4067 -0.0544 +vn 0.5398 -0.8405 -0.0462 +vn -0.6104 -0.3376 0.7165 +vn -0.0768 0.1430 -0.9867 +vn 0.9530 -0.2851 0.1025 +vn 0.7831 -0.6009 -0.1601 +vn 0.7665 -0.5856 -0.2638 +vn -0.2795 0.9550 -0.0995 +vn -0.4596 0.8881 0.0000 +vn -0.5787 -0.7734 0.2589 +vn 0.0883 -0.9866 -0.1370 +vn -0.6892 0.6868 -0.2308 +vn -0.0869 0.9962 0.0000 +vn -0.5525 0.2969 -0.7789 +vn -0.9658 0.0924 -0.2423 +vn 0.3261 0.9449 0.0281 +vn -0.7290 0.4595 0.5074 +vn -0.8680 0.1982 0.4553 +vn -0.7430 0.1490 0.6526 +vn -0.6110 -0.6110 -0.5032 +vn 0.5723 0.8162 -0.0799 +vn 0.5844 0.8115 0.0000 +vn -0.7128 -0.3899 0.5830 +vn -0.9212 -0.1261 0.3680 +vn 0.6845 -0.5695 -0.4551 +vn 0.5870 0.8092 0.0227 +vn 0.5507 -0.3989 0.7333 +vn 0.1539 -0.1115 0.9818 +vn 0.0963 -0.2471 0.9642 +vn 0.0370 -0.0950 0.9948 +vn 0.3989 0.1456 0.9053 +vn -0.5853 -0.1282 0.8007 +vn 0.2223 0.0704 0.9724 +vn 0.1552 -0.0175 0.9877 +vn 0.0887 -0.1387 0.9864 +vn 0.7073 0.6446 0.2903 +vn 0.3483 0.8990 0.2655 +vn -0.4294 -0.7579 0.4912 +vn -0.9956 0.0934 0.0000 +vn -0.0011 -0.2734 -0.9619 +vn -0.1566 -0.8144 -0.5587 +vn -0.3225 -0.2644 -0.9089 +vn -0.5681 -0.4658 -0.6784 +vn -0.0895 0.1968 -0.9763 +vn -0.6801 -0.7324 -0.0335 +vn -0.0963 0.5900 -0.8017 +vn -0.2739 0.8077 -0.5221 +vn -0.3240 0.6227 -0.7122 +vn -0.0329 -0.3603 -0.9323 +vn -0.0795 -0.0440 -0.9959 +vn -0.1869 -0.0045 -0.9824 +vn 0.2582 0.9641 0.0626 +vn -0.0274 -0.9789 0.2023 +vn -0.0456 -0.3578 -0.9327 +vn -0.0307 -0.9806 0.1936 +vn 0.3342 -0.8710 -0.3602 +vn -0.0977 0.2574 0.9614 +vn -0.0063 -0.8400 0.5426 +vn 0.5236 -0.8494 0.0657 +vn 0.8021 -0.5340 -0.2673 +vn 0.4907 -0.3059 0.8158 +vn -0.0067 -0.0250 0.9997 +vn 0.9323 -0.1853 -0.3107 +vn -0.0136 -0.1465 -0.9891 +vn -0.1216 -0.1216 0.9851 +vn -0.4539 -0.8467 -0.2776 +vn 0.3407 -0.0385 -0.9394 +vn 0.1353 -0.0405 -0.9900 +vn -0.0233 0.8025 -0.5961 +vn 0.0276 -0.3878 -0.9213 +vn 0.0000 0.8886 0.4586 +vn -0.2244 -0.9673 0.1183 +vn -0.4546 -0.7450 0.4882 +vn -0.5042 -0.8263 -0.2509 +vn -0.6358 -0.6682 -0.3864 +vn -0.7093 -0.5636 0.4234 +vn -0.8548 -0.3344 0.3968 +vn -0.7142 -0.5177 -0.4710 +vn -0.3294 -0.1253 -0.9358 +vn -0.9638 -0.2591 0.0634 +vn -0.8021 -0.2943 0.5196 +vn -0.8410 -0.2721 0.4677 +vn 0.0613 0.0262 -0.9978 +vn -0.1271 0.0450 0.9909 +vn 0.9966 -0.0727 -0.0392 +vn 0.3790 0.2854 0.8803 +vn -0.1231 -0.6786 0.7242 +vn -0.9843 0.1764 -0.0034 +vn 0.6502 0.2749 0.7083 +vn 0.8769 0.4490 0.1716 +vn 0.7633 0.6033 0.2311 +vn 0.8320 -0.5531 -0.0426 +vn -0.0091 -0.8833 0.4688 +vn 0.2284 0.9205 -0.3172 +vn 0.2651 0.9640 -0.0212 +vn 0.6085 0.7141 -0.3461 +vn 0.1787 0.0454 -0.9829 +vn 0.1014 0.6945 -0.7123 +vn -0.9818 -0.1756 -0.0719 +vn -0.7500 -0.6614 0.0000 +vn -0.4245 0.7042 -0.5691 +vn -0.0485 0.3438 -0.9378 +vn -0.3042 0.2714 -0.9131 +vn 0.3782 -0.1068 -0.9195 +vn -0.8088 0.5881 0.0000 +vn 0.7361 -0.4406 -0.5138 +vn -0.9657 -0.2567 0.0397 +vn 0.5746 -0.7997 -0.1741 +vn 0.5025 -0.7789 -0.3752 +vn 0.1351 -0.9905 0.0267 +vn -0.4991 -0.8658 0.0355 +vn -0.0294 -0.7660 0.6422 +vn -0.0338 -0.6752 0.7369 +vn -0.2222 0.6582 0.7193 +vn 0.0631 0.2544 0.9650 +vn 0.1280 -0.2389 0.9626 +vn -0.4673 0.8721 0.1454 +vn 0.1618 0.9868 0.0000 +vn -0.4729 0.8519 0.2250 +vn 0.2612 -0.9617 -0.0831 +vn 0.0187 -0.9978 0.0636 +vn 0.7501 -0.6614 0.0000 +vn -0.1532 -0.5144 -0.8438 +vn -0.1705 -0.0751 0.9825 +vn -0.5863 -0.8097 -0.0263 +vn -0.9823 0.0182 0.1864 +vn -0.8265 -0.4612 -0.3228 +vn -0.4898 -0.1872 -0.8515 +vn -0.4500 -0.8930 0.0117 +vn 0.2800 0.0588 -0.9582 +vn -0.8402 0.1911 -0.5074 +vn 0.9597 0.2812 0.0000 +vn -0.7627 0.2486 -0.5970 +vn 0.5338 0.8141 -0.2285 +vn -0.7783 0.2560 -0.5733 +vn -0.7475 0.6564 -0.1019 +vn 0.7257 0.0927 -0.6817 +vn 0.9748 -0.0633 0.2138 +vn -0.2103 -0.6658 -0.7159 +vn 0.2148 -0.0213 -0.9764 +vn 0.5392 0.4206 0.7296 +vn 0.0296 0.0783 -0.9965 +vn 0.7341 0.4584 -0.5009 +vn 0.8221 -0.0210 0.5690 +vn -0.1351 -0.2713 -0.9530 +vn -0.0727 0.9947 0.0723 +vn 0.7117 -0.6827 0.1656 +vn 0.1607 -0.9870 0.0000 +vn 0.8667 0.4906 0.0904 +vn 0.4446 0.2115 0.8704 +vn 0.0164 0.2443 0.9696 +vn 0.2868 0.3081 0.9071 +vn -0.3978 -0.7724 0.4951 +vn -0.1503 0.9886 0.0000 +vn -0.4467 -0.8356 0.3197 +vn -0.6692 -0.6318 -0.3910 +vn -0.3157 -0.0566 -0.9472 +vn -0.2431 -0.9699 0.0175 +vn 0.3310 -0.9427 0.0421 +vn 0.7872 0.5679 -0.2405 +vn 0.5410 0.3303 -0.7735 +vn 0.2341 0.5372 -0.8103 +vn 0.1325 0.4367 -0.8898 +vn -0.0882 0.4615 -0.8828 +vn -0.0282 0.2490 -0.9681 +vn -0.1730 0.3802 -0.9086 +vn -0.1099 -0.1583 -0.9813 +vn 0.6587 0.3808 -0.6489 +vn 0.2522 -0.9135 -0.3192 +vn 0.5251 -0.2695 0.8072 +vn -0.0616 0.9981 0.0000 +vn -0.1530 -0.9868 0.0531 +vn 0.5776 -0.5781 -0.5764 +vn 0.8961 -0.4393 -0.0629 +vn -0.2142 0.6802 -0.7011 +vn 0.6066 0.7893 0.0949 +vn 0.5614 0.8251 0.0636 +vn 0.8399 -0.5418 0.0316 +vn -0.5087 0.8149 0.2778 +vn 0.9917 -0.1267 0.0195 +vn -0.8620 -0.2907 -0.4154 +vn -0.9237 -0.1768 -0.3399 +vn -0.9968 -0.0461 0.0656 +vn 0.9692 0.2435 0.0376 +vn -0.5787 0.4880 0.6534 +vn -0.8612 0.2250 -0.4558 +vn -0.9027 -0.4223 -0.0824 +vn -0.6965 -0.7043 -0.1375 +vn -0.0039 -0.3490 -0.9371 +vn 0.0326 0.4859 0.8734 +vn -0.1180 -0.7296 -0.6736 +vn 0.9064 -0.4182 0.0597 +vn -0.7245 0.2626 -0.6373 +vn 0.3592 -0.9333 0.0000 +vn -0.2458 -0.8905 0.3828 +vn -0.0317 -0.9983 0.0493 +vn -0.0254 -0.9978 0.0612 +vn 0.2867 -0.9565 0.0542 +vn -0.5720 -0.8099 0.1300 +vn -0.0952 -0.1949 0.9762 +vn -0.2842 0.6701 0.6857 +vn -0.6741 -0.7369 -0.0499 +vn -0.5273 -0.8494 -0.0222 +vn -0.4659 0.0429 0.8838 +vn 0.6580 -0.2036 0.7250 +vn 0.2712 0.8704 -0.4108 +vn -0.7998 -0.5792 -0.1573 +vn -0.9699 0.1745 0.1697 +vn -0.8224 0.5689 0.0000 +vn -0.0766 0.9928 -0.0925 +vn 0.5314 0.3418 0.7751 +vn -0.2603 0.9638 0.0580 +vn 0.5172 0.3863 0.7637 +vn -0.7048 -0.3924 0.5909 +vn 0.0000 0.1682 0.9857 +vn 0.0000 0.1897 0.9818 +vn -0.9249 0.3121 -0.2171 +vn 0.4231 0.9055 -0.0318 +vn 0.4424 -0.1339 -0.8868 +vn -0.6502 0.4353 -0.6227 +vn -0.1325 -0.2889 -0.9481 +vn 0.5175 0.8557 0.0000 +vn 0.0880 -0.1293 -0.9877 +vn 0.8491 0.5221 -0.0802 +vn -0.0249 0.0994 -0.9947 +vn -0.6820 0.7275 -0.0750 +vn 0.5004 -0.8650 -0.0371 +vn 0.7809 0.1800 -0.5982 +vn -0.2536 0.4242 0.8693 +vn -0.4712 0.5247 0.7090 +vn 0.2670 -0.1496 0.9520 +vn -0.4920 0.0060 0.8706 +vn -0.1994 0.6993 0.6864 +vn 0.8710 0.2308 0.4336 +vn 0.9431 -0.3305 -0.0356 +vn -0.2559 0.8972 -0.3599 +vn 0.1330 0.8975 0.4205 +vn 0.1895 0.7061 0.6823 +vn 0.1844 0.8008 0.5698 +vn 0.0557 0.3615 0.9307 +vn 0.1269 -0.9152 0.3826 +vn -0.2642 -0.6686 0.6952 +vn 0.9080 0.4190 0.0000 +vn 0.3008 0.6602 -0.6882 +vn 0.4985 0.6634 0.5581 +vn 0.3663 -0.0155 0.9304 +vn 0.4745 -0.0014 -0.8803 +vn -0.7538 0.5837 -0.3019 +vn 0.7033 0.5433 -0.4585 +vn 0.7157 0.6865 -0.1280 +vn 0.1271 0.3325 0.9345 +vn 0.1095 0.8424 0.5275 +vn 0.1335 0.0773 -0.9880 +vn 0.2906 0.8260 -0.4830 +vn -0.1162 0.9923 0.0423 +vn 0.8913 0.0953 0.4434 +vn 0.3560 -0.1523 -0.9220 +vn 0.5179 -0.8180 -0.2504 +vn 0.4734 -0.0162 -0.8807 +vn 0.5388 -0.4530 0.7103 +vn 0.7272 -0.5921 0.3473 +vn -0.1958 -0.0883 0.9767 +vn -0.1386 0.3129 0.9396 +vn -0.0105 -0.3302 0.9438 +vn -0.4602 0.5269 0.7145 +vn -0.4625 0.5307 0.7103 +vn -0.7978 0.4887 -0.3531 +vn -0.9877 0.0121 0.1558 +vn -0.2589 0.2598 -0.9303 +vn 0.1013 -0.1017 -0.9897 +vn 0.3426 -0.1283 -0.9307 +vn 0.3156 -0.2598 -0.9126 +vn 0.5100 -0.0143 -0.8601 +vn 0.7186 -0.3344 -0.6098 +vn 0.7512 -0.5003 -0.4305 +vn -0.1273 -0.9917 -0.0162 +vn 0.5077 -0.1418 0.8498 +vn -0.6183 0.1855 0.7638 +vn 0.1828 -0.1069 0.9773 +vn 0.9059 0.4232 -0.0148 +vn 0.9917 -0.1267 -0.0196 +vn 0.4747 -0.1448 0.8682 +vn 0.8559 -0.3838 0.3467 +vn 0.8121 0.1092 -0.5732 +vn 0.4252 -0.9051 0.0000 +vn -0.0278 0.0917 0.9954 +vn 0.5198 0.0212 -0.8540 +vn 0.0929 -0.3065 0.9473 +vn 0.3326 -0.9421 0.0423 +vn -0.4668 0.0745 -0.8812 +vn -0.6391 -0.7444 -0.1934 +vn -0.3840 -0.7074 -0.5935 +vn 0.0216 0.3142 -0.9491 +vn -0.3737 -0.2554 -0.8917 +vn 0.2394 -0.5648 0.7897 +vn 0.1403 -0.3618 -0.9216 +vn 0.1623 -0.4895 -0.8568 +vn 0.3349 -0.4450 0.8306 +vn 0.0000 1.0000 -0.0002 +vn 0.7824 -0.6200 0.0590 +vn 0.1471 -0.9736 -0.1745 +vn 0.2558 -0.3832 -0.8875 +vn -0.1406 -0.9747 0.1736 +vn -0.1854 0.2271 -0.9561 +vn 0.5253 -0.5988 -0.6046 +vn -0.1678 0.9536 0.2499 +vn 0.1371 0.9693 -0.2042 +vn 0.3455 0.9332 0.0987 +vn -0.1295 -0.3498 0.9278 +vn 0.3775 0.6961 0.6107 +vn 0.3219 0.4114 0.8527 +vn -0.1417 -0.5138 0.8461 +vn -0.1826 -0.8231 -0.5377 +vn -0.4386 -0.4891 0.7539 +vn -0.4490 -0.4877 0.7487 +vn -0.3573 -0.3268 0.8750 +vn 0.3452 -0.9245 -0.1619 +vn 0.5697 -0.2220 0.7913 +vn 0.0083 -0.9777 0.2100 +vn 0.1039 -0.4667 0.8783 +vn 0.0869 -0.4872 -0.8690 +vn -0.0116 -0.1855 0.9826 +vn 0.3048 -0.6327 -0.7119 +vn -0.0772 0.2896 -0.9540 +vn -0.4829 0.5649 0.6691 +vn 0.3282 -0.1815 0.9270 +vn 0.5506 -0.3128 0.7740 +vn 0.9608 -0.2380 -0.1419 +vn 0.9916 -0.1285 -0.0129 +vn 0.7607 -0.6471 -0.0509 +vn 0.7804 -0.6243 -0.0360 +vn 0.2728 0.0040 -0.9621 +vn -0.3706 -0.1092 -0.9223 +vn -0.8665 -0.0085 -0.4990 +vn -0.0591 0.0330 -0.9977 +vn 0.0346 0.9979 0.0552 +vn -0.3068 0.1599 -0.9382 +vn -0.2847 0.1314 -0.9496 +vn -0.1331 0.5799 0.8037 +vn -0.0618 0.6995 0.7119 +vn 0.0393 -0.9992 -0.0110 +vn -0.7541 0.4573 -0.4714 +vn -0.8733 0.3182 0.3690 +vn -0.0817 0.9967 0.0000 +vn -0.7478 0.5883 -0.3078 +vn -0.2329 0.1502 0.9608 +vn 0.4489 0.1255 0.8847 +vn 0.6549 0.0799 0.7515 +vn 0.7574 0.5598 0.3360 +vn 0.0234 0.1333 0.9908 +vn -0.4585 -0.2398 0.8557 +vn -0.3675 0.4311 0.8241 +vn 0.7763 0.3049 -0.5518 +vn 0.0120 -0.6137 -0.7895 +vn -0.5548 -0.6815 -0.4772 +vn -0.0376 -0.3733 -0.9270 +vn -0.0270 -0.2589 -0.9655 +vn 0.7506 -0.6605 -0.0165 +vn 0.0402 -0.0756 -0.9963 +vn 0.3201 0.7390 0.5928 +vn -0.3826 0.5102 -0.7703 +vn 0.4036 -0.5381 -0.7399 +vn 0.4404 -0.6187 -0.6506 +vn -0.5531 0.8331 0.0074 +vn 0.0890 -0.9126 -0.3991 +vn 0.0310 -0.5015 -0.8646 +vn -0.7596 0.6122 0.2196 +vn -0.0046 0.4213 -0.9069 +vn -0.4272 -0.8365 0.3432 +vn 0.3755 0.9112 -0.1693 +vn -0.0059 0.8417 -0.5399 +vn -0.4297 -0.6294 -0.6475 +vn -0.7793 -0.5969 0.1905 +vn 0.0272 0.5671 -0.8232 +vn 0.0982 0.0726 0.9925 +vn -0.0328 0.0109 0.9994 +vn -0.1249 -0.1725 -0.9771 +vn 0.3044 0.5991 -0.7406 +vn -0.0168 0.8013 0.5980 +vn -0.4465 -0.2590 -0.8565 +vn 0.0083 0.6593 0.7519 +vn -0.4264 -0.2473 -0.8701 +vn 0.2694 0.4444 0.8544 +vn -0.0515 0.6701 0.7405 +vn -0.0126 0.4996 0.8662 +vn -0.0415 -0.5312 0.8462 +vn -0.8120 0.1324 0.5685 +vn 0.0159 0.9995 0.0285 +vn -0.5418 0.7706 0.3356 +vn 0.2730 -0.4576 0.8462 +vn 0.3236 -0.4859 0.8119 +vn 0.0204 0.9993 0.0326 +vn 0.1420 -0.2132 0.9666 +vn -0.6862 0.5903 0.4251 +vn 0.0325 -0.9995 -0.0035 +vn -0.6838 0.6196 0.3854 +vn -0.9963 -0.0861 0.0000 +vn -0.9054 0.4196 0.0640 +vn -0.7761 0.0722 0.6265 +vn -0.2281 0.0869 -0.9698 +vn -0.1030 -0.8991 0.4255 +vn -0.2349 -0.2018 0.9508 +vn 0.2876 -0.2067 -0.9352 +vn -0.9821 0.0920 -0.1644 +vn 0.9914 -0.0283 -0.1280 +vn 0.9955 0.0000 -0.0944 +vn 0.3237 0.0000 0.9462 +vn 0.0532 -0.0786 0.9955 +vn 0.1085 -0.0843 0.9905 +vn -0.1980 0.2663 0.9433 +vn 0.0072 0.0400 0.9992 +vn 0.0886 0.0903 -0.9920 +vn -0.9822 0.0916 -0.1642 +vn -0.5340 0.3001 0.7904 +vn 0.9971 0.0000 0.0765 +vn -0.9745 -0.1967 -0.1084 +vn 0.3003 0.0390 -0.9530 +vn -0.6455 -0.5457 -0.5343 +vn -0.4725 -0.8718 -0.1293 +vn 0.0948 0.1050 -0.9899 +vn -0.4366 0.3842 0.8135 +vn 0.0659 0.2198 -0.9733 +vn 0.1291 0.3179 -0.9393 +vn 1.0000 -0.0058 0.0000 +vn 0.8759 0.4487 -0.1775 +vn 0.8617 0.1651 -0.4798 +vn 0.6465 0.5665 -0.5110 +vn 0.2699 0.2365 0.9334 +vn -0.0784 -0.2627 0.9617 +vn -0.0612 0.0418 0.9972 +vn 0.4950 0.8152 0.3008 +vn 0.0956 0.2929 0.9513 +vn 0.7824 -0.6157 0.0934 +vn -0.9904 0.0882 0.1064 +vn 0.0688 -0.1907 0.9792 +vn 0.0000 -0.0418 -0.9991 +vn -0.0360 -0.8575 -0.5133 +vn 0.0075 -0.0540 -0.9985 +vn -0.3374 -0.9413 0.0066 +vn -0.2609 0.5980 -0.7578 +vn -0.4321 0.8242 -0.3659 +vn -0.0710 0.0365 -0.9968 +vn -0.4917 0.5498 -0.6752 +vn 0.0000 -0.9985 -0.0552 +vn 0.3542 0.0037 -0.9351 +vn 0.7949 -0.3739 -0.4778 +vn 0.7954 -0.2655 0.5448 +vn 0.9284 0.0946 -0.3594 +vn -0.0043 -0.0026 -1.0000 +vn 0.6313 0.0185 -0.7753 +vn 0.3196 -0.7379 -0.5945 +vn 0.5383 0.8069 -0.2433 +vn 0.1156 0.8446 -0.5227 +vn 0.2810 0.0603 -0.9578 +vn 0.1039 0.8330 -0.5435 +vn 0.0200 0.2151 0.9764 +vn -0.0450 0.2704 0.9617 +vn -0.0332 -0.2657 0.9635 +vn -0.0945 0.1603 0.9825 +vn -0.5736 -0.5713 0.5871 +vn -0.1857 -0.2577 -0.9482 +vn -0.3876 -0.4186 -0.8213 +vn 0.2891 0.9573 0.0000 +vn -0.3033 -0.3743 -0.8763 +vn 0.2007 -0.0396 0.9789 +vn 0.1926 -0.0233 0.9810 +vn -0.1691 0.1007 -0.9804 +vn -0.6232 -0.7813 -0.0355 +vn -0.7105 -0.1883 0.6780 +vn -0.9843 -0.1586 -0.0774 +vn 0.0000 0.5522 0.8337 +vn -0.5425 0.2464 0.8031 +vn -0.5984 0.1172 0.7926 +vn -0.8735 0.4361 0.2162 +vn -0.8451 0.4920 0.2092 +vn -0.3655 0.3655 0.8560 +vn -0.3037 0.5331 0.7897 +vn -0.0431 0.9405 -0.3372 +vn -0.2474 0.1843 0.9512 +vn 0.0323 0.1183 0.9925 +vn 0.0750 0.8236 0.5622 +vn 0.2214 0.9724 -0.0734 +vn -0.1632 0.3254 0.9314 +vn 0.9775 0.2093 -0.0256 +vn 0.3228 -0.6435 0.6941 +vn 0.5924 -0.6151 -0.5204 +vn 0.1474 -0.3784 -0.9138 +vn 0.6125 -0.7404 0.2768 +vn 0.8373 -0.5393 -0.0898 +vn -0.9392 0.3422 0.0291 +vn -0.9696 0.0108 -0.2443 +vn -0.4509 0.3174 0.8342 +vn -0.1816 0.9756 0.1234 +vn 0.3521 -0.9359 0.0000 +vn -0.8745 -0.3160 0.3679 +vn 0.5287 -0.1962 0.8258 +vn 0.5038 -0.2424 0.8291 +vn 0.6594 -0.3172 0.6816 +vn 0.6135 -0.7897 0.0000 +vn -0.0679 0.0679 0.9954 +vn -0.3088 0.0324 0.9506 +vn 0.2037 0.0334 0.9785 +vn -0.8064 -0.1894 0.5602 +vn -0.5353 -0.3558 0.7661 +vn -0.5443 -0.8159 0.1951 +vn 0.1498 -0.9887 0.0010 +vn -0.6345 -0.7730 0.0000 +vn -0.8425 -0.0615 -0.5352 +vn -0.4232 -0.0781 -0.9026 +vn -0.8486 -0.0623 -0.5254 +vn -0.9136 -0.4058 -0.0268 +vn -0.2807 -0.7359 -0.6162 +vn -0.2251 -0.7704 -0.5965 +vn -0.1869 -0.9806 -0.0594 +vn -0.1129 -0.7221 0.6826 +vn 0.4850 -0.8745 0.0000 +vn -0.4249 0.9021 -0.0754 +vn 0.1577 -0.8530 -0.4975 +vn 0.1564 -0.8477 -0.5069 +vn 0.1649 -0.4261 -0.8895 +vn -0.0527 -0.2539 0.9658 +vn 0.5393 -0.4543 -0.7091 +vn 0.3932 -0.2778 -0.8765 +vn -0.6504 0.5182 -0.5554 +vn -0.1792 0.0821 -0.9804 +vn 0.6100 -0.7889 -0.0745 +vn -0.9572 0.2810 -0.0692 +vn -0.5948 0.6659 -0.4503 +vn 0.3233 -0.3620 0.8744 +vn 0.3211 -0.0587 0.9452 +vn -0.2410 -0.7279 -0.6419 +vn -0.1947 -0.1935 0.9616 +vn -0.3866 -0.1060 0.9161 +vn -0.7654 -0.3275 0.5541 +vn 0.3786 0.1399 -0.9149 +vn 0.0544 0.1902 -0.9802 +vn 0.7492 0.6606 0.0473 +vn 0.5754 0.8132 -0.0875 +vn 0.0000 0.1525 0.9883 +vn 0.0069 -0.0797 0.9968 +vn 0.9504 0.3057 -0.0580 +vn -0.2575 0.2972 0.9194 +vn -0.2186 0.8745 -0.4330 +vn -0.2399 0.7949 -0.5573 +vn -0.4820 0.4188 -0.7696 +vn 0.0309 0.0172 0.9994 +vn -0.0781 -0.0941 0.9925 +vn 0.4640 0.5107 0.7238 +vn 0.5985 -0.5092 -0.6185 +vn -0.0484 0.2045 0.9777 +vn -0.4990 -0.2786 0.8206 +vn -0.6974 -0.0400 -0.7156 +vn 0.0307 -0.0179 0.9994 +vn 0.7618 -0.1393 -0.6326 +vn -0.4974 0.2894 0.8178 +vn -0.2414 -0.5018 -0.8306 +vn 0.3624 -0.8218 0.4398 +vn 0.0294 -0.0037 0.9996 +vn -0.1136 -0.3887 0.9143 +vn -0.5636 0.0147 -0.8259 +vn 0.4458 -0.8935 0.0533 +vn -0.3491 -0.7134 0.6076 +vn -0.7659 0.0473 -0.6412 +vn -0.1297 0.0695 0.9891 +vn -0.0276 -0.0220 0.9994 +vn 0.0000 0.4143 -0.9102 +vn 0.5251 -0.1350 0.8403 +vn -0.0375 -0.0724 -0.9967 +vn -0.0295 -0.6705 -0.7414 +vn 0.2405 -0.9691 0.0539 +vn -0.3543 -0.9346 -0.0328 +vn -0.8253 -0.5644 -0.0192 +vn 0.6379 0.7431 0.2023 +vn 0.6553 -0.0166 -0.7552 +vn 0.6128 0.4074 0.6771 +vn 0.7096 -0.0376 0.7036 +vn 0.7537 -0.5108 0.4135 +vn -0.4103 0.5640 -0.7166 +vn 0.0929 -0.2385 -0.9667 +vn 0.3913 0.7232 -0.5691 +vn 0.4279 0.5442 -0.7216 +vn -0.1129 -0.0287 -0.9932 +vn -0.4261 0.9047 0.0038 +vn 0.3632 -0.9307 -0.0423 +vn 0.6622 0.2652 0.7009 +vn 0.6587 -0.5372 0.5268 +vn 0.6228 0.7792 0.0704 +vn 0.0122 0.0299 -0.9995 +vn 0.5293 0.5510 -0.6451 +vn 0.4680 -0.6116 0.6379 +vn 0.1202 0.6150 -0.7793 +vn 0.0538 0.9976 -0.0428 +vn -0.3573 -0.9317 -0.0645 +vn 0.3858 -0.9211 -0.0524 +vn 0.0647 -0.1795 0.9816 +vn -0.5151 -0.8241 0.2357 +vn 0.4463 -0.8948 -0.0129 +vn -0.9591 -0.2812 0.0315 +vn 0.0081 0.0453 0.9989 +vn 0.9115 -0.3529 0.2113 +vn 0.8650 -0.4901 -0.1075 +vn 0.0000 -0.9999 -0.0144 +vn 0.0056 -0.2291 0.9734 +vn -0.0535 -0.9915 -0.1185 +vn -0.4571 0.3266 -0.8273 +vn 0.2553 -0.0460 -0.9658 +vn -0.7171 -0.2019 -0.6671 +vn 0.0073 -0.4458 0.8951 +vn 0.2168 0.6928 -0.6878 +vn 0.2385 -0.6782 0.6952 +vn 0.0436 -0.8471 0.5297 +vn -0.0401 0.4617 0.8862 +vn -0.3432 0.9328 0.1101 +vn 0.1768 0.8490 -0.4979 +vn -0.9998 -0.0201 0.0000 +vn 0.0278 0.1937 0.9807 +vn -0.8677 -0.3096 0.3888 +vn -0.8217 -0.2295 0.5216 +vn 0.2599 -0.3875 -0.8845 +vn -0.3210 -0.2191 -0.9214 +vn -0.2981 -0.3749 0.8778 +vn -0.4762 -0.8789 0.0262 +vn -0.3503 -0.6263 0.6964 +vn -0.4737 -0.8807 0.0000 +vn 0.0514 -0.9978 -0.0413 +vn 0.3720 0.4276 -0.8238 +vn 0.5833 -0.7039 0.4052 +vn 0.2901 -0.0433 -0.9560 +vn -0.4126 0.3739 -0.8306 +vn 0.4964 -0.8681 -0.0013 +vn 0.0940 0.1098 -0.9895 +vn -0.0545 -0.1352 0.9893 +vn 0.3216 -0.2188 0.9212 +vn 0.1971 0.8552 -0.4794 +vn -0.1755 0.2644 0.9483 +vn -0.3402 -0.5258 -0.7796 +vn 0.3518 0.2855 -0.8915 +vn 0.7767 0.5501 0.3068 +vn -0.7648 0.4892 -0.4193 +vn 0.2631 0.2442 0.9333 +vn -0.8317 -0.1305 0.5396 +vn -0.8685 0.0072 -0.4956 +vn -0.2996 -0.2012 -0.9326 +vn 0.5164 0.8562 0.0133 +vn 0.7274 0.2413 -0.6424 +vn -0.3329 0.1070 0.9369 +vn -0.5082 0.8612 0.0103 +vn -0.9992 -0.0393 0.0000 +vn -0.4076 0.7695 0.4916 +vn -0.8061 0.3778 0.4555 +vn -0.1644 0.6119 0.7737 +vn 0.0391 -0.1110 0.9930 +vn 0.3468 0.1891 0.9187 +vn 0.1357 0.5025 0.8539 +vn 0.5411 0.6365 0.5497 +vn 0.7808 0.5973 -0.1831 +vn 0.3496 -0.3155 -0.8822 +vn 0.1424 0.9896 -0.0183 +vn 0.6450 0.5698 -0.5091 +vn 0.8165 0.4083 0.4082 +vn 0.8829 0.4691 -0.0230 +vn 0.3963 0.9065 -0.1455 +vn -0.1322 -0.3787 -0.9160 +vn -0.1733 0.9849 -0.0059 +vn -0.3059 0.2526 -0.9180 +vn 0.2849 -0.0989 -0.9534 +vn 0.3761 -0.7099 0.5955 +vn 0.5369 -0.3658 -0.7602 +vn -0.9762 0.1385 0.1670 +vn 0.2059 0.5896 -0.7810 +vn 0.2538 0.4582 -0.8519 +vn -0.8890 -0.4545 -0.0552 +vn 0.0000 -0.0428 0.9991 +vn -0.8258 0.2395 0.5106 +vn 0.0143 0.0000 0.9999 +vn 0.1870 0.1838 -0.9650 +vn 0.9880 0.1092 0.1092 +vn 0.6186 0.2795 0.7343 +vn -0.9433 -0.1162 0.3110 +vn 0.0000 0.0579 0.9983 +vn 0.8443 -0.2576 -0.4698 +vn -0.9438 -0.2231 -0.2438 +vn -0.6273 -0.0773 0.7749 +vn -0.5349 0.5041 -0.6780 +vn -0.2582 0.8319 0.4911 +vn -0.4663 0.1853 0.8650 +vn -0.2773 0.2161 0.9361 +vn 0.4438 -0.2095 0.8713 +vn -0.3452 0.5231 0.7792 +vn -0.7966 0.6045 0.0011 +vn 0.5216 -0.8261 -0.2133 +vn 0.1759 -0.1238 -0.9766 +vn -0.3086 0.6828 -0.6622 +vn 0.1308 0.1373 -0.9819 +vn 0.0326 0.9146 0.4030 +vn 0.0546 -0.0291 -0.9981 +vn -0.2220 0.5616 0.7971 +vn -0.7941 0.2533 -0.5525 +vn 0.2286 0.9732 0.0244 +vn -0.2854 0.9575 -0.0417 +vn 0.1262 0.1592 -0.9791 +vn -0.5160 0.8566 0.0030 +vn -0.7396 -0.6711 -0.0509 +vn -0.6842 -0.7290 0.0219 +vn -0.4705 -0.1482 0.8699 +vn -0.7119 0.0161 0.7021 +vn -0.9303 0.2107 -0.3001 +vn -0.2574 -0.0879 -0.9623 +vn 0.3981 -0.0994 -0.9120 +vn 0.0000 -0.9942 -0.1079 +vn -0.0496 -0.2633 -0.9635 +vn 0.4692 -0.8831 -0.0075 +vn 0.5216 -0.1038 -0.8469 +vn 0.9299 -0.1484 -0.3364 +vn -0.7368 0.0610 0.6733 +vn 0.0262 -0.9983 0.0524 +vn -0.7742 0.3126 -0.5503 +vn 0.3637 -0.1293 0.9225 +vn 0.4677 -0.2898 0.8350 +vn -0.1062 -0.9414 -0.3202 +vn 0.0450 0.9989 -0.0137 +vn -0.2316 -0.6487 -0.7249 +vn 0.6077 -0.7776 -0.1613 +vn -0.0881 -0.0176 -0.9960 +vn -0.2688 0.7047 -0.6566 +vn -0.0864 -0.9102 -0.4051 +vn 0.9955 0.0924 0.0195 +vn -0.4634 -0.7421 -0.4844 +vn -0.2398 -0.8719 0.4270 +vn -0.1830 -0.4042 0.8962 +vn -0.9326 -0.3377 0.1274 +vn -0.8409 0.5409 0.0182 +vn 0.3199 0.4258 0.8464 +vn -0.9156 0.4012 -0.0278 +vn 0.6822 0.5348 -0.4986 +vn -0.5141 0.2260 -0.8274 +vn -0.6564 -0.6001 -0.4571 +vn 0.3848 -0.8435 0.3748 +vn -0.3161 -0.0254 -0.9484 +vn -0.6742 -0.2784 0.6841 +vn -0.4253 0.0749 -0.9019 +vn -0.6254 -0.5717 0.5311 +vn -0.3670 0.1042 -0.9243 +vn 0.0987 -0.1640 0.9815 +vn -0.9375 -0.3480 -0.0050 +vn -0.4013 0.0098 0.9159 +vn -0.3078 -0.1042 0.9457 +vn -0.6243 -0.7811 -0.0113 +vn -0.1351 0.0498 0.9896 +vn -0.1350 -0.0634 0.9888 +vn 0.0423 0.0686 -0.9967 +vn -0.9314 0.1832 0.3146 +vn -0.3910 -0.4176 0.8202 +vn -0.5316 -0.2997 0.7922 +vn -0.5277 -0.0975 -0.8438 +vn 0.2512 -0.3404 -0.9061 +vn -0.1678 -0.1628 -0.9723 +vn -0.8960 0.4437 -0.0157 +vn 0.8886 -0.4152 0.1949 +vn -0.7450 0.6648 -0.0543 +vn -0.1504 0.7525 0.6412 +vn 0.2601 0.2778 0.9248 +vn 0.2884 0.7687 0.5709 +vn -0.6004 0.7997 -0.0047 +vn 0.4802 0.1672 0.8611 +vn -0.2756 -0.0647 0.9591 +vn 0.0676 -0.4956 -0.8659 +vn -0.0017 -0.7066 0.7076 +vn 0.1020 0.1969 -0.9751 +vn -0.1228 -0.6783 -0.7244 +vn -0.5562 -0.5451 -0.6273 +vn 0.5197 0.1322 -0.8441 +vn -0.0215 -0.9803 -0.1966 +vn -0.3463 -0.0730 -0.9353 +vn 0.9499 -0.1940 -0.2452 +vn 0.4783 0.0885 0.8737 +vn -0.4937 0.8696 0.0000 +vn 0.3066 0.0686 0.9494 +vn -0.3495 -0.9219 0.1670 +vn -0.4372 -0.6250 0.6467 +vn 0.8643 0.5030 0.0000 +vn -0.7587 -0.0998 -0.6437 +vn 0.7295 0.6836 -0.0238 +vn -0.0607 -0.0690 -0.9958 +vn -0.7309 0.5505 -0.4033 +vn -0.4223 0.7184 0.5529 +vn -0.3748 -0.7642 -0.5249 +vn 0.0458 0.6829 0.7290 +vn -0.3005 -0.2988 0.9058 +vn 0.3425 0.9030 0.2593 +vn 0.4863 0.2830 0.8267 +vn 0.5097 0.8220 -0.2540 +vn 0.3564 0.5748 -0.7366 +vn 0.2680 0.3698 -0.8896 +vn 0.9591 0.2122 -0.1872 +vn 0.4879 -0.2723 0.8293 +vn 0.8983 0.2641 -0.3512 +vn 0.1588 -0.8738 -0.4596 +vn 0.8732 -0.4874 0.0000 +vn -0.1205 0.0673 0.9904 +vn -0.4621 -0.8852 0.0535 +vn -0.1888 -0.0443 0.9810 +vn -0.1184 -0.0689 0.9906 +vn -0.1587 0.0198 0.9871 +vn -0.8878 -0.4598 0.0195 +vn -0.9909 -0.1245 -0.0516 +vn -0.0073 -0.3421 0.9396 +vn -0.9860 0.0638 0.1543 +vn -0.7635 0.0611 -0.6429 +vn -0.9991 0.0381 0.0158 +vn 0.3566 -0.1567 -0.9210 +vn -0.6711 0.3740 0.6401 +vn -0.7778 0.6212 0.0959 +vn -0.0566 0.4686 -0.8816 +vn -0.0189 0.9966 -0.0800 +vn -0.4649 0.8713 -0.1569 +vn 0.0212 -0.4888 0.8721 +vn -0.3485 -0.9019 0.2551 +vn -0.1842 -0.0981 0.9780 +vn 0.4407 -0.4648 -0.7679 +vn -0.1661 0.9861 -0.0092 +vn 0.2524 0.9673 -0.0261 +vn 0.5824 0.5556 -0.5934 +vn 0.0876 0.0021 -0.9962 +vn 0.6338 0.6126 -0.4722 +vn 0.1669 0.9859 0.0092 +vn 0.8111 0.5641 0.1548 +vn 0.6763 0.7360 -0.0310 +vn -0.0984 0.0060 0.9951 +vn 0.1342 0.5946 0.7928 +vn -0.1555 -0.0372 0.9871 +vn -0.4031 -0.2868 0.8691 +vn -0.0821 -0.2124 -0.9737 +vn -0.2224 -0.4340 -0.8730 +vn -0.0480 -0.1168 -0.9920 +vn 0.1211 0.5671 0.8147 +vn -0.0170 -0.1422 -0.9897 +vn -0.9876 -0.1546 0.0291 +vn -0.9794 -0.1117 0.1681 +vn -0.9822 0.1783 0.0593 +vn 0.4901 -0.1239 -0.8628 +vn 0.9808 -0.1894 0.0472 +vn 0.9545 -0.2103 0.2113 +vn -0.4211 0.9046 0.0662 +vn -0.1550 -0.0943 0.9834 +vn -0.4967 0.8650 0.0713 +vn -0.5244 0.3545 -0.7742 +vn -0.0308 0.0027 -0.9995 +vn 0.3995 -0.8970 -0.1891 +usemtl Material.002_0 +s off +f 104//202 105//202 106//202 +f 106//203 107//203 104//203 +f 108//204 109//204 110//204 +f 111//205 112//205 113//205 +f 104//206 114//206 105//206 +f 105//207 114//207 115//207 +f 116//208 105//208 115//208 +f 117//209 116//209 115//209 +f 117//209 115//209 118//209 +f 117//204 118//204 119//204 +f 117//210 119//210 120//210 +f 120//210 121//210 117//210 +f 121//210 122//210 117//210 +f 123//210 117//210 122//210 +f 123//210 122//210 124//210 +f 123//209 124//209 125//209 +f 108//204 126//204 109//204 +f 106//211 105//211 127//211 +f 128//212 129//212 125//212 +f 130//213 125//213 129//213 +f 129//214 131//214 130//214 +f 132//215 133//215 134//215 +f 135//216 136//216 137//216 +f 130//217 131//217 138//217 +f 138//217 139//217 130//217 +f 117//209 130//209 139//209 +f 139//209 140//209 117//209 +f 140//209 139//209 141//209 +f 142//204 140//204 141//204 +f 143//216 142//216 141//216 +f 141//209 144//209 143//209 +f 143//209 144//209 145//209 +f 143//209 145//209 146//209 +f 147//209 143//209 146//209 +f 148//218 147//218 146//218 +f 148//219 146//219 149//219 +f 149//216 150//216 148//216 +f 148//216 150//216 151//216 +f 151//216 152//216 148//216 +f 148//216 152//216 153//216 +f 153//216 152//216 154//216 +f 153//216 154//216 155//216 +f 156//216 137//216 136//216 +f 153//216 155//216 157//216 +f 158//209 153//209 157//209 +f 157//209 159//209 158//209 +f 160//220 161//220 162//220 +f 163//221 164//221 165//221 +f 166//222 159//222 167//222 +f 168//223 166//223 167//223 +f 169//216 168//216 167//216 +f 170//224 171//224 172//224 +f 173//216 169//216 167//216 +f 167//225 174//225 173//225 +f 173//226 174//226 175//226 +f 173//227 175//227 176//227 +f 177//228 178//228 179//228 +f 180//229 176//229 175//229 +f 107//209 106//209 181//209 +f 180//230 175//230 182//230 +f 183//209 180//209 182//209 +f 183//209 147//209 180//209 +f 180//231 147//231 184//231 +f 147//232 185//232 184//232 +f 186//233 184//233 185//233 +f 187//233 186//233 185//233 +f 187//233 185//233 188//233 +f 187//233 188//233 189//233 +f 171//234 190//234 172//234 +f 191//235 192//235 193//235 +f 104//236 107//236 194//236 +f 195//216 192//216 191//216 +f 189//233 196//233 197//233 +f 114//216 104//216 198//216 +f 199//233 197//233 196//233 +f 200//210 201//210 202//210 +f 203//237 204//237 205//237 +f 115//238 114//238 118//238 +f 202//210 206//210 200//210 +f 207//210 177//210 208//210 +f 203//239 205//239 209//239 +f 210//204 105//204 116//204 +f 116//209 117//209 140//209 +f 211//210 207//210 212//210 +f 213//204 119//204 118//204 +f 214//209 215//209 216//209 +f 217//216 218//216 219//216 +f 119//210 220//210 120//210 +f 121//240 120//240 221//240 +f 222//241 223//241 224//241 +f 223//242 225//242 224//242 +f 226//233 224//233 225//233 +f 226//233 225//233 227//233 +f 226//233 227//233 228//233 +f 228//233 229//233 226//233 +f 229//216 230//216 226//216 +f 226//243 230//243 231//243 +f 231//243 232//243 226//243 +f 226//233 232//233 233//233 +f 233//233 232//233 234//233 +f 234//244 235//244 233//244 +f 235//245 236//245 233//245 +f 233//246 236//246 237//246 +f 233//247 237//247 238//247 +f 233//248 238//248 239//248 +f 224//233 233//233 239//233 +f 224//233 239//233 240//233 +f 240//233 241//233 224//233 +f 224//233 241//233 242//233 +f 243//249 219//249 218//249 +f 244//250 245//250 246//250 +f 242//233 128//233 247//233 +f 122//251 121//251 221//251 +f 242//233 247//233 248//233 +f 214//204 249//204 250//204 +f 123//209 125//209 117//209 +f 122//210 251//210 124//210 +f 203//252 209//252 252//252 +f 253//253 252//253 209//253 +f 242//233 254//233 224//233 +f 254//233 222//233 224//233 +f 190//254 252//254 253//254 +f 129//233 128//233 255//233 +f 252//255 190//255 165//255 +f 254//256 256//256 257//256 +f 257//244 197//244 254//244 +f 199//233 254//233 197//233 +f 199//233 222//233 254//233 +f 197//257 257//257 258//257 +f 258//258 259//258 197//258 +f 197//233 259//233 260//233 +f 197//233 260//233 261//233 +f 261//233 142//233 197//233 +f 197//233 142//233 187//233 +f 198//233 261//233 260//233 +f 260//233 114//233 198//233 +f 260//233 262//233 114//233 +f 262//238 118//238 114//238 +f 262//204 213//204 118//204 +f 213//204 262//204 263//204 +f 264//216 213//216 263//216 +f 263//216 265//216 264//216 +f 264//259 265//259 266//259 +f 266//260 267//260 264//260 +f 264//261 267//261 268//261 +f 269//262 244//262 246//262 +f 270//263 271//263 272//263 +f 273//216 268//216 274//216 +f 272//264 275//264 270//264 +f 274//216 276//216 273//216 +f 273//265 276//265 277//265 +f 278//266 279//266 280//266 +f 246//267 281//267 269//267 +f 277//268 282//268 273//268 +f 282//269 283//269 273//269 +f 268//216 273//216 283//216 +f 283//216 284//216 268//216 +f 268//216 284//216 213//216 +f 213//216 284//216 285//216 +f 213//216 285//216 286//216 +f 119//233 213//233 286//233 +f 119//233 286//233 287//233 +f 287//233 220//233 119//233 +f 288//270 289//270 243//270 +f 290//216 217//216 219//216 +f 220//210 291//210 120//210 +f 292//210 120//210 291//210 +f 279//271 278//271 172//271 +f 292//210 291//210 146//210 +f 291//210 293//210 146//210 +f 293//272 291//272 294//272 +f 294//273 149//273 293//273 +f 295//274 296//274 297//274 +f 298//210 149//210 294//210 +f 294//210 299//210 298//210 +f 299//210 300//210 298//210 +f 157//210 298//210 300//210 +f 300//210 174//210 157//210 +f 163//275 301//275 172//275 +f 163//276 172//276 164//276 +f 157//277 302//277 298//277 +f 172//278 190//278 164//278 +f 164//279 190//279 303//279 +f 302//280 304//280 305//280 +f 306//209 307//209 308//209 +f 309//210 289//210 310//210 +f 149//281 302//281 305//281 +f 252//282 165//282 164//282 +f 252//283 164//283 133//283 +f 305//284 311//284 312//284 +f 149//285 305//285 312//285 +f 313//286 133//286 164//286 +f 314//287 289//287 309//287 +f 150//216 312//216 315//216 +f 315//288 316//288 150//288 +f 150//289 316//289 317//289 +f 317//290 318//290 150//290 +f 318//291 319//291 150//291 +f 320//292 319//292 318//292 +f 309//293 321//293 314//293 +f 134//294 133//294 313//294 +f 313//295 322//295 134//295 +f 322//296 313//296 323//296 +f 324//297 325//297 326//297 +f 326//210 325//210 327//210 +f 328//210 326//210 327//210 +f 327//210 329//210 328//210 +f 330//298 328//298 329//298 +f 331//299 330//299 329//299 +f 332//300 330//300 331//300 +f 332//301 331//301 333//301 +f 334//216 332//216 333//216 +f 333//216 335//216 334//216 +f 321//219 336//219 314//219 +f 321//219 337//219 336//219 +f 327//302 338//302 335//302 +f 335//303 338//303 339//303 +f 340//304 339//304 338//304 +f 338//304 341//304 340//304 +f 342//305 322//305 323//305 +f 341//306 343//306 340//306 +f 344//306 340//306 343//306 +f 345//307 323//307 313//307 +f 313//308 346//308 345//308 +f 347//309 344//309 343//309 +f 348//210 250//210 349//210 +f 117//209 125//209 130//209 +f 260//233 131//233 129//233 +f 343//210 350//210 351//210 +f 313//310 164//310 346//310 +f 351//210 350//210 352//210 +f 164//311 353//311 346//311 +f 352//210 354//210 351//210 +f 354//312 347//312 351//312 +f 270//313 355//313 356//313 +f 353//314 303//314 357//314 +f 358//216 359//216 347//216 +f 360//216 359//216 358//216 +f 354//315 360//315 358//315 +f 253//316 361//316 303//316 +f 362//317 361//317 253//317 +f 212//210 193//210 354//210 +f 363//210 354//210 193//210 +f 193//210 364//210 363//210 +f 365//210 363//210 364//210 +f 364//210 366//210 365//210 +f 337//216 367//216 336//216 +f 366//210 368//210 365//210 +f 362//318 369//318 361//318 +f 370//319 371//319 362//319 +f 372//320 373//320 368//320 +f 374//321 368//321 373//321 +f 373//322 375//322 374//322 +f 376//243 374//243 375//243 +f 377//323 376//323 375//323 +f 375//324 378//324 377//324 +f 369//325 362//325 371//325 +f 357//326 303//326 369//326 +f 379//327 377//327 378//327 +f 380//216 379//216 378//216 +f 380//216 381//216 379//216 +f 379//216 381//216 382//216 +f 383//209 379//209 382//209 +f 383//328 382//328 384//328 +f 385//210 383//210 384//210 +f 386//210 385//210 384//210 +f 369//329 132//329 357//329 +f 387//330 132//330 369//330 +f 384//331 388//331 389//331 +f 390//210 384//210 389//210 +f 260//233 138//233 131//233 +f 390//210 389//210 391//210 +f 162//332 392//332 393//332 +f 391//333 394//333 390//333 +f 394//334 395//334 390//334 +f 381//335 390//335 395//335 +f 381//336 396//336 390//336 +f 386//337 390//337 396//337 +f 386//338 396//338 397//338 +f 387//339 252//339 132//339 +f 397//216 396//216 398//216 +f 397//216 398//216 335//216 +f 335//340 398//340 399//340 +f 327//341 335//341 399//341 +f 331//210 327//210 399//210 +f 331//210 399//210 376//210 +f 399//210 400//210 376//210 +f 204//342 252//342 387//342 +f 365//210 376//210 400//210 +f 365//343 400//343 380//343 +f 401//344 365//344 380//344 +f 375//216 401//216 380//216 +f 371//345 402//345 387//345 +f 402//346 205//346 387//346 +f 373//216 360//216 401//216 +f 360//347 363//347 401//347 +f 290//348 219//348 403//348 +f 337//216 404//216 367//216 +f 400//349 405//349 380//349 +f 402//350 406//350 205//350 +f 400//351 398//351 405//351 +f 381//216 405//216 398//216 +f 407//352 205//352 406//352 +f 399//353 398//353 400//353 +f 406//354 408//354 407//354 +f 141//209 139//209 409//209 +f 397//216 335//216 410//216 +f 410//216 411//216 397//216 +f 397//243 411//243 412//243 +f 412//243 385//243 397//243 +f 413//210 385//210 412//210 +f 412//210 251//210 413//210 +f 251//204 410//204 413//204 +f 410//355 333//355 413//355 +f 410//204 251//204 221//204 +f 122//356 221//356 251//356 +f 251//210 412//210 124//210 +f 124//210 412//210 414//210 +f 124//210 414//210 415//210 +f 416//210 124//210 415//210 +f 417//357 418//357 419//357 +f 418//358 417//358 420//358 +f 421//209 422//209 416//209 +f 422//209 421//209 423//209 +f 242//243 422//243 423//243 +f 423//359 424//359 242//359 +f 242//233 424//233 255//233 +f 425//233 255//233 424//233 +f 424//233 426//233 425//233 +f 425//360 426//360 421//360 +f 425//243 421//243 427//243 +f 428//243 427//243 421//243 +f 429//216 427//216 428//216 +f 430//216 429//216 428//216 +f 428//219 416//219 430//219 +f 431//361 430//361 416//361 +f 431//210 416//210 310//210 +f 310//210 288//210 431//210 +f 288//362 432//362 431//362 +f 140//363 142//363 261//363 +f 420//210 126//210 433//210 +f 434//364 356//364 355//364 +f 432//365 435//365 436//365 +f 436//366 430//366 432//366 +f 430//367 436//367 437//367 +f 438//368 430//368 437//368 +f 297//369 408//369 439//369 +f 440//370 438//370 437//370 +f 441//210 440//210 437//210 +f 436//371 441//371 437//371 +f 436//372 442//372 441//372 +f 408//373 209//373 407//373 +f 408//374 296//374 209//374 +f 443//375 441//375 444//375 +f 443//210 444//210 238//210 +f 255//210 443//210 238//210 +f 238//210 445//210 255//210 +f 445//210 446//210 255//210 +f 446//210 282//210 255//210 +f 255//210 282//210 267//210 +f 142//216 143//216 187//216 +f 267//210 447//210 255//210 +f 447//233 129//233 255//233 +f 447//233 260//233 129//233 +f 447//210 266//210 260//210 +f 296//376 362//376 209//376 +f 260//210 266//210 448//210 +f 260//210 448//210 449//210 +f 449//210 450//210 260//210 +f 370//377 362//377 296//377 +f 450//210 181//210 260//210 +f 260//378 181//378 106//378 +f 263//379 260//379 106//379 +f 106//216 154//216 263//216 +f 154//216 106//216 451//216 +f 406//380 402//380 452//380 +f 154//216 451//216 453//216 +f 154//216 453//216 454//216 +f 455//381 454//381 453//381 +f 456//382 455//382 453//382 +f 370//383 457//383 452//383 +f 370//384 295//384 457//384 +f 451//385 458//385 456//385 +f 458//386 455//386 456//386 +f 459//387 408//387 406//387 +f 460//388 461//388 462//388 +f 463//389 464//389 461//389 +f 465//390 466//390 458//390 +f 467//391 458//391 466//391 +f 467//392 466//392 468//392 +f 469//393 457//393 295//393 +f 462//394 469//394 295//394 +f 470//395 468//395 471//395 +f 470//396 471//396 472//396 +f 473//209 470//209 472//209 +f 463//397 461//397 460//397 +f 474//398 473//398 472//398 +f 472//398 475//398 474//398 +f 476//399 474//399 475//399 +f 475//399 477//399 476//399 +f 476//233 477//233 478//233 +f 478//400 479//400 476//400 +f 479//401 311//401 476//401 +f 295//402 480//402 462//402 +f 480//403 481//403 462//403 +f 312//404 311//404 479//404 +f 482//405 312//405 479//405 +f 482//406 479//406 483//406 +f 484//216 482//216 483//216 +f 484//216 483//216 485//216 +f 486//407 484//407 485//407 +f 485//408 292//408 486//408 +f 486//210 292//210 145//210 +f 145//210 487//210 486//210 +f 487//210 488//210 486//210 +f 480//409 489//409 481//409 +f 490//210 486//210 488//210 +f 326//210 490//210 488//210 +f 326//210 491//210 490//210 +f 315//410 490//410 491//410 +f 315//411 491//411 316//411 +f 492//412 460//412 481//412 +f 493//413 367//413 404//413 +f 484//414 490//414 315//414 +f 326//210 316//210 491//210 +f 494//415 493//415 404//415 +f 481//416 495//416 492//416 +f 496//216 497//216 498//216 +f 499//210 126//210 420//210 +f 324//417 488//417 151//417 +f 324//216 151//216 319//216 +f 500//418 420//418 501//418 +f 496//216 502//216 497//216 +f 151//419 488//419 487//419 +f 487//420 503//420 151//420 +f 487//421 145//421 503//421 +f 145//422 188//422 503//422 +f 504//423 503//423 188//423 +f 449//424 504//424 188//424 +f 449//425 188//425 166//425 +f 185//426 166//426 188//426 +f 185//210 158//210 166//210 +f 504//427 449//427 505//427 +f 505//243 506//243 504//243 +f 506//243 507//243 504//243 +f 508//243 504//243 507//243 +f 509//428 495//428 510//428 +f 507//427 511//427 508//427 +f 511//209 512//209 508//209 +f 513//209 508//209 512//209 +f 513//204 512//204 514//204 +f 513//216 514//216 504//216 +f 515//204 514//204 512//204 +f 515//429 512//429 507//429 +f 516//204 514//204 515//204 +f 515//430 507//430 516//430 +f 517//204 514//204 516//204 +f 516//431 506//431 517//431 +f 518//204 514//204 517//204 +f 517//209 505//209 518//209 +f 199//432 518//432 505//432 +f 199//216 519//216 518//216 +f 258//209 144//209 141//209 +f 145//209 144//209 520//209 +f 492//433 495//433 509//433 +f 146//210 145//210 292//210 +f 143//209 147//209 521//209 +f 522//434 523//434 524//434 +f 525//435 526//435 527//435 +f 528//233 527//233 526//233 +f 529//436 528//436 526//436 +f 530//437 529//437 526//437 +f 530//243 526//243 531//243 +f 532//204 290//204 403//204 +f 533//243 530//243 531//243 +f 534//243 533//243 531//243 +f 531//243 535//243 534//243 +f 536//243 534//243 535//243 +f 356//438 537//438 271//438 +f 535//243 538//243 536//243 +f 539//439 278//439 540//439 +f 538//243 541//243 536//243 +f 541//243 542//243 536//243 +f 170//216 278//216 539//216 +f 542//243 543//243 536//243 +f 544//243 536//243 543//243 +f 177//440 545//440 546//440 +f 543//243 547//243 544//243 +f 544//441 547//441 334//441 +f 334//442 548//442 544//442 +f 549//443 544//443 548//443 +f 550//444 549//444 548//444 +f 551//445 170//445 539//445 +f 137//446 156//446 552//446 +f 156//447 553//447 552//447 +f 554//448 550//448 548//448 +f 554//216 548//216 555//216 +f 554//216 555//216 556//216 +f 554//209 556//209 557//209 +f 558//209 557//209 556//209 +f 559//449 558//449 556//449 +f 557//450 558//450 559//450 +f 557//451 559//451 549//451 +f 549//210 550//210 557//210 +f 551//452 539//452 560//452 +f 161//453 561//453 162//453 +f 562//454 563//454 564//454 +f 565//204 566//204 567//204 +f 552//455 553//455 568//455 +f 555//216 569//216 570//216 +f 569//216 306//216 570//216 +f 570//243 306//243 571//243 +f 571//456 572//456 570//456 +f 552//457 568//457 573//457 +f 572//458 571//458 574//458 +f 574//204 575//204 572//204 +f 576//204 572//204 575//204 +f 575//459 577//459 576//459 +f 578//460 576//460 577//460 +f 578//243 577//243 306//243 +f 579//210 562//210 564//210 +f 580//243 578//243 306//243 +f 306//243 308//243 580//243 +f 581//243 580//243 308//243 +f 582//243 581//243 308//243 +f 308//243 547//243 582//243 +f 543//243 582//243 547//243 +f 543//461 583//461 582//461 +f 584//462 271//462 537//462 +f 148//243 153//243 147//243 +f 585//463 586//463 587//463 +f 588//464 589//464 590//464 +f 582//465 583//465 591//465 +f 582//466 591//466 592//466 +f 582//243 592//243 593//243 +f 594//243 582//243 593//243 +f 595//243 594//243 593//243 +f 593//243 596//243 595//243 +f 596//243 597//243 595//243 +f 598//243 595//243 597//243 +f 597//243 599//243 598//243 +f 600//467 601//467 602//467 +f 573//468 568//468 553//468 +f 603//469 170//469 604//469 +f 605//470 598//470 606//470 +f 170//471 551//471 604//471 +f 607//204 605//204 606//204 +f 607//472 606//472 599//472 +f 604//473 551//473 608//473 +f 600//474 602//474 509//474 +f 609//204 605//204 607//204 +f 607//475 599//475 609//475 +f 610//204 605//204 609//204 +f 610//233 609//233 611//233 +f 610//210 611//210 612//210 +f 612//210 613//210 610//210 +f 613//204 614//204 610//204 +f 615//204 610//204 614//204 +f 614//209 616//209 615//209 +f 615//210 616//210 617//210 +f 615//210 617//210 618//210 +f 618//210 619//210 615//210 +f 619//204 620//204 615//204 +f 620//233 619//233 596//233 +f 618//233 596//233 619//233 +f 618//243 617//243 596//243 +f 616//204 621//204 617//204 +f 608//476 622//476 604//476 +f 146//477 293//477 149//477 +f 150//216 149//216 312//216 +f 249//216 623//216 624//216 +f 319//216 151//216 150//216 +f 617//233 625//233 597//233 +f 626//478 627//478 348//478 +f 624//216 628//216 249//216 +f 152//216 151//216 503//216 +f 597//233 629//233 609//233 +f 609//233 629//233 630//233 +f 631//210 604//210 622//210 +f 630//233 632//233 609//233 +f 633//479 632//479 630//479 +f 632//480 633//480 634//480 +f 622//481 635//481 631//481 +f 636//482 637//482 635//482 +f 638//233 611//233 632//233 +f 638//483 639//483 611//483 +f 638//484 640//484 639//484 +f 640//209 641//209 639//209 +f 641//485 642//485 639//485 +f 643//486 639//486 642//486 +f 644//209 643//209 642//209 +f 635//210 551//210 636//210 +f 645//209 644//209 642//209 +f 642//487 640//487 645//487 +f 551//210 646//210 636//210 +f 640//488 647//488 645//488 +f 647//489 640//489 648//489 +f 647//490 648//490 649//490 +f 649//209 644//209 647//209 +f 650//209 644//209 649//209 +f 651//210 652//210 627//210 +f 154//216 152//216 653//216 +f 155//216 154//216 454//216 +f 654//491 600//491 509//491 +f 646//492 551//492 560//492 +f 155//493 304//493 157//493 +f 153//494 158//494 185//494 +f 655//216 532//216 403//216 +f 157//495 174//495 159//495 +f 159//496 166//496 158//496 +f 174//497 167//497 159//497 +f 553//498 656//498 573//498 +f 168//499 657//499 166//499 +f 658//216 168//216 169//216 +f 659//500 587//500 586//500 +f 169//501 173//501 176//501 +f 586//502 523//502 659//502 +f 300//503 175//503 174//503 +f 660//209 661//209 662//209 +f 499//210 500//210 663//210 +f 664//216 628//216 665//216 +f 666//209 667//209 668//209 +f 176//216 180//216 184//216 +f 573//504 656//504 669//504 +f 182//243 175//243 183//243 +f 670//209 662//209 661//209 +f 655//505 403//505 671//505 +f 185//243 147//243 153//243 +f 672//506 670//506 673//506 +f 672//209 673//209 674//209 +f 169//233 176//233 184//233 +f 672//209 674//209 675//209 +f 184//233 658//233 169//233 +f 184//233 186//233 658//233 +f 676//233 677//233 678//233 +f 187//243 143//243 521//243 +f 573//210 669//210 679//210 +f 521//243 186//243 187//243 +f 680//507 681//507 682//507 +f 654//508 509//508 280//508 +f 654//509 280//509 683//509 +f 684//510 685//510 665//510 +f 540//511 686//511 539//511 +f 687//512 688//512 689//512 +f 688//513 690//513 689//513 +f 691//209 689//209 690//209 +f 540//514 510//514 686//514 +f 510//216 495//216 686//216 +f 692//233 688//233 693//233 +f 694//216 686//216 495//216 +f 695//233 692//233 693//233 +f 696//515 695//515 693//515 +f 655//516 671//516 697//516 +f 696//510 693//510 698//510 +f 699//233 696//233 698//233 +f 700//233 699//233 698//233 +f 700//517 698//517 662//517 +f 701//517 700//517 662//517 +f 702//518 701//518 662//518 +f 703//519 702//519 662//519 +f 662//519 704//519 703//519 +f 705//520 703//520 704//520 +f 704//520 706//520 705//520 +f 707//521 705//521 706//521 +f 683//522 600//522 654//522 +f 708//521 705//521 707//521 +f 709//216 694//216 495//216 +f 683//216 710//216 600//216 +f 708//523 707//523 711//523 +f 711//523 712//523 708//523 +f 705//233 708//233 712//233 +f 705//233 712//233 713//233 +f 714//524 713//524 712//524 +f 495//525 489//525 709//525 +f 714//526 715//526 713//526 +f 713//233 715//233 716//233 +f 713//233 716//233 717//233 +f 713//233 717//233 718//233 +f 718//233 702//233 713//233 +f 702//233 718//233 719//233 +f 702//233 719//233 701//233 +f 701//527 719//527 720//527 +f 720//527 721//527 701//527 +f 722//528 709//528 489//528 +f 723//529 724//529 725//529 +f 724//530 722//530 725//530 +f 726//233 721//233 727//233 +f 710//216 565//216 600//216 +f 728//233 726//233 727//233 +f 727//233 729//233 728//233 +f 730//233 728//233 729//233 +f 729//233 731//233 730//233 +f 732//531 724//531 733//531 +f 734//233 730//233 731//233 +f 731//233 735//233 734//233 +f 735//233 736//233 734//233 +f 737//233 734//233 736//233 +f 738//233 737//233 736//233 +f 739//233 738//233 736//233 +f 740//233 189//233 188//233 +f 189//233 197//233 187//233 +f 741//216 676//216 742//216 +f 743//204 196//204 189//204 +f 684//532 741//532 744//532 +f 739//233 745//233 738//233 +f 746//233 738//233 745//233 +f 747//233 746//233 745//233 +f 747//210 745//210 748//210 +f 748//210 749//210 747//210 +f 749//204 750//204 747//204 +f 751//204 747//204 750//204 +f 750//210 752//210 751//210 +f 752//210 734//210 751//210 +f 753//210 751//210 734//210 +f 753//243 734//243 754//243 +f 753//233 754//233 751//233 +f 755//233 751//233 754//233 +f 755//210 754//210 756//210 +f 756//210 757//210 755//210 +f 757//204 746//204 755//204 +f 746//204 757//204 758//204 +f 746//204 758//204 759//204 +f 722//533 724//533 732//533 +f 746//204 759//204 760//204 +f 746//204 760//204 761//204 +f 762//534 761//534 760//534 +f 709//535 722//535 732//535 +f 763//536 709//536 732//536 +f 764//243 762//243 765//243 +f 766//537 767//537 768//537 +f 764//243 765//243 769//243 +f 764//243 769//243 756//243 +f 756//243 770//243 764//243 +f 770//538 546//538 764//538 +f 771//539 764//539 546//539 +f 546//540 545//540 771//540 +f 111//541 113//541 772//541 +f 767//542 766//542 732//542 +f 545//216 773//216 774//216 +f 775//543 774//543 773//543 +f 773//544 776//544 775//544 +f 600//216 565//216 601//216 +f 776//545 777//545 775//545 +f 586//546 778//546 523//546 +f 779//547 775//547 777//547 +f 492//548 602//548 601//548 +f 492//549 601//549 463//549 +f 780//550 775//550 779//550 +f 778//551 781//551 523//551 +f 767//210 724//210 782//210 +f 774//552 775//552 783//552 +f 784//553 774//553 783//553 +f 725//210 785//210 782//210 +f 768//554 785//554 786//554 +f 782//555 785//555 768//555 +f 768//210 787//210 788//210 +f 565//216 567//216 601//216 +f 789//556 784//556 783//556 +f 789//557 783//557 780//557 +f 790//558 768//558 788//558 +f 788//559 791//559 790//559 +f 789//560 792//560 793//560 +f 793//561 792//561 794//561 +f 794//562 795//562 793//562 +f 793//563 795//563 796//563 +f 793//564 796//564 797//564 +f 797//565 796//565 798//565 +f 463//566 601//566 567//566 +f 567//567 464//567 463//567 +f 788//568 799//568 791//568 +f 781//569 800//569 523//569 +f 801//570 774//570 798//570 +f 798//571 774//571 802//571 +f 567//572 803//572 464//572 +f 464//573 803//573 804//573 +f 784//574 797//574 802//574 +f 805//575 523//575 800//575 +f 806//210 807//210 808//210 +f 461//576 464//576 804//576 +f 469//577 462//577 461//577 +f 801//578 809//578 810//578 +f 809//579 811//579 810//579 +f 812//580 805//580 800//580 +f 813//581 810//581 811//581 +f 813//582 811//582 814//582 +f 815//210 816//210 817//210 +f 818//210 819//210 816//210 +f 820//583 821//583 814//583 +f 821//584 820//584 822//584 +f 589//585 588//585 502//585 +f 502//216 823//216 589//216 +f 824//586 825//586 819//586 +f 821//587 826//587 827//587 +f 156//216 827//216 826//216 +f 156//588 826//588 828//588 +f 829//233 830//233 741//233 +f 831//589 832//589 833//589 +f 834//590 825//590 824//590 +f 417//591 835//591 420//591 +f 679//592 828//592 836//592 +f 837//593 679//593 836//593 +f 837//210 836//210 838//210 +f 838//210 839//210 837//210 +f 196//233 519//233 199//233 +f 840//210 837//210 839//210 +f 834//594 824//594 841//594 +f 839//210 842//210 840//210 +f 840//595 842//595 843//595 +f 590//596 589//596 844//596 +f 589//216 823//216 844//216 +f 845//597 846//597 840//597 +f 847//598 840//598 846//598 +f 818//210 824//210 819//210 +f 847//599 846//599 848//599 +f 847//600 848//600 849//600 +f 849//601 850//601 847//601 +f 847//602 850//602 851//602 +f 199//233 852//233 222//233 +f 239//233 655//233 697//233 +f 844//216 823//216 394//216 +f 853//603 837//603 847//603 +f 818//604 841//604 824//604 +f 854//605 841//605 818//605 +f 853//606 855//606 552//606 +f 552//607 855//607 847//607 +f 135//608 552//608 847//608 +f 854//210 856//210 857//210 +f 835//609 501//609 420//609 +f 858//216 135//216 859//216 +f 860//610 857//610 861//610 +f 862//216 858//216 859//216 +f 862//611 859//611 863//611 +f 863//611 864//611 862//611 +f 865//612 862//612 864//612 +f 864//612 866//612 865//612 +f 866//613 867//613 865//613 +f 868//613 865//613 867//613 +f 867//614 869//614 868//614 +f 869//216 870//216 868//216 +f 870//615 810//615 868//615 +f 870//616 774//616 810//616 +f 870//617 771//617 774//617 +f 461//618 871//618 469//618 +f 872//619 208//619 873//619 +f 870//620 874//620 764//620 +f 764//621 874//621 875//621 +f 876//622 812//622 800//622 +f 875//623 877//623 764//623 +f 501//624 878//624 500//624 +f 877//625 879//625 764//625 +f 879//626 880//626 764//626 +f 881//627 764//627 880//627 +f 881//628 880//628 773//628 +f 773//628 882//628 881//628 +f 883//629 881//629 882//629 +f 882//629 884//629 883//629 +f 883//233 884//233 885//233 +f 885//630 764//630 883//630 +f 764//243 885//243 886//243 +f 885//243 887//243 886//243 +f 887//243 888//243 886//243 +f 889//631 860//631 890//631 +f 886//243 888//243 891//243 +f 891//243 892//243 886//243 +f 893//243 886//243 892//243 +f 663//632 500//632 878//632 +f 681//633 894//633 682//633 +f 895//634 893//634 896//634 +f 192//635 897//635 366//635 +f 895//204 896//204 898//204 +f 895//204 898//204 761//204 +f 546//204 761//204 898//204 +f 878//233 899//233 663//233 +f 898//636 873//636 546//636 +f 564//210 900//210 579//210 +f 873//210 208//210 546//210 +f 876//637 800//637 781//637 +f 177//210 546//210 208//210 +f 108//233 110//233 901//233 +f 681//638 902//638 894//638 +f 545//639 177//639 179//639 +f 222//640 903//640 223//640 +f 225//641 223//641 904//641 +f 179//216 872//216 545//216 +f 905//642 781//642 778//642 +f 853//210 573//210 679//210 +f 906//643 890//643 860//643 +f 861//644 906//644 860//644 +f 224//233 226//233 233//233 +f 225//645 904//645 227//645 +f 872//216 907//216 908//216 +f 408//646 459//646 439//646 +f 908//216 907//216 909//216 +f 890//210 906//210 861//210 +f 910//647 861//647 857//647 +f 227//648 904//648 228//648 +f 656//649 911//649 679//649 +f 909//650 912//650 195//650 +f 229//233 228//233 913//233 +f 195//651 912//651 914//651 +f 915//216 195//216 914//216 +f 914//216 916//216 915//216 +f 915//652 916//652 917//652 +f 918//653 900//653 919//653 +f 910//210 920//210 921//210 +f 922//216 915//216 722//216 +f 922//216 722//216 439//216 +f 922//654 439//654 871//654 +f 922//655 871//655 804//655 +f 804//216 923//216 922//216 +f 922//656 923//656 924//656 +f 230//216 229//216 925//216 +f 230//209 235//209 231//209 +f 924//657 926//657 927//657 +f 928//658 924//658 927//658 +f 929//210 232//210 231//210 +f 232//233 929//233 234//233 +f 928//216 195//216 922//216 +f 928//216 927//216 195//216 +f 235//209 930//209 931//209 +f 932//233 234//233 929//233 +f 927//216 897//216 192//216 +f 195//216 927//216 192//216 +f 933//210 934//210 932//210 +f 235//209 931//209 231//209 +f 935//659 625//659 936//659 +f 231//210 931//210 929//210 +f 902//660 937//660 894//660 +f 195//216 908//216 909//216 +f 195//216 191//216 908//216 +f 191//661 212//661 908//661 +f 908//662 212//662 207//662 +f 457//663 439//663 459//663 +f 208//664 908//664 207//664 +f 931//204 938//204 929//204 +f 929//233 938//233 932//233 +f 939//665 935//665 940//665 +f 932//210 938//210 933//210 +f 938//204 931//204 933//204 +f 207//210 178//210 177//210 +f 207//210 215//210 178//210 +f 215//210 214//210 178//210 +f 178//210 214//210 250//210 +f 250//210 348//210 178//210 +f 623//666 178//666 348//666 +f 624//667 623//667 348//667 +f 348//667 627//667 624//667 +f 628//668 624//668 627//668 +f 627//668 652//668 628//668 +f 652//669 651//669 628//669 +f 651//670 941//670 628//670 +f 665//216 628//216 941//216 +f 665//216 941//216 677//216 +f 677//233 676//233 665//233 +f 684//233 665//233 676//233 +f 676//216 741//216 684//216 +f 457//671 871//671 439//671 +f 469//672 871//672 457//672 +f 931//209 934//209 933//209 +f 934//209 931//209 930//209 +f 935//233 741//233 830//233 +f 932//243 934//243 930//243 +f 942//673 943//673 944//673 +f 930//243 234//243 932//243 +f 937//674 945//674 894//674 +f 946//675 894//675 945//675 +f 930//676 235//676 234//676 +f 496//677 236//677 235//677 +f 935//678 947//678 625//678 +f 947//233 597//233 625//233 +f 948//679 237//679 236//679 +f 949//680 238//680 237//680 +f 950//210 920//210 910//210 +f 947//681 935//681 939//681 +f 947//233 939//233 629//233 +f 629//682 939//682 940//682 +f 940//683 951//683 629//683 +f 830//233 951//233 940//233 +f 830//233 940//233 935//233 +f 951//233 830//233 943//233 +f 943//233 633//233 951//233 +f 630//684 951//684 633//684 +f 943//233 942//233 633//233 +f 942//233 952//233 633//233 +f 952//233 953//233 633//233 +f 953//685 952//685 954//685 +f 954//685 955//685 953//685 +f 953//597 955//597 956//597 +f 956//233 957//233 953//233 +f 957//233 958//233 953//233 +f 958//233 634//233 953//233 +f 564//210 919//210 900//210 +f 958//686 959//686 634//686 +f 634//687 959//687 632//687 +f 960//688 920//688 961//688 +f 960//210 921//210 920//210 +f 959//233 962//233 638//233 +f 960//689 963//689 964//689 +f 965//690 844//690 394//690 +f 964//210 921//210 960//210 +f 590//691 844//691 965//691 +f 966//692 638//692 967//692 +f 968//233 966//233 967//233 +f 964//693 969//693 970//693 +f 952//694 942//694 971//694 +f 238//210 972//210 239//210 +f 697//233 240//233 239//233 +f 970//210 921//210 964//210 +f 971//694 954//694 952//694 +f 650//695 968//695 956//695 +f 973//696 241//696 240//696 +f 241//216 422//216 242//216 +f 968//210 967//210 956//210 +f 956//697 967//697 638//697 +f 954//209 974//209 955//209 +f 969//210 975//210 976//210 +f 242//233 255//233 128//233 +f 644//698 956//698 955//698 +f 945//699 977//699 946//699 +f 978//700 977//700 945//700 +f 406//701 457//701 459//701 +f 957//702 956//702 962//702 +f 979//703 247//703 128//703 +f 959//704 958//704 957//704 +f 978//705 945//705 980//705 +f 968//706 981//706 982//706 +f 962//707 959//707 957//707 +f 983//708 248//708 247//708 +f 984//709 968//709 982//709 +f 985//710 986//710 976//710 +f 982//711 987//711 984//711 +f 987//712 988//712 984//712 +f 984//233 988//233 640//233 +f 987//713 989//713 988//713 +f 990//714 988//714 989//714 +f 989//209 991//209 990//209 +f 991//216 621//216 990//216 +f 991//216 992//216 621//216 +f 621//243 992//243 993//243 +f 621//243 993//243 987//243 +f 993//243 994//243 987//243 +f 995//243 987//243 994//243 +f 995//243 994//243 996//243 +f 996//243 997//243 995//243 +f 998//210 986//210 999//210 +f 986//715 1000//715 1001//715 +f 945//716 937//716 980//716 +f 1002//717 985//717 976//717 +f 1003//718 901//718 1004//718 +f 256//719 254//719 1005//719 +f 422//209 257//209 256//209 +f 638//720 962//720 956//720 +f 997//243 1006//243 995//243 +f 1006//721 1007//721 995//721 +f 1008//210 985//210 1002//210 +f 640//233 966//233 984//233 +f 419//722 1009//722 417//722 +f 968//233 984//233 966//233 +f 1007//204 1010//204 1011//204 +f 1007//204 1011//204 1012//204 +f 926//210 924//210 1013//210 +f 1014//723 1008//723 1015//723 +f 1016//210 1017//210 1014//210 +f 996//724 1018//724 1011//724 +f 1018//725 1019//725 1011//725 +f 1019//726 1018//726 1020//726 +f 1020//204 1012//204 1019//204 +f 1014//210 1021//210 1016//210 +f 1016//727 1021//727 1022//727 +f 1023//210 1024//210 1022//210 +f 591//204 1012//204 1020//204 +f 1018//728 592//728 1020//728 +f 592//243 1018//243 593//243 +f 994//243 593//243 1018//243 +f 994//209 1012//209 593//209 +f 1025//209 593//209 1012//209 +f 1012//204 1026//204 1025//204 +f 1025//204 1026//204 620//204 +f 620//204 1026//204 610//204 +f 1026//204 1012//204 583//204 +f 583//204 1027//204 1026//204 +f 1028//204 1026//204 1027//204 +f 1017//210 1016//210 1029//210 +f 1028//204 1027//204 1030//204 +f 1031//729 1023//729 1032//729 +f 1030//204 1033//204 1028//204 +f 1034//210 1035//210 391//210 +f 965//210 391//210 1035//210 +f 1028//730 1036//730 1037//730 +f 1038//731 1039//731 1040//731 +f 259//233 1041//233 260//233 +f 1037//216 1042//216 1043//216 +f 1042//216 1044//216 1043//216 +f 1045//216 1043//216 1044//216 +f 1044//233 1046//233 1045//233 +f 1047//233 1045//233 1046//233 +f 1047//210 1046//210 1048//210 +f 1047//243 1048//243 1043//243 +f 1043//233 1048//233 1026//233 +f 1043//233 1026//233 1049//233 +f 1049//732 1050//732 1043//732 +f 1049//733 1051//733 1050//733 +f 1051//734 1026//734 1050//734 +f 1050//735 1026//735 1037//735 +f 1049//736 1026//736 1051//736 +f 1026//210 1048//210 1052//210 +f 1026//210 1052//210 605//210 +f 1053//210 605//210 1052//210 +f 1052//210 1054//210 1053//210 +f 1055//737 1053//737 1054//737 +f 1056//738 1055//738 1054//738 +f 1039//739 1038//739 1057//739 +f 1054//740 1058//740 1056//740 +f 1023//741 1059//741 1032//741 +f 1060//742 1056//742 1058//742 +f 1061//743 1060//743 1058//743 +f 1061//744 1058//744 1062//744 +f 1059//233 1063//233 1039//233 +f 1062//745 1064//745 1061//745 +f 1063//746 1065//746 1066//746 +f 1067//747 1061//747 1064//747 +f 1068//748 1067//748 1064//748 +f 1069//749 1070//749 1066//749 +f 1068//210 1064//210 1052//210 +f 523//750 805//750 524//750 +f 1052//210 1071//210 1068//210 +f 1072//210 1068//210 1071//210 +f 1073//210 1072//210 1071//210 +f 1071//210 803//210 1073//210 +f 873//751 898//751 1074//751 +f 1075//752 1073//752 803//752 +f 803//210 566//210 1075//210 +f 1076//210 1075//210 566//210 +f 566//210 1077//210 1076//210 +f 1077//210 1078//210 1076//210 +f 1078//753 710//753 1076//753 +f 1076//754 710//754 1079//754 +f 1076//755 1079//755 1080//755 +f 1081//756 1080//756 1079//756 +f 683//216 1081//216 1079//216 +f 1082//757 1083//757 1070//757 +f 1084//758 1083//758 1082//758 +f 279//759 301//759 683//759 +f 1085//210 1001//210 1000//210 +f 205//760 204//760 387//760 +f 371//761 370//761 402//761 +f 914//762 301//762 163//762 +f 914//216 163//216 1086//216 +f 163//763 190//763 1086//763 +f 190//764 1087//764 1086//764 +f 1001//765 999//765 986//765 +f 916//766 1086//766 1087//766 +f 916//767 1087//767 171//767 +f 916//216 171//216 603//216 +f 916//768 603//768 631//768 +f 631//769 1088//769 916//769 +f 1088//770 917//770 916//770 +f 590//210 965//210 1035//210 +f 917//210 1088//210 1089//210 +f 917//210 1089//210 631//210 +f 631//771 786//771 917//771 +f 1090//772 999//772 1091//772 +f 999//773 1090//773 1092//773 +f 1093//210 786//210 635//210 +f 1093//210 635//210 1094//210 +f 1094//774 1095//774 1093//774 +f 1096//775 1093//775 1095//775 +f 1097//776 1096//776 1095//776 +f 1098//777 1097//777 1095//777 +f 1099//778 1098//778 1095//778 +f 999//210 1092//210 1100//210 +f 387//779 369//779 371//779 +f 1101//780 1102//780 1100//780 +f 1103//781 1104//781 1099//781 +f 1103//782 1099//782 1105//782 +f 1106//783 1102//783 1101//783 +f 1103//784 1105//784 1107//784 +f 1104//785 1103//785 1107//785 +f 1108//233 1106//233 1109//233 +f 1107//786 1110//786 1104//786 +f 1110//787 1111//787 1104//787 +f 1112//204 1102//204 1113//204 +f 239//233 1114//233 655//233 +f 1104//788 1111//788 1098//788 +f 1111//789 1097//789 1098//789 +f 588//210 590//210 1035//210 +f 1111//790 1115//790 1097//790 +f 1116//204 1108//204 1117//204 +f 203//791 252//791 204//791 +f 133//792 132//792 252//792 +f 357//793 132//793 322//793 +f 310//210 588//210 1035//210 +f 1118//794 1119//794 1113//794 +f 111//210 772//210 1120//210 +f 369//795 303//795 361//795 +f 1115//796 1121//796 1122//796 +f 1123//797 1116//797 1124//797 +f 1125//798 1115//798 1122//798 +f 1126//799 1127//799 1117//799 +f 1117//800 1128//800 1129//800 +f 1125//801 1130//801 1131//801 +f 253//802 303//802 190//802 +f 164//803 303//803 353//803 +f 1131//804 1132//804 1133//804 +f 1132//805 1134//805 1133//805 +f 1134//806 1135//806 1133//806 +f 1135//807 1136//807 1133//807 +f 1133//808 1136//808 1125//808 +f 1129//809 1137//809 1138//809 +f 346//810 353//810 345//810 +f 1136//811 1135//811 1139//811 +f 564//812 563//812 1140//812 +f 1126//204 1141//204 1127//204 +f 1109//204 1141//204 1126//204 +f 1142//813 1136//813 1139//813 +f 1143//210 1142//210 1139//210 +f 1143//210 1139//210 1144//210 +f 1145//210 1143//210 1144//210 +f 1144//210 1146//210 1145//210 +f 1147//210 1145//210 1146//210 +f 1148//814 1149//814 1138//814 +f 1146//815 1150//815 1147//815 +f 1151//816 1147//816 1150//816 +f 1152//210 1151//210 1150//210 +f 1150//210 1153//210 1152//210 +f 1154//817 1152//817 1153//817 +f 1153//818 1155//818 1154//818 +f 1156//216 1154//216 1155//216 +f 1109//819 1106//819 1157//819 +f 1158//820 1159//820 1157//820 +f 502//821 588//821 310//821 +f 656//822 1160//822 911//822 +f 1161//210 1162//210 1163//210 +f 1164//823 1161//823 1163//823 +f 1163//824 1144//824 1164//824 +f 1165//216 1166//216 1167//216 +f 585//825 1168//825 905//825 +f 666//826 1161//826 1164//826 +f 666//210 1164//210 1134//210 +f 1134//210 1169//210 666//210 +f 666//210 1169//210 1170//210 +f 666//210 1170//210 766//210 +f 1171//216 1172//216 1173//216 +f 790//827 666//827 766//827 +f 323//828 345//828 1174//828 +f 1175//216 1176//216 1177//216 +f 790//829 1178//829 1179//829 +f 1179//830 1180//830 790//830 +f 1179//831 1181//831 1180//831 +f 1180//210 1181//210 1009//210 +f 1009//832 419//832 1180//832 +f 419//833 1182//833 1180//833 +f 1180//233 1182//233 108//233 +f 108//834 667//834 1180//834 +f 667//780 666//780 1180//780 +f 310//835 1183//835 502//835 +f 497//836 502//836 1183//836 +f 667//837 108//837 901//837 +f 1184//838 667//838 901//838 +f 901//839 1003//839 1184//839 +f 1184//840 1003//840 1185//840 +f 1185//841 1186//841 1184//841 +f 1186//842 1187//842 1184//842 +f 1188//843 1177//843 1189//843 +f 1187//844 1190//844 1184//844 +f 667//845 1184//845 1190//845 +f 668//210 667//210 1190//210 +f 668//210 1190//210 1161//210 +f 1162//210 1161//210 1190//210 +f 1187//846 1191//846 1190//846 +f 1190//847 1191//847 1192//847 +f 1190//848 1192//848 1156//848 +f 1192//204 1191//204 1193//204 +f 1192//204 1193//204 109//204 +f 1192//216 109//216 1194//216 +f 1192//849 1194//849 1195//849 +f 1196//850 1192//850 1195//850 +f 1197//851 1198//851 1199//851 +f 1183//852 415//852 497//852 +f 498//852 497//852 415//852 +f 928//853 922//853 924//853 +f 260//204 263//204 262//204 +f 1200//854 924//854 923//854 +f 268//216 213//216 264//216 +f 1194//216 109//216 1196//216 +f 1201//855 1202//855 1203//855 +f 937//856 1204//856 980//856 +f 263//216 154//216 265//216 +f 1174//857 342//857 323//857 +f 1205//858 1206//858 1207//858 +f 1208//859 1209//859 1210//859 +f 108//860 1182//860 126//860 +f 433//210 126//210 1182//210 +f 433//210 1182//210 419//210 +f 433//210 419//210 418//210 +f 1211//861 1212//861 1197//861 +f 433//210 418//210 420//210 +f 1173//216 1213//216 1171//216 +f 268//862 1214//862 274//862 +f 1212//863 1211//863 1215//863 +f 499//210 420//210 500//210 +f 1216//864 1217//864 1218//864 +f 1216//216 1219//216 1220//216 +f 1204//865 579//865 980//865 +f 276//216 274//216 1221//216 +f 1222//866 277//866 276//866 +f 804//216 1042//216 923//216 +f 905//867 778//867 585//867 +f 499//210 890//210 126//210 +f 890//210 921//210 126//210 +f 1223//210 126//210 921//210 +f 579//868 1224//868 980//868 +f 282//210 277//210 1214//210 +f 461//869 804//869 871//869 +f 498//870 415//870 429//870 +f 1223//210 921//210 1225//210 +f 1226//871 1227//871 322//871 +f 1219//872 1228//872 1229//872 +f 1225//210 921//210 1230//210 +f 1231//873 1211//873 1228//873 +f 1232//874 1225//874 1233//874 +f 998//210 1232//210 1233//210 +f 496//216 498//216 429//216 +f 429//216 404//216 496//216 +f 998//875 1234//875 1235//875 +f 1235//876 1236//876 998//876 +f 1235//877 1237//877 1236//877 +f 585//878 778//878 586//878 +f 1231//879 1215//879 1211//879 +f 1236//210 1238//210 1232//210 +f 1232//880 1238//880 1239//880 +f 587//881 1168//881 585//881 +f 1228//882 1240//882 1241//882 +f 1237//883 1239//883 1238//883 +f 1223//210 1239//210 1237//210 +f 1236//884 1237//884 1238//884 +f 1223//210 1237//210 1235//210 +f 1242//885 285//885 284//885 +f 982//233 981//233 1243//233 +f 1244//886 1240//886 1245//886 +f 286//887 285//887 1246//887 +f 1223//210 1112//210 126//210 +f 1247//886 1244//886 1245//886 +f 1224//888 1248//888 980//888 +f 1224//889 900//889 1248//889 +f 1249//209 1250//209 1251//209 +f 1112//204 1252//204 1253//204 +f 1254//890 220//890 287//890 +f 1112//204 1253//204 1255//204 +f 1112//204 1255//204 109//204 +f 1254//891 291//891 220//891 +f 1255//204 1141//204 109//204 +f 120//892 292//892 1256//892 +f 1257//893 1258//893 1251//893 +f 1141//216 1259//216 1260//216 +f 1241//216 1240//216 1244//216 +f 1261//894 1262//894 1226//894 +f 1229//895 1258//895 1263//895 +f 617//233 987//233 1264//233 +f 1260//216 1196//216 109//216 +f 1229//896 1228//896 1241//896 +f 900//897 1265//897 1248//897 +f 298//898 302//898 149//898 +f 1266//899 299//899 294//899 +f 299//900 175//900 300//900 +f 157//901 304//901 302//901 +f 1264//233 987//233 982//233 +f 995//243 989//243 987//243 +f 1267//216 1263//216 1268//216 +f 305//902 304//902 1269//902 +f 616//903 988//903 990//903 +f 1265//904 1270//904 1248//904 +f 1271//905 1268//905 1272//905 +f 1273//906 1270//906 1265//906 +f 1274//216 1275//216 1276//216 +f 1273//907 1277//907 1270//907 +f 311//908 305//908 474//908 +f 429//216 494//216 404//216 +f 991//909 989//909 1007//909 +f 315//216 312//216 482//216 +f 992//216 991//216 1278//216 +f 1174//910 1279//910 342//910 +f 1280//911 1281//911 1282//911 +f 1274//216 1283//216 1284//216 +f 1284//912 1283//912 1285//912 +f 1286//913 1287//913 1271//913 +f 1288//914 1286//914 1289//914 +f 1290//915 1284//915 1285//915 +f 429//216 1291//216 494//216 +f 1160//916 669//916 911//916 +f 1186//917 1292//917 1187//917 +f 326//210 317//210 316//210 +f 1174//918 1293//918 1279//918 +f 326//210 318//210 317//210 +f 324//216 319//216 320//216 +f 1191//919 1187//919 1294//919 +f 320//920 318//920 328//920 +f 324//216 320//216 330//216 +f 1295//216 1286//216 1271//216 +f 993//233 992//233 1296//233 +f 488//921 324//921 326//921 +f 669//216 1297//216 911//216 +f 1296//216 994//216 993//216 +f 325//922 324//922 334//922 +f 1295//216 1271//216 1272//216 +f 918//923 1298//923 1273//923 +f 326//210 328//210 318//210 +f 1135//210 1134//210 1164//210 +f 327//210 331//210 329//210 +f 918//924 919//924 1298//924 +f 919//925 1299//925 1298//925 +f 489//926 439//926 722//926 +f 320//927 328//927 330//927 +f 330//216 334//216 324//216 +f 915//928 725//928 722//928 +f 1300//216 911//216 1297//216 +f 1301//929 1302//929 1303//929 +f 1304//930 1305//930 1306//930 +f 761//204 546//204 1307//204 +f 1230//931 1233//931 1225//931 +f 679//216 1300//216 1297//216 +f 1192//216 1303//216 1154//216 +f 1196//216 1303//216 1192//216 +f 1308//932 1280//932 1309//932 +f 334//216 330//216 332//216 +f 331//933 413//933 333//933 +f 679//934 1297//934 1310//934 +f 1152//935 1303//935 1302//935 +f 335//216 333//216 410//216 +f 339//216 334//216 335//216 +f 1298//936 1140//936 1311//936 +f 1312//216 1313//216 1295//216 +f 338//210 327//210 325//210 +f 1314//210 1315//210 1316//210 +f 1315//937 1143//937 1316//937 +f 1300//938 679//938 1310//938 +f 1315//939 1317//939 1143//939 +f 1318//940 1143//940 1317//940 +f 1318//941 1317//941 1096//941 +f 1096//942 1097//942 1318//942 +f 1097//943 1319//943 1318//943 +f 1317//944 1320//944 1096//944 +f 1321//945 1096//945 1320//945 +f 1320//946 1322//946 1321//946 +f 1299//947 564//947 1140//947 +f 1323//216 1276//216 1313//216 +f 1324//948 1321//948 1322//948 +f 1325//949 1324//949 1322//949 +f 1326//950 909//950 907//950 +f 340//216 334//216 339//216 +f 547//210 341//210 338//210 +f 1325//210 1322//210 1327//210 +f 1313//216 1328//216 1329//216 +f 547//210 343//210 341//210 +f 1330//216 340//216 344//216 +f 1331//216 1329//216 1332//216 +f 1140//951 1333//951 1311//951 +f 1331//952 1334//952 1323//952 +f 911//953 1300//953 1310//953 +f 343//954 351//954 347//954 +f 911//955 1310//955 156//955 +f 343//210 1335//210 350//210 +f 1336//216 1337//216 1338//216 +f 1223//210 1225//210 1239//210 +f 1339//956 352//956 350//956 +f 1161//204 666//204 668//204 +f 1297//957 669//957 1310//957 +f 1340//216 1274//216 1323//216 +f 1325//958 1341//958 1324//958 +f 1093//959 1324//959 1341//959 +f 787//960 1093//960 1341//960 +f 1280//961 1342//961 1343//961 +f 1341//962 1344//962 787//962 +f 1345//963 787//963 1344//963 +f 1344//964 1346//964 1345//964 +f 1347//965 1345//965 1346//965 +f 1347//966 1346//966 1348//966 +f 1347//967 1348//967 1349//967 +f 1350//968 1349//968 1348//968 +f 1351//969 1350//969 1348//969 +f 1348//970 1352//970 1351//970 +f 1348//971 1353//971 1352//971 +f 1114//972 1354//972 655//972 +f 1355//973 1356//973 1343//973 +f 1357//974 1352//974 1358//974 +f 1358//975 1345//975 1357//975 +f 1350//976 1357//976 1345//976 +f 1359//977 1360//977 438//977 +f 1358//210 1361//210 1345//210 +f 1361//210 788//210 1345//210 +f 1334//978 1340//978 1323//978 +f 1332//510 1334//510 1331//510 +f 1340//979 1334//979 1332//979 +f 1329//216 1340//216 1332//216 +f 791//980 1178//980 790//980 +f 1178//981 791//981 799//981 +f 1274//216 1340//216 1329//216 +f 799//982 1362//982 1178//982 +f 1139//210 1135//210 1164//210 +f 799//983 806//983 1362//983 +f 1362//984 806//984 1179//984 +f 1274//243 1329//243 1363//243 +f 1364//243 1365//243 1363//243 +f 806//985 808//985 1179//985 +f 1274//243 1365//243 1366//243 +f 553//986 1310//986 669//986 +f 808//987 817//987 816//987 +f 816//988 1181//988 808//988 +f 1181//989 816//989 819//989 +f 819//990 825//990 1181//990 +f 1168//991 537//991 1367//991 +f 669//992 1160//992 553//992 +f 679//993 669//993 656//993 +f 417//210 1009//210 825//210 +f 825//210 834//210 417//210 +f 835//210 417//210 834//210 +f 834//210 841//210 835//210 +f 835//210 841//210 854//210 +f 835//210 854//210 857//210 +f 1368//210 1369//210 1370//210 +f 501//210 835//210 857//210 +f 857//210 860//210 501//210 +f 1371//994 1372//994 1373//994 +f 878//210 501//210 860//210 +f 860//210 889//210 878//210 +f 899//210 878//210 889//210 +f 563//995 1374//995 1333//995 +f 1374//996 1375//996 1333//996 +f 1355//997 1376//997 1377//997 +f 889//998 663//998 899//998 +f 890//999 663//999 889//999 +f 1378//972 655//972 1354//972 +f 438//1000 1360//1000 1379//1000 +f 499//210 663//210 890//210 +f 1333//1001 1375//1001 1380//1001 +f 1354//209 532//209 1378//209 +f 354//210 352//210 212//210 +f 347//233 354//233 358//233 +f 1330//216 347//216 359//216 +f 914//216 1086//216 916//216 +f 890//210 861//210 921//210 +f 1380//1002 1311//1002 1333//1002 +f 360//216 1339//216 359//216 +f 861//210 910//210 921//210 +f 363//1003 360//1003 354//1003 +f 915//216 922//216 195//216 +f 193//1004 212//1004 191//1004 +f 364//1005 193//1005 192//1005 +f 401//1006 363//1006 365//1006 +f 366//1007 364//1007 192//1007 +f 912//1008 605//1008 914//1008 +f 1379//1009 1381//1009 438//1009 +f 366//210 1382//210 368//210 +f 365//210 368//210 374//210 +f 1383//210 1369//210 1368//210 +f 360//216 373//216 372//216 +f 375//216 373//216 401//216 +f 365//210 374//210 376//210 +f 376//210 377//210 331//210 +f 380//216 378//216 375//216 +f 1375//1010 1061//1010 1380//1010 +f 1230//210 921//210 970//210 +f 970//1011 1233//1011 1230//1011 +f 1233//1012 970//1012 969//1012 +f 1233//210 969//210 998//210 +f 1371//1013 1384//1013 1385//1013 +f 969//210 976//210 998//210 +f 1386//210 1369//210 1383//210 +f 976//210 986//210 998//210 +f 1381//1014 430//1014 438//1014 +f 1381//1015 1291//1015 430//1015 +f 986//1016 985//1016 1000//1016 +f 1085//210 1000//210 985//210 +f 985//210 1008//210 1085//210 +f 1008//1017 1014//1017 1085//1017 +f 1381//1018 1379//1018 1291//1018 +f 321//209 532//209 1354//209 +f 532//209 321//209 973//209 +f 1387//210 1369//210 1386//210 +f 1022//1019 1024//1019 1016//1019 +f 1024//962 1023//962 1016//962 +f 1029//1020 1016//1020 1023//1020 +f 1023//1021 1031//1021 1029//1021 +f 1040//1022 1029//1022 1031//1022 +f 1160//1023 656//1023 553//1023 +f 1388//1024 1389//1024 1390//1024 +f 1040//1025 1031//1025 1391//1025 +f 1038//1026 1040//1026 1391//1026 +f 1057//1027 1038//1027 1391//1027 +f 1391//1028 1031//1028 1057//1028 +f 1031//1029 1032//1029 1057//1029 +f 1032//1030 1039//1030 1057//1030 +f 1032//1031 1059//1031 1039//1031 +f 1392//1032 1393//1032 1387//1032 +f 1393//210 1394//210 845//210 +f 1039//1033 1029//1033 1040//1033 +f 1039//1034 1063//1034 1029//1034 +f 1063//210 1066//210 1029//210 +f 1066//1035 1070//1035 1029//1035 +f 1017//1036 1029//1036 1070//1036 +f 1070//1037 1083//1037 1017//1037 +f 1017//210 1083//210 1084//210 +f 1084//210 1100//210 1017//210 +f 1100//210 1092//210 1017//210 +f 1092//1038 1090//1038 1017//1038 +f 1090//1039 1085//1039 1017//1039 +f 1014//1040 1017//1040 1085//1040 +f 1001//210 1085//210 1090//210 +f 1090//210 1091//210 1001//210 +f 999//1041 1001//1041 1091//1041 +f 553//1042 156//1042 1310//1042 +f 1395//210 1369//210 1387//210 +f 998//210 999//210 1100//210 +f 1100//1043 1234//1043 998//1043 +f 1234//1044 1100//1044 1396//1044 +f 1396//210 1102//210 1234//210 +f 1112//210 1234//210 1102//210 +f 1100//209 1102//209 1396//209 +f 1397//1045 1291//1045 1379//1045 +f 532//209 973//209 217//209 +f 1106//1046 1108//1046 1102//1046 +f 1113//838 1102//838 1108//838 +f 1108//839 1116//839 1113//839 +f 1113//1047 1116//1047 1123//1047 +f 1118//1048 1113//1048 1123//1048 +f 1398//1049 1399//1049 840//1049 +f 1400//1050 1401//1050 1398//1050 +f 1401//243 1402//243 1369//243 +f 1401//1051 1403//1051 1404//1051 +f 1119//1052 1252//1052 1113//1052 +f 1405//1053 1406//1053 1407//1053 +f 1119//1054 1408//1054 1252//1054 +f 1118//1055 1408//1055 1119//1055 +f 1118//1056 1123//1056 1408//1056 +f 1408//1057 1123//1057 1124//1057 +f 1124//1058 1253//1058 1408//1058 +f 1409//1059 1410//1059 1403//1059 +f 1124//1060 1116//1060 1253//1060 +f 1409//1061 1411//1061 1410//1061 +f 1253//209 1116//209 1255//209 +f 1255//1062 1116//1062 1127//1062 +f 1019//204 1012//204 1011//204 +f 1117//1062 1127//1062 1116//1062 +f 1409//1063 1412//1063 1411//1063 +f 1407//1064 1406//1064 1402//1064 +f 1126//1065 1117//1065 1129//1065 +f 1126//1066 1129//1066 1138//1066 +f 1413//1067 1402//1067 1406//1067 +f 1109//1068 1126//1068 1138//1068 +f 1109//1069 1138//1069 1149//1069 +f 1108//210 1109//210 1149//210 +f 1108//1070 1149//1070 1414//1070 +f 1414//1071 1128//1071 1108//1071 +f 1117//1072 1108//1072 1128//1072 +f 1414//1073 1148//1073 1128//1073 +f 1128//1074 1148//1074 1137//1074 +f 1137//1075 1129//1075 1128//1075 +f 1148//1076 1138//1076 1137//1076 +f 1414//1077 1149//1077 1148//1077 +f 1409//1078 1403//1078 1412//1078 +f 1415//1079 1416//1079 1403//1079 +f 1157//1080 1141//1080 1109//1080 +f 1157//1081 1159//1081 1141//1081 +f 1159//216 1417//216 1141//216 +f 1259//216 1141//216 1417//216 +f 1379//1082 1418//1082 1397//1082 +f 1370//243 1413//243 1416//243 +f 1419//1083 1259//1083 1167//1083 +f 1167//209 1260//209 1419//209 +f 1417//216 1167//216 1259//216 +f 859//216 135//216 1420//216 +f 135//1084 137//1084 552//1084 +f 901//1085 110//1085 1421//1085 +f 377//1086 379//1086 1422//1086 +f 1018//243 996//243 994//243 +f 991//204 1007//204 1278//204 +f 1370//243 1369//243 1402//243 +f 381//216 380//216 405//216 +f 395//216 382//216 381//216 +f 1380//1087 1067//1087 1270//1087 +f 379//209 383//209 1422//209 +f 1275//216 1260//216 1167//216 +f 1278//233 1296//233 992//233 +f 1423//1088 384//1088 382//1088 +f 1218//216 1275//216 1167//216 +f 1167//216 1166//216 1218//216 +f 1171//1089 1218//1089 1166//1089 +f 1166//1090 1175//1090 1171//1090 +f 1172//216 1171//216 1175//216 +f 1175//216 1177//216 1172//216 +f 1177//1091 1188//1091 1172//1091 +f 1172//1092 1188//1092 1424//1092 +f 1424//1093 1173//1093 1172//1093 +f 1198//1094 1173//1094 1424//1094 +f 1418//1095 1425//1095 1397//1095 +f 1370//243 1402//243 1413//243 +f 1197//1096 1173//1096 1198//1096 +f 1173//1097 1197//1097 1212//1097 +f 1213//216 1173//216 1212//216 +f 1213//216 1212//216 1215//216 +f 1371//1098 1373//1098 1384//1098 +f 847//1099 855//1099 853//1099 +f 1218//1100 1171//1100 1213//1100 +f 1216//864 1218//864 1213//864 +f 1215//216 1216//216 1213//216 +f 1219//216 1216//216 1215//216 +f 1215//1101 1231//1101 1219//1101 +f 1418//233 1426//233 1425//233 +f 1231//1102 1228//1102 1219//1102 +f 1427//1103 1428//1103 1429//1103 +f 1430//1104 827//1104 136//1104 +f 853//210 552//210 573//210 +f 1431//1105 1432//1105 1433//1105 +f 1211//1106 1197//1106 1228//1106 +f 1240//1107 1228//1107 1197//1107 +f 1240//1108 1197//1108 1199//1108 +f 1245//233 1240//233 1199//233 +f 1199//233 1434//233 1245//233 +f 1245//1109 1434//1109 1435//1109 +f 1163//210 1162//210 1436//210 +f 1247//1110 1245//1110 1435//1110 +f 1247//1111 1435//1111 1249//1111 +f 1249//1112 1244//1112 1247//1112 +f 1244//1112 1249//1112 1251//1112 +f 1244//1113 1251//1113 1258//1113 +f 1241//1114 1244//1114 1258//1114 +f 1258//1115 1229//1115 1241//1115 +f 1437//1116 1429//1116 1438//1116 +f 1439//1117 1440//1117 1441//1117 +f 1370//243 1416//243 1274//243 +f 1229//1118 1263//1118 1267//1118 +f 1267//1119 1219//1119 1229//1119 +f 1267//216 1220//216 1219//216 +f 1268//216 1220//216 1267//216 +f 1268//905 1271//905 1220//905 +f 1220//913 1271//913 1287//913 +f 1288//216 1220//216 1287//216 +f 1286//1120 1288//1120 1287//1120 +f 1442//1121 393//1121 392//1121 +f 1422//210 383//210 385//210 +f 1163//1122 1436//1122 1146//1122 +f 1286//216 1295//216 1276//216 +f 1278//204 1007//204 1296//204 +f 397//338 385//338 386//338 +f 390//210 386//210 384//210 +f 1443//1123 1426//1123 1418//1123 +f 384//1124 1444//1124 388//1124 +f 1338//1125 1445//1125 1446//1125 +f 1217//233 1216//233 1289//233 +f 1288//1126 1289//1126 1216//1126 +f 1216//216 1220//216 1288//216 +f 1416//1127 1415//1127 1447//1127 +f 1289//216 1275//216 1217//216 +f 1275//216 1218//216 1217//216 +f 389//210 1034//210 391//210 +f 1448//243 1449//243 1447//243 +f 1289//216 1276//216 1275//216 +f 1286//216 1276//216 1289//216 +f 391//1128 965//1128 394//1128 +f 1450//1129 1270//1129 1067//1129 +f 1007//1130 989//1130 995//1130 +f 394//216 823//216 395//216 +f 1440//1131 1439//1131 1428//1131 +f 1276//216 1295//216 1313//216 +f 381//216 398//216 396//216 +f 1451//1132 1452//1132 1449//1132 +f 1453//1133 1454//1133 1400//1133 +f 411//216 410//216 221//216 +f 1313//216 1329//216 1331//216 +f 1323//216 1313//216 1331//216 +f 1451//1134 1449//1134 1455//1134 +f 412//1135 411//1135 414//1135 +f 1454//1136 1453//1136 1456//1136 +f 1196//1137 1195//1137 1194//1137 +f 377//210 1422//210 331//210 +f 1422//210 413//210 331//210 +f 1456//1138 1455//1138 1449//1138 +f 385//210 413//210 1422//210 +f 415//1139 414//1139 429//1139 +f 1274//243 1363//243 1365//243 +f 1457//1140 1458//1140 1450//1140 +f 1296//204 1007//204 1012//204 +f 994//216 1296//216 1012//216 +f 872//216 1459//216 907//216 +f 242//233 1460//233 254//233 +f 1005//1141 254//1141 1460//1141 +f 593//210 1025//210 620//210 +f 1460//1142 1461//1142 1005//1142 +f 1028//1143 1037//1143 1026//1143 +f 1450//1144 1067//1144 1457//1144 +f 1415//1145 1403//1145 1401//1145 +f 1401//1146 1400//1146 1415//1146 +f 1415//1147 1400//1147 1454//1147 +f 1447//209 1415//209 1448//209 +f 125//1148 979//1148 128//1148 +f 125//209 124//209 979//209 +f 247//1149 979//1149 983//1149 +f 979//209 124//209 983//209 +f 983//209 124//209 1461//209 +f 242//233 248//233 1460//233 +f 248//1150 1461//1150 1460//1150 +f 1415//216 1449//216 1448//216 +f 1415//1151 1456//1151 1449//1151 +f 1461//1152 248//1152 983//1152 +f 1415//1153 1454//1153 1456//1153 +f 1030//1154 1027//1154 1462//1154 +f 1456//1155 1453//1155 1455//1155 +f 1393//1156 845//1156 1387//1156 +f 1395//1157 1387//1157 845//1157 +f 1395//233 845//233 1399//233 +f 1395//233 1399//233 1369//233 +f 1399//1158 1398//1158 1369//1158 +f 1369//243 1398//243 1401//243 +f 1453//1159 1451//1159 1455//1159 +f 1463//1160 1452//1160 1451//1160 +f 1401//1161 1404//1161 1402//1161 +f 1407//1162 1402//1162 1404//1162 +f 1451//1163 1453//1163 1463//1163 +f 1405//1164 1407//1164 1404//1164 +f 1405//1165 1404//1165 1403//1165 +f 1405//1166 1403//1166 1410//1166 +f 1405//1167 1410//1167 1406//1167 +f 1406//1168 1410//1168 1411//1168 +f 1411//1169 1412//1169 1406//1169 +f 1413//1170 1406//1170 1412//1170 +f 1412//1171 1403//1171 1413//1171 +f 1453//1172 1400//1172 1463//1172 +f 1403//233 1416//233 1413//233 +f 1225//1173 1232//1173 1239//1173 +f 1400//1174 1452//1174 1463//1174 +f 998//210 1236//210 1232//210 +f 1416//243 1447//243 1283//243 +f 1464//210 1465//210 1466//210 +f 1283//243 1447//243 1449//243 +f 1464//1175 1283//1175 1449//1175 +f 1467//1176 1464//1176 1449//1176 +f 1467//1177 1449//1177 1452//1177 +f 1452//1178 1400//1178 1467//1178 +f 1468//210 1469//210 842//210 +f 1467//209 1400//209 1398//209 +f 1398//1179 1464//1179 1467//1179 +f 1465//210 1464//210 1398//210 +f 1398//210 843//210 1465//210 +f 1465//210 1470//210 1466//210 +f 1470//1180 1471//1180 1472//1180 +f 1473//210 1474//210 1471//210 +f 842//1181 1469//1181 1465//1181 +f 1470//1182 1465//1182 1469//1182 +f 1471//1183 1470//1183 1469//1183 +f 1473//210 1471//210 1469//210 +f 1469//210 1475//210 1473//210 +f 1475//1184 1476//1184 1473//1184 +f 1476//1185 1477//1185 1473//1185 +f 1474//1186 1473//1186 1477//1186 +f 1477//1187 1471//1187 1474//1187 +f 1471//1187 1477//1187 1472//1187 +f 1478//210 1472//210 1477//210 +f 1478//210 1477//210 1479//210 +f 1480//1188 858//1188 1481//1188 +f 522//1189 1482//1189 876//1189 +f 1483//1190 1466//1190 1478//1190 +f 1484//1191 1466//1191 1483//1191 +f 1033//204 1030//204 1485//204 +f 124//209 1005//209 1461//209 +f 124//209 256//209 1005//209 +f 1033//1192 1486//1192 1028//1192 +f 422//209 256//209 124//209 +f 422//209 124//209 416//209 +f 1283//216 1484//216 1290//216 +f 416//210 415//210 1183//210 +f 428//1193 421//1193 416//1193 +f 1486//1194 1036//1194 1028//1194 +f 421//209 1487//209 423//209 +f 1469//210 1488//210 1475//210 +f 1051//1195 1037//1195 1036//1195 +f 255//243 425//243 427//243 +f 1477//210 1476//210 1314//210 +f 1067//1196 1068//1196 1457//1196 +f 1050//1197 1037//1197 1043//1197 +f 1051//216 1042//216 1037//216 +f 1489//360 421//360 426//360 +f 429//216 1490//216 427//216 +f 201//1198 113//1198 202//1198 +f 1484//1199 1283//1199 1464//1199 +f 1464//1200 1466//1200 1484//1200 +f 1068//1201 1458//1201 1457//1201 +f 1042//1202 1046//1202 1044//1202 +f 429//216 430//216 1291//216 +f 1196//216 1290//216 1484//216 +f 432//1203 430//1203 431//1203 +f 1043//243 1045//243 1047//243 +f 416//210 1183//210 310//210 +f 1472//210 1466//210 1470//210 +f 289//210 288//210 310//210 +f 288//1204 243//1204 432//1204 +f 1052//210 1048//210 1046//210 +f 1491//1205 435//1205 432//1205 +f 605//210 1053//210 1492//210 +f 436//1206 435//1206 1493//1206 +f 1494//1207 1428//1207 1495//1207 +f 1472//210 1478//210 1466//210 +f 1314//210 1479//210 1477//210 +f 1479//1208 1496//1208 1478//1208 +f 438//1209 440//1209 1359//1209 +f 1497//1210 1498//1210 1494//1210 +f 443//209 440//209 441//209 +f 442//1211 436//1211 1499//1211 +f 1478//1212 1496//1212 1483//1212 +f 1496//216 1484//216 1483//216 +f 1500//1213 441//1213 442//1213 +f 444//1214 441//1214 1446//1214 +f 1223//210 1235//210 1234//210 +f 584//1215 537//1215 1168//1215 +f 1209//1216 1501//1216 1210//1216 +f 1062//1217 1058//1217 1054//1217 +f 443//1218 255//1218 427//1218 +f 112//1219 202//1219 113//1219 +f 1315//210 1314//210 1502//210 +f 1060//1220 1375//1220 1056//1220 +f 238//1221 1503//1221 445//1221 +f 445//1222 1504//1222 446//1222 +f 1303//216 1484//216 1496//216 +f 446//1223 1490//1223 282//1223 +f 1052//210 1062//210 1054//210 +f 1367//1224 1505//1224 1168//1224 +f 1436//1225 1150//1225 1146//1225 +f 267//210 266//210 447//210 +f 1496//1226 1479//1226 1301//1226 +f 266//1227 265//1227 448//1227 +f 1506//1228 1507//1228 1508//1228 +f 1496//216 1301//216 1303//216 +f 166//210 450//210 449//210 +f 1153//210 1436//210 1162//210 +f 1431//1229 1433//1229 1509//1229 +f 1389//1230 1421//1230 110//1230 +f 1458//1231 1072//1231 1510//1231 +f 524//1232 1498//1232 1497//1232 +f 450//1233 1511//1233 181//1233 +f 458//1234 451//1234 106//1234 +f 1064//210 1062//210 1052//210 +f 1427//1235 1512//1235 1508//1235 +f 1046//1202 1042//1202 1052//1202 +f 456//1236 453//1236 451//1236 +f 455//1237 1513//1237 454//1237 +f 1162//1238 1155//1238 1153//1238 +f 1320//210 1317//210 1327//210 +f 1322//210 1320//210 1327//210 +f 455//1239 458//1239 467//1239 +f 1301//1240 1479//1240 1314//1240 +f 804//1241 1052//1241 1042//1241 +f 1514//1242 1431//1242 1509//1242 +f 1052//1241 804//1241 1071//1241 +f 524//1243 1515//1243 1498//1243 +f 465//1244 1516//1244 466//1244 +f 1517//1245 1308//1245 1512//1245 +f 1517//1246 1342//1246 1308//1246 +f 840//210 847//210 837//210 +f 1518//1247 1519//1247 1520//1247 +f 1520//1248 1521//1248 1518//1248 +f 1522//210 1518//210 1521//210 +f 1521//210 1523//210 1522//210 +f 1522//1249 1523//1249 1524//1249 +f 1314//210 1476//210 1502//210 +f 1524//1250 1525//1250 1522//1250 +f 1522//1251 1525//1251 1518//1251 +f 1526//210 1525//210 1524//210 +f 478//1252 468//1252 466//1252 +f 470//392 467//392 468//392 +f 845//1253 1527//1253 846//1253 +f 1528//1254 471//1254 468//1254 +f 1072//1255 1458//1255 1068//1255 +f 1072//1256 1073//1256 1510//1256 +f 1512//1257 1427//1257 1517//1257 +f 470//209 473//209 467//209 +f 1071//573 804//573 803//573 +f 840//1258 1399//1258 845//1258 +f 1327//210 1525//210 1526//210 +f 1327//210 1526//210 1341//210 +f 1427//1259 1373//1259 1517//1259 +f 305//1260 1269//1260 474//1260 +f 1190//1261 1156//1261 1162//1261 +f 473//1262 1513//1262 467//1262 +f 1155//1263 1162//1263 1156//1263 +f 1510//1264 1073//1264 1529//1264 +f 1517//1265 1373//1265 1372//1265 +f 1513//1266 155//1266 454//1266 +f 1513//1267 455//1267 467//1267 +f 1450//1268 1510//1268 1529//1268 +f 843//209 1398//209 840//209 +f 1342//1269 1517//1269 1372//1269 +f 843//1270 842//1270 1465//1270 +f 1513//1271 1269//1271 155//1271 +f 1344//204 1530//204 1353//204 +f 1353//243 1530//243 1358//243 +f 1531//1272 1358//1272 1530//1272 +f 1418//1123 1360//1123 1443//1123 +f 1342//1273 1280//1273 1308//1273 +f 1532//210 807//210 1531//210 +f 1531//210 1533//210 1532//210 +f 1534//210 1532//210 1533//210 +f 842//210 839//210 1468//210 +f 1535//210 1534//210 1533//210 +f 1192//216 1154//216 1156//216 +f 856//210 1535//210 1533//210 +f 1533//210 857//210 856//210 +f 857//1274 1533//1274 910//1274 +f 1536//1275 1443//1275 1360//1275 +f 1537//210 1514//210 1509//210 +f 1538//1276 910//1276 1533//1276 +f 1539//1277 839//1277 838//1277 +f 304//1278 155//1278 1269//1278 +f 356//1279 434//1279 1367//1279 +f 803//572 567//572 566//572 +f 836//210 1540//210 838//210 +f 1303//1280 1152//1280 1154//1280 +f 679//1281 837//1281 853//1281 +f 1513//1282 473//1282 1269//1282 +f 474//1283 1269//1283 473//1283 +f 1075//210 1076//210 1080//210 +f 566//204 565//204 1077//204 +f 472//1284 471//1284 475//1284 +f 950//1285 1541//1285 1542//1285 +f 1542//1286 1541//1286 1543//1286 +f 1544//1287 1542//1287 1543//1287 +f 476//1288 311//1288 474//1288 +f 477//1289 475//1289 471//1289 +f 1545//204 1546//204 1544//204 +f 1547//204 1545//204 1544//204 +f 1544//457 1548//457 1547//457 +f 1547//1290 1548//1290 1549//1290 +f 1549//216 1550//216 1547//216 +f 1550//1291 1549//1291 1548//1291 +f 1544//209 1550//209 1548//209 +f 1545//1292 1547//1292 1550//1292 +f 1546//1293 1545//1293 1550//1293 +f 1550//1294 1551//1294 1546//1294 +f 1551//1295 1549//1295 1546//1295 +f 1549//1296 1552//1296 1546//1296 +f 1552//1297 1547//1297 1546//1297 +f 1547//1298 1542//1298 1546//1298 +f 1547//210 1552//210 1542//210 +f 1552//1299 1549//1299 1542//1299 +f 1542//210 1549//210 1553//210 +f 1554//210 1542//210 1553//210 +f 468//1252 478//1252 1528//1252 +f 477//1300 471//1300 1528//1300 +f 1528//233 478//233 477//233 +f 1242//1301 479//1301 478//1301 +f 565//1302 1078//1302 1077//1302 +f 1308//1303 1438//1303 1512//1303 +f 1555//210 1556//210 1542//210 +f 1556//210 950//210 1542//210 +f 1512//1304 1438//1304 1508//1304 +f 710//1305 1078//1305 565//1305 +f 1079//216 710//216 683//216 +f 315//216 482//216 484//216 +f 1441//1306 1508//1306 1438//1306 +f 1073//1307 1075//1307 1529//1307 +f 1540//1308 836//1308 828//1308 +f 1153//210 1150//210 1436//210 +f 1557//210 1519//210 1327//210 +f 1327//210 1519//210 1525//210 +f 1558//1309 961//1309 920//1309 +f 961//210 1558//210 1014//210 +f 1525//1310 1519//1310 1518//1310 +f 1014//210 1015//210 961//210 +f 963//210 961//210 1015//210 +f 1557//210 1520//210 1519//210 +f 1015//210 1559//210 963//210 +f 1559//210 975//210 963//210 +f 969//210 963//210 975//210 +f 963//1311 969//1311 964//1311 +f 975//1312 1559//1312 1560//1312 +f 1560//1313 1002//1313 975//1313 +f 1521//1314 1520//1314 1557//1314 +f 976//1315 975//1315 1002//1315 +f 1523//210 1521//210 1561//210 +f 1002//210 1562//210 1008//210 +f 1562//1316 1015//1316 1008//1316 +f 1002//210 1560//210 1562//210 +f 1562//1317 1560//1317 1559//1317 +f 1015//1318 1562//1318 1559//1318 +f 1441//1319 1440//1319 1506//1319 +f 961//1320 963//1320 960//1320 +f 1563//1321 1524//1321 1523//1321 +f 1021//210 1014//210 1558//210 +f 1421//1322 1388//1322 1564//1322 +f 1526//210 1524//210 1563//210 +f 1526//210 1565//210 1566//210 +f 828//210 679//210 911//210 +f 1059//210 1022//210 920//210 +f 1059//210 1023//210 1022//210 +f 920//1323 1022//1323 1021//1323 +f 1021//1324 1558//1324 920//1324 +f 950//210 1059//210 920//210 +f 1556//210 1059//210 950//210 +f 1506//1325 1508//1325 1441//1325 +f 1059//1326 1556//1326 1063//1326 +f 1223//210 1234//210 1112//210 +f 761//204 1307//204 1567//204 +f 1568//1327 1063//1327 1556//1327 +f 156//1328 828//1328 911//1328 +f 1151//210 1152//210 1302//210 +f 1569//210 1570//210 1568//210 +f 1571//1329 1570//1329 1569//1329 +f 1569//1330 1572//1330 1571//1330 +f 1572//1331 1573//1331 1571//1331 +f 1573//1332 1574//1332 1571//1332 +f 828//1333 826//1333 1575//1333 +f 136//216 827//216 156//216 +f 1574//1334 1576//1334 1571//1334 +f 1571//1335 1576//1335 1577//1335 +f 1571//1336 1577//1336 1570//1336 +f 1577//1337 1578//1337 1570//1337 +f 1570//210 1578//210 1579//210 +f 1570//1338 1579//1338 1065//1338 +f 1065//1339 1063//1339 1570//1339 +f 1360//1275 1580//1275 1536//1275 +f 1580//209 1581//209 1536//209 +f 821//1340 827//1340 1430//1340 +f 1069//1341 1066//1341 1065//1341 +f 1065//1342 1582//1342 1069//1342 +f 1069//210 1582//210 1583//210 +f 1584//1343 1585//1343 1537//1343 +f 1082//210 1069//210 1583//210 +f 1586//1344 1584//1344 1537//1344 +f 1341//210 1526//210 1344//210 +f 1112//204 1113//204 1252//204 +f 1586//1345 1587//1345 1584//1345 +f 1428//1346 1427//1346 1508//1346 +f 1579//1347 1084//1347 1082//1347 +f 1100//210 1084//210 1579//210 +f 1100//210 1579//210 1101//210 +f 1253//1348 1252//1348 1408//1348 +f 1112//204 109//204 126//204 +f 1101//233 1588//233 1106//233 +f 1106//1349 1588//1349 1157//1349 +f 1589//210 1157//210 1588//210 +f 1157//210 1589//210 1158//210 +f 1589//210 1590//210 1158//210 +f 1587//1350 1591//1350 1584//1350 +f 1592//210 1158//210 1590//210 +f 1593//1351 1592//1351 1590//1351 +f 1590//1352 1594//1352 1593//1352 +f 1593//210 1594//210 1595//210 +f 1595//210 1596//210 1593//210 +f 1421//1353 1389//1353 1388//1353 +f 1596//210 1597//210 1593//210 +f 1598//210 1593//210 1597//210 +f 1367//1354 434//1354 1599//1354 +f 1598//210 1597//210 1600//210 +f 799//1355 1361//1355 806//1355 +f 1598//210 1600//210 1601//210 +f 1507//1356 1428//1356 1508//1356 +f 1358//210 806//210 1361//210 +f 1602//210 1598//210 1601//210 +f 1601//210 1603//210 1602//210 +f 1603//210 1604//210 1602//210 +f 1604//210 1605//210 1602//210 +f 1602//1357 1605//1357 1606//1357 +f 1606//1358 1607//1358 1602//1358 +f 1607//210 1606//210 1608//210 +f 1608//210 1609//210 1607//210 +f 1610//1359 1581//1359 1580//1359 +f 806//210 1358//210 807//210 +f 1358//210 1531//210 807//210 +f 1611//210 1607//210 1609//210 +f 1611//1360 1609//1360 1612//1360 +f 1612//1361 1417//1361 1611//1361 +f 1611//1362 1417//1362 1158//1362 +f 1533//1363 1531//1363 1530//1363 +f 1417//1364 1159//1364 1158//1364 +f 807//1365 1532//1365 1613//1365 +f 1580//1366 1359//1366 1610//1366 +f 1614//216 1417//216 1612//216 +f 1614//1367 1612//1367 1609//1367 +f 1534//1368 1615//1368 1532//1368 +f 1534//1369 1535//1369 1616//1369 +f 1617//1370 1599//1370 434//1370 +f 854//1371 818//1371 856//1371 +f 761//204 1567//204 738//204 +f 1120//210 1618//210 111//210 +f 1080//1372 1081//1372 1619//1372 +f 815//1373 856//1373 818//1373 +f 465//1374 458//1374 106//1374 +f 127//1375 465//1375 106//1375 +f 1608//210 1620//210 1621//210 +f 1622//210 1621//210 1620//210 +f 127//1376 1516//1376 465//1376 +f 1622//210 1620//210 1623//210 +f 816//210 815//210 818//210 +f 1622//210 1623//210 1624//210 +f 301//1377 1081//1377 683//1377 +f 1622//210 1624//210 1625//210 +f 1622//210 1625//210 1621//210 +f 1625//210 1626//210 1621//210 +f 1626//210 1627//210 1621//210 +f 1428//1378 1507//1378 1495//1378 +f 1627//210 1628//210 1621//210 +f 1628//1379 1295//1379 1621//1379 +f 1629//1379 1621//1379 1295//1379 +f 1630//1380 1631//1380 901//1380 +f 1632//1381 1621//1381 1629//1381 +f 287//1382 1633//1382 1254//1382 +f 1634//216 210//216 1635//216 +f 279//1383 683//1383 280//1383 +f 1295//216 1636//216 1629//216 +f 1616//210 817//210 1613//210 +f 1295//216 1272//216 1636//216 +f 1636//1384 1272//1384 1637//1384 +f 1636//216 1637//216 1638//216 +f 1636//216 1638//216 1639//216 +f 1636//1385 1639//1385 1632//1385 +f 1359//216 1640//216 1610//216 +f 812//1386 1495//1386 805//1386 +f 279//1387 172//1387 301//1387 +f 808//1388 807//1388 817//1388 +f 1632//1389 1641//1389 1621//1389 +f 1642//1390 1640//1390 1359//1390 +f 1632//216 1643//216 1644//216 +f 1645//216 1644//216 1643//216 +f 1645//216 1643//216 1176//216 +f 1176//216 1175//216 1645//216 +f 1646//1391 1645//1391 1175//1391 +f 1165//1392 1646//1392 1175//1392 +f 1175//1393 1166//1393 1165//1393 +f 1647//1394 914//1394 605//1394 +f 1613//1395 817//1395 807//1395 +f 1648//1396 1649//1396 1634//1396 +f 1650//1397 1529//1397 1075//1397 +f 1615//1398 1613//1398 1532//1398 +f 1613//210 1615//210 1616//210 +f 1615//1399 1534//1399 1616//1399 +f 1617//1400 434//1400 1651//1400 +f 1652//1401 1617//1401 1651//1401 +f 1614//216 1653//216 1654//216 +f 1654//216 1653//216 1655//216 +f 1654//1402 1655//1402 1656//1402 +f 817//210 1616//210 815//210 +f 1616//1403 1535//1403 815//1403 +f 1654//1404 1656//1404 1644//1404 +f 1654//1405 1644//1405 1646//1405 +f 1614//216 1654//216 1646//216 +f 1641//1406 1656//1406 1655//1406 +f 1632//216 1656//216 1641//216 +f 856//1407 815//1407 1535//1407 +f 1145//1408 1147//1408 1151//1408 +f 1608//1409 1641//1409 1653//1409 +f 1655//1410 1653//1410 1641//1410 +f 1657//1411 1658//1411 1659//1411 +f 1659//1412 1660//1412 1661//1412 +f 1662//210 1619//210 1663//210 +f 1664//1413 1665//1413 1659//1413 +f 1663//1414 1647//1414 1666//1414 +f 1614//216 1646//216 1165//216 +f 805//1415 1515//1415 524//1415 +f 524//1416 1497//1416 522//1416 +f 1584//1417 1591//1417 1667//1417 +f 950//1418 910//1418 1668//1418 +f 1189//1419 1177//1419 1176//1419 +f 659//1420 523//1420 522//1420 +f 1481//1421 814//1421 821//1421 +f 1189//1422 1257//1422 1188//1422 +f 1188//1423 1257//1423 1250//1423 +f 1424//1424 1188//1424 1250//1424 +f 1669//1425 1424//1425 1250//1425 +f 1669//1426 1250//1426 1670//1426 +f 1670//1426 1671//1426 1669//1426 +f 1199//1427 1669//1427 1671//1427 +f 1541//1428 950//1428 1668//1428 +f 1672//1429 1543//1429 1541//1429 +f 1434//1430 1671//1430 1435//1430 +f 1434//1427 1199//1427 1671//1427 +f 1199//1431 1198//1431 1669//1431 +f 1671//1432 1670//1432 1435//1432 +f 1435//1433 1670//1433 1249//1433 +f 1250//209 1249//209 1670//209 +f 1544//1434 1546//1434 1542//1434 +f 1198//1435 1424//1435 1669//1435 +f 1543//1436 1550//1436 1544//1436 +f 1251//1437 1250//1437 1257//1437 +f 1189//1438 1673//1438 1257//1438 +f 1673//1439 1674//1439 1257//1439 +f 1257//1440 1674//1440 1675//1440 +f 1257//1441 1675//1441 1676//1441 +f 1497//1442 1495//1442 1482//1442 +f 1497//1443 1494//1443 1495//1443 +f 1551//210 1550//210 1553//210 +f 1676//1444 1677//1444 1678//1444 +f 1632//216 1678//216 1677//216 +f 1549//210 1551//210 1553//210 +f 1678//216 1632//216 1679//216 +f 1679//216 1263//216 1678//216 +f 1554//210 1555//210 1542//210 +f 1263//216 1679//216 1680//216 +f 1651//1445 1681//1445 1652//1445 +f 1555//1446 1554//1446 1682//1446 +f 1263//1447 1258//1447 1676//1447 +f 1680//216 1268//216 1263//216 +f 1268//1448 1680//1448 1272//1448 +f 1679//1449 1638//1449 1680//1449 +f 1584//1450 1667//1450 1683//1450 +f 814//1451 865//1451 813//1451 +f 1639//1452 1638//1452 1679//1452 +f 1678//1453 1263//1453 1676//1453 +f 1257//1454 1676//1454 1258//1454 +f 1675//1455 1677//1455 1676//1455 +f 1675//1456 1674//1456 1677//1456 +f 1643//1457 1677//1457 1674//1457 +f 1674//1458 1673//1458 1643//1458 +f 814//1459 811//1459 820//1459 +f 1063//210 1568//210 1570//210 +f 1556//1460 1555//1460 1568//1460 +f 1684//210 1569//210 1568//210 +f 1681//1461 1685//1461 1652//1461 +f 1255//204 1127//204 1141//204 +f 1176//1462 1673//1462 1189//1462 +f 1176//1463 1643//1463 1673//1463 +f 1644//1464 1645//1464 1646//1464 +f 1643//216 1632//216 1677//216 +f 1632//216 1644//216 1656//216 +f 1679//1465 1632//1465 1639//1465 +f 1572//1466 1569//1466 1684//1466 +f 1638//1467 1637//1467 1680//1467 +f 1680//1468 1637//1468 1272//1468 +f 1629//1469 1636//1469 1632//1469 +f 1497//1470 1482//1470 522//1470 +f 1628//1471 1312//1471 1295//1471 +f 1686//204 1665//204 1687//204 +f 1688//1472 1312//1472 1628//1472 +f 1628//210 1689//210 1688//210 +f 1690//210 1688//210 1689//210 +f 1690//1473 1689//1473 1691//1473 +f 1692//1474 1573//1474 1572//1474 +f 1573//1475 1693//1475 1574//1475 +f 1495//1476 812//1476 1482//1476 +f 812//1477 876//1477 1482//1477 +f 1574//1478 1694//1478 1576//1478 +f 1652//1479 1685//1479 1695//1479 +f 1696//1480 1697//1480 1698//1480 +f 1698//204 1699//204 1696//204 +f 1700//210 1696//210 1699//210 +f 1699//210 1701//210 1700//210 +f 1700//1481 1701//1481 1702//1481 +f 1261//1482 1226//1482 342//1482 +f 1281//1483 1261//1483 342//1483 +f 1082//1484 1070//1484 1069//1484 +f 1700//210 1703//210 1691//210 +f 1700//210 1704//210 1703//210 +f 1703//210 1704//210 1705//210 +f 1583//1485 1579//1485 1082//1485 +f 1703//210 1705//210 1706//210 +f 1706//210 1707//210 1703//210 +f 1707//210 1708//210 1703//210 +f 1703//1486 1708//1486 1709//1486 +f 1709//1487 1690//1487 1703//1487 +f 1709//210 1688//210 1690//210 +f 1688//210 1709//210 1710//210 +f 1688//1488 1710//1488 1711//1488 +f 1711//1489 1712//1489 1688//1489 +f 1712//1100 1312//1100 1688//1100 +f 1313//216 1312//216 1712//216 +f 1313//216 1712//216 1711//216 +f 1710//1490 1328//1490 1711//1490 +f 1313//216 1711//216 1328//216 +f 1594//210 1101//210 1579//210 +f 1588//204 1101//204 1589//204 +f 1713//210 1710//210 1709//210 +f 1713//1491 1709//1491 1707//1491 +f 1707//1492 1714//1492 1713//1492 +f 1715//1493 1713//1493 1714//1493 +f 1715//233 1714//233 1716//233 +f 1594//1494 1590//1494 1589//1494 +f 1715//210 1716//210 1717//210 +f 1717//1495 1716//1495 1718//1495 +f 1718//1496 1719//1496 1717//1496 +f 1329//1497 1717//1497 1719//1497 +f 1719//243 1720//243 1329//243 +f 1158//210 1592//210 1611//210 +f 1720//243 1721//243 1329//243 +f 1721//243 1363//243 1329//243 +f 1363//1498 1721//1498 1722//1498 +f 1363//209 1722//209 1364//209 +f 1722//1499 1723//1499 1364//1499 +f 1365//1500 1364//1500 1723//1500 +f 1365//1501 1723//1501 1724//1501 +f 1365//1502 1724//1502 1725//1502 +f 1726//1503 1365//1503 1725//1503 +f 1727//1504 1726//1504 1725//1504 +f 1726//1505 1727//1505 1728//1505 +f 1594//1506 1589//1506 1101//1506 +f 1596//1507 1595//1507 1729//1507 +f 1730//1508 1731//1508 1728//1508 +f 1730//210 1366//210 1731//210 +f 1366//1509 1365//1509 1731//1509 +f 1597//1510 1596//1510 1732//1510 +f 1593//1511 1598//1511 1607//1511 +f 1687//1512 521//1512 1686//1512 +f 147//209 183//209 521//209 +f 1663//210 1666//210 1733//210 +f 658//1513 1734//1513 1735//1513 +f 1736//1514 876//1514 659//1514 +f 1650//1515 1662//1515 1737//1515 +f 1738//1516 1739//1516 1687//1516 +f 1366//243 1370//243 1274//243 +f 1739//1517 1740//1517 1741//1517 +f 1388//1518 1390//1518 1564//1518 +f 1740//1519 1742//1519 1741//1519 +f 1743//1520 1210//1520 1744//1520 +f 1501//1521 1744//1521 1210//1521 +f 1260//216 109//216 1141//216 +f 440//1522 1642//1522 1359//1522 +f 1745//1523 1740//1523 1746//1523 +f 1597//1524 1747//1524 1600//1524 +f 1662//1525 1733//1525 1737//1525 +f 1748//1526 1749//1526 1750//1526 +f 1746//1527 1751//1527 1750//1527 +f 1663//210 1733//210 1662//210 +f 659//1528 1752//1528 587//1528 +f 876//1529 1752//1529 659//1529 +f 1753//1530 1652//1530 1695//1530 +f 1752//1531 584//1531 587//1531 +f 1754//1532 1647//1532 1663//1532 +f 1695//1533 1755//1533 1753//1533 +f 584//1534 1505//1534 271//1534 +f 1663//1535 1619//1535 1754//1535 +f 240//1536 833//1536 973//1536 +f 1752//1537 876//1537 781//1537 +f 1598//1538 1602//1538 1607//1538 +f 1756//1539 1390//1539 1757//1539 +f 1603//1540 1601//1540 1758//1540 +f 1619//1541 1081//1541 1754//1541 +f 1386//210 1759//210 1760//210 +f 443//209 427//209 440//209 +f 1760//210 1566//210 1386//210 +f 1662//1542 1650//1542 1075//1542 +f 1565//210 1386//210 1566//210 +f 522//1543 876//1543 1736//1543 +f 1604//1544 1603//1544 1761//1544 +f 1762//1545 1606//1545 1605//1545 +f 1608//210 1606//210 1762//210 +f 1168//1546 1505//1546 905//1546 +f 1609//1547 1608//1547 1614//1547 +f 1746//1548 1740//1548 1739//1548 +f 1607//1549 1592//1549 1593//1549 +f 1738//1550 1763//1550 1739//1550 +f 1367//1551 1599//1551 272//1551 +f 1607//210 1611//210 1592//210 +f 1619//210 1662//210 1075//210 +f 1387//1552 1565//1552 1392//1552 +f 1565//210 1387//210 1386//210 +f 1075//210 1080//210 1619//210 +f 1647//216 1754//216 1081//216 +f 1165//216 1167//216 1417//216 +f 1764//1553 1392//1553 1565//1553 +f 1565//1554 1563//1554 1764//1554 +f 1523//1555 1764//1555 1563//1555 +f 1561//210 1764//210 1523//210 +f 1764//210 1561//210 1765//210 +f 1765//210 1766//210 1764//210 +f 1766//210 1767//210 1764//210 +f 1165//216 1417//216 1614//216 +f 1764//210 1767//210 1768//210 +f 1764//210 1768//210 1769//210 +f 1768//1556 1770//1556 1769//1556 +f 1771//1557 1769//1557 1770//1557 +f 1771//210 1770//210 1772//210 +f 1653//1558 1614//1558 1608//1558 +f 865//1559 810//1559 813//1559 +f 1773//210 1771//210 1772//210 +f 1773//210 1772//210 1774//210 +f 1774//210 1775//210 1773//210 +f 1775//1560 1776//1560 1773//1560 +f 1394//1561 1773//1561 1776//1561 +f 1394//210 1776//210 845//210 +f 845//210 1776//210 1777//210 +f 1778//210 845//210 1777//210 +f 1777//1562 849//1562 1778//1562 +f 356//1563 271//1563 270//1563 +f 297//1564 489//1564 480//1564 +f 805//1565 1495//1565 1515//1565 +f 1507//1566 1515//1566 1495//1566 +f 1779//1567 1527//1567 1780//1567 +f 1608//1568 1621//1568 1641//1568 +f 1781//1569 973//1569 833//1569 +f 809//1570 820//1570 811//1570 +f 1782//1571 1527//1571 1779//1571 +f 846//1572 1527//1572 1782//1572 +f 798//1573 809//1573 801//1573 +f 1783//1574 1782//1574 1779//1574 +f 1784//1575 270//1575 275//1575 +f 1785//1576 355//1576 270//1576 +f 848//1577 1783//1577 849//1577 +f 1623//209 1620//209 1786//209 +f 1623//1578 1786//1578 1624//1578 +f 1787//210 111//210 1618//210 +f 1753//1579 1755//1579 1788//1579 +f 849//1580 1789//1580 850//1580 +f 1790//210 850//210 1789//210 +f 1789//210 1791//210 1790//210 +f 1792//210 1790//210 1791//210 +f 427//216 1793//216 440//216 +f 1794//210 1792//210 1791//210 +f 1791//210 1795//210 1794//210 +f 1753//1581 1788//1581 1796//1581 +f 1797//1582 1794//1582 1795//1582 +f 1795//1583 1798//1583 1797//1583 +f 1627//1584 1626//1584 1799//1584 +f 1796//1585 1800//1585 1753//1585 +f 1797//1586 1801//1586 1802//1586 +f 1628//210 1627//210 1689//210 +f 1689//1587 1627//1587 1691//1587 +f 1540//210 1575//210 1802//210 +f 1802//210 1575//210 1803//210 +f 1691//1588 1703//1588 1690//1588 +f 1691//210 1804//210 1696//210 +f 1805//1589 1806//1589 1803//1589 +f 1807//1590 1803//1590 1806//1590 +f 1367//1591 537//1591 356//1591 +f 1806//210 1808//210 1807//210 +f 1807//1592 1808//1592 1809//1592 +f 1809//1593 1810//1593 1807//1593 +f 1810//1594 1811//1594 1807//1594 +f 1812//1595 1813//1595 1743//1595 +f 1746//1596 1739//1596 1763//1596 +f 1490//1222 446//1222 1504//1222 +f 1814//210 1698//210 1697//210 +f 1504//216 427//216 1490//216 +f 1763//1597 1738//1597 1746//1597 +f 587//1598 584//1598 1168//1598 +f 1751//1599 1815//1599 1750//1599 +f 1794//1600 1807//1600 1816//1600 +f 1259//1601 1419//1601 1260//1601 +f 1699//1602 1698//1602 1817//1602 +f 1757//204 109//204 1193//204 +f 1807//1603 1818//1603 1816//1603 +f 1696//210 1700//210 1691//210 +f 1081//1604 301//1604 1647//1604 +f 1701//210 1699//210 1817//210 +f 1617//1605 275//1605 1599//1605 +f 1701//1606 1819//1606 1702//1606 +f 1700//1607 1702//1607 1820//1607 +f 1664//1608 1815//1608 1821//1608 +f 1704//1609 1700//1609 1820//1609 +f 434//1610 355//1610 1651//1610 +f 1822//1611 1450//1611 1529//1611 +f 1823//1612 1824//1612 1792//1612 +f 1815//1613 1751//1613 1821//1613 +f 1450//1614 1458//1614 1510//1614 +f 1705//1615 1704//1615 1825//1615 +f 1785//1616 1651//1616 355//1616 +f 1706//1617 1705//1617 1826//1617 +f 1827//1618 1790//1618 1824//1618 +f 1828//1619 1787//1619 1618//1619 +f 738//1620 1567//1620 737//1620 +f 1707//210 1706//210 1829//210 +f 1707//1621 1709//1621 1708//1621 +f 1710//1622 1717//1622 1328//1622 +f 1710//210 1713//210 1717//210 +f 1830//1623 1828//1623 1618//1623 +f 1707//210 1829//210 1714//210 +f 1715//210 1717//210 1713//210 +f 1831//1624 1716//1624 1714//1624 +f 1718//233 1716//233 1832//233 +f 1681//1625 1651//1625 1685//1625 +f 1830//1626 1618//1626 1833//1626 +f 847//1627 851//1627 1834//1627 +f 847//1628 1834//1628 135//1628 +f 1821//1629 1751//1629 1746//1629 +f 1718//210 1832//210 1719//210 +f 1275//216 1196//216 1260//216 +f 1746//1630 1738//1630 1821//1630 +f 1664//1631 1687//1631 1665//1631 +f 1834//216 1420//216 135//216 +f 1835//216 1420//216 1834//216 +f 1835//216 1834//216 1836//216 +f 1835//1632 1836//1632 792//1632 +f 1329//1633 1328//1633 1717//1633 +f 1837//1634 1835//1634 792//1634 +f 1838//1635 1695//1635 1685//1635 +f 792//1636 780//1636 1837//1636 +f 780//1637 1839//1637 1837//1637 +f 1720//1638 1719//1638 1840//1638 +f 1837//1639 1839//1639 1841//1639 +f 1788//1640 1755//1640 1695//1640 +f 1721//233 1720//233 1842//233 +f 1841//1641 776//1641 1835//1641 +f 1841//1642 1835//1642 1837//1642 +f 776//216 1420//216 1835//216 +f 1420//216 776//216 1843//216 +f 1844//1643 1420//1643 1843//1643 +f 1788//1644 1845//1644 1796//1644 +f 1846//1645 1844//1645 1843//1645 +f 880//1646 1846//1646 1843//1646 +f 1847//210 1846//210 880//210 +f 880//210 1848//210 1847//210 +f 1847//1647 1848//1647 1849//1647 +f 1850//1648 1800//1648 1796//1648 +f 1842//1498 1722//1498 1721//1498 +f 1723//1649 1722//1649 1727//1649 +f 1849//1650 1851//1650 1847//1650 +f 1723//1651 1727//1651 1724//1651 +f 1847//1652 1851//1652 1852//1652 +f 1724//1653 1727//1653 1725//1653 +f 1784//1654 1652//1654 1800//1654 +f 867//210 864//210 1852//210 +f 1852//210 1853//210 867//210 +f 1726//1655 1731//1655 1365//1655 +f 1727//1656 1722//1656 1728//1656 +f 1853//210 1854//210 867//210 +f 1855//210 867//210 1854//210 +f 1728//1657 1731//1657 1726//1657 +f 1722//1658 1730//1658 1728//1658 +f 342//1659 1279//1659 1281//1659 +f 1855//1660 870//1660 1856//1660 +f 869//1661 1855//1661 1856//1661 +f 1855//210 1854//210 1857//210 +f 1855//210 1857//210 1858//210 +f 1858//210 874//210 1855//210 +f 874//210 1858//210 1859//210 +f 1366//1662 1730//1662 1370//1662 +f 801//1663 810//1663 774//1663 +f 1859//1664 1860//1664 1861//1664 +f 875//1665 1859//1665 1861//1665 +f 1370//210 1862//210 1368//210 +f 1144//1666 1163//1666 1146//1666 +f 1861//216 1860//216 1863//216 +f 1383//1667 1368//1667 1864//1667 +f 1861//1668 1863//1668 1865//1668 +f 1861//1669 1865//1669 875//1669 +f 1784//1670 1866//1670 1652//1670 +f 1863//1671 1867//1671 1865//1671 +f 1865//1672 1867//1672 1868//1672 +f 1386//1673 1383//1673 1864//1673 +f 877//1674 1865//1674 1868//1674 +f 1793//216 427//216 1504//216 +f 1386//1675 1869//1675 1759//1675 +f 1432//1676 1683//1676 1870//1676 +f 1683//1677 1432//1677 1585//1677 +f 1871//1678 1872//1678 879//1678 +f 1871//1679 879//1679 1868//1679 +f 1868//1680 1873//1680 1871//1680 +f 1873//216 1874//216 1871//216 +f 1875//216 1871//216 1874//216 +f 1876//1681 1875//1681 1874//1681 +f 802//1682 797//1682 798//1682 +f 1759//1683 1877//1683 1878//1683 +f 1879//1684 1876//1684 1880//1684 +f 796//1685 809//1685 798//1685 +f 1880//1686 1881//1686 1879//1686 +f 1881//1687 1882//1687 1879//1687 +f 1882//1688 1883//1688 1879//1688 +f 1866//1689 275//1689 1617//1689 +f 1878//1690 1884//1690 1885//1690 +f 1883//1691 1886//1691 1879//1691 +f 1879//1692 1886//1692 1887//1692 +f 1888//1693 281//1693 1889//1693 +f 1145//1694 1316//1694 1143//1694 +f 1870//1695 1055//1695 1375//1695 +f 1753//1696 1800//1696 1652//1696 +f 1890//1697 1891//1697 1875//1697 +f 1892//216 1875//216 1891//216 +f 1892//1698 1891//1698 1893//1698 +f 1055//1699 1056//1699 1375//1699 +f 797//1700 789//1700 793//1700 +f 1893//1701 1894//1701 1895//1701 +f 1896//1702 1895//1702 1894//1702 +f 1886//1703 1896//1703 1894//1703 +f 1896//210 1886//210 1882//210 +f 1897//210 1896//210 1882//210 +f 1897//210 1882//210 1898//210 +f 1899//210 1814//210 1900//210 +f 578//1704 580//1704 576//1704 +f 1898//210 1901//210 1897//210 +f 1901//210 1902//210 1897//210 +f 1903//210 1897//210 1902//210 +f 792//1705 789//1705 780//1705 +f 1902//210 1904//210 1903//210 +f 1506//1706 1440//1706 1507//1706 +f 1903//210 1904//210 1905//210 +f 1903//210 1905//210 1906//210 +f 1907//210 1903//210 1906//210 +f 1908//210 1907//210 1906//210 +f 1908//210 1906//210 1909//210 +f 1909//210 1910//210 1908//210 +f 1910//1707 1911//1707 1908//1707 +f 1908//1708 1911//1708 1912//1708 +f 1912//1709 1911//1709 1913//1709 +f 1914//1710 1912//1710 1913//1710 +f 1914//1711 1913//1711 1915//1711 +f 1900//210 1916//210 1899//210 +f 1915//1712 1917//1712 1914//1712 +f 1918//1713 1914//1713 1917//1713 +f 1919//1714 1899//1714 1916//1714 +f 1817//210 1920//210 1701//210 +f 1851//216 1917//216 1921//216 +f 1892//1715 1918//1715 1917//1715 +f 1918//1716 1922//1716 1914//1716 +f 1914//1717 1922//1717 1923//1717 +f 1923//1718 1912//1718 1914//1718 +f 1903//1719 1912//1719 1923//1719 +f 1903//1720 1923//1720 1922//1720 +f 1919//210 1924//210 1920//210 +f 1925//1721 1926//1721 1920//1721 +f 1893//1722 1922//1722 1918//1722 +f 1915//216 1921//216 1917//216 +f 1819//204 1927//204 1702//204 +f 1928//204 1926//204 1929//204 +f 1930//1723 1927//1723 1931//1723 +f 1851//1724 1921//1724 1932//1724 +f 1933//1725 1928//1725 1934//1725 +f 1685//1726 1651//1726 1785//1726 +f 1932//1727 1921//1727 1854//1727 +f 1935//1728 1685//1728 1785//1728 +f 1921//1729 1936//1729 1937//1729 +f 1937//1730 1854//1730 1921//1730 +f 1938//1731 1937//1731 1936//1731 +f 1936//1732 1939//1732 1938//1732 +f 1931//1733 1940//1733 1941//1733 +f 1933//1734 1934//1734 1942//1734 +f 1796//1735 1943//1735 1850//1735 +f 1944//1736 1934//1736 1928//1736 +f 1944//1737 1942//1737 1934//1737 +f 1938//1738 1945//1738 1860//1738 +f 1939//1739 1945//1739 1938//1739 +f 1939//1740 1946//1740 1945//1740 +f 1947//1741 1945//1741 1946//1741 +f 1947//1742 1946//1742 1948//1742 +f 1947//1743 1948//1743 1949//1743 +f 1947//1744 1949//1744 1863//1744 +f 1950//1745 1949//1745 1948//1745 +f 1948//1746 1951//1746 1950//1746 +f 1952//1747 1950//1747 1951//1747 +f 1952//210 1951//210 1953//210 +f 1282//1748 1281//1748 1279//1748 +f 1954//1749 1942//1749 1955//1749 +f 1898//210 1952//210 1953//210 +f 1898//210 1953//210 1956//210 +f 1282//1750 1279//1750 1293//1750 +f 1957//1751 1954//1751 1955//1751 +f 1617//1752 1652//1752 1866//1752 +f 1956//1753 1958//1753 1901//1753 +f 1901//1754 1958//1754 1959//1754 +f 1960//1755 1959//1755 1958//1755 +f 1961//1756 1957//1756 1962//1756 +f 1963//1757 1964//1757 1941//1757 +f 1965//210 1960//210 1966//210 +f 1965//210 1966//210 1967//210 +f 1968//1758 1962//1758 1957//1758 +f 1781//1759 833//1759 1969//1759 +f 1967//210 1970//210 1965//210 +f 1971//210 1965//210 1970//210 +f 1972//1760 1941//1760 1964//1760 +f 1973//1761 1704//1761 1820//1761 +f 1826//243 1825//243 1974//243 +f 1974//243 1975//243 1976//243 +f 1976//1762 1977//1762 1978//1762 +f 1979//1763 1980//1763 1905//1763 +f 1971//1764 1980//1764 1979//1764 +f 1971//1765 1981//1765 1980//1765 +f 1981//1766 1909//1766 1980//1766 +f 1978//1767 1982//1767 1925//1767 +f 1920//1768 1924//1768 1925//1768 +f 1981//1769 1983//1769 1909//1769 +f 1983//1770 1984//1770 1909//1770 +f 1984//210 1985//210 1909//210 +f 1910//210 1909//210 1985//210 +f 1986//1771 1695//1771 1943//1771 +f 1985//210 1987//210 1910//210 +f 1910//1772 1987//1772 1988//1772 +f 1982//1773 1989//1773 1990//1773 +f 1944//1774 1955//1774 1942//1774 +f 1988//1775 1991//1775 1992//1775 +f 1991//1776 1993//1776 1992//1776 +f 1994//1777 1695//1777 1995//1777 +f 1992//1778 1993//1778 1996//1778 +f 1996//1779 1997//1779 1992//1779 +f 1992//1780 1997//1780 1998//1780 +f 1998//1781 1988//1781 1992//1781 +f 1988//1782 1998//1782 1911//1782 +f 1911//1783 1998//1783 1913//1783 +f 1998//1784 1997//1784 1913//1784 +f 1968//1785 1975//1785 1974//1785 +f 1913//1786 1997//1786 1915//1786 +f 1936//216 1915//216 1997//216 +f 1936//216 1997//216 1996//216 +f 1936//216 1996//216 1993//216 +f 1993//1787 1991//1787 1939//1787 +f 1999//1788 1939//1788 1991//1788 +f 1999//1789 1991//1789 2000//1789 +f 2000//1790 1946//1790 1999//1790 +f 1948//1791 1946//1791 2000//1791 +f 1985//1792 1948//1792 2000//1792 +f 1985//1793 2000//1793 1987//1793 +f 1796//1794 1845//1794 2001//1794 +f 1968//1795 1957//1795 1955//1795 +f 1977//1796 1982//1796 1978//1796 +f 2002//1797 1988//1797 1987//1797 +f 1982//1798 1977//1798 1989//1798 +f 1987//1799 2000//1799 2002//1799 +f 1975//1474 1977//1474 1976//1474 +f 1991//1800 2002//1800 2000//1800 +f 2002//1801 1991//1801 1988//1801 +f 1995//1802 1845//1802 1994//1802 +f 1975//1803 1989//1803 1977//1803 +f 1975//1804 1968//1804 1989//1804 +f 2003//1805 1845//1805 1995//1805 +f 1985//210 1984//210 1953//210 +f 1953//1806 1984//1806 1983//1806 +f 1983//1807 2004//1807 1953//1807 +f 2004//1808 1983//1808 1967//1808 +f 1968//210 1955//210 1989//210 +f 1955//210 1944//210 1989//210 +f 1983//1809 1981//1809 1970//1809 +f 1989//1810 1944//1810 1990//1810 +f 1970//1811 1981//1811 1971//1811 +f 1944//1812 1928//1812 1929//1812 +f 1971//1813 1979//1813 1965//1813 +f 1965//1814 1979//1814 2005//1814 +f 2006//1815 2003//1815 2007//1815 +f 2008//1816 2006//1816 2007//1816 +f 1979//1817 1904//1817 2005//1817 +f 1970//1818 1967//1818 1983//1818 +f 1929//1819 1990//1819 1944//1819 +f 1958//1820 2004//1820 1967//1820 +f 2004//1821 1958//1821 1953//1821 +f 1926//1822 1990//1822 1929//1822 +f 2009//1823 1965//1823 2005//1823 +f 2009//1824 2005//1824 1902//1824 +f 2009//1825 1902//1825 1959//1825 +f 1966//1826 1958//1826 1967//1826 +f 1965//1827 2009//1827 1960//1827 +f 1966//1828 1960//1828 1958//1828 +f 2009//1829 1959//1829 1960//1829 +f 1926//1830 1925//1830 1990//1830 +f 1956//1831 1953//1831 1958//1831 +f 1898//1832 2010//1832 1952//1832 +f 1982//1833 1990//1833 1925//1833 +f 1866//1834 1784//1834 2011//1834 +f 1949//1835 2010//1835 2012//1835 +f 1867//1836 1949//1836 2012//1836 +f 2012//1837 1873//1837 1867//1837 +f 2013//1838 1873//1838 2012//1838 +f 2013//1839 2014//1839 1873//1839 +f 2014//216 2015//216 1873//216 +f 275//1840 1866//1840 2011//1840 +f 1924//1841 1978//1841 1925//1841 +f 2016//1842 1880//1842 2015//1842 +f 1924//210 1919//210 2017//210 +f 686//1843 2018//1843 560//1843 +f 2016//1844 2019//1844 1881//1844 +f 2019//1845 1882//1845 1881//1845 +f 2020//1846 2019//1846 2016//1846 +f 2020//1847 2016//1847 2021//1847 +f 2022//1848 2020//1848 2021//1848 +f 2015//216 2022//216 2021//216 +f 2022//1849 2014//1849 2020//1849 +f 2020//1850 2014//1850 2013//1850 +f 2023//1851 2020//1851 2013//1851 +f 2024//1852 1831//1852 2025//1852 +f 2026//1853 2027//1853 1842//1853 +f 2013//1854 2010//1854 2023//1854 +f 2028//1855 1840//1855 1719//1855 +f 2023//1856 2019//1856 2020//1856 +f 1898//1857 2019//1857 2023//1857 +f 2026//1858 2029//1858 2027//1858 +f 2015//1859 2021//1859 2016//1859 +f 2022//216 2015//216 2014//216 +f 2026//1860 2030//1860 2029//1860 +f 2010//1861 2013//1861 2012//1861 +f 2023//1862 2010//1862 1898//1862 +f 2031//1863 2030//1863 2026//1863 +f 1840//216 1842//216 1720//216 +f 1985//210 1953//210 1951//210 +f 2010//1864 1950//1864 1952//1864 +f 1985//1865 1951//1865 1948//1865 +f 2010//1866 1949//1866 1950//1866 +f 2032//1867 1842//1867 1840//1867 +f 1863//1868 1945//1868 1947//1868 +f 1999//1869 1946//1869 1939//1869 +f 1993//216 1939//216 1936//216 +f 1938//1870 1857//1870 1937//1870 +f 1921//216 1915//216 1936//216 +f 2026//1871 1842//1871 2031//1871 +f 1995//1872 1695//1872 1986//1872 +f 1842//1873 2032//1873 2031//1873 +f 2032//1874 1840//1874 2031//1874 +f 1988//1875 1911//1875 1910//1875 +f 2031//1876 1840//1876 2028//1876 +f 1980//1877 1909//1877 1906//1877 +f 1908//1878 1912//1878 1907//1878 +f 1912//1879 1903//1879 1907//1879 +f 1980//1880 1906//1880 1905//1880 +f 1904//1881 1979//1881 1905//1881 +f 1515//1882 1507//1882 1440//1882 +f 2005//1883 1904//1883 1902//1883 +f 2028//1884 2030//1884 2031//1884 +f 1922//1885 1897//1885 1903//1885 +f 1959//1886 1902//1886 1901//1886 +f 1898//210 1956//210 1901//210 +f 1793//216 1503//216 236//216 +f 2028//1887 1719//1887 2030//1887 +f 1922//1888 1895//1888 1897//1888 +f 1898//1889 1882//1889 2019//1889 +f 1895//1890 1896//1890 1897//1890 +f 1894//1891 1893//1891 1890//1891 +f 1922//1892 1893//1892 1895//1892 +f 1893//1893 1918//1893 1892//1893 +f 1917//216 1875//216 1892//216 +f 1875//1894 1917//1894 1849//1894 +f 2008//1895 2033//1895 1995//1895 +f 2034//1896 1875//1896 1849//1896 +f 2029//1897 2030//1897 1719//1897 +f 1893//1898 1891//1898 1890//1898 +f 1894//1899 1890//1899 1887//1899 +f 1876//1900 1887//1900 1890//1900 +f 1887//1901 1886//1901 1894//1901 +f 1886//210 1883//210 1882//210 +f 2029//1902 1719//1902 1832//1902 +f 2016//1903 1881//1903 1880//1903 +f 2027//1904 2029//1904 1832//1904 +f 1876//1905 2015//1905 1880//1905 +f 1887//1906 1876//1906 1879//1906 +f 1874//1907 2015//1907 1876//1907 +f 1890//1908 1875//1908 1876//1908 +f 1871//1909 1875//1909 2034//1909 +f 1874//216 1873//216 2015//216 +f 1872//1910 1871//1910 2034//1910 +f 1832//1911 1842//1911 2027//1911 +f 297//1912 439//1912 489//1912 +f 1848//1913 1872//1913 2034//1913 +f 1722//243 1842//243 1832//243 +f 1832//243 1730//243 1722//243 +f 1730//1914 1832//1914 1370//1914 +f 1873//1915 1868//1915 1867//1915 +f 1949//1916 1867//1916 1863//1916 +f 1716//1914 1370//1914 1832//1914 +f 1863//216 1860//216 1945//216 +f 1716//1624 1831//1624 1370//1624 +f 1862//209 1370//209 1831//209 +f 1938//1917 1860//1917 1859//1917 +f 1859//1918 1858//1918 1938//1918 +f 1857//1919 1938//1919 1858//1919 +f 1937//1920 1857//1920 1854//1920 +f 2025//1921 2035//1921 2024//1921 +f 1855//1922 869//1922 867//1922 +f 1853//1923 1932//1923 1854//1923 +f 2035//1924 2036//1924 2037//1924 +f 1852//1925 1932//1925 1853//1925 +f 1852//1926 1851//1926 1932//1926 +f 2024//1927 1864//1927 1368//1927 +f 1849//1928 1917//1928 1851//1928 +f 2037//1929 2038//1929 2039//1929 +f 1852//210 1844//210 1847//210 +f 1852//210 863//210 1844//210 +f 863//210 2040//210 1844//210 +f 859//1930 2040//1930 863//1930 +f 2040//1931 859//1931 1420//1931 +f 2041//1932 2039//1932 2042//1932 +f 2034//1933 1849//1933 1848//1933 +f 880//210 1872//210 1848//210 +f 2043//1934 2044//1934 2045//1934 +f 1847//210 1844//210 1846//210 +f 2046//1935 2007//1935 2043//1935 +f 1420//1936 1844//1936 2040//1936 +f 773//216 1843//216 776//216 +f 1841//1937 2047//1937 776//1937 +f 2007//1938 2048//1938 2049//1938 +f 776//1939 2047//1939 2050//1939 +f 2047//1940 2051//1940 2050//1940 +f 2051//1941 2052//1941 2050//1941 +f 2049//1942 2053//1942 2045//1942 +f 2053//1943 2054//1943 2045//1943 +f 1864//1944 1869//1944 1386//1944 +f 2055//1945 2050//1945 2052//1945 +f 2056//1946 2055//1946 2052//1946 +f 2057//233 2058//233 2041//233 +f 2059//1947 2058//1947 2057//1947 +f 2056//1948 2052//1948 2060//1948 +f 2052//1949 2061//1949 2060//1949 +f 236//216 1503//216 2062//216 +f 2062//216 2063//216 236//216 +f 2060//1950 2064//1950 2065//1950 +f 2066//210 2067//210 2059//210 +f 2053//1951 2068//1951 2069//1951 +f 407//1952 209//1952 205//1952 +f 2064//1953 2070//1953 2065//1953 +f 1877//1954 1759//1954 1869//1954 +f 2071//210 2066//210 2059//210 +f 2072//1955 2073//1955 2070//1955 +f 2074//210 2071//210 2075//210 +f 2076//1956 2070//1956 2073//1956 +f 2077//1957 2076//1957 2073//1957 +f 1900//210 2078//210 2079//210 +f 2073//1958 2080//1958 2077//1958 +f 2081//210 2074//210 2082//210 +f 2081//210 2082//210 2083//210 +f 2084//1959 2077//1959 2061//1959 +f 2061//1960 2085//1960 2084//1960 +f 2085//1961 2086//1961 2084//1961 +f 2086//1962 2076//1962 2084//1962 +f 2087//1963 2088//1963 2083//1963 +f 2086//1964 2065//1964 2076//1964 +f 2065//1965 2070//1965 2076//1965 +f 2056//1966 2065//1966 2086//1966 +f 2085//1967 2056//1967 2086//1967 +f 2085//1968 2089//1968 2056//1968 +f 2090//210 2087//210 2091//210 +f 560//1969 2018//1969 2092//1969 +f 1841//1970 2093//1970 2089//1970 +f 1841//1971 2089//1971 2051//1971 +f 2051//1972 2047//1972 1841//1972 +f 2094//1973 2025//1973 2095//1973 +f 2093//1974 2055//1974 2089//1974 +f 2093//1975 1839//1975 2055//1975 +f 2055//1976 1839//1976 777//1976 +f 2051//1977 2089//1977 2085//1977 +f 2082//1978 2087//1978 2083//1978 +f 2095//1979 2087//1979 2082//1979 +f 2061//1980 2051//1980 2085//1980 +f 2095//1981 2082//1981 2094//1981 +f 2096//210 2082//210 2074//210 +f 2096//1982 2097//1982 2098//1982 +f 2045//1983 2054//1983 2043//1983 +f 2054//1984 2069//1984 2099//1984 +f 2077//1985 2080//1985 2060//1985 +f 2100//1986 2098//1986 2097//1986 +f 2043//1987 2099//1987 2101//1987 +f 2038//1988 2037//1988 2036//1988 +f 2080//1989 2102//1989 2103//1989 +f 2064//1990 2080//1990 2103//1990 +f 1181//210 825//210 1009//210 +f 2043//1991 2101//1991 2046//1991 +f 756//243 737//243 2104//243 +f 2105//1992 2103//1992 2102//1992 +f 2102//1993 2106//1993 2105//1993 +f 2038//1994 2042//1994 2039//1994 +f 2041//233 2042//233 2057//233 +f 2107//1995 2105//1995 2106//1995 +f 2107//1996 2106//1996 2108//1996 +f 2108//1997 2109//1997 2107//1997 +f 2107//1998 2109//1998 2110//1998 +f 2075//210 2096//210 2074//210 +f 2111//1999 2048//1999 2046//1999 +f 2096//2000 2075//2000 2097//2000 +f 2112//2001 2105//2001 2107//2001 +f 2105//2002 2112//2002 2103//2002 +f 2070//2003 2103//2003 2112//2003 +f 2070//2004 2112//2004 2072//2004 +f 2113//2005 2072//2005 2112//2005 +f 2114//2006 2097//2006 2075//2006 +f 2115//2007 2072//2007 2113//2007 +f 2115//2008 2113//2008 2116//2008 +f 2115//2009 2116//2009 2110//2009 +f 2117//2010 2115//2010 2110//2010 +f 2114//210 2118//210 2057//210 +f 272//2011 1599//2011 275//2011 +f 2119//2012 2120//2012 2117//2012 +f 2121//2013 2119//2013 2117//2013 +f 2110//2014 2121//2014 2117//2014 +f 2114//210 2122//210 2118//210 +f 2123//2015 2122//2015 2114//2015 +f 2114//2016 2075//2016 2123//2016 +f 2123//210 2075//210 2071//210 +f 2124//2017 2125//2017 2126//2017 +f 2127//2018 2124//2018 2126//2018 +f 2048//2019 2007//2019 2046//2019 +f 2059//210 2123//210 2071//210 +f 2122//2020 2123//2020 2059//2020 +f 2011//2021 1784//2021 275//2021 +f 2062//216 2128//216 2063//216 +f 2129//2022 2068//2022 2111//2022 +f 2126//2023 2130//2023 2131//2023 +f 2132//2024 1830//2024 1833//2024 +f 1181//2025 1179//2025 808//2025 +f 2133//2026 2131//2026 2134//2026 +f 2133//2027 2134//2027 2135//2027 +f 2059//2028 2118//2028 2122//2028 +f 2133//2029 2135//2029 2117//2029 +f 2136//2030 2117//2030 2135//2030 +f 2129//2031 2111//2031 2101//2031 +f 2129//2032 2137//2032 2138//2032 +f 2136//2033 2139//2033 2108//2033 +f 2057//2034 2118//2034 2059//2034 +f 1282//2035 1293//2035 1355//2035 +f 1355//2036 1377//2036 1282//2036 +f 2139//2037 2134//2037 2108//2037 +f 2139//2038 2136//2038 2135//2038 +f 2106//2039 2136//2039 2108//2039 +f 2106//2040 2115//2040 2136//2040 +f 2097//210 2114//210 2057//210 +f 2106//2041 2073//2041 2115//2041 +f 2073//2042 2072//2042 2115//2042 +f 2057//210 2042//210 2097//210 +f 2042//210 2100//210 2097//210 +f 2134//2043 2139//2043 2135//2043 +f 2042//210 2038//210 2100//210 +f 2133//2044 2120//2044 2131//2044 +f 2131//2045 2120//2045 2127//2045 +f 2038//210 2036//210 2100//210 +f 2134//2046 2131//2046 2130//2046 +f 2134//2047 2130//2047 2140//2047 +f 2036//2048 2098//2048 2100//2048 +f 2134//2049 2140//2049 2119//2049 +f 2134//2050 2119//2050 2109//2050 +f 2098//2051 2036//2051 2035//2051 +f 2140//2052 2130//2052 2141//2052 +f 1784//2053 1800//2053 1785//2053 +f 2125//2054 2140//2054 2141//2054 +f 2125//2055 2141//2055 2142//2055 +f 2101//2056 2111//2056 2046//2056 +f 2098//2057 2035//2057 2025//2057 +f 2142//2058 2143//2058 2144//2058 +f 2025//2059 2094//2059 2098//2059 +f 2143//2060 2145//2060 2144//2060 +f 2098//210 2094//210 2082//210 +f 2082//210 2096//210 2098//210 +f 2099//2061 2069//2061 2146//2061 +f 2147//2062 2148//2062 2144//2062 +f 2147//2063 2144//2063 2149//2063 +f 2150//2064 2147//2064 2149//2064 +f 2150//2065 2149//2065 2151//2065 +f 2095//210 2091//210 2087//210 +f 2151//2066 2152//2066 2150//2066 +f 2095//2067 2025//2067 2091//2067 +f 1687//2068 1664//2068 1738//2068 +f 1664//210 1821//210 1738//210 +f 1784//216 1785//216 270//216 +f 2153//2069 2152//2069 2154//2069 +f 2154//2070 2155//2070 2153//2070 +f 2153//2071 2155//2071 2145//2071 +f 2156//2072 2153//2072 2145//2072 +f 2157//2073 2091//2073 2025//2073 +f 2157//2074 2090//2074 2091//2074 +f 2143//2075 2130//2075 2156//2075 +f 2143//2076 2141//2076 2130//2076 +f 2154//2077 2158//2077 2155//2077 +f 2158//2078 2159//2078 2155//2078 +f 2087//2079 2090//2079 2157//2079 +f 2088//2080 2087//2080 2157//2080 +f 2088//2081 2157//2081 2017//2081 +f 2155//2082 2159//2082 2160//2082 +f 2149//2083 2155//2083 2160//2083 +f 2160//2084 2151//2084 2149//2084 +f 408//2085 297//2085 296//2085 +f 2068//2086 2146//2086 2069//2086 +f 2161//2087 2160//2087 2162//2087 +f 2161//2088 2162//2088 2163//2088 +f 2068//2089 2129//2089 2146//2089 +f 2017//2090 2083//2090 2088//2090 +f 2081//210 2083//210 2017//210 +f 2092//2091 646//2091 560//2091 +f 2164//2092 2165//2092 2079//2092 +f 2160//2093 2166//2093 2167//2093 +f 2081//2094 2017//2094 2168//2094 +f 2165//2095 2164//2095 2169//2095 +f 2129//2096 2138//2096 2170//2096 +f 2154//2097 2151//2097 2167//2097 +f 2166//2098 2154//2098 2167//2098 +f 2158//2099 2154//2099 2166//2099 +f 2017//2100 2171//2100 2172//2100 +f 2172//2101 2171//2101 2173//2101 +f 2158//2102 2174//2102 2175//2102 +f 2176//2103 2175//2103 2174//2103 +f 1900//210 2079//210 1916//210 +f 1916//2104 2079//2104 2165//2104 +f 2177//2105 2176//2105 2174//2105 +f 2178//2106 2177//2106 2174//2106 +f 2178//2107 2174//2107 2161//2107 +f 2138//2108 2179//2108 2170//2108 +f 209//2109 362//2109 253//2109 +f 1916//2110 2017//2110 1919//2110 +f 2178//2111 2180//2111 2177//2111 +f 2180//2112 2181//2112 2177//2112 +f 1440//2113 1498//2113 1515//2113 +f 2017//2114 1916//2114 2171//2114 +f 2181//2115 2180//2115 2182//2115 +f 1916//2116 2173//2116 2171//2116 +f 1916//2104 2165//2104 2173//2104 +f 2183//2117 2184//2117 2181//2117 +f 2183//2118 2181//2118 2185//2118 +f 2172//2119 2173//2119 2165//2119 +f 2186//2120 2187//2120 2188//2120 +f 2189//2121 2190//2121 2063//2121 +f 2183//2122 2163//2122 2184//2122 +f 2165//2123 2169//2123 2172//2123 +f 2163//2124 2183//2124 2178//2124 +f 2169//2125 2017//2125 2172//2125 +f 2169//2126 2168//2126 2017//2126 +f 2183//2127 2191//2127 2178//2127 +f 2180//2128 2178//2128 2191//2128 +f 2191//2129 2192//2129 2180//2129 +f 2169//2130 2164//2130 2168//2130 +f 756//243 2104//243 770//243 +f 1274//216 1276//216 1323//216 +f 2192//2131 2193//2131 2194//2131 +f 2193//2132 2195//2132 2194//2132 +f 2195//2133 2196//2133 2194//2133 +f 2081//2134 2168//2134 2164//2134 +f 2196//2135 2192//2135 2194//2135 +f 2196//2136 2182//2136 2192//2136 +f 2196//2137 2197//2137 2182//2137 +f 2164//209 2079//209 2081//209 +f 2063//2121 2198//2121 2189//2121 +f 2199//2138 2197//2138 2196//2138 +f 2188//2139 2200//2139 2201//2139 +f 2196//2140 2195//2140 2199//2140 +f 2199//2141 2195//2141 2202//2141 +f 452//2142 402//2142 370//2142 +f 2203//2143 2201//2143 2204//2143 +f 2081//2144 2079//2144 2078//2144 +f 2078//2145 2074//2145 2081//2145 +f 2078//2146 1900//2146 2074//2146 +f 2071//2147 2074//2147 1900//2147 +f 2186//2148 2203//2148 2205//2148 +f 2186//2149 2205//2149 2206//2149 +f 1760//210 2207//210 1900//210 +f 2071//2150 1900//2150 2207//2150 +f 2207//2151 2066//2151 2071//2151 +f 1440//2152 1494//2152 1498//2152 +f 1760//210 2208//210 2207//210 +f 2185//2153 2197//2153 2209//2153 +f 2210//2154 2209//2154 2197//2154 +f 2208//2155 2066//2155 2207//2155 +f 2209//2156 2183//2156 2185//2156 +f 2067//2155 2066//2155 2208//2155 +f 1760//210 2211//210 2208//210 +f 457//2157 406//2157 452//2157 +f 2181//2158 2197//2158 2185//2158 +f 2208//2159 2211//2159 2067//2159 +f 2067//2160 2211//2160 2212//2160 +f 2209//2161 2213//2161 2192//2161 +f 2192//2162 2213//2162 2193//2162 +f 2214//2163 2193//2163 2213//2163 +f 2213//2164 2202//2164 2214//2164 +f 2202//2165 2215//2165 2214//2165 +f 2216//2166 2214//2166 2215//2166 +f 2216//2167 2215//2167 2217//2167 +f 2218//2168 1878//2168 1877//2168 +f 2219//2169 2216//2169 2217//2169 +f 2219//2170 2217//2170 2220//2170 +f 1760//210 2221//210 2211//210 +f 2195//2171 2219//2171 2220//2171 +f 2220//2172 2222//2172 2195//2172 +f 2221//2173 2212//2173 2211//2173 +f 296//2174 295//2174 370//2174 +f 2223//2175 2212//2175 2221//2175 +f 2224//2176 2215//2176 2222//2176 +f 2223//210 1884//210 2218//210 +f 1760//210 1885//210 2221//210 +f 1885//2177 2223//2177 2221//2177 +f 770//2178 2104//2178 1307//2178 +f 2223//2179 1885//2179 1884//2179 +f 2225//2180 2226//2180 2227//2180 +f 2227//2181 2228//2181 2225//2181 +f 2229//2182 2230//2182 2231//2182 +f 2187//2183 2232//2183 2170//2183 +f 1884//2184 1878//2184 2218//2184 +f 2233//2185 2225//2185 2234//2185 +f 2212//210 2223//210 2218//210 +f 2235//2186 2236//2186 2230//2186 +f 2237//2187 2238//2187 2233//2187 +f 2233//2188 2239//2188 2237//2188 +f 2218//210 1877//210 2212//210 +f 2240//2189 2237//2189 2239//2189 +f 2188//2190 2241//2190 2200//2190 +f 2200//2191 2242//2191 2201//2191 +f 2067//210 2212//210 1877//210 +f 2240//2192 2243//2192 2244//2192 +f 1877//210 1869//210 2067//210 +f 1869//210 2059//210 2067//210 +f 2245//2193 2246//2193 2244//2193 +f 2244//2194 2247//2194 2245//2194 +f 2245//2195 2247//2195 2248//2195 +f 2248//2196 2249//2196 2245//2196 +f 2246//2197 2245//2197 2249//2197 +f 2198//216 2063//216 2128//216 +f 1869//478 2058//478 2059//478 +f 2041//210 2058//210 1869//210 +f 2248//2198 2250//2198 2249//2198 +f 2249//2199 2250//2199 2251//2199 +f 2250//2200 2252//2200 2251//2200 +f 2251//2201 2252//2201 2253//2201 +f 1869//210 1864//210 2041//210 +f 2039//210 2041//210 1864//210 +f 2037//210 2039//210 1864//210 +f 2253//2202 2254//2202 2251//2202 +f 2246//2203 2251//2203 2254//2203 +f 1864//210 2024//210 2037//210 +f 2254//2204 2255//2204 2246//2204 +f 2255//2205 2256//2205 2246//2205 +f 1935//2206 1785//2206 1800//2206 +f 2035//210 2037//210 2024//210 +f 2257//2207 2258//2207 2259//2207 +f 2260//2208 2261//2208 2257//2208 +f 1862//2209 2024//2209 1368//2209 +f 1831//2210 2024//2210 1862//2210 +f 1494//2211 1440//2211 1428//2211 +f 2256//2212 2250//2212 2262//2212 +f 2240//2213 2256//2213 2262//2213 +f 2263//2214 2250//2214 2256//2214 +f 2255//2215 2263//2215 2256//2215 +f 1714//2216 2025//2216 1831//2216 +f 2264//2217 2263//2217 2255//2217 +f 2025//2218 1714//2218 1829//2218 +f 2157//2219 2025//2219 1829//2219 +f 2264//2220 2265//2220 2252//2220 +f 2265//2221 2266//2221 2252//2221 +f 2265//2222 2267//2222 2266//2222 +f 1829//2223 2017//2223 2157//2223 +f 1829//210 1924//210 2017//210 +f 2267//2224 2268//2224 2269//2224 +f 2268//2225 2270//2225 2269//2225 +f 1978//2226 1924//2226 1829//2226 +f 2271//2227 2269//2227 2270//2227 +f 2271//2228 2272//2228 2269//2228 +f 2272//2229 2273//2229 2269//2229 +f 2198//216 2128//216 2274//216 +f 2269//2230 2273//2230 2275//2230 +f 1829//2231 1976//2231 1978//2231 +f 2266//2232 2269//2232 2275//2232 +f 2276//2233 2132//2233 1833//2233 +f 2104//2234 737//2234 1567//2234 +f 1976//2235 1829//2235 1706//2235 +f 2253//2236 2266//2236 2277//2236 +f 1976//2237 1706//2237 1826//2237 +f 1974//243 1976//243 1826//243 +f 2278//2238 2279//2238 2280//2238 +f 2274//233 2281//233 2198//233 +f 2277//2239 2282//2239 2264//2239 +f 2277//2240 2264//2240 2254//2240 +f 1800//2241 1850//2241 1935//2241 +f 2205//2242 2203//2242 2283//2242 +f 1685//2243 1935//2243 1850//2243 +f 2275//2244 2284//2244 2282//2244 +f 1826//2245 1705//2245 1825//2245 +f 2189//233 2198//233 2281//233 +f 2280//2246 2285//2246 2259//2246 +f 2260//2247 2286//2247 2261//2247 +f 1825//2248 1704//2248 1973//2248 +f 2272//2249 2287//2249 2273//2249 +f 2287//2250 2288//2250 2273//2250 +f 2289//2251 2288//2251 2287//2251 +f 2289//2252 2287//2252 2290//2252 +f 2290//2253 2271//2253 2289//2253 +f 1305//2254 2286//2254 1306//2254 +f 2291//2255 2289//2255 2271//2255 +f 1973//2256 1974//2256 1825//2256 +f 2270//2257 2291//2257 2271//2257 +f 1973//2258 1820//2258 1974//2258 +f 2291//2259 2270//2259 2289//2259 +f 2289//2260 2270//2260 2284//2260 +f 1820//2261 1702//2261 1927//2261 +f 1930//2262 1820//2262 1927//2262 +f 1306//2263 2280//2263 2279//2263 +f 1941//2264 1930//2264 1931//2264 +f 1940//2265 1963//2265 1941//2265 +f 2292//2266 2293//2266 2272//2266 +f 2189//210 2281//210 2190//210 +f 948//210 2190//210 2281//210 +f 1972//2267 1930//2267 1941//2267 +f 1972//2268 1820//2268 1930//2268 +f 1972//2269 1974//2269 1820//2269 +f 2294//2270 2295//2270 2296//2270 +f 2294//2271 2296//2271 2297//2271 +f 2298//2272 2294//2272 2297//2272 +f 1972//2273 1964//2273 1974//2273 +f 1964//2274 1968//2274 1974//2274 +f 2299//2275 2297//2275 2300//2275 +f 2301//2276 2299//2276 2300//2276 +f 2280//2277 1306//2277 2285//2277 +f 2300//2278 2302//2278 2301//2278 +f 2303//2279 1306//2279 2279//2279 +f 1962//210 1968//210 1964//210 +f 1964//2280 1963//2280 1962//2280 +f 2304//2281 2299//2281 2301//2281 +f 2301//2282 2305//2282 2304//2282 +f 2306//2283 2304//2283 2305//2283 +f 2306//2284 2305//2284 2307//2284 +f 1963//2285 1961//2285 1962//2285 +f 1957//210 1961//210 1963//210 +f 2308//2286 2309//2286 2307//2286 +f 2309//2287 2310//2287 2307//2287 +f 2310//2288 2311//2288 2307//2288 +f 2312//2289 2311//2289 2310//2289 +f 1838//2290 1685//2290 1850//2290 +f 1954//210 1957//210 1963//210 +f 2313//2291 2314//2291 2312//2291 +f 2313//2292 2312//2292 2309//2292 +f 2315//2293 1304//2293 2303//2293 +f 1838//2294 1850//2294 1943//2294 +f 948//210 2316//210 2190//210 +f 2314//2295 2313//2295 2317//2295 +f 2318//2296 2314//2296 2317//2296 +f 2317//2297 2311//2297 2318//2297 +f 1963//210 1940//210 1954//210 +f 1940//210 1933//210 1954//210 +f 2319//2298 2320//2298 2318//2298 +f 948//2299 236//2299 2316//2299 +f 2318//2300 2320//2300 2314//2300 +f 2320//2301 2321//2301 2314//2301 +f 2314//2302 2321//2302 2322//2302 +f 1942//210 1954//210 1933//210 +f 2322//2303 2312//2303 2314//2303 +f 2315//2304 245//2304 244//2304 +f 2322//2305 2323//2305 2312//2305 +f 1943//2306 1695//2306 1838//2306 +f 2323//2307 2318//2307 2312//2307 +f 1940//2308 1931//2308 1933//2308 +f 1928//2309 1933//2309 1931//2309 +f 2323//2310 2324//2310 2325//2310 +f 1931//2311 1927//2311 1928//2311 +f 2326//2312 2325//2312 2324//2312 +f 1305//2313 244//2313 2327//2313 +f 2328//2314 2326//2314 2324//2314 +f 1926//204 1928//204 1927//204 +f 2324//2315 2329//2315 2328//2315 +f 2330//2316 2331//2316 2332//2316 +f 2329//2317 2333//2317 2328//2317 +f 1927//204 1819//204 1926//204 +f 1920//2318 1819//2318 1701//2318 +f 2334//2319 2335//2319 2327//2319 +f 2336//2320 2337//2320 2333//2320 +f 2329//2321 2336//2321 2333//2321 +f 1926//2322 1819//2322 1920//2322 +f 1920//210 1817//210 1919//210 +f 2329//2323 2324//2323 2321//2323 +f 2321//2324 2324//2324 2322//2324 +f 2321//2325 2336//2325 2329//2325 +f 2337//2326 2336//2326 2338//2326 +f 2337//2327 2338//2327 2339//2327 +f 1817//2328 1899//2328 1919//2328 +f 2339//2329 2340//2329 2337//2329 +f 2341//2330 2337//2330 2340//2330 +f 1428//2331 1439//2331 1429//2331 +f 2340//2332 2342//2332 2341//2332 +f 1814//210 1899//210 2343//210 +f 1899//2333 1817//2333 2343//2333 +f 2341//2334 2344//2334 2345//2334 +f 1698//2335 2343//2335 1817//2335 +f 1814//210 2343//210 1698//210 +f 246//2336 2331//2336 2335//2336 +f 2346//2337 2332//2337 2331//2337 +f 1055//2338 1870//2338 2347//2338 +f 2337//2339 2345//2339 2348//2339 +f 2349//2340 2337//2340 2348//2340 +f 2349//2341 2348//2341 2350//2341 +f 2349//2342 2350//2342 2333//2342 +f 784//2343 789//2343 797//2343 +f 1696//2344 1626//2344 1697//2344 +f 2351//2345 2350//2345 2352//2345 +f 2351//2346 2352//2346 2340//2346 +f 2351//2347 2340//2347 2338//2347 +f 2351//2348 2338//2348 2326//2348 +f 2351//2349 2326//2349 2328//2349 +f 246//2350 1889//2350 281//2350 +f 1888//2351 2353//2351 281//2351 +f 1696//2352 1804//2352 1626//2352 +f 2354//2353 2326//2353 2336//2353 +f 2354//2354 2336//2354 2320//2354 +f 2354//2355 2320//2355 2325//2355 +f 2355//2356 1691//2356 1627//2356 +f 1804//210 1691//210 2355//210 +f 2355//210 2356//210 1804//210 +f 1889//2357 2357//2357 1888//2357 +f 2358//2358 2357//2358 1889//2358 +f 2359//2359 2352//2359 2350//2359 +f 2359//2360 2350//2360 2348//2360 +f 1799//2361 2355//2361 1627//2361 +f 2348//2362 2360//2362 2359//2362 +f 2361//2363 2359//2363 2360//2363 +f 2362//2364 2361//2364 2360//2364 +f 2355//210 1799//210 2356//210 +f 2348//2365 2362//2365 2360//2365 +f 2362//2366 2348//2366 2363//2366 +f 2356//2367 1799//2367 1626//2367 +f 2364//2368 2362//2368 2363//2368 +f 2344//2369 2364//2369 2363//2369 +f 2357//2370 2358//2370 2365//2370 +f 2366//2371 2367//2371 2353//2371 +f 1788//2372 1695//2372 1994//2372 +f 1804//2373 2356//2373 1626//2373 +f 2368//2374 2369//2374 2341//2374 +f 2368//2375 2341//2375 2370//2375 +f 2352//2376 2368//2376 2370//2376 +f 2369//2377 2368//2377 2359//2377 +f 2371//2378 2369//2378 2359//2378 +f 236//2379 2063//2379 2316//2379 +f 2372//2380 2369//2380 2371//2380 +f 2373//2381 2372//2381 2371//2381 +f 2373//2382 2371//2382 2361//2382 +f 2373//2383 2361//2383 2374//2383 +f 2190//2384 2316//2384 2063//2384 +f 2375//2385 1888//2385 2376//2385 +f 393//2386 1442//2386 2377//2386 +f 2378//2387 2374//2387 2379//2387 +f 2379//2388 2380//2388 2378//2388 +f 1626//210 1625//210 1697//210 +f 2378//2389 2380//2389 2381//2389 +f 2378//2390 2381//2390 2372//2390 +f 2372//2391 2381//2391 2344//2391 +f 2382//2392 1446//2392 1445//2392 +f 1055//2393 2347//2393 1053//2393 +f 2380//2394 2383//2394 2381//2394 +f 802//2395 774//2395 784//2395 +f 562//210 2384//210 1587//210 +f 2364//2396 2381//2396 2385//2396 +f 2381//2397 2386//2397 2385//2397 +f 1845//2398 1788//2398 1994//2398 +f 2376//2399 2387//2399 2375//2399 +f 2347//2400 1492//2400 1053//2400 +f 2386//2401 2388//2401 2379//2401 +f 2379//2402 2374//2402 2386//2402 +f 1538//2403 1668//2403 910//2403 +f 1206//2404 2389//2404 1207//2404 +f 783//2405 775//2405 780//2405 +f 1421//2406 1564//2406 901//2406 +f 779//2407 1839//2407 780//2407 +f 777//2408 1839//2408 779//2408 +f 2390//2409 2391//2409 2392//2409 +f 2392//2410 2380//2410 2390//2410 +f 2392//2411 2391//2411 2393//2411 +f 2394//2412 2392//2412 2393//2412 +f 2395//2413 2394//2413 2393//2413 +f 2393//2414 2396//2414 2395//2414 +f 1530//2415 1538//2415 1533//2415 +f 2396//2416 2397//2416 2395//2416 +f 2398//2417 2395//2417 2397//2417 +f 1344//210 1538//210 1530//210 +f 777//2418 776//2418 2050//2418 +f 2399//2419 2398//2419 2400//2419 +f 2400//2420 2401//2420 2399//2420 +f 2402//2421 2403//2421 2357//2421 +f 2357//2422 2403//2422 2376//2422 +f 2404//2423 2399//2423 2401//2423 +f 1492//2424 2405//2424 2406//2424 +f 2404//2425 2401//2425 2407//2425 +f 245//2426 2331//2426 246//2426 +f 2404//2427 2407//2427 2399//2427 +f 2399//2428 2407//2428 2408//2428 +f 297//2429 480//2429 295//2429 +f 2399//2430 2408//2430 2409//2430 +f 872//216 773//216 545//216 +f 2410//2431 2387//2431 2411//2431 +f 2406//2432 2405//2432 2412//2432 +f 2413//2433 2389//2433 2410//2433 +f 2389//2434 2414//2434 2415//2434 +f 2331//2435 245//2435 2346//2435 +f 605//210 2406//210 2412//210 +f 1538//2436 1344//2436 1668//2436 +f 2416//2437 2414//2437 2417//2437 +f 2394//2438 2418//2438 2419//2438 +f 774//2439 771//2439 545//2439 +f 1164//210 1144//210 1139//210 +f 2392//2440 2394//2440 2420//2440 +f 2421//2441 2392//2441 2420//2441 +f 2388//2442 2421//2442 2420//2442 +f 771//2443 870//2443 764//2443 +f 2388//2444 2420//2444 2422//2444 +f 2423//2445 2424//2445 1781//2445 +f 2388//2446 2422//2446 2396//2446 +f 2388//2447 2396//2447 2391//2447 +f 2397//2448 2422//2448 2420//2448 +f 1307//2449 546//2449 770//2449 +f 605//210 2412//210 1666//210 +f 2420//2450 2425//2450 2397//2450 +f 2419//2451 2397//2451 2425//2451 +f 2394//2452 2419//2452 2425//2452 +f 2398//2453 2397//2453 2419//2453 +f 2426//2454 2398//2454 2419//2454 +f 2427//243 756//243 769//243 +f 769//2455 765//2455 758//2455 +f 1344//210 1526//210 1566//210 +f 2424//2456 2423//2456 2428//2456 +f 1666//2457 1647//2457 605//2457 +f 1668//2458 1344//2458 1566//2458 +f 2410//2459 2429//2459 2417//2459 +f 765//2460 762//2460 759//2460 +f 764//243 886//243 762//243 +f 2430//2461 2431//2461 2432//2461 +f 762//534 886//534 761//534 +f 2433//2462 2434//2462 2435//2462 +f 2436//2463 2437//2463 1672//2463 +f 2438//2464 2439//2464 2440//2464 +f 2436//2465 2434//2465 2441//2465 +f 2442//2466 2424//2466 2428//2466 +f 2437//2467 2436//2467 2443//2467 +f 2444//2468 2445//2468 2437//2468 +f 2446//2469 2447//2469 2448//2469 +f 2447//2470 2432//2470 2448//2470 +f 2446//2471 2449//2471 2447//2471 +f 2447//2472 2449//2472 2450//2472 +f 2447//2473 2450//2473 2430//2473 +f 2445//2474 2451//2474 2452//2474 +f 2453//216 2454//216 2455//216 +f 2430//2475 2401//2475 2456//2475 +f 2457//2476 1543//2476 2455//2476 +f 2456//2477 2401//2477 2400//2477 +f 2431//2478 2456//2478 2400//2478 +f 2450//2479 2401//2479 2430//2479 +f 2401//2480 2450//2480 2458//2480 +f 2458//2481 2407//2481 2401//2481 +f 2459//2482 2407//2482 2458//2482 +f 2450//2483 2459//2483 2458//2483 +f 2460//2484 2459//2484 2450//2484 +f 2457//2485 1553//2485 1550//2485 +f 1852//210 864//210 863//210 +f 1202//2486 2382//2486 1445//2486 +f 2428//2487 423//2487 2442//2487 +f 2461//2488 2462//2488 2457//2488 +f 2460//2489 2463//2489 2464//2489 +f 2465//2490 2466//2490 2467//2490 +f 2468//2491 2469//2491 2470//2491 +f 2471//243 2462//243 2461//243 +f 2472//2492 2473//2492 2464//2492 +f 2473//2493 2474//2493 2464//2493 +f 2473//2494 2475//2494 2474//2494 +f 2476//2495 2467//2495 2468//2495 +f 2477//2496 2476//2496 2468//2496 +f 2474//2497 2478//2497 2446//2497 +f 2479//2498 2446//2498 2478//2498 +f 2472//2499 2479//2499 2478//2499 +f 2480//2500 2472//2500 2478//2500 +f 2481//243 2471//243 2482//243 +f 2412//210 1733//210 1666//210 +f 760//2460 759//2460 762//2460 +f 2483//2501 2484//2501 2477//2501 +f 2485//2502 2483//2502 2468//2502 +f 2486//2503 2487//2503 2488//2503 +f 2489//2504 2490//2504 2491//2504 +f 2492//2505 2489//2505 2491//2505 +f 2488//2506 2493//2506 2494//2506 +f 2494//2507 2493//2507 2495//2507 +f 2495//2508 2496//2508 2494//2508 +f 2483//2509 2497//2509 2498//2509 +f 2496//2510 2499//2510 2494//2510 +f 2494//2511 2499//2511 2486//2511 +f 2497//2512 2500//2512 2498//2512 +f 2501//2513 2416//2513 2417//2513 +f 2480//2514 2499//2514 2502//2514 +f 2006//2515 2001//2515 1845//2515 +f 2416//2516 2500//2516 2503//2516 +f 2504//2517 2416//2517 2505//2517 +f 1282//2518 1377//2518 1280//2518 +f 2506//216 2507//216 2508//216 +f 2472//2519 2464//2519 2479//2519 +f 2479//2520 2464//2520 2463//2520 +f 1845//2521 2003//2521 2006//2521 +f 2449//2522 2479//2522 2463//2522 +f 2509//216 2508//216 2507//216 +f 2509//216 2510//216 2511//216 +f 2450//2523 2449//2523 2463//2523 +f 2062//2524 2512//2524 949//2524 +f 2502//2525 2513//2525 2472//2525 +f 2513//2526 2514//2526 2472//2526 +f 2515//204 2516//204 2517//204 +f 759//2527 758//2527 765//2527 +f 2518//2528 2519//2528 2515//2528 +f 2520//2529 2514//2529 2513//2529 +f 2519//204 2518//204 2521//204 +f 2522//2530 2520//2530 2513//2530 +f 2515//2531 2521//2531 2518//2531 +f 2522//2532 2513//2532 2496//2532 +f 2522//2533 2496//2533 2495//2533 +f 2511//2534 2510//2534 2515//2534 +f 2522//2535 2495//2535 2523//2535 +f 2522//2536 2523//2536 2524//2536 +f 2510//2537 2521//2537 2515//2537 +f 757//209 756//209 2525//209 +f 756//243 754//243 737//243 +f 2524//2538 2526//2538 2527//2538 +f 2524//2539 2527//2539 2520//2539 +f 2526//2540 2493//2540 2527//2540 +f 2018//2541 686//2541 2092//2541 +f 2528//209 752//209 750//209 +f 2529//2542 2493//2542 2530//2542 +f 2531//2543 2532//2543 2533//2543 +f 2532//2544 2534//2544 2533//2544 +f 2411//2545 2535//2545 2410//2545 +f 2536//2546 2530//2546 2537//2546 +f 2538//2547 2534//2547 2539//2547 +f 2540//2548 2536//2548 2537//2548 +f 2524//2549 2540//2549 2537//2549 +f 2541//2550 2429//2550 2535//2550 +f 2534//2551 2532//2551 2531//2551 +f 2542//2552 2529//2552 2540//2552 +f 2439//2553 2429//2553 2541//2553 +f 2529//2554 2543//2554 2540//2554 +f 2529//2555 2544//2555 2543//2555 +f 2434//2556 2545//2556 2546//2556 +f 2547//2557 2543//2557 2544//2557 +f 2548//2558 2439//2558 2503//2558 +f 2549//2559 2547//2559 2544//2559 +f 1737//2560 1733//2560 2550//2560 +f 2549//2561 2544//2561 2551//2561 +f 2551//2562 2552//2562 2549//2562 +f 2552//2563 2553//2563 2549//2563 +f 2439//2564 2548//2564 2440//2564 +f 2549//2565 2553//2565 2554//2565 +f 2554//2566 2547//2566 2549//2566 +f 747//204 751//204 755//204 +f 2555//2567 2547//2567 2554//2567 +f 2555//2568 2554//2568 2556//2568 +f 2531//2569 2521//2569 2510//2569 +f 750//204 749//204 2528//204 +f 2557//216 2545//216 2558//216 +f 2547//2570 2555//2570 2559//2570 +f 2530//2571 2547//2571 2559//2571 +f 2509//2572 2560//2572 2561//2572 +f 2503//2573 2439//2573 2541//2573 +f 2562//2574 2563//2574 2555//2574 +f 1683//2575 2564//2575 1870//2575 +f 2563//2576 2559//2576 2555//2576 +f 2541//2577 2535//2577 2504//2577 +f 2563//2578 2529//2578 2559//2578 +f 2563//2579 2562//2579 2544//2579 +f 2544//2580 2562//2580 2551//2580 +f 2565//2581 2566//2581 2558//2581 +f 2551//2582 2562//2582 2567//2582 +f 2567//2583 2568//2583 2551//2583 +f 2551//2584 2568//2584 2569//2584 +f 2552//2585 2551//2585 2569//2585 +f 2568//2586 2570//2586 2569//2586 +f 2569//2587 2570//2587 2571//2587 +f 2569//2588 2571//2588 2572//2588 +f 2573//2589 2566//2589 2574//2589 +f 2569//2590 2572//2590 2553//2590 +f 2553//2591 2572//2591 2575//2591 +f 2573//2592 2576//2592 2558//2592 +f 2577//2593 2573//2593 2578//2593 +f 2579//2594 2568//2594 2575//2594 +f 2554//2595 2575//2595 2568//2595 +f 2568//2596 2567//2596 2554//2596 +f 2556//2597 2554//2597 2567//2597 +f 2505//2598 2541//2598 2504//2598 +f 2505//2599 2503//2599 2541//2599 +f 2578//2600 2574//2600 2580//2600 +f 2578//2601 2581//2601 2582//2601 +f 2503//2602 2505//2602 2416//2602 +f 2568//2603 2579//2603 2583//2603 +f 2497//2604 2483//2604 2485//2604 +f 2006//2605 2008//2605 2001//2605 +f 2470//2606 2485//2606 2468//2606 +f 2584//2607 2585//2607 2583//2607 +f 2583//2608 2585//2608 2586//2608 +f 2570//2609 2583//2609 2586//2609 +f 2470//2610 2497//2610 2485//2610 +f 2577//2611 2587//2611 2573//2611 +f 2588//2612 2586//2612 2585//2612 +f 2585//2613 2589//2613 2588//2613 +f 2590//2614 2591//2614 2592//2614 +f 1567//2615 1307//2615 2104//2615 +f 2593//210 2591//210 2594//210 +f 2587//2616 2576//2616 2573//2616 +f 2595//2617 2596//2617 2589//2617 +f 2596//2618 2595//2618 2597//2618 +f 2596//2619 2597//2619 2588//2619 +f 2588//2620 2589//2620 2596//2620 +f 2598//2621 2588//2621 2597//2621 +f 2598//2622 2597//2622 2599//2622 +f 2440//2623 2470//2623 2469//2623 +f 2600//210 2593//210 2601//210 +f 2558//216 2576//216 2557//216 +f 2599//2624 2602//2624 2603//2624 +f 2603//2625 2604//2625 2599//2625 +f 2604//2626 2598//2626 2599//2626 +f 2470//2627 2440//2627 2548//2627 +f 2601//210 2605//210 2600//210 +f 2008//2628 1986//2628 2001//2628 +f 2606//2629 2607//2629 2598//2629 +f 2604//2630 2606//2630 2598//2630 +f 2606//2631 2604//2631 2607//2631 +f 2548//2632 2497//2632 2470//2632 +f 2500//2633 2497//2633 2503//2633 +f 2607//2634 2608//2634 2609//2634 +f 2601//2635 2557//2635 2605//2635 +f 2610//216 2557//216 2611//216 +f 2497//2636 2548//2636 2503//2636 +f 2612//2637 2613//2637 2545//2637 +f 2608//2638 2584//2638 2614//2638 +f 2614//2639 2584//2639 2615//2639 +f 2614//2640 2615//2640 2616//2640 +f 2617//2641 949//2641 2512//2641 +f 2601//2642 2594//2642 2618//2642 +f 2616//2643 2609//2643 2614//2643 +f 2594//210 2601//210 2593//210 +f 1943//2644 1796//2644 2001//2644 +f 2616//2645 2588//2645 2609//2645 +f 2557//2646 2601//2646 2611//2646 +f 2601//2647 2618//2647 2611//2647 +f 1439//2648 1441//2648 1429//2648 +f 2571//2649 2586//2649 2616//2649 +f 2610//216 2611//216 2618//216 +f 2618//2650 2594//2650 2610//2650 +f 2591//210 2619//210 2594//210 +f 1441//2651 1438//2651 1429//2651 +f 2001//2652 1986//2652 1943//2652 +f 2616//2653 2575//2653 2572//2653 +f 2615//2654 2575//2654 2616//2654 +f 2615//2655 2579//2655 2575//2655 +f 2620//2656 2621//2656 2622//2656 +f 2584//2657 2583//2657 2615//2657 +f 2608//2658 2585//2658 2584//2658 +f 2623//2659 2585//2659 2608//2659 +f 238//210 949//210 2617//210 +f 2622//2660 2624//2660 2625//2660 +f 2614//2661 2609//2661 2608//2661 +f 2608//2662 2607//2662 2623//2662 +f 2607//2663 2589//2663 2623//2663 +f 2604//2664 2589//2664 2607//2664 +f 2626//2665 2589//2665 2604//2665 +f 2627//210 2628//210 2613//210 +f 2604//2666 2603//2666 2626//2666 +f 2629//2667 2626//2667 2603//2667 +f 2439//2668 2438//2668 2417//2668 +f 2630//2669 2625//2669 2631//2669 +f 2632//2670 2629//2670 2603//2670 +f 2632//2671 2603//2671 2602//2671 +f 2602//2672 2633//2672 2632//2672 +f 2634//210 238//210 2617//210 +f 2632//2673 2633//2673 2635//2673 +f 2635//2674 2636//2674 2632//2674 +f 2636//2675 2637//2675 2632//2675 +f 2638//2676 2627//2676 2639//2676 +f 2639//2677 2640//2677 2641//2677 +f 2642//2678 2637//2678 2636//2678 +f 2643//2679 2642//2679 2636//2679 +f 2644//210 2634//210 2617//210 +f 2630//2680 2645//2680 2646//2680 +f 2647//210 2648//210 2640//210 +f 2649//2681 2643//2681 2633//2681 +f 2646//2682 2650//2682 2651//2682 +f 2429//2683 2439//2683 2417//2683 +f 2651//210 2652//210 2653//210 +f 2653//2684 2654//2684 2655//2684 +f 1995//2685 1986//2685 2008//2685 +f 2656//2686 2655//2686 2657//2686 +f 2658//2687 2656//2687 2657//2687 +f 1487//2688 2442//2688 423//2688 +f 2658//2689 2659//2689 2660//2689 +f 2661//2690 2662//2690 2663//2690 +f 2661//2691 2663//2691 2664//2691 +f 2661//2692 2664//2692 2665//2692 +f 2665//2693 2666//2693 2661//2693 +f 2661//2694 2666//2694 2667//2694 +f 2635//2695 2661//2695 2667//2695 +f 2667//2696 2636//2696 2635//2696 +f 2668//2697 2636//2697 2667//2697 +f 2669//2698 2670//2698 2671//2698 +f 2669//2699 2672//2699 2673//2699 +f 2647//2700 2674//2700 2675//2700 +f 2676//2701 2677//2701 2678//2701 +f 2679//2702 2680//2702 2643//2702 +f 2662//2703 2680//2703 2679//2703 +f 2681//2704 2679//2704 2668//2704 +f 1274//243 1416//243 1283//243 +f 2682//2705 2681//2705 2668//2705 +f 2665//2706 2682//2706 2668//2706 +f 2673//2707 2683//2707 2684//2707 +f 575//2708 2685//2708 577//2708 +f 2686//2709 2687//2709 2665//2709 +f 2535//2710 2429//2710 2410//2710 +f 2688//2711 2665//2711 2687//2711 +f 460//2712 462//2712 481//2712 +f 492//2713 463//2713 460//2713 +f 2687//2714 2689//2714 2688//2714 +f 2689//2715 2690//2715 2688//2715 +f 2691//2716 2688//2716 2690//2716 +f 2690//2717 2692//2717 2691//2717 +f 2535//2718 2411//2718 2415//2718 +f 2691//2719 2692//2719 2693//2719 +f 2411//2720 2387//2720 2415//2720 +f 2415//2721 2387//2721 2403//2721 +f 2682//2722 2693//2722 2694//2722 +f 2694//2723 2695//2723 2682//2723 +f 2682//2724 2695//2724 2681//2724 +f 2684//2725 2683//2725 2696//2725 +f 2697//2726 2674//2726 2698//2726 +f 2699//2727 2696//2727 2700//2727 +f 2694//2728 2687//2728 2695//2728 +f 2664//2729 2695//2729 2687//2729 +f 2664//2730 2687//2730 2686//2730 +f 2689//2731 2687//2731 2694//2731 +f 2694//2732 2693//2732 2689//2732 +f 2617//2733 2512//2733 2644//2733 +f 2689//2734 2693//2734 2701//2734 +f 2689//2735 2701//2735 2702//2735 +f 2702//2736 2690//2736 2689//2736 +f 577//243 2685//243 571//243 +f 2703//2737 2704//2737 2699//2737 +f 2705//2738 2690//2738 2702//2738 +f 2702//2739 2706//2739 2705//2739 +f 2698//2740 2707//2740 2708//2740 +f 2709//2741 2710//2741 2711//2741 +f 2711//210 2712//210 2713//210 +f 2705//2742 2714//2742 2715//2742 +f 2714//2743 2716//2743 2715//2743 +f 2716//2744 2692//2744 2715//2744 +f 2717//2745 2718//2745 2713//2745 +f 2402//2746 2415//2746 2403//2746 +f 2717//2747 2719//2747 2718//2747 +f 2719//2748 2720//2748 2721//2748 +f 2722//210 2644//210 2707//210 +f 2721//2749 2723//2749 2724//2749 +f 1207//2750 2389//2750 2402//2750 +f 2402//2751 2389//2751 2415//2751 +f 2725//2752 2722//2752 2726//2752 +f 1438//2753 1384//2753 1437//2753 +f 2714//2754 2727//2754 2701//2754 +f 2727//2755 2706//2755 2701//2755 +f 2728//2756 2706//2756 2727//2756 +f 2726//2757 1222//2757 2729//2757 +f 2415//2758 2504//2758 2535//2758 +f 2730//210 2731//210 2724//210 +f 2727//2759 2732//2759 2728//2759 +f 2732//2760 2733//2760 2728//2760 +f 2734//2761 2728//2761 2733//2761 +f 2735//2762 2734//2762 2733//2762 +f 2735//2763 2733//2763 2736//2763 +f 2737//2764 2735//2764 2736//2764 +f 2738//2765 2739//2765 2731//2765 +f 2740//2766 2741//2766 2739//2766 +f 2742//2767 839//2767 2737//2767 +f 839//2768 2735//2768 2737//2768 +f 2504//2769 2415//2769 2414//2769 +f 2504//2770 2414//2770 2416//2770 +f 1222//210 2741//210 277//210 +f 2416//2771 2501//2771 2500//2771 +f 1214//210 277//210 2741//210 +f 2501//2772 2498//2772 2500//2772 +f 2743//2773 2744//2773 2745//2773 +f 2741//204 274//204 1214//204 +f 2746//2774 2743//2774 2745//2774 +f 2746//2775 2745//2775 2747//2775 +f 2748//2776 2746//2776 2747//2776 +f 274//2777 2741//2777 1221//2777 +f 1221//216 2749//216 2725//216 +f 2750//2778 2748//2778 2734//2778 +f 2735//2779 2750//2779 2734//2779 +f 2438//2780 2498//2780 2501//2780 +f 2498//2781 2438//2781 2751//2781 +f 2750//2782 2752//2782 2748//2782 +f 2748//2783 2752//2783 2746//2783 +f 2740//2784 2739//2784 2738//2784 +f 1539//2785 2746//2785 2752//2785 +f 2752//2786 839//2786 1539//2786 +f 2498//2787 2751//2787 2484//2787 +f 2743//2788 2746//2788 1539//2788 +f 2753//2789 2743//2789 1539//2789 +f 1539//2790 1802//2790 2753//2790 +f 1736//2791 659//2791 522//2791 +f 2754//2792 2484//2792 2466//2792 +f 2749//216 2755//216 2723//216 +f 1801//2793 2756//2793 2753//2793 +f 2756//2794 2743//2794 2753//2794 +f 2731//209 2730//209 2738//209 +f 2757//210 749//210 748//210 +f 2758//2795 2759//2795 2760//2795 +f 2760//2796 2761//2796 2477//2796 +f 2512//2797 2749//2797 2644//2797 +f 2730//2798 2762//2798 2755//2798 +f 748//243 745//243 2763//243 +f 1801//2799 2764//2799 2765//2799 +f 2766//2800 2765//2800 2764//2800 +f 2767//2801 2766//2801 2764//2801 +f 2764//2802 2768//2802 2767//2802 +f 2767//2803 2768//2803 2769//2803 +f 2767//2804 2769//2804 2766//2804 +f 2770//2805 2766//2805 2769//2805 +f 2769//210 2771//210 2770//210 +f 2771//2806 2772//2806 2770//2806 +f 2772//2807 1502//2807 2770//2807 +f 2770//2808 1502//2808 1488//2808 +f 653//2809 2773//2809 2774//2809 +f 2762//2810 2775//2810 2776//2810 +f 154//2811 448//2811 265//2811 +f 2777//210 2778//210 1488//210 +f 1469//210 2777//210 1488//210 +f 1469//210 1468//210 2777//210 +f 2777//2812 1468//2812 2756//2812 +f 2756//2813 1468//2813 2744//2813 +f 821//2814 1430//2814 1480//2814 +f 154//2815 2779//2815 448//2815 +f 2777//2816 2756//2816 2778//2816 +f 2766//2817 2778//2817 2756//2817 +f 154//216 653//216 2779//216 +f 1488//2818 2778//2818 2766//2818 +f 1488//2819 1502//2819 1475//2819 +f 1476//2820 1475//2820 1502//2820 +f 1502//210 2772//210 2780//210 +f 2707//2821 2644//2821 2749//2821 +f 755//204 746//204 747//204 +f 2749//2822 2708//2822 2707//2822 +f 2723//216 2708//216 2749//216 +f 1270//2823 1450//2823 1248//2823 +f 1315//210 2780//210 2781//210 +f 2476//2824 2761//2824 2782//2824 +f 2759//2825 2783//2825 2761//2825 +f 1067//2826 1380//2826 1061//2826 +f 1380//216 1270//216 1277//216 +f 914//2827 1647//2827 301//2827 +f 761//204 738//204 746//204 +f 2774//210 2730//210 2724//210 +f 1380//2828 1277//2828 1311//2828 +f 2723//216 2697//216 2708//216 +f 165//2829 190//2829 163//2829 +f 563//2830 1333//2830 1140//2830 +f 1298//2831 1299//2831 1140//2831 +f 1659//2832 1661//2832 1664//2832 +f 1661//2833 1815//2833 1664//2833 +f 423//2834 2428//2834 2784//2834 +f 814//2835 1481//2835 862//2835 +f 2759//2836 2761//2836 2760//2836 +f 564//210 1299//210 919//210 +f 739//233 2785//233 745//233 +f 2774//2837 2724//2837 653//2837 +f 653//2838 2724//2838 2723//2838 +f 1750//2839 1815//2839 1661//2839 +f 1306//2840 2303//2840 1304//2840 +f 2784//2841 424//2841 423//2841 +f 1557//210 1327//210 1317//210 +f 1298//2842 1311//2842 1273//2842 +f 653//216 2723//216 2755//216 +f 2776//216 653//216 2755//216 +f 1557//2843 1561//2843 1521//2843 +f 2783//2844 2786//2844 2787//2844 +f 2788//210 1557//210 1315//210 +f 1317//210 1315//210 1557//210 +f 1557//2845 2788//2845 1765//2845 +f 2789//210 2790//210 732//210 +f 2758//2846 2791//2846 2759//2846 +f 2788//2847 2792//2847 1765//2847 +f 2793//210 1765//210 2792//210 +f 2792//210 2794//210 2793//210 +f 2795//2848 2793//2848 2794//2848 +f 2794//2849 1775//2849 2795//2849 +f 2796//210 2795//210 1775//210 +f 2797//210 2796//210 1775//210 +f 739//2850 736//2850 2798//2850 +f 2755//2851 2762//2851 2776//2851 +f 2796//2852 2797//2852 1766//2852 +f 2775//2853 2799//2853 2776//2853 +f 2799//216 653//216 2776//216 +f 1765//210 2793//210 1766//210 +f 1766//2854 2793//2854 2796//2854 +f 2793//2855 2795//2855 2796//2855 +f 2779//216 653//216 2799//216 +f 2779//2856 2799//2856 2775//2856 +f 2775//2857 448//2857 2779//2857 +f 653//2858 152//2858 2773//2858 +f 2794//2859 1777//2859 1775//2859 +f 2792//210 1777//210 2794//210 +f 1777//210 2792//210 2800//210 +f 2801//2860 2800//2860 2792//2860 +f 2792//2861 2802//2861 2801//2861 +f 2803//210 2801//210 2802//210 +f 2781//210 2803//210 2802//210 +f 2781//210 2802//210 2788//210 +f 2803//2862 2781//2862 2804//2862 +f 2805//2863 2803//2863 2804//2863 +f 2805//210 2804//210 2806//210 +f 2806//210 2807//210 2805//210 +f 2808//210 2805//210 2807//210 +f 2809//2864 2773//2864 152//2864 +f 2808//210 2807//210 1795//210 +f 1795//2865 2807//2865 2810//2865 +f 2723//216 2811//216 2697//216 +f 2810//2866 2812//2866 1795//2866 +f 1795//2867 2812//2867 2813//2867 +f 1795//210 2813//210 1798//210 +f 449//243 2814//243 199//243 +f 2815//2868 2816//2868 2814//2868 +f 2817//2869 2818//2869 2786//2869 +f 2819//2870 2820//2870 1798//2870 +f 2820//2871 1801//2871 1798//2871 +f 1797//2872 1798//2872 1801//2872 +f 2768//2873 2820//2873 2819//2873 +f 2812//2874 2768//2874 2819//2874 +f 2815//210 2821//210 2822//210 +f 152//2875 2823//2875 2809//2875 +f 2824//2876 2825//2876 2826//2876 +f 2823//216 2827//216 2828//216 +f 2812//2877 2810//2877 2807//2877 +f 2829//210 2830//210 2831//210 +f 2807//2878 2806//2878 2812//2878 +f 2806//2879 2768//2879 2812//2879 +f 2832//204 2830//204 2833//204 +f 2834//2880 2817//2880 2835//2880 +f 2833//216 503//216 2832//216 +f 2836//216 503//216 2837//216 +f 2836//243 2838//243 2839//243 +f 766//2881 2789//2881 732//2881 +f 2768//2882 2764//2882 2820//2882 +f 2819//2883 1798//2883 2813//2883 +f 2840//2884 2841//2884 2842//2884 +f 2813//2885 2812//2885 2819//2885 +f 2843//2886 2844//2886 2842//2886 +f 2844//204 2845//204 2846//204 +f 1437//2887 1427//2887 1429//2887 +f 2834//2888 2847//2888 2848//2888 +f 2769//210 2806//210 2804//210 +f 2849//2889 2850//2889 2846//2889 +f 2835//2890 2826//2890 2851//2890 +f 2780//2891 2771//2891 2804//2891 +f 2808//2892 2803//2892 2805//2892 +f 2852//2893 2803//2893 2808//2893 +f 2808//2894 2853//2894 2852//2894 +f 2852//210 2853//210 2854//210 +f 1789//2895 2854//2895 2853//2895 +f 1285//2896 1283//2896 1290//2896 +f 2855//2897 2854//2897 1789//2897 +f 2855//2898 1789//2898 2856//2898 +f 2855//2899 2856//2899 2857//2899 +f 2857//2900 2858//2900 2855//2900 +f 2859//2901 2850//2901 2849//2901 +f 2723//216 2860//216 2811//216 +f 2861//2902 2854//2902 2858//2902 +f 2861//2903 2858//2903 2862//2903 +f 2862//2904 2863//2904 2861//2904 +f 2861//2905 2863//2905 2800//2905 +f 2863//2906 849//2906 2800//2906 +f 2863//2907 1789//2907 849//2907 +f 2818//2908 2864//2908 2851//2908 +f 2863//2909 2862//2909 2856//2909 +f 852//243 199//243 2814//243 +f 2865//2910 2856//2910 2862//2910 +f 2866//2911 2859//2911 2867//2911 +f 2865//2912 2862//2912 2858//2912 +f 2860//216 2723//216 2868//216 +f 2869//2913 2870//2913 2871//2913 +f 2803//210 2854//210 2861//210 +f 2858//2914 2857//2914 2865//2914 +f 2857//2915 2856//2915 2865//2915 +f 1789//2916 2863//2916 2856//2916 +f 2858//2917 2854//2917 2855//2917 +f 2808//2918 1791//2918 2853//2918 +f 2803//1299 2852//1299 2854//1299 +f 2803//210 2861//210 2801//210 +f 2788//2919 2802//2919 2792//2919 +f 2800//2920 2801//2920 2861//2920 +f 2869//2921 2871//2921 2872//2921 +f 2864//2922 2873//2922 2874//2922 +f 2872//2923 2875//2923 2876//2923 +f 2864//2924 2818//2924 2873//2924 +f 2877//2925 2878//2925 2874//2925 +f 1315//210 2781//210 2788//210 +f 1750//2926 1661//2926 1660//2926 +f 1750//2927 1660//2927 1748//2927 +f 2879//2928 2880//2928 2876//2928 +f 2804//2929 2781//2929 2780//2929 +f 2780//210 1315//210 1502//210 +f 2881//2930 2880//2930 2882//2930 +f 1202//2931 1445//2931 671//2931 +f 1273//2932 1265//2932 918//2932 +f 2771//2933 2780//2933 2772//2933 +f 2771//210 2769//210 2804//210 +f 2766//2934 2770//2934 1488//2934 +f 2768//2935 2806//2935 2769//2935 +f 2873//2936 2818//2936 2877//2936 +f 1006//2937 2881//2937 1010//2937 +f 1801//2938 2820//2938 2764//2938 +f 2765//2939 2766//2939 2756//2939 +f 1995//2940 2033//2940 2003//2940 +f 737//243 754//243 734//243 +f 2765//2941 2756//2941 1801//2941 +f 2723//2749 2721//2749 2868//2749 +f 1004//2942 1193//2942 1003//2942 +f 1191//209 1003//209 1193//209 +f 2817//2943 2883//2943 2818//2943 +f 1802//2944 1539//2944 838//2944 +f 2750//2945 839//2945 2752//2945 +f 839//2946 2750//2946 2735//2946 +f 2884//2947 736//2947 735//2947 +f 2347//2948 2564//2948 2405//2948 +f 2734//2949 2748//2949 2885//2949 +f 2728//2950 2734//2950 2885//2950 +f 2885//2951 2706//2951 2728//2951 +f 2748//2952 2886//2952 2885//2952 +f 735//2953 731//2953 2884//2953 +f 2791//2954 2825//2954 2824//2954 +f 2879//204 518//204 527//204 +f 2882//2937 1010//2937 2881//2937 +f 2885//2955 2887//2955 2705//2955 +f 2885//2956 2886//2956 2887//2956 +f 2886//2957 2736//2957 2887//2957 +f 2736//2958 2732//2958 2887//2958 +f 2879//2959 2882//2959 2880//2959 +f 2879//204 1010//204 2882//204 +f 2888//2960 2879//2960 2876//2960 +f 2737//2961 2736//2961 2886//2961 +f 2737//2962 2886//2962 2748//2962 +f 2748//2963 2747//2963 2737//2963 +f 2876//2964 2875//2964 2888//2964 +f 2466//2965 2484//2965 2751//2965 +f 2747//2966 2745//2966 2742//2966 +f 2888//204 2875//204 518//204 +f 492//2967 509//2967 602//2967 +f 518//204 2879//204 2888//204 +f 2743//2968 2756//2968 2744//2968 +f 752//204 730//204 734//204 +f 2744//2969 1468//2969 2745//2969 +f 2745//2970 1468//2970 839//2970 +f 2465//2490 2754//2490 2466//2490 +f 2879//204 527//204 1010//204 +f 2742//2971 2745//2971 839//2971 +f 2742//2972 2737//2972 2747//2972 +f 2782//2973 2791//2973 2758//2973 +f 2758//2974 2465//2974 2782//2974 +f 527//204 2889//204 1010//204 +f 2890//2975 731//2975 729//2975 +f 2467//2976 2782//2976 2465//2976 +f 2733//2977 2732//2977 2736//2977 +f 730//243 2891//243 728//243 +f 2476//2978 2782//2978 2467//2978 +f 727//2979 716//2979 729//2979 +f 2714//2980 2732//2980 2727//2980 +f 2714//2981 2887//2981 2732//2981 +f 2716//2982 2714//2982 2701//2982 +f 2887//2983 2714//2983 2705//2983 +f 2692//2984 2705//2984 2715//2984 +f 2033//2985 2045//2985 2003//2985 +f 2825//2986 2791//2986 2782//2986 +f 2885//2987 2705//2987 2706//2987 +f 2706//2988 2702//2988 2701//2988 +f 2003//2989 2045//2989 2044//2989 +f 2825//2990 2782//2990 2761//2990 +f 2701//2991 2693//2991 2716//2991 +f 2721//204 2720//204 2868//204 +f 2860//216 2868//216 2720//216 +f 2761//2992 2783//2992 2825//2992 +f 2787//2993 2825//2993 2783//2993 +f 2695//2994 2663//2994 2681//2994 +f 541//2995 2892//2995 2893//2995 +f 872//664 908//664 208//664 +f 2826//2996 2825//2996 2787//2996 +f 2892//204 528//204 2893//204 +f 2892//209 538//209 2894//209 +f 2693//2997 2682//2997 2691//2997 +f 2691//2998 2682//2998 2665//2998 +f 2692//2999 2716//2999 2693//2999 +f 2787//3000 2851//3000 2826//3000 +f 2705//3001 2692//3001 2690//3001 +f 2894//204 528//204 2892//204 +f 2860//216 2720//216 2895//216 +f 535//3002 2896//3002 2894//3002 +f 2896//204 528//204 2894//204 +f 2688//3003 2691//3003 2665//3003 +f 2889//204 528//204 2896//204 +f 2818//3004 2851//3004 2787//3004 +f 2896//3005 535//3005 2889//3005 +f 2789//3006 766//3006 2897//3006 +f 2681//3007 2662//3007 2679//3007 +f 2668//210 2679//210 2636//210 +f 1437//3008 1373//3008 1427//3008 +f 2898//3009 2661//3009 2635//3009 +f 2818//3010 2787//3010 2786//3010 +f 2667//3011 2666//3011 2668//3011 +f 2668//3012 2666//3012 2665//3012 +f 2665//3013 2664//3013 2686//3013 +f 2695//3014 2664//3014 2663//3014 +f 2662//3015 2681//3015 2663//3015 +f 2790//3016 2789//3016 2899//3016 +f 2680//3017 2662//3017 2898//3017 +f 2898//3018 2662//3018 2661//3018 +f 726//3019 728//3019 699//3019 +f 2898//3020 2633//3020 2680//3020 +f 2649//3021 2633//3021 2602//3021 +f 2003//3022 2044//3022 2043//3022 +f 2818//3023 2883//3023 2877//3023 +f 2883//3024 2900//3024 2877//3024 +f 2602//3025 2642//3025 2649//3025 +f 2643//3026 2649//3026 2642//3026 +f 2643//3027 2680//3027 2633//3027 +f 2679//3028 2643//3028 2636//3028 +f 1437//3029 1384//3029 1373//3029 +f 2901//3030 2405//3030 2564//3030 +f 2889//204 1011//204 1010//204 +f 1011//3031 2889//3031 531//3031 +f 996//243 531//243 997//243 +f 996//3032 1011//3032 531//3032 +f 2629//3033 2902//3033 2595//3033 +f 721//210 726//210 700//210 +f 2629//3034 2637//3034 2902//3034 +f 110//204 109//204 1757//204 +f 2599//3035 2902//3035 2642//3035 +f 2637//3036 2642//3036 2902//3036 +f 2629//3037 2632//3037 2637//3037 +f 2895//3038 2903//3038 2860//3038 +f 2904//3039 2900//3039 2905//3039 +f 2633//3040 2898//3040 2635//3040 +f 245//3041 2315//3041 2346//3041 +f 2906//3042 2903//3042 2895//3042 +f 2906//3043 2895//3043 2907//3043 +f 2908//3044 1003//3044 1191//3044 +f 2629//3045 2595//3045 2626//3045 +f 1191//3046 1294//3046 2908//3046 +f 2607//3047 2609//3047 2598//3047 +f 721//233 720//233 727//233 +f 2907//3048 2909//3048 2906//3048 +f 2909//210 2910//210 2911//210 +f 2642//3049 2602//3049 2599//3049 +f 2912//3050 2913//3050 2904//3050 +f 540//3051 280//3051 509//3051 +f 2902//3052 2599//3052 2595//3052 +f 2588//3053 2598//3053 2609//3053 +f 2595//3054 2599//3054 2597//3054 +f 1591//3055 2901//3055 2564//3055 +f 2595//3056 2589//3056 2626//3056 +f 1284//216 1290//216 1196//216 +f 727//3057 2914//3057 717//3057 +f 2623//3058 2589//3058 2585//3058 +f 2616//3059 2586//3059 2588//3059 +f 720//233 2914//233 727//233 +f 1505//3060 584//3060 1752//3060 +f 2915//3061 2901//3061 1591//3061 +f 718//3062 2914//3062 720//3062 +f 2579//3063 2615//3063 2583//3063 +f 719//3064 718//3064 720//3064 +f 2914//3065 718//3065 717//3065 +f 2572//3066 2571//3066 2616//3066 +f 2586//3067 2571//3067 2570//3067 +f 2568//3068 2583//3068 2570//3068 +f 1006//3069 1010//3069 1007//3069 +f 2556//3070 2567//3070 2562//3070 +f 781//3071 905//3071 1752//3071 +f 1384//3072 1438//3072 1385//3072 +f 2916//3073 2913//3073 2917//3073 +f 717//3074 716//3074 727//3074 +f 2918//3075 1134//3075 1132//3075 +f 2542//3076 2523//3076 2529//3076 +f 2906//210 2909//210 2911//210 +f 1630//3077 901//3077 1564//3077 +f 715//233 2919//233 716//233 +f 2562//3078 2555//3078 2556//3078 +f 2920//3079 2915//3079 1591//3079 +f 2921//3080 2922//3080 2923//3080 +f 1587//3081 2920//3081 1591//3081 +f 2554//3082 2553//3082 2575//3082 +f 2924//3083 2920//3083 1587//3083 +f 2569//3084 2553//3084 2552//3084 +f 2925//3085 2926//3085 2927//3085 +f 2903//210 2906//210 2911//210 +f 2928//210 2903//210 2911//210 +f 525//243 997//243 531//243 +f 2911//210 2929//210 2928//210 +f 2543//3086 2547//3086 2536//3086 +f 1178//3087 1362//3087 1179//3087 +f 2529//3088 2563//3088 2544//3088 +f 2916//3089 2930//3089 2931//3089 +f 2920//3090 2924//3090 2932//3090 +f 2540//3091 2523//3091 2542//3091 +f 2540//3092 2543//3092 2536//3092 +f 2915//3093 2920//3093 2932//3093 +f 2930//3094 2933//3094 2925//3094 +f 2530//3095 2536//3095 2547//3095 +f 2559//3096 2529//3096 2530//3096 +f 2493//3097 2529//3097 2523//3097 +f 2530//3098 2493//3098 2537//3098 +f 2537//3099 2493//3099 2526//3099 +f 2524//3100 2537//3100 2526//3100 +f 2523//3101 2540//3101 2524//3101 +f 2628//210 2929//210 2911//210 +f 715//3102 714//3102 2919//3102 +f 2934//3103 2935//3103 2921//3103 +f 2520//3104 2522//3104 2524//3104 +f 2003//3105 2043//3105 2007//3105 +f 2527//3106 2487//3106 2520//3106 +f 2520//3107 2487//3107 2936//3107 +f 2514//3108 2520//3108 2936//3108 +f 2936//3109 2473//3109 2514//3109 +f 712//243 711//243 714//243 +f 2473//3110 2936//3110 2486//3110 +f 2473//3111 2486//3111 2475//3111 +f 1131//210 1130//210 636//210 +f 2937//209 2938//209 525//209 +f 2911//210 2939//210 2628//210 +f 2480//3112 2475//3112 2486//3112 +f 2939//3113 2911//3113 2940//3113 +f 2613//3114 2939//3114 2940//3114 +f 2502//3115 2496//3115 2513//3115 +f 2938//209 2937//209 2941//209 +f 2499//3116 2496//3116 2502//3116 +f 2942//3117 2933//3117 2935//3117 +f 2937//216 2943//216 2941//216 +f 2495//3118 2493//3118 2523//3118 +f 2488//3119 2527//3119 2493//3119 +f 2527//3120 2488//3120 2487//3120 +f 2936//3121 2487//3121 2486//3121 +f 2494//3122 2486//3122 2488//3122 +f 2943//216 2937//216 2944//216 +f 2480//3123 2486//3123 2499//3123 +f 2545//3124 2613//3124 2940//3124 +f 2472//3125 2480//3125 2502//3125 +f 2937//204 2945//204 2944//204 +f 2945//204 2937//204 2946//204 +f 2480//3126 2478//3126 2474//3126 +f 2474//3127 2446//3127 2448//3127 +f 2459//3128 2474//3128 2448//3128 +f 2933//3129 2947//3129 2948//3129 +f 2933//3130 2949//3130 2925//3130 +f 2475//3131 2480//3131 2474//3131 +f 1377//3132 1309//3132 1280//3132 +f 2514//3133 2473//3133 2472//3133 +f 2937//209 525//209 2946//209 +f 2946//3134 525//3134 519//3134 +f 2464//3135 2474//3135 2460//3135 +f 519//3136 2945//3136 2946//3136 +f 2460//3137 2474//3137 2459//3137 +f 2460//3138 2450//3138 2463//3138 +f 2948//3139 2950//3139 2951//3139 +f 2944//233 2945//233 519//233 +f 196//233 2952//233 519//233 +f 2944//233 519//233 2952//233 +f 2953//3140 2949//3140 2951//3140 +f 2952//233 2943//233 2944//233 +f 2941//243 2943//243 2952//243 +f 2446//3141 2479//3141 2449//3141 +f 2952//243 2938//243 2941//243 +f 2407//3142 2459//3142 2448//3142 +f 2407//3143 2448//3143 2432//3143 +f 2432//3144 2447//3144 2430//3144 +f 2430//3145 2456//3145 2431//3145 +f 1120//3146 2954//3146 1833//3146 +f 2408//3147 2432//3147 2431//3147 +f 196//216 2938//216 2952//216 +f 2431//3148 2400//3148 2426//3148 +f 2426//3149 2408//3149 2431//3149 +f 2955//210 743//210 189//210 +f 2956//209 2957//209 2958//209 +f 2426//3150 2418//3150 2408//3150 +f 2959//3151 2942//3151 2951//3151 +f 2958//210 2957//210 2960//210 +f 1275//216 1274//216 1284//216 +f 189//210 740//210 2955//210 +f 2421//3152 2388//3152 2383//3152 +f 2961//233 740//233 188//233 +f 2388//3153 2386//3153 2383//3153 +f 2386//3154 2381//3154 2383//3154 +f 2380//3155 2392//3155 2421//3155 +f 2394//3156 2425//3156 2420//3156 +f 188//216 2956//216 2961//216 +f 2426//3157 2419//3157 2418//3157 +f 2398//3158 2409//3158 2418//3158 +f 2962//3159 2963//3159 2964//3159 +f 2408//3160 2418//3160 2409//3160 +f 2965//3161 2966//3161 2964//3161 +f 2407//3162 2432//3162 2408//3162 +f 2956//204 2967//204 2961//204 +f 2968//3163 2959//3163 2950//3163 +f 2967//204 2956//204 2958//204 +f 2960//210 2967//210 2958//210 +f 2969//3164 2970//3164 2968//3164 +f 2443//3165 2971//3165 2972//3165 +f 2400//3166 2398//3166 2426//3166 +f 2399//3167 2409//3167 2398//3167 +f 2961//233 2967//233 2960//233 +f 2398//3168 2418//3168 2395//3168 +f 2397//3169 2396//3169 2422//3169 +f 2960//233 740//233 2961//233 +f 2391//3170 2396//3170 2393//3170 +f 2395//3171 2418//3171 2394//3171 +f 2970//3172 2969//3172 2973//3172 +f 2955//243 740//243 2960//243 +f 2960//243 2957//243 2955//243 +f 2388//3173 2391//3173 2390//3173 +f 2388//3174 2390//3174 2379//3174 +f 2974//3175 2971//3175 2441//3175 +f 2386//3176 2374//3176 2385//3176 +f 2374//3177 2361//3177 2385//3177 +f 2957//209 2956//209 2955//209 +f 2975//3178 2976//3178 2977//3178 +f 2421//3179 2383//3179 2380//3179 +f 2956//209 743//209 2955//209 +f 2390//3180 2380//3180 2379//3180 +f 2372//3181 2374//3181 2378//3181 +f 2956//209 145//209 743//209 +f 743//209 145//209 520//209 +f 196//204 743//204 520//204 +f 2374//3182 2372//3182 2373//3182 +f 2938//216 196//216 520//216 +f 2372//3183 2344//3183 2369//3183 +f 2364//3184 2344//3184 2381//3184 +f 2364//3185 2385//3185 2362//3185 +f 2362//3186 2385//3186 2361//3186 +f 2359//3187 2361//3187 2371//3187 +f 2977//3188 2976//3188 2978//3188 +f 2368//3189 2352//3189 2359//3189 +f 2352//3190 2370//3190 2340//3190 +f 2328//3191 2350//3191 2351//3191 +f 895//3192 761//3192 886//3192 +f 1275//216 1284//216 1196//216 +f 520//209 144//209 2938//209 +f 2363//3193 2348//3193 2345//3193 +f 2344//3194 2363//3194 2345//3194 +f 2369//3195 2344//3195 2341//3195 +f 2342//3196 2370//3196 2341//3196 +f 2340//3197 2370//3197 2342//3197 +f 1438//3198 1308//3198 1385//3198 +f 2341//3199 2345//3199 2337//3199 +f 525//209 2938//209 144//209 +f 2979//3200 2970//3200 2978//3200 +f 2338//3201 2340//3201 2339//3201 +f 2336//3202 2326//3202 2338//3202 +f 852//3203 997//3203 222//3203 +f 2337//3204 2349//3204 2333//3204 +f 2350//3205 2328//3205 2333//3205 +f 2978//3206 2980//3206 2979//3206 +f 2980//3207 2981//3207 2982//3207 +f 2367//3208 1889//3208 246//3208 +f 223//209 903//209 257//209 +f 223//209 257//209 2983//209 +f 2325//3209 2326//3209 2354//3209 +f 2983//209 257//209 422//209 +f 2320//3210 2319//3210 2325//3210 +f 422//216 241//216 2983//216 +f 241//3211 973//3211 2983//3211 +f 973//209 321//209 2983//209 +f 2325//3212 2319//3212 2323//3212 +f 2324//3213 2323//3213 2322//3213 +f 1505//3214 1752//3214 905//3214 +f 2980//3215 2984//3215 2985//3215 +f 2320//3216 2336//3216 2321//3216 +f 2986//3217 2546//3217 2974//3217 +f 2318//3218 2323//3218 2319//3218 +f 2987//3219 2988//3219 2986//3219 +f 496//216 823//216 502//216 +f 2311//3220 2989//3220 2306//3220 +f 2990//210 310//210 1035//210 +f 382//216 395//216 823//216 +f 382//216 823//216 2991//216 +f 2992//3221 1035//3221 1034//3221 +f 2306//3222 2989//3222 2304//3222 +f 2304//3223 2989//3223 2317//3223 +f 2993//3224 2992//3224 2994//3224 +f 2317//3225 2989//3225 2311//3225 +f 2995//216 2993//216 2996//216 +f 1385//3226 1308//3226 1309//3226 +f 2996//3227 1444//3227 2995//3227 +f 2317//3228 2313//3228 2299//3228 +f 2299//3229 2313//3229 2309//3229 +f 1444//210 2997//210 2998//210 +f 2984//3230 2976//3230 2985//3230 +f 540//3231 278//3231 280//3231 +f 2976//3232 2999//3232 3000//3232 +f 3000//3233 3001//3233 3002//3233 +f 2998//209 3003//209 3004//209 +f 3005//3234 3001//3234 2999//3234 +f 2310//3235 2309//3235 2312//3235 +f 2312//3236 2318//3236 2311//3236 +f 3001//3237 3006//3237 3007//3237 +f 2308//3238 2299//3238 2309//3238 +f 2298//3239 2308//3239 2307//3239 +f 2307//3240 2305//3240 2298//3240 +f 2311//3241 2306//3241 2307//3241 +f 3007//3242 3008//3242 3009//3242 +f 3010//216 3011//216 3004//216 +f 3012//3243 2305//3243 2302//3243 +f 3013//209 3011//209 3014//209 +f 3012//3244 2290//3244 2305//3244 +f 2294//3245 2305//3245 2290//3245 +f 2290//3246 3012//3246 2293//3246 +f 1120//3247 772//3247 2954//3247 +f 2290//3248 2293//3248 2292//3248 +f 893//3249 895//3249 886//3249 +f 3013//3250 3014//3250 3015//3250 +f 3016//204 3017//204 3015//204 +f 3012//3251 2302//3251 2293//3251 +f 2984//3252 3018//3252 3019//3252 +f 2299//3253 2304//3253 2317//3253 +f 896//204 388//204 3020//204 +f 2305//3254 2301//3254 2302//3254 +f 3019//3255 3021//3255 3005//3255 +f 2300//3256 2293//3256 2302//3256 +f 3022//3257 3023//3257 3009//3257 +f 2308//3258 2297//3258 2299//3258 +f 2272//3259 2300//3259 2297//3259 +f 2298//3260 2297//3260 2308//3260 +f 2305//3261 2294//3261 2298//3261 +f 2290//3262 2295//3262 2294//3262 +f 2296//3263 2295//3263 2287//3263 +f 2297//3264 2296//3264 2272//3264 +f 2300//3265 2272//3265 2293//3265 +f 3024//3266 3016//3266 3025//3266 +f 2292//3267 2271//3267 2290//3267 +f 2295//3268 2290//3268 2287//3268 +f 2288//3269 2289//3269 2284//3269 +f 2287//3270 2272//3270 2296//3270 +f 2273//3271 2288//3271 2275//3271 +f 2284//3272 2275//3272 2288//3272 +f 2284//3273 2268//3273 2282//3273 +f 2268//3274 3026//3274 2282//3274 +f 3024//3275 3025//3275 3027//3275 +f 3028//3276 3029//3276 3027//3276 +f 3026//3277 2268//3277 2267//3277 +f 3030//243 3029//243 3031//243 +f 3026//3278 2264//3278 2282//3278 +f 3021//3279 3032//3279 3033//3279 +f 2277//3280 2275//3280 2282//3280 +f 2254//3281 2253//3281 2277//3281 +f 2275//3282 2277//3282 2266//3282 +f 3030//216 3014//216 3034//216 +f 891//210 3035//210 2994//210 +f 3036//216 3034//216 3014//216 +f 2346//3283 2315//3283 2303//3283 +f 3037//216 3038//216 2993//216 +f 2271//3284 2292//3284 2272//3284 +f 3011//216 3036//216 3014//216 +f 2284//3285 2270//3285 2268//3285 +f 3039//3286 3006//3286 3040//3286 +f 2266//3287 2267//3287 2269//3287 +f 2267//3288 2265//3288 3026//3288 +f 3026//3289 2265//3289 2264//3289 +f 2264//3290 2252//3290 2263//3290 +f 2264//3291 2255//3291 2254//3291 +f 3037//216 3011//216 3010//216 +f 2441//3292 2971//3292 2443//3292 +f 3033//3293 3041//3293 3039//3293 +f 2252//3294 2266//3294 2253//3294 +f 2252//3295 2250//3295 2263//3295 +f 2248//3296 2262//3296 2250//3296 +f 2262//3297 2248//3297 2237//3297 +f 3042//3298 2237//3298 2248//3298 +f 3043//233 1074//233 3044//233 +f 873//619 3045//619 872//619 +f 2248//3299 2247//3299 3042//3299 +f 3046//3300 3042//3300 2247//3300 +f 2247//3301 2243//3301 3046//3301 +f 3045//216 773//216 872//216 +f 3047//216 773//216 3045//216 +f 3045//3302 873//3302 3047//3302 +f 873//210 1074//210 3048//210 +f 3049//3303 2238//3303 3050//3303 +f 3050//3304 2238//3304 3042//3304 +f 2238//3305 3049//3305 2225//3305 +f 2225//3306 3049//3306 2226//3306 +f 2444//3307 2443//3307 2972//3307 +f 2443//3308 2444//3308 2437//3308 +f 3049//3309 3051//3309 2224//3309 +f 2217//3310 3051//3310 3049//3310 +f 3052//3311 2217//3311 3049//3311 +f 3049//3312 3046//3312 3052//3312 +f 3053//3313 3052//3313 3046//3313 +f 3048//3314 3047//3314 873//3314 +f 3052//3315 3053//3315 2234//3315 +f 2234//3316 2228//3316 3052//3316 +f 2228//3317 2217//3317 3052//3317 +f 3054//3318 3055//3318 3033//3318 +f 3047//3319 3048//3319 3037//3319 +f 2217//3320 2215//3320 3051//3320 +f 3010//216 3047//216 3037//216 +f 3056//3321 3055//3321 3054//3321 +f 3057//243 3044//243 3058//243 +f 3047//216 3059//216 882//216 +f 3058//233 3044//233 1074//233 +f 3055//3322 3060//3322 3061//3322 +f 3058//3323 1074//3323 898//3323 +f 2234//3324 3053//3324 2239//3324 +f 2243//3325 2239//3325 3053//3325 +f 2243//3326 2240//3326 2239//3326 +f 3058//3327 898//3327 3057//3327 +f 3062//3328 3057//3328 898//3328 +f 3059//3329 3063//3329 3064//3329 +f 887//3330 3065//3330 3066//3330 +f 3067//3330 3066//3330 3065//3330 +f 3050//3331 3046//3331 3049//3331 +f 3046//3332 2243//3332 3053//3332 +f 3068//3333 3061//3333 3060//3333 +f 3050//3334 3042//3334 3046//3334 +f 3067//233 3065//233 3069//233 +f 3069//3335 3070//3335 3071//3335 +f 2249//3336 2251//3336 2246//3336 +f 3071//204 3072//204 3073//204 +f 3031//243 3064//243 3074//243 +f 424//216 3075//216 1336//216 +f 2246//3337 2256//3337 2244//3337 +f 2244//3338 2243//3338 2247//3338 +f 3075//3339 3076//3339 1336//3339 +f 2240//3340 2244//3340 2256//3340 +f 3074//3341 3072//3341 3077//3341 +f 2436//3342 2441//3342 2443//3342 +f 2240//3343 2262//3343 2237//3343 +f 3014//243 3030//243 3031//243 +f 3042//3344 2238//3344 2237//3344 +f 2234//3345 2239//3345 2233//3345 +f 3074//243 3077//243 3078//243 +f 2238//3346 2225//3346 2233//3346 +f 2234//3347 2225//3347 2228//3347 +f 3078//3348 3079//3348 3080//3348 +f 2227//3349 2226//3349 2228//3349 +f 2220//3350 2228//3350 2226//3350 +f 790//3351 766//3351 768//3351 +f 2226//3352 3049//3352 2224//3352 +f 2224//3353 2222//3353 2226//3353 +f 2226//3354 2222//3354 2220//3354 +f 2224//3355 3051//3355 2215//3355 +f 3081//3356 3068//3356 3082//3356 +f 3083//204 3079//204 3084//204 +f 3077//3357 3079//3357 3078//3357 +f 2217//3358 2228//3358 2220//3358 +f 2219//3359 2195//3359 2216//3359 +f 3079//204 3083//204 3080//204 +f 3085//3360 3082//3360 3086//3360 +f 3086//3361 3055//3361 3056//3361 +f 2193//3362 2214//3362 2216//3362 +f 3087//3363 3056//3363 3088//3363 +f 3072//3364 3079//3364 3077//3364 +f 3084//204 3079//204 3072//204 +f 3072//204 3071//204 3084//204 +f 3089//3365 3084//3365 3071//3365 +f 3071//3366 3070//3366 3089//3366 +f 2209//3367 2210//3367 2213//3367 +f 2213//3368 2210//3368 2199//3368 +f 2202//3369 2213//3369 2199//3369 +f 2215//3370 2202//3370 2222//3370 +f 2195//3371 2222//3371 2202//3371 +f 3070//3372 3069//3372 3065//3372 +f 3090//243 3065//243 885//243 +f 2197//3373 2199//3373 2210//3373 +f 3090//243 3070//243 3065//243 +f 3091//3374 3092//3374 3093//3374 +f 2195//3375 2193//3375 2216//3375 +f 2007//3376 2049//3376 2008//3376 +f 2049//3377 2033//3377 2008//3377 +f 2191//3378 2209//3378 2192//3378 +f 2191//3379 2183//3379 2209//3379 +f 3076//3380 3094//3380 1336//3380 +f 3095//3381 3096//3381 3088//3381 +f 2033//3382 2049//3382 2045//3382 +f 704//209 707//209 706//209 +f 884//3383 3059//3383 3090//3383 +f 2162//3384 2177//3384 2184//3384 +f 3090//243 3059//243 3064//243 +f 2197//3385 2181//3385 2182//3385 +f 2192//3386 2182//3386 2180//3386 +f 2184//3387 2177//3387 2181//3387 +f 703//233 705//233 713//233 +f 3070//243 3090//243 3064//243 +f 3064//243 3089//243 3070//243 +f 3064//243 3031//243 3089//243 +f 2162//3388 2176//3388 2177//3388 +f 2175//3389 2176//3389 2159//3389 +f 2161//3390 2174//3390 2158//3390 +f 2161//3391 2158//3391 2166//3391 +f 2163//3392 2178//3392 2161//3392 +f 3097//3393 3098//3393 3093//3393 +f 2163//3394 2162//3394 2184//3394 +f 2161//3395 2166//3395 2160//3395 +f 2162//3396 2160//3396 2176//3396 +f 2167//3397 2151//3397 2160//3397 +f 2176//3398 2160//3398 2159//3398 +f 3084//3399 3089//3399 3031//3399 +f 2158//3400 2175//3400 2159//3400 +f 3031//3401 3083//3401 3084//3401 +f 3029//3402 3083//3402 3031//3402 +f 2156//3403 2152//3403 2153//3403 +f 2152//3404 2156//3404 2148//3404 +f 3097//3405 3099//3405 3100//3405 +f 3029//3406 3028//3406 3083//3406 +f 3028//204 3080//204 3083//204 +f 3025//204 3080//204 3028//204 +f 2130//3407 2148//3407 2156//3407 +f 2154//3408 2152//3408 2151//3408 +f 3025//3409 3028//3409 3027//3409 +f 3101//3410 3099//3410 3102//3410 +f 2150//3411 2152//3411 2147//3411 +f 2144//3412 2155//3412 2149//3412 +f 2147//3413 2152//3413 2148//3413 +f 2148//3414 2142//3414 2144//3414 +f 2145//3415 2155//3415 2144//3415 +f 2145//3416 2143//3416 2156//3416 +f 3015//204 3025//204 3016//204 +f 3015//204 3080//204 3025//204 +f 2125//3417 2142//3417 2148//3417 +f 2148//3418 2126//3418 2125//3418 +f 2142//3419 2141//3419 2143//3419 +f 3078//3420 3080//3420 3015//3420 +f 3078//3421 3015//3421 3014//3421 +f 3103//3422 3104//3422 3092//3422 +f 3105//216 2974//216 2441//216 +f 2126//3423 2148//3423 2130//3423 +f 2127//3424 2126//3424 2131//3424 +f 3074//243 3078//243 3014//243 +f 3014//243 3031//243 3074//243 +f 3072//3425 3074//3425 3073//3425 +f 2125//3426 2124//3426 2140//3426 +f 2119//3427 2140//3427 2124//3427 +f 2127//3428 2119//3428 2124//3428 +f 2109//3429 2119//3429 2121//3429 +f 2120//3430 2119//3430 2127//3430 +f 2120//3431 2133//3431 2117//3431 +f 3074//3432 3064//3432 3073//3432 +f 2136//3433 2115//3433 2117//3433 +f 2116//3434 2107//3434 2110//3434 +f 2107//3435 2116//3435 2113//3435 +f 3064//3436 3063//3436 3073//3436 +f 3071//204 3073//204 3063//204 +f 2113//3437 2112//3437 2107//3437 +f 3063//204 3069//204 3071//204 +f 2110//3438 2109//3438 2121//3438 +f 2109//3439 2108//3439 2134//3439 +f 3063//204 3067//204 3069//204 +f 3106//3440 3107//3440 3108//3440 +f 3063//204 3066//204 3067//204 +f 2102//3441 2073//3441 2106//3441 +f 3066//204 3063//204 3109//204 +f 3110//3442 3111//3442 3112//3442 +f 2073//3443 2102//3443 2080//3443 +f 2077//3444 2084//3444 2076//3444 +f 3020//3445 888//3445 3066//3445 +f 3109//204 3020//204 3066//204 +f 3109//204 896//204 3020//204 +f 891//210 2994//210 892//210 +f 2070//3446 2064//3446 2103//3446 +f 898//204 896//204 3109//204 +f 2065//3447 2056//3447 2060//3447 +f 3062//216 898//216 3109//216 +f 2080//3448 2064//3448 2060//3448 +f 2077//3449 2060//3449 2061//3449 +f 3109//209 3063//209 3062//209 +f 2056//3450 2089//3450 2055//3450 +f 2050//3451 2055//3451 777//3451 +f 3063//3452 3059//3452 3062//3452 +f 3059//3453 3057//3453 3062//3453 +f 2061//3454 2052//3454 2051//3454 +f 3059//216 3047//216 3057//216 +f 3047//216 3044//216 3057//216 +f 1839//3455 2093//3455 1841//3455 +f 3044//216 3047//216 3043//216 +f 3047//216 3010//216 3043//216 +f 3107//3456 3113//3456 3114//3456 +f 3115//3457 3111//3457 3116//3457 +f 3113//3458 3115//3458 3114//3458 +f 3117//3459 3116//3459 3111//3459 +f 794//3460 792//3460 1823//3460 +f 1818//3461 794//3461 1823//3461 +f 1823//3462 1816//3462 1818//3462 +f 3010//209 3004//209 3003//209 +f 1811//3463 794//3463 1818//3463 +f 1818//3464 1807//3464 1811//3464 +f 3043//243 3010//243 3003//243 +f 3003//243 1074//243 3043//243 +f 3003//210 3048//210 1074//210 +f 1823//3465 792//3465 1836//3465 +f 851//3466 1836//3466 1834//3466 +f 3118//3467 3116//3467 3106//3467 +f 3048//210 3003//210 3119//210 +f 666//3468 790//3468 1180//3468 +f 3094//3469 3120//3469 1336//3469 +f 851//3470 1827//3470 1836//3470 +f 851//3471 850//3471 1827//3471 +f 1827//3472 1824//3472 1836//3472 +f 1823//3473 1836//3473 1824//3473 +f 3121//210 3122//210 3119//210 +f 3123//216 3038//216 3124//216 +f 3125//210 3122//210 3121//210 +f 3117//3474 3110//3474 3097//3474 +f 1816//3475 1823//3475 1792//3475 +f 2434//3476 3105//3476 2441//3476 +f 1311//3477 1277//3477 1273//3477 +f 662//209 707//209 704//209 +f 1750//3478 1749//3478 1746//3478 +f 1749//3479 1649//3479 1746//3479 +f 3125//3480 366//3480 3124//3480 +f 1745//3481 1746//3481 1649//3481 +f 2915//3482 1822//3482 2901//3482 +f 794//3483 1811//3483 3126//3483 +f 795//3484 794//3484 3126//3484 +f 702//233 703//233 713//233 +f 795//3485 3126//3485 3127//3485 +f 3127//3486 820//3486 795//3486 +f 795//3487 820//3487 809//3487 +f 796//3488 795//3488 809//3488 +f 2434//3489 2546//3489 3105//3489 +f 1337//3490 1336//3490 3120//3490 +f 3128//3491 820//3491 3127//3491 +f 3127//3492 822//3492 3128//3492 +f 826//3493 822//3493 3127//3493 +f 3129//3494 3130//3494 3131//3494 +f 822//3495 826//3495 821//3495 +f 820//3496 3128//3496 822//3496 +f 3127//216 3126//216 826//216 +f 826//216 3126//216 1811//216 +f 826//3497 1811//3497 1805//3497 +f 1805//3498 1575//3498 826//3498 +f 3132//3499 3133//3499 3105//3499 +f 2358//3500 1889//3500 2367//3500 +f 352//3501 1339//3501 3134//3501 +f 1745//243 1649//243 1648//243 +f 360//216 3134//216 1339//216 +f 3129//216 927//216 3134//216 +f 1813//3502 3135//3502 1208//3502 +f 1337//3503 3120//3503 240//3503 +f 3136//3504 3134//3504 926//3504 +f 763//3505 2790//3505 2899//3505 +f 3137//1822 1326//1822 907//1822 +f 240//3506 3120//3506 831//3506 +f 1805//210 3138//210 1806//210 +f 1648//243 1740//243 1745//243 +f 1810//210 1806//210 3138//210 +f 1810//3507 3138//3507 3139//3507 +f 1810//3508 3139//3508 1805//3508 +f 3139//3509 3138//3509 1805//3509 +f 1635//3510 1648//3510 1634//3510 +f 3117//3511 3111//3511 3110//3511 +f 172//3512 278//3512 170//3512 +f 1811//3513 1810//3513 1805//3513 +f 1808//3514 1810//3514 1809//3514 +f 1806//210 1810//210 1808//210 +f 210//204 116//204 1635//204 +f 1807//3515 1794//3515 1803//3515 +f 3140//3516 3137//3516 907//3516 +f 1575//3517 1805//3517 1803//3517 +f 1459//216 3141//216 3142//216 +f 1575//3518 1540//3518 828//3518 +f 1802//210 838//210 1540//210 +f 1802//3519 1801//3519 2753//3519 +f 3143//3520 2986//3520 3144//3520 +f 1797//3521 1802//3521 1803//3521 +f 3142//3522 3141//3522 3145//3522 +f 831//3523 3120//3523 3146//3523 +f 1797//3524 1803//3524 1794//3524 +f 211//210 215//210 207//210 +f 1791//210 2808//210 1795//210 +f 1816//3525 1792//3525 1794//3525 +f 622//3526 608//3526 551//3526 +f 1792//3527 1824//3527 1790//3527 +f 2853//3528 1791//3528 1789//3528 +f 1790//3529 1827//3529 850//3529 +f 1484//216 1303//216 1196//216 +f 1780//3530 849//3530 1783//3530 +f 1782//3531 1783//3531 848//3531 +f 846//3532 1782//3532 848//3532 +f 1779//3533 1780//3533 1783//3533 +f 1778//3534 849//3534 1780//3534 +f 1527//3535 1778//3535 1780//3535 +f 3099//3536 3110//3536 3102//3536 +f 1777//3537 2800//3537 849//3537 +f 1778//210 1527//210 845//210 +f 1777//3538 1776//3538 1775//3538 +f 1774//210 2797//210 1775//210 +f 2797//3539 1774//3539 1767//3539 +f 1772//3540 1767//3540 1774//3540 +f 1771//3541 1773//3541 1394//3541 +f 3147//3522 3145//3522 3141//3522 +f 3148//3542 3149//3542 3150//3542 +f 3151//233 3148//233 3152//233 +f 1393//210 1769//210 1394//210 +f 1769//210 1393//210 1392//210 +f 3152//216 3141//216 3151//216 +f 1769//3543 1771//3543 1394//3543 +f 1770//3544 1768//3544 1772//3544 +f 1767//3545 1772//3545 1768//3545 +f 3141//3546 684//3546 3153//3546 +f 1766//3547 2797//3547 1767//3547 +f 3154//3548 3149//3548 3147//3548 +f 1557//3549 1765//3549 1561//3549 +f 1769//210 1392//210 1764//210 +f 3155//3550 3156//3550 3143//3550 +f 1526//210 1563//210 1565//210 +f 832//3551 831//3551 3146//3551 +f 116//3552 140//3552 1635//3552 +f 935//233 3157//233 3158//233 +f 1760//210 1759//210 1878//210 +f 1265//3553 900//3553 918//3553 +f 935//233 3158//233 741//233 +f 3158//3554 744//3554 741//3554 +f 1760//210 1878//210 1885//210 +f 3146//3555 3159//3555 832//3555 +f 1648//3556 1635//3556 140//3556 +f 1740//3557 1648//3557 140//3557 +f 579//3558 900//3558 1224//3558 +f 140//3559 1742//3559 1740//3559 +f 171//3560 1087//3560 190//3560 +f 140//3561 261//3561 1742//3561 +f 980//3562 1248//3562 978//3562 +f 3160//216 3161//216 261//216 +f 1760//210 1900//210 1566//210 +f 562//210 579//210 1204//210 +f 181//3563 1511//3563 107//3563 +f 1566//210 1900//210 1814//210 +f 744//3564 3158//3564 3162//3564 +f 684//233 744//233 3153//233 +f 3160//3565 261//3565 198//3565 +f 1566//3566 1814//3566 1697//3566 +f 744//233 3162//233 3153//233 +f 104//204 3160//204 198//204 +f 1697//3567 1668//3567 1566//3567 +f 3160//204 104//204 194//204 +f 3162//3568 3158//3568 3153//3568 +f 3097//3569 3110//3569 3099//3569 +f 3160//216 194//216 3161//216 +f 107//3570 3161//3570 194//3570 +f 3158//3571 3157//3571 3153//3571 +f 107//3572 1511//3572 3161//3572 +f 1248//3573 1450//3573 978//3573 +f 978//3574 1450//3574 977//3574 +f 1004//3575 901//3575 1631//3575 +f 603//216 171//216 170//216 +f 1757//204 1193//204 1004//204 +f 3157//3576 3163//3576 3153//3576 +f 935//233 936//233 3157//233 +f 1668//3577 2435//3577 1541//3577 +f 2435//3578 1672//3578 1541//3578 +f 2435//3579 2434//3579 1672//3579 +f 2436//3580 1672//3580 2434//3580 +f 3163//3581 3157//3581 936//3581 +f 625//3582 3163//3582 936//3582 +f 625//233 3164//233 3165//233 +f 3166//3583 3165//3583 3167//3583 +f 2437//3584 2445//3584 2452//3584 +f 2452//3585 1672//3585 2437//3585 +f 2452//3586 2453//3586 1672//3586 +f 1672//3587 2453//3587 2455//3587 +f 1672//3588 2455//3588 1543//3588 +f 3168//3589 3166//3589 3169//3589 +f 3092//3590 3104//3590 3093//3590 +f 2457//3591 1550//3591 1543//3591 +f 3093//3592 3104//3592 3097//3592 +f 3170//3593 3171//3593 3172//3593 +f 888//243 3173//243 891//243 +f 1202//3594 671//3594 403//3594 +f 3143//3595 3174//3595 2987//3595 +f 1553//3596 2457//3596 2462//3596 +f 1553//210 2462//210 2471//210 +f 2276//209 2954//209 3175//209 +f 1553//210 2471//210 2481//210 +f 1553//210 2481//210 2490//210 +f 3104//3597 3103//3597 3097//3597 +f 1553//210 2490//210 2489//210 +f 1553//210 2489//210 2492//210 +f 3117//3598 3097//3598 3103//3598 +f 977//216 3176//216 946//216 +f 1511//3599 450//3599 166//3599 +f 1553//210 2492//210 1620//210 +f 1758//210 1553//210 1620//210 +f 3177//3600 3170//3600 3178//3600 +f 2069//3601 2054//3601 2053//3601 +f 3154//233 3179//233 3149//233 +f 3180//3602 1758//3602 1601//3602 +f 3106//3603 3117//3603 3103//3603 +f 2054//3604 2099//3604 2043//3604 +f 1758//3605 1761//3605 1603//3605 +f 3179//216 3181//216 3149//216 +f 1758//210 1762//210 1761//210 +f 1761//3606 1762//3606 1604//3606 +f 1604//3607 1762//3607 1605//3607 +f 3182//3608 3183//3608 3184//3608 +f 3185//3609 3186//3609 3184//3609 +f 3187//243 3188//243 3181//243 +f 3186//3610 3189//3610 3190//3610 +f 684//233 3188//233 3190//233 +f 657//3611 1511//3611 166//3611 +f 3106//3612 3108//3612 3191//3612 +f 684//3613 3141//3613 3188//3613 +f 1762//210 1620//210 1608//210 +f 1758//210 1620//210 1762//210 +f 3161//3614 1511//3614 657//3614 +f 902//3615 1204//3615 937//3615 +f 3192//216 3141//216 3152//216 +f 657//216 261//216 3161//216 +f 3193//216 3192//216 3194//216 +f 1735//216 168//216 658//216 +f 1094//3616 3195//3616 1110//3616 +f 1758//210 3180//210 1553//210 +f 3180//210 1554//210 1553//210 +f 1554//3617 3180//3617 1601//3617 +f 1601//3618 1682//3618 1554//3618 +f 1122//3619 3196//3619 1130//3619 +f 1682//210 1601//210 1600//210 +f 1600//210 1684//210 1682//210 +f 1568//210 1682//210 1684//210 +f 1682//3620 1568//3620 1555//3620 +f 3197//3621 1684//3621 1600//3621 +f 2365//3622 2358//3622 2367//3622 +f 3196//210 636//210 1130//210 +f 3198//209 3193//209 3199//209 +f 3200//243 1572//243 3197//243 +f 3200//243 1692//243 1572//243 +f 3200//3623 3201//3623 1692//3623 +f 3202//243 3198//243 3199//243 +f 1573//3624 1692//3624 3201//3624 +f 1693//3625 1573//3625 3201//3625 +f 3201//210 3203//210 1693//210 +f 1694//210 1693//210 3203//210 +f 1694//210 3203//210 3204//210 +f 1122//3626 1121//3626 3196//3626 +f 3204//210 3205//210 1694//210 +f 1576//3627 1694//3627 3205//3627 +f 3206//3628 3207//3628 3152//3628 +f 3207//3629 3208//3629 3152//3629 +f 1576//3630 3205//3630 3209//3630 +f 3209//204 1729//204 1576//204 +f 3210//3631 3211//3631 3212//3631 +f 3213//3632 3214//3632 3202//3632 +f 1578//3633 1729//3633 1595//3633 +f 1578//210 1595//210 1594//210 +f 1579//210 1578//210 1594//210 +f 3215//3634 3216//3634 3217//3634 +f 3216//3635 3218//3635 2988//3635 +f 1582//3636 1579//3636 1583//3636 +f 1065//3637 1579//3637 1582//3637 +f 3213//3638 3219//3638 3199//3638 +f 1729//3639 1578//3639 3220//3639 +f 3220//3640 1578//3640 1577//3640 +f 1576//3641 3220//3641 1577//3641 +f 1576//204 1729//204 3220//204 +f 1729//204 3209//204 3221//204 +f 3221//3642 1596//3642 1729//3642 +f 1596//3643 3221//3643 1732//3643 +f 3221//3644 3222//3644 1732//3644 +f 3222//3645 3223//3645 1732//3645 +f 1732//3646 3223//3646 3224//3646 +f 3224//3647 1597//3647 1732//3647 +f 862//3648 865//3648 814//3648 +f 3219//3649 3185//3649 3199//3649 +f 3224//3650 3223//3650 1747//3650 +f 3224//3651 1747//3651 1597//3651 +f 763//3652 2899//3652 2789//3652 +f 1747//3653 3223//3653 3197//3653 +f 1747//3654 3197//3654 1600//3654 +f 636//3655 3196//3655 1121//3655 +f 3223//3656 3200//3656 3197//3656 +f 3223//3657 3225//3657 3200//3657 +f 3200//3658 3225//3658 3226//3658 +f 3225//210 3227//210 3226//210 +f 3228//210 3226//210 3227//210 +f 3228//3659 3227//3659 3229//3659 +f 3229//3660 3230//3660 3228//3660 +f 3231//3661 3228//3661 3230//3661 +f 2789//3662 709//3662 763//3662 +f 3185//3663 3219//3663 3232//3663 +f 3232//3664 3233//3664 3185//3664 +f 3230//3665 3203//3665 3231//3665 +f 3203//3666 3230//3666 3234//3666 +f 3219//3667 3235//3667 3232//3667 +f 3231//210 3201//210 3228//210 +f 3234//210 3230//210 3229//210 +f 3213//3668 3236//3668 3219//3668 +f 3237//3669 3235//3669 3219//3669 +f 3234//3670 3238//3670 3204//3670 +f 3229//3671 3238//3671 3234//3671 +f 3239//3672 3236//3672 3213//3672 +f 3229//3673 3240//3673 3238//3673 +f 1309//3674 1371//3674 1385//3674 +f 821//3675 1480//3675 1481//3675 +f 3132//3676 3174//3676 3143//3676 +f 3132//3677 3143//3677 3156//3677 +f 3238//210 3240//210 3241//210 +f 3205//210 3238//210 3241//210 +f 3242//3678 3205//3678 3241//3678 +f 3241//3679 3222//3679 3242//3679 +f 3243//3680 3244//3680 3237//3680 +f 3245//3681 3239//3681 3246//3681 +f 3240//210 3227//210 3241//210 +f 3225//210 3241//210 3227//210 +f 3247//3682 3248//3682 3249//3682 +f 3225//3683 3223//3683 3241//3683 +f 3249//204 3250//204 3251//204 +f 3237//3684 3244//3684 3252//3684 +f 3133//3685 3132//3685 3156//3685 +f 2365//3686 2367//3686 2366//3686 +f 3227//3687 3240//3687 3229//3687 +f 3244//3688 3253//3688 3252//3688 +f 3254//3689 3255//3689 3253//3689 +f 3226//210 3228//210 3201//210 +f 700//210 701//210 721//210 +f 3251//209 3256//209 3257//209 +f 3258//204 3249//204 349//204 +f 3223//3690 3222//3690 3241//3690 +f 3242//3691 3222//3691 3221//3691 +f 3221//204 3209//204 3242//204 +f 3209//3692 3205//3692 3242//3692 +f 3259//216 664//216 3260//216 +f 3205//210 3204//210 3238//210 +f 637//3693 636//3693 1121//3693 +f 3204//3694 3203//3694 3234//3694 +f 1574//3695 1693//3695 1694//3695 +f 3203//210 3201//210 3231//210 +f 249//216 628//216 3261//216 +f 3201//3696 3200//3696 3226//3696 +f 3262//209 3261//209 3263//209 +f 3258//2698 3264//2698 3250//2698 +f 3265//3697 3264//3697 3266//3697 +f 1572//3698 1684//3698 3197//3698 +f 2492//3699 2506//3699 1620//3699 +f 1620//3700 2506//3700 2508//3700 +f 1587//210 1586//210 562//210 +f 2508//3701 1624//3701 1620//3701 +f 1624//3702 1786//3702 1620//3702 +f 637//3703 1121//3703 3195//3703 +f 1121//3704 1111//3704 3195//3704 +f 2509//216 2511//216 2508//216 +f 2511//3705 2515//3705 2508//3705 +f 2508//3706 2515//3706 1624//3706 +f 1624//3707 2515//3707 2517//3707 +f 2516//3708 1624//3708 2517//3708 +f 1624//3709 2516//3709 1625//3709 +f 2516//3710 2515//3710 1625//3710 +f 3265//3711 3267//3711 3268//3711 +f 1741//216 168//216 1735//216 +f 1625//210 2515//210 2519//210 +f 1625//210 2519//210 2521//210 +f 3210//3712 3268//3712 3269//3712 +f 946//3713 3176//3713 894//3713 +f 168//216 1741//216 657//216 +f 1625//210 2521//210 2531//210 +f 3212//3714 3152//3714 3208//3714 +f 1741//216 261//216 657//216 +f 3212//3715 3208//3715 3270//3715 +f 1625//210 2531//210 2533//210 +f 1625//210 2533//210 2534//210 +f 1625//210 2534//210 2538//210 +f 1625//210 2538//210 2433//210 +f 1625//210 2433//210 3271//210 +f 1742//3716 261//3716 1741//3716 +f 3270//3717 3272//3717 3273//3717 +f 3271//3718 1668//3718 1697//3718 +f 3273//3719 3274//3719 3275//3719 +f 1094//3720 637//3720 3195//3720 +f 867//210 866//210 864//210 +f 1735//3721 1739//3721 1741//3721 +f 1735//3722 1687//3722 1739//3722 +f 2433//3723 2435//3723 1668//3723 +f 2433//3724 1668//3724 3276//3724 +f 3271//3725 3276//3725 1668//3725 +f 3277//3726 3278//3726 3258//3726 +f 3271//210 1697//210 1625//210 +f 3271//3727 2433//3727 3276//3727 +f 2539//3728 2433//3728 2538//3728 +f 2539//3729 2534//3729 2433//3729 +f 2534//3730 2434//3730 2433//3730 +f 2434//3731 2534//3731 2531//3731 +f 2434//3732 2531//3732 2510//3732 +f 2545//216 2434//216 2510//216 +f 3266//3733 3264//3733 3279//3733 +f 2509//216 2545//216 2510//216 +f 2558//216 2545//216 2509//216 +f 2509//3734 2561//3734 2558//3734 +f 2561//3735 3216//3735 2558//3735 +f 2558//3736 3216//3736 2565//3736 +f 3278//3737 3280//3737 3281//3737 +f 1094//3738 1110//3738 3282//3738 +f 1110//3739 3283//3739 3282//3739 +f 3284//3740 2365//3740 2366//3740 +f 3285//3741 3279//3741 3281//3741 +f 2573//3742 2558//3742 2566//3742 +f 3286//3743 3279//3743 3285//3743 +f 1105//3744 1099//3744 3115//3744 +f 3115//3745 1099//3745 3114//3745 +f 2578//3746 2573//3746 2574//3746 +f 3287//3747 3285//3747 3288//3747 +f 3289//3748 3290//3748 3286//3748 +f 1099//3749 3282//3749 3114//3749 +f 3114//3750 3282//3750 3108//3750 +f 3291//3751 3287//3751 3292//3751 +f 2577//3752 2578//3752 2582//3752 +f 2582//3753 2592//3753 2577//3753 +f 2587//216 2577//216 2592//216 +f 2587//3754 2592//3754 2591//3754 +f 2591//3755 2593//3755 2587//3755 +f 2576//3756 2587//3756 2593//3756 +f 2593//3757 2600//3757 2576//3757 +f 2557//3758 2576//3758 2600//3758 +f 2557//3759 2600//3759 2605//3759 +f 3114//3760 3108//3760 3107//3760 +f 3293//3761 3291//3761 3294//3761 +f 3290//3762 3289//3762 3295//3762 +f 2545//216 2557//216 2610//216 +f 2612//3763 2545//3763 2610//3763 +f 2610//3764 2594//3764 2612//3764 +f 2612//210 2594//210 2619//210 +f 2619//210 2620//210 2612//210 +f 3108//3765 3282//3765 3191//3765 +f 2613//210 2612//210 2620//210 +f 2620//210 2622//210 2613//210 +f 3293//3766 3294//3766 3296//3766 +f 2622//210 2625//210 2613//210 +f 2627//210 2613//210 2625//210 +f 2625//210 2630//210 2627//210 +f 2924//210 1587//210 2384//210 +f 2639//210 2627//210 2630//210 +f 3275//3767 3297//3767 3277//3767 +f 3282//3768 3283//3768 3191//3768 +f 2640//210 2639//210 2630//210 +f 2630//210 2646//210 2640//210 +f 2647//210 2640//210 2646//210 +f 2647//210 2646//210 2651//210 +f 2651//210 2653//210 2647//210 +f 2653//210 2655//210 2647//210 +f 3066//3769 888//3769 887//3769 +f 2655//210 2656//210 2647//210 +f 2656//210 2658//210 2647//210 +f 3297//3770 3298//3770 3206//3770 +f 2647//210 2658//210 2660//210 +f 2660//210 2670//210 2647//210 +f 2670//1299 2669//1299 2647//1299 +f 2669//210 2673//210 2647//210 +f 2674//210 2647//210 2673//210 +f 3191//3771 3283//3771 1107//3771 +f 2673//210 2684//210 2674//210 +f 3133//3772 3299//3772 3300//3772 +f 2684//210 2696//210 2674//210 +f 2698//210 2674//210 2696//210 +f 3206//3773 3298//3773 3301//3773 +f 2696//210 2699//210 2698//210 +f 2698//210 2699//210 2704//210 +f 2707//210 2698//210 2704//210 +f 2707//210 2704//210 2709//210 +f 2709//210 2711//210 2707//210 +f 2711//210 2713//210 2707//210 +f 2713//210 2718//210 2707//210 +f 2718//210 2719//210 2707//210 +f 3301//3774 3207//3774 3206//3774 +f 2719//210 2721//210 2707//210 +f 2722//210 2707//210 2721//210 +f 2721//210 2724//210 2722//210 +f 2726//210 2722//210 2724//210 +f 3302//204 3207//204 3301//204 +f 1222//210 2726//210 2724//210 +f 2724//210 2731//210 1222//210 +f 2731//210 2739//210 1222//210 +f 2739//210 2741//210 1222//210 +f 3292//3775 3287//3775 3303//3775 +f 3304//3776 3302//3776 3305//3776 +f 2741//3777 2740//3777 1221//3777 +f 2749//216 1221//216 2740//216 +f 3287//3778 3288//3778 3306//3778 +f 2749//216 2740//216 2738//216 +f 2755//216 2749//216 2738//216 +f 2755//209 2738//209 2730//209 +f 3306//3779 3307//3779 3305//3779 +f 3304//3780 3305//3780 3308//3780 +f 902//3781 681//3781 3309//3781 +f 894//3782 3176//3782 682//3782 +f 1734//3783 1687//3783 1735//3783 +f 521//3784 1687//3784 1734//3784 +f 2730//210 2774//210 2762//210 +f 2774//210 2773//210 2762//210 +f 3307//3785 3310//3785 3305//3785 +f 2775//210 2762//210 2773//210 +f 3310//3786 3311//3786 3308//3786 +f 448//210 2775//210 2773//210 +f 448//210 2773//210 2809//210 +f 448//210 2809//210 449//210 +f 2814//210 449//210 2809//210 +f 2815//210 2814//210 2809//210 +f 2821//210 2815//210 2809//210 +f 2809//3787 2823//3787 2821//3787 +f 3207//204 3302//204 3304//204 +f 2822//3788 2821//3788 2823//3788 +f 2823//3789 2828//3789 2822//3789 +f 2822//3790 2828//3790 2831//3790 +f 2831//210 2830//210 2822//210 +f 2815//210 2822//210 2830//210 +f 2830//204 2832//204 2815//204 +f 2832//3791 2816//3791 2815//3791 +f 2832//216 503//216 2816//216 +f 2816//216 503//216 2836//216 +f 2816//243 2836//243 2839//243 +f 2839//243 2840//243 2816//243 +f 2840//243 2842//243 2816//243 +f 3312//243 2816//243 2842//243 +f 3312//2886 2842//2886 2844//2886 +f 3304//204 3208//204 3207//204 +f 3208//204 3304//204 3308//204 +f 2844//233 2846//233 3312//233 +f 2846//3792 2850//3792 3312//3792 +f 2816//243 3312//243 2850//243 +f 2816//243 2850//243 2814//243 +f 2850//243 2859//243 2814//243 +f 852//243 2814//243 2859//243 +f 3313//3793 3270//3793 3208//3793 +f 2859//243 2866//243 852//243 +f 2866//243 2870//243 852//243 +f 2870//243 2869//243 852//243 +f 3270//3794 3311//3794 3272//3794 +f 2869//243 2872//243 852//243 +f 2872//243 2876//243 852//243 +f 3311//233 3314//233 3315//233 +f 2876//243 2880//243 852//243 +f 206//3795 681//3795 680//3795 +f 3316//3796 680//3796 682//3796 +f 2880//243 2881//243 1006//243 +f 1734//3797 658//3797 521//3797 +f 206//3798 680//3798 200//3798 +f 2880//243 1006//243 852//243 +f 604//3799 631//3799 603//3799 +f 997//243 852//243 1006//243 +f 658//210 186//210 521//210 +f 3317//3800 3311//3800 3318//3800 +f 3211//3801 3318//3801 3307//3801 +f 183//2688 1686//2688 521//2688 +f 1004//3802 1756//3802 1757//3802 +f 3309//3803 681//3803 206//3803 +f 887//243 885//243 3065//243 +f 525//209 144//209 997//209 +f 222//3804 997//3804 144//3804 +f 3310//3805 3318//3805 3311//3805 +f 3118//3806 1107//3806 3116//3806 +f 903//3807 222//3807 144//3807 +f 258//209 903//209 144//209 +f 1657//3808 1686//3808 183//3808 +f 1657//216 3319//216 3320//216 +f 202//210 3309//210 206//210 +f 3310//3809 3307//3809 3318//3809 +f 258//209 141//209 409//209 +f 409//3810 1041//3810 258//3810 +f 259//3811 258//3811 1041//3811 +f 1041//3812 409//3812 138//3812 +f 1041//233 138//233 260//233 +f 832//3813 3159//3813 3321//3813 +f 3214//3814 3211//3814 3307//3814 +f 138//3815 409//3815 139//3815 +f 3322//3816 3202//3816 3214//3816 +f 258//209 257//209 903//209 +f 200//210 3323//210 201//210 +f 113//3817 201//3817 3175//3817 +f 3321//3818 1969//3818 832//3818 +f 299//3819 1266//3819 175//3819 +f 3281//3820 3280//3820 3288//3820 +f 1266//243 183//243 175//243 +f 3324//3821 294//3821 291//3821 +f 3320//3822 294//3822 3324//3822 +f 3285//3823 3281//3823 3288//3823 +f 223//209 2983//209 235//209 +f 235//209 904//209 223//209 +f 904//209 235//209 230//209 +f 230//209 3325//209 904//209 +f 904//3824 3325//3824 228//3824 +f 913//210 228//210 3325//210 +f 3325//210 3326//210 913//210 +f 913//243 3326//243 3327//243 +f 3327//243 3328//243 913//243 +f 913//233 3328//233 3329//233 +f 3329//233 229//233 913//233 +f 3330//204 229//204 3329//204 +f 229//204 3330//204 925//204 +f 3330//209 3325//209 925//209 +f 3328//216 3330//216 3329//216 +f 3330//216 3328//216 3327//216 +f 3326//209 3330//209 3327//209 +f 3330//209 3326//209 3325//209 +f 3325//209 230//209 925//209 +f 235//209 2983//209 321//209 +f 235//210 321//210 2990//210 +f 2990//3825 496//3825 235//3825 +f 3155//3826 3331//3826 3156//3826 +f 3332//3827 3333//3827 3334//3827 +f 3191//3828 1107//3828 3118//3828 +f 823//3829 496//3829 2990//3829 +f 2990//3830 1035//3830 823//3830 +f 2991//3831 823//3831 1035//3831 +f 2991//3832 1035//3832 2992//3832 +f 382//216 2991//216 2992//216 +f 2992//216 1423//216 382//216 +f 3106//3833 3191//3833 3118//3833 +f 1423//216 2992//216 2993//216 +f 1423//216 2993//216 2995//216 +f 3277//3834 3280//3834 3278//3834 +f 3206//209 3277//209 3297//209 +f 2995//3835 1444//3835 1423//3835 +f 1444//3836 384//3836 1423//3836 +f 3277//506 3206//506 3202//506 +f 3202//3837 3280//3837 3277//3837 +f 2998//3838 388//3838 1444//3838 +f 388//3839 2998//3839 3004//3839 +f 3004//3840 3011//3840 388//3840 +f 3202//3841 3322//3841 3280//3841 +f 3011//209 3013//209 388//209 +f 3013//216 3015//216 388//216 +f 3015//204 3017//204 388//204 +f 3020//204 388//204 3017//204 +f 3017//3842 3173//3842 3020//3842 +f 888//3843 3020//3843 3173//3843 +f 3016//3844 3173//3844 3017//3844 +f 3016//3845 3024//3845 3173//3845 +f 3024//243 891//243 3173//243 +f 891//243 3024//243 3027//243 +f 3322//3846 3288//3846 3280//3846 +f 891//243 3027//243 3029//243 +f 3029//243 3030//243 891//243 +f 3030//209 3034//209 891//209 +f 3035//209 891//209 3034//209 +f 2994//3847 3035//3847 3034//3847 +f 3034//3848 3036//3848 2994//3848 +f 3288//3846 3322//3846 3306//3846 +f 3036//3849 2993//3849 2994//3849 +f 3037//216 2993//216 3036//216 +f 3037//216 3036//216 3011//216 +f 3322//3850 3214//3850 3306//3850 +f 3214//3851 3307//3851 3306//3851 +f 3048//3852 3119//3852 3037//3852 +f 3038//3853 3037//3853 3119//3853 +f 3119//3854 3122//3854 3038//3854 +f 3335//3855 3331//3855 3336//3855 +f 2049//3856 2048//3856 2053//3856 +f 3124//3857 3038//3857 3122//3857 +f 3122//3858 3125//3858 3124//3858 +f 2068//3859 2053//3859 2048//3859 +f 3210//3860 3269//3860 3211//3860 +f 772//3861 113//3861 2954//3861 +f 3324//3862 291//3862 1254//3862 +f 2111//3863 2068//3863 2048//3863 +f 3125//210 3131//210 366//210 +f 3269//3864 3318//3864 3211//3864 +f 3131//210 1382//210 366//210 +f 1382//3865 3131//3865 3130//3865 +f 3130//3866 372//3866 1382//3866 +f 368//3867 1382//3867 372//3867 +f 3130//216 360//216 372//216 +f 3318//3868 3269//3868 3317//3868 +f 3134//216 360//216 3130//216 +f 3129//216 3134//216 3130//216 +f 3269//210 3268//210 3317//210 +f 3268//3869 3267//3869 3317//3869 +f 352//3870 3134//3870 3136//3870 +f 352//210 3136//210 212//210 +f 1013//210 212//210 3136//210 +f 3136//210 926//210 1013//210 +f 3267//3871 3265//3871 3266//3871 +f 3272//3872 3311//3872 3315//3872 +f 3106//3873 3116//3873 3117//3873 +f 3272//3874 3315//3874 3337//3874 +f 3324//3875 1254//3875 3320//3875 +f 1013//3876 595//3876 909//3876 +f 909//3877 595//3877 912//3877 +f 1013//210 924//210 595//210 +f 595//210 924//210 1200//210 +f 595//210 1200//210 3338//210 +f 595//210 3338//210 3339//210 +f 3339//210 3340//210 595//210 +f 3272//3878 3337//3878 3273//3878 +f 3340//210 3339//210 3341//210 +f 3341//204 3342//204 3340//204 +f 3340//233 3342//233 594//233 +f 3343//233 594//233 3342//233 +f 3342//216 1051//216 3343//216 +f 3343//243 1051//243 1036//243 +f 3343//243 1036//243 1486//243 +f 3273//243 3337//243 3344//243 +f 3345//243 3343//243 1486//243 +f 1486//243 1462//243 3345//243 +f 1027//3879 3345//3879 1462//3879 +f 3266//3880 3279//3880 3346//3880 +f 3279//3881 3286//3881 3346//3881 +f 3290//3882 3346//3882 3286//3882 +f 1486//243 3347//243 1462//243 +f 3347//243 3348//243 1462//243 +f 1030//3883 1462//3883 3348//3883 +f 3348//3883 1485//3883 1030//3883 +f 3274//3884 3295//3884 3275//3884 +f 3290//243 3295//243 3274//243 +f 3290//243 3274//243 3273//243 +f 1033//204 1485//204 574//204 +f 1033//3885 574//3885 3347//3885 +f 3348//3886 2685//3886 1485//3886 +f 2685//3887 575//3887 1485//3887 +f 2685//243 3348//243 571//243 +f 3273//243 3344//243 3290//243 +f 3347//243 571//243 3348//243 +f 1486//3888 1033//3888 3347//3888 +f 3344//3889 3346//3889 3290//3889 +f 3343//243 3345//243 3349//243 +f 3345//3890 1027//3890 3349//3890 +f 3350//3891 3349//3891 1027//3891 +f 1027//204 583//204 3350//204 +f 3350//204 583//204 3351//204 +f 3352//3892 3350//3892 3351//3892 +f 3351//3893 581//3893 3352//3893 +f 3352//243 581//243 582//243 +f 3349//243 3352//243 582//243 +f 581//3894 3351//3894 3353//3894 +f 3353//3895 3354//3895 581//3895 +f 3344//3896 3337//3896 3346//3896 +f 3355//204 3354//204 3353//204 +f 583//204 3355//204 3353//204 +f 3355//204 559//204 3354//204 +f 3337//3897 3315//3897 3346//3897 +f 3346//233 3315//233 3314//233 +f 3314//3898 3266//3898 3346//3898 +f 580//3899 3354//3899 576//3899 +f 3354//204 572//204 576//204 +f 572//204 3354//204 559//204 +f 572//3900 559//3900 570//3900 +f 3350//3892 3352//3892 3349//3892 +f 3351//204 583//204 3353//204 +f 3314//3901 3267//3901 3266//3901 +f 3314//3902 3317//3902 3267//3902 +f 3311//3903 3317//3903 3314//3903 +f 3356//216 1051//216 3342//216 +f 3342//216 307//216 3356//216 +f 3356//216 307//216 3357//216 +f 3339//3904 3356//3904 3357//3904 +f 569//3905 3339//3905 3357//3905 +f 3358//3906 3339//3906 569//3906 +f 3359//3907 3358//3907 569//3907 +f 569//216 334//216 3359//216 +f 3270//3908 3313//3908 3311//3908 +f 3308//3909 3311//3909 3313//3909 +f 3358//3910 3359//3910 1335//3910 +f 343//210 3358//210 1335//210 +f 547//210 3358//210 343//210 +f 3313//3911 3208//3911 3308//3911 +f 1330//3912 1335//3912 3359//3912 +f 1254//3913 1633//3913 3320//3913 +f 350//3914 1335//3914 1330//3914 +f 3336//3915 3360//3915 3361//3915 +f 1633//3916 1658//3916 3320//3916 +f 1618//3917 1120//3917 1833//3917 +f 3320//3918 1658//3918 1657//3918 +f 344//216 347//216 1330//216 +f 724//3919 767//3919 733//3919 +f 3308//3920 3305//3920 3310//3920 +f 1330//3921 359//3921 350//3921 +f 3090//233 885//233 884//233 +f 1339//3922 350//3922 359//3922 +f 3319//3923 294//3923 3320//3923 +f 2137//3924 2129//3924 2101//3924 +f 334//216 1330//216 3359//216 +f 1330//216 334//216 340//216 +f 3362//3925 2137//3925 2101//3925 +f 3358//210 547//210 3339//210 +f 569//216 3357//216 307//216 +f 3356//216 1042//216 1051//216 +f 3356//216 3363//216 1042//216 +f 3287//3926 3306//3926 3305//3926 +f 3305//233 3303//233 3287//233 +f 923//216 1042//216 3363//216 +f 923//3927 3363//3927 1200//3927 +f 3363//3928 3356//3928 3339//3928 +f 3343//243 3349//243 594//243 +f 3342//204 3341//204 307//204 +f 3341//209 308//209 307//209 +f 547//210 3341//210 3339//210 +f 3305//3929 3302//3929 3303//3929 +f 3339//3930 3338//3930 3363//3930 +f 3338//3931 1200//3931 3363//3931 +f 111//210 1787//210 3364//210 +f 3319//3932 1266//3932 294//3932 +f 909//3933 1326//3933 1013//3933 +f 3292//3934 3303//3934 3302//3934 +f 2451//3935 3365//3935 3360//3935 +f 927//3936 926//3936 3134//3936 +f 2423//3937 1969//3937 3321//3937 +f 927//216 3129//216 897//216 +f 3115//3938 3116//3938 1105//3938 +f 183//216 1266//216 3319//216 +f 3366//3939 1828//3939 1830//3939 +f 3366//3940 1830//3940 2132//3940 +f 3319//216 1657//216 183//216 +f 2924//3941 3323//3941 2932//3941 +f 3131//3942 3121//3942 3123//3942 +f 2997//3943 3123//3943 3121//3943 +f 2997//210 3121//210 3119//210 +f 2997//210 3119//210 2998//210 +f 3302//3944 3301//3944 3292//3944 +f 3292//3945 3301//3945 3291//3945 +f 3301//3946 3298//3946 3291//3946 +f 3291//3947 3298//3947 3294//3947 +f 2996//216 2993//216 3123//216 +f 3123//216 2993//216 3038//216 +f 1444//3948 2996//3948 2997//3948 +f 3003//210 2998//210 3119//210 +f 3123//3949 2997//3949 2996//3949 +f 3131//210 3125//210 3121//210 +f 3131//3950 3123//3950 3129//3950 +f 3298//3951 3297//3951 3294//3951 +f 3129//216 3123//216 3124//216 +f 2384//3952 1828//3952 3366//3952 +f 3124//216 897//216 3129//216 +f 3297//3953 3296//3953 3294//3953 +f 3124//3954 366//3954 897//3954 +f 3297//209 3275//209 3296//209 +f 3275//3955 3295//3955 3296//3955 +f 212//210 1013//210 1326//210 +f 110//3956 1757//3956 1390//3956 +f 212//210 1326//210 3137//210 +f 212//210 3137//210 211//210 +f 3137//3516 3140//3516 211//3516 +f 3295//3957 3293//3957 3296//3957 +f 3295//3958 3289//3958 3293//3958 +f 3140//216 907//216 1459//216 +f 1459//216 3142//216 3140//216 +f 3142//3959 211//3959 3140//3959 +f 211//3959 3142//3959 3145//3959 +f 215//210 211//210 3145//210 +f 215//210 3145//210 3147//210 +f 3289//3960 3291//3960 3293//3960 +f 3147//3961 3149//3961 215//3961 +f 3149//3962 3148//3962 215//3962 +f 215//243 3148//243 3151//243 +f 3151//243 1459//243 215//243 +f 1459//209 216//209 215//209 +f 1459//216 623//216 216//216 +f 623//216 249//216 216//216 +f 249//204 214//204 216//204 +f 3289//3963 3287//3963 3291//3963 +f 1459//216 179//216 623//216 +f 179//3964 178//3964 623//3964 +f 3289//3965 3286//3965 3287//3965 +f 1686//3966 1657//3966 1659//3966 +f 179//216 1459//216 872//216 +f 1665//204 1686//204 1659//204 +f 3141//216 1459//216 3151//216 +f 1377//3967 1371//3967 1309//3967 +f 1377//3968 1376//3968 1371//3968 +f 3147//3969 3141//3969 3153//3969 +f 3154//3970 3147//3970 3153//3970 +f 3154//233 3153//233 3163//233 +f 3154//233 3163//233 625//233 +f 625//233 3165//233 3154//233 +f 3165//3971 3166//3971 3154//3971 +f 3154//3972 3166//3972 3168//3972 +f 3154//233 3168//233 3171//233 +f 3171//233 3170//233 3154//233 +f 3170//233 3177//233 3154//233 +f 3113//3973 3111//3973 3115//3973 +f 3285//233 3287//233 3286//233 +f 3113//3974 3107//3974 3111//3974 +f 3179//233 3154//233 3177//233 +f 3179//3975 3177//3975 3182//3975 +f 3181//216 3179//216 3182//216 +f 3182//233 3184//233 3181//233 +f 2232//3976 3362//3976 2101//3976 +f 3181//233 3184//233 3186//233 +f 3187//233 3181//233 3186//233 +f 3187//210 3186//210 3190//210 +f 3190//210 3188//210 3187//210 +f 2099//3977 2232//3977 2101//3977 +f 3107//3978 3112//3978 3111//3978 +f 3141//3979 3192//3979 3188//3979 +f 3192//3980 3193//3980 3188//3980 +f 3193//3981 3149//3981 3188//3981 +f 3188//243 3149//243 3181//243 +f 3110//3982 3112//3982 3107//3982 +f 3149//3981 3193//3981 3150//3981 +f 3193//209 3198//209 3150//209 +f 3150//210 3198//210 3202//210 +f 3202//210 3206//210 3150//210 +f 3206//210 3148//210 3150//210 +f 3206//233 3152//233 3148//233 +f 2366//3983 1888//3983 3284//3983 +f 3367//3984 2428//3984 3321//3984 +f 3107//3985 3102//3985 3110//3985 +f 3101//3986 3102//3986 3107//3986 +f 3152//3987 3212//3987 3192//3987 +f 3192//3988 3212//3988 3211//3988 +f 3192//3989 3211//3989 3214//3989 +f 3214//3990 3213//3990 3192//3990 +f 3194//243 3192//243 3213//243 +f 3213//243 3199//243 3194//243 +f 3199//209 3193//209 3194//209 +f 3281//3991 3279//3991 3278//3991 +f 3279//3992 3264//3992 3278//3992 +f 3368//3993 3199//3993 3185//3993 +f 3264//3994 3258//3994 3278//3994 +f 2428//3995 3367//3995 3369//3995 +f 3258//204 3250//204 3249//204 +f 3107//3996 3106//3996 3101//3996 +f 3106//3997 3103//3997 3101//3997 +f 3333//3998 3365//3998 3370//3998 +f 3103//3999 3092//3999 3101//3999 +f 3237//4000 3219//4000 3236//4000 +f 3275//506 3277//506 3258//506 +f 3237//233 3236//233 3239//233 +f 3243//233 3237//233 3239//233 +f 3275//210 3258//210 349//210 +f 3239//233 3245//233 3243//233 +f 3245//515 3371//515 3243//515 +f 3243//4001 3371//4001 3247//4001 +f 3243//4002 3247//4002 3249//4002 +f 3244//4003 3243//4003 3249//4003 +f 3249//4004 3251//4004 3244//4004 +f 3253//4005 3244//4005 3251//4005 +f 3254//4006 3253//4006 3251//4006 +f 1659//4007 1658//4007 1660//4007 +f 3251//4008 3257//4008 3254//4008 +f 3248//4009 3254//4009 3257//4009 +f 3248//4010 3257//4010 3249//4010 +f 349//204 3249//204 3257//204 +f 3257//209 3256//209 349//209 +f 349//210 3256//210 3372//210 +f 349//210 3372//210 348//210 +f 3372//210 626//210 348//210 +f 3372//233 3171//233 626//233 +f 626//233 3171//233 3373//233 +f 3373//233 3374//233 626//233 +f 626//233 3374//233 2785//233 +f 1658//4011 1748//4011 1660//4011 +f 1658//4012 1749//4012 1748//4012 +f 2785//233 3375//233 745//233 +f 562//210 3376//210 3377//210 +f 1649//4013 1749//4013 1658//4013 +f 3375//233 1243//233 745//233 +f 1243//233 981//233 745//233 +f 250//210 3275//210 349//210 +f 745//4014 981//4014 2763//4014 +f 981//4015 688//4015 2763//4015 +f 250//233 249//233 3275//233 +f 3261//233 3275//233 249//233 +f 3101//4016 3092//4016 3091//4016 +f 3099//4017 3101//4017 3091//4017 +f 1828//4018 3378//4018 1787//4018 +f 2908//4019 3379//4019 1003//4019 +f 1634//4020 1649//4020 1658//4020 +f 3378//4021 3380//4021 1787//4021 +f 3261//4022 3273//4022 3275//4022 +f 3261//4023 3262//4023 3273//4023 +f 1658//4024 1633//4024 1634//4024 +f 210//216 1634//216 1633//216 +f 1633//4025 287//4025 210//4025 +f 105//4026 210//4026 287//4026 +f 3262//4027 3381//4027 3273//4027 +f 1302//4028 1301//4028 1314//4028 +f 105//4029 287//4029 286//4029 +f 3381//4030 3270//4030 3273//4030 +f 1264//233 3382//233 625//233 +f 3381//4031 3212//4031 3270//4031 +f 3382//233 3383//233 625//233 +f 3370//4032 3384//4032 3385//4032 +f 625//233 3383//233 3164//233 +f 3164//4033 3383//4033 3167//4033 +f 3167//4034 3165//4034 3164//4034 +f 3383//4033 3386//4033 3167//4033 +f 3387//233 3167//233 3386//233 +f 3381//4035 3262//4035 3212//4035 +f 3212//4036 3262//4036 3210//4036 +f 3263//209 3210//209 3262//209 +f 3375//4037 3387//4037 1243//4037 +f 1787//4038 3380//4038 3364//4038 +f 3387//4039 3375//4039 3388//4039 +f 3375//4040 3389//4040 3388//4040 +f 3166//233 3388//233 3389//233 +f 3389//233 3169//233 3166//233 +f 3169//233 3389//233 3390//233 +f 3263//4041 3268//4041 3210//4041 +f 3263//4042 3265//4042 3268//4042 +f 3391//4043 3168//4043 3169//4043 +f 3169//4044 3392//4044 3391//4044 +f 3263//4045 3264//4045 3265//4045 +f 3333//4046 3370//4046 3393//4046 +f 3392//4047 3373//4047 3391//4047 +f 3373//4048 3392//4048 3390//4048 +f 3099//4049 3394//4049 3100//4049 +f 3250//4050 3264//4050 3263//4050 +f 3390//233 3392//233 3169//233 +f 3168//233 3391//233 3171//233 +f 3100//4051 3394//4051 3087//4051 +f 3263//506 3261//506 3250//506 +f 3261//216 628//216 3250//216 +f 2785//4052 3390//4052 3389//4052 +f 3388//233 3166//233 3167//233 +f 3389//4040 3375//4040 2785//4040 +f 286//4053 127//4053 105//4053 +f 664//216 3250//216 628//216 +f 3386//233 3395//233 3387//233 +f 1264//4054 3387//4054 3395//4054 +f 3396//4055 1264//4055 3395//4055 +f 3259//216 3250//216 664//216 +f 3259//204 3251//204 3250//204 +f 3386//233 3396//233 3395//233 +f 3396//4056 3386//4056 3382//4056 +f 3097//4057 3100//4057 3087//4057 +f 3167//233 3387//233 3388//233 +f 3098//4058 3097//4058 3087//4058 +f 3386//4056 3383//4056 3382//4056 +f 3259//209 3256//209 3251//209 +f 1264//4055 3396//4055 3382//4055 +f 1264//233 982//233 1243//233 +f 1243//4059 3387//4059 1264//4059 +f 3256//209 3259//209 3260//209 +f 1246//4060 127//4060 286//4060 +f 1516//4061 127//4061 1246//4061 +f 3260//243 664//243 3256//243 +f 3397//4062 1088//4062 631//4062 +f 3398//4063 3088//4063 3399//4063 +f 664//4064 3372//4064 3256//4064 +f 1242//4065 478//4065 466//4065 +f 3364//4066 3380//4066 3400//4066 +f 968//4067 650//4067 662//4067 +f 466//4068 1516//4068 1246//4068 +f 1204//210 3376//210 562//210 +f 1246//4069 1242//4069 466//4069 +f 968//697 698//697 981//697 +f 1185//4070 1003//4070 3379//4070 +f 1242//4071 1246//4071 3401//4071 +f 3372//209 664//209 665//209 +f 1204//210 3402//210 3376//210 +f 3400//4072 111//4072 3364//4072 +f 2785//233 739//233 626//233 +f 3393//4073 3370//4073 3403//4073 +f 677//233 626//233 739//233 +f 739//233 3404//233 677//233 +f 3404//233 3405//233 677//233 +f 3405//233 678//233 677//233 +f 3405//971 3406//971 678//971 +f 742//4074 678//4074 3406//4074 +f 3095//4075 3081//4075 3096//4075 +f 285//4076 3401//4076 1246//4076 +f 3068//4077 3081//4077 3095//4077 +f 3401//4078 285//4078 1242//4078 +f 665//204 3407//204 3372//204 +f 3408//204 3407//204 665//204 +f 1316//4079 1145//4079 1151//4079 +f 3409//4080 739//4080 2798//4080 +f 3409//233 2798//233 3410//233 +f 3408//233 3411//233 3172//233 +f 3412//233 3411//233 3408//233 +f 3410//233 3413//233 3409//233 +f 3404//4081 3409//4081 3413//4081 +f 3410//4082 3404//4082 3413//4082 +f 3410//233 2798//233 3406//233 +f 3406//510 2798//510 742//510 +f 1242//4083 483//4083 479//4083 +f 829//233 742//233 2798//233 +f 1242//4084 284//4084 483//4084 +f 284//216 485//216 483//216 +f 3414//4085 3398//4085 3399//4085 +f 3360//4086 3415//4086 3393//4086 +f 3309//4087 1204//4087 902//4087 +f 490//4088 484//4088 486//4088 +f 485//216 284//216 3416//216 +f 3417//4089 3418//4089 3412//4089 +f 1214//862 268//862 267//862 +f 202//210 1204//210 3309//210 +f 3419//4090 3420//4090 830//4090 +f 3420//4091 3421//4091 830//4091 +f 3422//4092 830//4092 3421//4092 +f 3422//4093 3421//4093 3423//4093 +f 3422//233 3423//233 3424//233 +f 3423//233 3425//233 3424//233 +f 3426//4094 3424//4094 3425//4094 +f 3425//4095 3427//4095 3426//4095 +f 3056//4096 3054//4096 3399//4096 +f 3415//4097 3333//4097 3393//4097 +f 1204//210 202//210 3402//210 +f 1214//210 267//210 282//210 +f 868//4098 810//4098 865//4098 +f 202//4099 112//4099 3402//4099 +f 1088//4100 3397//4100 1089//4100 +f 111//4101 3400//4101 112//4101 +f 3331//4102 3333//4102 3415//4102 +f 3331//4103 3415//4103 3360//4103 +f 1490//4104 283//4104 282//4104 +f 661//209 3426//209 3421//209 +f 1089//4105 3397//4105 631//4105 +f 411//4106 429//4106 414//4106 +f 3428//4107 3185//4107 3233//4107 +f 1490//216 429//216 411//216 +f 3402//4108 112//4108 3400//4108 +f 411//216 283//216 1490//216 +f 3088//4109 3056//4109 3399//4109 +f 221//216 283//216 411//216 +f 1256//4110 221//4110 120//4110 +f 3400//4111 3376//4111 3402//4111 +f 684//233 3190//233 3189//233 +f 1256//216 283//216 221//216 +f 283//216 1256//216 284//216 +f 670//209 661//209 3429//209 +f 684//233 3189//233 685//233 +f 3412//4112 3430//4112 3417//4112 +f 670//4113 3429//4113 3431//4113 +f 3408//4114 3432//4114 3412//4114 +f 3399//4115 3054//4115 3414//4115 +f 3336//4116 3331//4116 3360//4116 +f 3433//4117 3434//4117 3431//4117 +f 665//4118 3432//4118 3408//4118 +f 685//233 3432//233 665//233 +f 3412//4119 3432//4119 685//4119 +f 3435//4120 3434//4120 3436//4120 +f 3436//4121 3437//4121 3435//4121 +f 685//4122 3430//4122 3412//4122 +f 685//4123 3189//4123 3430//4123 +f 670//4124 3435//4124 673//4124 +f 3054//4125 3438//4125 3414//4125 +f 3041//4126 3414//4126 3438//4126 +f 673//4127 3435//4127 674//4127 +f 3437//4128 674//4128 3435//4128 +f 3430//4129 3189//4129 3186//4129 +f 675//4130 674//4130 3437//4130 +f 3437//4131 3439//4131 675//4131 +f 3186//4132 3185//4132 3428//4132 +f 3430//506 3186//506 3428//506 +f 3428//4133 3417//4133 3430//4133 +f 3437//4134 3440//4134 3439//4134 +f 3437//4135 3441//4135 3440//4135 +f 3441//4136 3442//4136 3440//4136 +f 3006//4137 3039//4137 3008//4137 +f 3428//4138 3233//4138 3417//4138 +f 3233//4139 3418//4139 3417//4139 +f 3443//4140 691//4140 3442//4140 +f 3009//4141 3008//4141 3022//4141 +f 1316//210 1151//210 1302//210 +f 3444//4142 691//4142 3443//4142 +f 3445//4143 3444//4143 3443//4143 +f 3445//4144 3446//4144 3444//4144 +f 3232//4145 3418//4145 3233//4145 +f 3416//216 284//216 1256//216 +f 3369//4146 3367//4146 3447//4146 +f 3446//209 3419//209 3444//209 +f 3416//892 1256//892 292//892 +f 292//408 485//408 3416//408 +f 3400//4147 3380//4147 3376//4147 +f 3418//4148 3232//4148 3448//4148 +f 145//4149 2956//4149 188//4149 +f 3369//4150 3075//4150 2784//4150 +f 689//209 691//209 3444//209 +f 689//209 3444//209 3449//209 +f 514//4151 503//4151 504//4151 +f 3449//4152 2763//4152 689//4152 +f 2763//4153 3449//4153 3450//4153 +f 748//233 2763//233 3450//233 +f 3448//4154 3232//4154 3235//4154 +f 748//233 3450//233 3451//233 +f 748//233 3451//233 3452//233 +f 748//233 3452//233 3453//233 +f 748//210 3453//210 2757//210 +f 3252//4155 3235//4155 3237//4155 +f 3253//4156 3235//4156 3252//4156 +f 2757//4157 3454//4157 749//4157 +f 2528//4158 749//4158 3454//4158 +f 3454//4159 752//4159 2528//4159 +f 752//4160 3454//4160 699//4160 +f 752//4161 699//4161 3455//4161 +f 730//204 752//204 3455//204 +f 3456//216 730//216 3455//216 +f 3456//209 3455//209 3457//209 +f 3456//204 3457//204 3458//204 +f 3456//204 3458//204 3459//204 +f 3460//216 3456//216 3459//216 +f 3459//233 3458//233 3460//233 +f 2891//233 3460//233 3458//233 +f 3458//216 3461//216 2891//216 +f 2891//243 3461//243 728//243 +f 728//243 3461//243 2427//243 +f 3462//243 728//243 2427//243 +f 3448//4162 3235//4162 3253//4162 +f 2427//243 3463//243 3462//243 +f 1004//4163 1631//4163 1756//4163 +f 199//243 505//243 449//243 +f 3464//243 3462//243 3463//243 +f 3464//4164 3463//4164 3465//4164 +f 505//431 517//431 506//431 +f 506//4165 516//4165 507//4165 +f 2276//210 3175//210 3323//210 +f 3253//4166 3255//4166 3448//4166 +f 3418//4167 3448//4167 3255//4167 +f 3466//243 3464//243 3467//243 +f 3466//243 3467//243 3468//243 +f 3468//243 3469//243 3466//243 +f 3469//243 3470//243 3466//243 +f 3470//243 3471//243 3466//243 +f 3471//243 3472//243 3466//243 +f 3473//243 3466//243 3472//243 +f 513//216 504//216 508//216 +f 3472//243 3474//243 3473//243 +f 3473//2937 3474//2937 3475//2937 +f 3473//210 3475//210 3476//210 +f 3412//4168 3418//4168 3255//4168 +f 3255//4169 3411//4169 3412//4169 +f 786//4170 631//4170 635//4170 +f 917//4171 786//4171 785//4171 +f 511//4172 507//4172 512//4172 +f 3476//210 3462//210 3466//210 +f 514//204 518//204 2875//204 +f 3380//4173 3378//4173 3376//4173 +f 3411//4174 3255//4174 3254//4174 +f 3377//4175 3376//4175 3378//4175 +f 525//216 518//216 519//216 +f 3438//4176 3022//4176 3008//4176 +f 3462//4177 3476//4177 3457//4177 +f 3477//4178 3462//4178 3457//4178 +f 1292//4179 1186//4179 1185//4179 +f 2976//4180 2984//4180 2999//4180 +f 3378//4181 1828//4181 3377//4181 +f 2984//4182 3478//4182 2999//4182 +f 1314//210 1316//210 1302//210 +f 3476//204 2525//204 3458//204 +f 1828//4183 2384//4183 3377//4183 +f 562//210 3377//210 2384//210 +f 527//216 518//216 525//216 +f 526//243 525//243 531//243 +f 1185//4184 3379//4184 1292//4184 +f 1093//210 768//210 786//210 +f 3254//4185 3172//4185 3411//4185 +f 637//4186 1094//4186 635//4186 +f 2525//204 3479//204 757//204 +f 3480//4187 3172//4187 3254//4187 +f 757//204 3479//204 758//204 +f 2427//4188 758//4188 3479//4188 +f 3172//4189 3178//4189 3170//4189 +f 528//204 2889//204 527//204 +f 529//204 2893//204 528//204 +f 3479//204 2525//204 3481//204 +f 3178//209 3172//209 3482//209 +f 3482//4190 3480//4190 3483//4190 +f 1586//210 1537//210 1509//210 +f 1433//4191 563//4191 1509//4191 +f 530//728 533//728 529//728 +f 3484//4192 533//4192 534//4192 +f 1433//4193 1374//4193 563//4193 +f 2889//4194 535//4194 531//4194 +f 534//233 536//233 3484//233 +f 1432//4195 1375//4195 1374//4195 +f 1094//4196 3282//4196 1095//4196 +f 3476//204 3475//204 3481//204 +f 3485//4197 3482//4197 3486//4197 +f 2894//4198 538//4198 535//4198 +f 3481//204 3487//204 3488//204 +f 3487//4199 3468//4199 3488//4199 +f 3183//4200 3182//4200 3489//4200 +f 3487//4201 3490//4201 3468//4201 +f 3491//4201 3490//4201 3487//4201 +f 3483//4202 3489//4202 3486//4202 +f 1061//4203 1375//4203 1060//4203 +f 2892//4204 541//4204 538//4204 +f 542//4205 541//4205 2893//4205 +f 3487//204 3475//204 3491//204 +f 3492//204 3491//204 3475//204 +f 3493//4206 3183//4206 3489//4206 +f 3492//204 3475//204 3494//204 +f 3492//204 3494//204 3495//204 +f 3494//204 3496//204 3495//204 +f 3496//209 3497//209 3495//209 +f 3470//209 3495//209 3497//209 +f 3470//243 3497//243 3498//243 +f 3368//4207 3185//4207 3184//4207 +f 3184//4208 3183//4208 3368//4208 +f 3368//4209 3183//4209 3493//4209 +f 3239//4210 3499//4210 3246//4210 +f 3494//204 3500//204 3501//204 +f 3500//4211 3502//4211 3501//4211 +f 3502//4212 3500//4212 3503//4212 +f 3502//243 3503//243 3504//243 +f 3471//243 3502//243 3504//243 +f 3504//243 3505//243 3471//243 +f 3505//4213 3506//4213 3471//4213 +f 3499//4214 3239//4214 3213//4214 +f 3202//243 3499//243 3213//243 +f 3507//204 3506//204 3508//204 +f 3507//204 3508//204 237//204 +f 3507//216 237//216 3504//216 +f 3507//209 3504//209 3509//209 +f 3494//204 3507//204 3509//204 +f 948//4215 3504//4215 237//4215 +f 3504//243 948//243 3510//243 +f 3504//243 3510//243 3511//243 +f 3199//243 3499//243 3202//243 +f 3368//4216 3493//4216 3199//4216 +f 3504//243 3511//243 3512//243 +f 3493//4217 3499//4217 3199//4217 +f 3246//4218 3499//4218 3493//4218 +f 3508//2921 3512//2921 3513//2921 +f 3512//3250 3508//3250 3505//3250 +f 3512//4219 3511//4219 3513//4219 +f 3489//4220 3246//4220 3493//4220 +f 3246//4221 3489//4221 3514//4221 +f 237//204 3513//204 3515//204 +f 3514//4222 3245//4222 3246//4222 +f 3323//210 3175//210 201//210 +f 237//204 3515//204 3516//204 +f 237//204 3516//204 3517//204 +f 3482//4223 3483//4223 3486//4223 +f 237//4224 3517//4224 3518//4224 +f 3519//4225 237//4225 3518//4225 +f 3518//4226 3520//4226 3519//4226 +f 2062//4227 3519//4227 3520//4227 +f 2062//216 3520//216 3521//216 +f 2128//216 2062//216 3521//216 +f 3522//233 2128//233 3521//233 +f 3521//233 3517//233 3522//233 +f 3517//216 3523//216 3522//216 +f 3517//204 3516//204 3523//204 +f 3523//204 3516//204 3524//204 +f 3524//204 3525//204 3523//204 +f 3525//4228 2128//4228 3523//4228 +f 3526//4229 2128//4229 3525//4229 +f 2232//4230 2099//4230 2146//4230 +f 2984//4231 3019//4231 3478//4231 +f 3525//4232 3527//4232 3526//4232 +f 3526//4233 3527//4233 3528//4233 +f 2274//243 3526//243 3528//243 +f 3529//243 2274//243 3528//243 +f 3483//4234 3480//4234 3248//4234 +f 3480//4235 3254//4235 3248//4235 +f 3530//3420 3531//3420 3529//3420 +f 3529//4236 3531//4236 3532//4236 +f 3529//243 3532//243 2281//243 +f 3510//243 2281//243 3532//243 +f 3532//243 3533//243 3510//243 +f 2146//4237 2129//4237 2170//4237 +f 3533//243 3534//243 3510//243 +f 3510//243 3534//243 3535//243 +f 3510//243 3535//243 3536//243 +f 3536//243 3537//243 3510//243 +f 3538//243 3510//243 3537//243 +f 2893//4238 543//4238 542//4238 +f 544//4239 549//4239 536//4239 +f 3515//4240 3538//4240 3539//4240 +f 2954//4241 113//4241 3175//4241 +f 3515//204 3539//204 3516//204 +f 3516//204 3539//204 3540//204 +f 3534//216 3516//216 3540//216 +f 3539//204 3541//204 3540//204 +f 3535//4242 3540//4242 3541//4242 +f 3541//4243 3542//4243 3535//4243 +f 3483//4244 3248//4244 3247//4244 +f 3542//4245 3541//4245 3543//4245 +f 3544//4246 3483//4246 3247//4246 +f 3245//4247 3247//4247 3371//4247 +f 3019//4248 2999//4248 3478//4248 +f 3536//243 3542//243 3545//243 +f 3545//243 3546//243 3536//243 +f 3546//209 3547//209 3536//209 +f 3548//209 3536//209 3547//209 +f 3547//4249 3549//4249 3548//4249 +f 3548//4250 3549//4250 3550//4250 +f 3551//4251 3550//4251 3549//4251 +f 3552//4252 3551//4252 3549//4252 +f 3552//216 3549//216 3553//216 +f 3552//216 3553//216 3554//216 +f 3554//216 3555//216 3552//216 +f 3556//216 3552//216 3555//216 +f 3555//4253 3557//4253 3556//4253 +f 3558//4253 3556//4253 3557//4253 +f 3558//210 3557//210 3551//210 +f 3245//4254 3544//4254 3247//4254 +f 3559//210 3558//210 3551//210 +f 3560//210 3559//210 3551//210 +f 3551//210 3561//210 3560//210 +f 3561//210 3562//210 3560//210 +f 3563//210 3560//210 3562//210 +f 3564//243 3563//243 3562//243 +f 3245//4255 3514//4255 3544//4255 +f 3483//4256 3544//4256 3514//4256 +f 3565//216 3564//216 3566//216 +f 3567//216 3565//216 3566//216 +f 3566//4257 3568//4257 3567//4257 +f 3567//4258 3568//4258 3569//4258 +f 3514//4259 3489//4259 3483//4259 +f 3570//4260 3567//4260 3569//4260 +f 3569//4261 3571//4261 3570//4261 +f 3571//4262 3572//4262 3570//4262 +f 3572//216 3573//216 3570//216 +f 3574//216 3573//216 3572//216 +f 3575//216 3573//216 3574//216 +f 2146//4263 2170//4263 2232//4263 +f 3574//216 3554//216 3575//216 +f 3575//4264 3554//4264 3576//4264 +f 3576//4265 3577//4265 3575//4265 +f 3577//4266 3576//4266 3578//4266 +f 3538//243 3577//243 3578//243 +f 3485//4267 3486//4267 3489//4267 +f 3489//4268 3182//4268 3485//4268 +f 3579//4269 3580//4269 3578//4269 +f 3578//4270 3581//4270 3579//4270 +f 3582//204 3579//204 3581//204 +f 547//210 338//210 325//210 +f 325//4271 334//4271 547//4271 +f 3583//233 3581//233 3584//233 +f 3583//233 3584//233 3585//233 +f 3584//216 3586//216 3585//216 +f 3587//216 3585//216 3586//216 +f 3586//4272 3588//4272 3587//4272 +f 3587//4273 3588//4273 2910//4273 +f 3178//4274 3182//4274 3177//4274 +f 3589//4275 3587//4275 2910//4275 +f 3178//209 3485//209 3182//209 +f 3482//209 3485//209 3178//209 +f 3482//4276 3172//4276 3480//4276 +f 3393//4277 3403//4277 3590//4277 +f 3447//4278 3076//4278 3369//4278 +f 2683//216 3589//216 2907//216 +f 2999//4279 3019//4279 3005//4279 +f 3407//233 3408//233 3172//233 +f 2683//4280 2700//4280 2696//4280 +f 2907//216 2700//216 2683//216 +f 3172//4281 3171//4281 3407//4281 +f 3171//204 3372//204 3407//204 +f 2700//4282 2703//4282 2699//4282 +f 2700//216 2720//216 2703//216 +f 3391//233 3373//233 3171//233 +f 3390//4283 3374//4283 3373//4283 +f 3390//4052 2785//4052 3374//4052 +f 2703//4284 3591//4284 2704//4284 +f 3591//4285 3592//4285 2704//4285 +f 2704//210 3592//210 2709//210 +f 3593//210 2709//210 3592//210 +f 3594//4286 3076//4286 3447//4286 +f 3592//210 3595//210 3593//210 +f 941//4287 651//4287 677//4287 +f 3595//210 3596//210 3593//210 +f 3596//210 2660//210 3593//210 +f 2660//210 3597//210 3593//210 +f 626//210 651//210 627//210 +f 3597//210 3598//210 3593//210 +f 677//4288 651//4288 626//4288 +f 3598//210 3599//210 3593//210 +f 3600//210 3593//210 3599//210 +f 2651//210 3600//210 3599//210 +f 3409//4289 3404//4289 739//4289 +f 2651//210 3599//210 2652//210 +f 3405//4290 3404//4290 3410//4290 +f 3406//971 3405//971 3410//971 +f 678//4074 742//4074 676//4074 +f 3601//4291 2653//4291 2652//4291 +f 2654//4292 2653//4292 3601//4292 +f 3585//216 2654//216 3601//216 +f 968//517 662//517 698//517 +f 726//4293 699//4293 700//4293 +f 3585//216 2657//216 2654//216 +f 2655//4294 2654//4294 2657//4294 +f 1822//216 1737//216 2901//216 +f 1650//4295 1737//4295 1822//4295 +f 3585//216 2672//216 2657//216 +f 2657//216 2672//216 3602//216 +f 2657//4296 3602//4296 2658//4296 +f 3602//216 2672//216 2659//216 +f 2659//4297 2658//4297 3602//4297 +f 742//233 829//233 741//233 +f 696//4298 699//4298 3454//4298 +f 2672//216 3603//216 2659//216 +f 2659//4299 3603//4299 3597//4299 +f 2672//216 3604//216 3603//216 +f 3603//216 3604//216 3605//216 +f 3597//4300 3603//4300 3605//4300 +f 693//4301 981//4301 698//4301 +f 695//4302 696//4302 3606//4302 +f 3605//216 3607//216 3608//216 +f 3605//4303 3608//4303 3598//4303 +f 829//4090 3419//4090 830//4090 +f 1133//4304 1125//4304 1131//4304 +f 3609//4305 3610//4305 3607//4305 +f 3610//216 3611//216 3607//216 +f 3612//216 3607//216 3611//216 +f 3612//4306 3611//4306 3613//4306 +f 3614//4307 3379//4307 2908//4307 +f 3615//4308 1822//4308 3316//4308 +f 3601//4309 3612//4309 3616//4309 +f 3601//4310 3616//4310 3617//4310 +f 3618//209 3420//209 3419//209 +f 3601//4311 3617//4311 2444//4311 +f 3601//4312 2444//4312 3585//4312 +f 2940//4313 3585//4313 2444//4313 +f 2940//4314 2444//4314 2972//4314 +f 2545//216 2940//216 2972//216 +f 2545//216 2972//216 2971//216 +f 2545//4315 2971//4315 2974//4315 +f 3006//4316 3001//4316 3005//4316 +f 2545//4317 2974//4317 2546//4317 +f 548//216 334//216 569//216 +f 830//233 3422//233 3424//233 +f 2546//4318 2986//4318 2988//4318 +f 2988//4319 3105//4319 2546//4319 +f 694//4320 2789//4320 3619//4320 +f 1319//210 1142//210 1143//210 +f 2187//4321 2170//4321 2179//4321 +f 3424//4094 3426//4094 3620//4094 +f 2974//4322 3105//4322 3133//4322 +f 2974//4323 3133//4323 3300//4323 +f 2986//4324 2974//4324 3300//4324 +f 3144//4325 2986//4325 3300//4325 +f 3144//4326 3300//4326 3155//4326 +f 3143//4327 3144//4327 3155//4327 +f 3423//233 3427//233 3425//233 +f 3621//4328 3426//4328 3427//4328 +f 2179//4329 2241//4329 2187//4329 +f 3040//4330 3006//4330 3005//4330 +f 2986//4331 3143//4331 2987//4331 +f 695//4332 3622//4332 692//4332 +f 661//209 3623//209 3426//209 +f 2987//4333 3217//4333 2988//4333 +f 3217//4334 3216//4334 2988//4334 +f 3623//209 3624//209 3426//209 +f 639//4335 643//4335 3625//4335 +f 3132//4336 3105//4336 2988//4336 +f 2988//4337 3218//4337 3132//4337 +f 3218//4338 3174//4338 3132//4338 +f 3625//233 3626//233 3627//233 +f 3628//233 3627//233 3626//233 +f 3629//4339 3630//4339 3631//4339 +f 660//4340 3632//4340 3628//4340 +f 660//4341 3633//4341 3632//4341 +f 3299//4342 3133//4342 3156//4342 +f 3299//4343 3156//4343 3361//4343 +f 649//209 3633//209 650//209 +f 3300//4344 3299//4344 3361//4344 +f 3361//4345 3634//4345 3300//4345 +f 3634//4346 3334//4346 3300//4346 +f 3155//4347 3300//4347 3334//4347 +f 3331//4348 3155//4348 3334//4348 +f 3622//4349 690//4349 692//4349 +f 3331//4350 3334//4350 3333//4350 +f 675//209 690//209 3622//209 +f 660//209 650//209 3633//209 +f 3156//4351 3331//4351 3335//4351 +f 3008//4352 3007//4352 3006//4352 +f 1130//4353 1125//4353 1122//4353 +f 3594//4354 3447//4354 3635//4354 +f 3335//4355 3361//4355 3156//4355 +f 3361//4356 3335//4356 3336//4356 +f 3316//4357 2932//4357 3636//4357 +f 660//4358 3628//4358 3626//4358 +f 3623//4359 660//4359 3626//4359 +f 3634//4360 3361//4360 3360//4360 +f 1143//210 1318//210 1319//210 +f 3360//4361 3365//4361 3634//4361 +f 3634//4362 3365//4362 3332//4362 +f 1136//4363 1115//4363 1125//4363 +f 1294//4364 3614//4364 2908//4364 +f 3334//4365 3634//4365 3332//4365 +f 690//4366 688//4366 692//4366 +f 3332//4367 3365//4367 3333//4367 +f 3626//4368 3625//4368 3624//4368 +f 3041//4369 3438//4369 3008//4369 +f 3365//4370 3385//4370 3384//4370 +f 3370//4371 3365//4371 3384//4371 +f 3624//4372 3623//4372 3626//4372 +f 981//4015 693//4015 688//4015 +f 3623//209 661//209 660//209 +f 2932//4373 3323//4373 3636//4373 +f 3637//4374 3360//4374 3393//4374 +f 3637//4375 3393//4375 3590//4375 +f 2241//4376 2188//4376 2187//4376 +f 3008//4377 3039//4377 3041//4377 +f 688//209 687//209 2763//209 +f 689//4378 2763//4378 687//4378 +f 3403//4379 3638//4379 3590//4379 +f 3323//4380 200//4380 3636//4380 +f 680//4381 3636//4381 200//4381 +f 3590//4382 3638//4382 3639//4382 +f 3590//4383 3639//4383 3640//4383 +f 1870//4384 1375//4384 1432//4384 +f 3590//4385 3640//4385 2451//4385 +f 3590//4386 2451//4386 3637//4386 +f 3033//4387 3055//4387 3041//4387 +f 557//4388 550//4388 554//4388 +f 1585//4389 1432//4389 1431//4389 +f 3641//4390 2452//4390 2451//4390 +f 3641//4391 2453//4391 2452//4391 +f 3642//216 2453//216 3641//216 +f 691//209 690//209 675//209 +f 3642//4392 3641//4392 3643//4392 +f 3644//4393 3642//4393 3643//4393 +f 675//4394 3439//4394 691//4394 +f 675//209 662//209 672//209 +f 2915//4395 2932//4395 3316//4395 +f 1115//4396 1111//4396 1121//4396 +f 680//4397 3316//4397 3636//4397 +f 2580//4398 3645//4398 3646//4398 +f 1372//4399 1371//4399 1376//4399 +f 3645//4400 2454//4400 3646//4400 +f 3646//4401 2454//4401 3642//4401 +f 682//4402 3615//4402 3316//4402 +f 3055//4403 3061//4403 3041//4403 +f 2454//216 2453//216 3642//216 +f 1136//4404 1142//4404 1115//4404 +f 672//4405 662//4405 670//4405 +f 2507//4406 2454//4406 3645//4406 +f 2507//216 3647//216 2454//216 +f 3061//4407 3414//4407 3041//4407 +f 3061//4408 3398//4408 3414//4408 +f 2471//4409 3647//4409 2490//4409 +f 2490//4410 2482//4410 2471//4410 +f 2490//4411 2481//4411 2482//4411 +f 1432//4412 1374//4412 1433//4412 +f 2455//216 2454//216 3647//216 +f 3647//4413 2471//4413 2455//4413 +f 2455//4414 2471//4414 2457//4414 +f 2461//4415 2457//4415 2471//4415 +f 3615//4416 682//4416 3176//4416 +f 977//216 3615//216 3176//216 +f 3647//4417 2506//4417 2492//4417 +f 2490//4418 3647//4418 2492//4418 +f 2491//4419 2490//4419 2492//4419 +f 3647//216 2507//216 2506//216 +f 1319//4420 1115//4420 1142//4420 +f 3638//4421 3403//4421 3648//4421 +f 2509//4422 2507//4422 3645//4422 +f 2560//4423 2509//4423 3645//4423 +f 2580//4424 2560//4424 3645//4424 +f 649//4425 3631//4425 3633//4425 +f 3631//4426 649//4426 3649//4426 +f 3649//216 649//216 648//216 +f 616//4427 3630//4427 988//4427 +f 3218//4428 3216//4428 2561//4428 +f 3218//4429 2561//4429 3174//4429 +f 3650//4430 3174//4430 2561//4430 +f 3174//4431 3650//4431 3651//4431 +f 3651//4432 3652//4432 3174//4432 +f 3635//4433 3447//4433 3653//4433 +f 3629//4434 988//4434 3630//4434 +f 3652//4435 3217//4435 3174//4435 +f 3217//4436 2987//4436 3174//4436 +f 3215//4437 3217//4437 3652//4437 +f 3068//4438 3398//4438 3061//4438 +f 988//233 3629//233 648//233 +f 2566//4439 3215//4439 3652//4439 +f 2566//4440 2565//4440 3215//4440 +f 2565//4441 3216//4441 3215//4441 +f 3652//4442 3651//4442 2566//4442 +f 2566//4443 3651//4443 2574//4443 +f 3068//4444 3095//4444 3398//4444 +f 2560//4445 3651//4445 3650//4445 +f 2574//4446 3651//4446 2560//4446 +f 2560//4447 3650//4447 2561//4447 +f 2560//216 2580//216 2574//216 +f 3629//233 3649//233 648//233 +f 3638//4448 3654//4448 3639//4448 +f 3629//233 3631//233 3649//233 +f 2578//4449 2580//4449 3646//4449 +f 3646//4450 2581//4450 2578//4450 +f 2581//4451 3646//4451 3644//4451 +f 3095//4452 3088//4452 3398//4452 +f 3655//4453 2581//4453 3644//4453 +f 2582//4454 2581//4454 3655//4454 +f 3631//4455 3632//4455 3633//4455 +f 3628//209 3632//209 3631//209 +f 3631//204 3630//204 3628//204 +f 3613//4456 3611//4456 3655//4456 +f 3613//4457 3655//4457 3643//4457 +f 3640//4458 3613//4458 3643//4458 +f 3627//4459 3628//4459 3630//4459 +f 3656//4460 3613//4460 3640//4460 +f 3630//4461 613//4461 3657//4461 +f 3640//216 3658//216 3656//216 +f 2445//4462 3656//4462 3658//4462 +f 2445//4463 3658//4463 2451//4463 +f 569//216 555//216 548//216 +f 3365//210 2451//210 3658//210 +f 3365//4464 3658//4464 3385//4464 +f 3656//4465 2445//4465 3616//4465 +f 3616//4466 3612//4466 3656//4466 +f 3617//4467 3616//4467 2445//4467 +f 3617//4468 2445//4468 2444//4468 +f 3627//204 3630//204 3657//204 +f 612//4469 3627//4469 3657//4469 +f 3658//4470 3640//4470 3385//4470 +f 556//4471 555//4471 559//4471 +f 612//233 639//233 3627//233 +f 639//233 3625//233 3627//233 +f 3655//4472 3610//4472 2582//4472 +f 2592//4473 2582//4473 3610//4473 +f 2592//4474 3610//4474 2590//4474 +f 3610//4475 3609//4475 2590//4475 +f 3609//210 3659//210 2590//210 +f 884//216 882//216 3059//216 +f 955//209 974//209 644//209 +f 3659//210 3660//210 2590//210 +f 2591//210 2590//210 3660//210 +f 644//209 974//209 643//209 +f 2591//210 3660//210 2619//210 +f 3661//4476 2619//4476 3660//4476 +f 3661//4477 3660//4477 3662//4477 +f 974//4478 3625//4478 643//4478 +f 3624//4479 3625//4479 974//4479 +f 3663//4480 3661//4480 3662//4480 +f 3662//4481 3664//4481 3663//4481 +f 3665//4482 3663//4482 3664//4482 +f 3666//209 974//209 944//209 +f 3620//4483 3667//4483 3424//4483 +f 971//209 974//209 954//209 +f 3668//4484 3665//4484 3669//4484 +f 3669//4485 3670//4485 3668//4485 +f 971//673 942//673 944//673 +f 944//209 974//209 971//209 +f 3668//4486 3671//4486 3663//4486 +f 1586//210 1509//210 562//210 +f 3672//4487 3671//4487 3668//4487 +f 3672//4488 3668//4488 3673//4488 +f 3672//4489 3673//4489 3674//4489 +f 3674//4490 3675//4490 3672//4490 +f 2188//4491 2201//4491 2203//4491 +f 2203//4492 2186//4492 2188//4492 +f 2624//4493 3675//4493 2631//4493 +f 944//4494 943//4494 3666//4494 +f 3424//233 3667//233 830//233 +f 3667//233 943//233 830//233 +f 3666//4494 943//4494 3667//4494 +f 3671//4495 2624//4495 2621//4495 +f 3667//4483 3620//4483 3666//4483 +f 3676//4496 3671//4496 2621//4496 +f 3676//4497 3661//4497 3671//4497 +f 3661//4498 3676//4498 2619//4498 +f 2619//4499 3676//4499 2620//4499 +f 2620//4500 3676//4500 2621//4500 +f 3098//4501 3087//4501 3088//4501 +f 2621//4502 2624//4502 2622//4502 +f 3620//209 974//209 3666//209 +f 3620//209 3624//209 974//209 +f 3620//209 3426//209 3624//209 +f 3677//204 3355//204 3678//204 +f 1450//216 3615//216 977//216 +f 2650//4503 2646//4503 2645//4503 +f 2645//4504 3679//4504 2650//4504 +f 3679//4505 3680//4505 2650//4505 +f 2650//4506 3680//4506 3681//4506 +f 1319//4507 1097//4507 1115//4507 +f 2651//4508 2650//4508 3681//4508 +f 543//4238 2893//4238 3355//4238 +f 2893//204 3678//204 3355//204 +f 3600//210 2651//210 3682//210 +f 3682//4509 3604//4509 3600//4509 +f 3683//4510 3600//4510 3604//4510 +f 3604//216 3591//216 3683//216 +f 3683//216 3591//216 3684//216 +f 3684//216 3591//216 3685//216 +f 3684//4511 3685//4511 3600//4511 +f 1450//216 1822//216 3615//216 +f 3639//4512 3654//4512 3686//4512 +f 2717//216 3685//216 3591//216 +f 3614//4513 1294//4513 1187//4513 +f 3685//216 2717//216 3687//216 +f 3685//216 3687//216 3688//216 +f 3685//216 3688//216 3689//216 +f 660//209 662//209 650//209 +f 3685//216 3689//216 3690//216 +f 3370//4514 3385//4514 3691//4514 +f 3692//216 3685//216 3690//216 +f 3692//4515 3690//4515 3693//4515 +f 1529//4516 1650//4516 1822//4516 +f 2915//4517 3316//4517 1822//4517 +f 3694//210 3693//210 3695//210 +f 3427//4518 3423//4518 3621//4518 +f 3696//210 3694//210 3695//210 +f 3697//210 3696//210 3695//210 +f 3698//210 3697//210 3695//210 +f 3421//4519 3621//4519 3423//4519 +f 2831//210 3698//210 3695//210 +f 2829//210 2831//210 3695//210 +f 2829//243 3695//243 2870//243 +f 2870//243 3699//243 2829//243 +f 3700//243 2829//243 3699//243 +f 3701//4520 3700//4520 3699//4520 +f 3699//4521 3702//4521 3701//4521 +f 3702//204 3703//204 3701//204 +f 3426//209 3621//209 3421//209 +f 3703//204 3704//204 3701//204 +f 3700//4522 3701//4522 3704//4522 +f 3704//4523 3705//4523 3700//4523 +f 3700//243 3705//243 3706//243 +f 1110//4524 3195//4524 1111//4524 +f 3707//243 3706//243 3705//243 +f 3705//243 3708//243 3707//243 +f 3709//243 3707//243 3708//243 +f 1107//4525 3283//4525 1110//4525 +f 2839//243 3709//243 3708//243 +f 3708//4526 2840//4526 2839//4526 +f 2840//4527 3708//4527 2841//4527 +f 3088//4528 3096//4528 3098//4528 +f 3093//4529 3098//4529 3096//4529 +f 2841//204 3710//204 3711//204 +f 3711//204 2843//204 2841//204 +f 2842//4530 2841//4530 2843//4530 +f 3711//204 2845//204 2843//204 +f 2843//204 2845//204 2844//204 +f 2845//4531 3711//4531 3712//4531 +f 3712//209 3713//209 2845//209 +f 3713//216 3714//216 2845//216 +f 3714//204 2871//204 2845//204 +f 2845//4459 2871//4459 3715//4459 +f 2845//204 3715//204 2867//204 +f 2845//204 2867//204 2849//204 +f 3420//209 661//209 3421//209 +f 2846//204 2845//204 2849//204 +f 1564//4532 1390//4532 1630//4532 +f 2859//4533 2849//4533 2867//4533 +f 2867//204 3715//204 3702//204 +f 3699//4534 2867//4534 3702//4534 +f 3716//209 3429//209 661//209 +f 2867//4535 3699//4535 2866//4535 +f 2866//243 3699//243 2870//243 +f 3717//4536 3431//4536 3429//4536 +f 2870//4537 3715//4537 2871//4537 +f 3434//4538 670//4538 3431//4538 +f 1888//4539 2375//4539 3284//4539 +f 882//216 773//216 3047//216 +f 3718//204 3715//204 3719//204 +f 3718//4540 3719//4540 3720//4540 +f 3431//4541 3721//4541 3433//4541 +f 3434//4542 3433//4542 3436//4542 +f 3722//209 3718//209 3723//209 +f 3703//4543 3722//4543 3723//4543 +f 3703//4544 3723//4544 3707//4544 +f 3707//4545 3724//4545 3703//4545 +f 3703//204 3724//204 3704//204 +f 3710//204 3704//204 3724//204 +f 3710//4546 3724//4546 3709//4546 +f 3711//4547 3710//4547 3709//4547 +f 3704//204 3710//204 3725//204 +f 3725//4548 3708//4548 3704//4548 +f 3722//216 3703//216 3718//216 +f 3726//209 3723//209 3718//209 +f 3727//4549 3726//4549 3718//4549 +f 3718//4550 3728//4550 3727//4550 +f 3728//209 3729//209 3727//209 +f 3730//209 3727//209 3729//209 +f 3730//4551 3729//4551 3731//4551 +f 3729//4552 3720//4552 3731//4552 +f 3732//4553 3731//4553 3720//4553 +f 3733//4554 3732//4554 3720//4554 +f 3435//4555 670//4555 3434//4555 +f 3733//4556 3734//4556 3732//4556 +f 3735//216 3732//216 3734//216 +f 3734//4557 3736//4557 3735//4557 +f 3442//4558 3439//4558 3440//4558 +f 3737//4559 3735//4559 3736//4559 +f 3736//210 3738//210 3737//210 +f 3738//210 3739//210 3737//210 +f 3635//4560 3653//4560 3146//4560 +f 3740//210 3737//210 3739//210 +f 3739//210 3741//210 3740//210 +f 3741//210 3742//210 3740//210 +f 3091//4561 3093//4561 3096//4561 +f 3742//210 3743//210 3740//210 +f 3744//210 3740//210 3743//210 +f 3745//4562 3691//4562 3746//4562 +f 2303//4563 2332//4563 2346//4563 +f 3747//4564 3748//4564 3744//4564 +f 3749//4565 3744//4565 3748//4565 +f 3750//4566 3749//4566 3748//4566 +f 3748//216 3751//216 3750//216 +f 3750//216 3751//216 3752//216 +f 2186//4567 2206//4567 2229//4567 +f 3442//4568 3441//4568 3753//4568 +f 3750//4569 3754//4569 3749//4569 +f 3749//210 3754//210 3755//210 +f 3749//210 3755//210 3740//210 +f 2229//4570 2206//4570 2235//4570 +f 3755//4571 3756//4571 3740//4571 +f 3735//4572 3740//4572 3756//4572 +f 3756//216 3723//216 3735//216 +f 3735//216 3723//216 3732//216 +f 3757//216 3723//216 3756//216 +f 3757//216 2833//216 3723//216 +f 3706//216 3723//216 2833//216 +f 3706//209 2833//209 2829//209 +f 2830//209 2829//209 2833//209 +f 2833//216 3757//216 3758//216 +f 3442//4573 691//4573 3439//4573 +f 2833//216 3758//216 3759//216 +f 3096//4574 3099//4574 3091//4574 +f 3096//4575 3081//4575 3099//4575 +f 2279//4576 2261//4576 2303//4576 +f 3678//204 2893//204 529//204 +f 3759//216 3760//216 503//216 +f 3760//216 2823//216 503//216 +f 503//216 2823//216 152//216 +f 2235//4577 2230//4577 2229//4577 +f 533//728 3678//728 529//728 +f 2897//4578 3619//4578 2789//4578 +f 3099//4579 3081//4579 3394//4579 +f 3394//4580 3081//4580 3082//4580 +f 3744//210 3761//210 3719//210 +f 3719//4581 3762//4581 3744//4581 +f 3719//204 3763//204 3762//204 +f 3763//4582 3764//4582 3762//4582 +f 3765//216 3762//216 3764//216 +f 3766//4583 3765//4583 3764//4583 +f 3767//4584 3745//4584 3768//4584 +f 3678//4585 533//4585 3484//4585 +f 1514//4586 1585//4586 1431//4586 +f 3769//233 3764//233 3695//233 +f 3769//233 3593//233 3764//233 +f 3769//210 3693//210 3593//210 +f 3593//210 3693//210 3770//210 +f 3593//210 3770//210 3771//210 +f 3772//209 3419//209 3446//209 +f 3444//209 3419//209 3449//209 +f 2710//4587 3771//4587 3689//4587 +f 3771//4588 2710//4588 2709//4588 +f 3773//4589 3450//4589 3449//4589 +f 3449//209 3774//209 3773//209 +f 2710//216 3688//216 3775//216 +f 2710//4590 3775//4590 2711//4590 +f 3776//4591 3419//4591 829//4591 +f 716//4592 2890//4592 729//4592 +f 2711//210 3777//210 2712//210 +f 3777//210 3778//210 2712//210 +f 3778//210 3779//210 2712//210 +f 3779//210 3780//210 2712//210 +f 1105//4593 3116//4593 1107//4593 +f 3780//210 3781//210 2712//210 +f 3697//210 2712//210 3781//210 +f 3782//4594 3783//4594 3767//4594 +f 3677//204 3678//204 3484//204 +f 3782//4595 3784//4595 3783//4595 +f 3785//209 3697//209 3786//209 +f 3785//216 3786//216 3787//216 +f 3785//216 3787//216 3688//216 +f 3788//216 3688//216 3787//216 +f 3781//4596 3788//4596 3787//4596 +f 3787//4597 3789//4597 3781//4597 +f 3774//209 3449//209 3790//209 +f 3791//4598 3781//4598 3789//4598 +f 3789//4599 3792//4599 3791//4599 +f 3776//4600 3774//4600 3790//4600 +f 3082//4601 3085//4601 3394//4601 +f 3697//210 3791//210 3793//210 +f 3792//4602 3793//4602 3791//4602 +f 3419//4603 3776//4603 3790//4603 +f 3794//4604 3793//4604 3792//4604 +f 3792//4604 3795//4604 3794//4604 +f 3795//4605 3796//4605 3794//4605 +f 3794//210 3796//210 3696//210 +f 3796//210 3797//210 3696//210 +f 3696//4606 3797//4606 3798//4606 +f 3790//209 3449//209 3419//209 +f 3696//4607 3798//4607 3799//4607 +f 3786//216 3799//216 3798//216 +f 3786//216 3798//216 3792//216 +f 3786//216 3800//216 3799//216 +f 3694//4608 3799//4608 3800//4608 +f 3786//216 3692//216 3800//216 +f 3801//216 3692//216 3786//216 +f 3801//4609 3786//4609 3698//4609 +f 3801//216 3766//216 3692//216 +f 3638//4610 3648//4610 3654//4610 +f 2550//4611 2405//4611 2901//4611 +f 3614//4612 1187//4612 1292//4612 +f 3698//4613 2828//4613 3801//4613 +f 2828//216 3766//216 3801//216 +f 2828//216 2827//216 3766//216 +f 2827//4614 3765//4614 3766//4614 +f 3765//4615 2827//4615 3762//4615 +f 2827//4616 3747//4616 3762//4616 +f 3618//506 3419//506 3772//506 +f 3802//216 3798//216 3803//216 +f 3635//4617 3146//4617 3094//4617 +f 3802//216 3803//216 3804//216 +f 3804//4618 3805//4618 3802//4618 +f 3802//4619 3805//4619 3796//4619 +f 3805//4620 3804//4620 3777//4620 +f 3797//210 3805//210 3777//210 +f 3777//210 3806//210 3797//210 +f 3806//4621 3803//4621 3797//4621 +f 3807//209 3808//209 3809//209 +f 650//4622 956//4622 644//4622 +f 3806//4623 3810//4623 3803//4623 +f 2550//4624 2901//4624 1737//4624 +f 3811//4625 3803//4625 3810//4625 +f 3810//4626 3775//4626 3811//4626 +f 3688//216 3803//216 3811//216 +f 3803//216 3688//216 3812//216 +f 988//233 648//233 640//233 +f 3813//209 3420//209 3814//209 +f 3815//4627 3778//4627 3812//4627 +f 3812//216 3688//216 3815//216 +f 3815//216 3688//216 3816//216 +f 3779//4628 3815//4628 3816//4628 +f 3087//4629 3394//4629 3085//4629 +f 3813//4630 3814//4630 3817//4630 +f 3816//4631 3788//4631 3780//4631 +f 647//209 644//209 645//209 +f 2711//210 3810//210 3777//210 +f 3777//210 3810//210 3806//210 +f 3159//4632 3146//4632 3653//4632 +f 3777//4633 3804//4633 3812//4633 +f 3803//216 3812//216 3804//216 +f 3818//4634 3819//4634 3784//4634 +f 3795//216 3798//216 3802//216 +f 3797//4635 3803//4635 3798//4635 +f 3796//210 3805//210 3797//210 +f 3796//4605 3795//4605 3802//4605 +f 3792//216 3798//216 3795//216 +f 3793//210 3794//210 3696//210 +f 3813//4636 3820//4636 3717//4636 +f 3786//216 3792//216 3789//216 +f 3697//210 3781//210 3791//210 +f 3816//216 3688//216 3788//216 +f 3786//216 3789//216 3787//216 +f 3785//209 3688//209 3697//209 +f 3697//209 3688//209 2712//209 +f 3817//4637 3820//4637 3813//4637 +f 3677//233 3484//233 536//233 +f 3780//4638 3788//4638 3781//4638 +f 3821//4639 3721//4639 3822//4639 +f 3816//4640 3780//4640 3779//4640 +f 3778//2684 3815//2684 3779//2684 +f 3812//4641 3778//4641 3777//4641 +f 3746//4642 3654//4642 3819//4642 +f 2711//4643 3775//4643 3810//4643 +f 3775//216 3688//216 3811//216 +f 3771//4644 3770//4644 3689//4644 +f 3695//243 3764//243 3823//243 +f 549//4645 3677//4645 536//4645 +f 3355//204 3677//204 549//204 +f 1514//4646 1537//4646 1585//4646 +f 559//204 3355//204 549//204 +f 555//209 570//209 559//209 +f 3824//4647 3715//4647 2870//4647 +f 3056//4648 3087//4648 3085//4648 +f 3715//4240 3824//4240 3825//4240 +f 3715//204 3825//204 3719//204 +f 1585//4649 1584//4649 1683//4649 +f 3826//4650 3825//4650 3824//4650 +f 3823//4651 3826//4651 3824//4651 +f 3822//4652 3827//4652 3828//4652 +f 3763//4653 3826//4653 3823//4653 +f 3825//204 3826//204 3763//204 +f 3824//243 2870//243 3823//243 +f 3821//4654 3828//4654 3829//4654 +f 3829//4655 3830//4655 3821//4655 +f 3764//233 3593//233 3685//233 +f 3766//233 3764//233 3685//233 +f 3654//4656 3746//4656 3686//4656 +f 3830//4657 3831//4657 3433//4657 +f 3436//4658 3831//4658 3437//4658 +f 3823//4659 3764//4659 3763//4659 +f 3825//204 3763//204 3719//204 +f 3441//4660 3437//4660 3831//4660 +f 3733//210 3719//210 3761//210 +f 3744//210 3832//210 3761//210 +f 3832//4661 3760//4661 3761//4661 +f 3760//4662 3832//4662 3833//4662 +f 3833//216 2827//216 3760//216 +f 3086//4663 3056//4663 3085//4663 +f 2823//216 3760//216 2827//216 +f 3748//216 2827//216 3833//216 +f 3834//4664 3835//4664 3831//4664 +f 636//210 2092//210 1131//210 +f 3832//4665 3751//4665 3833//4665 +f 3836//4666 3751//4666 3832//4666 +f 3744//210 3836//210 3832//210 +f 3441//4667 3837//4667 3753//4667 +f 3838//4668 3839//4668 3837//4668 +f 3835//4664 3834//4664 3840//4664 +f 3841//4669 3840//4669 3842//4669 +f 3841//4670 3842//4670 3843//4670 +f 3844//4671 3845//4671 3828//4671 +f 3761//4672 3760//4672 3738//4672 +f 3761//210 3738//210 3733//210 +f 306//216 569//216 307//216 +f 3759//4673 3738//4673 3760//4673 +f 3759//216 503//216 2833//216 +f 3758//4674 3739//4674 3759//4674 +f 2187//4675 2186//4675 2229//4675 +f 3846//216 3758//216 3757//216 +f 3755//4676 3846//4676 3757//4676 +f 3847//4677 3808//4677 3618//4677 +f 3755//4678 3754//4678 3846//4678 +f 3758//4679 3846//4679 3848//4679 +f 3758//4680 3848//4680 3741//4680 +f 3848//243 3849//243 3741//243 +f 3848//216 3846//216 3849//216 +f 3750//216 3849//216 3846//216 +f 3809//4681 3827//4681 3822//4681 +f 3807//209 3809//209 3814//209 +f 3849//216 3750//216 3752//216 +f 3743//4682 3849//4682 3752//4682 +f 1132//4683 1131//4683 1170//4683 +f 3836//4684 3743//4684 3752//4684 +f 3756//4685 3755//4685 3757//4685 +f 3822//4686 3817//4686 3814//4686 +f 3750//4687 3846//4687 3754//4687 +f 2231//4688 2187//4688 2229//4688 +f 3752//4689 3751//4689 3836//4689 +f 3748//216 3833//216 3751//216 +f 2918//4690 1132//4690 1170//4690 +f 2827//216 3748//216 3747//216 +f 3744//4691 3762//4691 3747//4691 +f 3743//210 3836//210 3744//210 +f 3740//210 3744//210 3749//210 +f 3742//4692 3849//4692 3743//4692 +f 3068//4693 3086//4693 3082//4693 +f 3849//4694 3742//4694 3741//4694 +f 3741//4695 3739//4695 3758//4695 +f 3822//4696 3814//4696 3809//4696 +f 3738//4697 3759//4697 3739//4697 +f 3738//210 3736//210 3733//210 +f 3740//4572 3735//4572 3737//4572 +f 3808//4698 3847//4698 3809//4698 +f 3736//4699 3734//4699 3733//4699 +f 3827//4700 3809//4700 3847//4700 +f 3732//216 3727//216 3731//216 +f 3730//216 3731//216 3727//216 +f 3729//4701 3728//4701 3718//4701 +f 3727//216 3732//216 3726//216 +f 3726//216 3732//216 3723//216 +f 3729//4702 3718//4702 3720//4702 +f 3719//210 3733//210 3720//210 +f 571//243 306//243 577//243 +f 3703//204 3715//204 3718//204 +f 3768//4703 3746//4703 3819//4703 +f 3828//4704 3827//4704 3844//4704 +f 514//204 2871//204 3714//204 +f 514//4705 3714//4705 3850//4705 +f 3850//4706 503//4706 514//4706 +f 503//4707 3850//4707 3851//4707 +f 3852//216 503//216 3851//216 +f 3827//4708 3847//4708 3844//4708 +f 1843//4709 773//4709 880//4709 +f 3852//4710 3851//4710 3853//4710 +f 3852//233 3853//233 3854//233 +f 3854//216 2837//216 3852//216 +f 2837//243 3854//243 3855//243 +f 3855//4711 3714//4711 2837//4711 +f 3847//4712 3618//4712 3844//4712 +f 3850//4713 3714//4713 3855//4713 +f 3855//210 3856//210 3850//210 +f 3850//4714 3856//4714 3851//4714 +f 3855//210 3853//210 3856//210 +f 3855//233 3854//233 3853//233 +f 3853//4715 3851//4715 3856//4715 +f 2232//4716 2187//4716 2231//4716 +f 503//216 3852//216 2837//216 +f 3857//4717 3844//4717 3618//4717 +f 3772//4718 3857//4718 3618//4718 +f 640//4719 642//4719 641//4719 +f 640//484 638//484 966//484 +f 514//204 2875//204 2871//204 +f 2875//4720 2872//4720 2871//4720 +f 3446//4721 3857//4721 3772//4721 +f 3857//4722 3845//4722 3844//4722 +f 3713//4723 2837//4723 3714//4723 +f 2836//4724 2837//4724 3713//4724 +f 3713//209 3712//209 2836//209 +f 3712//4725 2838//4725 2836//4725 +f 3712//4726 3711//4726 2838//4726 +f 2839//4727 2838//4727 3711//4727 +f 3845//4728 3857//4728 3446//4728 +f 3446//4729 3445//4729 3845//4729 +f 3442//4730 3753//4730 3443//4730 +f 3445//4731 3443//4731 3753//4731 +f 3725//204 3710//204 2841//204 +f 3753//4732 3837//4732 3445//4732 +f 2841//4733 3708//4733 3725//4733 +f 2839//4734 3711//4734 3709//4734 +f 3837//4735 3845//4735 3445//4735 +f 3707//4546 3709//4546 3724//4546 +f 3705//4736 3704//4736 3708//4736 +f 3723//243 3706//243 3707//243 +f 3362//4737 2232//4737 2231//4737 +f 3837//4738 3828//4738 3845//4738 +f 3828//4739 3837//4739 3839//4739 +f 3715//204 3703//204 3702//204 +f 3839//4740 3829//4740 3828//4740 +f 3829//4741 3839//4741 3858//4741 +f 2829//243 3700//243 3706//243 +f 3859//4742 3842//4742 3834//4742 +f 3823//243 2870//243 3695//243 +f 3834//4743 3842//4743 3840//4743 +f 2831//4744 2828//4744 3698//4744 +f 2231//4745 2137//4745 3362//4745 +f 3697//4609 3698//4609 3786//4609 +f 3697//210 3793//210 3696//210 +f 3799//4746 3694//4746 3696//4746 +f 2230//4747 2137//4747 2231//4747 +f 3800//4748 3693//4748 3694//4748 +f 3769//210 3695//210 3693//210 +f 3692//4749 3693//4749 3800//4749 +f 3693//4750 3690//4750 3770//4750 +f 3766//216 3685//216 3692//216 +f 3834//216 3831//216 3859//216 +f 3770//4751 3690//4751 3689//4751 +f 3830//216 3859//216 3831//216 +f 3689//216 3688//216 2710//216 +f 3688//4752 3687//4752 2712//4752 +f 2713//4752 2712//4752 3687//4752 +f 3687//3522 2717//3522 2713//3522 +f 3859//4753 3830//4753 3829//4753 +f 3591//216 3604//216 3860//216 +f 3595//2676 3591//2676 3860//2676 +f 3829//4753 3858//4753 3859//4753 +f 3842//4754 3859//4754 3858//4754 +f 3860//216 3604//216 3861//216 +f 3861//4755 3596//4755 3860//4755 +f 3596//4756 3861//4756 2670//4756 +f 2670//4757 3861//4757 3862//4757 +f 3068//4758 3060//4758 3086//4758 +f 3862//4759 2671//4759 2670//4759 +f 3842//4760 3858//4760 3843//4760 +f 3858//4761 3839//4761 3843//4761 +f 3839//210 3841//210 3843//210 +f 3604//216 2671//216 3862//216 +f 3055//4762 3086//4762 3060//4762 +f 3861//216 3604//216 3862//216 +f 3683//4763 3684//4763 3600//4763 +f 3839//210 3838//210 3841//210 +f 3840//4764 3841//4764 3838//4764 +f 3863//210 3864//210 3682//210 +f 3835//4765 3840//4765 3838//4765 +f 3838//4766 3837//4766 3835//4766 +f 3837//4767 3441//4767 3835//4767 +f 3865//4768 3864//4768 3866//4768 +f 3866//4769 3680//4769 3865//4769 +f 3680//4770 3867//4770 3865//4770 +f 3868//4771 3865//4771 3867//4771 +f 3831//4772 3835//4772 3441//4772 +f 3867//4773 3869//4773 3868//4773 +f 3436//4774 3433//4774 3831//4774 +f 3433//4775 3821//4775 3830//4775 +f 3868//4776 3869//4776 3870//4776 +f 3721//4777 3821//4777 3433//4777 +f 3821//4778 3822//4778 3828//4778 +f 2137//4779 2230//4779 2236//4779 +f 3864//210 3870//210 3609//210 +f 3864//4780 3868//4780 3870//4780 +f 3659//4781 3870//4781 3869//4781 +f 3822//4782 3721//4782 3817//4782 +f 3871//4783 3659//4783 3869//4783 +f 3721//4784 3820//4784 3817//4784 +f 3872//4785 3871//4785 3869//4785 +f 3872//4786 3873//4786 3871//4786 +f 3874//4787 3871//4787 3873//4787 +f 3873//4788 3662//4788 3874//4788 +f 3659//4789 3871//4789 3874//4789 +f 3873//216 3872//216 3875//216 +f 3875//216 3664//216 3873//216 +f 3820//4790 3721//4790 3431//4790 +f 2236//4791 2138//4791 2137//4791 +f 403//4792 3876//4792 1202//4792 +f 2332//4793 2303//4793 2261//4793 +f 3877//4794 3878//4794 3879//4794 +f 3877//4795 3879//4795 3665//4795 +f 3880//4796 3879//4796 3878//4796 +f 3431//4797 3717//4797 3820//4797 +f 3880//4798 3878//4798 3881//4798 +f 3881//4799 3882//4799 3880//4799 +f 3880//210 3882//210 3883//210 +f 3880//210 3883//210 3884//210 +f 3884//210 3885//210 3880//210 +f 3429//209 3716//209 3886//209 +f 3885//4800 3884//4800 3887//4800 +f 3885//210 3887//210 3888//210 +f 3888//210 3889//210 3885//210 +f 3885//4801 3889//4801 3669//4801 +f 3888//210 3890//210 3889//210 +f 3890//210 3891//210 3889//210 +f 3891//4802 3670//4802 3889//4802 +f 3891//4803 3673//4803 3670//4803 +f 632//233 959//233 638//233 +f 3891//4804 3890//4804 3673//4804 +f 3890//4805 3892//4805 3673//4805 +f 3888//4806 3892//4806 3890//4806 +f 3888//4807 3893//4807 3892//4807 +f 3892//4808 3893//4808 3674//4808 +f 3893//4809 3894//4809 3674//4809 +f 3674//4810 3894//4810 3895//4810 +f 661//209 3420//209 3716//209 +f 3716//209 3420//209 3813//209 +f 3895//216 3896//216 3897//216 +f 3897//4811 3896//4811 3898//4811 +f 3899//4812 3897//4812 3898//4812 +f 3900//4813 3899//4813 3898//4813 +f 3901//4814 3900//4814 3898//4814 +f 3813//209 3886//209 3716//209 +f 3902//4815 3901//4815 3898//4815 +f 3054//4816 3022//4816 3438//4816 +f 3022//4817 3054//4817 3032//4817 +f 3429//4818 3886//4818 3717//4818 +f 2138//4819 2236//4819 2179//4819 +f 3903//752 3904//752 3882//752 +f 3882//210 3905//210 3903//210 +f 3905//210 3906//210 3903//210 +f 3906//4820 3901//4820 3903//4820 +f 3905//210 3907//210 3906//210 +f 3907//210 3908//210 3906//210 +f 3906//4821 3908//4821 3900//4821 +f 3813//4822 3717//4822 3886//4822 +f 3900//4823 3908//4823 3909//4823 +f 3910//4824 3900//4824 3909//4824 +f 3911//4825 3910//4825 3909//4825 +f 3909//4826 3912//4826 3911//4826 +f 3912//4827 3913//4827 3911//4827 +f 3913//4828 3680//4828 3911//4828 +f 3913//4829 3912//4829 3914//4829 +f 3915//4830 3913//4830 3914//4830 +f 3914//4831 3916//4831 3915//4831 +f 3916//4832 3872//4832 3915//4832 +f 3872//4833 3867//4833 3915//4833 +f 2241//4834 2179//4834 2236//4834 +f 634//233 633//233 953//233 +f 3917//4835 3918//4835 3914//4835 +f 630//4836 629//4836 951//4836 +f 3918//210 3917//210 3908//210 +f 3054//4837 3033//4837 3032//4837 +f 3420//209 3807//209 3814//209 +f 597//233 947//233 629//233 +f 3919//4838 3914//4838 3918//4838 +f 3907//4839 3919//4839 3918//4839 +f 3919//4840 3916//4840 3914//4840 +f 3916//4841 3919//4841 3920//4841 +f 3916//4842 3920//4842 3875//4842 +f 3420//209 3618//209 3807//209 +f 3808//209 3807//209 3618//209 +f 3920//4843 3921//4843 3875//4843 +f 3875//4844 3921//4844 3922//4844 +f 3664//216 3875//216 3922//216 +f 3922//216 3923//216 3664//216 +f 617//233 1264//233 625//233 +f 3923//4845 3922//4845 3924//4845 +f 3923//4846 3924//4846 3877//4846 +f 2200//4847 2241//4847 2236//4847 +f 617//216 621//216 987//216 +f 3924//4848 3922//4848 3921//4848 +f 3924//4849 3921//4849 3881//4849 +f 3925//4850 3881//4850 3921//4850 +f 3926//4851 3925//4851 3921//4851 +f 2236//4852 2235//4852 2200//4852 +f 3882//4853 3925//4853 3926//4853 +f 3767//4854 3927//4854 3928//4854 +f 1356//4855 1262//4855 1261//4855 +f 2412//4856 2550//4856 1733//4856 +f 1095//4857 3282//4857 1099//4857 +f 3929//4858 3930//4858 3931//4858 +f 3930//4859 3883//4859 3931//4859 +f 3929//4860 3932//4860 3930//4860 +f 3933//4861 3930//4861 3932//4861 +f 3934//210 3933//210 3932//210 +f 3935//210 3934//210 3932//210 +f 621//204 616//204 990//204 +f 3630//4159 616//4159 614//4159 +f 3932//210 3936//210 3935//210 +f 3936//210 3937//210 3935//210 +f 3937//4862 3938//4862 3935//4862 +f 3938//4863 3939//4863 3935//4863 +f 3939//4864 3940//4864 3935//4864 +f 3939//4865 3941//4865 3940//4865 +f 3039//4866 3021//4866 3033//4866 +f 3039//4867 3040//4867 3021//4867 +f 3942//4868 3935//4868 3940//4868 +f 3942//4869 3940//4869 3887//4869 +f 1098//4870 1099//4870 1104//4870 +f 610//204 615//204 620//204 +f 614//4871 613//4871 3630//4871 +f 3934//4872 3942//4872 3943//4872 +f 3933//4873 3934//4873 3943//4873 +f 2261//4874 2330//4874 2332//4874 +f 731//4875 2890//4875 2884//4875 +f 3943//4876 3942//4876 3884//4876 +f 2798//4877 736//4877 2884//4877 +f 3887//4878 3940//4878 3941//4878 +f 3887//210 3941//210 3944//210 +f 3944//210 3888//210 3887//210 +f 2798//233 2884//233 829//233 +f 3888//4879 3944//4879 3893//4879 +f 2884//233 2890//233 829//233 +f 1343//4880 1356//4880 1261//4880 +f 3945//4881 3893//4881 3946//4881 +f 3947//4882 3945//4882 3946//4882 +f 2890//233 716//233 829//233 +f 3776//233 829//233 716//233 +f 3947//4883 3948//4883 3895//4883 +f 3896//4884 3948//4884 3947//4884 +f 3898//4885 3896//4885 3947//4885 +f 2919//233 3776//233 716//233 +f 3774//2953 3776//2953 2919//2953 +f 3902//4886 3947//4886 3946//4886 +f 3946//4887 3944//4887 3902//4887 +f 3947//4888 3895//4888 3945//4888 +f 3944//4889 3946//4889 3893//4889 +f 3944//210 3941//210 3949//210 +f 2919//4890 714//4890 3774//4890 +f 3903//210 3944//210 3949//210 +f 714//209 3773//209 3774//209 +f 3941//4891 3939//4891 3949//4891 +f 3949//4892 3939//4892 3938//4892 +f 3040//4893 3005//4893 3021//4893 +f 3949//4894 3938//4894 3904//4894 +f 3950//4895 3904//4895 3938//4895 +f 3937//4896 3950//4896 3938//4896 +f 3773//209 714//209 3951//209 +f 3951//4897 3450//4897 3773//4897 +f 3936//4898 3950//4898 3937//4898 +f 3936//4899 3952//4899 3950//4899 +f 3952//4900 3904//4900 3950//4900 +f 3952//4901 3953//4901 3904//4901 +f 3904//210 3953//210 3882//210 +f 3450//4902 3951//4902 3451//4902 +f 3452//4903 3451//4903 3951//4903 +f 3954//233 3453//233 3452//233 +f 3952//4904 3929//4904 3953//4904 +f 3929//4905 3931//4905 3953//4905 +f 3952//4906 3936//4906 3929//4906 +f 271//4907 1367//4907 272//4907 +f 3955//4908 3606//4908 696//4908 +f 675//209 3622//209 662//209 +f 3622//4909 695//4909 3606//4909 +f 662//209 3622//209 3606//209 +f 3936//4910 3932//4910 3929//4910 +f 662//209 3606//209 3955//209 +f 635//4911 622//4911 551//4911 +f 3934//4912 3935//4912 3942//4912 +f 3956//209 707//209 662//209 +f 3943//4913 3930//4913 3933//4913 +f 3930//4914 3943//4914 3884//4914 +f 3956//209 711//209 707//209 +f 3956//209 714//209 711//209 +f 3953//210 3931//210 3882//210 +f 3951//209 714//209 3956//209 +f 3951//4915 3956//4915 3452//4915 +f 3926//4916 3921//4916 3920//4916 +f 3956//4917 3954//4917 3452//4917 +f 3954//4918 3956//4918 3957//4918 +f 3905//4919 3926//4919 3919//4919 +f 3956//209 662//209 3957//209 +f 3920//4920 3919//4920 3926//4920 +f 3915//4921 3867//4921 3913//4921 +f 3912//4922 3917//4922 3914//4922 +f 3917//4923 3912//4923 3909//4923 +f 3911//4924 3680//4924 3910//4924 +f 3910//4925 3680//4925 3958//4925 +f 3899//4926 3910//4926 3958//4926 +f 3910//4927 3899//4927 3900//4927 +f 3908//4928 3917//4928 3909//4928 +f 3907//210 3918//210 3908//210 +f 3905//4929 3919//4929 3907//4929 +f 3882//4930 3926//4930 3905//4930 +f 3022//4931 3032//4931 3021//4931 +f 3903//210 3949//210 3904//210 +f 3944//4932 3903//4932 3902//4932 +f 3947//4933 3902//4933 3898//4933 +f 3901//4934 3902//4934 3903//4934 +f 3906//4935 3900//4935 3901//4935 +f 662//209 3955//209 3957//209 +f 3897//4936 3899//4936 3958//4936 +f 3679//216 3897//216 3958//216 +f 3675//216 3897//216 3679//216 +f 3679//4937 2645//4937 3675//4937 +f 3957//4938 3955//4938 3954//4938 +f 3896//216 3895//216 3948//216 +f 3897//216 3675//216 3895//216 +f 3894//4939 3945//4939 3895//4939 +f 3893//4940 3945//4940 3894//4940 +f 3955//4941 696//4941 3954//4941 +f 696//204 3454//204 3954//204 +f 3942//4942 3887//4942 3884//4942 +f 3453//204 3954//204 3454//204 +f 3884//4943 3883//4943 3930//4943 +f 3882//210 3931//210 3883//210 +f 3882//4944 3881//4944 3925//4944 +f 3881//4945 3878//4945 3924//4945 +f 3021//4946 3023//4946 3022//4946 +f 3784//4947 3782//4947 3818//4947 +f 2327//4948 2335//4948 2331//4948 +f 3669//4949 3879//4949 3885//4949 +f 3880//4950 3885//4950 3879//4950 +f 3877//4951 3924//4951 3878//4951 +f 3664//4952 3923//4952 3877//4952 +f 3453//204 3454//204 2757//204 +f 3872//4953 3916//4953 3875//4953 +f 3021//4954 3019//4954 3023//4954 +f 3869//4955 3867//4955 3872//4955 +f 3023//4956 3019//4956 3009//4956 +f 3455//4161 699//4161 3477//4161 +f 3913//4957 3867//4957 3680//4957 +f 3866//4958 3681//4958 3680//4958 +f 3865//4959 3868//4959 3864//4959 +f 3456//216 3460//216 730//216 +f 3866//4960 3863//4960 3681//4960 +f 3477//209 3457//209 3455//209 +f 3682//210 3864//210 3609//210 +f 3864//4961 3863//4961 3866//4961 +f 3604//4962 3682//4962 3607//4962 +f 3959//4963 3960//4963 3961//4963 +f 2651//210 3863//210 3682//210 +f 2651//4964 3681//4964 3863//4964 +f 3962//4965 3961//4965 3963//4965 +f 3476//204 3458//204 3457//204 +f 3679//216 3958//216 3680//216 +f 730//243 3460//243 2891//243 +f 3461//216 3458//216 2525//216 +f 2630//4966 2631//4966 2645//4966 +f 2631//4967 2625//4967 2624//4967 +f 3671//4968 3675//4968 2624//4968 +f 2645//4969 2631//4969 3675//4969 +f 3675//4970 3674//4970 3895//4970 +f 3674//4971 3673//4971 3892//4971 +f 3461//209 2525//209 756//209 +f 3672//4972 3675//4972 3671//4972 +f 756//243 2427//243 3461//243 +f 3673//4973 3668//4973 3670//4973 +f 3670//4974 3669//4974 3889//4974 +f 728//4975 3477//4975 699//4975 +f 3665//4976 3879//4976 3669//4976 +f 3665//4977 3664//4977 3877//4977 +f 3668//4978 3663//4978 3665//4978 +f 3873//4979 3664//4979 3662//4979 +f 3663//4980 3671//4980 3661//4980 +f 3477//243 728//243 3462//243 +f 3660//4981 3874//4981 3662//4981 +f 2427//4982 769//4982 758//4982 +f 3479//4983 3463//4983 2427//4983 +f 3019//4984 3018//4984 3009//4984 +f 3660//4985 3659//4985 3874//4985 +f 1630//4986 1390//4986 1756//4986 +f 881//4987 883//4987 764//4987 +f 3659//210 3609//210 3870//210 +f 613//4988 612//4988 3657//4988 +f 3018//4989 3007//4989 3009//4989 +f 3643//4990 3655//4990 3644//4990 +f 612//243 611//243 639//243 +f 3646//4991 3642//4991 3644//4991 +f 3641//4992 3640//4992 3643//4992 +f 3465//4993 3463//4993 3479//4993 +f 632//233 611//233 609//233 +f 3347//4994 574//4994 571//4994 +f 636//210 646//210 2092//210 +f 2451//4995 3640//4995 3641//4995 +f 3637//4996 2451//4996 3360//4996 +f 3464//4997 3465//4997 3467//4997 +f 3462//243 3464//243 3466//243 +f 3639//4998 3385//4998 3640//4998 +f 3964//4999 3385//4999 3639//4999 +f 3964//5000 3639//5000 3686//5000 +f 3686//5001 3385//5001 3964//5001 +f 3488//5002 3468//5002 3467//5002 +f 3469//243 3468//243 3490//243 +f 3691//5003 3385//5003 3686//5003 +f 3965//216 3470//216 3469//216 +f 3686//5004 3746//5004 3691//5004 +f 3471//243 3470//243 3498//243 +f 3471//5005 3506//5005 3472//5005 +f 3370//5006 3691//5006 3403//5006 +f 3691//5007 3648//5007 3403//5007 +f 3745//5008 3648//5008 3691//5008 +f 3783//5009 3648//5009 3745//5009 +f 3783//5010 3745//5010 3767//5010 +f 3473//210 3476//210 3466//210 +f 605//204 610//204 1026//204 +f 3648//5011 3783//5011 3784//5011 +f 3654//5012 3648//5012 3784//5012 +f 3819//210 3654//210 3784//210 +f 3494//2930 3474//2930 3472//2930 +f 3966//2937 3475//2937 3474//2937 +f 2897//210 766//210 1170//210 +f 880//210 879//210 1872//210 +f 912//5013 598//5013 605//5013 +f 2412//5014 2405//5014 2550//5014 +f 3001//5015 3000//5015 2999//5015 +f 3746//5016 3768//5016 3745//5016 +f 1630//5017 1756//5017 1631//5017 +f 2242//5018 2200//5018 2235//5018 +f 1292//5019 3379//5019 3614//5019 +f 3927//5020 3767//5020 3768//5020 +f 606//5021 598//5021 599//5021 +f 2976//5022 3000//5022 2978//5022 +f 3960//5023 3967//5023 3927//5023 +f 3818//5024 3960//5024 3927//5024 +f 1096//210 1321//210 1093//210 +f 1492//5025 2347//5025 2405//5025 +f 3927//5026 3819//5026 3818//5026 +f 3768//5027 3819//5027 3927//5027 +f 2975//5028 2973//5028 2976//5028 +f 2235//5029 2206//5029 2242//5029 +f 3465//204 3479//204 3481//204 +f 3961//5030 3960//5030 3818//5030 +f 3818//5031 3782//5031 3961//5031 +f 3963//5032 3961//5032 3782//5032 +f 2985//5033 2976//5033 2973//5033 +f 2985//5034 2973//5034 3968//5034 +f 597//475 609//475 599//475 +f 3782//5035 3767//5035 3928//5035 +f 3476//204 3481//204 2525//204 +f 3963//5036 3782//5036 3928//5036 +f 3962//5037 3963//5037 3928//5037 +f 3967//5038 3962//5038 3928//5038 +f 3928//5039 3927//5039 3967//5039 +f 3962//5040 3967//5040 3969//5040 +f 3467//5041 3465//5041 3488//5041 +f 2962//5042 3970//5042 3968//5042 +f 3481//204 3488//204 3465//204 +f 3487//204 3481//204 3475//204 +f 605//210 1492//210 2406//210 +f 3971//5043 3972//5043 3973//5043 +f 3974//5044 3971//5044 3973//5044 +f 3975//5045 3974//5045 3973//5045 +f 3965//204 3976//204 3491//204 +f 3975//5046 3973//5046 3977//5046 +f 2968//5047 2962//5047 2959//5047 +f 3978//5048 3975//5048 3977//5048 +f 3979//5049 3491//5049 3976//5049 +f 893//5050 3979//5050 3976//5050 +f 3977//5051 3980//5051 3981//5051 +f 3981//5052 3982//5052 3977//5052 +f 2968//5053 3970//5053 2962//5053 +f 892//243 3983//243 3984//243 +f 2969//5054 2965//5054 2964//5054 +f 3985//204 3965//204 3986//204 +f 3982//5055 3987//5055 3978//5055 +f 3987//5056 3988//5056 3978//5056 +f 2973//5057 2969//5057 2964//5057 +f 2963//5058 2973//5058 2964//5058 +f 2963//5059 3968//5059 2973//5059 +f 2242//5060 2206//5060 3989//5060 +f 3988//5061 3990//5061 3991//5061 +f 3992//204 3976//204 3993//204 +f 3994//243 892//243 3995//243 +f 3991//5062 3990//5062 3996//5062 +f 1170//5063 1169//5063 2918//5063 +f 3996//5064 3981//5064 3991//5064 +f 3991//5065 3981//5065 3980//5065 +f 3992//204 3993//204 3997//204 +f 3968//5066 2963//5066 2962//5066 +f 892//243 3994//243 3998//243 +f 3988//5067 3991//5067 3980//5067 +f 3999//5068 3988//5068 3980//5068 +f 3999//5069 3980//5069 4000//5069 +f 2201//5070 2242//5070 3989//5070 +f 892//243 3998//243 3983//243 +f 3993//233 3983//233 3998//233 +f 4000//5071 4001//5071 3999//5071 +f 3978//5072 3999//5072 4001//5072 +f 3998//5073 3994//5073 3993//5073 +f 3997//5074 3993//5074 3994//5074 +f 3994//233 3995//233 3997//233 +f 4002//5075 3971//5075 4001//5075 +f 4002//5076 4003//5076 3971//5076 +f 3992//233 3997//233 3995//233 +f 2968//5077 2970//5077 3970//5077 +f 3971//5078 4003//5078 4004//5078 +f 4004//5079 3972//5079 3971//5079 +f 4005//5080 3972//5080 4004//5080 +f 3995//4645 892//4645 3992//4645 +f 2992//5081 892//5081 2994//5081 +f 2979//5082 3970//5082 2970//5082 +f 389//5083 2992//5083 1034//5083 +f 4005//5084 4006//5084 3961//5084 +f 3961//5085 4006//5085 3959//5085 +f 892//5086 2992//5086 389//5086 +f 3992//5087 892//5087 389//5087 +f 388//204 896//204 389//204 +f 896//204 3992//204 389//204 +f 3968//5088 3970//5088 2979//5088 +f 3960//5089 3959//5089 4007//5089 +f 3960//5090 4007//5090 3967//5090 +f 1342//5091 1372//5091 1376//5091 +f 3969//5092 3967//5092 4007//5092 +f 3976//204 3992//204 896//204 +f 3969//5093 3972//5093 3962//5093 +f 893//5094 3976//5094 896//5094 +f 4007//5095 4003//5095 4008//5095 +f 4007//5096 4008//5096 3969//5096 +f 2979//5097 2985//5097 3968//5097 +f 2980//5098 2985//5098 2979//5098 +f 3965//204 3985//204 3976//204 +f 3993//204 3976//204 3985//204 +f 3983//233 3993//233 3985//233 +f 3973//5099 4009//5099 4000//5099 +f 3985//436 3986//436 3983//436 +f 3984//436 3983//436 3986//436 +f 4002//5100 4009//5100 4008//5100 +f 4002//5101 4000//5101 4009//5101 +f 4009//5102 3969//5102 4008//5102 +f 3986//233 3965//233 3984//233 +f 3469//233 3984//233 3965//233 +f 2954//5103 2276//5103 1833//5103 +f 2132//210 2276//210 3323//210 +f 4004//5104 4003//5104 4007//5104 +f 4007//5105 4005//5105 4004//5105 +f 892//243 3984//243 3469//243 +f 4007//5106 3959//5106 4006//5106 +f 2982//5107 2984//5107 2980//5107 +f 4005//5108 4007//5108 4006//5108 +f 3469//243 893//243 892//243 +f 3961//5109 3972//5109 4005//5109 +f 3972//5110 3961//5110 3962//5110 +f 3469//243 3979//243 893//243 +f 4003//5111 4002//5111 4008//5111 +f 3974//5112 4001//5112 3971//5112 +f 3469//243 3490//243 3979//243 +f 3974//5113 3975//5113 4001//5113 +f 4001//5114 4000//5114 4002//5114 +f 3491//5115 3979//5115 3490//5115 +f 598//5116 912//5116 595//5116 +f 3973//5117 4000//5117 3980//5117 +f 3492//204 3965//204 3491//204 +f 597//243 596//243 617//243 +f 110//5118 1390//5118 1389//5118 +f 1169//5119 1134//5119 2918//5119 +f 3996//5120 4010//5120 3981//5120 +f 3474//2930 3494//2930 3966//2930 +f 3494//204 3475//204 3966//204 +f 3018//5121 2984//5121 2982//5121 +f 3018//5122 2982//5122 2981//5122 +f 4010//5123 4011//5123 4012//5123 +f 3987//5124 4010//5124 4012//5124 +f 3987//5125 4012//5125 4013//5125 +f 3990//5126 3987//5126 4013//5126 +f 4014//5127 3990//5127 4013//5127 +f 4014//5128 4013//5128 4015//5128 +f 4014//5129 4015//5129 4016//5129 +f 3494//204 3501//204 3496//204 +f 3497//5130 3496//5130 3498//5130 +f 3492//204 3495//204 3965//204 +f 3366//210 2132//210 3323//210 +f 3323//210 2924//210 3366//210 +f 4017//5131 4018//5131 4019//5131 +f 877//5132 1868//5132 879//5132 +f 3470//216 3965//216 3495//216 +f 4019//5133 4018//5133 4016//5133 +f 4018//5134 4020//5134 4016//5134 +f 4021//5135 4016//5135 4020//5135 +f 3501//5130 3498//5130 3496//5130 +f 2981//5136 3007//5136 3018//5136 +f 3001//5137 3007//5137 2981//5137 +f 3002//5138 3001//5138 2981//5138 +f 4020//5139 4011//5139 4021//5139 +f 3996//5140 4021//5140 4011//5140 +f 4011//5141 4010//5141 3996//5141 +f 3498//4211 3501//4211 3502//4211 +f 2981//5142 2980//5142 3002//5142 +f 3494//204 3509//204 3500//204 +f 4021//5143 3996//5143 4014//5143 +f 3509//4212 3503//4212 3500//4212 +f 4011//5144 4020//5144 4022//5144 +f 3503//209 3509//209 3504//209 +f 3471//243 3498//243 3502//243 +f 3504//243 3512//243 3505//243 +f 3506//5145 3505//5145 3508//5145 +f 4015//5146 4023//5146 4017//5146 +f 3472//4983 3506//4983 3494//4983 +f 4017//5147 4023//5147 2677//5147 +f 162//5148 2677//5148 4023//5148 +f 160//5149 162//5149 4023//5149 +f 2384//210 3366//210 2924//210 +f 2980//5150 2978//5150 3002//5150 +f 3000//5151 3002//5151 2978//5151 +f 392//5152 162//5152 561//5152 +f 561//5153 4024//5153 392//5153 +f 1210//5154 392//5154 4024//5154 +f 4024//5155 1208//5155 1210//5155 +f 3507//5156 3494//5156 3506//5156 +f 237//204 3508//204 3513//204 +f 2331//5157 2330//5157 2327//5157 +f 1442//5158 392//5158 1210//5158 +f 1210//5159 1743//5159 1442//5159 +f 948//243 2281//243 3510//243 +f 1442//5160 1743//5160 1813//5160 +f 2377//5161 1442//5161 1813//5161 +f 1813//5162 2678//5162 2377//5162 +f 2977//5163 2978//5163 2970//5163 +f 3515//5164 3511//5164 3510//5164 +f 162//5165 393//5165 2377//5165 +f 1341//210 1325//210 1327//210 +f 2977//5166 2973//5166 2975//5166 +f 2678//5167 2677//5167 2377//5167 +f 3989//5168 4025//5168 2201//5168 +f 3511//4219 3515//4219 3513//4219 +f 4017//5169 2677//5169 2676//5169 +f 2977//5170 2970//5170 2973//5170 +f 3972//5171 3969//5171 4009//5171 +f 4024//5172 4018//5172 2676//5172 +f 2258//5173 4025//5173 3989//5173 +f 561//5174 4018//5174 4024//5174 +f 4018//5175 561//5175 161//5175 +f 2676//5176 2678//5176 4024//5176 +f 1208//5177 4024//5177 2678//5177 +f 2678//5178 1813//5178 1208//5178 +f 3519//5179 949//5179 237//5179 +f 3972//5180 4009//5180 3973//5180 +f 2062//5181 949//5181 3519//5181 +f 1209//5182 1208//5182 3135//5182 +f 3135//5183 4026//5183 1209//5183 +f 4027//5184 1209//5184 4026//5184 +f 3521//216 3520//216 4028//216 +f 3522//5185 3523//5185 2128//5185 +f 3533//2911 3524//2911 3516//2911 +f 4027//5186 4029//5186 4030//5186 +f 4027//5187 4030//5187 1501//5187 +f 1209//5188 4027//5188 1501//5188 +f 3525//204 3524//204 3531//204 +f 4031//204 3527//204 3525//204 +f 4032//5189 3528//5189 3527//5189 +f 1744//5190 1501//5190 4033//5190 +f 1261//5191 1281//5191 1343//5191 +f 1744//5192 4033//5192 4026//5192 +f 1744//5193 4026//5193 1812//5193 +f 1744//210 1812//210 1743//210 +f 2274//243 2128//243 3526//243 +f 2274//243 3529//243 2281//243 +f 4026//5194 3135//5194 1812//5194 +f 1813//5195 1812//5195 3135//5195 +f 3528//243 4034//243 3529//243 +f 2965//5196 2969//5196 2968//5196 +f 1321//210 1324//210 1093//210 +f 4034//5197 3530//5197 3529//5197 +f 4035//5198 4026//5198 4036//5198 +f 4036//5199 4037//5199 4035//5199 +f 4035//5200 4037//5200 4029//5200 +f 2968//5201 2950//5201 2965//5201 +f 4037//5202 4038//5202 4029//5202 +f 3525//204 3531//204 3530//204 +f 3532//5203 3531//5203 3524//5203 +f 4030//5204 4029//5204 4039//5204 +f 4030//5205 4039//5205 4040//5205 +f 4033//5206 4030//5206 4040//5206 +f 3533//5207 3532//5207 3524//5207 +f 3516//216 3534//216 3533//216 +f 3540//5208 3535//5208 3534//5208 +f 4040//5209 4036//5209 4033//5209 +f 3542//243 3536//243 3535//243 +f 4041//5210 4036//5210 4040//5210 +f 4042//5211 4041//5211 4040//5211 +f 3536//210 3550//210 3537//210 +f 3538//5212 3515//5212 3510//5212 +f 4043//5213 4044//5213 4042//5213 +f 4042//5214 4045//5214 4043//5214 +f 3538//243 3537//243 3577//243 +f 3578//5215 3539//5215 3538//5215 +f 620//210 596//210 593//210 +f 2947//5216 2950//5216 2948//5216 +f 4046//204 3543//204 3541//204 +f 4047//5217 4048//5217 4049//5217 +f 4049//5218 4048//5218 4044//5218 +f 4048//5219 4050//5219 4044//5219 +f 4044//5220 4050//5220 4038//5220 +f 4044//5221 4038//5221 4037//5221 +f 3542//5222 3543//5222 4051//5222 +f 2965//5223 2950//5223 2947//5223 +f 2258//5224 2257//5224 4052//5224 +f 4050//5225 4053//5225 4038//5225 +f 4051//5226 3545//5226 3542//5226 +f 4053//5227 4054//5227 4038//5227 +f 4053//5228 4045//5228 4054//5228 +f 3546//243 3545//243 4055//243 +f 3546//216 3549//216 3547//216 +f 3536//210 3548//210 3550//210 +f 3550//210 3551//210 3557//210 +f 4056//5229 4045//5229 4057//5229 +f 4058//5230 4056//5230 4057//5230 +f 4058//5231 4057//5231 4059//5231 +f 3552//5232 3561//5232 3551//5232 +f 4060//216 3553//216 3549//216 +f 4061//5233 4062//5233 4058//5233 +f 785//210 725//210 4063//210 +f 4064//5234 3557//5234 3555//5234 +f 4062//5235 4065//5235 4056//5235 +f 3559//5236 3556//5236 3558//5236 +f 3560//5237 4066//5237 3559//5237 +f 3561//5238 3564//5238 3562//5238 +f 4047//5239 4056//5239 4065//5239 +f 4067//5240 3563//5240 3564//5240 +f 4047//5241 4065//5241 4068//5241 +f 4068//5242 4065//5242 4069//5242 +f 3566//216 3564//216 4070//216 +f 4059//5243 4068//5243 4069//5243 +f 768//210 1093//210 787//210 +f 575//204 574//204 1485//204 +f 3564//216 3565//216 4067//216 +f 1591//5244 2564//5244 1667//5244 +f 2947//5245 2933//5245 2965//5245 +f 3567//216 3573//216 3565//216 +f 3447//5246 4071//5246 3653//5246 +f 4048//5247 4059//5247 4053//5247 +f 3569//210 3568//210 4072//210 +f 4048//5248 4068//5248 4059//5248 +f 1667//5249 2564//5249 1683//5249 +f 2966//5250 2965//5250 2933//5250 +f 2966//5251 2933//5251 2942//5251 +f 4058//5252 4069//5252 4073//5252 +f 3570//216 3573//216 3567//216 +f 1343//5253 1342//5253 1376//5253 +f 2966//5254 2942//5254 2959//5254 +f 3537//210 3571//210 3569//210 +f 3973//5255 3980//5255 3977//5255 +f 4026//5256 4035//5256 4027//5256 +f 3571//5257 3574//5257 3572//5257 +f 4074//5258 4075//5258 4076//5258 +f 4077//5259 4072//5259 4078//5259 +f 4078//210 4072//210 3568//210 +f 4079//5260 4080//5260 4074//5260 +f 4081//5261 4080//5261 4079//5261 +f 3568//210 4082//210 4078//210 +f 4081//5262 4079//5262 4083//5262 +f 4083//5263 4084//5263 4081//5263 +f 4084//5264 4085//5264 4081//5264 +f 4086//268 3565//268 4087//268 +f 2962//5265 2964//5265 2966//5265 +f 3560//210 3563//210 4088//210 +f 4081//5266 4085//5266 4089//5266 +f 2966//5267 2959//5267 2962//5267 +f 4081//5268 4089//5268 4080//5268 +f 4067//216 3565//216 4086//216 +f 4089//5269 4090//5269 4080//5269 +f 4090//5270 4091//5270 4080//5270 +f 4080//5271 4091//5271 4075//5271 +f 4067//216 4086//216 4092//216 +f 2950//5272 2959//5272 2951//5272 +f 4083//5273 4093//5273 4091//5273 +f 3563//5274 4067//5274 4092//5274 +f 4091//5275 4093//5275 4076//5275 +f 4094//5276 4076//5276 4093//5276 +f 4088//5277 3563//5277 4092//5277 +f 4092//5278 4086//5278 4088//5278 +f 4093//5279 4095//5279 4094//5279 +f 4095//5280 4096//5280 4094//5280 +f 4087//268 4088//268 4086//268 +f 3560//210 4088//210 4087//210 +f 4094//5281 4096//5281 4062//5281 +f 4001//5282 3975//5282 3978//5282 +f 4096//5283 4065//5283 4062//5283 +f 2257//5284 2261//5284 4052//5284 +f 4069//5285 4096//5285 4073//5285 +f 4097//216 4070//216 3564//216 +f 3561//5286 4097//5286 3564//5286 +f 4095//5287 4076//5287 4073//5287 +f 4096//5288 4095//5288 4073//5288 +f 4097//5289 3561//5289 3552//5289 +f 3552//216 4070//216 4097//216 +f 4083//5290 4074//5290 4095//5290 +f 4093//5291 4083//5291 4095//5291 +f 2951//5292 2942//5292 2953//5292 +f 2942//5293 2935//5293 2953//5293 +f 3556//5236 3559//5236 4066//5236 +f 4061//5294 4076//5294 4094//5294 +f 2926//5295 2953//5295 2927//5295 +f 4066//216 3552//216 3556//216 +f 3619//5296 2092//5296 686//5296 +f 1343//5297 1376//5297 1355//5297 +f 4098//5298 4084//5298 4083//5298 +f 4070//216 3552//216 4066//216 +f 4084//5299 4098//5299 4090//5299 +f 4099//5300 4084//5300 4090//5300 +f 4070//5301 3568//5301 3566//5301 +f 1480//5302 1430//5302 858//5302 +f 2934//5303 2921//5303 2923//5303 +f 4070//5304 4066//5304 3568//5304 +f 4066//5305 3560//5305 3568//5305 +f 4082//210 3568//210 3560//210 +f 4100//5306 2923//5306 2922//5306 +f 3560//210 4087//210 4082//210 +f 4101//5307 4102//5307 4103//5307 +f 4087//5308 3565//5308 4082//5308 +f 3982//5309 3978//5309 3977//5309 +f 4104//216 3565//216 3573//216 +f 4105//5310 2922//5310 2912//5310 +f 4106//5311 4103//5311 4107//5311 +f 4104//5308 4082//5308 3565//5308 +f 1355//210 1293//210 1356//210 +f 4078//5312 4082//5312 4104//5312 +f 4108//5313 4109//5313 4107//5313 +f 4108//5314 4110//5314 4109//5314 +f 4077//5312 4078//5312 4104//5312 +f 4104//216 3573//216 4077//216 +f 3573//5315 4072//5315 4077//5315 +f 4111//5316 4106//5316 4109//5316 +f 4110//5317 4111//5317 4109//5317 +f 4111//5318 4110//5318 4112//5318 +f 2900//5319 2848//5319 2847//5319 +f 3537//210 3569//210 4072//210 +f 4072//5320 3573//5320 3537//5320 +f 3573//5321 3577//5321 3537//5321 +f 4113//5322 2834//5322 2848//5322 +f 4113//5323 2817//5323 2834//5323 +f 4114//5324 4115//5324 4116//5324 +f 3573//5325 3575//5325 3577//5325 +f 3550//210 3557//210 4064//210 +f 4101//5326 4111//5326 4114//5326 +f 4101//5327 4114//5327 4117//5327 +f 4101//5328 4117//5328 4118//5328 +f 4117//5329 4119//5329 4118//5329 +f 4113//5330 2848//5330 2817//5330 +f 2817//5331 2848//5331 2883//5331 +f 4119//5332 4085//5332 4118//5332 +f 4118//5333 4085//5333 4084//5333 +f 4120//5334 4118//5334 4084//5334 +f 4064//210 3537//210 3550//210 +f 4120//5335 4084//5335 4099//5335 +f 4118//5336 4120//5336 4121//5336 +f 4122//5337 4085//5337 4119//5337 +f 3537//210 4064//210 3571//210 +f 3574//5338 3571//5338 4064//5338 +f 1305//5339 2327//5339 2330//5339 +f 4122//5340 4123//5340 4124//5340 +f 4122//5341 4124//5341 4089//5341 +f 4089//5342 4124//5342 4090//5342 +f 4121//5343 4124//5343 4123//5343 +f 1207//5344 3284//5344 2375//5344 +f 4102//5345 4121//5345 4123//5345 +f 4103//5346 4102//5346 4123//5346 +f 4107//5347 4103//5347 4123//5347 +f 4107//5348 4123//5348 4125//5348 +f 4064//5234 3555//5234 3574//5234 +f 4107//5349 4125//5349 4116//5349 +f 4107//5350 4116//5350 4126//5350 +f 3554//216 3574//216 3555//216 +f 3581//5351 3576//5351 3554//5351 +f 4117//5352 4125//5352 4122//5352 +f 4123//5353 4122//5353 4125//5353 +f 4122//5354 4119//5354 4117//5354 +f 4117//5355 4114//5355 4125//5355 +f 4101//5356 4106//5356 4111//5356 +f 4010//5357 3982//5357 3981//5357 +f 4116//5358 4125//5358 4114//5358 +f 4126//5359 4116//5359 4115//5359 +f 4111//5360 4115//5360 4114//5360 +f 3581//5361 3578//5361 3576//5361 +f 4126//5362 4115//5362 4127//5362 +f 4127//5363 4108//5363 4126//5363 +f 2883//5364 2848//5364 2900//5364 +f 1205//5365 1207//5365 2375//5365 +f 4127//5366 4128//5366 4108//5366 +f 4127//5367 4129//5367 4128//5367 +f 3580//5368 3539//5368 3578//5368 +f 3539//204 3580//204 3579//204 +f 4129//5369 4130//5369 4131//5369 +f 3539//204 3579//204 3582//204 +f 4132//233 3582//233 3581//233 +f 3583//5370 3585//5370 3581//5370 +f 4131//5371 4133//5371 4134//5371 +f 4134//5372 4133//5372 4135//5372 +f 4135//5373 4129//5373 4134//5373 +f 4129//5374 4135//5374 4136//5374 +f 3584//233 3581//233 3554//233 +f 4135//5375 4137//5375 4136//5375 +f 4137//5376 4138//5376 4136//5376 +f 3584//216 3554//216 3586//216 +f 4138//5377 4128//5377 4136//5377 +f 2910//210 3588//210 2911//210 +f 4128//5378 4138//5378 4108//5378 +f 3589//216 3585//216 3587//216 +f 858//216 862//216 1481//216 +f 3589//5379 2910//5379 2909//5379 +f 4110//5380 4138//5380 4112//5380 +f 4137//5381 4112//5381 4138//5381 +f 1262//5382 1356//5382 1293//5382 +f 4139//5383 4112//5383 4137//5383 +f 2683//5384 2673//5384 2672//5384 +f 4140//5385 4112//5385 4139//5385 +f 2904//5386 2905//5386 2912//5386 +f 3589//216 2683//216 2672//216 +f 2909//5387 2907//5387 3589//5387 +f 2700//216 2907//216 2895//216 +f 4139//5388 4141//5388 4140//5388 +f 4141//5389 4127//5389 4140//5389 +f 2895//216 2720//216 2700//216 +f 4142//5390 4141//5390 4139//5390 +f 2719//5391 2717//5391 2720//5391 +f 2703//216 2720//216 2717//216 +f 2717//216 3591//216 2703//216 +f 3982//5392 4010//5392 3987//5392 +f 4143//5393 4130//5393 4144//5393 +f 4130//5394 4145//5394 4144//5394 +f 4144//5395 4145//5395 4141//5395 +f 4145//5396 4129//5396 4141//5396 +f 4143//5397 4146//5397 4130//5397 +f 3593//210 3771//210 2709//210 +f 3591//5398 3595//5398 3592//5398 +f 3860//5399 3596//5399 3595//5399 +f 4130//5400 4146//5400 4147//5400 +f 4148//5401 4130//5401 4147//5401 +f 3596//210 2670//210 2660//210 +f 4147//5402 4149//5402 4148//5402 +f 4148//5403 4149//5403 4150//5403 +f 3597//5404 2660//5404 2659//5404 +f 4150//5405 4151//5405 4148//5405 +f 3598//5406 3597//5406 3605//5406 +f 4151//5407 4152//5407 4148//5407 +f 4153//5408 4148//5408 4152//5408 +f 1170//210 1131//210 2092//210 +f 4153//5409 4152//5409 4131//5409 +f 2092//210 3619//210 1170//210 +f 3608//5410 3599//5410 3598//5410 +f 4133//5411 4131//5411 4152//5411 +f 4133//5412 4152//5412 4154//5412 +f 4143//5413 4133//5413 4154//5413 +f 4144//5414 4133//5414 4143//5414 +f 4154//5415 4152//5415 4155//5415 +f 4155//5416 4146//5416 4154//5416 +f 3593//5417 3600//5417 3685//5417 +f 4155//5418 4147//5418 4146//5418 +f 3599//5419 4156//5419 2652//5419 +f 4105//5420 2912//5420 2905//5420 +f 2672//216 3585//216 3589//216 +f 2672//5421 2669//5421 2671//5421 +f 2900//5422 2847//5422 2905//5422 +f 4157//5423 4158//5423 4159//5423 +f 3604//216 2672//216 2671//216 +f 2905//5424 2847//5424 2864//5424 +f 3607//216 3605//216 3604//216 +f 4160//5425 4161//5425 4158//5425 +f 4158//5426 4162//5426 4160//5426 +f 4162//5427 4163//5427 4160//5427 +f 3599//5428 3608//5428 4156//5428 +f 3608//216 3607//216 4156//216 +f 4150//5429 4149//5429 4163//5429 +f 4149//5430 4161//5430 4163//5430 +f 3609//5431 3607//5431 3682//5431 +f 4161//5432 4149//5432 4164//5432 +f 4052//5433 2261//5433 2279//5433 +f 4158//5434 4161//5434 4164//5434 +f 4164//5435 4149//5435 4155//5435 +f 4163//5436 4165//5436 4150//5436 +f 4165//5437 4159//5437 4150//5437 +f 2864//5438 4105//5438 2905//5438 +f 4105//5439 2864//5439 2874//5439 +f 3611//216 3610//216 3655//216 +f 875//5440 1865//5440 877//5440 +f 2874//210 2922//210 4105//210 +f 4156//216 3607//216 3612//216 +f 4100//5441 2922//5441 2874//5441 +f 2279//5442 2278//5442 4052//5442 +f 4159//5443 4165//5443 4157//5443 +f 2261//5444 2286//5444 1305//5444 +f 2878//5445 4100//5445 2874//5445 +f 3612//5446 3613//5446 3656//5446 +f 3601//5447 2652//5447 4156//5447 +f 4166//5448 4157//5448 4165//5448 +f 4157//5449 4166//5449 4167//5449 +f 4156//216 3612//216 3601//216 +f 3978//5450 3988//5450 3999//5450 +f 4166//5451 4168//5451 4167//5451 +f 4167//5452 4168//5452 4169//5452 +f 3585//5453 2940//5453 2911//5453 +f 2628//210 2939//210 2613//210 +f 4170//5454 4162//5454 4169//5454 +f 4169//5455 4162//5455 4171//5455 +f 4170//5456 4172//5456 4162//5456 +f 2628//5457 4173//5457 2929//5457 +f 2929//5458 4174//5458 2928//5458 +f 4172//5459 4175//5459 4165//5459 +f 4165//5460 4163//5460 4172//5460 +f 4176//5461 4175//5461 4172//5461 +f 4177//5462 4176//5462 4172//5462 +f 4177//5463 4178//5463 4176//5463 +f 4179//5464 4176//5464 4178//5464 +f 4180//5465 4179//5465 4178//5465 +f 4181//5466 4180//5466 4178//5466 +f 2258//5467 4052//5467 2278//5467 +f 4182//5468 4181//5468 4178//5468 +f 4182//5469 4178//5469 4183//5469 +f 2860//5470 2903//5470 4184//5470 +f 2674//5471 2811//5471 2675//5471 +f 2811//216 4185//216 2675//216 +f 4186//5472 4182//5472 4187//5472 +f 4188//5473 4186//5473 4187//5473 +f 2923//5474 4100//5474 2878//5474 +f 4189//5475 4185//5475 4184//5475 +f 3619//210 2897//210 1170//210 +f 2928//210 4184//210 2903//210 +f 4184//5476 4190//5476 4189//5476 +f 787//210 1345//210 788//210 +f 1344//741 1353//741 1346//741 +f 4191//5477 2928//5477 4192//5477 +f 2913//5478 2927//5478 2923//5478 +f 4193//5479 4194//5479 4191//5479 +f 4195//5480 4196//5480 4197//5480 +f 4198//5481 4195//5481 4197//5481 +f 4199//5482 4198//5482 4197//5482 +f 4200//5483 4201//5483 4190//5483 +f 2927//5484 2934//5484 2923//5484 +f 2927//5485 2953//5485 2934//5485 +f 4196//5486 4202//5486 4197//5486 +f 4203//5487 4202//5487 4196//5487 +f 4194//210 4204//210 4205//210 +f 2375//5488 2387//5488 1205//5488 +f 3988//5489 3987//5489 3990//5489 +f 4206//5490 4207//5490 4203//5490 +f 4208//5491 4209//5491 4200//5491 +f 2934//5492 2953//5492 2935//5492 +f 4210//5493 4211//5493 4205//5493 +f 4206//5494 4212//5494 4213//5494 +f 4206//5495 4213//5495 4214//5495 +f 4206//5496 4214//5496 4207//5496 +f 3582//210 3588//210 4208//210 +f 4215//5497 4211//5497 4210//5497 +f 4174//216 4210//216 4192//216 +f 4216//5498 4203//5498 4207//5498 +f 4217//5499 4216//5499 4207//5499 +f 4214//5500 4217//5500 4207//5500 +f 4173//5501 2628//5501 2627//5501 +f 724//5502 723//5502 782//5502 +f 2949//5503 2953//5503 2926//5503 +f 2926//5504 2925//5504 2949//5504 +f 4218//5505 4219//5505 4217//5505 +f 2627//5506 4220//5506 4173//5506 +f 4220//5507 2627//5507 2638//5507 +f 2639//5508 2641//5508 2638//5508 +f 2640//5509 2648//5509 2641//5509 +f 4188//5510 4221//5510 4222//5510 +f 4223//5511 2641//5511 2648//5511 +f 4221//5512 4216//5512 4222//5512 +f 3340//210 594//210 595//210 +f 4216//5513 4221//5513 4197//5513 +f 4224//216 4210//216 4223//216 +f 4199//5514 4221//5514 4187//5514 +f 4199//5515 4187//5515 4225//5515 +f 4226//209 2647//209 2675//209 +f 4227//209 2647//209 4226//209 +f 4199//5516 4225//5516 4228//5516 +f 4223//5517 2648//5517 4224//5517 +f 1347//5518 1349//5518 1345//5518 +f 4228//5519 4225//5519 4180//5519 +f 1305//5520 2330//5520 2261//5520 +f 4224//5521 2648//5521 4204//5521 +f 4180//5522 4188//5522 4228//5522 +f 4194//5523 4193//5523 4204//5523 +f 3996//5524 3990//5524 4014//5524 +f 4225//5525 4229//5525 4180//5525 +f 4174//5526 4192//5526 2928//5526 +f 4025//5527 2258//5527 2278//5527 +f 4225//5528 4230//5528 4229//5528 +f 4230//5529 4183//5529 4229//5529 +f 2278//5530 2280//5530 4025//5530 +f 1348//5531 1346//5531 1353//5531 +f 4183//5532 4231//5532 4229//5532 +f 2280//5533 2204//5533 4025//5533 +f 4192//5534 4193//5534 4191//5534 +f 4192//216 4210//216 4193//216 +f 4229//5535 4231//5535 4179//5535 +f 4176//5536 4179//5536 4231//5536 +f 4232//5537 4176//5537 4231//5537 +f 4231//5538 4168//5538 4232//5538 +f 4193//216 4210//216 4224//216 +f 4231//5539 4183//5539 4168//5539 +f 4183//5540 4233//5540 4168//5540 +f 4169//5541 4168//5541 4233//5541 +f 4204//5542 4193//5542 4224//5542 +f 4176//5543 4232//5543 4175//5543 +f 4204//210 2648//210 4205//210 +f 4232//5544 4166//5544 4175//5544 +f 2948//5545 2951//5545 2949//5545 +f 4227//210 2648//210 2647//210 +f 4227//210 4205//210 2648//210 +f 1350//5546 1345//5546 1349//5546 +f 1350//5547 1351//5547 1352//5547 +f 4222//5548 4219//5548 4195//5548 +f 4219//5549 4218//5549 4195//5549 +f 4219//5550 4222//5550 4216//5550 +f 4216//5551 4217//5551 4219//5551 +f 4227//209 4226//209 4205//209 +f 4226//209 4210//209 4205//209 +f 4196//5552 4218//5552 4203//5552 +f 4234//5553 4218//5553 4217//5553 +f 4235//5554 4234//5554 4217//5554 +f 2949//5555 2933//5555 2948//5555 +f 582//243 594//243 3349//243 +f 4235//5556 4212//5556 4206//5556 +f 4226//216 4223//216 4210//216 +f 4226//216 2675//216 4223//216 +f 4236//5557 4213//5557 4212//5557 +f 2675//216 2641//216 4223//216 +f 2675//216 2638//216 2641//216 +f 2930//5558 2935//5558 2933//5558 +f 4236//5559 4237//5559 4238//5559 +f 4237//5560 4239//5560 4238//5560 +f 2675//216 4220//216 2638//216 +f 4238//5561 4239//5561 4240//5561 +f 4214//5562 4238//5562 4240//5562 +f 4214//5563 4213//5563 4238//5563 +f 4239//5564 4241//5564 4240//5564 +f 4242//5565 4240//5565 4241//5565 +f 4241//5566 4243//5566 4242//5566 +f 4243//5567 4244//5567 4242//5567 +f 4244//5568 4245//5568 4242//5568 +f 4242//5569 4245//5569 4236//5569 +f 4242//5570 4236//5570 4246//5570 +f 4236//5571 4212//5571 4246//5571 +f 2675//216 4173//216 4220//216 +f 2930//5572 2921//5572 2935//5572 +f 4236//5573 4245//5573 4237//5573 +f 2675//216 4185//216 4173//216 +f 2921//5574 2930//5574 2916//5574 +f 4174//5575 2929//5575 4173//5575 +f 4173//216 4185//216 4174//216 +f 4247//5576 4248//5576 4237//5576 +f 4185//216 4210//216 4174//216 +f 4185//216 4215//216 4210//216 +f 4248//5577 4243//5577 4239//5577 +f 4249//5578 4248//5578 4247//5578 +f 4189//5579 4190//5579 4201//5579 +f 4209//5580 4201//5580 4200//5580 +f 4209//4291 4208//4291 4250//4291 +f 4237//5581 4251//5581 4247//5581 +f 2925//5582 2931//5582 2930//5582 +f 4251//5583 4245//5583 4252//5583 +f 4208//5584 3586//5584 4250//5584 +f 2925//5585 2927//5585 2931//5585 +f 4252//5586 4253//5586 4254//5586 +f 2931//5587 2927//5587 2913//5587 +f 3588//5588 3586//5588 4208//5588 +f 4254//5589 4253//5589 4255//5589 +f 4255//5590 4256//5590 4254//5590 +f 4256//5591 4255//5591 4257//5591 +f 4258//5592 4256//5592 4257//5592 +f 4258//5593 4257//5593 4259//5593 +f 2916//5594 2931//5594 2913//5594 +f 4260//5595 4258//5595 4259//5595 +f 4261//5596 4260//5596 4259//5596 +f 4259//5597 4262//5597 4261//5597 +f 3581//233 3585//233 2911//233 +f 4132//5598 3581//5598 2911//5598 +f 4261//5599 4263//5599 4260//5599 +f 782//5600 723//5600 725//5600 +f 2921//5601 2916//5601 2917//5601 +f 1205//5602 2387//5602 1206//5602 +f 4260//5603 4264//5603 4258//5603 +f 2917//5604 2922//5604 2921//5604 +f 4132//210 2911//210 3588//210 +f 4264//5605 4265//5605 4258//5605 +f 4266//5606 4258//5606 4265//5606 +f 4132//210 3588//210 3582//210 +f 4267//5607 4266//5607 4265//5607 +f 4268//5608 4267//5608 4265//5608 +f 4268//5609 4265//5609 4269//5609 +f 4270//5610 4268//5610 4269//5610 +f 4269//5611 4259//5611 4270//5611 +f 4270//5612 4259//5612 4257//5612 +f 4270//5613 4257//5613 4255//5613 +f 4255//5614 4249//5614 4270//5614 +f 4249//5615 4255//5615 4244//5615 +f 2912//5616 2922//5616 2917//5616 +f 4025//5617 2204//5617 2201//5617 +f 3554//216 4250//216 3586//216 +f 3554//216 4209//216 4250//216 +f 3554//216 4201//216 4209//216 +f 4269//5618 4271//5618 4259//5618 +f 3554//216 4189//216 4201//216 +f 2917//5619 2913//5619 2912//5619 +f 1293//5620 1174//5620 1262//5620 +f 4272//5621 4273//5621 4271//5621 +f 1262//5622 1174//5622 345//5622 +f 345//5623 4274//5623 1262//5623 +f 4273//5624 4275//5624 4262//5624 +f 1262//5625 1227//5625 1226//5625 +f 3554//216 4185//216 4189//216 +f 3554//216 4215//216 4185//216 +f 4276//5626 4261//5626 4262//5626 +f 4277//5627 4276//5627 4262//5627 +f 4276//5628 4277//5628 4278//5628 +f 3554//216 3553//216 4215//216 +f 3553//5629 4211//5629 4215//5629 +f 4211//5630 3553//5630 4279//5630 +f 4276//5631 4278//5631 4263//5631 +f 4263//5632 4278//5632 4280//5632 +f 4281//5633 4263//5633 4280//5633 +f 3653//5634 4071//5634 3159//5634 +f 3541//204 3539//204 4046//204 +f 4046//5635 4282//5635 4283//5635 +f 4046//204 4051//204 3543//204 +f 4284//5636 4273//5636 4260//5636 +f 4260//5637 4263//5637 4284//5637 +f 2923//5638 2878//5638 2913//5638 +f 2904//5639 2913//5639 2878//5639 +f 4046//204 4285//204 4051//204 +f 539//5640 686//5640 560//5640 +f 4273//5641 4284//5641 4275//5641 +f 4281//5642 4275//5642 4284//5642 +f 1352//5643 1353//5643 1358//5643 +f 1350//5644 1352//5644 1357//5644 +f 4281//5645 4286//5645 4275//5645 +f 4032//204 4031//204 4285//204 +f 4275//5646 4286//5646 4277//5646 +f 4277//5647 4286//5647 4287//5647 +f 4287//5648 4286//5648 4288//5648 +f 2878//5649 2877//5649 2904//5649 +f 2900//5650 2904//5650 2877//5650 +f 509//5651 510//5651 540//5651 +f 4287//5652 4289//5652 4278//5652 +f 4051//5653 4055//5653 3545//5653 +f 4051//204 4285//204 4031//204 +f 4290//5654 4289//5654 4291//5654 +f 4292//5655 4290//5655 4291//5655 +f 4055//5656 4051//5656 4031//5656 +f 3527//204 4031//204 4032//204 +f 686//5657 694//5657 3619//5657 +f 4293//5658 4055//5658 4031//5658 +f 2877//5659 2874//5659 2873//5659 +f 4294//5660 4295//5660 4296//5660 +f 3525//204 4297//204 4031//204 +f 4296//5661 4295//5661 4298//5661 +f 4296//5662 4298//5662 4299//5662 +f 4012//5663 4022//5663 4013//5663 +f 4296//5664 4299//5664 4290//5664 +f 4292//5665 4296//5665 4290//5665 +f 4013//5666 4022//5666 4015//5666 +f 4031//5667 4297//5667 4293//5667 +f 3525//204 3530//204 4297//204 +f 4290//5668 4300//5668 4301//5668 +f 4274//5669 353//5669 1227//5669 +f 3530//5670 4034//5670 4297//5670 +f 4302//5671 4290//5671 4301//5671 +f 4301//5672 4303//5672 4302//5672 +f 4293//5673 4297//5673 4034//5673 +f 3528//243 4293//243 4034//243 +f 3528//243 4055//243 4293//243 +f 4288//5674 4286//5674 4303//5674 +f 4304//5675 3528//5675 4032//5675 +f 4055//243 3528//243 4304//243 +f 2851//5676 2864//5676 2847//5676 +f 4304//243 4305//243 4055//243 +f 4291//5677 4288//5677 4306//5677 +f 4285//5678 4305//5678 4304//5678 +f 2847//5679 2835//5679 2851//5679 +f 4304//5680 4032//5680 4285//5680 +f 2847//5681 2834//5681 2835//5681 +f 4306//5682 4288//5682 4307//5682 +f 4308//5683 4306//5683 4307//5683 +f 4309//5684 4308//5684 4307//5684 +f 4307//5685 4300//5685 4309//5685 +f 2283//5686 2203//5686 2204//5686 +f 4285//5687 4046//5687 4305//5687 +f 4310//5688 4294//5688 4309//5688 +f 4310//5689 4309//5689 4299//5689 +f 4311//5690 4310//5690 4299//5690 +f 4283//5691 4305//5691 4046//5691 +f 4283//243 4055//243 4305//243 +f 4283//243 3546//243 4055//243 +f 4311//5692 4312//5692 4310//5692 +f 3549//216 3546//216 4283//216 +f 4312//5693 4294//5693 4310//5693 +f 3549//216 4283//216 4060//216 +f 4283//5694 4313//5694 4060//5694 +f 4312//5695 4314//5695 4294//5695 +f 4313//5696 4315//5696 4316//5696 +f 4312//5697 4317//5697 4314//5697 +f 4317//5698 4318//5698 4314//5698 +f 4315//209 4319//209 4316//209 +f 4314//5699 4318//5699 4320//5699 +f 1226//5700 322//5700 342//5700 +f 132//5701 134//5701 322//5701 +f 4321//5702 4314//5702 4320//5702 +f 4319//243 4322//243 4028//243 +f 2835//5703 2817//5703 2826//5703 +f 4323//5704 4321//5704 4320//5704 +f 4323//5705 4320//5705 4324//5705 +f 4323//5706 4324//5706 4317//5706 +f 4323//5707 4317//5707 4311//5707 +f 4317//5708 4312//5708 4311//5708 +f 4027//5709 4035//5709 4029//5709 +f 4317//5710 4324//5710 4325//5710 +f 4016//5711 4015//5711 4017//5711 +f 2824//5712 2826//5712 2817//5712 +f 2817//5713 2786//5713 2824//5713 +f 3553//5714 3520//5714 4279//5714 +f 4325//5715 4326//5715 4318//5715 +f 799//5716 788//5716 1361//5716 +f 4327//5717 4326//5717 4325//5717 +f 4328//216 4028//216 3520//216 +f 4316//3840 4060//3840 4313//3840 +f 4028//243 4328//243 4319//243 +f 4329//5718 4330//5718 4327//5718 +f 4328//209 4316//209 4319//209 +f 4328//216 4060//216 4316//216 +f 4331//5719 4332//5719 4330//5719 +f 2786//5720 2791//5720 2824//5720 +f 4328//216 3553//216 4060//216 +f 4332//5721 4333//5721 4330//5721 +f 4326//5722 4330//5722 4333//5722 +f 3520//216 3553//216 4328//216 +f 4279//5723 3520//5723 3518//5723 +f 4334//5724 4324//5724 4333//5724 +f 4320//5725 4333//5725 4324//5725 +f 4335//233 4336//233 4322//233 +f 4028//233 4322//233 4336//233 +f 4337//5726 4334//5726 4333//5726 +f 4336//216 3521//216 4028//216 +f 4337//5727 4338//5727 4334//5727 +f 4338//5728 4327//5728 4334//5728 +f 4325//5729 4334//5729 4327//5729 +f 4337//5730 4332//5730 4338//5730 +f 3521//243 4336//243 4335//243 +f 2786//5731 2759//5731 2791//5731 +f 2786//5732 2783//5732 2759//5732 +f 4335//5733 3517//5733 3521//5733 +f 4329//5734 4338//5734 4339//5734 +f 4335//5735 4322//5735 3517//5735 +f 4331//5736 4329//5736 4339//5736 +f 3517//5737 4322//5737 3518//5737 +f 4279//210 3518//210 4322//210 +f 4322//210 4319//210 4279//210 +f 4319//210 4315//210 4279//210 +f 782//5738 768//5738 767//5738 +f 4340//5739 4331//5739 4341//5739 +f 4342//5740 4340//5740 4341//5740 +f 4315//5741 4313//5741 4279//5741 +f 4343//5742 4342//5742 4341//5742 +f 4313//5743 4283//5743 4282//5743 +f 4282//216 4046//216 4313//216 +f 4344//5744 4343//5744 4345//5744 +f 4021//5745 4014//5745 4016//5745 +f 4345//5746 4346//5746 4344//5746 +f 4046//204 3539//204 4313//204 +f 4346//5747 4347//5747 4344//5747 +f 4313//204 3539//204 3582//204 +f 3582//5748 4279//5748 4313//5748 +f 4348//5749 4347//5749 4349//5749 +f 2476//5750 2477//5750 2761//5750 +f 3582//210 4211//210 4279//210 +f 3582//210 4208//210 4211//210 +f 4350//5751 4351//5751 4349//5751 +f 4208//210 4205//210 4211//210 +f 4208//210 4200//210 4205//210 +f 4200//210 4194//210 4205//210 +f 4351//5752 4350//5752 4352//5752 +f 4017//5753 4019//5753 4016//5753 +f 4353//5754 4352//5754 4350//5754 +f 2754//5755 2477//5755 2484//5755 +f 1227//5756 353//5756 322//5756 +f 4200//210 4190//210 4194//210 +f 4190//210 4191//210 4194//210 +f 4354//5757 4353//5757 4350//5757 +f 4354//5758 4350//5758 4355//5758 +f 4190//210 2928//210 4191//210 +f 4356//5759 4354//5759 4355//5759 +f 4190//210 4184//210 2928//210 +f 4356//5760 4355//5760 4357//5760 +f 4356//5761 4357//5761 4348//5761 +f 2860//5762 4184//5762 4185//5762 +f 4348//5763 4351//5763 4356//5763 +f 2754//5764 2760//5764 2477//5764 +f 4185//216 2811//216 2860//216 +f 2758//5765 2760//5765 2754//5765 +f 4344//5766 4348//5766 4358//5766 +f 2697//5767 2811//5767 2674//5767 +f 2280//5768 2283//5768 2204//5768 +f 2698//5769 2708//5769 2697//5769 +f 2465//5770 2758//5770 2754//5770 +f 4358//5771 4359//5771 4360//5771 +f 4360//5772 4361//5772 4358//5772 +f 4361//5773 4343//5773 4358//5773 +f 4342//5774 4343//5774 4361//5774 +f 4361//5775 4362//5775 4342//5775 +f 4342//5776 4362//5776 4363//5776 +f 2512//216 4364//216 2749//216 +f 591//5777 1020//5777 592//5777 +f 583//204 1012//204 591//204 +f 4363//5778 4339//5778 4365//5778 +f 4339//5779 4338//5779 4365//5779 +f 4338//5780 4340//5780 4365//5780 +f 4340//5781 4338//5781 4332//5781 +f 4339//5782 4363//5782 4366//5782 +f 709//5783 2789//5783 694//5783 +f 4339//5784 4366//5784 4367//5784 +f 4367//5785 4341//5785 4339//5785 +f 4343//5786 4341//5786 4367//5786 +f 4367//5787 4366//5787 4368//5787 +f 4368//5788 4345//5788 4367//5788 +f 3876//5789 1203//5789 1202//5789 +f 2280//5790 2205//5790 2283//5790 +f 4366//5791 4363//5791 4368//5791 +f 4363//5792 4365//5792 4340//5792 +f 2564//216 2347//216 1870//216 +f 725//5793 4369//5793 4063//5793 +f 481//5794 489//5794 495//5794 +f 4368//5795 4363//5795 4362//5795 +f 4362//5796 4346//5796 4368//5796 +f 4362//5797 4360//5797 4346//5797 +f 2634//5798 1503//5798 238//5798 +f 4361//5799 4360//5799 4362//5799 +f 4359//5800 4370//5800 4360//5800 +f 4360//5801 4370//5801 4346//5801 +f 4357//5802 4370//5802 4359//5802 +f 4357//5803 4349//5803 4370//5803 +f 4349//5804 4357//5804 4350//5804 +f 2644//210 2722//210 2634//210 +f 2722//5805 4364//5805 2634//5805 +f 2729//5806 2725//5806 2726//5806 +f 4358//5807 4357//5807 4359//5807 +f 4343//5808 4344//5808 4358//5808 +f 4348//5809 4357//5809 4358//5809 +f 1222//5810 276//5810 2729//5810 +f 1221//216 2729//216 276//216 +f 1221//216 2725//216 2729//216 +f 4356//5811 4351//5811 4371//5811 +f 4372//5812 4371//5812 4351//5812 +f 4364//5813 2722//5813 2725//5813 +f 2725//216 2749//216 4364//216 +f 4373//5814 4371//5814 4372//5814 +f 4063//5815 4369//5815 917//5815 +f 4369//5816 725//5816 917//5816 +f 870//216 869//216 1856//216 +f 4373//5817 4372//5817 4374//5817 +f 4372//5818 4352//5818 4374//5818 +f 4352//5819 4375//5819 4374//5819 +f 2483//5820 2498//5820 2484//5820 +f 583//3192 543//3192 3355//3192 +f 4376//5821 4374//5821 4375//5821 +f 4377//5822 4376//5822 4375//5822 +f 4377//5823 4375//5823 4378//5823 +f 308//210 3341//210 547//210 +f 4379//5824 4377//5824 4378//5824 +f 4364//5825 1503//5825 2634//5825 +f 4380//5826 4379//5826 4378//5826 +f 4380//5827 4378//5827 4381//5827 +f 4380//5828 4381//5828 4376//5828 +f 4376//5829 4382//5829 4380//5829 +f 4364//216 2512//216 1503//216 +f 1503//216 2512//216 2062//216 +f 1504//1221 445//1221 1503//1221 +f 2483//5830 2477//5830 2468//5830 +f 4382//5831 4383//5831 4379//5831 +f 4379//5832 4383//5832 4384//5832 +f 1793//216 1504//216 1503//216 +f 1793//216 236//216 4385//216 +f 2280//5833 2259//5833 2205//5833 +f 4383//5834 4377//5834 4384//5834 +f 4383//5835 4382//5835 4377//5835 +f 4386//5836 440//5836 1793//5836 +f 1642//5837 440//5837 1640//5837 +f 4387//5838 4376//5838 4381//5838 +f 4388//5839 1610//5839 1640//5839 +f 4381//216 4353//216 4387//216 +f 4373//216 4387//216 4353//216 +f 4018//5840 4017//5840 2676//5840 +f 1280//5841 1343//5841 1281//5841 +f 4381//5842 4375//5842 4353//5842 +f 4375//5843 4352//5843 4353//5843 +f 4378//5844 4375//5844 4381//5844 +f 1580//5845 1360//5845 1359//5845 +f 1610//5846 4389//5846 1581//5846 +f 4390//209 1536//209 1581//209 +f 357//5847 322//5847 353//5847 +f 4374//5848 4376//5848 4387//5848 +f 4379//5849 4380//5849 4382//5849 +f 1536//5850 4391//5850 1443//5850 +f 4379//5851 4384//5851 4377//5851 +f 1418//5852 1379//5852 1360//5852 +f 4377//5853 4382//5853 4376//5853 +f 1443//5854 4391//5854 1426//5854 +f 2467//5855 2469//5855 2468//5855 +f 135//216 858//216 136//216 +f 4392//233 1425//233 1426//233 +f 4374//5856 4387//5856 4373//5856 +f 4393//5857 1397//5857 1425//5857 +f 4371//5858 4373//5858 4354//5858 +f 2205//5859 2259//5859 2258//5859 +f 494//5860 1291//5860 1397//5860 +f 4371//5861 4354//5861 4356//5861 +f 2258//5862 3989//5862 2205//5862 +f 4355//5863 4350//5863 4357//5863 +f 4373//5864 4353//5864 4354//5864 +f 2467//5865 2466//5865 2469//5865 +f 4018//5866 161//5866 4020//5866 +f 3159//5867 4071//5867 3367//5867 +f 4372//5868 4351//5868 4352//5868 +f 493//5869 494//5869 1397//5869 +f 4394//5870 367//5870 493//5870 +f 337//216 496//216 404//216 +f 367//5871 4395//5871 336//5871 +f 4349//5872 4351//5872 4348//5872 +f 4348//5873 4344//5873 4347//5873 +f 4370//5874 4349//5874 4347//5874 +f 4370//5875 4347//5875 4346//5875 +f 337//204 321//204 1354//204 +f 4345//5876 4368//5876 4346//5876 +f 1509//5877 563//5877 562//5877 +f 4367//5878 4345//5878 4343//5878 +f 2466//5879 2751//5879 2469//5879 +f 2440//5880 2469//5880 2751//5880 +f 4363//5881 4340//5881 4342//5881 +f 917//5882 725//5882 915//5882 +f 874//210 1859//210 875//210 +f 4341//5883 4331//5883 4339//5883 +f 2751//5884 2438//5884 2440//5884 +f 314//210 336//210 3876//210 +f 310//210 2990//210 321//210 +f 321//210 309//210 310//210 +f 2438//204 2501//204 2417//204 +f 2417//5885 2414//5885 2410//5885 +f 4396//5886 289//5886 314//5886 +f 4320//5887 4326//5887 4333//5887 +f 4333//5888 4332//5888 4337//5888 +f 2413//5889 2410//5889 2414//5889 +f 4340//5890 4332//5890 4331//5890 +f 4396//5891 243//5891 289//5891 +f 4329//5892 4331//5892 4330//5892 +f 874//5893 870//5893 1855//5893 +f 4329//5894 4327//5894 4338//5894 +f 4330//5895 4326//5895 4327//5895 +f 1491//5896 432//5896 243//5896 +f 4325//5897 4318//5897 4317//5897 +f 4324//5898 4334//5898 4325//5898 +f 4311//5899 4321//5899 4323//5899 +f 4321//5900 4311//5900 4298//5900 +f 1491//5901 243//5901 218//5901 +f 2414//5902 2389//5902 2413//5902 +f 4396//5903 219//5903 243//5903 +f 973//216 218//216 217//216 +f 2206//5904 2205//5904 3989//5904 +f 4321//5905 4298//5905 4314//5905 +f 4318//5906 4326//5906 4320//5906 +f 290//204 532//204 217//204 +f 581//5907 3354//5907 580//5907 +f 345//5908 353//5908 4274//5908 +f 532//216 655//216 1378//216 +f 671//204 4397//204 697//204 +f 239//204 4398//204 1114//204 +f 1206//5909 2410//5909 2389//5909 +f 4300//5910 4299//5910 4309//5910 +f 1114//204 4398//204 1354//204 +f 4308//5911 4309//5911 4294//5911 +f 4292//5912 4308//5912 4294//5912 +f 4306//5913 4308//5913 4292//5913 +f 833//5914 240//5914 831//5914 +f 4303//5915 4307//5915 4288//5915 +f 2424//216 973//216 1781//216 +f 4280//5916 4302//5916 4303//5916 +f 4280//5917 4303//5917 4286//5917 +f 2387//5918 2410//5918 1206//5918 +f 4289//5919 4302//5919 4280//5919 +f 4301//5920 4307//5920 4303//5920 +f 1969//5921 833//5921 832//5921 +f 4301//5922 4300//5922 4307//5922 +f 2423//5923 1781//5923 1969//5923 +f 4300//5924 4290//5924 4299//5924 +f 2403//5925 2387//5925 2376//5925 +f 4311//5926 4299//5926 4298//5926 +f 4314//5927 4298//5927 4295//5927 +f 4314//5928 4295//5928 4294//5928 +f 2428//5929 2423//5929 3321//5929 +f 4294//5930 4296//5930 4292//5930 +f 4022//5931 4020//5931 161//5931 +f 2442//5932 1487//5932 2424//5932 +f 4292//5933 4291//5933 4306//5933 +f 4022//5934 4012//5934 4011//5934 +f 4289//5935 4290//5935 4302//5935 +f 3369//204 2784//204 2428//204 +f 4291//5936 4289//5936 4287//5936 +f 4291//5937 4287//5937 4288//5937 +f 4015//5938 4022//5938 161//5938 +f 424//5939 2784//5939 3075//5939 +f 4281//5940 4280//5940 4286//5940 +f 424//216 1336//216 1338//216 +f 4263//5941 4281//5941 4284//5941 +f 4280//5942 4278//5942 4289//5942 +f 3076//5943 3075//5943 3369//5943 +f 4287//5944 4278//5944 4277//5944 +f 4275//5945 4277//5945 4262//5945 +f 3635//5946 3094//5946 3076//5946 +f 3120//5947 3094//5947 3146//5947 +f 1338//216 1337//216 4399//216 +f 4273//5948 4272//5948 4264//5948 +f 2367//5949 4400//5949 2353//5949 +f 4271//5950 4273//5950 4262//5950 +f 4269//5951 4272//5951 4271//5951 +f 4270//5952 4249//5952 4268//5952 +f 4265//5953 4272//5953 4269//5953 +f 4401//5954 4267//5954 4268//5954 +f 4252//5955 4401//5955 4268//5955 +f 244//5956 269//5956 2327//5956 +f 441//5957 1500//5957 1446//5957 +f 4401//5958 4252//5958 4254//5958 +f 424//216 1338//216 4402//216 +f 4252//5959 4268//5959 4247//5959 +f 1500//5960 442//5960 1499//5960 +f 436//243 4403//243 1499//243 +f 4401//5961 4266//5961 4267//5961 +f 4404//209 1489//209 4405//209 +f 4258//5962 4266//5962 4401//5962 +f 973//216 2424//216 218//216 +f 4272//5963 4265//5963 4264//5963 +f 218//216 2424//216 1491//216 +f 2424//216 1487//216 1491//216 +f 4260//5964 4273//5964 4264//5964 +f 1487//209 421//209 1489//209 +f 4276//5965 4263//5965 4261//5965 +f 1489//209 4404//209 1487//209 +f 4262//5966 4259//5966 4271//5966 +f 281//5967 2327//5967 269//5967 +f 4404//216 1491//216 1487//216 +f 2334//5968 4400//5968 2367//5968 +f 435//216 1491//216 4404//216 +f 4258//5969 4401//5969 4256//5969 +f 4401//5970 4254//5970 4256//5970 +f 4404//216 1493//216 435//216 +f 4255//5971 4253//5971 4244//5971 +f 1493//243 4404//243 4405//243 +f 1493//243 4405//243 436//243 +f 4405//5972 1489//5972 436//5972 +f 2334//5973 2367//5973 4406//5973 +f 436//5974 1489//5974 426//5974 +f 4252//5975 4245//5975 4253//5975 +f 4252//5976 4247//5976 4251//5976 +f 4249//5977 4247//5977 4268//5977 +f 4248//5978 4249//5978 4244//5978 +f 4403//5979 436//5979 426//5979 +f 4237//5980 4245//5980 4251//5980 +f 426//233 424//233 4402//233 +f 4253//5981 4245//5981 4244//5981 +f 4248//5982 4244//5982 4243//5982 +f 4246//5983 4240//5983 4242//5983 +f 4246//5984 4217//5984 4240//5984 +f 4243//5985 4241//5985 4239//5985 +f 4402//233 4403//233 426//233 +f 4406//5986 2367//5986 246//5986 +f 4239//5987 4237//5987 4248//5987 +f 4406//5988 246//5988 2335//5988 +f 4402//243 1499//243 4403//243 +f 2335//5989 2334//5989 4406//5989 +f 4213//5990 4236//5990 4238//5990 +f 4246//5991 4212//5991 4235//5991 +f 4217//5992 4246//5992 4235//5992 +f 4235//5993 4206//5993 4234//5993 +f 1227//5994 1262//5994 4274//5994 +f 4206//5995 4218//5995 4234//5995 +f 4240//5996 4217//5996 4214//5996 +f 160//5997 4023//5997 4015//5997 +f 1500//216 1499//216 4402//216 +f 4402//216 1338//216 1500//216 +f 1446//5998 1500//5998 1338//5998 +f 136//5999 858//5999 1430//5999 +f 2790//210 763//210 732//210 +f 4206//6000 4203//6000 4218//6000 +f 4399//6001 1445//6001 1338//6001 +f 732//6002 733//6002 767//6002 +f 4216//6003 4202//6003 4203//6003 +f 4202//6004 4216//6004 4197//6004 +f 4221//6005 4199//6005 4197//6005 +f 4228//6006 4198//6006 4199//6006 +f 4195//6007 4198//6007 4228//6007 +f 4188//6008 4195//6008 4228//6008 +f 444//6009 1446//6009 972//6009 +f 444//210 972//210 238//210 +f 4218//6010 4196//6010 4195//6010 +f 972//6011 1446//6011 2382//6011 +f 4222//6012 4195//6012 4188//6012 +f 4221//6013 4188//6013 4187//6013 +f 4225//6014 4187//6014 4230//6014 +f 972//210 2382//210 239//210 +f 239//6015 2382//6015 4398//6015 +f 4186//6016 4188//6016 4180//6016 +f 4182//6017 4230//6017 4187//6017 +f 4230//6018 4182//6018 4183//6018 +f 4398//209 2382//209 1202//209 +f 4233//6019 4183//6019 4178//6019 +f 697//233 1337//233 240//233 +f 4397//6020 1337//6020 697//6020 +f 4233//6021 4177//6021 4170//6021 +f 4181//6022 4182//6022 4186//6022 +f 4397//216 4399//216 1337//216 +f 4181//6023 4186//6023 4180//6023 +f 4179//6024 4180//6024 4229//6024 +f 4407//216 4399//216 4397//216 +f 4178//6025 4177//6025 4233//6025 +f 4397//6026 671//6026 4407//6026 +f 4170//6027 4177//6027 4172//6027 +f 4170//6028 4169//6028 4233//6028 +f 4167//6029 4169//6029 4171//6029 +f 4158//6030 4167//6030 4171//6030 +f 4399//6031 4407//6031 671//6031 +f 4232//6032 4168//6032 4166//6032 +f 671//6033 1445//6033 4399//6033 +f 4165//6034 4175//6034 4166//6034 +f 2334//6035 2327//6035 4400//6035 +f 2257//6036 2259//6036 2260//6036 +f 1305//6037 2315//6037 244//6037 +f 4162//6038 4172//6038 4163//6038 +f 4162//6039 4158//6039 4171//6039 +f 4161//6040 4160//6040 4163//6040 +f 2285//6041 2260//6041 2259//6041 +f 2327//6042 281//6042 4400//6042 +f 4157//6043 4167//6043 4158//6043 +f 314//6044 403//6044 219//6044 +f 4151//6045 4159//6045 4164//6045 +f 4159//6046 4158//6046 4164//6046 +f 4396//6047 314//6047 219//6047 +f 4151//6048 4164//6048 4155//6048 +f 4151//6049 4155//6049 4152//6049 +f 2377//6050 2677//6050 162//6050 +f 160//6051 4015//6051 161//6051 +f 4142//6052 4135//6052 4133//6052 +f 4142//6053 4139//6053 4135//6053 +f 4400//6054 281//6054 2353//6054 +f 4130//6055 4148//6055 4153//6055 +f 3876//6056 403//6056 314//6056 +f 3876//6057 4389//6057 1203//6057 +f 4151//6058 4150//6058 4159//6058 +f 236//216 496//216 337//216 +f 4149//6059 4147//6059 4155//6059 +f 337//204 1354//204 4398//204 +f 236//216 337//216 4398//216 +f 4154//6060 4146//6060 4143//6060 +f 1202//216 236//216 4398//216 +f 4133//6061 4144//6061 4142//6061 +f 4142//6062 4144//6062 4141//6062 +f 236//216 1202//216 1201//216 +f 4408//6063 1201//6063 1203//6063 +f 4137//6064 4135//6064 4139//6064 +f 4409//6065 4395//6065 4389//6065 +f 4395//612 367//612 4394//612 +f 4131//6066 4130//6066 4153//6066 +f 1397//6067 4393//6067 493//6067 +f 4145//6068 4130//6068 4129//6068 +f 4129//6069 4131//6069 4134//6069 +f 4129//6070 4136//6070 4128//6070 +f 4129//6071 4127//6071 4141//6071 +f 2315//6072 1305//6072 1304//6072 +f 2353//6073 1888//6073 2366//6073 +f 4115//6074 4140//6074 4127//6074 +f 4111//6075 4140//6075 4115//6075 +f 3594//6076 3635//6076 3076//6076 +f 4111//6077 4112//6077 4140//6077 +f 4393//6078 4394//6078 493//6078 +f 4393//6079 4395//6079 4394//6079 +f 4410//6080 1425//6080 4392//6080 +f 4138//6081 4110//6081 4108//6081 +f 1888//6082 2357//6082 2376//6082 +f 4108//6083 4107//6083 4126//6083 +f 4107//6084 4109//6084 4106//6084 +f 4411//6080 4410//6080 4392//6080 +f 1426//1300 4391//1300 4392//1300 +f 4106//6085 4101//6085 4103//6085 +f 3447//210 3367//210 4071//210 +f 2286//6086 2260//6086 2285//6086 +f 4102//6087 4101//6087 4118//6087 +f 1306//6088 2286//6088 2285//6088 +f 4102//6089 4118//6089 4121//6089 +f 4392//6090 4391//6090 4411//6090 +f 4099//6091 4121//6091 4120//6091 +f 4099//6092 4124//6092 4121//6092 +f 4124//6093 4099//6093 4090//6093 +f 4391//396 1536//396 4390//396 +f 4090//6094 4098//6094 4091//6094 +f 4390//6095 4411//6095 4391//6095 +f 4091//6096 4098//6096 4083//6096 +f 1505//6097 1367//6097 271//6097 +f 4390//6098 4410//6098 4411//6098 +f 4410//6098 4390//6098 1581//6098 +f 1581//6099 4389//6099 4410//6099 +f 4085//6100 4122//6100 4089//6100 +f 4389//6101 4395//6101 4410//6101 +f 1425//6102 4410//6102 4395//6102 +f 4395//6103 4393//6103 1425//6103 +f 4395//6104 4409//6104 336//6104 +f 4409//6105 3876//6105 336//6105 +f 4074//6106 4083//6106 4079//6106 +f 4095//6107 4074//6107 4076//6107 +f 4074//6108 4080//6108 4075//6108 +f 4409//6109 4389//6109 3876//6109 +f 4091//6110 4076//6110 4075//6110 +f 4389//6111 1610//6111 1203//6111 +f 4076//6112 4061//6112 4073//6112 +f 4061//6113 4058//6113 4073//6113 +f 785//210 4063//210 917//210 +f 4069//6114 4058//6114 4059//6114 +f 1610//6115 4388//6115 1203//6115 +f 236//216 1201//216 4408//216 +f 4065//6116 4096//6116 4069//6116 +f 4047//6117 4049//6117 4056//6117 +f 236//216 4408//216 4385//216 +f 1207//6118 2402//6118 2357//6118 +f 4094//6119 4062//6119 4061//6119 +f 4385//6120 4408//6120 4412//6120 +f 1793//6121 4385//6121 4386//6121 +f 4059//6122 4057//6122 4053//6122 +f 4062//6123 4056//6123 4058//6123 +f 4053//6124 4057//6124 4045//6124 +f 4385//6125 4412//6125 4386//6125 +f 4048//6126 4053//6126 4050//6126 +f 1640//6127 440//6127 4386//6127 +f 4048//6128 4047//6128 4068//6128 +f 4386//6129 4412//6129 1640//6129 +f 3284//6130 2357//6130 2365//6130 +f 4043//6131 4049//6131 4044//6131 +f 4056//6132 4049//6132 4043//6132 +f 4056//6133 4043//6133 4045//6133 +f 4042//6134 4054//6134 4045//6134 +f 4388//6135 1640//6135 4412//6135 +f 4054//6136 4042//6136 4040//6136 +f 4042//6137 4044//6137 4041//6137 +f 4041//6138 4044//6138 4037//6138 +f 4036//6139 4041//6139 4037//6139 +f 4039//6140 4054//6140 4040//6140 +f 4054//6141 4039//6141 4029//6141 +f 4038//6142 4054//6142 4029//6142 +f 4412//6143 4408//6143 4388//6143 +f 1207//6144 2357//6144 3284//6144 +f 4408//6145 1203//6145 4388//6145 +f 4036//6146 4026//6146 4033//6146 +f 3367//6147 3321//6147 3159//6147 +f 1501//6148 4030//6148 4033//6148 diff --git a/resources/meshes/ultimaker_s3_platform.obj b/resources/meshes/ultimaker_s3_platform.obj new file mode 100644 index 0000000000..102874e3ce --- /dev/null +++ b/resources/meshes/ultimaker_s3_platform.obj @@ -0,0 +1,8031 @@ +v -123.778900 125.518311 -6.907795 +v -123.797607 121.257324 -7.040688 +v -123.799995 148.500000 -7.099978 +v -123.717606 136.811584 -5.034970 +v -123.689514 138.383133 -4.495398 +v -123.668266 139.354584 -3.842515 +v -122.703438 141.946640 24.150135 +v -122.575264 148.500000 27.401415 +v -123.783394 124.357140 -6.943633 +v -123.726234 124.340729 -5.062126 +v -123.697433 125.535110 -4.980642 +v -123.785675 120.499229 -6.692233 +v -123.770744 119.995567 -6.264033 +v -123.746635 119.562019 -5.578156 +v -122.592422 144.782043 27.268299 +v -122.641235 142.334106 25.539190 +v -122.610489 143.238342 26.570990 +v -124.574562 148.499893 27.643673 +v -125.799995 148.500000 -7.099978 +v -125.669678 139.320984 -3.903402 +v -125.626015 140.234543 -2.776348 +v -125.701309 137.411987 -4.735400 +v -125.580254 140.791824 -1.255374 +v -125.799080 121.412453 -7.073972 +v -125.741447 119.467690 -5.298861 +v -125.757713 119.727654 -5.888924 +v -125.775909 120.135315 -6.409525 +v -125.789719 120.689224 -6.805356 +v -124.642860 142.050629 25.777826 +v -124.594284 143.561432 27.219770 +v 123.798607 121.412453 -7.073972 +v 123.788132 125.517899 -6.953136 +v 123.799988 148.500000 -7.099978 +v 123.717163 137.034836 -5.016074 +v 123.692192 139.056763 -4.202315 +v 123.646599 140.244583 -2.931049 +v 123.582825 140.991791 -1.183872 +v 122.593826 148.500000 27.307976 +v 123.789421 124.357445 -6.976461 +v 123.728081 124.340919 -5.083951 +v 123.784752 120.439659 -6.669250 +v 123.757408 119.709328 -5.885711 +v 123.693954 119.396904 -4.968602 +v 122.620445 143.305984 26.566259 +v 125.675797 139.279266 -4.012356 +v 125.799988 148.500000 -7.099978 +v 125.616295 141.045639 -1.834042 +v 125.715202 137.599335 -4.845753 +v 124.661346 141.976913 25.322332 +v 125.797928 121.257324 -7.040688 +v 124.561897 148.500000 27.746351 +v 125.749077 119.516815 -5.479757 +v 125.770805 119.995567 -6.264033 +v 125.785751 120.499229 -6.692233 +v 124.582901 144.000381 27.419159 +v -0.433627 123.545013 -20.299978 +v 0.433775 123.548721 -20.299927 +v -0.982988 123.291168 -20.299980 +v -0.515263 123.518570 -4.699982 +v 0.515225 123.518318 -4.699982 +v 0.852666 123.366661 -4.699982 +v 1.042472 123.247452 -20.299980 +v -0.885582 123.344009 -4.699983 +v 1.367260 122.864059 -4.700087 +v -1.392007 122.830261 -4.699985 +v -1.439614 122.718979 -20.299982 +v 1.447857 122.702782 -20.299982 +v -1.590363 122.235336 -20.299982 +v 1.590363 122.235336 -4.700104 +v 1.615159 121.988457 -20.299982 +v -1.615159 121.988457 -4.700000 +v -1.568210 121.630394 -20.299982 +v 1.568210 121.630394 -4.700117 +v 1.415175 121.231514 -20.299982 +v -1.415175 121.231514 -4.699983 +v -1.211469 120.935127 -20.299982 +v 1.211469 120.935127 -4.700011 +v 1.027053 120.767014 -20.299982 +v -1.027053 120.767014 -4.699983 +v -0.618134 120.519394 -20.299982 +v 0.618161 120.519402 -4.700011 +v 0.583915 120.505600 -20.299982 +v -0.583881 120.505585 -4.699983 +v -0.034710 120.392029 -20.299982 +v 0.034666 120.392029 -4.699994 +v 79.499992 119.352646 -4.699983 +v -79.254425 119.000000 -2.699982 +v -79.499992 119.352646 -4.699983 +v 79.254425 119.000000 -2.699982 +v -81.415436 118.385399 -20.299982 +v -91.745560 119.000000 -2.699982 +v -85.624176 118.184456 -19.176199 +v -103.474350 142.187607 -20.266941 +v -103.475227 148.500000 -20.298664 +v -103.480392 124.453445 -17.978180 +v -103.474327 123.506805 -20.292078 +v -103.474403 122.664955 -20.270054 +v -103.474792 124.088440 -20.131594 +v -103.475044 122.088608 -20.033234 +v -103.475266 141.522446 -19.940849 +v -103.475967 124.671646 -19.675062 +v -103.476196 121.580650 -19.567003 +v -103.476288 141.154083 -19.562185 +v -103.493393 137.350800 -13.004006 +v -103.480392 125.421677 -17.978180 +v -103.493301 128.535370 -13.037661 +v -103.478004 121.280525 -18.901505 +v -103.515190 120.520004 -4.699983 +v -103.515190 124.337555 -4.699982 +v -103.515190 125.537560 -4.699982 +v -103.494659 136.877258 -12.563451 +v -103.494568 128.974823 -12.602526 +v -103.515213 136.484894 -4.693568 +v -103.495224 136.221008 -12.316591 +v -103.495186 129.635452 -12.327147 +v -102.525032 148.500000 -20.297888 +v -102.525536 142.073929 -20.239792 +v -102.519592 124.453445 -17.978180 +v -102.525581 122.628830 -20.271664 +v -102.525604 123.763466 -20.253416 +v -102.524765 124.371239 -19.953941 +v -102.524879 122.047485 -20.000715 +v -102.524323 141.328033 -19.779812 +v -102.523941 121.623199 -19.623102 +v -102.523712 124.757019 -19.564121 +v -102.506699 137.377441 -13.037759 +v -102.519592 125.421677 -17.978180 +v -102.506599 128.562012 -13.003924 +v -102.522148 121.296043 -18.963028 +v -102.484795 120.520004 -4.699983 +v -102.484795 125.537560 -4.699982 +v -102.484795 124.337555 -4.699982 +v -102.505432 136.937958 -12.602538 +v -102.505318 129.035522 -12.563430 +v -102.484741 136.730774 -4.679422 +v -102.504807 136.277298 -12.327147 +v -102.504768 129.691742 -12.316591 +v -0.433668 146.687607 -20.266937 +v -0.515177 148.500000 -4.699978 +v -0.433495 148.500000 -20.299974 +v -0.444588 124.455215 -18.181370 +v -0.433768 124.064957 -20.248905 +v -0.435918 145.877045 -19.837273 +v -0.435678 124.566193 -19.882954 +v -0.444588 125.419907 -18.181370 +v -0.471626 128.552765 -13.017731 +v -0.471600 141.867615 -13.022640 +v -0.515177 125.537560 -4.699982 +v -0.515177 124.337555 -4.699982 +v -0.474002 141.377243 -12.563434 +v -0.473797 128.974823 -12.602527 +v -0.475297 140.720963 -12.316586 +v -0.475242 129.635468 -12.327146 +v -0.515234 136.579285 -4.685525 +v -0.515633 137.447144 -4.525631 +v -0.516624 138.358353 -4.147129 +v -0.518110 139.165298 -3.579410 +v -0.520580 139.988434 -2.636411 +v -0.523477 140.490219 -1.529178 +v -0.525686 140.661316 -0.685408 +v -0.600000 148.500000 27.700026 +v -0.590811 141.551880 24.189827 +v -0.599979 145.231857 27.691992 +v -0.593405 141.792160 25.181160 +v -0.596356 142.471283 26.308067 +v -0.598573 143.478134 27.154871 +v -0.599649 144.477005 27.566135 +v -103.515526 137.332901 -4.558472 +v -103.516525 138.261337 -4.200128 +v -103.517899 139.088470 -3.647146 +v -103.519791 139.770004 -2.930894 +v -103.522041 140.282242 -2.077142 +v -103.524940 140.629425 -0.990034 +v -103.599991 148.500000 27.700026 +v -103.590683 141.546494 24.151115 +v -103.599960 145.199188 27.689819 +v -103.593422 141.790009 25.175095 +v -103.595825 142.327484 26.112658 +v -103.597527 142.932861 26.753635 +v -103.598778 143.627060 27.224945 +v -103.599541 144.403076 27.544779 +v -102.399994 148.500000 27.700026 +v -102.400040 145.173416 27.687176 +v -102.482506 138.898361 -3.811198 +v -102.484032 137.831848 -4.394243 +v -102.479683 139.919907 -2.740244 +v -102.476723 140.463562 -1.612636 +v -102.474434 140.653610 -0.750987 +v -102.409355 141.545029 24.131550 +v -102.406822 141.752808 25.077885 +v -102.403854 142.400620 26.222998 +v -102.401550 143.383789 27.097219 +v -102.400444 144.402069 27.545050 +v -79.834412 121.169449 -4.701422 +v 0.515177 124.337555 -4.699982 +v 102.484795 124.337555 -4.699982 +v 102.484795 120.520004 -4.699983 +v 93.792580 120.504227 -4.700222 +v -79.608337 120.869682 -4.700410 +v 79.810974 121.136620 -4.700951 +v -93.169708 120.103333 -4.700118 +v -93.660034 120.477562 -4.700276 +v 93.412888 120.339523 -4.700282 +v 93.155975 120.065941 -4.700138 +v -91.199013 121.118652 -4.704729 +v 79.538834 120.726501 -4.701214 +v -91.452232 120.752220 -4.700679 +v 92.975784 119.598564 -4.700064 +v -92.746597 119.383522 -4.699994 +v -91.499992 119.352646 -4.699983 +v -92.984299 119.616989 -4.699931 +v 91.499992 119.352646 -4.699983 +v 92.712402 119.373917 -4.699970 +v -123.704918 119.406097 -5.006795 +v -125.673828 119.342697 -4.643714 +v -125.448242 119.233131 -4.022115 +v -124.974792 119.122421 -3.394266 +v -123.424431 119.356491 -4.721560 +v -124.216087 119.032242 -2.882760 +v -123.431183 119.000702 -2.702945 +v -118.286034 119.008522 -2.700004 +v -117.446686 120.258507 -2.699887 +v -117.813896 119.859451 -2.699959 +v -117.069260 120.405914 -2.699887 +v -93.707397 120.315140 -2.699938 +v 117.748909 119.959366 -2.700021 +v 117.254326 120.378242 -2.699966 +v 93.497986 120.228104 -2.699977 +v 93.940285 120.408371 -2.699966 +v 93.169945 119.803787 -2.699978 +v 93.020607 119.182770 -2.699950 +v 92.760284 119.016273 -2.699984 +v -93.166580 119.788689 -2.699978 +v 117.945099 119.261238 -2.700148 +v -117.912086 119.353401 -2.700000 +v -93.062637 119.269722 -2.699976 +v -118.051476 119.129562 -2.700031 +v 118.218620 119.016579 -2.699992 +v -92.781548 119.022514 -2.700027 +v 91.745560 119.000000 -2.699982 +v -117.709160 120.253014 -4.700198 +v -123.431557 124.337654 -4.710291 +v -117.207901 120.504120 -4.700198 +v -118.008156 119.644287 -4.700133 +v -118.279015 119.376610 -4.700014 +v -122.425484 139.558868 24.168488 +v -123.267197 138.666763 -0.749820 +v -122.301895 141.552841 24.144461 +v -123.166824 140.666580 -0.688533 +v 0.471611 128.547089 -13.020448 +v 0.471618 141.861221 -13.019171 +v 0.433495 148.500000 -20.299974 +v 0.433810 146.573929 -20.239788 +v 0.433649 123.989830 -20.270569 +v -105.217323 124.368568 -8.253350 +v -105.249428 125.507248 -8.172711 +v -107.405624 125.520935 -6.604790 +v -105.618233 125.512680 -7.550677 +v -106.104141 125.516853 -7.073968 +v -106.817802 125.520012 -6.711080 +v -123.480270 125.520760 -6.624343 +v -123.406464 125.537415 -4.718421 +v -105.742447 124.360977 -7.383870 +v -106.400261 124.356720 -6.894501 +v -107.074173 124.354500 -6.640208 +v -123.515190 124.354416 -6.630264 +v -2.375973 124.360718 -7.353566 +v -2.408108 125.515121 -7.272839 +v -4.528426 124.346367 -5.707678 +v -32.720348 125.528694 -5.716523 +v -72.588997 124.376701 -9.184699 +v -72.738953 125.498367 -9.191535 +v -32.605324 124.346390 -5.711790 +v -99.052933 124.376877 -9.204794 +v -101.241241 125.483864 -10.853795 +v -101.291100 124.393028 -11.055563 +v -100.869537 125.489670 -10.188559 +v -100.307999 125.494530 -9.630728 +v -99.381577 125.497948 -9.239424 +v -2.954309 125.522476 -6.428508 +v -3.600958 125.526459 -5.972470 +v -4.320638 125.528648 -5.721797 +v -101.062790 124.387939 -10.473304 +v -100.462624 124.381599 -9.746922 +v -99.640572 124.377792 -9.311066 +v -2.747823 124.354912 -6.688328 +v -3.208852 124.350784 -6.214532 +v -3.915388 124.347427 -5.831334 +v -89.313148 120.223473 -20.299982 +v -81.740738 120.232155 -20.299982 +v -79.535530 120.703430 -4.701630 +v -122.519623 145.274750 27.479473 +v -122.273773 148.500000 27.681963 +v -122.347404 145.208221 27.630726 +v -122.180847 145.165298 27.681499 +v -122.631172 141.832413 24.514389 +v -122.505241 141.634384 24.129721 +v -122.530212 141.848465 24.917847 +v -122.334938 141.697495 24.840992 +v -122.464088 142.034149 25.464901 +v -122.246231 142.049393 25.683220 +v -122.603767 142.641693 26.063051 +v -122.442970 142.363556 26.014219 +v -122.244881 142.574097 26.401011 +v -122.466408 142.967987 26.623608 +v -122.262245 143.054642 26.831783 +v -122.556091 143.741684 26.997967 +v -122.425652 143.627197 27.114178 +v -122.233841 143.627792 27.220556 +v -122.514977 144.514893 27.362223 +v -122.383064 144.425903 27.467810 +v -122.213562 144.462509 27.554651 +v -123.375854 140.752487 -0.688539 +v -123.655510 137.488007 -4.755487 +v -123.609016 136.548401 -4.852862 +v -123.383240 136.545639 -4.703648 +v -123.391365 137.156616 -4.611506 +v -123.532509 137.921127 -4.468591 +v -123.323792 137.886734 -4.379573 +v -123.500740 138.855682 -3.947949 +v -123.321648 138.547806 -4.038620 +v -123.302940 139.163986 -3.592607 +v -123.497841 139.404678 -3.494964 +v -123.637909 140.299393 -2.813444 +v -123.511017 139.939545 -2.934212 +v -123.304268 139.674911 -3.058841 +v -123.295609 139.965225 -2.664153 +v -123.573151 140.585693 -2.048277 +v -123.431107 140.402679 -2.041083 +v -123.232658 140.327255 -1.991789 +v -123.578583 141.006042 -1.078155 +v -123.492302 140.825912 -1.005560 +v -123.263428 140.566772 -1.297280 +v -91.125710 120.975777 -4.795104 +v -79.876404 121.030540 -4.759994 +v 0.473797 141.437927 -12.602518 +v 0.475241 140.777252 -12.327140 +v 0.474002 129.035522 -12.563435 +v 0.475297 129.691742 -12.316590 +v 0.436371 145.794769 -19.750616 +v 0.435401 124.520126 -19.935883 +v -79.575577 120.511330 -5.036986 +v -79.787041 120.723289 -5.103093 +v -79.954048 120.788910 -5.085986 +v -79.906380 120.868362 -4.904600 +v -79.703827 120.819626 -4.834780 +v -81.443214 119.969955 -20.299982 +v -91.447578 120.469299 -4.982037 +v -91.320137 120.660995 -5.030531 +v -91.178352 120.757484 -5.057798 +v -91.028969 120.794846 -5.059298 +v -91.173988 120.860252 -4.891590 +v -89.568253 119.911949 -20.299982 +v 89.584549 118.385399 -20.299982 +v 81.415436 118.385399 -20.299982 +v 103.474983 148.500000 -20.297888 +v 103.474457 142.073929 -20.239792 +v 103.480392 124.453445 -17.978180 +v 103.474403 122.628830 -20.271664 +v 103.474388 123.763466 -20.253416 +v 103.475227 124.371239 -19.953941 +v 103.475105 122.047485 -20.000715 +v 103.475670 141.328033 -19.779812 +v 103.476051 121.623199 -19.623102 +v 103.476280 124.757019 -19.564121 +v 103.493301 137.377441 -13.037759 +v 103.480392 125.421677 -17.978180 +v 103.493393 128.562012 -13.003924 +v 103.477844 121.296043 -18.963028 +v 103.515190 120.520004 -4.699983 +v 103.515190 125.537560 -4.699982 +v 103.515190 124.337555 -4.699982 +v 103.494553 136.937958 -12.602537 +v 103.494675 129.035522 -12.563435 +v 103.515221 136.556458 -4.686877 +v 103.495178 136.277298 -12.327147 +v 103.495216 129.691742 -12.316590 +v 102.525635 142.187607 -20.266941 +v 102.525009 148.500000 -20.298645 +v 102.519592 124.453445 -17.978180 +v 102.525665 123.506805 -20.292078 +v 102.525597 122.664955 -20.270054 +v 102.525200 124.088440 -20.131594 +v 102.524956 122.088608 -20.033234 +v 102.524719 141.522446 -19.940849 +v 102.524025 124.671646 -19.675062 +v 102.523796 121.580650 -19.567003 +v 102.523705 141.154083 -19.562185 +v 102.506599 137.350800 -13.004006 +v 102.519592 125.421677 -17.978180 +v 102.506691 128.535370 -13.037661 +v 102.521988 121.280525 -18.901505 +v 102.484795 125.537560 -4.699982 +v 102.505325 136.877258 -12.563450 +v 102.505424 128.974823 -12.602526 +v 102.484764 136.579285 -4.685526 +v 102.504768 136.221008 -12.316591 +v 102.504799 129.635468 -12.327146 +v 0.515177 148.500000 -4.699978 +v 0.444588 124.455215 -18.181370 +v 0.444588 125.419907 -18.181370 +v 0.515177 125.537560 -4.699982 +v 0.515251 136.730774 -4.679422 +v 0.517503 138.898361 -3.811198 +v 0.515976 137.831848 -4.394243 +v 0.520308 139.919907 -2.740244 +v 0.523259 140.463562 -1.612636 +v 0.525514 140.653610 -0.750987 +v 0.590658 141.545029 24.131548 +v 0.600000 148.500000 27.700026 +v 0.599966 145.173416 27.687176 +v 0.593135 141.752808 25.077885 +v 0.596134 142.400620 26.222996 +v 0.598422 143.383789 27.097219 +v 0.599594 144.402069 27.545050 +v 103.515594 137.360123 -4.550949 +v 103.516769 138.489334 -4.085704 +v 103.518837 139.459930 -3.295880 +v 103.523277 140.465225 -1.610781 +v 103.520943 140.056824 -2.505926 +v 103.525673 140.660690 -0.708934 +v 103.590767 141.551147 24.181124 +v 103.599991 148.500000 27.700026 +v 103.599915 145.000656 27.674658 +v 103.592842 141.718307 24.947397 +v 103.595398 142.199921 25.951372 +v 103.597939 143.107315 26.905979 +v 103.599251 144.059204 27.427553 +v 102.399994 148.500000 27.700026 +v 102.400024 145.231857 27.691992 +v 102.484329 137.447144 -4.525632 +v 102.483376 138.358353 -4.147129 +v 102.481895 139.165298 -3.579410 +v 102.479408 139.988434 -2.636411 +v 102.476501 140.490219 -1.529178 +v 102.474258 140.661316 -0.685408 +v 102.409203 141.551880 24.189827 +v 102.406548 141.792160 25.181158 +v 102.403633 142.471283 26.308067 +v 102.401405 143.478134 27.154871 +v 102.400391 144.477005 27.566135 +v 123.433495 125.537300 -4.729113 +v 125.643623 119.318535 -4.506390 +v 125.379059 119.213570 -3.911189 +v 124.883949 119.105827 -3.300157 +v 123.382149 119.355118 -4.712761 +v 124.090012 119.025063 -2.842031 +v 123.427376 119.000595 -2.702304 +v 118.395432 119.356400 -4.699981 +v 123.307671 124.337578 -4.701297 +v 117.828018 120.102058 -4.700052 +v 117.358292 120.474388 -4.700041 +v 118.001266 119.663490 -4.700052 +v 118.150871 119.454453 -4.699969 +v 122.384254 141.562973 24.112606 +v 123.168343 140.665909 -0.692286 +v 105.217323 125.506546 -8.253350 +v 105.249428 124.367867 -8.172711 +v 107.405624 124.354187 -6.604791 +v 105.742447 125.514137 -7.383870 +v 106.400261 125.518417 -6.894500 +v 107.074173 125.520630 -6.640207 +v 123.515182 125.520721 -6.630262 +v 123.702591 125.534996 -4.994817 +v 105.618233 124.362442 -7.550677 +v 106.104141 124.358284 -7.073968 +v 106.817802 124.355118 -6.711080 +v 123.571121 124.354660 -6.658079 +v 123.562859 124.338539 -4.811217 +v 2.375973 125.514412 -7.353565 +v 2.408108 124.360016 -7.272839 +v 4.528426 125.528778 -5.707678 +v 72.738953 124.376762 -9.191535 +v 32.720348 124.346436 -5.716524 +v 72.588997 125.498428 -9.184699 +v 32.605324 125.528740 -5.711789 +v 99.052933 125.498253 -9.204794 +v 101.241241 124.391258 -10.853795 +v 101.291100 125.482101 -11.055563 +v 101.062790 125.487183 -10.473304 +v 100.462624 125.493523 -9.746922 +v 99.640572 125.497322 -9.311066 +v 2.747823 125.520210 -6.688327 +v 3.208852 125.524345 -6.214532 +v 3.915388 125.527695 -5.831334 +v 100.869537 124.385468 -10.188559 +v 100.307999 124.380592 -9.630728 +v 99.381577 124.377174 -9.239424 +v 2.954309 124.352646 -6.428508 +v 3.600958 124.348671 -5.972470 +v 4.320638 124.346481 -5.721798 +v 81.762947 120.242188 -20.299982 +v 89.201332 120.245956 -20.299982 +v 122.251465 141.701035 24.888420 +v 122.508278 145.188385 27.486597 +v 122.470367 148.500000 27.549826 +v 122.366234 145.230942 27.620163 +v 122.229202 148.500000 27.688200 +v 122.180374 145.198975 27.685953 +v 122.697273 141.976990 24.321791 +v 122.632164 141.763535 24.117718 +v 122.596687 141.885773 24.814671 +v 122.416397 141.747147 24.870359 +v 122.641075 142.277542 25.454687 +v 122.476112 142.142380 25.642162 +v 122.282471 141.961472 25.499708 +v 122.264717 142.299561 26.062757 +v 122.580383 142.777130 26.257877 +v 122.443611 142.632797 26.330292 +v 122.230614 142.882843 26.703127 +v 122.535507 143.327255 26.793961 +v 122.317810 143.269730 26.975847 +v 122.406235 143.669785 27.149931 +v 122.544563 144.090820 27.182377 +v 122.206291 143.998932 27.397743 +v 122.590134 144.857300 27.287502 +v 122.416550 144.448227 27.453918 +v 122.218788 144.639587 27.592222 +v 123.345612 140.730438 -0.721902 +v 123.474869 140.854660 -0.685640 +v 123.630150 136.564789 -4.879474 +v 123.603477 137.452484 -4.689911 +v 123.492058 136.538010 -4.756981 +v 123.655388 138.464218 -4.388837 +v 123.310623 136.544952 -4.692371 +v 123.335014 137.155060 -4.601349 +v 123.383362 137.637024 -4.476795 +v 123.513191 138.393173 -4.236556 +v 123.317856 138.345261 -4.163475 +v 123.598434 139.094406 -3.882812 +v 123.458488 139.207779 -3.643221 +v 123.293419 139.158936 -3.594824 +v 123.586426 139.653931 -3.393130 +v 123.355507 139.666656 -3.085800 +v 123.545952 140.253998 -2.546889 +v 123.322617 139.959808 -2.682391 +v 123.356804 140.371002 -2.003010 +v 123.190422 140.325668 -1.985545 +v 123.513893 140.669449 -1.611584 +v 123.295074 140.569702 -1.313683 +v 79.821266 120.930267 -4.819538 +v 91.129601 120.930992 -4.826019 +v 79.872467 121.050995 -4.746078 +v 79.544685 120.408348 -5.006674 +v 79.624199 120.591789 -5.030023 +v 79.766312 120.714760 -5.082232 +v 79.935730 120.787437 -5.073254 +v 79.841743 120.817261 -4.951159 +v 79.652245 120.782875 -4.821328 +v 81.457191 119.992241 -20.299982 +v 91.423058 120.504257 -5.015013 +v 91.498421 120.467331 -4.700700 +v 91.309555 120.686195 -4.990452 +v 91.108566 120.782196 -5.066273 +v 91.445183 120.740845 -4.701596 +v 91.328575 120.949066 -4.705514 +v 91.160637 121.148323 -4.703731 +v 89.463188 120.098969 -20.299982 +v 89.580627 119.838661 -20.299982 +v -123.407379 137.293488 -2.609838 +v -123.377846 137.884109 -2.359198 +v 123.394051 137.895630 -2.344923 +v 123.360443 138.171631 -2.102092 +v -123.352135 138.263199 -1.996058 +v 123.341820 138.382828 -1.802064 +v -123.322937 138.486023 -1.582113 +v 123.304993 138.564682 -1.354972 +v 123.285324 138.666229 -0.785798 +v 122.320786 139.637802 24.894356 +v -122.375397 139.753174 25.500620 +v 122.378113 139.809113 25.718523 +v -122.439117 140.089523 26.590048 +v 122.336189 140.208115 26.865940 +v -122.346626 140.496429 27.405722 +v 122.311852 140.569565 27.523333 +v 122.326950 141.501526 28.527752 +v 122.317314 142.142807 28.932178 +v -122.296257 142.669312 29.180302 +v -122.293144 143.872208 29.526834 +v 122.312408 143.916626 29.529678 +v -122.304489 145.328064 29.682253 +v 122.295372 145.270447 29.681156 +v 125.622047 137.393356 -4.406818 +v 125.427315 137.003799 -3.977706 +v 125.136688 136.972733 -3.553803 +v 124.777138 136.933609 -3.209860 +v 124.342026 136.877319 -2.941798 +v 123.860962 136.858032 -2.763032 +v 93.673721 136.838669 -2.695724 +v 125.412987 137.890060 -3.768965 +v 125.592934 139.054260 -3.717830 +v 125.411697 138.618195 -3.448086 +v 125.138290 137.760635 -3.388522 +v 125.126045 138.318420 -3.129252 +v 125.393555 139.192261 -2.948785 +v 124.770248 137.641754 -3.052038 +v 125.443268 139.600494 -2.605448 +v 125.617294 140.314529 -2.611781 +v 124.658913 138.083069 -2.758296 +v 125.110458 138.777206 -2.764651 +v 124.337341 137.549057 -2.793803 +v 124.741508 138.514954 -2.516759 +v 123.857971 137.485962 -2.624840 +v 124.111916 137.907623 -2.527047 +v 125.089340 139.121292 -2.323090 +v 124.307259 138.312881 -2.327080 +v 123.476059 137.548721 -2.532204 +v 123.833336 138.023605 -2.341359 +v 125.456551 140.063004 -1.876462 +v 124.720856 138.808884 -2.139570 +v 125.568520 140.672531 -1.428420 +v 123.817833 138.265823 -2.106691 +v 125.204010 139.613495 -1.706880 +v 124.284439 138.565689 -2.001396 +v 124.892387 139.189102 -1.739274 +v 123.796188 138.456146 -1.824320 +v 124.643936 139.048294 -1.519520 +v 124.266586 138.760452 -1.597831 +v 123.768311 138.640778 -1.365706 +v 125.023682 139.555756 -0.995835 +v 125.359573 140.106445 -0.866199 +v 124.192146 138.896652 -0.970977 +v 124.795959 139.342194 -0.767632 +v 124.452370 139.064514 -0.781275 +v 123.738312 138.744003 -0.773159 +v 122.456535 139.538757 23.776522 +v 122.867111 139.615036 23.863029 +v 124.628220 141.354202 23.900852 +v 124.434921 140.890533 24.048855 +v 123.582428 139.955322 24.132860 +v 124.079620 140.377197 24.135508 +v 123.015526 139.699249 24.424398 +v 124.581261 141.659607 25.565178 +v 124.487083 141.334747 25.508059 +v 124.267097 140.868286 25.384329 +v 123.924118 140.402847 25.208706 +v 123.403564 140.015030 25.278458 +v 122.821014 139.841125 25.531425 +v 123.855255 140.549164 25.987509 +v 123.494743 140.258942 25.960516 +v 123.043427 140.111237 26.220205 +v 122.473808 139.985199 26.296606 +v 124.215721 141.232635 26.512444 +v 124.471336 142.132599 26.953270 +v 123.930656 141.019348 26.837170 +v 124.294662 141.608459 26.895813 +v 123.680878 140.765152 26.839380 +v 124.593246 142.359512 26.581017 +v 123.260818 140.553040 27.005692 +v 122.785019 140.388184 27.078362 +v 124.482010 142.943665 27.495399 +v 123.861618 141.381592 27.467588 +v 124.199135 142.034012 27.551786 +v 123.473534 141.165756 27.683304 +v 124.554970 145.786285 27.698719 +v 123.016823 140.991241 27.830372 +v 122.469925 140.920868 27.965439 +v 123.809143 141.759766 27.920452 +v 124.419548 144.115250 28.011969 +v 124.189926 142.727173 28.020348 +v 124.401375 145.710587 28.185059 +v 123.860748 142.377106 28.271479 +v 123.237648 141.653595 28.326473 +v 124.176888 143.744431 28.382067 +v 122.763512 141.429550 28.369808 +v 123.365173 142.216202 28.614485 +v 124.150536 145.038849 28.615545 +v 123.854675 142.971497 28.543447 +v 123.850807 143.650772 28.759430 +v 122.756363 142.031784 28.792459 +v 123.446075 143.139404 28.951933 +v 123.724228 144.447128 29.028765 +v 123.740341 145.466797 29.087597 +v 122.988899 142.758896 29.050262 +v 122.395576 142.835205 29.236187 +v 122.985512 143.380905 29.251104 +v 123.214592 144.323212 29.342007 +v 122.719818 143.560654 29.386080 +v 123.234299 145.495361 29.423876 +v 122.738457 144.520920 29.542765 +v 122.750641 145.493652 29.609381 +v 124.111443 148.500000 28.709991 +v 123.346680 148.500000 29.387154 +v 122.489700 148.500000 29.677999 +v -125.540283 136.975204 -4.216683 +v -125.295456 136.955414 -3.765795 +v -124.970253 136.944595 -3.380332 +v -124.568878 136.906433 -3.066399 +v -124.106026 136.697525 -2.846749 +v -93.508949 136.714417 -2.702255 +v -125.619156 138.140671 -4.216978 +v -125.415276 137.812500 -3.798562 +v -125.453728 139.034317 -3.244794 +v -125.408295 138.466171 -3.519937 +v -125.136040 137.743484 -3.391164 +v -125.126595 138.277313 -3.151920 +v -124.768684 137.630325 -3.054291 +v -125.031975 138.654419 -2.744327 +v -124.758110 138.091690 -2.845890 +v -125.483101 139.647095 -2.731160 +v -124.340736 137.536896 -2.799740 +v -123.946663 137.298996 -2.703526 +v -124.324417 137.945999 -2.612323 +v -125.234558 139.274826 -2.443251 +v -124.533615 138.367691 -2.451627 +v -123.852730 137.755737 -2.512392 +v -124.826668 138.856049 -2.217199 +v -125.470787 140.297958 -1.387183 +v -123.981506 138.123474 -2.310292 +v -125.351257 139.772217 -1.954677 +v -124.288055 138.548676 -2.031816 +v -123.819916 138.283340 -2.089251 +v -125.063866 139.364243 -1.807904 +v -124.700211 139.021255 -1.698278 +v -123.783676 138.538071 -1.664282 +v -124.192635 138.765411 -1.484308 +v -125.232521 139.841385 -1.031264 +v -124.861710 139.379822 -0.979162 +v -124.476349 139.058273 -0.989736 +v -123.418312 138.614044 -1.162055 +v -124.235863 138.940552 -0.757408 +v -123.747108 138.748596 -0.755508 +v -124.612442 141.388062 24.328829 +v -122.880562 139.624496 23.953104 +v -124.423798 140.921783 24.422092 +v -123.368980 139.816071 23.960115 +v -124.137665 140.489929 24.467207 +v -123.769798 140.125137 24.480099 +v -123.326233 139.915192 24.923344 +v -122.839348 139.727905 24.932682 +v -124.489555 141.385712 25.593828 +v -124.257805 140.962555 25.717773 +v -123.931969 140.574707 25.815039 +v -123.523697 140.251282 25.883419 +v -123.060783 140.014969 25.905210 +v -122.690475 139.908997 25.919983 +v -124.552956 142.034744 26.446108 +v -124.452446 141.928833 26.820757 +v -124.228226 141.368011 26.722179 +v -123.910194 140.820038 26.486565 +v -123.500839 140.518845 26.616425 +v -123.038200 140.294128 26.686176 +v -123.797333 141.030548 27.112125 +v -124.522018 142.863022 27.291945 +v -123.260620 140.735687 27.307905 +v -122.781715 140.574860 27.393860 +v -124.221451 141.861542 27.348864 +v -124.326576 142.641953 27.717220 +v -123.879845 141.510590 27.581753 +v -124.501427 144.089188 27.780247 +v -123.963768 142.016403 27.926386 +v -123.470383 141.259216 27.788452 +v -123.012489 141.083282 27.930904 +v -124.337700 143.846268 28.147188 +v -122.450294 141.052216 28.113037 +v -123.959610 142.758896 28.352013 +v -123.465591 141.756271 28.242928 +v -124.393227 145.872498 28.207176 +v -123.004631 141.587814 28.402418 +v -124.160797 143.693024 28.400230 +v -123.568329 142.305435 28.510359 +v -124.182854 145.190353 28.576385 +v -122.436699 141.598221 28.585018 +v -123.833664 143.594376 28.760855 +v -123.453369 142.728134 28.789173 +v -122.992256 142.143723 28.764185 +v -123.924301 145.482849 28.914623 +v -123.750748 144.417114 28.996668 +v -122.430557 142.042404 28.870070 +v -123.372566 143.384552 29.072205 +v -122.850250 142.604996 29.042976 +v -123.221390 144.146332 29.312075 +v -123.520622 145.553665 29.257572 +v -122.735435 143.204330 29.285692 +v -123.216530 145.294479 29.426373 +v -122.732513 144.099335 29.489393 +v -122.794724 145.380280 29.597078 +v -124.303406 148.500000 28.401031 +v -123.842216 148.500000 29.003263 +v -123.223381 148.500000 29.443645 +v -122.458557 148.500000 29.684410 +v -123.848862 116.490852 -5.899983 +v -123.918678 116.485359 -4.399983 +v -124.751320 116.347321 -5.899983 +v -124.840981 116.323296 -4.399983 +v -125.731331 115.981438 -5.899983 +v -125.814034 115.939293 -4.399983 +v -126.807808 115.272736 -5.899984 +v -126.686714 115.361000 -4.399984 +v -127.420036 114.613716 -4.399984 +v -127.811707 114.065964 -5.899984 +v -127.981415 113.731354 -4.399984 +v -128.323303 112.840874 -5.899984 +v -128.347336 112.751183 -4.399984 +v -128.485352 111.918663 -5.899984 +v -128.490829 111.848846 -4.399984 +v -128.490829 -107.848816 -5.900032 +v -128.485352 -107.918633 -4.400032 +v -128.347351 -108.751183 -5.900032 +v -128.323303 -108.840874 -4.400032 +v -127.981392 -109.731384 -5.900032 +v -127.811676 -110.066010 -4.400032 +v -127.420097 -110.613640 -5.900033 +v -126.807747 -111.272789 -4.400032 +v -126.686729 -111.360992 -5.900033 +v -125.814201 -111.939201 -5.900033 +v -125.731499 -111.981346 -4.400032 +v -124.841278 -112.323212 -5.900033 +v -124.751602 -112.347244 -4.400032 +v -123.918594 -112.485367 -5.900033 +v -123.848831 -112.490852 -4.400032 +v 123.848808 -112.490852 -5.900033 +v 123.918579 -112.485367 -4.400032 +v 128.490829 -107.848816 -4.400032 +v 128.485352 -107.918633 -5.900032 +v 128.347351 -108.751183 -4.400032 +v 128.323303 -108.840874 -5.900032 +v 127.981392 -109.731384 -4.400032 +v 127.811684 -110.066002 -5.900033 +v 127.420074 -110.613678 -4.400032 +v 126.807777 -111.272774 -5.900033 +v 126.686745 -111.360992 -4.400032 +v 125.814232 -111.939186 -4.400032 +v 125.731522 -111.981331 -5.900033 +v 124.841293 -112.323204 -4.400032 +v 124.751617 -112.347244 -5.900033 +v 128.485352 111.918602 -4.399984 +v 128.490829 111.848747 -5.899984 +v 123.848846 116.490852 -4.399983 +v 123.918602 116.485367 -5.899983 +v 124.751381 116.347305 -4.399983 +v 124.841072 116.323265 -5.899983 +v 125.731339 115.981438 -4.399983 +v 125.814034 115.939293 -5.899983 +v 126.807838 115.272720 -4.399984 +v 126.686729 115.360992 -5.899984 +v 127.420013 114.613754 -5.899984 +v 127.811707 114.065948 -4.399984 +v 127.981415 113.731354 -5.899984 +v 128.323303 112.840874 -4.399984 +v 128.347336 112.751228 -5.899984 +v 122.500000 148.500000 -7.299976 +v 125.490013 148.500000 -18.680765 +v 125.500000 148.500000 -7.299976 +v 120.811798 148.500000 -20.287933 +v 120.779869 148.500000 -23.297600 +v -121.111626 148.500000 -23.280685 +v -120.824448 148.500000 -20.292238 +v 121.750755 148.500000 -23.147449 +v 122.731339 148.500000 -22.781443 +v 121.667557 148.500000 -19.956633 +v 123.614044 148.500000 -22.219763 +v 124.361305 148.500000 -21.486303 +v 122.276192 148.500000 -19.248241 +v 124.939240 148.500000 -20.614082 +v 125.323212 148.500000 -19.641190 +v 122.494461 148.500000 -18.529585 +v -125.499992 148.500000 -7.299976 +v -125.493134 148.500000 -18.627178 +v -122.499992 148.500000 -7.299976 +v -120.745895 -97.595192 -20.294550 +v 119.418747 -98.242973 -20.299652 +v 119.896957 -97.739487 -20.299604 +v 120.501480 -97.596779 -20.307573 +v 119.292007 -98.823532 -20.300013 +v -120.075317 -97.668686 -20.300041 +v 119.775055 -99.776619 -20.300028 +v 120.271324 -99.983147 -20.300028 +v 119.414673 -99.332115 -20.300026 +v 130.999985 -112.887878 -20.296299 +v -119.685028 -97.912460 -20.300026 +v -119.414665 -98.267868 -20.300026 +v -119.292000 -98.776657 -20.300026 +v -119.393944 -99.286797 -20.300026 +v -119.738312 -99.745422 -20.300028 +v -130.999985 -112.764626 -20.296947 +v -120.274551 -99.987526 -20.300028 +v -124.516418 -100.047935 -20.300028 +v -130.986267 -106.976845 -20.300028 +v 124.014038 -100.012764 -20.300028 +v 130.951736 -106.481750 -20.300028 +v 130.485199 -104.743752 -20.300028 +v 129.995178 -103.750000 -20.300028 +v 125.376137 -100.228836 -20.300028 +v -126.256004 -100.514709 -20.300028 +v 126.550491 -100.648407 -20.300028 +v -127.249992 -101.004791 -20.300028 +v 127.530861 -101.164200 -20.300028 +v -130.771271 -105.624184 -20.300028 +v -130.222168 -104.152985 -20.300028 +v -128.280045 -101.708504 -20.300028 +v 129.291534 -102.720024 -20.300028 +v 128.518478 -101.926392 -20.300028 +v -129.379150 -102.828224 -20.300028 +v -120.257370 -97.618202 -23.303097 +v -119.798943 -97.815338 -23.300028 +v 120.304253 -97.609634 -23.302044 +v -119.782234 -99.778496 -23.300261 +v -119.413895 -99.329964 -23.300028 +v -119.292007 -98.823547 -23.300028 +v -119.418739 -98.242981 -23.300028 +v -130.999985 -112.941383 -23.297308 +v -120.271317 -99.983147 -23.300028 +v 119.775101 -97.823364 -23.300026 +v 119.414658 -98.267891 -23.300026 +v 119.292000 -98.776649 -23.300026 +v 119.418793 -99.357086 -23.300026 +v 130.999985 -112.912247 -23.295227 +v 119.798965 -99.784683 -23.300028 +v 120.274582 -99.987534 -23.300028 +v -124.014038 -100.012764 -23.300028 +v 124.516403 -100.047935 -23.300028 +v 130.535095 -104.873734 -23.300028 +v 130.968750 -106.630760 -23.300028 +v 129.995178 -103.750000 -23.300028 +v -125.376114 -100.228828 -23.300028 +v 126.255981 -100.514694 -23.300028 +v -126.550491 -100.648407 -23.300028 +v -127.530922 -101.164246 -23.300028 +v 127.250000 -101.004791 -23.300028 +v -130.951736 -106.481728 -23.300028 +v -130.485199 -104.743790 -23.300028 +v -129.995178 -103.750000 -23.300028 +v 128.280075 -101.708534 -23.300028 +v 129.379150 -102.828224 -23.300028 +v -128.518478 -101.926392 -23.300028 +v -129.291534 -102.720024 -23.300028 +v -121.480598 -97.600281 -23.220627 +v -122.731308 -97.600006 -22.781506 +v -121.485016 -97.600006 -20.050444 +v -123.614120 -97.600006 -22.219757 +v -122.037872 -97.600006 -19.599304 +v -124.361351 -97.600006 -21.486292 +v -124.939278 -97.600006 -20.614075 +v -122.450729 -97.600006 -18.814415 +v -125.323242 -97.600006 -19.641140 +v -125.485359 -97.600006 -18.718697 +v -121.523247 148.500000 -20.028318 +v -122.089958 148.500000 -19.534952 +v -122.470726 148.500000 -18.742956 +v -122.337410 148.500000 -22.956833 +v -123.265381 148.500000 -22.473095 +v -124.272751 148.500000 -21.607742 +v -124.981422 148.500000 -20.531307 +v -125.347275 148.500000 -19.551422 +v -122.499443 -97.575020 -12.604840 +v -125.499992 -97.582451 -12.797888 +v -125.499992 -97.388100 -11.691212 +v -122.499992 -97.228371 -11.199620 +v -125.499992 -96.927032 -10.522801 +v -122.499992 -96.796204 -10.300028 +v -122.499992 -96.303345 -9.562597 +v -125.499992 -96.233238 -9.476027 +v -122.499992 -95.423882 -8.666689 +v -125.499992 -95.614807 -8.841157 +v -125.499992 -94.824959 -8.231556 +v -122.499992 -94.376930 -7.972893 +v -125.499992 -93.700737 -7.671827 +v -122.499992 -93.208542 -7.511895 +v -125.499992 -92.295341 -7.325005 +v -122.499992 -92.102417 -7.317586 +v 121.332619 -97.600105 -23.236347 +v 121.332466 -97.600006 -20.136358 +v 122.337379 -97.600006 -22.956894 +v 123.265419 -97.600006 -22.473129 +v 122.085442 -97.600006 -19.541189 +v 124.272774 -97.600006 -21.607773 +v 124.981400 -97.600006 -20.531393 +v 122.456230 -97.600006 -18.768280 +v 125.347252 -97.600006 -19.551569 +v 125.486282 -97.600006 -18.692442 +v 125.500000 -92.102417 -7.317586 +v 125.500000 -97.575020 -12.604840 +v 122.499359 -97.582451 -12.797888 +v 122.500000 -97.388100 -11.691212 +v 125.500000 -97.228371 -11.199620 +v 122.500000 -96.927032 -10.522801 +v 125.500000 -96.796204 -10.300028 +v 125.500000 -96.303345 -9.562597 +v 122.500000 -96.233238 -9.476027 +v 125.500000 -95.423882 -8.666689 +v 122.500000 -95.614807 -8.841157 +v 122.500000 -94.824959 -8.231556 +v 125.500000 -94.376930 -7.972893 +v 122.500000 -93.700737 -7.671827 +v 125.500000 -93.208542 -7.511895 +v 122.499886 -92.295341 -7.325005 +v 130.999985 -114.250908 -23.086523 +v 130.999985 -113.900215 -20.052269 +v 130.999985 -115.623672 -22.574188 +v 130.999985 -114.816292 -19.578260 +v 130.999985 -116.859962 -21.787552 +v 130.999985 -117.905518 -20.761232 +v 130.999985 -115.716095 -18.701925 +v 130.999985 -118.714859 -19.540068 +v 130.999985 -116.225327 -17.770367 +v 130.999985 -119.252548 -18.177534 +v 130.999985 -116.490425 -16.759218 +v 130.999985 -119.489388 -16.806313 +v -130.999985 -113.572533 -20.158754 +v -130.999985 -114.376450 -23.052889 +v -130.999985 -114.351540 -19.851315 +v -130.999985 -115.347198 -22.694849 +v -130.999985 -116.371674 -22.142324 +v -130.999985 -115.049248 -19.388901 +v -130.999985 -117.183899 -21.502045 +v -130.999985 -115.635872 -18.791319 +v -130.999985 -117.987297 -20.660238 +v -130.999985 -116.085358 -18.084764 +v -130.999985 -118.773872 -19.424257 +v -130.999985 -116.378059 -17.300266 +v -130.999985 -119.286194 -18.052002 +v -130.999985 -116.495605 -16.551306 +v -130.999985 -119.490387 -16.758808 +v 130.989014 -116.500000 -14.381718 +v 130.961365 -119.500000 -13.985286 +v 130.817078 -116.500000 -13.299699 +v 130.588028 -119.500000 -12.594712 +v 130.377716 -116.500000 -12.122287 +v 130.196182 -119.500000 -11.800031 +v 129.703339 -116.500000 -11.062609 +v 129.633224 -119.500000 -10.976038 +v 128.823898 -116.500000 -10.166730 +v 129.014786 -119.500000 -10.341161 +v 128.224899 -119.500000 -9.731530 +v 128.000000 -116.500000 -9.603883 +v 127.204735 -116.500000 -9.211755 +v 127.100731 -119.500000 -9.171831 +v 125.814484 -116.500000 -8.838605 +v 125.695335 -119.500000 -8.825008 +v 88.180832 -119.500000 -8.788692 +v 88.190269 -116.500000 -8.791777 +v 87.377190 -119.500000 -8.650752 +v 87.379242 -116.500000 -8.645697 +v 84.047554 -116.500000 -7.280856 +v 84.847519 -119.500000 -7.598902 +v 81.590515 -119.500000 -6.468049 +v 79.865524 -116.500000 -5.997742 +v 77.368362 -119.500000 -5.457813 +v 75.603195 -116.500000 -5.173487 +v 74.333740 -119.500000 -5.030953 +v 71.736549 -116.500000 -4.830858 +v 71.447136 -119.500000 -4.819301 +v -71.736549 -119.500000 -4.830859 +v -71.447136 -116.500000 -4.819300 +v -84.047539 -119.500000 -7.280851 +v -84.847519 -116.500000 -7.598901 +v -81.590515 -116.500000 -6.468049 +v -79.865524 -119.500000 -5.997742 +v -77.368362 -116.500000 -5.457813 +v -75.603195 -119.500000 -5.173487 +v -74.333740 -116.500000 -5.030953 +v -88.190269 -119.500000 -8.791777 +v -88.180832 -116.500000 -8.788692 +v -87.377190 -116.500000 -8.650750 +v -87.379227 -119.500000 -8.645694 +v -130.989014 -119.500000 -14.381718 +v -130.961365 -116.500000 -13.985286 +v -130.817078 -119.500000 -13.299699 +v -130.588028 -116.500000 -12.594712 +v -130.377716 -119.500000 -12.122287 +v -130.196182 -116.500000 -11.800031 +v -129.703339 -119.500000 -11.062609 +v -129.633224 -116.500000 -10.976038 +v -128.823883 -119.500000 -10.166717 +v -129.014786 -116.500000 -10.341161 +v -128.224930 -116.500000 -9.731552 +v -127.999992 -119.500000 -9.603883 +v -127.204689 -119.500000 -9.211740 +v -127.100693 -116.500000 -9.171818 +v -125.814468 -119.500000 -8.838605 +v -125.695320 -116.500000 -8.825008 +v 126.792892 116.000000 -4.399983 +v 126.792892 -112.000000 -4.400032 +v -126.792892 116.000000 -4.399983 +v -126.792892 -112.000000 -4.400032 +v -127.999992 114.792900 -4.399983 +v 128.000000 114.792900 -4.399983 +v 128.000000 -110.792908 -4.400032 +v -127.999992 -110.792908 -4.400032 +v -128.499985 115.000000 -3.899983 +v -126.999992 116.500000 -0.899983 +v -126.999992 116.500000 -3.899983 +v -128.499985 115.000000 -0.899983 +v -126.792892 116.000000 -0.399983 +v -127.999992 114.792900 -0.399983 +v 126.792892 116.000000 -0.399983 +v 127.000000 116.500000 -0.899983 +v 127.000000 116.500000 -3.899983 +v -128.499985 -111.000000 -0.900032 +v -127.999992 -110.792908 -0.400032 +v -128.499985 -111.000000 -3.900032 +v 128.499985 115.000000 -0.899983 +v 128.499985 115.000000 -3.899983 +v 128.000000 114.792900 -0.399983 +v -126.999992 -112.500000 -3.900032 +v -126.999992 -112.500000 -0.900032 +v -126.792892 -112.000000 -0.400032 +v 128.000000 -110.792908 -0.400032 +v 128.499985 -111.000000 -0.900032 +v 128.499985 -111.000000 -3.900032 +v 127.000000 -112.500000 -0.900032 +v 126.792892 -112.000000 -0.400032 +v 127.000000 -112.500000 -3.900032 +v -113.499512 -104.925499 -6.290667 +v -113.499794 -104.696381 -5.941831 +v -113.499992 -104.950165 -5.898036 +v -98.500351 -104.753258 -5.915757 +v -98.500107 -104.863670 -6.305339 +v -113.499992 -112.403862 -5.902736 +v -113.499992 -112.401367 -6.304688 +v -113.499992 -112.576485 -5.856108 +v -113.499992 -112.850365 -6.169373 +v -113.499992 -112.735107 -5.680000 +v -113.499992 -113.135582 -5.749354 +v -113.499992 -113.119308 -0.120282 +v -113.499992 -112.720406 -0.196579 +v -98.499992 -112.518532 -5.886173 +v -98.499992 -112.584015 -6.289790 +v -98.499992 -113.006104 -6.019112 +v -98.499969 -112.717926 -5.719210 +v -98.499481 -113.155006 -5.553756 +v -98.494156 -112.745590 -5.550069 +v -113.499992 -112.835075 0.240816 +v -113.499992 -112.423920 -0.023948 +v -113.499992 -112.392403 0.382573 +v -98.498772 -112.756721 -0.373211 +v -98.499809 -113.152428 -0.379375 +v -98.499992 -113.078110 -0.050501 +v -98.499992 -112.611053 -0.093820 +v -98.499992 -112.857735 0.224349 +v -98.499992 -112.440186 0.380228 +v -98.499992 -112.381073 -0.025535 +v -113.499908 -107.268150 -1.232720 +v -113.499733 -107.277565 -1.645689 +v -113.495285 -106.151192 -0.649756 +v -113.469170 -105.784584 -0.907685 +v -98.500359 -107.288628 -1.237510 +v -98.500069 -107.214096 -1.645461 +v -99.718605 -104.795349 -0.381813 +v -98.511063 -105.896660 -0.967468 +v -112.237427 -104.788513 -0.378215 +v -99.130211 -105.010773 -0.496472 +v -98.692696 -105.437569 -0.723395 +v -113.196884 -105.291206 -0.645579 +v -112.752754 -104.947914 -0.463047 +v -120.283081 -104.935890 -5.899981 +v -124.041954 -112.380196 -5.900015 +v -124.345459 -108.882858 -5.900032 +v -123.648956 -109.099205 -5.900032 +v -122.105476 -108.302788 -5.900032 +v -123.083359 -109.054390 -5.900032 +v -122.518867 -108.775360 -5.900032 +v -124.864326 -108.353592 -5.900032 +v -125.176270 -112.113762 -5.900033 +v -126.244164 -111.573875 -5.900033 +v -127.169693 -110.760399 -5.900033 +v -127.705376 -104.983971 -5.900032 +v -128.254196 -106.228333 -5.900032 +v -128.404648 -107.393890 -5.900032 +v -128.317169 -108.468346 -5.900032 +v -127.866142 -109.755821 -5.900033 +v -125.104385 -107.683228 -5.900032 +v -121.904442 -107.708160 -5.900032 +v -121.981270 -106.939384 -5.900032 +v -125.024849 -106.984032 -5.900032 +v -124.744057 -106.485962 -5.900032 +v -122.370270 -106.358353 -5.900032 +v -126.720436 -104.940346 -5.900032 +v -124.351341 -106.133759 -5.900032 +v -125.971497 -104.207916 -5.900032 +v -121.109909 -104.151787 -5.900032 +v -122.835838 -106.034187 -5.900032 +v -125.004074 -103.676003 -5.900031 +v -122.082436 -103.643372 -5.900031 +v -123.595512 -105.883949 -5.900032 +v -122.891411 -103.440079 -5.900031 +v -123.930885 -103.410545 -5.900031 +v -99.762520 -102.508858 -7.193946 +v -112.437813 -102.537514 -7.177415 +v -98.719894 -103.106201 -6.849077 +v -98.519432 -103.555161 -6.589985 +v -99.192123 -102.689484 -7.089674 +v -113.032555 -102.844978 -6.999902 +v -113.495285 -103.661278 -6.528798 +v -113.365311 -103.244720 -6.769102 +v -112.164268 -102.703552 -7.543434 +v -99.715584 -102.715805 -7.536356 +v -112.700294 -102.838028 -7.465782 +v -99.143272 -102.914772 -7.421479 +v -98.692696 -103.345505 -7.172802 +v -98.511055 -103.795998 -6.913196 +v -113.469170 -103.685844 -6.976448 +v -113.196938 -103.202034 -7.255642 +v -123.870140 -105.914825 -6.300029 +v -124.108574 -103.440071 -6.300029 +v -123.069107 -103.410545 -6.300029 +v -123.083351 -105.945625 -6.300029 +v -124.917564 -103.643372 -6.300029 +v -121.995911 -103.676010 -6.300029 +v -125.890121 -104.151817 -6.300029 +v -122.400894 -106.311417 -6.300029 +v -121.028503 -104.207909 -6.300029 +v -124.560188 -106.288651 -6.300029 +v -126.715698 -104.934837 -6.300029 +v -120.279839 -104.940414 -6.300001 +v -124.984863 -106.874008 -6.300030 +v -121.947678 -107.055283 -6.300030 +v -122.134476 -108.351173 -6.300030 +v -121.912720 -107.764015 -6.300030 +v -125.111130 -107.617622 -6.300030 +v -124.161758 -112.365791 -6.300035 +v -124.894539 -108.302742 -6.300030 +v -125.266083 -112.080132 -6.300033 +v -126.352432 -111.498817 -6.300033 +v -127.232658 -110.688118 -6.300034 +v -127.692566 -104.972702 -6.300030 +v -128.215454 -106.091179 -6.300030 +v -128.403107 -107.337410 -6.300030 +v -128.350403 -108.256805 -6.300031 +v -127.984772 -109.527443 -6.300033 +v -124.475876 -108.782425 -6.300035 +v -122.564178 -108.808975 -6.300035 +v -123.977356 -109.033783 -6.300033 +v -123.273483 -109.103020 -6.300034 +v -112.281502 -104.983139 -0.028692 +v -98.519440 -106.043015 -0.592111 +v -99.762512 -104.976540 -0.024644 +v -98.719910 -105.585251 -0.348906 +v -99.190887 -105.162781 -0.124252 +v -113.308205 -105.610222 -0.362170 +v -112.798042 -105.159676 -0.122605 +v -98.326378 -113.189217 -5.549622 +v -98.125603 -112.840919 -5.549874 +v -98.346329 -113.179306 -0.381882 +v -98.122849 -112.837944 -0.382129 +v -94.418640 -117.086685 -0.392829 +v -94.102501 -116.836975 -0.401198 +v -94.041710 -116.897942 -5.523133 +v -94.385391 -117.119865 -5.530602 +v -93.248222 -117.691116 -1.643624 +v -93.278313 -117.661041 -4.525964 +v -93.593376 -117.345970 -5.182483 +v -93.685204 -117.254150 -0.645702 +v -93.385139 -117.554199 -1.109923 +v -93.983215 -117.521812 -5.299919 +v -93.659790 -117.845245 -4.809508 +v -93.531029 -117.974007 -4.287407 +v -93.555519 -117.949516 -1.439597 +v -93.806717 -117.698318 -0.846351 +v -94.094833 -117.410194 -0.544410 +v 113.499519 -104.696648 -5.939164 +v 113.499840 -104.930397 -6.285290 +v 113.500000 -104.950111 -5.898717 +v 98.500404 -104.866028 -6.305832 +v 98.500092 -104.755470 -5.918425 +v 98.554482 -103.585854 -7.034211 +v 113.500000 -112.419914 -5.914762 +v 113.500000 -112.404060 -6.303746 +v 113.500000 -112.814133 -6.189299 +v 113.500000 -112.732468 -5.691329 +v 113.500000 -113.122543 -5.799522 +v 113.500000 -112.735374 -0.252623 +v 113.500000 -113.130424 -0.154565 +v 98.499992 -112.485909 -5.894973 +v 98.499992 -112.621277 -6.279701 +v 98.499992 -112.702332 -5.747434 +v 98.499992 -113.033752 -5.981179 +v 98.499817 -113.152283 -5.552338 +v 98.487495 -112.738274 -5.550432 +v 113.500000 -112.857735 0.224349 +v 113.500000 -112.485870 -0.019457 +v 113.500000 -112.440186 0.380228 +v 98.499466 -113.155251 -0.377895 +v 98.499969 -112.723473 -0.227026 +v 98.499992 -112.750000 -0.381767 +v 98.499992 -113.066734 -0.028299 +v 98.499992 -112.835075 0.240816 +v 98.499992 -112.486038 -0.026784 +v 98.499992 -112.392403 0.382573 +v 113.499641 -107.288414 -1.237147 +v 113.499924 -107.221558 -1.644919 +v 113.495285 -105.963409 -1.002908 +v 113.482582 -106.059982 -0.600996 +v 98.500092 -107.287163 -1.231096 +v 98.500473 -107.119835 -1.607435 +v 98.499992 -107.442665 -1.619605 +v 98.519989 -105.850006 -0.942378 +v 99.762573 -104.788605 -0.378049 +v 113.310593 -105.426094 -0.717291 +v 98.747757 -105.346573 -0.675018 +v 99.247215 -104.947937 -0.463054 +v 112.798149 -104.971954 -0.475823 +v 112.281425 -104.795334 -0.381843 +v 120.280762 -104.939301 -5.899974 +v 124.161591 -112.365814 -5.900041 +v 124.481133 -108.775352 -5.900032 +v 122.096054 -108.292747 -5.900032 +v 123.777817 -109.097626 -5.900032 +v 123.055847 -109.042770 -5.900032 +v 126.710945 -104.934135 -5.900032 +v 124.894539 -108.302765 -5.900032 +v 122.568306 -108.812569 -5.900032 +v 125.266022 -112.080162 -5.900033 +v 126.352356 -111.498863 -5.900033 +v 127.235878 -110.684738 -5.900033 +v 127.984848 -105.510780 -5.900032 +v 128.236313 -108.789978 -5.900032 +v 128.411392 -107.570511 -5.900032 +v 128.278763 -106.376389 -5.900032 +v 127.836113 -109.805634 -5.900033 +v 127.669876 -104.965614 -5.900032 +v 125.095566 -107.708069 -5.900032 +v 121.902435 -107.665779 -5.900032 +v 121.940353 -107.110680 -5.900032 +v 125.020500 -106.944038 -5.900032 +v 122.159836 -106.614799 -5.900032 +v 124.629768 -106.358398 -5.900032 +v 122.610275 -106.152077 -5.900032 +v 121.028549 -104.207870 -5.900032 +v 124.164169 -106.034195 -5.900032 +v 123.377098 -105.882690 -5.900032 +v 121.995842 -103.676041 -5.900031 +v 126.010841 -104.226738 -5.900032 +v 124.917488 -103.643349 -5.900031 +v 124.108589 -103.440079 -5.900031 +v 123.069069 -103.410553 -5.900031 +v 98.511055 -103.595947 -6.566602 +v 99.737251 -102.513840 -7.191072 +v 112.237526 -102.508865 -7.193945 +v 98.694313 -103.139557 -6.829818 +v 113.480286 -103.552589 -6.591471 +v 113.245514 -103.052094 -6.880321 +v 99.157127 -102.710800 -7.077363 +v 112.752754 -102.665260 -7.103669 +v 99.609573 -102.725800 -7.530644 +v 112.281433 -102.715607 -7.536579 +v 113.280121 -103.296547 -7.201065 +v 113.488785 -103.793900 -6.914021 +v 112.798103 -102.888779 -7.436486 +v 99.001900 -103.015198 -7.363509 +v 123.607086 -105.894508 -6.300029 +v 123.930862 -103.410545 -6.300029 +v 122.891365 -103.440079 -6.300029 +v 122.917824 -105.996483 -6.300029 +v 122.082375 -103.643394 -6.300029 +v 124.341850 -106.117165 -6.300029 +v 125.004021 -103.675987 -6.300029 +v 121.109894 -104.151802 -6.300029 +v 125.940239 -104.185684 -6.300029 +v 122.370323 -106.358299 -6.300029 +v 120.284874 -104.934319 -6.299974 +v 126.720154 -104.940269 -6.300029 +v 125.067200 -107.134468 -6.300030 +v 125.062706 -107.933044 -6.300030 +v 124.840096 -106.614677 -6.300029 +v 124.044334 -112.379829 -6.299971 +v 122.047325 -106.811668 -6.300029 +v 121.957108 -107.977531 -6.300030 +v 121.902435 -107.334229 -6.300030 +v 125.176231 -112.113785 -6.300033 +v 126.244125 -111.573906 -6.300033 +v 127.171951 -110.758118 -6.300034 +v 127.686363 -104.976646 -6.300030 +v 127.999123 -105.543640 -6.300030 +v 128.300034 -106.471367 -6.300030 +v 128.407745 -107.702271 -6.300030 +v 128.181396 -108.992409 -6.300033 +v 122.285065 -108.555832 -6.300030 +v 124.673141 -108.601311 -6.300033 +v 122.847336 -108.974190 -6.300034 +v 124.162331 -108.966446 -6.300034 +v 123.550743 -109.108284 -6.300034 +v 127.743515 -109.962273 -6.300034 +v 98.518402 -106.015022 -0.576808 +v 99.718506 -104.983116 -0.028731 +v 113.245491 -105.530182 -0.319623 +v 98.769402 -105.518837 -0.313582 +v 112.237511 -104.976295 -0.025104 +v 112.752716 -105.135696 -0.109857 +v 99.201920 -105.159698 -0.122616 +v 98.335167 -113.182594 -5.549920 +v 98.062172 -112.884262 -5.549552 +v 98.185387 -112.803619 -0.381866 +v 98.326126 -113.189362 -0.382180 +v 94.135887 -116.803902 -0.392826 +v 94.383286 -117.121971 -0.401478 +v 94.324425 -117.180733 -5.523123 +v 94.102478 -116.836937 -5.530604 +v 93.253868 -117.685486 -4.364363 +v 93.431343 -117.508011 -4.925447 +v 93.735924 -117.203400 -5.330145 +v 93.263680 -117.675674 -1.518235 +v 93.443596 -117.495735 -0.982359 +v 93.763214 -117.176125 -0.576032 +v 93.528664 -117.977074 -4.225070 +v 93.625305 -117.879730 -4.715205 +v 93.880737 -117.624275 -5.185385 +v 93.537170 -117.967857 -1.580292 +v 93.990219 -117.514809 -0.620049 +v 93.694748 -117.810280 -1.051726 +v -93.457199 107.408188 -5.899989 +v -92.471741 107.428665 -5.899989 +v -116.421928 107.690308 -5.899989 +v -117.723480 107.392021 -5.899989 +v -118.682686 107.451340 -5.899989 +v -91.678413 107.609406 -5.899989 +v -94.632759 107.721680 -5.899989 +v -119.602753 107.713234 -5.899989 +v -90.766449 108.051056 -5.899989 +v -88.072945 110.981140 -5.899985 +v -95.563309 108.288452 -5.899989 +v -89.881233 108.817245 -5.899989 +v -121.261696 108.937073 -5.899989 +v -120.566490 108.291306 -5.899989 +v -122.929337 110.965004 -5.899985 +v -115.358192 108.352219 -5.899989 +v -96.260963 108.936569 -5.899927 +v -114.685974 108.956573 -5.899958 +v -92.376839 110.017067 -5.899984 +v -116.716599 110.515991 -5.899984 +v -117.292595 110.051674 -5.899984 +v -117.972672 109.891693 -5.899984 +v -118.636246 110.019333 -5.899984 +v -116.453796 111.069145 -5.899984 +v -89.582787 108.977974 -5.899989 +v -116.394730 111.606445 -5.899683 +v -92.972641 109.891693 -5.899874 +v -89.007599 109.003036 -5.899989 +v -88.616379 109.230896 -5.899990 +v -88.273994 110.005592 -5.899982 +v -97.999992 108.986526 -5.899444 +v -104.266434 110.355560 -5.888364 +v -112.999992 108.982887 -5.896468 +v -106.771355 110.365898 -5.885510 +v -122.699768 109.924782 -5.899983 +v -121.959541 108.994751 -5.899990 +v -122.353432 109.196281 -5.899990 +v -93.636230 110.019333 -5.899706 +v -122.780365 111.516769 -5.899985 +v -91.868309 110.356567 -5.899985 +v -94.157387 110.387894 -5.899706 +v -119.157417 110.387932 -5.899984 +v -88.224861 111.581909 -5.899985 +v -91.525284 110.851791 -5.899985 +v -94.451607 110.806999 -5.899706 +v -119.481621 110.866241 -5.899985 +v -107.254250 110.957619 -5.896412 +v -117.217361 112.911865 -5.899669 +v -116.590553 112.297836 -5.899670 +v -117.942871 113.116211 -5.899650 +v -91.382301 111.522881 -5.899984 +v -94.611031 111.462395 -5.899826 +v -119.609612 111.556183 -5.899985 +v -91.590561 112.297852 -5.899985 +v -119.436722 112.228004 -5.899985 +v -122.915993 111.992317 -5.899990 +v -94.451820 112.203018 -5.899984 +v -92.291740 112.959991 -5.899984 +v -119.015717 112.747292 -5.899984 +v -118.545944 113.009422 -5.900004 +v -88.063522 112.029976 -5.899984 +v -120.575012 115.733574 -5.899984 +v -121.562607 114.962120 -5.899984 +v -122.832520 112.622887 -5.899985 +v -118.511703 116.430450 -5.899996 +v -112.999992 116.470177 -5.905325 +v -119.653870 116.178001 -5.899984 +v -89.627434 115.139854 -5.899984 +v -90.693741 115.899643 -5.899983 +v -94.015778 112.747238 -5.899984 +v -93.545959 113.009415 -5.899984 +v -91.705811 116.283203 -5.899983 +v -92.574860 116.438957 -5.899793 +v -88.303055 113.080490 -5.899984 +v -97.999992 116.450958 -5.900380 +v -122.418610 113.763077 -5.899984 +v -93.030785 113.108910 -5.899984 +v -88.770714 114.097679 -5.899984 +v -88.071281 112.023727 -6.249987 +v -88.353348 113.244545 -6.249987 +v -88.869331 114.238022 -6.249987 +v -89.526070 115.043114 -6.249987 +v -90.425079 115.733627 -6.249986 +v -91.346169 116.178009 -6.249986 +v -92.487869 116.430382 -6.249986 +v -88.300186 109.924904 -6.249987 +v -88.646561 109.196289 -6.249988 +v -88.066315 110.978760 -6.249987 +v -98.000145 111.329643 -1.306486 +v -98.000343 111.284821 -1.658780 +v -97.999992 116.446060 -0.036659 +v -97.999992 116.501801 0.318218 +v -97.999992 116.668297 -0.113920 +v -97.999992 116.999046 0.068039 +v -97.999428 116.804558 -0.382584 +v -97.992462 117.146606 -0.392939 +v -97.999992 116.449997 -6.249986 +v -97.999992 116.677109 -6.219506 +v -97.999992 116.628044 -5.859048 +v -97.999992 117.038368 -5.959882 +v -97.999771 116.804825 -5.589553 +v -97.988678 117.141571 -5.551567 +v -98.000267 108.964531 -6.242128 +v -98.000107 108.732391 -5.942806 +v -112.999786 108.967407 -6.242245 +v -98.552956 107.589096 -7.003625 +v -112.423355 107.587151 -7.004711 +v -98.025063 108.025566 -6.751427 +v -98.226402 107.753662 -6.908240 +v -112.991585 108.092934 -6.712529 +v -112.801086 107.766960 -6.900558 +v -94.578064 107.690315 -6.249988 +v -93.276512 107.392021 -6.249988 +v -119.566055 107.687584 -6.249988 +v -118.310516 107.399757 -6.249988 +v -92.073479 107.491287 -6.249988 +v -117.306091 107.453941 -6.249988 +v -116.367241 107.721672 -6.249988 +v -91.126602 107.847733 -6.249988 +v -88.187202 111.259911 -6.249987 +v -95.641525 108.352013 -6.249988 +v -89.738297 108.937073 -6.249988 +v -90.436714 108.288429 -6.249988 +v -120.641571 108.352051 -6.249988 +v -121.308395 108.958084 -6.249988 +v -122.928596 110.977837 -6.249987 +v -115.435402 108.289360 -6.249988 +v -122.796249 111.345139 -6.249987 +v -96.130859 108.835815 -6.249988 +v -114.891869 108.815964 -6.249988 +v -92.292458 110.042313 -6.249987 +v -94.082542 110.306168 -6.249987 +v -93.530800 109.985214 -6.249987 +v -93.027306 109.891693 -6.249987 +v -118.707375 110.051666 -6.249987 +v -94.474319 110.856720 -6.249987 +v -114.621017 108.966179 -6.249984 +v -96.413216 108.976440 -6.249709 +v -94.611168 111.539703 -6.249810 +v -104.237610 110.403954 -6.242070 +v -118.027336 109.891693 -6.249827 +v -89.040466 108.994743 -6.249988 +v -106.755104 110.442375 -6.233991 +v -107.157143 110.736473 -6.245662 +v -122.725990 110.005554 -6.249987 +v -121.992378 109.003029 -6.249988 +v -122.383606 109.230888 -6.249988 +v -117.363731 110.019341 -6.249716 +v -116.842575 110.387924 -6.249753 +v -119.283401 110.516006 -6.249987 +v -91.654900 110.608009 -6.249987 +v -103.869957 110.727264 -6.241818 +v -116.518379 110.866234 -6.249715 +v -119.601173 111.253990 -6.249987 +v -91.378632 111.421478 -6.249987 +v -116.392204 111.549171 -6.249715 +v -88.205940 111.620117 -6.249987 +v -122.813408 111.741768 -6.249987 +v -91.525772 112.149673 -6.249987 +v -118.519196 113.018822 -6.249987 +v -119.089600 112.699272 -6.249987 +v -119.515198 112.046059 -6.249987 +v -103.858253 112.262878 -6.245065 +v -91.830063 112.600189 -6.249987 +v -112.999992 116.454048 -6.250648 +v -94.484596 112.111603 -6.249987 +v -116.526878 112.151657 -6.249769 +v -92.337517 112.971985 -6.249987 +v -121.372597 115.139809 -6.249987 +v -120.306221 115.899666 -6.249986 +v -122.927307 112.003471 -6.249987 +v -122.173409 114.181870 -6.249987 +v -118.425499 116.438911 -6.249986 +v -119.294159 116.283211 -6.249986 +v -94.197571 112.573898 -6.249987 +v -122.700172 113.098145 -6.249987 +v -116.830055 112.600174 -6.249987 +v -93.708115 112.944855 -6.249987 +v -117.337502 112.971977 -6.249987 +v -93.057114 113.116203 -6.249987 +v -117.969193 113.108917 -6.249987 +v -112.999992 116.760338 -6.183825 +v -112.999992 117.041199 -5.942510 +v -113.007523 117.146599 -5.551701 +v -113.011307 117.141563 -0.393072 +v -112.999992 116.339027 0.301899 +v -112.999992 116.673340 0.277984 +v -112.999992 117.038368 0.015241 +v -112.999535 111.321297 -1.300562 +v -112.379631 108.968468 -0.092693 +v -98.475334 108.995598 -0.106952 +v -112.983459 109.462547 -0.349791 +v -112.744789 109.107712 -0.165509 +v -98.163330 109.205498 -0.216355 +v -98.008926 109.484711 -0.361415 +v -112.508896 108.828346 -0.414637 +v -98.518517 108.819817 -0.410019 +v -112.999886 111.295853 -1.667535 +v -98.008667 109.344498 -0.682835 +v -98.144615 109.057861 -0.534070 +v -112.845184 109.051636 -0.530834 +v -112.991425 109.329285 -0.675166 +v -112.999992 116.467468 -0.037616 +v -112.999992 116.730728 -0.166269 +v -113.000198 116.799858 -0.392486 +v -113.001457 116.798187 -5.550020 +v -113.000076 116.767227 -5.723131 +v -112.999992 108.716454 -5.952114 +v -98.519775 107.421898 -6.695710 +v -112.377480 107.405441 -6.705694 +v -98.206375 107.596001 -6.595117 +v -98.015335 107.880562 -6.430892 +v -112.752441 107.551208 -6.620988 +v -112.983795 107.890961 -6.425009 +v -97.743851 116.844315 -0.394769 +v -97.757713 116.838837 -5.549709 +v -96.479713 117.569489 -0.409993 +v -96.557098 117.929001 -0.439012 +v -96.648811 117.876091 -5.534465 +v -96.490608 117.563240 -5.534006 +v -96.005692 117.843430 -4.930008 +v -96.021057 117.834366 -0.914491 +v -96.195190 117.733711 -0.600994 +v -96.156540 117.756027 -5.314418 +v -96.188637 118.142052 -4.985723 +v -96.200172 118.135406 -0.874624 +v -96.338158 118.055328 -5.309988 +v -113.242294 116.838844 -0.394931 +v -113.256165 116.844322 -5.549870 +v -114.345245 117.872650 -0.409992 +v -114.550301 117.586845 -0.419719 +v -114.496002 117.555489 -5.539159 +v -114.411201 117.910744 -5.516488 +v -114.981857 117.836052 -5.015651 +v -114.822136 117.743729 -0.621010 +v -114.986725 117.838989 -0.947407 +v -114.796585 117.728981 -5.355307 +v -114.803696 118.137421 -0.913932 +v -114.685379 118.068916 -5.273161 +v -114.817238 118.145737 -4.962123 +v -114.629814 118.036835 -0.601007 +v -104.414108 112.413628 -6.139888 +v -106.482231 110.938232 -5.749270 +v -104.493355 110.933571 -5.759127 +v -106.487389 111.903282 -5.670944 +v -106.647697 111.906334 -5.724234 +v -106.769165 111.851471 -5.813412 +v -106.935722 111.982765 -6.094294 +v -106.504074 112.065399 -5.758055 +v -106.648102 111.083740 -5.728839 +v -106.477921 111.119072 -5.663718 +v -106.787575 111.172974 -5.830660 +v -106.873199 112.329819 -6.183705 +v -106.685463 112.454254 -6.183847 +v -104.519966 111.887238 -5.664809 +v -104.342880 111.889977 -5.727822 +v -104.230042 111.827873 -5.807755 +v -104.075012 111.899689 -6.067691 +v -104.480385 112.066589 -5.759784 +v -104.349289 111.098404 -5.724714 +v -104.515678 111.099098 -5.669219 +v -104.229538 111.144989 -5.815945 +v -104.067993 112.163719 -6.151033 +v -104.205994 112.368210 -6.162953 +v -107.128067 112.083672 -6.232297 +v -106.903862 112.594223 -6.247279 +v -106.689117 110.611526 -6.132488 +v -106.897377 110.766296 -6.152784 +v -107.098976 111.000710 -6.212734 +v -106.924095 111.044205 -6.072845 +v -104.342430 110.556915 -6.171640 +v -103.914062 111.960899 -6.203500 +v -104.219086 112.581245 -6.240262 +v -104.131752 110.705536 -6.157367 +v -104.038795 110.982742 -6.130045 +v -103.934410 111.046631 -6.192696 +v -104.480042 111.969444 -5.323241 +v -104.473381 110.699265 -5.496435 +v -106.513138 110.678482 -5.512131 +v -103.769928 112.022125 -5.892881 +v -106.568703 111.870361 -5.316419 +v -106.942986 111.905777 -5.491482 +v -107.224693 111.987534 -5.882084 +v -106.825523 112.077309 -5.472023 +v -106.452087 112.083336 -5.359232 +v -106.580963 112.237206 -5.450602 +v -106.785179 110.866623 -5.471889 +v -106.566093 110.942360 -5.358616 +v -107.039703 111.096970 -5.589523 +v -106.831940 111.129662 -5.421003 +v -106.589676 111.138077 -5.316360 +v -107.035713 112.458000 -5.887029 +v -107.183807 110.896088 -5.858757 +v -104.473587 110.902161 -5.371440 +v -104.436478 111.112213 -5.317396 +v -104.241524 111.926552 -5.386766 +v -103.979485 111.891624 -5.562956 +v -104.249046 112.156982 -5.466810 +v -104.518562 112.293533 -5.482383 +v -106.681541 112.655128 -5.889740 +v -107.048790 110.566238 -5.888335 +v -104.240997 110.857124 -5.468195 +v -104.020943 110.938721 -5.590680 +v -104.108810 111.138252 -5.449102 +v -103.897697 111.157433 -5.667879 +v -103.907387 112.365372 -5.887381 +v -104.220413 112.636398 -5.889463 +v -103.883896 110.655914 -5.886767 +v -103.767960 110.969543 -5.891033 +v 119.277084 106.393517 -4.899989 +v 95.566040 106.687584 -4.899989 +v 94.310516 106.399757 -4.899989 +v 118.311691 106.452644 -4.899989 +v 93.306091 106.453941 -4.899989 +v 120.321587 106.609413 -4.899989 +v 117.367218 106.721680 -4.899989 +v 92.367241 106.721672 -4.899989 +v 121.233490 107.051033 -4.899989 +v 123.923012 109.991776 -4.899984 +v 116.436707 107.288445 -4.899989 +v 122.126549 107.824242 -4.899989 +v 90.738297 107.937073 -4.899988 +v 91.436661 107.288467 -4.899989 +v 89.186546 110.257935 -4.899984 +v 96.641594 107.352066 -4.899989 +v 115.745979 107.930901 -4.899928 +v 97.130836 107.835800 -4.899989 +v 119.623154 109.017067 -4.899989 +v 95.283409 109.516006 -4.899988 +v 94.707375 109.051666 -4.899989 +v 94.027336 108.891693 -4.899989 +v 93.363731 109.019341 -4.899989 +v 95.601173 110.253990 -4.899852 +v 122.426277 107.978027 -4.899989 +v 97.413818 107.976685 -4.899984 +v 119.027367 108.891693 -4.899878 +v 122.994049 108.003273 -4.899989 +v 123.383987 108.229218 -4.899989 +v 123.754089 109.092621 -4.899990 +v 114.000000 107.986526 -4.899444 +v 107.734337 109.350510 -4.891824 +v 98.999992 107.982849 -4.896558 +v 105.343307 109.335587 -4.892531 +v 89.071800 109.991951 -4.899983 +v 89.259972 109.036934 -4.899990 +v 89.919495 108.015945 -4.899989 +v 89.572708 108.301605 -4.899989 +v 118.363785 109.019325 -4.899711 +v 120.196320 109.417709 -4.899988 +v 117.841614 109.387657 -4.899711 +v 92.842575 109.387924 -4.899990 +v 123.775154 110.582008 -4.899984 +v 117.508217 109.886246 -4.899704 +v 92.518379 109.866234 -4.899983 +v 120.556572 110.066063 -4.899984 +v 95.089607 111.699265 -4.899679 +v 94.057129 112.116211 -4.899740 +v 94.582771 111.991867 -4.899984 +v 95.515198 111.046059 -4.899679 +v 117.394417 110.483948 -4.899829 +v 92.392204 110.549171 -4.899984 +v 120.595520 110.678253 -4.899984 +v 89.206841 110.615959 -4.899984 +v 120.401939 111.315758 -4.899984 +v 117.470238 110.998016 -4.899930 +v 92.526878 111.151657 -4.899984 +v 92.830040 111.600159 -4.899984 +v 89.071106 111.024162 -4.900006 +v 119.708931 111.959755 -4.899984 +v 93.337494 111.971970 -4.900055 +v 123.936478 111.029953 -4.899984 +v 91.424995 114.733574 -4.899984 +v 90.526024 114.043068 -4.899984 +v 93.490334 115.430748 -4.900046 +v 98.999992 115.451912 -4.900729 +v 92.346130 115.178001 -4.899984 +v 122.082268 114.384392 -4.899960 +v 121.162155 114.963066 -4.899930 +v 117.766685 111.532646 -4.899930 +v 118.313545 111.963829 -4.899953 +v 120.294167 115.283203 -4.899930 +v 119.426048 115.438835 -4.899759 +v 108.013367 111.471786 -4.891539 +v 123.696945 112.080444 -4.899984 +v 89.289581 112.040268 -4.899984 +v 114.000000 115.451820 -4.901362 +v 122.764908 113.721687 -4.899984 +v 118.969223 112.108917 -4.899984 +v 123.301338 112.968239 -4.899984 +v 89.736198 113.044205 -4.899984 +v 123.928719 111.023720 -5.249987 +v 123.714645 112.026840 -5.249987 +v 123.285194 113.012062 -5.249986 +v 122.386742 114.138947 -5.249986 +v 121.121315 114.991249 -5.249986 +v 119.795052 115.405235 -5.249986 +v 123.474556 108.364761 -5.249987 +v 123.831955 109.388870 -5.249987 +v 123.924683 110.000000 -5.249987 +v 113.999931 110.329643 -0.306486 +v 113.999680 110.284821 -0.658780 +v 113.994652 108.515915 0.622359 +v 114.000000 115.446060 0.963341 +v 114.000000 115.501793 1.318218 +v 114.000000 115.668289 0.886080 +v 114.000000 115.999046 1.068036 +v 114.000565 115.804558 0.617415 +v 114.007538 116.146606 0.607061 +v 114.000000 115.449997 -5.249986 +v 114.000000 115.677109 -5.219506 +v 114.000000 115.720963 -4.791820 +v 114.000000 116.038368 -4.959881 +v 114.000206 115.799850 -4.552153 +v 114.011314 116.141571 -4.551567 +v 113.999580 107.963921 -5.242334 +v 113.999886 107.732391 -4.942805 +v 99.000084 107.967079 -5.242357 +v 113.376526 106.581184 -6.008274 +v 99.599998 106.584969 -6.006034 +v 113.968620 107.002335 -5.764848 +v 113.689171 106.688217 -5.946023 +v 99.298325 106.698257 -5.940228 +v 99.022987 107.017281 -5.756165 +v 117.096085 106.862488 -5.249987 +v 119.182930 106.390770 -5.249988 +v 92.421928 106.690308 -5.249988 +v 93.723480 106.392021 -5.249988 +v 117.969620 106.519394 -5.249988 +v 94.682686 106.451340 -5.249988 +v 120.519264 106.663666 -5.249988 +v 95.602730 106.713234 -5.249988 +v 123.812775 110.259972 -5.249987 +v 116.358482 107.352013 -5.249987 +v 122.270584 107.942039 -5.249987 +v 121.564560 107.289337 -5.249987 +v 91.358437 107.352028 -5.249987 +v 90.691597 107.958092 -5.249987 +v 89.119019 110.065613 -5.249987 +v 96.566505 107.291321 -5.249987 +v 115.869087 107.835846 -5.249987 +v 97.131416 107.838875 -5.249987 +v 119.707535 109.042313 -5.249987 +v 117.769287 109.460953 -5.249987 +v 118.294586 109.050919 -5.249987 +v 118.972694 108.891693 -5.249987 +v 93.292603 109.051674 -5.249987 +v 117.470222 110.002022 -5.249987 +v 115.579910 107.977150 -5.249862 +v 117.394417 110.516022 -5.249832 +v 97.415993 107.973610 -5.249982 +v 107.743530 109.398308 -5.242226 +v 93.972672 108.891693 -5.249852 +v 123.086090 108.019096 -5.249987 +v 105.275436 109.373375 -5.244706 +v 89.160904 109.425552 -5.249987 +v 89.871613 108.037392 -5.249987 +v 89.507072 108.394264 -5.249987 +v 94.636246 109.019333 -5.249716 +v 95.157433 109.387939 -5.249753 +v 92.716599 109.515991 -5.249987 +v 120.393303 109.669777 -5.249987 +v 108.129616 109.768715 -5.237755 +v 95.481613 109.866226 -5.249714 +v 92.453796 110.069145 -5.249987 +v 120.611160 110.460304 -5.249987 +v 95.609612 110.556190 -5.249714 +v 92.394730 110.606445 -5.249987 +v 123.794052 110.620071 -5.249987 +v 89.209145 110.594025 -5.249987 +v 120.451797 111.203079 -5.249987 +v 93.291733 111.959991 -5.249987 +v 92.590561 111.297844 -5.249987 +v 117.489182 111.052124 -5.249907 +v 89.069229 111.041512 -5.249987 +v 98.999992 115.454544 -5.250670 +v 95.436722 111.227997 -5.249831 +v 120.011887 111.753136 -5.249987 +v 119.549400 112.008522 -5.249987 +v 90.627380 114.139801 -5.249986 +v 91.693764 114.899658 -5.249986 +v 89.826332 113.181335 -5.249986 +v 93.577652 115.439323 -5.249986 +v 92.705795 115.283195 -5.249986 +v 117.802475 111.573959 -5.249987 +v 95.015732 111.747284 -5.249987 +v 89.335381 112.183235 -5.249987 +v 118.291832 111.944839 -5.249987 +v 94.545921 112.009430 -5.249987 +v 118.942879 112.116211 -5.249987 +v 94.030800 112.108917 -5.249987 +v 98.999992 115.760338 -5.183825 +v 98.999992 116.041199 -4.942509 +v 98.992462 116.146606 -4.551701 +v 98.988686 116.141571 0.606927 +v 98.999992 115.339027 1.301899 +v 98.999992 115.673340 1.277982 +v 98.999992 116.038376 1.015234 +v 99.000198 110.321304 -0.300562 +v 99.479935 107.988045 0.896983 +v 113.517632 107.989532 0.896202 +v 99.044327 108.353836 0.706629 +v 113.863274 108.231628 0.770063 +v 99.441933 107.839493 0.579550 +v 113.418991 107.810287 0.594986 +v 99.000038 110.295853 -0.667536 +v 113.986069 108.310341 0.334863 +v 113.783447 107.981194 0.505796 +v 99.029411 108.226479 0.378272 +v 98.999992 115.467468 0.962384 +v 98.999992 115.730728 0.833731 +v 98.999786 115.799858 0.607514 +v 98.999428 115.804550 -4.562055 +v 98.999992 115.652847 -4.845448 +v 98.999992 107.716454 -4.952114 +v 113.478729 106.421669 -5.695842 +v 99.479515 106.426086 -5.693498 +v 113.783806 106.587341 -5.600120 +v 113.984993 106.875946 -5.433554 +v 99.040802 106.793175 -5.481410 +v 114.256142 115.844307 0.605231 +v 114.242256 115.838829 -4.549708 +v 115.458786 116.533997 0.599046 +v 115.303352 116.848503 0.594521 +v 115.283752 116.837181 -4.543685 +v 115.548958 116.586067 -4.525201 +v 115.967522 116.827782 0.130243 +v 115.728035 116.689400 0.477969 +v 115.986710 116.838974 -4.003286 +v 115.813538 116.738754 -4.333748 +v 115.798119 117.134293 -4.057592 +v 115.805977 117.139053 0.088237 +v 115.572716 117.003860 0.461469 +v 115.556709 116.994629 -4.419199 +v 98.757683 115.838844 0.605069 +v 98.743820 115.844322 -4.549870 +v 97.716278 116.837219 0.599046 +v 97.519547 116.546524 0.594282 +v 97.440727 116.591995 -4.526853 +v 97.567131 116.923210 -4.509143 +v 97.188873 116.737366 0.407748 +v 97.007202 116.842552 0.009389 +v 97.041718 116.822418 -4.131379 +v 97.188591 117.141930 0.039357 +v 97.200897 117.134979 -4.079837 +v 97.397346 117.021149 0.440425 +v 107.586189 111.413033 -5.139513 +v 105.517776 109.938225 -4.749277 +v 107.506638 109.933578 -4.759125 +v 105.515610 110.905540 -4.671377 +v 105.329254 110.885361 -4.729440 +v 105.227264 110.860260 -4.819574 +v 105.063942 110.942734 -5.089035 +v 105.492996 111.066559 -4.759372 +v 105.351906 110.083733 -4.728831 +v 105.522079 110.119072 -4.663718 +v 105.212433 110.172974 -4.830655 +v 105.090736 111.277710 -5.182544 +v 105.289825 111.425751 -5.166357 +v 107.480034 110.887238 -4.664808 +v 107.657120 110.889969 -4.727819 +v 107.769951 110.827881 -4.807754 +v 107.976868 110.918137 -5.131878 +v 107.519485 111.066910 -4.759967 +v 107.670860 110.114128 -4.729780 +v 107.481453 110.096718 -4.669746 +v 107.772728 110.139778 -4.819564 +v 107.931999 111.163704 -5.151029 +v 107.793999 111.368225 -5.162958 +v 104.871925 111.083664 -5.232297 +v 105.165283 111.584297 -5.243751 +v 105.321037 109.564156 -5.168948 +v 105.174271 109.708855 -5.126842 +v 104.867050 109.734520 -5.241574 +v 104.938721 110.034477 -5.187284 +v 105.075905 110.044197 -5.072843 +v 108.165199 111.197701 -5.242495 +v 107.781578 111.582031 -5.240498 +v 107.706375 109.580956 -5.160128 +v 107.912750 109.795784 -5.151037 +v 107.937347 110.100189 -5.084785 +v 107.520111 110.969406 -4.323245 +v 107.526360 109.699219 -4.496430 +v 105.482056 109.681274 -4.510768 +v 108.196640 110.972534 -4.851724 +v 104.779068 111.014053 -4.882636 +v 105.427185 110.870232 -4.316616 +v 105.175392 110.908806 -4.418930 +v 104.970909 110.892014 -4.579121 +v 105.519333 111.092667 -4.364466 +v 105.248383 111.152390 -4.464416 +v 105.505302 111.314125 -4.503884 +v 105.214134 109.870827 -4.470306 +v 105.433907 109.942360 -4.358616 +v 104.959518 110.094780 -4.591235 +v 105.168060 110.129669 -4.420999 +v 105.410324 110.138077 -4.316359 +v 104.925430 111.389008 -4.884177 +v 105.247055 111.639610 -4.887202 +v 107.526413 109.902161 -4.371441 +v 107.563560 110.112267 -4.317392 +v 107.824005 110.858505 -4.408923 +v 108.072060 110.865387 -4.627129 +v 107.873337 111.071869 -4.500808 +v 107.671715 111.185608 -4.450884 +v 107.475281 111.289795 -4.479084 +v 105.022705 109.493622 -4.887904 +v 104.846115 109.765907 -4.884669 +v 104.769356 110.036293 -4.887146 +v 107.817123 109.886459 -4.480720 +v 108.074448 110.121819 -4.631178 +v 107.852768 110.164177 -4.424860 +v 107.720177 111.648094 -4.889249 +v 108.228195 111.130844 -4.894429 +v 108.065651 109.590736 -4.887218 +v 108.229324 109.983955 -4.889183 +vn 0.9920 0.0812 -0.0970 +vn 0.6018 -0.4497 -0.6600 +vn 0.9337 0.2674 -0.2381 +vn 0.9731 0.0429 -0.2264 +vn 0.9485 0.1342 -0.2870 +vn 0.9469 0.2018 -0.2504 +vn 0.9710 0.1956 -0.1376 +vn 0.9804 0.1878 -0.0594 +vn 0.9762 0.2145 -0.0332 +vn 0.5118 0.8590 -0.0140 +vn 0.9281 0.0167 -0.3721 +vn 0.8325 -0.1217 -0.5406 +vn 0.8513 0.0321 -0.5237 +vn 0.7272 -0.3517 -0.5895 +vn 0.7791 -0.4597 -0.4263 +vn 0.7649 -0.5738 -0.2927 +vn 0.5350 -0.8094 -0.2422 +vn 0.9657 0.0398 -0.2564 +vn 0.9332 0.2965 -0.2032 +vn 0.9457 0.1807 -0.2700 +vn -0.9906 -0.0633 0.1214 +vn -0.9910 -0.1074 0.0803 +vn -0.3957 -0.0295 -0.9179 +vn -0.9911 -0.0264 0.1303 +vn -0.9924 -0.1060 0.0619 +vn -0.4882 -0.1599 -0.8580 +vn -0.7682 0.6138 0.1818 +vn -0.3601 -0.9007 0.2431 +vn -0.6369 -0.3816 -0.6698 +vn -0.9466 -0.0517 -0.3182 +vn -0.4449 0.2629 -0.8561 +vn -0.9874 -0.1369 0.0794 +vn -0.9897 -0.0444 0.1363 +vn -0.3555 -0.2831 -0.8908 +vn -1.0000 0.0046 0.0082 +vn -0.9109 0.3685 -0.1854 +vn -0.9745 0.0170 -0.2238 +vn -0.9829 0.0783 -0.1667 +vn -0.9783 0.1467 -0.1462 +vn -0.9817 0.1699 -0.0861 +vn -0.4923 0.8653 0.0941 +vn -0.9968 -0.0521 0.0598 +vn -0.9575 -0.0683 -0.2801 +vn -0.2931 0.5239 -0.7998 +vn -0.7047 -0.4149 -0.5756 +vn -0.7850 -0.5208 -0.3354 +vn -0.5611 -0.7657 -0.3143 +vn -0.9785 0.1906 -0.0789 +vn -0.9512 0.0496 -0.3047 +vn -0.9325 0.2992 -0.2024 +vn -0.9728 0.1206 -0.1976 +vn 0.9994 -0.0268 0.0214 +vn 0.9935 -0.0600 0.0970 +vn 0.9586 0.2737 -0.0784 +vn 0.9946 -0.0284 0.1003 +vn 0.9934 -0.0908 0.0699 +vn 0.7472 -0.4807 -0.4588 +vn 0.7506 0.5881 0.3011 +vn 0.4485 -0.8426 0.2982 +vn 0.2496 -0.7543 -0.6072 +vn 0.1466 -0.5754 -0.8046 +vn 0.9850 -0.0302 0.1699 +vn -0.5917 0.8045 0.0517 +vn -0.9461 0.3170 -0.0665 +vn -0.2560 0.8676 -0.4262 +vn 0.4510 0.8110 -0.3727 +vn 0.5618 0.8259 -0.0487 +vn 0.0839 0.2262 -0.9705 +vn 0.5987 0.7874 -0.1466 +vn 0.0583 0.1160 -0.9915 +vn 0.1382 0.1175 -0.9834 +vn -0.2658 0.5934 -0.7598 +vn -0.8802 0.4741 0.0229 +vn 0.8848 0.4654 0.0229 +vn -0.9732 0.1695 -0.1557 +vn 0.2283 0.0571 -0.9719 +vn 0.9956 0.0559 0.0753 +vn -0.4148 0.5956 -0.6879 +vn -0.9714 -0.2293 -0.0613 +vn 0.1380 -0.0164 -0.9903 +vn 0.9071 -0.4157 -0.0662 +vn -0.6685 0.1430 -0.7298 +vn -0.7699 -0.6350 -0.0633 +vn 0.2452 -0.1952 -0.9496 +vn 0.6687 -0.7413 -0.0574 +vn -0.6375 -0.2275 -0.7361 +vn -0.4299 -0.8988 -0.0853 +vn 0.3558 -0.5267 -0.7721 +vn 0.3764 -0.9224 -0.0865 +vn -0.2663 -0.5080 -0.8192 +vn -0.4096 -0.8924 -0.1896 +vn 0.3915 -0.7531 -0.5288 +vn -0.1692 -0.8725 -0.4583 +vn 0.0079 -0.9954 0.0950 +vn -0.1047 -0.4505 -0.8866 +vn -0.0106 -0.9752 0.2209 +vn 0.0806 -0.9950 -0.0583 +vn 0.1753 -0.9845 0.0032 +vn 0.1231 -0.9806 0.1526 +vn -0.8554 -0.1082 -0.5066 +vn -0.9487 -0.3148 -0.0308 +vn -0.6724 0.2859 -0.6827 +vn -0.7483 0.2942 -0.5946 +vn -0.8892 -0.2576 -0.3781 +vn -0.6010 0.2199 -0.7684 +vn -0.9055 0.4229 0.0352 +vn -0.0937 0.0142 -0.9955 +vn -0.5878 0.6531 -0.4774 +vn -0.9004 -0.3545 -0.2523 +vn -0.5437 -0.1017 -0.8331 +vn -0.7317 -0.6601 0.1699 +vn -0.9432 0.3271 -0.0574 +vn -0.9660 0.1875 -0.1779 +vn -0.8132 -0.3955 -0.4270 +vn -0.3036 -0.5213 -0.7976 +vn -0.6085 -0.6356 -0.4750 +vn -0.6251 0.2255 -0.7473 +vn -0.9242 -0.3819 0.0065 +vn -0.9871 0.0371 -0.1558 +vn -0.3262 0.1708 -0.9297 +vn -0.9894 -0.0399 -0.1393 +vn -0.9874 -0.0305 -0.1554 +vn 0.9925 -0.1221 -0.0114 +vn 0.8552 -0.1387 -0.4994 +vn 0.8017 0.1510 -0.5784 +vn 0.7183 0.4254 -0.5505 +vn 0.8891 -0.2646 -0.3735 +vn 0.7702 0.6137 0.1737 +vn 0.9876 -0.1528 -0.0353 +vn 0.9848 -0.1304 -0.1144 +vn 0.8989 -0.3608 -0.2485 +vn 0.4511 0.7410 -0.4974 +vn 0.9859 -0.1098 -0.1265 +vn 0.9529 0.3019 -0.0278 +vn 0.2837 0.8082 -0.5162 +vn 0.9097 -0.4088 -0.0736 +vn 0.8473 -0.4139 -0.3328 +vn 0.0844 0.3604 -0.9290 +vn 0.0606 -0.8022 -0.5940 +vn 0.9936 -0.0004 -0.1127 +vn 0.4029 0.0688 -0.9127 +vn 0.6895 -0.5516 -0.4693 +vn 0.9848 0.0253 -0.1716 +vn 0.9900 0.0720 -0.1212 +vn -0.3844 0.4514 -0.8053 +vn -0.9877 0.1561 -0.0037 +vn -0.5852 0.8098 -0.0433 +vn -0.8012 -0.5853 -0.1242 +vn -0.7283 0.3673 -0.5785 +vn -0.9885 -0.1409 -0.0548 +vn -0.4707 0.7335 -0.4903 +vn -0.9351 0.3488 -0.0632 +vn -0.9809 0.1280 -0.1461 +vn -0.9887 -0.1100 -0.1021 +vn -0.0479 0.0483 -0.9977 +vn -0.0496 -0.3698 -0.9278 +vn -0.8137 -0.5811 -0.0178 +vn -0.9876 0.0341 -0.1532 +vn -0.2561 -0.4032 -0.8785 +vn -0.9878 -0.0326 -0.1521 +vn -0.0472 0.0666 -0.9967 +vn -0.0346 0.2861 -0.9576 +vn -0.0487 0.4822 -0.8747 +vn -0.0612 0.6733 -0.7368 +vn -0.0750 0.8548 -0.5135 +vn -0.9252 0.1862 0.3307 +vn -0.0703 0.9962 -0.0524 +vn -0.7411 0.4204 -0.5235 +vn -0.0446 0.9802 -0.1932 +vn -0.0370 0.0385 -0.9986 +vn 0.0020 0.9298 -0.3681 +vn 0.0106 0.7624 -0.6470 +vn 0.0141 0.5126 -0.8585 +vn -0.0301 0.2692 -0.9626 +vn -0.3306 -0.2545 -0.9088 +vn -0.3960 -0.1019 -0.9126 +vn -0.4688 0.0615 -0.8812 +vn -0.4959 0.2868 -0.8196 +vn -0.4387 0.4949 -0.7500 +vn -0.4951 0.7891 -0.3637 +vn -0.9761 0.1766 -0.1267 +vn -0.1406 0.9763 -0.1648 +vn -0.1290 0.0492 -0.9904 +vn -0.0382 0.9345 -0.3540 +vn -0.0060 0.8080 -0.5891 +vn -0.0205 0.6531 -0.7570 +vn 0.0759 0.4843 -0.8716 +vn 0.0071 0.3211 -0.9470 +vn -0.0150 0.7617 -0.6478 +vn 0.1378 0.0835 -0.9869 +vn 0.3345 0.3922 -0.8569 +vn 0.2040 -0.4134 -0.8874 +vn 0.8063 0.5671 0.1681 +vn 0.3041 -0.2309 -0.9242 +vn 0.5791 0.7499 0.3198 +vn 0.1265 0.7096 -0.6932 +vn 0.1555 0.7933 -0.5887 +vn 0.0542 0.9956 -0.0771 +vn -0.0003 0.9540 -0.2999 +vn -0.0084 0.8187 -0.5742 +vn -0.0133 0.5931 -0.8050 +vn 0.0299 0.3360 -0.9414 +vn 0.1889 0.0388 -0.9812 +vn -0.0295 0.1056 -0.9940 +vn -0.0074 -0.3114 -0.9503 +vn -0.0808 -0.5183 -0.8514 +vn -0.1392 -0.7378 -0.6605 +vn 0.0072 0.0535 -0.9985 +vn -0.7423 -0.4666 -0.4808 +vn -0.0198 -0.3379 -0.9410 +vn 0.0304 0.1613 -0.9864 +vn 0.3301 -0.0433 -0.9430 +vn 0.3403 0.0606 -0.9384 +vn -0.3636 -0.4013 -0.8407 +vn 0.4200 -0.6231 -0.6598 +vn 0.5694 -0.2176 -0.7928 +vn 0.2530 0.1935 -0.9479 +vn -0.1868 0.0902 -0.9782 +vn -0.2151 -0.0731 -0.9738 +vn 0.4336 0.0121 -0.9010 +vn 0.5718 -0.2655 -0.7762 +vn 0.6814 -0.4392 -0.5855 +vn -0.5514 -0.4797 -0.6826 +vn -0.8204 -0.4581 -0.3423 +vn -0.2729 -0.7005 -0.6594 +vn 0.2794 -0.5995 -0.7500 +vn 0.9771 -0.0909 -0.1923 +vn -0.3305 0.5979 -0.7303 +vn 0.2651 0.0849 -0.9605 +vn -0.7049 -0.3303 0.6277 +vn -0.2518 -0.5613 0.7884 +vn 0.0467 -0.5191 0.8534 +vn 0.4282 -0.5843 -0.6894 +vn -0.4065 -0.0544 0.9121 +vn -0.1843 -0.0101 0.9828 +vn 0.6804 -0.4921 -0.5430 +vn 0.4645 -0.7963 0.3875 +vn -0.6589 -0.7150 0.2337 +vn 0.3565 0.0037 0.9343 +vn 0.7057 -0.4267 -0.5655 +vn 0.0161 -0.0763 0.9970 +vn 0.6101 -0.4849 0.6266 +vn -0.2430 0.0437 0.9690 +vn 0.0186 -0.1041 0.9944 +vn -0.6878 -0.0115 0.7258 +vn 0.0396 -0.9992 0.0068 +vn -0.4970 -0.4408 -0.7475 +vn 0.1224 -0.9814 0.1476 +vn -0.3535 -0.4946 0.7940 +vn 0.2330 -0.8638 0.4467 +vn 0.3826 0.0143 0.9238 +vn 0.7930 0.0262 0.6086 +vn -0.8614 -0.1530 0.4843 +vn -0.5416 0.1990 0.8168 +vn 0.0190 -0.7015 0.7124 +vn -0.8469 -0.2367 0.4763 +vn 0.6602 -0.7499 0.0418 +vn -0.3824 -0.3381 0.8600 +vn 0.0359 -0.9967 -0.0728 +vn -0.0190 -0.4913 -0.8708 +vn 0.6076 -0.5349 -0.5871 +vn -0.1445 -0.6796 -0.7192 +vn 0.7694 -0.5848 -0.2570 +vn 0.0791 -0.9922 0.0966 +vn -0.0741 -0.9917 0.1055 +vn -0.0939 -0.9916 0.0889 +vn 0.0791 -0.9937 0.0795 +vn -0.0983 -0.0488 0.9940 +vn 0.0889 -0.0424 0.9951 +vn 0.0011 0.5922 0.8058 +vn 0.1951 0.7562 0.6246 +vn 0.1708 0.9806 -0.0967 +vn 0.1946 0.9708 -0.1406 +vn 0.9714 0.1605 -0.1751 +vn 0.7800 0.4934 -0.3849 +vn 0.7548 0.4782 -0.4490 +vn 0.6213 -0.4462 -0.6441 +vn 0.6922 0.0628 -0.7190 +vn 0.9919 -0.1028 -0.0746 +vn 0.7951 0.6012 -0.0802 +vn 0.9854 -0.1471 -0.0860 +vn 0.7515 0.1291 -0.6470 +vn -0.5026 -0.8027 -0.3210 +vn -0.7700 0.5639 -0.2986 +vn 0.1552 0.7647 -0.6255 +vn 0.0001 -0.8577 -0.5141 +vn 0.1048 0.8920 -0.4397 +vn 0.0132 -0.6558 -0.7548 +vn -0.3474 0.8939 -0.2832 +vn -0.6192 0.5576 -0.5529 +vn -0.1386 0.8681 -0.4766 +vn -0.2935 -0.9067 -0.3028 +vn -0.2088 -0.8870 -0.4120 +vn -0.5285 -0.7945 -0.2992 +vn -0.7378 0.5897 -0.3285 +vn 0.0433 0.6882 -0.7242 +vn -0.1319 -0.9087 -0.3960 +vn -0.4585 0.5577 -0.6919 +vn 0.0391 -0.7506 -0.6596 +vn -0.1856 -0.9177 -0.3513 +vn 0.0090 0.9656 -0.2598 +vn -0.1594 -0.8743 -0.4585 +vn -0.3534 0.5757 -0.7374 +vn 0.4463 0.8777 -0.1743 +vn 0.7802 -0.6250 0.0260 +vn 0.2449 0.9441 -0.2209 +vn 0.1224 0.9572 -0.2623 +vn -0.4905 0.5999 -0.6321 +vn -0.2384 0.8317 -0.5015 +vn 0.3054 -0.9283 -0.2122 +vn 0.1525 -0.9549 -0.2549 +vn 0.0760 -0.9547 -0.2877 +vn -0.3933 -0.8687 -0.3012 +vn -0.3055 -0.8536 -0.4219 +vn -0.2623 -0.7708 -0.5805 +vn -0.0903 0.9604 -0.2637 +vn 0.1725 0.9556 -0.2389 +vn -0.3595 0.9319 -0.0488 +vn 0.2061 0.9783 -0.0191 +vn -0.9638 0.1520 -0.2190 +vn -0.3195 -0.8734 -0.3676 +vn 0.9457 -0.2205 -0.2389 +vn 0.9287 0.3031 -0.2135 +vn 0.2658 0.9241 -0.2746 +vn 0.1868 0.8580 -0.4785 +vn 0.2318 0.7231 -0.6506 +vn 0.2471 0.6002 -0.7607 +vn 0.2162 0.4633 -0.8594 +vn 0.1954 0.2725 -0.9421 +vn 0.3193 0.1942 -0.9276 +vn 0.2004 0.3560 -0.9127 +vn 0.1926 0.4902 -0.8501 +vn 0.2058 0.6339 -0.7455 +vn 0.2500 0.7263 -0.6403 +vn 0.2501 0.8159 -0.5214 +vn 0.1950 0.8934 -0.4047 +vn 0.2937 0.9173 -0.2691 +vn 0.8270 0.0315 -0.5614 +vn 0.4943 0.0604 -0.8672 +vn 0.7208 0.6383 -0.2703 +vn 0.6000 0.7923 -0.1103 +vn 0.8366 0.5244 -0.1586 +vn 0.5952 0.7158 -0.3652 +vn 0.5603 0.6635 -0.4958 +vn 0.8844 0.3440 -0.3155 +vn 0.6521 0.4920 -0.5768 +vn 0.8799 0.2057 -0.4284 +vn 0.6119 0.3778 -0.6949 +vn 0.8046 0.1536 -0.5736 +vn 0.5483 0.2411 -0.8007 +vn 0.5372 0.8366 -0.1073 +vn 0.8134 0.5717 -0.1071 +vn 0.6838 0.2178 -0.6964 +vn 0.7416 0.0303 -0.6702 +vn 0.6115 0.2834 -0.7387 +vn 0.6240 0.4357 -0.6487 +vn 0.6289 0.5508 -0.5487 +vn 0.6932 0.5633 -0.4497 +vn 0.6681 0.6813 -0.2991 +vn 0.6036 0.7192 -0.3441 +vn 0.1931 0.7944 -0.5759 +vn -0.3405 0.7231 -0.6010 +vn 0.0589 0.5723 -0.8180 +vn 0.0723 0.4941 -0.8664 +vn 0.9910 -0.0098 -0.1333 +vn 0.9869 0.0205 -0.1601 +vn 0.5535 0.7889 -0.2670 +vn 0.5841 0.5781 -0.5698 +vn -0.4374 0.8535 -0.2832 +vn -0.7218 0.6326 -0.2808 +vn 0.0816 -0.9951 -0.0563 +vn -0.2930 -0.9496 -0.1118 +vn 0.9867 -0.1623 -0.0133 +vn 0.7870 0.5924 0.1721 +vn 0.9859 -0.1097 -0.1264 +vn 0.9222 0.3852 -0.0343 +vn 0.6309 -0.6752 -0.3823 +vn 0.2747 0.1901 -0.9425 +vn 0.3086 -0.4397 -0.8435 +vn 0.9936 -0.0008 -0.1131 +vn 0.8547 0.0054 -0.5190 +vn 0.9848 0.0253 -0.1718 +vn 0.9901 0.0720 -0.1208 +vn -0.9701 -0.2416 -0.0245 +vn -0.6725 0.2859 -0.6827 +vn -0.9054 0.4231 0.0347 +vn -0.0938 0.0142 -0.9955 +vn -0.9629 0.2657 -0.0464 +vn -0.9660 0.1875 -0.1778 +vn -0.8132 -0.3955 -0.4269 +vn -0.0520 0.2346 -0.9707 +vn -0.9242 -0.3818 0.0068 +vn -0.9871 0.0370 -0.1559 +vn -0.1178 0.1852 -0.9756 +vn -0.9896 -0.0312 -0.1406 +vn 0.9958 0.0904 0.0124 +vn 0.8786 -0.4701 -0.0840 +vn 0.9085 0.4160 -0.0386 +vn 0.0868 0.1111 -0.9900 +vn 0.6318 -0.5678 -0.5277 +vn 0.7987 0.5674 0.2002 +vn 0.0436 0.3583 -0.9326 +vn 0.5820 0.7500 0.3143 +vn 0.1593 0.7164 -0.6793 +vn 0.1968 0.8005 -0.5662 +vn 0.0592 0.9952 -0.0773 +vn 0.2400 0.7604 -0.6034 +vn 0.0435 0.1573 -0.9866 +vn -0.0002 0.9540 -0.2999 +vn -0.0085 0.8187 -0.5742 +vn -0.0131 0.5931 -0.8050 +vn 0.0298 0.3361 -0.9414 +vn 0.6001 0.7241 -0.3398 +vn 0.9670 -0.0701 -0.2450 +vn 0.5738 0.8182 -0.0364 +vn 0.3820 0.6362 -0.6703 +vn 0.4795 0.3998 -0.7811 +vn 0.2756 0.8529 -0.4434 +vn 0.4429 0.8965 -0.0122 +vn 0.8382 0.3940 -0.3772 +vn 0.1939 0.1584 -0.9681 +vn 0.0454 0.9473 -0.3171 +vn 0.0395 0.8369 -0.5460 +vn 0.0056 0.6306 -0.7761 +vn -0.0095 0.3820 -0.9241 +vn 0.0208 0.7414 -0.6708 +vn -0.1385 0.0709 -0.9878 +vn -0.7392 0.4203 -0.5262 +vn -0.0419 0.1875 -0.9814 +vn -0.2726 -0.2717 -0.9230 +vn -0.3283 -0.1469 -0.9331 +vn -0.3593 0.0082 -0.9332 +vn -0.3112 0.2755 -0.9095 +vn -0.5539 0.6343 0.5393 +vn -0.1207 0.8477 -0.5165 +vn 0.0021 0.9298 -0.3681 +vn 0.0104 0.7625 -0.6469 +vn 0.0144 0.5126 -0.8585 +vn -0.1436 0.0856 -0.9859 +vn -0.1883 0.9562 -0.2243 +vn 0.9683 -0.0556 0.2436 +vn 0.8507 -0.0899 0.5179 +vn 0.5787 -0.0620 0.8132 +vn -0.2671 -0.7907 -0.5508 +vn 0.3518 -0.0874 0.9320 +vn -0.3262 -0.6026 -0.7283 +vn -0.1064 -0.7898 -0.6040 +vn 0.1262 -0.4981 -0.8579 +vn -0.2254 -0.5350 -0.8142 +vn 0.0109 -0.3728 -0.9279 +vn -0.3469 -0.6102 -0.7122 +vn -0.3483 0.9321 -0.0991 +vn -0.1471 0.9833 -0.1070 +vn 0.5051 0.8427 -0.1866 +vn 0.7700 -0.5639 -0.2986 +vn -0.0209 0.7682 -0.6399 +vn -0.0333 -0.8501 -0.5256 +vn -0.0132 0.6558 -0.7548 +vn -0.1382 -0.9349 -0.3268 +vn 0.2935 0.9067 -0.3028 +vn 0.2087 0.8870 -0.4120 +vn 0.3474 -0.8939 -0.2832 +vn 0.6192 -0.5576 -0.5529 +vn 0.1386 -0.8681 -0.4766 +vn -0.8577 -0.2894 -0.4249 +vn 0.5320 0.8269 -0.1824 +vn 0.7378 -0.5897 -0.3285 +vn 0.3094 0.7999 -0.5142 +vn -0.0582 -0.7687 -0.6370 +vn -0.0390 0.7506 -0.6596 +vn 0.4585 -0.5577 -0.6919 +vn 0.3236 -0.3294 -0.8870 +vn 0.1856 0.9177 -0.3513 +vn 0.2874 0.6812 -0.6733 +vn 0.3534 -0.5757 -0.7374 +vn -0.4463 -0.8777 -0.1743 +vn -0.7802 0.6250 0.0260 +vn -0.3054 0.9283 -0.2122 +vn -0.1525 0.9549 -0.2549 +vn -0.0760 0.9547 -0.2877 +vn 0.3933 0.8687 -0.3012 +vn 0.3055 0.8536 -0.4219 +vn 0.2623 0.7708 -0.5805 +vn -0.2448 -0.9441 -0.2209 +vn -0.1224 -0.9572 -0.2623 +vn 0.4905 -0.5999 -0.6321 +vn 0.2384 -0.8317 -0.5015 +vn -0.2144 0.9271 -0.3074 +vn 0.2796 0.9206 -0.2725 +vn -0.2872 0.9578 0.0099 +vn 0.1571 0.9865 -0.0457 +vn 0.9798 -0.1557 -0.1253 +vn -0.9777 0.1621 -0.1335 +vn -0.9031 -0.2745 -0.3303 +vn -0.1535 0.9497 -0.2731 +vn -0.2343 0.8726 -0.4285 +vn -0.2452 0.7812 -0.5741 +vn -0.2320 0.6514 -0.7224 +vn -0.3427 0.5300 -0.7756 +vn -0.2257 0.3826 -0.8959 +vn -0.2328 0.2181 -0.9477 +vn -0.2384 0.1889 -0.9526 +vn -0.2877 0.3440 -0.8938 +vn -0.2083 0.4816 -0.8513 +vn -0.1907 0.6482 -0.7372 +vn -0.3484 0.7178 -0.6027 +vn -0.3096 0.7939 -0.5233 +vn -0.1098 0.9111 -0.3973 +vn -0.3468 0.9091 -0.2307 +vn -0.8143 0.0411 -0.5790 +vn -0.3208 0.8786 -0.3538 +vn -0.5247 0.0479 -0.8500 +vn -0.8016 0.5658 -0.1932 +vn -0.8069 0.5808 -0.1079 +vn -0.4730 0.8386 -0.2703 +vn -0.6180 0.6699 -0.4115 +vn -0.8696 0.3492 -0.3490 +vn -0.5700 0.5988 -0.5626 +vn -0.7929 0.3443 -0.5028 +vn -0.5685 0.3762 -0.7316 +vn -0.8584 0.1886 -0.4771 +vn -0.6165 0.2086 -0.7592 +vn -0.5413 0.8349 -0.1000 +vn -0.7779 0.6254 -0.0616 +vn -0.7006 0.2137 -0.6808 +vn -0.7717 0.0270 -0.6354 +vn -0.5042 0.0574 -0.8617 +vn -0.7676 0.2603 -0.5858 +vn -0.6054 0.3715 -0.7039 +vn -0.8299 0.3209 -0.4563 +vn -0.5289 0.5446 -0.6509 +vn -0.7639 0.4566 -0.4561 +vn -0.7612 0.5615 -0.3245 +vn -0.4511 0.8117 -0.3709 +vn -0.7518 0.6113 -0.2473 +vn -0.3471 0.6279 -0.6966 +vn 0.2188 0.6642 -0.7148 +vn 0.0084 0.5014 -0.8652 +vn -0.4899 0.6959 -0.5250 +vn -0.5400 0.7976 -0.2688 +vn -0.6344 0.6697 -0.3860 +vn -0.8200 0.5001 -0.2783 +vn 0.6753 0.6510 -0.3467 +vn 0.8330 0.5239 -0.1779 +vn 0.6572 0.7537 -0.0046 +vn -0.0869 -0.7979 0.5965 +vn 0.0840 -0.6213 0.7790 +vn -0.0987 -0.5342 0.8396 +vn 0.0715 -0.5710 0.8179 +vn 0.0741 -0.7491 0.6583 +vn -0.1043 -0.7855 0.6100 +vn 0.0901 -0.8782 0.4698 +vn -0.0666 -0.9165 0.3944 +vn 0.0776 -0.9632 0.2572 +vn -0.1179 -0.9685 0.2194 +vn 0.0809 -0.9825 0.1679 +vn -0.0723 -0.9695 0.2343 +vn 0.0959 -0.9609 0.2599 +vn 0.1256 -0.9314 0.3415 +vn -0.1324 -0.9176 0.3747 +vn 0.0638 -0.8920 0.4475 +vn -0.0775 -0.8322 0.5490 +vn 0.1112 -0.8268 0.5513 +vn -0.1225 -0.7035 0.7001 +vn 0.1414 -0.7425 0.6548 +vn 0.0870 -0.5929 0.8006 +vn -0.1113 -0.5847 0.8036 +vn -0.1248 -0.4712 0.8732 +vn 0.0898 -0.4520 0.8875 +vn -0.0746 -0.3393 0.9377 +vn 0.1310 -0.3339 0.9335 +vn -0.0706 -0.1759 0.9819 +vn 0.0823 -0.1589 0.9839 +vn 0.9583 -0.0415 0.2828 +vn 0.8798 -0.0367 0.4740 +vn 0.7673 -0.0663 0.6379 +vn 0.6185 -0.0830 0.7814 +vn 0.4457 -0.0898 0.8906 +vn 0.1825 -0.0993 0.9782 +vn 0.9565 -0.1578 0.2455 +vn 0.8726 -0.1517 0.4643 +vn 0.8870 -0.2294 0.4009 +vn 0.7699 -0.1932 0.6083 +vn 0.7689 -0.3152 0.5563 +vn 0.8677 -0.3590 0.3438 +vn 0.6278 -0.2401 0.7404 +vn 0.9655 -0.2017 0.1648 +vn 0.9088 -0.3337 0.2505 +vn 0.5896 -0.4065 0.6979 +vn 0.7722 -0.4337 0.4644 +vn 0.4499 -0.2766 0.8492 +vn 0.6320 -0.5350 0.5606 +vn 0.2042 -0.3021 0.9311 +vn 0.3605 -0.4663 0.8078 +vn 0.7791 -0.5213 0.3481 +vn 0.4468 -0.6187 0.6462 +vn 0.2603 -0.5865 0.7670 +vn 0.9341 -0.3268 0.1438 +vn 0.6280 -0.6534 0.4227 +vn 0.9844 -0.1626 0.0672 +vn 0.2659 -0.7331 0.6260 +vn 0.8377 -0.5101 0.1949 +vn 0.4451 -0.7521 0.4860 +vn 0.7132 -0.6414 0.2827 +vn 0.2694 -0.8421 0.4673 +vn 0.6033 -0.7526 0.2640 +vn 0.4489 -0.8285 0.3349 +vn 0.2685 -0.9232 0.2751 +vn 0.7844 -0.6087 0.1193 +vn 0.9109 -0.4047 0.0801 +vn 0.4325 -0.8908 0.1392 +vn 0.6842 -0.7234 0.0922 +vn 0.5615 -0.8217 0.0974 +vn 0.2670 -0.9580 0.1042 +vn 0.2514 -0.9651 0.0730 +vn 0.9624 -0.2651 0.0595 +vn 0.3177 -0.9416 0.1113 +vn 0.8805 -0.4684 0.0726 +vn 0.5483 -0.8324 0.0805 +vn 0.7390 -0.6687 0.0822 +vn 0.9621 -0.2453 0.1193 +vn 0.9165 -0.3751 0.1392 +vn 0.8286 -0.5378 0.1556 +vn 0.6898 -0.7070 0.1560 +vn 0.4867 -0.8543 0.1827 +vn 0.2608 -0.9410 0.2157 +vn 0.6807 -0.6897 0.2468 +vn 0.5228 -0.8099 0.2661 +vn 0.3490 -0.8825 0.3153 +vn 0.8273 -0.5003 0.2555 +vn 0.9821 -0.1330 0.1335 +vn 0.9289 -0.2614 0.2623 +vn 0.7208 -0.5950 0.3556 +vn 0.8555 -0.4171 0.3067 +vn 0.6027 -0.7017 0.3799 +vn 0.4486 -0.7822 0.4324 +vn 0.2573 -0.8473 0.4646 +vn 0.9388 -0.1509 0.3095 +vn 0.6981 -0.5480 0.4608 +vn 0.8264 -0.3557 0.4366 +vn 0.5309 -0.6437 0.5512 +vn 0.9768 -0.0023 0.2140 +vn 0.3500 -0.7160 0.6040 +vn 0.6681 -0.4697 0.5771 +vn 0.9207 -0.0697 0.3839 +vn 0.8283 -0.2446 0.5041 +vn 0.9171 -0.0053 0.3987 +vn 0.6912 -0.3549 0.6295 +vn 0.4490 -0.5462 0.7071 +vn 0.8273 -0.1343 0.5454 +vn 0.2595 -0.6185 0.7417 +vn 0.4992 -0.4146 0.7609 +vn 0.8175 -0.0418 0.5744 +vn 0.6939 -0.2545 0.6736 +vn 0.6937 -0.1658 0.7009 +vn 0.2596 -0.4788 0.8387 +vn 0.5344 -0.2575 0.8051 +vn 0.6453 -0.0988 0.7575 +vn 0.6506 -0.0209 0.7591 +vn 0.3449 -0.3426 0.8738 +vn 0.3616 -0.2433 0.9000 +vn 0.4468 -0.1260 0.8857 +vn 0.2402 -0.2235 0.9446 +vn 0.4558 -0.0265 0.8897 +vn 0.2506 -0.1084 0.9620 +vn 0.2730 -0.0247 0.9617 +vn 0.6759 0.5648 0.4734 +vn 0.4285 0.5636 0.7062 +vn -0.9259 -0.0299 0.3767 +vn -0.8300 -0.0574 0.5548 +vn -0.6989 -0.0792 0.7108 +vn -0.5311 -0.0888 0.8427 +vn -0.2473 -0.0660 0.9667 +vn -0.9365 -0.1177 0.3302 +vn -0.8805 -0.1228 0.4578 +vn -0.9064 -0.2652 0.3288 +vn -0.8641 -0.2444 0.4400 +vn -0.7675 -0.1854 0.6136 +vn -0.7735 -0.3065 0.5548 +vn -0.6208 -0.2297 0.7496 +vn -0.9317 -0.2893 0.2195 +vn -0.7456 -0.4461 0.4951 +vn -0.6226 -0.3869 0.6802 +vn -0.4451 -0.2772 0.8515 +vn -0.2399 -0.2826 0.9287 +vn -0.4472 -0.4448 0.7760 +vn -0.8291 -0.4582 0.3203 +vn -0.5435 -0.5648 0.6210 +vn -0.2533 -0.4256 0.8688 +vn -0.6620 -0.6125 0.4320 +vn -0.9443 -0.3105 0.1094 +vn -0.3150 -0.6153 0.7226 +vn -0.8644 -0.4574 0.2089 +vn -0.4570 -0.7344 0.5018 +vn -0.7736 -0.5861 0.2410 +vn -0.2460 -0.7418 0.6239 +vn -0.6134 -0.7333 0.2935 +vn -0.2625 -0.8700 0.4173 +vn -0.4204 -0.8606 0.2876 +vn -0.8517 -0.5138 0.1028 +vn -0.7093 -0.6933 0.1273 +vn -0.5713 -0.8087 0.1400 +vn -0.4311 -0.8961 0.1059 +vn -0.2588 -0.9605 0.1022 +vn -0.9637 -0.2619 0.0519 +vn -0.2697 -0.9591 0.0858 +vn -0.8818 -0.4646 0.0813 +vn -0.4649 -0.8814 0.0837 +vn -0.7676 -0.6339 0.0942 +vn -0.6210 -0.7754 0.1145 +vn -0.4509 -0.8788 0.1560 +vn -0.2547 -0.9547 0.1539 +vn -0.9259 -0.3521 0.1368 +vn -0.8325 -0.5227 0.1837 +vn -0.7015 -0.6788 0.2171 +vn -0.5410 -0.8034 0.2490 +vn -0.3588 -0.8938 0.2689 +vn -0.2013 -0.9391 0.2784 +vn -0.9667 -0.2024 0.1568 +vn -0.9186 -0.2991 0.2583 +vn -0.8258 -0.4824 0.2923 +vn -0.7034 -0.6469 0.2945 +vn -0.5352 -0.7689 0.3499 +vn -0.3450 -0.8589 0.3785 +vn -0.6587 -0.6272 0.4156 +vn -0.9594 -0.1376 0.2462 +vn -0.4510 -0.7481 0.4868 +vn -0.2548 -0.8142 0.5217 +vn -0.8321 -0.3865 0.3978 +vn -0.8755 -0.2325 0.4236 +vn -0.6975 -0.5207 0.4923 +vn -0.9577 -0.0463 0.2840 +vn -0.5321 -0.6191 0.5776 +vn -0.7319 -0.4011 0.5508 +vn -0.3472 -0.6919 0.6330 +vn -0.8903 -0.1039 0.4434 +vn -0.7365 -0.2661 0.6219 +vn -0.5354 -0.5092 0.6738 +vn -0.9220 -0.0148 0.3868 +vn -0.3453 -0.5736 0.7428 +vn -0.8061 -0.1447 0.5738 +vn -0.5696 -0.3946 0.7210 +vn -0.8336 -0.0420 0.5508 +vn -0.6805 -0.1839 0.7093 +vn -0.5302 -0.3204 0.7850 +vn -0.3568 -0.4532 0.8169 +vn -0.6592 -0.0983 0.7455 +vn -0.4972 -0.2332 0.8357 +vn -0.7213 -0.0242 0.6922 +vn -0.3072 -0.3675 0.8778 +vn -0.5701 -0.0288 0.8211 +vn -0.2493 -0.2664 0.9311 +vn -0.4463 -0.1410 0.8837 +vn -0.4445 -0.0551 0.8941 +vn -0.2569 -0.1500 0.9547 +vn -0.2713 -0.0441 0.9615 +vn -0.7218 0.5740 0.3866 +vn -0.5751 0.5748 0.5821 +vn -0.3749 0.5741 0.7279 +vn -0.1583 0.8202 -0.5498 +vn -0.2503 0.3166 0.9149 +vn -0.1880 0.1941 -0.9628 +vn -0.2403 0.8172 0.5239 +vn -0.3084 0.8384 -0.4494 +vn -0.4388 0.8161 0.3760 +vn -0.4313 0.8946 -0.1165 +vn -0.6273 0.7737 0.0881 +vn -0.7622 0.6094 0.2184 +vn -0.6270 0.0458 -0.7776 +vn -0.4624 0.2012 0.8635 +vn -0.5376 0.0933 -0.8381 +vn -0.5136 0.1165 0.8501 +vn -0.4093 -0.0473 -0.9112 +vn -0.5065 0.0189 0.8620 +vn -0.1398 -0.2016 -0.9694 +vn -0.1820 -0.0414 0.9824 +vn -0.4996 -0.1804 -0.8473 +vn -0.5114 -0.1672 0.8429 +vn -0.5667 -0.3009 -0.7670 +vn -0.5655 -0.4352 0.7006 +vn -0.4497 -0.5194 -0.7267 +vn -0.1564 -0.6134 0.7742 +vn -0.4700 -0.8803 -0.0643 +vn -0.6647 -0.7282 -0.1672 +vn -0.4533 -0.8808 0.1369 +vn -0.3835 -0.8621 -0.3313 +vn -0.2356 -0.9110 0.3386 +vn 0.3390 -0.6583 -0.6721 +vn 0.2508 -0.4557 0.8541 +vn 0.0477 -0.3578 -0.9326 +vn 0.4507 -0.6860 0.5712 +vn 0.5178 -0.1039 0.8491 +vn 0.5114 -0.1672 -0.8429 +vn 0.4062 0.4546 -0.7927 +vn 0.1955 0.2527 0.9476 +vn 0.6041 -0.2395 0.7601 +vn 0.5655 -0.4352 -0.7006 +vn 0.5115 -0.3640 0.7784 +vn 0.1564 -0.6134 -0.7741 +vn 0.7088 -0.7037 0.0497 +vn 0.4326 -0.8925 0.1272 +vn 0.4533 -0.8808 -0.1369 +vn 0.2394 -0.9182 0.3155 +vn 0.2356 -0.9110 -0.3386 +vn 0.4916 0.3735 0.7866 +vn 0.5203 0.1812 -0.8345 +vn 0.2923 0.9563 0.0089 +vn 0.2670 0.9637 -0.0066 +vn 0.0487 0.0433 -0.9979 +vn -0.5247 0.2586 0.8111 +vn 0.4623 0.8569 0.2281 +vn 0.4500 0.8587 -0.2453 +vn 0.5418 0.6951 0.4725 +vn 0.5706 0.6906 -0.4444 +vn 0.6266 0.4767 -0.6165 +vn 0.5585 0.3914 0.7314 +vn 0.5833 0.2662 -0.7674 +vn 0.5090 0.1785 0.8421 +vn 0.5136 0.1165 -0.8501 +vn -0.9629 0.0203 0.2693 +vn 0.8757 0.1019 -0.4720 +vn -0.8180 0.2841 -0.5001 +vn 0.9448 0.0076 0.3275 +vn 0.1102 0.1332 0.9849 +vn 0.0329 -0.0061 -0.9994 +vn -0.0718 0.0270 -0.9971 +vn -0.0865 0.9957 -0.0323 +vn 0.2137 0.0107 -0.9768 +vn 0.4077 -0.0082 -0.9131 +vn -0.2021 0.1729 0.9640 +vn 0.5893 0.0096 -0.8079 +vn 0.7444 0.0068 -0.6677 +vn -0.7857 0.0897 0.6120 +vn 0.8669 0.0096 -0.4984 +vn 0.9509 -0.0077 -0.3094 +vn -0.9632 0.0207 0.2679 +vn 0.3112 0.5457 0.7781 +vn -0.7478 0.2078 -0.6306 +vn 0.9440 0.0075 0.3300 +vn -0.4319 -0.2167 0.8755 +vn 0.0758 -0.4149 0.9067 +vn -0.0585 0.0436 0.9973 +vn -0.3037 -0.8085 0.5041 +vn -0.1543 -0.9859 0.0651 +vn -0.0132 -0.0032 0.9999 +vn -0.0089 0.2429 0.9700 +vn 0.0233 -0.0760 0.9968 +vn -0.0554 0.4966 0.8662 +vn 0.1653 -0.3477 0.9229 +vn 0.0208 -0.0156 0.9997 +vn -0.0208 0.0027 0.9998 +vn -0.2302 0.5681 0.7901 +vn 0.0252 -0.0078 0.9997 +vn -0.6596 0.0373 0.7507 +vn -0.1108 -0.2172 0.9698 +vn -0.0875 0.3693 0.9252 +vn -0.0294 0.4042 0.9142 +vn -0.5129 0.0738 0.8553 +vn 0.3727 0.3948 0.8398 +vn 0.5441 0.0911 0.8341 +vn 0.6470 0.2617 0.7162 +vn 0.4215 0.2524 0.8710 +vn 0.2015 0.8841 0.4215 +vn -0.2738 0.6382 0.7195 +vn 0.3644 0.8747 0.3197 +vn -0.2635 0.4225 0.8672 +vn 0.5020 0.8432 0.1923 +vn -0.5716 0.4816 0.6643 +vn -0.5969 0.6944 0.4018 +vn -0.6601 0.7476 0.0739 +vn 0.7663 0.6352 0.0961 +vn 0.6654 0.7448 0.0494 +vn -0.8082 0.5888 -0.0051 +vn 0.2159 -0.8512 -0.4783 +vn 0.2602 -0.0809 -0.9622 +vn 0.0237 0.0432 -0.9988 +vn 0.1229 0.1527 -0.9806 +vn -0.0079 -0.0041 -1.0000 +vn -0.2254 0.3545 -0.9075 +vn 0.0279 -0.0283 -0.9992 +vn -0.0753 -0.4319 -0.8988 +vn -0.0868 0.2213 -0.9713 +vn -0.0364 -0.0120 -0.9993 +vn 0.0131 -0.0046 -0.9999 +vn 0.2280 0.5737 -0.7867 +vn -0.0208 -0.0841 -0.9962 +vn 0.3217 0.5866 -0.7432 +vn 0.1933 0.6293 -0.7527 +vn 0.0805 0.3728 -0.9244 +vn -0.0286 0.3638 -0.9310 +vn -0.6493 -0.2839 -0.7056 +vn -0.3863 0.6260 -0.6775 +vn 0.6476 0.2871 -0.7058 +vn 0.6166 0.0734 -0.7839 +vn 0.8164 0.3362 -0.4695 +vn -0.1516 0.6240 -0.7666 +vn 0.3556 0.8764 -0.3248 +vn -0.2799 0.6578 -0.6992 +vn -0.6220 0.2615 -0.7381 +vn 0.4906 0.8175 -0.3017 +vn -0.8729 0.3420 -0.3479 +vn -0.8239 0.4906 -0.2837 +vn 0.6723 0.7398 0.0266 +vn 0.7429 -0.1573 -0.6506 +vn -0.6451 0.7568 -0.1050 +vn -0.7512 0.6601 -0.0003 +vn -0.1431 0.0010 -0.9897 +vn -0.3943 0.0114 -0.9189 +vn 0.2465 -0.1073 0.9632 +vn -0.5886 0.0088 -0.8084 +vn 0.6437 -0.0905 0.7599 +vn -0.7448 -0.0329 -0.6665 +vn -0.8665 0.0084 -0.4991 +vn 0.8969 -0.1084 0.4287 +vn -0.9510 -0.0109 -0.3091 +vn -0.9939 -0.0207 -0.1085 +vn 0.5265 0.0739 0.8469 +vn 0.8034 0.0796 0.5901 +vn -0.3518 -0.0120 -0.9360 +vn -0.5510 -0.0128 -0.8344 +vn -0.7354 -0.0183 -0.6774 +vn -0.8868 -0.0122 -0.4620 +vn -0.9659 0.0103 -0.2588 +vn 0.9302 -0.2933 0.2206 +vn -0.6954 -0.6811 0.2292 +vn -0.8739 -0.4015 -0.2739 +vn 0.7197 -0.6326 0.2860 +vn -0.5739 -0.7205 0.3892 +vn 0.5576 -0.7119 0.4270 +vn 0.4470 -0.7417 0.5000 +vn -0.4239 -0.6992 0.5757 +vn 0.2680 -0.6995 0.6625 +vn -0.3410 -0.6194 0.7072 +vn -0.2091 -0.5190 0.8288 +vn 0.1259 -0.4468 0.8857 +vn -0.0669 -0.3509 0.9340 +vn 0.0098 -0.2542 0.9671 +vn -0.8919 0.2350 0.3863 +vn 0.9026 0.0317 0.4294 +vn 0.2902 0.0016 -0.9570 +vn -0.3442 -0.0934 0.9342 +vn 0.3521 -0.0089 -0.9359 +vn 0.6513 0.0057 -0.7588 +vn -0.7263 -0.0930 0.6811 +vn 0.7382 0.0184 -0.6743 +vn 0.9517 -0.0009 -0.3069 +vn -0.9494 -0.0992 0.2978 +vn 0.9695 -0.0111 -0.2448 +vn 0.9993 -0.0230 0.0288 +vn -0.6469 -0.5799 0.4953 +vn 0.7731 -0.3785 0.5089 +vn 0.9148 -0.3016 0.2686 +vn -0.6464 -0.7295 0.2235 +vn -0.9118 -0.3744 -0.1686 +vn 0.6399 -0.7339 0.2279 +vn -0.5010 -0.7631 0.4083 +vn 0.5596 -0.7346 0.3836 +vn 0.4395 -0.6988 0.5643 +vn -0.3431 -0.7265 0.5954 +vn 0.2618 -0.6706 0.6941 +vn -0.2665 -0.6354 0.7248 +vn -0.1428 -0.5265 0.8381 +vn 0.1441 -0.5882 0.7958 +vn 0.0131 -0.3538 0.9352 +vn 0.0362 -0.4335 0.9004 +vn -0.0070 -0.2138 -0.9768 +vn 0.0452 0.3286 0.9434 +vn -0.0190 -0.4072 -0.9132 +vn 0.0598 0.4691 0.8811 +vn 0.0095 -0.5893 -0.8079 +vn -0.0067 -0.7439 -0.6683 +vn 0.0971 0.5383 0.8371 +vn -0.0081 -0.8666 -0.4990 +vn 0.0458 0.9208 0.3874 +vn -0.0074 -0.9510 -0.3092 +vn 0.0247 0.9948 0.0990 +vn 0.0017 -0.9946 -0.1038 +vn -0.0403 0.2600 0.9648 +vn 0.0040 -0.2845 -0.9587 +vn -0.0285 0.4530 0.8911 +vn -0.0489 -0.3500 -0.9355 +vn -0.0103 -0.6734 -0.7392 +vn -0.0367 0.6282 0.7772 +vn -0.0061 -0.7227 -0.6912 +vn -0.0640 0.7751 0.6285 +vn 0.0060 -0.7936 -0.6084 +vn -0.0409 0.8899 0.4543 +vn 0.0087 -0.9027 -0.4302 +vn -0.0392 0.9645 0.2612 +vn 0.0074 -0.9724 -0.2333 +vn -0.0424 0.9958 0.0813 +vn 0.0099 -0.9978 -0.0650 +vn 0.1115 0.9927 0.0460 +vn 0.4486 -0.8825 -0.1412 +vn 0.2919 0.8575 -0.4236 +vn 0.7061 -0.6477 0.2860 +vn 0.1338 0.9906 0.0279 +vn 0.7132 -0.5520 0.4319 +vn 0.0870 0.9850 0.1491 +vn 0.6935 -0.4261 0.5810 +vn 0.0258 0.9756 0.2180 +vn 0.6194 -0.3410 0.7072 +vn 0.5206 -0.1831 0.8339 +vn 0.2106 0.9601 0.1840 +vn 0.0097 0.9513 0.3081 +vn 0.3514 -0.0482 0.9350 +vn 0.3074 0.0266 0.9512 +vn 0.0042 -0.7433 0.6689 +vn 0.0251 -0.9886 0.1483 +vn -0.4844 0.6578 0.5768 +vn -0.2737 -0.9279 0.2534 +vn 0.0160 0.9985 0.0533 +vn 0.3726 0.4742 0.7977 +vn 0.3518 -0.0519 0.9347 +vn 0.2825 -0.0785 0.9561 +vn 0.1919 0.2451 0.9503 +vn 0.1778 -0.2591 0.9493 +vn 0.0788 0.0490 0.9957 +vn 0.0871 -0.4373 0.8951 +vn -0.3633 0.8293 0.4246 +vn 0.0221 -0.5491 0.8354 +vn -0.2634 -0.4974 0.8266 +vn 0.0812 0.5542 0.8284 +vn -0.5409 -0.1764 0.8224 +vn -0.3518 0.0520 0.9346 +vn -0.6022 0.6575 0.4527 +vn -0.4002 -0.9154 0.0429 +vn -0.2824 0.0801 0.9559 +vn -0.6364 -0.1430 0.7580 +vn -0.1787 0.2439 0.9532 +vn -0.3461 -0.4665 0.8140 +vn -0.0880 0.4191 0.9037 +vn -0.6108 -0.5678 0.5518 +vn -0.4615 0.8399 0.2855 +vn 0.4010 -0.1850 0.8972 +vn -0.0052 0.7543 0.6566 +vn -0.2506 -0.8918 -0.3767 +vn -0.0860 -0.9706 0.2247 +vn -0.5811 0.7744 -0.2504 +vn -0.9368 -0.0081 0.3498 +vn -0.0635 -0.9792 0.1928 +vn -0.8568 0.0592 0.5123 +vn -0.1457 -0.9866 0.0729 +vn -0.7631 0.1384 0.6313 +vn -0.0629 -0.9818 0.1791 +vn -0.6357 0.2645 0.7252 +vn -0.4948 0.3395 0.8000 +vn -0.0812 -0.9635 0.2551 +vn -0.1298 -0.9580 0.2557 +vn -0.2899 0.5112 0.8091 +vn 0.0000 0.0022 -1.0000 +vn 0.0000 -0.0022 -1.0000 +vn -0.1699 0.0020 -0.9855 +vn 0.4132 0.0011 -0.9106 +vn 0.1690 -0.0009 -0.9856 +vn -0.4132 -0.0011 -0.9106 +vn -0.9705 0.0104 -0.2410 +vn -0.0093 0.9704 0.2412 +vn -0.0035 0.9970 -0.0775 +vn -0.9970 0.0040 0.0777 +vn -0.0000 0.0022 1.0000 +vn -0.4132 0.0011 0.9106 +vn 0.0035 0.9970 0.0776 +vn 0.0093 0.9704 -0.2412 +vn -0.9705 -0.0104 0.2410 +vn -0.1699 -0.0020 0.9855 +vn -0.9970 -0.0040 -0.0776 +vn 0.9705 0.0104 0.2410 +vn 0.9970 0.0040 -0.0777 +vn 0.1699 0.0020 0.9855 +vn -0.0092 -0.9704 -0.2412 +vn -0.0035 -0.9970 0.0775 +vn 0.0000 -0.0022 1.0000 +vn 0.4136 -0.0024 0.9105 +vn 0.9970 -0.0066 0.0769 +vn 0.9701 -0.0063 -0.2428 +vn 0.0056 -0.9701 0.2428 +vn 0.0058 -0.9970 -0.0769 +vn -0.1774 -0.1097 0.9780 +vn -0.0573 0.6011 0.7971 +vn 0.0035 -0.1817 -0.9833 +vn 0.8924 0.4403 0.0989 +vn 0.3021 -0.4601 0.8349 +vn 0.3071 -0.1333 -0.9423 +vn 0.2528 -0.5069 -0.8241 +vn -0.1632 0.4213 0.8921 +vn -0.1790 0.2555 0.9501 +vn -0.0432 0.0673 -0.9968 +vn 0.0672 -0.6751 -0.7346 +vn -0.2329 0.8433 0.4843 +vn 0.0579 -0.9872 -0.1487 +vn -0.1370 -0.6192 0.7732 +vn -0.2729 0.9338 -0.2314 +vn 0.3231 0.7074 0.6286 +vn -0.0629 -0.6920 -0.7192 +vn 0.2925 0.4397 -0.8492 +vn 0.2768 0.5624 0.7791 +vn -0.3470 -0.9020 -0.2568 +vn -0.0354 0.9984 0.0444 +vn -0.0175 -0.2420 0.9701 +vn -0.2826 0.3815 -0.8801 +vn 0.0618 0.1160 0.9913 +vn -0.2645 0.1314 0.9554 +vn 0.0854 0.1242 -0.9886 +vn 0.3309 -0.3390 0.8807 +vn 0.0241 -0.9966 -0.0789 +vn -0.0903 0.9879 -0.1260 +vn 0.3658 0.8949 -0.2555 +vn 0.3088 0.1101 0.9447 +vn 0.2944 0.6273 0.7210 +vn 0.3156 0.5019 -0.8053 +vn -0.7530 -0.4986 0.4293 +vn -0.9215 0.3825 -0.0674 +vn 0.3799 0.4300 0.8190 +vn 0.0437 0.5417 -0.8394 +vn 0.0742 0.7846 -0.6156 +vn 0.6094 0.7305 -0.3081 +vn -0.1191 0.7738 -0.6221 +vn 0.3262 0.8689 -0.3722 +vn 0.8850 0.4253 0.1897 +vn -0.5623 0.7637 -0.3170 +vn -0.7647 0.6100 0.2076 +vn 0.4170 -0.2613 0.8705 +vn -0.2898 0.7806 0.5538 +vn -0.2916 0.1162 0.9494 +vn 0.4058 0.8403 0.3596 +vn -0.1486 0.5712 0.8072 +vn -0.1929 0.1690 0.9666 +vn 0.2167 0.1974 0.9561 +vn 0.3686 0.7282 0.5778 +vn 0.0055 0.1987 0.9800 +vn -0.0793 -0.1192 0.9897 +vn -0.1170 -0.1163 0.9863 +vn -0.1143 -0.0535 0.9920 +vn -0.0030 0.3043 0.9526 +vn -0.3575 0.0987 0.9287 +vn -0.5205 0.0145 0.8537 +vn -0.8512 0.3143 0.4203 +vn -0.6659 -0.2192 0.7131 +vn 0.4469 0.0688 0.8920 +vn -0.4272 0.0017 0.9042 +vn -0.1835 -0.1603 0.9699 +vn 0.2272 -0.0710 0.9712 +vn 0.7628 -0.5982 0.2457 +vn -0.0485 -0.1216 0.9914 +vn -0.0060 -0.1371 0.9905 +vn -0.2236 0.1306 0.9659 +vn 0.7221 0.6657 0.1879 +vn 0.0125 -0.1233 0.9923 +vn -0.7253 0.3198 0.6097 +vn -0.0596 0.9640 0.2593 +vn 0.4721 -0.8028 0.3642 +vn -0.5983 0.5061 0.6212 +vn 0.6290 0.5715 0.5271 +vn -0.4064 0.1664 0.8984 +vn 0.4640 0.8550 0.2317 +vn -0.1652 0.8486 0.5026 +vn 0.4945 0.5228 0.6943 +vn 0.4608 0.8566 -0.2323 +vn -0.1476 0.9875 0.0552 +vn -0.4717 0.8783 0.0781 +vn 0.3522 0.3562 -0.8655 +vn 0.1153 0.7156 -0.6890 +vn -0.8729 -0.3571 -0.3325 +vn -0.4273 -0.1053 -0.8980 +vn 0.5816 0.6016 -0.5476 +vn 0.7072 -0.0344 -0.7062 +vn -0.7399 0.5588 -0.3746 +vn 0.4612 -0.0886 -0.8828 +vn -0.0774 0.2297 -0.9702 +vn 0.4770 0.3362 -0.8120 +vn -0.0996 -0.0792 -0.9919 +vn -0.1044 0.2212 -0.9696 +vn 0.7337 0.5920 -0.3334 +vn -0.1616 0.1723 -0.9717 +vn -0.1471 -0.0119 -0.9891 +vn 0.2497 0.9295 -0.2716 +vn 0.6034 -0.7609 -0.2385 +vn 0.1454 0.0690 -0.9870 +vn 0.3671 -0.0704 -0.9275 +vn 0.2078 -0.0791 -0.9750 +vn -0.4818 0.2505 -0.8397 +vn -0.3694 0.0746 -0.9263 +vn -0.4707 0.0865 -0.8780 +vn 0.3746 0.0240 -0.9269 +vn 0.2240 0.1652 -0.9605 +vn 0.5310 -0.7852 -0.3187 +vn 0.0924 -0.2044 -0.9745 +vn -0.1048 -0.1288 -0.9861 +vn -0.1033 -0.0440 -0.9937 +vn -0.3020 0.1010 -0.9480 +vn -0.3347 0.0803 -0.9389 +vn -0.5344 0.0168 -0.8451 +vn -0.3730 -0.4769 -0.7959 +vn -0.6749 -0.5413 -0.5014 +vn 0.1584 0.1435 -0.9769 +vn -0.0955 0.2399 -0.9661 +vn 0.0689 0.1386 -0.9880 +vn -0.6049 0.5152 -0.6072 +vn 0.3845 -0.0596 0.9212 +vn 0.1233 0.2387 0.9632 +vn 0.5033 -0.7301 0.4623 +vn 0.9089 -0.0592 0.4127 +vn 0.2628 0.2694 0.9265 +vn -0.1928 0.3665 0.9102 +vn -0.5084 0.4923 0.7065 +vn -0.3641 -0.8937 -0.2623 +vn 0.5107 0.8597 -0.0118 +vn -0.3801 -0.8971 0.2251 +vn 0.3778 0.9258 0.0063 +vn -0.6089 -0.7677 0.1996 +vn 0.4177 0.0126 0.9085 +vn 0.8440 0.3912 -0.3670 +vn 0.0285 -0.4643 -0.8852 +vn 0.7876 0.3005 0.5380 +vn 0.9585 0.0976 0.2679 +vn 0.9153 -0.2151 -0.3404 +vn 0.7108 0.2735 0.6480 +vn 0.8270 -0.2982 0.4766 +vn 0.6412 -0.7544 -0.1402 +vn -0.2832 -0.6903 -0.6658 +vn 0.3077 -0.8121 -0.4958 +vn -0.2385 -0.9546 0.1787 +vn -0.0026 -0.8706 0.4919 +vn 0.1942 -0.4381 0.8777 +vn 0.4036 0.8322 0.3801 +vn -0.0203 -0.0770 0.9968 +vn -0.0986 0.0769 -0.9922 +vn -0.7024 -0.6885 -0.1803 +vn -0.2500 0.4307 0.8672 +vn -0.8130 0.3362 -0.4754 +vn -0.3444 -0.4509 0.8235 +vn 0.1643 0.2956 0.9411 +vn -0.0504 -0.4360 -0.8985 +vn 0.2247 0.1264 -0.9662 +vn 0.4787 0.2416 0.8441 +vn -0.0352 -0.8932 -0.4484 +vn 0.5928 0.7019 0.3949 +vn 0.1078 -0.6416 0.7594 +vn -0.2361 0.7161 0.6569 +vn -0.3978 0.7874 0.4709 +vn -0.0443 0.0849 -0.9954 +vn 0.0597 -0.8254 -0.5613 +vn -0.1073 -0.9862 0.1262 +vn 0.0882 0.9960 -0.0112 +vn 0.2887 0.0871 0.9534 +vn 0.4636 0.7454 -0.4790 +vn 0.3063 0.6186 0.7235 +vn 0.2758 0.3023 0.9125 +vn -0.0315 0.4058 -0.9134 +vn 0.2399 -0.9689 0.0600 +vn -0.1931 0.9144 -0.3559 +vn -0.0358 0.9993 0.0121 +vn 0.0226 -0.8559 0.5167 +vn -0.0223 -0.2222 0.9747 +vn -0.3781 0.4913 -0.7846 +vn 0.0277 0.2631 0.9644 +vn 0.4618 0.4339 -0.7737 +vn 0.9125 0.1247 0.3897 +vn -0.2785 0.1403 0.9501 +vn 0.0012 0.1809 -0.9835 +vn -0.0179 -0.3774 -0.9259 +vn -0.4375 0.5237 -0.7310 +vn 0.3496 0.8195 -0.4541 +vn -0.4266 0.9044 -0.0100 +vn 0.5404 0.7697 -0.3399 +vn -0.5713 0.6284 -0.5279 +vn -0.8789 0.4730 -0.0620 +vn 0.5530 0.8327 0.0266 +vn -0.1200 -0.0555 0.9912 +vn 0.7246 -0.6002 0.3386 +vn -0.3413 0.0876 0.9359 +vn 0.4179 0.5978 0.6840 +vn 0.8112 0.2510 0.5282 +vn 0.7770 0.1601 0.6088 +vn -0.2716 0.1932 0.9428 +vn -0.2936 0.4043 0.8662 +vn 0.1859 0.1724 0.9673 +vn 0.0619 -0.1274 0.9899 +vn 0.1047 -0.1289 0.9861 +vn 0.0205 -0.1051 0.9943 +vn 0.6737 0.7386 -0.0238 +vn 0.6086 -0.4048 0.6825 +vn 0.7109 0.2015 0.6738 +vn 0.3472 0.0917 0.9333 +vn 0.1669 0.3986 0.9018 +vn 0.0610 -0.3787 0.9235 +vn -0.4314 -0.0100 0.9021 +vn 0.4111 0.0453 0.9105 +vn 0.2534 -0.0559 0.9658 +vn -0.1965 -0.1503 0.9689 +vn 0.1543 -0.1246 0.9801 +vn -0.1256 -0.1994 0.9718 +vn -0.1735 -0.2964 0.9392 +vn -0.7734 0.1267 0.6211 +vn -0.0461 -0.2775 0.9596 +vn -0.7258 0.3186 0.6097 +vn 0.4846 -0.2957 0.8232 +vn 0.2750 0.1077 0.9554 +vn 0.1257 0.2185 0.9677 +vn 0.1254 0.2416 0.9622 +vn -0.4352 0.3601 0.8252 +vn 0.4587 0.8575 0.2331 +vn 0.1140 0.9674 0.2262 +vn -0.7303 0.6804 -0.0619 +vn 0.3552 0.6412 0.6803 +vn 0.7102 0.3827 0.5908 +vn -0.3902 0.9175 -0.0775 +vn 0.4364 0.8736 -0.2155 +vn -0.4094 0.0095 -0.9123 +vn 0.1501 -0.0346 -0.9881 +vn 0.8222 0.0931 -0.5615 +vn 0.7283 0.2841 -0.6236 +vn 0.5540 0.6255 -0.5494 +vn -0.6339 0.6346 -0.4421 +vn 0.2975 -0.8919 -0.3405 +vn -0.0764 0.2229 -0.9718 +vn 0.4676 0.3211 -0.8235 +vn 0.6929 -0.2151 -0.6882 +vn -0.1043 0.2210 -0.9697 +vn -0.1217 -0.0220 -0.9923 +vn 0.6522 0.7120 -0.2602 +vn -0.1605 0.1706 -0.9722 +vn 0.6142 0.7703 -0.1714 +vn -0.0902 -0.6777 -0.7298 +vn 0.1552 0.0718 -0.9853 +vn 0.7642 0.4631 -0.4489 +vn -0.4853 0.1297 -0.8647 +vn -0.3025 0.0012 -0.9531 +vn -0.2655 -0.0517 -0.9627 +vn -0.1935 -0.1438 -0.9705 +vn 0.2031 -0.1146 -0.9724 +vn 0.8369 0.2426 -0.4906 +vn 0.7025 -0.0271 -0.7112 +vn 0.1642 -0.9825 -0.0882 +vn 0.4465 -0.8900 -0.0922 +vn 0.9024 -0.4232 -0.0815 +vn 0.1232 0.1862 -0.9748 +vn 0.2452 0.1234 -0.9616 +vn 0.3757 0.0778 -0.9235 +vn 0.7486 0.0980 -0.6557 +vn 0.8838 -0.3091 -0.3513 +vn 0.2805 0.1844 -0.9420 +vn -0.2140 0.2682 -0.9393 +vn 0.1597 0.1464 -0.9763 +vn -0.0301 0.2040 -0.9785 +vn 0.4469 0.3647 -0.8169 +vn 0.8448 -0.5329 -0.0471 +vn -0.2843 -0.3423 0.8955 +vn 0.1538 -0.0796 0.9849 +vn 0.1655 0.6061 0.7779 +vn 0.4970 -0.2503 0.8309 +vn -0.5077 0.0707 0.8586 +vn 0.7949 -0.0062 0.6067 +vn -0.5828 0.6850 0.4371 +vn -0.1821 -0.8675 -0.4629 +vn -0.4633 0.8853 -0.0394 +vn -0.6735 0.7391 0.0098 +vn 0.3614 -0.8914 0.2736 +vn -0.7561 0.5703 0.3210 +vn 0.0212 -0.4219 0.9064 +vn 0.1352 -0.8799 -0.4555 +vn -0.7749 0.6034 -0.1882 +vn -0.8368 -0.3298 -0.4371 +vn -0.8575 0.0759 -0.5088 +vn -0.4479 0.4520 -0.7714 +vn -0.9502 0.2762 0.1440 +vn -0.9481 -0.3142 -0.0484 +vn -0.9179 0.0067 0.3967 +vn 0.4880 -0.8676 -0.0959 +vn 0.1885 -0.9391 -0.2875 +vn 0.0020 -0.7701 -0.6380 +vn 0.0590 -0.9412 0.3326 +vn 0.6093 -0.3630 0.7050 +vn -0.2399 -0.8572 0.4556 +vn 0.2424 -0.7338 0.6346 +vn -0.2180 -0.0467 0.9748 +vn -0.4459 -0.8211 0.3562 +vn 0.0886 -0.2538 0.9632 +vn -0.1373 -0.8149 0.5632 +vn 0.1149 -0.9779 0.1745 +vn 0.1181 -0.3784 0.9181 +vn -0.1379 -0.2151 0.9668 +vn 0.1297 -0.2476 0.9601 +vn 0.9940 0.1092 0.0028 +vn -0.0938 -0.0867 0.9918 +vn 0.2345 -0.9031 0.3597 +vn 0.1307 -0.2446 0.9608 +vn -0.1014 -0.2330 0.9672 +vn -0.2262 0.0759 0.9711 +vn 0.0349 -0.1177 0.9924 +vn 0.0892 -0.1341 0.9869 +vn -0.2711 -0.2090 0.9396 +vn -0.1345 0.2351 0.9626 +vn -0.2919 -0.0277 0.9560 +vn -0.0451 0.2242 0.9735 +vn 0.0029 0.3892 0.9211 +vn 0.3209 0.8375 0.4423 +vn -0.3020 -0.1895 0.9343 +vn 0.1111 -0.1851 0.9764 +vn -0.1828 -0.4980 0.8477 +vn 0.2790 0.5216 0.8063 +vn 0.3817 -0.0822 0.9206 +vn 0.4926 -0.6946 0.5242 +vn 0.5979 -0.0622 0.7991 +vn -0.3611 -0.7967 0.4846 +vn -0.1823 -0.2502 0.9509 +vn 0.2726 -0.1978 0.9416 +vn 0.0959 -0.2966 0.9502 +vn -0.0329 0.0984 0.9946 +vn -0.1036 -0.2985 0.9488 +vn -0.5320 -0.1792 0.8276 +vn -0.5007 -0.3951 0.7702 +vn -0.7518 -0.5282 0.3947 +vn 0.0855 0.1917 0.9777 +vn -0.0932 -0.3333 0.9382 +vn -0.1877 0.1243 0.9743 +vn 0.0956 0.0267 0.9951 +vn 0.1742 0.2043 0.9633 +vn -0.2534 -0.2141 0.9434 +vn 0.9656 0.1175 0.2320 +vn -0.1768 -0.0050 0.9842 +vn 0.0680 -0.0082 0.9977 +vn 0.1367 0.0992 0.9856 +vn -0.2133 -0.0261 0.9766 +vn 0.0840 -0.3066 0.9481 +vn -0.0484 -0.0252 0.9985 +vn 0.1761 -0.0659 0.9822 +vn -0.3010 -0.4574 0.8367 +vn 0.9819 0.0759 0.1736 +vn 0.9034 0.2452 0.3517 +vn 0.3961 0.0961 0.9132 +vn -0.3874 0.0849 0.9180 +vn -0.0544 -0.4673 0.8824 +vn 0.1293 -0.0536 0.9902 +vn -0.1580 0.2311 0.9600 +vn 0.3677 0.3171 0.8742 +vn 0.1461 -0.1309 0.9806 +vn 0.2090 -0.2289 0.9507 +vn 0.6316 -0.4372 0.6402 +vn 0.1856 -0.0387 0.9819 +vn -0.2675 0.2035 0.9418 +vn -0.2824 0.2431 0.9280 +vn -0.7433 0.3301 0.5818 +vn -0.3950 -0.3268 0.8586 +vn 0.0201 0.1592 0.9870 +vn -0.0964 0.2167 0.9715 +vn -0.0941 0.2215 0.9706 +vn 0.0866 0.0904 0.9921 +vn 0.0809 -0.0590 0.9950 +vn 0.6354 -0.4746 0.6091 +vn 0.0179 0.1383 0.9902 +vn 0.0188 0.1377 0.9903 +vn 0.2809 0.2255 0.9329 +vn -0.2212 0.2367 0.9461 +vn 0.1646 0.0126 0.9863 +vn -0.0709 0.3320 0.9406 +vn 0.1032 0.2965 0.9494 +vn 0.6982 -0.1155 0.7066 +vn -0.8867 0.4232 0.1859 +vn 0.0645 0.3376 0.9391 +vn 0.1202 -0.2745 0.9540 +vn 0.8607 0.1519 -0.4859 +vn 0.9910 0.1335 0.0063 +vn 0.4792 0.4236 -0.7688 +vn 0.4639 0.2086 -0.8610 +vn 0.5573 0.1554 -0.8156 +vn -0.3350 0.6450 -0.6869 +vn 0.2180 0.1564 -0.9633 +vn 0.5137 -0.2576 -0.8184 +vn 0.3056 -0.4433 -0.8427 +vn 0.5050 0.0260 -0.8627 +vn 0.3054 0.5968 -0.7420 +vn 0.3339 0.3870 0.8595 +vn 0.6618 -0.5542 -0.5048 +vn 0.3080 0.4743 0.8247 +vn 0.4556 0.0413 -0.8892 +vn -0.0189 -0.2862 0.9580 +vn 0.6191 -0.6502 -0.4404 +vn 0.2239 0.9746 0.0008 +vn 0.3395 -0.8409 -0.4214 +vn -0.3522 0.9193 0.1755 +vn -0.0102 0.5953 -0.8035 +vn 0.2001 -0.0579 -0.9781 +vn 0.2057 -0.4181 0.8848 +vn -0.0001 0.9756 -0.2197 +vn 0.0706 -0.9772 0.2003 +vn 0.1062 0.9910 0.0819 +vn -0.0692 0.0929 -0.9933 +vn 0.4019 -0.8510 0.3381 +vn -0.6921 0.2184 -0.6880 +vn 0.5992 0.0351 -0.7998 +vn -0.1590 -0.0818 -0.9839 +vn 0.7903 0.2161 -0.5734 +vn 0.6341 -0.4776 -0.6081 +vn -0.7388 -0.0708 -0.6702 +vn -0.1128 -0.5505 -0.8272 +vn -0.6821 -0.1856 -0.7074 +vn 0.1224 -0.4476 -0.8858 +vn 0.2659 -0.5242 -0.8090 +vn -0.0787 -0.2083 -0.9749 +vn 0.2173 -0.6951 -0.6853 +vn -0.1027 -0.9664 -0.2357 +vn 0.0217 -0.2220 -0.9748 +vn 0.1596 -0.2736 -0.9485 +vn 0.0599 -0.3155 -0.9470 +vn -0.0548 -0.0974 -0.9937 +vn -0.0240 0.2767 -0.9607 +vn 0.0436 -0.0812 -0.9957 +vn -0.4396 -0.8762 -0.1975 +vn -0.5168 -0.7608 -0.3926 +vn -0.5726 -0.5425 -0.6147 +vn 0.0869 -0.0681 -0.9939 +vn -0.9677 0.1916 -0.1640 +vn 0.1321 -0.1734 -0.9759 +vn 0.0456 -0.1098 -0.9929 +vn -0.1281 0.2400 -0.9623 +vn 0.3297 0.8525 -0.4055 +vn 0.0467 0.2430 -0.9689 +vn 0.0012 0.3869 -0.9221 +vn 0.1511 0.1748 -0.9729 +vn 0.4570 -0.2214 -0.8615 +vn 0.0593 -0.2074 -0.9765 +vn -0.0268 -0.2528 -0.9672 +vn -0.5700 -0.3517 -0.7426 +vn -0.0596 0.1388 -0.9885 +vn 0.0677 0.1783 -0.9817 +vn -0.0051 0.2162 -0.9763 +vn 0.4986 -0.3979 -0.7702 +vn 0.1152 0.0339 -0.9928 +vn 0.2903 -0.8769 -0.3832 +vn -0.6270 -0.0343 -0.7783 +vn -0.4251 -0.6846 -0.5921 +vn -0.1022 0.2073 -0.9729 +vn -0.0587 0.0339 -0.9977 +vn 0.2069 0.0655 -0.9762 +vn -0.1668 0.1009 -0.9808 +vn -0.1493 0.0666 -0.9865 +vn -0.0585 0.0161 -0.9982 +vn 0.0615 -0.0836 -0.9946 +vn 0.2425 -0.0812 -0.9668 +vn 0.1264 -0.0726 -0.9893 +vn -0.2565 -0.3680 -0.8938 +vn -0.2652 -0.5414 -0.7978 +vn -0.1338 -0.0497 -0.9898 +vn 0.0552 -0.0799 -0.9953 +vn -0.0263 0.0338 -0.9991 +vn -0.1624 -0.0408 -0.9859 +vn 0.1762 -0.0610 -0.9825 +vn 0.2068 -0.2201 -0.9533 +vn 0.1526 -0.0496 -0.9870 +vn -0.0703 -0.1510 -0.9860 +vn -0.5424 0.0464 -0.8388 +vn 0.1018 0.0717 -0.9922 +vn 0.0123 -0.0537 -0.9985 +vn -0.6192 0.4082 -0.6708 +vn -0.0927 -0.1273 -0.9875 +vn -0.7382 0.5661 -0.3669 +vn -0.1248 0.2625 -0.9568 +vn -0.9588 0.0437 -0.2809 +vn -0.1900 0.4632 -0.8656 +vn -0.0361 0.2159 -0.9757 +vn 0.5274 0.7179 -0.4544 +vn -0.0000 -0.0789 -0.9969 +vn -0.8369 0.2970 -0.4597 +vn -0.2765 -0.8843 -0.3762 +vn -0.0167 -0.1193 -0.9927 +vn -0.0732 -0.0773 -0.9943 +vn -0.1817 -0.1581 -0.9706 +vn -0.5440 -0.6275 -0.5571 +vn 0.0283 0.4296 -0.9026 +vn 0.0536 0.8342 -0.5488 +vn -0.5763 0.7991 -0.1712 +vn -0.5733 0.8085 0.1327 +vn 0.0489 0.2611 0.9641 +vn -0.9191 -0.3708 0.1336 +vn 0.0737 0.7525 0.6545 +vn -0.3658 0.4672 0.8049 +vn -0.4884 0.2158 0.8455 +vn -0.0737 -0.5201 0.8509 +vn -0.7008 0.2274 0.6761 +vn -0.6234 -0.5063 0.5958 +vn 0.7405 -0.4566 0.4931 +vn -0.4781 -0.8584 -0.1856 +vn 0.3922 -0.5958 -0.7008 +vn -0.7233 -0.6343 -0.2730 +vn -0.4440 -0.5616 -0.6982 +vn 0.7532 -0.6573 -0.0233 +vn -0.7492 -0.6609 0.0435 +vn -0.2860 -0.5063 -0.8135 +vn -0.2119 -0.7585 -0.6163 +vn -0.8288 -0.5347 0.1648 +vn -0.5070 -0.8184 0.2705 +vn -0.4571 -0.8753 -0.1576 +vn -0.7138 -0.6891 0.1246 +vn 0.6794 -0.5753 0.4555 +vn -0.3246 -0.9456 -0.0193 +vn -0.0640 -0.8552 0.5144 +vn 0.6671 -0.7427 0.0583 +vn -0.8822 -0.1967 0.4278 +vn -0.8241 -0.5398 0.1715 +vn 0.6225 -0.7800 0.0640 +vn 0.2200 -0.9744 -0.0458 +vn 0.7538 -0.3838 0.5334 +vn 0.1357 0.9561 0.2597 +vn -0.0279 0.9151 -0.4022 +vn 0.6940 -0.6653 -0.2751 +vn 0.8128 -0.3732 -0.4473 +vn 0.9811 -0.1787 -0.0736 +vn 0.7653 0.0062 0.6437 +vn 0.6040 -0.4245 -0.6745 +vn -0.1476 0.9271 0.3445 +vn 0.1280 0.9892 -0.0718 +vn 0.3416 0.7314 -0.5902 +vn -0.2748 -0.9604 0.0466 +vn -0.6207 -0.7809 -0.0695 +vn -0.1031 0.7178 0.6886 +vn -0.6514 -0.7210 0.2363 +vn -0.7384 -0.4003 -0.5427 +vn -0.0328 0.9653 -0.2590 +vn -0.7904 -0.5465 0.2768 +vn -0.9965 -0.0794 0.0247 +vn -0.6028 -0.4654 0.6481 +vn -0.7168 0.0213 -0.6969 +vn -0.2688 0.8414 -0.4688 +vn -0.1016 0.9799 -0.1718 +vn 0.0738 0.8805 -0.4682 +vn -0.5044 0.3662 0.7820 +vn 0.1858 -0.6030 -0.7758 +vn 0.1127 -0.5021 -0.8574 +vn -0.1894 -0.5860 -0.7879 +vn -0.0724 -0.6007 -0.7962 +vn 0.2244 0.5437 -0.8087 +vn 0.1474 0.5825 -0.7993 +vn -0.1189 0.5125 -0.8504 +vn -0.1956 0.6015 -0.7745 +vn 0.4825 0.2664 -0.8344 +vn 0.4708 -0.2433 -0.8480 +vn 0.1716 0.2086 -0.9628 +vn 0.1358 -0.2351 -0.9625 +vn 0.7480 0.0875 -0.6579 +vn 0.7320 -0.1259 -0.6696 +vn 0.7339 0.1375 -0.6652 +vn 0.6890 -0.1489 -0.7093 +vn 0.4040 -0.3233 -0.8557 +vn 0.4509 0.3405 -0.8251 +vn -0.1504 -0.2002 -0.9681 +vn -0.4631 0.2586 -0.8477 +vn -0.1602 0.2272 -0.9606 +vn -0.4841 -0.2367 -0.8424 +vn -0.7333 -0.1000 -0.6726 +vn -0.7191 0.1457 -0.6795 +vn -0.6290 0.1415 -0.7644 +vn -0.7561 -0.0787 -0.6497 +vn -0.5123 -0.2705 -0.8151 +vn -0.3799 -0.4374 -0.8151 +vn -0.3958 0.3972 -0.8280 +vn 0.5200 0.0570 -0.8523 +vn -0.5803 -0.0463 -0.8131 +vn -0.5694 0.0118 -0.8220 +vn -0.2085 0.5475 0.8104 +vn 0.1131 0.6053 0.7879 +vn 0.1383 0.2182 0.9661 +vn -0.2220 0.1295 0.9664 +vn 0.1798 -0.1396 0.9737 +vn -0.2181 -0.0969 0.9711 +vn 0.1461 -0.6233 0.7682 +vn -0.1291 -0.6261 0.7690 +vn -0.6356 0.1565 0.7560 +vn -0.5104 -0.1145 0.8523 +vn -0.7463 -0.1538 0.6477 +vn -0.6763 -0.2680 0.6862 +vn -0.4676 0.3706 0.8025 +vn -0.0939 0.3430 0.9346 +vn -0.1578 -0.3588 0.9200 +vn -0.5264 -0.3899 0.7556 +vn 0.1433 -0.3877 0.9106 +vn 0.5471 -0.1311 0.8267 +vn 0.4301 0.1600 0.8885 +vn 0.7097 0.1451 0.6894 +vn 0.7904 -0.1041 0.6037 +vn 0.4128 0.4516 0.7910 +vn 0.4093 -0.4425 0.7979 +vn 0.6479 -0.3236 0.6896 +vn -0.1954 -0.1141 0.9741 +vn -0.1145 -0.9585 0.2610 +vn 0.0704 -0.4778 0.8757 +vn 0.0833 -0.2408 0.9670 +vn -0.1374 -0.8142 0.5642 +vn 0.1148 -0.9828 0.1449 +vn 0.0817 -0.3858 0.9190 +vn -0.1416 -0.2102 0.9673 +vn 0.1367 -0.2722 0.9525 +vn 0.9516 0.3049 0.0386 +vn -0.0929 -0.0723 0.9931 +vn 0.1137 -0.8732 0.4739 +vn 0.1230 -0.2294 0.9655 +vn -0.1022 -0.2327 0.9672 +vn 0.0103 0.3251 0.9456 +vn 0.0585 -0.0946 0.9938 +vn 0.0908 -0.1276 0.9877 +vn -0.1570 -0.2062 0.9658 +vn -0.1381 0.2309 0.9631 +vn -0.2938 -0.0320 0.9553 +vn -0.0724 0.2063 0.9758 +vn -0.0096 0.3876 0.9218 +vn 0.3362 0.8297 0.4456 +vn -0.2092 -0.3788 0.9015 +vn 0.1120 -0.2012 0.9731 +vn 0.0524 -0.1006 0.9935 +vn 0.2792 0.5220 0.8059 +vn 0.3880 -0.0880 0.9174 +vn 0.3175 -0.7436 0.5884 +vn 0.5712 -0.1070 0.8138 +vn -0.3848 -0.6513 0.6540 +vn -0.1822 -0.2495 0.9511 +vn 0.2469 -0.2203 0.9437 +vn 0.0876 -0.2979 0.9506 +vn -0.0362 0.1017 0.9942 +vn -0.0696 -0.3238 0.9436 +vn -0.4912 0.0540 0.8694 +vn -0.5437 -0.1647 0.8229 +vn -0.5358 -0.3987 0.7443 +vn -0.7382 -0.4259 0.5232 +vn 0.0953 0.2166 0.9716 +vn -0.1889 0.1006 0.9768 +vn 0.0820 0.0432 0.9957 +vn 0.1907 0.1851 0.9640 +vn -0.2089 -0.2658 0.9411 +vn 0.9508 0.1861 0.2479 +vn 0.0666 -0.0147 0.9977 +vn 0.1519 0.0555 0.9868 +vn -0.3405 -0.1713 0.9245 +vn -0.1698 -0.0335 0.9849 +vn -0.4232 -0.0544 0.9044 +vn 0.1714 -0.0624 0.9832 +vn -0.1300 -0.3104 0.9417 +vn -0.1043 -0.0253 0.9942 +vn -0.0560 -0.0163 0.9983 +vn 0.5945 0.6416 0.4847 +vn 0.7940 -0.4725 0.3825 +vn 0.3394 0.1273 0.9320 +vn -0.3965 0.0912 0.9135 +vn -0.2423 -0.4733 0.8469 +vn -0.2135 -0.5737 0.7907 +vn -0.0354 -0.4850 0.8738 +vn 0.3484 0.2039 0.9149 +vn 0.0521 -0.0161 0.9985 +vn 0.1112 -0.1405 0.9838 +vn -0.2576 0.2144 0.9422 +vn 0.1304 -0.1090 0.9854 +vn 0.0927 -0.1271 0.9875 +vn 0.1811 -0.0467 0.9824 +vn -0.2696 0.2033 0.9413 +vn -0.3285 0.2989 0.8960 +vn -0.1555 0.7141 0.6826 +vn -0.1880 -0.1785 0.9658 +vn 0.0176 0.1597 0.9870 +vn -0.0988 0.2161 0.9714 +vn -0.1342 0.2324 0.9633 +vn 0.1018 0.0426 0.9939 +vn 0.5033 0.2108 0.8380 +vn 0.6531 -0.3103 0.6907 +vn 0.0330 0.1493 0.9882 +vn -0.0035 0.1746 0.9846 +vn 0.2310 0.2492 0.9405 +vn -0.2601 0.2303 0.9377 +vn -0.0941 0.3059 0.9474 +vn 0.1566 0.0413 0.9868 +vn -0.8303 0.2365 0.5047 +vn 0.0852 0.3178 0.9443 +vn 0.7815 -0.0647 0.6206 +vn 0.1288 -0.2674 0.9549 +vn 0.1212 0.2034 0.9716 +vn 0.0294 0.4907 0.8708 +vn 0.8639 0.3518 -0.3603 +vn 0.9922 0.1235 0.0139 +vn 0.6928 0.2033 -0.6919 +vn 0.1386 0.6737 -0.7259 +vn 0.0172 0.2734 -0.9618 +vn -0.4725 0.5078 -0.7203 +vn 0.4500 -0.5310 -0.7180 +vn 0.6216 0.0674 -0.7804 +vn 0.4501 0.0224 -0.8927 +vn 0.3030 0.5970 -0.7428 +vn 0.6206 0.4965 0.6069 +vn 0.5774 -0.5817 -0.5730 +vn 0.3073 0.4744 0.8249 +vn 0.4555 0.0414 -0.8893 +vn 0.3397 -0.8410 -0.4211 +vn -0.3546 0.9185 0.1752 +vn -0.0052 0.5938 -0.8046 +vn 0.1995 -0.0582 -0.9782 +vn 0.2384 -0.5624 0.7917 +vn -0.0743 0.8943 -0.4412 +vn -0.0806 -0.9957 0.0462 +vn 0.0893 0.9931 0.0763 +vn -0.0671 0.0913 -0.9936 +vn 0.4011 -0.8510 0.3390 +vn -0.6950 0.2168 -0.6855 +vn 0.5256 0.0095 -0.8507 +vn -0.1027 -0.0989 -0.9898 +vn 0.7995 0.2082 -0.5634 +vn 0.5202 -0.5066 -0.6876 +vn -0.5287 0.0864 -0.8444 +vn -0.2072 -0.5258 -0.8250 +vn 0.2374 -0.9005 -0.3642 +vn -0.3690 -0.1612 -0.9154 +vn 0.2705 -0.7553 -0.5970 +vn -0.0777 -0.2088 -0.9749 +vn 0.2166 -0.6953 -0.6853 +vn -0.1041 -0.9572 -0.2701 +vn 0.1825 -0.3529 -0.9177 +vn 0.0546 -0.2835 -0.9574 +vn 0.0613 -0.3088 -0.9491 +vn -0.0629 -0.0894 -0.9940 +vn -0.0202 0.3089 -0.9509 +vn 0.0688 -0.0785 -0.9945 +vn -0.4407 -0.8754 -0.1986 +vn -0.4554 -0.8062 -0.3777 +vn -0.9892 -0.1326 -0.0619 +vn 0.0992 -0.0820 -0.9917 +vn 0.1351 -0.1746 -0.9753 +vn 0.0272 -0.1318 -0.9909 +vn -0.1316 0.2357 -0.9629 +vn -0.0087 0.4979 -0.8672 +vn 0.0695 0.2084 -0.9756 +vn 0.0062 0.3863 -0.9223 +vn 0.1503 0.1690 -0.9741 +vn 0.3768 -0.2316 -0.8969 +vn -0.4761 -0.3139 -0.8214 +vn 0.0673 0.0946 -0.9932 +vn -0.0067 -0.2521 -0.9677 +vn -0.0581 0.1445 -0.9878 +vn 0.0400 0.1301 -0.9907 +vn -0.0033 0.2162 -0.9763 +vn 0.6741 -0.4721 -0.5681 +vn 0.1326 0.0641 -0.9891 +vn 0.2151 -0.7129 -0.6674 +vn -0.6713 -0.1839 -0.7180 +vn -0.8873 -0.1645 -0.4308 +vn -0.1020 0.2056 -0.9733 +vn -0.0585 0.0334 -0.9977 +vn 0.2023 0.0675 -0.9770 +vn -0.1388 0.1077 -0.9844 +vn -0.1575 0.0790 -0.9844 +vn -0.0603 0.0168 -0.9980 +vn 0.0708 -0.1151 -0.9908 +vn 0.2372 -0.0818 -0.9680 +vn 0.1702 -0.0189 -0.9852 +vn -0.5740 -0.5475 -0.6089 +vn -0.7781 -0.5164 -0.3576 +vn 0.1506 -0.2808 -0.9479 +vn -0.1505 -0.0568 -0.9870 +vn 0.0740 -0.0811 -0.9940 +vn -0.9811 0.0025 -0.1935 +vn -0.1379 -0.0352 -0.9898 +vn -0.0384 -0.1785 -0.9832 +vn 0.1456 -0.1068 -0.9836 +vn -0.0702 -0.1483 -0.9865 +vn -0.0072 -0.0731 -0.9973 +vn -0.3920 0.3805 -0.8376 +vn 0.0898 0.0799 -0.9928 +vn -0.9528 -0.1727 -0.2497 +vn -0.2801 -0.7916 -0.5431 +vn -0.3211 -0.1902 -0.9277 +vn -0.7442 0.5581 -0.3671 +vn -0.1452 0.2542 -0.9562 +vn -0.8915 0.3517 -0.2855 +vn -0.0595 0.2121 -0.9754 +vn 0.5334 0.7021 -0.4718 +vn -0.0075 -0.0940 -0.9955 +vn -0.8603 -0.1793 -0.4771 +vn -0.8748 0.3233 -0.3609 +vn -0.0114 -0.1189 -0.9928 +vn -0.0768 -0.0868 -0.9933 +vn -0.1752 -0.1588 -0.9716 +vn -0.5257 -0.6322 -0.5692 +vn 0.0468 0.4292 -0.9020 +vn 0.0508 0.8351 -0.5478 +vn -0.6042 0.7594 -0.2412 +vn -0.5726 0.8091 0.1325 +vn 0.0489 0.2612 0.9641 +vn -0.3691 0.4596 0.8078 +vn -0.5948 0.2165 0.7742 +vn -0.0731 -0.4351 0.8974 +vn -0.7720 0.2332 0.5913 +vn 0.8245 -0.4588 0.3312 +vn -0.6177 -0.7219 -0.3120 +vn 0.1556 -0.6929 -0.7040 +vn -0.7237 -0.6349 -0.2706 +vn -0.4915 -0.7342 -0.4684 +vn 0.6843 -0.7149 0.1433 +vn -0.2860 -0.5062 -0.8136 +vn -0.2119 -0.7584 -0.6164 +vn -0.8290 -0.5346 0.1643 +vn -0.1245 -0.9368 0.3271 +vn -0.2020 -0.6076 0.7681 +vn -0.7158 -0.6878 0.1205 +vn 0.6769 -0.5798 0.4535 +vn -0.3171 -0.9484 0.0019 +vn -0.4684 -0.7032 0.5349 +vn 0.6491 -0.7573 0.0717 +vn -0.9501 -0.1353 0.2811 +vn 0.6220 -0.7804 0.0643 +vn 0.2735 -0.9608 -0.0446 +vn 0.7307 -0.4009 0.5525 +vn -0.3520 0.9117 0.2120 +vn -0.3034 0.8278 -0.4720 +vn 0.7010 -0.6791 -0.2176 +vn 0.7907 -0.5485 -0.2720 +vn 0.9960 -0.0894 0.0064 +vn 0.5452 0.1594 0.8230 +vn 0.5696 -0.3444 -0.7463 +vn 0.2242 0.7713 0.5957 +vn 0.3525 0.9354 0.0280 +vn -0.3330 0.7133 0.6167 +vn 0.3802 0.4962 -0.7805 +vn -0.2731 -0.9610 0.0441 +vn -0.6221 -0.7802 -0.0658 +vn 0.0051 0.6870 0.7267 +vn -0.6274 -0.7261 0.2815 +vn -0.7853 -0.3101 -0.5358 +vn -0.3999 0.7929 -0.4597 +vn -0.8273 -0.2389 0.5084 +vn -0.9850 -0.1657 0.0491 +vn -0.5273 -0.4796 0.7014 +vn 0.1687 0.9346 -0.3130 +vn -0.0105 0.9937 0.1118 +vn -0.3991 0.4258 0.8120 +vn 0.2050 -0.5984 -0.7745 +vn 0.1724 -0.5011 -0.8481 +vn -0.1884 -0.5870 -0.7873 +vn -0.0740 -0.5993 -0.7971 +vn 0.1730 0.4950 -0.8515 +vn 0.1451 0.5769 -0.8038 +vn -0.2094 0.4939 -0.8439 +vn -0.2029 0.6021 -0.7722 +vn 0.4867 0.2689 -0.8312 +vn 0.4937 -0.2195 -0.8415 +vn 0.1706 0.2094 -0.9628 +vn 0.1391 -0.2366 -0.9616 +vn 0.7468 0.1006 -0.6574 +vn 0.7446 -0.1311 -0.6545 +vn 0.7266 0.1747 -0.6645 +vn 0.7146 -0.1078 -0.6912 +vn 0.4779 -0.3399 -0.8100 +vn 0.4378 0.4611 -0.7718 +vn -0.1506 -0.2005 -0.9681 +vn -0.4827 0.2465 -0.8404 +vn -0.1610 0.2337 -0.9589 +vn -0.4836 -0.2390 -0.8420 +vn -0.7285 -0.1036 -0.6771 +vn -0.7381 0.1533 -0.6570 +vn -0.7258 0.0806 -0.6831 +vn -0.6696 -0.0607 -0.7402 +vn -0.5007 -0.2900 -0.8156 +vn -0.3791 -0.4366 -0.8159 +vn -0.4503 0.3589 -0.8176 +vn 0.5811 0.0680 -0.8110 +vn -0.1221 0.6447 0.7546 +vn 0.0977 0.6095 0.7868 +vn 0.1519 0.2116 0.9655 +vn -0.2002 0.1318 0.9708 +vn 0.1732 -0.1419 0.9746 +vn -0.2139 -0.1019 0.9715 +vn 0.1565 -0.6187 0.7698 +vn -0.1427 -0.6189 0.7724 +vn -0.5048 0.1681 0.8467 +vn -0.5185 -0.1145 0.8474 +vn -0.7332 -0.1441 0.6646 +vn -0.7179 0.1598 0.6775 +vn -0.4140 0.4448 0.7942 +vn -0.0978 0.3770 0.9211 +vn -0.1576 -0.3589 0.9200 +vn -0.5055 -0.4032 0.7628 +vn 0.1500 -0.3948 0.9064 +vn 0.5188 -0.1171 0.8468 +vn 0.4883 0.1148 0.8651 +vn 0.7490 -0.1454 0.6465 +vn 0.7701 0.0927 0.6311 +vn 0.8433 -0.0034 0.5375 +vn 0.5576 0.3439 0.7556 +vn 0.3136 0.4850 0.8163 +vn 0.4770 -0.4030 0.7811 +# UV coordinates: 1 'general' dummy, 4 for the backplate +vt 0 1 0 +vt 0.997862 1.79999 0 +vt 0.00213805 1.79999 0 +vt 1 0.799992 0 +vt 0 0.799992 0 +f 1/1/1 2/1/2 3/1/3 +f 4/1/4 1/1/1 3/1/3 +f 5/1/5 4/1/4 3/1/3 +f 6/1/6 5/1/5 3/1/3 +f 324/1/7 6/1/6 3/1/3 +f 331/1/8 324/1/7 3/1/3 +f 7/1/9 331/1/8 3/1/3 +f 8/1/10 7/1/9 3/1/3 +f 1/1/1 9/1/11 2/1/2 +f 9/1/11 10/1/12 2/1/2 +f 4/1/4 11/1/13 1/1/1 +f 10/1/12 12/1/14 2/1/2 +f 10/1/12 13/1/15 12/1/14 +f 10/1/12 14/1/16 13/1/15 +f 10/1/12 214/1/17 14/1/16 +f 8/1/10 15/1/18 7/1/9 +f 15/1/18 16/1/19 7/1/9 +f 15/1/18 17/1/20 16/1/19 +f 20/1/21 21/1/22 19/1/23 +f 22/1/24 20/1/21 19/1/23 +f 21/1/22 23/1/25 19/1/23 +f 24/1/26 22/1/24 19/1/23 +f 23/1/25 18/1/27 19/1/23 +f 25/1/28 22/1/24 24/1/26 +f 26/1/29 25/1/28 24/1/26 +f 27/1/30 26/1/29 24/1/26 +f 28/1/31 27/1/30 24/1/26 +f 29/1/32 18/1/27 23/1/25 +f 30/1/33 18/1/27 29/1/32 +f 31/1/34 32/1/35 33/1/36 +f 32/1/35 34/1/37 33/1/36 +f 34/1/37 35/1/38 33/1/36 +f 35/1/38 36/1/39 33/1/36 +f 36/1/39 37/1/40 33/1/36 +f 37/1/40 38/1/41 33/1/36 +f 39/1/42 32/1/35 31/1/34 +f 40/1/43 39/1/42 31/1/34 +f 464/1/44 34/1/37 32/1/35 +f 41/1/45 40/1/43 31/1/34 +f 42/1/46 40/1/43 41/1/45 +f 43/1/47 40/1/43 42/1/46 +f 500/1/48 38/1/41 37/1/40 +f 516/1/49 38/1/41 500/1/48 +f 504/1/50 516/1/49 500/1/48 +f 44/1/51 516/1/49 504/1/50 +f 47/1/52 45/1/53 46/1/54 +f 45/1/53 48/1/55 46/1/54 +f 49/1/56 47/1/52 46/1/54 +f 48/1/55 50/1/57 46/1/54 +f 51/1/58 49/1/56 46/1/54 +f 48/1/55 52/1/59 50/1/57 +f 52/1/59 53/1/60 50/1/57 +f 53/1/60 54/1/61 50/1/57 +f 51/1/58 55/1/62 49/1/56 +f 58/1/63 59/1/64 56/1/65 +f 60/1/66 61/1/67 57/1/68 +f 61/1/67 62/1/69 57/1/68 +f 63/1/70 59/1/64 58/1/63 +f 61/1/67 64/1/71 62/1/69 +f 65/1/72 63/1/70 58/1/63 +f 66/1/73 65/1/72 58/1/63 +f 64/1/71 67/1/74 62/1/69 +f 68/1/75 65/1/72 66/1/73 +f 64/1/71 69/1/76 67/1/74 +f 69/1/76 70/1/77 67/1/74 +f 71/1/78 65/1/72 68/1/75 +f 72/1/79 71/1/78 68/1/75 +f 69/1/76 73/1/80 70/1/77 +f 73/1/80 74/1/81 70/1/77 +f 75/1/82 71/1/78 72/1/79 +f 76/1/83 75/1/82 72/1/79 +f 73/1/80 77/1/84 74/1/81 +f 77/1/84 78/1/85 74/1/81 +f 79/1/86 75/1/82 76/1/83 +f 80/1/87 79/1/86 76/1/83 +f 77/1/84 81/1/88 78/1/85 +f 81/1/88 82/1/89 78/1/85 +f 83/1/90 79/1/86 80/1/87 +f 84/1/91 83/1/90 80/1/87 +f 81/1/88 85/1/92 82/1/89 +f 85/1/92 84/1/91 82/1/89 +f 85/1/92 83/1/90 84/1/91 +f 86/1/93 87/1/94 88/1/95 +f 89/1/96 87/1/94 86/1/93 +f 90/1/97 91/1/98 92/1/99 +f 87/1/94 91/1/98 90/1/97 +f 97/1/100 95/1/101 96/1/102 +f 95/1/101 98/1/103 96/1/102 +f 99/1/104 95/1/101 97/1/100 +f 100/1/105 94/1/106 93/1/107 +f 95/1/101 101/1/108 98/1/103 +f 102/1/109 95/1/101 99/1/104 +f 103/1/110 94/1/106 100/1/105 +f 104/1/111 94/1/106 103/1/110 +f 105/1/112 106/1/113 101/1/108 +f 95/1/101 105/1/112 101/1/108 +f 107/1/114 95/1/101 102/1/109 +f 108/1/115 109/1/116 107/1/114 +f 109/1/116 95/1/101 107/1/114 +f 110/1/117 106/1/113 105/1/112 +f 111/1/118 94/1/106 104/1/111 +f 110/1/117 112/1/119 106/1/113 +f 113/1/120 94/1/106 111/1/118 +f 114/1/121 113/1/120 111/1/118 +f 110/1/117 115/1/122 112/1/119 +f 110/1/117 113/1/120 114/1/121 +f 115/1/122 110/1/117 114/1/121 +f 118/1/123 119/1/124 120/1/125 +f 121/1/126 118/1/123 120/1/125 +f 118/1/123 122/1/127 119/1/124 +f 116/1/128 123/1/129 117/1/130 +f 118/1/123 124/1/131 122/1/127 +f 125/1/132 118/1/123 121/1/126 +f 116/1/128 126/1/133 123/1/129 +f 127/1/134 118/1/123 125/1/132 +f 128/1/135 127/1/134 125/1/132 +f 118/1/123 129/1/136 124/1/131 +f 118/1/123 130/1/137 129/1/136 +f 128/1/135 131/1/138 127/1/134 +f 132/1/139 130/1/137 118/1/123 +f 116/1/128 133/1/140 126/1/133 +f 134/1/141 131/1/138 128/1/135 +f 135/1/142 136/1/143 133/1/140 +f 116/1/128 135/1/142 133/1/140 +f 137/1/144 131/1/138 134/1/141 +f 135/1/142 137/1/144 136/1/143 +f 135/1/142 131/1/138 137/1/144 +f 138/1/145 139/1/146 140/1/147 +f 56/1/65 141/1/148 142/1/149 +f 143/1/150 139/1/146 138/1/145 +f 141/1/148 144/1/151 142/1/149 +f 145/1/152 146/1/153 144/1/151 +f 141/1/148 145/1/152 144/1/151 +f 147/1/154 139/1/146 143/1/150 +f 148/1/155 146/1/153 145/1/152 +f 56/1/65 149/1/156 141/1/148 +f 150/1/157 139/1/146 147/1/154 +f 148/1/155 151/1/158 146/1/153 +f 59/1/64 149/1/156 56/1/65 +f 152/1/159 139/1/146 150/1/157 +f 148/1/155 153/1/160 151/1/158 +f 154/1/161 139/1/146 152/1/159 +f 148/1/155 154/1/161 152/1/159 +f 153/1/160 148/1/155 152/1/159 +f 154/1/161 155/1/162 139/1/146 +f 155/1/162 156/1/163 139/1/146 +f 156/1/163 157/1/164 139/1/146 +f 157/1/164 158/1/165 139/1/146 +f 158/1/165 159/1/166 139/1/146 +f 159/1/166 160/1/167 139/1/146 +f 160/1/167 161/1/168 139/1/146 +f 162/1/169 161/1/168 160/1/167 +f 163/1/170 161/1/168 162/1/169 +f 164/1/171 163/1/170 162/1/169 +f 165/1/172 163/1/170 164/1/171 +f 166/1/173 163/1/170 165/1/172 +f 167/1/174 163/1/170 166/1/173 +f 113/1/120 168/1/175 94/1/106 +f 168/1/175 169/1/176 94/1/106 +f 169/1/176 170/1/177 94/1/106 +f 170/1/177 171/1/178 94/1/106 +f 171/1/178 172/1/179 94/1/106 +f 172/1/179 173/1/180 94/1/106 +f 173/1/180 174/1/181 94/1/106 +f 175/1/182 174/1/181 173/1/180 +f 176/1/183 174/1/181 175/1/182 +f 177/1/184 176/1/183 175/1/182 +f 178/1/185 176/1/183 177/1/184 +f 179/1/186 176/1/183 178/1/185 +f 180/1/187 176/1/183 179/1/186 +f 181/1/188 176/1/183 180/1/187 +f 174/1/181 176/1/183 293/1/189 +f 176/1/183 295/1/190 293/1/189 +f 161/1/168 163/1/170 182/1/191 +f 163/1/170 183/1/192 182/1/191 +f 184/1/193 185/1/194 116/1/128 +f 185/1/194 135/1/142 116/1/128 +f 186/1/195 184/1/193 116/1/128 +f 187/1/196 186/1/195 116/1/128 +f 188/1/197 187/1/196 116/1/128 +f 189/1/198 188/1/197 116/1/128 +f 182/1/191 189/1/198 116/1/128 +f 182/1/191 183/1/192 189/1/198 +f 183/1/192 190/1/199 189/1/198 +f 183/1/192 191/1/200 190/1/199 +f 183/1/192 192/1/201 191/1/200 +f 183/1/192 193/1/202 192/1/201 +f 194/1/203 205/1/204 132/1/139 +f 149/1/156 194/1/203 132/1/139 +f 205/1/204 202/1/205 132/1/139 +f 202/1/205 130/1/137 132/1/139 +f 59/1/64 63/1/70 149/1/156 +f 63/1/70 194/1/203 149/1/156 +f 61/1/67 60/1/66 195/1/206 +f 196/1/207 200/1/208 195/1/206 +f 200/1/208 64/1/71 195/1/206 +f 64/1/71 61/1/67 195/1/206 +f 197/1/209 198/1/210 196/1/207 +f 198/1/210 557/1/211 196/1/207 +f 557/1/211 200/1/208 196/1/207 +f 65/1/72 194/1/203 63/1/70 +f 71/1/78 194/1/203 65/1/72 +f 200/1/208 69/1/76 64/1/71 +f 199/1/212 194/1/203 71/1/78 +f 88/1/95 291/1/213 71/1/78 +f 291/1/213 199/1/212 71/1/78 +f 200/1/208 73/1/80 69/1/76 +f 75/1/82 88/1/95 71/1/78 +f 200/1/208 77/1/84 73/1/80 +f 201/1/214 202/1/205 205/1/204 +f 198/1/210 203/1/215 557/1/211 +f 203/1/215 204/1/216 557/1/211 +f 79/1/86 88/1/95 75/1/82 +f 81/1/88 77/1/84 200/1/208 +f 88/1/95 85/1/92 200/1/208 +f 85/1/92 81/1/88 200/1/208 +f 204/1/216 556/1/217 557/1/211 +f 206/1/218 88/1/95 200/1/208 +f 207/1/219 201/1/214 205/1/204 +f 204/1/216 555/1/220 556/1/217 +f 83/1/90 88/1/95 79/1/86 +f 204/1/216 552/1/221 555/1/220 +f 204/1/216 208/1/222 552/1/221 +f 211/1/223 201/1/214 207/1/219 +f 85/1/92 88/1/95 83/1/90 +f 210/1/224 209/1/225 207/1/219 +f 209/1/225 211/1/223 207/1/219 +f 86/1/93 88/1/95 206/1/218 +f 213/1/226 212/1/227 552/1/221 +f 208/1/222 213/1/226 552/1/221 +f 154/1/161 148/1/155 135/1/142 +f 148/1/155 131/1/138 135/1/142 +f 262/1/228 316/1/229 113/1/120 +f 110/1/117 262/1/228 113/1/120 +f 189/1/198 160/1/167 188/1/197 +f 189/1/198 162/1/169 160/1/167 +f 214/1/17 215/1/230 25/1/28 +f 216/1/231 215/1/230 214/1/17 +f 217/1/232 216/1/231 214/1/17 +f 218/1/233 217/1/232 214/1/17 +f 219/1/234 217/1/232 218/1/233 +f 220/1/235 219/1/234 218/1/233 +f 245/1/236 220/1/235 218/1/233 +f 221/1/237 220/1/235 245/1/236 +f 91/1/98 239/1/238 210/1/224 +f 239/1/238 209/1/225 210/1/224 +f 223/1/239 222/1/240 690/1/241 +f 220/1/235 223/1/239 690/1/241 +f 222/1/240 224/1/242 690/1/241 +f 225/5/243 589/2/244 690/3/241 +f 224/1/242 225/1/243 690/1/241 +f 226/1/245 448/1/246 589/1/244 +f 227/1/247 226/1/245 589/1/244 +f 225/5/243 228/4/248 589/2/244 +f 228/1/248 229/1/249 589/1/244 +f 229/1/249 227/1/247 589/1/244 +f 230/1/250 228/1/248 225/1/243 +f 87/1/94 89/1/96 225/1/243 +f 89/1/96 232/1/251 225/1/243 +f 232/1/251 231/1/252 225/1/243 +f 231/1/252 230/1/250 225/1/243 +f 233/1/253 91/1/98 225/1/243 +f 91/1/98 87/1/94 225/1/243 +f 234/1/254 448/1/246 226/1/245 +f 220/1/235 235/1/255 223/1/239 +f 236/1/256 91/1/98 233/1/253 +f 221/1/237 237/1/257 235/1/255 +f 220/1/235 221/1/237 235/1/255 +f 238/1/258 448/1/246 234/1/254 +f 239/1/238 91/1/98 236/1/256 +f 89/1/96 240/1/259 232/1/251 +f 243/1/260 241/1/261 242/1/262 +f 241/1/261 244/1/263 242/1/262 +f 244/1/263 218/1/233 242/1/262 +f 109/1/116 108/1/115 242/1/262 +f 108/1/115 243/1/260 242/1/262 +f 245/1/236 218/1/233 244/1/263 +f 3/1/3 24/1/26 19/1/23 +f 2/1/2 24/1/26 3/1/3 +f 568/1/264 246/1/265 247/1/266 +f 626/1/267 246/1/265 568/1/264 +f 581/1/268 582/1/269 781/1/270 +f 582/1/269 684/1/271 781/1/270 +f 248/1/272 175/1/182 249/1/273 +f 175/1/182 173/1/180 249/1/273 +f 108/1/115 224/1/242 243/1/260 +f 225/1/243 224/1/242 108/1/115 +f 130/1/137 225/1/243 108/1/115 +f 202/1/205 225/1/243 130/1/137 +f 129/1/136 130/1/137 107/1/114 +f 130/1/137 108/1/115 107/1/114 +f 116/1/128 93/1/107 94/1/106 +f 117/1/130 93/1/107 116/1/128 +f 123/1/129 126/1/133 103/1/110 +f 126/1/133 104/1/111 103/1/110 +f 136/1/143 137/1/144 114/1/121 +f 137/1/144 115/1/122 114/1/121 +f 106/1/113 125/1/132 101/1/108 +f 106/1/113 128/1/135 125/1/132 +f 120/1/125 119/1/124 96/1/102 +f 119/1/124 97/1/100 96/1/102 +f 250/1/274 341/1/275 144/1/151 +f 146/1/153 250/1/274 144/1/151 +f 337/1/276 339/1/277 152/1/159 +f 339/1/277 153/1/160 152/1/159 +f 340/1/278 147/1/154 143/1/150 +f 251/1/279 147/1/154 340/1/278 +f 252/1/280 138/1/145 140/1/147 +f 253/1/281 138/1/145 252/1/280 +f 254/1/282 56/1/65 142/1/149 +f 57/1/68 56/1/65 254/1/282 +f 57/1/68 68/1/75 56/1/65 +f 72/1/79 68/1/75 57/1/68 +f 68/1/75 58/1/63 56/1/65 +f 80/1/87 76/1/83 57/1/68 +f 62/1/69 82/1/89 57/1/68 +f 82/1/89 84/1/91 57/1/68 +f 84/1/91 80/1/87 57/1/68 +f 76/1/83 72/1/79 57/1/68 +f 74/1/81 78/1/85 62/1/69 +f 78/1/85 82/1/89 62/1/69 +f 68/1/75 66/1/73 58/1/63 +f 67/1/74 74/1/81 62/1/69 +f 70/1/77 74/1/81 67/1/74 +f 255/1/283 256/1/284 105/1/112 +f 95/1/101 255/1/283 105/1/112 +f 257/1/285 266/1/286 261/1/287 +f 265/1/288 266/1/286 257/1/285 +f 256/1/284 110/1/117 105/1/112 +f 258/1/289 110/1/117 256/1/284 +f 259/1/290 110/1/117 258/1/289 +f 260/1/291 110/1/117 259/1/290 +f 11/1/13 261/1/287 1/1/1 +f 257/1/285 110/1/117 260/1/291 +f 11/1/13 262/1/228 261/1/287 +f 262/1/228 257/1/285 261/1/287 +f 262/1/228 110/1/117 257/1/285 +f 109/1/116 255/1/283 95/1/101 +f 109/1/116 263/1/292 255/1/283 +f 109/1/116 264/1/293 263/1/292 +f 109/1/116 265/1/288 264/1/293 +f 266/1/286 10/1/12 9/1/11 +f 242/1/262 10/1/12 266/1/286 +f 265/1/288 109/1/116 266/1/286 +f 109/1/116 242/1/262 266/1/286 +f 267/1/294 268/1/295 145/1/152 +f 141/1/148 267/1/294 145/1/152 +f 282/1/296 273/1/297 270/1/298 +f 269/1/299 273/1/297 282/1/296 +f 270/1/298 271/1/300 272/1/301 +f 270/1/298 273/1/297 271/1/300 +f 272/1/301 274/1/302 279/1/303 +f 271/1/300 274/1/302 272/1/301 +f 275/1/304 118/1/123 127/1/134 +f 275/1/304 276/1/305 118/1/123 +f 268/1/295 148/1/155 145/1/152 +f 131/1/138 275/1/304 127/1/134 +f 131/1/138 277/1/306 275/1/304 +f 131/1/138 278/1/307 277/1/306 +f 131/1/138 279/1/303 278/1/307 +f 131/1/138 270/1/298 279/1/303 +f 270/1/298 272/1/301 279/1/303 +f 280/1/308 148/1/155 268/1/295 +f 281/1/309 148/1/155 280/1/308 +f 282/1/296 148/1/155 281/1/309 +f 148/1/155 282/1/296 270/1/298 +f 131/1/138 148/1/155 270/1/298 +f 149/1/156 267/1/294 141/1/148 +f 276/1/305 132/1/139 118/1/123 +f 283/1/310 132/1/139 276/1/305 +f 284/1/311 132/1/139 283/1/310 +f 285/1/312 132/1/139 284/1/311 +f 274/1/302 132/1/139 285/1/312 +f 271/1/300 132/1/139 274/1/302 +f 273/1/297 132/1/139 271/1/300 +f 149/1/156 286/1/313 267/1/294 +f 149/1/156 287/1/314 286/1/313 +f 149/1/156 288/1/315 287/1/314 +f 149/1/156 269/1/299 288/1/315 +f 149/1/156 132/1/139 273/1/297 +f 269/1/299 149/1/156 273/1/297 +f 351/1/316 344/1/317 289/1/318 +f 344/1/317 290/1/319 289/1/318 +f 92/1/99 348/1/320 353/1/321 +f 91/1/98 210/1/224 92/1/99 +f 210/1/224 348/1/320 92/1/99 +f 210/1/224 207/1/219 348/1/320 +f 88/1/95 90/1/97 347/1/322 +f 342/1/323 88/1/95 347/1/322 +f 88/1/95 87/1/94 90/1/97 +f 291/1/213 88/1/95 342/1/323 +f 190/1/199 162/1/169 189/1/198 +f 190/1/199 164/1/171 162/1/169 +f 191/1/200 164/1/171 190/1/199 +f 191/1/200 165/1/172 164/1/171 +f 192/1/201 165/1/172 191/1/200 +f 192/1/201 166/1/173 165/1/172 +f 193/1/202 166/1/173 192/1/201 +f 193/1/202 167/1/174 166/1/173 +f 183/1/192 167/1/174 193/1/202 +f 183/1/192 163/1/170 167/1/174 +f 299/1/324 175/1/182 248/1/272 +f 299/1/324 177/1/184 175/1/182 +f 301/1/325 177/1/184 299/1/324 +f 301/1/325 178/1/185 177/1/184 +f 304/1/326 178/1/185 301/1/325 +f 304/1/326 179/1/186 178/1/185 +f 306/1/327 179/1/186 304/1/326 +f 309/1/328 179/1/186 306/1/327 +f 309/1/328 180/1/187 179/1/186 +f 181/1/188 180/1/187 309/1/328 +f 312/1/329 181/1/188 309/1/328 +f 176/1/183 181/1/188 312/1/329 +f 295/1/190 176/1/183 312/1/329 +f 135/1/142 155/1/162 154/1/161 +f 185/1/194 155/1/162 135/1/142 +f 185/1/194 156/1/163 155/1/162 +f 184/1/193 156/1/163 185/1/194 +f 184/1/193 157/1/164 156/1/163 +f 186/1/195 157/1/164 184/1/193 +f 186/1/195 158/1/165 157/1/164 +f 187/1/196 158/1/165 186/1/195 +f 187/1/196 159/1/166 158/1/165 +f 188/1/197 159/1/166 187/1/196 +f 188/1/197 160/1/167 159/1/166 +f 316/1/229 168/1/175 113/1/120 +f 317/1/330 168/1/175 316/1/229 +f 319/1/331 168/1/175 317/1/330 +f 319/1/331 169/1/176 168/1/175 +f 321/1/332 169/1/176 319/1/331 +f 321/1/332 170/1/177 169/1/176 +f 322/1/333 170/1/177 321/1/332 +f 322/1/333 171/1/178 170/1/177 +f 326/1/334 171/1/178 322/1/333 +f 327/1/335 171/1/178 326/1/334 +f 327/1/335 172/1/179 171/1/178 +f 330/1/336 172/1/179 327/1/335 +f 330/1/336 173/1/180 172/1/179 +f 333/1/337 173/1/180 330/1/336 +f 249/1/273 173/1/180 333/1/337 +f 8/1/10 292/1/338 15/1/18 +f 293/1/189 292/1/338 8/1/10 +f 293/1/189 294/1/339 292/1/338 +f 293/1/189 295/1/190 294/1/339 +f 298/1/340 297/1/341 296/1/342 +f 298/1/340 299/1/324 297/1/341 +f 299/1/324 248/1/272 297/1/341 +f 16/1/19 296/1/342 7/1/9 +f 16/1/19 300/1/343 296/1/342 +f 300/1/343 298/1/340 296/1/342 +f 300/1/343 299/1/324 298/1/340 +f 300/1/343 301/1/325 299/1/324 +f 303/1/344 300/1/343 16/1/19 +f 303/1/344 301/1/325 300/1/343 +f 302/1/345 303/1/344 16/1/19 +f 304/1/326 301/1/325 303/1/344 +f 17/1/20 302/1/345 16/1/19 +f 17/1/20 305/1/346 302/1/345 +f 305/1/346 303/1/344 302/1/345 +f 305/1/346 304/1/326 303/1/344 +f 306/1/327 304/1/326 305/1/346 +f 307/1/347 305/1/346 17/1/20 +f 307/1/347 308/1/348 305/1/346 +f 308/1/348 306/1/327 305/1/346 +f 308/1/348 309/1/328 306/1/327 +f 15/1/18 307/1/347 17/1/20 +f 15/1/18 310/1/349 307/1/347 +f 310/1/349 308/1/348 307/1/347 +f 310/1/349 311/1/350 308/1/348 +f 311/1/350 309/1/328 308/1/348 +f 292/1/338 310/1/349 15/1/18 +f 311/1/350 312/1/329 309/1/328 +f 292/1/338 294/1/339 310/1/349 +f 294/1/339 311/1/350 310/1/349 +f 294/1/339 312/1/329 311/1/350 +f 294/1/339 295/1/190 312/1/329 +f 313/1/351 297/1/341 249/1/273 +f 297/1/341 248/1/272 249/1/273 +f 7/1/9 296/1/342 331/1/8 +f 296/1/342 332/1/352 331/1/8 +f 296/1/342 313/1/351 332/1/352 +f 296/1/342 297/1/341 313/1/351 +f 5/1/5 314/1/353 4/1/4 +f 314/1/353 315/1/354 4/1/4 +f 314/1/353 317/1/330 315/1/354 +f 317/1/330 316/1/229 315/1/354 +f 318/1/355 317/1/330 314/1/353 +f 5/1/5 318/1/355 314/1/353 +f 318/1/355 319/1/331 317/1/330 +f 5/1/5 320/1/356 318/1/355 +f 321/1/332 319/1/331 318/1/355 +f 320/1/356 321/1/332 318/1/355 +f 6/1/6 320/1/356 5/1/5 +f 322/1/333 321/1/332 320/1/356 +f 323/1/357 320/1/356 6/1/6 +f 323/1/357 322/1/333 320/1/356 +f 324/1/7 325/1/358 6/1/6 +f 325/1/358 323/1/357 6/1/6 +f 325/1/358 326/1/334 323/1/357 +f 326/1/334 322/1/333 323/1/357 +f 327/1/335 326/1/334 325/1/358 +f 328/1/359 325/1/358 324/1/7 +f 328/1/359 329/1/360 325/1/358 +f 329/1/360 327/1/335 325/1/358 +f 329/1/360 330/1/336 327/1/335 +f 331/1/8 328/1/359 324/1/7 +f 331/1/8 332/1/352 328/1/359 +f 332/1/352 329/1/360 328/1/359 +f 332/1/352 333/1/337 329/1/360 +f 333/1/337 330/1/336 329/1/360 +f 313/1/351 333/1/337 332/1/352 +f 313/1/351 249/1/273 333/1/337 +f 315/1/354 11/1/13 4/1/4 +f 262/1/228 11/1/13 315/1/354 +f 316/1/229 262/1/228 315/1/354 +f 242/1/262 214/1/17 10/1/12 +f 242/1/262 218/1/233 214/1/17 +f 2/1/2 28/1/31 24/1/26 +f 2/1/2 12/1/14 28/1/31 +f 12/1/14 27/1/30 28/1/31 +f 12/1/14 13/1/15 27/1/30 +f 13/1/15 26/1/29 27/1/30 +f 13/1/15 14/1/16 26/1/29 +f 14/1/16 25/1/28 26/1/29 +f 214/1/17 25/1/28 14/1/16 +f 286/1/313 280/1/308 268/1/295 +f 267/1/294 286/1/313 268/1/295 +f 286/1/313 287/1/314 280/1/308 +f 287/1/314 281/1/309 280/1/308 +f 287/1/314 288/1/315 281/1/309 +f 288/1/315 282/1/296 281/1/309 +f 288/1/315 269/1/299 282/1/296 +f 275/1/304 283/1/310 276/1/305 +f 277/1/306 283/1/310 275/1/304 +f 277/1/306 284/1/311 283/1/310 +f 278/1/307 284/1/311 277/1/306 +f 278/1/307 285/1/312 284/1/311 +f 279/1/303 285/1/312 278/1/307 +f 279/1/303 274/1/302 285/1/312 +f 263/1/292 258/1/289 256/1/284 +f 255/1/283 263/1/292 256/1/284 +f 263/1/292 259/1/290 258/1/289 +f 263/1/292 264/1/293 259/1/290 +f 264/1/293 260/1/291 259/1/290 +f 264/1/293 265/1/288 260/1/291 +f 265/1/288 257/1/285 260/1/291 +f 351/1/316 345/1/361 344/1/317 +f 352/1/362 345/1/361 351/1/316 +f 334/1/363 345/1/361 352/1/362 +f 335/1/364 345/1/361 334/1/363 +f 205/1/204 335/1/364 334/1/363 +f 194/1/203 335/1/364 205/1/204 +f 336/1/365 150/1/157 147/1/154 +f 251/1/279 336/1/365 147/1/154 +f 337/1/276 152/1/159 150/1/157 +f 336/1/365 337/1/276 150/1/157 +f 151/1/158 250/1/274 146/1/153 +f 151/1/158 338/1/366 250/1/274 +f 153/1/160 338/1/366 151/1/158 +f 153/1/160 339/1/277 338/1/366 +f 253/1/281 143/1/150 138/1/145 +f 253/1/281 340/1/278 143/1/150 +f 117/1/130 100/1/105 93/1/107 +f 117/1/130 123/1/129 100/1/105 +f 123/1/129 103/1/110 100/1/105 +f 126/1/133 133/1/140 104/1/111 +f 133/1/140 111/1/118 104/1/111 +f 133/1/140 136/1/143 111/1/118 +f 136/1/143 114/1/121 111/1/118 +f 112/1/119 128/1/135 106/1/113 +f 112/1/119 134/1/141 128/1/135 +f 115/1/122 134/1/141 112/1/119 +f 115/1/122 137/1/144 134/1/141 +f 98/1/103 120/1/125 96/1/102 +f 98/1/103 121/1/126 120/1/125 +f 101/1/108 121/1/126 98/1/103 +f 101/1/108 125/1/132 121/1/126 +f 119/1/124 99/1/104 97/1/100 +f 119/1/124 122/1/127 99/1/104 +f 122/1/127 124/1/131 99/1/104 +f 124/1/131 102/1/109 99/1/104 +f 124/1/131 129/1/136 102/1/109 +f 129/1/136 107/1/114 102/1/109 +f 142/1/149 341/1/275 254/1/282 +f 144/1/151 341/1/275 142/1/149 +f 201/1/214 225/1/243 202/1/205 +f 233/1/253 225/1/243 201/1/214 +f 211/1/223 233/1/253 201/1/214 +f 236/1/256 233/1/253 211/1/223 +f 222/1/240 241/1/261 243/1/260 +f 224/1/242 222/1/240 243/1/260 +f 222/1/240 223/1/239 241/1/261 +f 223/1/239 244/1/263 241/1/261 +f 223/1/239 235/1/255 244/1/263 +f 239/1/238 236/1/256 209/1/225 +f 236/1/256 211/1/223 209/1/225 +f 237/1/257 245/1/236 244/1/263 +f 237/1/257 221/1/237 245/1/236 +f 235/1/255 237/1/257 244/1/263 +f 1/1/1 266/1/286 9/1/11 +f 261/1/287 266/1/286 1/1/1 +f 345/1/361 343/1/367 344/1/317 +f 345/1/361 346/1/368 343/1/367 +f 346/1/368 342/1/323 343/1/367 +f 346/1/368 291/1/213 342/1/323 +f 335/1/364 346/1/368 345/1/361 +f 346/1/368 199/1/212 291/1/213 +f 335/1/364 194/1/203 346/1/368 +f 194/1/203 199/1/212 346/1/368 +f 344/1/317 343/1/367 290/1/319 +f 343/1/367 347/1/322 290/1/319 +f 343/1/367 342/1/323 347/1/322 +f 352/1/362 351/1/316 350/1/369 +f 349/1/370 352/1/362 350/1/369 +f 207/1/219 352/1/362 349/1/370 +f 348/1/320 207/1/219 349/1/370 +f 352/1/362 205/1/204 334/1/363 +f 207/1/219 205/1/204 352/1/362 +f 350/1/369 351/1/316 289/1/318 +f 349/1/370 350/1/369 289/1/318 +f 353/1/321 349/1/370 289/1/318 +f 348/1/320 349/1/370 353/1/321 +f 354/1/371 89/1/96 355/1/372 +f 240/1/259 89/1/96 354/1/371 +f 358/1/373 359/1/124 360/1/125 +f 361/1/126 358/1/373 360/1/125 +f 358/1/373 362/1/127 359/1/124 +f 356/1/374 363/1/129 357/1/130 +f 358/1/373 364/1/131 362/1/127 +f 365/1/132 358/1/373 361/1/126 +f 356/1/374 366/1/375 363/1/129 +f 367/1/376 358/1/373 365/1/132 +f 368/1/135 367/1/376 365/1/132 +f 358/1/373 369/1/136 364/1/131 +f 358/1/373 370/1/377 369/1/136 +f 368/1/135 371/1/378 367/1/376 +f 372/1/379 370/1/377 358/1/373 +f 356/1/374 373/1/380 366/1/375 +f 374/1/141 371/1/378 368/1/135 +f 375/1/381 376/1/382 373/1/380 +f 356/1/374 375/1/381 373/1/380 +f 377/1/383 371/1/378 374/1/141 +f 375/1/381 377/1/383 376/1/382 +f 375/1/381 371/1/378 377/1/383 +f 382/1/100 380/1/384 381/1/385 +f 380/1/384 383/1/103 381/1/385 +f 384/1/104 380/1/384 382/1/100 +f 385/1/105 379/1/386 378/1/387 +f 380/1/384 386/1/108 383/1/103 +f 387/1/109 380/1/384 384/1/104 +f 388/1/110 379/1/386 385/1/105 +f 389/1/111 379/1/386 388/1/110 +f 390/1/388 391/1/389 386/1/108 +f 380/1/384 390/1/388 386/1/108 +f 392/1/390 380/1/384 387/1/109 +f 197/1/209 196/1/207 392/1/390 +f 196/1/207 380/1/384 392/1/390 +f 393/1/391 391/1/389 390/1/388 +f 394/1/392 379/1/386 389/1/111 +f 393/1/391 395/1/393 391/1/389 +f 396/1/394 379/1/386 394/1/392 +f 397/1/395 396/1/394 394/1/392 +f 393/1/391 398/1/122 395/1/393 +f 393/1/391 396/1/394 397/1/395 +f 398/1/122 393/1/391 397/1/395 +f 399/1/396 253/1/281 252/1/280 +f 400/1/397 57/1/68 254/1/282 +f 341/1/275 400/1/397 254/1/282 +f 399/1/396 340/1/278 253/1/281 +f 401/1/398 400/1/397 341/1/275 +f 250/1/274 401/1/398 341/1/275 +f 399/1/396 251/1/279 340/1/278 +f 250/1/274 402/1/399 401/1/398 +f 195/1/206 57/1/68 400/1/397 +f 399/1/396 336/1/365 251/1/279 +f 338/1/366 402/1/399 250/1/274 +f 195/1/206 60/1/66 57/1/68 +f 399/1/396 337/1/276 336/1/365 +f 339/1/277 402/1/399 338/1/366 +f 399/1/396 403/1/400 337/1/276 +f 403/1/400 339/1/277 337/1/276 +f 403/1/400 402/1/399 339/1/277 +f 404/1/401 405/1/402 399/1/396 +f 405/1/402 403/1/400 399/1/396 +f 406/1/403 404/1/401 399/1/396 +f 407/1/404 406/1/403 399/1/396 +f 408/1/405 407/1/404 399/1/396 +f 409/1/406 408/1/405 399/1/396 +f 410/1/407 409/1/406 399/1/396 +f 410/1/407 411/1/408 409/1/406 +f 411/1/408 412/1/409 409/1/406 +f 411/1/408 413/1/410 412/1/409 +f 411/1/408 414/1/411 413/1/410 +f 411/1/408 415/1/412 414/1/411 +f 416/1/413 375/1/381 356/1/374 +f 417/1/414 416/1/413 356/1/374 +f 418/1/415 417/1/414 356/1/374 +f 419/1/416 420/1/417 356/1/374 +f 420/1/417 418/1/415 356/1/374 +f 421/1/418 419/1/416 356/1/374 +f 422/1/419 421/1/418 356/1/374 +f 423/1/420 422/1/419 356/1/374 +f 423/1/420 424/1/421 422/1/419 +f 424/1/421 425/1/422 422/1/419 +f 424/1/421 426/1/423 425/1/422 +f 424/1/421 427/1/424 426/1/423 +f 424/1/421 428/1/425 427/1/424 +f 498/1/426 499/1/427 423/1/420 +f 499/1/427 424/1/421 423/1/420 +f 429/1/428 430/1/429 410/1/407 +f 430/1/429 411/1/408 410/1/407 +f 396/1/394 431/1/430 379/1/386 +f 431/1/430 432/1/431 379/1/386 +f 432/1/431 433/1/432 379/1/386 +f 433/1/432 434/1/433 379/1/386 +f 434/1/433 435/1/434 379/1/386 +f 435/1/434 436/1/435 379/1/386 +f 436/1/435 429/1/428 379/1/386 +f 437/1/169 429/1/428 436/1/435 +f 430/1/429 429/1/428 437/1/169 +f 438/1/436 430/1/429 437/1/169 +f 439/1/437 430/1/429 438/1/436 +f 440/1/438 430/1/429 439/1/437 +f 441/1/174 430/1/429 440/1/438 +f 393/1/391 402/1/399 403/1/400 +f 396/1/394 393/1/391 403/1/400 +f 525/1/439 371/1/378 375/1/381 +f 442/1/440 371/1/378 525/1/439 +f 409/1/406 436/1/435 408/1/405 +f 409/1/406 437/1/169 436/1/435 +f 52/1/59 443/1/441 43/1/47 +f 443/1/441 444/1/442 43/1/47 +f 444/1/442 445/1/443 43/1/47 +f 445/1/443 446/1/444 43/1/47 +f 445/1/443 447/1/445 446/1/444 +f 447/1/445 448/1/246 446/1/444 +f 446/1/444 238/1/258 449/1/446 +f 448/1/246 238/1/258 446/1/444 +f 213/1/226 240/1/259 212/1/227 +f 232/1/251 240/1/259 213/1/226 +f 452/1/447 370/1/377 372/1/379 +f 450/1/448 452/1/447 372/1/379 +f 451/1/449 452/1/447 450/1/448 +f 453/1/450 451/1/449 450/1/448 +f 446/1/444 453/1/450 450/1/448 +f 446/1/444 449/1/446 453/1/450 +f 449/1/446 454/1/451 453/1/450 +f 50/1/57 31/1/34 46/1/54 +f 31/1/34 33/1/36 46/1/54 +f 422/1/419 455/1/452 421/1/418 +f 455/1/452 456/1/453 421/1/418 +f 197/1/209 229/1/249 198/1/210 +f 370/1/377 229/1/249 197/1/209 +f 452/1/447 227/1/247 370/1/377 +f 227/1/247 229/1/249 370/1/377 +f 370/1/377 197/1/209 392/1/390 +f 369/1/136 370/1/377 392/1/390 +f 356/1/374 378/1/387 379/1/386 +f 357/1/130 378/1/387 356/1/374 +f 366/1/375 389/1/111 388/1/110 +f 363/1/129 366/1/375 388/1/110 +f 377/1/383 398/1/122 397/1/395 +f 376/1/382 377/1/383 397/1/395 +f 391/1/389 365/1/132 386/1/108 +f 391/1/389 368/1/135 365/1/132 +f 359/1/124 382/1/100 381/1/385 +f 360/1/125 359/1/124 381/1/385 +f 457/1/454 358/1/373 367/1/376 +f 457/1/454 458/1/455 358/1/373 +f 463/1/456 459/1/457 462/1/458 +f 468/1/459 459/1/457 463/1/456 +f 371/1/378 457/1/454 367/1/376 +f 371/1/378 460/1/460 457/1/454 +f 371/1/378 461/1/461 460/1/460 +f 371/1/378 462/1/458 461/1/461 +f 463/1/456 464/1/44 32/1/35 +f 442/1/440 464/1/44 463/1/456 +f 371/1/378 463/1/456 462/1/458 +f 371/1/378 442/1/440 463/1/456 +f 458/1/455 372/1/379 358/1/373 +f 465/1/462 372/1/379 458/1/455 +f 466/1/463 372/1/379 465/1/462 +f 467/1/464 372/1/379 466/1/463 +f 40/1/43 468/1/459 39/1/42 +f 459/1/457 372/1/379 467/1/464 +f 40/1/43 469/1/465 468/1/459 +f 450/1/448 372/1/379 459/1/457 +f 468/1/459 450/1/448 459/1/457 +f 469/1/465 450/1/448 468/1/459 +f 470/1/466 400/1/397 401/1/398 +f 470/1/466 471/1/467 400/1/397 +f 476/1/468 491/1/469 472/1/470 +f 474/1/471 491/1/469 476/1/468 +f 473/1/472 474/1/471 475/1/473 +f 474/1/471 476/1/468 475/1/473 +f 477/1/474 473/1/472 475/1/473 +f 488/1/475 473/1/472 477/1/474 +f 380/1/384 478/1/476 390/1/388 +f 478/1/476 479/1/477 390/1/388 +f 402/1/399 470/1/466 401/1/398 +f 479/1/477 393/1/391 390/1/388 +f 480/1/478 393/1/391 479/1/477 +f 481/1/479 393/1/391 480/1/478 +f 482/1/480 393/1/391 481/1/479 +f 477/1/474 393/1/391 482/1/480 +f 393/1/391 477/1/474 475/1/473 +f 476/1/468 393/1/391 475/1/473 +f 402/1/399 483/1/481 470/1/466 +f 402/1/399 484/1/482 483/1/481 +f 402/1/399 485/1/483 484/1/482 +f 402/1/399 472/1/470 485/1/483 +f 402/1/399 476/1/468 472/1/470 +f 402/1/399 393/1/391 476/1/468 +f 471/1/467 195/1/206 400/1/397 +f 196/1/207 478/1/476 380/1/384 +f 196/1/207 486/1/484 478/1/476 +f 196/1/207 487/1/485 486/1/484 +f 196/1/207 488/1/475 487/1/485 +f 196/1/207 474/1/471 488/1/475 +f 474/1/471 473/1/472 488/1/475 +f 489/1/486 195/1/206 471/1/467 +f 490/1/487 195/1/206 489/1/486 +f 491/1/469 195/1/206 490/1/487 +f 474/1/471 195/1/206 491/1/469 +f 196/1/207 195/1/206 474/1/471 +f 547/1/488 554/1/489 492/1/490 +f 554/1/489 493/1/491 492/1/490 +f 212/1/227 354/1/371 559/1/492 +f 552/1/221 212/1/227 559/1/492 +f 212/1/227 240/1/259 354/1/371 +f 355/1/372 544/1/493 550/1/494 +f 89/1/96 86/1/93 355/1/372 +f 86/1/93 544/1/493 355/1/372 +f 86/1/93 206/1/218 544/1/493 +f 412/1/409 437/1/169 409/1/406 +f 412/1/409 438/1/436 437/1/169 +f 413/1/410 438/1/436 412/1/409 +f 413/1/410 439/1/437 438/1/436 +f 414/1/411 439/1/437 413/1/410 +f 414/1/411 440/1/438 439/1/437 +f 415/1/412 440/1/438 414/1/411 +f 415/1/412 441/1/174 440/1/438 +f 411/1/408 441/1/174 415/1/412 +f 411/1/408 430/1/429 441/1/174 +f 422/1/419 494/1/495 455/1/452 +f 425/1/422 494/1/495 422/1/419 +f 425/1/422 506/1/496 494/1/495 +f 426/1/423 506/1/496 425/1/422 +f 426/1/423 507/1/497 506/1/496 +f 426/1/423 510/1/498 507/1/497 +f 427/1/424 510/1/498 426/1/423 +f 427/1/424 512/1/499 510/1/498 +f 427/1/424 515/1/500 512/1/499 +f 428/1/425 515/1/500 427/1/424 +f 428/1/425 518/1/501 515/1/500 +f 424/1/421 518/1/501 428/1/425 +f 424/1/421 499/1/427 518/1/501 +f 403/1/400 431/1/430 396/1/394 +f 405/1/402 431/1/430 403/1/400 +f 405/1/402 432/1/431 431/1/430 +f 404/1/401 432/1/431 405/1/402 +f 404/1/401 433/1/432 432/1/431 +f 406/1/403 433/1/432 404/1/401 +f 406/1/403 434/1/433 433/1/432 +f 407/1/404 434/1/433 406/1/403 +f 407/1/404 435/1/434 434/1/433 +f 408/1/405 435/1/434 407/1/404 +f 408/1/405 436/1/435 435/1/434 +f 416/1/413 525/1/439 375/1/381 +f 416/1/413 526/1/502 525/1/439 +f 416/1/413 527/1/503 526/1/502 +f 417/1/414 527/1/503 416/1/413 +f 417/1/414 529/1/504 527/1/503 +f 417/1/414 532/1/505 529/1/504 +f 418/1/415 532/1/505 417/1/414 +f 418/1/415 534/1/506 532/1/505 +f 420/1/417 534/1/506 418/1/415 +f 420/1/417 536/1/507 534/1/506 +f 420/1/417 538/1/508 536/1/507 +f 419/1/416 538/1/508 420/1/417 +f 419/1/416 540/1/509 538/1/508 +f 421/1/418 540/1/509 419/1/416 +f 421/1/418 456/1/453 540/1/509 +f 495/1/510 38/1/41 516/1/49 +f 495/1/510 496/1/511 38/1/41 +f 497/1/512 496/1/511 495/1/510 +f 497/1/512 498/1/426 496/1/511 +f 499/1/427 498/1/426 497/1/512 +f 502/1/513 500/1/48 501/1/514 +f 455/1/452 502/1/513 501/1/514 +f 503/1/515 502/1/513 455/1/452 +f 494/1/495 503/1/515 455/1/452 +f 502/1/513 504/1/50 500/1/48 +f 505/1/516 504/1/50 502/1/513 +f 503/1/515 505/1/516 502/1/513 +f 506/1/496 505/1/516 503/1/515 +f 494/1/495 506/1/496 503/1/515 +f 507/1/497 505/1/516 506/1/496 +f 508/1/517 44/1/51 504/1/50 +f 505/1/516 508/1/517 504/1/50 +f 509/1/518 508/1/517 505/1/516 +f 507/1/497 509/1/518 505/1/516 +f 510/1/498 509/1/518 507/1/497 +f 511/1/519 44/1/51 508/1/517 +f 509/1/518 511/1/519 508/1/517 +f 512/1/499 511/1/519 509/1/518 +f 510/1/498 512/1/499 509/1/518 +f 513/1/520 511/1/519 512/1/499 +f 511/1/519 514/1/521 44/1/51 +f 514/1/521 516/1/49 44/1/51 +f 513/1/520 514/1/521 511/1/519 +f 515/1/500 513/1/520 512/1/499 +f 517/1/522 514/1/521 513/1/520 +f 515/1/500 517/1/522 513/1/520 +f 517/1/522 516/1/49 514/1/521 +f 517/1/522 495/1/510 516/1/49 +f 515/1/500 518/1/501 517/1/522 +f 497/1/512 495/1/510 517/1/522 +f 518/1/501 497/1/512 517/1/522 +f 499/1/427 497/1/512 518/1/501 +f 501/1/514 500/1/48 37/1/40 +f 455/1/452 519/1/523 456/1/453 +f 520/1/524 501/1/514 37/1/40 +f 455/1/452 520/1/524 519/1/523 +f 455/1/452 501/1/514 520/1/524 +f 522/1/525 34/1/37 521/1/526 +f 523/1/527 522/1/525 521/1/526 +f 524/1/528 35/1/38 34/1/37 +f 522/1/525 524/1/528 34/1/37 +f 526/1/502 522/1/525 523/1/527 +f 525/1/439 526/1/502 523/1/527 +f 526/1/502 527/1/503 522/1/525 +f 528/1/529 524/1/528 522/1/525 +f 527/1/503 528/1/529 522/1/525 +f 529/1/504 528/1/529 527/1/503 +f 530/1/530 35/1/38 524/1/528 +f 528/1/529 530/1/530 524/1/528 +f 531/1/531 530/1/530 528/1/529 +f 529/1/504 531/1/531 528/1/529 +f 532/1/505 531/1/531 529/1/504 +f 533/1/532 35/1/38 530/1/530 +f 531/1/531 533/1/532 530/1/530 +f 533/1/532 36/1/39 35/1/38 +f 534/1/506 533/1/532 531/1/531 +f 532/1/505 534/1/506 531/1/531 +f 535/1/533 36/1/39 533/1/532 +f 534/1/506 535/1/533 533/1/532 +f 536/1/507 535/1/533 534/1/506 +f 537/1/534 535/1/533 536/1/507 +f 538/1/508 537/1/534 536/1/507 +f 535/1/533 37/1/40 36/1/39 +f 539/1/535 37/1/40 535/1/533 +f 537/1/534 539/1/535 535/1/533 +f 537/1/534 540/1/509 539/1/535 +f 538/1/508 540/1/509 537/1/534 +f 520/1/524 37/1/40 539/1/535 +f 540/1/509 520/1/524 539/1/535 +f 519/1/523 520/1/524 540/1/509 +f 456/1/453 519/1/523 540/1/509 +f 464/1/44 521/1/526 34/1/37 +f 442/1/440 523/1/527 464/1/44 +f 523/1/527 521/1/526 464/1/44 +f 442/1/440 525/1/439 523/1/527 +f 43/1/47 469/1/465 40/1/43 +f 43/1/47 446/1/444 469/1/465 +f 446/1/444 450/1/448 469/1/465 +f 50/1/57 41/1/45 31/1/34 +f 50/1/57 54/1/61 41/1/45 +f 54/1/61 53/1/60 41/1/45 +f 53/1/60 42/1/46 41/1/45 +f 53/1/60 52/1/59 42/1/46 +f 52/1/59 43/1/47 42/1/46 +f 483/1/481 471/1/467 470/1/466 +f 483/1/481 489/1/486 471/1/467 +f 484/1/482 489/1/486 483/1/481 +f 484/1/482 490/1/487 489/1/486 +f 485/1/483 490/1/487 484/1/482 +f 485/1/483 491/1/469 490/1/487 +f 472/1/470 491/1/469 485/1/483 +f 478/1/476 480/1/478 479/1/477 +f 478/1/476 486/1/484 480/1/478 +f 486/1/484 481/1/479 480/1/478 +f 486/1/484 487/1/485 481/1/479 +f 487/1/485 482/1/480 481/1/479 +f 487/1/485 488/1/475 482/1/480 +f 488/1/475 477/1/474 482/1/480 +f 460/1/460 458/1/455 457/1/454 +f 460/1/460 465/1/462 458/1/455 +f 460/1/460 466/1/463 465/1/462 +f 461/1/461 466/1/463 460/1/460 +f 461/1/461 467/1/464 466/1/463 +f 462/1/458 467/1/464 461/1/461 +f 462/1/458 459/1/457 467/1/464 +f 541/1/536 554/1/489 547/1/488 +f 541/1/536 542/1/537 554/1/489 +f 541/1/536 543/1/538 542/1/537 +f 543/1/538 557/1/211 542/1/537 +f 200/1/208 557/1/211 543/1/538 +f 357/1/130 385/1/105 378/1/387 +f 357/1/130 363/1/129 385/1/105 +f 363/1/129 388/1/110 385/1/105 +f 373/1/380 394/1/392 389/1/111 +f 366/1/375 373/1/380 389/1/111 +f 376/1/382 397/1/395 394/1/392 +f 373/1/380 376/1/382 394/1/392 +f 395/1/393 368/1/135 391/1/389 +f 395/1/393 374/1/141 368/1/135 +f 398/1/122 374/1/141 395/1/393 +f 398/1/122 377/1/383 374/1/141 +f 383/1/103 360/1/125 381/1/385 +f 383/1/103 361/1/126 360/1/125 +f 386/1/108 361/1/126 383/1/103 +f 386/1/108 365/1/132 361/1/126 +f 359/1/124 384/1/104 382/1/100 +f 359/1/124 362/1/127 384/1/104 +f 364/1/131 387/1/109 384/1/104 +f 362/1/127 364/1/131 384/1/104 +f 369/1/136 392/1/390 387/1/109 +f 364/1/131 369/1/136 387/1/109 +f 228/1/248 203/1/215 198/1/210 +f 229/1/249 228/1/248 198/1/210 +f 228/1/248 204/1/216 203/1/215 +f 228/1/248 230/1/250 204/1/216 +f 230/1/250 208/1/222 204/1/216 +f 230/1/250 231/1/252 208/1/222 +f 451/1/449 227/1/247 452/1/447 +f 226/1/245 227/1/247 451/1/449 +f 453/1/450 226/1/245 451/1/449 +f 234/1/254 226/1/245 453/1/450 +f 208/1/222 231/1/252 213/1/226 +f 231/1/252 232/1/251 213/1/226 +f 238/1/258 454/1/451 449/1/446 +f 238/1/258 234/1/254 454/1/451 +f 234/1/254 453/1/450 454/1/451 +f 39/1/42 468/1/459 32/1/35 +f 468/1/459 463/1/456 32/1/35 +f 548/1/539 547/1/488 546/1/540 +f 548/1/539 541/1/536 547/1/488 +f 546/1/540 549/1/541 548/1/539 +f 545/1/542 549/1/541 546/1/540 +f 544/1/493 206/1/218 545/1/542 +f 549/1/541 541/1/536 548/1/539 +f 545/1/542 206/1/218 549/1/541 +f 549/1/541 206/1/218 541/1/536 +f 200/1/208 543/1/538 541/1/536 +f 206/1/218 200/1/208 541/1/536 +f 546/1/540 547/1/488 492/1/490 +f 550/1/494 546/1/540 492/1/490 +f 545/1/542 546/1/540 550/1/494 +f 544/1/493 545/1/542 550/1/494 +f 542/1/537 553/1/543 554/1/489 +f 555/1/220 551/1/544 553/1/543 +f 555/1/220 552/1/221 551/1/544 +f 542/1/537 556/1/217 553/1/543 +f 556/1/217 555/1/220 553/1/543 +f 557/1/211 556/1/217 542/1/537 +f 554/1/489 558/1/545 493/1/491 +f 554/1/489 553/1/543 558/1/545 +f 553/1/543 551/1/544 558/1/545 +f 551/1/544 559/1/492 558/1/545 +f 551/1/544 552/1/221 559/1/492 +f 589/1/244 560/1/546 690/1/241 +f 607/1/547 560/1/546 589/1/244 +f 607/1/547 561/1/548 560/1/546 +f 562/1/549 561/1/548 607/1/547 +f 563/1/550 564/1/551 562/1/549 +f 564/1/551 561/1/548 562/1/549 +f 565/1/552 564/1/551 563/1/550 +f 566/1/553 564/1/551 565/1/552 +f 567/1/554 566/1/553 565/1/552 +f 720/1/555 566/1/553 567/1/554 +f 247/1/266 720/1/555 567/1/554 +f 568/1/264 247/1/266 567/1/554 +f 569/1/556 246/1/265 626/1/267 +f 570/1/557 246/1/265 569/1/556 +f 571/1/558 570/1/557 569/1/556 +f 642/1/559 572/1/560 571/1/558 +f 572/1/560 570/1/557 571/1/558 +f 573/1/561 572/1/560 642/1/559 +f 573/1/561 574/1/562 572/1/560 +f 575/1/563 574/1/562 573/1/561 +f 575/1/563 755/1/564 574/1/562 +f 657/1/565 755/1/564 575/1/563 +f 576/1/566 755/1/564 657/1/565 +f 576/1/566 763/1/567 755/1/564 +f 769/1/568 763/1/567 576/1/566 +f 577/1/569 769/1/568 576/1/566 +f 578/1/570 769/1/568 577/1/569 +f 675/1/571 578/1/570 577/1/569 +f 579/1/572 578/1/570 675/1/571 +f 580/1/573 579/1/572 675/1/571 +f 581/1/268 579/1/572 580/1/573 +f 582/1/269 581/1/268 580/1/573 +f 48/1/55 443/1/441 52/1/59 +f 583/1/574 443/1/441 48/1/55 +f 584/1/575 443/1/441 583/1/574 +f 584/1/575 444/1/442 443/1/441 +f 585/1/576 444/1/442 584/1/575 +f 585/1/576 445/1/443 444/1/442 +f 586/1/577 445/1/443 585/1/576 +f 587/1/578 445/1/443 586/1/577 +f 587/1/578 447/1/445 445/1/443 +f 588/1/579 447/1/445 587/1/578 +f 588/1/579 448/1/246 447/1/445 +f 589/1/244 448/1/246 588/1/579 +f 45/1/53 583/1/574 48/1/55 +f 591/1/580 583/1/574 45/1/53 +f 590/1/581 584/1/575 583/1/574 +f 591/1/580 590/1/581 583/1/574 +f 592/1/582 590/1/581 591/1/580 +f 590/1/581 585/1/576 584/1/575 +f 593/1/583 585/1/576 590/1/581 +f 592/1/582 593/1/583 590/1/581 +f 594/1/584 593/1/583 592/1/582 +f 593/1/583 586/1/577 585/1/576 +f 595/1/585 592/1/582 591/1/580 +f 596/1/586 586/1/577 593/1/583 +f 598/1/587 591/1/580 45/1/53 +f 597/1/588 595/1/585 591/1/580 +f 594/1/584 596/1/586 593/1/583 +f 599/1/589 596/1/586 594/1/584 +f 595/1/585 600/1/590 592/1/582 +f 600/1/590 594/1/584 592/1/582 +f 598/1/587 597/1/588 591/1/580 +f 596/1/586 587/1/578 586/1/577 +f 601/1/591 587/1/578 596/1/586 +f 47/1/52 598/1/587 45/1/53 +f 599/1/589 601/1/591 596/1/586 +f 600/1/590 599/1/589 594/1/584 +f 602/1/592 599/1/589 600/1/590 +f 601/1/591 588/1/579 587/1/578 +f 603/1/593 588/1/579 601/1/591 +f 604/1/594 601/1/591 599/1/589 +f 597/1/588 605/1/595 595/1/585 +f 605/1/595 600/1/590 595/1/585 +f 604/1/594 603/1/593 601/1/591 +f 603/1/593 589/1/244 588/1/579 +f 607/1/547 589/1/244 603/1/593 +f 606/1/596 599/1/589 602/1/592 +f 607/1/547 603/1/593 604/1/594 +f 605/1/595 602/1/592 600/1/590 +f 606/1/596 604/1/594 599/1/589 +f 608/1/597 607/1/547 604/1/594 +f 598/1/587 609/1/598 597/1/588 +f 606/1/596 608/1/597 604/1/594 +f 610/1/599 602/1/592 605/1/595 +f 608/1/597 562/1/549 607/1/547 +f 611/1/600 609/1/598 598/1/587 +f 610/1/599 606/1/596 602/1/592 +f 606/1/596 612/1/601 608/1/597 +f 609/1/598 613/1/602 597/1/588 +f 613/1/602 605/1/595 597/1/588 +f 610/1/599 614/1/603 606/1/596 +f 608/1/597 563/1/550 562/1/549 +f 612/1/601 563/1/550 608/1/597 +f 614/1/603 612/1/601 606/1/596 +f 613/1/602 615/1/604 605/1/595 +f 615/1/604 610/1/599 605/1/595 +f 614/1/603 616/1/605 612/1/601 +f 616/1/605 563/1/550 612/1/601 +f 616/1/605 565/1/552 563/1/550 +f 47/1/52 611/1/600 598/1/587 +f 615/1/604 617/1/606 610/1/599 +f 617/1/606 614/1/603 610/1/599 +f 617/1/606 618/1/607 614/1/603 +f 618/1/607 616/1/605 614/1/603 +f 618/1/607 619/1/608 616/1/605 +f 619/1/608 565/1/552 616/1/605 +f 619/1/608 567/1/554 565/1/552 +f 613/1/602 620/1/609 615/1/604 +f 621/1/610 613/1/602 609/1/598 +f 620/1/609 617/1/606 615/1/604 +f 617/1/606 622/1/611 618/1/607 +f 622/1/611 619/1/608 618/1/607 +f 611/1/600 621/1/610 609/1/598 +f 621/1/610 620/1/609 613/1/602 +f 620/1/609 623/1/612 617/1/606 +f 623/1/612 624/1/613 617/1/606 +f 624/1/613 622/1/611 617/1/606 +f 622/1/611 625/1/614 619/1/608 +f 619/1/608 625/1/614 567/1/554 +f 625/1/614 568/1/264 567/1/554 +f 49/1/56 611/1/600 47/1/52 +f 625/1/614 627/1/615 568/1/264 +f 627/1/615 626/1/267 568/1/264 +f 49/1/56 628/1/616 611/1/600 +f 628/1/616 621/1/610 611/1/600 +f 622/1/611 632/1/617 625/1/614 +f 632/1/617 627/1/615 625/1/614 +f 628/1/616 629/1/618 621/1/610 +f 624/1/613 630/1/619 622/1/611 +f 630/1/619 632/1/617 622/1/611 +f 629/1/618 620/1/609 621/1/610 +f 629/1/618 631/1/620 620/1/609 +f 631/1/620 623/1/612 620/1/609 +f 623/1/612 631/1/620 624/1/613 +f 631/1/620 630/1/619 624/1/613 +f 632/1/617 569/1/556 626/1/267 +f 627/1/615 632/1/617 626/1/267 +f 49/1/56 633/1/621 628/1/616 +f 634/1/622 629/1/618 628/1/616 +f 633/1/621 634/1/622 628/1/616 +f 635/1/623 631/1/620 629/1/618 +f 634/1/622 635/1/623 629/1/618 +f 635/1/623 636/1/624 631/1/620 +f 636/1/624 630/1/619 631/1/620 +f 636/1/624 637/1/625 630/1/619 +f 637/1/625 632/1/617 630/1/619 +f 638/1/626 571/1/558 569/1/556 +f 632/1/617 638/1/626 569/1/556 +f 637/1/625 638/1/626 632/1/617 +f 635/1/623 639/1/627 636/1/624 +f 636/1/624 640/1/628 637/1/625 +f 639/1/627 640/1/628 636/1/624 +f 641/1/629 638/1/626 637/1/625 +f 640/1/628 641/1/629 637/1/625 +f 642/1/559 571/1/558 638/1/626 +f 641/1/629 642/1/559 638/1/626 +f 634/1/622 643/1/630 635/1/623 +f 49/1/56 648/1/631 633/1/621 +f 643/1/630 639/1/627 635/1/623 +f 644/1/632 634/1/622 633/1/621 +f 648/1/631 644/1/632 633/1/621 +f 643/1/630 645/1/633 639/1/627 +f 644/1/632 646/1/634 634/1/622 +f 646/1/634 643/1/630 634/1/622 +f 645/1/633 647/1/635 639/1/627 +f 647/1/635 640/1/628 639/1/627 +f 647/1/635 649/1/636 640/1/628 +f 649/1/636 641/1/629 640/1/628 +f 649/1/636 650/1/637 641/1/629 +f 650/1/637 642/1/559 641/1/629 +f 55/1/62 648/1/631 49/1/56 +f 650/1/637 573/1/561 642/1/559 +f 55/1/62 651/1/638 648/1/631 +f 646/1/634 645/1/633 643/1/630 +f 650/1/637 575/1/563 573/1/561 +f 651/1/638 644/1/632 648/1/631 +f 646/1/634 652/1/639 645/1/633 +f 652/1/639 647/1/635 645/1/633 +f 653/1/640 646/1/634 644/1/632 +f 654/1/641 649/1/636 647/1/635 +f 652/1/639 654/1/641 647/1/635 +f 51/1/58 655/1/642 55/1/62 +f 653/1/640 652/1/639 646/1/634 +f 656/1/643 650/1/637 649/1/636 +f 654/1/641 656/1/643 649/1/636 +f 651/1/638 653/1/640 644/1/632 +f 657/1/565 575/1/563 650/1/637 +f 656/1/643 657/1/565 650/1/637 +f 653/1/640 658/1/644 652/1/639 +f 659/1/645 651/1/638 55/1/62 +f 660/1/646 653/1/640 651/1/638 +f 658/1/644 654/1/641 652/1/639 +f 655/1/642 659/1/645 55/1/62 +f 660/1/646 658/1/644 653/1/640 +f 661/1/647 659/1/645 655/1/642 +f 662/1/648 658/1/644 660/1/646 +f 659/1/645 660/1/646 651/1/638 +f 658/1/644 663/1/649 654/1/641 +f 663/1/649 656/1/643 654/1/641 +f 664/1/650 660/1/646 659/1/645 +f 663/1/649 665/1/651 656/1/643 +f 665/1/651 657/1/565 656/1/643 +f 665/1/651 576/1/566 657/1/565 +f 666/1/652 663/1/649 658/1/644 +f 662/1/648 666/1/652 658/1/644 +f 667/1/653 664/1/650 659/1/645 +f 661/1/647 667/1/653 659/1/645 +f 668/1/654 662/1/648 660/1/646 +f 664/1/650 668/1/654 660/1/646 +f 669/1/655 668/1/654 664/1/650 +f 663/1/649 670/1/656 665/1/651 +f 668/1/654 666/1/652 662/1/648 +f 670/1/656 576/1/566 665/1/651 +f 666/1/652 670/1/656 663/1/649 +f 667/1/653 669/1/655 664/1/650 +f 671/1/657 666/1/652 668/1/654 +f 672/1/658 669/1/655 667/1/653 +f 669/1/655 671/1/657 668/1/654 +f 670/1/656 577/1/569 576/1/566 +f 673/1/659 672/1/658 667/1/653 +f 674/1/660 670/1/656 666/1/652 +f 671/1/657 674/1/660 666/1/652 +f 672/1/658 671/1/657 669/1/655 +f 675/1/571 577/1/569 670/1/656 +f 674/1/660 675/1/571 670/1/656 +f 676/1/661 674/1/660 671/1/657 +f 677/1/662 671/1/657 672/1/658 +f 676/1/661 675/1/571 674/1/660 +f 677/1/662 676/1/661 671/1/657 +f 673/1/659 677/1/662 672/1/658 +f 676/1/661 678/1/663 675/1/571 +f 679/1/664 677/1/662 673/1/659 +f 678/1/663 676/1/661 677/1/662 +f 678/1/663 580/1/573 675/1/571 +f 680/1/665 678/1/663 677/1/662 +f 679/1/664 680/1/665 677/1/662 +f 680/1/665 580/1/573 678/1/663 +f 681/1/666 680/1/665 679/1/664 +f 680/1/665 582/1/269 580/1/573 +f 681/1/666 582/1/269 680/1/665 +f 661/1/647 655/1/642 51/1/58 +f 682/1/667 661/1/647 51/1/58 +f 667/1/653 661/1/647 682/1/667 +f 673/1/659 667/1/653 682/1/667 +f 683/1/668 673/1/659 682/1/667 +f 683/1/668 679/1/664 673/1/659 +f 683/1/668 681/1/666 679/1/664 +f 684/1/271 681/1/666 683/1/668 +f 684/1/271 582/1/269 681/1/666 +f 215/1/230 22/1/24 25/1/28 +f 215/1/230 685/1/669 22/1/24 +f 216/1/231 685/1/669 215/1/230 +f 216/1/231 686/1/670 685/1/669 +f 217/1/232 686/1/670 216/1/231 +f 217/1/232 687/1/671 686/1/670 +f 217/1/232 688/1/672 687/1/671 +f 219/1/234 688/1/672 217/1/232 +f 219/1/234 689/1/673 688/1/672 +f 219/1/234 690/1/241 689/1/673 +f 220/1/235 690/1/241 219/1/234 +f 685/1/669 691/1/674 22/1/24 +f 691/1/674 20/1/21 22/1/24 +f 685/1/669 692/1/675 691/1/674 +f 693/1/676 20/1/21 691/1/674 +f 686/1/670 692/1/675 685/1/669 +f 692/1/675 694/1/677 691/1/674 +f 694/1/677 693/1/676 691/1/674 +f 686/1/670 695/1/678 692/1/675 +f 693/1/676 21/1/22 20/1/21 +f 696/1/679 694/1/677 692/1/675 +f 695/1/678 696/1/679 692/1/675 +f 687/1/671 695/1/678 686/1/670 +f 697/1/680 695/1/678 687/1/671 +f 693/1/676 700/1/681 21/1/22 +f 698/1/682 693/1/676 694/1/677 +f 696/1/679 698/1/682 694/1/677 +f 699/1/683 696/1/679 695/1/678 +f 697/1/680 699/1/683 695/1/678 +f 688/1/672 697/1/680 687/1/671 +f 701/1/684 697/1/680 688/1/672 +f 689/1/673 702/1/685 688/1/672 +f 699/1/683 698/1/682 696/1/679 +f 702/1/685 701/1/684 688/1/672 +f 703/1/686 699/1/683 697/1/680 +f 701/1/684 703/1/686 697/1/680 +f 693/1/676 704/1/687 700/1/681 +f 698/1/682 704/1/687 693/1/676 +f 705/1/688 698/1/682 699/1/683 +f 690/1/241 702/1/685 689/1/673 +f 702/1/685 706/1/689 701/1/684 +f 707/1/690 704/1/687 698/1/682 +f 560/1/546 702/1/685 690/1/241 +f 706/1/689 703/1/686 701/1/684 +f 703/1/686 705/1/688 699/1/683 +f 700/1/681 708/1/691 21/1/22 +f 560/1/546 706/1/689 702/1/685 +f 709/1/692 705/1/688 703/1/686 +f 560/1/546 561/1/548 706/1/689 +f 706/1/689 709/1/692 703/1/686 +f 705/1/688 707/1/690 698/1/682 +f 561/1/548 709/1/692 706/1/689 +f 704/1/687 710/1/693 700/1/681 +f 711/1/694 707/1/690 705/1/688 +f 710/1/693 708/1/691 700/1/681 +f 709/1/692 711/1/694 705/1/688 +f 713/1/695 710/1/693 704/1/687 +f 561/1/548 712/1/696 709/1/692 +f 712/1/696 711/1/694 709/1/692 +f 561/1/548 564/1/551 712/1/696 +f 707/1/690 713/1/695 704/1/687 +f 714/1/697 713/1/695 707/1/690 +f 712/1/696 715/1/698 711/1/694 +f 708/1/691 23/1/25 21/1/22 +f 564/1/551 715/1/698 712/1/696 +f 716/1/699 714/1/697 707/1/690 +f 711/1/694 716/1/699 707/1/690 +f 715/1/698 716/1/699 711/1/694 +f 710/1/693 717/1/700 708/1/691 +f 564/1/551 566/1/553 715/1/698 +f 713/1/695 717/1/700 710/1/693 +f 718/1/701 717/1/700 713/1/695 +f 714/1/697 718/1/701 713/1/695 +f 719/1/702 718/1/701 714/1/697 +f 716/1/699 719/1/702 714/1/697 +f 720/1/555 716/1/699 715/1/698 +f 566/1/553 720/1/555 715/1/698 +f 716/1/699 721/1/703 719/1/702 +f 722/1/704 721/1/703 716/1/699 +f 720/1/555 722/1/704 716/1/699 +f 247/1/266 722/1/704 720/1/555 +f 723/1/705 29/1/32 23/1/25 +f 246/1/265 722/1/704 247/1/266 +f 246/1/265 724/1/706 722/1/704 +f 708/1/691 723/1/705 23/1/25 +f 725/1/707 723/1/705 708/1/691 +f 724/1/706 721/1/703 722/1/704 +f 724/1/706 726/1/708 721/1/703 +f 717/1/700 725/1/707 708/1/691 +f 727/1/709 725/1/707 717/1/700 +f 726/1/708 719/1/702 721/1/703 +f 726/1/708 728/1/710 719/1/702 +f 718/1/701 727/1/709 717/1/700 +f 728/1/710 718/1/701 719/1/702 +f 728/1/710 727/1/709 718/1/701 +f 726/1/708 729/1/711 728/1/710 +f 246/1/265 730/1/712 724/1/706 +f 730/1/712 726/1/708 724/1/706 +f 730/1/712 729/1/711 726/1/708 +f 570/1/557 730/1/712 246/1/265 +f 723/1/705 731/1/713 29/1/32 +f 725/1/707 731/1/713 723/1/705 +f 732/1/714 731/1/713 725/1/707 +f 727/1/709 732/1/714 725/1/707 +f 733/1/715 732/1/714 727/1/709 +f 728/1/710 733/1/715 727/1/709 +f 734/1/716 733/1/715 728/1/710 +f 729/1/711 734/1/716 728/1/710 +f 735/1/717 734/1/716 729/1/711 +f 730/1/712 735/1/717 729/1/711 +f 736/1/718 735/1/717 730/1/712 +f 570/1/557 736/1/718 730/1/712 +f 731/1/713 737/1/719 29/1/32 +f 738/1/720 737/1/719 731/1/713 +f 739/1/721 738/1/720 731/1/713 +f 732/1/714 739/1/721 731/1/713 +f 570/1/557 572/1/560 736/1/718 +f 740/1/722 739/1/721 732/1/714 +f 733/1/715 740/1/722 732/1/714 +f 741/1/723 740/1/722 733/1/715 +f 734/1/716 741/1/723 733/1/715 +f 742/1/724 741/1/723 734/1/716 +f 735/1/717 742/1/724 734/1/716 +f 572/1/560 742/1/724 735/1/717 +f 736/1/718 572/1/560 735/1/717 +f 740/1/722 743/1/725 739/1/721 +f 741/1/723 743/1/725 740/1/722 +f 737/1/719 744/1/726 29/1/32 +f 744/1/726 30/1/33 29/1/32 +f 745/1/727 743/1/725 741/1/723 +f 742/1/724 745/1/727 741/1/723 +f 746/1/728 745/1/727 742/1/724 +f 572/1/560 746/1/728 742/1/724 +f 574/1/562 746/1/728 572/1/560 +f 738/1/720 744/1/726 737/1/719 +f 739/1/721 747/1/729 738/1/720 +f 748/1/730 744/1/726 738/1/720 +f 749/1/731 747/1/729 739/1/721 +f 743/1/725 749/1/731 739/1/721 +f 744/1/726 750/1/732 30/1/33 +f 747/1/729 748/1/730 738/1/720 +f 752/1/733 749/1/731 743/1/725 +f 745/1/727 752/1/733 743/1/725 +f 751/1/734 748/1/730 747/1/729 +f 749/1/731 751/1/734 747/1/729 +f 753/1/735 752/1/733 745/1/727 +f 750/1/732 18/1/27 30/1/33 +f 746/1/728 753/1/735 745/1/727 +f 748/1/730 754/1/736 744/1/726 +f 754/1/736 750/1/732 744/1/726 +f 755/1/564 753/1/735 746/1/728 +f 574/1/562 755/1/564 746/1/728 +f 751/1/734 756/1/737 748/1/730 +f 757/1/738 751/1/734 749/1/731 +f 752/1/733 757/1/738 749/1/731 +f 758/1/739 18/1/27 750/1/732 +f 759/1/740 757/1/738 752/1/733 +f 753/1/735 759/1/740 752/1/733 +f 756/1/737 760/1/741 748/1/730 +f 760/1/741 754/1/736 748/1/730 +f 754/1/736 758/1/739 750/1/732 +f 761/1/742 756/1/737 751/1/734 +f 755/1/564 759/1/740 753/1/735 +f 760/1/741 762/1/743 754/1/736 +f 757/1/738 761/1/742 751/1/734 +f 762/1/743 758/1/739 754/1/736 +f 755/1/564 763/1/567 759/1/740 +f 756/1/737 764/1/744 760/1/741 +f 765/1/745 756/1/737 761/1/742 +f 766/1/746 761/1/742 757/1/738 +f 759/1/740 766/1/746 757/1/738 +f 764/1/744 768/1/747 760/1/741 +f 768/1/747 762/1/743 760/1/741 +f 769/1/568 766/1/746 759/1/740 +f 763/1/567 769/1/568 759/1/740 +f 770/1/748 764/1/744 756/1/737 +f 765/1/745 770/1/748 756/1/737 +f 768/1/747 767/1/749 762/1/743 +f 771/1/750 765/1/745 761/1/742 +f 766/1/746 771/1/750 761/1/742 +f 769/1/568 771/1/750 766/1/746 +f 770/1/748 768/1/747 764/1/744 +f 578/1/570 771/1/750 769/1/568 +f 771/1/750 770/1/748 765/1/745 +f 773/1/751 767/1/749 768/1/747 +f 774/1/752 770/1/748 771/1/750 +f 772/1/753 768/1/747 770/1/748 +f 578/1/570 774/1/752 771/1/750 +f 772/1/753 775/1/754 768/1/747 +f 775/1/754 773/1/751 768/1/747 +f 774/1/752 776/1/755 770/1/748 +f 776/1/755 772/1/753 770/1/748 +f 578/1/570 579/1/572 774/1/752 +f 579/1/572 776/1/755 774/1/752 +f 776/1/755 777/1/756 772/1/753 +f 777/1/756 775/1/754 772/1/753 +f 579/1/572 581/1/268 776/1/755 +f 581/1/268 777/1/756 776/1/755 +f 758/1/739 778/1/757 18/1/27 +f 758/1/739 762/1/743 778/1/757 +f 762/1/743 767/1/749 778/1/757 +f 767/1/749 779/1/758 778/1/757 +f 773/1/751 779/1/758 767/1/749 +f 773/1/751 780/1/759 779/1/758 +f 775/1/754 780/1/759 773/1/751 +f 775/1/754 777/1/756 780/1/759 +f 777/1/756 781/1/270 780/1/759 +f 581/1/268 781/1/270 777/1/756 +f 139/1/146 399/1/396 140/1/147 +f 399/1/396 252/1/280 140/1/147 +f 18/1/27 3/1/3 19/1/23 +f 33/1/36 51/1/58 46/1/54 +f 18/1/27 8/1/10 3/1/3 +f 38/1/41 51/1/58 33/1/36 +f 182/1/191 116/1/128 94/1/106 +f 174/1/181 182/1/191 94/1/106 +f 161/1/168 410/1/407 139/1/146 +f 410/1/407 399/1/396 139/1/146 +f 423/1/420 356/1/374 379/1/386 +f 429/1/428 423/1/420 379/1/386 +f 18/1/27 778/1/757 8/1/10 +f 496/1/511 682/1/667 38/1/41 +f 682/1/667 51/1/58 38/1/41 +f 778/1/757 779/1/758 8/1/10 +f 779/1/758 293/1/189 8/1/10 +f 683/1/668 682/1/667 496/1/511 +f 779/1/758 780/1/759 293/1/189 +f 498/1/426 683/1/668 496/1/511 +f 684/1/271 683/1/668 498/1/426 +f 780/1/759 781/1/270 293/1/189 +f 781/1/270 174/1/181 293/1/189 +f 781/1/270 182/1/191 174/1/181 +f 781/1/270 161/1/168 182/1/191 +f 781/1/270 410/1/407 161/1/168 +f 781/1/270 684/1/271 410/1/407 +f 684/1/271 429/1/428 410/1/407 +f 684/1/271 423/1/420 429/1/428 +f 684/1/271 498/1/426 423/1/420 +f 355/1/372 550/1/494 492/1/490 +f 354/1/371 355/1/372 492/1/490 +f 493/1/491 354/1/371 492/1/490 +f 559/1/492 354/1/371 493/1/491 +f 558/1/545 559/1/492 493/1/491 +f 92/1/99 353/1/321 289/1/318 +f 90/1/97 92/1/99 289/1/318 +f 290/1/319 90/1/97 289/1/318 +f 347/1/322 90/1/97 290/1/319 +f 784/1/760 783/1/761 782/1/762 +f 785/1/763 783/1/761 784/1/760 +f 786/1/764 785/1/763 784/1/760 +f 787/1/765 785/1/763 786/1/764 +f 788/1/766 787/1/765 786/1/764 +f 789/1/767 787/1/765 788/1/766 +f 790/1/768 789/1/767 788/1/766 +f 791/1/769 790/1/768 788/1/766 +f 792/1/770 790/1/768 791/1/769 +f 793/1/771 792/1/770 791/1/769 +f 794/1/772 792/1/770 793/1/771 +f 795/1/773 794/1/772 793/1/771 +f 796/1/774 794/1/772 795/1/773 +f 797/1/775 796/1/774 795/1/773 +f 798/1/776 796/1/774 797/1/775 +f 799/1/777 798/1/776 797/1/775 +f 800/1/778 798/1/776 799/1/777 +f 801/1/779 800/1/778 799/1/777 +f 802/1/780 800/1/778 801/1/779 +f 803/1/781 802/1/780 801/1/779 +f 804/1/782 802/1/780 803/1/781 +f 805/1/783 804/1/782 803/1/781 +f 806/1/784 804/1/782 805/1/783 +f 807/1/785 804/1/782 806/1/784 +f 808/1/786 807/1/785 806/1/784 +f 809/1/787 807/1/785 808/1/786 +f 810/1/788 809/1/787 808/1/786 +f 811/1/789 809/1/787 810/1/788 +f 812/1/790 811/1/789 810/1/788 +f 813/1/791 811/1/789 812/1/790 +f 816/1/792 817/1/793 815/1/794 +f 814/1/795 816/1/792 815/1/794 +f 818/1/796 819/1/797 817/1/793 +f 816/1/792 818/1/796 817/1/793 +f 818/1/796 820/1/798 819/1/797 +f 820/1/798 821/1/799 819/1/797 +f 820/1/798 822/1/800 821/1/799 +f 823/1/801 824/1/802 821/1/799 +f 822/1/800 823/1/801 821/1/799 +f 825/1/803 826/1/804 824/1/802 +f 823/1/801 825/1/803 824/1/802 +f 813/1/791 812/1/790 826/1/804 +f 825/1/803 813/1/791 826/1/804 +f 827/1/805 814/1/795 828/1/806 +f 814/1/795 815/1/794 828/1/806 +f 831/1/807 832/1/808 830/1/809 +f 829/1/810 831/1/807 830/1/809 +f 833/1/811 834/1/812 832/1/808 +f 831/1/807 833/1/811 832/1/808 +f 835/1/813 836/1/814 834/1/812 +f 833/1/811 835/1/813 834/1/812 +f 835/1/813 837/1/815 836/1/814 +f 835/1/813 838/1/816 837/1/815 +f 838/1/816 839/1/817 837/1/815 +f 840/1/818 841/1/819 839/1/817 +f 838/1/816 840/1/818 839/1/817 +f 827/1/805 828/1/806 841/1/819 +f 840/1/818 827/1/805 841/1/819 +f 783/1/761 829/1/810 782/1/762 +f 829/1/810 830/1/809 782/1/762 +f 796/1/774 798/1/776 783/1/761 +f 798/1/776 829/1/810 783/1/761 +f 794/1/772 796/1/774 783/1/761 +f 792/1/770 794/1/772 783/1/761 +f 827/1/805 840/1/818 829/1/810 +f 840/1/818 838/1/816 829/1/810 +f 814/1/795 827/1/805 829/1/810 +f 798/1/776 814/1/795 829/1/810 +f 838/1/816 835/1/813 829/1/810 +f 835/1/813 833/1/811 829/1/810 +f 785/1/763 792/1/770 783/1/761 +f 833/1/811 831/1/807 829/1/810 +f 787/1/765 792/1/770 785/1/763 +f 790/1/768 792/1/770 787/1/765 +f 789/1/767 790/1/768 787/1/765 +f 811/1/789 814/1/795 798/1/776 +f 811/1/789 813/1/791 814/1/795 +f 800/1/778 811/1/789 798/1/776 +f 813/1/791 816/1/792 814/1/795 +f 802/1/780 811/1/789 800/1/778 +f 813/1/791 818/1/796 816/1/792 +f 813/1/791 820/1/798 818/1/796 +f 804/1/782 811/1/789 802/1/780 +f 807/1/785 809/1/787 804/1/782 +f 809/1/787 811/1/789 804/1/782 +f 813/1/791 825/1/803 820/1/798 +f 825/1/803 823/1/801 820/1/798 +f 823/1/801 822/1/800 820/1/798 +f 830/1/809 815/1/794 782/1/762 +f 797/1/775 795/1/773 782/1/762 +f 815/1/794 797/1/775 782/1/762 +f 795/1/773 793/1/771 782/1/762 +f 793/1/771 791/1/769 782/1/762 +f 834/1/812 836/1/814 830/1/809 +f 837/1/815 839/1/817 830/1/809 +f 839/1/817 841/1/819 830/1/809 +f 841/1/819 828/1/806 830/1/809 +f 828/1/806 815/1/794 830/1/809 +f 836/1/814 837/1/815 830/1/809 +f 791/1/769 784/1/760 782/1/762 +f 832/1/808 834/1/812 830/1/809 +f 791/1/769 786/1/764 784/1/760 +f 791/1/769 788/1/766 786/1/764 +f 812/1/790 810/1/788 797/1/775 +f 815/1/794 812/1/790 797/1/775 +f 810/1/788 799/1/777 797/1/775 +f 817/1/793 812/1/790 815/1/794 +f 810/1/788 801/1/779 799/1/777 +f 819/1/797 812/1/790 817/1/793 +f 810/1/788 803/1/781 801/1/779 +f 821/1/799 812/1/790 819/1/797 +f 810/1/788 808/1/786 803/1/781 +f 808/1/786 806/1/784 803/1/781 +f 806/1/784 805/1/783 803/1/781 +f 824/1/802 826/1/804 821/1/799 +f 826/1/804 812/1/790 821/1/799 +f 842/1/820 843/1/821 857/1/822 +f 842/1/820 844/1/823 843/1/821 +f 845/1/824 846/1/825 847/1/826 +f 848/1/827 845/1/824 847/1/826 +f 845/1/824 849/1/828 846/1/825 +f 845/1/824 850/1/829 849/1/828 +f 845/1/824 851/1/830 850/1/829 +f 851/1/830 852/1/831 850/1/829 +f 851/1/830 853/1/832 852/1/831 +f 854/1/833 855/1/834 853/1/832 +f 851/1/830 854/1/833 853/1/832 +f 854/1/833 856/1/835 855/1/834 +f 857/1/822 843/1/821 856/1/835 +f 854/1/833 857/1/822 856/1/835 +f 858/1/836 940/1/837 859/1/838 +f 858/1/836 860/1/839 940/1/837 +f 861/1/840 865/1/841 848/1/827 +f 865/1/841 862/1/842 848/1/827 +f 863/1/843 845/1/824 848/1/827 +f 862/1/842 863/1/843 848/1/827 +f 863/1/843 864/1/844 845/1/824 +f 866/1/845 865/1/841 861/1/840 +f 868/1/846 867/1/847 866/1/845 +f 869/1/848 865/1/841 866/1/845 +f 870/1/849 868/1/846 866/1/845 +f 867/1/847 869/1/848 866/1/845 +f 871/1/850 870/1/849 866/1/845 +f 872/1/851 870/1/849 871/1/850 +f 873/1/852 870/1/849 872/1/851 +f 874/1/853 870/1/849 873/1/852 +f 875/1/854 870/1/849 874/1/853 +f 876/1/855 870/1/849 875/1/854 +f 877/1/856 876/1/855 875/1/854 +f 876/1/855 877/1/856 878/1/857 +f 879/1/858 876/1/855 878/1/857 +f 870/1/849 880/1/859 868/1/846 +f 870/1/849 881/1/860 880/1/859 +f 881/1/860 882/1/861 880/1/859 +f 882/1/861 883/1/862 880/1/859 +f 883/1/862 884/1/863 880/1/859 +f 885/1/864 879/1/858 878/1/857 +f 883/1/862 886/1/865 884/1/863 +f 887/1/866 879/1/858 885/1/864 +f 883/1/862 888/1/867 886/1/865 +f 889/1/868 879/1/858 887/1/866 +f 890/1/869 889/1/868 887/1/866 +f 891/1/870 890/1/869 887/1/866 +f 892/1/871 893/1/872 888/1/867 +f 883/1/862 892/1/871 888/1/867 +f 894/1/873 890/1/869 891/1/870 +f 846/1/825 896/1/874 847/1/826 +f 896/1/874 895/1/875 847/1/826 +f 897/1/876 898/1/877 846/1/825 +f 898/1/877 899/1/878 846/1/825 +f 901/1/879 896/1/874 846/1/825 +f 899/1/878 900/1/880 846/1/825 +f 900/1/880 901/1/879 846/1/825 +f 902/1/881 903/1/882 897/1/876 +f 903/1/882 898/1/877 897/1/876 +f 904/1/883 902/1/881 897/1/876 +f 905/1/884 902/1/881 904/1/883 +f 906/1/885 902/1/881 905/1/884 +f 907/1/886 902/1/881 906/1/885 +f 908/1/887 902/1/881 907/1/886 +f 909/1/888 908/1/887 907/1/886 +f 910/1/889 908/1/887 909/1/888 +f 903/1/882 902/1/881 911/1/890 +f 902/1/881 921/1/891 911/1/890 +f 912/1/892 908/1/887 910/1/889 +f 913/1/893 914/1/894 912/1/892 +f 914/1/894 908/1/887 912/1/892 +f 915/1/895 913/1/893 912/1/892 +f 921/1/891 916/1/896 911/1/890 +f 917/1/897 915/1/895 912/1/892 +f 921/1/891 918/1/898 916/1/896 +f 921/1/891 919/1/899 918/1/898 +f 920/1/900 915/1/895 917/1/897 +f 921/1/891 922/1/901 919/1/899 +f 922/1/901 923/1/902 919/1/899 +f 924/1/903 925/1/904 920/1/900 +f 925/1/904 915/1/895 920/1/900 +f 923/1/902 926/1/905 919/1/899 +f 923/1/902 927/1/906 926/1/905 +f 866/1/845 861/1/840 895/1/875 +f 896/1/874 866/1/845 895/1/875 +f 871/1/850 866/1/845 896/1/874 +f 901/1/879 871/1/850 896/1/874 +f 872/1/851 871/1/850 901/1/879 +f 873/1/852 872/1/851 901/1/879 +f 900/1/880 873/1/852 901/1/879 +f 874/1/853 873/1/852 900/1/880 +f 899/1/878 874/1/853 900/1/880 +f 875/1/854 874/1/853 899/1/878 +f 898/1/877 875/1/854 899/1/878 +f 877/1/856 875/1/854 898/1/877 +f 903/1/882 877/1/856 898/1/877 +f 878/1/857 877/1/856 911/1/890 +f 877/1/856 903/1/882 911/1/890 +f 902/1/881 879/1/858 921/1/891 +f 876/1/855 879/1/858 902/1/881 +f 916/1/896 878/1/857 911/1/890 +f 885/1/864 878/1/857 916/1/896 +f 918/1/898 885/1/864 916/1/896 +f 919/1/899 885/1/864 918/1/898 +f 887/1/866 885/1/864 919/1/899 +f 891/1/870 887/1/866 919/1/899 +f 926/1/905 891/1/870 919/1/899 +f 927/1/906 891/1/870 926/1/905 +f 894/1/873 891/1/870 927/1/906 +f 923/1/902 894/1/873 927/1/906 +f 890/1/869 894/1/873 923/1/902 +f 922/1/901 890/1/869 923/1/902 +f 889/1/868 890/1/869 922/1/901 +f 921/1/891 889/1/868 922/1/901 +f 879/1/858 889/1/868 921/1/891 +f 864/1/844 863/1/843 897/1/876 +f 863/1/843 904/1/883 897/1/876 +f 862/1/842 905/1/884 904/1/883 +f 863/1/843 862/1/842 904/1/883 +f 862/1/842 906/1/885 905/1/884 +f 862/1/842 865/1/841 906/1/885 +f 865/1/841 907/1/886 906/1/885 +f 865/1/841 869/1/848 907/1/886 +f 867/1/847 909/1/888 907/1/886 +f 869/1/848 867/1/847 907/1/886 +f 867/1/847 910/1/889 909/1/888 +f 867/1/847 868/1/846 910/1/889 +f 868/1/846 880/1/859 910/1/889 +f 880/1/859 912/1/892 910/1/889 +f 870/1/849 908/1/887 914/1/894 +f 881/1/860 870/1/849 914/1/894 +f 880/1/859 884/1/863 912/1/892 +f 884/1/863 917/1/897 912/1/892 +f 884/1/863 886/1/865 917/1/897 +f 888/1/867 920/1/900 917/1/897 +f 886/1/865 888/1/867 917/1/897 +f 888/1/867 924/1/903 920/1/900 +f 888/1/867 893/1/872 924/1/903 +f 892/1/871 925/1/904 924/1/903 +f 893/1/872 892/1/871 924/1/903 +f 883/1/862 915/1/895 925/1/904 +f 892/1/871 883/1/862 925/1/904 +f 882/1/861 913/1/893 915/1/895 +f 883/1/862 882/1/861 915/1/895 +f 881/1/860 914/1/894 913/1/893 +f 882/1/861 881/1/860 913/1/893 +f 861/1/840 928/1/907 895/1/875 +f 861/1/840 929/1/908 928/1/907 +f 861/1/840 930/1/909 929/1/908 +f 930/1/909 931/1/910 929/1/908 +f 932/1/911 933/1/912 931/1/910 +f 930/1/909 932/1/911 931/1/910 +f 932/1/911 934/1/913 933/1/912 +f 935/1/914 936/1/915 934/1/913 +f 932/1/911 935/1/914 934/1/913 +f 935/1/914 937/1/916 936/1/915 +f 938/1/917 930/1/909 848/1/827 +f 930/1/909 861/1/840 848/1/827 +f 939/1/918 932/1/911 938/1/917 +f 932/1/911 930/1/909 938/1/917 +f 940/1/837 935/1/914 939/1/918 +f 935/1/914 932/1/911 939/1/918 +f 895/1/875 928/1/907 847/1/826 +f 928/1/907 941/1/919 847/1/826 +f 928/1/907 929/1/908 941/1/919 +f 929/1/908 942/1/920 941/1/919 +f 929/1/908 931/1/910 942/1/920 +f 931/1/910 943/1/921 942/1/920 +f 931/1/910 933/1/912 943/1/921 +f 933/1/912 934/1/913 943/1/921 +f 934/1/913 944/1/922 943/1/921 +f 934/1/913 936/1/915 944/1/922 +f 936/1/915 945/1/923 944/1/922 +f 936/1/915 937/1/916 945/1/923 +f 937/1/916 859/1/838 945/1/923 +f 946/1/924 948/1/925 947/1/926 +f 946/1/924 949/1/927 948/1/925 +f 949/1/927 950/1/928 948/1/925 +f 949/1/927 951/1/929 950/1/928 +f 951/1/929 952/1/930 950/1/928 +f 952/1/930 953/1/931 950/1/928 +f 952/1/930 954/1/932 953/1/931 +f 954/1/932 955/1/933 953/1/931 +f 954/1/932 956/1/934 955/1/933 +f 954/1/932 957/1/935 956/1/934 +f 957/1/935 958/1/936 956/1/934 +f 957/1/935 959/1/937 958/1/936 +f 959/1/937 960/1/938 958/1/936 +f 959/1/937 961/1/939 960/1/938 +f 960/1/938 860/1/839 858/1/836 +f 960/1/938 961/1/939 860/1/839 +f 946/1/924 935/1/914 940/1/837 +f 860/1/839 946/1/924 940/1/837 +f 860/1/839 961/1/939 946/1/924 +f 961/1/939 949/1/927 946/1/924 +f 961/1/939 951/1/929 949/1/927 +f 961/1/939 952/1/930 951/1/929 +f 961/1/939 954/1/932 952/1/930 +f 961/1/939 957/1/935 954/1/932 +f 961/1/939 959/1/937 957/1/935 +f 960/1/938 858/1/836 859/1/838 +f 937/1/916 947/1/926 859/1/838 +f 947/1/926 960/1/938 859/1/838 +f 948/1/925 960/1/938 947/1/926 +f 950/1/928 960/1/938 948/1/925 +f 953/1/931 960/1/938 950/1/928 +f 955/1/933 960/1/938 953/1/931 +f 956/1/934 960/1/938 955/1/933 +f 958/1/936 960/1/938 956/1/934 +f 946/1/924 947/1/926 937/1/916 +f 935/1/914 946/1/924 937/1/916 +f 962/1/940 864/1/844 897/1/876 +f 963/1/941 864/1/844 962/1/940 +f 964/1/942 963/1/941 962/1/940 +f 965/1/943 963/1/941 964/1/942 +f 966/1/944 963/1/941 965/1/943 +f 967/1/945 966/1/944 965/1/943 +f 968/1/946 966/1/944 967/1/945 +f 969/1/947 966/1/944 968/1/946 +f 970/1/948 969/1/947 968/1/946 +f 971/1/949 969/1/947 970/1/948 +f 963/1/941 845/1/824 864/1/844 +f 963/1/941 851/1/830 845/1/824 +f 966/1/944 851/1/830 963/1/941 +f 966/1/944 854/1/833 851/1/830 +f 969/1/947 854/1/833 966/1/944 +f 969/1/947 857/1/822 854/1/833 +f 846/1/825 962/1/940 897/1/876 +f 849/1/828 962/1/940 846/1/825 +f 849/1/828 964/1/942 962/1/940 +f 850/1/829 964/1/942 849/1/828 +f 850/1/829 965/1/943 964/1/942 +f 852/1/831 965/1/943 850/1/829 +f 852/1/831 967/1/945 965/1/943 +f 853/1/832 967/1/945 852/1/831 +f 855/1/834 967/1/945 853/1/832 +f 855/1/834 968/1/946 967/1/945 +f 856/1/835 968/1/946 855/1/834 +f 856/1/835 970/1/948 968/1/946 +f 843/1/821 970/1/948 856/1/835 +f 843/1/821 971/1/949 970/1/948 +f 987/1/950 844/1/823 842/1/820 +f 987/1/950 972/1/951 844/1/823 +f 973/1/952 975/1/953 974/1/954 +f 973/1/952 976/1/955 975/1/953 +f 976/1/955 977/1/956 975/1/953 +f 976/1/955 978/1/957 977/1/956 +f 979/1/958 980/1/959 977/1/956 +f 978/1/957 979/1/958 977/1/956 +f 981/1/960 982/1/961 980/1/959 +f 979/1/958 981/1/960 980/1/959 +f 981/1/960 983/1/962 982/1/961 +f 981/1/960 984/1/963 983/1/962 +f 984/1/963 985/1/964 983/1/962 +f 984/1/963 986/1/965 985/1/964 +f 986/1/965 987/1/950 985/1/964 +f 986/1/965 972/1/951 987/1/950 +f 969/1/947 974/1/954 857/1/822 +f 987/1/950 842/1/820 857/1/822 +f 974/1/954 987/1/950 857/1/822 +f 975/1/953 987/1/950 974/1/954 +f 977/1/956 987/1/950 975/1/953 +f 980/1/959 987/1/950 977/1/956 +f 982/1/961 987/1/950 980/1/959 +f 983/1/962 987/1/950 982/1/961 +f 985/1/964 987/1/950 983/1/962 +f 971/1/949 973/1/952 969/1/947 +f 973/1/952 974/1/954 969/1/947 +f 973/1/952 971/1/949 843/1/821 +f 844/1/823 973/1/952 843/1/821 +f 844/1/823 972/1/951 973/1/952 +f 972/1/951 976/1/955 973/1/952 +f 972/1/951 978/1/957 976/1/955 +f 972/1/951 979/1/958 978/1/957 +f 972/1/951 981/1/960 979/1/958 +f 972/1/951 984/1/963 981/1/960 +f 972/1/951 986/1/965 984/1/963 +f 870/1/849 988/1/966 908/1/887 +f 989/1/967 990/1/968 988/1/966 +f 870/1/849 989/1/967 988/1/966 +f 991/1/969 992/1/970 990/1/968 +f 989/1/967 991/1/969 990/1/968 +f 991/1/969 993/1/971 992/1/970 +f 991/1/969 994/1/972 993/1/971 +f 994/1/972 995/1/973 993/1/971 +f 996/1/974 997/1/975 995/1/973 +f 994/1/972 996/1/974 995/1/973 +f 998/1/976 999/1/977 997/1/975 +f 996/1/974 998/1/976 997/1/975 +f 1000/1/978 876/1/855 902/1/881 +f 1001/1/979 1000/1/978 902/1/881 +f 1002/1/980 1000/1/978 1001/1/979 +f 1003/1/981 1002/1/980 1001/1/979 +f 1004/1/982 1002/1/980 1003/1/981 +f 1005/1/983 1002/1/980 1004/1/982 +f 1006/1/984 1005/1/983 1004/1/982 +f 1007/1/985 1005/1/983 1006/1/984 +f 1008/1/986 1007/1/985 1006/1/984 +f 1009/1/987 1007/1/985 1008/1/986 +f 1010/1/988 1009/1/987 1008/1/986 +f 1011/1/989 1009/1/987 1010/1/988 +f 1012/1/990 1011/1/989 1010/1/988 +f 1013/1/991 1011/1/989 1012/1/990 +f 1014/1/992 1013/1/991 1012/1/990 +f 1000/1/978 870/1/849 876/1/855 +f 989/1/967 870/1/849 1000/1/978 +f 1002/1/980 989/1/967 1000/1/978 +f 991/1/969 989/1/967 1002/1/980 +f 1005/1/983 991/1/969 1002/1/980 +f 1007/1/985 994/1/972 1005/1/983 +f 994/1/972 991/1/969 1005/1/983 +f 1009/1/987 994/1/972 1007/1/985 +f 996/1/974 994/1/972 1009/1/987 +f 1011/1/989 996/1/974 1009/1/987 +f 998/1/976 996/1/974 1011/1/989 +f 1013/1/991 998/1/976 1011/1/989 +f 908/1/887 988/1/966 902/1/881 +f 988/1/966 1001/1/979 902/1/881 +f 988/1/966 990/1/968 1001/1/979 +f 990/1/968 1003/1/981 1001/1/979 +f 990/1/968 1004/1/982 1003/1/981 +f 990/1/968 992/1/970 1004/1/982 +f 992/1/970 1006/1/984 1004/1/982 +f 992/1/970 993/1/971 1006/1/984 +f 993/1/971 1008/1/986 1006/1/984 +f 993/1/971 995/1/973 1008/1/986 +f 995/1/973 1010/1/988 1008/1/986 +f 995/1/973 997/1/975 1010/1/988 +f 997/1/975 1012/1/990 1010/1/988 +f 997/1/975 999/1/977 1012/1/990 +f 999/1/977 1014/1/992 1012/1/990 +f 1017/1/993 1016/1/994 1015/1/995 +f 1017/1/993 1018/1/996 1016/1/994 +f 1019/1/997 1018/1/996 1017/1/993 +f 1019/1/997 1020/1/998 1018/1/996 +f 1021/1/999 1020/1/998 1019/1/997 +f 1021/1/999 1022/1/1000 1020/1/998 +f 1023/1/1001 1022/1/1000 1021/1/999 +f 1023/1/1001 1024/1/1002 1022/1/1000 +f 1023/1/1001 1025/1/1003 1024/1/1002 +f 1026/1/1004 1025/1/1003 1023/1/1001 +f 1027/1/1005 1025/1/1003 1026/1/1004 +f 1027/1/1005 1028/1/1006 1025/1/1003 +f 1029/1/1007 1028/1/1006 1027/1/1005 +f 1029/1/1007 1030/1/1008 1028/1/1006 +f 1031/1/1009 1030/1/1008 1032/1/1010 +f 1030/1/1008 1029/1/1007 1032/1/1010 +f 1033/1/1011 1031/1/1009 1032/1/1010 +f 1034/1/1012 1033/1/1011 1032/1/1010 +f 1035/1/1013 1033/1/1011 1034/1/1012 +f 1035/1/1013 1036/1/1014 1033/1/1011 +f 1035/1/1013 1037/1/1015 1036/1/1014 +f 1038/1/1016 1037/1/1015 1035/1/1013 +f 1038/1/1016 1039/1/1017 1037/1/1015 +f 1040/1/1018 1039/1/1017 1038/1/1016 +f 1040/1/1018 1041/1/1019 1039/1/1017 +f 1042/1/1020 1041/1/1019 1040/1/1018 +f 1042/1/1020 1043/1/1021 1041/1/1019 +f 1044/1/1022 1043/1/1021 1045/1/1023 +f 1043/1/1021 1042/1/1020 1045/1/1023 +f 1046/1/1024 1047/1/1025 1055/1/1026 +f 1056/1/1027 1046/1/1024 1055/1/1026 +f 1046/1/1024 1048/1/1028 1047/1/1025 +f 1046/1/1024 1049/1/1029 1048/1/1028 +f 1049/1/1029 1050/1/1030 1048/1/1028 +f 1049/1/1029 1051/1/1031 1050/1/1030 +f 1051/1/1031 1052/1/1032 1050/1/1030 +f 1044/1/1022 1045/1/1023 1052/1/1032 +f 1051/1/1031 1044/1/1022 1052/1/1032 +f 1053/1/1033 1055/1/1026 1054/1/1034 +f 1056/1/1027 1055/1/1026 1053/1/1033 +f 1071/1/1035 1053/1/1033 1072/1/1036 +f 1053/1/1033 1054/1/1034 1072/1/1036 +f 1057/1/1037 1059/1/1038 1058/1/1039 +f 1059/1/1038 1060/1/1040 1058/1/1039 +f 1059/1/1038 1061/1/1041 1060/1/1040 +f 1061/1/1041 1062/1/1042 1060/1/1040 +f 1063/1/1043 1064/1/1044 1062/1/1042 +f 1061/1/1041 1063/1/1043 1062/1/1042 +f 1065/1/1045 1066/1/1046 1064/1/1044 +f 1063/1/1043 1065/1/1045 1064/1/1044 +f 1065/1/1045 1067/1/1047 1066/1/1046 +f 1065/1/1045 1068/1/1048 1067/1/1047 +f 1069/1/1049 1070/1/1050 1067/1/1047 +f 1068/1/1048 1069/1/1049 1067/1/1047 +f 1071/1/1035 1072/1/1036 1070/1/1050 +f 1069/1/1049 1071/1/1035 1070/1/1050 +f 1054/1/1034 998/1/976 1013/1/991 +f 1072/1/1036 1054/1/1034 1013/1/991 +f 1058/1/1039 1072/1/1036 1013/1/991 +f 1054/1/1034 1055/1/1026 998/1/976 +f 1055/1/1026 1034/1/1012 998/1/976 +f 1034/1/1012 1032/1/1010 998/1/976 +f 1032/1/1010 1015/1/995 998/1/976 +f 1032/1/1010 1017/1/993 1015/1/995 +f 1060/1/1040 1062/1/1042 1058/1/1039 +f 1062/1/1042 1064/1/1044 1058/1/1039 +f 1064/1/1044 1066/1/1046 1058/1/1039 +f 1066/1/1046 1067/1/1047 1058/1/1039 +f 1067/1/1047 1070/1/1050 1058/1/1039 +f 1070/1/1050 1072/1/1036 1058/1/1039 +f 1032/1/1010 1019/1/997 1017/1/993 +f 1032/1/1010 1021/1/999 1019/1/997 +f 1032/1/1010 1023/1/1001 1021/1/999 +f 1032/1/1010 1026/1/1004 1023/1/1001 +f 1032/1/1010 1027/1/1005 1026/1/1004 +f 1032/1/1010 1029/1/1007 1027/1/1005 +f 1045/1/1023 1042/1/1020 1055/1/1026 +f 1042/1/1020 1034/1/1012 1055/1/1026 +f 1047/1/1025 1048/1/1028 1055/1/1026 +f 1048/1/1028 1050/1/1030 1055/1/1026 +f 1050/1/1030 1052/1/1032 1055/1/1026 +f 1052/1/1032 1045/1/1023 1055/1/1026 +f 1042/1/1020 1035/1/1013 1034/1/1012 +f 1042/1/1020 1038/1/1016 1035/1/1013 +f 1042/1/1020 1040/1/1018 1038/1/1016 +f 1057/1/1037 1058/1/1039 1013/1/991 +f 1014/1/992 1057/1/1037 1013/1/991 +f 999/1/977 1031/1/1009 1014/1/992 +f 1031/1/1009 1053/1/1033 1014/1/992 +f 1053/1/1033 1057/1/1037 1014/1/992 +f 1016/1/994 1031/1/1009 999/1/977 +f 1030/1/1008 1031/1/1009 1016/1/994 +f 1053/1/1033 1059/1/1038 1057/1/1037 +f 1018/1/996 1030/1/1008 1016/1/994 +f 1053/1/1033 1061/1/1041 1059/1/1038 +f 1020/1/998 1030/1/1008 1018/1/996 +f 1053/1/1033 1063/1/1043 1061/1/1041 +f 1022/1/1000 1030/1/1008 1020/1/998 +f 1053/1/1033 1065/1/1045 1063/1/1043 +f 1024/1/1002 1030/1/1008 1022/1/1000 +f 1025/1/1003 1030/1/1008 1024/1/1002 +f 1053/1/1033 1068/1/1048 1065/1/1045 +f 1053/1/1033 1069/1/1049 1068/1/1048 +f 1028/1/1006 1030/1/1008 1025/1/1003 +f 1053/1/1033 1071/1/1035 1069/1/1049 +f 1031/1/1009 1056/1/1027 1053/1/1033 +f 1033/1/1011 1056/1/1027 1031/1/1009 +f 1044/1/1022 1056/1/1027 1033/1/1011 +f 1043/1/1021 1044/1/1022 1033/1/1011 +f 1037/1/1015 1039/1/1017 1033/1/1011 +f 1039/1/1017 1041/1/1019 1033/1/1011 +f 1041/1/1019 1043/1/1021 1033/1/1011 +f 1044/1/1022 1051/1/1031 1056/1/1027 +f 1051/1/1031 1046/1/1024 1056/1/1027 +f 1036/1/1014 1037/1/1015 1033/1/1011 +f 1051/1/1031 1049/1/1029 1046/1/1024 +f 1015/1/995 999/1/977 998/1/976 +f 1015/1/995 1016/1/994 999/1/977 +f 941/1/919 848/1/827 847/1/826 +f 938/1/917 848/1/827 941/1/919 +f 942/1/920 938/1/917 941/1/919 +f 939/1/918 938/1/917 942/1/920 +f 943/1/921 939/1/918 942/1/920 +f 944/1/922 939/1/918 943/1/921 +f 940/1/837 939/1/918 944/1/922 +f 945/1/923 940/1/837 944/1/922 +f 859/1/838 940/1/837 945/1/923 +f 1073/1/1051 1074/1/1052 1075/1/1051 +f 1074/1/1052 1076/1/1052 1075/1/1051 +f 1076/1/1052 1077/1/1053 1075/1/1051 +f 1078/1/1054 1079/1/1055 1073/1/1051 +f 1079/1/1055 1074/1/1052 1073/1/1051 +f 1076/1/1052 1080/1/1056 1077/1/1053 +f 1081/1/1057 1082/1/1058 1083/1/1059 +f 1084/1/1060 1082/1/1058 1081/1/1057 +f 1084/1/1060 1085/1/1061 1082/1/1058 +f 1086/1/1062 1085/1/1061 1084/1/1060 +f 1077/1/1053 1083/1/1059 1075/1/1051 +f 1081/1/1057 1083/1/1059 1077/1/1053 +f 1085/1/1061 1087/1/1061 1082/1/1058 +f 1087/1/1061 1088/1/1063 1082/1/1058 +f 1083/1/1059 1089/1/1064 1075/1/1051 +f 1089/1/1064 1073/1/1051 1075/1/1051 +f 1090/1/1065 1086/1/1062 1084/1/1060 +f 1091/1/1066 1086/1/1062 1090/1/1065 +f 1092/1/1067 1081/1/1057 1080/1/1056 +f 1081/1/1057 1077/1/1053 1080/1/1056 +f 1088/1/1063 1093/1/1068 1089/1/1064 +f 1093/1/1068 1094/1/1069 1089/1/1064 +f 1087/1/1061 1095/1/1070 1088/1/1063 +f 1095/1/1070 1093/1/1068 1088/1/1063 +f 1089/1/1064 1094/1/1069 1073/1/1051 +f 1094/1/1069 1078/1/1054 1073/1/1051 +f 1096/1/1071 1090/1/1065 1092/1/1067 +f 1097/1/1072 1090/1/1065 1096/1/1071 +f 1097/1/1072 1091/1/1066 1090/1/1065 +f 1098/1/1073 1091/1/1066 1097/1/1072 +f 1096/1/1071 1092/1/1067 1076/1/1052 +f 1092/1/1067 1080/1/1056 1076/1/1052 +f 1095/1/1070 1099/1/1074 1093/1/1068 +f 1099/1/1074 1100/1/1075 1093/1/1068 +f 1078/1/1054 1101/1/1076 1079/1/1055 +f 1094/1/1069 1101/1/1076 1078/1/1054 +f 1102/1/1077 1098/1/1073 1097/1/1072 +f 1103/1/1073 1098/1/1073 1102/1/1077 +f 1104/1/1078 1096/1/1071 1074/1/1052 +f 1096/1/1071 1076/1/1052 1074/1/1052 +f 1100/1/1075 1104/1/1078 1101/1/1076 +f 1100/1/1075 1102/1/1077 1104/1/1078 +f 1099/1/1074 1102/1/1077 1100/1/1075 +f 1099/1/1074 1103/1/1073 1102/1/1077 +f 1101/1/1076 1104/1/1078 1074/1/1052 +f 1079/1/1055 1101/1/1076 1074/1/1052 +f 1086/1/1062 1091/1/1066 1085/1/1061 +f 1091/1/1066 1098/1/1073 1085/1/1061 +f 1098/1/1073 1087/1/1061 1085/1/1061 +f 1098/1/1073 1103/1/1073 1087/1/1061 +f 1103/1/1073 1095/1/1070 1087/1/1061 +f 1103/1/1073 1099/1/1074 1095/1/1070 +f 1082/1/1058 1088/1/1063 1083/1/1059 +f 1088/1/1063 1089/1/1064 1083/1/1059 +f 1093/1/1068 1100/1/1075 1094/1/1069 +f 1100/1/1075 1101/1/1076 1094/1/1069 +f 1104/1/1078 1097/1/1072 1096/1/1071 +f 1102/1/1077 1097/1/1072 1104/1/1078 +f 1092/1/1067 1084/1/1060 1081/1/1057 +f 1090/1/1065 1084/1/1060 1092/1/1067 +f 1107/1/1079 1106/1/1080 1105/1/1081 +f 1182/1/1082 1108/1/1083 1192/1/1084 +f 1108/1/1083 1109/1/1085 1192/1/1084 +f 1112/1/1086 1110/1/1087 1111/1/1088 +f 1113/1/1089 1112/1/1086 1111/1/1088 +f 1114/1/1090 1112/1/1086 1113/1/1089 +f 1115/1/1091 1114/1/1090 1113/1/1089 +f 1115/1/1091 1116/1/1092 1114/1/1090 +f 1116/1/1092 1117/1/1093 1114/1/1090 +f 1118/1/1094 1120/1/1095 1119/1/1096 +f 1118/1/1094 1121/1/1097 1120/1/1095 +f 1121/1/1097 1122/1/1098 1120/1/1095 +f 1123/1/1099 1122/1/1098 1121/1/1097 +f 1118/1/1094 1119/1/1096 1109/1/1085 +f 1108/1/1083 1118/1/1094 1109/1/1085 +f 1116/1/1092 1124/1/1100 1117/1/1093 +f 1124/1/1100 1125/1/1101 1117/1/1093 +f 1124/1/1100 1126/1/1102 1125/1/1101 +f 1125/1/1101 1134/1/1103 1135/1/1104 +f 1125/1/1101 1126/1/1102 1134/1/1103 +f 1129/1/1105 1128/1/1106 1127/1/1107 +f 1130/1/1108 1129/1/1105 1127/1/1107 +f 1131/1/1109 1129/1/1105 1130/1/1108 +f 1132/1/1110 1131/1/1109 1130/1/1108 +f 1133/1/1111 1132/1/1110 1130/1/1108 +f 1136/1/1112 1137/1/1113 1135/1/1104 +f 1134/1/1103 1136/1/1112 1135/1/1104 +f 1138/1/1114 1132/1/1110 1139/1/1115 +f 1132/1/1110 1133/1/1111 1139/1/1115 +f 1137/1/1113 1139/1/1115 1135/1/1104 +f 1140/1/1116 1141/1/1117 1139/1/1115 +f 1142/1/1118 1140/1/1116 1139/1/1115 +f 1137/1/1113 1142/1/1118 1139/1/1115 +f 1140/1/1116 1143/1/1119 1141/1/1117 +f 1143/1/1119 1144/1/1120 1141/1/1117 +f 1146/1/1121 1142/1/1118 1137/1/1113 +f 1145/1/1122 1146/1/1121 1137/1/1113 +f 1133/1/1111 1125/1/1101 1135/1/1104 +f 1139/1/1115 1133/1/1111 1135/1/1104 +f 1130/1/1108 1127/1/1107 1117/1/1093 +f 1125/1/1101 1130/1/1108 1117/1/1093 +f 1133/1/1111 1130/1/1108 1125/1/1101 +f 1117/1/1093 1123/1/1099 1114/1/1090 +f 1117/1/1093 1127/1/1107 1123/1/1099 +f 1112/1/1086 1118/1/1094 1110/1/1087 +f 1121/1/1097 1118/1/1094 1112/1/1086 +f 1114/1/1090 1121/1/1097 1112/1/1086 +f 1123/1/1099 1121/1/1097 1114/1/1090 +f 1110/1/1087 1107/1/1079 1148/1/1123 +f 1107/1/1079 1147/1/1124 1148/1/1123 +f 1147/1/1124 1151/1/1125 1148/1/1123 +f 1150/1/1126 1149/1/1127 1148/1/1123 +f 1151/1/1125 1153/1/1128 1148/1/1123 +f 1149/1/1127 1154/1/1129 1148/1/1123 +f 1154/1/1129 1169/1/1130 1148/1/1123 +f 1153/1/1128 1152/1/1131 1148/1/1123 +f 1152/1/1131 1150/1/1126 1148/1/1123 +f 1118/1/1094 1108/1/1083 1110/1/1087 +f 1108/1/1083 1107/1/1079 1110/1/1087 +f 1169/1/1130 1155/1/1132 1148/1/1123 +f 1169/1/1130 1156/1/1133 1155/1/1132 +f 1169/1/1130 1157/1/1134 1156/1/1133 +f 1169/1/1130 1158/1/1135 1157/1/1134 +f 1158/1/1135 1159/1/1136 1157/1/1134 +f 1159/1/1136 1160/1/1137 1157/1/1134 +f 1160/1/1137 1161/1/1138 1157/1/1134 +f 1161/1/1138 1162/1/1139 1157/1/1134 +f 1163/1/1140 1169/1/1130 1154/1/1129 +f 1147/1/1124 1164/1/1141 1151/1/1125 +f 1147/1/1124 1165/1/1142 1164/1/1141 +f 1166/1/1143 1169/1/1130 1163/1/1140 +f 1167/1/1144 1169/1/1130 1166/1/1143 +f 1147/1/1124 1168/1/1145 1165/1/1142 +f 1170/1/1146 1171/1/1147 1167/1/1144 +f 1171/1/1147 1169/1/1130 1167/1/1144 +f 1147/1/1124 1172/1/1148 1168/1/1145 +f 1172/1/1148 1173/1/1149 1168/1/1145 +f 1174/1/1150 1171/1/1147 1170/1/1146 +f 1172/1/1148 1175/1/1151 1173/1/1149 +f 1176/1/1152 1174/1/1150 1170/1/1146 +f 1178/1/1153 1174/1/1150 1176/1/1152 +f 1175/1/1151 1176/1/1152 1173/1/1149 +f 1175/1/1151 1177/1/1154 1176/1/1152 +f 1177/1/1154 1178/1/1153 1176/1/1152 +f 1107/1/1079 1108/1/1083 1106/1/1080 +f 1185/1/1155 1179/1/1156 1180/1/1157 +f 1182/1/1082 1181/1/1158 1179/1/1156 +f 1185/1/1155 1182/1/1082 1179/1/1156 +f 1181/1/1158 1183/1/1159 1179/1/1156 +f 1184/1/1160 1185/1/1155 1180/1/1157 +f 1186/1/1161 1185/1/1155 1184/1/1160 +f 1106/1/1080 1108/1/1083 1185/1/1155 +f 1108/1/1083 1182/1/1082 1185/1/1155 +f 1180/1/1157 1179/1/1156 1187/1/1162 +f 1179/1/1156 1188/1/1163 1187/1/1162 +f 1192/1/1084 1193/1/1164 1187/1/1162 +f 1188/1/1163 1192/1/1084 1187/1/1162 +f 1193/1/1164 1189/1/1165 1187/1/1162 +f 1190/1/1166 1191/1/1167 1188/1/1163 +f 1191/1/1167 1192/1/1084 1188/1/1163 +f 1193/1/1164 1194/1/1168 1189/1/1165 +f 1192/1/1084 1105/1/1081 1193/1/1164 +f 1109/1/1085 1105/1/1081 1192/1/1084 +f 1195/1/1169 1196/1/1170 1197/1/1171 +f 1198/1/1172 1195/1/1169 1197/1/1171 +f 1195/1/1169 1199/1/1173 1196/1/1170 +f 1200/1/1174 1198/1/1172 1197/1/1171 +f 1195/1/1169 1201/1/1175 1199/1/1173 +f 1202/1/1176 1198/1/1172 1200/1/1174 +f 1203/1/1177 1202/1/1176 1200/1/1174 +f 1195/1/1169 1204/1/1178 1201/1/1175 +f 1204/1/1178 1205/1/1179 1201/1/1175 +f 1206/1/1180 1202/1/1176 1203/1/1177 +f 1204/1/1178 1207/1/1181 1205/1/1179 +f 1208/1/1182 1202/1/1176 1206/1/1180 +f 1209/1/1183 1210/1/1184 1206/1/1180 +f 1210/1/1184 1208/1/1182 1206/1/1180 +f 1207/1/1181 1211/1/1185 1205/1/1179 +f 1213/1/1186 1212/1/1187 1205/1/1179 +f 1211/1/1185 1213/1/1186 1205/1/1179 +f 1212/1/1187 1209/1/1183 1206/1/1180 +f 1212/1/1187 1214/1/1188 1205/1/1179 +f 1111/1/1088 1212/1/1187 1206/1/1180 +f 1214/1/1188 1215/1/1189 1205/1/1179 +f 1119/1/1096 1111/1/1088 1206/1/1180 +f 1205/1/1179 1216/1/1190 1217/1/1191 +f 1215/1/1189 1216/1/1190 1205/1/1179 +f 1105/1/1081 1119/1/1096 1206/1/1180 +f 1109/1/1085 1119/1/1096 1105/1/1081 +f 1216/1/1190 1218/1/1192 1217/1/1191 +f 1216/1/1190 1219/1/1193 1218/1/1192 +f 1216/1/1190 1220/1/1194 1219/1/1193 +f 1216/1/1190 1221/1/1195 1220/1/1194 +f 1222/1/1196 1212/1/1187 1213/1/1186 +f 1212/1/1187 1223/1/1197 1209/1/1183 +f 1224/1/1198 1212/1/1187 1222/1/1196 +f 1212/1/1187 1225/1/1199 1223/1/1197 +f 1225/1/1199 1212/1/1187 1224/1/1198 +f 1119/1/1096 1113/1/1089 1111/1/1088 +f 1119/1/1096 1120/1/1095 1113/1/1089 +f 1120/1/1095 1115/1/1091 1113/1/1089 +f 1120/1/1095 1122/1/1098 1115/1/1091 +f 1128/1/1106 1116/1/1092 1115/1/1091 +f 1122/1/1098 1128/1/1106 1115/1/1091 +f 1128/1/1106 1129/1/1105 1116/1/1092 +f 1129/1/1105 1131/1/1109 1116/1/1092 +f 1131/1/1109 1124/1/1100 1116/1/1092 +f 1131/1/1109 1132/1/1110 1124/1/1100 +f 1132/1/1110 1126/1/1102 1124/1/1100 +f 1126/1/1102 1138/1/1114 1134/1/1103 +f 1126/1/1102 1132/1/1110 1138/1/1114 +f 1138/1/1114 1228/1/1200 1134/1/1103 +f 1228/1/1200 1226/1/1201 1134/1/1103 +f 1226/1/1201 1136/1/1112 1134/1/1103 +f 1227/1/1202 1228/1/1200 1138/1/1114 +f 1229/1/1203 1230/1/1204 1227/1/1202 +f 1230/1/1204 1228/1/1200 1227/1/1202 +f 1226/1/1201 1231/1/1205 1136/1/1112 +f 1226/1/1201 1232/1/1206 1231/1/1205 +f 1226/1/1201 1228/1/1200 1142/1/1118 +f 1228/1/1200 1140/1/1116 1142/1/1118 +f 1105/1/1081 1185/1/1155 1193/1/1164 +f 1105/1/1081 1106/1/1080 1185/1/1155 +f 1141/1/1117 1138/1/1114 1139/1/1115 +f 1141/1/1117 1227/1/1202 1138/1/1114 +f 1196/1/1170 1178/1/1153 1197/1/1171 +f 1178/1/1153 1177/1/1154 1197/1/1171 +f 1199/1/1173 1178/1/1153 1196/1/1170 +f 1177/1/1154 1175/1/1151 1197/1/1171 +f 1175/1/1151 1200/1/1174 1197/1/1171 +f 1174/1/1150 1178/1/1153 1199/1/1173 +f 1201/1/1175 1174/1/1150 1199/1/1173 +f 1175/1/1151 1172/1/1148 1200/1/1174 +f 1172/1/1148 1203/1/1177 1200/1/1174 +f 1171/1/1147 1174/1/1150 1201/1/1175 +f 1205/1/1179 1171/1/1147 1201/1/1175 +f 1172/1/1148 1147/1/1124 1203/1/1177 +f 1147/1/1124 1206/1/1180 1203/1/1177 +f 1169/1/1130 1171/1/1147 1205/1/1179 +f 1158/1/1135 1169/1/1130 1217/1/1191 +f 1169/1/1130 1205/1/1179 1217/1/1191 +f 1218/1/1192 1158/1/1135 1217/1/1191 +f 1159/1/1136 1158/1/1135 1218/1/1192 +f 1219/1/1193 1159/1/1136 1218/1/1192 +f 1160/1/1137 1159/1/1136 1219/1/1193 +f 1220/1/1194 1160/1/1137 1219/1/1193 +f 1161/1/1138 1160/1/1137 1220/1/1194 +f 1221/1/1195 1161/1/1138 1220/1/1194 +f 1162/1/1139 1161/1/1138 1221/1/1195 +f 1216/1/1190 1162/1/1139 1221/1/1195 +f 1157/1/1134 1162/1/1139 1216/1/1190 +f 1215/1/1189 1157/1/1134 1216/1/1190 +f 1156/1/1133 1157/1/1134 1215/1/1189 +f 1214/1/1188 1156/1/1133 1215/1/1189 +f 1155/1/1132 1156/1/1133 1214/1/1188 +f 1212/1/1187 1155/1/1132 1214/1/1188 +f 1148/1/1123 1155/1/1132 1212/1/1187 +f 1111/1/1088 1148/1/1123 1212/1/1187 +f 1110/1/1087 1148/1/1123 1111/1/1088 +f 1147/1/1124 1107/1/1079 1206/1/1180 +f 1107/1/1079 1105/1/1081 1206/1/1180 +f 1198/1/1172 1176/1/1152 1195/1/1169 +f 1173/1/1149 1176/1/1152 1198/1/1172 +f 1176/1/1152 1170/1/1146 1195/1/1169 +f 1202/1/1176 1173/1/1149 1198/1/1172 +f 1170/1/1146 1204/1/1178 1195/1/1169 +f 1168/1/1145 1173/1/1149 1202/1/1176 +f 1170/1/1146 1167/1/1144 1204/1/1178 +f 1167/1/1144 1207/1/1181 1204/1/1178 +f 1165/1/1142 1168/1/1145 1202/1/1176 +f 1208/1/1182 1165/1/1142 1202/1/1176 +f 1167/1/1144 1166/1/1143 1207/1/1181 +f 1166/1/1143 1211/1/1185 1207/1/1181 +f 1166/1/1143 1163/1/1140 1211/1/1185 +f 1210/1/1184 1164/1/1141 1208/1/1182 +f 1164/1/1141 1165/1/1142 1208/1/1182 +f 1163/1/1140 1213/1/1186 1211/1/1185 +f 1209/1/1183 1151/1/1125 1210/1/1184 +f 1151/1/1125 1164/1/1141 1210/1/1184 +f 1163/1/1140 1154/1/1129 1213/1/1186 +f 1154/1/1129 1222/1/1196 1213/1/1186 +f 1223/1/1197 1153/1/1128 1209/1/1183 +f 1153/1/1128 1151/1/1125 1209/1/1183 +f 1154/1/1129 1149/1/1127 1222/1/1196 +f 1149/1/1127 1224/1/1198 1222/1/1196 +f 1225/1/1199 1152/1/1131 1223/1/1197 +f 1152/1/1131 1153/1/1128 1223/1/1197 +f 1149/1/1127 1150/1/1126 1224/1/1198 +f 1150/1/1126 1225/1/1199 1224/1/1198 +f 1150/1/1126 1152/1/1131 1225/1/1199 +f 1233/1/1207 1122/1/1098 1123/1/1099 +f 1234/1/1208 1233/1/1207 1123/1/1099 +f 1235/1/1209 1236/1/1210 1127/1/1107 +f 1128/1/1106 1235/1/1209 1127/1/1107 +f 1127/1/1107 1236/1/1210 1123/1/1099 +f 1236/1/1210 1234/1/1208 1123/1/1099 +f 1233/1/1207 1235/1/1209 1122/1/1098 +f 1235/1/1209 1128/1/1106 1122/1/1098 +f 1237/1/1211 1238/1/1212 1236/1/1210 +f 1235/1/1209 1237/1/1211 1236/1/1210 +f 1239/1/1213 1233/1/1207 1234/1/1208 +f 1239/1/1213 1240/1/1214 1233/1/1207 +f 1236/1/1210 1239/1/1213 1234/1/1208 +f 1241/1/1215 1242/1/1216 1239/1/1213 +f 1236/1/1210 1238/1/1212 1239/1/1213 +f 1238/1/1212 1241/1/1215 1239/1/1213 +f 1242/1/1216 1243/1/1217 1239/1/1213 +f 1238/1/1212 1244/1/1218 1241/1/1215 +f 1244/1/1218 1245/1/1219 1241/1/1215 +f 1237/1/1211 1235/1/1209 1233/1/1207 +f 1240/1/1214 1237/1/1211 1233/1/1207 +f 1248/1/1220 1237/1/1211 1240/1/1214 +f 1246/1/1221 1248/1/1220 1240/1/1214 +f 1247/1/1222 1248/1/1220 1246/1/1221 +f 1249/1/1223 1237/1/1211 1248/1/1220 +f 1250/1/1224 1237/1/1211 1249/1/1223 +f 1251/1/1225 1237/1/1211 1250/1/1224 +f 1241/1/1215 1248/1/1220 1242/1/1216 +f 1241/1/1215 1249/1/1223 1248/1/1220 +f 1239/1/1213 1246/1/1221 1240/1/1214 +f 1243/1/1217 1246/1/1221 1239/1/1213 +f 1243/1/1217 1247/1/1222 1246/1/1221 +f 1242/1/1216 1247/1/1222 1243/1/1217 +f 1242/1/1216 1248/1/1220 1247/1/1222 +f 1245/1/1219 1249/1/1223 1241/1/1215 +f 1245/1/1219 1250/1/1224 1249/1/1223 +f 1244/1/1218 1250/1/1224 1245/1/1219 +f 1244/1/1218 1251/1/1225 1250/1/1224 +f 1238/1/1212 1251/1/1225 1244/1/1218 +f 1238/1/1212 1237/1/1211 1251/1/1225 +f 1136/1/1112 1231/1/1205 1137/1/1113 +f 1231/1/1205 1145/1/1122 1137/1/1113 +f 1231/1/1205 1232/1/1206 1145/1/1122 +f 1232/1/1206 1146/1/1121 1145/1/1122 +f 1232/1/1206 1226/1/1201 1146/1/1121 +f 1226/1/1201 1142/1/1118 1146/1/1121 +f 1189/1/1165 1180/1/1157 1187/1/1162 +f 1184/1/1160 1180/1/1157 1189/1/1165 +f 1194/1/1168 1184/1/1160 1189/1/1165 +f 1186/1/1161 1184/1/1160 1194/1/1168 +f 1193/1/1164 1186/1/1161 1194/1/1168 +f 1185/1/1155 1186/1/1161 1193/1/1164 +f 1179/1/1156 1183/1/1159 1188/1/1163 +f 1183/1/1159 1190/1/1166 1188/1/1163 +f 1183/1/1159 1181/1/1158 1190/1/1166 +f 1181/1/1158 1191/1/1167 1190/1/1166 +f 1181/1/1158 1182/1/1082 1191/1/1167 +f 1182/1/1082 1192/1/1084 1191/1/1167 +f 1144/1/1120 1227/1/1202 1141/1/1117 +f 1229/1/1203 1227/1/1202 1144/1/1120 +f 1143/1/1119 1229/1/1203 1144/1/1120 +f 1230/1/1204 1229/1/1203 1143/1/1119 +f 1140/1/1116 1230/1/1204 1143/1/1119 +f 1228/1/1200 1230/1/1204 1140/1/1116 +f 1252/1/1226 1254/1/1227 1253/1/1228 +f 1255/1/1229 1328/1/1230 1257/1/1231 +f 1255/1/1229 1256/1/1232 1328/1/1230 +f 1258/1/1233 1260/1/1234 1259/1/1235 +f 1258/1/1233 1261/1/1236 1260/1/1234 +f 1261/1/1236 1262/1/1237 1260/1/1234 +f 1263/1/1238 1262/1/1237 1261/1/1236 +f 1263/1/1238 1264/1/1239 1262/1/1237 +f 1267/1/1240 1265/1/1241 1266/1/1242 +f 1268/1/1243 1267/1/1240 1266/1/1242 +f 1269/1/1244 1267/1/1240 1268/1/1243 +f 1270/1/1245 1267/1/1240 1269/1/1244 +f 1266/1/1242 1256/1/1232 1255/1/1229 +f 1265/1/1241 1256/1/1232 1266/1/1242 +f 1271/1/1246 1264/1/1239 1263/1/1238 +f 1272/1/1247 1271/1/1246 1263/1/1238 +f 1273/1/1248 1271/1/1246 1272/1/1247 +f 1281/1/1249 1273/1/1248 1282/1/1250 +f 1273/1/1248 1272/1/1247 1282/1/1250 +f 1274/1/1251 1275/1/1252 1276/1/1253 +f 1274/1/1251 1277/1/1254 1275/1/1252 +f 1277/1/1254 1278/1/1255 1275/1/1252 +f 1278/1/1255 1279/1/1256 1275/1/1252 +f 1278/1/1255 1280/1/1257 1279/1/1256 +f 1283/1/1258 1281/1/1249 1282/1/1250 +f 1283/1/1258 1284/1/1259 1281/1/1249 +f 1285/1/1260 1286/1/1261 1287/1/1262 +f 1279/1/1256 1285/1/1260 1287/1/1262 +f 1279/1/1256 1280/1/1257 1285/1/1260 +f 1288/1/1263 1289/1/1264 1286/1/1261 +f 1289/1/1264 1282/1/1250 1286/1/1261 +f 1289/1/1264 1294/1/1265 1282/1/1250 +f 1294/1/1265 1283/1/1258 1282/1/1250 +f 1294/1/1265 1290/1/1266 1283/1/1258 +f 1291/1/1267 1289/1/1264 1288/1/1263 +f 1292/1/1268 1289/1/1264 1291/1/1267 +f 1294/1/1265 1293/1/1269 1290/1/1266 +f 1286/1/1261 1282/1/1250 1287/1/1262 +f 1282/1/1250 1272/1/1247 1287/1/1262 +f 1272/1/1247 1279/1/1256 1287/1/1262 +f 1275/1/1252 1263/1/1238 1276/1/1253 +f 1272/1/1247 1263/1/1238 1275/1/1252 +f 1279/1/1256 1272/1/1247 1275/1/1252 +f 1276/1/1253 1261/1/1236 1270/1/1245 +f 1276/1/1253 1263/1/1238 1261/1/1236 +f 1267/1/1240 1258/1/1233 1265/1/1241 +f 1261/1/1236 1258/1/1233 1267/1/1240 +f 1270/1/1245 1261/1/1236 1267/1/1240 +f 1258/1/1233 1295/1/1270 1265/1/1241 +f 1295/1/1270 1254/1/1227 1265/1/1241 +f 1254/1/1227 1256/1/1232 1265/1/1241 +f 1296/1/1271 1295/1/1270 1258/1/1233 +f 1297/1/1272 1299/1/1273 1296/1/1271 +f 1298/1/1274 1295/1/1270 1296/1/1271 +f 1301/1/1275 1302/1/1276 1296/1/1271 +f 1299/1/1273 1300/1/1277 1296/1/1271 +f 1300/1/1277 1303/1/1278 1296/1/1271 +f 1303/1/1278 1298/1/1274 1296/1/1271 +f 1302/1/1276 1297/1/1272 1296/1/1271 +f 1304/1/1279 1301/1/1275 1296/1/1271 +f 1305/1/1280 1301/1/1275 1304/1/1279 +f 1306/1/1281 1301/1/1275 1305/1/1280 +f 1312/1/1282 1301/1/1275 1306/1/1281 +f 1308/1/1283 1309/1/1284 1306/1/1281 +f 1309/1/1284 1310/1/1285 1306/1/1281 +f 1310/1/1285 1307/1/1286 1306/1/1281 +f 1307/1/1286 1312/1/1282 1306/1/1281 +f 1311/1/1287 1308/1/1283 1306/1/1281 +f 1301/1/1275 1313/1/1288 1302/1/1276 +f 1314/1/1289 1295/1/1270 1298/1/1274 +f 1315/1/1290 1295/1/1270 1314/1/1289 +f 1301/1/1275 1316/1/1291 1313/1/1288 +f 1317/1/1292 1295/1/1270 1315/1/1290 +f 1301/1/1275 1318/1/1293 1316/1/1291 +f 1319/1/1294 1295/1/1270 1317/1/1292 +f 1320/1/1295 1295/1/1270 1319/1/1294 +f 1301/1/1275 1321/1/1296 1318/1/1293 +f 1323/1/1297 1320/1/1295 1319/1/1294 +f 1322/1/1298 1323/1/1297 1319/1/1294 +f 1301/1/1275 1324/1/1299 1322/1/1298 +f 1324/1/1299 1325/1/1300 1322/1/1298 +f 1325/1/1300 1326/1/1301 1322/1/1298 +f 1327/1/1302 1323/1/1297 1322/1/1298 +f 1326/1/1301 1327/1/1302 1322/1/1298 +f 1301/1/1275 1322/1/1298 1321/1/1296 +f 1256/1/1232 1254/1/1227 1252/1/1226 +f 1328/1/1230 1330/1/1303 1329/1/1304 +f 1331/1/1305 1328/1/1230 1329/1/1304 +f 1332/1/1306 1333/1/1307 1330/1/1303 +f 1328/1/1230 1332/1/1306 1330/1/1303 +f 1334/1/1308 1331/1/1305 1329/1/1304 +f 1333/1/1307 1335/1/1309 1330/1/1303 +f 1256/1/1232 1252/1/1226 1328/1/1230 +f 1252/1/1226 1332/1/1306 1328/1/1230 +f 1329/1/1304 1330/1/1303 1336/1/1310 +f 1330/1/1303 1337/1/1311 1336/1/1310 +f 1337/1/1311 1253/1/1228 1336/1/1310 +f 1253/1/1228 1257/1/1231 1336/1/1310 +f 1339/1/1312 1253/1/1228 1337/1/1311 +f 1338/1/1313 1339/1/1312 1337/1/1311 +f 1340/1/1314 1338/1/1313 1337/1/1311 +f 1257/1/1231 1341/1/1315 1336/1/1310 +f 1253/1/1228 1255/1/1229 1257/1/1231 +f 1342/1/1316 1344/1/1317 1343/1/1318 +f 1342/1/1316 1345/1/1319 1344/1/1317 +f 1345/1/1319 1346/1/1320 1344/1/1317 +f 1347/1/1321 1342/1/1316 1343/1/1318 +f 1348/1/1322 1347/1/1321 1343/1/1318 +f 1345/1/1319 1349/1/1323 1346/1/1320 +f 1350/1/1324 1347/1/1321 1348/1/1322 +f 1345/1/1319 1351/1/1325 1349/1/1323 +f 1351/1/1325 1352/1/1326 1349/1/1323 +f 1353/1/1327 1347/1/1321 1350/1/1324 +f 1356/1/1328 1347/1/1321 1353/1/1327 +f 1355/1/1329 1354/1/1330 1353/1/1327 +f 1354/1/1330 1356/1/1328 1353/1/1327 +f 1357/1/1331 1355/1/1329 1353/1/1327 +f 1351/1/1325 1358/1/1332 1352/1/1326 +f 1360/1/1333 1359/1/1334 1352/1/1326 +f 1359/1/1334 1357/1/1331 1352/1/1326 +f 1358/1/1332 1360/1/1333 1352/1/1326 +f 1361/1/1335 1357/1/1331 1353/1/1327 +f 1362/1/1336 1361/1/1335 1353/1/1327 +f 1259/1/1235 1266/1/1242 1255/1/1229 +f 1253/1/1228 1259/1/1235 1255/1/1229 +f 1357/1/1331 1259/1/1235 1253/1/1228 +f 1352/1/1326 1357/1/1331 1253/1/1228 +f 1363/1/1337 1362/1/1336 1353/1/1327 +f 1364/1/1338 1363/1/1337 1353/1/1327 +f 1365/1/1339 1363/1/1337 1364/1/1338 +f 1366/1/1340 1363/1/1337 1365/1/1339 +f 1367/1/1341 1363/1/1337 1366/1/1340 +f 1368/1/1342 1363/1/1337 1367/1/1341 +f 1369/1/1343 1357/1/1331 1359/1/1334 +f 1357/1/1331 1370/1/1344 1355/1/1329 +f 1371/1/1345 1357/1/1331 1369/1/1343 +f 1357/1/1331 1372/1/1346 1370/1/1344 +f 1357/1/1331 1373/1/1347 1372/1/1346 +f 1373/1/1347 1357/1/1331 1371/1/1345 +f 1374/1/1348 1363/1/1337 1368/1/1342 +f 1259/1/1235 1260/1/1234 1266/1/1242 +f 1260/1/1234 1268/1/1243 1266/1/1242 +f 1260/1/1234 1262/1/1237 1268/1/1243 +f 1262/1/1237 1269/1/1244 1268/1/1243 +f 1262/1/1237 1264/1/1239 1269/1/1244 +f 1264/1/1239 1274/1/1251 1269/1/1244 +f 1264/1/1239 1277/1/1254 1274/1/1251 +f 1271/1/1246 1278/1/1255 1277/1/1254 +f 1264/1/1239 1271/1/1246 1277/1/1254 +f 1273/1/1248 1280/1/1257 1278/1/1255 +f 1271/1/1246 1273/1/1248 1278/1/1255 +f 1280/1/1257 1281/1/1249 1285/1/1260 +f 1280/1/1257 1273/1/1248 1281/1/1249 +f 1281/1/1249 1375/1/1349 1285/1/1260 +f 1284/1/1259 1375/1/1349 1281/1/1249 +f 1379/1/1350 1376/1/1351 1375/1/1349 +f 1284/1/1259 1379/1/1350 1375/1/1349 +f 1377/1/1352 1379/1/1350 1284/1/1259 +f 1376/1/1351 1378/1/1353 1375/1/1349 +f 1380/1/1354 1379/1/1350 1377/1/1352 +f 1376/1/1351 1381/1/1355 1378/1/1353 +f 1376/1/1351 1379/1/1350 1289/1/1264 +f 1379/1/1350 1294/1/1265 1289/1/1264 +f 1252/1/1226 1253/1/1228 1339/1/1312 +f 1332/1/1306 1252/1/1226 1339/1/1312 +f 1285/1/1260 1375/1/1349 1286/1/1261 +f 1375/1/1349 1288/1/1263 1286/1/1261 +f 1344/1/1317 1327/1/1302 1343/1/1318 +f 1327/1/1302 1326/1/1301 1343/1/1318 +f 1346/1/1320 1327/1/1302 1344/1/1317 +f 1326/1/1301 1325/1/1300 1343/1/1318 +f 1325/1/1300 1348/1/1322 1343/1/1318 +f 1323/1/1297 1327/1/1302 1346/1/1320 +f 1349/1/1323 1323/1/1297 1346/1/1320 +f 1325/1/1300 1324/1/1299 1348/1/1322 +f 1324/1/1299 1350/1/1324 1348/1/1322 +f 1320/1/1295 1323/1/1297 1349/1/1323 +f 1352/1/1326 1320/1/1295 1349/1/1323 +f 1324/1/1299 1353/1/1327 1350/1/1324 +f 1295/1/1270 1320/1/1295 1352/1/1326 +f 1324/1/1299 1301/1/1275 1353/1/1327 +f 1301/1/1275 1312/1/1282 1353/1/1327 +f 1312/1/1282 1364/1/1338 1353/1/1327 +f 1312/1/1282 1307/1/1286 1364/1/1338 +f 1307/1/1286 1365/1/1339 1364/1/1338 +f 1307/1/1286 1310/1/1285 1365/1/1339 +f 1310/1/1285 1366/1/1340 1365/1/1339 +f 1310/1/1285 1309/1/1284 1366/1/1340 +f 1309/1/1284 1367/1/1341 1366/1/1340 +f 1309/1/1284 1308/1/1283 1367/1/1341 +f 1308/1/1283 1368/1/1342 1367/1/1341 +f 1308/1/1283 1311/1/1287 1368/1/1342 +f 1311/1/1287 1374/1/1348 1368/1/1342 +f 1311/1/1287 1306/1/1281 1374/1/1348 +f 1306/1/1281 1363/1/1337 1374/1/1348 +f 1306/1/1281 1305/1/1280 1363/1/1337 +f 1305/1/1280 1362/1/1336 1363/1/1337 +f 1305/1/1280 1304/1/1279 1362/1/1336 +f 1304/1/1279 1361/1/1335 1362/1/1336 +f 1304/1/1279 1296/1/1271 1361/1/1335 +f 1296/1/1271 1357/1/1331 1361/1/1335 +f 1357/1/1331 1258/1/1233 1259/1/1235 +f 1296/1/1271 1258/1/1233 1357/1/1331 +f 1254/1/1227 1295/1/1270 1253/1/1228 +f 1295/1/1270 1352/1/1326 1253/1/1228 +f 1322/1/1298 1345/1/1319 1342/1/1316 +f 1347/1/1321 1321/1/1296 1342/1/1316 +f 1321/1/1296 1322/1/1298 1342/1/1316 +f 1322/1/1298 1319/1/1294 1345/1/1319 +f 1319/1/1294 1351/1/1325 1345/1/1319 +f 1318/1/1293 1321/1/1296 1347/1/1321 +f 1356/1/1328 1318/1/1293 1347/1/1321 +f 1319/1/1294 1317/1/1292 1351/1/1325 +f 1317/1/1292 1358/1/1332 1351/1/1325 +f 1316/1/1291 1318/1/1293 1356/1/1328 +f 1354/1/1330 1316/1/1291 1356/1/1328 +f 1317/1/1292 1315/1/1290 1358/1/1332 +f 1315/1/1290 1360/1/1333 1358/1/1332 +f 1355/1/1329 1313/1/1288 1354/1/1330 +f 1313/1/1288 1316/1/1291 1354/1/1330 +f 1315/1/1290 1314/1/1289 1360/1/1333 +f 1314/1/1289 1359/1/1334 1360/1/1333 +f 1314/1/1289 1298/1/1274 1359/1/1334 +f 1302/1/1276 1313/1/1288 1355/1/1329 +f 1298/1/1274 1369/1/1343 1359/1/1334 +f 1370/1/1344 1302/1/1276 1355/1/1329 +f 1297/1/1272 1302/1/1276 1370/1/1344 +f 1298/1/1274 1303/1/1278 1369/1/1343 +f 1303/1/1278 1371/1/1345 1369/1/1343 +f 1372/1/1346 1297/1/1272 1370/1/1344 +f 1299/1/1273 1297/1/1272 1372/1/1346 +f 1303/1/1278 1300/1/1277 1371/1/1345 +f 1373/1/1347 1299/1/1273 1372/1/1346 +f 1300/1/1277 1373/1/1347 1371/1/1345 +f 1300/1/1277 1299/1/1273 1373/1/1347 +f 1269/1/1244 1382/1/1356 1270/1/1245 +f 1382/1/1356 1383/1/1357 1270/1/1245 +f 1384/1/1358 1274/1/1251 1276/1/1253 +f 1385/1/1359 1274/1/1251 1384/1/1358 +f 1384/1/1358 1276/1/1253 1270/1/1245 +f 1383/1/1357 1384/1/1358 1270/1/1245 +f 1274/1/1251 1382/1/1356 1269/1/1244 +f 1274/1/1251 1385/1/1359 1382/1/1356 +f 1386/1/1360 1385/1/1359 1384/1/1358 +f 1386/1/1360 1387/1/1361 1385/1/1359 +f 1382/1/1356 1388/1/1362 1383/1/1357 +f 1388/1/1362 1389/1/1363 1383/1/1357 +f 1386/1/1360 1384/1/1358 1383/1/1357 +f 1389/1/1363 1386/1/1360 1383/1/1357 +f 1390/1/1364 1386/1/1360 1389/1/1363 +f 1391/1/1365 1390/1/1364 1389/1/1363 +f 1392/1/1366 1391/1/1365 1389/1/1363 +f 1393/1/1367 1386/1/1360 1390/1/1364 +f 1394/1/1368 1386/1/1360 1393/1/1367 +f 1395/1/1369 1386/1/1360 1394/1/1368 +f 1396/1/1370 1388/1/1362 1382/1/1356 +f 1385/1/1359 1396/1/1370 1382/1/1356 +f 1396/1/1370 1397/1/1371 1388/1/1362 +f 1397/1/1371 1398/1/1372 1388/1/1362 +f 1385/1/1359 1387/1/1361 1396/1/1370 +f 1387/1/1361 1399/1/1373 1396/1/1370 +f 1387/1/1361 1400/1/1374 1399/1/1373 +f 1400/1/1374 1401/1/1375 1399/1/1373 +f 1399/1/1373 1393/1/1367 1390/1/1364 +f 1396/1/1370 1399/1/1373 1390/1/1364 +f 1388/1/1362 1392/1/1366 1389/1/1363 +f 1388/1/1362 1398/1/1372 1392/1/1366 +f 1398/1/1372 1391/1/1365 1392/1/1366 +f 1398/1/1372 1397/1/1371 1391/1/1365 +f 1397/1/1371 1390/1/1364 1391/1/1365 +f 1397/1/1371 1396/1/1370 1390/1/1364 +f 1399/1/1373 1401/1/1375 1393/1/1367 +f 1401/1/1375 1394/1/1368 1393/1/1367 +f 1401/1/1375 1400/1/1374 1394/1/1368 +f 1400/1/1374 1395/1/1369 1394/1/1368 +f 1400/1/1374 1387/1/1361 1395/1/1369 +f 1387/1/1361 1386/1/1360 1395/1/1369 +f 1290/1/1266 1284/1/1259 1283/1/1258 +f 1377/1/1352 1284/1/1259 1290/1/1266 +f 1293/1/1269 1377/1/1352 1290/1/1266 +f 1380/1/1354 1377/1/1352 1293/1/1269 +f 1294/1/1265 1380/1/1354 1293/1/1269 +f 1379/1/1350 1380/1/1354 1294/1/1265 +f 1335/1/1309 1340/1/1314 1337/1/1311 +f 1330/1/1303 1335/1/1309 1337/1/1311 +f 1333/1/1307 1338/1/1313 1340/1/1314 +f 1335/1/1309 1333/1/1307 1340/1/1314 +f 1332/1/1306 1339/1/1312 1338/1/1313 +f 1333/1/1307 1332/1/1306 1338/1/1313 +f 1334/1/1308 1329/1/1304 1336/1/1310 +f 1341/1/1315 1334/1/1308 1336/1/1310 +f 1257/1/1231 1331/1/1305 1341/1/1315 +f 1331/1/1305 1334/1/1308 1341/1/1315 +f 1328/1/1230 1331/1/1305 1257/1/1231 +f 1375/1/1349 1291/1/1267 1288/1/1263 +f 1375/1/1349 1378/1/1353 1291/1/1267 +f 1378/1/1353 1381/1/1355 1291/1/1267 +f 1381/1/1355 1292/1/1268 1291/1/1267 +f 1381/1/1355 1376/1/1351 1292/1/1268 +f 1376/1/1351 1289/1/1264 1292/1/1268 +f 1403/1/1376 1408/1/1377 1402/1/1378 +f 1404/1/1379 1406/1/1380 1405/1/1381 +f 1407/1/1382 1408/1/1377 1403/1/1376 +f 1409/1/1383 1406/1/1380 1404/1/1379 +f 1410/1/1384 1408/1/1377 1407/1/1382 +f 1411/1/1385 1412/1/1386 1408/1/1377 +f 1413/1/1387 1411/1/1385 1408/1/1377 +f 1410/1/1384 1413/1/1387 1408/1/1377 +f 1414/1/1388 1415/1/1389 1404/1/1379 +f 1416/1/1390 1414/1/1388 1404/1/1379 +f 1417/1/1391 1416/1/1390 1404/1/1379 +f 1415/1/1389 1409/1/1383 1404/1/1379 +f 1411/1/1385 1418/1/1392 1412/1/1386 +f 1419/1/1393 1416/1/1390 1417/1/1391 +f 1411/1/1385 1420/1/1394 1418/1/1392 +f 1421/1/1395 1422/1/1396 1419/1/1393 +f 1422/1/1396 1423/1/1397 1419/1/1393 +f 1423/1/1397 1424/1/1398 1419/1/1393 +f 1424/1/1398 1416/1/1390 1419/1/1393 +f 1425/1/1399 1421/1/1395 1419/1/1393 +f 1426/1/1400 1411/1/1385 1413/1/1387 +f 1427/1/1401 1425/1/1399 1419/1/1393 +f 1420/1/1394 1428/1/1402 1418/1/1392 +f 1428/1/1402 1710/1/1403 1418/1/1392 +f 1430/1/1404 1431/1/1405 1429/1/1406 +f 1431/1/1405 1426/1/1400 1429/1/1406 +f 1431/1/1405 1411/1/1385 1426/1/1400 +f 1710/1/1403 1432/1/1407 1418/1/1392 +f 1710/1/1403 1709/1/1408 1432/1/1407 +f 1709/1/1408 1433/1/1409 1432/1/1407 +f 1433/1/1409 1434/1/1410 1432/1/1407 +f 1435/1/1411 1419/1/1393 1434/1/1410 +f 1433/1/1409 1435/1/1411 1434/1/1410 +f 1435/1/1411 1427/1/1401 1419/1/1393 +f 1416/1/1390 1436/1/1412 1414/1/1388 +f 1436/1/1412 1437/1/1413 1414/1/1388 +f 1436/1/1412 1438/1/1414 1437/1/1413 +f 1439/1/1415 1710/1/1403 1428/1/1402 +f 1440/1/1416 1416/1/1390 1424/1/1398 +f 1411/1/1385 1441/1/1417 1420/1/1394 +f 1442/1/1418 1710/1/1403 1439/1/1415 +f 1443/1/1419 1440/1/1416 1424/1/1398 +f 1702/1/1420 1427/1/1401 1435/1/1411 +f 1444/1/1421 1445/1/1422 1441/1/1417 +f 1411/1/1385 1444/1/1421 1441/1/1417 +f 1446/1/1423 1710/1/1403 1442/1/1418 +f 1447/1/1424 1440/1/1416 1443/1/1419 +f 1448/1/1425 1427/1/1401 1702/1/1420 +f 1449/1/1426 1450/1/1427 1448/1/1425 +f 1451/1/1428 1449/1/1426 1448/1/1425 +f 1450/1/1427 1427/1/1401 1448/1/1425 +f 1444/1/1421 1452/1/1429 1445/1/1422 +f 1453/1/1430 1710/1/1403 1446/1/1423 +f 1454/1/1431 1440/1/1416 1447/1/1424 +f 1453/1/1430 1681/1/1432 1710/1/1403 +f 1684/1/1433 1451/1/1428 1448/1/1425 +f 1455/1/1434 1452/1/1429 1444/1/1421 +f 1454/1/1431 1456/1/1435 1440/1/1416 +f 1456/1/1435 1457/1/1436 1440/1/1416 +f 1458/1/1437 1681/1/1432 1453/1/1430 +f 1459/1/1438 1455/1/1434 1444/1/1421 +f 1456/1/1435 1460/1/1439 1457/1/1436 +f 1460/1/1439 1461/1/1440 1457/1/1436 +f 1462/1/1441 1459/1/1438 1444/1/1421 +f 1463/1/1442 1464/1/1443 1457/1/1436 +f 1464/1/1443 1465/1/1444 1457/1/1436 +f 1461/1/1440 1467/1/1445 1457/1/1436 +f 1467/1/1445 1466/1/1446 1457/1/1436 +f 1466/1/1446 1468/1/1447 1457/1/1436 +f 1468/1/1447 1463/1/1442 1457/1/1436 +f 1469/1/1448 1470/1/1449 1681/1/1432 +f 1458/1/1437 1471/1/1450 1681/1/1432 +f 1471/1/1450 1472/1/1451 1681/1/1432 +f 1472/1/1451 1469/1/1448 1681/1/1432 +f 1470/1/1449 1473/1/1452 1681/1/1432 +f 1473/1/1452 1474/1/1453 1681/1/1432 +f 1474/1/1453 1707/1/1454 1681/1/1432 +f 1467/1/1445 1451/1/1428 1684/1/1433 +f 1693/1/1455 1467/1/1445 1684/1/1433 +f 1475/1/1456 1459/1/1438 1462/1/1441 +f 1701/1/1457 1467/1/1445 1693/1/1455 +f 1474/1/1453 1708/1/1458 1707/1/1454 +f 1476/1/1459 1467/1/1445 1701/1/1457 +f 1474/1/1453 1476/1/1459 1708/1/1458 +f 1476/1/1459 1701/1/1457 1708/1/1458 +f 1464/1/1443 1477/1/1460 1465/1/1444 +f 1479/1/1461 1469/1/1448 1459/1/1438 +f 1469/1/1448 1478/1/1462 1459/1/1438 +f 1475/1/1456 1479/1/1461 1459/1/1438 +f 1478/1/1462 1469/1/1448 1472/1/1451 +f 1451/1/1428 1467/1/1445 1461/1/1440 +f 1481/1/1463 1475/1/1456 1462/1/1441 +f 1480/1/1464 1481/1/1463 1462/1/1441 +f 1481/1/1463 1479/1/1461 1475/1/1456 +f 1481/1/1463 1482/1/1465 1479/1/1461 +f 1483/1/1466 1469/1/1448 1479/1/1461 +f 1482/1/1465 1483/1/1466 1479/1/1461 +f 1484/1/1467 1470/1/1449 1469/1/1448 +f 1483/1/1466 1484/1/1467 1469/1/1448 +f 1484/1/1467 1485/1/1468 1470/1/1449 +f 1485/1/1468 1473/1/1452 1470/1/1449 +f 1486/1/1469 1474/1/1453 1473/1/1452 +f 1485/1/1468 1486/1/1469 1473/1/1452 +f 1487/1/1470 1431/1/1405 1430/1/1404 +f 1488/1/1471 1487/1/1470 1430/1/1404 +f 1489/1/1472 1411/1/1385 1431/1/1405 +f 1487/1/1470 1489/1/1472 1431/1/1405 +f 1491/1/1473 1596/1/1474 1600/1/1475 +f 1491/1/1473 1490/1/1476 1596/1/1474 +f 1494/1/1477 1493/1/1478 1492/1/1479 +f 1495/1/1480 1493/1/1478 1494/1/1477 +f 1496/1/1481 1495/1/1480 1494/1/1477 +f 1497/1/1482 1495/1/1480 1496/1/1481 +f 1492/1/1479 1493/1/1478 1490/1/1476 +f 1491/1/1473 1492/1/1479 1490/1/1476 +f 1499/1/1483 1476/1/1459 1498/1/1484 +f 1499/1/1483 1500/1/1485 1476/1/1459 +f 1499/1/1483 1501/1/1486 1500/1/1485 +f 1501/1/1486 1502/1/1487 1500/1/1485 +f 1501/1/1486 1503/1/1488 1502/1/1487 +f 1504/1/1489 1432/1/1407 1505/1/1490 +f 1506/1/1491 1504/1/1489 1507/1/1492 +f 1508/1/1493 1506/1/1491 1507/1/1492 +f 1504/1/1489 1509/1/1494 1507/1/1492 +f 1509/1/1494 1510/1/1495 1507/1/1492 +f 1511/1/1496 1506/1/1491 1508/1/1493 +f 1512/1/1497 1511/1/1496 1508/1/1493 +f 1513/1/1498 1517/1/1499 1514/1/1500 +f 1515/1/1501 1518/1/1502 1516/1/1503 +f 1515/1/1501 1519/1/1504 1518/1/1502 +f 1513/1/1498 1520/1/1505 1517/1/1499 +f 1513/1/1498 1524/1/1506 1520/1/1505 +f 1522/1/1507 1521/1/1508 1513/1/1498 +f 1521/1/1508 1523/1/1509 1513/1/1498 +f 1523/1/1509 1524/1/1506 1513/1/1498 +f 1525/1/1510 1526/1/1511 1519/1/1504 +f 1526/1/1511 1527/1/1512 1519/1/1504 +f 1527/1/1512 1528/1/1513 1519/1/1504 +f 1515/1/1501 1525/1/1510 1519/1/1504 +f 1527/1/1512 1529/1/1514 1528/1/1513 +f 1530/1/1515 1521/1/1508 1522/1/1507 +f 1529/1/1514 1531/1/1516 1528/1/1513 +f 1532/1/1517 1521/1/1508 1530/1/1515 +f 1533/1/1518 1534/1/1519 1530/1/1515 +f 1534/1/1519 1535/1/1520 1530/1/1515 +f 1535/1/1520 1532/1/1517 1530/1/1515 +f 1529/1/1514 1536/1/1521 1531/1/1516 +f 1537/1/1522 1533/1/1518 1530/1/1515 +f 1540/1/1523 1537/1/1522 1530/1/1515 +f 1536/1/1521 1538/1/1524 1531/1/1516 +f 1539/1/1525 1540/1/1523 1530/1/1515 +f 1541/1/1526 1540/1/1523 1539/1/1525 +f 1544/1/1527 1541/1/1526 1539/1/1525 +f 1536/1/1521 1542/1/1528 1538/1/1524 +f 1523/1/1509 1487/1/1470 1543/1/1529 +f 1487/1/1470 1488/1/1471 1543/1/1529 +f 1489/1/1472 1487/1/1470 1523/1/1509 +f 1521/1/1508 1489/1/1472 1523/1/1509 +f 1504/1/1489 1544/1/1527 1539/1/1525 +f 1506/1/1491 1544/1/1527 1504/1/1489 +f 1538/1/1524 1542/1/1528 1506/1/1491 +f 1545/1/1530 1544/1/1527 1506/1/1491 +f 1542/1/1528 1545/1/1530 1506/1/1491 +f 1547/1/1531 1546/1/1532 1526/1/1511 +f 1546/1/1532 1527/1/1512 1526/1/1511 +f 1548/1/1533 1546/1/1532 1547/1/1531 +f 1549/1/1534 1545/1/1530 1542/1/1528 +f 1550/1/1535 1545/1/1530 1549/1/1534 +f 1529/1/1514 1551/1/1536 1536/1/1521 +f 1552/1/1537 1521/1/1508 1532/1/1517 +f 1553/1/1538 1540/1/1523 1541/1/1526 +f 1554/1/1539 1667/1/1540 1550/1/1535 +f 1667/1/1540 1666/1/1541 1550/1/1535 +f 1666/1/1541 1545/1/1530 1550/1/1535 +f 1529/1/1514 1555/1/1542 1551/1/1536 +f 1556/1/1543 1521/1/1508 1552/1/1537 +f 1557/1/1544 1667/1/1540 1554/1/1539 +f 1564/1/1545 1540/1/1523 1553/1/1538 +f 1558/1/1546 1521/1/1508 1556/1/1543 +f 1559/1/1547 1555/1/1542 1529/1/1514 +f 1556/1/1543 1560/1/1548 1558/1/1546 +f 1561/1/1549 1562/1/1550 1559/1/1547 +f 1562/1/1550 1563/1/1551 1559/1/1547 +f 1563/1/1551 1555/1/1542 1559/1/1547 +f 1564/1/1545 1674/1/1552 1540/1/1523 +f 1560/1/1548 1565/1/1553 1558/1/1546 +f 1565/1/1553 1480/1/1464 1558/1/1546 +f 1566/1/1554 1567/1/1555 1540/1/1523 +f 1674/1/1552 1566/1/1554 1540/1/1523 +f 1568/1/1556 1667/1/1540 1557/1/1544 +f 1565/1/1553 1569/1/1557 1480/1/1464 +f 1485/1/1468 1484/1/1467 1480/1/1464 +f 1486/1/1469 1485/1/1468 1480/1/1464 +f 1484/1/1467 1483/1/1466 1480/1/1464 +f 1482/1/1465 1481/1/1463 1480/1/1464 +f 1483/1/1466 1482/1/1465 1480/1/1464 +f 1569/1/1557 1498/1/1484 1480/1/1464 +f 1498/1/1484 1486/1/1469 1480/1/1464 +f 1570/1/1558 1571/1/1559 1559/1/1547 +f 1572/1/1560 1573/1/1561 1559/1/1547 +f 1573/1/1561 1570/1/1558 1559/1/1547 +f 1571/1/1559 1575/1/1562 1559/1/1547 +f 1575/1/1562 1574/1/1563 1559/1/1547 +f 1574/1/1563 1566/1/1554 1559/1/1547 +f 1566/1/1554 1561/1/1549 1559/1/1547 +f 1566/1/1554 1576/1/1564 1567/1/1555 +f 1566/1/1554 1667/1/1540 1568/1/1556 +f 1577/1/1565 1573/1/1561 1572/1/1560 +f 1566/1/1554 1498/1/1484 1576/1/1564 +f 1578/1/1566 1566/1/1554 1568/1/1556 +f 1498/1/1484 1579/1/1567 1576/1/1564 +f 1580/1/1568 1566/1/1554 1578/1/1566 +f 1667/1/1540 1566/1/1554 1674/1/1552 +f 1498/1/1484 1581/1/1569 1579/1/1567 +f 1581/1/1569 1498/1/1484 1569/1/1557 +f 1582/1/1570 1566/1/1554 1580/1/1568 +f 1566/1/1554 1582/1/1570 1561/1/1549 +f 1566/1/1554 1499/1/1483 1498/1/1484 +f 1566/1/1554 1583/1/1571 1499/1/1483 +f 1583/1/1571 1501/1/1486 1499/1/1483 +f 1583/1/1571 1584/1/1572 1501/1/1486 +f 1584/1/1572 1585/1/1573 1501/1/1486 +f 1585/1/1573 1503/1/1488 1501/1/1486 +f 1585/1/1573 1586/1/1574 1497/1/1482 +f 1503/1/1488 1585/1/1573 1497/1/1482 +f 1493/1/1478 1588/1/1575 1587/1/1576 +f 1495/1/1480 1588/1/1575 1493/1/1478 +f 1495/1/1480 1589/1/1577 1588/1/1575 +f 1497/1/1482 1589/1/1577 1495/1/1480 +f 1497/1/1482 1586/1/1574 1589/1/1577 +f 1587/1/1576 1590/1/1578 1490/1/1476 +f 1493/1/1478 1587/1/1576 1490/1/1476 +f 1490/1/1476 1591/1/1579 1592/1/1580 +f 1596/1/1474 1490/1/1476 1592/1/1580 +f 1590/1/1578 1593/1/1581 1591/1/1579 +f 1490/1/1476 1590/1/1578 1591/1/1579 +f 1593/1/1581 1594/1/1582 1591/1/1579 +f 1595/1/1583 1596/1/1474 1592/1/1580 +f 1591/1/1579 1597/1/1584 1598/1/1585 +f 1592/1/1580 1591/1/1579 1598/1/1585 +f 1491/1/1473 1600/1/1475 1598/1/1585 +f 1599/1/1586 1491/1/1473 1598/1/1585 +f 1597/1/1584 1599/1/1586 1598/1/1585 +f 1603/1/1587 1599/1/1586 1597/1/1584 +f 1600/1/1475 1601/1/1588 1598/1/1585 +f 1602/1/1589 1603/1/1587 1597/1/1584 +f 1599/1/1586 1492/1/1479 1491/1/1473 +f 1604/1/1590 1492/1/1479 1599/1/1586 +f 1604/1/1590 1494/1/1477 1492/1/1479 +f 1605/1/1591 1494/1/1477 1604/1/1590 +f 1605/1/1591 1496/1/1481 1494/1/1477 +f 1606/1/1592 1496/1/1481 1605/1/1591 +f 1606/1/1592 1607/1/1593 1502/1/1487 +f 1496/1/1481 1606/1/1592 1502/1/1487 +f 1500/1/1485 1467/1/1445 1476/1/1459 +f 1608/1/1594 1467/1/1445 1500/1/1485 +f 1502/1/1487 1608/1/1594 1500/1/1485 +f 1607/1/1593 1608/1/1594 1502/1/1487 +f 1505/1/1490 1434/1/1410 1609/1/1595 +f 1432/1/1407 1434/1/1410 1505/1/1490 +f 1613/1/1596 1505/1/1490 1610/1/1597 +f 1505/1/1490 1611/1/1598 1610/1/1597 +f 1612/1/1599 1613/1/1596 1610/1/1597 +f 1505/1/1490 1609/1/1595 1611/1/1598 +f 1609/1/1595 1615/1/1600 1611/1/1598 +f 1615/1/1600 1614/1/1601 1611/1/1598 +f 1611/1/1598 1507/1/1492 1610/1/1597 +f 1508/1/1493 1507/1/1492 1611/1/1598 +f 1509/1/1494 1504/1/1489 1613/1/1596 +f 1504/1/1489 1505/1/1490 1613/1/1596 +f 1486/1/1469 1498/1/1484 1474/1/1453 +f 1498/1/1484 1476/1/1459 1474/1/1453 +f 1426/1/1400 1543/1/1529 1429/1/1406 +f 1523/1/1509 1543/1/1529 1426/1/1400 +f 1514/1/1500 1403/1/1376 1402/1/1378 +f 1514/1/1500 1517/1/1499 1403/1/1376 +f 1517/1/1499 1407/1/1382 1403/1/1376 +f 1402/1/1378 1513/1/1498 1514/1/1500 +f 1408/1/1377 1513/1/1498 1402/1/1378 +f 1517/1/1499 1520/1/1505 1407/1/1382 +f 1520/1/1505 1410/1/1384 1407/1/1382 +f 1520/1/1505 1524/1/1506 1410/1/1384 +f 1412/1/1386 1513/1/1498 1408/1/1377 +f 1412/1/1386 1522/1/1507 1513/1/1498 +f 1524/1/1506 1413/1/1387 1410/1/1384 +f 1524/1/1506 1523/1/1509 1413/1/1387 +f 1418/1/1392 1522/1/1507 1412/1/1386 +f 1418/1/1392 1530/1/1515 1522/1/1507 +f 1432/1/1407 1539/1/1525 1418/1/1392 +f 1504/1/1489 1539/1/1525 1432/1/1407 +f 1532/1/1517 1535/1/1520 1428/1/1402 +f 1420/1/1394 1532/1/1517 1428/1/1402 +f 1535/1/1520 1439/1/1415 1428/1/1402 +f 1534/1/1519 1439/1/1415 1535/1/1520 +f 1533/1/1518 1439/1/1415 1534/1/1519 +f 1441/1/1417 1532/1/1517 1420/1/1394 +f 1533/1/1518 1442/1/1418 1439/1/1415 +f 1552/1/1537 1532/1/1517 1441/1/1417 +f 1445/1/1422 1552/1/1537 1441/1/1417 +f 1533/1/1518 1446/1/1423 1442/1/1418 +f 1537/1/1522 1446/1/1423 1533/1/1518 +f 1556/1/1543 1552/1/1537 1445/1/1422 +f 1452/1/1429 1556/1/1543 1445/1/1422 +f 1537/1/1522 1453/1/1430 1446/1/1423 +f 1540/1/1523 1453/1/1430 1537/1/1522 +f 1560/1/1548 1556/1/1543 1452/1/1429 +f 1455/1/1434 1560/1/1548 1452/1/1429 +f 1540/1/1523 1458/1/1437 1453/1/1430 +f 1567/1/1555 1458/1/1437 1540/1/1523 +f 1576/1/1564 1458/1/1437 1567/1/1555 +f 1565/1/1553 1560/1/1548 1455/1/1434 +f 1576/1/1564 1471/1/1450 1458/1/1437 +f 1459/1/1438 1565/1/1553 1455/1/1434 +f 1569/1/1557 1565/1/1553 1459/1/1438 +f 1579/1/1567 1471/1/1450 1576/1/1564 +f 1579/1/1567 1472/1/1451 1471/1/1450 +f 1581/1/1569 1472/1/1451 1579/1/1567 +f 1581/1/1569 1569/1/1557 1459/1/1438 +f 1478/1/1462 1581/1/1569 1459/1/1438 +f 1581/1/1569 1478/1/1462 1472/1/1451 +f 1616/1/1602 1497/1/1482 1496/1/1481 +f 1503/1/1488 1617/1/1603 1502/1/1487 +f 1502/1/1487 1617/1/1603 1496/1/1481 +f 1617/1/1603 1616/1/1602 1496/1/1481 +f 1618/1/1604 1497/1/1482 1616/1/1602 +f 1618/1/1604 1619/1/1605 1497/1/1482 +f 1620/1/1606 1621/1/1607 1617/1/1603 +f 1503/1/1488 1620/1/1606 1617/1/1603 +f 1617/1/1603 1622/1/1608 1616/1/1602 +f 1622/1/1608 1623/1/1609 1616/1/1602 +f 1623/1/1609 1618/1/1604 1616/1/1602 +f 1621/1/1607 1622/1/1608 1617/1/1603 +f 1623/1/1609 1624/1/1610 1618/1/1604 +f 1625/1/1611 1622/1/1608 1621/1/1607 +f 1627/1/1612 1503/1/1488 1497/1/1482 +f 1619/1/1605 1627/1/1612 1497/1/1482 +f 1626/1/1613 1620/1/1606 1503/1/1488 +f 1627/1/1612 1626/1/1613 1503/1/1488 +f 1626/1/1613 1628/1/1614 1620/1/1606 +f 1622/1/1608 1627/1/1612 1623/1/1609 +f 1626/1/1613 1627/1/1612 1622/1/1608 +f 1539/1/1525 1530/1/1515 1418/1/1392 +f 1523/1/1509 1426/1/1400 1413/1/1387 +f 1488/1/1471 1430/1/1404 1429/1/1406 +f 1543/1/1529 1488/1/1471 1429/1/1406 +f 1507/1/1492 1510/1/1495 1610/1/1597 +f 1510/1/1495 1612/1/1599 1610/1/1597 +f 1510/1/1495 1509/1/1494 1612/1/1599 +f 1509/1/1494 1613/1/1596 1612/1/1599 +f 1601/1/1588 1592/1/1580 1598/1/1585 +f 1595/1/1583 1592/1/1580 1601/1/1588 +f 1600/1/1475 1596/1/1474 1601/1/1588 +f 1596/1/1474 1595/1/1583 1601/1/1588 +f 1620/1/1606 1625/1/1611 1621/1/1607 +f 1620/1/1606 1628/1/1614 1625/1/1611 +f 1628/1/1614 1626/1/1613 1625/1/1611 +f 1626/1/1613 1622/1/1608 1625/1/1611 +f 1624/1/1610 1619/1/1605 1618/1/1604 +f 1627/1/1612 1619/1/1605 1624/1/1610 +f 1623/1/1609 1627/1/1612 1624/1/1610 +f 1521/1/1508 1411/1/1385 1489/1/1472 +f 1521/1/1508 1444/1/1421 1411/1/1385 +f 1558/1/1546 1444/1/1421 1521/1/1508 +f 1480/1/1464 1444/1/1421 1558/1/1546 +f 1480/1/1464 1462/1/1441 1444/1/1421 +f 1465/1/1444 1572/1/1560 1457/1/1436 +f 1465/1/1444 1577/1/1565 1572/1/1560 +f 1477/1/1460 1577/1/1565 1465/1/1444 +f 1477/1/1460 1573/1/1561 1577/1/1565 +f 1464/1/1443 1573/1/1561 1477/1/1460 +f 1464/1/1443 1570/1/1558 1573/1/1561 +f 1463/1/1442 1570/1/1558 1464/1/1443 +f 1463/1/1442 1571/1/1559 1570/1/1558 +f 1468/1/1447 1571/1/1559 1463/1/1442 +f 1468/1/1447 1575/1/1562 1571/1/1559 +f 1466/1/1446 1575/1/1562 1468/1/1447 +f 1466/1/1446 1574/1/1563 1575/1/1562 +f 1436/1/1412 1548/1/1533 1438/1/1414 +f 1436/1/1412 1546/1/1532 1548/1/1533 +f 1416/1/1390 1546/1/1532 1436/1/1412 +f 1416/1/1390 1527/1/1512 1546/1/1532 +f 1590/1/1578 1599/1/1586 1603/1/1587 +f 1593/1/1581 1590/1/1578 1603/1/1587 +f 1588/1/1575 1604/1/1590 1587/1/1576 +f 1588/1/1575 1605/1/1591 1604/1/1590 +f 1588/1/1575 1589/1/1577 1605/1/1591 +f 1589/1/1577 1606/1/1592 1605/1/1591 +f 1589/1/1577 1586/1/1574 1606/1/1592 +f 1587/1/1576 1599/1/1586 1590/1/1578 +f 1587/1/1576 1604/1/1590 1599/1/1586 +f 1583/1/1571 1566/1/1554 1467/1/1445 +f 1608/1/1594 1584/1/1572 1467/1/1445 +f 1584/1/1572 1583/1/1571 1467/1/1445 +f 1585/1/1573 1584/1/1572 1608/1/1594 +f 1607/1/1593 1585/1/1573 1608/1/1594 +f 1434/1/1410 1506/1/1491 1609/1/1595 +f 1609/1/1595 1511/1/1496 1615/1/1600 +f 1609/1/1595 1506/1/1491 1511/1/1496 +f 1566/1/1554 1574/1/1563 1467/1/1445 +f 1574/1/1563 1466/1/1446 1467/1/1445 +f 1437/1/1413 1526/1/1511 1414/1/1388 +f 1547/1/1531 1526/1/1511 1437/1/1413 +f 1516/1/1503 1518/1/1502 1405/1/1381 +f 1406/1/1380 1516/1/1503 1405/1/1381 +f 1518/1/1502 1404/1/1379 1405/1/1381 +f 1406/1/1380 1515/1/1501 1516/1/1503 +f 1518/1/1502 1519/1/1504 1404/1/1379 +f 1409/1/1383 1515/1/1501 1406/1/1380 +f 1528/1/1513 1417/1/1391 1404/1/1379 +f 1519/1/1504 1528/1/1513 1404/1/1379 +f 1415/1/1389 1515/1/1501 1409/1/1383 +f 1415/1/1389 1525/1/1510 1515/1/1501 +f 1531/1/1516 1419/1/1393 1417/1/1391 +f 1528/1/1513 1531/1/1516 1417/1/1391 +f 1414/1/1388 1525/1/1510 1415/1/1389 +f 1414/1/1388 1526/1/1511 1525/1/1510 +f 1419/1/1393 1506/1/1491 1434/1/1410 +f 1538/1/1524 1506/1/1491 1419/1/1393 +f 1549/1/1534 1542/1/1528 1423/1/1397 +f 1422/1/1396 1549/1/1534 1423/1/1397 +f 1542/1/1528 1424/1/1398 1423/1/1397 +f 1536/1/1521 1424/1/1398 1542/1/1528 +f 1550/1/1535 1549/1/1534 1422/1/1396 +f 1421/1/1395 1550/1/1535 1422/1/1396 +f 1536/1/1521 1443/1/1419 1424/1/1398 +f 1551/1/1536 1443/1/1419 1536/1/1521 +f 1554/1/1539 1550/1/1535 1421/1/1395 +f 1551/1/1536 1447/1/1424 1443/1/1419 +f 1425/1/1399 1554/1/1539 1421/1/1395 +f 1555/1/1542 1447/1/1424 1551/1/1536 +f 1557/1/1544 1554/1/1539 1425/1/1399 +f 1427/1/1401 1557/1/1544 1425/1/1399 +f 1555/1/1542 1454/1/1431 1447/1/1424 +f 1563/1/1551 1454/1/1431 1555/1/1542 +f 1568/1/1556 1557/1/1544 1427/1/1401 +f 1450/1/1427 1568/1/1556 1427/1/1401 +f 1563/1/1551 1456/1/1435 1454/1/1431 +f 1562/1/1550 1456/1/1435 1563/1/1551 +f 1578/1/1566 1568/1/1556 1450/1/1427 +f 1562/1/1550 1460/1/1439 1456/1/1435 +f 1449/1/1426 1578/1/1566 1450/1/1427 +f 1580/1/1568 1578/1/1566 1449/1/1426 +f 1562/1/1550 1461/1/1440 1460/1/1439 +f 1561/1/1549 1461/1/1440 1562/1/1550 +f 1451/1/1428 1580/1/1568 1449/1/1426 +f 1582/1/1570 1580/1/1568 1451/1/1428 +f 1561/1/1549 1451/1/1428 1461/1/1440 +f 1582/1/1570 1451/1/1428 1561/1/1549 +f 1586/1/1574 1629/1/1615 1606/1/1592 +f 1630/1/1616 1585/1/1573 1607/1/1593 +f 1629/1/1615 1607/1/1593 1606/1/1592 +f 1629/1/1615 1630/1/1616 1607/1/1593 +f 1586/1/1574 1631/1/1617 1629/1/1615 +f 1631/1/1617 1632/1/1618 1629/1/1615 +f 1633/1/1619 1585/1/1573 1630/1/1616 +f 1633/1/1619 1634/1/1620 1585/1/1573 +f 1637/1/1621 1630/1/1616 1629/1/1615 +f 1632/1/1618 1637/1/1621 1629/1/1615 +f 1637/1/1621 1635/1/1622 1630/1/1616 +f 1635/1/1622 1633/1/1619 1630/1/1616 +f 1636/1/1623 1637/1/1621 1632/1/1618 +f 1635/1/1622 1638/1/1624 1633/1/1619 +f 1585/1/1573 1641/1/1625 1586/1/1574 +f 1641/1/1625 1639/1/1626 1586/1/1574 +f 1639/1/1626 1631/1/1617 1586/1/1574 +f 1634/1/1620 1641/1/1625 1585/1/1573 +f 1640/1/1627 1641/1/1625 1634/1/1620 +f 1639/1/1626 1642/1/1628 1631/1/1617 +f 1639/1/1626 1641/1/1625 1637/1/1621 +f 1641/1/1625 1635/1/1622 1637/1/1621 +f 1538/1/1524 1419/1/1393 1531/1/1516 +f 1438/1/1414 1547/1/1531 1437/1/1413 +f 1438/1/1414 1548/1/1533 1547/1/1531 +f 1614/1/1601 1508/1/1493 1611/1/1598 +f 1512/1/1497 1508/1/1493 1614/1/1601 +f 1615/1/1600 1512/1/1497 1614/1/1601 +f 1511/1/1496 1512/1/1497 1615/1/1600 +f 1591/1/1579 1594/1/1582 1597/1/1584 +f 1594/1/1582 1602/1/1589 1597/1/1584 +f 1594/1/1582 1593/1/1581 1602/1/1589 +f 1593/1/1581 1603/1/1587 1602/1/1589 +f 1638/1/1624 1634/1/1620 1633/1/1619 +f 1640/1/1627 1634/1/1620 1638/1/1624 +f 1635/1/1622 1640/1/1627 1638/1/1624 +f 1641/1/1625 1640/1/1627 1635/1/1622 +f 1631/1/1617 1642/1/1628 1632/1/1618 +f 1642/1/1628 1636/1/1623 1632/1/1618 +f 1642/1/1628 1639/1/1626 1636/1/1623 +f 1639/1/1626 1637/1/1621 1636/1/1623 +f 1529/1/1514 1527/1/1512 1416/1/1390 +f 1440/1/1416 1529/1/1514 1416/1/1390 +f 1559/1/1547 1529/1/1514 1440/1/1416 +f 1457/1/1436 1559/1/1547 1440/1/1416 +f 1572/1/1560 1559/1/1547 1457/1/1436 +f 1650/1/1629 1655/1/1630 1660/1/1631 +f 1655/1/1630 1643/1/1632 1660/1/1631 +f 1668/1/1633 1644/1/1634 1672/1/1635 +f 1644/1/1634 1645/1/1636 1672/1/1635 +f 1651/1/1637 1647/1/1638 1652/1/1639 +f 1647/1/1638 1646/1/1640 1652/1/1639 +f 1653/1/1641 1648/1/1642 1651/1/1637 +f 1648/1/1642 1647/1/1638 1651/1/1637 +f 1671/1/1643 1649/1/1644 1653/1/1641 +f 1649/1/1644 1648/1/1642 1653/1/1641 +f 1650/1/1629 1646/1/1640 1647/1/1638 +f 1651/1/1637 1652/1/1639 1644/1/1634 +f 1649/1/1644 1654/1/1645 1648/1/1642 +f 1654/1/1645 1647/1/1638 1648/1/1642 +f 1654/1/1645 1650/1/1629 1647/1/1638 +f 1654/1/1645 1655/1/1630 1650/1/1629 +f 1651/1/1637 1644/1/1634 1668/1/1633 +f 1669/1/1646 1651/1/1637 1668/1/1633 +f 1653/1/1641 1651/1/1637 1669/1/1646 +f 1671/1/1643 1653/1/1641 1669/1/1646 +f 1656/1/1647 1661/1/1648 1662/1/1649 +f 1656/1/1647 1657/1/1650 1661/1/1648 +f 1657/1/1650 1658/1/1651 1661/1/1648 +f 1658/1/1651 1663/1/1652 1661/1/1648 +f 1658/1/1651 1676/1/1653 1663/1/1652 +f 1658/1/1651 1659/1/1654 1676/1/1653 +f 1656/1/1647 1660/1/1631 1657/1/1650 +f 1662/1/1649 1661/1/1648 1645/1/1636 +f 1664/1/1655 1659/1/1654 1658/1/1651 +f 1657/1/1650 1664/1/1655 1658/1/1651 +f 1665/1/1656 1664/1/1655 1657/1/1650 +f 1660/1/1631 1665/1/1656 1657/1/1650 +f 1643/1/1632 1665/1/1656 1660/1/1631 +f 1645/1/1636 1675/1/1657 1672/1/1635 +f 1645/1/1636 1661/1/1648 1675/1/1657 +f 1661/1/1648 1663/1/1652 1675/1/1657 +f 1663/1/1652 1676/1/1653 1675/1/1657 +f 1670/1/1658 1666/1/1541 1671/1/1643 +f 1666/1/1541 1649/1/1644 1671/1/1643 +f 1545/1/1530 1666/1/1541 1670/1/1658 +f 1666/1/1541 1654/1/1645 1649/1/1644 +f 1667/1/1540 1654/1/1645 1666/1/1541 +f 1667/1/1540 1655/1/1630 1654/1/1645 +f 1545/1/1530 1669/1/1646 1544/1/1527 +f 1669/1/1646 1668/1/1633 1544/1/1527 +f 1670/1/1658 1669/1/1646 1545/1/1530 +f 1670/1/1658 1671/1/1643 1669/1/1646 +f 1655/1/1630 1674/1/1552 1643/1/1632 +f 1667/1/1540 1674/1/1552 1655/1/1630 +f 1544/1/1527 1672/1/1635 1541/1/1526 +f 1668/1/1633 1672/1/1635 1544/1/1527 +f 1664/1/1655 1673/1/1659 1659/1/1654 +f 1664/1/1655 1564/1/1545 1673/1/1659 +f 1665/1/1656 1674/1/1552 1664/1/1655 +f 1674/1/1552 1564/1/1545 1664/1/1655 +f 1674/1/1552 1665/1/1656 1643/1/1632 +f 1672/1/1635 1675/1/1657 1541/1/1526 +f 1675/1/1657 1553/1/1538 1541/1/1526 +f 1675/1/1657 1676/1/1653 1553/1/1538 +f 1676/1/1653 1677/1/1660 1553/1/1538 +f 1659/1/1654 1677/1/1660 1676/1/1653 +f 1659/1/1654 1673/1/1659 1677/1/1660 +f 1673/1/1659 1553/1/1538 1677/1/1660 +f 1673/1/1659 1564/1/1545 1553/1/1538 +f 1701/1/1457 1687/1/1661 1700/1/1662 +f 1708/1/1458 1701/1/1457 1700/1/1662 +f 1678/1/1663 1682/1/1664 1696/1/1665 +f 1682/1/1664 1692/1/1666 1696/1/1665 +f 1679/1/1667 1680/1/1668 1433/1/1409 +f 1680/1/1668 1435/1/1411 1433/1/1409 +f 1682/1/1664 1683/1/1669 1692/1/1666 +f 1683/1/1669 1691/1/1670 1692/1/1666 +f 1683/1/1669 1690/1/1671 1691/1/1670 +f 1683/1/1669 1684/1/1433 1690/1/1671 +f 1684/1/1433 1694/1/1672 1690/1/1671 +f 1682/1/1664 1685/1/1673 1683/1/1669 +f 1687/1/1661 1685/1/1673 1682/1/1664 +f 1686/1/1674 1687/1/1661 1682/1/1664 +f 1689/1/1675 1688/1/1676 1680/1/1668 +f 1689/1/1675 1691/1/1670 1688/1/1676 +f 1691/1/1670 1690/1/1671 1688/1/1676 +f 1692/1/1666 1691/1/1670 1689/1/1675 +f 1686/1/1674 1682/1/1664 1678/1/1663 +f 1700/1/1662 1686/1/1674 1678/1/1663 +f 1687/1/1661 1686/1/1674 1700/1/1662 +f 1693/1/1455 1684/1/1433 1683/1/1669 +f 1685/1/1673 1693/1/1455 1683/1/1669 +f 1687/1/1661 1693/1/1455 1685/1/1673 +f 1701/1/1457 1693/1/1455 1687/1/1661 +f 1684/1/1433 1448/1/1425 1694/1/1672 +f 1680/1/1668 1688/1/1676 1435/1/1411 +f 1688/1/1676 1702/1/1420 1435/1/1411 +f 1688/1/1676 1694/1/1672 1702/1/1420 +f 1688/1/1676 1690/1/1671 1694/1/1672 +f 1689/1/1675 1680/1/1668 1679/1/1667 +f 1695/1/1677 1689/1/1675 1679/1/1667 +f 1692/1/1666 1689/1/1675 1695/1/1677 +f 1696/1/1665 1692/1/1666 1695/1/1677 +f 1705/1/1678 1697/1/1679 1696/1/1665 +f 1697/1/1679 1678/1/1663 1696/1/1665 +f 1698/1/1680 1697/1/1679 1705/1/1678 +f 1706/1/1681 1698/1/1680 1705/1/1678 +f 1710/1/1403 1681/1/1432 1706/1/1681 +f 1681/1/1432 1698/1/1680 1706/1/1681 +f 1699/1/1682 1678/1/1663 1697/1/1679 +f 1699/1/1682 1697/1/1679 1698/1/1680 +f 1699/1/1682 1700/1/1662 1678/1/1663 +f 1694/1/1672 1448/1/1425 1702/1/1420 +f 1703/1/1683 1695/1/1677 1679/1/1667 +f 1704/1/1684 1705/1/1678 1703/1/1683 +f 1703/1/1683 1696/1/1665 1695/1/1677 +f 1703/1/1683 1705/1/1678 1696/1/1665 +f 1706/1/1681 1705/1/1678 1704/1/1684 +f 1681/1/1432 1707/1/1454 1698/1/1680 +f 1707/1/1454 1699/1/1682 1698/1/1680 +f 1707/1/1454 1708/1/1458 1699/1/1682 +f 1708/1/1458 1700/1/1662 1699/1/1682 +f 1703/1/1683 1679/1/1667 1433/1/1409 +f 1709/1/1408 1703/1/1683 1433/1/1409 +f 1704/1/1684 1703/1/1683 1709/1/1408 +f 1706/1/1681 1704/1/1684 1709/1/1408 +f 1710/1/1403 1706/1/1681 1709/1/1408 +f 1644/1/1634 1662/1/1649 1645/1/1636 +f 1652/1/1639 1662/1/1649 1644/1/1634 +f 1646/1/1640 1660/1/1631 1656/1/1647 +f 1650/1/1629 1660/1/1631 1646/1/1640 +f 1652/1/1639 1656/1/1647 1662/1/1649 +f 1646/1/1640 1656/1/1647 1652/1/1639 +f 1717/1/1685 1714/1/1686 1711/1/1687 +f 1712/1/1688 1715/1/1689 1713/1/1690 +f 1716/1/1691 1717/1/1685 1711/1/1687 +f 1718/1/1692 1715/1/1689 1712/1/1688 +f 1719/1/1693 1717/1/1685 1716/1/1691 +f 1720/1/1694 1721/1/1695 1717/1/1685 +f 1722/1/1696 1720/1/1694 1717/1/1685 +f 1719/1/1693 1722/1/1696 1717/1/1685 +f 1723/1/1697 1724/1/1698 1712/1/1688 +f 1725/1/1699 1723/1/1697 1712/1/1688 +f 1726/1/1700 1725/1/1699 1712/1/1688 +f 1724/1/1698 1718/1/1692 1712/1/1688 +f 1720/1/1694 1727/1/1701 1721/1/1695 +f 1728/1/1702 1725/1/1699 1726/1/1700 +f 1720/1/1694 1729/1/1703 1727/1/1701 +f 1730/1/1704 1731/1/1705 1728/1/1702 +f 1731/1/1705 1732/1/1706 1728/1/1702 +f 1732/1/1706 1733/1/1707 1728/1/1702 +f 1733/1/1707 1725/1/1699 1728/1/1702 +f 1734/1/1708 1730/1/1704 1728/1/1702 +f 1735/1/1709 1720/1/1694 1722/1/1696 +f 1736/1/1710 1734/1/1708 1728/1/1702 +f 1729/1/1703 1737/1/1711 1727/1/1701 +f 1737/1/1711 2016/1/1712 1727/1/1701 +f 1739/1/1713 1740/1/1714 1738/1/1715 +f 1740/1/1714 1735/1/1709 1738/1/1715 +f 1740/1/1714 1720/1/1694 1735/1/1709 +f 2016/1/1712 1741/1/1716 1727/1/1701 +f 2016/1/1712 2015/1/1717 1741/1/1716 +f 2015/1/1717 1742/1/1718 1741/1/1716 +f 1742/1/1718 1743/1/1719 1741/1/1716 +f 1744/1/1720 1736/1/1710 1743/1/1719 +f 1742/1/1718 1744/1/1720 1743/1/1719 +f 1744/1/1720 1734/1/1708 1736/1/1710 +f 1725/1/1699 1745/1/1721 1723/1/1697 +f 1745/1/1721 1746/1/1722 1723/1/1697 +f 1746/1/1722 1747/1/1723 1723/1/1697 +f 1746/1/1722 1748/1/1724 1747/1/1723 +f 1749/1/1725 2016/1/1712 1737/1/1711 +f 1720/1/1694 1750/1/1726 1729/1/1703 +f 1751/1/1727 2016/1/1712 1749/1/1725 +f 1752/1/1728 1725/1/1699 1733/1/1707 +f 2007/1/1729 1734/1/1708 1744/1/1720 +f 1720/1/1694 1753/1/1730 1750/1/1726 +f 1754/1/1731 2016/1/1712 1751/1/1727 +f 1755/1/1732 1725/1/1699 1752/1/1728 +f 2008/1/1733 1734/1/1708 2007/1/1729 +f 1753/1/1730 1756/1/1734 1750/1/1726 +f 2009/1/1735 1734/1/1708 2008/1/1733 +f 1758/1/1736 1759/1/1737 2009/1/1735 +f 1759/1/1737 1757/1/1738 2009/1/1735 +f 1757/1/1738 1760/1/1739 2009/1/1735 +f 1760/1/1739 1734/1/1708 2009/1/1735 +f 1761/1/1740 2016/1/1712 1754/1/1731 +f 1762/1/1741 1725/1/1699 1755/1/1732 +f 1761/1/1740 2014/1/1742 2016/1/1712 +f 1986/1/1743 1758/1/1736 2009/1/1735 +f 1753/1/1730 1763/1/1744 1756/1/1734 +f 1764/1/1745 1725/1/1699 1762/1/1741 +f 1765/1/1746 1763/1/1744 1753/1/1730 +f 1762/1/1741 1767/1/1747 1764/1/1745 +f 1766/1/1748 2014/1/1742 1761/1/1740 +f 1767/1/1747 1768/1/1749 1764/1/1745 +f 1768/1/1749 1769/1/1750 1764/1/1745 +f 1770/1/1751 1765/1/1746 1753/1/1730 +f 1768/1/1749 1771/1/1752 1769/1/1750 +f 1772/1/1753 1770/1/1751 1753/1/1730 +f 1773/1/1754 1774/1/1755 1769/1/1750 +f 1774/1/1755 1791/1/1756 1769/1/1750 +f 1771/1/1752 1776/1/1757 1769/1/1750 +f 1776/1/1757 1775/1/1758 1769/1/1750 +f 1775/1/1758 1777/1/1759 1769/1/1750 +f 1777/1/1759 1773/1/1754 1769/1/1750 +f 1778/1/1760 1779/1/1761 2014/1/1742 +f 1766/1/1748 1780/1/1762 2014/1/1742 +f 1780/1/1762 1781/1/1763 2014/1/1742 +f 1781/1/1763 1778/1/1760 2014/1/1742 +f 1779/1/1761 1782/1/1764 2014/1/1742 +f 1782/1/1764 1783/1/1765 2014/1/1742 +f 1783/1/1765 1784/1/1766 2014/1/1742 +f 1776/1/1757 1758/1/1736 1986/1/1743 +f 1998/1/1767 1776/1/1757 1986/1/1743 +f 1999/1/1768 1776/1/1757 1998/1/1767 +f 1785/1/1769 1770/1/1751 1772/1/1753 +f 1791/1/1756 1786/1/1770 1769/1/1750 +f 1783/1/1765 2013/1/1771 1784/1/1766 +f 1787/1/1772 1776/1/1757 1999/1/1768 +f 1783/1/1765 1787/1/1772 2013/1/1771 +f 1787/1/1772 1999/1/1768 2013/1/1771 +f 1778/1/1760 1789/1/1773 1770/1/1751 +f 1788/1/1774 1778/1/1760 1770/1/1751 +f 1790/1/1775 1788/1/1774 1770/1/1751 +f 1785/1/1769 1790/1/1775 1770/1/1751 +f 1789/1/1773 1778/1/1760 1781/1/1763 +f 1758/1/1736 1776/1/1757 1771/1/1752 +f 1793/1/1776 1785/1/1769 1772/1/1753 +f 1792/1/1777 1793/1/1776 1772/1/1753 +f 1794/1/1778 1790/1/1775 1785/1/1769 +f 1793/1/1776 1794/1/1778 1785/1/1769 +f 1794/1/1778 1788/1/1774 1790/1/1775 +f 1794/1/1778 1795/1/1779 1788/1/1774 +f 1795/1/1779 1778/1/1760 1788/1/1774 +f 1796/1/1780 1779/1/1761 1778/1/1760 +f 1795/1/1779 1796/1/1780 1778/1/1760 +f 1796/1/1780 1782/1/1764 1779/1/1761 +f 1796/1/1780 1797/1/1781 1782/1/1764 +f 1797/1/1781 1783/1/1765 1782/1/1764 +f 1798/1/1782 1740/1/1714 1739/1/1713 +f 1798/1/1782 1799/1/1783 1740/1/1714 +f 1799/1/1783 1720/1/1694 1740/1/1714 +f 1799/1/1783 1800/1/1784 1720/1/1694 +f 1802/1/1785 1803/1/1786 1907/1/1787 +f 1802/1/1785 1801/1/1788 1803/1/1786 +f 1806/1/1789 1805/1/1478 1804/1/1479 +f 1807/1/1480 1805/1/1478 1806/1/1789 +f 1808/1/1790 1807/1/1480 1806/1/1789 +f 1809/1/1791 1807/1/1480 1808/1/1790 +f 1804/1/1479 1805/1/1478 1801/1/1788 +f 1802/1/1785 1804/1/1479 1801/1/1788 +f 1811/1/1792 1787/1/1772 1810/1/1793 +f 1811/1/1792 1812/1/1794 1787/1/1772 +f 1811/1/1792 1813/1/1795 1812/1/1794 +f 1813/1/1795 1814/1/1796 1812/1/1794 +f 1813/1/1795 1815/1/1797 1814/1/1796 +f 1816/1/1798 1741/1/1716 1817/1/1799 +f 1818/1/1800 1816/1/1798 1819/1/1801 +f 1820/1/1802 1818/1/1800 1819/1/1801 +f 1816/1/1798 1821/1/1803 1819/1/1801 +f 1821/1/1803 1822/1/1804 1819/1/1801 +f 1824/1/1805 1818/1/1800 1820/1/1802 +f 1823/1/1806 1824/1/1805 1820/1/1802 +f 1829/1/1807 1825/1/1808 1826/1/1809 +f 1827/1/1810 1830/1/1811 1828/1/1812 +f 1825/1/1808 1831/1/1813 1826/1/1809 +f 1827/1/1810 1832/1/1814 1830/1/1811 +f 1825/1/1808 1836/1/1815 1831/1/1813 +f 1834/1/1816 1833/1/1817 1825/1/1808 +f 1833/1/1817 1835/1/1818 1825/1/1808 +f 1835/1/1818 1836/1/1815 1825/1/1808 +f 1837/1/1819 1838/1/1820 1832/1/1814 +f 1838/1/1820 1839/1/1821 1832/1/1814 +f 1839/1/1821 1840/1/1822 1832/1/1814 +f 1827/1/1810 1837/1/1819 1832/1/1814 +f 1841/1/1823 1833/1/1817 1834/1/1816 +f 1839/1/1821 1842/1/1824 1840/1/1822 +f 1843/1/1825 1833/1/1817 1841/1/1823 +f 1844/1/1826 1845/1/1827 1841/1/1823 +f 1845/1/1827 1846/1/1828 1841/1/1823 +f 1846/1/1828 1843/1/1825 1841/1/1823 +f 1839/1/1821 1847/1/1829 1842/1/1824 +f 1848/1/1830 1844/1/1826 1841/1/1823 +f 1849/1/1831 1850/1/1832 1841/1/1823 +f 1850/1/1832 1848/1/1830 1841/1/1823 +f 1847/1/1829 1851/1/1833 1842/1/1824 +f 1852/1/1834 1850/1/1832 1849/1/1831 +f 1855/1/1835 1852/1/1834 1849/1/1831 +f 1847/1/1829 1853/1/1836 1851/1/1833 +f 1835/1/1818 1798/1/1782 1854/1/1837 +f 1800/1/1784 1799/1/1783 1835/1/1818 +f 1833/1/1817 1800/1/1784 1835/1/1818 +f 1799/1/1783 1798/1/1782 1835/1/1818 +f 1816/1/1798 1855/1/1835 1849/1/1831 +f 1818/1/1800 1855/1/1835 1816/1/1798 +f 1851/1/1833 1853/1/1836 1818/1/1800 +f 1974/1/1838 1855/1/1835 1818/1/1800 +f 1853/1/1836 1974/1/1838 1818/1/1800 +f 1857/1/1839 1858/1/1840 1838/1/1820 +f 1858/1/1840 1856/1/1841 1838/1/1820 +f 1856/1/1841 1839/1/1821 1838/1/1820 +f 1859/1/1842 1974/1/1838 1853/1/1836 +f 1860/1/1843 1974/1/1838 1859/1/1842 +f 1839/1/1821 1861/1/1844 1847/1/1829 +f 1862/1/1845 1833/1/1817 1843/1/1825 +f 1863/1/1846 1850/1/1832 1852/1/1834 +f 1864/1/1847 1971/1/1848 1860/1/1843 +f 1971/1/1848 1970/1/1849 1860/1/1843 +f 1970/1/1849 1974/1/1838 1860/1/1843 +f 1839/1/1821 1865/1/1850 1861/1/1844 +f 1866/1/1851 1833/1/1817 1862/1/1845 +f 1867/1/1852 1971/1/1848 1864/1/1847 +f 1839/1/1821 1868/1/1853 1865/1/1850 +f 1977/1/1854 1850/1/1832 1863/1/1846 +f 1869/1/1855 1833/1/1817 1866/1/1851 +f 1870/1/1856 1868/1/1853 1839/1/1821 +f 1866/1/1851 1871/1/1857 1869/1/1855 +f 1872/1/1858 1873/1/1859 1870/1/1856 +f 1873/1/1859 1868/1/1853 1870/1/1856 +f 1978/1/1860 1874/1/1861 1850/1/1832 +f 1977/1/1854 1978/1/1860 1850/1/1832 +f 1871/1/1857 1792/1/1777 1869/1/1855 +f 1875/1/1862 1872/1/1858 1870/1/1856 +f 1978/1/1860 1876/1/1863 1874/1/1861 +f 1877/1/1864 1971/1/1848 1867/1/1852 +f 1878/1/1865 1879/1/1866 1792/1/1777 +f 1871/1/1857 1878/1/1865 1792/1/1777 +f 1797/1/1781 1796/1/1780 1792/1/1777 +f 1796/1/1780 1795/1/1779 1792/1/1777 +f 1795/1/1779 1794/1/1778 1792/1/1777 +f 1794/1/1778 1793/1/1776 1792/1/1777 +f 1879/1/1866 1810/1/1793 1792/1/1777 +f 1810/1/1793 1797/1/1781 1792/1/1777 +f 1880/1/1867 1881/1/1868 1875/1/1862 +f 1882/1/1869 1880/1/1867 1875/1/1862 +f 1881/1/1868 1884/1/1870 1875/1/1862 +f 1884/1/1870 1883/1/1871 1875/1/1862 +f 1883/1/1871 1876/1/1863 1875/1/1862 +f 1876/1/1863 1872/1/1858 1875/1/1862 +f 1876/1/1863 1885/1/1872 1874/1/1861 +f 1876/1/1863 1971/1/1848 1877/1/1864 +f 1876/1/1863 1810/1/1793 1885/1/1872 +f 1886/1/1873 1876/1/1863 1877/1/1864 +f 1887/1/1874 1882/1/1869 1875/1/1862 +f 1810/1/1793 1888/1/1875 1885/1/1872 +f 1971/1/1848 1876/1/1863 1978/1/1860 +f 1889/1/1876 1876/1/1863 1886/1/1873 +f 1810/1/1793 1890/1/1877 1888/1/1875 +f 1890/1/1877 1810/1/1793 1879/1/1866 +f 1891/1/1878 1876/1/1863 1889/1/1876 +f 1876/1/1863 1891/1/1878 1872/1/1858 +f 1876/1/1863 1811/1/1792 1810/1/1793 +f 1876/1/1863 1892/1/1879 1811/1/1792 +f 1892/1/1879 1813/1/1795 1811/1/1792 +f 1892/1/1879 1893/1/1880 1813/1/1795 +f 1893/1/1880 1894/1/1881 1813/1/1795 +f 1894/1/1881 1815/1/1797 1813/1/1795 +f 1894/1/1881 1895/1/1882 1809/1/1791 +f 1815/1/1797 1894/1/1881 1809/1/1791 +f 1805/1/1478 1897/1/1883 1896/1/1576 +f 1807/1/1480 1897/1/1883 1805/1/1478 +f 1807/1/1480 1898/1/1577 1897/1/1883 +f 1809/1/1791 1898/1/1577 1807/1/1480 +f 1809/1/1791 1895/1/1882 1898/1/1577 +f 1896/1/1576 1899/1/1884 1801/1/1788 +f 1805/1/1478 1896/1/1576 1801/1/1788 +f 1801/1/1788 1900/1/1885 1901/1/1886 +f 1803/1/1786 1801/1/1788 1901/1/1886 +f 1899/1/1884 1902/1/1887 1900/1/1885 +f 1801/1/1788 1899/1/1884 1900/1/1885 +f 1903/1/1888 1803/1/1786 1901/1/1886 +f 1900/1/1885 1904/1/1889 1905/1/1890 +f 1901/1/1886 1900/1/1885 1905/1/1890 +f 1802/1/1785 1907/1/1787 1905/1/1890 +f 1906/1/1891 1802/1/1785 1905/1/1890 +f 1904/1/1889 1906/1/1891 1905/1/1890 +f 1909/1/1892 1906/1/1891 1904/1/1889 +f 1907/1/1787 1908/1/1893 1905/1/1890 +f 1906/1/1891 1804/1/1479 1802/1/1785 +f 1910/1/1894 1804/1/1479 1906/1/1891 +f 1910/1/1894 1806/1/1789 1804/1/1479 +f 1911/1/1895 1806/1/1789 1910/1/1894 +f 1911/1/1895 1808/1/1790 1806/1/1789 +f 1912/1/1896 1808/1/1790 1911/1/1895 +f 1912/1/1896 1913/1/1897 1814/1/1796 +f 1808/1/1790 1912/1/1896 1814/1/1796 +f 1812/1/1794 1914/1/1898 1787/1/1772 +f 1914/1/1898 1776/1/1757 1787/1/1772 +f 1913/1/1897 1914/1/1898 1812/1/1794 +f 1814/1/1796 1913/1/1897 1812/1/1794 +f 1817/1/1799 1743/1/1719 1915/1/1899 +f 1741/1/1716 1743/1/1719 1817/1/1799 +f 1919/1/1900 1817/1/1799 1916/1/1901 +f 1817/1/1799 1917/1/1902 1916/1/1901 +f 1918/1/1903 1919/1/1900 1916/1/1901 +f 1817/1/1799 1915/1/1899 1917/1/1902 +f 1915/1/1899 1920/1/1904 1917/1/1902 +f 1917/1/1902 1819/1/1801 1916/1/1901 +f 1820/1/1802 1819/1/1801 1917/1/1902 +f 1821/1/1803 1816/1/1798 1919/1/1900 +f 1816/1/1798 1817/1/1799 1919/1/1900 +f 1797/1/1781 1810/1/1793 1783/1/1765 +f 1810/1/1793 1787/1/1772 1783/1/1765 +f 1735/1/1709 1854/1/1837 1738/1/1715 +f 1835/1/1818 1854/1/1837 1735/1/1709 +f 1714/1/1686 1826/1/1809 1711/1/1687 +f 1714/1/1686 1829/1/1807 1826/1/1809 +f 1831/1/1813 1716/1/1691 1711/1/1687 +f 1826/1/1809 1831/1/1813 1711/1/1687 +f 1717/1/1685 1829/1/1807 1714/1/1686 +f 1717/1/1685 1825/1/1808 1829/1/1807 +f 1831/1/1813 1719/1/1693 1716/1/1691 +f 1831/1/1813 1836/1/1815 1719/1/1693 +f 1721/1/1695 1825/1/1808 1717/1/1685 +f 1721/1/1695 1834/1/1816 1825/1/1808 +f 1836/1/1815 1722/1/1696 1719/1/1693 +f 1836/1/1815 1835/1/1818 1722/1/1696 +f 1727/1/1701 1834/1/1816 1721/1/1695 +f 1727/1/1701 1841/1/1823 1834/1/1816 +f 1741/1/1716 1849/1/1831 1727/1/1701 +f 1816/1/1798 1849/1/1831 1741/1/1716 +f 1843/1/1825 1846/1/1828 1737/1/1711 +f 1729/1/1703 1843/1/1825 1737/1/1711 +f 1846/1/1828 1749/1/1725 1737/1/1711 +f 1845/1/1827 1749/1/1725 1846/1/1828 +f 1750/1/1726 1843/1/1825 1729/1/1703 +f 1845/1/1827 1751/1/1727 1749/1/1725 +f 1844/1/1826 1751/1/1727 1845/1/1827 +f 1862/1/1845 1843/1/1825 1750/1/1726 +f 1844/1/1826 1754/1/1731 1751/1/1727 +f 1756/1/1734 1862/1/1845 1750/1/1726 +f 1848/1/1830 1754/1/1731 1844/1/1826 +f 1866/1/1851 1862/1/1845 1756/1/1734 +f 1848/1/1830 1761/1/1740 1754/1/1731 +f 1850/1/1832 1761/1/1740 1848/1/1830 +f 1763/1/1744 1866/1/1851 1756/1/1734 +f 1850/1/1832 1766/1/1748 1761/1/1740 +f 1874/1/1861 1766/1/1748 1850/1/1832 +f 1871/1/1857 1866/1/1851 1763/1/1744 +f 1765/1/1746 1871/1/1857 1763/1/1744 +f 1874/1/1861 1780/1/1762 1766/1/1748 +f 1885/1/1872 1780/1/1762 1874/1/1861 +f 1878/1/1865 1871/1/1857 1765/1/1746 +f 1770/1/1751 1878/1/1865 1765/1/1746 +f 1885/1/1872 1781/1/1763 1780/1/1762 +f 1888/1/1875 1781/1/1763 1885/1/1872 +f 1879/1/1866 1878/1/1865 1770/1/1751 +f 1890/1/1877 1781/1/1763 1888/1/1875 +f 1890/1/1877 1879/1/1866 1770/1/1751 +f 1789/1/1773 1890/1/1877 1770/1/1751 +f 1890/1/1877 1789/1/1773 1781/1/1763 +f 1921/1/1905 1809/1/1791 1808/1/1790 +f 1815/1/1797 1922/1/1906 1814/1/1796 +f 1814/1/1796 1922/1/1906 1808/1/1790 +f 1922/1/1906 1921/1/1905 1808/1/1790 +f 1923/1/1907 1809/1/1791 1921/1/1905 +f 1923/1/1907 1924/1/1908 1809/1/1791 +f 1925/1/1909 1926/1/1910 1922/1/1906 +f 1815/1/1797 1925/1/1909 1922/1/1906 +f 1922/1/1906 1929/1/1911 1921/1/1905 +f 1929/1/1911 1927/1/1912 1921/1/1905 +f 1927/1/1912 1923/1/1907 1921/1/1905 +f 1926/1/1910 1929/1/1911 1922/1/1906 +f 1927/1/1912 1928/1/1913 1923/1/1907 +f 1930/1/1914 1929/1/1911 1926/1/1910 +f 1932/1/1915 1815/1/1797 1809/1/1791 +f 1924/1/1908 1932/1/1915 1809/1/1791 +f 1931/1/1916 1925/1/1909 1815/1/1797 +f 1932/1/1915 1931/1/1916 1815/1/1797 +f 1933/1/1917 1932/1/1915 1924/1/1908 +f 1931/1/1916 1934/1/1918 1925/1/1909 +f 1929/1/1911 1932/1/1915 1927/1/1912 +f 1931/1/1916 1932/1/1915 1929/1/1911 +f 1849/1/1831 1841/1/1823 1727/1/1701 +f 1835/1/1818 1735/1/1709 1722/1/1696 +f 1854/1/1837 1739/1/1713 1738/1/1715 +f 1854/1/1837 1798/1/1782 1739/1/1713 +f 1819/1/1801 1822/1/1804 1916/1/1901 +f 1822/1/1804 1918/1/1903 1916/1/1901 +f 1822/1/1804 1821/1/1803 1918/1/1903 +f 1821/1/1803 1919/1/1900 1918/1/1903 +f 1908/1/1893 1901/1/1886 1905/1/1890 +f 1903/1/1888 1901/1/1886 1908/1/1893 +f 1907/1/1787 1903/1/1888 1908/1/1893 +f 1803/1/1786 1903/1/1888 1907/1/1787 +f 1925/1/1909 1934/1/1918 1926/1/1910 +f 1934/1/1918 1930/1/1914 1926/1/1910 +f 1934/1/1918 1931/1/1916 1930/1/1914 +f 1931/1/1916 1929/1/1911 1930/1/1914 +f 1928/1/1913 1924/1/1908 1923/1/1907 +f 1933/1/1917 1924/1/1908 1928/1/1913 +f 1927/1/1912 1933/1/1917 1928/1/1913 +f 1932/1/1915 1933/1/1917 1927/1/1912 +f 1833/1/1817 1720/1/1694 1800/1/1784 +f 1833/1/1817 1753/1/1730 1720/1/1694 +f 1869/1/1855 1753/1/1730 1833/1/1817 +f 1792/1/1777 1753/1/1730 1869/1/1855 +f 1792/1/1777 1772/1/1753 1753/1/1730 +f 1786/1/1770 1875/1/1862 1769/1/1750 +f 1786/1/1770 1887/1/1874 1875/1/1862 +f 1791/1/1756 1887/1/1874 1786/1/1770 +f 1791/1/1756 1882/1/1869 1887/1/1874 +f 1774/1/1755 1882/1/1869 1791/1/1756 +f 1774/1/1755 1880/1/1867 1882/1/1869 +f 1773/1/1754 1880/1/1867 1774/1/1755 +f 1773/1/1754 1881/1/1868 1880/1/1867 +f 1777/1/1759 1881/1/1868 1773/1/1754 +f 1777/1/1759 1884/1/1870 1881/1/1868 +f 1775/1/1758 1884/1/1870 1777/1/1759 +f 1775/1/1758 1883/1/1871 1884/1/1870 +f 1746/1/1722 1858/1/1840 1748/1/1724 +f 1746/1/1722 1856/1/1841 1858/1/1840 +f 1745/1/1721 1856/1/1841 1746/1/1722 +f 1745/1/1721 1839/1/1821 1856/1/1841 +f 1899/1/1884 1906/1/1891 1909/1/1892 +f 1902/1/1887 1899/1/1884 1909/1/1892 +f 1897/1/1883 1910/1/1894 1896/1/1576 +f 1897/1/1883 1911/1/1895 1910/1/1894 +f 1897/1/1883 1898/1/1577 1911/1/1895 +f 1898/1/1577 1912/1/1896 1911/1/1895 +f 1898/1/1577 1895/1/1882 1912/1/1896 +f 1896/1/1576 1906/1/1891 1899/1/1884 +f 1896/1/1576 1910/1/1894 1906/1/1891 +f 1914/1/1898 1892/1/1879 1776/1/1757 +f 1892/1/1879 1876/1/1863 1776/1/1757 +f 1893/1/1880 1892/1/1879 1914/1/1898 +f 1913/1/1897 1893/1/1880 1914/1/1898 +f 1894/1/1881 1893/1/1880 1913/1/1897 +f 1743/1/1719 1818/1/1800 1915/1/1899 +f 1915/1/1899 1824/1/1805 1920/1/1904 +f 1915/1/1899 1818/1/1800 1824/1/1805 +f 1876/1/1863 1883/1/1871 1776/1/1757 +f 1883/1/1871 1775/1/1758 1776/1/1757 +f 1747/1/1723 1838/1/1820 1723/1/1697 +f 1857/1/1839 1838/1/1820 1747/1/1723 +f 1828/1/1812 1830/1/1811 1713/1/1690 +f 1715/1/1689 1828/1/1812 1713/1/1690 +f 1830/1/1811 1712/1/1688 1713/1/1690 +f 1715/1/1689 1827/1/1810 1828/1/1812 +f 1830/1/1811 1832/1/1814 1712/1/1688 +f 1718/1/1692 1827/1/1810 1715/1/1689 +f 1840/1/1822 1726/1/1700 1712/1/1688 +f 1832/1/1814 1840/1/1822 1712/1/1688 +f 1724/1/1698 1827/1/1810 1718/1/1692 +f 1724/1/1698 1837/1/1819 1827/1/1810 +f 1842/1/1824 1728/1/1702 1726/1/1700 +f 1840/1/1822 1842/1/1824 1726/1/1700 +f 1723/1/1697 1837/1/1819 1724/1/1698 +f 1723/1/1697 1838/1/1820 1837/1/1819 +f 1736/1/1710 1818/1/1800 1743/1/1719 +f 1851/1/1833 1818/1/1800 1736/1/1710 +f 1859/1/1842 1853/1/1836 1732/1/1706 +f 1731/1/1705 1859/1/1842 1732/1/1706 +f 1853/1/1836 1733/1/1707 1732/1/1706 +f 1847/1/1829 1733/1/1707 1853/1/1836 +f 1860/1/1843 1859/1/1842 1731/1/1705 +f 1730/1/1704 1860/1/1843 1731/1/1705 +f 1847/1/1829 1752/1/1728 1733/1/1707 +f 1861/1/1844 1752/1/1728 1847/1/1829 +f 1864/1/1847 1860/1/1843 1730/1/1704 +f 1861/1/1844 1755/1/1732 1752/1/1728 +f 1734/1/1708 1864/1/1847 1730/1/1704 +f 1865/1/1850 1755/1/1732 1861/1/1844 +f 1867/1/1852 1864/1/1847 1734/1/1708 +f 1865/1/1850 1762/1/1741 1755/1/1732 +f 1868/1/1853 1762/1/1741 1865/1/1850 +f 1760/1/1739 1867/1/1852 1734/1/1708 +f 1877/1/1864 1867/1/1852 1760/1/1739 +f 1868/1/1853 1767/1/1747 1762/1/1741 +f 1873/1/1859 1767/1/1747 1868/1/1853 +f 1757/1/1738 1877/1/1864 1760/1/1739 +f 1873/1/1859 1768/1/1749 1767/1/1747 +f 1886/1/1873 1877/1/1864 1757/1/1738 +f 1872/1/1858 1768/1/1749 1873/1/1859 +f 1872/1/1858 1771/1/1752 1768/1/1749 +f 1889/1/1876 1886/1/1873 1757/1/1738 +f 1759/1/1737 1889/1/1876 1757/1/1738 +f 1758/1/1736 1889/1/1876 1759/1/1737 +f 1891/1/1878 1889/1/1876 1758/1/1736 +f 1872/1/1858 1758/1/1736 1771/1/1752 +f 1891/1/1878 1758/1/1736 1872/1/1858 +f 1895/1/1882 1935/1/1919 1912/1/1896 +f 1936/1/1920 1894/1/1881 1913/1/1897 +f 1935/1/1919 1913/1/1897 1912/1/1896 +f 1935/1/1919 1936/1/1920 1913/1/1897 +f 1895/1/1882 1937/1/1921 1935/1/1919 +f 1937/1/1921 1938/1/1922 1935/1/1919 +f 1939/1/1923 1894/1/1881 1936/1/1920 +f 1939/1/1923 1940/1/1924 1894/1/1881 +f 1942/1/1925 1936/1/1920 1935/1/1919 +f 1938/1/1922 1942/1/1925 1935/1/1919 +f 1942/1/1925 1943/1/1926 1936/1/1920 +f 1943/1/1926 1939/1/1923 1936/1/1920 +f 1941/1/1927 1942/1/1925 1938/1/1922 +f 1894/1/1881 1945/1/1928 1895/1/1882 +f 1945/1/1928 1944/1/1929 1895/1/1882 +f 1944/1/1929 1937/1/1921 1895/1/1882 +f 1940/1/1924 1945/1/1928 1894/1/1881 +f 1944/1/1929 1946/1/1930 1937/1/1921 +f 1944/1/1929 1945/1/1928 1942/1/1925 +f 1945/1/1928 1943/1/1926 1942/1/1925 +f 1842/1/1824 1736/1/1710 1728/1/1702 +f 1851/1/1833 1736/1/1710 1842/1/1824 +f 1748/1/1724 1857/1/1839 1747/1/1723 +f 1748/1/1724 1858/1/1840 1857/1/1839 +f 1823/1/1806 1820/1/1802 1917/1/1902 +f 1920/1/1904 1823/1/1806 1917/1/1902 +f 1824/1/1805 1823/1/1806 1920/1/1904 +f 1900/1/1885 1902/1/1887 1904/1/1889 +f 1902/1/1887 1909/1/1892 1904/1/1889 +f 1943/1/1926 1940/1/1924 1939/1/1923 +f 1945/1/1928 1940/1/1924 1943/1/1926 +f 1937/1/1921 1946/1/1930 1938/1/1922 +f 1946/1/1930 1941/1/1927 1938/1/1922 +f 1946/1/1930 1944/1/1929 1941/1/1927 +f 1944/1/1929 1942/1/1925 1941/1/1927 +f 1725/1/1699 1839/1/1821 1745/1/1721 +f 1870/1/1856 1839/1/1821 1725/1/1699 +f 1764/1/1745 1870/1/1856 1725/1/1699 +f 1875/1/1862 1870/1/1856 1764/1/1745 +f 1769/1/1750 1875/1/1862 1764/1/1745 +f 1954/1/1931 1959/1/1932 1964/1/1933 +f 1959/1/1932 1947/1/1934 1964/1/1933 +f 1972/1/1935 1948/1/1936 1979/1/1937 +f 1948/1/1936 1949/1/1938 1979/1/1937 +f 1955/1/1939 1951/1/1940 1956/1/1941 +f 1951/1/1940 1950/1/1942 1956/1/1941 +f 1957/1/1943 1951/1/1940 1955/1/1939 +f 1952/1/1944 1951/1/1940 1957/1/1943 +f 1976/1/1945 1953/1/1946 1957/1/1943 +f 1953/1/1946 1952/1/1944 1957/1/1943 +f 1954/1/1931 1950/1/1942 1951/1/1940 +f 1955/1/1939 1956/1/1941 1948/1/1936 +f 1953/1/1946 1958/1/1947 1952/1/1944 +f 1958/1/1947 1951/1/1940 1952/1/1944 +f 1958/1/1947 1959/1/1932 1951/1/1940 +f 1959/1/1932 1954/1/1931 1951/1/1940 +f 1973/1/1948 1948/1/1936 1972/1/1935 +f 1955/1/1939 1948/1/1936 1973/1/1948 +f 1957/1/1943 1955/1/1939 1973/1/1948 +f 1976/1/1945 1957/1/1943 1973/1/1948 +f 1960/1/1949 1965/1/1950 1966/1/1951 +f 1960/1/1949 1961/1/1952 1965/1/1950 +f 1961/1/1952 1962/1/1953 1965/1/1950 +f 1962/1/1953 1967/1/1954 1965/1/1950 +f 1962/1/1953 1981/1/1955 1967/1/1954 +f 1962/1/1953 1963/1/1956 1981/1/1955 +f 1960/1/1949 1964/1/1933 1961/1/1952 +f 1966/1/1951 1965/1/1950 1949/1/1938 +f 1968/1/1957 1963/1/1956 1962/1/1953 +f 1961/1/1952 1968/1/1957 1962/1/1953 +f 1969/1/1958 1968/1/1957 1961/1/1952 +f 1964/1/1933 1969/1/1958 1961/1/1952 +f 1947/1/1934 1969/1/1958 1964/1/1933 +f 1949/1/1938 1965/1/1950 1979/1/1937 +f 1965/1/1950 1980/1/1959 1979/1/1937 +f 1965/1/1950 1967/1/1954 1980/1/1959 +f 1967/1/1954 1981/1/1955 1980/1/1959 +f 1975/1/1960 1970/1/1849 1976/1/1945 +f 1970/1/1849 1953/1/1946 1976/1/1945 +f 1974/1/1838 1970/1/1849 1975/1/1960 +f 1970/1/1849 1958/1/1947 1953/1/1946 +f 1971/1/1848 1958/1/1947 1970/1/1849 +f 1971/1/1848 1959/1/1932 1958/1/1947 +f 1974/1/1838 1972/1/1935 1855/1/1835 +f 1973/1/1948 1972/1/1935 1974/1/1838 +f 1975/1/1960 1973/1/1948 1974/1/1838 +f 1975/1/1960 1976/1/1945 1973/1/1948 +f 1959/1/1932 1978/1/1860 1947/1/1934 +f 1971/1/1848 1978/1/1860 1959/1/1932 +f 1855/1/1835 1979/1/1937 1852/1/1834 +f 1972/1/1935 1979/1/1937 1855/1/1835 +f 1968/1/1957 1977/1/1854 1963/1/1956 +f 1969/1/1958 1978/1/1860 1968/1/1957 +f 1978/1/1860 1977/1/1854 1968/1/1957 +f 1978/1/1860 1969/1/1958 1947/1/1934 +f 1979/1/1937 1863/1/1846 1852/1/1834 +f 1979/1/1937 1980/1/1959 1863/1/1846 +f 1981/1/1955 1863/1/1846 1980/1/1959 +f 1963/1/1956 1863/1/1846 1981/1/1955 +f 1963/1/1956 1977/1/1854 1863/1/1846 +f 1999/1/1768 1992/1/1961 2006/1/1962 +f 2013/1/1771 1999/1/1768 2006/1/1962 +f 1982/1/1963 1987/1/1964 2001/1/1965 +f 1987/1/1964 1997/1/1966 2001/1/1965 +f 1983/1/1967 1984/1/1968 1742/1/1718 +f 1984/1/1968 1744/1/1720 1742/1/1718 +f 1987/1/1964 1988/1/1969 1997/1/1966 +f 1988/1/1969 1996/1/1970 1997/1/1966 +f 1988/1/1969 1995/1/1971 1996/1/1970 +f 1988/1/1969 1989/1/1972 1995/1/1971 +f 1989/1/1972 1986/1/1743 1995/1/1971 +f 1986/1/1743 2009/1/1735 1995/1/1971 +f 1991/1/1973 1988/1/1969 1987/1/1964 +f 1990/1/1974 1991/1/1973 1987/1/1964 +f 1988/1/1969 1991/1/1973 1989/1/1972 +f 1990/1/1974 1992/1/1961 1991/1/1973 +f 1994/1/1975 1993/1/1976 1984/1/1968 +f 1994/1/1975 1996/1/1970 1993/1/1976 +f 1996/1/1970 1995/1/1971 1993/1/1976 +f 1997/1/1966 1996/1/1970 1994/1/1975 +f 1990/1/1974 1987/1/1964 1982/1/1963 +f 2006/1/1962 1990/1/1974 1982/1/1963 +f 1992/1/1961 1990/1/1974 2006/1/1962 +f 1998/1/1767 1986/1/1743 1989/1/1972 +f 1991/1/1973 1998/1/1767 1989/1/1972 +f 1999/1/1768 1998/1/1767 1991/1/1973 +f 1992/1/1961 1999/1/1768 1991/1/1973 +f 1984/1/1968 2007/1/1729 1744/1/1720 +f 1984/1/1968 1993/1/1976 2007/1/1729 +f 1993/1/1976 2008/1/1733 2007/1/1729 +f 1993/1/1976 1995/1/1971 2008/1/1733 +f 1995/1/1971 2009/1/1735 2008/1/1733 +f 1994/1/1975 1984/1/1968 1983/1/1967 +f 2000/1/1977 1994/1/1975 1983/1/1967 +f 1997/1/1966 1994/1/1975 2000/1/1977 +f 2001/1/1965 1997/1/1966 2000/1/1977 +f 2012/1/1978 2002/1/1979 2001/1/1965 +f 2002/1/1979 1982/1/1963 2001/1/1965 +f 2011/1/1980 2003/1/1981 2012/1/1978 +f 2003/1/1981 2002/1/1979 2012/1/1978 +f 2016/1/1712 1985/1/1982 2011/1/1980 +f 1985/1/1982 2003/1/1981 2011/1/1980 +f 2003/1/1981 2004/1/1983 2002/1/1979 +f 2005/1/1984 1982/1/1963 2002/1/1979 +f 2004/1/1983 2005/1/1984 2002/1/1979 +f 2005/1/1984 2006/1/1962 1982/1/1963 +f 2010/1/1985 2000/1/1977 1983/1/1967 +f 2010/1/1985 2001/1/1965 2000/1/1977 +f 2010/1/1985 2012/1/1978 2001/1/1965 +f 2011/1/1980 2012/1/1978 2010/1/1985 +f 2014/1/1742 2004/1/1983 2003/1/1981 +f 1985/1/1982 2014/1/1742 2003/1/1981 +f 2014/1/1742 1784/1/1766 2004/1/1983 +f 1784/1/1766 2005/1/1984 2004/1/1983 +f 1784/1/1766 2013/1/1771 2005/1/1984 +f 2013/1/1771 2006/1/1962 2005/1/1984 +f 2010/1/1985 1983/1/1967 1742/1/1718 +f 2015/1/1717 2010/1/1985 1742/1/1718 +f 2011/1/1980 2010/1/1985 2015/1/1717 +f 2016/1/1712 2011/1/1980 2015/1/1717 +f 2014/1/1742 1985/1/1982 2016/1/1712 +f 1948/1/1936 1966/1/1951 1949/1/1938 +f 1956/1/1941 1966/1/1951 1948/1/1936 +f 1950/1/1942 1964/1/1933 1960/1/1949 +f 1954/1/1931 1964/1/1933 1950/1/1942 +f 1956/1/1941 1960/1/1949 1966/1/1951 +f 1950/1/1942 1960/1/1949 1956/1/1941 diff --git a/resources/qml/Account/GeneralOperations.qml b/resources/qml/Account/GeneralOperations.qml index a648a5ad0b..f01b9538bd 100644 --- a/resources/qml/Account/GeneralOperations.qml +++ b/resources/qml/Account/GeneralOperations.qml @@ -26,7 +26,7 @@ Column anchors.horizontalCenter: parent.horizontalCenter horizontalAlignment: Text.AlignHCenter renderType: Text.NativeRendering - text: catalog.i18nc("@label", "Ultimaker Cloud") + text: "Ultimaker Cloud" font: UM.Theme.getFont("large_bold") color: UM.Theme.getColor("text") } @@ -48,7 +48,7 @@ Column anchors.horizontalCenter: parent.horizontalCenter horizontalAlignment: Text.AlignLeft renderType: Text.NativeRendering - text: catalog.i18nc("@text", "- Send print jobs to Ultimaker printers outside your local network\n- Store your Ultimaker Cura settings in the cloud for use anywhere\n- Get exclusive access to material profiles from leading brands") + text: catalog.i18nc("@text", "- Send print jobs to Ultimaker printers outside your local network\n- Store your Ultimaker Cura settings in the cloud for use anywhere\n- Get exclusive access to print profiles from leading brands") lineHeight: 1.4 font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") diff --git a/resources/qml/Account/UserOperations.qml b/resources/qml/Account/UserOperations.qml index c9fb461696..10a4119dfc 100644 --- a/resources/qml/Account/UserOperations.qml +++ b/resources/qml/Account/UserOperations.qml @@ -9,10 +9,9 @@ import Cura 1.1 as Cura Column { - width: Math.max(title.width, - accountButton.width) * 1.5 + width: Math.max(title.width, accountButton.width) + 2 * UM.Theme.getSize("default_margin").width - spacing: UM.Theme.getSize("default_margin").width + spacing: UM.Theme.getSize("default_margin").height Label { @@ -20,17 +19,11 @@ Column anchors.horizontalCenter: parent.horizontalCenter horizontalAlignment: Text.AlignHCenter renderType: Text.NativeRendering - text: catalog.i18nc("@label", "Hi " + profile.username) + text: catalog.i18nc("@label The argument is a username.", "Hi %1").arg(profile.username) font: UM.Theme.getFont("large_bold") color: UM.Theme.getColor("text") } - // placeholder - Label - { - text: " " - } - Cura.SecondaryButton { id: accountButton diff --git a/resources/qml/ActionButton.qml b/resources/qml/ActionButton.qml index e4e2aedb8a..bb1abcf57e 100644 --- a/resources/qml/ActionButton.qml +++ b/resources/qml/ActionButton.qml @@ -40,6 +40,10 @@ Button // we elide the text to the right so the text will be cut off with the three dots at the end. property var fixedWidthMode: false + // This property is used when the space for the button is limited. In case the button needs to grow with the text, + // but it can exceed a maximum, then this value have to be set. + property int maximumWidth: 0 + leftPadding: UM.Theme.getSize("default_margin").width rightPadding: UM.Theme.getSize("default_margin").width height: UM.Theme.getSize("action_button").height @@ -63,6 +67,15 @@ Button anchors.verticalCenter: parent.verticalCenter } + TextMetrics + { + id: buttonTextMetrics + text: buttonText.text + font: buttonText.font + elide: buttonText.elide + elideWidth: buttonText.width + } + Label { id: buttonText @@ -73,7 +86,7 @@ Button renderType: Text.NativeRendering height: parent.height anchors.verticalCenter: parent.verticalCenter - width: fixedWidthMode ? button.width - button.leftPadding - button.rightPadding : undefined + width: fixedWidthMode ? button.width - button.leftPadding - button.rightPadding : ((maximumWidth != 0 && contentWidth > maximumWidth) ? maximumWidth : undefined) horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter elide: Text.ElideRight @@ -120,7 +133,7 @@ Button Cura.ToolTip { id: tooltip - visible: button.hovered + visible: button.hovered && buttonTextMetrics.elidedText != buttonText.text } BusyIndicator diff --git a/resources/qml/ActionPanel/ActionPanelWidget.qml b/resources/qml/ActionPanel/ActionPanelWidget.qml index 4d61380c99..6efa77518b 100644 --- a/resources/qml/ActionPanel/ActionPanelWidget.qml +++ b/resources/qml/ActionPanel/ActionPanelWidget.qml @@ -27,7 +27,7 @@ Item width: UM.Theme.getSize("action_panel_widget").width height: childrenRect.height + 2 * UM.Theme.getSize("thick_margin").height - anchors. right: parent.right + anchors.right: parent.right color: UM.Theme.getColor("main_background") border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") @@ -103,4 +103,4 @@ Item CuraApplication.additionalComponents["saveButton"][component].parent = additionalComponentsRow } } -} \ No newline at end of file +} diff --git a/resources/qml/ActionPanel/OutputProcessWidget.qml b/resources/qml/ActionPanel/OutputProcessWidget.qml index f4505c620c..be6d68de4f 100644 --- a/resources/qml/ActionPanel/OutputProcessWidget.qml +++ b/resources/qml/ActionPanel/OutputProcessWidget.qml @@ -68,6 +68,7 @@ Column property var printMaterialLengths: PrintInformation.materialLengths property var printMaterialWeights: PrintInformation.materialWeights + property var printMaterialCosts: PrintInformation.materialCosts text: { @@ -77,6 +78,7 @@ Column } var totalLengths = 0 var totalWeights = 0 + var totalCosts = 0.0 if (printMaterialLengths) { for(var index = 0; index < printMaterialLengths.length; index++) @@ -85,12 +87,20 @@ Column { totalLengths += printMaterialLengths[index] totalWeights += Math.round(printMaterialWeights[index]) + var cost = printMaterialCosts[index] == undefined ? 0.0 : printMaterialCosts[index] + totalCosts += cost } } } + if(totalCosts > 0) + { + var costString = "%1 %2".arg(UM.Preferences.getValue("cura/currency")).arg(totalCosts.toFixed(2)) + return totalWeights + "g · " + totalLengths.toFixed(2) + "m · " + costString + } return totalWeights + "g · " + totalLengths.toFixed(2) + "m" } source: UM.Theme.getIcon("spool") + font: UM.Theme.getFont("default") } } } diff --git a/resources/qml/ActionPanel/PrintInformationWidget.qml b/resources/qml/ActionPanel/PrintInformationWidget.qml index 2e108b05d7..097f281946 100644 --- a/resources/qml/ActionPanel/PrintInformationWidget.qml +++ b/resources/qml/ActionPanel/PrintInformationWidget.qml @@ -37,6 +37,9 @@ UM.RecolorImage opacity: opened ? 1 : 0 Behavior on opacity { NumberAnimation { duration: 100 } } + contentWidth: printJobInformation.width + contentHeight: printJobInformation.implicitHeight + contentItem: PrintJobInformation { id: printJobInformation diff --git a/resources/qml/ActionPanel/PrintJobInformation.qml b/resources/qml/ActionPanel/PrintJobInformation.qml index 4b8461987b..5b80e1a614 100644 --- a/resources/qml/ActionPanel/PrintJobInformation.qml +++ b/resources/qml/ActionPanel/PrintJobInformation.qml @@ -28,7 +28,7 @@ Column Label { - text: catalog.i18nc("@label", "Time specification").toUpperCase() + text: catalog.i18nc("@label", "Time estimation").toUpperCase() color: UM.Theme.getColor("primary") font: UM.Theme.getFont("default_bold") renderType: Text.NativeRendering @@ -111,7 +111,7 @@ Column Label { - text: catalog.i18nc("@label", "Material specification").toUpperCase() + text: catalog.i18nc("@label", "Material estimation").toUpperCase() color: UM.Theme.getColor("primary") font: UM.Theme.getFont("default_bold") renderType: Text.NativeRendering diff --git a/resources/qml/ActionPanel/SliceProcessWidget.qml b/resources/qml/ActionPanel/SliceProcessWidget.qml index 21d6fac2d8..40e76826ca 100644 --- a/resources/qml/ActionPanel/SliceProcessWidget.qml +++ b/resources/qml/ActionPanel/SliceProcessWidget.qml @@ -6,7 +6,7 @@ import QtQuick.Controls 2.1 import QtQuick.Layouts 1.3 import QtQuick.Controls 1.4 as Controls1 -import UM 1.1 as UM +import UM 1.3 as UM import Cura 1.0 as Cura @@ -27,15 +27,21 @@ Column property real progress: UM.Backend.progress property int backendState: UM.Backend.state + // As the collection of settings to send to the engine might take some time, we have an extra value to indicate + // That the user pressed the button but it's still waiting for the backend to acknowledge that it got it. + property bool waitingForSliceToStart: false + onBackendStateChanged: waitingForSliceToStart = false function sliceOrStopSlicing() { if (widget.backendState == UM.Backend.NotStarted) { + widget.waitingForSliceToStart = true CuraApplication.backend.forceSlice() } else { + widget.waitingForSliceToStart = false CuraApplication.backend.stopSlicing() } } @@ -58,13 +64,13 @@ Column width: parent.width visible: widget.backendState == UM.Backend.Error - text: catalog.i18nc("@label:PrintjobStatus", "Unable to Slice") + text: catalog.i18nc("@label:PrintjobStatus", "Unable to slice") source: UM.Theme.getIcon("warning") iconColor: UM.Theme.getColor("warning") } // Progress bar, only visible when the backend is in the process of slice the printjob - ProgressBar + UM.ProgressBar { id: progressBar width: parent.width @@ -72,25 +78,6 @@ Column value: progress indeterminate: widget.backendState == UM.Backend.NotStarted visible: (widget.backendState == UM.Backend.Processing || (prepareButtons.autoSlice && widget.backendState == UM.Backend.NotStarted)) - - background: Rectangle - { - anchors.fill: parent - radius: UM.Theme.getSize("progressbar_radius").width - color: UM.Theme.getColor("progressbar_background") - } - - contentItem: Item - { - anchors.fill: parent - Rectangle - { - width: progressBar.visualPosition * parent.width - height: parent.height - radius: UM.Theme.getSize("progressbar_radius").width - color: UM.Theme.getColor("progressbar_control") - } - } } Item @@ -113,9 +100,9 @@ Column anchors.right: parent.right anchors.left: parent.left - text: catalog.i18nc("@button", "Slice") + text: widget.waitingForSliceToStart ? catalog.i18nc("@button", "Processing"): catalog.i18nc("@button", "Slice") tooltip: catalog.i18nc("@label", "Start the slicing process") - enabled: widget.backendState != UM.Backend.Error + enabled: widget.backendState != UM.Backend.Error && !widget.waitingForSliceToStart visible: widget.backendState == UM.Backend.NotStarted || widget.backendState == UM.Backend.Error onClicked: sliceOrStopSlicing() } diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 1389801bca..7e6afa813d 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -3,8 +3,9 @@ pragma Singleton -import QtQuick 2.2 +import QtQuick 2.10 import QtQuick.Controls 1.1 +import QtQuick.Controls 2.3 as Controls2 import UM 1.1 as UM import Cura 1.0 as Cura @@ -60,9 +61,11 @@ Item property alias documentation: documentationAction; property alias showTroubleshooting: showTroubleShootingAction property alias reportBug: reportBugAction; + property alias whatsNew: whatsNewAction property alias about: aboutAction; property alias toggleFullScreen: toggleFullScreenAction; + property alias exitFullScreen: exitFullScreenAction property alias configureSettingVisibility: configureSettingVisibilityAction @@ -80,10 +83,18 @@ Item Action { - id:toggleFullScreenAction - shortcut: StandardKey.FullScreen; - text: catalog.i18nc("@action:inmenu", "Toggle Full Screen"); - iconName: "view-fullscreen"; + id: toggleFullScreenAction + shortcut: StandardKey.FullScreen + text: catalog.i18nc("@action:inmenu", "Toggle Full Screen") + iconName: "view-fullscreen" + } + + Action + { + id: exitFullScreenAction + shortcut: StandardKey.Cancel + text: catalog.i18nc("@action:inmenu", "Exit Full Screen") + iconName: "view-fullscreen" } Action @@ -99,7 +110,7 @@ Item Action { id: redoAction; - text: catalog.i18nc("@action:inmenu menubar:edit","&Redo"); + text: catalog.i18nc("@action:inmenu menubar:edit", "&Redo"); iconName: "edit-redo"; shortcut: StandardKey.Redo; onTriggered: UM.OperationStack.redo(); @@ -108,65 +119,65 @@ Item Action { - id: quitAction; - text: catalog.i18nc("@action:inmenu menubar:file","&Quit"); - iconName: "application-exit"; - shortcut: StandardKey.Quit; + id: quitAction + text: catalog.i18nc("@action:inmenu menubar:file","&Quit") + iconName: "application-exit" + shortcut: StandardKey.Quit } Action { - id: view3DCameraAction; - text: catalog.i18nc("@action:inmenu menubar:view","3D View"); - onTriggered: UM.Controller.rotateView("3d", 0); + id: view3DCameraAction + text: catalog.i18nc("@action:inmenu menubar:view", "3D View") + onTriggered: UM.Controller.setCameraRotation("3d", 0) } Action { - id: viewFrontCameraAction; - text: catalog.i18nc("@action:inmenu menubar:view","Front View"); - onTriggered: UM.Controller.rotateView("home", 0); + id: viewFrontCameraAction + text: catalog.i18nc("@action:inmenu menubar:view", "Front View") + onTriggered: UM.Controller.setCameraRotation("home", 0) } Action { - id: viewTopCameraAction; - text: catalog.i18nc("@action:inmenu menubar:view","Top View"); - onTriggered: UM.Controller.rotateView("y", 90); + id: viewTopCameraAction + text: catalog.i18nc("@action:inmenu menubar:view", "Top View") + onTriggered: UM.Controller.setCameraRotation("y", 90) } Action { - id: viewLeftSideCameraAction; - text: catalog.i18nc("@action:inmenu menubar:view","Left Side View"); - onTriggered: UM.Controller.rotateView("x", 90); + id: viewLeftSideCameraAction + text: catalog.i18nc("@action:inmenu menubar:view", "Left Side View") + onTriggered: UM.Controller.setCameraRotation("x", 90) } Action { - id: viewRightSideCameraAction; - text: catalog.i18nc("@action:inmenu menubar:view","Right Side View"); - onTriggered: UM.Controller.rotateView("x", -90); + id: viewRightSideCameraAction + text: catalog.i18nc("@action:inmenu menubar:view", "Right Side View") + onTriggered: UM.Controller.setCameraRotation("x", -90) } Action { - id: preferencesAction; - text: catalog.i18nc("@action:inmenu","Configure Cura..."); - iconName: "configure"; + id: preferencesAction + text: catalog.i18nc("@action:inmenu", "Configure Cura...") + iconName: "configure" } Action { - id: addMachineAction; - text: catalog.i18nc("@action:inmenu menubar:printer","&Add Printer..."); + id: addMachineAction + text: catalog.i18nc("@action:inmenu menubar:printer", "&Add Printer...") } Action { - id: settingsAction; - text: catalog.i18nc("@action:inmenu menubar:printer","Manage Pr&inters..."); - iconName: "configure"; + id: settingsAction + text: catalog.i18nc("@action:inmenu menubar:printer", "Manage Pr&inters...") + iconName: "configure" } Action @@ -228,6 +239,12 @@ Item onTriggered: CuraActions.openBugReportPage(); } + Action + { + id: whatsNewAction; + text: catalog.i18nc("@action:inmenu menubar:help", "What's New"); + } + Action { id: aboutAction; @@ -281,7 +298,7 @@ Item { id: groupObjectsAction text: catalog.i18nc("@action:inmenu menubar:edit","&Group Models"); - enabled: UM.Scene.numObjectsSelected > 1 ? true: false + enabled: UM.Selection.selectionCount > 1 ? true: false iconName: "object-group" shortcut: "Ctrl+G"; onTriggered: CuraApplication.groupSelected(); @@ -301,7 +318,7 @@ Item { id: unGroupObjectsAction text: catalog.i18nc("@action:inmenu menubar:edit","Ungroup Models"); - enabled: UM.Scene.isGroupSelected + enabled: UM.Selection.isGroupSelected iconName: "object-ungroup" shortcut: "Ctrl+Shift+G"; onTriggered: CuraApplication.ungroupSelected(); @@ -311,7 +328,7 @@ Item { id: mergeObjectsAction text: catalog.i18nc("@action:inmenu menubar:edit","&Merge Models"); - enabled: UM.Scene.numObjectsSelected > 1 ? true: false + enabled: UM.Selection.selectionCount > 1 ? true: false iconName: "merge"; shortcut: "Ctrl+Alt+G"; onTriggered: CuraApplication.mergeSelected(); diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 44ff31ef31..8dcf60018f 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -14,13 +14,15 @@ import Cura 1.1 as Cura import "Dialogs" import "Menus" import "MainWindow" +import "WelcomePages" UM.MainWindow { id: base // Cura application window title - title: catalog.i18nc("@title:window", "Ultimaker Cura") + title: PrintInformation.jobName + " - " + catalog.i18nc("@title:window", CuraApplication.applicationDisplayName) + backgroundColor: UM.Theme.getColor("viewport_background") UM.I18nCatalog @@ -41,24 +43,74 @@ UM.MainWindow tooltip.hide(); } + Rectangle + { + id: greyOutBackground + anchors.fill: parent + visible: welcomeDialogItem.visible + color: UM.Theme.getColor("window_disabled_background") + opacity: 0.7 + z: stageMenu.z + 1 + + MouseArea + { + // Prevent all mouse events from passing through. + enabled: parent.visible + anchors.fill: parent + hoverEnabled: true + acceptedButtons: Qt.AllButtons + } + } + + WelcomeDialogItem + { + id: welcomeDialogItem + visible: true // True, so if somehow no preferences are found/loaded, it's shown anyway. + z: greyOutBackground.z + 1 + } Component.onCompleted: { CuraApplication.setMinimumWindowSize(UM.Theme.getSize("window_minimum_size")) - // Workaround silly issues with QML Action's shortcut property. - // - // Currently, there is no way to define shortcuts as "Application Shortcut". - // This means that all Actions are "Window Shortcuts". The code for this - // implements a rather naive check that just checks if any of the action's parents - // are a window. Since the "Actions" object is a singleton it has no parent by - // default. If we set its parent to something contained in this window, the - // shortcut will activate properly because one of its parents is a window. - // - // This has been fixed for QtQuick Controls 2 since the Shortcut item has a context property. - Cura.Actions.parent = backgroundItem CuraApplication.purgeWindows() } + Connections + { + target: CuraApplication + onInitializationFinished: + { + // Workaround silly issues with QML Action's shortcut property. + // + // Currently, there is no way to define shortcuts as "Application Shortcut". + // This means that all Actions are "Window Shortcuts". The code for this + // implements a rather naive check that just checks if any of the action's parents + // are a window. Since the "Actions" object is a singleton it has no parent by + // default. If we set its parent to something contained in this window, the + // shortcut will activate properly because one of its parents is a window. + // + // This has been fixed for QtQuick Controls 2 since the Shortcut item has a context property. + Cura.Actions.parent = backgroundItem + + if (CuraApplication.shouldShowWelcomeDialog()) + { + welcomeDialogItem.visible = true + } + else + { + welcomeDialogItem.visible = false + } + + // Reuse the welcome dialog item to show "What's New" only. + if (CuraApplication.shouldShowWhatsNewDialog()) + { + welcomeDialogItem.model = CuraApplication.getWhatsNewPagesModel() + welcomeDialogItem.progressBarVisible = false + welcomeDialogItem.visible = true + } + } + } + Item { id: backgroundItem @@ -174,7 +226,7 @@ UM.MainWindow for (var i = 0; i < drop.urls.length; i++) { var filename = drop.urls[i]; - if (filename.endsWith(".curapackage")) + if (filename.toLowerCase().endsWith(".curapackage")) { // Try to install plugin & close. CuraApplication.getPackageManager().installPackageViaDragAndDrop(filename); @@ -209,15 +261,17 @@ UM.MainWindow visible: CuraApplication.platformActivity && !PrintInformation.preSliced } - ObjectsList + ObjectSelector { - id: objectsList - visible: UM.Preferences.getValue("cura/use_multi_build_plate") + id: objectSelector + visible: CuraApplication.platformActivity anchors { - bottom: viewOrientationControls.top + bottom: jobSpecs.top left: toolbar.right - margins: UM.Theme.getSize("default_margin").width + leftMargin: UM.Theme.getSize("default_margin").width + rightMargin: UM.Theme.getSize("default_margin").width + bottomMargin: UM.Theme.getSize("narrow_margin").height } } @@ -227,10 +281,12 @@ UM.MainWindow visible: CuraApplication.platformActivity anchors { - left: parent.left + left: toolbar.right bottom: viewOrientationControls.top - margins: UM.Theme.getSize("default_margin").width + leftMargin: UM.Theme.getSize("default_margin").width + rightMargin: UM.Theme.getSize("default_margin").width bottomMargin: UM.Theme.getSize("thin_margin").width + topMargin: UM.Theme.getSize("thin_margin").width } } @@ -240,12 +296,21 @@ UM.MainWindow anchors { - left: parent.left + left: toolbar.right bottom: parent.bottom margins: UM.Theme.getSize("default_margin").width } } + // A hint for the loaded content view. Overlay items / controls can safely be placed in this area + Item { + id: mainSafeArea + anchors.left: viewOrientationControls.right + anchors.right: main.right + anchors.top: main.top + anchors.bottom: main.bottom + } + Loader { // A stage can control this area. If nothing is set, it will therefore show the 3D view. @@ -261,6 +326,12 @@ UM.MainWindow } source: UM.Controller.activeStage != null ? UM.Controller.activeStage.mainComponent : "" + + onLoaded: { + if (main.item.safeArea !== undefined){ + main.item.safeArea = Qt.binding(function() { return mainSafeArea }); + } + } } Loader @@ -340,6 +411,7 @@ UM.MainWindow PrintSetupTooltip { id: tooltip + sourceWidth: UM.Theme.getSize("print_setup_widget").width } } @@ -391,7 +463,6 @@ UM.MainWindow target: Cura.Actions.addProfile onTriggered: { - preferences.show(); preferences.setPage(4); // Create a new profile after a very short delay so the preference page has time to initiate @@ -517,7 +588,13 @@ UM.MainWindow Connections { target: Cura.Actions.toggleFullScreen - onTriggered: base.toggleFullscreen(); + onTriggered: base.toggleFullscreen() + } + + Connections + { + target: Cura.Actions.exitFullScreen + onTriggered: base.exitFullscreen() } FileDialog @@ -526,10 +603,15 @@ UM.MainWindow //: File open dialog title title: catalog.i18nc("@title:window","Open file(s)") - modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal; + modality: Qt.WindowModal selectMultiple: true nameFilters: UM.MeshFileHandler.supportedReadFileTypes; - folder: CuraApplication.getDefaultPath("dialog_load_path") + folder: + { + //Because several implementations of the file dialog only update the folder when it is explicitly set. + folder = CuraApplication.getDefaultPath("dialog_load_path"); + return CuraApplication.getDefaultPath("dialog_load_path"); + } onAccepted: { // Because several implementations of the file dialog only update the folder @@ -682,54 +764,18 @@ UM.MainWindow onTriggered: { var path = UM.Resources.getPath(UM.Resources.Preferences, ""); - if(Qt.platform.os == "windows") { + if(Qt.platform.os == "windows") + { path = path.replace(/\\/g,"/"); } Qt.openUrlExternally(path); - if(Qt.platform.os == "linux") { + if(Qt.platform.os == "linux") + { Qt.openUrlExternally(UM.Resources.getPath(UM.Resources.Resources, "")); } } } - AddMachineDialog - { - id: addMachineDialog - onMachineAdded: - { - machineActionsWizard.firstRun = addMachineDialog.firstRun - machineActionsWizard.start(id) - } - } - - // Dialog to handle first run machine actions - UM.Wizard - { - id: machineActionsWizard; - - title: catalog.i18nc("@title:window", "Add Printer") - property var machine; - - function start(id) - { - var actions = Cura.MachineActionManager.getFirstStartActions(id) - resetPages() // Remove previous pages - - for (var i = 0; i < actions.length; i++) - { - actions[i].displayItem.reset() - machineActionsWizard.appendPage(actions[i].displayItem, catalog.i18nc("@title", actions[i].label)); - } - - //Only start if there are actions to perform. - if (actions.length > 0) - { - machineActionsWizard.currentPage = 0; - show() - } - } - } - MessageDialog { id: messageDialog @@ -773,10 +819,37 @@ UM.MainWindow } } + Cura.WizardDialog + { + id: addMachineDialog + title: catalog.i18nc("@title:window", "Add Printer") + model: CuraApplication.getAddPrinterPagesModel() + progressBarVisible: false + } + + Cura.WizardDialog + { + id: whatsNewDialog + title: catalog.i18nc("@title:window", "What's New") + model: CuraApplication.getWhatsNewPagesModel() + progressBarVisible: false + } + + Connections + { + target: Cura.Actions.whatsNew + onTriggered: whatsNewDialog.show() + } + Connections { target: Cura.Actions.addMachine - onTriggered: addMachineDialog.visible = true; + onTriggered: + { + // Make sure to show from the first page when the dialog shows up. + addMachineDialog.resetModelState() + addMachineDialog.show() + } } AboutDialog @@ -790,37 +863,17 @@ UM.MainWindow onTriggered: aboutDialog.visible = true; } - Connections - { - target: CuraApplication - onRequestAddPrinter: - { - addMachineDialog.visible = true - addMachineDialog.firstRun = false - } - } - Timer { - id: startupTimer; - interval: 100; - repeat: false; - running: true; + id: startupTimer + interval: 100 + repeat: false + running: true onTriggered: { - if(!base.visible) + if (!base.visible) { - base.visible = true; - } - - // check later if the user agreement dialog has been closed - if (CuraApplication.needToShowUserAgreement) - { - restart(); - } - else if(Cura.MachineManager.activeMachine == null) - { - addMachineDialog.open(); + base.visible = true } } } diff --git a/resources/qml/Dialogs/AboutDialog.qml b/resources/qml/Dialogs/AboutDialog.qml index 584903dd60..a5622aa2c9 100644 --- a/resources/qml/Dialogs/AboutDialog.qml +++ b/resources/qml/Dialogs/AboutDialog.qml @@ -41,6 +41,7 @@ UM.Dialog source: UM.Theme.getImage("logo") sourceSize.width: width sourceSize.height: height + fillMode: Image.PreserveAspectFit anchors.top: parent.top anchors.topMargin: parent.topPadding diff --git a/resources/qml/Dialogs/AddMachineDialog.qml b/resources/qml/Dialogs/AddMachineDialog.qml deleted file mode 100644 index f00359869c..0000000000 --- a/resources/qml/Dialogs/AddMachineDialog.qml +++ /dev/null @@ -1,320 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 - -import QtQuick.Controls.Styles 1.1 - -import UM 1.2 as UM -import Cura 1.0 as Cura - - -UM.Dialog -{ - id: base - title: catalog.i18nc("@title:window", "Add Printer") - property bool firstRun: false - property string preferredCategory: "Ultimaker" - property string activeCategory: preferredCategory - - minimumWidth: UM.Theme.getSize("modal_window_minimum").width - minimumHeight: UM.Theme.getSize("modal_window_minimum").height - width: minimumWidth - height: minimumHeight - - flags: - { - var window_flags = Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint; - if (Cura.MachineManager.activeDefinitionId !== "") //Disallow closing the window if we have no active printer yet. You MUST add a printer. - { - window_flags |= Qt.WindowCloseButtonHint; - } - return window_flags; - } - - onVisibilityChanged: - { - // Reset selection and machine name - if (visible) { - activeCategory = preferredCategory; - machineList.currentIndex = 0; - machineName.text = getMachineName(); - } - } - - signal machineAdded(string id) - - function getMachineName() - { - if (machineList.model.getItem(machineList.currentIndex) != undefined) - { - return machineList.model.getItem(machineList.currentIndex).name; - } - return ""; - } - - function getMachineMetaDataEntry(key) - { - if (machineList.model.getItem(machineList.currentIndex) != undefined) - { - return machineList.model.getItem(machineList.currentIndex).metadata[key]; - } - return ""; - } - - Label - { - id: titleLabel - - anchors - { - top: parent.top - left: parent.left - topMargin: UM.Theme.getSize("default_margin").height - } - text: catalog.i18nc("@title:tab", "Add a printer to Cura") - - font.pointSize: 18 - } - - Label - { - id: captionLabel - anchors - { - left: parent.left - top: titleLabel.bottom - topMargin: UM.Theme.getSize("default_margin").height - } - text: catalog.i18nc("@title:tab", "Select the printer you want to use from the list below.\n\nIf your printer is not in the list, use the \"Custom FFF Printer\" from the \"Custom\" category and adjust the settings to match your printer in the next dialog.") - width: parent.width - wrapMode: Text.WordWrap - } - - ScrollView - { - id: machinesHolder - - anchors - { - top: captionLabel.visible ? captionLabel.bottom : parent.top; - topMargin: captionLabel.visible ? UM.Theme.getSize("default_margin").height : 0; - bottom: addPrinterButton.top; - bottomMargin: UM.Theme.getSize("default_margin").height - } - - width: Math.round(parent.width * 0.45) - - frameVisible: true; - Rectangle - { - parent: viewport - anchors.fill: parent - color: palette.light - } - - ListView - { - id: machineList - - model: UM.DefinitionContainersModel - { - id: machineDefinitionsModel - filter: { "visible": true } - sectionProperty: "category" - preferredSectionValue: preferredCategory - } - - section.property: "section" - section.delegate: Button - { - id: machineSectionButton - text: section - width: machineList.width - style: ButtonStyle - { - background: Item - { - height: UM.Theme.getSize("standard_list_lineheight").height - width: machineList.width - } - label: Label - { - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("standard_arrow").width + UM.Theme.getSize("default_margin").width - text: control.text - color: palette.windowText - font.bold: true - UM.RecolorImage - { - id: downArrow - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.left - anchors.rightMargin: UM.Theme.getSize("default_margin").width - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - sourceSize.height: width - color: palette.windowText - source: base.activeCategory == section ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_right") - } - } - } - - onClicked: - { - base.activeCategory = section; - if (machineList.model.getItem(machineList.currentIndex).section != section) - { - // Find the first machine from this section - for(var i = 0; i < machineList.model.count; i++) - { - var item = machineList.model.getItem(i); - if (item.section == section) - { - machineList.currentIndex = i; - break; - } - } - } - machineName.text = getMachineName(); - } - } - - delegate: RadioButton - { - id: machineButton - - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("standard_list_lineheight").width - - opacity: 1; - height: UM.Theme.getSize("standard_list_lineheight").height; - - checked: ListView.isCurrentItem; - - exclusiveGroup: printerGroup; - - text: model.name - - onClicked: - { - ListView.view.currentIndex = index; - machineName.text = getMachineName() - } - - states: State - { - name: "collapsed"; - when: base.activeCategory != model.section; - - PropertyChanges { target: machineButton; opacity: 0; height: 0; } - } - } - } - } - - Column - { - anchors - { - top: machinesHolder.top - left: machinesHolder.right - right: parent.right - leftMargin: UM.Theme.getSize("default_margin").width - } - - spacing: UM.Theme.getSize("default_margin").height - Label - { - width: parent.width - wrapMode: Text.WordWrap - text: getMachineName() - font.pointSize: 16 - elide: Text.ElideRight - } - Grid - { - width: parent.width - columns: 2 - rowSpacing: UM.Theme.getSize("default_lining").height - columnSpacing: UM.Theme.getSize("default_margin").width - verticalItemAlignment: Grid.AlignVCenter - - Label - { - wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Manufacturer") - } - Label - { - width: Math.floor(parent.width * 0.65) - wrapMode: Text.WordWrap - text: getMachineMetaDataEntry("manufacturer") - } - Label - { - wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Author") - } - Label - { - width: Math.floor(parent.width * 0.75) - wrapMode: Text.WordWrap - text: getMachineMetaDataEntry("author") - } - Label - { - wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Printer Name") - } - TextField - { - id: machineName - text: getMachineName() - width: Math.floor(parent.width * 0.75) - maximumLength: 40 - //validator: Cura.MachineNameValidator { } //TODO: Gives a segfault in PyQt5.6. For now, we must use a signal on text changed. - validator: RegExpValidator - { - regExp: { - machineName.machine_name_validator.machineNameRegex - } - } - property var machine_name_validator: Cura.MachineNameValidator { } - } - } - } - - Button - { - id: addPrinterButton - text: catalog.i18nc("@action:button", "Add Printer") - anchors.bottom: parent.bottom - anchors.right: parent.right - onClicked: addMachine() - } - - onAccepted: addMachine() - - function addMachine() - { - base.visible = false - var item = machineList.model.getItem(machineList.currentIndex); - Cura.MachineManager.addMachine(machineName.text, item.id) - base.machineAdded(item.id) // Emit signal that the user added a machine. - } - - Item - { - UM.I18nCatalog - { - id: catalog; - name: "cura"; - } - SystemPalette { id: palette } - ExclusiveGroup { id: printerGroup; } - } -} diff --git a/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml b/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml index 6b1856723b..8cdaeea5fa 100644 --- a/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml +++ b/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml @@ -18,15 +18,15 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Open project file") - width: 450 * screenScaleFactor - height: 150 * screenScaleFactor + width: UM.Theme.getSize("small_popup_dialog").width + height: UM.Theme.getSize("small_popup_dialog").height maximumHeight: height maximumWidth: width minimumHeight: maximumHeight minimumWidth: maximumWidth - modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal + modality: Qt.WindowModal property var fileUrl @@ -53,7 +53,7 @@ UM.Dialog UM.Preferences.setValue("cura/choice_on_open_project", "open_as_model") } - CuraApplication.readLocalFile(base.fileUrl, true) + CuraApplication.readLocalFile(base.fileUrl, "open_as_model") var meshName = backgroundItem.getMeshName(base.fileUrl.toString()) backgroundItem.hasMesh(decodeURIComponent(meshName)) diff --git a/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml index afa9fda0bd..a7701cf059 100644 --- a/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml +++ b/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml @@ -14,8 +14,8 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Discard or Keep changes") - width: 800 * screenScaleFactor - height: 400 * screenScaleFactor + width: UM.Theme.getSize("popup_dialog").width + height: UM.Theme.getSize("popup_dialog").height property var changesModel: Cura.UserChangesModel{ id: userChangesModel} onVisibilityChanged: { @@ -100,7 +100,6 @@ UM.Dialog { text: styleData.value font: UM.Theme.getFont("system") - color: UM.Theme.getColor("setting_control_disabled_text") } } diff --git a/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml b/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml index 3dcd4b6236..187578f12c 100644 --- a/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml +++ b/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml @@ -25,7 +25,7 @@ UM.Dialog minimumHeight: height minimumWidth: width - modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal; + modality: Qt.WindowModal property var fileUrls: [] property int spacerHeight: 10 * screenScaleFactor @@ -42,7 +42,7 @@ UM.Dialog { for (var i in fileUrls) { - CuraApplication.readLocalFile(fileUrls[i], true); + CuraApplication.readLocalFile(fileUrls[i], "open_as_model"); } var meshName = backgroundItem.getMeshName(fileUrls[0].toString()); diff --git a/resources/qml/Dialogs/WorkspaceSummaryDialog.qml b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml index 35630bd19b..6fe9607274 100644 --- a/resources/qml/Dialogs/WorkspaceSummaryDialog.qml +++ b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml @@ -1,10 +1,10 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.1 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 +import QtQuick 2.10 +import QtQuick.Controls 1.4 +import QtQuick.Layouts 1.3 +import QtQuick.Window 2.2 import UM 1.2 as UM import Cura 1.0 as Cura @@ -50,7 +50,7 @@ UM.Dialog UM.SettingDefinitionsModel { id: definitionsModel - containerId: base.visible ? Cura.MachineManager.activeDefinitionId: "" + containerId: base.visible ? Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" : "" showAll: true exclude: ["command_line_settings"] showAncestors: true @@ -123,40 +123,47 @@ UM.Dialog } Label { - text: Cura.MachineManager.activeMachineNetworkGroupName != "" ? Cura.MachineManager.activeMachineNetworkGroupName : Cura.MachineManager.activeMachineName + text: + { + if(Cura.MachineManager.activeMachineNetworkGroupName != "") + { + return Cura.MachineManager.activeMachineNetworkGroupName + } + if(Cura.MachineManager.activeMachine) + { + return Cura.MachineManager.activeMachine.name + } + return "" + } width: Math.floor(scroll.width / 3) | 0 } } } - Row - { - visible: Cura.MachineManager.hasVariantBuildplates - width: parent.width - height: childrenRect.height - Label - { - text: catalog.i18nc("@action:label", "Build plate") - width: Math.floor(scroll.width / 3) | 0 - } - Label - { - text: Cura.MachineManager.activeVariantBuildplateName - width: Math.floor(scroll.width / 3) | 0 - } - } Repeater { width: parent.width height: childrenRect.height - model: Cura.MachineManager.currentExtruderPositions + model: Cura.MachineManager.activeMachine.extruderList delegate: Column { height: childrenRect.height width: parent.width - Label + property string variantName: + { + var extruder = modelData + var variant_name = extruder.variant.name + return (variant_name !== undefined) ? variant_name : "" + } + property string materialName: + { + var extruder = modelData + var material_name = extruder.material.name + return (material_name !== undefined) ? material_name : "" + } + Label { text: { - var extruder = Number(modelData) + var extruder = Number(modelData.position) var extruder_id = "" if(!isNaN(extruder)) { @@ -164,25 +171,43 @@ UM.Dialog } else { - extruder_id = modelData + extruder_id = modelData.position } return catalog.i18nc("@action:label", "Extruder %1").arg(extruder_id) } font.bold: true + enabled: modelData.isEnabled } Row { width: parent.width height: childrenRect.height + Label { - text: catalog.i18nc("@action:label", "%1 & material").arg(Cura.MachineManager.activeDefinitionVariantsName) + text: + { + if(variantName !== "" && materialName !== "") + { + return catalog.i18nc("@action:label", "%1 & material").arg(Cura.MachineManager.activeDefinitionVariantsName) + } + return catalog.i18nc("@action:label", "Material") + } width: Math.floor(scroll.width / 3) | 0 + enabled: modelData.isEnabled } Label { - text: Cura.MachineManager.activeVariantNames[modelData] + ", " + Cura.MachineManager.getExtruder(modelData).material.name + text: + { + if(variantName !== "" && materialName !== "") + { + return variantName + ", " + materialName + } + return materialName + } + enabled: modelData.isEnabled width: Math.floor(scroll.width / 3) | 0 } } @@ -226,30 +251,21 @@ UM.Dialog text: Cura.MachineManager.activeQualityOrQualityChangesName width: Math.floor(scroll.width / 3) | 0 } + } - } - } - Column - { - width: parent.width - height: childrenRect.height - Label - { - text: catalog.i18nc("@action:label", "Setting visibility") - font.bold: true - } + // Intent Row { width: parent.width height: childrenRect.height Label { - text: catalog.i18nc("@action:label", "Visible settings:") + text: catalog.i18nc("@action:label", "Intent") width: Math.floor(scroll.width / 3) | 0 } Label { - text: catalog.i18nc("@action:label", "%1 out of %2" ).arg(definitionsModel.visibleCount).arg(Cura.MachineManager.totalNumberOfSettings) + text: Cura.MachineManager.activeIntentCategory width: Math.floor(scroll.width / 3) | 0 } } diff --git a/resources/qml/EmptyViewMenuComponent.qml b/resources/qml/EmptyViewMenuComponent.qml new file mode 100644 index 0000000000..10a50ea023 --- /dev/null +++ b/resources/qml/EmptyViewMenuComponent.qml @@ -0,0 +1,28 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtGraphicalEffects 1.0 // For the dropshadow + +import UM 1.2 as UM + +// Empty placeholder +Rectangle +{ + color: UM.Theme.getColor("disabled") + + DropShadow + { + id: shadow + // Don't blur the shadow + radius: 0 + anchors.fill: parent + source: parent + verticalOffset: 2 + visible: true + color: UM.Theme.getColor("action_button_shadow") + // Should always be drawn behind the background. + z: parent.z - 1 + } +} diff --git a/resources/qml/ExpandableComponent.qml b/resources/qml/ExpandableComponent.qml index 025c63d754..b3fe3fa763 100644 --- a/resources/qml/ExpandableComponent.qml +++ b/resources/qml/ExpandableComponent.qml @@ -41,6 +41,7 @@ Item property alias disabledText: disabledLabel.text // Defines the alignment of the content with respect of the headerItem, by default to the right + // Note that this only has an effect if the panel is draggable property int contentAlignment: ExpandableComponent.ContentAlignment.AlignRight // How much spacing is needed around the contentItem @@ -78,11 +79,19 @@ Item property int shadowOffset: 2 + // Prefix used for the dragged position preferences. Preferences not used if empty. Don't translate! + property string dragPreferencesNamePrefix: "" + function toggleContent() { contentContainer.visible = !expanded } + function updateDragPosition() + { + contentContainer.trySetPosition(contentContainer.x, contentContainer.y); + } + // Add this binding since the background color is not updated otherwise Binding { @@ -102,7 +111,8 @@ Item { if (!base.enabled && expanded) { - toggleContent() + toggleContent(); + updateDragPosition(); } } } @@ -196,17 +206,19 @@ Item Cura.RoundedRectangle { id: contentContainer + property string dragPreferencesNameX: "_xpos" + property string dragPreferencesNameY: "_ypos" visible: false width: childrenRect.width height: childrenRect.height // Ensure that the content is located directly below the headerItem - y: background.height + base.shadowOffset + base.contentSpacingY + y: dragPreferencesNamePrefix === "" ? (background.height + base.shadowOffset + base.contentSpacingY) : UM.Preferences.getValue(dragPreferencesNamePrefix + dragPreferencesNameY) // Make the content aligned with the rest, using the property contentAlignment to decide whether is right or left. // In case of right alignment, the 3x padding is due to left, right and padding between the button & text. - x: contentAlignment == ExpandableComponent.ContentAlignment.AlignRight ? -width + collapseButton.width + headerItemLoader.width + 3 * background.padding : 0 + x: dragPreferencesNamePrefix === "" ? (contentAlignment == ExpandableComponent.ContentAlignment.AlignRight ? -width + collapseButton.width + headerItemLoader.width + 3 * background.padding : 0) : UM.Preferences.getValue(dragPreferencesNamePrefix + dragPreferencesNameX) cornerSide: Cura.RoundedRectangle.Direction.All color: contentBackgroundColor @@ -214,6 +226,25 @@ Item border.color: UM.Theme.getColor("lining") radius: UM.Theme.getSize("default_radius").width + function trySetPosition(posNewX, posNewY) + { + var margin = UM.Theme.getSize("narrow_margin"); + var minPt = base.mapFromItem(null, margin.width, margin.height); + var maxPt = base.mapFromItem(null, + CuraApplication.appWidth() - (contentContainer.width + margin.width), + CuraApplication.appHeight() - (contentContainer.height + margin.height)); + var initialY = background.height + base.shadowOffset + margin.height; + + contentContainer.x = Math.max(minPt.x, Math.min(maxPt.x, posNewX)); + contentContainer.y = Math.max(initialY, Math.min(maxPt.y, posNewY)); + + if (dragPreferencesNamePrefix !== "") + { + UM.Preferences.setValue(dragPreferencesNamePrefix + dragPreferencesNameX, contentContainer.x); + UM.Preferences.setValue(dragPreferencesNamePrefix + dragPreferencesNameY, contentContainer.y); + } + } + ExpandableComponentHeader { id: contentHeader @@ -225,6 +256,65 @@ Item left: parent.left } + MouseArea + { + id: dragRegion + cursorShape: Qt.SizeAllCursor + anchors + { + top: parent.top + bottom: parent.bottom + left: parent.left + right: contentHeader.xPosCloseButton + } + property var clickPos: Qt.point(0, 0) + property bool dragging: false + onPressed: + { + clickPos = Qt.point(mouse.x, mouse.y); + dragging = true + } + + onPositionChanged: + { + if(dragging) + { + var delta = Qt.point(mouse.x - clickPos.x, mouse.y - clickPos.y); + if (delta.x !== 0 || delta.y !== 0) + { + contentContainer.trySetPosition(contentContainer.x + delta.x, contentContainer.y + delta.y); + } + } + } + onReleased: + { + dragging = false + } + + onDoubleClicked: + { + dragging = false + contentContainer.trySetPosition(0, 0); + } + + Connections + { + target: UM.Preferences + onPreferenceChanged: + { + if + ( + preference !== "general/window_height" && + preference !== "general/window_width" && + preference !== "general/window_state" + ) + { + return; + } + contentContainer.trySetPosition(contentContainer.x, contentContainer.y); + } + } + } } Control diff --git a/resources/qml/ExpandableComponentHeader.qml b/resources/qml/ExpandableComponentHeader.qml index 94066340e3..cd6ccfb825 100644 --- a/resources/qml/ExpandableComponentHeader.qml +++ b/resources/qml/ExpandableComponentHeader.qml @@ -13,6 +13,7 @@ Cura.RoundedRectangle id: header property alias headerTitle: headerLabel.text + property alias xPosCloseButton: closeButton.left height: UM.Theme.getSize("expandable_component_content_header").height color: UM.Theme.getColor("secondary") diff --git a/resources/qml/ExpandablePopup.qml b/resources/qml/ExpandablePopup.qml index 2d2665373e..18255939ab 100644 --- a/resources/qml/ExpandablePopup.qml +++ b/resources/qml/ExpandablePopup.qml @@ -225,6 +225,7 @@ Item border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") radius: UM.Theme.getSize("default_radius").width + height: contentItem.implicitHeight || content.height } contentItem: Item {} diff --git a/resources/qml/FPSItem.qml b/resources/qml/FPSItem.qml new file mode 100644 index 0000000000..9f7dfe8746 --- /dev/null +++ b/resources/qml/FPSItem.qml @@ -0,0 +1,81 @@ +import QtQuick 2.0 +import QtQuick.Window 2.2 +import UM 1.3 as UM + +// This is an QML item that shows the FPS and a running average of the FPS. +Item +{ + id: base + property alias backgroundColor: background.color + property alias textColor: fpsText.color + + property int numMeasurementsToAverage: 3 + + width: fpsText.contentWidth + UM.Theme.getSize("default_margin").height + height: fpsText.contentHeight + UM.Theme.getSize("default_margin").height + + Rectangle + { + id: background + + // We use a trick here to figure out how often we can get a redraw triggered. + // By adding a rotating rectangle, we can increase a counter by one every time we get notified. + // After that, we trigger a timer once every second to look at that number. + property int frameCounter: 0 + property int averageFrameCounter: 0 + property int counter: 0 + property int fps: 0 + property real averageFps: 0.0 + + color: UM.Theme.getColor("primary") + + width: parent.width + height: parent.height + + Rectangle + { + width: 0 + height: 0 + NumberAnimation on rotation + { + from: 0 + to: 360 + duration: 1000 + loops: Animation.Infinite + } + onRotationChanged: parent.frameCounter++; + visible: false + } + + Text + { + id: fpsText + anchors.fill:parent + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") + text: "Ø " + parent.averageFps + " | " + parent.fps + " fps" + } + + Timer + { + interval: 1000 + repeat: true + running: true + onTriggered: + { + parent.averageFrameCounter += parent.frameCounter; + parent.fps = parent.frameCounter; + parent.counter++; + parent.frameCounter = 0; + if (parent.counter >= base.numMeasurementsToAverage) + { + parent.averageFps = (parent.averageFrameCounter / parent.counter).toFixed(2) + parent.averageFrameCounter = 0; + parent.counter = 0; + } + } + } + } +} \ No newline at end of file diff --git a/resources/qml/IconWithText.qml b/resources/qml/IconWithText.qml index 24b6dc7fe2..b9fe873b25 100644 --- a/resources/qml/IconWithText.qml +++ b/resources/qml/IconWithText.qml @@ -19,6 +19,7 @@ Item property alias color: label.color property alias text: label.text property alias font: label.font + property alias elide: label.elide property real margin: UM.Theme.getSize("narrow_margin").width // These properties can be used in combination with layouts. diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 144616c22d..63ccbc336a 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -65,7 +65,7 @@ Item height: UM.Theme.getSize("save_button_specs_icons").height sourceSize.width: width sourceSize.height: width - color: control.hovered ? UM.Theme.getColor("text_scene_hover") : UM.Theme.getColor("text_scene") + color: control.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text") source: UM.Theme.getIcon("pencil") } } diff --git a/resources/qml/LabelBar.qml b/resources/qml/LabelBar.qml new file mode 100644 index 0000000000..007c5f1f54 --- /dev/null +++ b/resources/qml/LabelBar.qml @@ -0,0 +1,65 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 + +import UM 1.2 as UM + +// The labelBar shows a set of labels that are evenly spaced from one another. +// The first item is aligned to the left, the last is aligned to the right. +// It's intended to be used together with RadioCheckBar. As such, it needs +// to know what the used itemSize is, so it can ensure the labels are aligned correctly. +Item +{ + id: base + property var model: null + property string modelKey: "" + property int itemSize: 14 + height: childrenRect.height + RowLayout + { + anchors.left: parent.left + anchors.right: parent.right + spacing: 0 + Repeater + { + id: repeater + model: base.model + + Item + { + Layout.fillWidth: true + Layout.maximumWidth: Math.round(index + 1 === repeater.count || repeater.count <= 1 ? itemSize : base.width / (repeater.count - 1)) + height: label.height + + Label + { + id: label + text: model[modelKey] + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + height: contentHeight + anchors + { + // Some magic to ensure that the items are aligned properly. + // We want the following: + // First item should be aligned to the left, no margin. + // Last item should be aligned to the right, no margin. + // The middle item(s) should be aligned to the center of the "item" it's showing (hence half the itemsize as offset). + // We want the center of the label to align with the center of the item, so we negatively offset by half the contentWidth + right: index + 1 === repeater.count ? parent.right: undefined + left: index + 1 === repeater.count || index === 0 ? undefined: parent.left + leftMargin: Math.round((itemSize - contentWidth) * 0.5) + + // For some reason, the last label in the row gets misaligned with Qt 5.10. This lines seems to + // fix it. + verticalCenter: parent.verticalCenter + } + } + } + } + } +} diff --git a/resources/qml/MachineSettings/ComboBoxWithOptions.qml b/resources/qml/MachineSettings/ComboBoxWithOptions.qml new file mode 100644 index 0000000000..715a6e9224 --- /dev/null +++ b/resources/qml/MachineSettings/ComboBoxWithOptions.qml @@ -0,0 +1,140 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + +import "../Widgets" + + +// +// ComboBox with dropdown options in the Machine Settings dialog. +// +UM.TooltipArea +{ + id: comboBoxWithOptions + + UM.I18nCatalog { id: catalog; name: "cura"; } + + height: childrenRect.height + width: childrenRect.width + text: tooltipText + + property int controlWidth: UM.Theme.getSize("setting_control").width + property int controlHeight: UM.Theme.getSize("setting_control").height + + property alias containerStackId: propertyProvider.containerStackId + property alias settingKey: propertyProvider.key + property alias settingStoreIndex: propertyProvider.storeIndex + + property alias labelText: fieldLabel.text + property alias labelFont: fieldLabel.font + property alias labelWidth: fieldLabel.width + property alias optionModel: comboBox.model + + property string tooltipText: propertyProvider.properties.description + + // callback functions + property var forceUpdateOnChangeFunction: dummy_func + property var afterOnEditingFinishedFunction: dummy_func + property var setValueFunction: null + + // a dummy function for default property values + function dummy_func() {} + + UM.SettingPropertyProvider + { + id: propertyProvider + watchedProperties: [ "value", "options", "description" ] + } + + Label + { + id: fieldLabel + anchors.left: parent.left + anchors.verticalCenter: comboBox.verticalCenter + visible: text != "" + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + ListModel + { + id: defaultOptionsModel + + function updateModel() + { + clear() + // Options come in as a string-representation of an OrderedDict + var options = propertyProvider.properties.options.match(/^OrderedDict\(\[\((.*)\)\]\)$/) + if (options) + { + options = options[1].split("), (") + for (var i = 0; i < options.length; i++) + { + var option = options[i].substring(1, options[i].length - 1).split("', '") + append({ text: option[1], value: option[0] }) + } + } + } + + Component.onCompleted: updateModel() + } + + // Remake the model when the model is bound to a different container stack + Connections + { + target: propertyProvider + onContainerStackChanged: defaultOptionsModel.updateModel() + onIsValueUsedChanged: defaultOptionsModel.updateModel() + } + + Cura.ComboBox + { + id: comboBox + anchors.left: fieldLabel.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + width: comboBoxWithOptions.controlWidth + height: comboBoxWithOptions.controlHeight + model: defaultOptionsModel + textRole: "text" + + currentIndex: + { + var currentValue = propertyProvider.properties.value + var index = 0 + for (var i = 0; i < model.count; i++) + { + if (model.get(i).value == currentValue) + { + index = i + break + } + } + return index + } + + onActivated: + { + var newValue = model.get(index).value + if (propertyProvider.properties.value != newValue) + { + if (setValueFunction !== null) + { + setValueFunction(newValue) + } + else + { + propertyProvider.setPropertyValue("value", newValue) + } + forceUpdateOnChangeFunction() + afterOnEditingFinishedFunction() + } + } + } +} diff --git a/resources/qml/MachineSettings/GcodeTextArea.qml b/resources/qml/MachineSettings/GcodeTextArea.qml new file mode 100644 index 0000000000..a5c1c4ca04 --- /dev/null +++ b/resources/qml/MachineSettings/GcodeTextArea.qml @@ -0,0 +1,97 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// TextArea widget for editing Gcode in the Machine Settings dialog. +// +UM.TooltipArea +{ + id: control + + UM.I18nCatalog { id: catalog; name: "cura"; } + + text: tooltip + + property alias containerStackId: propertyProvider.containerStackId + property alias settingKey: propertyProvider.key + property alias settingStoreIndex: propertyProvider.storeIndex + + property string tooltip: propertyProvider.properties.description + + property alias labelText: titleLabel.text + property alias labelFont: titleLabel.font + + UM.SettingPropertyProvider + { + id: propertyProvider + watchedProperties: [ "value", "description" ] + } + + Label // Title Label + { + id: titleLabel + anchors.top: parent.top + anchors.left: parent.left + font: UM.Theme.getFont("medium_bold") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + ScrollView + { + anchors.top: titleLabel.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + + background: Rectangle + { + color: UM.Theme.getColor("main_background") + anchors.fill: parent + + border.color: + { + if (!gcodeTextArea.enabled) + { + return UM.Theme.getColor("setting_control_disabled_border") + } + if (gcodeTextArea.hovered || gcodeTextArea.activeFocus) + { + return UM.Theme.getColor("setting_control_border_highlight") + } + return UM.Theme.getColor("setting_control_border") + } + } + + TextArea + { + id: gcodeTextArea + + hoverEnabled: true + selectByMouse: true + + text: (propertyProvider.properties.value) ? propertyProvider.properties.value : "" + font: UM.Theme.getFont("fixed") + renderType: Text.NativeRendering + color: UM.Theme.getColor("text") + wrapMode: TextEdit.NoWrap + + onActiveFocusChanged: + { + if (!activeFocus) + { + propertyProvider.setPropertyValue("value", text) + } + } + } + } +} diff --git a/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml b/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml new file mode 100644 index 0000000000..9898fb2c6b --- /dev/null +++ b/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml @@ -0,0 +1,213 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// TextField widget with validation for editing numeric data in the Machine Settings dialog. +// +UM.TooltipArea +{ + id: numericTextFieldWithUnit + + UM.I18nCatalog { id: catalog; name: "cura"; } + + height: childrenRect.height + width: childrenRect.width + + property int controlWidth: UM.Theme.getSize("setting_control").width + property int controlHeight: UM.Theme.getSize("setting_control").height + + text: tooltipText + + property alias containerStackId: propertyProvider.containerStackId + property alias settingKey: propertyProvider.key + property alias settingStoreIndex: propertyProvider.storeIndex + + property alias propertyProvider: propertyProvider + property alias labelText: fieldLabel.text + property alias labelFont: fieldLabel.font + property alias labelWidth: fieldLabel.width + property alias unitText: unitLabel.text + + property alias textField: textFieldWithUnit + property alias valueText: textFieldWithUnit.text + property alias valueValidator: textFieldWithUnit.validator + property alias editingFinishedFunction: textFieldWithUnit.editingFinishedFunction + + property string tooltipText: propertyProvider.properties.description + + // whether negative value is allowed. This affects the validation of the input field. + property bool allowNegativeValue: false + // whether positive value is allowed. This affects the validation of the input field. + property bool allowPositiveValue: true + + // callback functions + property var afterOnEditingFinishedFunction: dummy_func + property var forceUpdateOnChangeFunction: dummy_func + property var setValueFunction: null + + // a dummy function for default property values + function dummy_func() {} + + + UM.SettingPropertyProvider + { + id: propertyProvider + watchedProperties: [ "value", "description" ] + } + + Label + { + id: fieldLabel + anchors.left: parent.left + anchors.verticalCenter: textFieldWithUnit.verticalCenter + visible: text != "" + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + TextField + { + id: textFieldWithUnit + anchors.left: fieldLabel.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + width: numericTextFieldWithUnit.controlWidth + height: numericTextFieldWithUnit.controlHeight + + // Background is a rounded-cornered box with filled color as state indication (normal, warning, error, etc.) + background: Rectangle + { + anchors.fill: parent + anchors.margins: Math.round(UM.Theme.getSize("default_lining").width) + radius: UM.Theme.getSize("setting_control_radius").width + + border.color: + { + if (!textFieldWithUnit.enabled) + { + return UM.Theme.getColor("setting_control_disabled_border") + } + switch (propertyProvider.properties.validationState) + { + case "ValidatorState.Exception": + case "ValidatorState.MinimumError": + case "ValidatorState.MaximumError": + return UM.Theme.getColor("setting_validation_error") + case "ValidatorState.MinimumWarning": + case "ValidatorState.MaximumWarning": + return UM.Theme.getColor("setting_validation_warning") + } + // Validation is OK. + if (textFieldWithUnit.hovered || textFieldWithUnit.activeFocus) + { + return UM.Theme.getColor("setting_control_border_highlight") + } + return UM.Theme.getColor("setting_control_border") + } + + color: + { + if (!textFieldWithUnit.enabled) + { + return UM.Theme.getColor("setting_control_disabled") + } + switch (propertyProvider.properties.validationState) + { + case "ValidatorState.Exception": + case "ValidatorState.MinimumError": + case "ValidatorState.MaximumError": + return UM.Theme.getColor("setting_validation_error_background") + case "ValidatorState.MinimumWarning": + case "ValidatorState.MaximumWarning": + return UM.Theme.getColor("setting_validation_warning_background") + case "ValidatorState.Valid": + return UM.Theme.getColor("setting_validation_ok") + default: + return UM.Theme.getColor("setting_control") + } + } + } + + hoverEnabled: true + selectByMouse: true + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + + // When the textbox gets focused by TAB, select all text + onActiveFocusChanged: + { + if (activeFocus && (focusReason == Qt.TabFocusReason || focusReason == Qt.BacktabFocusReason)) + { + selectAll() + } + } + + text: + { + const value = propertyProvider.properties.value + return value ? value : "" + } + validator: DoubleValidator + { + bottom: allowNegativeValue ? Number.NEGATIVE_INFINITY : 0 + top: allowPositiveValue ? Number.POSITIVE_INFINITY : 0 + decimals: 6 + notation: DoubleValidator.StandardNotation + } + + onEditingFinished: editingFinishedFunction() + + property var editingFinishedFunction: defaultEditingFinishedFunction + + function defaultEditingFinishedFunction() + { + if (propertyProvider && text != propertyProvider.properties.value) + { + // For some properties like the extruder-compatible material diameter, they need to + // trigger many updates, such as the available materials, the current material may + // need to be switched, etc. Although setting the diameter can be done directly via + // the provider, all the updates that need to be triggered then need to depend on + // the metadata update, a signal that can be fired way too often. The update functions + // can have if-checks to filter out the irrelevant updates, but still it incurs unnecessary + // overhead. + // The ExtruderStack class has a dedicated function for this call "setCompatibleMaterialDiameter()", + // and it triggers the diameter update signals only when it is needed. Here it is optionally + // choose to use setCompatibleMaterialDiameter() or other more specific functions that + // are available. + if (setValueFunction !== null) + { + setValueFunction(text) + } + else + { + propertyProvider.setPropertyValue("value", text) + } + forceUpdateOnChangeFunction() + afterOnEditingFinishedFunction() + } + } + + Label + { + id: unitLabel + anchors.right: parent.right + anchors.rightMargin: Math.round(UM.Theme.getSize("setting_unit_margin").width) + anchors.verticalCenter: parent.verticalCenter + text: unitText + textFormat: Text.PlainText + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + color: UM.Theme.getColor("setting_unit") + font: UM.Theme.getFont("default") + } + } +} diff --git a/resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml b/resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml new file mode 100644 index 0000000000..1bbdb3c5c5 --- /dev/null +++ b/resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml @@ -0,0 +1,99 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This is the widget for editing min and max X and Y for the print head. +// The print head is internally stored as a JSON array or array, representing a polygon of the print head. +// The polygon array is stored in the format illustrated below: +// [ [ -x_min, y_max ], +// [ -x_min, -y_min ], +// [ x_max, y_max ], +// [ x_max, -y_min ], +// ] +// +// In order to modify each field, the widget is configurable via "axisName" and "axisMinOrMax", where +// - axisName is "x" or "y" +// - axisMinOrMax is "min" or "max" +// +NumericTextFieldWithUnit +{ + id: printerHeadMinMaxField + UM.I18nCatalog { id: catalog; name: "cura" } + + containerStackId: Cura.MachineManager.activeMachine.id + settingKey: "machine_head_with_fans_polygon" + settingStoreIndex: 1 + + property string axisName: "x" + property string axisMinOrMax: "min" + property var axisValue: + { + var polygon = JSON.parse(propertyProvider.properties.value) + var item = (axisName == "x") ? 0 : 1 + var result = polygon[0][item] + var func = (axisMinOrMax == "min") ? Math.min : Math.max + for (var i = 1; i < polygon.length; i++) + { + result = func(result, polygon[i][item]) + } + return result + } + + valueValidator: DoubleValidator { + bottom: allowNegativeValue ? Number.NEGATIVE_INFINITY : 0 + top: allowPositiveValue ? Number.POSITIVE_INFINITY : 0 + decimals: 6 + notation: DoubleValidator.StandardNotation + } + + valueText: axisValue + + Connections + { + target: textField + onActiveFocusChanged: + { + // When this text field loses focus and the entered text is not valid, make sure to recreate the binding to + // show the correct value. + if (!textField.activeFocus && !textField.acceptableInput) + { + valueText = Qt.binding(function() { return printerHeadMinMaxField.axisValue }) + } + } + } + + editingFinishedFunction: function() + { + var polygon = JSON.parse(propertyProvider.properties.value) + var newValue = parseFloat(valueText.replace(',', '.')) + + if (axisName == "x") // x min/x max + { + var start_i1 = (axisMinOrMax == "min") ? 0 : 2 + polygon[start_i1][0] = newValue + polygon[start_i1 + 1][0] = newValue + } + else // y min/y max + { + var start_i1 = (axisMinOrMax == "min") ? 1 : 0 + polygon[start_i1][1] = newValue + polygon[start_i1 + 2][1] = newValue + } + var polygon_string = JSON.stringify(polygon) + if (polygon_string != propertyProvider.properties.value) + { + propertyProvider.setPropertyValue("value", polygon_string) + forceUpdateOnChangeFunction() + } + + // Recreate the binding to show the correct value. + valueText = Qt.binding(function() { return axisValue }) + } +} diff --git a/resources/qml/MachineSettings/SimpleCheckBox.qml b/resources/qml/MachineSettings/SimpleCheckBox.qml new file mode 100644 index 0000000000..49ff9fd6e9 --- /dev/null +++ b/resources/qml/MachineSettings/SimpleCheckBox.qml @@ -0,0 +1,74 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// CheckBox widget for the on/off or true/false settings in the Machine Settings Dialog. +// +UM.TooltipArea +{ + id: simpleCheckBox + + UM.I18nCatalog { id: catalog; name: "cura"; } + + property int controlHeight: UM.Theme.getSize("setting_control").height + + height: childrenRect.height + width: childrenRect.width + text: tooltip + + property alias containerStackId: propertyProvider.containerStackId + property alias settingKey: propertyProvider.key + property alias settingStoreIndex: propertyProvider.storeIndex + + property alias labelText: fieldLabel.text + property alias labelFont: fieldLabel.font + property alias labelWidth: fieldLabel.width + + property string tooltip: propertyProvider.properties.description + + // callback functions + property var forceUpdateOnChangeFunction: dummy_func + + // a dummy function for default property values + function dummy_func() {} + + UM.SettingPropertyProvider + { + id: propertyProvider + watchedProperties: [ "value", "description" ] + } + + Label + { + id: fieldLabel + anchors.left: parent.left + anchors.verticalCenter: checkBox.verticalCenter + visible: text != "" + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + Cura.CheckBox + { + id: checkBox + anchors.left: fieldLabel.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + checked: String(propertyProvider.properties.value).toLowerCase() != 'false' + height: simpleCheckBox.controlHeight + text: "" + onClicked: + { + propertyProvider.setPropertyValue("value", checked) + forceUpdateOnChangeFunction() + } + } +} diff --git a/resources/qml/MainWindow/ApplicationMenu.qml b/resources/qml/MainWindow/ApplicationMenu.qml index 2f18df8914..30e44d7d3b 100644 --- a/resources/qml/MainWindow/ApplicationMenu.qml +++ b/resources/qml/MainWindow/ApplicationMenu.qml @@ -101,6 +101,7 @@ Item MenuItem { action: Cura.Actions.documentation } MenuItem { action: Cura.Actions.reportBug } MenuSeparator { } + MenuItem { action: Cura.Actions.whatsNew } MenuItem { action: Cura.Actions.about } } } @@ -128,6 +129,7 @@ Item { CuraApplication.deleteAll(); Cura.Actions.resetProfile.trigger(); + UM.Controller.setActiveStage("PrepareStage") } } @@ -158,7 +160,7 @@ Item target: Cura.Actions.browsePackages onTriggered: { - curaExtensions.callExtensionMethod("Toolbox", "browsePackages") + curaExtensions.callExtensionMethod("Toolbox", "launch") } } } \ No newline at end of file diff --git a/resources/qml/MainWindow/MainWindowHeader.qml b/resources/qml/MainWindow/MainWindowHeader.qml index fab8010dd7..5d1a20c8b1 100644 --- a/resources/qml/MainWindow/MainWindowHeader.qml +++ b/resources/qml/MainWindow/MainWindowHeader.qml @@ -55,6 +55,7 @@ Item delegate: Button { + id: stageSelectorButton text: model.name.toUpperCase() checkable: true checked: UM.Controller.activeStage !== null && model.id == UM.Controller.activeStage.stageId @@ -117,6 +118,25 @@ Item rightMargin: UM.Theme.getSize("default_margin").width verticalCenter: parent.verticalCenter } + + Cura.NotificationIcon + { + id: marketplaceNotificationIcon + anchors + { + top: parent.top + right: parent.right + rightMargin: (-0.5 * width) | 0 + topMargin: (-0.5 * height) | 0 + } + visible: CuraApplication.getPackageManager().packagesWithUpdate.length > 0 + + labelText: + { + const itemCount = CuraApplication.getPackageManager().packagesWithUpdate.length + return itemCount > 9 ? "9+" : itemCount + } + } } AccountWidget diff --git a/resources/qml/Menus/BuildplateMenu.qml b/resources/qml/Menus/BuildplateMenu.qml deleted file mode 100644 index b924aa0879..0000000000 --- a/resources/qml/Menus/BuildplateMenu.qml +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.4 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -Menu -{ - id: menu - title: "Build plate" - - property var buildPlateModel: CuraApplication.getBuildPlateModel() - - Instantiator - { - model: menu.buildPlateModel - - MenuItem { - text: model.name - checkable: true - checked: model.name == Cura.MachineManager.globalVariantName - exclusiveGroup: group - onTriggered: { - Cura.MachineManager.setGlobalVariant(model.container_node); - } - } - - onObjectAdded: menu.insertItem(index, object) - onObjectRemoved: menu.removeItem(object) - } - - ExclusiveGroup { id: group } -} diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml index afb3aba82b..b47d77243c 100644 --- a/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml @@ -107,8 +107,9 @@ Item Cura.PrinterTypeLabel { id: printerTypeLabel - text: Cura.MachineManager.getAbbreviatedMachineName(section) + text: section anchors.verticalCenter: parent.verticalCenter //One default margin above and one below. + autoFit: true } } diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml index 1e3b48b1df..f0ada92810 100644 --- a/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml @@ -1,8 +1,8 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 -import QtQuick.Controls 2.0 +import QtQuick 2.10 +import QtQuick.Controls 2.3 import QtQuick.Controls.Styles 1.4 import UM 1.2 as UM @@ -32,7 +32,7 @@ Cura.ExpandablePopup } contentPadding: UM.Theme.getSize("default_lining").width - enabled: Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants || Cura.MachineManager.hasVariantBuildplates; //Only let it drop down if there is any configuration that you could change. + enabled: Cura.MachineManager.activeMachine.hasMaterials || Cura.MachineManager.activeMachine.hasVariants || Cura.MachineManager.activeMachine.hasVariantBuildplates; //Only let it drop down if there is any configuration that you could change. headerItem: Item { @@ -44,7 +44,7 @@ Cura.ExpandablePopup orientation: ListView.Horizontal anchors.fill: parent model: extrudersModel - visible: Cura.MachineManager.hasMaterials + visible: Cura.MachineManager.activeMachine.hasMaterials delegate: Item { @@ -86,7 +86,7 @@ Cura.ExpandablePopup { id: variantLabel - visible: Cura.MachineManager.hasVariants + visible: Cura.MachineManager.activeMachine.hasVariants text: model.variant elide: Text.ElideRight @@ -99,12 +99,14 @@ Cura.ExpandablePopup left: extruderIcon.right leftMargin: UM.Theme.getSize("default_margin").width top: typeAndBrandNameLabel.bottom + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width } } } } - //Placeholder text if there is a configuration to select but no materials (so we can't show the materials per extruder). + // Placeholder text if there is a configuration to select but no materials (so we can't show the materials per extruder). Label { text: catalog.i18nc("@label", "Select configuration") @@ -113,7 +115,7 @@ Cura.ExpandablePopup color: UM.Theme.getColor("text") renderType: Text.NativeRendering - visible: !Cura.MachineManager.hasMaterials && (Cura.MachineManager.hasVariants || Cura.MachineManager.hasVariantBuildplates) + visible: !Cura.MachineManager.activeMachine.hasMaterials && (Cura.MachineManager.activeMachine.hasVariants || Cura.MachineManager.activeMachine.hasVariantBuildplates) anchors { @@ -138,7 +140,7 @@ Cura.ExpandablePopup onVisibleChanged: { - is_connected = Cura.MachineManager.activeMachineHasRemoteConnection && Cura.MachineManager.printerConnected && Cura.MachineManager.printerOutputDevices[0].uniqueConfigurations.length > 0 //Re-evaluate. + is_connected = Cura.MachineManager.activeMachine.hasRemoteConnection && Cura.MachineManager.printerConnected && Cura.MachineManager.printerOutputDevices[0].uniqueConfigurations.length > 0 //Re-evaluate. // If the printer is not connected or does not have configurations, we switch always to the custom mode. If is connected instead, the auto mode // or the previous state is selected @@ -175,59 +177,6 @@ Cura.ExpandablePopup } } - Item - { - height: visible ? childrenRect.height: 0 - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - width: childrenRect.width + UM.Theme.getSize("default_margin").width - visible: popupItem.configuration_method == ConfigurationMenu.ConfigurationMethod.Custom - UM.RecolorImage - { - id: externalLinkIcon - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - height: materialInfoLabel.height - width: height - sourceSize.height: width - color: UM.Theme.getColor("text_link") - source: UM.Theme.getIcon("external_link") - } - - Label - { - id: materialInfoLabel - wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "See the material compatibility chart") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text_link") - linkColor: UM.Theme.getColor("text_link") - anchors.left: externalLinkIcon.right - anchors.leftMargin: UM.Theme.getSize("narrow_margin").width - renderType: Text.NativeRendering - - MouseArea - { - anchors.fill: parent - hoverEnabled: true - onClicked: - { - // open the material URL with web browser - var url = "https://ultimaker.com/incoming-links/cura/material-compatibilty" - Qt.openUrlExternally(url) - } - onEntered: - { - materialInfoLabel.font.underline = true - } - onExited: - { - materialInfoLabel.font.underline = false - } - } - } - } - Rectangle { id: separator diff --git a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml index f11047c2c6..65f5bcce8c 100644 --- a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml +++ b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml @@ -70,8 +70,8 @@ Item OldControls.ToolButton { id: printerTypeSelector - text: Cura.MachineManager.activeMachineDefinitionName - tooltip: Cura.MachineManager.activeMachineDefinitionName + text: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.definition.name: "" + tooltip: text height: UM.Theme.getSize("print_setup_big_item").height width: Math.round(parent.width * 0.7) + UM.Theme.getSize("default_margin").width anchors.right: parent.right @@ -124,6 +124,15 @@ Item } } + // Can't use 'item: ...activeExtruderIndex' directly apparently, see also the comment on the previous block. + onVisibleChanged: + { + if (tabBar.visible) + { + tabBar.setCurrentIndex(Cura.ExtruderManager.activeExtruderIndex); + } + } + //When the model of the extruders is rebuilt, the list of extruders is briefly emptied and rebuilt. //This causes the currentIndex of the tab to be in an invalid position which resets it to 0. //Therefore we need to change it back to what it was: The active extruder index. @@ -192,11 +201,11 @@ Item return paddedWidth - textWidth - UM.Theme.getSize("print_setup_big_item").height * 0.5 - UM.Theme.getSize("default_margin").width } } - property string instructionLink:Cura.ContainerManager.getContainerMetaDataEntry(Cura.MachineManager.activeStack.material.id, "instruction_link", "") + property string instructionLink: Cura.MachineManager.activeStack != null ? Cura.ContainerManager.getContainerMetaDataEntry(Cura.MachineManager.activeStack.material.id, "instruction_link", ""): "" Row { - height: visible ? childrenRect.height : 0 + height: visible ? UM.Theme.getSize("setting_control").height : 0 visible: extrudersModel.count > 1 // If there is only one extruder, there is no point to enable/disable that. Label @@ -212,9 +221,10 @@ Item OldControls.CheckBox { + id: enabledCheckbox checked: Cura.MachineManager.activeStack != null ? Cura.MachineManager.activeStack.isEnabled : false enabled: !checked || Cura.MachineManager.numberExtrudersEnabled > 1 //Disable if it's the last enabled extruder. - height: UM.Theme.getSize("setting_control").height + height: parent.height style: UM.Theme.styles.checkbox /* Use a MouseArea to process the click on this checkbox. @@ -233,8 +243,8 @@ Item Row { - height: visible ? childrenRect.height: 0 - visible: Cura.MachineManager.hasMaterials + height: visible ? UM.Theme.getSize("print_setup_big_item").height : 0 + visible: Cura.MachineManager.activeMachine.hasMaterials Label { @@ -251,20 +261,22 @@ Item { id: materialSelection - property bool valueError: Cura.MachineManager.activeStack != null ? Cura.ContainerManager.getContainerMetaDataEntry(Cura.MachineManager.activeStack.material.id, "compatible", "") != "True" : true + property bool valueError: Cura.MachineManager.activeStack !== null ? Cura.ContainerManager.getContainerMetaDataEntry(Cura.MachineManager.activeStack.material.id, "compatible", "") !== "True" : true property bool valueWarning: !Cura.MachineManager.isActiveQualitySupported - text: Cura.MachineManager.activeStack != null ? Cura.MachineManager.activeStack.material.name : "" + text: Cura.MachineManager.activeStack !== null ? Cura.MachineManager.activeStack.material.name : "" tooltip: text + enabled: enabledCheckbox.checked width: selectors.controlWidth - height: UM.Theme.getSize("print_setup_big_item").height + height: parent.height style: UM.Theme.styles.print_setup_header_button activeFocusOnPress: true menu: Cura.MaterialMenu { extruderIndex: Cura.ExtruderManager.activeExtruderIndex + updateModels: materialSelection.visible } } Item @@ -292,8 +304,8 @@ Item Row { - height: visible ? childrenRect.height: 0 - visible: Cura.MachineManager.hasVariants + height: visible ? UM.Theme.getSize("print_setup_big_item").height : 0 + visible: Cura.MachineManager.activeMachine.hasVariants Label { @@ -309,12 +321,13 @@ Item OldControls.ToolButton { id: variantSelection - text: Cura.MachineManager.activeVariantName - tooltip: Cura.MachineManager.activeVariantName - height: UM.Theme.getSize("print_setup_big_item").height + text: Cura.MachineManager.activeStack != null ? Cura.MachineManager.activeStack.variant.name : "" + tooltip: text + height: parent.height width: selectors.controlWidth style: UM.Theme.styles.print_setup_header_button - activeFocusOnPress: true; + activeFocusOnPress: true + enabled: enabledCheckbox.checked menu: Cura.NozzleMenu { extruderIndex: Cura.ExtruderManager.activeExtruderIndex } } diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 955ac89693..df58ea6636 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -29,6 +29,7 @@ Menu MenuItem { id: saveWorkspaceMenu + shortcut: StandardKey.Save text: catalog.i18nc("@title:menu menubar:file", "&Save...") onTriggered: { diff --git a/resources/qml/Menus/LocalPrinterMenu.qml b/resources/qml/Menus/LocalPrinterMenu.qml index 4da1de2abf..bd6c57d744 100644 --- a/resources/qml/Menus/LocalPrinterMenu.qml +++ b/resources/qml/Menus/LocalPrinterMenu.qml @@ -15,7 +15,7 @@ Instantiator { text: model.name checkable: true - checked: Cura.MachineManager.activeMachineId == model.id + checked: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id == model.id: false exclusiveGroup: group visible: !model.hasRemoteConnection onTriggered: Cura.MachineManager.setActiveMachine(model.id) diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index f9e343d2dd..edc5ee1e0d 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.qml @@ -13,23 +13,32 @@ Menu title: catalog.i18nc("@label:category menu label", "Material") property int extruderIndex: 0 - + property string currentRootMaterialId: Cura.MachineManager.currentRootMaterialId[extruderIndex] + property string activeMaterialId: + { + var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] + return (extruder === undefined) ? "" : extruder.material.id + } + property bool updateModels: true Cura.FavoriteMaterialsModel { id: favoriteMaterialsModel extruderPosition: menu.extruderIndex + enabled: updateModels } Cura.GenericMaterialsModel { id: genericMaterialsModel extruderPosition: menu.extruderIndex + enabled: updateModels } Cura.MaterialBrandsModel { id: brandModel extruderPosition: menu.extruderIndex + enabled: updateModels } MenuItem @@ -45,12 +54,13 @@ Menu { text: model.brand + " " + model.name checkable: true - checked: model.root_material_id == Cura.MachineManager.currentRootMaterialId[extruderIndex] + enabled: Cura.MachineManager.activeMachine.extruderList[extruderIndex].isEnabled + checked: model.root_material_id === menu.currentRootMaterialId onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node) - exclusiveGroup: group + exclusiveGroup: favoriteGroup // One favorite and one item from the others can be active at the same time. } onObjectAdded: menu.insertItem(index, object) - onObjectRemoved: menu.removeItem(object) // TODO: This ain't gonna work, removeItem() takes an index, not object + onObjectRemoved: menu.removeItem(index) } MenuSeparator {} @@ -67,12 +77,17 @@ Menu { text: model.name checkable: true - checked: model.root_material_id == Cura.MachineManager.currentRootMaterialId[extruderIndex] + enabled: + { + var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] + return (extruder === undefined) ? false : extruder.isEnabled + } + checked: model.root_material_id === menu.currentRootMaterialId exclusiveGroup: group onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node) } onObjectAdded: genericMenu.insertItem(index, object) - onObjectRemoved: genericMenu.removeItem(object) // TODO: This ain't gonna work, removeItem() takes an index, not object + onObjectRemoved: genericMenu.removeItem(index) } } @@ -105,7 +120,12 @@ Menu { text: model.name checkable: true - checked: model.id == Cura.MachineManager.allActiveMaterialIds[Cura.ExtruderManager.extruderIds[extruderIndex]] + enabled: + { + var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] + return (extruder === undefined) ? false : extruder.isEnabled + } + checked: model.id === menu.activeMaterialId exclusiveGroup: group onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node) } @@ -121,10 +141,16 @@ Menu onObjectRemoved: menu.removeItem(object) } - ExclusiveGroup { + ExclusiveGroup + { id: group } + ExclusiveGroup + { + id: favoriteGroup + } + MenuSeparator {} MenuItem diff --git a/resources/qml/Menus/NozzleMenu.qml b/resources/qml/Menus/NozzleMenu.qml index 886216dab0..2734e40489 100644 --- a/resources/qml/Menus/NozzleMenu.qml +++ b/resources/qml/Menus/NozzleMenu.qml @@ -1,7 +1,7 @@ // Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import UM 1.2 as UM @@ -28,9 +28,15 @@ Menu text: model.hotend_name checkable: true checked: { - return Cura.MachineManager.activeVariantNames[extruderIndex] == model.hotend_name + var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] + return (extruder === undefined) ? false : (extruder.variant.name == model.hotend_name) } exclusiveGroup: group + enabled: + { + var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] + return (extruder === undefined) ? false : extruder.isEnabled + } onTriggered: { Cura.MachineManager.setVariant(menu.extruderIndex, model.container_node); } diff --git a/resources/qml/Menus/PrinterTypeMenu.qml b/resources/qml/Menus/PrinterTypeMenu.qml index 28bdca54d9..c2a09e0efd 100644 --- a/resources/qml/Menus/PrinterTypeMenu.qml +++ b/resources/qml/Menus/PrinterTypeMenu.qml @@ -22,7 +22,7 @@ Menu { text: modelData.machine_type checkable: true - checked: Cura.MachineManager.activeMachineDefinitionName == modelData.machine_type + checked: Cura.MachineManager.activeMachine.definition.name == modelData.machine_type exclusiveGroup: group onTriggered: { diff --git a/resources/qml/Menus/ProfileMenu.qml b/resources/qml/Menus/ProfileMenu.qml deleted file mode 100644 index 68260f2502..0000000000 --- a/resources/qml/Menus/ProfileMenu.qml +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.4 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -Menu -{ - id: menu - - Instantiator - { - model: Cura.QualityProfilesDropDownMenuModel - - MenuItem - { - text: - { - var full_text = (model.layer_height != "") ? model.name + " - " + model.layer_height + model.layer_height_unit : model.name - full_text += model.is_experimental ? " - " + catalog.i18nc("@label", "Experimental") : "" - return full_text - } - checkable: true - checked: Cura.MachineManager.activeQualityOrQualityChangesName == model.name - exclusiveGroup: group - onTriggered: Cura.MachineManager.setQualityGroup(model.quality_group) - visible: model.available - } - - onObjectAdded: menu.insertItem(index, object) - onObjectRemoved: menu.removeItem(object) - } - - MenuSeparator - { - id: customSeparator - visible: Cura.CustomQualityProfilesDropDownMenuModel.count > 0 - } - - Instantiator - { - id: customProfileInstantiator - model: Cura.CustomQualityProfilesDropDownMenuModel - - Connections - { - target: Cura.CustomQualityProfilesDropDownMenuModel - onModelReset: customSeparator.visible = Cura.CustomQualityProfilesDropDownMenuModel.count > 0 - } - - MenuItem - { - text: model.name - checkable: true - checked: Cura.MachineManager.activeQualityOrQualityChangesName == model.name - exclusiveGroup: group - onTriggered: Cura.MachineManager.setQualityChangesGroup(model.quality_changes_group) - } - - onObjectAdded: - { - customSeparator.visible = model.count > 0; - menu.insertItem(index, object); - } - onObjectRemoved: - { - customSeparator.visible = model.count > 0; - menu.removeItem(object); - } - } - - ExclusiveGroup { id: group; } - - MenuSeparator { id: profileMenuSeparator } - - MenuItem { action: Cura.Actions.addProfile } - MenuItem { action: Cura.Actions.updateProfile } - MenuItem { action: Cura.Actions.resetProfile } - MenuSeparator { } - MenuItem { action: Cura.Actions.manageProfiles } -} diff --git a/resources/qml/Menus/RecentFilesMenu.qml b/resources/qml/Menus/RecentFilesMenu.qml index 0f1f67b6fa..b788b5e72e 100644 --- a/resources/qml/Menus/RecentFilesMenu.qml +++ b/resources/qml/Menus/RecentFilesMenu.qml @@ -29,42 +29,8 @@ Menu } onTriggered: { - var toShowDialog = false; - var toOpenAsProject = false; - var toOpenAsModel = false; + CuraApplication.readLocalFile(modelData); - if (CuraApplication.checkIsValidProjectFile(modelData)) { - // check preference - var choice = UM.Preferences.getValue("cura/choice_on_open_project"); - - if (choice == "open_as_project") - { - toOpenAsProject = true; - }else if (choice == "open_as_model"){ - toOpenAsModel = true; - }else{ - toShowDialog = true; - } - } - else { - toOpenAsModel = true; - } - - if (toShowDialog) { - askOpenAsProjectOrModelsDialog.fileUrl = modelData; - askOpenAsProjectOrModelsDialog.show(); - return; - } - - // open file in the prefered way - if (toOpenAsProject) - { - UM.WorkspaceFileHandler.readLocalFile(modelData); - } - else if (toOpenAsModel) - { - CuraApplication.readLocalFile(modelData, true); - } var meshName = backgroundItem.getMeshName(modelData.toString()) backgroundItem.hasMesh(decodeURIComponent(meshName)) } diff --git a/resources/qml/Menus/SettingsMenu.qml b/resources/qml/Menus/SettingsMenu.qml index 03367a47e4..0afbccd5ca 100644 --- a/resources/qml/Menus/SettingsMenu.qml +++ b/resources/qml/Menus/SettingsMenu.qml @@ -14,20 +14,21 @@ Menu PrinterMenu { title: catalog.i18nc("@title:menu menubar:settings", "&Printer") } + property var activeMachine: Cura.MachineManager.activeMachine Instantiator { - model: Cura.MachineManager.activeMachine.extruderList - + id: extruderInstantiator + model: activeMachine == null ? null : activeMachine.extruderList Menu { title: modelData.name - - NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.hasVariants; extruderIndex: index } - MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: Cura.MachineManager.hasMaterials; extruderIndex: index } + property var extruder: Cura.MachineManager.activeMachine.extruderList[model.index] + NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.activeMachine.hasVariants; extruderIndex: index } + MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: Cura.MachineManager.activeMachine.hasMaterials; extruderIndex: index } MenuSeparator { - visible: Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials + visible: Cura.MachineManager.activeMachine.hasVariants || Cura.MachineManager.activeMachine.hasMaterials } MenuItem @@ -40,14 +41,14 @@ Menu { text: catalog.i18nc("@action:inmenu", "Enable Extruder") onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, true) - visible: !Cura.MachineManager.getExtruder(model.index).isEnabled + visible: extruder === null ? false : !extruder.isEnabled } MenuItem { text: catalog.i18nc("@action:inmenu", "Disable Extruder") - onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false) - visible: Cura.MachineManager.getExtruder(model.index).isEnabled + onTriggered: Cura.MachineManager.setExtruderEnabled(index, false) + visible: extruder === null ? false : extruder.isEnabled enabled: Cura.MachineManager.numberExtrudersEnabled > 1 } @@ -56,14 +57,6 @@ Menu onObjectRemoved: base.removeItem(object) } - // TODO Only show in dev mode. Remove check when feature ready - BuildplateMenu - { - title: catalog.i18nc("@title:menu", "&Build plate") - visible: CuraSDKVersion == "dev" && Cura.MachineManager.hasVariantBuildplates - } - ProfileMenu { title: catalog.i18nc("@title:settings", "&Profile") } - MenuSeparator { } MenuItem { action: Cura.Actions.configureSettingVisibility } diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index 217975c803..a4ded0980c 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -11,7 +11,6 @@ Menu { title: catalog.i18nc("@title:menu menubar:toplevel", "&View") id: base - enabled: !PrintInformation.preSliced property var multiBuildPlateModel: CuraApplication.getMultiBuildPlateModel() @@ -25,6 +24,51 @@ Menu MenuItem { action: Cura.Actions.viewRightSideCamera; } } + Menu + { + id: cameraViewMenu + property string cameraMode: UM.Preferences.getValue("general/camera_perspective_mode") + Connections + { + target: UM.Preferences + onPreferenceChanged: + { + if (preference !== "general/camera_perspective_mode") + { + return + } + cameraViewMenu.cameraMode = UM.Preferences.getValue("general/camera_perspective_mode") + } + } + + title: catalog.i18nc("@action:inmenu menubar:view","Camera view") + MenuItem + { + text: catalog.i18nc("@action:inmenu menubar:view", "Perspective") + checkable: true + checked: cameraViewMenu.cameraMode == "perspective" + onTriggered: + { + UM.Preferences.setValue("general/camera_perspective_mode", "perspective") + checked = cameraViewMenu.cameraMode == "perspective" + } + exclusiveGroup: group + } + MenuItem + { + text: catalog.i18nc("@action:inmenu menubar:view", "Orthographic") + checkable: true + checked: cameraViewMenu.cameraMode == "orthographic" + onTriggered: + { + UM.Preferences.setValue("general/camera_perspective_mode", "orthographic") + checked = cameraViewMenu.cameraMode == "orthographic" + } + exclusiveGroup: group + } + ExclusiveGroup { id: group } + } + MenuSeparator { visible: UM.Preferences.getValue("cura/use_multi_build_plate") diff --git a/resources/qml/ObjectItemButton.qml b/resources/qml/ObjectItemButton.qml new file mode 100644 index 0000000000..b454fd929a --- /dev/null +++ b/resources/qml/ObjectItemButton.qml @@ -0,0 +1,71 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.1 as UM +import Cura 1.0 as Cura + +Button +{ + id: objectItemButton + + width: parent.width + height: UM.Theme.getSize("action_button").height + leftPadding: UM.Theme.getSize("thin_margin").width + rightPadding: UM.Theme.getSize("thin_margin").width + checkable: true + hoverEnabled: true + + contentItem: Item + { + width: objectItemButton.width - objectItemButton.leftPadding + height: UM.Theme.getSize("action_button").height + + Label + { + id: buttonText + anchors + { + left: parent.left + right: parent.right + verticalCenter: parent.verticalCenter + } + text: objectItemButton.text + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text_scene") + visible: text != "" + renderType: Text.NativeRendering + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + } + + background: Rectangle + { + id: backgroundRect + color: objectItemButton.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent" + radius: UM.Theme.getSize("action_button_radius").width + border.width: UM.Theme.getSize("default_lining").width + border.color: objectItemButton.checked ? UM.Theme.getColor("primary") : "transparent" + } + + TextMetrics + { + id: buttonTextMetrics + text: buttonText.text + font: buttonText.font + elide: buttonText.elide + elideWidth: buttonText.width + } + + Cura.ToolTip + { + id: tooltip + tooltipText: objectItemButton.text + visible: objectItemButton.hovered && buttonTextMetrics.elidedText != buttonText.text + } + + onClicked: Cura.SceneController.changeSelection(index) +} diff --git a/resources/qml/ObjectSelector.qml b/resources/qml/ObjectSelector.qml new file mode 100644 index 0000000000..6757863e1c --- /dev/null +++ b/resources/qml/ObjectSelector.qml @@ -0,0 +1,126 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Item +{ + id: objectSelector + width: UM.Theme.getSize("objects_menu_size").width + property bool opened: UM.Preferences.getValue("cura/show_list_of_objects") + + // Eat up all the mouse events (we don't want the scene to react or have the scene context menu showing up) + MouseArea + { + anchors.fill: parent + acceptedButtons: Qt.AllButtons + } + + Button + { + id: openCloseButton + width: parent.width + height: contentItem.height + bottomPadding + hoverEnabled: true + padding: 0 + bottomPadding: UM.Theme.getSize("narrow_margin").height / 2 | 0 + + anchors + { + bottom: contents.top + horizontalCenter: parent.horizontalCenter + } + + contentItem: Item + { + width: parent.width + height: label.height + + UM.RecolorImage + { + id: openCloseIcon + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + sourceSize.width: width + anchors.left: parent.left + color: openCloseButton.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text") + source: objectSelector.opened ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_top") + } + + Label + { + id: label + anchors.left: openCloseIcon.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label", "Object list") + font: UM.Theme.getFont("default") + color: openCloseButton.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text") + renderType: Text.NativeRendering + elide: Text.ElideRight + } + } + + background: Item {} + + onClicked: + { + UM.Preferences.setValue("cura/show_list_of_objects", !objectSelector.opened) + objectSelector.opened = UM.Preferences.getValue("cura/show_list_of_objects") + } + } + + Rectangle + { + id: contents + width: parent.width + visible: objectSelector.opened + height: visible ? listView.height : 0 + color: UM.Theme.getColor("main_background") + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + + Behavior on height { NumberAnimation { duration: 100 } } + + anchors.bottom: parent.bottom + + ListView + { + id: listView + clip: true + anchors + { + left: parent.left + right: parent.right + margins: UM.Theme.getSize("default_lining").width + } + + ScrollBar.vertical: ScrollBar + { + hoverEnabled: true + } + + property real maximumHeight: UM.Theme.getSize("objects_menu_size").height + + height: Math.min(contentHeight, maximumHeight) + + model: Cura.ObjectsModel {} + + delegate: ObjectItemButton + { + id: modelButton + Binding + { + target: modelButton + property: "checked" + value: model.selected + } + text: model.name + width: listView.width + } + } + } +} diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml deleted file mode 100644 index fd5175fce2..0000000000 --- a/resources/qml/ObjectsList.qml +++ /dev/null @@ -1,262 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Dialogs 1.1 - -import UM 1.3 as UM -import Cura 1.0 as Cura - -import "Menus" - -Rectangle -{ - id: base; - - color: UM.Theme.getColor("tool_panel_background") - - width: UM.Theme.getSize("objects_menu_size").width - height: { - if (collapsed) { - return UM.Theme.getSize("objects_menu_size_collapsed").height; - } else { - return UM.Theme.getSize("objects_menu_size").height; - } - } - Behavior on height { NumberAnimation { duration: 100 } } - - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - - property bool collapsed: true - - property var multiBuildPlateModel: CuraApplication.getMultiBuildPlateModel() - - SystemPalette { id: palette } - - Button { - id: collapseButton - anchors.top: parent.top - anchors.topMargin: Math.round(UM.Theme.getSize("default_margin").height + (UM.Theme.getSize("layerview_row").height - UM.Theme.getSize("default_margin").height) / 2) - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - - onClicked: collapsed = !collapsed - - style: ButtonStyle - { - background: UM.RecolorImage - { - width: control.width - height: control.height - sourceSize.height: width - color: UM.Theme.getColor("setting_control_text") - source: collapsed ? UM.Theme.getIcon("arrow_left") : UM.Theme.getIcon("arrow_bottom") - } - label: Label{ } - } - } - - Component { - id: buildPlateDelegate - Rectangle - { - height: childrenRect.height - color: multiBuildPlateModel.getItem(index).buildPlateNumber == multiBuildPlateModel.activeBuildPlate ? palette.highlight : index % 2 ? palette.base : palette.alternateBase - width: parent.width - Label - { - id: buildPlateNameLabel - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 - text: multiBuildPlateModel.getItem(index) ? multiBuildPlateModel.getItem(index).name : ""; - color: multiBuildPlateModel.activeBuildPlate == index ? palette.highlightedText : palette.text - elide: Text.ElideRight - } - - MouseArea - { - anchors.fill: parent; - onClicked: - { - Cura.SceneController.setActiveBuildPlate(index); - } - } - } - } - - ScrollView - { - id: buildPlateSelection - frameVisible: true - height: UM.Theme.getSize("build_plate_selection_size").height - width: parent.width - 2 * UM.Theme.getSize("default_margin").height - style: UM.Theme.styles.scrollview - - anchors - { - top: collapseButton.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").height; - bottomMargin: UM.Theme.getSize("default_margin").height; - } - - Rectangle - { - parent: viewport - anchors.fill: parent - color: palette.light - } - - ListView - { - id: buildPlateListView - model: multiBuildPlateModel - width: parent.width - delegate: buildPlateDelegate - } - } - - Component { - id: objectDelegate - Rectangle - { - height: childrenRect.height - color: Cura.ObjectsModel.getItem(index).isSelected ? palette.highlight : index % 2 ? palette.base : palette.alternateBase - width: parent.width - Label - { - id: nodeNameLabel - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 - text: (index >= 0) && Cura.ObjectsModel.getItem(index) ? Cura.ObjectsModel.getItem(index).name : ""; - color: Cura.ObjectsModel.getItem(index).isSelected ? palette.highlightedText : (Cura.ObjectsModel.getItem(index).isOutsideBuildArea ? palette.mid : palette.text) - elide: Text.ElideRight - } - - Label - { - id: buildPlateNumberLabel - width: 20 - anchors.left: nodeNameLabel.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.right: parent.right - text: Cura.ObjectsModel.getItem(index).buildPlateNumber != -1 ? Cura.ObjectsModel.getItem(index).buildPlateNumber + 1 : ""; - color: Cura.ObjectsModel.getItem(index).isSelected ? palette.highlightedText : palette.text - elide: Text.ElideRight - } - - MouseArea - { - anchors.fill: parent; - onClicked: - { - Cura.SceneController.changeSelection(index); - } - } - } - } - - // list all the scene nodes - ScrollView - { - id: objectsList - frameVisible: true - visible: !collapsed - width: parent.width - 2 * UM.Theme.getSize("default_margin").height - - anchors - { - top: buildPlateSelection.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").height; - bottom: filterBuildPlateCheckbox.top; - bottomMargin: UM.Theme.getSize("default_margin").height; - } - - Rectangle - { - parent: viewport - anchors.fill: parent - color: palette.light - } - - ListView - { - id: listview - model: Cura.ObjectsModel - width: parent.width - delegate: objectDelegate - } - } - - CheckBox - { - id: filterBuildPlateCheckbox - visible: !collapsed - checked: UM.Preferences.getValue("view/filter_current_build_plate") - onClicked: UM.Preferences.setValue("view/filter_current_build_plate", checked) - - text: catalog.i18nc("@option:check","See only current build plate"); - style: UM.Theme.styles.checkbox; - - anchors - { - left: parent.left; - topMargin: UM.Theme.getSize("default_margin").height; - bottomMargin: UM.Theme.getSize("default_margin").height; - leftMargin: UM.Theme.getSize("default_margin").height; - bottom: arrangeAllBuildPlatesButton.top; - } - } - - Button - { - id: arrangeAllBuildPlatesButton; - text: catalog.i18nc("@action:button","Arrange to all build plates"); - style: UM.Theme.styles.print_setup_action_button - height: UM.Theme.getSize("objects_menu_button").height; - tooltip: ''; - anchors - { - topMargin: UM.Theme.getSize("default_margin").height; - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").height; - right: parent.right; - rightMargin: UM.Theme.getSize("default_margin").height; - bottom: arrangeBuildPlateButton.top; - bottomMargin: UM.Theme.getSize("default_margin").height; - } - action: Cura.Actions.arrangeAllBuildPlates; - } - - Button - { - id: arrangeBuildPlateButton; - text: catalog.i18nc("@action:button","Arrange current build plate"); - style: UM.Theme.styles.print_setup_action_button - height: UM.Theme.getSize("objects_menu_button").height; - tooltip: ''; - anchors - { - topMargin: UM.Theme.getSize("default_margin").height; - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").height; - right: parent.right; - rightMargin: UM.Theme.getSize("default_margin").height; - bottom: parent.bottom; - bottomMargin: UM.Theme.getSize("default_margin").height; - } - action: Cura.Actions.arrangeAll; - } -} diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 0dd6c6313a..5ce309cf8b 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -94,6 +94,12 @@ UM.PreferencesPage zoomToMouseCheckbox.checked = boolCheck(UM.Preferences.getValue("view/zoom_to_mouse")) UM.Preferences.resetPreference("view/top_layer_count"); topLayerCountCheckbox.checked = boolCheck(UM.Preferences.getValue("view/top_layer_count")) + UM.Preferences.resetPreference("general/restore_window_geometry") + restoreWindowPositionCheckbox.checked = boolCheck(UM.Preferences.getValue("general/restore_window_geometry")) + + UM.Preferences.resetPreference("general/camera_perspective_mode") + var defaultCameraMode = UM.Preferences.getValue("general/camera_perspective_mode") + setDefaultCameraMode(defaultCameraMode) UM.Preferences.resetPreference("cura/choice_on_profile_override") setDefaultDiscardOrKeepProfile(UM.Preferences.getValue("cura/choice_on_profile_override")) @@ -101,24 +107,10 @@ UM.PreferencesPage UM.Preferences.resetPreference("cura/choice_on_open_project") setDefaultOpenProjectOption(UM.Preferences.getValue("cura/choice_on_open_project")) - if (pluginExistsAndEnabled("SliceInfoPlugin")) { - UM.Preferences.resetPreference("info/send_slice_info") - sendDataCheckbox.checked = boolCheck(UM.Preferences.getValue("info/send_slice_info")) - } - if (pluginExistsAndEnabled("UpdateChecker")) { - UM.Preferences.resetPreference("info/automatic_update_check") - checkUpdatesCheckbox.checked = boolCheck(UM.Preferences.getValue("info/automatic_update_check")) - } - } - - function pluginExistsAndEnabled(pluginName) - { - var pluginItem = plugins.find("id", pluginName) - if (pluginItem > -1) - { - return plugins.getItem(pluginItem).enabled - } - return false + UM.Preferences.resetPreference("info/send_slice_info") + sendDataCheckbox.checked = boolCheck(UM.Preferences.getValue("info/send_slice_info")) + UM.Preferences.resetPreference("info/automatic_update_check") + checkUpdatesCheckbox.checked = boolCheck(UM.Preferences.getValue("info/automatic_update_check")) } ScrollView @@ -130,8 +122,6 @@ UM.PreferencesPage Column { - //: Model used to check if a plugin exists - UM.PluginsModel { id: plugins } //: Language selection label UM.I18nCatalog{id: catalog; name: "cura"} @@ -170,7 +160,7 @@ UM.PreferencesPage append({ text: "日本語", code: "ja_JP" }) append({ text: "한국어", code: "ko_KR" }) append({ text: "Nederlands", code: "nl_NL" }) - //Polish is disabled for being incomplete: append({ text: "Polski", code: "pl_PL" }) + append({ text: "Polski", code: "pl_PL" }) append({ text: "Português do Brasil", code: "pt_BR" }) append({ text: "Português", code: "pt_PT" }) append({ text: "Русский", code: "ru_RU" }) @@ -346,7 +336,8 @@ UM.PreferencesPage } } - UM.TooltipArea { + UM.TooltipArea + { width: childrenRect.width; height: childrenRect.height; text: catalog.i18nc("@info:tooltip", "Moves the camera so the model is in the center of the view when a model is selected") @@ -360,7 +351,8 @@ UM.PreferencesPage } } - UM.TooltipArea { + UM.TooltipArea + { width: childrenRect.width; height: childrenRect.height; text: catalog.i18nc("@info:tooltip", "Should the default zoom behavior of cura be inverted?") @@ -370,7 +362,13 @@ UM.PreferencesPage id: invertZoomCheckbox text: catalog.i18nc("@action:button", "Invert the direction of camera zoom."); checked: boolCheck(UM.Preferences.getValue("view/invert_zoom")) - onClicked: UM.Preferences.setValue("view/invert_zoom", checked) + onClicked: { + if(!checked && zoomToMouseCheckbox.checked) //Fix for Github issue Ultimaker/Cura#6490: Make sure the camera origin is in front when unchecking. + { + UM.Controller.setCameraOrigin("home"); + } + UM.Preferences.setValue("view/invert_zoom", checked); + } } } @@ -378,14 +376,30 @@ UM.PreferencesPage { width: childrenRect.width; height: childrenRect.height; - text: catalog.i18nc("@info:tooltip", "Should zooming move in the direction of the mouse?") + text: zoomToMouseCheckbox.enabled ? catalog.i18nc("@info:tooltip", "Should zooming move in the direction of the mouse?") : catalog.i18nc("@info:tooltip", "Zooming towards the mouse is not supported in the orthographic perspective.") CheckBox { id: zoomToMouseCheckbox - text: catalog.i18nc("@action:button", "Zoom toward mouse direction"); - checked: boolCheck(UM.Preferences.getValue("view/zoom_to_mouse")) + text: catalog.i18nc("@action:button", "Zoom toward mouse direction") + checked: boolCheck(UM.Preferences.getValue("view/zoom_to_mouse")) && zoomToMouseCheckbox.enabled onClicked: UM.Preferences.setValue("view/zoom_to_mouse", checked) + enabled: UM.Preferences.getValue("general/camera_perspective_mode") !== "orthogonal" + } + + //Because there is no signal for individual preferences, we need to manually link to the onPreferenceChanged signal. + Connections + { + target: UM.Preferences + onPreferenceChanged: + { + if(preference != "general/camera_perspective_mode") + { + return; + } + zoomToMouseCheckbox.enabled = UM.Preferences.getValue("general/camera_perspective_mode") !== "orthographic"; + zoomToMouseCheckbox.checked = boolCheck(UM.Preferences.getValue("view/zoom_to_mouse")) && zoomToMouseCheckbox.enabled; + } } } @@ -452,6 +466,65 @@ UM.PreferencesPage } } + UM.TooltipArea + { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip", "Should Cura open at the location it was closed?") + + CheckBox + { + id: restoreWindowPositionCheckbox + text: catalog.i18nc("@option:check", "Restore window position on start") + checked: boolCheck(UM.Preferences.getValue("general/restore_window_geometry")) + onCheckedChanged: UM.Preferences.setValue("general/restore_window_geometry", checked) + } + } + + UM.TooltipArea + { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip", "What type of camera rendering should be used?") + Column + { + spacing: 4 * screenScaleFactor + + Label + { + text: catalog.i18nc("@window:text", "Camera rendering:") + } + ComboBox + { + id: cameraComboBox + + model: ListModel + { + id: comboBoxList + + Component.onCompleted: { + append({ text: catalog.i18n("Perspective"), code: "perspective" }) + append({ text: catalog.i18n("Orthographic"), code: "orthographic" }) + } + } + + currentIndex: + { + var code = UM.Preferences.getValue("general/camera_perspective_mode"); + for(var i = 0; i < comboBoxList.count; ++i) + { + if(model.get(i).code == code) + { + return i + } + } + return 0 + } + onActivated: UM.Preferences.setValue("general/camera_perspective_mode", model.get(index).code) + } + } + } + Item { //: Spacer @@ -672,7 +745,6 @@ UM.PreferencesPage UM.TooltipArea { - visible: pluginExistsAndEnabled("UpdateChecker") width: childrenRect.width height: visible ? childrenRect.height : 0 text: catalog.i18nc("@info:tooltip","Should Cura check for updates when the program is started?") @@ -688,7 +760,6 @@ UM.PreferencesPage UM.TooltipArea { - visible: pluginExistsAndEnabled("SliceInfoPlugin") width: childrenRect.width height: visible ? childrenRect.height : 0 text: catalog.i18nc("@info:tooltip","Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored.") @@ -713,6 +784,7 @@ UM.PreferencesPage } } + /* Multi-buildplate functionality is disabled because it's broken. See CURA-4975 for the ticket to remove it. Item { //: Spacer @@ -739,7 +811,7 @@ UM.PreferencesPage checked: boolCheck(UM.Preferences.getValue("cura/use_multi_build_plate")) onCheckedChanged: UM.Preferences.setValue("cura/use_multi_build_plate", checked) } - } + }*/ Connections { diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 6f214a7efb..8adcb65fcf 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -14,16 +14,18 @@ UM.ManagementPage id: base; title: catalog.i18nc("@title:tab", "Printers"); - model: Cura.MachineManagementModel { } + model: Cura.GlobalStacksModel { } - activeId: Cura.MachineManager.activeMachineId + sectionRole: "discoverySource" + + activeId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id: "" activeIndex: activeMachineIndex() function activeMachineIndex() { for(var i = 0; i < model.count; i++) { - if (model.getItem(i).id == Cura.MachineManager.activeMachineId) + if (model.getItem(i).id == base.activeId) { return i; } @@ -34,6 +36,7 @@ UM.ManagementPage buttons: [ Button { + id: activateMenuButton text: catalog.i18nc("@action:button", "Activate"); iconName: "list-activate"; enabled: base.currentItem != null && base.currentItem.id != Cura.MachineManager.activeMaterialId @@ -41,12 +44,14 @@ UM.ManagementPage }, Button { + id: addMenuButton text: catalog.i18nc("@action:button", "Add"); iconName: "list-add"; - onClicked: CuraApplication.requestAddPrinter() + onClicked: Cura.Actions.addMachine.trigger() }, Button { + id: removeMenuButton text: catalog.i18nc("@action:button", "Remove"); iconName: "list-remove"; enabled: base.currentItem != null && model.count > 1 @@ -54,6 +59,7 @@ UM.ManagementPage }, Button { + id: renameMenuButton text: catalog.i18nc("@action:button", "Rename"); iconName: "edit-rename"; enabled: base.currentItem != null && base.currentItem.metadata.group_name == null @@ -78,7 +84,7 @@ UM.ManagementPage Flow { id: machineActions - visible: currentItem && currentItem.id == Cura.MachineManager.activeMachineId + visible: currentItem && currentItem.id == Cura.MachineManager.activeMachine.id anchors.left: parent.left anchors.right: parent.right anchors.top: machineName.bottom @@ -98,10 +104,11 @@ UM.ManagementPage text: machineActionRepeater.model[index].label onClicked: { - actionDialog.content = machineActionRepeater.model[index].displayItem; - machineActionRepeater.model[index].displayItem.reset(); - actionDialog.title = machineActionRepeater.model[index].label; - actionDialog.show(); + var currentItem = machineActionRepeater.model[index] + actionDialog.loader.manager = currentItem + actionDialog.loader.source = currentItem.qmlPath + actionDialog.title = currentItem.label + actionDialog.show() } } } @@ -111,13 +118,7 @@ UM.ManagementPage UM.Dialog { id: actionDialog - property var content - onContentChanged: - { - contents = content; - content.onCompleted.connect(hide) - content.dialog = actionDialog - } + rightButtons: Button { text: catalog.i18nc("@action:button", "Close") @@ -147,8 +148,6 @@ UM.ManagementPage UM.RenameDialog { id: renameDialog; - width: 300 * screenScaleFactor - height: 150 * screenScaleFactor object: base.currentItem && base.currentItem.name ? base.currentItem.name : ""; property var machine_name_validator: Cura.MachineNameValidator { } validName: renameDialog.newName.match(renameDialog.machine_name_validator.machineNameRegex) != null; diff --git a/resources/qml/Preferences/Materials/MaterialsBrandSection.qml b/resources/qml/Preferences/Materials/MaterialsBrandSection.qml index 8db8e99d44..5dd68c426f 100644 --- a/resources/qml/Preferences/Materials/MaterialsBrandSection.qml +++ b/resources/qml/Preferences/Materials/MaterialsBrandSection.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -10,10 +10,12 @@ import QtQuick.Dialogs 1.2 import UM 1.2 as UM import Cura 1.0 as Cura +// An expandable list of materials. Includes both the header (this file) and the items (brandMaterialList) + Item { id: brand_section - + property var sectionName: "" property var elementsModel // This can be a MaterialTypesModel or GenericMaterialsModel or FavoriteMaterialsModel property var hasMaterialTypes: true // It indicates wheather it has material types or not @@ -50,9 +52,8 @@ Item verticalAlignment: Text.AlignVCenter leftPadding: (UM.Theme.getSize("default_margin").width / 2) | 0 } - Button + Item { - text: "" implicitWidth: UM.Theme.getSize("favorites_button").width implicitHeight: UM.Theme.getSize("favorites_button").height UM.RecolorImage @@ -67,10 +68,6 @@ Item color: "black" source: brand_section.expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") } - style: ButtonStyle - { - background: Item { } - } } } MouseArea @@ -99,7 +96,7 @@ Item id: brandMaterialList anchors.top: brand_header.bottom width: parent.width - anchors.left: parent.left + anchors.left: parent ? parent.left : undefined height: brand_section.expanded ? childrenRect.height : 0 visible: brand_section.expanded @@ -109,7 +106,7 @@ Item delegate: Loader { id: loader - width: parent.width + width: parent ? parent.width : 0 property var element: model sourceComponent: hasMaterialTypes ? materialsTypeSection : materialSlot } diff --git a/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml b/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml index eb4a63250f..e821dfb955 100644 --- a/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml +++ b/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml @@ -64,8 +64,10 @@ Item height: childrenRect.height Label { + width: parent.width text: materialProperties.name font: UM.Theme.getFont("large_bold") + elide: Text.ElideRight } } @@ -82,6 +84,7 @@ Item } editingEnabled: currentItem != null && !currentItem.is_read_only + onResetSelectedMaterial: base.resetExpandedActiveMaterial() properties: materialProperties containerId: currentItem != null ? currentItem.id : "" diff --git a/resources/qml/Preferences/Materials/MaterialsList.qml b/resources/qml/Preferences/Materials/MaterialsList.qml index 61f92db84c..8b82a87820 100644 --- a/resources/qml/Preferences/Materials/MaterialsList.qml +++ b/resources/qml/Preferences/Materials/MaterialsList.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Uranium is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -102,6 +102,7 @@ Item } } } + base.currentItem = null return false } @@ -113,7 +114,7 @@ Item if (base.toActivateNewMaterial) { var position = Cura.ExtruderManager.activeExtruderIndex - Cura.MachineManager.setMaterial(position, base.currentItem.container_node) + Cura.MachineManager.setMaterialById(position, base.newRootMaterialIdToSwitchTo) } base.newRootMaterialIdToSwitchTo = "" base.toActivateNewMaterial = false diff --git a/resources/qml/Preferences/Materials/MaterialsPage.qml b/resources/qml/Preferences/Materials/MaterialsPage.qml index 9118f16b4d..d635b2b721 100644 --- a/resources/qml/Preferences/Materials/MaterialsPage.qml +++ b/resources/qml/Preferences/Materials/MaterialsPage.qml @@ -7,17 +7,18 @@ import QtQuick.Layouts 1.3 import QtQuick.Dialogs 1.2 import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.5 as Cura Item { id: base - property QtObject materialManager: CuraApplication.getMaterialManager() // Keep PreferencesDialog happy property var resetEnabled: false property var currentItem: null + property var materialManagementModel: CuraApplication.getMaterialManagementModel() + property var hasCurrentItem: base.currentItem != null property var isCurrentItemActivated: { @@ -41,14 +42,36 @@ Item name: "cura" } + function resetExpandedActiveMaterial() + { + materialListView.expandActiveMaterial(active_root_material_id) + } + + function setExpandedActiveMaterial(root_material_id) + { + materialListView.expandActiveMaterial(root_material_id) + } + // When loaded, try to select the active material in the tree - Component.onCompleted: materialListView.expandActiveMaterial(active_root_material_id) + Component.onCompleted: + { + resetExpandedActiveMaterial() + base.newRootMaterialIdToSwitchTo = active_root_material_id + } // Every time the selected item has changed, notify to the details panel onCurrentItemChanged: { forceActiveFocus() - materialDetailsPanel.currentItem = currentItem + if(materialDetailsPanel.currentItem != currentItem) + { + materialDetailsPanel.currentItem = currentItem + // CURA-6679 If the current item is gone after the model update, reset the current item to the active material. + if (currentItem == null) + { + resetExpandedActiveMaterial() + } + } } // Main layout @@ -81,9 +104,10 @@ Item // Activate button Button { + id: activateMenuButton text: catalog.i18nc("@action:button", "Activate") iconName: "list-activate" - enabled: !isCurrentItemActivated && Cura.MachineManager.hasMaterials + enabled: !isCurrentItemActivated && Cura.MachineManager.activeMachine.hasMaterials onClicked: { forceActiveFocus() @@ -98,12 +122,13 @@ Item // Create button Button { + id: createMenuButton text: catalog.i18nc("@action:button", "Create") iconName: "list-add" onClicked: { forceActiveFocus(); - base.newRootMaterialIdToSwitchTo = base.materialManager.createMaterial(); + base.newRootMaterialIdToSwitchTo = base.materialManagementModel.createMaterial(); base.toActivateNewMaterial = true; } } @@ -111,13 +136,14 @@ Item // Duplicate button Button { + id: duplicateMenuButton text: catalog.i18nc("@action:button", "Duplicate"); iconName: "list-add" enabled: base.hasCurrentItem onClicked: { forceActiveFocus(); - base.newRootMaterialIdToSwitchTo = base.materialManager.duplicateMaterial(base.currentItem.container_node); + base.newRootMaterialIdToSwitchTo = base.materialManagementModel.duplicateMaterial(base.currentItem.container_node); base.toActivateNewMaterial = true; } } @@ -125,9 +151,11 @@ Item // Remove button Button { + id: removeMenuButton text: catalog.i18nc("@action:button", "Remove") iconName: "list-remove" - enabled: base.hasCurrentItem && !base.currentItem.is_read_only && !base.isCurrentItemActivated + enabled: base.hasCurrentItem && !base.currentItem.is_read_only && !base.isCurrentItemActivated && base.materialManagementModel.canMaterialBeRemoved(base.currentItem.container_node) + onClicked: { forceActiveFocus(); @@ -138,6 +166,7 @@ Item // Import button Button { + id: importMenuButton text: catalog.i18nc("@action:button", "Import") iconName: "document-import" onClicked: @@ -151,6 +180,7 @@ Item // Export button Button { + id: exportMenuButton text: catalog.i18nc("@action:button", "Export") iconName: "document-export" onClicked: @@ -200,10 +230,15 @@ Item visible: text != "" text: { - var caption = catalog.i18nc("@action:label", "Printer") + ": " + Cura.MachineManager.activeMachineName; - if (Cura.MachineManager.hasVariants) + var caption = catalog.i18nc("@action:label", "Printer") + ": " + Cura.MachineManager.activeMachine.name; + if (Cura.MachineManager.activeMachine.hasVariants) { - caption += ", " + Cura.MachineManager.activeDefinitionVariantsName + ": " + Cura.MachineManager.activeVariantName; + var activeVariantName = "" + if(Cura.MachineManager.activeStack != null) + { + activeVariantName = Cura.MachineManager.activeStack.variant.name + } + caption += ", " + Cura.MachineManager.activeDefinitionVariantsName + ": " + activeVariantName; } return caption; } @@ -260,14 +295,16 @@ Item id: confirmRemoveMaterialDialog icon: StandardIcon.Question; title: catalog.i18nc("@title:window", "Confirm Remove") - text: catalog.i18nc("@label (%1 is object name)", "Are you sure you wish to remove %1? This cannot be undone!").arg(base.currentItem.name) + property string materialName: base.currentItem !== null ? base.currentItem.name : "" + + text: catalog.i18nc("@label (%1 is object name)", "Are you sure you wish to remove %1? This cannot be undone!").arg(materialName) standardButtons: StandardButton.Yes | StandardButton.No modality: Qt.ApplicationModal onYes: { // Set the active material as the fallback. It will be selected when the current material is deleted base.newRootMaterialIdToSwitchTo = base.active_root_material_id - base.materialManager.removeMaterial(base.currentItem.container_node); + base.materialManagementModel.removeMaterial(base.currentItem.container_node); } } diff --git a/resources/qml/Preferences/Materials/MaterialsSlot.qml b/resources/qml/Preferences/Materials/MaterialsSlot.qml index 2f4847103b..81bb8759ff 100644 --- a/resources/qml/Preferences/Materials/MaterialsSlot.qml +++ b/resources/qml/Preferences/Materials/MaterialsSlot.qml @@ -10,6 +10,8 @@ import QtQuick.Dialogs 1.2 import UM 1.2 as UM import Cura 1.0 as Cura +// A single material row, typically used in a MaterialsBrandSection + Rectangle { id: materialSlot @@ -19,8 +21,18 @@ Rectangle height: UM.Theme.getSize("favorites_row").height width: parent.width - color: material != null ? (base.currentItem.root_material_id == material.root_material_id ? UM.Theme.getColor("favorites_row_selected") : "transparent") : "transparent" - + //color: material != null ? (base.currentItem.root_material_id == material.root_material_id ? UM.Theme.getColor("favorites_row_selected") : "transparent") : "transparent" + color: + { + if(material !== null && base.currentItem !== null) + { + if(base.currentItem.root_material_id === material.root_material_id) + { + return UM.Theme.getColor("favorites_row_selected") + } + } + return "transparent" + } Rectangle { id: swatch @@ -41,7 +53,7 @@ Rectangle anchors.left: swatch.right anchors.verticalCenter: materialSlot.verticalCenter anchors.leftMargin: UM.Theme.getSize("narrow_margin").width - font.italic: Cura.MachineManager.currentRootMaterialId[Cura.ExtruderManager.activeExtruderIndex] == material.root_material_id + font.italic: material != null && Cura.MachineManager.currentRootMaterialId[Cura.ExtruderManager.activeExtruderIndex] == material.root_material_id } MouseArea { @@ -50,7 +62,7 @@ Rectangle { materialList.currentBrand = material.brand materialList.currentType = material.brand + "_" + material.material - base.currentItem = material + base.setExpandedActiveMaterial(material.root_material_id) } hoverEnabled: true onEntered: { materialSlot.hovered = true } @@ -72,11 +84,12 @@ Rectangle { if (materialSlot.is_favorite) { - base.materialManager.removeFavorite(material.root_material_id) - return + CuraApplication.getMaterialManagementModel().removeFavorite(material.root_material_id) + } + else + { + CuraApplication.getMaterialManagementModel().addFavorite(material.root_material_id) } - base.materialManager.addFavorite(material.root_material_id) - return } style: ButtonStyle { diff --git a/resources/qml/Preferences/Materials/MaterialsTypeSection.qml b/resources/qml/Preferences/Materials/MaterialsTypeSection.qml index b5054591c0..07630a83b4 100644 --- a/resources/qml/Preferences/Materials/MaterialsTypeSection.qml +++ b/resources/qml/Preferences/Materials/MaterialsTypeSection.qml @@ -14,16 +14,20 @@ Item { id: material_type_section property var materialType - property var expanded: materialList.expandedTypes.indexOf(materialType.brand + "_" + materialType.name) > -1 - property var colorsModel: materialType.colors + + property string materialBrand: materialType != null ? materialType.brand : "" + property string materialName: materialType != null ? materialType.name : "" + property var expanded: materialList.expandedTypes.indexOf(materialBrand + "_" + materialName) > -1 + property var colorsModel: materialType != null ? materialType.colors: null height: childrenRect.height - width: parent.width + width: parent ? parent.width :undefined + anchors.left: parent ? parent.left : undefined Rectangle { id: material_type_header_background color: { - if(!expanded && materialType.brand + "_" + materialType.name == materialList.currentType) + if(!expanded && materialBrand + "_" + materialName == materialList.currentType) { return UM.Theme.getColor("favorites_row_selected") } @@ -51,48 +55,40 @@ Item leftPadding: UM.Theme.getSize("default_margin").width anchors { - left: parent.left + left: parent ? parent.left : undefined } Label { - text: materialType.name + text: materialName height: UM.Theme.getSize("favorites_row").height width: parent.width - parent.leftPadding - UM.Theme.getSize("favorites_button").width id: material_type_name verticalAlignment: Text.AlignVCenter } - Button + Item // this one causes lots of warnings { - text: "" implicitWidth: UM.Theme.getSize("favorites_button").width implicitHeight: UM.Theme.getSize("favorites_button").height UM.RecolorImage { anchors { - verticalCenter: parent.verticalCenter - horizontalCenter: parent.horizontalCenter + verticalCenter: parent ? parent.verticalCenter : undefined + horizontalCenter: parent ? parent.horizontalCenter : undefined } width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height color: "black" source: material_type_section.expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") } - style: ButtonStyle - { - background: Rectangle - { - anchors.fill: parent - color: "transparent" - } - } + } } - MouseArea + MouseArea // causes lots of warnings { anchors.fill: material_type_header onPressed: { - const identifier = materialType.brand + "_" + materialType.name; + const identifier = materialBrand + "_" + materialName; const i = materialList.expandedTypes.indexOf(identifier) if (i > -1) { @@ -135,7 +131,7 @@ Item return; } - expanded = materialList.expandedTypes.indexOf(materialType.brand + "_" + materialType.name) > -1 + expanded = materialList.expandedTypes.indexOf(materialBrand + "_" + materialName) > -1 } } } \ No newline at end of file diff --git a/resources/qml/Preferences/Materials/MaterialsView.qml b/resources/qml/Preferences/Materials/MaterialsView.qml index 56fa12877f..57253b9dff 100644 --- a/resources/qml/Preferences/Materials/MaterialsView.qml +++ b/resources/qml/Preferences/Materials/MaterialsView.qml @@ -14,21 +14,22 @@ TabView { id: base - property QtObject materialManager: CuraApplication.getMaterialManager() - property QtObject properties property var currentMaterialNode: null - property bool editingEnabled: false; + property bool editingEnabled: false property string currency: UM.Preferences.getValue("cura/currency") ? UM.Preferences.getValue("cura/currency") : "€" property real firstColumnWidth: (width * 0.50) | 0 property real secondColumnWidth: (width * 0.40) | 0 property string containerId: "" property var materialPreferenceValues: UM.Preferences.getValue("cura/material_settings") ? JSON.parse(UM.Preferences.getValue("cura/material_settings")) : {} + property var materialManagementModel: CuraApplication.getMaterialManagementModel() property double spoolLength: calculateSpoolLength() property real costPerMeter: calculateCostPerMeter() + signal resetSelectedMaterial() + property bool reevaluateLinkedMaterials: false property string linkedMaterialNames: { @@ -45,7 +46,7 @@ TabView { return "" } - return linkedMaterials.join(", "); + return linkedMaterials; } function getApproximateDiameter(diameter) @@ -90,7 +91,7 @@ TabView y: UM.Theme.getSize("default_lining").height width: base.width - property real rowHeight: textField.height + UM.Theme.getSize("default_lining").height + property real rowHeight: brandTextField.height + UM.Theme.getSize("default_lining").height MessageDialog { @@ -105,29 +106,23 @@ TabView property var new_diameter_value: null; property var old_diameter_value: null; property var old_approximate_diameter_value: null; - property bool keyPressed: false onYes: { base.setMetaDataEntry("approximate_diameter", old_approximate_diameter_value, getApproximateDiameter(new_diameter_value).toString()); base.setMetaDataEntry("properties/diameter", properties.diameter, new_diameter_value); + // CURA-6868 Make sure to update the extruder to user a diameter-compatible material. + Cura.MachineManager.updateMaterialWithVariant() + base.resetSelectedMaterial() } onNo: { - properties.diameter = old_diameter_value; - diameterSpinBox.value = properties.diameter; + base.properties.diameter = old_diameter_value; + diameterSpinBox.value = Qt.binding(function() { return base.properties.diameter }) } - onVisibilityChanged: - { - if (!visible && !keyPressed) - { - // If the user closes this dialog without clicking on any button, it's the same as clicking "No". - no(); - } - keyPressed = false; - } + onRejected: no() } Label { width: scrollView.columnWidth; height: parent.rowHeight; verticalAlignment: Qt.AlignVCenter; text: catalog.i18nc("@label", "Display Name") } @@ -143,7 +138,7 @@ TabView Label { width: scrollView.columnWidth; height: parent.rowHeight; verticalAlignment: Qt.AlignVCenter; text: catalog.i18nc("@label", "Brand") } ReadOnlyTextField { - id: textField; + id: brandTextField; width: scrollView.columnWidth; text: properties.brand; readOnly: !base.editingEnabled; @@ -153,6 +148,7 @@ TabView Label { width: scrollView.columnWidth; height: parent.rowHeight; verticalAlignment: Qt.AlignVCenter; text: catalog.i18nc("@label", "Material Type") } ReadOnlyTextField { + id: materialTypeField; width: scrollView.columnWidth; text: properties.material; readOnly: !base.editingEnabled; @@ -392,7 +388,7 @@ TabView { model: UM.SettingDefinitionsModel { - containerId: Cura.MachineManager.activeDefinitionId + containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" visibilityHandler: Cura.MaterialSettingsVisibilityHandler { } expanded: ["*"] } @@ -453,14 +449,14 @@ TabView UM.ContainerPropertyProvider { id: variantPropertyProvider - containerId: Cura.MachineManager.activeVariantId + containerId: Cura.MachineManager.activeStack.variant.id watchedProperties: [ "value" ] key: model.key } UM.ContainerPropertyProvider { id: machinePropertyProvider - containerId: Cura.MachineManager.activeDefinitionId + containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" watchedProperties: [ "value" ] key: model.key } @@ -572,7 +568,7 @@ TabView } // update the values - base.materialManager.setMaterialName(base.currentMaterialNode, new_name) + base.materialManagementModel.setMaterialName(base.currentMaterialNode, new_name) properties.name = new_name } diff --git a/resources/qml/Preferences/ProfileTab.qml b/resources/qml/Preferences/ProfileTab.qml index 0ae0899051..3c0c46ed72 100644 --- a/resources/qml/Preferences/ProfileTab.qml +++ b/resources/qml/Preferences/ProfileTab.qml @@ -27,6 +27,7 @@ Tab { anchors.fill: parent anchors.margins: UM.Theme.getSize("default_margin").width + id: profileSettingsView Component { @@ -37,14 +38,28 @@ Tab property var setting: qualitySettings.getItem(styleData.row) height: childrenRect.height width: (parent != null) ? parent.width : 0 - text: (styleData.value.substr(0,1) == "=") ? styleData.value : "" + text: + { + if (styleData.value === undefined) + { + return "" + } + return (styleData.value.substr(0,1) == "=") ? styleData.value : "" + } Label { anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.right: parent.right - text: (styleData.value.substr(0,1) == "=") ? catalog.i18nc("@info:status", "Calculated") : styleData.value + text: + { + if (styleData.value === undefined) + { + return "" + } + return (styleData.value.substr(0,1) == "=") ? catalog.i18nc("@info:status", "Calculated") : styleData.value + } font.strikeout: styleData.column == 1 && setting.user_value != "" && base.isQualityItemCurrentlyActivated font.italic: setting.profile_value_source == "quality_changes" || (setting.user_value != "" && base.isQualityItemCurrentlyActivated) opacity: font.strikeout ? 0.5 : 1 diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index 52c69b780e..fdb961ad21 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Uranium is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -7,26 +7,24 @@ import QtQuick.Layouts 1.3 import QtQuick.Dialogs 1.2 import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.6 as Cura Item { id: base - property QtObject qualityManager: CuraApplication.getQualityManager() property var resetEnabled: false // Keep PreferencesDialog happy property var extrudersModel: CuraApplication.getExtrudersModel() + property var qualityManagementModel: CuraApplication.getQualityManagementModel() UM.I18nCatalog { id: catalog; name: "cura"; } - Cura.QualityManagementModel { - id: qualitiesModel - } - - Label { + Label + { id: titleLabel - anchors { + anchors + { top: parent.top left: parent.left right: parent.right @@ -38,28 +36,41 @@ Item property var hasCurrentItem: base.currentItem != null - property var currentItem: { + property var currentItem: + { var current_index = qualityListView.currentIndex; - return (current_index == -1) ? null : qualitiesModel.getItem(current_index); + return (current_index == -1) ? null : base.qualityManagementModel.getItem(current_index); } property var currentItemName: hasCurrentItem ? base.currentItem.name : "" + property var currentItemDisplayName: hasCurrentItem ? base.qualityManagementModel.getQualityItemDisplayName(base.currentItem) : "" - property var isCurrentItemActivated: { - if (!base.currentItem) { + property var isCurrentItemActivated: + { + if (!base.currentItem) + { return false; } - return base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName; + if (base.currentItem.is_read_only) + { + return (base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName) && (base.currentItem.intent_category == Cura.MachineManager.activeIntentCategory); + } + else + { + return base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName; + } } - property var canCreateProfile: { + property var canCreateProfile: + { return isCurrentItemActivated && Cura.MachineManager.hasUserSettings; } Row // Button Row { id: buttonRow - anchors { + anchors + { left: parent.left right: parent.right top: titleLabel.bottom @@ -69,13 +80,18 @@ Item // Activate button Button { + id: activateMenuButton text: catalog.i18nc("@action:button", "Activate") iconName: "list-activate" enabled: !isCurrentItemActivated - onClicked: { - if (base.currentItem.is_read_only) { - Cura.MachineManager.setQualityGroup(base.currentItem.quality_group); - } else { + onClicked: + { + if (base.currentItem.is_read_only) + { + Cura.IntentManager.selectIntent(base.currentItem.intent_category, base.currentItem.quality_type); + } + else + { Cura.MachineManager.setQualityChangesGroup(base.currentItem.quality_changes_group); } } @@ -84,12 +100,14 @@ Item // Create button Button { + id: createMenuButton text: catalog.i18nc("@label", "Create") iconName: "list-add" enabled: base.canCreateProfile && !Cura.MachineManager.stacksHaveErrors visible: base.canCreateProfile - onClicked: { + onClicked: + { createQualityDialog.object = Cura.ContainerManager.makeUniqueName(base.currentItem.name); createQualityDialog.open(); createQualityDialog.selectText(); @@ -99,12 +117,14 @@ Item // Duplicate button Button { + id: duplicateMenuButton text: catalog.i18nc("@label", "Duplicate") iconName: "list-add" enabled: !base.canCreateProfile visible: !base.canCreateProfile - onClicked: { + onClicked: + { duplicateQualityDialog.object = Cura.ContainerManager.makeUniqueName(base.currentItem.name); duplicateQualityDialog.open(); duplicateQualityDialog.selectText(); @@ -114,10 +134,12 @@ Item // Remove button Button { + id: removeMenuButton text: catalog.i18nc("@action:button", "Remove") iconName: "list-remove" enabled: base.hasCurrentItem && !base.currentItem.is_read_only && !base.isCurrentItemActivated - onClicked: { + onClicked: + { forceActiveFocus(); confirmRemoveQualityDialog.open(); } @@ -126,10 +148,12 @@ Item // Rename button Button { + id: renameMenuButton text: catalog.i18nc("@action:button", "Rename") iconName: "edit-rename" enabled: base.hasCurrentItem && !base.currentItem.is_read_only - onClicked: { + onClicked: + { renameQualityDialog.object = base.currentItem.name; renameQualityDialog.open(); renameQualityDialog.selectText(); @@ -139,9 +163,11 @@ Item // Import button Button { + id: importMenuButton text: catalog.i18nc("@action:button", "Import") iconName: "document-import" - onClicked: { + onClicked: + { importDialog.open(); } } @@ -149,10 +175,12 @@ Item // Export button Button { + id: exportMenuButton text: catalog.i18nc("@action:button", "Export") iconName: "document-export" enabled: base.hasCurrentItem && !base.currentItem.is_read_only - onClicked: { + onClicked: + { exportDialog.open(); } } @@ -178,7 +206,7 @@ Item { base.newQualityNameToSelect = newName; // We want to switch to the new profile once it's created base.toActivateNewQuality = true; - base.qualityManager.createQualityChanges(newName); + base.qualityManagementModel.createQualityChanges(newName); } } @@ -188,7 +216,7 @@ Item // This connection makes sure that we will switch to the correct quality after the model gets updated Connections { - target: qualitiesModel + target: base.qualityManagementModel onItemsChanged: { var toSelectItemName = base.currentItem == null ? "" : base.currentItem.name; @@ -201,9 +229,9 @@ Item if (toSelectItemName != "") { // Select the required quality name if given - for (var idx = 0; idx < qualitiesModel.count; ++idx) + for (var idx = 0; idx < base.qualityManagementModel.count; ++idx) { - var item = qualitiesModel.getItem(idx); + var item = base.qualityManagementModel.getItem(idx); if (item.name == toSelectItemName) { // Switch to the newly created profile if needed @@ -233,7 +261,7 @@ Item object: "" onAccepted: { - base.qualityManager.duplicateQualityChanges(newName, base.currentItem); + base.qualityManagementModel.duplicateQualityChanges(newName, base.currentItem); } } @@ -250,7 +278,7 @@ Item onYes: { - base.qualityManager.removeQualityChangesGroup(base.currentItem.quality_changes_group); + base.qualityManagementModel.removeQualityChangesGroup(base.currentItem.quality_changes_group); // reset current item to the first if available qualityListView.currentIndex = -1; // Reset selection. } @@ -264,7 +292,7 @@ Item object: "" onAccepted: { - var actualNewName = base.qualityManager.renameQualityChangesGroup(base.currentItem.quality_changes_group, newName); + var actualNewName = base.qualityManagementModel.renameQualityChangesGroup(base.currentItem.quality_changes_group, newName); base.newQualityNameToSelect = actualNewName; // Select the new name after the model gets updated } } @@ -275,19 +303,22 @@ Item id: importDialog title: catalog.i18nc("@title:window", "Import Profile") selectExisting: true - nameFilters: qualitiesModel.getFileNameFilters("profile_reader") + nameFilters: base.qualityManagementModel.getFileNameFilters("profile_reader") folder: CuraApplication.getDefaultPath("dialog_profile_path") onAccepted: { var result = Cura.ContainerManager.importProfile(fileUrl); messageDialog.text = result.message; - if (result.status == "ok") { + if (result.status == "ok") + { messageDialog.icon = StandardIcon.Information; } - else if (result.status == "duplicate") { + else if (result.status == "duplicate") + { messageDialog.icon = StandardIcon.Warning; } - else { + else + { messageDialog.icon = StandardIcon.Critical; } messageDialog.open(); @@ -301,14 +332,15 @@ Item id: exportDialog title: catalog.i18nc("@title:window", "Export Profile") selectExisting: false - nameFilters: qualitiesModel.getFileNameFilters("profile_writer") + nameFilters: base.qualityManagementModel.getFileNameFilters("profile_writer") folder: CuraApplication.getDefaultPath("dialog_profile_path") onAccepted: { var result = Cura.ContainerManager.exportQualityChangesGroup(base.currentItem.quality_changes_group, fileUrl, selectedNameFilter); - if (result && result.status == "error") { + if (result && result.status == "error") + { messageDialog.icon = StandardIcon.Critical; messageDialog.text = result.message; messageDialog.open(); @@ -319,10 +351,12 @@ Item } } - Item { + Item + { id: contentsItem - anchors { + anchors + { top: titleLabel.bottom left: parent.left right: parent.right @@ -336,7 +370,8 @@ Item Item { - anchors { + anchors + { top: buttonRow.bottom topMargin: UM.Theme.getSize("default_margin").height left: parent.left @@ -344,17 +379,21 @@ Item bottom: parent.bottom } - SystemPalette { id: palette } + SystemPalette + { + id: palette + } Label { id: captionLabel - anchors { + anchors + { top: parent.top left: parent.left } visible: text != "" - text: catalog.i18nc("@label %1 is printer name", "Printer: %1").arg(Cura.MachineManager.activeMachineName) + text: catalog.i18nc("@label %1 is printer name", "Printer: %1").arg(Cura.MachineManager.activeMachine.name) width: profileScrollView.width elide: Text.ElideRight } @@ -362,14 +401,16 @@ Item ScrollView { id: profileScrollView - anchors { + anchors + { top: captionLabel.visible ? captionLabel.bottom : parent.top topMargin: captionLabel.visible ? UM.Theme.getSize("default_margin").height : 0 bottom: parent.bottom left: parent.left } - Rectangle { + Rectangle + { parent: viewport anchors.fill: parent color: palette.light @@ -383,16 +424,16 @@ Item { id: qualityListView - model: qualitiesModel + model: base.qualityManagementModel Component.onCompleted: { var selectedItemName = Cura.MachineManager.activeQualityOrQualityChangesName; // Select the required quality name if given - for (var idx = 0; idx < qualitiesModel.count; idx++) + for (var idx = 0; idx < base.qualityManagementModel.count; idx++) { - var item = qualitiesModel.getItem(idx); + var item = base.qualityManagementModel.getItem(idx); if (item.name == selectedItemName) { currentIndex = idx; @@ -401,7 +442,7 @@ Item } } - section.property: "is_read_only" + section.property: "section_name" section.delegate: Rectangle { height: childrenRect.height @@ -410,7 +451,7 @@ Item { anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_lining").width - text: section == "true" ? catalog.i18nc("@label", "Default profiles") : catalog.i18nc("@label", "Custom profiles") + text: section font.bold: true } } @@ -420,6 +461,9 @@ Item width: profileScrollView.width height: childrenRect.height + // Added this property to identify custom profiles in automated system tests (Squish) + property bool isReadOnly: model.is_read_only + property bool isCurrentItem: ListView.isCurrentItem color: isCurrentItem ? palette.highlight : (model.index % 2) ? palette.base : palette.alternateBase @@ -431,14 +475,27 @@ Item width: Math.floor((parent.width * 0.8)) text: model.name elide: Text.ElideRight - font.italic: model.name == Cura.MachineManager.activeQualityOrQualityChangesName + font.italic: + { + if (model.is_read_only) + { + // For built-in qualities, it needs to match both the intent category and the quality name + return model.name == Cura.MachineManager.activeQualityOrQualityChangesName && model.intent_category == Cura.MachineManager.activeIntentCategory + } + else + { + // For custom qualities, it only needs to match the name + return model.name == Cura.MachineManager.activeQualityOrQualityChangesName + } + } color: parent.isCurrentItem ? palette.highlightedText : palette.text } MouseArea { anchors.fill: parent - onClicked: { + onClicked: + { parent.ListView.view.currentIndex = model.index; } } @@ -451,7 +508,8 @@ Item { id: detailsPanel - anchors { + anchors + { left: profileScrollView.right leftMargin: UM.Theme.getSize("default_margin").width top: parent.top @@ -471,15 +529,21 @@ Item width: parent.width height: childrenRect.height - Label { - text: base.currentItemName + Label + { + anchors.left: parent.left + anchors.right: parent.right + text: base.currentItemDisplayName font: UM.Theme.getFont("large_bold") + elide: Text.ElideRight + renderType: Text.NativeRendering } } - Flow { + Flow + { id: currentSettingsActions - visible: base.hasCurrentItem && base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName + visible: base.hasCurrentItem && base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName && base.currentItem.intent_category == Cura.MachineManager.activeIntentCategory anchors.left: parent.left anchors.right: parent.right anchors.top: profileName.bottom @@ -500,7 +564,8 @@ Item } } - Column { + Column + { id: profileNotices anchors.top: currentSettingsActions.visible ? currentSettingsActions.bottom : currentSettingsActions.anchors.top anchors.topMargin: UM.Theme.getSize("default_margin").height @@ -508,14 +573,16 @@ Item anchors.right: parent.right spacing: UM.Theme.getSize("default_margin").height - Label { + Label + { id: defaultsMessage visible: false text: catalog.i18nc("@action:label", "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below.") wrapMode: Text.WordWrap width: parent.width } - Label { + Label + { id: noCurrentSettingsMessage visible: base.isCurrentItemActivated && !Cura.MachineManager.hasUserSettings text: catalog.i18nc("@action:label", "Your current settings match the selected profile.") @@ -524,7 +591,6 @@ Item } } - TabView { anchors.left: parent.left diff --git a/resources/qml/Preferences/ReadOnlySpinBox.qml b/resources/qml/Preferences/ReadOnlySpinBox.qml index 1bbef82b1e..11e47b38b2 100644 --- a/resources/qml/Preferences/ReadOnlySpinBox.qml +++ b/resources/qml/Preferences/ReadOnlySpinBox.qml @@ -34,8 +34,8 @@ Item anchors.fill: parent onEditingFinished: base.editingFinished() - Keys.onEnterPressed: base.editingFinished() - Keys.onReturnPressed: base.editingFinished() + Keys.onEnterPressed: spinBox.focus = false + Keys.onReturnPressed: spinBox.focus = false } Label diff --git a/resources/qml/Preferences/SettingVisibilityPage.qml b/resources/qml/Preferences/SettingVisibilityPage.qml index 3f7571a170..eda40af0b1 100644 --- a/resources/qml/Preferences/SettingVisibilityPage.qml +++ b/resources/qml/Preferences/SettingVisibilityPage.qml @@ -151,7 +151,7 @@ UM.PreferencesPage model: UM.SettingDefinitionsModel { id: definitionsModel - containerId: Cura.MachineManager.activeDefinitionId + containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" showAll: true exclude: ["machine_settings", "command_line_settings"] showAncestors: true diff --git a/resources/qml/PrintMonitor.qml b/resources/qml/PrintMonitor.qml index d44acf0adb..19c2562874 100644 --- a/resources/qml/PrintMonitor.qml +++ b/resources/qml/PrintMonitor.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -49,11 +49,6 @@ Item property var activePrinter: connectedDevice != null ? connectedDevice.activePrinter : null property var activePrintJob: activePrinter != null ? activePrinter.activePrintJob: null - PrintSetupTooltip - { - id: tooltip - } - Column { id: printMonitor @@ -183,4 +178,9 @@ Item width: base.width } } + + PrintSetupTooltip + { + id: tooltip + } } \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml b/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml index 98bb5c0405..46297659ff 100644 --- a/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml +++ b/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml @@ -1,12 +1,14 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 -import QtQuick.Controls 2.0 +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Controls 1.4 as OldControls +import QtQuick.Layouts 1.3 import UM 1.3 as UM -import Cura 1.0 as Cura - +import Cura 1.6 as Cura +import ".." Item { @@ -17,19 +19,187 @@ Item property var extrudersModel: CuraApplication.getExtrudersModel() - // Profile selector row - GlobalProfileSelector + Item { - id: globalProfileRow + id: intent + height: childrenRect.height + anchors { top: parent.top - topMargin: parent.padding + topMargin: UM.Theme.getSize("default_margin").height left: parent.left leftMargin: parent.padding right: parent.right rightMargin: parent.padding } + + Label + { + id: profileLabel + anchors + { + top: parent.top + bottom: parent.bottom + left: parent.left + right: intentSelection.left + } + text: catalog.i18nc("@label", "Profile") + font: UM.Theme.getFont("medium") + renderType: Text.NativeRendering + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + } + + NoIntentIcon + { + affected_extruders: Cura.MachineManager.extruderPositionsWithNonActiveIntent + intent_type: Cura.MachineManager.activeIntentCategory + anchors.right: intentSelection.left + anchors.rightMargin: UM.Theme.getSize("narrow_margin").width + width: Math.round(profileLabel.height * 0.5) + anchors.verticalCenter: parent.verticalCenter + height: width + visible: affected_extruders.length + } + + Button + { + id: intentSelection + onClicked: menu.opened ? menu.close() : menu.open() + + anchors.right: parent.right + width: UM.Theme.getSize("print_setup_big_item").width + height: textLabel.contentHeight + 2 * UM.Theme.getSize("narrow_margin").height + hoverEnabled: true + + baselineOffset: null // If we don't do this, there is a binding loop. WHich is a bit weird, since we override the contentItem anyway... + + contentItem: RowLayout + { + spacing: 0 + anchors.left: parent.left + anchors.right: customisedSettings.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + Label + { + id: textLabel + text: Cura.MachineManager.activeQualityDisplayNameMap["main"] + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + Layout.margins: 0 + Layout.maximumWidth: Math.floor(parent.width * 0.7) // Always leave >= 30% for the rest of the row. + height: contentHeight + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + elide: Text.ElideRight + } + + Label + { + text: activeQualityDetailText() + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text_detail") + Layout.margins: 0 + Layout.fillWidth: true + + height: contentHeight + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + elide: Text.ElideRight + + function activeQualityDetailText() + { + var resultMap = Cura.MachineManager.activeQualityDisplayNameMap + var resultSuffix = resultMap["suffix"] + var result = "" + + if (Cura.MachineManager.isActiveQualityExperimental) + { + resultSuffix += " (Experimental)" + } + + if (Cura.MachineManager.isActiveQualitySupported) + { + if (Cura.MachineManager.activeQualityLayerHeight > 0) + { + if (resultSuffix) + { + result += " - " + resultSuffix + } + result += " - " + result += Cura.MachineManager.activeQualityLayerHeight + "mm" + } + } + + return result + } + } + } + + background: Rectangle + { + id: backgroundItem + border.color: intentSelection.hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") + border.width: UM.Theme.getSize("default_lining").width + radius: UM.Theme.getSize("default_radius").width + color: UM.Theme.getColor("main_background") + } + + UM.SimpleButton + { + id: customisedSettings + + visible: Cura.MachineManager.hasUserSettings + width: UM.Theme.getSize("print_setup_icon").width + height: UM.Theme.getSize("print_setup_icon").height + + anchors.verticalCenter: parent.verticalCenter + anchors.right: downArrow.left + anchors.rightMargin: UM.Theme.getSize("default_margin").width + + color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); + iconSource: UM.Theme.getIcon("star") + + onClicked: + { + forceActiveFocus(); + Cura.Actions.manageProfiles.trigger() + } + onEntered: + { + var content = catalog.i18nc("@tooltip", "Some setting/override values are different from the values stored in the profile.\n\nClick to open the profile manager.") + base.showTooltip(intent, Qt.point(-UM.Theme.getSize("default_margin").width, 0), content) + } + onExited: base.hideTooltip() + } + UM.RecolorImage + { + id: downArrow + + source: UM.Theme.getIcon("arrow_bottom") + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + + anchors + { + right: parent.right + verticalCenter: parent.verticalCenter + rightMargin: UM.Theme.getSize("default_margin").width + } + + color: UM.Theme.getColor("setting_control_button") + } + } + + QualitiesWithIntentMenu + { + id: menu + y: intentSelection.y + intentSelection.height + x: intentSelection.x + width: intentSelection.width + } } UM.TabRow @@ -40,7 +210,7 @@ Item anchors { - top: globalProfileRow.bottom + top: intent.bottom topMargin: UM.Theme.getSize("default_margin").height left: parent.left leftMargin: parent.padding @@ -99,7 +269,7 @@ Item { anchors { - top: tabBar.visible ? tabBar.bottom : globalProfileRow.bottom + top: tabBar.visible ? tabBar.bottom : intent.bottom topMargin: -UM.Theme.getSize("default_lining").width left: parent.left leftMargin: parent.padding diff --git a/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml b/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml deleted file mode 100644 index 32c07a52a6..0000000000 --- a/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.2 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -Item -{ - id: globalProfileRow - height: childrenRect.height - - Label - { - id: globalProfileLabel - anchors - { - top: parent.top - bottom: parent.bottom - left: parent.left - right: globalProfileSelection.left - } - text: catalog.i18nc("@label", "Profile") - font: UM.Theme.getFont("medium") - color: UM.Theme.getColor("text") - verticalAlignment: Text.AlignVCenter - } - - ToolButton - { - id: globalProfileSelection - - text: generateActiveQualityText() - width: UM.Theme.getSize("print_setup_big_item").width - height: UM.Theme.getSize("print_setup_big_item").height - anchors - { - top: parent.top - right: parent.right - } - tooltip: Cura.MachineManager.activeQualityOrQualityChangesName - style: UM.Theme.styles.print_setup_header_button - activeFocusOnPress: true - menu: Cura.ProfileMenu { } - - function generateActiveQualityText() - { - var result = Cura.MachineManager.activeQualityOrQualityChangesName - if (Cura.MachineManager.isActiveQualityExperimental) - { - result += " (Experimental)" - } - - if (Cura.MachineManager.isActiveQualitySupported) - { - if (Cura.MachineManager.activeQualityLayerHeight > 0) - { - result += " " - result += " - " - result += Cura.MachineManager.activeQualityLayerHeight + "mm" - result += "" - } - } - - return result - } - - UM.SimpleButton - { - id: customisedSettings - - visible: Cura.MachineManager.hasUserSettings - width: UM.Theme.getSize("print_setup_icon").width - height: UM.Theme.getSize("print_setup_icon").height - - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: Math.round(UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("thick_margin").width) - - color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); - iconSource: UM.Theme.getIcon("star") - - onClicked: - { - forceActiveFocus(); - Cura.Actions.manageProfiles.trigger() - } - onEntered: - { - var content = catalog.i18nc("@tooltip","Some setting/override values are different from the values stored in the profile.\n\nClick to open the profile manager.") - base.showTooltip(globalProfileRow, Qt.point(-UM.Theme.getSize("default_margin").width, 0), content) - } - onExited: base.hideTooltip() - } - } -} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Custom/MenuButton.qml b/resources/qml/PrintSetupSelector/Custom/MenuButton.qml new file mode 100644 index 0000000000..ffa6a68c9d --- /dev/null +++ b/resources/qml/PrintSetupSelector/Custom/MenuButton.qml @@ -0,0 +1,54 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.6 as Cura + +Button +{ + // This is a work around for a qml issue. Since the default button uses a private implementation for contentItem + // (the so called IconText), which handles the mnemonic conversion (aka; ensuring that &Button) text property + // is rendered with the B underlined. Since we're also forced to mix controls 1.0 and 2.0 actions together, + // we need a special property for the text of the label if we do want it to be rendered correclty, but don't want + // another shortcut to be added (which will cause for "QQuickAction::event: Ambiguous shortcut overload: " to + // happen. + property string labelText: "" + id: button + hoverEnabled: true + + background: Rectangle + { + id: backgroundRectangle + border.width: UM.Theme.getSize("default_lining").width + border.color: button.checked ? UM.Theme.getColor("setting_control_border_highlight") : "transparent" + color: button.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent" + radius: UM.Theme.getSize("action_button_radius").width + } + + // Workarround to ensure that the mnemonic highlighting happens correctly + function replaceText(txt) + { + var index = txt.indexOf("&") + if(index >= 0) + { + txt = txt.replace(txt.substr(index, 2), ("" + txt.substr(index + 1, 1) + "")) + } + return txt + } + + contentItem: Label + { + id: textLabel + text: button.text != "" ? replaceText(button.text) : replaceText(button.labelText) + height: contentHeight + verticalAlignment: Text.AlignVCenter + anchors.left: button.left + anchors.leftMargin: UM.Theme.getSize("wide_margin").width + renderType: Text.NativeRendering + font: UM.Theme.getFont("default") + color: button.enabled ? UM.Theme.getColor("text") :UM.Theme.getColor("text_inactive") + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml b/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml new file mode 100644 index 0000000000..ff235a8a67 --- /dev/null +++ b/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml @@ -0,0 +1,335 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.6 as Cura + +Popup +{ + id: popup + implicitWidth: 400 + property var dataModel: Cura.IntentCategoryModel {} + + property int defaultMargin: UM.Theme.getSize("default_margin").width + property color backgroundColor: UM.Theme.getColor("main_background") + property color borderColor: UM.Theme.getColor("lining") + + topPadding: UM.Theme.getSize("narrow_margin").height + rightPadding: UM.Theme.getSize("default_lining").width + leftPadding: UM.Theme.getSize("default_lining").width + + padding: 0 + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + background: Cura.RoundedRectangle + { + color: backgroundColor + border.width: UM.Theme.getSize("default_lining").width + border.color: borderColor + cornerSide: Cura.RoundedRectangle.Direction.Down + } + + ButtonGroup + { + id: buttonGroup + exclusive: true + onClicked: popup.visible = false + } + + contentItem: Column + { + // This repeater adds the intent labels + ScrollView + { + property real maximumHeight: screenScaleFactor * 400 + contentHeight: dataColumn.height + height: Math.min(contentHeight, maximumHeight) + clip: true + + ScrollBar.vertical.policy: height == maximumHeight ? ScrollBar.AlwaysOn: ScrollBar.AlwaysOff + + Column + { + id: dataColumn + width: parent.width + Repeater + { + model: dataModel + delegate: Item + { + // We need to set it like that, otherwise we'd have to set the sub model with model: model.qualities + // Which obviously won't work due to naming conflicts. + property variant subItemModel: model.qualities + + height: childrenRect.height + width: popup.contentWidth + + Label + { + id: headerLabel + text: model.name + color: UM.Theme.getColor("text_inactive") + renderType: Text.NativeRendering + width: parent.width + height: visible ? contentHeight: 0 + visible: qualitiesList.visibleChildren.length > 0 + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + MouseArea // tooltip hover area + { + anchors.fill: parent + hoverEnabled: true + enabled: model.description !== undefined + acceptedButtons: Qt.NoButton // react to hover only, don't steal clicks + + onEntered: + { + base.showTooltip( + headerLabel, + Qt.point(- UM.Theme.getSize("default_margin").width, 0), + model.description + ) + } + onExited: base.hideTooltip() + } + } + + Column + { + id: qualitiesList + anchors.top: headerLabel.bottom + anchors.left: parent.left + anchors.right: parent.right + + // We set it by means of a binding, since then we can use the when condition, which we need to + // prevent a binding loop. + Binding + { + target: parent + property: "height" + value: parent.childrenRect.height + when: parent.visibleChildren.length > 0 + } + + // Add the qualities that belong to the intent + Repeater + { + visible: false + model: subItemModel + MenuButton + { + id: button + + onClicked: Cura.IntentManager.selectIntent(model.intent_category, model.quality_type) + + width: parent.width + checkable: true + visible: model.available + text: model.name + " - " + model.layer_height + " mm" + checked: + { + if (Cura.MachineManager.hasCustomQuality) + { + // When user created profile is active, no quality tickbox should be active. + return false; + } + return Cura.MachineManager.activeQualityType == model.quality_type && Cura.MachineManager.activeIntentCategory == model.intent_category; + } + ButtonGroup.group: buttonGroup + } + } + } + } + } + //Another "intent category" for custom profiles. + Item + { + height: childrenRect.height + anchors + { + left: parent.left + right: parent.right + } + + Label + { + id: customProfileHeader + text: catalog.i18nc("@label:header", "Custom profiles") + renderType: Text.NativeRendering + height: visible ? contentHeight: 0 + enabled: false + visible: profilesList.visibleChildren.length > 1 + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + color: UM.Theme.getColor("text_inactive") + } + + Column + { + id: profilesList + anchors + { + top: customProfileHeader.bottom + left: parent.left + right: parent.right + } + + //We set it by means of a binding, since then we can use the + //"when" condition, which we need to prevent a binding loop. + Binding + { + target: parent + property: "height" + value: parent.childrenRect.height + when: parent.visibleChildren.length > 1 + } + + //Add all the custom profiles. + Repeater + { + model: Cura.CustomQualityProfilesDropDownMenuModel + MenuButton + { + onClicked: Cura.MachineManager.setQualityChangesGroup(model.quality_changes_group) + + width: parent.width + checkable: true + visible: model.available + text: model.name + checked: + { + var active_quality_group = Cura.MachineManager.activeQualityChangesGroup + + if (active_quality_group != null) + { + return active_quality_group.name == model.quality_changes_group.name + } + return false + } + ButtonGroup.group: buttonGroup + } + } + } + } + } + } + + Rectangle + { + height: UM.Theme.getSize("default_lining").height + anchors.left: parent.left + anchors.right: parent.right + color: borderColor + } + + MenuButton + { + labelText: Cura.Actions.addProfile.text + + anchors.left: parent.left + anchors.right: parent.right + + enabled: Cura.Actions.addProfile.enabled + onClicked: + { + Cura.Actions.addProfile.trigger() + popup.visible = false + } + } + MenuButton + { + labelText: Cura.Actions.updateProfile.text + anchors.left: parent.left + anchors.right: parent.right + + enabled: Cura.Actions.updateProfile.enabled + + onClicked: + { + popup.visible = false + Cura.Actions.updateProfile.trigger() + } + } + MenuButton + { + text: catalog.i18nc("@action:button", "Discard current changes") + + anchors.left: parent.left + anchors.right: parent.right + + enabled: Cura.MachineManager.hasUserSettings + + onClicked: + { + popup.visible = false + Cura.ContainerManager.clearUserContainers() + } + } + + Rectangle + { + height: UM.Theme.getSize("default_lining").width + anchors.left: parent.left + anchors.right: parent.right + color: borderColor + } + + MenuButton + { + id: manageProfilesButton + text: Cura.Actions.manageProfiles.text + anchors + { + left: parent.left + right: parent.right + } + + height: textLabel.contentHeight + 2 * UM.Theme.getSize("narrow_margin").height + + contentItem: Item + { + width: parent.width + height: childrenRect.height + + Label + { + id: textLabel + text: manageProfilesButton.text + height: contentHeight + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + UM.Theme.getSize("narrow_margin").width + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } + Label + { + id: shortcutLabel + text: Cura.Actions.manageProfiles.shortcut + height: contentHeight + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } + } + onClicked: + { + popup.visible = false + Cura.Actions.manageProfiles.trigger() + } + } + // spacer + Item + { + width: 2 + height: UM.Theme.getSize("default_radius").width + } + } +} diff --git a/resources/qml/PrintSetupSelector/NoIntentIcon.qml b/resources/qml/PrintSetupSelector/NoIntentIcon.qml new file mode 100644 index 0000000000..7943a05ab4 --- /dev/null +++ b/resources/qml/PrintSetupSelector/NoIntentIcon.qml @@ -0,0 +1,36 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.6 as Cura + +Item +{ + id: icon + property var affected_extruders + property var intent_type: "" + + implicitWidth: UM.Theme.getSize("section_icon").width + implicitHeight: UM.Theme.getSize("section_icon").height + + UM.RecolorImage + { + source: UM.Theme.getIcon("info") + color: UM.Theme.getColor("icon") + anchors.fill: parent + } + MouseArea + { + anchors.fill: parent + hoverEnabled: parent.visible + onEntered: + { + var tooltipContent = catalog.i18ncp("@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')", "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead", "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead", affected_extruders.length).arg(intent_type).arg(affected_extruders) + base.showTooltip(icon.parent, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipContent) + } + onExited: base.hideTooltip() + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/PrintSetupSelector.qml b/resources/qml/PrintSetupSelector/PrintSetupSelector.qml index 48ac07679d..1a9bd9f109 100644 --- a/resources/qml/PrintSetupSelector/PrintSetupSelector.qml +++ b/resources/qml/PrintSetupSelector/PrintSetupSelector.qml @@ -11,12 +11,14 @@ Cura.ExpandableComponent { id: printSetupSelector + dragPreferencesNamePrefix: "view/settings" + property bool preSlicedData: PrintInformation.preSliced contentPadding: UM.Theme.getSize("default_lining").width contentHeaderTitle: catalog.i18nc("@label", "Print settings") enabled: !preSlicedData - disabledText: catalog.i18nc("@label shown when we load a Gcode file", "Print setup disabled. G code file can not be modified.") + disabledText: catalog.i18nc("@label shown when we load a Gcode file", "Print setup disabled. G-code file can not be modified.") UM.I18nCatalog { @@ -32,4 +34,4 @@ Cura.ExpandableComponent onExpandedChanged: UM.Preferences.setValue("view/settings_visible", expanded) Component.onCompleted: expanded = UM.Preferences.getValue("view/settings_visible") -} \ No newline at end of file +} diff --git a/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml b/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml index 7da0e92bb9..79013233ed 100644 --- a/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml +++ b/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml @@ -14,6 +14,8 @@ Item { id: content + property int absoluteMinimumHeight: 200 * screenScaleFactor + width: UM.Theme.getSize("print_setup_widget").width - 2 * UM.Theme.getSize("default_margin").width height: contents.height + buttonRow.height @@ -23,6 +25,13 @@ Item Custom = 1 } + // Catch all mouse events + MouseArea + { + anchors.fill: parent + hoverEnabled: true + } + // Set the current mode index to the value that is stored in the preferences or Recommended mode otherwise. property int currentModeIndex: { @@ -86,8 +95,14 @@ Item Math.min ( UM.Preferences.getValue("view/settings_list_height"), - base.height - (customPrintSetup.mapToItem(null, 0, 0).y + buttonRow.height + UM.Theme.getSize("default_margin").height) + Math.max + ( + absoluteMinimumHeight, + base.height - (customPrintSetup.mapToItem(null, 0, 0).y + buttonRow.height + UM.Theme.getSize("default_margin").height) + ) ); + + updateDragPosition(); } } visible: currentModeIndex == PrintSetupSelectorContents.Mode.Custom @@ -134,6 +149,7 @@ Item Cura.SecondaryButton { + id: customSettingsButton anchors.top: parent.top anchors.right: parent.right anchors.margins: UM.Theme.getSize("default_margin").width @@ -143,7 +159,11 @@ Item iconSource: UM.Theme.getIcon("arrow_right") isIconOnRightSide: true visible: currentModeIndex == PrintSetupSelectorContents.Mode.Recommended - onClicked: currentModeIndex = PrintSetupSelectorContents.Mode.Custom + onClicked: + { + currentModeIndex = PrintSetupSelectorContents.Mode.Custom + updateDragPosition(); + } } //Invisible area at the bottom with which you can resize the panel. @@ -171,9 +191,9 @@ Item // position of mouse relative to dropdown align vertical centre of mouse area to cursor // v------------------------------v v------------v var h = mouseY + buttonRow.y + content.y - height / 2 | 0; - if(h < 200 * screenScaleFactor) //Enforce a minimum size. + if(h < absoluteMinimumHeight) //Enforce a minimum size. { - h = 200 * screenScaleFactor; + h = absoluteMinimumHeight; } //Absolute mouse Y position in the window, to prevent it from going outside the window. @@ -182,7 +202,13 @@ Item { h -= mouse_absolute_y - base.height; } - + // Enforce a minimum size (again). + // This is a bit of a hackish way to do it, but we've seen some ocasional reports that the size + // could get below the the minimum height. + if(h < absoluteMinimumHeight) + { + h = absoluteMinimumHeight; + } UM.Preferences.setValue("view/settings_list_height", h); } } diff --git a/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml b/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml index 96b244d803..1a15980693 100644 --- a/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml +++ b/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 @@ -20,10 +20,16 @@ RowLayout { if (Cura.MachineManager.activeStack) { - var text = Cura.MachineManager.activeQualityOrQualityChangesName + var resultMap = Cura.MachineManager.activeQualityDisplayNameMap + var text = resultMap["main"] + if (resultMap["suffix"]) + { + text += " - " + resultMap["suffix"] + } + if (!Cura.MachineManager.hasNotSupportedQuality) { - text += " " + layerHeight.properties.value + "mm" + text += " - " + layerHeight.properties.value + "mm" text += Cura.MachineManager.isActiveQualityExperimental ? " - " + catalog.i18nc("@label", "Experimental") : "" } return text @@ -31,6 +37,7 @@ RowLayout return "" } font: UM.Theme.getFont("medium") + elide: Text.ElideMiddle UM.SettingPropertyProvider { diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml index 941199707c..1ae265ab47 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml @@ -18,6 +18,7 @@ Item height: childrenRect.height property real labelColumnWidth: Math.round(width / 3) + property var curaRecommendedMode: Cura.RecommendedMode {} Cura.IconWithText { @@ -64,19 +65,7 @@ Item onClicked: { - var adhesionType = "skirt" - if (!parent.checked) - { - // Remove the "user" setting to see if the rest of the stack prescribes a brim or a raft - platformAdhesionType.removeFromContainer(0) - adhesionType = platformAdhesionType.properties.value - if(adhesionType == "skirt" || adhesionType == "none") - { - // If the rest of the stack doesn't prescribe an adhesion-type, default to a brim - adhesionType = "brim" - } - } - platformAdhesionType.setPropertyValue("value", adhesionType) + curaRecommendedMode.setAdhesion(!parent.checked) } onEntered: @@ -95,7 +84,7 @@ Item containerStack: Cura.MachineManager.activeMachine removeUnusedValue: false //Doesn't work with settings that are resolved. key: "adhesion_type" - watchedProperties: [ "value", "enabled" ] + watchedProperties: [ "value", "resolve", "enabled" ] storeIndex: 0 } } \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml index 6885f8c041..22c4039063 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 @@ -19,15 +19,8 @@ Item property bool settingsEnabled: Cura.ExtruderManager.activeExtruderStackId || extrudersEnabledCount.properties.value == 1 property real padding: UM.Theme.getSize("thick_margin").width - UM.I18nCatalog - { - id: catalog - name: "cura" - } - Column { - width: parent.width - 2 * parent.padding spacing: UM.Theme.getSize("wide_margin").height anchors diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml index 801e76382b..337aff573f 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml @@ -1,17 +1,15 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 +import QtQuick.Controls 2.3 as Controls2 import QtQuick.Controls.Styles 1.4 import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.6 as Cura +import ".." - -// -// Quality profile -// Item { id: qualityRow @@ -20,436 +18,184 @@ Item property real labelColumnWidth: Math.round(width / 3) property real settingsColumnWidth: width - labelColumnWidth - Timer - { - id: qualitySliderChangeTimer - interval: 50 - running: false - repeat: false - onTriggered: - { - var item = Cura.QualityProfilesDropDownMenuModel.getItem(qualitySlider.value); - Cura.MachineManager.activeQualityGroup = item.quality_group; - } - } - - Component.onCompleted: qualityModel.update() - - Connections - { - target: Cura.QualityProfilesDropDownMenuModel - onItemsChanged: qualityModel.update() - } - - Connections { - target: base - onVisibleChanged: - { - // update needs to be called when the widgets are visible, otherwise the step width calculation - // will fail because the width of an invisible item is 0. - if (visible) - { - qualityModel.update(); - } - } - } - - ListModel - { - id: qualityModel - - property var totalTicks: 0 - property var availableTotalTicks: 0 - property var existingQualityProfile: 0 - - property var qualitySliderActiveIndex: 0 - property var qualitySliderStepWidth: 0 - property var qualitySliderAvailableMin: 0 - property var qualitySliderAvailableMax: 0 - property var qualitySliderMarginRight: 0 - - function update () - { - reset() - - var availableMin = -1 - var availableMax = -1 - - for (var i = 0; i < Cura.QualityProfilesDropDownMenuModel.rowCount(); i++) - { - var qualityItem = Cura.QualityProfilesDropDownMenuModel.getItem(i) - - // Add each quality item to the UI quality model - qualityModel.append(qualityItem) - - // Set selected value - if (Cura.MachineManager.activeQualityType == qualityItem.quality_type) - { - // set to -1 when switching to user created profile so all ticks are clickable - if (Cura.MachineManager.hasCustomQuality) - { - qualityModel.qualitySliderActiveIndex = -1 - } - else - { - qualityModel.qualitySliderActiveIndex = i - } - - qualityModel.existingQualityProfile = 1 - } - - // Set min available - if (qualityItem.available && availableMin == -1) - { - availableMin = i - } - - // Set max available - if (qualityItem.available) - { - availableMax = i - } - } - - // Set total available ticks for active slider part - if (availableMin != -1) - { - qualityModel.availableTotalTicks = availableMax - availableMin + 1 - } - - // Calculate slider values - calculateSliderStepWidth(qualityModel.totalTicks) - calculateSliderMargins(availableMin, availableMax, qualityModel.totalTicks) - - qualityModel.qualitySliderAvailableMin = availableMin - qualityModel.qualitySliderAvailableMax = availableMax - } - - function calculateSliderStepWidth (totalTicks) - { - // Do not use Math.round otherwise the tickmarks won't be aligned - qualityModel.qualitySliderStepWidth = totalTicks != 0 ? - ((settingsColumnWidth - UM.Theme.getSize("print_setup_slider_handle").width) / (totalTicks)) : 0 - } - - function calculateSliderMargins (availableMin, availableMax, totalTicks) - { - if (availableMin == -1 || (availableMin == 0 && availableMax == 0)) - { - // Do not use Math.round otherwise the tickmarks won't be aligned - qualityModel.qualitySliderMarginRight = settingsColumnWidth - } - else if (availableMin == availableMax) - { - // Do not use Math.round otherwise the tickmarks won't be aligned - qualityModel.qualitySliderMarginRight = (totalTicks - availableMin) * qualitySliderStepWidth - } - else - { - // Do not use Math.round otherwise the tickmarks won't be aligned - qualityModel.qualitySliderMarginRight = (totalTicks - availableMax) * qualitySliderStepWidth - } - } - - function reset () { - qualityModel.clear() - qualityModel.availableTotalTicks = 0 - qualityModel.existingQualityProfile = 0 - - // check, the ticks count cannot be less than zero - qualityModel.totalTicks = Math.max(0, Cura.QualityProfilesDropDownMenuModel.rowCount() - 1) - } - } - // Here are the elements that are shown in the left column - Item + + Column { - id: titleRow - width: labelColumnWidth - height: childrenRect.height - - Cura.IconWithText - { - id: qualityRowTitle - source: UM.Theme.getIcon("category_layer_height") - text: catalog.i18nc("@label", "Layer Height") - font: UM.Theme.getFont("medium") - anchors.left: parent.left - anchors.right: customisedSettings.left - } - - UM.SimpleButton - { - id: customisedSettings - - visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.MachineManager.hasCustomQuality - height: visible ? UM.Theme.getSize("print_setup_icon").height : 0 - width: height - anchors - { - right: parent.right - rightMargin: UM.Theme.getSize("default_margin").width - leftMargin: UM.Theme.getSize("default_margin").width - verticalCenter: parent.verticalCenter - } - - color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button") - iconSource: UM.Theme.getIcon("reset") - - onClicked: - { - // if the current profile is user-created, switch to a built-in quality - Cura.MachineManager.resetToUseDefaultQuality() - } - onEntered: - { - var tooltipContent = catalog.i18nc("@tooltip","You have modified some profile settings. If you want to change these go to custom mode.") - base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipContent) - } - onExited: base.hideTooltip() - } - } - - // Show titles for the each quality slider ticks - Item - { - anchors.left: speedSlider.left - anchors.top: speedSlider.bottom - height: childrenRect.height - - Repeater - { - model: qualityModel - - Label - { - anchors.verticalCenter: parent.verticalCenter - anchors.top: parent.top - // The height has to be set manually, otherwise it's not automatically calculated in the repeater - height: UM.Theme.getSize("default_margin").height - color: (Cura.MachineManager.activeMachine != null && Cura.QualityProfilesDropDownMenuModel.getItem(index).available) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - text: - { - var result = "" - if(Cura.MachineManager.activeMachine != null) - { - result = Cura.QualityProfilesDropDownMenuModel.getItem(index).layer_height - - if(result == undefined) - { - result = ""; - } - else - { - result = Number(Math.round(result + "e+2") + "e-2"); //Round to 2 decimals. Javascript makes this difficult... - if (result == undefined || result != result) //Parse failure. - { - result = ""; - } - } - } - return result - } - - x: - { - // Make sure the text aligns correctly with each tick - if (qualityModel.totalTicks == 0) - { - // If there is only one tick, align it centrally - return Math.round(((settingsColumnWidth) - width) / 2) - } - else if (index == 0) - { - return Math.round(settingsColumnWidth / qualityModel.totalTicks) * index - } - else if (index == qualityModel.totalTicks) - { - return Math.round(settingsColumnWidth / qualityModel.totalTicks) * index - width - } - else - { - return Math.round((settingsColumnWidth / qualityModel.totalTicks) * index - (width / 2)) - } - } - font: UM.Theme.getFont("default") - } - } - } - - // Print speed slider - // Two sliders are created, one at the bottom with the unavailable qualities - // and the other at the top with the available quality profiles and so the handle to select them. - Item - { - id: speedSlider - height: childrenRect.height - anchors { - left: titleRow.right + left: parent.left right: parent.right - verticalCenter: titleRow.verticalCenter } - // Draw unavailable slider - Slider + spacing: UM.Theme.getSize("default_margin").height + + Controls2.ButtonGroup { - id: unavailableSlider + id: activeProfileButtonGroup + exclusive: true + onClicked: Cura.IntentManager.selectIntent(button.modelData.intent_category, button.modelData.quality_type) + } - width: parent.width - height: qualitySlider.height // Same height as the slider that is on top - updateValueWhileDragging : false - tickmarksEnabled: true - - minimumValue: 0 - // maximumValue must be greater than minimumValue to be able to see the handle. While the value is strictly - // speaking not always correct, it seems to have the correct behavior (switching from 0 available to 1 available) - maximumValue: qualityModel.totalTicks - stepSize: 1 - - style: SliderStyle + Item + { + height: childrenRect.height + anchors { - //Draw Unvailable line - groove: Item - { - Rectangle - { - height: UM.Theme.getSize("print_setup_slider_groove").height - width: control.width - UM.Theme.getSize("print_setup_slider_handle").width - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - color: UM.Theme.getColor("quality_slider_unavailable") - } - } - - handle: Item {} - - tickmarks: Repeater - { - id: qualityRepeater - model: qualityModel.totalTicks > 0 ? qualityModel : 0 - - Rectangle - { - color: Cura.QualityProfilesDropDownMenuModel.getItem(index).available ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - implicitWidth: UM.Theme.getSize("print_setup_slider_tickmarks").width - implicitHeight: UM.Theme.getSize("print_setup_slider_tickmarks").height - anchors.verticalCenter: parent.verticalCenter - - // Do not use Math.round otherwise the tickmarks won't be aligned - x: ((UM.Theme.getSize("print_setup_slider_handle").width / 2) - (implicitWidth / 2) + (qualityModel.qualitySliderStepWidth * index)) - radius: Math.round(implicitWidth / 2) - } - } + left: parent.left + right: parent.right } - - // Create a mouse area on top of the unavailable profiles to show a specific tooltip - MouseArea + Cura.IconWithText { - anchors.fill: parent - hoverEnabled: true - enabled: !Cura.MachineManager.hasCustomQuality + id: profileLabel + source: UM.Theme.getIcon("category_layer_height") + text: catalog.i18nc("@label", "Profiles") + font: UM.Theme.getFont("medium") + width: labelColumnWidth + } + UM.SimpleButton + { + id: resetToDefaultQualityButton + + visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.MachineManager.hasCustomQuality + height: visible ? UM.Theme.getSize("print_setup_icon").height : 0 + width: height + anchors + { + right: profileLabel.right + rightMargin: UM.Theme.getSize("default_margin").width + leftMargin: UM.Theme.getSize("default_margin").width + verticalCenter: parent.verticalCenter + } + + color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button") + iconSource: UM.Theme.getIcon("reset") + + onClicked: + { + // if the current profile is user-created, switch to a built-in quality + Cura.MachineManager.resetToUseDefaultQuality() + } onEntered: { - var tooltipContent = catalog.i18nc("@tooltip", "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile") - base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, customisedSettings.height), tooltipContent) + var tooltipContent = catalog.i18nc("@tooltip","You have modified some profile settings. If you want to change these go to custom mode.") + base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipContent) } onExited: base.hideTooltip() } - } - // Draw available slider - Slider - { - id: qualitySlider - - width: qualityModel.qualitySliderStepWidth * (qualityModel.availableTotalTicks - 1) + UM.Theme.getSize("print_setup_slider_handle").width - height: UM.Theme.getSize("print_setup_slider_handle").height // The handle is the widest element of the slider - enabled: qualityModel.totalTicks > 0 && !Cura.SimpleModeSettingsManager.isProfileCustomized - visible: qualityModel.availableTotalTicks > 0 - updateValueWhileDragging : false - - anchors + Cura.LabelBar { - right: parent.right - rightMargin: qualityModel.qualitySliderMarginRight - } - - minimumValue: qualityModel.qualitySliderAvailableMin >= 0 ? qualityModel.qualitySliderAvailableMin : 0 - // maximumValue must be greater than minimumValue to be able to see the handle. While the value is strictly - // speaking not always correct, it seems to have the correct behavior (switching from 0 available to 1 available) - maximumValue: qualityModel.qualitySliderAvailableMax >= 1 ? qualityModel.qualitySliderAvailableMax : 1 - stepSize: 1 - - value: qualityModel.qualitySliderActiveIndex - - style: SliderStyle - { - // Draw Available line - groove: Item + id: labelbar + anchors { - Rectangle - { - height: UM.Theme.getSize("print_setup_slider_groove").height - width: control.width - UM.Theme.getSize("print_setup_slider_handle").width - anchors.verticalCenter: parent.verticalCenter - - // Do not use Math.round otherwise the tickmarks won't be aligned - x: UM.Theme.getSize("print_setup_slider_handle").width / 2 - color: UM.Theme.getColor("quality_slider_available") - } + left: profileLabel.right + right: parent.right } - handle: Rectangle - { - id: qualityhandleButton - color: UM.Theme.getColor("primary") - implicitWidth: UM.Theme.getSize("print_setup_slider_handle").width - implicitHeight: implicitWidth - radius: Math.round(implicitWidth / 2) - visible: !Cura.SimpleModeSettingsManager.isProfileCustomized && !Cura.MachineManager.hasCustomQuality && qualityModel.existingQualityProfile - } - } - - onValueChanged: - { - // only change if an active machine is set and the slider is visible at all. - if (Cura.MachineManager.activeMachine != null && visible) - { - // prevent updating during view initializing. Trigger only if the value changed by user - if (qualitySlider.value != qualityModel.qualitySliderActiveIndex && qualityModel.qualitySliderActiveIndex != -1) - { - // start updating with short delay - qualitySliderChangeTimer.start() - } - } - } - - // This mouse area is only used to capture the onHover state and don't propagate it to the unavailable mouse area - MouseArea - { - anchors.fill: parent - hoverEnabled: true - acceptedButtons: Qt.NoButton - enabled: !Cura.MachineManager.hasCustomQuality + model: Cura.QualityProfilesDropDownMenuModel + modelKey: "layer_height" } } - // This mouse area will only take the mouse events and show a tooltip when the profile in use is - // a user created profile - MouseArea - { - anchors.fill: parent - hoverEnabled: true - visible: Cura.MachineManager.hasCustomQuality - onEntered: + Repeater + { + model: Cura.IntentCategoryModel {} + Item { - var tooltipContent = catalog.i18nc("@tooltip", "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab") - base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, customisedSettings.height), tooltipContent) + anchors + { + left: parent.left + right: parent.right + } + height: intentCategoryLabel.height + + Label + { + id: intentCategoryLabel + text: model.name + width: labelColumnWidth - UM.Theme.getSize("section_icon").width + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("section_icon").width + UM.Theme.getSize("narrow_margin").width + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + elide: Text.ElideRight + } + + Cura.RadioCheckbar + { + anchors + { + left: intentCategoryLabel.right + right: parent.right + } + dataModel: model["qualities"] + buttonGroup: activeProfileButtonGroup + + function checkedFunction(modelItem) + { + if(Cura.MachineManager.hasCustomQuality) + { + // When user created profile is active, no quality tickbox should be active. + return false + } + + if(modelItem === null) + { + return false + } + return Cura.MachineManager.activeQualityType == modelItem.quality_type && Cura.MachineManager.activeIntentCategory == modelItem.intent_category + } + + isCheckedFunction: checkedFunction + } + + MouseArea // Intent description tooltip hover area + { + id: intentDescriptionHoverArea + anchors.fill: parent + hoverEnabled: true + enabled: model.description !== undefined + acceptedButtons: Qt.NoButton // react to hover only, don't steal clicks + + Timer + { + id: intentTooltipTimer + interval: 500 + running: false + repeat: false + onTriggered: base.showTooltip( + intentCategoryLabel, + Qt.point(-(intentCategoryLabel.x - qualityRow.x) - UM.Theme.getSize("thick_margin").width, 0), + model.description + ) + } + + onEntered: intentTooltipTimer.start() + onExited: + { + base.hideTooltip() + intentTooltipTimer.stop() + } + } + + NoIntentIcon // This icon has hover priority over intentDescriptionHoverArea, so draw it above it. + { + affected_extruders: Cura.MachineManager.extruderPositionsWithNonActiveIntent + intent_type: model.name + anchors.right: intentCategoryLabel.right + anchors.rightMargin: UM.Theme.getSize("narrow_margin").width + width: intentCategoryLabel.height * 0.75 + anchors.verticalCenter: parent.verticalCenter + height: width + visible: Cura.MachineManager.activeIntentCategory == model.intent_category && affected_extruders.length + } + + } - onExited: base.hideTooltip() + } } } \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml index 7e115667c3..ed075c6b90 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml @@ -133,7 +133,14 @@ Item supportExtruderCombobox.color = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color } } - onCurrentIndexChanged: supportExtruderCombobox.color = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color + onCurrentIndexChanged: + { + var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color + if(maybeColor) + { + supportExtruderCombobox.color = maybeColor + } + } Binding { diff --git a/resources/qml/PrintSetupTooltip.qml b/resources/qml/PrintSetupTooltip.qml index 6b1538d849..41d68aef37 100644 --- a/resources/qml/PrintSetupTooltip.qml +++ b/resources/qml/PrintSetupTooltip.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2015 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -6,26 +6,43 @@ import QtQuick.Controls 2.3 import UM 1.0 as UM -UM.PointingRectangle { - id: base; - - width: UM.Theme.getSize("tooltip").width; - height: label.height + UM.Theme.getSize("tooltip_margins").height * 2; - color: UM.Theme.getColor("tooltip"); +UM.PointingRectangle +{ + id: base + property real sourceWidth: 0 + width: UM.Theme.getSize("tooltip").width + height: label.height + UM.Theme.getSize("tooltip_margins").height * 2 + color: UM.Theme.getColor("tooltip") arrowSize: UM.Theme.getSize("default_arrow").width - opacity: 0; - Behavior on opacity { NumberAnimation { duration: 100; } } + opacity: 0 - property alias text: label.text; + Behavior on opacity + { + NumberAnimation { duration: 100; } + } - function show(position) { - if(position.y + base.height > parent.height) { + property alias text: label.text + + function show(position) + { + if(position.y + base.height > parent.height) + { x = position.x - base.width; y = parent.height - base.height; - } else { - x = position.x - base.width; + } else + { + var new_x = x = position.x - base.width + + // If the tooltip would fall out of the screen, display it on the other side. + if(new_x < 0) + { + new_x = x + sourceWidth + base.width + } + + x = new_x + y = position.y - UM.Theme.getSize("tooltip_arrow_margins").height; if(y < 0) { @@ -37,14 +54,16 @@ UM.PointingRectangle { target = Qt.point(position.x + 1, position.y + Math.round(UM.Theme.getSize("tooltip_arrow_margins").height / 2)) } - function hide() { + function hide() + { base.opacity = 0; } Label { id: label; - anchors { + anchors + { top: parent.top; topMargin: UM.Theme.getSize("tooltip_margins").height; left: parent.left; diff --git a/resources/qml/PrinterOutput/ExtruderBox.qml b/resources/qml/PrinterOutput/ExtruderBox.qml index a19c02b0dd..9825c705d5 100644 --- a/resources/qml/PrinterOutput/ExtruderBox.qml +++ b/resources/qml/PrinterOutput/ExtruderBox.qml @@ -1,3 +1,6 @@ +//Copyright (c) 2019 Ultimaker B.V. +//Cura is released under the terms of the LGPLv3 or higher. + import QtQuick 2.2 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 @@ -35,7 +38,7 @@ Item Label //Extruder name. { - text: Cura.ExtruderManager.getExtruderName(position) != "" ? Cura.ExtruderManager.getExtruderName(position) : catalog.i18nc("@label", "Extruder") + text: Cura.MachineManager.activeMachine.extruders[position].name !== "" ? Cura.MachineManager.activeMachine.extruders[position].name : catalog.i18nc("@label", "Extruder") color: UM.Theme.getColor("text") font: UM.Theme.getFont("default") anchors.left: parent.left diff --git a/resources/qml/PrinterOutput/ManualPrinterControl.qml b/resources/qml/PrinterOutput/ManualPrinterControl.qml index 106ae7db03..8870fc6169 100644 --- a/resources/qml/PrinterOutput/ManualPrinterControl.qml +++ b/resources/qml/PrinterOutput/ManualPrinterControl.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 @@ -357,13 +357,16 @@ Item onHoveredChanged: { - if (containsMouse) { + if (containsMouse) + { base.showTooltip( base, - { x: 0, y: customCommandControlMouseArea.mapToItem(base, 0, 0).y }, + { x: -tooltip.width, y: customCommandControlMouseArea.mapToItem(base, 0, 0).y }, catalog.i18nc("@tooltip of G-code command input", "Send a custom G-code command to the connected printer. Press 'enter' to send the command.") ) - } else { + } + else + { base.hideTooltip() } } diff --git a/resources/qml/PrinterSelector/MachineSelector.qml b/resources/qml/PrinterSelector/MachineSelector.qml index e9452f4d35..2a101e4ae3 100644 --- a/resources/qml/PrinterSelector/MachineSelector.qml +++ b/resources/qml/PrinterSelector/MachineSelector.qml @@ -32,7 +32,11 @@ Cura.ExpandablePopup { return Cura.MachineManager.activeMachineNetworkGroupName } - return Cura.MachineManager.activeMachineName + if(Cura.MachineManager.activeMachine != null) + { + return Cura.MachineManager.activeMachine.name + } + return "" } source: { @@ -114,6 +118,7 @@ Cura.ExpandablePopup MachineSelectorList { + id: machineSelectorList // Can't use parent.width since the parent is the flickable component and not the ScrollView width: scroll.width - scroll.leftPadding - scroll.rightPadding property real maximumHeight: UM.Theme.getSize("machine_selector_widget_content").height - buttonRow.height @@ -130,7 +135,6 @@ Cura.ExpandablePopup scroll.height = Math.min(contentHeight, maximumHeight) popup.height = scroll.height + buttonRow.height } - } } @@ -156,9 +160,13 @@ Cura.ExpandablePopup Cura.SecondaryButton { + id: addPrinterButton leftPadding: UM.Theme.getSize("default_margin").width rightPadding: UM.Theme.getSize("default_margin").width text: catalog.i18nc("@button", "Add printer") + // The maximum width of the button is half of the total space, minus the padding of the parent, the left + // padding of the component and half the spacing because of the space between buttons. + maximumWidth: UM.Theme.getSize("machine_selector_widget_content").width / 2 - parent.padding - leftPadding - parent.spacing / 2 onClicked: { toggleContent() @@ -168,9 +176,13 @@ Cura.ExpandablePopup Cura.SecondaryButton { + id: managePrinterButton leftPadding: UM.Theme.getSize("default_margin").width rightPadding: UM.Theme.getSize("default_margin").width text: catalog.i18nc("@button", "Manage printers") + // The maximum width of the button is half of the total space, minus the padding of the parent, the right + // padding of the component and half the spacing because of the space between buttons. + maximumWidth: UM.Theme.getSize("machine_selector_widget_content").width / 2 - parent.padding - rightPadding - parent.spacing / 2 onClicked: { toggleContent() diff --git a/resources/qml/PrinterSelector/MachineSelectorButton.qml b/resources/qml/PrinterSelector/MachineSelectorButton.qml index 39e63d27c3..115957dd64 100644 --- a/resources/qml/PrinterSelector/MachineSelectorButton.qml +++ b/resources/qml/PrinterSelector/MachineSelectorButton.qml @@ -1,12 +1,13 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 -import QtQuick.Controls 2.1 +import QtQuick 2.10 +import QtQuick.Controls 2.3 import UM 1.1 as UM import Cura 1.0 as Cura + Button { id: machineSelectorButton @@ -18,12 +19,23 @@ Button checkable: true hoverEnabled: true + property bool selected: checked + property bool printerTypeLabelAutoFit: false + property var outputDevice: null property var printerTypesList: [] + // Indicates if only to update the printer types list when this button is checked + property bool updatePrinterTypesOnlyWhenChecked: true + + property var updatePrinterTypesFunction: updatePrinterTypesList + // This function converts the printer type string to another string. + property var printerTypeLabelConversionFunction: Cura.MachineManager.getAbbreviatedMachineName + function updatePrinterTypesList() { - printerTypesList = (checked && (outputDevice != null)) ? outputDevice.uniquePrinterTypes : [] + var to_update = (updatePrinterTypesOnlyWhenChecked && checked) || !updatePrinterTypesOnlyWhenChecked + printerTypesList = (to_update && outputDevice != null) ? outputDevice.uniquePrinterTypes : [] } contentItem: Item @@ -41,7 +53,7 @@ Button verticalCenter: parent.verticalCenter } text: machineSelectorButton.text - color: UM.Theme.getColor("text") + color: enabled ? UM.Theme.getColor("text") : UM.Theme.getColor("small_button_text") font: UM.Theme.getFont("medium") visible: text != "" renderType: Text.NativeRendering @@ -60,13 +72,15 @@ Button verticalCenter: parent.verticalCenter } spacing: UM.Theme.getSize("narrow_margin").width + visible: (updatePrinterTypesOnlyWhenChecked && machineSelectorButton.checked) || !updatePrinterTypesOnlyWhenChecked Repeater { model: printerTypesList delegate: Cura.PrinterTypeLabel { - text: Cura.MachineManager.getAbbreviatedMachineName(modelData) + autoFit: printerTypeLabelAutoFit + text: printerTypeLabelConversionFunction(modelData) } } } @@ -75,29 +89,30 @@ Button background: Rectangle { id: backgroundRect - color: machineSelectorButton.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent" + color: + { + if (!machineSelectorButton.enabled) + { + return UM.Theme.getColor("action_button_disabled") + } + return machineSelectorButton.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent" + } radius: UM.Theme.getSize("action_button_radius").width border.width: UM.Theme.getSize("default_lining").width - border.color: machineSelectorButton.checked ? UM.Theme.getColor("primary") : "transparent" - } - - onClicked: - { - toggleContent() - Cura.MachineManager.setActiveMachine(model.id) + border.color: machineSelectorButton.selected ? UM.Theme.getColor("primary") : "transparent" } Connections { target: outputDevice - onUniqueConfigurationsChanged: updatePrinterTypesList() + onUniqueConfigurationsChanged: updatePrinterTypesFunction() } Connections { target: Cura.MachineManager - onOutputDevicesChanged: updatePrinterTypesList() + onOutputDevicesChanged: updatePrinterTypesFunction() } - Component.onCompleted: updatePrinterTypesList() + Component.onCompleted: updatePrinterTypesFunction() } diff --git a/resources/qml/PrinterSelector/MachineSelectorList.qml b/resources/qml/PrinterSelector/MachineSelectorList.qml index 49d9d31f2b..a7c041630f 100644 --- a/resources/qml/PrinterSelector/MachineSelectorList.qml +++ b/resources/qml/PrinterSelector/MachineSelectorList.qml @@ -32,15 +32,12 @@ ListView width: listView.width outputDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null - checked: + checked: Cura.MachineManager.activeMachine.id == model.id + + onClicked: { - // If the machine has a remote connection - var result = Cura.MachineManager.activeMachineId == model.id - if (Cura.MachineManager.activeMachineHasRemoteConnection) - { - result |= Cura.MachineManager.activeMachineNetworkGroupName == model.metadata["group_name"] - } - return result + toggleContent() + Cura.MachineManager.setActiveMachine(model.id) } } } diff --git a/resources/qml/PrinterTypeLabel.qml b/resources/qml/PrinterTypeLabel.qml index cfc9e56513..f2e8dc6f48 100644 --- a/resources/qml/PrinterTypeLabel.qml +++ b/resources/qml/PrinterTypeLabel.qml @@ -12,7 +12,9 @@ Item { property alias text: printerTypeLabel.text - width: UM.Theme.getSize("printer_type_label").width + property bool autoFit: false + + width: autoFit ? (printerTypeLabel.width + UM.Theme.getSize("default_margin").width) : UM.Theme.getSize("printer_type_label").width height: UM.Theme.getSize("printer_type_label").height Rectangle diff --git a/resources/qml/RadioCheckbar.qml b/resources/qml/RadioCheckbar.qml new file mode 100644 index 0000000000..0b8709fe7a --- /dev/null +++ b/resources/qml/RadioCheckbar.qml @@ -0,0 +1,154 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 +import UM 1.1 as UM + +Item +{ + id: base + property ButtonGroup buttonGroup: null + + property color activeColor: UM.Theme.getColor("primary") + property color inactiveColor: UM.Theme.getColor("slider_groove") + property color defaultItemColor: UM.Theme.getColor("slider_groove_fill") + property color defaultItemFillColor: UM.Theme.getColor("main_background") + property int checkboxSize: Math.round(UM.Theme.getSize("radio_button").height * 0.75) + property int inactiveMarkerSize: 2 * barSize + property int barSize: UM.Theme.getSize("slider_groove_radius").height + property var isCheckedFunction // Function that accepts the modelItem and returns if the item should be active. + + implicitWidth: 200 * screenScaleFactor + implicitHeight: checkboxSize + + property var dataModel: null + + // The horizontal inactive bar that sits behind the buttons + Rectangle + { + id: inactiveLine + color: inactiveColor + + height: barSize + + anchors + { + left: buttonBar.left + right: buttonBar.right + leftMargin: Math.round((checkboxSize - inactiveMarkerSize) / 2) + rightMargin: Math.round((checkboxSize - inactiveMarkerSize) / 2) + verticalCenter: parent.verticalCenter + } + } + + + RowLayout + { + id: buttonBar + anchors.top: parent.top + height: checkboxSize + width: parent.width + spacing: 0 + + Repeater + { + id: repeater + model: base.dataModel + height: checkboxSize + Item + { + Layout.fillWidth: true + Layout.fillHeight: true + // The last item of the repeater needs to be shorter, as we don't need another part to fit + // the horizontal bar. The others should essentially not be limited. + Layout.maximumWidth: index + 1 === repeater.count ? activeComponent.width : 200000000 + + property bool isEnabled: model.available + // The horizontal bar between the checkable options. + // Note that the horizontal bar points towards the previous item. + Rectangle + { + property Item previousItem: repeater.itemAt(index - 1) + + height: barSize + width: Math.round(buttonBar.width / (repeater.count - 1) - activeComponent.width - 2) + color: defaultItemColor + + anchors + { + right: activeComponent.left + verticalCenter: parent.verticalCenter + } + visible: previousItem !== null && previousItem.isEnabled && isEnabled + } + Loader + { + id: activeComponent + sourceComponent: isEnabled? checkboxComponent : disabledComponent + width: checkboxSize + + property var modelItem: model + } + } + } + } + + Component + { + id: disabledComponent + Item + { + height: checkboxSize + width: checkboxSize + + Rectangle + { + // This can (and should) be done wiht a verticalCenter. For some reason it does work in QtCreator + // but not when using the exact same QML in Cura. + anchors.verticalCenter: parent ? parent.verticalCenter : undefined + anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined + height: inactiveMarkerSize + width: inactiveMarkerSize + radius: Math.round(width / 2) + color: inactiveColor + } + } + } + + Component + { + id: checkboxComponent + CheckBox + { + id: checkbox + ButtonGroup.group: buttonGroup + width: checkboxSize + height: checkboxSize + property var modelData: modelItem + + checked: isCheckedFunction(modelItem) + indicator: Rectangle + { + height: checkboxSize + width: checkboxSize + radius: Math.round(width / 2) + + border.color: defaultItemColor + color: defaultItemFillColor + + Rectangle + { + anchors + { + fill: parent + } + radius: Math.round(width / 2) + color: activeColor + visible: checkbox.checked + } + } + } + } +} diff --git a/resources/qml/Settings/SettingCategory.qml b/resources/qml/Settings/SettingCategory.qml index 1e88867889..18c5820832 100644 --- a/resources/qml/Settings/SettingCategory.qml +++ b/resources/qml/Settings/SettingCategory.qml @@ -237,7 +237,5 @@ Button onEntered: base.showTooltip(catalog.i18nc("@label","Some hidden settings use values different from their normal calculated value.\n\nClick to make these settings visible.")) onExited: base.hideTooltip() - - UM.I18nCatalog { id: catalog; name: "cura" } } } diff --git a/resources/qml/Settings/SettingCheckBox.qml b/resources/qml/Settings/SettingCheckBox.qml index 0c7321d08a..f5100eab74 100644 --- a/resources/qml/Settings/SettingCheckBox.qml +++ b/resources/qml/Settings/SettingCheckBox.qml @@ -29,7 +29,7 @@ SettingItem // 4: variant // 5: machine var value - if ((base.resolve != "None") && (stackLevel != 0) && (stackLevel != 1)) + if ((base.resolve !== undefined && base.resolve != "None") && (stackLevel != 0) && (stackLevel != 1)) { // We have a resolve function. Indicates that the setting is not settable per extruder and that // we have to choose between the resolved value (default) and the global value @@ -91,12 +91,51 @@ SettingItem } width: height - color: + radius: UM.Theme.getSize("setting_control_radius").width + border.width: UM.Theme.getSize("default_lining").width + + border.color: { + if(!enabled) + { + return UM.Theme.getColor("setting_control_disabled_border") + } + switch (propertyProvider.properties.validationState) + { + case "ValidatorState.Invalid": + case "ValidatorState.Exception": + case "ValidatorState.MinimumError": + case "ValidatorState.MaximumError": + return UM.Theme.getColor("setting_validation_error"); + case "ValidatorState.MinimumWarning": + case "ValidatorState.MaximumWarning": + return UM.Theme.getColor("setting_validation_warning"); + } + // Validation is OK. + if (control.containsMouse || control.activeFocus || hovered) + { + return UM.Theme.getColor("setting_control_border_highlight") + } + return UM.Theme.getColor("setting_control_border") + } + + color: { if (!enabled) { return UM.Theme.getColor("setting_control_disabled") } + switch (propertyProvider.properties.validationState) + { + case "ValidatorState.Invalid": + case "ValidatorState.Exception": + case "ValidatorState.MinimumError": + case "ValidatorState.MaximumError": + return UM.Theme.getColor("setting_validation_error_background") + case "ValidatorState.MinimumWarning": + case "ValidatorState.MaximumWarning": + return UM.Theme.getColor("setting_validation_warning_background") + } + // Validation is OK. if (control.containsMouse || control.activeFocus) { return UM.Theme.getColor("setting_control_highlight") @@ -104,21 +143,6 @@ SettingItem return UM.Theme.getColor("setting_control") } - radius: UM.Theme.getSize("setting_control_radius").width - border.width: UM.Theme.getSize("default_lining").width - border.color: - { - if (!enabled) - { - return UM.Theme.getColor("setting_control_disabled_border") - } - if (control.containsMouse || control.activeFocus) - { - return UM.Theme.getColor("setting_control_border_highlight") - } - return UM.Theme.getColor("setting_control_border") - } - UM.RecolorImage { anchors.verticalCenter: parent.verticalCenter diff --git a/resources/qml/Settings/SettingComboBox.qml b/resources/qml/Settings/SettingComboBox.qml index 768872d2f7..cbabb3ffd4 100644 --- a/resources/qml/Settings/SettingComboBox.qml +++ b/resources/qml/Settings/SettingComboBox.qml @@ -1,17 +1,18 @@ // Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 -import QtQuick.Controls 2.0 +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura -import UM 1.1 as UM SettingItem { id: base property var focusItem: control - - contents: ComboBox + contents: Cura.ComboBox { id: control @@ -20,125 +21,6 @@ SettingItem anchors.fill: parent - background: Rectangle - { - color: - { - if (!enabled) - { - return UM.Theme.getColor("setting_control_disabled") - } - - if (control.hovered || control.activeFocus) - { - return UM.Theme.getColor("setting_control_highlight") - } - - return UM.Theme.getColor("setting_control") - } - - radius: UM.Theme.getSize("setting_control_radius").width - border.width: UM.Theme.getSize("default_lining").width - border.color: - { - if (!enabled) - { - return UM.Theme.getColor("setting_control_disabled_border") - } - - if (control.hovered || control.activeFocus) - { - return UM.Theme.getColor("setting_control_border_highlight") - } - - return UM.Theme.getColor("setting_control_border") - } - } - - indicator: UM.RecolorImage - { - id: downArrow - x: control.width - width - control.rightPadding - y: control.topPadding + Math.round((control.availableHeight - height) / 2) - - source: UM.Theme.getIcon("arrow_bottom") - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width + 5 * screenScaleFactor - sourceSize.height: width + 5 * screenScaleFactor - - color: UM.Theme.getColor("setting_control_button") - } - - contentItem: Label - { - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width - anchors.verticalCenter: parent.verticalCenter - anchors.right: downArrow.left - - text: control.currentText - textFormat: Text.PlainText - renderType: Text.NativeRendering - font: UM.Theme.getFont("default") - color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text") - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - popup: Popup - { - y: control.height - UM.Theme.getSize("default_lining").height - width: control.width - implicitHeight: contentItem.implicitHeight + 2 * UM.Theme.getSize("default_lining").width - padding: UM.Theme.getSize("default_lining").width - - contentItem: ListView - { - clip: true - implicitHeight: contentHeight - model: control.popup.visible ? control.delegateModel : null - currentIndex: control.highlightedIndex - - ScrollIndicator.vertical: ScrollIndicator { } - } - - background: Rectangle - { - color: UM.Theme.getColor("setting_control") - border.color: UM.Theme.getColor("setting_control_border") - } - } - - delegate: ItemDelegate - { - width: control.width - 2 * UM.Theme.getSize("default_lining").width - height: control.height - highlighted: control.highlightedIndex == index - - contentItem: Label - { - // FIXME: Somehow the top/bottom anchoring is not correct on Linux and it results in invisible texts. - anchors.fill: parent - anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width - anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width - - text: modelData.value - textFormat: Text.PlainText - renderType: Text.NativeRendering - color: control.contentItem.color - font: UM.Theme.getFont("default") - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - background: Rectangle - { - color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent" - border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent" - } - } - onActivated: { forceActiveFocus() @@ -170,29 +52,29 @@ SettingItem value: { // FIXME this needs to go away once 'resolve' is combined with 'value' in our data model. - var value = undefined; - if ((base.resolve != "None") && (base.stackLevel != 0) && (base.stackLevel != 1)) + var value = undefined + if ((base.resolve !== undefined && base.resolve != "None") && (base.stackLevel != 0) && (base.stackLevel != 1)) { // We have a resolve function. Indicates that the setting is not settable per extruder and that // we have to choose between the resolved value (default) and the global value // (if user has explicitly set this). - value = base.resolve; + value = base.resolve } if (value == undefined) { - value = propertyProvider.properties.value; + value = propertyProvider.properties.value } - for(var i = 0; i < control.model.length; ++i) + for (var i = 0; i < control.model.length; i++) { - if(control.model[i].key == value) + if (control.model[i].key == value) { - return i; + return i } } - return -1; + return -1 } } } diff --git a/resources/qml/Settings/SettingExtruder.qml b/resources/qml/Settings/SettingExtruder.qml index 7162744ae5..ff57381ddf 100644 --- a/resources/qml/Settings/SettingExtruder.qml +++ b/resources/qml/Settings/SettingExtruder.qml @@ -75,7 +75,7 @@ SettingItem base.setActiveFocusToNextSetting(false) } - currentIndex: propertyProvider.properties.value + currentIndex: propertyProvider.properties.value !== undefined ? propertyProvider.properties.value : 0 property string color: "#fff" diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index e1a13fe425..9986c7eaf8 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -23,19 +23,32 @@ Item property alias contents: controlContainer.children property alias hovered: mouse.containsMouse - property var showRevertButton: true - property var showInheritButton: true - property var showLinkedSettingIcon: true - property var doDepthIndentation: true - property var doQualityUserSettingEmphasis: true + property bool showRevertButton: true + property bool showInheritButton: true + property bool showLinkedSettingIcon: true + property bool doDepthIndentation: true + property bool doQualityUserSettingEmphasis: true property var settingKey: definition.key //Used to detect each individual setting more easily in Squish GUI tests. // Create properties to put property provider stuff in (bindings break in qt 5.5.1 otherwise) property var state: propertyProvider.properties.state - // There is no resolve property if there is only one stack. - property var resolve: Cura.MachineManager.activeStackId != Cura.MachineManager.activeMachineId ? propertyProvider.properties.resolve : "None" + property var resolve: propertyProvider.properties.resolve property var stackLevels: propertyProvider.stackLevels property var stackLevel: stackLevels[0] + // A list of stack levels that will trigger to show the revert button + property var showRevertStackLevels: [0] + property bool resetButtonVisible: { + var is_revert_stack_level = false; + for (var i in base.showRevertStackLevels) + { + if (base.stackLevel == i) + { + is_revert_stack_level = true + break + } + } + return is_revert_stack_level && base.showRevertButton + } signal focusReceived() signal setActiveFocusToNextSetting(bool forward) @@ -43,7 +56,8 @@ Item signal showTooltip(string text) signal hideTooltip() signal showAllHiddenInheritedSettings(string category_id) - property string tooltipText: + + function createTooltipText() { var affects = settingDefinitionsModel.getRequiredBy(definition.key, "value") var affected_by = settingDefinitionsModel.getRequires(definition.key, "value") @@ -62,14 +76,19 @@ Item var tooltip = "%1\n

    %2

    ".arg(definition.label).arg(definition.description) + if(!propertyProvider.isValueUsed) + { + tooltip += "%1

    ".arg(catalog.i18nc("@label", "This setting is not used because all the settings that it influences are overridden.")) + } + if (affects_list != "") { - tooltip += "
    %1\n
      \n%2
    ".arg(catalog.i18nc("@label Header for list of settings.", "Affects")).arg(affects_list) + tooltip += "%1
      %2
    ".arg(catalog.i18nc("@label Header for list of settings.", "Affects")).arg(affects_list) } if (affected_by_list != "") { - tooltip += "
    %1\n
      \n%2
    ".arg(catalog.i18nc("@label Header for list of settings.", "Affected By")).arg(affected_by_list) + tooltip += "%1
      %2
    ".arg(catalog.i18nc("@label Header for list of settings.", "Affected By")).arg(affected_by_list) } return tooltip @@ -109,7 +128,7 @@ Item onTriggered: { - base.showTooltip(base.tooltipText) + base.showTooltip(base.createTooltipText()) } } @@ -130,7 +149,7 @@ Item color: UM.Theme.getColor("setting_control_text") opacity: (definition.visible) ? 1 : 0.5 // emphasize the setting if it has a value in the user or quality profile - font: base.doQualityUserSettingEmphasis && base.stackLevel != undefined && base.stackLevel <= 1 ? UM.Theme.getFont("default_italic") : UM.Theme.getFont("default") + font: base.doQualityUserSettingEmphasis && base.stackLevel !== undefined && base.stackLevel <= 1 ? UM.Theme.getFont("default_italic") : UM.Theme.getFont("default") } Row @@ -151,10 +170,11 @@ Item { id: linkedSettingIcon; - visible: Cura.MachineManager.activeStack != Cura.MachineManager.activeMachine && (!definition.settable_per_extruder || String(globalPropertyProvider.properties.limit_to_extruder) != "-1") && base.showLinkedSettingIcon + visible: (!definition.settable_per_extruder || String(globalPropertyProvider.properties.limit_to_extruder) != "-1") && base.showLinkedSettingIcon - height: parent.height; - width: height; + anchors.top: parent.top + anchors.bottom: parent.bottom + width: height color: UM.Theme.getColor("setting_control_button") hoverColor: UM.Theme.getColor("setting_control_button") @@ -165,23 +185,24 @@ Item { hoverTimer.stop() var tooltipText = catalog.i18nc("@label", "This setting is always shared between all extruders. Changing it here will change the value for all extruders.") - if ((resolve != "None") && (stackLevel != 0)) + if ((resolve !== "None") && (stackLevel !== 0)) { // We come here if a setting has a resolve and the setting is not manually edited. tooltipText += " " + catalog.i18nc("@label", "The value is resolved from per-extruder values ") + "[" + Cura.ExtruderManager.getInstanceExtruderValues(definition.key) + "]." } base.showTooltip(tooltipText) } - onExited: base.showTooltip(base.tooltipText) + onExited: base.showTooltip(base.createTooltipText()) } UM.SimpleButton { id: revertButton - visible: base.stackLevel == 0 && base.showRevertButton + visible: base.resetButtonVisible - height: parent.height + anchors.top: parent.top + anchors.bottom: parent.bottom width: height color: UM.Theme.getColor("setting_control_button") @@ -208,12 +229,12 @@ Item hoverTimer.stop() base.showTooltip(catalog.i18nc("@label", "This setting has a value that is different from the profile.\n\nClick to restore the value of the profile.")) } - onExited: base.showTooltip(base.tooltipText) + onExited: base.showTooltip(base.createTooltipText()) } UM.SimpleButton { - // This button shows when the setting has an inherited function, but is overriden by profile. + // This button shows when the setting has an inherited function, but is overridden by profile. id: inheritButton // Inherit button needs to be visible if; // - User made changes that override any loaded settings @@ -234,19 +255,19 @@ Item } // There are no settings with any warning. - if (Cura.SettingInheritanceManager.settingsWithInheritanceWarning.length == 0) + if (Cura.SettingInheritanceManager.settingsWithInheritanceWarning.length === 0) { return false } // This setting has a resolve value, so an inheritance warning doesn't do anything. - if (resolve != "None") + if (resolve !== "None") { return false } // If the setting does not have a limit_to_extruder property (or is -1), use the active stack. - if (globalPropertyProvider.properties.limit_to_extruder == null || String(globalPropertyProvider.properties.limit_to_extruder) == "-1") + if (globalPropertyProvider.properties.limit_to_extruder === null || String(globalPropertyProvider.properties.limit_to_extruder) === "-1") { return Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0 } @@ -256,10 +277,15 @@ Item // Observed when loading workspace, probably when SettingItems are removed. return false } + if(globalPropertyProvider.properties.limit_to_extruder === undefined) + { + return false + } return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, String(globalPropertyProvider.properties.limit_to_extruder)).indexOf(definition.key) >= 0 } - height: parent.height + anchors.top: parent.top + anchors.bottom: parent.bottom width: height onClicked: @@ -277,7 +303,7 @@ Item break } } - if ((last_entry == 4 || last_entry == 11) && base.stackLevel == 0 && base.stackLevels.length == 2) + if ((last_entry === 4 || last_entry === 11) && base.stackLevel === 0 && base.stackLevels.length === 2) { // Special case of the inherit reset. If only the definition (4th or 11th) container) and the first // entry (user container) are set, we can simply remove the container. @@ -301,7 +327,7 @@ Item iconSource: UM.Theme.getIcon("formula") onEntered: { hoverTimer.stop(); base.showTooltip(catalog.i18nc("@label", "This setting is normally calculated, but it currently has an absolute value set.\n\nClick to restore the calculated value.")) } - onExited: base.showTooltip(base.tooltipText) + onExited: base.showTooltip(base.createTooltipText()) } } @@ -317,6 +343,4 @@ Item height: UM.Theme.getSize("setting_control").height } } - - UM.I18nCatalog { id: catalog; name: "cura" } } diff --git a/resources/qml/Settings/SettingOptionalExtruder.qml b/resources/qml/Settings/SettingOptionalExtruder.qml index b73c7498ae..714e49e500 100644 --- a/resources/qml/Settings/SettingOptionalExtruder.qml +++ b/resources/qml/Settings/SettingOptionalExtruder.qml @@ -45,7 +45,7 @@ SettingItem { if (propertyProvider.properties.value == -1) { - control.currentIndex = model.count - 1; // we know the last item is "Not overriden" + control.currentIndex = model.count - 1; // we know the last item is "Not overridden" } else { diff --git a/resources/qml/Settings/SettingTextField.qml b/resources/qml/Settings/SettingTextField.qml index 770ef53900..096f320a7c 100644 --- a/resources/qml/Settings/SettingTextField.qml +++ b/resources/qml/Settings/SettingTextField.qml @@ -42,6 +42,7 @@ SettingItem } switch(propertyProvider.properties.validationState) { + case "ValidatorState.Invalid": case "ValidatorState.Exception": case "ValidatorState.MinimumError": case "ValidatorState.MaximumError": @@ -65,6 +66,7 @@ SettingItem } switch(propertyProvider.properties.validationState) { + case "ValidatorState.Invalid": case "ValidatorState.Exception": case "ValidatorState.MinimumError": case "ValidatorState.MaximumError": diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 972cbcdbb1..5aea939728 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -65,7 +65,7 @@ Item anchors.right: clearFilterButton.left anchors.rightMargin: Math.round(UM.Theme.getSize("thick_margin").width) - placeholderText: "" + "
    " + catalog.i18nc("@label:textbox", "search settings") + placeholderText: "" + "
    " + catalog.i18nc("@label:textbox", "Search settings") style: TextFieldStyle { @@ -228,7 +228,7 @@ Item model: UM.SettingDefinitionsModel { id: definitionsModel - containerId: Cura.MachineManager.activeDefinitionId + containerId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.definition.id: "" visibilityHandler: UM.SettingPreferenceVisibilityHandler { } exclude: ["machine_settings", "command_line_settings", "infill_mesh", "infill_mesh_order", "cutting_mesh", "support_mesh", "anti_overhang_mesh"] // TODO: infill_mesh settigns are excluded hardcoded, but should be based on the fact that settable_globally, settable_per_meshgroup and settable_per_extruder are false. expanded: CuraApplication.expandedCategories @@ -241,41 +241,41 @@ Item CuraApplication.setExpandedCategories(expanded) } } - onVisibilityChanged: Cura.SettingInheritanceManager.forceUpdate() + onVisibilityChanged: Cura.SettingInheritanceManager.scheduleUpdate() } - property var indexWithFocus: -1 - + property int indexWithFocus: -1 + property string activeMachineId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id : "" delegate: Loader { id: delegate width: scrollView.width - height: provider.properties.enabled == "True" ? UM.Theme.getSize("section").height : - contents.spacing + height: provider.properties.enabled === "True" ? UM.Theme.getSize("section").height : - contents.spacing Behavior on height { NumberAnimation { duration: 100 } } - opacity: provider.properties.enabled == "True" ? 1 : 0 + opacity: provider.properties.enabled === "True" ? 1 : 0 Behavior on opacity { NumberAnimation { duration: 100 } } enabled: { if (!Cura.ExtruderManager.activeExtruderStackId && machineExtruderCount.properties.value > 1) { // disable all controls on the global tab, except categories - return model.type == "category" + return model.type === "category" } - return provider.properties.enabled == "True" + return provider.properties.enabled === "True" } property var definition: model property var settingDefinitionsModel: definitionsModel property var propertyProvider: provider property var globalPropertyProvider: inheritStackProvider - property var externalResetHandler: false + property bool externalResetHandler: false //Qt5.4.2 and earlier has a bug where this causes a crash: https://bugreports.qt.io/browse/QTBUG-35989 //In addition, while it works for 5.5 and higher, the ordering of the actual combo box drop down changes, //causing nasty issues when selecting different options. So disable asynchronous loading of enum type completely. - asynchronous: model.type != "enum" && model.type != "extruder" && model.type != "optional_extruder" - active: model.type != undefined + asynchronous: model.type !== "enum" && model.type !== "extruder" && model.type !== "optional_extruder" + active: model.type !== undefined source: { @@ -311,21 +311,20 @@ Item { target: provider property: "containerStackId" - when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0); + when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder !== null && inheritStackProvider.properties.limit_to_extruder >= 0); value: { - // associate this binding with Cura.MachineManager.activeMachineId in the beginning so this + // Associate this binding with Cura.MachineManager.activeMachine.id in the beginning so this // binding will be triggered when activeMachineId is changed too. // Otherwise, if this value only depends on the extruderIds, it won't get updated when the // machine gets changed. - var activeMachineId = Cura.MachineManager.activeMachineId; if (!model.settable_per_extruder) { //Not settable per extruder or there only is global, so we must pick global. - return activeMachineId; + return contents.activeMachineId } - if (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) + if (inheritStackProvider.properties.limit_to_extruder !== null && inheritStackProvider.properties.limit_to_extruder >= 0) { //We have limit_to_extruder, so pick that stack. return Cura.ExtruderManager.extruderIds[String(inheritStackProvider.properties.limit_to_extruder)]; @@ -336,7 +335,7 @@ Item return Cura.ExtruderManager.activeExtruderStackId; } //No extruder tab is selected. Pick the global stack. Shouldn't happen any more since we removed the global tab. - return activeMachineId; + return contents.activeMachineId } } @@ -345,7 +344,7 @@ Item UM.SettingPropertyProvider { id: inheritStackProvider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: contents.activeMachineId key: model.key watchedProperties: [ "limit_to_extruder" ] } @@ -354,11 +353,11 @@ Item { id: provider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: contents.activeMachineId key: model.key ? model.key : "" watchedProperties: [ "value", "enabled", "state", "validationState", "settable_per_extruder", "resolve" ] storeIndex: 0 - removeUnusedValue: model.resolve == undefined + removeUnusedValue: model.resolve === undefined } Connections @@ -371,7 +370,7 @@ Item contextMenu.provider = provider contextMenu.popup(); } - onShowTooltip: base.showTooltip(delegate, Qt.point(- settingsView.x - UM.Theme.getSize("default_margin").width, 0), text) + onShowTooltip: base.showTooltip(delegate, Qt.point(-settingsView.x - UM.Theme.getSize("default_margin").width, 0), text) onHideTooltip: base.hideTooltip() onShowAllHiddenInheritedSettings: { @@ -420,8 +419,6 @@ Item } } - UM.I18nCatalog { id: catalog; name: "cura"; } - NumberAnimation { id: animateContentY target: contents @@ -464,7 +461,7 @@ Item //: Settings context menu action text: catalog.i18nc("@action:menu", "Copy value to all extruders") visible: machineExtruderCount.properties.value > 1 - enabled: contextMenu.provider != undefined && contextMenu.provider.properties.settable_per_extruder != "False" + enabled: contextMenu.provider !== undefined && contextMenu.provider.properties.settable_per_extruder !== "False" onTriggered: Cura.MachineManager.copyValueToExtruders(contextMenu.key) } @@ -473,7 +470,7 @@ Item //: Settings context menu action text: catalog.i18nc("@action:menu", "Copy all changed values to all extruders") visible: machineExtruderCount.properties.value > 1 - enabled: contextMenu.provider != undefined + enabled: contextMenu.provider !== undefined onTriggered: Cura.MachineManager.copyAllValuesToExtruders() } @@ -511,12 +508,7 @@ Item text: catalog.i18nc("@action:menu", "Hide this setting"); onTriggered: { - definitionsModel.hide(contextMenu.key); - // visible settings have changed, so we're no longer showing a preset - if (settingVisibilityPresetsModel.activePreset != "") - { - settingVisibilityPresetsModel.setActivePreset("custom"); - } + definitionsModel.hide(contextMenu.key) } } MenuItem @@ -544,11 +536,6 @@ Item { definitionsModel.show(contextMenu.key); } - // visible settings have changed, so we're no longer showing a preset - if (settingVisibilityPresetsModel.activePreset != "") - { - settingVisibilityPresetsModel.setActivePreset("custom"); - } } } MenuItem @@ -564,7 +551,7 @@ Item { id: machineExtruderCount - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id : "" key: "machine_extruder_count" watchedProperties: [ "value" ] storeIndex: 0 diff --git a/resources/qml/Toolbar.qml b/resources/qml/Toolbar.qml index 33481b9183..c2a70143c3 100644 --- a/resources/qml/Toolbar.qml +++ b/resources/qml/Toolbar.qml @@ -182,6 +182,8 @@ Item MouseArea //Catch all mouse events (so scene doesnt handle them) { anchors.fill: parent + acceptedButtons: Qt.NoButton + onWheel: wheel.accepted = true } Loader diff --git a/resources/qml/ViewOrientationControls.qml b/resources/qml/ViewOrientationControls.qml index 51ed6e3dcb..97f2bb9400 100644 --- a/resources/qml/ViewOrientationControls.qml +++ b/resources/qml/ViewOrientationControls.qml @@ -6,7 +6,7 @@ import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import UM 1.4 as UM - +import Cura 1.1 as Cura // A row of buttons that control the view direction Row { @@ -19,30 +19,65 @@ Row ViewOrientationButton { iconSource: UM.Theme.getIcon("view_3d") - onClicked: UM.Controller.rotateView("3d", 0) + onClicked: Cura.Actions.view3DCamera.trigger() + + UM.TooltipArea + { + anchors.fill: parent + text: catalog.i18nc("@info:tooltip", "3D View") + acceptedButtons: Qt.NoButton + } } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_front") - onClicked: UM.Controller.rotateView("home", 0) + onClicked: Cura.Actions.viewFrontCamera.trigger() + + UM.TooltipArea + { + anchors.fill: parent + text: catalog.i18nc("@info:tooltip", "Front View") + acceptedButtons: Qt.NoButton + } } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_top") - onClicked: UM.Controller.rotateView("y", 90) + onClicked: Cura.Actions.viewTopCamera.trigger() + + UM.TooltipArea + { + anchors.fill: parent + text: catalog.i18nc("@info:tooltip", "Top View") + acceptedButtons: Qt.NoButton + } } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_left") - onClicked: UM.Controller.rotateView("x", 90) + onClicked: Cura.Actions.viewLeftSideCamera.trigger() + + UM.TooltipArea + { + anchors.fill: parent + text: catalog.i18nc("@info:tooltip", "Left View") + acceptedButtons: Qt.NoButton + } } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_right") - onClicked: UM.Controller.rotateView("x", -90) + onClicked: Cura.Actions.viewRightSideCamera.trigger() + + UM.TooltipArea + { + anchors.fill: parent + text: catalog.i18nc("@info:tooltip", "Right View") + acceptedButtons: Qt.NoButton + } } } diff --git a/resources/qml/ViewsSelector.qml b/resources/qml/ViewsSelector.qml index 0e9be649db..af98469921 100644 --- a/resources/qml/ViewsSelector.qml +++ b/resources/qml/ViewsSelector.qml @@ -47,7 +47,7 @@ Cura.ExpandablePopup Label { id: title - text: catalog.i18nc("@label", "View types") + text: catalog.i18nc("@label", "View type") verticalAlignment: Text.AlignVCenter height: parent.height elide: Text.ElideRight diff --git a/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml new file mode 100644 index 0000000000..fce616472f --- /dev/null +++ b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml @@ -0,0 +1,234 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.0 as Cura + + +// +// This is the scroll view widget for adding a (local) printer. This scroll view shows a list view with printers +// categorized into 3 categories: "Ultimaker", "Custom", and "Other". +// +Item +{ + id: base + height: childrenRect.height + + // The currently selected machine item in the local machine list. + property var currentItem: (machineList.currentIndex >= 0) + ? machineList.model.getItem(machineList.currentIndex) + : null + // The currently active (expanded) section/category, where section/category is the grouping of local machine items. + property string currentSection: "Ultimaker B.V." + // By default (when this list shows up) we always expand the "Ultimaker" section. + property var preferredCategories: { + "Ultimaker B.V.": -2, + "Custom": -1 + } + + property int maxItemCountAtOnce: 10 // show at max 10 items at once, otherwise you need to scroll. + + // User-editable printer name + property alias printerName: printerNameTextField.text + property alias isPrinterNameValid: printerNameTextField.acceptableInput + + onCurrentItemChanged: + { + printerName = currentItem == null ? "" : currentItem.name + } + + function updateCurrentItemUponSectionChange() + { + // Find the first machine from this section + for (var i = 0; i < machineList.count; i++) + { + var item = machineList.model.getItem(i) + if (item.section == base.currentSection) + { + machineList.currentIndex = i + break + } + } + } + + Component.onCompleted: + { + updateCurrentItemUponSectionChange() + } + + Item + { + id: localPrinterSelectionItem + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + height: childrenRect.height + + // ScrollView + ListView for selecting a local printer to add + ScrollView + { + id: scrollView + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + + height: maxItemCountAtOnce * UM.Theme.getSize("action_button").height + + ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + ScrollBar.vertical.policy: ScrollBar.AsNeeded + + clip: true + + ListView + { + id: machineList + + // CURA-6793 + // Enabling the buffer seems to cause the blank items issue. When buffer is enabled, if the ListView's + // individual item has a dynamic change on its visibility, the ListView doesn't redraw itself. + // The default value of cacheBuffer is platform-dependent, so we explicitly disable it here. + cacheBuffer: 0 + boundsBehavior: Flickable.StopAtBounds + flickDeceleration: 20000 // To prevent the flicking behavior. + model: UM.DefinitionContainersModel + { + id: machineDefinitionsModel + filter: { "visible": true } + sectionProperty: "manufacturer" + preferredSections: preferredCategories + } + + section.property: "section" + section.delegate: sectionHeader + delegate: machineButton + } + + Component + { + id: sectionHeader + + Button + { + id: button + width: ListView.view.width + height: UM.Theme.getSize("action_button").height + text: section + + property bool isActive: base.currentSection == section + + background: Rectangle + { + anchors.fill: parent + color: isActive ? UM.Theme.getColor("setting_control_highlight") : "transparent" + } + + contentItem: Item + { + width: childrenRect.width + height: UM.Theme.getSize("action_button").height + + UM.RecolorImage + { + id: arrow + anchors.left: parent.left + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + sourceSize.width: width + sourceSize.height: height + color: UM.Theme.getColor("text") + source: base.currentSection == section ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_right") + } + + Label + { + id: label + anchors.left: arrow.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + verticalAlignment: Text.AlignVCenter + text: button.text + font: UM.Theme.getFont("default_bold") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + } + + onClicked: + { + base.currentSection = section + base.updateCurrentItemUponSectionChange() + } + } + } + + Component + { + id: machineButton + + Cura.RadioButton + { + id: radioButton + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("standard_list_lineheight").width + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + height: visible ? UM.Theme.getSize("standard_list_lineheight").height : 0 + + checked: ListView.view.currentIndex == index + text: name + visible: base.currentSection == section + onClicked: ListView.view.currentIndex = index + } + } + } + } + + // Horizontal line + Rectangle + { + id: horizontalLine + anchors.top: localPrinterSelectionItem.bottom + anchors.left: parent.left + anchors.right: parent.right + height: UM.Theme.getSize("default_lining").height + color: UM.Theme.getColor("lining") + } + + // User-editable printer name row + Row + { + anchors.top: horizontalLine.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: UM.Theme.getSize("default_lining").height + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + spacing: UM.Theme.getSize("default_margin").width + + Label + { + text: catalog.i18nc("@label", "Printer name") + anchors.verticalCenter: parent.verticalCenter + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + } + + Cura.TextField + { + id: printerNameTextField + anchors.verticalCenter: parent.verticalCenter + width: (parent.width / 2) | 0 + placeholderText: catalog.i18nc("@text", "Please give your printer a name") + maximumLength: 40 + validator: RegExpValidator + { + regExp: printerNameTextField.machineNameValidator.machineNameRegex + } + property var machineNameValidator: Cura.MachineNameValidator { } + } + } +} diff --git a/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml b/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml new file mode 100644 index 0000000000..81dd345f3f --- /dev/null +++ b/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml @@ -0,0 +1,160 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This component contains the content for the "Add a printer" (network) page of the welcome on-boarding process. +// +Item +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + Label + { + id: titleLabel + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@label", "Add a printer") + color: UM.Theme.getColor("primary_button") + font: UM.Theme.getFont("huge") + renderType: Text.NativeRendering + } + + DropDownWidget + { + id: addNetworkPrinterDropDown + + anchors.top: titleLabel.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: UM.Theme.getSize("wide_margin").height + + title: catalog.i18nc("@label", "Add a networked printer") + contentShown: true // by default expand the network printer list + + onClicked: + { + addLocalPrinterDropDown.contentShown = !contentShown + } + + contentComponent: networkPrinterListComponent + + Component + { + id: networkPrinterListComponent + + AddNetworkPrinterScrollView + { + id: networkPrinterScrollView + + maxItemCountAtOnce: 10 // show at max 10 items at once, otherwise you need to scroll. + + onRefreshButtonClicked: + { + UM.OutputDeviceManager.startDiscovery() + } + + onAddByIpButtonClicked: + { + base.goToPage("add_printer_by_ip") + } + } + } + } + + DropDownWidget + { + id: addLocalPrinterDropDown + + anchors.top: addNetworkPrinterDropDown.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: UM.Theme.getSize("default_margin").height + + title: catalog.i18nc("@label", "Add a non-networked printer") + + onClicked: + { + addNetworkPrinterDropDown.contentShown = !contentShown + } + + contentComponent: localPrinterListComponent + + Component + { + id: localPrinterListComponent + + AddLocalPrinterScrollView + { + id: localPrinterView + } + } + } + + // This "Back" button only shows in the "Add Machine" dialog, which has "previous_page_button_text" set to "Cancel" + Cura.SecondaryButton + { + id: backButton + anchors.left: parent.left + anchors.bottom: parent.bottom + visible: base.currentItem.previous_page_button_text ? true : false + text: base.currentItem.previous_page_button_text ? base.currentItem.previous_page_button_text : "" + onClicked: + { + base.endWizard() + } + } + + Cura.PrimaryButton + { + id: nextButton + anchors.right: parent.right + anchors.bottom: parent.bottom + enabled: + { + // If the network printer dropdown is expanded, make sure that there is a selected item + if (addNetworkPrinterDropDown.contentShown) + { + return addNetworkPrinterDropDown.contentItem.currentItem != null + } + else + { + // Printer name cannot be empty + const localPrinterItem = addLocalPrinterDropDown.contentItem.currentItem + const isPrinterNameValid = addLocalPrinterDropDown.contentItem.isPrinterNameValid + return localPrinterItem != null && isPrinterNameValid + } + } + + text: base.currentItem.next_page_button_text + onClicked: + { + // Create a network printer or a local printer according to the selection + if (addNetworkPrinterDropDown.contentShown) + { + // Create a network printer + const networkPrinterItem = addNetworkPrinterDropDown.contentItem.currentItem + CuraApplication.getDiscoveredPrintersModel().createMachineFromDiscoveredPrinter(networkPrinterItem) + + // If we have created a machine, go to the last page, which is the "cloud" page. + base.goToPage("cloud") + } + else + { + // Create a local printer + const localPrinterItem = addLocalPrinterDropDown.contentItem.currentItem + const printerName = addLocalPrinterDropDown.contentItem.printerName + Cura.MachineManager.addMachine(localPrinterItem.id, printerName) + + base.showNextPage() + } + } + } +} diff --git a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml new file mode 100644 index 0000000000..5a4f5ec7b7 --- /dev/null +++ b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml @@ -0,0 +1,252 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + +// +// This is the widget for adding a network printer. There are 2 parts in this widget. One is a scroll view of a list +// of discovered network printers. Beneath the scroll view is a container with 3 buttons: "Refresh", "Add by IP", and +// "Troubleshooting". +// +Item +{ + id: base + height: networkPrinterInfo.height + controlsRectangle.height + + property alias maxItemCountAtOnce: networkPrinterScrollView.maxItemCountAtOnce + property var currentItem: (networkPrinterListView.currentIndex >= 0) + ? networkPrinterListView.model[networkPrinterListView.currentIndex] + : null + + signal refreshButtonClicked() + signal addByIpButtonClicked() + + Item + { + id: networkPrinterInfo + height: networkPrinterScrollView.visible ? networkPrinterScrollView.height : noPrinterLabel.height + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + + Label + { + id: noPrinterLabel + height: UM.Theme.getSize("setting_control").height + UM.Theme.getSize("default_margin").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label", "There is no printer found over your network.") + renderType: Text.NativeRendering + verticalAlignment: Text.AlignVCenter + visible: networkPrinterListView.count == 0 // Do not show if there are discovered devices. + } + + ScrollView + { + id: networkPrinterScrollView + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + + ScrollBar.horizontal.policy: ScrollBar.AsNeeded + ScrollBar.vertical.policy: ScrollBar.AsNeeded + + property int maxItemCountAtOnce: 8 // show at max 8 items at once, otherwise you need to scroll. + height: Math.min(contentHeight, maxItemCountAtOnce * UM.Theme.getSize("action_button").height) + + visible: networkPrinterListView.count > 0 + + clip: true + + ListView + { + id: networkPrinterListView + anchors.fill: parent + model: CuraApplication.getDiscoveredPrintersModel().discoveredPrinters + + section.property: "modelData.sectionName" + section.criteria: ViewSection.FullString + section.delegate: sectionHeading + boundsBehavior: Flickable.StopAtBounds + flickDeceleration: 20000 // To prevent the flicking behavior. + cacheBuffer: 1000000 // Set a large cache to effectively just cache every list item. + + Component.onCompleted: + { + var toSelectIndex = -1 + // Select the first one that's not "unknown" and is the host a group by default. + for (var i = 0; i < count; i++) + { + if (!model[i].isUnknownMachineType && model[i].isHostOfGroup) + { + toSelectIndex = i + break + } + } + currentIndex = toSelectIndex + } + + // CURA-6483 For some reason currentIndex can be reset to 0. This check is here to prevent automatically + // selecting an unknown or non-host printer. + onCurrentIndexChanged: + { + var item = model[currentIndex] + if (!item || item.isUnknownMachineType || !item.isHostOfGroup) + { + currentIndex = -1 + } + } + + Component + { + id: sectionHeading + + Label + { + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + height: UM.Theme.getSize("setting_control").height + text: section + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("small_button_text") + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + } + } + + delegate: Cura.MachineSelectorButton + { + text: modelData.device.name + + width: networkPrinterListView.width + outputDevice: modelData.device + + enabled: !modelData.isUnknownMachineType && modelData.isHostOfGroup + + printerTypeLabelAutoFit: true + + // update printer types for all items in the list + updatePrinterTypesOnlyWhenChecked: false + updatePrinterTypesFunction: updateMachineTypes + // show printer type as it is + printerTypeLabelConversionFunction: function(value) { return value } + + function updateMachineTypes() + { + printerTypesList = [ modelData.readableMachineType ] + } + + checkable: false + selected: ListView.view.currentIndex == model.index + onClicked: + { + ListView.view.currentIndex = index + } + } + } + } + } + + // Horizontal line separating the buttons (below) and the discovered network printers (above) + Rectangle + { + id: separator + anchors.left: parent.left + anchors.top: networkPrinterInfo.bottom + anchors.right: parent.right + height: UM.Theme.getSize("default_lining").height + color: UM.Theme.getColor("lining") + } + + Item + { + id: controlsRectangle + anchors.left: parent.left + anchors.right: parent.right + anchors.top: separator.bottom + + height: UM.Theme.getSize("message_action_button").height + UM.Theme.getSize("default_margin").height + + Cura.SecondaryButton + { + id: refreshButton + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + text: catalog.i18nc("@label", "Refresh") + height: UM.Theme.getSize("message_action_button").height + onClicked: base.refreshButtonClicked() + } + + Cura.SecondaryButton + { + id: addPrinterByIpButton + anchors.left: refreshButton.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + text: catalog.i18nc("@label", "Add printer by IP") + height: UM.Theme.getSize("message_action_button").height + onClicked: base.addByIpButtonClicked() + } + + Item + { + id: troubleshootingButton + + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + height: troubleshootingLinkIcon.height + width: troubleshootingLinkIcon.width + troubleshootingLabel.width + UM.Theme.getSize("default_margin").width + + UM.RecolorImage + { + id: troubleshootingLinkIcon + anchors.right: troubleshootingLabel.left + anchors.rightMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + height: troubleshootingLabel.height + width: height + sourceSize.height: width + color: UM.Theme.getColor("text_link") + source: UM.Theme.getIcon("external_link") + } + + Label + { + id: troubleshootingLabel + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + text: catalog.i18nc("@label", "Troubleshooting") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text_link") + linkColor: UM.Theme.getColor("text_link") + renderType: Text.NativeRendering + } + + MouseArea + { + anchors.fill: parent + hoverEnabled: true + onClicked: + { + // open the troubleshooting URL with web browser + const url = "https://ultimaker.com/in/cura/troubleshooting/network" + Qt.openUrlExternally(url) + } + onEntered: + { + troubleshootingLabel.font.underline = true + } + onExited: + { + troubleshootingLabel.font.underline = false + } + } + } + } +} diff --git a/resources/qml/WelcomePages/AddPrinterByIpContent.qml b/resources/qml/WelcomePages/AddPrinterByIpContent.qml new file mode 100644 index 0000000000..5ab0217f01 --- /dev/null +++ b/resources/qml/WelcomePages/AddPrinterByIpContent.qml @@ -0,0 +1,351 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 + +import UM 1.3 as UM +import Cura 1.5 as Cura + + +// +// This component contains the content for the 'by IP' page of the "Add New Printer" flow of the on-boarding process. +// +Item +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + id: addPrinterByIpScreen + + // If there's a manual address resolve request in progress. + property bool hasRequestInProgress: CuraApplication.getDiscoveredPrintersModel().hasManualDeviceRequestInProgress + // Indicates if a request has finished. + property bool hasRequestFinished: false + property string currentRequestAddress: "" + + property var discoveredPrinter: null + property bool isPrinterDiscovered: discoveredPrinter != null + // A printer can only be added if it doesn't have an unknown type and it's the host of a group. + property bool canAddPrinter: isPrinterDiscovered && !discoveredPrinter.isUnknownMachineType && discoveredPrinter.isHostOfGroup + + // For validating IP address + property var networkingUtil: Cura.NetworkingUtil {} + + // CURA-6483 + // For a manually added UM printer, the UM3OutputDevicePlugin will first create a LegacyUM device for it. Later, + // when it gets more info from the printer, it will first REMOVE the LegacyUM device and then add a ClusterUM device. + // The Add-by-IP page needs to make sure that the user do not add an unknown printer or a printer that's not the + // host of a group. Because of the device list change, this page needs to react upon DiscoveredPrintersChanged so + // it has the correct information. + Connections + { + target: CuraApplication.getDiscoveredPrintersModel() + onDiscoveredPrintersChanged: + { + if (hasRequestFinished && currentRequestAddress) + { + var printer = CuraApplication.getDiscoveredPrintersModel().discoveredPrintersByAddress[currentRequestAddress] + printer = printer ? printer : null + discoveredPrinter = printer + } + } + } + + // Make sure to cancel the current request when this page closes. + onVisibleChanged: + { + if (!visible) + { + CuraApplication.getDiscoveredPrintersModel().cancelCurrentManualDeviceRequest() + } + } + + Label + { + id: titleLabel + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@label", "Add printer by IP address") + color: UM.Theme.getColor("primary_button") + font: UM.Theme.getFont("huge") + renderType: Text.NativeRendering + } + + Item + { + anchors.top: titleLabel.bottom + anchors.bottom: connectButton.top + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.bottomMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + anchors.right: parent.right + + Item + { + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: UM.Theme.getSize("default_margin").width + + Label + { + id: explainLabel + height: contentHeight + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + text: catalog.i18nc("@label", "Enter the IP address of your printer on the network.") + } + + Item + { + id: userInputFields + height: childrenRect.height + anchors.left: parent.left + anchors.right: parent.right + anchors.top: explainLabel.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").width + + Cura.TextField + { + id: hostnameField + width: (parent.width / 2) | 0 + height: addPrinterButton.height + anchors.verticalCenter: addPrinterButton.verticalCenter + anchors.left: parent.left + + signal invalidInputDetected() + + onInvalidInputDetected: invalidInputLabel.visible = true + + validator: RegExpValidator + { + regExp: /([a-fA-F0-9.:]+)?/ + } + + onTextEdited: invalidInputLabel.visible = false + + placeholderText: catalog.i18nc("@text", "Place enter your printer's IP address.") + + enabled: { ! (addPrinterByIpScreen.hasRequestInProgress || addPrinterByIpScreen.isPrinterDiscovered) } + onAccepted: addPrinterButton.clicked() + } + + Label + { + id: invalidInputLabel + anchors.top: hostnameField.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + visible: false + text: catalog.i18nc("@text", "Please enter a valid IP address.") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + Cura.SecondaryButton + { + id: addPrinterButton + anchors.top: parent.top + anchors.left: hostnameField.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@button", "Add") + enabled: !addPrinterByIpScreen.hasRequestInProgress && !addPrinterByIpScreen.isPrinterDiscovered && (hostnameField.state != "invalid" && hostnameField.text != "") + onClicked: + { + const address = hostnameField.text + if (!networkingUtil.isValidIP(address)) + { + hostnameField.invalidInputDetected() + return + } + + // This address is already in the discovered printer model, no need to add a manual discovery. + if (CuraApplication.getDiscoveredPrintersModel().discoveredPrintersByAddress[address]) + { + addPrinterByIpScreen.discoveredPrinter = CuraApplication.getDiscoveredPrintersModel().discoveredPrintersByAddress[address] + addPrinterByIpScreen.hasRequestFinished = true + return + } + + addPrinterByIpScreen.currentRequestAddress = address + CuraApplication.getDiscoveredPrintersModel().checkManualDevice(address) + } + busy: addPrinterByIpScreen.hasRequestInProgress + } + } + + Item + { + width: parent.width + anchors.top: userInputFields.bottom + anchors.margins: UM.Theme.getSize("default_margin").width + + Label + { + id: waitResponseLabel + anchors.top: parent.top + anchors.margins: UM.Theme.getSize("default_margin").width + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + + visible: addPrinterByIpScreen.hasRequestInProgress || (addPrinterByIpScreen.hasRequestFinished && !addPrinterByIpScreen.isPrinterDiscovered) + text: + { + if (addPrinterByIpScreen.hasRequestFinished) + { + catalog.i18nc("@label", "Could not connect to device.") + } + else + { + catalog.i18nc("@label", "The printer at this address has not responded yet.") + } + } + } + + Item + { + id: printerInfoLabels + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.margins: UM.Theme.getSize("default_margin").width + + visible: addPrinterByIpScreen.isPrinterDiscovered + + Label + { + id: printerNameLabel + anchors.top: parent.top + font: UM.Theme.getFont("large") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + + text: !addPrinterByIpScreen.isPrinterDiscovered ? "???" : addPrinterByIpScreen.discoveredPrinter.name + } + + Label + { + id: printerCannotBeAddedLabel + width: parent.width + anchors.top: printerNameLabel.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + text: catalog.i18nc("@label", "This printer cannot be added because it's an unknown printer or it's not the host of a group.") + visible: addPrinterByIpScreen.hasRequestFinished && !addPrinterByIpScreen.canAddPrinter + font: UM.Theme.getFont("default_bold") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + wrapMode: Text.WordWrap + } + + GridLayout + { + id: printerInfoGrid + anchors.top: printerCannotBeAddedLabel ? printerCannotBeAddedLabel.bottom : printerNameLabel.bottom + anchors.margins: UM.Theme.getSize("default_margin").width + columns: 2 + columnSpacing: UM.Theme.getSize("default_margin").width + + Label + { + text: catalog.i18nc("@label", "Type") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + Label + { + id: typeText + text: !addPrinterByIpScreen.isPrinterDiscovered ? "?" : addPrinterByIpScreen.discoveredPrinter.readableMachineType + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + Label + { + text: catalog.i18nc("@label", "Firmware version") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + Label + { + id: firmwareText + text: !addPrinterByIpScreen.isPrinterDiscovered ? "0.0.0.0" : addPrinterByIpScreen.discoveredPrinter.device.getProperty("firmware_version") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + Label + { + text: catalog.i18nc("@label", "Address") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + Label + { + id: addressText + text: !addPrinterByIpScreen.isPrinterDiscovered ? "0.0.0.0" : addPrinterByIpScreen.discoveredPrinter.address + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + } + + Connections + { + target: CuraApplication.getDiscoveredPrintersModel() + onManualDeviceRequestFinished: + { + var discovered_printers_model = CuraApplication.getDiscoveredPrintersModel() + var printer = discovered_printers_model.discoveredPrintersByAddress[hostnameField.text] + if (printer) + { + addPrinterByIpScreen.discoveredPrinter = printer + } + addPrinterByIpScreen.hasRequestFinished = true + } + } + } + } + } + } + + Cura.SecondaryButton + { + id: backButton + anchors.left: parent.left + anchors.bottom: parent.bottom + text: catalog.i18nc("@button", "Back") + onClicked: + { + CuraApplication.getDiscoveredPrintersModel().cancelCurrentManualDeviceRequest() + base.showPreviousPage() + } + } + + Cura.PrimaryButton + { + id: connectButton + anchors.right: parent.right + anchors.bottom: parent.bottom + text: catalog.i18nc("@button", "Connect") + onClicked: + { + CuraApplication.getDiscoveredPrintersModel().createMachineFromDiscoveredPrinter(discoveredPrinter) + base.showNextPage() + } + + enabled: addPrinterByIpScreen.canAddPrinter + } +} diff --git a/resources/qml/WelcomePages/CloudContent.qml b/resources/qml/WelcomePages/CloudContent.qml new file mode 100644 index 0000000000..e9b6df94e0 --- /dev/null +++ b/resources/qml/WelcomePages/CloudContent.qml @@ -0,0 +1,152 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This component contains the content for the "Ultimaker Cloud" page of the welcome on-boarding process. +// +Item +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + property bool isLoggedIn: Cura.API.account.isLoggedIn + + onIsLoggedInChanged: + { + if(isLoggedIn) + { + // If the user created an account or logged in by pressing any button on this page, all the actions that + // need / can be done by this page are completed, so we can just go to the next (if any). + base.showNextPage() + } + } + + Label + { + id: titleLabel + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@label", "Ultimaker Cloud") + color: UM.Theme.getColor("primary_button") + font: UM.Theme.getFont("huge") + renderType: Text.NativeRendering + } + + // Area where the cloud contents can be put. Pictures, texts and such. + Item + { + id: cloudContentsArea + anchors + { + top: titleLabel.bottom + bottom: finishButton.top + left: parent.left + right: parent.right + topMargin: UM.Theme.getSize("default_margin").height + } + + // Pictures and texts are arranged using Columns with spacing. The whole picture and text area is centered in + // the cloud contents area. + Column + { + anchors.centerIn: parent + width: parent.width + height: childrenRect.height + + spacing: 20 * screenScaleFactor + + Image // Cloud image + { + id: cloudImage + anchors.horizontalCenter: parent.horizontalCenter + source: UM.Theme.getImage("first_run_ultimaker_cloud") + } + + Label // A title-ish text + { + id: highlightTextLabel + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@text", "The next generation 3D printing workflow") + textFormat: Text.RichText + color: UM.Theme.getColor("primary") + font: UM.Theme.getFont("medium") + renderType: Text.NativeRendering + } + + Label // A number of text items + { + id: textLabel + anchors.horizontalCenter: parent.horizontalCenter + text: + { + // There are 3 text items, each of which is translated separately as a single piece of text. + var full_text = "" + var t = "" + + t = catalog.i18nc("@text", "- Send print jobs to Ultimaker printers outside your local network") + full_text += "

    " + t + "

    " + + t = catalog.i18nc("@text", "- Store your Ultimaker Cura settings in the cloud for use anywhere") + full_text += "

    " + t + "

    " + + t = catalog.i18nc("@text", "- Get exclusive access to print profiles from leading brands") + full_text += "

    " + t + "

    " + + return full_text + } + textFormat: Text.RichText + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + } + } + + // Bottom buttons go here + Cura.PrimaryButton + { + id: finishButton + anchors.right: parent.right + anchors.bottom: parent.bottom + text: catalog.i18nc("@button", "Finish") + onClicked: base.showNextPage() + } + + Cura.SecondaryButton + { + id: createAccountButton + anchors.left: parent.left + anchors.verticalCenter: finishButton.verticalCenter + text: catalog.i18nc("@button", "Create an account") + onClicked: Qt.openUrlExternally(CuraApplication.ultimakerCloudAccountRootUrl + "/app/create") + } + + Label + { + id: signInButton + anchors.left: createAccountButton.right + anchors.verticalCenter: finishButton.verticalCenter + anchors.leftMargin: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@button", "Sign in") + color: UM.Theme.getColor("secondary_button_text") + font: UM.Theme.getFont("medium") + renderType: Text.NativeRendering + + MouseArea + { + anchors.fill: parent + hoverEnabled: true + onClicked: Cura.API.account.login() + onEntered: parent.font.underline = true + onExited: parent.font.underline = false + } + } +} diff --git a/resources/qml/WelcomePages/DataCollectionsContent.qml b/resources/qml/WelcomePages/DataCollectionsContent.qml new file mode 100644 index 0000000000..be4d09e876 --- /dev/null +++ b/resources/qml/WelcomePages/DataCollectionsContent.qml @@ -0,0 +1,126 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This component contains the content for the "Help us to improve Ultimaker Cura" page of the welcome on-boarding process. +// +Item +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + Label + { + id: titleLabel + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@label", "Help us to improve Ultimaker Cura") + color: UM.Theme.getColor("primary_button") + font: UM.Theme.getFont("huge") + renderType: Text.NativeRendering + } + + // Area where the cloud contents can be put. Pictures, texts and such. + Item + { + id: contentsArea + + anchors + { + top: titleLabel.bottom + bottom: getStartedButton.top + left: parent.left + right: parent.right + topMargin: UM.Theme.getSize("default_margin").width + } + + Column + { + anchors.centerIn: parent + width: parent.width + + spacing: UM.Theme.getSize("wide_margin").height + + Label + { + id: topLabel + width: parent.width + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@text", "Ultimaker Cura collects anonymous data to improve print quality and user experience, including:") + wrapMode: Text.WordWrap + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + Grid { + columns: 2 + spacing: UM.Theme.getSize("wide_margin").height + anchors.horizontalCenter: parent.horizontalCenter + + ImageTile + { + text: catalog.i18nc("@text", "Machine types") + imageSource: UM.Theme.getImage("first_run_machine_types") + } + + ImageTile + { + text: catalog.i18nc("@text", "Material usage") + imageSource: UM.Theme.getImage("first_run_material_usage") + } + + ImageTile + { + text: catalog.i18nc("@text", "Number of slices") + imageSource: UM.Theme.getImage("first_run_number_slices") + } + + ImageTile + { + text: catalog.i18nc("@text", "Print settings") + imageSource: UM.Theme.getImage("first_run_print_settings") + } + } + + Label + { + id: bottomLabel + width: parent.width + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: + { + var t = catalog.i18nc("@text", "Data collected by Ultimaker Cura will not contain any personal information.") + var t2 = catalog.i18nc("@text", "More information") + t += " " + t2 + "" + return t + } + textFormat: Text.RichText + wrapMode: Text.WordWrap + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + linkColor: UM.Theme.getColor("text_link") + onLinkActivated: CuraApplication.showMoreInformationDialogForAnonymousDataCollection() + renderType: Text.NativeRendering + } + } + } + + Cura.PrimaryButton + { + id: getStartedButton + anchors.right: parent.right + anchors.bottom: parent.bottom + text: catalog.i18nc("@button", "Next") + onClicked: base.showNextPage() + } +} diff --git a/resources/qml/WelcomePages/DropDownHeader.qml b/resources/qml/WelcomePages/DropDownHeader.qml new file mode 100644 index 0000000000..88da32c879 --- /dev/null +++ b/resources/qml/WelcomePages/DropDownHeader.qml @@ -0,0 +1,73 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + +import ".." + + +// +// This is DropDown Header bar of the expandable drop down list. See comments in DropDownWidget for details. +// +Cura.RoundedRectangle +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + id: base + + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + color: UM.Theme.getColor("secondary") + radius: UM.Theme.getSize("default_radius").width + + cornerSide: contentShown ? Cura.RoundedRectangle.Direction.Up : Cura.RoundedRectangle.Direction.All + + property string title: "" + property url rightIconSource: UM.Theme.getIcon("arrow_bottom") + + // If the tab is under hovering state + property bool hovered: false + // If the content is shown + property bool contentShown: false + + signal clicked() + + MouseArea + { + anchors.fill: parent + hoverEnabled: true + onEntered: base.hovered = true + onExited: base.hovered = false + + onClicked: base.clicked() + } + + Label + { + id: title + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + verticalAlignment: Text.AlignVCenter + text: base.title + font: UM.Theme.getFont("medium") + renderType: Text.NativeRendering + color: base.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text") + } + + UM.RecolorImage + { + id: rightIcon + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + width: UM.Theme.getSize("message_close").width + height: UM.Theme.getSize("message_close").height + color: base.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text") + source: base.rightIconSource + } +} diff --git a/resources/qml/WelcomePages/DropDownWidget.qml b/resources/qml/WelcomePages/DropDownWidget.qml new file mode 100644 index 0000000000..526027ea53 --- /dev/null +++ b/resources/qml/WelcomePages/DropDownWidget.qml @@ -0,0 +1,102 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This is the dropdown list widget in the welcome wizard. The dropdown list has a header bar which is always present, +// and its content whose visibility can be toggled by clicking on the header bar. The content is displayed as an +// expandable dropdown box that will appear below the header bar. +// +// The content is configurable via the property "contentComponent", which will be loaded by a Loader when set. +// +Item +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + id: base + + implicitWidth: 200 * screenScaleFactor + height: header.contentShown ? (header.height + contentRectangle.height) : header.height + + property var contentComponent: null + property alias contentItem: contentLoader.item + + property alias title: header.title + property bool contentShown: false // indicates if this dropdown widget is expanded to show its content + + signal clicked() + + Connections + { + target: header + onClicked: + { + base.contentShown = !base.contentShown + clicked() + } + } + + DropDownHeader + { + id: header + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + height: UM.Theme.getSize("expandable_component_content_header").height + rightIconSource: contentShown ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") + contentShown: base.contentShown + } + + Cura.RoundedRectangle + { + id: contentRectangle + // Move up a bit (exaclty the width of the border) to avoid double line + y: header.height - UM.Theme.getSize("default_lining").width + anchors.left: header.left + anchors.right: header.right + // Add 2x lining, because it needs a bit of space on the top and the bottom. + height: contentLoader.item.height + 2 * UM.Theme.getSize("thick_lining").height + + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + color: UM.Theme.getColor("main_background") + radius: UM.Theme.getSize("default_radius").width + visible: base.contentShown + cornerSide: Cura.RoundedRectangle.Direction.Down + + Loader + { + id: contentLoader + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + // Keep a small margin with the Rectangle container so its content will not overlap with the Rectangle + // border. + anchors.margins: UM.Theme.getSize("default_lining").width + sourceComponent: base.contentComponent != null ? base.contentComponent : emptyComponent + } + + // This is the empty component/placeholder that will be shown when the widget gets expanded. + // It contains a text line "Empty" + Component + { + id: emptyComponent + + Label + { + text: catalog.i18nc("@label", "Empty") + height: UM.Theme.getSize("action_button").height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + font: UM.Theme.getFont("medium") + renderType: Text.NativeRendering + } + } + } +} diff --git a/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml b/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml new file mode 100644 index 0000000000..53504d7e92 --- /dev/null +++ b/resources/qml/WelcomePages/FirstStartMachineActionsContent.qml @@ -0,0 +1,80 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This component contains the content for the "What's new in Ultimaker Cura" page of the welcome on-boarding process. +// +Item +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + property var machineActionsModel: CuraApplication.getFirstStartMachineActionsModel() + + Component.onCompleted: + { + // Reset the action to start from the beginning when it is shown. + machineActionsModel.reset() + } + + // Go to the next page when all machine actions have been finished + Connections + { + target: machineActionsModel + onAllFinished: + { + if (visible) + { + base.showNextPage() + } + } + } + + Label + { + id: titleLabel + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: machineActionsModel.currentItem.title == undefined ? "" : machineActionsModel.currentItem.title + color: UM.Theme.getColor("primary_button") + font: UM.Theme.getFont("huge") + renderType: Text.NativeRendering + } + + Item + { + anchors + { + top: titleLabel.bottom + topMargin: UM.Theme.getSize("default_margin").height + bottom: nextButton.top + bottomMargin: UM.Theme.getSize("default_margin").height + left: parent.left + right: parent.right + } + + data: machineActionsModel.currentItem.content == undefined ? emptyItem : machineActionsModel.currentItem.content + } + + // An empty item in case there's no currentItem.content to show + Item + { + id: emptyItem + } + + Cura.PrimaryButton + { + id: nextButton + anchors.right: parent.right + anchors.bottom: parent.bottom + text: catalog.i18nc("@button", "Next") + onClicked: machineActionsModel.goToNextAction() + } +} diff --git a/resources/qml/WelcomePages/ImageTile.qml b/resources/qml/WelcomePages/ImageTile.qml new file mode 100644 index 0000000000..7ed07304e6 --- /dev/null +++ b/resources/qml/WelcomePages/ImageTile.qml @@ -0,0 +1,39 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM + + +// +// This component places a text on top of an image. +// +Column +{ + leftPadding: UM.Theme.getSize("default_margin").width + rightPadding: UM.Theme.getSize("default_margin").width + spacing: UM.Theme.getSize("default_margin").height + property alias text: label.text + property alias imageSource: image.source + + Label + { + id: label + width: image.width + anchors.horizontalCenter: image.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: "" + wrapMode: Text.WordWrap + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + Image + { + id: image + source: "" + } +} \ No newline at end of file diff --git a/resources/qml/WelcomePages/UserAgreementContent.qml b/resources/qml/WelcomePages/UserAgreementContent.qml new file mode 100644 index 0000000000..764ef03e18 --- /dev/null +++ b/resources/qml/WelcomePages/UserAgreementContent.qml @@ -0,0 +1,77 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + +// +// This component contains the content for the "User Agreement" page of the welcome on-boarding process. +// +Item +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + Label + { + id: titleLabel + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@label", "User Agreement") + color: UM.Theme.getColor("primary_button") + font: UM.Theme.getFont("huge") + renderType: Text.NativeRendering + } + + Label + { + id: disclaimerLineLabel + anchors + { + top: titleLabel.bottom + topMargin: UM.Theme.getSize("wide_margin").height + left: parent.left + right: parent.right + } + + text: "

    Disclaimer by Ultimaker

    " + + "

    Please read this disclaimer carefully.

    " + + "

    Except when otherwise stated in writing, Ultimaker provides any Ultimaker software or third party software \"As is\" without warranty of any kind. The entire risk as to the quality and performance of Ultimaker software is with you.

    " + + "

    Unless required by applicable law or agreed to in writing, in no event will Ultimaker be liable to you for damages, including any general, special, incidental, or consequential damages arising out of the use or inability to use any Ultimaker software or third party software.

    " + textFormat: Text.RichText + wrapMode: Text.WordWrap + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + Cura.PrimaryButton + { + id: agreeButton + anchors.right: parent.right + anchors.bottom: parent.bottom + text: catalog.i18nc("@button", "Agree") + onClicked: + { + CuraApplication.writeToLog("i", "User accepted the User-Agreement.") + CuraApplication.setNeedToShowUserAgreement(false) + base.showNextPage() + } + } + + Cura.SecondaryButton + { + id: declineButton + anchors.left: parent.left + anchors.bottom: parent.bottom + text: catalog.i18nc("@button", "Decline and close") + onClicked: + { + CuraApplication.writeToLog("i", "User declined the User Agreement.") + CuraApplication.closeApplication() // NOTE: Hard exit, don't use if anything needs to be saved! + } + } +} diff --git a/resources/qml/WelcomePages/WelcomeContent.qml b/resources/qml/WelcomePages/WelcomeContent.qml new file mode 100644 index 0000000000..1464e363a8 --- /dev/null +++ b/resources/qml/WelcomePages/WelcomeContent.qml @@ -0,0 +1,62 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This component contains the content for the "Welcome" page of the welcome on-boarding process. +// +Item +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + Column // Arrange the items vertically and put everything in the center + { + anchors.centerIn: parent + width: parent.width + spacing: 2 * UM.Theme.getSize("wide_margin").height + + Label + { + id: titleLabel + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@label", "Welcome to Ultimaker Cura") + color: UM.Theme.getColor("primary_button") + font: UM.Theme.getFont("huge") + renderType: Text.NativeRendering + } + + Image + { + id: curaImage + anchors.horizontalCenter: parent.horizontalCenter + source: UM.Theme.getImage("first_run_welcome_cura") + } + + Label + { + id: textLabel + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@text", "Please follow these steps to set up\nUltimaker Cura. This will only take a few moments.") + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + + Cura.PrimaryButton + { + id: getStartedButton + anchors.horizontalCenter: parent.horizontalCenter + anchors.margins: UM.Theme.getSize("wide_margin").width + text: catalog.i18nc("@button", "Get started") + onClicked: base.showNextPage() + } + } +} diff --git a/resources/qml/WelcomePages/WelcomeDialogItem.qml b/resources/qml/WelcomePages/WelcomeDialogItem.qml new file mode 100644 index 0000000000..7da4c6e897 --- /dev/null +++ b/resources/qml/WelcomePages/WelcomeDialogItem.qml @@ -0,0 +1,66 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Window 2.2 +import QtGraphicalEffects 1.0 // For the DropShadow + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This is an Item that tries to mimic a dialog for showing the welcome process. +// +Item +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + id: dialog + + anchors.centerIn: parent + + width: 580 * screenScaleFactor + height: 600 * screenScaleFactor + + property int shadowOffset: 1 * screenScaleFactor + + property alias progressBarVisible: wizardPanel.progressBarVisible + property var model: CuraApplication.getWelcomePagesModel() + + onVisibleChanged: + { + if (visible) + { + model.resetState() + } + } + + WizardPanel + { + id: wizardPanel + anchors.fill: parent + model: dialog.model + } + + // Drop shadow around the panel + DropShadow + { + id: shadow + radius: UM.Theme.getSize("first_run_shadow_radius").width + anchors.fill: wizardPanel + source: wizardPanel + horizontalOffset: shadowOffset + verticalOffset: shadowOffset + color: UM.Theme.getColor("first_run_shadow") + transparentBorder: true + } + + // Close this dialog when there's no more page to show + Connections + { + target: model + onAllFinished: dialog.visible = false + } +} diff --git a/resources/qml/WelcomePages/WhatsNewContent.qml b/resources/qml/WelcomePages/WhatsNewContent.qml new file mode 100644 index 0000000000..39695dabc4 --- /dev/null +++ b/resources/qml/WelcomePages/WhatsNewContent.qml @@ -0,0 +1,58 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This component contains the content for the "What's new in Ultimaker Cura" page of the welcome on-boarding process. +// +Item +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + Label + { + id: titleLabel + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + horizontalAlignment: Text.AlignHCenter + text: catalog.i18nc("@label", "What's new in Ultimaker Cura") + color: UM.Theme.getColor("primary_button") + font: UM.Theme.getFont("huge") + renderType: Text.NativeRendering + } + + Cura.ScrollableTextArea + { + id: whatsNewTextArea + + anchors.top: titleLabel.bottom + anchors.bottom: getStartedButton.top + anchors.topMargin: UM.Theme.getSize("wide_margin").height + anchors.bottomMargin: UM.Theme.getSize("wide_margin").height + anchors.left: parent.left + anchors.right: parent.right + + ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + + textArea.text: CuraApplication.getTextManager().getChangeLogText() + textArea.textFormat: Text.RichText + textArea.wrapMode: Text.WordWrap + textArea.readOnly: true + textArea.font: UM.Theme.getFont("medium") + } + + Cura.PrimaryButton + { + id: getStartedButton + anchors.right: parent.right + anchors.bottom: parent.bottom + text: base.currentItem.next_page_button_text + onClicked: base.showNextPage() + } +} diff --git a/resources/qml/WelcomePages/WizardDialog.qml b/resources/qml/WelcomePages/WizardDialog.qml new file mode 100644 index 0000000000..dab39bec2e --- /dev/null +++ b/resources/qml/WelcomePages/WizardDialog.qml @@ -0,0 +1,51 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Window 2.2 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This is a dialog for showing a set of processes that's defined in a WelcomePagesModel or some other Qt ListModel with +// a compatible interface. +// +Window +{ + UM.I18nCatalog { id: catalog; name: "cura" } + + id: dialog + + flags: Qt.Dialog + modality: Qt.ApplicationModal + + minimumWidth: 580 * screenScaleFactor + minimumHeight: 600 * screenScaleFactor + + color: UM.Theme.getColor("main_background") + + property var model: null // Needs to be set by whoever is using this dialog. + property alias progressBarVisible: wizardPanel.progressBarVisible + + function resetModelState() + { + model.resetState() + } + + WizardPanel + { + id: wizardPanel + anchors.fill: parent + model: dialog.model + } + + // Close this dialog when there's no more page to show + Connections + { + target: model + onAllFinished: dialog.hide() + } +} diff --git a/resources/qml/WelcomePages/WizardPanel.qml b/resources/qml/WelcomePages/WizardPanel.qml new file mode 100644 index 0000000000..d4ec116d65 --- /dev/null +++ b/resources/qml/WelcomePages/WizardPanel.qml @@ -0,0 +1,76 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// This item is a wizard panel that contains a progress bar at the top and a content area that's beneath the progress +// bar. +// +Item +{ + id: base + + clip: true + + property var currentItem: (model == null) ? null : model.getItem(model.currentPageIndex) + property var model: null + + // Convenience properties + property var progressValue: model == null ? 0 : model.currentProgress + property string pageUrl: currentItem == null ? "" : currentItem.page_url + + property alias progressBarVisible: progressBar.visible + property alias backgroundColor: panelBackground.color + + signal showNextPage() + signal showPreviousPage() + signal goToPage(string page_id) // Go to a specific page by the given page_id. + signal endWizard() + + // Call the corresponding functions in the model + onShowNextPage: model.goToNextPage() + onShowPreviousPage: model.goToPreviousPage() + onGoToPage: model.goToPage(page_id) + onEndWizard: model.atEnd() + + Rectangle // Panel background + { + id: panelBackground + anchors.fill: parent + radius: UM.Theme.getSize("default_radius").width + color: UM.Theme.getColor("main_background") + + UM.ProgressBar + { + id: progressBar + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + + height: UM.Theme.getSize("progressbar").height + + value: base.progressValue + } + + Loader + { + id: contentLoader + anchors + { + margins: UM.Theme.getSize("wide_margin").width + bottomMargin: UM.Theme.getSize("default_margin").width + top: progressBar.bottom + bottom: parent.bottom + left: parent.left + right: parent.right + } + source: base.pageUrl + } + } +} diff --git a/resources/qml/Widgets/CheckBox.qml b/resources/qml/Widgets/CheckBox.qml new file mode 100644 index 0000000000..1de0e4addd --- /dev/null +++ b/resources/qml/Widgets/CheckBox.qml @@ -0,0 +1,77 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// ComboBox with Cura styling. +// +CheckBox +{ + id: control + + hoverEnabled: true + + indicator: Rectangle + { + width: control.height + height: control.height + + color: + { + if (!control.enabled) + { + return UM.Theme.getColor("setting_control_disabled") + } + if (control.hovered || control.activeFocus) + { + return UM.Theme.getColor("setting_control_highlight") + } + return UM.Theme.getColor("setting_control") + } + + radius: UM.Theme.getSize("setting_control_radius").width + border.width: UM.Theme.getSize("default_lining").width + border.color: + { + if (!enabled) + { + return UM.Theme.getColor("setting_control_disabled_border") + } + if (control.hovered || control.activeFocus) + { + return UM.Theme.getColor("setting_control_border_highlight") + } + return UM.Theme.getColor("setting_control_border") + } + + UM.RecolorImage + { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + width: Math.round(parent.width / 2.5) + height: Math.round(parent.height / 2.5) + sourceSize.height: width + color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text") + source: UM.Theme.getIcon("check") + opacity: control.checked ? 1 : 0 + Behavior on opacity { NumberAnimation { duration: 100; } } + } + } + + contentItem: Label + { + id: textLabel + leftPadding: control.indicator.width + control.spacing + text: control.text + font: control.font + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + verticalAlignment: Text.AlignVCenter + } +} diff --git a/resources/qml/Widgets/ComboBox.qml b/resources/qml/Widgets/ComboBox.qml new file mode 100644 index 0000000000..5a1ff16b95 --- /dev/null +++ b/resources/qml/Widgets/ComboBox.qml @@ -0,0 +1,147 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// ComboBox with Cura styling. +// +ComboBox +{ + id: control + + states: [ + State + { + name: "disabled" + when: !control.enabled + PropertyChanges { target: backgroundRectangle.border; color: UM.Theme.getColor("setting_control_disabled_border")} + PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_control_disabled")} + PropertyChanges { target: contentLabel; color: UM.Theme.getColor("setting_control_disabled_text")} + }, + State + { + name: "highlighted" + when: control.hovered || control.activeFocus + PropertyChanges { target: backgroundRectangle.border; color: UM.Theme.getColor("setting_control_border_highlight") } + PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_control_highlight")} + } + ] + + background: Rectangle + { + id: backgroundRectangle + color: UM.Theme.getColor("setting_control") + + radius: UM.Theme.getSize("setting_control_radius").width + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("setting_control_border") + + } + + indicator: UM.RecolorImage + { + id: downArrow + x: control.width - width - control.rightPadding + y: control.topPadding + Math.round((control.availableHeight - height) / 2) + + source: UM.Theme.getIcon("arrow_bottom") + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + sourceSize.width: width + 5 * screenScaleFactor + sourceSize.height: width + 5 * screenScaleFactor + + color: UM.Theme.getColor("setting_control_button") + } + + contentItem: Label + { + id: contentLabel + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width + anchors.verticalCenter: parent.verticalCenter + anchors.right: downArrow.left + + text: control.currentText + textFormat: Text.PlainText + renderType: Text.NativeRendering + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("setting_control_text") + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } + + popup: Popup + { + y: control.height - UM.Theme.getSize("default_lining").height + width: control.width + implicitHeight: contentItem.implicitHeight + 2 * UM.Theme.getSize("default_lining").width + padding: UM.Theme.getSize("default_lining").width + + contentItem: ListView + { + clip: true + implicitHeight: contentHeight + model: control.popup.visible ? control.delegateModel : null + currentIndex: control.highlightedIndex + + ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle + { + color: UM.Theme.getColor("setting_control") + border.color: UM.Theme.getColor("setting_control_border") + } + } + + delegate: ItemDelegate + { + id: delegateItem + width: control.width - 2 * UM.Theme.getSize("default_lining").width + height: control.height + highlighted: control.highlightedIndex == index + text: + // FIXME: Maybe there is a better way to do this. Check model and modelData doc page: + // https://doc.qt.io/qt-5/qtquick-modelviewsdata-modelview.html + { + var _val = undefined + if (typeof _val === 'undefined') // try to get textRole from "model". + { + _val = model[textRole] + } + if (typeof _val === 'undefined') // try to get textRole from "modelData" if it's still undefined. + { + _val = modelData[textRole] + } + return (typeof _val !== 'undefined') ? _val : "" + } + + contentItem: Label + { + // FIXME: Somehow the top/bottom anchoring is not correct on Linux and it results in invisible texts. + anchors.fill: parent + anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width + anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width + + text: delegateItem.text + textFormat: Text.PlainText + renderType: Text.NativeRendering + color: control.contentItem.color + font: UM.Theme.getFont("default") + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } + + background: Rectangle + { + color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent" + border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent" + } + } +} diff --git a/resources/qml/Widgets/NotificationIcon.qml b/resources/qml/Widgets/NotificationIcon.qml new file mode 100644 index 0000000000..5cf4d17777 --- /dev/null +++ b/resources/qml/Widgets/NotificationIcon.qml @@ -0,0 +1,40 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.4 as UM + + +// +// A notification icon which is a circle with a number at the center, that can be used to indicate, for example, how +// many new messages that are available. +// +Rectangle +{ + id: notificationIcon + color: UM.Theme.getColor("notification_icon") + width: UM.Theme.getSize("notification_icon").width + height: UM.Theme.getSize("notification_icon").height + radius: (0.5 * width) | 0 + + property alias labelText: notificationLabel.text + property alias labelFont: notificationLabel.font + + Label + { + id: notificationLabel + anchors.fill: parent + color: UM.Theme.getColor("primary_text") + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + + // This is a bit of a hack, but we don't really have enough room for 2 characters (eg 9+). The default font + // does have a tad bit to much spacing. So instead of adding a whole new font, we just modify it a bit for this + // specific instance. + Component.onCompleted: font.letterSpacing = -1 + } +} diff --git a/resources/qml/Widgets/RadioButton.qml b/resources/qml/Widgets/RadioButton.qml new file mode 100644 index 0000000000..13aee7ba90 --- /dev/null +++ b/resources/qml/Widgets/RadioButton.qml @@ -0,0 +1,55 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.0 as Cura + + +// +// Cura-style RadioButton. +// +RadioButton +{ + id: radioButton + + font: UM.Theme.getFont("default") + + background: Item + { + anchors.fill: parent + } + + indicator: Rectangle + { + implicitWidth: UM.Theme.getSize("radio_button").width + implicitHeight: UM.Theme.getSize("radio_button").height + anchors.verticalCenter: parent.verticalCenter + anchors.alignWhenCentered: false + radius: width / 2 + border.width: UM.Theme.getSize("default_lining").width + border.color: radioButton.hovered ? UM.Theme.getColor("small_button_text") : UM.Theme.getColor("small_button_text_hover") + + Rectangle + { + width: (parent.width / 2) | 0 + height: width + anchors.centerIn: parent + radius: width / 2 + color: radioButton.hovered ? UM.Theme.getColor("primary_button_hover") : UM.Theme.getColor("primary_button") + visible: radioButton.checked + } + } + + contentItem: Label + { + verticalAlignment: Text.AlignVCenter + leftPadding: radioButton.indicator.width + radioButton.spacing + text: radioButton.text + font: radioButton.font + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } +} diff --git a/resources/qml/Widgets/ScrollableTextArea.qml b/resources/qml/Widgets/ScrollableTextArea.qml new file mode 100644 index 0000000000..b806087f9a --- /dev/null +++ b/resources/qml/Widgets/ScrollableTextArea.qml @@ -0,0 +1,36 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// Cura-style TextArea with scrolls +// +ScrollView +{ + property alias textArea: _textArea + + clip: true + + background: Rectangle // Border + { + color: UM.Theme.getColor("main_background") + border.color: UM.Theme.getColor("lining") + border.width: UM.Theme.getSize("default_lining").width + } + + TextArea + { + id: _textArea + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + textFormat: TextEdit.PlainText + renderType: Text.NativeRendering + selectByMouse: true + } +} diff --git a/resources/qml/Widgets/TextField.qml b/resources/qml/Widgets/TextField.qml new file mode 100644 index 0000000000..28074d4415 --- /dev/null +++ b/resources/qml/Widgets/TextField.qml @@ -0,0 +1,71 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.3 as UM +import Cura 1.1 as Cura + + +// +// Cura-style TextField +// +TextField +{ + id: textField + + UM.I18nCatalog { id: catalog; name: "cura" } + + hoverEnabled: true + selectByMouse: true + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + + states: [ + State + { + name: "disabled" + when: !textField.enabled + PropertyChanges { target: backgroundRectangle.border; color: UM.Theme.getColor("setting_control_disabled_border")} + PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_control_disabled")} + }, + State + { + name: "invalid" + when: !textField.acceptableInput + PropertyChanges { target: backgroundRectangle.border; color: UM.Theme.getColor("setting_validation_error")} + PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_validation_error_background")} + }, + State + { + name: "hovered" + when: textField.hovered || textField.activeFocus + PropertyChanges { target: backgroundRectangle.border; color: UM.Theme.getColor("setting_control_border_highlight") } + } + ] + + background: Rectangle + { + id: backgroundRectangle + + color: UM.Theme.getColor("main_background") + + anchors.margins: Math.round(UM.Theme.getSize("default_lining").width) + radius: UM.Theme.getSize("setting_control_radius").width + + border.color: + { + if (!textField.enabled) + { + return UM.Theme.getColor("setting_control_disabled_border") + } + if (textField.hovered || textField.activeFocus) + { + return UM.Theme.getColor("setting_control_border_highlight") + } + return UM.Theme.getColor("setting_control_border") + } + } +} diff --git a/resources/qml/qmldir b/resources/qml/qmldir index 62997cc27a..dcc2e410c9 100644 --- a/resources/qml/qmldir +++ b/resources/qml/qmldir @@ -1,6 +1,7 @@ module Cura MachineSelector 1.0 MachineSelector.qml +MachineSelectorButton 1.0 MachineSelectorButton.qml CustomConfigurationSelector 1.0 CustomConfigurationSelector.qml PrintSetupSelector 1.0 PrintSetupSelector.qml ActionButton 1.0 ActionButton.qml @@ -17,3 +18,29 @@ SettingView 1.0 SettingView.qml ProfileMenu 1.0 ProfileMenu.qml CheckBoxWithTooltip 1.0 CheckBoxWithTooltip.qml ToolTip 1.0 ToolTip.qml + + +# Cura/WelcomePages + +WizardPanel 1.0 WizardPanel.qml +WizardDialog 1.0 WizardDialog.qml + + +# Cura/Widgets + +CheckBox 1.0 CheckBox.qml +ComboBox 1.0 ComboBox.qml +NotificationIcon 1.0 NotificationIcon.qml +RadioButton 1.0 RadioButton.qml +Scrollable 1.0 Scrollable.qml +TabButton 1.0 TabButton.qml +TextField 1.0 TextField.qml + + +# Cura/MachineSettings + +ComboBoxWithOptions 1.0 ComboBoxWithOptions.qml +GcodeTextArea 1.0 GcodeTextArea.qml +NumericTextFieldWithUnit 1.0 NumericTextFieldWithUnit.qml +PrintHeadMinMaxTextField 1.0 PrintHeadMinMaxTextField.qml +SimpleCheckBox 1.0 SimpleCheckBox.qml diff --git a/resources/quality/Leapfrog_Bolt_Pro/Leapfrog_Bolt_Pro_global_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/Leapfrog_Bolt_Pro_global_standard.inst.cfg new file mode 100644 index 0000000000..513b8b38ec --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/Leapfrog_Bolt_Pro_global_standard.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +global_quality = True + +[values] +layer_height = 0.15 diff --git a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg new file mode 100644 index 0000000000..e6ee0c75a7 --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg @@ -0,0 +1,107 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_abs_natural +variant = Brass 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 35 +speed_wall = 25 +speed_wall_0 = 25 +speed_wall_x = 35 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 40 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_hop = 2 +retraction_hop_after_extruder_switch = True +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 30 +cool_fan_speed_min = 0 +cool_fan_speed_max = 30 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 3 +cool_min_layer_time = 5 +cool_min_speed = 10 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = brim +brim_width = 8 +brim_line_count = 14 +brim_outside_only = True +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg new file mode 100644 index 0000000000..3e150f7c4b --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg @@ -0,0 +1,107 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_abs_natural +variant = NozzleX 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 35 +speed_wall = 25 +speed_wall_0 = 25 +speed_wall_x = 35 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 40 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_hop = 2 +retraction_hop_after_extruder_switch = True +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 30 +cool_fan_speed_min = 0 +cool_fan_speed_max = 30 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 3 +cool_min_layer_time = 5 +cool_min_speed = 10 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = brim +brim_width = 8 +brim_line_count = 14 +brim_outside_only = True +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg new file mode 100644 index 0000000000..cca59c6d92 --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg @@ -0,0 +1,107 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_epla_natural +variant = Brass 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 50 +speed_wall = 25 +speed_wall_0 = 25 +speed_wall_x = 40 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 50 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 +acceleration_enabled = False + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +retraction_hop = 2 +retraction_hop_after_extruder_switch = True +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_min = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 4 +cool_min_layer_time = 5 +cool_min_speed = 5 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = skirt +skirt_line_count = 3 +skirt_gap = 1 +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg new file mode 100644 index 0000000000..84cfc04b72 --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg @@ -0,0 +1,107 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_epla_natural +variant = NozzleX 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 50 +speed_wall = 25 +speed_wall_0 = 25 +speed_wall_x = 40 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 50 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 +acceleration_enabled = False + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +retraction_hop = 2 +retraction_hop_after_extruder_switch = True +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_min = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 4 +cool_min_layer_time = 5 +cool_min_speed = 5 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = skirt +skirt_line_count = 3 +skirt_gap = 1 +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg new file mode 100644 index 0000000000..72b6025929 --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg @@ -0,0 +1,104 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_pva_natural +variant = Brass 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 50 +speed_wall = 20 +speed_wall_0 = 20 +speed_wall_x = 20 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 40 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = False + +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_min = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 4 +cool_min_layer_time = 5 +cool_min_speed = 5 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = skirt +skirt_line_count = 3 +skirt_gap = 1 +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg new file mode 100644 index 0000000000..a7e4a49fbb --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg @@ -0,0 +1,104 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_pva_natural +variant = NozzleX 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 50 +speed_wall = 20 +speed_wall_0 = 20 +speed_wall_x = 20 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 40 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = False + +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_min = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 4 +cool_min_layer_time = 5 +cool_min_speed = 5 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = skirt +skirt_line_count = 3 +skirt_gap = 1 +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index 875812f950..7a77b774df 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_pri3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg index ed614faecd..c25de5c537 100644 --- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = abax_pri3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg index 855335780e..1f3048b29d 100644 --- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_pri3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index 55bfc6a755..31e4eeffeb 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_pri5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg index 4d6abb7f78..d35f1c6894 100644 --- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = abax_pri5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg index a23f1808a1..dd5f313197 100644 --- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_pri5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg index bd099abec2..ee15d6673f 100644 --- a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_titan [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_titan/atitan_pla_high.inst.cfg b/resources/quality/abax_titan/atitan_pla_high.inst.cfg index 49482953cf..04ac68504d 100644 --- a/resources/quality/abax_titan/atitan_pla_high.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = abax_titan [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg index 65cfb075f0..110ae871c6 100644 --- a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_titan [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg index 47d6d80527..c0315f62eb 100644 --- a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg +++ b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg index 5f8e38800c..c582d60d61 100644 --- a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg +++ b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg index 9fc17d2294..4a2c13567a 100644 --- a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg +++ b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg b/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg index 3d3f9fdca6..f6ac787217 100644 --- a/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg +++ b/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg b/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg index f30a53af78..8a56222e65 100644 --- a/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg +++ b/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg b/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg index e687709bd2..9c951ce762 100644 --- a/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg +++ b/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg index 69c5b4684c..f8df4e42c9 100644 --- a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg +++ b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg index 7fcdbf065e..3c378ebe3c 100644 --- a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg +++ b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg index dd1babf627..c911f1398f 100644 --- a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg +++ b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg index 84b11721de..9d6fcd0159 100644 --- a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg +++ b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg index 90277985bb..67dbe2c33b 100644 --- a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg +++ b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg index 3ce5342684..5f79e3b1c4 100644 --- a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg +++ b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg index 9fce900fc2..9485e432a2 100644 --- a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg +++ b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg index 5bc075d316..b8027fdecf 100644 --- a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg +++ b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg index 50fd145fd2..6a7472d2a2 100644 --- a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg +++ b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_chiron/anycubic_chiron_draft.inst.cfg b/resources/quality/anycubic_chiron/anycubic_chiron_draft.inst.cfg new file mode 100644 index 0000000000..1b0bf92b9e --- /dev/null +++ b/resources/quality/anycubic_chiron/anycubic_chiron_draft.inst.cfg @@ -0,0 +1,61 @@ +[general] +version = 4 +name = Draft +definition = anycubic_chiron + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +global_quality = True + +[values] +acceleration_enabled = True +acceleration_print = 1800 +acceleration_travel = 3000 +adhesion_type = skirt +brim_width = 4.0 +cool_fan_full_at_height = 0.5 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 +infill_overlap = 15 +infill_pattern = zigzag +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 8 +jerk_travel = 10 +layer_height = 0.3 +layer_height_0 = 0.3 +material_bed_temperature = 60 +material_diameter = 1.75 +material_print_temperature = 200 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 6 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 40 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = =speed_print +speed_print = 60 +speed_support = 60 +speed_topbottom = =math.ceil(speed_print * 30 / 60) +speed_travel = 100 +speed_wall = =speed_print +speed_wall_x = =speed_print +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 diff --git a/resources/quality/anycubic_chiron/anycubic_chiron_high.inst.cfg b/resources/quality/anycubic_chiron/anycubic_chiron_high.inst.cfg new file mode 100644 index 0000000000..51a8ec246e --- /dev/null +++ b/resources/quality/anycubic_chiron/anycubic_chiron_high.inst.cfg @@ -0,0 +1,61 @@ +[general] +version = 4 +name = High +definition = anycubic_chiron + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +global_quality = True + +[values] +acceleration_enabled = True +acceleration_print = 1800 +acceleration_travel = 3000 +adhesion_type = skirt +brim_width = 4.0 +cool_fan_full_at_height = 0.5 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 +infill_overlap = 15 +infill_pattern = zigzag +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 8 +jerk_travel = 10 +layer_height = 0.1 +layer_height_0 = 0.1 +material_bed_temperature = 60 +material_diameter = 1.75 +material_print_temperature = 200 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 6 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 40 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = =speed_print +speed_print = 50 +speed_support = 30 +speed_topbottom = =math.ceil(speed_print * 20 / 50) +speed_travel = 50 +speed_wall = =speed_print +speed_wall_x = =speed_print +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 diff --git a/resources/quality/anycubic_chiron/anycubic_chiron_normal.inst.cfg b/resources/quality/anycubic_chiron/anycubic_chiron_normal.inst.cfg new file mode 100644 index 0000000000..f832ad2bfc --- /dev/null +++ b/resources/quality/anycubic_chiron/anycubic_chiron_normal.inst.cfg @@ -0,0 +1,61 @@ +[general] +version = 4 +name = Normal +definition = anycubic_chiron + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +acceleration_enabled = True +acceleration_print = 1800 +acceleration_travel = 3000 +adhesion_type = skirt +brim_width = 4.0 +cool_fan_full_at_height = 0.5 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 +infill_overlap = 15 +infill_pattern = zigzag +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 8 +jerk_travel = 10 +layer_height = 0.2 +layer_height_0 = 0.2 +material_bed_temperature = 60 +material_diameter = 1.75 +material_print_temperature = 200 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 6 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 40 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = =speed_print +speed_print = 50 +speed_support = 30 +speed_topbottom = =math.ceil(speed_print * 20 / 50) +speed_travel = 100 +speed_wall = =speed_print +speed_wall_x = =speed_print +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg index dddc657296..e074a343c2 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_i3_mega [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg index 87ec96ed96..c9685ab931 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_i3_mega [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg index 526cb9bc5e..a9753a1561 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_i3_mega [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg index c5ccd5a864..2d0c635852 100644 --- a/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg index b2a5811bfa..c339ab8635 100644 --- a/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg index 8c727d9bd3..b2f7ee110e 100644 --- a/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg index 07f6404f62..3320881118 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg index df42b0ee3b..64a7b24845 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg index dca42bc4c0..943b681ef7 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg index a5099b36b8..f2bf753bb5 100644 --- a/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg index cad98cba5c..8f95778897 100644 --- a/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg index dcf7974c4c..2198e044ab 100644 --- a/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg index 4eec6d3d4f..fdf625a655 100644 --- a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg index a94bfab748..2efcb6595a 100644 --- a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg index 83fe257b96..a7f762bfc3 100644 --- a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg index 06e337be77..fbb5eff2c8 100644 --- a/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg index e2f002343e..fa441ac94c 100644 --- a/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg index 0e026befb2..d6549156e9 100644 --- a/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg index 2638a06d89..0997984d3a 100644 --- a/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg index 89b6720617..b1527bf254 100644 --- a/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg index 68c9f5102b..292fe634d1 100644 --- a/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg index fd1a1ece09..5be6734287 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg index 909a23edeb..572f829caa 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg index b66931ef40..c0325ada1d 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg index d29b3acf65..59d871badb 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg index dc910c5e06..906e8997f1 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg index 2792261dd6..38b0102316 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg index 498afd9772..3e694f43a7 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg index 66b467de07..c09d0057f6 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg index d030257fb0..7a85fb360f 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg index c606e778b6..f3b22dbb71 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg index 77a1c7312c..66dce8e80e 100644 --- a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg index 8f9d28bbac..75d1e7f572 100644 --- a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg index 9faeef3b42..cae99c4561 100644 --- a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg index 3dae1d45d7..4fe2f4528e 100644 --- a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg index 61000f0912..333edae311 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg index 4d4cf5e37d..66c9fd49b6 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg index 76071d46bc..8d53e056f7 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg index 304f38e105..d72478c605 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg index 5aaede062d..8877a4185f 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg index 75a4b94541..408ab6fc9e 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg index 391c87f28c..903864abd0 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg index 415951f4ee..3f70a9ecbb 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg index f75dd933a6..11c9bd1490 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg index e95037c242..ed82427d6c 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg index 4896d60aca..c1d906d91d 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg index 803cb2b849..9884794c2d 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg index 7217d3524d..68cf7b8c05 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg index 8a7b46a817..4b5daed2a7 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg index 41dd55cfce..ec1443d141 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg index 75cd29e4a3..97404677b6 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg index 66c425078d..f6fe7af29a 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg index eea872ed0f..4b485385f4 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg index 12327636a7..8d928ef5de 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg index 70c4f68135..995e2c1ad2 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg index cd4f112370..6000a44e1b 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg index 9fae8bfe23..3fc5b6d33d 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg index bebffc072b..2da5e8bfdc 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg index 40c47b24a1..47eee4eaa2 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg index 3b6e326495..a82a1e9c25 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg index 17efcfc1ce..bb3f0a2f02 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg index 9c6840d5ba..3d96fb7fe7 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg index 9fe00be066..2ac45f20a1 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg index 6da3d2100a..c125cd71c1 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg index c6d45d5faa..2884a2d79a 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg index 4a06499b5f..19a769d66e 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg index 2ab3fe3340..2cf627e3aa 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg index 7d19528283..c7e3458b1c 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg index 994f9b886a..aeb467a389 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg index f8227cfcd9..432673e77f 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg index 385b79e368..7ff698a9e0 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg index b99a972195..77d4f75c07 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg index 31fd7ddb8a..05e3d4d410 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg index c93923e70a..5be7b83325 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg index 98e2a9bbbb..be66a80508 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg index 444ac7bbc4..d37f16363e 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg index 0b03607e34..8535a12010 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg index b08e0d2671..257be4b88f 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg index 32ce160df1..7cb6d951dd 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg index a6fdd82b5c..e5e495fa24 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg index 496ecc085d..5b732a5f9c 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg index e440fdfe3f..27d833c07b 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg index c1ad10abe1..24fcc1a6f1 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index 3f5e3f47ce..aa8773035e 100644 --- a/resources/quality/coarse.inst.cfg +++ b/resources/quality/coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/creality/base/base_0.2_ABS_super.inst.cfg b/resources/quality/creality/base/base_0.2_ABS_super.inst.cfg new file mode 100644 index 0000000000..2761d80a3b --- /dev/null +++ b/resources/quality/creality/base/base_0.2_ABS_super.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_abs +variant = 0.2mm Nozzle + +[values] +wall_thickness = =line_width*8 diff --git a/resources/quality/creality/base/base_0.2_ABS_ultra.inst.cfg b/resources/quality/creality/base/base_0.2_ABS_ultra.inst.cfg new file mode 100644 index 0000000000..9adae73117 --- /dev/null +++ b/resources/quality/creality/base/base_0.2_ABS_ultra.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Ultra Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = ultra +material = generic_abs +variant = 0.2mm Nozzle + +[values] +wall_thickness = =line_width*8 diff --git a/resources/quality/creality/base/base_0.2_PETG_super.inst.cfg b/resources/quality/creality/base/base_0.2_PETG_super.inst.cfg new file mode 100644 index 0000000000..5bbf86e13d --- /dev/null +++ b/resources/quality/creality/base/base_0.2_PETG_super.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_petg +variant = 0.2mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*8 +#retraction_extra_prime_amount = 0.5 + diff --git a/resources/quality/creality/base/base_0.2_PETG_ultra.inst.cfg b/resources/quality/creality/base/base_0.2_PETG_ultra.inst.cfg new file mode 100644 index 0000000000..0f28668117 --- /dev/null +++ b/resources/quality/creality/base/base_0.2_PETG_ultra.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Ultra Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = ultra +material = generic_petg +variant = 0.2mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*8 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.2_PLA_super.inst.cfg b/resources/quality/creality/base/base_0.2_PLA_super.inst.cfg new file mode 100644 index 0000000000..ac7000bdbc --- /dev/null +++ b/resources/quality/creality/base/base_0.2_PLA_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_pla +variant = 0.2mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.2_PLA_ultra.inst.cfg b/resources/quality/creality/base/base_0.2_PLA_ultra.inst.cfg new file mode 100644 index 0000000000..63fdbad197 --- /dev/null +++ b/resources/quality/creality/base/base_0.2_PLA_ultra.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Ultra Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = ultra +material = generic_pla +variant = 0.2mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_ABS_adaptive.inst.cfg b/resources/quality/creality/base/base_0.3_ABS_adaptive.inst.cfg new file mode 100644 index 0000000000..34176fd865 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_ABS_adaptive.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_abs +variant = 0.3mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.3_ABS_low.inst.cfg b/resources/quality/creality/base/base_0.3_ABS_low.inst.cfg new file mode 100644 index 0000000000..58a5048f64 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_ABS_low.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_abs +variant = 0.3mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.3_ABS_standard.inst.cfg b/resources/quality/creality/base/base_0.3_ABS_standard.inst.cfg new file mode 100644 index 0000000000..b28f044b68 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_ABS_standard.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_abs +variant = 0.3mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.3_ABS_super.inst.cfg b/resources/quality/creality/base/base_0.3_ABS_super.inst.cfg new file mode 100644 index 0000000000..94d4231350 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_ABS_super.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_abs +variant = 0.3mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.3_PETG_adaptive.inst.cfg b/resources/quality/creality/base/base_0.3_PETG_adaptive.inst.cfg new file mode 100644 index 0000000000..c060e81938 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PETG_adaptive.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_petg +variant = 0.3mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.3_PETG_low.inst.cfg b/resources/quality/creality/base/base_0.3_PETG_low.inst.cfg new file mode 100644 index 0000000000..ac6ab13ac1 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PETG_low.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_petg +variant = 0.3mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.3_PETG_standard.inst.cfg b/resources/quality/creality/base/base_0.3_PETG_standard.inst.cfg new file mode 100644 index 0000000000..43da465ffe --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PETG_standard.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_petg +variant = 0.3mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.3_PETG_super.inst.cfg b/resources/quality/creality/base/base_0.3_PETG_super.inst.cfg new file mode 100644 index 0000000000..9981b20687 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PETG_super.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_petg +variant = 0.3mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.3_PLA_adaptive.inst.cfg b/resources/quality/creality/base/base_0.3_PLA_adaptive.inst.cfg new file mode 100644 index 0000000000..d4e62ee1cd --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PLA_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_pla +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_PLA_low.inst.cfg b/resources/quality/creality/base/base_0.3_PLA_low.inst.cfg new file mode 100644 index 0000000000..2dcb61972a --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PLA_low.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_pla +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_PLA_standard.inst.cfg b/resources/quality/creality/base/base_0.3_PLA_standard.inst.cfg new file mode 100644 index 0000000000..f8c6c99e3e --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PLA_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_pla +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_PLA_super.inst.cfg b/resources/quality/creality/base/base_0.3_PLA_super.inst.cfg new file mode 100644 index 0000000000..cdbb863f7d --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PLA_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_pla +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_TPU_adaptive.inst.cfg b/resources/quality/creality/base/base_0.3_TPU_adaptive.inst.cfg new file mode 100644 index 0000000000..93447302d3 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_TPU_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_tpu +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_TPU_standard.inst.cfg b/resources/quality/creality/base/base_0.3_TPU_standard.inst.cfg new file mode 100644 index 0000000000..b05453a64f --- /dev/null +++ b/resources/quality/creality/base/base_0.3_TPU_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_tpu +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_TPU_super.inst.cfg b/resources/quality/creality/base/base_0.3_TPU_super.inst.cfg new file mode 100644 index 0000000000..97bd2845c6 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_TPU_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_tpu +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_ABS_adaptive.inst.cfg b/resources/quality/creality/base/base_0.4_ABS_adaptive.inst.cfg new file mode 100644 index 0000000000..4392bbe3f3 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_ABS_adaptive.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_abs +variant = 0.4mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.4_ABS_low.inst.cfg b/resources/quality/creality/base/base_0.4_ABS_low.inst.cfg new file mode 100644 index 0000000000..d5f86c18cc --- /dev/null +++ b/resources/quality/creality/base/base_0.4_ABS_low.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_abs +variant = 0.4mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.4_ABS_standard.inst.cfg b/resources/quality/creality/base/base_0.4_ABS_standard.inst.cfg new file mode 100644 index 0000000000..b47723ec11 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_ABS_standard.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_abs +variant = 0.4mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.4_ABS_super.inst.cfg b/resources/quality/creality/base/base_0.4_ABS_super.inst.cfg new file mode 100644 index 0000000000..70eb255c0f --- /dev/null +++ b/resources/quality/creality/base/base_0.4_ABS_super.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_abs +variant = 0.4mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.4_PETG_adaptive.inst.cfg b/resources/quality/creality/base/base_0.4_PETG_adaptive.inst.cfg new file mode 100644 index 0000000000..0b2c4da236 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PETG_adaptive.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_petg +variant = 0.4mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.4_PETG_low.inst.cfg b/resources/quality/creality/base/base_0.4_PETG_low.inst.cfg new file mode 100644 index 0000000000..8956895f85 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PETG_low.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_petg +variant = 0.4mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.4_PETG_standard.inst.cfg b/resources/quality/creality/base/base_0.4_PETG_standard.inst.cfg new file mode 100644 index 0000000000..99b0bd7ee5 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PETG_standard.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_petg +variant = 0.4mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.4_PETG_super.inst.cfg b/resources/quality/creality/base/base_0.4_PETG_super.inst.cfg new file mode 100644 index 0000000000..d752fa0ef2 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PETG_super.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_petg +variant = 0.4mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.4_PLA_adaptive.inst.cfg b/resources/quality/creality/base/base_0.4_PLA_adaptive.inst.cfg new file mode 100644 index 0000000000..ddd42a4260 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PLA_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_pla +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_PLA_low.inst.cfg b/resources/quality/creality/base/base_0.4_PLA_low.inst.cfg new file mode 100644 index 0000000000..b5f9264ff0 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PLA_low.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_pla +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_PLA_standard.inst.cfg b/resources/quality/creality/base/base_0.4_PLA_standard.inst.cfg new file mode 100644 index 0000000000..d78d535227 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PLA_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_pla +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_PLA_super.inst.cfg b/resources/quality/creality/base/base_0.4_PLA_super.inst.cfg new file mode 100644 index 0000000000..676ed7a216 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PLA_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_pla +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_TPU_adaptive.inst.cfg b/resources/quality/creality/base/base_0.4_TPU_adaptive.inst.cfg new file mode 100644 index 0000000000..a83e0bedd3 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_TPU_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_tpu +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_TPU_standard.inst.cfg b/resources/quality/creality/base/base_0.4_TPU_standard.inst.cfg new file mode 100644 index 0000000000..db18ba1443 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_TPU_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_tpu +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_TPU_super.inst.cfg b/resources/quality/creality/base/base_0.4_TPU_super.inst.cfg new file mode 100644 index 0000000000..fd622c1f92 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_TPU_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_tpu +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_ABS_adaptive.inst.cfg b/resources/quality/creality/base/base_0.5_ABS_adaptive.inst.cfg new file mode 100644 index 0000000000..2c340d9d92 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_ABS_adaptive.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_abs +variant = 0.5mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.5_ABS_low.inst.cfg b/resources/quality/creality/base/base_0.5_ABS_low.inst.cfg new file mode 100644 index 0000000000..4b22ac0a5d --- /dev/null +++ b/resources/quality/creality/base/base_0.5_ABS_low.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_abs +variant = 0.5mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.5_ABS_standard.inst.cfg b/resources/quality/creality/base/base_0.5_ABS_standard.inst.cfg new file mode 100644 index 0000000000..e7fbd03267 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_ABS_standard.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_abs +variant = 0.5mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.5_ABS_super.inst.cfg b/resources/quality/creality/base/base_0.5_ABS_super.inst.cfg new file mode 100644 index 0000000000..db979b662b --- /dev/null +++ b/resources/quality/creality/base/base_0.5_ABS_super.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_abs +variant = 0.5mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.5_PETG_adaptive.inst.cfg b/resources/quality/creality/base/base_0.5_PETG_adaptive.inst.cfg new file mode 100644 index 0000000000..de8a7da619 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PETG_adaptive.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_petg +variant = 0.5mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.5_PETG_low.inst.cfg b/resources/quality/creality/base/base_0.5_PETG_low.inst.cfg new file mode 100644 index 0000000000..94e5487214 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PETG_low.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_petg +variant = 0.5mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.5_PETG_standard.inst.cfg b/resources/quality/creality/base/base_0.5_PETG_standard.inst.cfg new file mode 100644 index 0000000000..717e730da2 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PETG_standard.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_petg +variant = 0.5mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.5_PETG_super.inst.cfg b/resources/quality/creality/base/base_0.5_PETG_super.inst.cfg new file mode 100644 index 0000000000..f3b6c77b10 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PETG_super.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_petg +variant = 0.5mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.5_PLA_adaptive.inst.cfg b/resources/quality/creality/base/base_0.5_PLA_adaptive.inst.cfg new file mode 100644 index 0000000000..7d07b661e3 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PLA_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_pla +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_PLA_low.inst.cfg b/resources/quality/creality/base/base_0.5_PLA_low.inst.cfg new file mode 100644 index 0000000000..e26c461823 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PLA_low.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_pla +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_PLA_standard.inst.cfg b/resources/quality/creality/base/base_0.5_PLA_standard.inst.cfg new file mode 100644 index 0000000000..f89b45a7cc --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PLA_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_pla +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_PLA_super.inst.cfg b/resources/quality/creality/base/base_0.5_PLA_super.inst.cfg new file mode 100644 index 0000000000..e030dc8d05 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PLA_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_pla +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_TPU_adaptive.inst.cfg b/resources/quality/creality/base/base_0.5_TPU_adaptive.inst.cfg new file mode 100644 index 0000000000..df2b7303f5 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_TPU_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_tpu +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_TPU_standard.inst.cfg b/resources/quality/creality/base/base_0.5_TPU_standard.inst.cfg new file mode 100644 index 0000000000..447aadd7b9 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_TPU_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_tpu +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_TPU_super.inst.cfg b/resources/quality/creality/base/base_0.5_TPU_super.inst.cfg new file mode 100644 index 0000000000..438ba87bcb --- /dev/null +++ b/resources/quality/creality/base/base_0.5_TPU_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_tpu +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.6_ABS_standard.inst.cfg b/resources/quality/creality/base/base_0.6_ABS_standard.inst.cfg new file mode 100644 index 0000000000..963bafb0f0 --- /dev/null +++ b/resources/quality/creality/base/base_0.6_ABS_standard.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_abs +variant = 0.6mm Nozzle + +[values] +wall_thickness = =line_width*3 diff --git a/resources/quality/creality/base/base_0.6_PETG_standard.inst.cfg b/resources/quality/creality/base/base_0.6_PETG_standard.inst.cfg new file mode 100644 index 0000000000..b733293915 --- /dev/null +++ b/resources/quality/creality/base/base_0.6_PETG_standard.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_petg +variant = 0.6mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*3 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.6_PLA_draft.inst.cfg b/resources/quality/creality/base/base_0.6_PLA_draft.inst.cfg new file mode 100644 index 0000000000..2a12ca9c08 --- /dev/null +++ b/resources/quality/creality/base/base_0.6_PLA_draft.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_pla +variant = 0.6mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.6_PLA_low.inst.cfg b/resources/quality/creality/base/base_0.6_PLA_low.inst.cfg new file mode 100644 index 0000000000..8674d629df --- /dev/null +++ b/resources/quality/creality/base/base_0.6_PLA_low.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_pla +variant = 0.6mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.6_PLA_standard.inst.cfg b/resources/quality/creality/base/base_0.6_PLA_standard.inst.cfg new file mode 100644 index 0000000000..36f7f8a61a --- /dev/null +++ b/resources/quality/creality/base/base_0.6_PLA_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_pla +variant = 0.6mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.6_TPU_standard.inst.cfg b/resources/quality/creality/base/base_0.6_TPU_standard.inst.cfg new file mode 100644 index 0000000000..0874c1285f --- /dev/null +++ b/resources/quality/creality/base/base_0.6_TPU_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_tpu +variant = 0.6mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.8_ABS_draft.inst.cfg b/resources/quality/creality/base/base_0.8_ABS_draft.inst.cfg new file mode 100644 index 0000000000..102a6d1298 --- /dev/null +++ b/resources/quality/creality/base/base_0.8_ABS_draft.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_abs +variant = 0.8mm Nozzle + +[values] +wall_thickness = =line_width*3 diff --git a/resources/quality/creality/base/base_0.8_PETG_draft.inst.cfg b/resources/quality/creality/base/base_0.8_PETG_draft.inst.cfg new file mode 100644 index 0000000000..2581a6dcd6 --- /dev/null +++ b/resources/quality/creality/base/base_0.8_PETG_draft.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_petg +variant = 0.8mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*3 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.8_PLA_draft.inst.cfg b/resources/quality/creality/base/base_0.8_PLA_draft.inst.cfg new file mode 100644 index 0000000000..5924b437b4 --- /dev/null +++ b/resources/quality/creality/base/base_0.8_PLA_draft.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_pla +variant = 0.8mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.8_TPU_draft.inst.cfg b/resources/quality/creality/base/base_0.8_TPU_draft.inst.cfg new file mode 100644 index 0000000000..277f8416d9 --- /dev/null +++ b/resources/quality/creality/base/base_0.8_TPU_draft.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_tpu +variant = 0.8mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_1.0_ABS_draft.inst.cfg b/resources/quality/creality/base/base_1.0_ABS_draft.inst.cfg new file mode 100644 index 0000000000..b0a95e42d8 --- /dev/null +++ b/resources/quality/creality/base/base_1.0_ABS_draft.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_abs +variant = 1.0mm Nozzle + +[values] +wall_thickness = =line_width*3 diff --git a/resources/quality/creality/base/base_1.0_PETG_draft.inst.cfg b/resources/quality/creality/base/base_1.0_PETG_draft.inst.cfg new file mode 100644 index 0000000000..85d7843621 --- /dev/null +++ b/resources/quality/creality/base/base_1.0_PETG_draft.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_petg +variant = 1.0mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*3 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_1.0_PLA_draft.inst.cfg b/resources/quality/creality/base/base_1.0_PLA_draft.inst.cfg new file mode 100644 index 0000000000..a1b8aa1a50 --- /dev/null +++ b/resources/quality/creality/base/base_1.0_PLA_draft.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_pla +variant = 1.0mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_1.0_TPU_draft.inst.cfg b/resources/quality/creality/base/base_1.0_TPU_draft.inst.cfg new file mode 100644 index 0000000000..fdb4aef0e4 --- /dev/null +++ b/resources/quality/creality/base/base_1.0_TPU_draft.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_tpu +variant = 1.0mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_global_adaptive.inst.cfg b/resources/quality/creality/base/base_global_adaptive.inst.cfg new file mode 100644 index 0000000000..1dce93c37e --- /dev/null +++ b/resources/quality/creality/base/base_global_adaptive.inst.cfg @@ -0,0 +1,19 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +weight = -2 +global_quality = True + +[values] +layer_height = 0.16 +layer_height_0 = 0.20 +top_bottom_thickness = =layer_height_0+layer_height*4 +wall_thickness = =line_width*3 +support_interface_height = =layer_height*6 +adaptive_layer_height_enabled = true diff --git a/resources/quality/creality/base/base_global_draft.inst.cfg b/resources/quality/creality/base/base_global_draft.inst.cfg new file mode 100644 index 0000000000..e294213853 --- /dev/null +++ b/resources/quality/creality/base/base_global_draft.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -5 +global_quality = True + +[values] +layer_height = 0.32 +layer_height_0 = 0.32 +top_bottom_thickness = =layer_height_0+layer_height*3 +wall_thickness = =line_width*2 +support_interface_height = =layer_height*4 diff --git a/resources/quality/creality/base/base_global_low.inst.cfg b/resources/quality/creality/base/base_global_low.inst.cfg new file mode 100644 index 0000000000..4129669e2e --- /dev/null +++ b/resources/quality/creality/base/base_global_low.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +weight = -4 +global_quality = True + +[values] +layer_height = 0.28 +layer_height_0 = 0.28 +top_bottom_thickness = =layer_height_0+layer_height*3 +wall_thickness = =line_width*2 +support_interface_height = =layer_height*4 diff --git a/resources/quality/creality/base/base_global_standard.inst.cfg b/resources/quality/creality/base/base_global_standard.inst.cfg new file mode 100644 index 0000000000..bd60933d28 --- /dev/null +++ b/resources/quality/creality/base/base_global_standard.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = -3 +global_quality = True + +[values] +layer_height = 0.2 +layer_height_0 = 0.2 +top_bottom_thickness = =layer_height_0+layer_height*3 +wall_thickness = =line_width*3 +support_interface_height = =layer_height*5 diff --git a/resources/quality/creality/base/base_global_super.inst.cfg b/resources/quality/creality/base/base_global_super.inst.cfg new file mode 100644 index 0000000000..ed40dfb7eb --- /dev/null +++ b/resources/quality/creality/base/base_global_super.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +weight = -1 +global_quality = True + +[values] +layer_height = 0.12 +layer_height_0 = 0.12 +top_bottom_thickness = =layer_height_0+layer_height*6 +wall_thickness = =line_width*3 +support_interface_height = =layer_height*8 diff --git a/resources/quality/creality/base/base_global_ultra.inst.cfg b/resources/quality/creality/base/base_global_ultra.inst.cfg new file mode 100644 index 0000000000..7f608256fb --- /dev/null +++ b/resources/quality/creality/base/base_global_ultra.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Ultra Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = ultra +weight = 0 +global_quality = True + +[values] +layer_height = 0.08 +layer_height_0 = 0.12 +top_bottom_thickness = =layer_height_0+layer_height*10 +wall_thickness = =line_width*3 +support_interface_height = =layer_height*12 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg index 89c5c957f6..9963cb3acd 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg index 5b24e6edcf..954b804dd4 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg index c9bc62a72a..8dd6db539b 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/dagoma/dagoma_global_fast.inst.cfg b/resources/quality/dagoma/dagoma_global_fast.inst.cfg index a37d3fb579..93057f6803 100644 --- a/resources/quality/dagoma/dagoma_global_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_global_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_global_fine.inst.cfg b/resources/quality/dagoma/dagoma_global_fine.inst.cfg index 4815dc44cd..32db1de5c7 100644 --- a/resources/quality/dagoma/dagoma_global_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_global_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_global_standard.inst.cfg b/resources/quality/dagoma/dagoma_global_standard.inst.cfg index 5be7fb75c9..2ccfb6d406 100644 --- a/resources/quality/dagoma/dagoma_global_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_global_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg index 99a1f9e61b..91fa81ba7c 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_magis [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg index 12e7f2c62f..1e135166b0 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_magis [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg index 62054acb4e..297f21f9f1 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_magis [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg index ea024726ac..7be90b9db3 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_neva [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg index a69798ff2e..e5cc46fb9a 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_neva [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg index fd92ed4416..6b96244f6f 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_neva [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg old mode 100644 new mode 100755 index 9ac0791b7d..ecc3cd7f31 --- a/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast (beta) definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 @@ -13,7 +13,7 @@ material = generic_abs [values] adhesion_type = raft cool_fan_enabled = True -cool_fan_full_at_height = =layer_height * 2 +cool_fan_full_at_height = =layer_height * 6 cool_fan_speed = 50 cool_fan_speed_max = 50 cool_fan_speed_min = 50 diff --git a/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg old mode 100644 new mode 100755 index 43d6bfb778..1560db980f --- a/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal (beta) definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -13,7 +13,7 @@ material = generic_abs [values] adhesion_type = raft cool_fan_enabled = True -cool_fan_full_at_height = =layer_height * 2 +cool_fan_full_at_height = =layer_height * 6 cool_fan_speed = 50 cool_fan_speed_max = 50 cool_fan_speed_min = 50 diff --git a/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg old mode 100644 new mode 100755 index 7116247ca3..8daad9dc98 --- a/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg @@ -4,16 +4,16 @@ name = Extra Fine (beta) definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high -weight = 1 +weight = 0 material = generic_abs [values] adhesion_type = raft cool_fan_enabled = True -cool_fan_full_at_height = =layer_height * 2 +cool_fan_full_at_height = =layer_height * 6 cool_fan_speed = 50 cool_fan_speed_max = 50 cool_fan_speed_min = 50 diff --git a/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg old mode 100644 new mode 100755 index 9b968e1a47..e70231fa98 --- a/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine (beta) definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -13,7 +13,7 @@ material = generic_abs [values] adhesion_type = raft cool_fan_enabled = True -cool_fan_full_at_height = =layer_height * 2 +cool_fan_full_at_height = =layer_height * 6 cool_fan_speed = 50 cool_fan_speed_max = 50 cool_fan_speed_min = 50 diff --git a/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg old mode 100644 new mode 100755 index 68846ce68b..eba9a4f24d --- a/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast (beta) definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 @@ -13,7 +13,7 @@ material = generic_abs [values] adhesion_type = raft cool_fan_enabled = True -cool_fan_full_at_height = =layer_height * 2 +cool_fan_full_at_height = =layer_height * 6 cool_fan_speed = 50 cool_fan_speed_max = 50 cool_fan_speed_min = 50 diff --git a/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg index 6f63b0f5b4..0ccde62e0e 100755 --- a/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg index 2d76f87d66..fb38bad012 100755 --- a/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg index 6495b09042..6abfa29a9f 100755 --- a/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg @@ -4,10 +4,10 @@ name = Extra Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high -weight = 1 +weight = 0 global_quality = True [values] diff --git a/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg index 7bd4591064..9e16095828 100755 --- a/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg index a13d029c1a..0d5e277e7e 100755 --- a/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/deltacomb/deltacomb_petg_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_petg_Draft_Quality.inst.cfg new file mode 100644 index 0000000000..323a806c91 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_petg_Draft_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 4 +name = Fast +definition = deltacomb + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_petg + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = =layer_height * 4 +cool_fan_speed = 60 +cool_fan_speed_max = 100 +cool_fan_speed_min = 60 +cool_min_layer_time = 5 +cool_min_speed = 20 +speed_print = 50 +default_material_print_temperature = 235 +material_standby_temperature = 215 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 diff --git a/resources/quality/deltacomb/deltacomb_petg_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_petg_Fast_Quality.inst.cfg new file mode 100644 index 0000000000..1ceec59cf5 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_petg_Fast_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 4 +name = Normal +definition = deltacomb + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_petg + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = =layer_height * 4 +cool_fan_speed = 60 +cool_fan_speed_max = 100 +cool_fan_speed_min = 60 +cool_min_layer_time = 5 +cool_min_speed = 20 +speed_print = 50 +default_material_print_temperature = 235 +material_standby_temperature = 215 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 diff --git a/resources/quality/deltacomb/deltacomb_petg_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_petg_High_Quality.inst.cfg new file mode 100644 index 0000000000..c718605590 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_petg_High_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 4 +name = Extra Fine +definition = deltacomb + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 0 +material = generic_petg + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = =layer_height * 4 +cool_fan_speed = 60 +cool_fan_speed_max = 100 +cool_fan_speed_min = 60 +cool_min_layer_time = 5 +cool_min_speed = 20 +speed_print = 50 +default_material_print_temperature = 235 +material_standby_temperature = 215 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 diff --git a/resources/quality/deltacomb/deltacomb_petg_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_petg_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..ad0a208baa --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_petg_Normal_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 4 +name = Fine +definition = deltacomb + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_petg + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = =layer_height * 4 +cool_fan_speed = 60 +cool_fan_speed_max = 100 +cool_fan_speed_min = 60 +cool_min_layer_time = 5 +cool_min_speed = 20 +speed_print = 50 +default_material_print_temperature = 235 +material_standby_temperature = 215 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 diff --git a/resources/quality/deltacomb/deltacomb_petg_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_petg_Verydraft_Quality.inst.cfg new file mode 100644 index 0000000000..e20570f73a --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_petg_Verydraft_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 4 +name = Extra Fast +definition = deltacomb + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_petg + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = =layer_height * 4 +cool_fan_speed = 60 +cool_fan_speed_max = 100 +cool_fan_speed_min = 60 +cool_min_layer_time = 5 +cool_min_speed = 20 +speed_print = 50 +default_material_print_temperature = 235 +material_standby_temperature = 215 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 diff --git a/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg old mode 100644 new mode 100755 index d5387f3014..237b6a170e --- a/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 @@ -13,7 +13,7 @@ material = generic_pla [values] adhesion_type = skirt cool_fan_enabled = True -cool_fan_full_at_height = =layer_height +cool_fan_full_at_height = =layer_height * 4 cool_fan_speed = 100 cool_fan_speed_max = 100 cool_fan_speed_min = 100 diff --git a/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg old mode 100644 new mode 100755 index b41eb9d81f..cc88448304 --- a/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -13,7 +13,7 @@ material = generic_pla [values] adhesion_type = skirt cool_fan_enabled = True -cool_fan_full_at_height = =layer_height +cool_fan_full_at_height = =layer_height * 4 cool_fan_speed = 100 cool_fan_speed_max = 100 cool_fan_speed_min = 100 diff --git a/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg old mode 100644 new mode 100755 index ceaeb4667e..4589258966 --- a/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg @@ -4,16 +4,16 @@ name = Extra Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high -weight = 1 +weight = 0 material = generic_pla [values] adhesion_type = skirt cool_fan_enabled = True -cool_fan_full_at_height = =layer_height +cool_fan_full_at_height = =layer_height * 4 cool_fan_speed = 100 cool_fan_speed_max = 100 cool_fan_speed_min = 100 diff --git a/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg old mode 100644 new mode 100755 index ba82feb97d..6d7e79941c --- a/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -13,7 +13,7 @@ material = generic_pla [values] adhesion_type = skirt cool_fan_enabled = True -cool_fan_full_at_height = =layer_height +cool_fan_full_at_height = =layer_height * 4 cool_fan_speed = 100 cool_fan_speed_max = 100 cool_fan_speed_min = 100 diff --git a/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg old mode 100644 new mode 100755 index f312c27233..785631454b --- a/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 @@ -13,7 +13,7 @@ material = generic_pla [values] adhesion_type = skirt cool_fan_enabled = True -cool_fan_full_at_height = =layer_height +cool_fan_full_at_height = =layer_height * 4 cool_fan_speed = 100 cool_fan_speed_max = 100 cool_fan_speed_min = 100 diff --git a/resources/quality/deltacomb/deltacomb_tpu_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_Draft_Quality.inst.cfg new file mode 100755 index 0000000000..18c9162995 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_tpu_Draft_Quality.inst.cfg @@ -0,0 +1,27 @@ +[general] +version = 4 +name = Fast +definition = deltacomb + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_tpu + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = =layer_height * 6 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 70 +cool_min_layer_time = 5 +cool_min_speed = 20 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 +speed_print = 25 +speed_travel = 300 +acceleration_travel = 10000 +retraction_amount = 5 +retraction_hop_enabled = False diff --git a/resources/quality/deltacomb/deltacomb_tpu_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_Fast_Quality.inst.cfg new file mode 100755 index 0000000000..de34ca53e3 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_tpu_Fast_Quality.inst.cfg @@ -0,0 +1,27 @@ +[general] +version = 4 +name = Normal +definition = deltacomb + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_tpu + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = =layer_height * 6 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 70 +cool_min_layer_time = 5 +cool_min_speed = 20 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 +speed_print = 25 +speed_travel = 300 +acceleration_travel = 10000 +retraction_amount = 5 +retraction_hop_enabled = False diff --git a/resources/quality/deltacomb/deltacomb_tpu_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_High_Quality.inst.cfg new file mode 100755 index 0000000000..c666e4f97c --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_tpu_High_Quality.inst.cfg @@ -0,0 +1,27 @@ +[general] +version = 4 +name = Extra Fine +definition = deltacomb + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 0 +material = generic_tpu + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = =layer_height * 6 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 70 +cool_min_layer_time = 5 +cool_min_speed = 20 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 +speed_print = 25 +speed_travel = 300 +acceleration_travel = 10000 +retraction_amount = 5 +retraction_hop_enabled = False diff --git a/resources/quality/deltacomb/deltacomb_tpu_Normal_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_Normal_Quality.inst.cfg new file mode 100755 index 0000000000..4dee4aae93 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_tpu_Normal_Quality.inst.cfg @@ -0,0 +1,27 @@ +[general] +version = 4 +name = Fine +definition = deltacomb + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_tpu + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = =layer_height * 6 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 70 +cool_min_layer_time = 5 +cool_min_speed = 20 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 +speed_print = 25 +speed_travel = 300 +acceleration_travel = 10000 +retraction_amount = 5 +retraction_hop_enabled = False diff --git a/resources/quality/deltacomb/deltacomb_tpu_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_Verydraft_Quality.inst.cfg new file mode 100755 index 0000000000..31d552af6f --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_tpu_Verydraft_Quality.inst.cfg @@ -0,0 +1,27 @@ +[general] +version = 4 +name = Extra Fast +definition = deltacomb + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_tpu + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_fan_full_at_height = =layer_height * 6 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 70 +cool_min_layer_time = 5 +cool_min_speed = 20 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 +speed_print = 25 +speed_travel = 300 +acceleration_travel = 10000 +retraction_amount = 5 +retraction_hop_enabled = False diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index 9fe798dfd4..cd7a1056e4 100644 --- a/resources/quality/draft.inst.cfg +++ b/resources/quality/draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/extra_coarse.inst.cfg b/resources/quality/extra_coarse.inst.cfg index 1a9ade143d..dd82d59dc7 100644 --- a/resources/quality/extra_coarse.inst.cfg +++ b/resources/quality/extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/extra_fast.inst.cfg b/resources/quality/extra_fast.inst.cfg index 1fcc9bc42d..5ff8ce1ab8 100644 --- a/resources/quality/extra_fast.inst.cfg +++ b/resources/quality/extra_fast.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg index ddcdc0632d..bb77b3216d 100644 --- a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = Fast Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg index 66faed5084..2ceb67d078 100644 --- a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = High Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg index 2bd980889b..db24da7cef 100644 --- a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = Normal Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg index cec7056ff1..d2dd6cd693 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast Quality definition = fabtotum [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg index d5a893c408..6e19cda49e 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = fabtotum [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg index 7fe1b8b8f3..a3c79b6ce3 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal Quality definition = fabtotum [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg index 5ebe5bbdc2..b47dc680ce 100644 --- a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = Fast Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg index 5d5b582b82..9aefce5883 100644 --- a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = High Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg index 1c510293a1..e0693501ae 100644 --- a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = Normal Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg index 21a0c9bc09..601d70bd99 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg @@ -5,7 +5,7 @@ name = Fast Quality [metadata] type = quality -setting_version = 7 +setting_version = 11 material = generic_tpu quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg index dd27372a07..6f43a69703 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg @@ -5,7 +5,7 @@ name = High Quality [metadata] type = quality -setting_version = 7 +setting_version = 11 material = generic_tpu quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg index b7eefeeeeb..fedf9896be 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg @@ -5,7 +5,7 @@ name = Normal Quality [metadata] type = quality -setting_version = 7 +setting_version = 11 material = generic_tpu quality_type = normal weight = 0 diff --git a/resources/quality/fast.inst.cfg b/resources/quality/fast.inst.cfg index d92eeb3ed2..14a4d92839 100644 --- a/resources/quality/fast.inst.cfg +++ b/resources/quality/fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg index 7ea63ba7f9..41951e7f5f 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Dual Normal Layers definition = gmax15plus_dual [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg index 95182aad2d..cb67f784ad 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Dual Thick Layers definition = gmax15plus_dual [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = course weight = -2 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg index 05e9a84bb4..ca5dea0aeb 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Dual Thin Layers definition = gmax15plus_dual [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg index fd986e6c1f..d27b117842 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Dual Very Thick Layers definition = gmax15plus_dual [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra_course weight = -3 diff --git a/resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg index fa50fcee4c..7fec142569 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Normal Layers definition = gmax15plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg index e5fd46edbc..93d7fb211b 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Thick Layers definition = gmax15plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = course weight = -2 diff --git a/resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg index cc19a478e5..f226e3602d 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Thin Layers definition = gmax15plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg index 0c2661b3fd..ebd4af6f80 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Very Thick Layers definition = gmax15plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra_course weight = -3 diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index 8d306c9de4..d705a71fb6 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/hms434/hms434_global_Coarse_Quality.inst.cfg b/resources/quality/hms434/hms434_global_Coarse_Quality.inst.cfg new file mode 100644 index 0000000000..8d154bfc24 --- /dev/null +++ b/resources/quality/hms434/hms434_global_Coarse_Quality.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Coarse +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -1 +global_quality = True + +[values] +layer_height = 0.4 +layer_height_0 = 0.2 diff --git a/resources/quality/hms434/hms434_global_High_Quality.inst.cfg b/resources/quality/hms434/hms434_global_High_Quality.inst.cfg new file mode 100644 index 0000000000..1474c518d7 --- /dev/null +++ b/resources/quality/hms434/hms434_global_High_Quality.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = High +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +global_quality = True + +[values] +layer_height = 0.1 +layer_height_0 = 0.2 + diff --git a/resources/quality/hms434/hms434_global_Normal_Quality.inst.cfg b/resources/quality/hms434/hms434_global_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..c7b91a0809 --- /dev/null +++ b/resources/quality/hms434/hms434_global_Normal_Quality.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Normal +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.2 +layer_height_0 = 0.2 diff --git a/resources/quality/hms434/pla/hms434_0.4_pla_high.inst.cfg b/resources/quality/hms434/pla/hms434_0.4_pla_high.inst.cfg new file mode 100644 index 0000000000..aeeccf9da9 --- /dev/null +++ b/resources/quality/hms434/pla/hms434_0.4_pla_high.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 4 +name = High +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = 0.4mm TP extruder + +[values] + +wall_0_wipe_dist = 0.0 + +infill_overlap_mm = -0.1 +infill_wipe_dist = 0 + +default_material_print_temperature = 190 +material_standby_temperature = 160 +default_material_bed_temperature = 45 +build_volume_temperature = 43 +material_flow = 100 +retraction_amount = 1 +retraction_speed = 40 +retraction_prime_speed = 8 +retraction_extra_prime_amount = 0 +switch_extruder_retraction_amount = 2 + +speed_print = 50 + +coasting_volume = 0.05 +coasting_min_volume = 0.17 +coasting_speed = 100 diff --git a/resources/quality/hms434/pla/hms434_0.4_pla_normal.inst.cfg b/resources/quality/hms434/pla/hms434_0.4_pla_normal.inst.cfg new file mode 100644 index 0000000000..d4e4b9ac3d --- /dev/null +++ b/resources/quality/hms434/pla/hms434_0.4_pla_normal.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 4 +name = Normal +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.4mm TP extruder + +[values] + +wall_0_wipe_dist = 0.0 + +infill_overlap_mm = -0.1 +infill_wipe_dist = 0 + +default_material_print_temperature = 190 +material_standby_temperature = 160 +default_material_bed_temperature = 45 +build_volume_temperature = 43 +material_flow = 100 +retraction_amount = 1 +retraction_speed = 40 +retraction_prime_speed = 8 +retraction_extra_prime_amount = 0 +switch_extruder_retraction_amount = 2 + +speed_print = 50 + +coasting_volume = 0.05 +coasting_min_volume = 0.17 +coasting_speed = 100 diff --git a/resources/quality/hms434/pla/hms434_0.8_pla_coarse.inst.cfg b/resources/quality/hms434/pla/hms434_0.8_pla_coarse.inst.cfg new file mode 100644 index 0000000000..d1ae12c6db --- /dev/null +++ b/resources/quality/hms434/pla/hms434_0.8_pla_coarse.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 4 +name = Coarse +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -1 +material = generic_pla +variant = 0.8mm TP extruder + +[values] + +wall_0_wipe_dist = 0.0 + +infill_overlap_mm = -0.1 +infill_wipe_dist = 0 + +default_material_print_temperature = 190 +material_standby_temperature = 160 +default_material_bed_temperature = 45 +build_volume_temperature = 43 +material_flow = 100 +retraction_amount = 1 +retraction_speed = 40 +retraction_prime_speed = 8 +retraction_extra_prime_amount = 0 +switch_extruder_retraction_amount = 2 + +speed_print = 50 + +coasting_volume = 0.05 +coasting_min_volume = 0.17 +coasting_speed = 100 diff --git a/resources/quality/hms434/pla/hms434_0.8_pla_normal.inst.cfg b/resources/quality/hms434/pla/hms434_0.8_pla_normal.inst.cfg new file mode 100644 index 0000000000..253822d2b1 --- /dev/null +++ b/resources/quality/hms434/pla/hms434_0.8_pla_normal.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Normal +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.8mm TP extruder + +[values] + +wall_0_wipe_dist = 0.0 + +infill_overlap_mm = -0.1 +infill_sparse_thickness = =0.4 if infill_sparse_density < 90 else 0.2 +infill_wipe_dist = 0 + +default_material_print_temperature = 190 +material_standby_temperature = 160 +default_material_bed_temperature = 45 +build_volume_temperature = 43 +material_flow = 100 +retraction_amount = 1 +retraction_speed = 40 +retraction_prime_speed = 8 +retraction_extra_prime_amount = 0 +switch_extruder_retraction_amount = 2 + +speed_print = 50 +speed_infill = 42 + +support_infill_sparse_thickness = 0.4 + +coasting_volume = 0.05 +coasting_min_volume = 0.17 +coasting_speed = 100 diff --git a/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_coarse.inst.cfg new file mode 100644 index 0000000000..243e144475 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_coarse.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Coarse +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 45 diff --git a/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_fine.inst.cfg new file mode 100644 index 0000000000..be9a0a7ab5 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_fine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Fine +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_medium.inst.cfg new file mode 100644 index 0000000000..f17054be89 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_medium.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Medium +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_coarse.inst.cfg new file mode 100644 index 0000000000..4a2acb9194 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_coarse.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Coarse +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_fine.inst.cfg new file mode 100644 index 0000000000..894d5f9b80 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_fine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Fine +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_medium.inst.cfg new file mode 100644 index 0000000000..6baa26ba95 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_medium.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Medium +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_ultrafine.inst.cfg new file mode 100644 index 0000000000..27761cf5f6 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_ultrafine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = UltraFine +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = ultrahigh +weight = 2 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 55 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg deleted file mode 100644 index a9138ec70b..0000000000 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = fast -weight = -1 -material = generic_petg -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 1.2 -cool_fan_speed_max = 60 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_bed_temperature = 50 -material_bed_temperature_layer_0 = 55 -material_flow = 100 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 25 -retraction_retract_speed = 35 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 25 -skirt_line_count = 2 -speed_layer_0 = =math.ceil(speed_print * 14 / 40) -speed_print = 40 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 20 / 40) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 40) -speed_wall_x = =math.ceil(speed_print * 35 / 40) -top_thickness = =top_bottom_thickness -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg deleted file mode 100644 index 227072b3a1..0000000000 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = fast -weight = -1 -material = generic_petg -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 1.2 -cool_fan_speed_max = 40 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_bed_temperature = 50 -material_bed_temperature_layer_0 = 55 -material_flow = 100 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 25 -retraction_retract_speed = 35 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 25 -skirt_line_count = 2 -speed_layer_0 = =math.ceil(speed_print * 14 / 40) -speed_print = 40 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 20 / 40) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 40) -speed_wall_x = =math.ceil(speed_print * 35 / 40) -top_thickness = =top_bottom_thickness -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg deleted file mode 100644 index a8bcd8d4b0..0000000000 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = Medium -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = normal -weight = 0 -material = generic_petg -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 1.2 -cool_fan_speed_max = 60 -cool_fan_speed_min = 20 -cool_min_layer_time = 7 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_bed_temperature = 50 -material_bed_temperature_layer_0 = 55 -material_flow = 100 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 25 -retraction_retract_speed = 35 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 25 -skirt_line_count = 2 -speed_layer_0 = =math.ceil(speed_print * 14 / 40) -speed_print = 40 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 20 / 40) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 40) -speed_wall_x = =math.ceil(speed_print * 35 / 40) -top_thickness = =top_bottom_thickness -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg deleted file mode 100644 index 7dd26b4f70..0000000000 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = Medium -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = normal -weight = 0 -material = generic_petg -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 1.2 -cool_fan_speed_max = 40 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_bed_temperature = 50 -material_bed_temperature_layer_0 = 55 -material_flow = 100 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 25 -retraction_retract_speed = 35 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 25 -skirt_line_count = 2 -speed_layer_0 = =math.ceil(speed_print * 14 / 40) -speed_print = 40 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 20 / 40) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 40) -speed_wall_x = =math.ceil(speed_print * 35 / 40) -top_thickness = =top_bottom_thickness -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg deleted file mode 100644 index 055e804c9c..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg +++ /dev/null @@ -1,53 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = fast -weight = -1 -material = generic_pla -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 50 -cool_min_layer_time = 7 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg deleted file mode 100644 index 7909892c18..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg +++ /dev/null @@ -1,53 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = fast -weight = -1 -material = generic_pla -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg deleted file mode 100644 index 979158fdcf..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg +++ /dev/null @@ -1,54 +0,0 @@ -[general] -version = 4 -name = Fine -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = high -weight = 1 -material = generic_pla -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 50 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -material_print_temperature = 205 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg deleted file mode 100644 index 8cc3108d0e..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg +++ /dev/null @@ -1,54 +0,0 @@ -[general] -version = 4 -name = Fine -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = high -weight = 1 -material = generic_pla -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -material_print_temperature = 205 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg deleted file mode 100644 index 5620ac43f8..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg +++ /dev/null @@ -1,53 +0,0 @@ -[general] -version = 4 -name = Medium -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = normal -weight = 0 -material = generic_pla -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 50 -cool_min_layer_time = 7 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg deleted file mode 100644 index 4c6d81e643..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg +++ /dev/null @@ -1,53 +0,0 @@ -[general] -version = 4 -name = Medium -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = normal -weight = 0 -material = generic_pla -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg deleted file mode 100644 index 3eb99a52ea..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = UltraFine -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = ultrahigh -weight = 2 -material = generic_pla -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 50 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -material_print_temperature = 202 -material_print_temperature_layer_0 = 210 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg deleted file mode 100644 index 4a044228c0..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = UltraFine -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = ultrahigh -weight = 2 -material = generic_pla -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 20 -cool_min_layer_time = 4 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -material_print_temperature = 202 -material_print_temperature_layer_0 = 210 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg index 62fe55a619..572ac9faf5 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = imade3d_jellybox [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -14,3 +14,65 @@ global_quality = True adhesion_type = skirt layer_height = 0.3 layer_height_0 = 0.3 +retraction_hop = 0.2 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +retraction_prime_speed = =retraction_speed - 30 +roofing_layer_count = 1 +skin_line_width = =line_width * 1.2 +skin_outline_count = 2 +skirt_brim_minimal_length = 100 +skirt_brim_speed = =speed_layer_0 +skirt_gap = 5 +skirt_line_count = 1 +speed_layer_0 = 20 +speed_roofing = 20 +speed_topbottom = 25 +speed_travel = =speed_print if magic_spiralize else 120 +speed_travel_layer_0 = 60 +support_angle = 60 +support_bottom_enable = False +support_bottom_height = 0 +support_connect_zigzags = False +support_enable = False +support_infill_rate = 20 +support_interface_density = 70 +support_interface_enable = True +support_interface_height = 2 +support_interface_pattern = concentric +support_interface_skip_height = 0.1 +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.8 +support_xy_distance_overhang = =machine_nozzle_size / 2 +support_z_distance = 0.2 +travel_compensate_overlapping_walls_0_enabled = =travel_compensate_overlapping_walls_enabled +travel_compensate_overlapping_walls_x_enabled = =travel_compensate_overlapping_walls_enabled +travel_retract_before_outer_wall = True +wall_0_wipe_dist = =round(line_width * 1.2,1) +bridge_settings_enabled = True +bridge_enable_more_layers = False +bridge_skin_material_flow = 85 +bridge_skin_speed = 20 +bridge_wall_material_flow = 85 +bridge_wall_speed = 20 +infill_enable_travel_optimization = True +retraction_combing_max_distance = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg index f808d5657f..b9ee4a7ff6 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = imade3d_jellybox [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 @@ -14,3 +14,65 @@ global_quality = True adhesion_type = skirt layer_height = 0.1 layer_height_0 = 0.3 +retraction_hop = 0.1 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +retraction_prime_speed = =retraction_speed - 30 +roofing_layer_count = 1 +skin_line_width = =line_width * 1.2 +skin_outline_count = 2 +skirt_brim_minimal_length = 100 +skirt_brim_speed = =speed_layer_0 +skirt_gap = 5 +skirt_line_count = 1 +speed_layer_0 = 20 +speed_roofing = 20 +speed_topbottom = 25 +speed_travel = =speed_print if magic_spiralize else 120 +speed_travel_layer_0 = 60 +support_angle = 60 +support_bottom_enable = False +support_bottom_height = 0 +support_connect_zigzags = False +support_enable = False +support_infill_rate = 20 +support_interface_density = 70 +support_interface_enable = True +support_interface_height = 2 +support_interface_pattern = concentric +support_interface_skip_height = 0.1 +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.8 +support_xy_distance_overhang = =machine_nozzle_size / 2 +support_z_distance = 0.2 +travel_compensate_overlapping_walls_0_enabled = =travel_compensate_overlapping_walls_enabled +travel_compensate_overlapping_walls_x_enabled = =travel_compensate_overlapping_walls_enabled +travel_retract_before_outer_wall = True +wall_0_wipe_dist = =round(line_width * 1.2,1) +bridge_settings_enabled = True +bridge_enable_more_layers = False +bridge_skin_material_flow = 85 +bridge_skin_speed = 20 +bridge_wall_material_flow = 85 +bridge_wall_speed = 20 +infill_enable_travel_optimization = True +retraction_combing_max_distance = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg index c09bbed35e..ba645b29ae 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg @@ -4,7 +4,7 @@ name = Medium definition = imade3d_jellybox [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -14,3 +14,65 @@ global_quality = True adhesion_type = skirt layer_height = 0.2 layer_height_0 = 0.3 +retraction_hop = 0.2 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +retraction_prime_speed = =retraction_speed - 30 +roofing_layer_count = 1 +skin_line_width = =line_width * 1.2 +skin_outline_count = 2 +skirt_brim_minimal_length = 100 +skirt_brim_speed = =speed_layer_0 +skirt_gap = 5 +skirt_line_count = 1 +speed_layer_0 = 20 +speed_roofing = 20 +speed_topbottom = 25 +speed_travel = =speed_print if magic_spiralize else 120 +speed_travel_layer_0 = 60 +support_angle = 60 +support_bottom_enable = False +support_bottom_height = 0 +support_connect_zigzags = False +support_enable = False +support_infill_rate = 20 +support_interface_density = 70 +support_interface_enable = True +support_interface_height = 2 +support_interface_pattern = concentric +support_interface_skip_height = 0.1 +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.8 +support_xy_distance_overhang = =machine_nozzle_size / 2 +support_z_distance = 0.2 +travel_compensate_overlapping_walls_0_enabled = =travel_compensate_overlapping_walls_enabled +travel_compensate_overlapping_walls_x_enabled = =travel_compensate_overlapping_walls_enabled +travel_retract_before_outer_wall = True +wall_0_wipe_dist = =round(line_width * 1.2,1) +bridge_settings_enabled = True +bridge_enable_more_layers = False +bridge_skin_material_flow = 85 +bridge_skin_speed = 20 +bridge_wall_material_flow = 85 +bridge_wall_speed = 20 +infill_enable_travel_optimization = True +retraction_combing_max_distance = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg index 27bfbbaf58..8f88311c0f 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg @@ -4,7 +4,7 @@ name = UltraFine definition = imade3d_jellybox [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultrahigh weight = 2 @@ -14,3 +14,65 @@ global_quality = True adhesion_type = skirt layer_height = 0.05 layer_height_0 = 0.3 +retraction_hop = 0.1 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +retraction_prime_speed = =retraction_speed - 30 +roofing_layer_count = 1 +skin_line_width = =line_width * 1.2 +skin_outline_count = 2 +skirt_brim_minimal_length = 100 +skirt_brim_speed = =speed_layer_0 +skirt_gap = 5 +skirt_line_count = 1 +speed_layer_0 = 20 +speed_roofing = 20 +speed_topbottom = 25 +speed_travel = =speed_print if magic_spiralize else 120 +speed_travel_layer_0 = 60 +support_angle = 60 +support_bottom_enable = False +support_bottom_height = 0 +support_connect_zigzags = False +support_enable = False +support_infill_rate = 20 +support_interface_density = 70 +support_interface_enable = True +support_interface_height = 2 +support_interface_pattern = concentric +support_interface_skip_height = 0.1 +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.8 +support_xy_distance_overhang = =machine_nozzle_size / 2 +support_z_distance = 0.2 +travel_compensate_overlapping_walls_0_enabled = =travel_compensate_overlapping_walls_enabled +travel_compensate_overlapping_walls_x_enabled = =travel_compensate_overlapping_walls_enabled +travel_retract_before_outer_wall = True +wall_0_wipe_dist = =round(line_width * 1.2,1) +bridge_settings_enabled = True +bridge_enable_more_layers = False +bridge_skin_material_flow = 85 +bridge_skin_speed = 20 +bridge_wall_material_flow = 85 +bridge_wall_speed = 20 +infill_enable_travel_optimization = True +retraction_combing_max_distance = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_coarse.inst.cfg new file mode 100644 index 0000000000..8ac8944f88 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_coarse.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Coarse +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 45 diff --git a/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_fine.inst.cfg new file mode 100644 index 0000000000..5e41452863 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_fine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Fine +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_medium.inst.cfg new file mode 100644 index 0000000000..d06d3b23a2 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_medium.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Medium +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_coarse.inst.cfg new file mode 100644 index 0000000000..6b286623bb --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_coarse.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Coarse +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_fine.inst.cfg new file mode 100644 index 0000000000..4b998dc356 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_fine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Fine +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_medium.inst.cfg new file mode 100644 index 0000000000..d4d18f8f65 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_medium.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Medium +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_ultrafine.inst.cfg new file mode 100644 index 0000000000..7f0a6b9ec5 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_ultrafine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = UltraFine +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = ultrahigh +weight = 2 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 55 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/jb2_global_coarse.inst.cfg b/resources/quality/imade3d_jellybox_2/jb2_global_coarse.inst.cfg new file mode 100644 index 0000000000..ddbbe9c585 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/jb2_global_coarse.inst.cfg @@ -0,0 +1,78 @@ +[general] +version = 4 +name = Coarse +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.3 +layer_height_0 = 0.3 +retraction_hop = 0.2 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +retraction_prime_speed = =retraction_speed - 30 +roofing_layer_count = 1 +skin_line_width = =line_width * 1.2 +skin_outline_count = 2 +skirt_brim_minimal_length = 100 +skirt_brim_speed = =speed_layer_0 +skirt_gap = 5 +skirt_line_count = 1 +speed_layer_0 = 20 +speed_roofing = 20 +speed_topbottom = 25 +speed_travel = =speed_print if magic_spiralize else 120 +speed_travel_layer_0 = 60 +support_angle = 60 +support_bottom_enable = False +support_bottom_height = 0 +support_connect_zigzags = False +support_enable = False +support_infill_rate = 20 +support_interface_density = 70 +support_interface_enable = True +support_interface_height = 2 +support_interface_pattern = concentric +support_interface_skip_height = 0.1 +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.8 +support_xy_distance_overhang = =machine_nozzle_size / 2 +support_z_distance = 0.2 +travel_compensate_overlapping_walls_0_enabled = =travel_compensate_overlapping_walls_enabled +travel_compensate_overlapping_walls_x_enabled = =travel_compensate_overlapping_walls_enabled +travel_retract_before_outer_wall = True +wall_0_wipe_dist = =round(line_width * 1.2,1) +bridge_settings_enabled = True +bridge_enable_more_layers = False +bridge_skin_material_flow = 85 +bridge_skin_speed = 20 +bridge_wall_material_flow = 85 +bridge_wall_speed = 20 +infill_enable_travel_optimization = True +retraction_combing_max_distance = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/jb2_global_fine.inst.cfg b/resources/quality/imade3d_jellybox_2/jb2_global_fine.inst.cfg new file mode 100644 index 0000000000..70975ee918 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/jb2_global_fine.inst.cfg @@ -0,0 +1,78 @@ +[general] +version = 4 +name = Fine +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.1 +layer_height_0 = 0.3 +retraction_hop = 0.1 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +retraction_prime_speed = =retraction_speed - 30 +roofing_layer_count = 1 +skin_line_width = =line_width * 1.2 +skin_outline_count = 2 +skirt_brim_minimal_length = 100 +skirt_brim_speed = =speed_layer_0 +skirt_gap = 5 +skirt_line_count = 1 +speed_layer_0 = 20 +speed_roofing = 20 +speed_topbottom = 25 +speed_travel = =speed_print if magic_spiralize else 120 +speed_travel_layer_0 = 60 +support_angle = 60 +support_bottom_enable = False +support_bottom_height = 0 +support_connect_zigzags = False +support_enable = False +support_infill_rate = 20 +support_interface_density = 70 +support_interface_enable = True +support_interface_height = 2 +support_interface_pattern = concentric +support_interface_skip_height = 0.1 +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.8 +support_xy_distance_overhang = =machine_nozzle_size / 2 +support_z_distance = 0.2 +travel_compensate_overlapping_walls_0_enabled = =travel_compensate_overlapping_walls_enabled +travel_compensate_overlapping_walls_x_enabled = =travel_compensate_overlapping_walls_enabled +travel_retract_before_outer_wall = True +wall_0_wipe_dist = =round(line_width * 1.2,1) +bridge_settings_enabled = True +bridge_enable_more_layers = False +bridge_skin_material_flow = 85 +bridge_skin_speed = 20 +bridge_wall_material_flow = 85 +bridge_wall_speed = 20 +infill_enable_travel_optimization = True +retraction_combing_max_distance = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/jb2_global_normal.inst.cfg b/resources/quality/imade3d_jellybox_2/jb2_global_normal.inst.cfg new file mode 100644 index 0000000000..99c782dd72 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/jb2_global_normal.inst.cfg @@ -0,0 +1,78 @@ +[general] +version = 4 +name = Medium +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.2 +layer_height_0 = 0.3 +retraction_hop = 0.2 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +retraction_prime_speed = =retraction_speed - 30 +roofing_layer_count = 1 +skin_line_width = =line_width * 1.2 +skin_outline_count = 2 +skirt_brim_minimal_length = 100 +skirt_brim_speed = =speed_layer_0 +skirt_gap = 5 +skirt_line_count = 1 +speed_layer_0 = 20 +speed_roofing = 20 +speed_topbottom = 25 +speed_travel = =speed_print if magic_spiralize else 120 +speed_travel_layer_0 = 60 +support_angle = 60 +support_bottom_enable = False +support_bottom_height = 0 +support_connect_zigzags = False +support_enable = False +support_infill_rate = 20 +support_interface_density = 70 +support_interface_enable = True +support_interface_height = 2 +support_interface_pattern = concentric +support_interface_skip_height = 0.1 +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.8 +support_xy_distance_overhang = =machine_nozzle_size / 2 +support_z_distance = 0.2 +travel_compensate_overlapping_walls_0_enabled = =travel_compensate_overlapping_walls_enabled +travel_compensate_overlapping_walls_x_enabled = =travel_compensate_overlapping_walls_enabled +travel_retract_before_outer_wall = True +wall_0_wipe_dist = =round(line_width * 1.2,1) +bridge_settings_enabled = True +bridge_enable_more_layers = False +bridge_skin_material_flow = 85 +bridge_skin_speed = 20 +bridge_wall_material_flow = 85 +bridge_wall_speed = 20 +infill_enable_travel_optimization = True +retraction_combing_max_distance = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/jb2_global_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox_2/jb2_global_ultrafine.inst.cfg new file mode 100644 index 0000000000..bf01f11518 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/jb2_global_ultrafine.inst.cfg @@ -0,0 +1,78 @@ +[general] +version = 4 +name = UltraFine +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = ultrahigh +weight = 2 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.05 +layer_height_0 = 0.3 +retraction_hop = 0.1 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +retraction_prime_speed = =retraction_speed - 30 +roofing_layer_count = 1 +skin_line_width = =line_width * 1.2 +skin_outline_count = 2 +skirt_brim_minimal_length = 100 +skirt_brim_speed = =speed_layer_0 +skirt_gap = 5 +skirt_line_count = 1 +speed_layer_0 = 20 +speed_roofing = 20 +speed_topbottom = 25 +speed_travel = =speed_print if magic_spiralize else 120 +speed_travel_layer_0 = 60 +support_angle = 60 +support_bottom_enable = False +support_bottom_height = 0 +support_connect_zigzags = False +support_enable = False +support_infill_rate = 20 +support_interface_density = 70 +support_interface_enable = True +support_interface_height = 2 +support_interface_pattern = concentric +support_interface_skip_height = 0.1 +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.8 +support_xy_distance_overhang = =machine_nozzle_size / 2 +support_z_distance = 0.2 +travel_compensate_overlapping_walls_0_enabled = =travel_compensate_overlapping_walls_enabled +travel_compensate_overlapping_walls_x_enabled = =travel_compensate_overlapping_walls_enabled +travel_retract_before_outer_wall = True +wall_0_wipe_dist = =round(line_width * 1.2,1) +bridge_settings_enabled = True +bridge_enable_more_layers = False +bridge_skin_material_flow = 85 +bridge_skin_speed = 20 +bridge_wall_material_flow = 85 +bridge_wall_speed = 20 +infill_enable_travel_optimization = True +retraction_combing_max_distance = 50 \ No newline at end of file diff --git a/resources/quality/katihal/alya3dp_normal.inst.cfg b/resources/quality/katihal/alya3dp_normal.inst.cfg new file mode 100644 index 0000000000..43be7e92a0 --- /dev/null +++ b/resources/quality/katihal/alya3dp_normal.inst.cfg @@ -0,0 +1,57 @@ +[general] +version = 4 +name = Normal +definition = alya3dp + +[metadata] +setting_version = 5 +type = quality +quality_type = alya_normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.16 +layer_height_0 = 0.1 +adhesion_type = raft +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_angles = [0,90 ] +infill_sparse_density = 15 +retraction_min_travel = 0.8 +skin_angles = [0,90] +top_layers = 6 +wall_line_count = 2 +infill_pattern = grid +skin_line_width = 0.4 +raft_base_line_spacing = 2.6 +raft_base_line_width = 1.2 +raft_base_thickness = 0.3 +raft_interface_line_width = 0.4 +raft_interface_thickness = 0.3 +raft_interface_line_spacing = 0.8 +raft_margin = 5 +raft_surface_layers = 3 +raft_surface_line_width = 0.4 +raft_surface_thickness = 0.2 +retract_at_layer_change = true +retraction_hop = 0.5 +retraction_hop_enabled = true +support_type = everywhere +support_interface_pattern =lines +support_top_distance = 0.15 +support_z_distance = 0.25 +support_bottom_distance = 0.15 +support_brim_width = 6 +support_infill_rate = =15 if support_enable else 0 if support_tree_enable else 15 +support_line_distance = 1.7 +support_line_width = 0.25 +support_initial_layer_line_distance = 2.7 +support_xy_distance = 0.7 +infill_line_width = 0.4 +line_width = 0.4 +optimize_wall_printing_order = True +support_angle = 70 +wall_line_width_x = 0.4 +wall_line_width_0 = 0.35 \ No newline at end of file diff --git a/resources/quality/katihal/alya3dp_normal_generic_pla.inst.cfg b/resources/quality/katihal/alya3dp_normal_generic_pla.inst.cfg new file mode 100644 index 0000000000..bec4107baf --- /dev/null +++ b/resources/quality/katihal/alya3dp_normal_generic_pla.inst.cfg @@ -0,0 +1,32 @@ +[general] +version = 4 +definition = alya3dp +name = Normal + +[metadata] +setting_version = 5 +type = quality +quality_type = alya_normal +weight = 3 +material = generic_pla + +[values] +material_diameter = 1.75 +speed_print = 40 +speed_topbottom = 30 +speed_wall_0 = 35 +speed_infill = 45 +speed_layer_0 = 25 +speed_support = 45 +speed_support_interface = 35 +speed_travel = 60 +raft_airgap = 0.15 +layer_0_z_overlap = 0.04 +raft_base_speed = 15 +raft_interface_speed = 20 +raft_surface_speed = 35 +raft_surface_fan_speed = 100 +raft_base_fan_speed = 0 +raft_interface_fan_speed = 0 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 \ No newline at end of file diff --git a/resources/quality/katihal/alyanx3dp_normal.inst.cfg b/resources/quality/katihal/alyanx3dp_normal.inst.cfg new file mode 100644 index 0000000000..e86a6a3255 --- /dev/null +++ b/resources/quality/katihal/alyanx3dp_normal.inst.cfg @@ -0,0 +1,57 @@ +[general] +version = 4 +name = Normal +definition = alyanx3dp + +[metadata] +setting_version = 5 +type = quality +quality_type = alyanx_normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.16 +layer_height_0 = 0.1 +adhesion_type = raft +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_angles = [0,90 ] +infill_sparse_density = 15 +retraction_min_travel = 0.8 +skin_angles = [0,90] +top_layers = 6 +wall_line_count = 2 +infill_pattern = grid +skin_line_width = 0.4 +raft_base_line_spacing = 2.6 +raft_base_line_width = 1.2 +raft_base_thickness = 0.3 +raft_interface_line_width = 0.4 +raft_interface_thickness = 0.3 +raft_interface_line_spacing = 0.8 +raft_margin = 5 +raft_surface_layers = 3 +raft_surface_line_width = 0.4 +raft_surface_thickness = 0.2 +retract_at_layer_change = true +retraction_hop = 0.5 +retraction_hop_enabled = true +support_type = everywhere +support_interface_pattern =lines +support_top_distance = 0.15 +support_z_distance = 0.25 +support_bottom_distance = 0.15 +support_brim_width = 6 +support_infill_rate = =15 if support_enable else 0 if support_tree_enable else 15 +support_line_distance = 1.7 +support_line_width = 0.25 +support_initial_layer_line_distance = 2.7 +support_xy_distance = 0.7 +infill_line_width = 0.4 +line_width = 0.4 +optimize_wall_printing_order = True +support_angle = 70 +wall_line_width_x = 0.4 +wall_line_width_0 = 0.35 \ No newline at end of file diff --git a/resources/quality/katihal/alyanx3dp_normal_generic_pla.inst.cfg b/resources/quality/katihal/alyanx3dp_normal_generic_pla.inst.cfg new file mode 100644 index 0000000000..4c79a3ac78 --- /dev/null +++ b/resources/quality/katihal/alyanx3dp_normal_generic_pla.inst.cfg @@ -0,0 +1,32 @@ +[general] +version = 4 +definition = alyanx3dp +name = Normal + +[metadata] +setting_version = 6 +type = quality +quality_type = alyanx_normal +weight = 2 +material = generic_pla + +[values] +material_diameter = 1.75 +speed_print = 40 +speed_topbottom = 30 +speed_wall_0 = 35 +speed_infill = 45 +speed_layer_0 = 25 +speed_support = 45 +speed_support_interface = 35 +speed_travel = 60 +raft_airgap = 0.15 +layer_0_z_overlap = 0.04 +raft_base_speed = 15 +raft_interface_speed = 20 +raft_surface_speed = 35 +raft_surface_fan_speed = 100 +raft_base_fan_speed = 0 +raft_interface_fan_speed = 0 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 \ No newline at end of file diff --git a/resources/quality/katihal/kupido_normal.inst.cfg b/resources/quality/katihal/kupido_normal.inst.cfg new file mode 100644 index 0000000000..541eb93473 --- /dev/null +++ b/resources/quality/katihal/kupido_normal.inst.cfg @@ -0,0 +1,57 @@ +[general] +version = 4 +name = Normal +definition = kupido + +[metadata] +setting_version = 5 +type = quality +quality_type = kupido_normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.16 +layer_height_0 = 0.1 +adhesion_type = raft +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_angles = [0,90 ] +infill_sparse_density = 15 +retraction_min_travel = 0.8 +skin_angles = [0,90] +top_layers = 6 +wall_line_count = 2 +infill_pattern = grid +skin_line_width = 0.4 +raft_base_line_spacing = 2.6 +raft_base_line_width = 1.2 +raft_base_thickness = 0.3 +raft_interface_line_width = 0.4 +raft_interface_thickness = 0.3 +raft_interface_line_spacing = 0.8 +raft_margin = 5 +raft_surface_layers = 3 +raft_surface_line_width = 0.4 +raft_surface_thickness = 0.2 +retract_at_layer_change = true +retraction_hop = 0.5 +retraction_hop_enabled = true +support_type = everywhere +support_interface_pattern =lines +support_top_distance = 0.15 +support_z_distance = 0.25 +support_bottom_distance = 0.15 +support_brim_width = 6 +support_infill_rate = =15 if support_enable else 0 if support_tree_enable else 15 +support_line_distance = 1.7 +support_line_width = 0.25 +support_initial_layer_line_distance = 2.7 +support_xy_distance = 0.7 +infill_line_width = 0.4 +line_width = 0.4 +optimize_wall_printing_order = True +support_angle = 70 +wall_line_width_x = 0.4 +wall_line_width_0 = 0.35 \ No newline at end of file diff --git a/resources/quality/katihal/kupido_normal_generic_abs.inst.cfg b/resources/quality/katihal/kupido_normal_generic_abs.inst.cfg new file mode 100644 index 0000000000..674b620174 --- /dev/null +++ b/resources/quality/katihal/kupido_normal_generic_abs.inst.cfg @@ -0,0 +1,32 @@ +[general] +version = 4 +definition = kupido +name = Normal + +[metadata] +setting_version = 5 +type = quality +quality_type = kupido_normal +weight = 3 +material = generic_abs + +[values] +material_diameter = 1.75 +speed_print = 40 +speed_topbottom = 30 +speed_wall_0 = 35 +speed_infill = 45 +speed_layer_0 = 25 +speed_support = 45 +speed_support_interface = 35 +speed_travel = 60 +raft_airgap = 0.1 +layer_0_z_overlap = 0.04 +raft_base_speed = 15 +raft_interface_speed = 20 +raft_surface_speed = 35 +raft_surface_fan_speed = 100 +raft_base_fan_speed = 0 +raft_interface_fan_speed = 0 +cool_fan_speed = 30 +cool_fan_speed_0 = 30 \ No newline at end of file diff --git a/resources/quality/katihal/kupido_normal_generic_pla.inst.cfg b/resources/quality/katihal/kupido_normal_generic_pla.inst.cfg new file mode 100644 index 0000000000..a6f6fa47a3 --- /dev/null +++ b/resources/quality/katihal/kupido_normal_generic_pla.inst.cfg @@ -0,0 +1,32 @@ +[general] +version = 4 +definition = kupido +name = Normal + +[metadata] +setting_version = 5 +type = quality +quality_type = kupido_normal +weight = 3 +material = generic_pla + +[values] +material_diameter = 1.75 +speed_print = 40 +speed_topbottom = 30 +speed_wall_0 = 35 +speed_infill = 45 +speed_layer_0 = 25 +speed_support = 45 +speed_support_interface = 35 +speed_travel = 60 +raft_airgap = 0.15 +layer_0_z_overlap = 0.04 +raft_base_speed = 15 +raft_interface_speed = 20 +raft_surface_speed = 35 +raft_surface_fan_speed = 100 +raft_base_fan_speed = 0 +raft_interface_fan_speed = 0 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 \ No newline at end of file diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg index bda943ccb3..bb1769f8c6 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg index 17a61de974..55db029539 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg index 310d93a32a..362cc83504 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg index 4d738769b4..de39e22ab0 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg @@ -4,7 +4,7 @@ name = Low definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg index 55593d7bc2..c929956b8f 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg index a270353100..652341a51f 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg index 9efb3ccb63..3aae302798 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg index 8c41234af8..988904aa87 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg index 957d009be3..3c133a8127 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg @@ -4,7 +4,7 @@ name = Low definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg index 546572b2a6..9973e5102f 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg index 743cc19a20..bb405075de 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = kemiq_q2_gama [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg index ece0fa19c7..74af116d16 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = kemiq_q2_gama [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg index 71338c8c5f..1afe2ba8c0 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = kemiq_q2_gama [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg index 60066b5f28..4637bf63f6 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg @@ -4,7 +4,7 @@ name = Low definition = kemiq_q2_gama [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg index 42ded06db1..c3f64faa95 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = kemiq_q2_gama [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/key3d/key3d_tyro_best.inst.cfg b/resources/quality/key3d/key3d_tyro_best.inst.cfg new file mode 100644 index 0000000000..785dfe8df7 --- /dev/null +++ b/resources/quality/key3d/key3d_tyro_best.inst.cfg @@ -0,0 +1,128 @@ +[general] +version = 4 +name = Best Quality +definition = key3d_tyro + +[metadata] +setting_version = 11 +type = quality +quality_type = best +weight = 1 +global_quality = True + +[values] +layer_height = 0.08 +layer_height_0 = 0.24 +line_width = 0.4 +wall_line_width_0 = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 20 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 0 +material_bed_temperature = 0 +build_volume_temperature = 0 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 30 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.24 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.2 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/key3d/key3d_tyro_fast.inst.cfg b/resources/quality/key3d/key3d_tyro_fast.inst.cfg new file mode 100644 index 0000000000..8decbb2292 --- /dev/null +++ b/resources/quality/key3d/key3d_tyro_fast.inst.cfg @@ -0,0 +1,127 @@ +[general] +version = 4 +name = Fast Quality +definition = key3d_tyro + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +global_quality = True + +[values] +layer_height = 0.24 +layer_height_0 = 0.24 +line_width = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 15 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 0 +material_bed_temperature = 0 +build_volume_temperature = 0 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 60 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.48 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =15 if support_enable else 0 if support_tree_enable else 15 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/key3d/key3d_tyro_normal.inst.cfg b/resources/quality/key3d/key3d_tyro_normal.inst.cfg new file mode 100644 index 0000000000..84ea275cb4 --- /dev/null +++ b/resources/quality/key3d/key3d_tyro_normal.inst.cfg @@ -0,0 +1,127 @@ +[general] +version = 4 +name = Normal Quality +definition = key3d_tyro + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.16 +layer_height_0 = 0.24 +line_width = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 20 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 0 +material_bed_temperature = 0 +build_volume_temperature = 0 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 50 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.32 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.21 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/makeblock/makeblock_mcreate_pla_normal.inst.cfg b/resources/quality/makeblock/makeblock_mcreate_pla_normal.inst.cfg new file mode 100644 index 0000000000..661695cca0 --- /dev/null +++ b/resources/quality/makeblock/makeblock_mcreate_pla_normal.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Fine +definition = makeblock_mcreate + +[metadata] +setting_version = 6 +type = quality +quality_type = normal +weight = 0 +material = generic_pla + +[values] +default_material_print_temperature = 190 +material_initial_print_temperature = 190 +material_final_print_temperature = 185 +material_flow = 94 +retraction_speed = 55 +skirt_line_count = 2 +adhesion_type = skirt diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg index 6e430754cf..25481ea7fa 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg index 71af7efca1..849e9a8e14 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg index adc8128e6f..cd301fa6d1 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg index c66aec810e..df2bfb7c5f 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg index 9d8d46e5ca..f895959d5f 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg index 058fb2fa3c..bece1ed372 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg index 6cbd615d48..7001036579 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg index 5c4dfe8a86..254b3417d3 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg index dd99af5356..268ae42078 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg index 20ea357fba..d80d8f7729 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg index 5d6e1ed7b7..a3a32d2b94 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg index c573ba3eb2..21c366e594 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg index 9e9181b195..1a4f548493 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg index 54cec5c3f0..c2e61810fe 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg index d8aded3c63..26e50780e0 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg index 84a5bd316a..9c0d1b2b5a 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg index 6aad899773..2d29520e11 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg index 05917d9769..2f74aa7fd0 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg index e2fe95f8d8..1687a9c000 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg index 387a051d64..a4ec754aa4 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg index f659c78f80..a63eb6ff14 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg index 9e19c78b35..78619554f4 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg index 5ae85d1eef..d33000b5a5 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg index 627f70badb..b812efe72f 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg index 7f970601b7..41515712b9 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg index b4f5ea7388..3cf3b16ddf 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg index 7bc3141980..7eb8e0c243 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg index c7eb38439c..211a9a468d 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg index ce0604c7cc..c5a40f6aaf 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg index 5ef6b1027d..6c0ae88c8f 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg index 2a24855305..ecea3ff7dc 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg index 24c6c205fa..da8ab26e59 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg index 7364bdaa36..be7fcfe2fd 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg index fd1e5b9a6a..39b9681972 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg index 836be1bad9..803a8ee4fb 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg index 30672cda4a..a58f96973e 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg index 1ef32bd44c..c489268671 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg index 9a2c26b034..ed3923dc6d 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg index d4bf86569b..8ee848931e 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg index b0f626bdaf..3216bb5d43 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg index 6e3de45b42..cb1fb5410f 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg index db7a7f891f..17907c13d9 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg index 145c1a2fd2..4abd8e1ead 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg index 3b264639ad..d96cc66962 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg index 030d82ec0f..5196ab1d89 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg index a075cd54a1..0668bba438 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg index 6846f451b1..461e5e8d18 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg index adee263981..28efd14dc9 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg index fd1cb1969e..e57e2d88c2 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg index 350ecb9e6c..d223d7b04c 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg index 661690da24..6bd2e8a61a 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg index b056628016..2485d59a6f 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg index 5fe909d1b8..0a1bdb4f16 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg index e423d179e0..49d9e3fa00 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg index 6e3dc051de..ba4ca120d9 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg index ca6bd27c56..7460d3fc67 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg index e33d685f11..2b7ea859c0 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg index e348f871b2..8c2e0a76c4 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg index 311c7b23f8..74240d304f 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg index 4c6f55d812..84d2b8c969 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg index 13e57bf86a..627f56ad70 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg index c2e07310d1..6c06171ff3 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg index 41bc8a8431..a21ad1a661 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg index 50b10e3078..838135b790 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg index 107dfc3d24..3ec00f3827 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg index 6e55583184..880de7b814 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg index f809902f60..2a91eaf649 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg index 770a51e1dd..9ea25f9128 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg index e2116bdd85..d8c6d51808 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg index ce902318f8..27bd5f1e09 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg index 6b5d2604d0..ed3a7040a2 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg index b777e97444..91396af2ae 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg index f1080c776c..c735c1e811 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg index 7b7525f007..e722129cf2 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg index d0bfe599a4..b0b9779a7e 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg index 07b08619d1..fa073e9e37 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg index 74a03b7cbc..b9cd2baecd 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg index fc3ec719d0..4c84206b7c 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg index 316c4a2d17..9c9baf5e3c 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg index fbbefb9937..fd3e3dc8a9 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality material = generic_pla weight = 0 diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index b8828f07e0..9c40ea3586 100644 --- a/resources/quality/normal.inst.cfg +++ b/resources/quality/normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_best.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_best.inst.cfg new file mode 100644 index 0000000000..d5d2b5a3cf --- /dev/null +++ b/resources/quality/nwa3d_a31/nwa3d_a31_best.inst.cfg @@ -0,0 +1,128 @@ + +[general] +version = 4 +name = Best Quality +definition = nwa3d_a31 + +[metadata] +setting_version = 11 +type = quality +quality_type = best +weight = 1 +global_quality = True + +[values] +layer_height = 0.08 +layer_height_0 = 0.24 +line_width = 0.4 +wall_line_width_0 = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 20 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 50 +material_bed_temperature = 50 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 30 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.24 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.2 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_e.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_e.inst.cfg new file mode 100644 index 0000000000..ea98b3df7b --- /dev/null +++ b/resources/quality/nwa3d_a31/nwa3d_a31_e.inst.cfg @@ -0,0 +1,124 @@ +[general] +version = 4 +name = 0.6 Engineering Quality +definition = nwa3d_a31 + +[metadata] +setting_version = 11 +type = quality +quality_type = Engineering +weight = -2 +global_quality = True + +[values] +layer_height = 0.28 +layer_height_0 = 0.4 +line_width = 0.6 +wall_line_width_0 = 0.6 +initial_layer_line_width_factor = 100 +wall_thickness = 1.2 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 1.2 +top_layers = 5 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 15 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.15 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 50 +material_bed_temperature = 50 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 1.2 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 40 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 40 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_layer = 3 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.34 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = .45 +support_roof_density = 45 +support_roof_pattern = grid +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_fast.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_fast.inst.cfg new file mode 100644 index 0000000000..a339d2c401 --- /dev/null +++ b/resources/quality/nwa3d_a31/nwa3d_a31_fast.inst.cfg @@ -0,0 +1,128 @@ + +[general] +version = 4 +name = Fast Quality +definition = nwa3d_a31 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +global_quality = True + +[values] +layer_height = 0.24 +layer_height_0 = 0.24 +line_width = 0.4 +wall_line_width_0 = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 15 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 50 +material_bed_temperature = 50 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 60 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.48 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =15 if support_enable else 0 if support_tree_enable else 15 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_normal.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_normal.inst.cfg new file mode 100644 index 0000000000..ada89f0fd5 --- /dev/null +++ b/resources/quality/nwa3d_a31/nwa3d_a31_normal.inst.cfg @@ -0,0 +1,127 @@ +[general] +version = 4 +name = Normal Quality +definition = nwa3d_a31 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.16 +layer_height_0 = 0.24 +line_width = 0.4 +wall_line_width_0 = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 20 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 50 +material_bed_temperature = 50 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 50 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.32 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.21 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg b/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg index 0024fb140e..0ba0ea8e16 100644 --- a/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg +++ b/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg @@ -4,7 +4,7 @@ name = Best Quality definition = nwa3d_a5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = best weight = 1 @@ -14,7 +14,6 @@ global_quality = True layer_height = 0.08 layer_height_0 = 0.24 line_width = 0.4 -wall_line_width_0 = 100 initial_layer_line_width_factor = 100 wall_thickness = 0.8 wall_0_wipe_dist = 0.2 @@ -76,7 +75,6 @@ speed_print = 30 speed_travel = 150 speed_layer_0 = 10 speed_travel_layer_0 = 50 -max_feedrate_z_override = 0 speed_slowdown_layers = 2 speed_equalize_flow_enabled = False acceleration_enabled = False @@ -96,8 +94,8 @@ support_angle = 50 support_pattern = grid support_wall_count = 0 zig_zaggify_support = False -support_infill_rate = 20 -support_infill_angle = 0 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] support_brim_enable = True support_brim_line_count = 5 support_z_distance = 0.18 diff --git a/resources/quality/nwa3d_a5/nwa3d_a5_fast.inst.cfg b/resources/quality/nwa3d_a5/nwa3d_a5_fast.inst.cfg index 400dff7dff..e431a81667 100644 --- a/resources/quality/nwa3d_a5/nwa3d_a5_fast.inst.cfg +++ b/resources/quality/nwa3d_a5/nwa3d_a5_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast Quality definition = nwa3d_a5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -14,7 +14,6 @@ global_quality = True layer_height = 0.24 layer_height_0 = 0.24 line_width = 0.4 -wall_line_width_0 = 100 initial_layer_line_width_factor = 100 wall_thickness = 0.8 wall_0_wipe_dist = 0.2 @@ -76,7 +75,6 @@ speed_print = 60 speed_travel = 150 speed_layer_0 = 10 speed_travel_layer_0 = 50 -max_feedrate_z_override = 0 speed_slowdown_layers = 2 speed_equalize_flow_enabled = False acceleration_enabled = False @@ -96,8 +94,8 @@ support_angle = 50 support_pattern = grid support_wall_count = 0 zig_zaggify_support = False -support_infill_rate = 15 -support_infill_angle = 0 +support_infill_rate = =15 if support_enable else 0 if support_tree_enable else 15 +support_infill_angles = [0] support_brim_enable = True support_brim_line_count = 5 support_z_distance = 0.3 diff --git a/resources/quality/nwa3d_a5/nwa3d_a5_normal.inst.cfg b/resources/quality/nwa3d_a5/nwa3d_a5_normal.inst.cfg index 635cde4494..e7f37b9e41 100644 --- a/resources/quality/nwa3d_a5/nwa3d_a5_normal.inst.cfg +++ b/resources/quality/nwa3d_a5/nwa3d_a5_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal Quality definition = nwa3d_a5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -14,7 +14,6 @@ global_quality = True layer_height = 0.16 layer_height_0 = 0.24 line_width = 0.4 -wall_line_width_0 = 100 initial_layer_line_width_factor = 100 wall_thickness = 0.8 wall_0_wipe_dist = 0.2 @@ -76,7 +75,6 @@ speed_print = 50 speed_travel = 150 speed_layer_0 = 10 speed_travel_layer_0 = 50 -max_feedrate_z_override = 0 speed_slowdown_layers = 2 speed_equalize_flow_enabled = False acceleration_enabled = False @@ -96,8 +94,8 @@ support_angle = 50 support_pattern = grid support_wall_count = 0 zig_zaggify_support = False -support_infill_rate = 20 -support_infill_angle = 0 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] support_brim_enable = True support_brim_line_count = 5 support_z_distance = 0.21 diff --git a/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg index dab819cc38..1264580e62 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg @@ -4,10 +4,11 @@ name = Coarse definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 +global_quality = True [values] layer_height = 0.08 diff --git a/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg index feb005e39c..57a545a620 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg @@ -4,10 +4,11 @@ name = Draft definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 +global_quality = True [values] layer_height = 0.1 diff --git a/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg index 46bd8f4a63..dd6bb0e1f0 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg @@ -4,10 +4,11 @@ name = Extra High definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra_high weight = 0 +global_quality = True [values] layer_height = 0.02 diff --git a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg index 2b951c6e4e..7b1e383217 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg @@ -4,10 +4,11 @@ name = High definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 +global_quality = True [values] layer_height = 0.04 diff --git a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg index b965862a16..9a31c92f03 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg @@ -4,10 +4,11 @@ name = Normal definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 +global_quality = True [values] layer_height = 0.06 diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_A.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_A.inst.cfg new file mode 100644 index 0000000000..fed7ad0362 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_A.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = a +weight = 1 +material = emotiontech_abs +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 35/50) +speed_wall_0 = =math.ceil(speed_wall * 30/35) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 20/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 35 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 6 * layer_height +cool_min_speed = 10 +support_angle = 65 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 98 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_B.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_B.inst.cfg new file mode 100644 index 0000000000..1667c220cf --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_B.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 0 +material = emotiontech_abs +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 55 +speed_wall = =math.ceil(speed_print * 37/55) +speed_wall_0 = =math.ceil(speed_wall * 33/37) +speed_topbottom = =math.ceil(speed_print * 37/55) +speed_layer_0 = =math.ceil(speed_print * 25/55) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 35 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 15 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_C.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_C.inst.cfg new file mode 100644 index 0000000000..12d2243d22 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_C.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = -1 +material = emotiontech_abs +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 60 +speed_wall = =math.ceil(speed_print * 40/60) +speed_wall_0 = =math.ceil(speed_wall * 35/40) +speed_topbottom = =math.ceil(speed_print * 40/60) +speed_layer_0 = =math.ceil(speed_print * 30/60) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 35 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 6 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =default_material_print_temperature +5 +material_flow = 91 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 20 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_A.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_A.inst.cfg new file mode 100644 index 0000000000..c4e7796054 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_A.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = a +weight = 1 +material = emotiontech_petg +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 35/50) +speed_wall_0 = =math.ceil(speed_wall * 30/35) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 20/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 65 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 98 +retraction_extra_prime_amount = 0 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_B.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_B.inst.cfg new file mode 100644 index 0000000000..3d011cf07a --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_B.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 0 +material = emotiontech_petg +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 55 +speed_wall = =math.ceil(speed_print * 37/55) +speed_wall_0 = =math.ceil(speed_wall * 33/37) +speed_topbottom = =math.ceil(speed_print * 37/55) +speed_layer_0 = =math.ceil(speed_print * 25/55) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 15 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_C.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_C.inst.cfg new file mode 100644 index 0000000000..70df574c33 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PETG_C.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = -1 +material = emotiontech_petg +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 60 +speed_wall = =math.ceil(speed_print * 40/60) +speed_wall_0 = =math.ceil(speed_wall * 35/40) +speed_topbottom = =math.ceil(speed_print * 40/60) +speed_layer_0 = =math.ceil(speed_print * 30/60) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =default_material_print_temperature +5 +material_flow = 91 +retraction_extra_prime_amount = 0 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 20 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_A.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_A.inst.cfg new file mode 100644 index 0000000000..446073fd68 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_A.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = a +weight = 1 +material = emotiontech_pla +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 35/50) +speed_wall_0 = =math.ceil(speed_wall * 30/35) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 20/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 65 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature -5 +material_flow = 98 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_B.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_B.inst.cfg new file mode 100644 index 0000000000..e5189e4d4d --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_B.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 0 +material = emotiontech_pla +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 55 +speed_wall = =math.ceil(speed_print * 37/55) +speed_wall_0 = =math.ceil(speed_wall * 33/37) +speed_topbottom = =math.ceil(speed_print * 37/55) +speed_layer_0 = =math.ceil(speed_print * 25/55) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 15 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_C.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_C.inst.cfg new file mode 100644 index 0000000000..7b84cbf6ff --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PLA_C.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = -1 +material = emotiontech_pla +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 60 +speed_wall = =math.ceil(speed_print * 40/60) +speed_wall_0 = =math.ceil(speed_wall * 35/40) +speed_topbottom = =math.ceil(speed_print * 40/60) +speed_layer_0 = =math.ceil(speed_print * 30/60) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 +material_flow = 91 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 20 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_A.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_A.inst.cfg new file mode 100644 index 0000000000..5361c7b5f2 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_A.inst.cfg @@ -0,0 +1,48 @@ + [general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = a +weight = 1 +material = emotiontech_pva-m +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 65 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width*3/4 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 3 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_B.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_B.inst.cfg new file mode 100644 index 0000000000..5b7663b802 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 0 +material = emotiontech_pva-m +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature + 3 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 15 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width*3/4 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 3 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_C.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_C.inst.cfg new file mode 100644 index 0000000000..7b0be4e0ba --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-M_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = -1 +material = emotiontech_pva-m +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 20 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width*3/4 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 3 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_A.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_A.inst.cfg new file mode 100644 index 0000000000..8bc91948c3 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_A.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = a +weight = 1 +material = emotiontech_pva-oks +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 65 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width*3/4 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 3 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_B.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_B.inst.cfg new file mode 100644 index 0000000000..b9c05a9582 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 0 +material = emotiontech_pva-oks +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature + 3 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 15 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width*3/4 +support_xy_distance_overhang = ==line_width*0.175/line_width +support_offset = 3 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_C.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_C.inst.cfg new file mode 100644 index 0000000000..30fd46b4ab --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-OKS_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = -1 +material = emotiontech_pva-oks +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 20 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width*3/4 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 3 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_A.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_A.inst.cfg new file mode 100644 index 0000000000..f89451a6e7 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_A.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = a +weight = 1 +material = emotiontech_pva-s +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 65 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width*3/4 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 3 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_B.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_B.inst.cfg new file mode 100644 index 0000000000..5953221cc4 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 0 +material = emotiontech_pva-s +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature + 3 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 15 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width*3/4 +support_xy_distance_overhang = ==line_width*0.175/line_width +support_offset = 3 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_C.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_C.inst.cfg new file mode 100644 index 0000000000..091d149ab1 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_PVA-S_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = -1 +material = emotiontech_pva-s +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 95 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 20 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width*3/4 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 3 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_A.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_A.inst.cfg new file mode 100644 index 0000000000..58710bfe71 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_A.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = A +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = a +weight = 1 +material = emotiontech_tpu98a +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.38 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.38 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.38 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 30 +speed_wall = =math.ceil(speed_print * 30/30) +speed_wall_0 = =math.ceil(speed_print * 25/30) +speed_topbottom = =math.ceil(speed_print * 25/30) +speed_layer_0 = =math.ceil(speed_print * 20/30) +speed_slowdown_layers = 1 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 3 +material_print_temperature_layer_0 = =default_material_print_temperature - 3 +material_flow = 107 +retraction_extra_prime_amount = 0.2 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = False +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 2.5 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 0.5 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_B.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_B.inst.cfg new file mode 100644 index 0000000000..0248d32e7a --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_B.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 0 +material = emotiontech_tpu98a +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.38 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.38 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.38 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 35 +speed_wall = =math.ceil(speed_print * 35/35) +speed_wall_0 = =math.ceil(speed_print * 27/35) +speed_topbottom = =math.ceil(speed_print * 25/35) +speed_layer_0 = =math.ceil(speed_print * 20/35) +speed_slowdown_layers = 1 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 103 +retraction_extra_prime_amount = 0.2 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = False +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 2.5 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 0.5 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_C.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_C.inst.cfg new file mode 100644 index 0000000000..825794fb10 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_TPU98A_C.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = -1 +material = emotiontech_tpu98a +variant = Standard 0.4 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.38 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.38 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.38 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 40/40) +speed_wall_0 = =math.ceil(speed_print * 30/40) +speed_topbottom = =math.ceil(speed_print * 27/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 1 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 7 +material_print_temperature_layer_0 = =default_material_print_temperature + 3 +material_flow = 101 +retraction_extra_prime_amount = 0.2 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = False +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 2.5 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 0.5 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_B.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_B.inst.cfg new file mode 100644 index 0000000000..9ae5a43c9e --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_B.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 1 +material = emotiontech_abs +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 37/50) +speed_wall_0 = =math.ceil(speed_wall * 27/43) +speed_topbottom = =math.ceil(speed_print * 33/50) +speed_layer_0 = =math.ceil(speed_print * 20/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 35 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 6 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_C.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_C.inst.cfg new file mode 100644 index 0000000000..5f96163183 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_C.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 0 +material = emotiontech_abs +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 55 +speed_wall = =math.ceil(speed_print * 40/55) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/55) +speed_layer_0 = =math.ceil(speed_print * 23/55) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 35 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 6 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_D.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_D.inst.cfg new file mode 100644 index 0000000000..dbf10149a2 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ABS_D.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = -1 +material = emotiontech_abs +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 60 +speed_wall = =math.ceil(speed_print * 43/60) +speed_wall_0 = =math.ceil(speed_wall * 33/43) +speed_topbottom = =math.ceil(speed_print * 37/60) +speed_layer_0 = =math.ceil(speed_print * 25/60) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 35 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 6 * layer_height +cool_min_speed = 10 +support_angle = 45 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =default_material_print_temperature +5 +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_B.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_B.inst.cfg new file mode 100644 index 0000000000..5c70ddc959 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_B.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 1 +material = emotiontech_asax +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 37/50) +speed_wall_0 = =math.ceil(speed_wall * 30/37) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 40 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature + 2 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_C.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_C.inst.cfg new file mode 100644 index 0000000000..c1449811d3 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_C.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 0 +material = emotiontech_asax +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 55 +speed_wall = =math.ceil(speed_print * 40/55) +speed_wall_0 = =math.ceil(speed_wall * 33/40) +speed_topbottom = =math.ceil(speed_print * 37/55) +speed_layer_0 = =math.ceil(speed_print * 27/55) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 40 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature + 2 +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_D.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_D.inst.cfg new file mode 100644 index 0000000000..24c8ee9ff3 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_ASA-X_D.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = -1 +material = emotiontech_asax +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 60 +speed_wall = =math.ceil(speed_print * 43/60) +speed_wall_0 = =math.ceil(speed_wall * 35/45) +speed_topbottom = =math.ceil(speed_print * 40/60) +speed_layer_0 = =math.ceil(speed_print * 30/60) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 40 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 8 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_Nylon-1030_C.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_Nylon-1030_C.inst.cfg new file mode 100644 index 0000000000..c38c2a18d8 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_Nylon-1030_C.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 0 +material = emotiontech_nylon_1030 +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 55 +speed_wall = =math.ceil(speed_print * 40/55) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/55) +speed_layer_0 = =math.ceil(speed_print * 23/55) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 35 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature + 3 +material_flow = 93 +retraction_extra_prime_amount = 0 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 30 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_B.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_B.inst.cfg new file mode 100644 index 0000000000..04e0a7394d --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_B.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 1 +material = emotiontech_petg +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 45 +speed_wall = =math.ceil(speed_print * 33/45) +speed_wall_0 = =math.ceil(speed_wall * 23/33) +speed_topbottom = =math.ceil(speed_print * 30/45) +speed_layer_0 = =math.ceil(speed_print * 23/45) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 70 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_C.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_C.inst.cfg new file mode 100644 index 0000000000..6322f6872f --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_C.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 0 +material = emotiontech_petg +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 37/50) +speed_wall_0 = =math.ceil(speed_wall * 25/37) +speed_topbottom = =math.ceil(speed_print * 33/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 70 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 92 +retraction_extra_prime_amount = 0 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_D.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_D.inst.cfg new file mode 100644 index 0000000000..5d5a76e89c --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PETG_D.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = -1 +material = emotiontech_petg +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 55 +speed_wall = =math.ceil(speed_print * 40/55) +speed_wall_0 = =math.ceil(speed_wall * 27/40) +speed_topbottom = =math.ceil(speed_print * 37/55) +speed_layer_0 = =math.ceil(speed_print * 27/55) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 70 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 45 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =default_material_print_temperature +5 +material_flow = 91 +retraction_extra_prime_amount = 0 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_B.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_B.inst.cfg new file mode 100644 index 0000000000..005cffdfbd --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_B.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 1 +material = emotiontech_pla +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 37/50) +speed_wall_0 = =math.ceil(speed_wall * 30/37) +speed_topbottom = =math.ceil(speed_print * 33/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_C.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_C.inst.cfg new file mode 100644 index 0000000000..811475d645 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_C.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 0 +material = emotiontech_pla +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 55 +speed_wall = =math.ceil(speed_print * 40/55) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 37/55) +speed_layer_0 = =math.ceil(speed_print * 27/55) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 8 +material_print_temperature_layer_0 = =default_material_print_temperature + 3 +material_flow = 92 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_D.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_D.inst.cfg new file mode 100644 index 0000000000..2f361a1ddb --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PLA_D.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = -1 +material = emotiontech_pla +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.5 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 60 +speed_wall = =math.ceil(speed_print * 45/60) +speed_wall_0 = =math.ceil(speed_wall * 33/45) +speed_topbottom = =math.ceil(speed_print * 40/60) +speed_layer_0 = =math.ceil(speed_print * 30/60) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 +material_flow = 91 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_B.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_B.inst.cfg new file mode 100644 index 0000000000..081a686655 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 1 +material = emotiontech_pva-m +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2.5 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_C.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_C.inst.cfg new file mode 100644 index 0000000000..481643bc63 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 0 +material = emotiontech_pva-m +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 3 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2.5 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_D.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_D.inst.cfg new file mode 100644 index 0000000000..c11cf8384d --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-M_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = -1 +material = emotiontech_pva-m +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2.5 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_B.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_B.inst.cfg new file mode 100644 index 0000000000..3a97437c8c --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 1 +material = emotiontech_pva-oks +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2.5 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_C.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_C.inst.cfg new file mode 100644 index 0000000000..d312e7fc1e --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 0 +material = emotiontech_pva-oks +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 3 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2.5 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_D.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_D.inst.cfg new file mode 100644 index 0000000000..edd4577e20 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-OKS_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = -1 +material = emotiontech_pva-oks +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2.5 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_B.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_B.inst.cfg new file mode 100644 index 0000000000..8062a98f65 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 1 +material = emotiontech_pva-s +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2.5 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_C.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_C.inst.cfg new file mode 100644 index 0000000000..427b9d70d2 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 0 +material = emotiontech_pva-s +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature + 3 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2.5 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_D.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_D.inst.cfg new file mode 100644 index 0000000000..62951a316b --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_PVA-S_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = -1 +material = emotiontech_pva-s +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 10 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2.5 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_B.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_B.inst.cfg new file mode 100644 index 0000000000..2f2698e179 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_B.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = B +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 1 +material = emotiontech_tpu98a +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_0_wipe_dist = =machine_nozzle_size +speed_print = 35 +speed_wall = =math.ceil(speed_print * 35/35) +speed_wall_0 = =math.ceil(speed_wall * 30/35) +speed_topbottom = =math.ceil(speed_print * 25/35) +speed_support = =speed_wall_0 +speed_layer_0 = =math.ceil(speed_print * 20/35) +speed_slowdown_layers = 1 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 2 +material_print_temperature_layer_0 = =default_material_print_temperature - 2 +material_flow = 105 +retraction_extra_prime_amount = 0.2 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = False +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 2.5 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 0.7 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_C.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_C.inst.cfg new file mode 100644 index 0000000000..63de3ce548 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 0 +material = emotiontech_tpu98a +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_0_wipe_dist = =machine_nozzle_size +speed_print = 40 +speed_wall = =math.ceil(speed_print * 40/40) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 27/40) +speed_support = =speed_wall_0 +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 1 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 103 +retraction_extra_prime_amount = 0.2 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = False +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 2.5 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 0.7 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_D.inst.cfg b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_D.inst.cfg new file mode 100644 index 0000000000..55c6179f9f --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.6/s3d_std0.6_TPU98A_D.inst.cfg @@ -0,0 +1,47 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = -1 +material = emotiontech_tpu98a +variant = Standard 0.6 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.55 +wall_0_wipe_dist = =machine_nozzle_size +speed_print = 45 +speed_wall = =math.ceil(speed_print * 45/45) +speed_wall_0 = =math.ceil(speed_wall * 33/45) +speed_topbottom = =math.ceil(speed_print * 30/45) +speed_layer_0 = =math.ceil(speed_print * 20/45) +speed_slowdown_layers = 1 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 7 +material_print_temperature_layer_0 = =default_material_print_temperature + 3 +material_flow = 101 +retraction_extra_prime_amount = 0.2 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = False +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 2.5 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 0.7 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_ABS_C.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_ABS_C.inst.cfg new file mode 100644 index 0000000000..199540d1aa --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_ABS_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 1 +material = emotiontech_abs +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.7 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 40/50) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 35 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 6 * layer_height +cool_min_speed = 10 +support_angle = 55 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 2 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_ABS_D.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_ABS_D.inst.cfg new file mode 100644 index 0000000000..eb74a90376 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_ABS_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = 0 +material = emotiontech_abs +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.7 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 40/50) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 35 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 6 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 2 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_ABS_E.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_ABS_E.inst.cfg new file mode 100644 index 0000000000..64f2aadede --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_ABS_E.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = E +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = e +weight = -1 +material = emotiontech_abs +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.7 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.6 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 40/50) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 35 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 6 * layer_height +cool_min_speed = 10 +support_angle = 45 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =default_material_print_temperature +5 +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 2 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PETG_C.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PETG_C.inst.cfg new file mode 100644 index 0000000000..8bb07e8160 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PETG_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 1 +material = emotiontech_petg +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.75 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.62 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.65 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.5625 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 40/50) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PETG_D.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PETG_D.inst.cfg new file mode 100644 index 0000000000..ae12d4d968 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PETG_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = 0 +material = emotiontech_petg +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.75 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.62 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.65 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.5625 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 40/50) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PETG_E.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PETG_E.inst.cfg new file mode 100644 index 0000000000..1eb3e3d297 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PETG_E.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = E +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = e +weight = -1 +material = emotiontech_petg +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.75 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.62 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.65 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.5625 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 40/50) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 3 * layer_height +cool_min_speed = 10 +support_angle = 45 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =default_material_print_temperature +5 +material_flow = 93 +retraction_extra_prime_amount = 0 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PLA_C.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PLA_C.inst.cfg new file mode 100644 index 0000000000..bc8794b59f --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PLA_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 1 +material = emotiontech_pla +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.75 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.62 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.65 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.5625 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 40/50) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PLA_D.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PLA_D.inst.cfg new file mode 100644 index 0000000000..9681911e37 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PLA_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = 0 +material = emotiontech_pla +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.75 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.62 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.65 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.5625 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 40/50) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +3 +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PLA_E.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PLA_E.inst.cfg new file mode 100644 index 0000000000..774500980d --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PLA_E.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = E +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = e +weight = -1 +material = emotiontech_pla +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.75 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.62 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.65 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.5625 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 50 +speed_wall = =math.ceil(speed_print * 40/50) +speed_wall_0 = =math.ceil(speed_wall * 30/40) +speed_topbottom = =math.ceil(speed_print * 35/50) +speed_layer_0 = =math.ceil(speed_print * 25/50) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 45 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =default_material_print_temperature +5 +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PVA-OKS_C.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PVA-OKS_C.inst.cfg new file mode 100644 index 0000000000..ad663f21d9 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PVA-OKS_C.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 1 +material = emotiontech_pvaoks +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.7 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.8 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.8 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 25/30) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 60 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PVA-OKS_D.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PVA-OKS_D.inst.cfg new file mode 100644 index 0000000000..aaa99b3915 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PVA-OKS_D.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = 0 +material = emotiontech_pvaoks +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.7 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.8 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.8 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 25/30) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PVA-OKS_E.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PVA-OKS_E.inst.cfg new file mode 100644 index 0000000000..a7ccd45c84 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_PVA-OKS_E.inst.cfg @@ -0,0 +1,49 @@ +[general] +version = 4 +name = E +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = e +weight = -1 +material = emotiontech_pvaoks +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.7 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.8 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.8 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 40 +speed_wall = =math.ceil(speed_print * 30/40) +speed_wall_0 = =math.ceil(speed_wall * 25/30) +speed_topbottom = =math.ceil(speed_print * 20/40) +speed_layer_0 = =math.ceil(speed_print * 20/40) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 45 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 93 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 5 +support_z_distance = =layer_height-layer_height +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 0.75 +support_xy_distance_overhang = =line_width*0.175/line_width +support_offset = 2 +support_pattern = grid +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_TPU_C.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_TPU_C.inst.cfg new file mode 100644 index 0000000000..e6bb7db978 --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_TPU_C.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = C +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 1 +material = emotiontech_tpu +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.5*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.8 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_0_wipe_dist = =machine_nozzle_size +speed_print = 35 +speed_wall = =math.ceil(speed_print * 35/35) +speed_wall_0 = =math.ceil(speed_wall * 27/35) +speed_topbottom = =math.ceil(speed_print * 23/35) +speed_layer_0 = =math.ceil(speed_print * 20/35) +speed_slowdown_layers = 1 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 3 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 100 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = False +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 2.5 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 0.7 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_TPU_D.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_TPU_D.inst.cfg new file mode 100644 index 0000000000..44db56fc1a --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_TPU_D.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = D +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = 0 +material = emotiontech_tpu +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.67*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.8 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_0_wipe_dist = =machine_nozzle_size +speed_print = 35 +speed_wall = =math.ceil(speed_print * 35/35) +speed_wall_0 = =math.ceil(speed_wall * 27/35) +speed_topbottom = =math.ceil(speed_print * 23/35) +speed_layer_0 = =math.ceil(speed_print * 20/35) +speed_slowdown_layers = 1 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =default_material_print_temperature +material_flow = 100 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = False +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 2.5 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 0.7 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_TPU_E.inst.cfg b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_TPU_E.inst.cfg new file mode 100644 index 0000000000..3e1ad81cfb --- /dev/null +++ b/resources/quality/strateo3d/Standard_0.8/s3d_std0.8_TPU_E.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = E +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = e +weight = -1 +material = emotiontech_tpu +variant = Standard 0.8 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*0.8 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.6 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.7 +wall_0_wipe_dist = =machine_nozzle_size +speed_print = 35 +speed_wall = =math.ceil(speed_print * 35/35) +speed_wall_0 = =math.ceil(speed_wall * 27/35) +speed_topbottom = =math.ceil(speed_print * 23/35) +speed_layer_0 = =math.ceil(speed_print * 20/35) +speed_slowdown_layers = 1 +cool_fan_enabled = True +cool_fan_speed = 50 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 4 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 7 +material_print_temperature_layer_0 = =default_material_print_temperature +3 +material_flow = 100 +retraction_extra_prime_amount = 0.1 +retraction_min_travel = =2*line_width +retraction_hop_only_when_collides = False +skin_overlap = 5 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance +support_xy_distance = =line_width * 2.5 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 0.7 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/Standard_1.2/s3d_std1.2_PLA_H.inst.cfg b/resources/quality/strateo3d/Standard_1.2/s3d_std1.2_PLA_H.inst.cfg new file mode 100644 index 0000000000..396ac2580a --- /dev/null +++ b/resources/quality/strateo3d/Standard_1.2/s3d_std1.2_PLA_H.inst.cfg @@ -0,0 +1,48 @@ +[general] +version = 4 +name = H +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = h +weight = -1 +material = emotiontech_pla +variant = Standard 1.2 + +[values] +layer_height_0 = =round(0.75*machine_nozzle_size, 2) +line_width = =machine_nozzle_size/machine_nozzle_size*1.1 +wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*1.0 +infill_line_width = =machine_nozzle_size/machine_nozzle_size*1.2 +support_line_width = =machine_nozzle_size/machine_nozzle_size*0.9 +wall_0_wipe_dist = =machine_nozzle_size/2 +speed_print = 35 +speed_wall = =math.ceil(speed_print * 27/35) +speed_wall_0 = =math.ceil(speed_print * 23/35) +speed_topbottom = =math.ceil(speed_print * 30/35) +speed_layer_0 = =math.ceil(speed_print * 25/35) +speed_slowdown_layers = 2 +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 20 +cool_min_layer_time = 11 +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_min_speed = 10 +support_angle = 50 +material_print_temperature = =default_material_print_temperature + 10 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 +material_flow = 91 +retraction_extra_prime_amount = 0.5 +retraction_min_travel = =3*line_width +retraction_hop_only_when_collides = True +skin_overlap = 20 +support_z_distance = =layer_height*2 +support_bottom_distance = =support_z_distance*0.5 +support_xy_distance = =line_width * 1.7 +support_xy_distance_overhang = =wall_line_width_0 +support_offset = 1 +support_interface_density = 100 +prime_tower_enable = True \ No newline at end of file diff --git a/resources/quality/strateo3d/s3d_global_A.inst.cfg b/resources/quality/strateo3d/s3d_global_A.inst.cfg new file mode 100644 index 0000000000..2dddad7e25 --- /dev/null +++ b/resources/quality/strateo3d/s3d_global_A.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Extra Fine Quality +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = a +weight = 0 +global_quality = True + +[values] +layer_height = 0.1 +top_bottom_thickness = =10*layer_height \ No newline at end of file diff --git a/resources/quality/strateo3d/s3d_global_B.inst.cfg b/resources/quality/strateo3d/s3d_global_B.inst.cfg new file mode 100644 index 0000000000..a08f6788a1 --- /dev/null +++ b/resources/quality/strateo3d/s3d_global_B.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Fine Quality +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = b +weight = 0 +global_quality = True + +[values] +layer_height = 0.2 +top_bottom_thickness = =7*layer_height \ No newline at end of file diff --git a/resources/quality/strateo3d/s3d_global_C.inst.cfg b/resources/quality/strateo3d/s3d_global_C.inst.cfg new file mode 100644 index 0000000000..609a1b76ac --- /dev/null +++ b/resources/quality/strateo3d/s3d_global_C.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = High Quality +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = c +weight = 0 +global_quality = True + +[values] +layer_height = 0.3 +top_bottom_thickness = =5*layer_height \ No newline at end of file diff --git a/resources/quality/strateo3d/s3d_global_D.inst.cfg b/resources/quality/strateo3d/s3d_global_D.inst.cfg new file mode 100644 index 0000000000..1496589bbe --- /dev/null +++ b/resources/quality/strateo3d/s3d_global_D.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Medium Quality +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = d +weight = 0 +global_quality = True + +[values] +layer_height = 0.4 +top_bottom_thickness = =5*layer_height \ No newline at end of file diff --git a/resources/quality/strateo3d/s3d_global_E.inst.cfg b/resources/quality/strateo3d/s3d_global_E.inst.cfg new file mode 100644 index 0000000000..a4891e96a7 --- /dev/null +++ b/resources/quality/strateo3d/s3d_global_E.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Low Quality +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = e +weight = 0 +global_quality = True + +[values] +layer_height = 0.5 +top_bottom_thickness = =4*layer_height \ No newline at end of file diff --git a/resources/quality/strateo3d/s3d_global_F.inst.cfg b/resources/quality/strateo3d/s3d_global_F.inst.cfg new file mode 100644 index 0000000000..d0093358d9 --- /dev/null +++ b/resources/quality/strateo3d/s3d_global_F.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Coarse Quality +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = f +weight = 0 +global_quality = True + +[values] +layer_height = 0.6 +top_bottom_thickness = =4*layer_height diff --git a/resources/quality/strateo3d/s3d_global_G.inst.cfg b/resources/quality/strateo3d/s3d_global_G.inst.cfg new file mode 100644 index 0000000000..0f479ea02d --- /dev/null +++ b/resources/quality/strateo3d/s3d_global_G.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Extra Coarse Quality +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = g +weight = 0 +global_quality = True + +[values] +layer_height = 0.7 +top_bottom_thickness = =3*layer_height diff --git a/resources/quality/strateo3d/s3d_global_H.inst.cfg b/resources/quality/strateo3d/s3d_global_H.inst.cfg new file mode 100644 index 0000000000..39b60dc75c --- /dev/null +++ b/resources/quality/strateo3d/s3d_global_H.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Ultra Coarse Quality +definition = strateo3d + +[metadata] +setting_version = 11 +type = quality +quality_type = h +weight = 0 +global_quality = True + +[values] +layer_height = 0.8 +top_bottom_thickness = =3*layer_height diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg index 250c3bd1d5..2095906bb0 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg @@ -4,10 +4,11 @@ name = Draft definition = tevo_blackwidow [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 +global_quality = True [values] brim_width = 4.0 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg index 0dff2b94ca..45e16c8f6b 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg @@ -4,10 +4,11 @@ name = High definition = tevo_blackwidow [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 +global_quality = True [values] brim_width = 4.0 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg index e5b9290cad..a516bea4db 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg @@ -4,10 +4,11 @@ name = Normal definition = tevo_blackwidow [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 +global_quality = True [values] brim_width = 4.0 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.2_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.2_abs_high.inst.cfg index 2fa65465ff..715fef3853 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.2_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.2_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.3_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.3_abs_high.inst.cfg index 9297c03ae6..f9d11d2edf 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.3_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.3_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_high.inst.cfg index f3a6a263a8..745a01c680 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_normal.inst.cfg index 5bb1cde436..e88075ad65 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_draft.inst.cfg index d83e4e6b4c..7f5d13685a 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_high.inst.cfg index b3a9fc36c6..336beb7c81 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_normal.inst.cfg index 6432b76d72..41593c73be 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_coarse.inst.cfg index 0c5a2c8a5d..1550b031d9 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_coarse.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_coarse.inst.cfg @@ -4,10 +4,10 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse -weight = -3 +weight = -2 material = generic_abs variant = 0.6mm diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_draft.inst.cfg deleted file mode 100644 index 361aba7d6a..0000000000 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_draft.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = draft -weight = -2 -material = generic_abs -variant = 0.6mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_high.inst.cfg index bbc11d52a0..122db785b2 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_normal.inst.cfg index 7ac4620015..f00b1195b6 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_extra_coarse.inst.cfg similarity index 82% rename from resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_coarse.inst.cfg rename to resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_extra_coarse.inst.cfg index 3653ff729a..59dec87610 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_coarse.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_extra_coarse.inst.cfg @@ -4,10 +4,10 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse -weight = -3 +weight = -2 material = generic_abs variant = 0.8mm diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_high.inst.cfg index 7b29215d51..89ee2fc506 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_normal.inst.cfg index 439445ef85..3673398193 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_coarse.inst.cfg deleted file mode 100644 index 5b1d5ce3e6..0000000000 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_coarse.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = coarse -weight = -3 -material = generic_abs -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_draft.inst.cfg deleted file mode 100644 index e79205dc3f..0000000000 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_draft.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = draft -weight = -2 -material = generic_abs -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_extra_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_extra_coarse.inst.cfg deleted file mode 100644 index ba0a3cd096..0000000000 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_extra_coarse.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Extra Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = extra coarse -weight = -4 -material = generic_abs -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.2_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.2_flex_high.inst.cfg new file mode 100644 index 0000000000..aba14e2456 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.2_flex_high.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.2mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.3_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.3_flex_high.inst.cfg new file mode 100644 index 0000000000..c37d942cee --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.3_flex_high.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.3mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_high.inst.cfg new file mode 100644 index 0000000000..80f627c401 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_high.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.4mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_normal.inst.cfg new file mode 100644 index 0000000000..dc8db6e6b0 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_normal.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_flex +variant = 0.4mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_draft.inst.cfg new file mode 100644 index 0000000000..0c3f978ec7 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_draft.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 4 +name = Draft +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_flex +variant = 0.5mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 + diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_high.inst.cfg new file mode 100644 index 0000000000..dce017bf69 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_high.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.5mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_normal.inst.cfg new file mode 100644 index 0000000000..b51fce46f8 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_normal.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_flex +variant = 0.5mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_coarse.inst.cfg new file mode 100644 index 0000000000..58deb98ed6 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_coarse.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Draft +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -2 +material = tizyx_flex +variant = 0.6mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_high.inst.cfg new file mode 100644 index 0000000000..3255b1988d --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_high.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.6mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 + diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_normal.inst.cfg new file mode 100644 index 0000000000..d87a1eb1b9 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_normal.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_flex +variant = 0.6mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 + diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_extra_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_extra_coarse.inst.cfg new file mode 100644 index 0000000000..ed69ca5853 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_extra_coarse.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 4 +name = Draft +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = extra coarse +weight = -2 +material = tizyx_flex +variant = 0.8mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 + diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_high.inst.cfg new file mode 100644 index 0000000000..429f324cae --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_high.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.8mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_normal.inst.cfg new file mode 100644 index 0000000000..a6b68f71ef --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_normal.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_flex +variant = 0.8mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.2_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.2_petg_high.inst.cfg index 5ccbfc8ac3..6a9046dfbe 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.2_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.2_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.3_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.3_petg_high.inst.cfg index 3f8e4ee63b..dd4f93de77 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.3_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.3_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_high.inst.cfg index 7514b8828b..5c5d66a2d4 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_normal.inst.cfg index cbc8cf34fa..6639832138 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_draft.inst.cfg index 31c17f31f3..648f98e0b6 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_draft.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_high.inst.cfg index e5d69c80aa..178829c59e 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_normal.inst.cfg index 828b2a7b83..df949c7608 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_coarse.inst.cfg index 1bdd2da466..3915ac4da9 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_coarse.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_coarse.inst.cfg @@ -4,10 +4,10 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse -weight = -3 +weight = -2 material = generic_petg variant = 0.6mm diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_high.inst.cfg index 258f3a1b40..12620dfed0 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_normal.inst.cfg index d6d0013fe7..902e35c303 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_extra_coarse.inst.cfg similarity index 75% rename from resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_extra_coarse.inst.cfg index 9446747467..a4f968b218 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_extra_coarse.inst.cfg @@ -4,9 +4,9 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = draft +quality_type = extra coarse weight = -2 material = generic_petg variant = 0.8mm diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_high.inst.cfg index 9cc1e992e1..a3e1d71b7d 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_normal.inst.cfg index 87ffb204a0..9c7b75acf5 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_coarse.inst.cfg deleted file mode 100644 index 1832dbf90d..0000000000 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_coarse.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = coarse -weight = -3 -material = generic_petg -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_draft.inst.cfg deleted file mode 100644 index 5c331d5d5f..0000000000 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_draft.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = draft -weight = -2 -material = generic_petg -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_extra_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_extra_coarse.inst.cfg deleted file mode 100644 index f438db32af..0000000000 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_extra_coarse.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Extra Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = extra coarse -weight = -4 -material = generic_petg -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.2_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.2_pla_high.inst.cfg index d277521cff..a4d5a4ca97 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.2_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.2_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.3_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.3_pla_high.inst.cfg index cf47f42844..d6f24cd98a 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.3_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.3_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_high.inst.cfg index f7871f6d65..ba77e1c176 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_normal.inst.cfg index 4610ee23b4..a4b72b28ca 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_draft.inst.cfg index ec35a3757c..3d6b9be14c 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_high.inst.cfg index 58de6bb4a0..47bb027876 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_normal.inst.cfg index 3673a5ee3b..d0830ce36d 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_coarse.inst.cfg similarity index 77% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_coarse.inst.cfg index 9765868619..b9da9bb7eb 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_coarse.inst.cfg @@ -4,9 +4,9 @@ name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = draft +quality_type = coarse weight = -2 material = generic_pla variant = 0.6mm diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_high.inst.cfg index 53887ab16e..15aa5a668c 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_normal.inst.cfg index f9beaadd51..06126999df 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_extra_coarse.inst.cfg similarity index 74% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_extra_coarse.inst.cfg index 2054c48f17..dc7ec7c041 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_extra_coarse.inst.cfg @@ -4,11 +4,12 @@ name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = draft +quality_type = extra coarse weight = -2 material = generic_pla variant = 0.8mm [values] + diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_high.inst.cfg index 6e2dfecbef..a25e1ec686 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_normal.inst.cfg index 05c8ecaa53..ac14f6ead3 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_extra_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_extra_coarse.inst.cfg deleted file mode 100644 index 2e7e047ed5..0000000000 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_extra_coarse.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 4 -name = Extra Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = extra coarse -weight = -4 -material = generic_pla -variant = 1.0mm - -[values] diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.2_pla_bois_high.inst.cfg similarity index 66% rename from resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_high.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.2_pla_bois_high.inst.cfg index 250b3be05d..c7935ca08d 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.2_pla_bois_high.inst.cfg @@ -4,12 +4,11 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 -material = generic_petg -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.2mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.3_pla_bois_high.inst.cfg similarity index 66% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_high.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.3_pla_bois_high.inst.cfg index 18ea58c1a8..1bd0d898ad 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.3_pla_bois_high.inst.cfg @@ -4,11 +4,11 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 -material = generic_pla -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.3mm [values] diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_high.inst.cfg similarity index 66% rename from resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_high.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_high.inst.cfg index 001e03a182..42899c7bd4 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_high.inst.cfg @@ -4,12 +4,11 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 -material = generic_abs -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.4mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_normal.inst.cfg similarity index 67% rename from resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_normal.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_normal.inst.cfg index b1d8837cc6..824b3734ca 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_normal.inst.cfg @@ -4,12 +4,11 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 -material = generic_abs -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.4mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_draft.inst.cfg similarity index 66% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_draft.inst.cfg index 52efa5b8bb..bd0eb530b2 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_draft.inst.cfg @@ -4,11 +4,12 @@ name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 -material = generic_pla -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.5mm [values] + diff --git a/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..7dcdcb77e1 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_high.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = 0.5mm + +[values] diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_normal.inst.cfg similarity index 67% rename from resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_normal.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_normal.inst.cfg index 8389757165..3607a7665a 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_normal.inst.cfg @@ -4,12 +4,11 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 -material = generic_petg -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.5mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_coarse.inst.cfg similarity index 57% rename from resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_coarse.inst.cfg index bf1ecff90b..3048d47bb8 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_coarse.inst.cfg @@ -1,15 +1,14 @@ [general] version = 4 -name = Coarse +name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = draft +quality_type = coarse weight = -2 -material = generic_petg +material = tizyx_pla_bois variant = 0.6mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..0b1ede986d --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_high.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = 0.6mm + +[values] diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_normal.inst.cfg similarity index 67% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_normal.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_normal.inst.cfg index b814c59b0f..a6d86d740b 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_normal.inst.cfg @@ -4,11 +4,11 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 -material = generic_pla -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.6mm [values] diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_extra_coarse.inst.cfg similarity index 55% rename from resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_extra_coarse.inst.cfg index 4c9de95353..ab070ac404 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_extra_coarse.inst.cfg @@ -1,14 +1,14 @@ [general] version = 4 -name = Coarse +name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = draft +quality_type = extra coarse weight = -2 -material = generic_abs +material = tizyx_pla_bois variant = 0.8mm [values] diff --git a/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..4627e7ba11 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_high.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = 0.8mm + +[values] diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_normal.inst.cfg similarity index 51% rename from resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_coarse.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_normal.inst.cfg index d1200760c0..f59f44e7b8 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_coarse.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_normal.inst.cfg @@ -1,15 +1,14 @@ [general] version = 4 -name = Coarse +name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = coarse -weight = -3 -material = generic_petg +quality_type = normal +weight = 0 +material = tizyx_pla_bois variant = 0.8mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Coarse_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Coarse_Quality.inst.cfg index 2cca0b9225..5ce785d9e8 100644 --- a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Coarse_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Coarse_Quality.inst.cfg @@ -1,15 +1,45 @@ [general] version = 4 -name = Coarse +name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse -weight = -3 +weight = -2 global_quality = True [values] -layer_height = 0.4 -layer_height_0 = =layer_height \ No newline at end of file +layer_height = 0.3 +layer_height_0 = =layer_height +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Draft_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Draft_Quality.inst.cfg index d88a6c95a3..ab921bd8b1 100644 --- a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Draft_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 @@ -12,4 +12,34 @@ global_quality = True [values] layer_height = 0.25 -layer_height_0 = =layer_height \ No newline at end of file +layer_height_0 = =layer_height +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Extra_Coarse_Quality.inst.cfg index 8e34a42f62..97117f2f0c 100644 --- a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Extra_Coarse_Quality.inst.cfg @@ -1,15 +1,45 @@ [general] version = 4 -name = Extra Coarse +name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse -weight = -4 +weight = -2 global_quality = True [values] -layer_height = 0.5 -layer_height_0 = =layer_height \ No newline at end of file +layer_height = 0.4 +layer_height_0 = =layer_height +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_High_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_High_Quality.inst.cfg index 160af128ce..0549e622a7 100644 --- a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_High_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_High_Quality.inst.cfg @@ -12,4 +12,34 @@ global_quality = True [values] layer_height = 0.1 -layer_height_0 = 0.1 \ No newline at end of file +layer_height_0 = 0.1 +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Normal_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Normal_Quality.inst.cfg index dd4a262fbf..e62b244a5f 100644 --- a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Normal_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -12,4 +12,34 @@ global_quality = True [values] layer_height = 0.2 -layer_height_0 = 0.25 \ No newline at end of file +layer_height_0 = 0.25 +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_classic_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_classic_abs_high.inst.cfg new file mode 100644 index 0000000000..e586f673a7 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_classic_abs_high.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_abs +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_classic_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_classic_abs_normal.inst.cfg new file mode 100644 index 0000000000..b6e44fbb6b --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_classic_abs_normal.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_abs +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_direct_drive_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_direct_drive_abs_high.inst.cfg new file mode 100644 index 0000000000..d14e24e025 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_direct_drive_abs_high.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_abs +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 diff --git a/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_direct_drive_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_direct_drive_abs_normal.inst.cfg new file mode 100644 index 0000000000..42955af482 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_direct_drive_abs_normal.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_abs +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_classic_flex_flex.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_classic_flex_flex.inst.cfg new file mode 100644 index 0000000000..1a704f0afd --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_classic_flex_flex.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_flex +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_classic_flex_flex_only.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_classic_flex_flex_only.inst.cfg new file mode 100644 index 0000000000..5aa9062813 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_classic_flex_flex_only.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Flex Only +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -3 +material = tizyx_flex +variant = Classic Extruder + +[values] +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex.inst.cfg new file mode 100644 index 0000000000..ded1436eb0 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_flex +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +speed_print = 30 +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex_only.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex_only.inst.cfg new file mode 100644 index 0000000000..d5cf141bb3 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex_only.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Flex Only +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -3 +material = tizyx_flex +variant = Direct Drive + +[values] +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 diff --git a/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_classic_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_classic_petg_high.inst.cfg new file mode 100644 index 0000000000..83d2b2991a --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_classic_petg_high.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_petg +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_classic_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_classic_petg_normal.inst.cfg new file mode 100644 index 0000000000..328578e51c --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_classic_petg_normal.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_petg +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_direct_drive_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_direct_drive_petg_high.inst.cfg new file mode 100644 index 0000000000..7e45c7ce40 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_direct_drive_petg_high.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_petg +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_direct_drive_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_direct_drive_petg_normal.inst.cfg new file mode 100644 index 0000000000..1434496ea3 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_direct_drive_petg_normal.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_petg +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_flex.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_flex.inst.cfg new file mode 100644 index 0000000000..8c47258ade --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_flex.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pla +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_flex_only.inst.cfg similarity index 55% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_coarse.inst.cfg rename to resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_flex_only.inst.cfg index 972c16c777..aa7c5696b8 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_coarse.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_flex_only.inst.cfg @@ -1,14 +1,14 @@ [general] version = 4 -name = Coarse -definition = tizyx_evy +name = Flex Only +definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 material = generic_pla -variant = 1.0mm +variant = Classic Extruder [values] diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_high.inst.cfg new file mode 100644 index 0000000000..91a63416bf --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_high.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_normal.inst.cfg new file mode 100644 index 0000000000..a712eddc43 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_normal.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_pva.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_pva.inst.cfg new file mode 100644 index 0000000000..cb9d2eb965 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_pva.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = PVA and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pla +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex.inst.cfg new file mode 100644 index 0000000000..e35606b039 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pla +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +speed_print = 30 +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex_only.inst.cfg similarity index 56% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_coarse.inst.cfg rename to resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex_only.inst.cfg index 4317e7796e..a0aec72143 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_coarse.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex_only.inst.cfg @@ -1,14 +1,14 @@ [general] version = 4 -name = Coarse -definition = tizyx_evy +name = Flex Only +definition = tizyx_evy_dual [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 material = generic_pla -variant = 0.8mm +variant = Direct Drive [values] diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_high.inst.cfg new file mode 100644 index 0000000000..70981c0dbf --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_high.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_normal.inst.cfg new file mode 100644 index 0000000000..caf360e2a7 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_normal.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_pva.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_pva.inst.cfg new file mode 100644 index 0000000000..ffcfa69bcf --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_pva.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = PVA and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pla +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +speed_print = 30 +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_flex.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_flex.inst.cfg new file mode 100644 index 0000000000..72106f3e17 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_flex.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_pla_bois +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..a4c371a444 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_high.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_normal.inst.cfg new file mode 100644 index 0000000000..e7297bf3ca --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_normal.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_pla_bois +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_flex.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_flex.inst.cfg new file mode 100644 index 0000000000..8aa2016d38 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_flex.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_pla_bois +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +speed_print = 30 +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..b93e3b8d93 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_high.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_normal.inst.cfg new file mode 100644 index 0000000000..2af5836864 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_normal.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_pla_bois +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_classic_pva_pva.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_classic_pva_pva.inst.cfg new file mode 100644 index 0000000000..17fe67aebf --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_classic_pva_pva.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = PVA and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_pva +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_direct_drive_pva_pva.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_direct_drive_pva_pva.inst.cfg new file mode 100644 index 0000000000..f8d8d32be4 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_direct_drive_pva_pva.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = PVA and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_pva +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +speed_print = 30 +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg new file mode 100644 index 0000000000..a33ddab225 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg @@ -0,0 +1,39 @@ +[general] +version = 4 +name = Flex Only +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -3 +global_quality = True + +[values] +layer_height = 0.2 +layer_height_0 = 0.25 +adhesion_extruder_nr = 1 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +retraction_min_travel = 2 +speed_print = 30 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +cool_min_layer_time = 11 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +support_enable = True +prime_tower_enable = True +prime_tower_position_x = 127.5 +prime_tower_position_y = =math.ceil(250-prime_tower_size) +prime_tower_size = 35 +prime_tower_flow = 110 +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg new file mode 100644 index 0000000000..cd0a9e24c9 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg @@ -0,0 +1,29 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +global_quality = True + +[values] +adhesion_extruder_nr = 0 +adhesion_type = skirt +layer_height = 0.2 +layer_height_0 = 0.25 +prime_tower_enable = True +prime_tower_position_x = 127.5 +prime_tower_position_y = =math.ceil(250-prime_tower_size) +prime_tower_size = 35 +prime_tower_flow = 110 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +support_enable = True +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True +retraction_hop_enabled = False diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg new file mode 100644 index 0000000000..ff62bfff48 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_High_Quality.inst.cfg @@ -0,0 +1,53 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +global_quality = True + +[values] +adhesion_extruder_nr = 0 +adhesion_type = skirt +layer_height = 0.1 +layer_height_0 = 0.1 +prime_tower_enable = True +prime_tower_position_x = 127.5 +prime_tower_position_y = =math.ceil(250-prime_tower_size) +prime_tower_size = 35 +prime_tower_flow = 110 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +support_enable = True +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_angle = 70 +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +top_layers = 4 +wall_line_count = 2 +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True +retraction_hop_enabled = False \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..f69a6f272d --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Normal_Quality.inst.cfg @@ -0,0 +1,53 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +adhesion_extruder_nr = 0 +adhesion_type = skirt +layer_height = 0.2 +layer_height_0 = 0.25 +prime_tower_enable = True +prime_tower_position_x = 127.5 +prime_tower_position_y = =math.ceil(250-prime_tower_size) +prime_tower_size = 35 +prime_tower_flow = 110 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +support_enable = True +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_angle = 70 +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +top_layers = 4 +wall_line_count = 2 +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True +retraction_hop_enabled = False \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg new file mode 100644 index 0000000000..8d8c016991 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg @@ -0,0 +1,29 @@ +[general] +version = 4 +name = PVA and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +global_quality = True + +[values] +adhesion_extruder_nr = 0 +adhesion_type = skirt +layer_height = 0.2 +layer_height_0 = 0.25 +prime_tower_enable = True +prime_tower_position_x = 127.5 +prime_tower_position_y = =math.ceil(250-prime_tower_size) +prime_tower_size = 35 +prime_tower_flow = 110 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +support_enable = True +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True +retraction_hop_enabled = False \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_k25/tizyx_k25_high.inst.cfg b/resources/quality/tizyx/tizyx_k25/tizyx_k25_high.inst.cfg new file mode 100644 index 0000000000..e7382081ce --- /dev/null +++ b/resources/quality/tizyx/tizyx_k25/tizyx_k25_high.inst.cfg @@ -0,0 +1,41 @@ +[general] +version = 4 +name = High +definition = tizyx_k25 + +[metadata] +quality_type = draft +setting_version = 11 +type = quality +global_quality = True + +[values] +layer_height = 0.1 +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True diff --git a/resources/quality/tizyx/tizyx_k25/tizyx_k25_normal.inst.cfg b/resources/quality/tizyx/tizyx_k25/tizyx_k25_normal.inst.cfg index 1a09737baa..1f8cf0cf57 100644 --- a/resources/quality/tizyx/tizyx_k25/tizyx_k25_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_k25/tizyx_k25_normal.inst.cfg @@ -1,27 +1,41 @@ -[general] -version = 4 -name = TiZYX K25 Normal -definition = tizyx_k25 - -[metadata] -quality_type = normal -setting_version = 7 -type = quality -global_quality = True - -[values] -adhesion_type = skirt -skirt_line_count = 2 -skirt_gap = 2 -fill_outline_gaps = True -infill_sparse_density = 15 -material_diameter = 1.75 -retraction_amount = 2.5 -retraction_min_travel = 2 -retraction_speed = 30 -speed_print = 60 -speed_topbottom = 50 -speed_wall_0 = 40 -top_layers = 4 -wall_line_count = 2 -cool_min_layer_time = 11 +[general] +version = 4 +name = Normal +definition = tizyx_k25 + +[metadata] +quality_type = normal +setting_version = 11 +type = quality +global_quality = True + +[values] +layer_height = 0.2 +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True diff --git a/resources/quality/ultimaker2/um2_draft.inst.cfg b/resources/quality/ultimaker2/um2_draft.inst.cfg index 121f6f0404..5d204ad6c8 100644 --- a/resources/quality/ultimaker2/um2_draft.inst.cfg +++ b/resources/quality/ultimaker2/um2_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2/um2_fast.inst.cfg b/resources/quality/ultimaker2/um2_fast.inst.cfg index 8dc9b56082..5acafb8944 100644 --- a/resources/quality/ultimaker2/um2_fast.inst.cfg +++ b/resources/quality/ultimaker2/um2_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2/um2_high.inst.cfg b/resources/quality/ultimaker2/um2_high.inst.cfg index 5bb17480b6..d6f830154e 100644 --- a/resources/quality/ultimaker2/um2_high.inst.cfg +++ b/resources/quality/ultimaker2/um2_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2/um2_normal.inst.cfg b/resources/quality/ultimaker2/um2_normal.inst.cfg index 1235fe27db..cdea639581 100644 --- a/resources/quality/ultimaker2/um2_normal.inst.cfg +++ b/resources/quality/ultimaker2/um2_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg index 544deae3a2..413f4d7702 100644 --- a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg index f32deec07a..94074f291c 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg index 8c50d00108..78c39509c1 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg index e2edba3039..fd7b54f99f 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg index 170ccb06b2..d29242d8a6 100644 --- a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 diff --git a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg index 1b5bb17054..68dac9be64 100644 --- a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg index b2e7e246d5..2b2cc4ce46 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg index 13d2593e5f..746c9c5840 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg index 03e21b62cf..68f73aae10 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 @@ -23,4 +23,4 @@ speed_wall = =math.ceil(speed_print * 30 / 45) top_bottom_thickness = 0.72 wall_thickness = 1.05 speed_topbottom = =math.ceil(speed_print * 15 / 45) -speed_infill = =math.ceil(speed_print * 80 / 45) +speed_infill = =math.ceil(speed_print * 45 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg index 5713c9202f..4863ef4545 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg index 7ccbadb29d..9a99c1cd45 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg index 0c961f2dc3..b69ab9ac8f 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg index 590e2c4ff0..187be43c5d 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg index ee65c14ac3..f74b587abe 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -23,7 +23,7 @@ speed_travel = 150 speed_wall = =math.ceil(speed_print * 40 / 45) top_bottom_thickness = 0.75 wall_thickness = 0.7 -speed_wall_0 = =math.ceil(speed_print * 40 / 45) +speed_wall_0 = =math.ceil(speed_print * 30 / 45) speed_topbottom = =math.ceil(speed_print * 30 / 45) -speed_wall_x = =math.ceil(speed_print * 80 / 45) -speed_infill = =math.ceil(speed_print * 100 / 45) +speed_wall_x = =math.ceil(speed_print * 40 / 45) +speed_infill = =math.ceil(speed_print * 45 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg index 26f8b4ba24..e6542ca6a4 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 @@ -23,4 +23,4 @@ speed_wall = =math.ceil(speed_print * 30 / 45) top_bottom_thickness = 0.72 wall_thickness = 1.05 speed_topbottom = =math.ceil(speed_print * 15 / 45) -speed_infill = =math.ceil(speed_print * 80 / 45) +speed_infill = =math.ceil(speed_print * 45 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg index 79eb50c3fa..ae6440eecc 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg index 35e6644a07..91f961a00a 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg index ec300d3aad..85f62ad167 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg index 6147f5d138..066b5f4201 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 @@ -35,7 +35,7 @@ speed_wall_0 = =math.ceil(speed_print * 20 / 25) speed_wall_x = =speed_print support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 1.5 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg index fa54b0f89e..826aa6c719 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 @@ -35,7 +35,7 @@ speed_wall_0 = =math.ceil(speed_print * 20 / 35) speed_wall_x = =math.ceil(speed_print * 30 / 35) support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 1.5 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg index f795f07013..56a57ca6a7 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -2 @@ -37,7 +37,7 @@ speed_wall_0 = =math.ceil(speed_print * 20 / 25) speed_wall_x = =speed_print support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_line_distance = 2.85 support_pattern = lines support_xy_distance = 0.6 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg index faf1b2d18d..235f89d110 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = 0 @@ -37,7 +37,7 @@ speed_wall_0 = =math.ceil(speed_print * 30 / 35) speed_wall_x = =speed_print support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_line_distance = 2.85 support_pattern = lines support_xy_distance = 0.6 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg index 5edd73eeba..8c6529e5f1 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -2 @@ -34,7 +34,7 @@ speed_wall_0 = =math.ceil(speed_print * 20 / 25) speed_wall_x = =speed_print support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg index 7772ba72d6..06fe250c8b 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = 0 @@ -34,7 +34,7 @@ speed_wall_0 = =math.ceil(speed_print * 20 / 30) speed_wall_x = =speed_print support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg index 9cfbefa641..9359fd513c 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse Quality definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -4 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg index 1f4f9af746..51abb6bded 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft Quality definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg index 0aba820d7e..fb79676eab 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse Quality definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extracoarse weight = -3 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg index 29e649ffe0..33e8f76f4c 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg index 12f449fbd1..d9c818efa0 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg index 908d0e42ab..52231dff2a 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Slightly_Coarse_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Slightly_Coarse_Quality.inst.cfg index 35dbbeedd7..a43bc002a7 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Slightly_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Slightly_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse Quality definition = ultimaker2_plus [metadata] -setting_version = 6 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -4 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg index 0389a8fec3..add3690889 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 @@ -35,10 +35,10 @@ speed_travel = 150 speed_wall_0 = =math.ceil(speed_print * 20 / 40) speed_wall_x = =speed_print support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1 -speed_infill = =math.ceil(speed_print * 80 / 40) +speed_infill = =math.ceil(speed_print * 40 / 40) diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg index f227afc3e9..36604404b0 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -35,7 +35,7 @@ speed_travel = 150 speed_wall_0 = =math.ceil(speed_print * 20 / 40) speed_wall_x = =speed_print support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_xy_distance = 0.6 support_z_distance = =layer_height * 2 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg index c903c03394..f059cbcfc4 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -1 @@ -34,12 +34,12 @@ speed_travel = 150 speed_wall = =math.ceil(speed_print * 40 / 45) support_angle = 45 support_enable = True -support_infill_rate = 25 +support_infill_rate = =25 if support_enable else 0 if support_tree_enable else 25 support_pattern = lines support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 0.75 wall_thickness = 1.06 -speed_wall_0 = =math.ceil(speed_print * 40 / 45) -speed_wall_x = =math.ceil(speed_print * 80 / 45) -speed_infill = =math.ceil(speed_print * 100 / 45) +speed_wall_0 = =math.ceil(speed_print * 30 / 45) +speed_wall_x = =math.ceil(speed_print * 40 / 45) +speed_infill = =math.ceil(speed_print * 45 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg index fd4f6c0513..789bacc98b 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 @@ -33,7 +33,7 @@ speed_travel = 150 speed_wall = =math.ceil(speed_print * 40 / 45) support_angle = 45 support_enable = True -support_infill_rate = 25 +support_infill_rate = =25 if support_enable else 0 if support_tree_enable else 25 support_pattern = lines support_xy_distance = 0.6 support_z_distance = =layer_height * 2 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg index 3aaa8f9485..2bd0449056 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -1 @@ -38,11 +38,11 @@ speed_wall_x = =math.ceil(speed_print * 40 / 55) support_angle = 45 support_bottom_distance = 0.55 support_enable = True -support_infill_rate = 25 +support_infill_rate = =25 if support_enable else 0 if support_tree_enable else 25 support_pattern = lines support_top_distance = 0.55 support_xy_distance = 0.7 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1.2 -speed_infill = =math.ceil(speed_print * 100 / 55) +speed_infill = =math.ceil(speed_print * 55 / 55) diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg index d863dda7d9..2730eb0a10 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 @@ -37,7 +37,7 @@ speed_wall_0 = =math.ceil(speed_print * 15 / 55) speed_wall_x = =math.ceil(speed_print * 40 / 55) support_angle = 45 support_enable = True -support_infill_rate = 25 +support_infill_rate = =25 if support_enable else 0 if support_tree_enable else 25 support_pattern = lines support_xy_distance = 0.7 support_z_distance = =layer_height * 2 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg index 4b039087e8..06c4c322b5 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -2 @@ -37,7 +37,7 @@ speed_wall_x = =math.ceil(speed_print * 40 / 55) support_angle = 45 support_bottom_distance = 0.65 support_enable = True -support_infill_rate = 25 +support_infill_rate = =25 if support_enable else 0 if support_tree_enable else 25 support_pattern = lines support_top_distance = 0.5 support_xy_distance = 0.75 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg index 0cd87ce0e2..6c85e3e016 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = 0 @@ -37,7 +37,7 @@ speed_wall_x = =math.ceil(speed_print * 40 / 55) support_angle = 45 support_bottom_distance = 0.65 support_enable = True -support_infill_rate = 25 +support_infill_rate = =25 if support_enable else 0 if support_tree_enable else 25 support_pattern = lines support_top_distance = 0.5 support_xy_distance = 0.75 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg index b95d11ea6f..7c5fbc1327 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 @@ -31,7 +31,7 @@ raft_surface_line_width = 0.2 speed_layer_0 = =round(speed_print * 30 / 30) speed_print = 30 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_z_distance = 0.19 wall_thickness = 0.88 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg index 90c0987ddf..87ba3e4ea5 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -31,7 +31,7 @@ raft_surface_line_width = 0.2 speed_layer_0 = =round(speed_print * 30 / 30) speed_print = 30 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_z_distance = 0.19 wall_thickness = 0.88 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg index d530103a1c..b85fc8d3ff 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -1 @@ -32,9 +32,9 @@ speed_wall_0 = =math.ceil(speed_print * 20 / 45) speed_wall_x = =math.ceil(speed_print * 30 / 45) support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_z_distance = 0.19 wall_thickness = 1.2 speed_topbottom = =math.ceil(speed_print * 30 / 45) -speed_infill = =math.ceil(speed_print * 100 / 45) +speed_infill = =math.ceil(speed_print * 45 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg index 43b6363236..3b314652f6 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -32,7 +32,7 @@ speed_wall_0 = =math.ceil(speed_print * 20 / 45) speed_wall_x = =math.ceil(speed_print * 30 / 45) support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_z_distance = 0.19 wall_thickness = 1.2 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg index 577180dfcb..152932aaab 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -1 @@ -36,10 +36,10 @@ speed_wall_0 = =math.ceil(speed_print * 30 / 45) speed_wall_x = =math.ceil(speed_print * 40 / 45) support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_line_distance = 3.5333 support_pattern = lines support_z_distance = 0.21 top_bottom_thickness = 0.75 wall_thickness = 1.06 -speed_infill = =math.ceil(speed_print * 100 / 45) +speed_infill = =math.ceil(speed_print * 45 / 45) diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg index dce492e90b..578b7ca970 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 @@ -36,7 +36,7 @@ speed_wall_0 = =math.ceil(speed_print * 30 / 45) speed_wall_x = =math.ceil(speed_print * 40 / 45) support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_line_distance = 3.5333 support_pattern = lines support_z_distance = 0.21 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg index dcd83b8679..3158c79215 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extracoarse weight = -2 @@ -31,7 +31,7 @@ speed_layer_0 = =round(speed_print * 30 / 40) speed_print = 40 support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 2.0 diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg index 43f35b62f0..a3a349e20e 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = 0 @@ -31,7 +31,7 @@ speed_layer_0 = =round(speed_print * 30 / 40) speed_print = 40 support_angle = 45 support_enable = True -support_infill_rate = 20 +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg index 4f80772074..fb9423cd5d 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -68,5 +68,5 @@ travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.38 / 0.38, 2) wall_thickness = 0.76 -speed_wall_x = =math.ceil(speed_print * 80 / 25) -speed_infill = =math.ceil(speed_print * 100 / 25) +speed_wall_x = =math.ceil(speed_print * 25 / 25) +speed_infill = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index afe476adec..dd5c1facf9 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index 7cec6b1bd1..07532c8684 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg index 9d8d10cd11..eb4c8d648b 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -69,5 +69,5 @@ travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.57 / 0.57, 2) wall_thickness = 1.14 -speed_wall_x = =math.ceil(speed_print * 80 / 25) -speed_infill = =math.ceil(speed_print * 100 / 25) +speed_wall_x = =math.ceil(speed_print * 25 / 25) +speed_infill = =math.ceil(speed_print * 25 / 25) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index c76e73990b..7d85dd3f2d 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg index e570aafe07..1dddebe52e 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -3 diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg index 86da345cb9..4a659118b1 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 @@ -35,9 +35,9 @@ speed_wall_0 = =math.ceil(speed_print * 15 / 40) speed_wall_x = =math.ceil(speed_print * 38 / 40) support_angle = 45 support_enable = True -support_infill_rate = 25 +support_infill_rate = =25 if support_enable else 0 if support_tree_enable else 25 support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 0.88 -speed_infill = =math.ceil(speed_print * 80 / 40) +speed_infill = =math.ceil(speed_print * 40 / 40) diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg index a9c9765bcd..745c9e3057 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -33,7 +33,7 @@ speed_wall_0 = =math.ceil(speed_print * 20 / 40) speed_wall_x = =math.ceil(speed_print * 35 / 40) support_angle = 45 support_enable = True -support_infill_rate = 25 +support_infill_rate = =25 if support_enable else 0 if support_tree_enable else 25 support_xy_distance = 0.65 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg index 9a13f180ce..a5e5d3e563 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -37,9 +37,9 @@ speed_wall_0 = =math.ceil(speed_print * 15 / 45) speed_wall_x = =math.ceil(speed_print * 40 / 45) support_angle = 45 support_enable = True -support_infill_rate = 25 +support_infill_rate = =25 if support_enable else 0 if support_tree_enable else 25 support_xy_distance = 0.7 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1.14 -speed_infill = =math.ceil(speed_print * 100 / 45) +speed_infill = =math.ceil(speed_print * 45 / 45) diff --git a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg index fc56bc41e5..c234b2eab7 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg index c2a687a4d6..d95e6c38d8 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg index 8194d1a510..1020c5c0c0 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg index fb8212a4a0..cd8ea78856 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg index 39416d4bb1..b57b3b12f6 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg index e6b10560c3..c0d17827ef 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg index c83d3a1f49..480b807b39 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index 150be3bdcd..f5e27c3773 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index f9d1110512..a392bd078f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 40229c1307..7705e1e456 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index df13a81211..679866fcbd 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg index d102abe5ee..7a241cb1df 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 @@ -37,4 +37,4 @@ support_angle = 45 support_join_distance = 5 support_offset = 2 support_pattern = triangles -support_infill_rate = 10 +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg index 57ec919e46..7780c8a77d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -36,4 +36,4 @@ support_angle = 45 support_join_distance = 5 support_offset = 2 support_pattern = triangles -support_infill_rate = 10 +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg index c5782aa9bc..c516a9c8c8 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -32,6 +32,6 @@ support_angle = 45 support_join_distance = 5 support_offset = 2 support_pattern = triangles -support_infill_rate = 10 +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 top_bottom_thickness = 1 wall_thickness = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index 37801626bd..52a9aa0ae2 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index 4bf87820fb..d1e0be55ce 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index cbb3085d85..2d7b4e3546 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index ed87e6d4ed..efa613a1b6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg index 1a15755577..69323dbea1 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg index 2cba7b1ccf..1299e53e48 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg index e927a79c10..a5a6af1345 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg index d9a7649123..a0bc0d4798 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg index 0139970339..37c533eeb6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg index 094a7c0ff5..f0551cc600 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg index 8bb0002b84..7d84ba00d9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg index f7c733c212..48aab6f43b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index e6ac6a7cb6..a71d0082ce 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index e50cd7fc02..2b2f354c34 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index 5f837fce0e..4f589780a2 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index ccba414b57..d6b5ad0a09 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg index e4cbb6ed35..e720379c7f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg index 96d1a3436a..db8836e5c0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg index a7d5fa0586..4cdc312bc0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg index bb6b6cb06c..a1c7f2b052 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg index 6ca1e6fe3e..ac7a8a89ac 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg index e34a8ba625..06067b0e23 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index d363667af7..530f808781 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg index 4efb7d9e78..6352c0ed6c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg index d461a3187e..e0f4555542 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg index b451c22489..35c913b632 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index 0a3bd45c38..9e5cff3bb8 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index 42adf63e8c..a992a45fa1 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index a5804ad2e1..d3516ddbbe 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg index 051b5bba36..e7fe9b9806 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg index dcbe8ca1b0..8f0cabd172 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg index 1a0c746b20..9fbcb71400 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg index add4025786..bc3753ccbb 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg index 654447e5dc..eaf9a6a1be 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg index 86d145cf39..caf848d3b8 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg index 243bf8f437..f4c88589ea 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg index 78362aa1d8..d247a83ada 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg index 44f254b613..7b2ea92d15 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg index be1245b58a..650cc6f9df 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg index 9d15b69dbc..1a478c059d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg index d2b22cd418..eab56a450f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg index 4e9c8c9376..b88d4e8ead 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg index 69661c91b6..b11159c1da 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg index 1fefa5a141..ae94345be3 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg index d8133eee5f..b440194ec4 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg index 35b675fd10..c1e3b8c676 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg index fed141f8e9..7a2dd4c5e8 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index a6fe2c9e8e..ecba4281cf 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index bd2a09c3cc..d347234919 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index 68765f839b..54f1852a40 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg index 2224917fc1..ea4dcf5080 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg index e4b3355579..d7c9b1d9b0 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg index 026372156c..9aa048bef6 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index d30a6db38c..d5f2c0f07e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index 28fffe945a..c14469f466 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index 35bc994931..b051efa442 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index a99a0abdf5..ba8cc414bf 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index 4fd5c14f5d..31e2d91748 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index 6d80217cd5..fc7932fa59 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index 8068af6f22..6c26838173 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg index 090baba2c8..a8a79c0c17 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg index 47a82e01a3..1d5fad0050 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg index a8d0e494cb..623c7e3b26 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg index 936406fce6..06c764547c 100644 --- a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg index 14b214da5a..b2fc9ce2fb 100644 --- a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg index b9c2c19d8c..91e505486e 100644 --- a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg index ab9127f26d..464d7141cd 100644 --- a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg index 36d9f932f1..d1be77e8be 100644 --- a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg index 3eaf8191a2..f398364bc2 100644 --- a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg index 2ebfb1e2c7..248cd595c0 100644 --- a/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse Quality definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg index b246ba12ea..9ea0b4314f 100644 --- a/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft Quality definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg index da8c6a9b39..d77dba8678 100644 --- a/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse Quality definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg index db03a7f18c..d446fda6a1 100644 --- a/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg index ec1b593f7e..6f2add164b 100644 --- a/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg index 9b39c97682..07832b5d21 100644 --- a/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..56b1f0d5d7 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_abs +variant = AA 0.25 + +[values] +cool_fan_speed = 40 +infill_overlap = 15 +material_final_print_temperature = =material_print_temperature - 5 +retraction_prime_speed = 25 +speed_topbottom = =math.ceil(speed_print * 30 / 55) +wall_thickness = 0.92 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..dd4dc55af8 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_cpe +variant = AA 0.25 + +[values] +retraction_combing_max_distance = 50 +retraction_extrusion_window = 0.5 +speed_infill = =math.ceil(speed_print * 40 / 55) +speed_topbottom = =math.ceil(speed_print * 30 / 55) +top_bottom_thickness = 0.8 +wall_thickness = 0.92 \ No newline at end of file diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..00b4eb77e8 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_nylon +variant = AA 0.25 + +[values] +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 12 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 3) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +retraction_min_travel = 5 +skin_overlap = 50 +speed_print = 70 +speed_topbottom = =math.ceil(speed_print * 30 / 70) +speed_wall = =math.ceil(speed_print * 30 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..c414f76f8c --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg @@ -0,0 +1,55 @@ +[general] +version = 4 +name = Fine - Experimental +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pc +variant = AA 0.25 +is_experimental = True + +[values] +acceleration_enabled = True +acceleration_print = 4000 +adhesion_type = brim +brim_width = 20 +cool_fan_full_at_height = =layer_height_0 + layer_height +cool_fan_speed_max = 50 +cool_min_layer_time_fan_speed_max = 5 +cool_min_speed = 5 +infill_line_width = =line_width +infill_pattern = triangles +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +multiple_mesh_overlap = 0 +ooze_shield_angle = 40 +prime_tower_enable = True +prime_tower_wipe_enabled = True +raft_airgap = 0.25 +raft_interface_thickness = =max(layer_height * 1.5, 0.225) +retraction_count_max = 80 +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 15 +skin_overlap = 30 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) +speed_print = 50 +speed_topbottom = =math.ceil(speed_print * 25 / 50) +speed_wall = =math.ceil(speed_print * 40 / 50) +speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance +support_interface_density = 87.5 +support_interface_pattern = lines +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..ac5e475d96 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = AA 0.25 + +[values] +brim_width = 8 +cool_fan_full_at_height = =layer_height_0 +cool_min_speed = 10 +infill_overlap = 10 +infill_pattern = grid +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = 190 +retraction_hop = 0.2 +skin_overlap = 5 +speed_layer_0 = =speed_print +speed_print = 30 +speed_travel_layer_0 = 120 +speed_wall = =math.ceil(speed_print * 25 / 30) +speed_wall_0 = =math.ceil(speed_print * 20 / 30) +top_bottom_thickness = 0.72 +travel_avoid_distance = 0.4 +wall_0_inset = 0.015 +wall_0_wipe_dist = 0.25 +wall_thickness = 0.7 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..f3a67dfef4 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 4 +name = Fine - Experimental +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pp +variant = AA 0.25 +is_experimental = True + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 10 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_min_speed = 2.5 +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_pattern = tetrahedral +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +line_width = =machine_nozzle_size * 0.92 +machine_min_cool_heat_time_window = 15 +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_print_temperature = =default_material_print_temperature - 15 +material_print_temperature_layer_0 = =material_print_temperature + 3 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_size = 16 +prime_tower_wipe_enabled = True +retraction_count_max = 6 +retraction_extra_prime_amount = 0.2 +retraction_extrusion_window = 6.5 +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 13 +speed_equalize_flow_enabled = True +speed_layer_0 = =math.ceil(speed_print * 15 / 25) +speed_print = 25 +speed_travel_layer_0 = 50 +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = 1 +travel_avoid_distance = 3 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..b27ae99a44 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_tough_pla +variant = AA 0.25 + +[values] +brim_width = 8 +cool_fan_full_at_height = =layer_height_0 +cool_min_speed = 7 +infill_line_width = =line_width +infill_overlap = 10 +infill_pattern = grid +line_width = =machine_nozzle_size * 0.92 +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature - 15 +skin_overlap = 5 +speed_layer_0 = =math.ceil(speed_print * 30 / 30) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 20 / 30) +speed_travel_layer_0 = 120 +speed_wall = =math.ceil(speed_print * 25 / 30) +speed_wall_0 = =math.ceil(speed_print * 20 / 30) +top_bottom_thickness = 0.72 +wall_0_inset = 0.015 +wall_0_wipe_dist = 0.25 +wall_line_width = =line_width +wall_line_width_x= =line_width +wall_thickness = 0.7 + diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print.inst.cfg similarity index 78% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print.inst.cfg index 6222dcdc7b..baa277c543 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_abs variant = AA 0.4 -buildplate = Aluminum [values] machine_nozzle_cool_down_speed = 0.85 @@ -21,7 +20,7 @@ material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False skin_overlap = 20 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) @@ -30,7 +29,3 @@ wall_thickness = 1 infill_line_width = =round(line_width * 0.4 / 0.35, 2) speed_infill = =math.ceil(speed_print * 50 / 60) -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print.inst.cfg similarity index 77% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print.inst.cfg index 2bf17429fa..fda1c9ee96 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Normal -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 material = generic_abs variant = AA 0.4 -buildplate = Aluminum [values] cool_min_speed = 7 @@ -21,7 +20,7 @@ material_initial_print_temperature = =material_print_temperature - 15 material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) @@ -29,7 +28,3 @@ speed_wall_0 = =math.ceil(speed_wall * 30 / 40) infill_line_width = =round(line_width * 0.4 / 0.35, 2) speed_infill = =math.ceil(speed_print * 45 / 60) -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_High_Quality.inst.cfg similarity index 76% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_High_Quality.inst.cfg index 7d7f4b2aaa..b65479ab74 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_High_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 material = generic_abs variant = AA 0.4 -buildplate = Aluminum [values] cool_min_speed = 12 @@ -21,14 +20,10 @@ material_initial_print_temperature = =material_print_temperature - 15 material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False speed_print = 50 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) infill_line_width = =round(line_width * 0.4 / 0.35, 2) speed_infill = =math.ceil(speed_print * 40 / 50) -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality.inst.cfg similarity index 75% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality.inst.cfg index 6d78d9d027..d4215be488 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 material = generic_abs variant = AA 0.4 -buildplate = Aluminum [values] machine_nozzle_cool_down_speed = 0.85 @@ -20,15 +19,9 @@ material_initial_print_temperature = =material_print_temperature - 15 material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False speed_print = 55 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) infill_line_width = =round(line_width * 0.4 / 0.35, 2) speed_infill = =math.ceil(speed_print * 40 / 55) - -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.17 - diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Draft_Print.inst.cfg new file mode 100644 index 0000000000..eab9ac6fe5 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Draft_Print.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_bam +variant = AA 0.4 + +[values] +brim_replaces_support = False +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature + 5 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +skin_overlap = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +speed_topbottom = =math.ceil(speed_print * 35 / 70) +speed_wall = =math.ceil(speed_print * 50 / 70) +speed_wall_0 = =math.ceil(speed_wall * 35 / 50) +top_bottom_thickness = 1 +wall_thickness = 1 +support_brim_enable = True +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Fast_Print.inst.cfg new file mode 100644 index 0000000000..582c51456b --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Fast_Print.inst.cfg @@ -0,0 +1,39 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_bam +variant = AA 0.4 + +[values] +brim_replaces_support = False +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +speed_print = 80 +speed_layer_0 = =math.ceil(speed_print * 20 / 80) +speed_topbottom = =math.ceil(speed_print * 30 / 80) +speed_wall = =math.ceil(speed_print * 40 / 80) +speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +top_bottom_thickness = 1 +wall_thickness = 1 +support_brim_enable = True +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..7f3bfba927 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -0,0 +1,38 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_bam +variant = AA 0.4 + +[values] +brim_replaces_support = False +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 7 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature - 10 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +skin_overlap = 10 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +support_brim_enable = True +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 +top_bottom_thickness = 1 +wall_thickness = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg similarity index 85% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg index c02317792c..3af449ee69 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_cpe_plus variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -36,7 +35,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 40 / 50) @@ -47,8 +46,3 @@ support_z_distance = =layer_height wall_0_inset = 0 wall_thickness = 1 -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.17 - diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg similarity index 85% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg index 57be60501c..7f553837a9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Normal -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 material = generic_cpe_plus variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -36,7 +35,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) @@ -45,8 +44,3 @@ speed_wall_0 = =math.ceil(speed_wall * 35 / 45) support_bottom_distance = =support_z_distance support_z_distance = =layer_height wall_0_inset = 0 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg similarity index 85% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg index 44235b30eb..b311bce56b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 material = generic_cpe_plus variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -38,7 +37,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 40) speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) @@ -47,9 +46,3 @@ speed_wall_0 = =math.ceil(speed_wall * 30 / 35) support_bottom_distance = =support_z_distance support_z_distance = =layer_height wall_0_inset = 0 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.17 - diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg similarity index 85% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg index a0b5af8679..41db72ae39 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 material = generic_cpe_plus variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -38,7 +37,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 40) speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) @@ -47,8 +46,3 @@ speed_wall_0 = =math.ceil(speed_wall * 30 / 35) support_bottom_distance = =support_z_distance support_z_distance = =layer_height wall_0_inset = 0 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg similarity index 75% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg index 52f22f807f..ff8c914e34 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_cpe variant = AA 0.4 -buildplate = Aluminum [values] material_print_temperature = =default_material_print_temperature + 10 @@ -19,7 +18,7 @@ material_final_print_temperature = =material_print_temperature - 10 retraction_combing_max_distance = 50 skin_overlap = 20 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) @@ -28,8 +27,3 @@ wall_thickness = 1 infill_pattern = triangles speed_infill = =math.ceil(speed_print * 50 / 60) - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg similarity index 69% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg index 117a9e0273..fda0cad78a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Normal -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 material = generic_cpe variant = AA 0.4 -buildplate = Aluminum [values] cool_min_speed = 7 @@ -19,15 +18,10 @@ material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 retraction_combing_max_distance = 50 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) infill_pattern = triangles -speed_infill = =math.ceil(speed_print * 50 / 60) - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.17 +speed_infill = =math.ceil(speed_print * 50 / 60) \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg similarity index 70% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg index d25ab9f605..4b438a1b41 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 material = generic_cpe variant = AA 0.4 -buildplate = Aluminum [values] cool_min_speed = 12 @@ -21,14 +20,9 @@ material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 retraction_combing_max_distance = 50 speed_print = 50 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) infill_pattern = triangles -speed_infill = =math.ceil(speed_print * 40 / 50) - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.17 +speed_infill = =math.ceil(speed_print * 40 / 50) \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg similarity index 67% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg index bafc867d14..e35e75ccb7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 material = generic_cpe variant = AA 0.4 -buildplate = Aluminum [values] machine_nozzle_cool_down_speed = 0.85 @@ -19,14 +18,9 @@ material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 retraction_combing_max_distance = 50 speed_print = 55 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) infill_pattern = triangles -speed_infill = =math.ceil(speed_print * 45 / 55) - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.17 +speed_infill = =math.ceil(speed_print * 45 / 55) \ No newline at end of file diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg new file mode 100644 index 0000000000..264f6dd635 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -0,0 +1,38 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_nylon +variant = AA 0.4 + +[values] +adhesion_type = brim +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_print_temperature = =default_material_print_temperature + 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg new file mode 100644 index 0000000000..e374c67a29 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -0,0 +1,38 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_nylon +variant = AA 0.4 + +[values] +adhesion_type = brim +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_print_temperature = =default_material_print_temperature + 5 +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg new file mode 100644 index 0000000000..5a3be0a93b --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg @@ -0,0 +1,37 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_nylon +variant = AA 0.4 + +[values] +adhesion_type = brim +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 15 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..848921881e --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -0,0 +1,37 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_nylon +variant = AA 0.4 + +[values] +adhesion_type = brim +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 12 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg similarity index 87% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg index ddaef82dcc..9a370932de 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_pc variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -48,9 +47,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) support_bottom_distance = =support_z_distance @@ -62,8 +61,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.4 / 0.35, 2) wall_thickness = 1.2 - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg similarity index 87% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg index 5c85a32af0..97d217b928 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Normal -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 material = generic_pc variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -47,9 +46,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) @@ -62,8 +61,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.4 / 0.35, 2) wall_thickness = 1.2 - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg similarity index 87% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg index dbeed2dfe9..974a4b86e3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 material = generic_pc variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -48,9 +47,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) @@ -63,8 +62,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.4 / 0.35, 2) wall_thickness = 1.2 - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg similarity index 87% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg index 3694db3f76..a176d8a066 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 material = generic_pc variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -46,9 +45,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) @@ -61,8 +60,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.4 / 0.35, 2) wall_thickness = 1.2 - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..69c0d0bb23 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature + 5 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +speed_topbottom = =math.ceil(speed_print * 40 / 70) +speed_wall = =math.ceil(speed_print * 55 / 70) +speed_wall_0 = =math.ceil(speed_wall * 45 / 50) +top_bottom_thickness = 0.8 +wall_thickness = 0.8 + +jerk_travel = 50 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) +infill_sparse_density = 15 +layer_height_0 = 0.2 +acceleration_wall = 2000 +acceleration_wall_0 = 2000 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print.inst.cfg new file mode 100644 index 0000000000..32dce2236e --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_standby_temperature = 100 +prime_tower_enable = False +speed_print = 70 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +speed_topbottom = =math.ceil(speed_print * 35 / 70) +speed_wall = =math.ceil(speed_print * 45 / 70) +speed_wall_0 = =math.ceil(speed_wall * 35 / 70) +top_bottom_thickness = 1 +wall_thickness = 1 + +jerk_travel = 50 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) +layer_height_0 = 0.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_High_Quality.inst.cfg new file mode 100644 index 0000000000..567bd84a76 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_High_Quality.inst.cfg @@ -0,0 +1,33 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 10 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature - 5 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 10 +speed_print = 50 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) +speed_topbottom = =math.ceil(speed_print * 35 / 50) +speed_wall = =math.ceil(speed_print * 35 / 50) +top_bottom_thickness = 1 +wall_thickness = 1 + +jerk_travel = 50 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) +layer_height_0 = 0.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..522147fdd1 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -0,0 +1,29 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 7 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 10 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +top_bottom_thickness = 1 +wall_thickness = 1 + +jerk_travel = 50 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) +layer_height_0 = 0.2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg similarity index 90% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg index f50c38f892..d8caa2e615 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_pp variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -30,7 +29,7 @@ line_width = =machine_nozzle_size * 0.95 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature_layer_0 = =material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature - 5 @@ -48,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_travel_layer_0 = 50 @@ -61,5 +60,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =line_width wall_thickness = =line_width * 3 - -default_material_bed_temperature = 95 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg similarity index 90% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg index 8f07b2a6a9..bd08a774d2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Normal -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 material = generic_pp variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -30,7 +29,7 @@ line_width = =machine_nozzle_size * 0.95 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature_layer_0 = =material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 material_final_print_temperature = =material_print_temperature - 12 material_initial_print_temperature = =material_print_temperature - 2 material_print_temperature = =default_material_print_temperature - 13 @@ -48,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) @@ -63,5 +62,3 @@ top_bottom_thickness = 1.1 wall_0_inset = 0 wall_line_width_x = =line_width wall_thickness = =line_width * 3 - -default_material_bed_temperature = 95 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg similarity index 90% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg index 440d8cbfe6..8bc06272be 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 material = generic_pp variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -30,7 +29,7 @@ line_width = =machine_nozzle_size * 0.95 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature_layer_0 = =material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature - 15 @@ -48,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) @@ -63,6 +62,3 @@ top_bottom_thickness = 1 wall_0_inset = 0 wall_line_width_x = =line_width wall_thickness = =line_width * 3 - -default_material_bed_temperature = 95 - diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..3f2bf71469 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg @@ -0,0 +1,38 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_tough_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 7 +infill_line_width = =round(line_width * 0.45/0.35,2) +jerk_print = 25 +jerk_roofing = 1 +layer_height_0 = 0.2 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature -10 +material_standby_temperature = 100 +prime_tower_enable = False +roofing_layer_count = 2 +skin_outline_count = 0 +skin_overlap = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) +speed_print = 50 +speed_roofing = =math.ceil(speed_wall * 20 / 24) +speed_topbottom = =math.ceil(speed_print * 25 / 50) +speed_wall = =math.ceil(speed_print * 36 / 50) +speed_wall_0 = =math.ceil(speed_print * 26 / 50) +top_bottom_thickness = 1.2 +wall_line_width_x = =round(line_width * 0.35/0.35,2) +wall_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print.inst.cfg new file mode 100644 index 0000000000..9c0f665788 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_tough_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +infill_line_width = =round(line_width * 1.285, 2) +layer_height_0 = 0.2 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature -10 +material_standby_temperature = 100 +prime_tower_enable = False +speed_layer_0 = =math.ceil(speed_print * 20 / 45) +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +top_bottom_thickness = 1.2 +wall_line_width_x = =round(line_width * 0.35/0.35,2) +wall_thickness = 1.23 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_High_Quality.inst.cfg new file mode 100644 index 0000000000..f4223bfb17 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_High_Quality.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_tough_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 10 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature - 15 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 10 +speed_print = 45 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +top_bottom_thickness = 1.2 +wall_thickness = 1.23 + +layer_height_0 = 0.2 + +line_width = =round(machine_nozzle_size * 1.025, 3) +wall_line_width_x = =line_width +infill_line_width = =line_width diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..81ed3df828 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -0,0 +1,33 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_tough_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 7 +infill_line_width = =round(line_width * 1.285, 2) +layer_height_0 = 0.2 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature - 15 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 10 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +top_bottom_thickness = 1.2 +wall_thickness = 1.23 + diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg new file mode 100644 index 0000000000..aeee555471 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg @@ -0,0 +1,63 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_tpu +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 8.75 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 6 +cool_min_speed = 4 +gradual_infill_step_height = =5 * layer_height +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_overlap = 0 +infill_pattern = cross_3d +infill_sparse_density = 10 +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +line_width = =machine_nozzle_size * 0.95 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 106 +material_initial_print_temperature = =material_print_temperature +material_print_temperature = =default_material_print_temperature + 2 +material_print_temperature_layer_0 = =material_print_temperature + 15 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_wipe_enabled = True +retraction_count_max = 12 +retraction_extra_prime_amount = 0.8 +retraction_extrusion_window = 1 +retraction_hop_only_when_collides = True +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_overlap = 5 +speed_equalize_flow_enabled = True +speed_layer_0 = =math.ceil(speed_print * 18 / 25) +speed_print = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 25) + +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = 0.7 +travel_avoid_distance = 1.5 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = 0.76 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg new file mode 100644 index 0000000000..7b289aa2d2 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg @@ -0,0 +1,64 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_tpu +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 8.75 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 6 +cool_min_speed = 4 +gradual_infill_step_height = =5 * layer_height +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_overlap = 0 +infill_pattern = cross_3d +infill_sparse_density = 10 +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +line_width = =machine_nozzle_size * 0.95 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 106 +material_initial_print_temperature = =material_print_temperature +material_print_temperature = =default_material_print_temperature + 2 +material_print_temperature_layer_0 = =material_print_temperature + 15 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_wipe_enabled = True +retraction_count_max = 12 +retraction_extra_prime_amount = 0.8 +retraction_extrusion_window = 1 +retraction_hop_only_when_collides = True +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_overlap = 5 +speed_equalize_flow_enabled = True +speed_layer_0 = =math.ceil(speed_print * 18 / 25) +speed_print = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 25) + +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = 0.7 +travel_avoid_distance = 1.5 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = 0.76 + diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..9720978072 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -0,0 +1,63 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_tpu +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 8.75 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 6 +cool_min_speed = 4 +gradual_infill_step_height = =5 * layer_height +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_overlap = 0 +infill_pattern = cross_3d +infill_sparse_density = 10 +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +line_width = =machine_nozzle_size * 0.95 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 106 +material_initial_print_temperature = =material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 17 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_wipe_enabled = True +retraction_count_max = 12 +retraction_extra_prime_amount = 0.8 +retraction_extrusion_window = 1 +retraction_hop_only_when_collides = True +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_overlap = 5 +speed_equalize_flow_enabled = True +speed_layer_0 = =math.ceil(speed_print * 18 / 25) +speed_print = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 25) + +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = 0.7 +travel_avoid_distance = 1.5 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = 0.76 + diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg similarity index 71% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg index e0dd599317..32b31446c7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_abs variant = AA 0.8 -buildplate = Aluminum [values] line_width = =machine_nozzle_size * 0.875 @@ -21,8 +20,3 @@ speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) retract_at_layer_change = False - -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg similarity index 71% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg index 0ca1b63c0b..ff02568346 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Sprint -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 material = generic_abs variant = AA 0.8 -buildplate = Aluminum [values] line_width = =machine_nozzle_size * 0.875 @@ -21,8 +20,3 @@ speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) retract_at_layer_change = False - -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg similarity index 72% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg index 1611c3fedd..ada2e19e40 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 material = generic_abs variant = AA 0.8 -buildplate = Aluminum [values] line_width = =machine_nozzle_size * 0.875 @@ -21,8 +20,3 @@ speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) retract_at_layer_change = False - -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg similarity index 83% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg index 6b0f12f8dc..7db7f859f1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast - Experimental -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_cpe_plus variant = AA 0.8 -buildplate = Aluminum is_experimental = True [values] @@ -28,7 +27,7 @@ retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 15 speed_topbottom = =math.ceil(speed_print * 35 / 50) @@ -38,8 +37,3 @@ support_bottom_distance = =support_z_distance support_line_width = =round(line_width * 0.6 / 0.7, 2) support_z_distance = =layer_height top_bottom_thickness = 1.2 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg similarity index 81% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg index 78ad1f6eac..15e07be671 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -1,16 +1,16 @@ [general] version = 4 -name = Sprint -definition = ultimaker_s5 +name = Sprint - Experimental +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 material = generic_cpe_plus variant = AA 0.8 -buildplate = Aluminum +is_experimental = True [values] brim_width = 14 @@ -27,7 +27,7 @@ retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 8 speed_topbottom = =math.ceil(speed_print * 35 / 50) @@ -37,8 +37,3 @@ support_bottom_distance = =support_z_distance support_line_width = =round(line_width * 0.6 / 0.7, 2) support_z_distance = =layer_height top_bottom_thickness = 1.2 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg similarity index 81% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg index 7be2cdbcc8..6931956c28 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -1,16 +1,16 @@ [general] version = 4 -name = Extra Fast -definition = ultimaker_s5 +name = Extra Fast - Experimental +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 material = generic_cpe_plus variant = AA 0.8 -buildplate = Aluminum +is_experimental = True [values] brim_width = 14 @@ -27,7 +27,7 @@ retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 10 speed_topbottom = =math.ceil(speed_print * 35 / 50) @@ -37,8 +37,3 @@ support_bottom_distance = =support_z_distance support_line_width = =round(line_width * 0.6 / 0.7, 2) support_z_distance = =layer_height top_bottom_thickness = 1.2 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg similarity index 69% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg index 67132b67fc..63a5b8d26b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_cpe variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 15 @@ -23,9 +22,4 @@ speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) -jerk_travel = 50 - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.3 +jerk_travel = 50 \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg similarity index 72% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg index 49e70af112..83224c83f4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Sprint -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 material = generic_cpe variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 15 @@ -24,9 +23,4 @@ speed_topbottom = =math.ceil(speed_print * 30 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) -jerk_travel = 50 - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.3 +jerk_travel = 50 \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg similarity index 72% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg index 9d781092b1..7a66485d16 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 material = generic_cpe variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 15 @@ -24,8 +23,3 @@ speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) jerk_travel = 50 - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg new file mode 100644 index 0000000000..a3bb787d82 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_nylon +variant = AA 0.8 + +[values] +brim_width = 5.6 +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_before_walls = True +infill_line_width = =line_width +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_standby_temperature = 100 +ooze_shield_angle = 40 +prime_tower_enable = True +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..4b9a460eff --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +material = generic_nylon +variant = AA 0.8 + +[values] +brim_width = 5.6 +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_before_walls = True +infill_line_width = =line_width +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_standby_temperature = 100 +ooze_shield_angle = 40 +prime_tower_enable = True +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..460504d9b1 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_nylon +variant = AA 0.8 + +[values] +brim_width = 5.6 +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_before_walls = True +infill_line_width = =line_width +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_standby_temperature = 100 +ooze_shield_angle = 40 +prime_tower_enable = True +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg similarity index 77% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg index 04170b3ba2..cad3dc4b2f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg @@ -1,20 +1,19 @@ [general] version = 4 name = Fast - Experimental -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_pc variant = AA 0.8 -buildplate = Aluminum is_experimental = True [values] -brim_width = 10 +brim_width = 14 cool_fan_full_at_height = =layer_height_0 + 14 * layer_height infill_before_walls = True line_width = =machine_nozzle_size * 0.875 @@ -24,15 +23,10 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 15 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) support_line_width = =round(line_width * 0.6 / 0.7, 2) - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg similarity index 73% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg index 90b7afdb8d..b3fd93971d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg @@ -1,19 +1,19 @@ [general] version = 4 -name = Sprint -definition = ultimaker_s5 +name = Sprint - Experimental +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 material = generic_pc variant = AA 0.8 -buildplate = Aluminum +is_experimental = True [values] -brim_width = 10 +brim_width = 14 cool_fan_full_at_height = =layer_height_0 + 7 * layer_height infill_before_walls = True line_width = =machine_nozzle_size * 0.875 @@ -22,15 +22,10 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 8 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) support_line_width = =round(line_width * 0.6 / 0.7, 2) - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg similarity index 74% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg index f9b93eac37..c7b6d85efe 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg @@ -1,19 +1,19 @@ [general] version = 4 -name = Extra Fast -definition = ultimaker_s5 +name = Extra Fast - Experimental +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 material = generic_pc variant = AA 0.8 -buildplate = Aluminum +is_experimental = True [values] -brim_width = 10 +brim_width = 14 cool_fan_full_at_height = =layer_height_0 + 9 * layer_height infill_before_walls = True line_width = =machine_nozzle_size * 0.875 @@ -23,16 +23,10 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 10 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) support_line_width = =round(line_width * 0.6 / 0.7, 2) - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.3 - diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..09e9d72e24 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg @@ -0,0 +1,42 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 10 +prime_tower_enable = True +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x + +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =speed_wall +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +infill_sparse_density = 15 +layer_height_0 = 0.4 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..d1f5851822 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -0,0 +1,42 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +material = generic_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 15 +prime_tower_enable = True +raft_margin = 10 +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =speed_wall +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +infill_sparse_density = 15 +layer_height_0 = 0.4 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..e398a6a9ea --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -0,0 +1,41 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 10 +prime_tower_enable = True +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =speed_wall +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +infill_sparse_density = 15 +layer_height_0 = 0.4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg similarity index 93% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg index 3569aac74b..d129bafb4b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_pp variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 25 @@ -30,6 +29,7 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 +prime_tower_min_volume = 10 retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 @@ -50,5 +50,3 @@ travel_compensate_overlapping_walls_0_enabled = False wall_0_wipe_dist = =line_width * 2 wall_line_width_x = =round(line_width * 0.8 / 0.8, 2) wall_thickness = 1.6 - -default_material_bed_temperature = 95 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg similarity index 93% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg index 0e10a17210..0977c369bb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Sprint -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 material = generic_pp variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 25 @@ -30,6 +29,7 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 +prime_tower_min_volume = 20 retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 @@ -50,6 +50,3 @@ travel_compensate_overlapping_walls_0_enabled = False wall_0_wipe_dist = =line_width * 2 wall_line_width_x = =round(line_width * 0.8 / 0.8, 2) wall_thickness = 1.6 - -default_material_bed_temperature = 95 - diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg similarity index 93% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg index 79d58f56f4..93600d1d45 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 material = generic_pp variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 25 @@ -29,6 +28,7 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 +prime_tower_min_volume = 15 retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 @@ -49,5 +49,3 @@ travel_compensate_overlapping_walls_0_enabled = False wall_0_wipe_dist = =line_width * 2 wall_line_width_x = =round(line_width * 0.8 / 0.8, 2) wall_thickness = 1.6 - -default_material_bed_temperature = 95 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..3b95a2dffa --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_tough_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.75 / 0.75, 2) +infill_pattern = cubic +layer_height_0 = 0.4 +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 0 +prime_tower_enable = False +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =round(speed_print * 35 / 45) +speed_wall = =round(speed_print * 40 / 45) +speed_wall_0 = =round(speed_print * 35 / 45) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 6 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.75 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x \ No newline at end of file diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..bff567d5fb --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg @@ -0,0 +1,41 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +material = generic_tough_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.75 / 0.75, 2) +infill_pattern = cubic +layer_height_0 = 0.4 +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 5 +prime_tower_enable = False +raft_margin = 10 +retract_at_layer_change = False +speed_infill = =math.ceil(speed_print * 30 / 30) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 20 / 30) +speed_wall = =math.ceil(speed_print * 25/ 30) +speed_wall_0 = =math.ceil(speed_print * 20 / 30) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..eca00013da --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg @@ -0,0 +1,43 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_tough_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.75 / 0.75, 2) +infill_pattern = cubic +layer_height_0 = 0.4 +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +prime_tower_enable = False +retract_at_layer_change = False +speed_infill = =math.ceil(speed_print * 30 / 35) +speed_print = 35 +speed_topbottom = =math.ceil(speed_print * 20 / 35) +speed_wall = =math.ceil(speed_print * 25/ 35) +speed_wall_0 = =math.ceil(speed_print * 20 / 35) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.75 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg new file mode 100644 index 0000000000..f13273353d --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg @@ -0,0 +1,62 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_tpu +variant = AA 0.8 + +[values] +brim_width = 8.75 +cool_min_layer_time_fan_speed_max = 6 +top_skin_expand_distance = =line_width * 2 +infill_before_walls = True +infill_line_width = =round(line_width * 0.7 / 0.8, 2) +infill_pattern = cross_3d +jerk_prime_tower = =math.ceil(jerk_print * 25 / 25) +jerk_support = =math.ceil(jerk_print * 25 / 25) +jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25) +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 105 +material_initial_print_temperature = =material_print_temperature +material_print_temperature = =default_material_print_temperature - 2 +material_print_temperature_layer_0 = =material_print_temperature + 19 +material_standby_temperature = 100 +multiple_mesh_overlap = 0.2 +prime_tower_enable = True +prime_tower_flow = 100 +retract_at_layer_change = False +retraction_count_max = 12 +retraction_extra_prime_amount = 0.5 +retraction_hop = 1.5 +retraction_hop_only_when_collides = False +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_line_width = =round(line_width * 0.78 / 0.8, 2) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 25 / 30) + +speed_wall = =math.ceil(speed_print * 30 / 30) +speed_wall_x = =math.ceil(speed_wall * 30 / 30) +support_angle = 50 +support_bottom_distance = =support_z_distance +support_line_width = =round(line_width * 0.7 / 0.8, 2) +support_offset = =line_width +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 45 +top_bottom_thickness = 1.2 +travel_avoid_distance = 1.5 +travel_compensate_overlapping_walls_0_enabled = False +wall_0_wipe_dist = =line_width * 2 +wall_line_width_x = =round(line_width * 0.6 / 0.8, 2) +wall_thickness = 1.3 + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..a0a200ef67 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -0,0 +1,63 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +material = generic_tpu +variant = AA 0.8 + +[values] +brim_width = 8.75 +cool_min_layer_time_fan_speed_max = 6 +top_skin_expand_distance = =line_width * 2 +infill_before_walls = True +infill_line_width = =round(line_width * 0.7 / 0.8, 2) +infill_pattern = cross_3d +infill_sparse_density = 10 +jerk_prime_tower = =math.ceil(jerk_print * 25 / 25) +jerk_support = =math.ceil(jerk_print * 25 / 25) +jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25) +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 105 +material_initial_print_temperature = =material_print_temperature +material_print_temperature = =default_material_print_temperature + 2 +material_print_temperature_layer_0 = =material_print_temperature + 15 +material_standby_temperature = 100 +multiple_mesh_overlap = 0.2 +prime_tower_enable = True +prime_tower_flow = 100 +retract_at_layer_change = False +retraction_count_max = 12 +retraction_extra_prime_amount = 0.5 +retraction_hop = 1.5 +retraction_hop_only_when_collides = False +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_line_width = =round(line_width * 0.78 / 0.8, 2) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 20 / 30) + +speed_wall = =math.ceil(speed_print * 30 / 30) +speed_wall_x = =math.ceil(speed_wall * 30 / 30) +support_angle = 50 +support_bottom_distance = =support_z_distance +support_line_width = =round(line_width * 0.7 / 0.8, 2) +support_offset = =line_width +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 45 +top_bottom_thickness = 1.2 +travel_avoid_distance = 1.5 +travel_compensate_overlapping_walls_0_enabled = False +wall_0_wipe_dist = =line_width * 2 +wall_line_width_x = =round(line_width * 0.6 / 0.8, 2) +wall_thickness = 1.3 + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..25b24721c8 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -0,0 +1,62 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_tpu +variant = AA 0.8 + +[values] +brim_width = 8.75 +cool_min_layer_time_fan_speed_max = 6 +top_skin_expand_distance = =line_width * 2 +infill_before_walls = True +infill_line_width = =round(line_width * 0.7 / 0.8, 2) +infill_pattern = cross_3d +infill_sparse_density = 10 +jerk_prime_tower = =math.ceil(jerk_print * 25 / 25) +jerk_support = =math.ceil(jerk_print * 25 / 25) +jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25) +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 105 +material_initial_print_temperature = =material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 17 +material_standby_temperature = 100 +multiple_mesh_overlap = 0.2 +prime_tower_enable = True +prime_tower_flow = 100 +retract_at_layer_change = False +retraction_count_max = 12 +retraction_extra_prime_amount = 0.5 +retraction_hop = 1.5 +retraction_hop_only_when_collides = False +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_line_width = =round(line_width * 0.78 / 0.8, 2) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 23 / 30) + +speed_wall = =math.ceil(speed_print * 30 / 30) +speed_wall_x = =math.ceil(speed_wall * 30 / 30) +support_angle = 50 +support_bottom_distance = =support_z_distance +support_line_width = =round(line_width * 0.7 / 0.8, 2) +support_offset = =line_width +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 45 +top_bottom_thickness = 1.2 +travel_avoid_distance = 1.5 +travel_compensate_overlapping_walls_0_enabled = False +wall_0_wipe_dist = =line_width * 2 +wall_line_width_x = =round(line_width * 0.6 / 0.8, 2) +wall_thickness = 1.3 + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..9085bd2bd9 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pva +variant = BB 0.4 + +[values] +brim_replaces_support = False +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 20 +support_brim_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg new file mode 100644 index 0000000000..ff8208ab7a --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_pva +variant = BB 0.4 + +[values] +brim_replaces_support = False +material_print_temperature = =default_material_print_temperature + 5 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 15 +support_brim_enable = True +support_infill_sparse_thickness = 0.3 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg new file mode 100644 index 0000000000..40e466c187 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg @@ -0,0 +1,19 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pva +variant = BB 0.4 + +[values] +brim_replaces_support = False +material_standby_temperature = 100 +prime_tower_enable = False +support_brim_enable = True +support_infill_sparse_thickness = 0.18 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..d6bf539597 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pva +variant = BB 0.4 + +[values] +brim_replaces_support = False +material_standby_temperature = 100 +prime_tower_enable = False +support_brim_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..57022cd1f6 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pva +variant = BB 0.8 + +[values] +brim_replaces_support = False +material_print_temperature = =default_material_print_temperature + 5 +material_standby_temperature = 100 +support_brim_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..d5b206a84f --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +material = generic_pva +variant = BB 0.8 + +[values] +brim_replaces_support = False +material_standby_temperature = 100 +support_brim_enable = True +support_interface_height = 0.9 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..ca945049b2 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -0,0 +1,19 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_pva +variant = BB 0.8 + +[values] +brim_replaces_support = False +material_standby_temperature = 100 +support_brim_enable = True +support_infill_sparse_thickness = 0.3 +support_interface_height = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFCPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFCPE_Draft_Print.inst.cfg new file mode 100644 index 0000000000..8e2963dc25 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFCPE_Draft_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_cffcpe +variant = CC 0.6 + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 15 +cool_min_speed = 6 +infill_line_width = =line_width +initial_layer_line_width_factor = 130.0 +line_width = =machine_nozzle_size * (0.58/0.6) +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +skin_overlap = 20 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +wall_line_width_x = =line_width diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFPA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFPA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..dfb810a05c --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFPA_Draft_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_cffpa +variant = CC 0.6 + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 15 +cool_min_speed = 6 +infill_line_width = =line_width +initial_layer_line_width_factor = 130.0 +line_width = =machine_nozzle_size * (0.58/0.6) +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +skin_overlap = 20 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +wall_line_width_x = =line_width diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFCPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFCPE_Draft_Print.inst.cfg new file mode 100644 index 0000000000..fd5d3e6c21 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFCPE_Draft_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_gffcpe +variant = CC 0.6 + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 15 +cool_min_speed = 6 +infill_line_width = =line_width +initial_layer_line_width_factor = 130.0 +line_width = =machine_nozzle_size * (0.58/0.6) +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +skin_overlap = 20 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +wall_line_width_x = =line_width diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFPA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFPA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..5b8bce580a --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFPA_Draft_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_gffpa +variant = CC 0.6 + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 15 +cool_min_speed = 6 +infill_line_width = =line_width +initial_layer_line_width_factor = 130.0 +line_width = =machine_nozzle_size * (0.58/0.6) +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +skin_overlap = 20 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +wall_line_width_x = =line_width diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..8f5e111425 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg @@ -0,0 +1,43 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -3 +material = generic_pla +variant = CC 0.6 +is_experimental = True + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +infill_pattern = triangles +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = 100 +prime_tower_enable = True +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =speed_wall +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_pattern = ='triangles' +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg new file mode 100644 index 0000000000..ad2805ddaa --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg @@ -0,0 +1,43 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -2 +material = generic_pla +variant = CC 0.6 +is_experimental = True + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +infill_pattern = triangles +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = 100 +prime_tower_enable = True +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =speed_wall +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_pattern = ='triangles' +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x diff --git a/resources/quality/ultimaker_s3/um_s3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_Draft_Quality.inst.cfg new file mode 100644 index 0000000000..32eaabb90e --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_Draft_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +global_quality = True + +[values] +layer_height = 0.2 diff --git a/resources/quality/ultimaker_s3/um_s3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_Fast_Quality.inst.cfg new file mode 100644 index 0000000000..0381b00a4d --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_Fast_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +global_quality = True + +[values] +layer_height = 0.15 diff --git a/resources/quality/ultimaker_s3/um_s3_global_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_High_Quality.inst.cfg new file mode 100644 index 0000000000..153667334a --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_High_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +global_quality = True + +[values] +layer_height = 0.06 diff --git a/resources/quality/ultimaker_s3/um_s3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..22d477e221 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_Normal_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.1 diff --git a/resources/quality/ultimaker_s3/um_s3_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_Superdraft_Quality.inst.cfg new file mode 100644 index 0000000000..2a56308c00 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_Superdraft_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +global_quality = True + +[values] +layer_height = 0.4 diff --git a/resources/quality/ultimaker_s3/um_s3_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_Verydraft_Quality.inst.cfg new file mode 100644 index 0000000000..ec37acd5da --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_Verydraft_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +global_quality = True + +[values] +layer_height = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg index 1b46116686..c55eb1f98e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg index 0beec0fba4..c50c46a195 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg index 7623872d07..e89f0307d5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg index e09ea57792..c686973cac 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg index e284ac277a..a9d336bb48 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg index a8c5f08448..cf43886537 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg index 27c9c1d63e..457274f56a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg index 5d2e8767ba..6e2110bb0c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg index 7e5fcc0ab6..e873e83a72 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg index 829939b2a6..90c6a26a2a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg index a6a51aca4c..9212424fd0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg index b49dbd674d..e37bfde09b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 @@ -37,4 +37,4 @@ support_angle = 45 support_join_distance = 5 support_offset = 2 support_pattern = triangles -support_infill_rate = 10 +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg index 6d4f7206f3..1398e26221 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -36,4 +36,4 @@ support_angle = 45 support_join_distance = 5 support_offset = 2 support_pattern = triangles -support_infill_rate = 10 +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg index e590a56028..4b40e21243 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -33,6 +33,6 @@ support_angle = 45 support_join_distance = 5 support_offset = 2 support_pattern = triangles -support_infill_rate = 10 +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 top_bottom_thickness = 1 wall_thickness = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg index aa32861ddb..d02e1a3b3a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg index 26edd2d8a7..cdb5e9fe63 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg index e200c3b078..d993ce239d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg index dc665ae114..3f638c5324 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg index 311c335a86..1a169e38c7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg index 02122a40fa..ddf3155693 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg index 54ab48e88d..2b4ace5cd2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg index be9b43b1b8..bae1113643 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg index 03fe4f4b8a..384253f81c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg index bd078f7e4d..d0ef05dfbd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg index 45506f4152..275d4d9e99 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg index c159402e3f..f5ebb0de69 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg index f6713fd4e9..e8315bd643 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg index fbc5328d80..6da61722df 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg index d6e002c7f1..d8b5b0f25d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg index 0f708b16db..14cba24d92 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg index ca4ef6bd9b..1c35efaa96 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg index 56cb57cb08..0971ef8f17 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg index 44b643d529..5c9ba5f36a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg index aa737dc1ea..dc16dd2fad 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg index d008bb37fc..3a2d552486 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg index b0c00f2c07..2464f03b3d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg index 835c53eaef..8bcf1c41df 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg index 8be35d2ae2..8679f29273 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg index 460fd73afa..3b3ea7fde4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg index 3488756cb6..1681a0cabf 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg index dc2b844d90..60fc8b50d8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg index ec93e5ec23..03ad0757f7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg index eff47b9c20..dbdaf4ba9b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg index 62e543977c..dafa3aec69 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg index 56a16595e8..f750cb4010 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg index 77c0031feb..9bde0cd927 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg index 5a4ee5c515..5014a09bbc 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg index a1c4479973..a9cf05558a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg index 3bde53d593..98b7a6780c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg index 159c909ba5..15b52dddf4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg index af016c06da..4d39177ad7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg index 17036438a9..d429c9642c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg index 2973abfdd3..ab3729b23c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg index 7760ffa89e..6eec90641b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg index 2499e6b3d2..9314a64c72 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg index 2e611aeecc..27236b5e27 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg index 2ac89416aa..71baad0b5e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg index 31db0f93dd..28d3ad20ad 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg index 2ef532a8b9..85d9382cc6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg index ecfab94ef3..7e391481b0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg index 38f3c9c9d9..30e5c92c73 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg index b4b65ee5f7..47a8fac6f1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg index 9a413c42c1..4c0086fda7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg index 0286f482cf..86c9fcf080 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg index ed53d87b78..cd1597ce46 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg index 790ff4a922..e9828faca4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg index 9111bb5804..7f0ea9b6f4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg index af0fb786d2..a797bb1fe8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg index 479aab6e7c..c1a9412566 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg index 2b2f280730..1480e677b3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg index ef38d96aea..1a1510b17e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg index 804e9fd62b..180565afc1 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg index 52a571c4f1..df096b5f87 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg index e8e293c81b..43a1992696 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg index b512b47514..3f52afd331 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg index 04015fe0f8..4a3778d211 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg index 8d79e8fafe..b9de83233c 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg index 31663ab192..b87082c8db 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg index e3ecf51f13..a1862c53bb 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg index f73379dd3d..61153f7d4b 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg index 906f22a66f..5a8f7ed5f8 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg index e411fa877b..388af46060 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg index 156799aa6f..8b864d09ac 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg index f69093ff02..f9c8276a78 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg index 6d5e9cce24..d2db096e38 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg index 64fa64c463..5587b20741 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg index 0f15089757..159b64312a 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg index f31a3e5ee3..44758ae5a9 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg index d97e906d8e..1907ca5a68 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg index 4a6a431e5f..89c45641ef 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg index d1547719f3..a5e22330e1 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg index 169fda1f47..574ea34477 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg index a2a298542e..98c79fea5c 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg index f82194c911..f9a07db778 100644 --- a/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg index 9d8f5fa98d..544d32cedf 100644 --- a/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg index 08bc3aa522..4c9d2a0be0 100644 --- a/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg index 09c3902405..1fd07d1a65 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg index 058ed545b7..a0898fcf8d 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg index 595f2be25f..229fdd1c48 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg index 9ec084e758..64865959f2 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg index 9f1bd25564..cd458e20c4 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg index b60c8d8496..7713cf37c1 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg index 567de3a73b..f9407fac25 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg index dbcb27b229..d3b569aa6f 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg index 975556bb86..e1d8f540e4 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg index a795485a6d..660cde5ed9 100644 --- a/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg index 6133c0aa99..28d0031d02 100644 --- a/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fine weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg index 4a5bfc7d47..6d2edee02c 100644 --- a/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg index ec89e83337..40c17d371d 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg index e9ce3c7244..5a254ee3e9 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fine weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg index 81d7bcd308..bdc936c193 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg index f805c0f3be..efd7362aab 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg index 9647938cf6..258f20016b 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fine weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg index af2a32384c..942c610f18 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index d83a7775c5..2b9ad362fc 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -52,6 +52,7 @@ fill_outline_gaps xy_offset xy_offset_layer_0 z_seam_type +z_seam_position z_seam_x z_seam_y z_seam_corner @@ -99,6 +100,7 @@ top_skin_expand_distance bottom_skin_expand_distance max_skin_angle_for_expansion min_skin_width_for_expansion +infill_randomize_start_location [material] default_material_print_temperature @@ -113,6 +115,18 @@ material_bed_temperature_layer_0 material_adhesion_tendency material_surface_energy material_flow +wall_material_flow +wall_0_material_flow +wall_x_material_flow +skin_material_flow +roofing_material_flow +infill_material_flow +skirt_brim_material_flow +support_material_flow +support_interface_material_flow +support_roof_material_flow +support_bottom_material_flow +prime_tower_flow material_flow_layer_0 retraction_enable retract_at_layer_change @@ -147,7 +161,6 @@ speed_layer_0 speed_print_layer_0 speed_travel_layer_0 skirt_brim_speed -max_feedrate_z_override speed_slowdown_layers speed_equalize_flow_enabled speed_equalize_flow_max @@ -192,13 +205,13 @@ travel_retract_before_outer_wall travel_avoid_other_parts travel_avoid_supports travel_avoid_distance -start_layers_at_same_position layer_start_x layer_start_y retraction_hop_enabled retraction_hop_only_when_collides retraction_hop retraction_hop_after_extruder_switch +retraction_hop_after_extruder_switch_height [cooling] cool_fan_enabled @@ -258,7 +271,7 @@ support_interface_pattern minimum_interface_area support_use_towers support_tower_diameter -support_minimal_diameter +support_tower_maximum_supported_diameter support_tower_roof_angle support_mesh_drop_down @@ -292,12 +305,10 @@ raft_fan_speed [dual] prime_tower_enable -prime_tower_circular prime_tower_size prime_tower_min_volume prime_tower_position_x prime_tower_position_y -prime_tower_flow prime_tower_wipe_enabled prime_tower_brim_enable ooze_shield_enabled @@ -347,6 +358,7 @@ infill_enable_travel_optimization material_flow_dependent_temperature material_flow_temp_graph meshfix_maximum_resolution +meshfix_maximum_deviation support_skip_some_zags support_skip_zag_per_mm support_zag_skip_count @@ -360,7 +372,6 @@ coasting_enable coasting_volume coasting_min_volume coasting_speed -skin_alternate_rotation cross_infill_pocket_size spaghetti_infill_enabled spaghetti_infill_stepped @@ -382,3 +393,22 @@ adaptive_layer_height_enabled adaptive_layer_height_variation adaptive_layer_height_variation_step adaptive_layer_height_threshold +clean_between_layers +max_extrusion_before_wipe +wipe_retraction_enable +wipe_retraction_amount +wipe_retraction_extra_prime_amount +wipe_retraction_speed +wipe_retraction_retract_speed +wipe_retraction_prime_speed +wipe_pause +wipe_hop_enable +wipe_hop_amount +wipe_hop_speed +wipe_brush_pos_x +wipe_repeat_count +wipe_move_distance +small_hole_max_size +small_feature_max_length +small_feature_speed_factor +small_feature_speed_factor_0 diff --git a/resources/shaders/camera_distance.shader b/resources/shaders/camera_distance.shader index 437aa39cc2..90e9e12388 100644 --- a/resources/shaders/camera_distance.shader +++ b/resources/shaders/camera_distance.shader @@ -1,7 +1,8 @@ [shaders] vertex = uniform highp mat4 u_modelMatrix; - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; attribute highp vec4 a_vertex; @@ -10,7 +11,7 @@ vertex = void main() { vec4 world_space_vert = u_modelMatrix * a_vertex; - gl_Position = u_viewProjectionMatrix * world_space_vert; + gl_Position = u_projectionMatrix * u_viewMatrix * world_space_vert; v_vertex = world_space_vert.xyz; } @@ -36,7 +37,8 @@ fragment = vertex41core = #version 410 uniform highp mat4 u_modelMatrix; - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; in highp vec4 a_vertex; @@ -45,7 +47,7 @@ vertex41core = void main() { vec4 world_space_vert = u_modelMatrix * a_vertex; - gl_Position = u_viewProjectionMatrix * world_space_vert; + gl_Position = u_projectionMatrix * u_viewMatrix * world_space_vert; v_vertex = world_space_vert.xyz; } @@ -75,7 +77,8 @@ fragment41core = [bindings] u_modelMatrix = model_matrix -u_viewProjectionMatrix = view_projection_matrix +u_viewMatrix = view_matrix +u_projectionMatrix = projection_matrix u_normalMatrix = normal_matrix u_viewPosition = view_position diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index 0510686889..0ec6cc0f98 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -1,6 +1,8 @@ [shaders] vertex = - uniform highp mat4 u_modelViewProjectionMatrix; + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; attribute highp vec4 a_vertex; attribute lowp vec2 a_uvs; @@ -9,7 +11,7 @@ vertex = void main() { - gl_Position = u_modelViewProjectionMatrix * a_vertex; + gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex; v_uvs = a_uvs; } @@ -47,7 +49,9 @@ fragment = vertex41core = #version 410 - uniform highp mat4 u_modelViewProjectionMatrix; + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; in highp vec4 a_vertex; in lowp vec2 a_uvs; @@ -56,7 +60,7 @@ vertex41core = void main() { - gl_Position = u_modelViewProjectionMatrix * a_vertex; + gl_Position = u_projectionMatrix * u_viewMatrix * u_modelMatrix * a_vertex; v_uvs = a_uvs; } @@ -92,7 +96,9 @@ u_gridColor0 = [0.96, 0.96, 0.96, 1.0] u_gridColor1 = [0.8, 0.8, 0.8, 1.0] [bindings] -u_modelViewProjectionMatrix = model_view_projection_matrix +u_modelMatrix = model_matrix +u_viewMatrix = view_matrix +u_projectionMatrix = projection_matrix [attributes] a_vertex = vertex diff --git a/resources/shaders/overhang.shader b/resources/shaders/overhang.shader index b9cf53f8b7..7f1b04dd59 100644 --- a/resources/shaders/overhang.shader +++ b/resources/shaders/overhang.shader @@ -1,7 +1,9 @@ [shaders] vertex = uniform highp mat4 u_modelMatrix; - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform highp mat4 u_normalMatrix; attribute highp vec4 a_vertex; @@ -14,7 +16,7 @@ vertex = void main() { vec4 world_space_vert = u_modelMatrix * a_vertex; - gl_Position = u_viewProjectionMatrix * world_space_vert; + gl_Position = u_projectionMatrix * u_viewMatrix * world_space_vert; f_vertex = world_space_vert.xyz; f_normal = (u_normalMatrix * normalize(a_normal)).xyz; @@ -30,6 +32,8 @@ fragment = uniform lowp float u_overhangAngle; uniform lowp vec4 u_overhangColor; + uniform lowp vec4 u_faceColor; + uniform highp int u_faceId; varying highp vec3 f_vertex; varying highp vec3 f_normal; @@ -65,7 +69,9 @@ fragment = vertex41core = #version 410 uniform highp mat4 u_modelMatrix; - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform highp mat4 u_normalMatrix; in highp vec4 a_vertex; @@ -78,7 +84,7 @@ vertex41core = void main() { vec4 world_space_vert = u_modelMatrix * a_vertex; - gl_Position = u_viewProjectionMatrix * world_space_vert; + gl_Position = u_projectionMatrix * u_viewMatrix * world_space_vert; f_vertex = world_space_vert.xyz; f_normal = (u_normalMatrix * normalize(a_normal)).xyz; @@ -95,6 +101,8 @@ fragment41core = uniform lowp float u_overhangAngle; uniform lowp vec4 u_overhangColor; + uniform lowp vec4 u_faceColor; + uniform highp int u_faceId; in highp vec3 f_vertex; in highp vec3 f_normal; @@ -123,7 +131,7 @@ fragment41core = highp float NdotR = clamp(dot(viewVector, reflectedLight), 0.0, 1.0); finalColor += pow(NdotR, u_shininess) * u_specularColor; - finalColor = (-normal.y > u_overhangAngle) ? u_overhangColor : finalColor; + finalColor = (u_faceId != gl_PrimitiveID) ? ((-normal.y > u_overhangAngle) ? u_overhangColor : finalColor) : u_faceColor; frag_color = finalColor; frag_color.a = 1.0; @@ -134,15 +142,18 @@ u_ambientColor = [0.3, 0.3, 0.3, 1.0] u_diffuseColor = [1.0, 0.79, 0.14, 1.0] u_specularColor = [0.4, 0.4, 0.4, 1.0] u_overhangColor = [1.0, 0.0, 0.0, 1.0] +u_faceColor = [0.0, 0.0, 1.0, 1.0] u_shininess = 20.0 [bindings] u_modelMatrix = model_matrix -u_viewProjectionMatrix = view_projection_matrix +u_viewMatrix = view_matrix +u_projectionMatrix = projection_matrix u_normalMatrix = normal_matrix u_viewPosition = view_position u_lightPosition = light_0_position u_diffuseColor = diffuse_color +u_faceId = hover_face [attributes] a_vertex = vertex diff --git a/resources/shaders/striped.shader b/resources/shaders/striped.shader index d816fed74d..71b1f7b0fa 100644 --- a/resources/shaders/striped.shader +++ b/resources/shaders/striped.shader @@ -1,7 +1,9 @@ [shaders] vertex = uniform highp mat4 u_modelMatrix; - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform highp mat4 u_normalMatrix; attribute highp vec4 a_vertex; @@ -15,7 +17,7 @@ vertex = void main() { vec4 world_space_vert = u_modelMatrix * a_vertex; - gl_Position = u_viewProjectionMatrix * world_space_vert; + gl_Position = u_projectionMatrix * u_viewMatrix * world_space_vert; v_position = gl_Position.xyz; v_vertex = world_space_vert.xyz; @@ -43,7 +45,7 @@ fragment = mediump vec4 finalColor = vec4(0.0); mediump vec4 diffuseColor = u_vertical_stripes ? (((mod(v_vertex.x, u_width) < (u_width / 2.)) ^^ (mod(v_vertex.z, u_width) < (u_width / 2.))) ? u_diffuseColor1 : u_diffuseColor2) : - ((mod((-v_position.x + v_position.y), u_width) < (u_width / 2.)) ? u_diffuseColor1 : u_diffuseColor2); + ((mod(((-v_vertex.x + v_vertex.y + v_vertex.z) * 4.), u_width) < (u_width / 2.)) ? u_diffuseColor1 : u_diffuseColor2); /* Ambient Component */ finalColor += u_ambientColor; @@ -69,7 +71,9 @@ fragment = vertex41core = #version 410 uniform highp mat4 u_modelMatrix; - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform highp mat4 u_normalMatrix; in highp vec4 a_vertex; @@ -83,7 +87,7 @@ vertex41core = void main() { vec4 world_space_vert = u_modelMatrix * a_vertex; - gl_Position = u_viewProjectionMatrix * world_space_vert; + gl_Position = u_projectionMatrix * u_viewMatrix * world_space_vert; v_position = gl_Position.xyz; v_vertex = world_space_vert.xyz; @@ -114,7 +118,7 @@ fragment41core = mediump vec4 finalColor = vec4(0.0); mediump vec4 diffuseColor = u_vertical_stripes ? (((mod(v_vertex.x, u_width) < (u_width / 2.)) ^^ (mod(v_vertex.z, u_width) < (u_width / 2.))) ? u_diffuseColor1 : u_diffuseColor2) : - ((mod((-v_position.x + v_position.y), u_width) < (u_width / 2.)) ? u_diffuseColor1 : u_diffuseColor2); + ((mod(((-v_vertex.x + v_vertex.y + v_vertex.z) * 4.), u_width) < (u_width / 2.)) ? u_diffuseColor1 : u_diffuseColor2); /* Ambient Component */ finalColor += u_ambientColor; @@ -148,7 +152,8 @@ u_vertical_stripes = 0 [bindings] u_modelMatrix = model_matrix -u_viewProjectionMatrix = view_projection_matrix +u_viewMatrix = view_matrix +u_projectionMatrix = projection_matrix u_normalMatrix = normal_matrix u_viewPosition = view_position u_lightPosition = light_0_position diff --git a/resources/shaders/transparent_object.shader b/resources/shaders/transparent_object.shader index 75fe7e4b2c..ae25e5fe73 100644 --- a/resources/shaders/transparent_object.shader +++ b/resources/shaders/transparent_object.shader @@ -1,7 +1,9 @@ [shaders] vertex = uniform highp mat4 u_modelMatrix; - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform highp mat4 u_normalMatrix; attribute highp vec4 a_vertex; @@ -14,7 +16,7 @@ vertex = void main() { vec4 world_space_vert = u_modelMatrix * a_vertex; - gl_Position = u_viewProjectionMatrix * world_space_vert; + gl_Position = u_projectionMatrix * u_viewMatrix * world_space_vert; v_vertex = world_space_vert.xyz; v_normal = (u_normalMatrix * normalize(a_normal)).xyz; @@ -51,7 +53,9 @@ fragment = vertex41core = #version 410 uniform highp mat4 u_modelMatrix; - uniform highp mat4 u_viewProjectionMatrix; + uniform highp mat4 u_viewMatrix; + uniform highp mat4 u_projectionMatrix; + uniform highp mat4 u_normalMatrix; in highp vec4 a_vertex; @@ -64,7 +68,7 @@ vertex41core = void main() { vec4 world_space_vert = u_modelMatrix * a_vertex; - gl_Position = u_viewProjectionMatrix * world_space_vert; + gl_Position = u_projectionMatrix * u_viewMatrix * world_space_vert; v_vertex = world_space_vert.xyz; v_normal = (u_normalMatrix * normalize(a_normal)).xyz; @@ -108,7 +112,8 @@ u_opacity = 0.5 [bindings] u_modelMatrix = model_matrix -u_viewProjectionMatrix = view_projection_matrix +u_viewMatrix = view_matrix +u_projectionMatrix = projection_matrix u_normalMatrix = normal_matrix u_lightPosition = light_0_position u_diffuseColor = diffuse_color diff --git a/plugins/ChangeLogPlugin/ChangeLog.txt b/resources/texts/change_log.txt old mode 100755 new mode 100644 similarity index 68% rename from plugins/ChangeLogPlugin/ChangeLog.txt rename to resources/texts/change_log.txt index 651abb0cac..dfb3ab0ab1 --- a/plugins/ChangeLogPlugin/ChangeLog.txt +++ b/resources/texts/change_log.txt @@ -1,3 +1,398 @@ +[4.4.0] +*Intent profiles. +What’s the intent of your print? A rapid prototype? A visual prototype? An end-use part with specific holes sizes? Intent profiles accelerate the CAD-CAM workflow by preconfiguring all the right settings in Ultimaker Cura for each of these use cases. Simply select a profile that matches the intent of your design, slice, and you’re ready to print immediately, without the need to adjust the typical settings. For now, there are three Intent profiles: +*‘Draft’ +Intended for initial prototypes and concept validation, and will print your design in the shortest time possible. +*‘Engineering’ +Intended for high-dimensional accuracy, to print functional prototypes and mechanical end-use parts. +*‘Visual’ +Intended for visual prototypes and prints that need excellent aesthetic quality. +For now, these profiles work for the Ultimaker S5 and Ultimaker S3 with Ultimaker PLA, Tough PLA, and ABS materials, and include PVA and Breakaway combinations. More profiles will follow over time. + +*Per-model settings. +Per-model settings are a set of very powerful features for users who need to tweak specific settings in specific parts of the model. In previous releases these were buried in the interface somewhat, so this release has made them more discoverable with clear icons in the toolbar, so everyone can discover them. The per-model settings can now be accessed both when working from the recommended and the custom print settings mode. + +*Specify network printer. +When connected to an Ultimaker Connect group of multiple printers, Ultimaker Cura once again shows a pop-up to select a designated printer for your printjob. This functionality had been disabled in the last version to ensure reliability when printing remotely. + +*Performance improvements. +Various tweaks under the hood for a snappier, more responsive interface. This improvement is most noticeable when switching extruders, print profiles, hovering over tooltips and when scrolling through the print settings list. + +*SDK version increment. +The changes made in version 4.4 (mainly for intents but also other things) are so thorough that we needed to do a major increment of the SDK version. Contributors – please update your packages! + +*Pause at height message. +A setting has been added to the pause at height script that displays a custom message on screen. This can be used to give instructions to operators to perform an action during the pause, e.g. ‘Place 626 bearings in slots now’. + +*Restore window preference. +https://github.com/fieldOfView has contributed a new preference around restoring the previous window position/size to the last used position/size on start up. This would be a workaround for those setups where starting Ultimaker Cura on a secondary screen will prevent it from working. + +*Group Linux instances. +https://github.com/MatthewCroughan has contributed a fix so that multiple instances of Ultimaker Cura get grouped in one application group in Gnome (the Linux front-end). It adds a bit of metadata to the .desktop file so that the windows can be grouped. + +* Known bugs +Cura not starting on Windows 10. Some users started reporting that Ultimaker Cura 4.3 and higher did not start properly, fur unknown reasons. We have implemented some code to get a better understanding of the issue, but we have not been able to fix it just yet. +As a quick fix: Go to the install path, by default “C:\Program Files\Ultimaker Cura 4.4”. Right click Cura.exe and select ‘properties’. Click the ‘compatibility’ tab and select “Run This Program in Compatibility Mode For: Windows 8”. If this does not fix your issue, please contact your service provider. + +* Minor improvements + - Reweighting stages. + - Small plug-in system improvements + - Add RetractContinue post-processing script by https://github.com/thopiekar + - Add DisplayRemainingTimeOnLCD post-processing script by https://github.com/iLyngklip + - Thickness of the very bottom layer + +* Updated third party printers + - Strateo3D. https://github.com/KOUBeMT has updated the machine profile for Strateo3D. + - Key3D Tyro. https://github.com/DragonJe has created a definition, extruder, and profiles for the Key3D Tyro. + - Prusa i3 MK3/MK3S printer. https://github.com/samirabaza has contributed the latest definition for Prusa i3 MK3/MK3s made by Prusa Research with a minor modification to fit in Prusa folder under "add printer". + - Hellbot printer. https://github.com/F-Fischer has contributed a machine profile for the Hellbot printer. + - HMS434 update by https://github.com/maukcc + - Add CR-10 MAX and Ender-5 plus by https://github.com/trouch + - Modify Cubicon device profile by https://github.com/HUNIBEST-HyVISION + - Add Cubicon printer definitions by https://github.com/HUNIBEST-HyVISION + +* Bug fixes + - Re-calculating retraction-safe area with every wall by https://github.com/smartavionics + - Fix Normals after Mirror Operation + - Crash when loading PJ with creality + - Per-object setting stacks checked for errors even if they are empty by https://github.com/smartavionics + - getAngleLeft gives wrong results when lines are colinear + - Lots of qml warnings regarding MaterialsTypeSelection.qml + - PR: Avoid unwanted travel with ironing by https://github.com/smartavionics + - PR: Remove all travel moves < 5um by https://github.com/smartavionics + - AMF files are mirrored + - Changes to Material diameter do not get applied + - Long string of text on profile names goes through borders + - CURA 4.3 - Crash when connecting networked Ultimaker S5 + - Layer slider falls behind action panel, on low resolution displays only by https://github.com/AMI3 + - Deleting profiles will not update the size of the drop-down menu + - Create / Update / Discard options are enabled when they should be greyed out + - Scroll bar for profile dropdown + - Can't change printhead X/Y Min/Max + - Syncing to a printer that has both nozzles disabled causes Cura to crash + - Project file open behavior preference is ignored when opening from command line. + - Create CFFF printer and change nozzle diameter will cause a crash + - Pause At Height resumes with wrong speed + - One-at-a-time ordering wrong + - Fix license extraction from CuraPackage + - Invalid firmware for UM2 update continues forever + - Infill inset too much with connected lines and thicker infill by https://github.com/smartavionics + - Reworked line polygon crossings by https://github.com/smartavionics + + +[4.3.0] +*Ultimaker S3. +This release includes a new profile for our latest S-line of 3D printers: the Ultimaker S3. Eagle-eyed beta testers may have noticed this extra printer profile in the beta release, too. Well done to those who spotted it. Learn more about the Ultimaker S3 by reading the blog on Ultimaker.com. + +*Even more 3D file formats. +This version is compatible with even more 3D file formats out-of-the-box, so you can integrate CAD software, 3D scanning software, and 3D modeling software into your workflow with ease. Natively open Collada, GLTF, OpenCTM, and PLY formats, to name a few. And don’t forget, downloading plugins from the Ultimaker Marketplace brings in support for many more. + +*Align faces to the build plate. +Orienting your models with the rotation tool or the lay flat tool can be a hassle with complex geometries. This new time-saving feature lets you select a face of your model to rest on the build plate, so you can get the orientation you need quickly and easily. Please note this is disabled in compatibility mode (and if your machine is running OpenGL 3.2 or lower). + +*Support infill/interface line directions. +Improve reliability with more precise control over certain aspects of your print. Choose the angle that support-infill and interfaces print at, thanks to a contribution from vgribinchuck. Input a set of angles you want lines generated at, and these will be placed sequentially throughout your 3D print. + +*Randomize infill start. +Randomize which infill line is printed first. This distributes strength across the model, preventing one segment becoming the weakest link, at the cost of an additional travel move. + +*Print small features slower. +Smartavionics has contributed a setting which recognizes small perimeters and reduces print speed in order to boost the reliability and accuracy of small printed features. This is especially useful for small perimeters such as printed holes, as they tend to get ripped away from the build plate easily due to their low contact area. + +*Easy selector for Z seam positions. +Z seams are now easier to position on your model, thanks to a contribution by trouch. A drop down selection box has been added to custom mode, giving you a list of presets to place the z seam on your model. + +*Colorblind assist theme. +Nubnubbud has added a new theme for colorblind users which makes more distinction between colors, such as the yellow/green line colors in the layer view. + +*DisplayFilenameAndLayerOnLCD script. +Some improvements for this post processing script from the community. N95JPL has contributed updates to offer a wider range of optional information. Adecastilho has contributed updates so that the layer count is displayed before the filename to prevent the layer number getting truncated in the event of long filename, as well as an option to start layer count at either 0 or 1. The ':' in the display string has also been removed as it is a GCODE command that splits the line into two different commands. + +*Peripheral information for output devices. +Architectural changes in Ultimaker Cura to allow display information about peripherals in the printer output device, so that I can use it to later on show that information in the Monitor stage plugin. + +*Quality changes on import. +Users can now import profiles that have been created on a different machine other than the active one. + +*Remove prime after coasting. +Reduce the visibility of the z seam when printing with coasting by preventing nozzle priming. + +*Map Material Station slot data. +The available configurations drop down will display information about a Ultimaker S5 Material Station if connected. Read more about the Ultimaker S5 Material Station on ultimaker.com + +*Manage Printer link. +Added a “Manage Printer” link in the monitor tab which takes you to Ultimaker Connect. + +*Improvement in code quality. +Improved code quality resulting in improved stability. + +* Bug fixes +- Uninstall in silent mode. Fixed an issue where a dialog displays when uninstalling in silent mode. +- Build Interface if Support is Present. In some cases, support could be pushed away by large support XY distance, but interfaces could be left on overhangs which leads to situation when interface is generated without support. This has been fixed. +- Install in silent mode. The bundled Arduino driver is signed by a certificate that's not trusted on Windows by default, so there was no way to suppress the prompt or to have the installer skip driver installation. This has been fixed. +- 3MF project printer connection not included. When loading a project file that was saved while a network connection was active, the network connection is not re-established. This has been fixed. +- Thin Walls broken. Fixed an error with thin walls being broken. +- Tray icon remaining. Fixed a bug where the tray icon would remain after closing the application. +- Marketplace text. Fixed an issue where Marketplace text is blurry on some screens +- Unsupported profile imports. Fixed an issue where exported profiles could not be reimported. +- Loading file message. Added visual feedback when loading files such as STLs +- Loading GCODE on disabled extruders. Fixed an issue where GCODE imported using multi-extrusion fails to load if an extruder is disabled. +- Support brim with concentric support pattern. Fixed an issue where support would be in mid-air. +- Reduced cloud logging. Logging has been reduced for cloud connections on unstable connections. +- Application menu extruder menu. Fixed an issue where changing the extruder via the application menu didn’t work. +- Tool handles move when rotating. Fixed an issue where rotate tool handles would change location when rotating. +- F5 reload. Fixed an issue where F5 doesn't reload GCODE. +- Application not starting before the splash screen. Fixed an issue where the application wouldn’t start before the splash window. +- Qt 5.13 crashes. Fixed an issue where the ShaderEffect crashes using Qt 5.13 +- Can’t select other materials in print setting tab. Fixed an issue where other materials couldn’t be selected using the print settings tab. +- Drop down to buildplate after resize. Models don’t drop down to the build plate if they are scaled down from ‘too large to fit’. +- Unsupported quality profiles. Fixed unsupported quality profiles appearing for 0.25 + 0.8 print core combinations. +- 'Arrange all models' for groups. Fixed an issue where arrange all models hangs for grouped models. +- Update Checker not working. Fixed this so that updates are visible if using a legacy version. +- Missing support brim. Fixed an issue where support brim was missing if platform adhesion set to ‘None’. +- Multiply non-normal mesh doesn't work. Fixed instances where processes stopped and messages would hang. +- Settings not updating in GUI with inheritance. Fixed settings not updating GUI with inheritance. +- Prevent 'generic'-part in name of specific materials. Introduced checks for ‘generic’ material types to help material categorization. +- Hide temperature settings. The "Default Print Temperature" setting is currently editable, but editing this setting can cause problems with temperatures later especially when you have it in your custom profile. We decided to hide this setting so users can no longer edit it in the later releases to avoid confusion. The "Default Build Plate Temperature" has also been hidden because it causes a similar issue. +- Add machine_heated_build_volume. Introduced a new machine_heated_build_volume machine-setting, which is set it to false by default, and only set it to true for the Ultimaker S5. Users can alter their own definition if they do have a heated build volume. +- Z-hops on first layer. First move other start GCODE not z-hopped. Contributed by sailorgreg. +- Preserve extruder-only moves in post stretch script. Contributed by sgtnoodle. +- “Print via Cloud” is no longer possible without an Internet connection +- Monitor tab no longer sometimes shows incorrect printer name or type +- Long print job names are no longer overlapping other text in the monitor tab +- “Connected to Cloud” pop-up now only displays when the currently selected printer is connected to Ultimaker cloud. +- Monitor tab is no longer greyed out when idle. + +*Third-party printer definitions +New machine definitions added for: +- IMADE3D Jellybox. Contributed by filipgoc for IMADE3D Jellybox printers, which adds JellyBOX 2 printer and revises settings of JellyBOX Original. +- Vertex Nano. Contributed by velbn +- Felix Pro 2. Contributed by pnks +- JGAurora A35. Contributed by pinchies. +- eMotionTech Strateo3D. Contributed by KOUBeMT. +- NWA3D A31. Contributed by DragonJe. + +[4.2.0] +*Orthographic view. +When preparing prints, professional users wanted more control over the 3D view type, so this version introduces an orthographic view, which is the same view type used by most professional CAD software packages. Find the orthographic view in View > Camera view > Orthographic, and compare the dimensions of your model to your CAD design with ease. + +*Object list. +Easily identify corresponding filenames and models with this new popup list. Click a model in the viewport and its filename will highlight, or click a filename in the list and the corresponding model will highlight. The open or hidden state of the list will persist between sessions. How convenient. + +*Print previews. +Some improvements have been made to print previews displayed in the monitor tab, Ultimaker Connect, or the Ultimaker S5 interface. In some instances, previews were clipped at the bottom or side, and sometimes models outside of the build plate area were visible. This is all fixed now. + +*AMF file compatibility. +Ultimaker Cura now supports AMF (Additive manufacturing file format) files out-of-the-box, thanks to an AMF file reader contributed by fieldOfView. + +*Slice button delay. +After clicking ‘Slice’, a lack of response could lead to frustrated buttonclicking. This version changes the button text to read ‘Processing’ during any pre-slicing delay. + +*Layer view line type. +The line type color scheme in the layer view has been tweaked with new colors for infill and support interfaces so that they can be distinguished better. + +*Nozzle switch prime distance. +Certain materials “ooze” more than others during retraction and long moves. Vgribinchuk has contributed a new setting that lets you finetune the restart distance, so that the full extrusion width is achieved when resuming a print. + +*Smart Z seam. +A new option to increase the aesthetic quality of your prints has been added to custom mode, under Z seam settings. Smart Z seam works by analyzing your model’s geometry and automatically choosing when to hide or expose the seam, so that visible seams on outer walls are kept to a minimum. + +*Separate Z axis movements. +Z axis movement handling has been improved to reduce the chance of print head collisions with prints. + +*Flow per feature. +You can now adjust material flow for specific features of your print, such as walls, infill, support, prime towers, and adhesion. This allows line spacing to be controlled separately from flow settings. + +*Merge infill lines. +We did some finetuning of the CuraEngine to improve print quality by filling thin infill areas more precisely and efficiently, and reducing movements that caused excessive gantry vibration. + +*Z hop speed. +The Z hop speed for printers with no specific speed value would default to ‘299792458000’ (light speed!) The new Z hop speed setting ensures that all Z hops are performed at a more sensible speed, which you can control. + +*Support tower diameter. +The ‘Minimum diameter’ setting for support towers has been renamed to ‘Maximum Tower-Supported Diameter’, which is more accurate and more specific because it mentions towers. + +*Square prime towers. +Circular prime towers are now the default option. Square prime towers have been eradicated forever. + +*Third-party printer order. +The ‘add printer’ menu now includes third-party printers that are ordered by manufacturer, so that specific machines can be found easily. Printer definitions. New machine definitions added for: +- Anet A6 contributed by markbernard +- Stereotech ST320 and START contributed by frylock34 +- Erzay3D contributed by Robokinetics +- FL Sun QQ contributed by curso007 +- GeeTech A30 contributed by curso007 + +*Creawsome mod. +This version has pulled the Creawsome mod, made by trouch, which adds a lot of print profiles for Creality printers. It includes definitions for Creality CR10 Mini, CR10s, CR10s Pro, CR20, CR20 Pro, Ender 2, Ender 4 and Ender 5, and updates the definitions for CR10, CR10s4, CR10s5 and Ender3. The CRX is untouched. Pull requests are now submitted that merge the mod into mainline Cura. + +* Bug fixes +- Noto Sans. Noto Sans was introduced as the default font in Ultimaker Cura some versions ago, but until now it wouldn’t render properly in the application unless already installed on your computer. This release forces the application to render Noto Sans even when it’s not installed as a font on your computer. Fun fact: Ultimaker recently rebranded, and we made Noto Sans our corporate font as well. +- Reslice with per-model settings. When slicing a model with per-model settings, a change of one of the per model settings would not trigger a reslice. This has been fixed. Serial port interruptions. This version adds a way to stop serial connections if you add command line parameters. +- Print one-at-a-time blob. In print-one-at-a-time mode, prime blobs could cause obstructions and cause prints to fail. This has been fixed. +- Prime tower brim overlap fix. Fixed an issue where models on the build plate could overlap with brims of other models. +- Wrong printer name. Fixed an issue where Ultimaker 3D printers that are synchronized over the network would display ‘Extruder 1’ in place of the printer’s hostname. +- Unnecessary travel at print start. Fixed an issue where printing without a prime blob would cause the print head to make a 10 mm travel move for no reason. +- Stair step height. This version fixes support stair step height, which influences the adhesion between the model and support printed on top (supports everywhere). For now, this bug has had no influence on PVA supported prints. + +[4.1.0] +*Draggable settings panels +There was a lot of feedback from the 4.0 release about the collapsible settings panels. Based on this feedback, we decided to make them completely draggable. The print settings panel (prepare stage) and the color scheme panel (preview stage) can now be dragged and positioned anywhere in the 3D viewer. A double click of the header will reset each to their default position. + +*Updated onboarding flow. +The onboarding flow on first startup has been updated with a look and feel more in line with the new interface. A series of setup steps will be shown, including Welcome, User agreement, Change log, the option to add a (networked) printer, and the option to sign up/sign in with an Ultimaker account. + +*Add printer menu. +Various updates in the ‘Add printer menu’. The machine settings menu has been updated in line with the new look and feel of the interface, and it's now possible to directly add machines from discovered network printers. + +*Expert settings visibility. +Previously, new settings weren't displayed in the expert preset even though they were expert-level settings. The latest features (e.g. Prime tower brim) are now included in the expert preset, for easy access. + +*Experimental print profile indicator. +When an experimental print profile is activated, the settings panel header will now display an "Experimental" tag. + +*Printing guidelines. +More information about how to print advanced materials can be quickly and easily accessed via the interface. When a material is chosen in the configuration selector, an icon will appear next to it, which when clicked will direct the user to a 'Printing Guidelines' page specified by the print profile supplier. + +*Increased rendering speed. +Rendering speed improvements that should be quite noticeable with multiple objects on the build plate. + +*Layer change script. +This new post-processing script injects custom Gcode on a layer change, so that manual commands can be defined, e.g. park the print head. Contributed by wporter82. https://github.com/wporter82 + +*Prime tower brim. +Prime towers might need the extra adhesion of a brim even when the model doesn’t, so an option for a prime tower to print with a brim independently of the model has been added. This setting is available when the adhesion type is set to 'None', 'Skirt' or 'Brim', and the prime tower is enabled. Currently this option doesn’t work with rafts. + +*Prime tower Gcode comments. +Gcode now contains comments to indicate when a prime tower is printed, like so: {code};TYPE:PRIME-TOWER{code} + +*Maximum deviation setting. +Previously, the maximum deviation was hard-coded in CuraEngine to be half of the maximum resolution. A new setting has been added that sets the maximum allowed deviation from the original polygon when reducing model resolution. If line segments are shorter than the maximum resolution, they are removed, unless this introduces a deviation greater than the maximum deviation. + +*Gyroid support. +Smartavionics has contributed a new option for a gyroid support pattern, similar to his gyroid infill contribution. A gyroid pattern is relatively efficient with material, so gyroid patterns permeable to water can dissolve faster. It’s also easier to pull gyroid structures off your model with pliers compared to some other support patterns. https://github.com/smartavionics + +*Purchase materials. +The Marketplace now includes a direct link to a site where users can buy specific materials to work with the corresponding print profile. The link is specified by the print profile supplier through the contributor portal. + +*Marketplace notifications. +When a plugin or print profile in the Marketplace has updates, a badge notification will appear over the Marketplace button and installed packages tab, prompting you to update. + +* New third-party definitions: +- NWA3D A5. Contributed by DragonJe. https://github.com/DragonJe +- Anycubic Chiron. Contributed by BluefireXD. https://github.com/BluefireXD +- Alfawise u30. Contributed by NicolasNSSM. https://github.com/NicolasNSSM +- Cubicon. Contributed by Hyvision. https://github.com/Hyvision +- Wanhao Duplicator 9. Contributed by matshch. https://github.com/matshch +- Creality 3D-X. Contributed by steverc1572 https://github.com/steverc1572 +- Z-Bolt. Contributed by alexkv. https://github.com/alexkv +- TiZYX Evy. Contributed by ValentinPitre. https://github.com/ValentinPitre +- FLSUN QQ. Contributed by ranfahrer. https://github.com/radfahrer +- Structur3D Silicone. Contributed by afinkle. https://github.com/afinkle +- TiZYX Evy Dual. Contributed by ValentinPitre. https://github.com/ValentinPitre + +*Bug fixes: +- Fixed an issue where the application crashed when opening the Ultimaker Marketplace after being logged in for more than 10 minutes. This was due to an expired token when checking network requests. +- For PLA-PLA support combinations, the horizontal expansion value has changed from 0.2 to 0 by default. This fixes an issue where unnecessary support is generated. The default value for PVA remains the same. +- Fixed an issue where choosing to "Update Existing" profile during project file loading did not overwrite the current settings with what was in the project file. +- Removed the GFF and CFF materials from this version onwards. These materials are intended only for testing and are incompatible with the Ultimaker 2+ +- Fixed an issue where the maximum resolution setting removed more vertices than necessary. +- Improved gyroid infill to stop very small (less than 10 uM) line segments being created when the gyroid infill lines are connected, increasing print consistency and reliability. Contributed by smartavionics https://github.com/smartavionics +- Previously, disabling build plate adhesion would also disable support brim settings. A support brim can now be enabled independently of build plate adhesion. +- Improved combing moves over thin model areas. Contributed by smartavionics https://github.com/smartavionics +- Fixed an issue where the printer selector panel text would exceed the boundaries of popups in languages other than English. +- Removed the ability to create print profiles with duplicate names in the print profile manager. Print profiles with the equal names would eventually lead to crashes or undefined behavior. +- Fixed an issue where the application would not remember the previous save path after saving again in the same session. +- Older machines running Mac OS X don't always support OpenGL 4.0+. For better performance the software can now detect if a machine doesn’t support it, and use OpenGL 2.0 instead. Contributed by fieldOfview. https://github.com/fieldofview +- Fixed an issue where the application would crash when selecting the support eraser tool. +- Fixed an issue where Z seams didn’t snap to the sharpest corner. +- Fixed issues where prints would have imperfections and on vertical surfaces. + +[4.0.0] +*Updated user interface +Ultimaker Cura is a very powerful tool with many features to support users’ needs. In the new UI, we present these features in a better, more intuitive way based on the workflow of our users. The Marketplace and user account control have been integrated into the main interface to easily access material profiles and plugins. Three stages are shown in the header to give a clear guidance of the flow. The stage menu is populated with collapsible panels that allow users to focus on the 3D view when needed, while still showing important information at the same time, such as slicing configuration and settings. Users can now easily go to the preview stage to examine the layer view after slicing the model, which previously was less obvious or hidden. The new UI also creates more distinction between recommended and custom mode. Novice users or users who are not interested in all the settings can easily prepare a file, relying on the strength of expert-configured print profiles. Experienced users who want greater control can configure over 300 settings to their needs. + +*Redesigned "Add Printer" dialog +Updated one of the first dialogs a new user is presented with. The layout is loosely modeled on the layout of the Ultimaker 3/Ultimaker S5 "Connect to Network" dialog, and adds some instructions and intention to the dialog. Contributed by fieldOfView. + +*Updated custom mode panel +Based on feedback from 4.0 beta, the custom mode panel is now resizable to make more settings visible. The set position will persist between sessions. + +*Monitor tab +Updated the monitor tab interface for better alignment with Cura Connect interface. + +*Remote printing +Use your Ultimaker S5 printer with an Ultimaker account to send and monitor print jobs from outside your local network. Requires firmware 5.2 (coming soon). + +*User ratings for plugins +With an Ultimaker account, users can now give feedback on their experience by rating their favourite plugins. + +*Integrated backups +‘Cura backups’ has been integrated into Ultimaker Cura and can be found in the ‘extensions’ menu. With this feature, users can use their Ultimaker account to backup their Ultimaker Cura configurations to the cloud for easy, convenient retrieval. + +*Plugin versioning +Newer plug-ins can't load in older versions if they use newer features, while old plug-ins may still load in newer versions. + +*LAN and cloud printer icons +Users can now quickly see if their printer is network or cloud enabled with new icons. + +*Improved UI speed +This version switches faster between extruders and printers. Your mileage may vary depending on your system specifications. + +*Floats precision +No settings in Ultimaker Cura require more than three digits of precision, so floats in setting input fields have been limited to three digits only. Contributed by fieldOfView. + +*Minimum support area +This feature allows set minimum area size for support and support interface polygons. Polygons which area are smaller than set value will not be generated. Contributed by vgribinchuk/Desktop Metal. + +*Lazy Tree Support calculation +In previous versions, 95% of Tree Support’s computation time was used to calculate the collision volumes to make sure that the branches avoid collisions with the meshes. Now it calculates these volumes only when necessary, reducing the computation time. Contributed by bjude. + +*CPE and CPE+ comb retractions +Changed all CPE and CPE+ profiles to travel up to 50 mm without retraction, decreasing blobs caused by combing long distances. + +*Marketplace improvements +Added optimizations to show a support site instead of an email address, increased the number of lines that are shown for the description, and show a 'website' link so people can order material directly. + +*Arduino drivers silent install +Previous versions stopped silent installation because the Arduino drivers packaged with Cura are not signed. Arduino drivers are now skipped when performing a silent install. + +*New third-party definitions +- Wanhao. Updated printer profiles to use new travel_speed macro (Contributed by forkineye). +- JGAurora A1, A5 and Z-603S (Contributed by pinchies). +- Alfawise U20 (Contributed by pinchies). +- Cocoon Create ModelMaker (Contributed by pinchies). +- Ender-3. Updates to the printer definition (Contributed by stelgenhof). + +*Bug fixes +- Fixed an issue which prevented slicing when per extruder settings were changed with a disabled extruder. +- Improved handling of non-Ultimaker network connected printers within Ultimaker Cura. Contributed by fieldOfView +- Fixed an issue where printing with the second extruder only would retract material unnecessarily. +- Fixed an issue where outdated plugins remained partially activated. +- Fixed an issue where combing was not working when tweaking Retraction minimum travel. +- Fixed an oversized print head collision zone when using print one-at-a-time mode. +- Due to inaccuracy of floats in very large prints, the position is reset again several times using "G92 E0" commands. +- Improved update checker text for better readability. +- Updated the implementation of 3MF in Ultimaker Cura for better consistency with 3MF consortium specifications. +- Removed all final and initial print temperature offsets, and increased first layer print temperature to fix under-extrusion problems. +- Holding shift and rotating a model on its axis for fine-grained rotations would sometimes pan the camera. This has now been fixed. +- Added file type associations for .gcode and .g extensions. +- Marked some more profiles as experimental. +- Fixed an issue where duplicated PLA with a different label would replace the original PLA entry. +- Updated which profile new materials are based when you create a brand new material. Contributed by fieldOfView. +- Fixed adhesion type errors on startup. +- Fixed an issue where system tray icons would remain when Ultimaker Cura is closed until mouse-over. +- Added extra tooltip to give extra information about start/end g-codes. +- Fixed an issue where clicking 'Create Account' would go to login instead of sign-up. +- Fixed an issue where the legacy profile importer would generate corrupt profiles. +- Fixed an issue where Ultimaker Cura could crash on start-up during the upgrading of your configuration to the newest version for some people. +- Fixed an issue where Ultimaker Cura would crash after downloading plugin from Marketplace. +- Ignores plugins folder when checking files for version upgrade. Start-up is now much faster if you've installed a lot of plugins or have used many versions of Ultimaker Cura. +- Fixed an issue where the firmware checker shows up when there is no internet connection. +- Fixed an issue where settings could not be made visible again after hiding all settings. +- Fixed false configuration error for CC Red 0.6 core after a version upgrade. +- Fixed an issue where a warning is issued when selecting a printer with no material loaded. The extruder will now be disabled instead. + [3.6.0] *Gyroid infill New infill pattern with enhanced strength properties. Gyroid infill is one of the strongest infill types for a given weight, has isotropic properties, and prints relatively fast with reduced material use and a fully connected part interior. Note: Slicing time can increase up to 40 seconds or more, depending on the model. Contributed by smartavionics. diff --git a/resources/themes/cura-dark-colorblind/icons/sign_in_to_cloud.svg b/resources/themes/cura-dark-colorblind/icons/sign_in_to_cloud.svg new file mode 100644 index 0000000000..09ba300b6a --- /dev/null +++ b/resources/themes/cura-dark-colorblind/icons/sign_in_to_cloud.svg @@ -0,0 +1,16 @@ + + + + Group-cloud Copy + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-dark-colorblind/theme.json b/resources/themes/cura-dark-colorblind/theme.json new file mode 100644 index 0000000000..9559101d24 --- /dev/null +++ b/resources/themes/cura-dark-colorblind/theme.json @@ -0,0 +1,28 @@ +{ + "metadata": { + "name": "Colorblind Assist Dark", + "inherits": "cura-dark" + }, + + "colors": { + "x_axis": [212, 0, 0, 255], + "y_axis": [64, 64, 255, 255], + + "model_default": [156, 201, 36, 255], + "model_overhang": [200, 0, 255, 255], + + + "xray": [26, 26, 62, 255], + "xray_error": [255, 0, 0, 255], + + "layerview_inset_0": [255, 64, 0, 255], + "layerview_inset_x": [0, 156, 128, 255], + "layerview_skin": [255, 255, 86, 255], + "layerview_support": [255, 255, 0, 255], + + "layerview_infill": [0, 255, 255, 255], + "layerview_support_infill": [0, 200, 200, 255], + + "layerview_move_retraction": [0, 100, 255, 255] + } +} diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index 41033e7e75..282004c3a9 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -88,14 +88,14 @@ "action_button": [39, 44, 48, 255], "action_button_text": [255, 255, 255, 200], "action_button_border": [255, 255, 255, 30], - "action_button_hovered": [39, 44, 48, 255], + "action_button_hovered": [79, 85, 89, 255], "action_button_hovered_text": [255, 255, 255, 255], "action_button_hovered_border": [255, 255, 255, 30], "action_button_active": [39, 44, 48, 30], "action_button_active_text": [255, 255, 255, 255], "action_button_active_border": [255, 255, 255, 100], - "action_button_disabled": [39, 44, 48, 255], - "action_button_disabled_text": [255, 255, 255, 80], + "action_button_disabled": [19, 24, 28, 255], + "action_button_disabled_text": [200, 200, 200, 80], "action_button_disabled_border": [255, 255, 255, 30], "scrollbar_background": [39, 44, 48, 0], @@ -193,19 +193,20 @@ "xray": [26, 26, 62, 255], "xray_error": [255, 0, 0, 255], - "layerview_ghost": [32, 32, 32, 96], - "layerview_none": [255, 255, 255, 255], - "layerview_inset_0": [255, 0, 0, 255], - "layerview_inset_x": [0, 255, 0, 255], - "layerview_skin": [255, 255, 0, 255], - "layerview_support": [0, 255, 255, 255], - "layerview_skirt": [0, 255, 255, 255], - "layerview_infill": [255, 192, 0, 255], - "layerview_support_infill": [0, 255, 255, 255], - "layerview_move_combing": [0, 0, 255, 255], - "layerview_move_retraction": [128, 128, 255, 255], - "layerview_support_interface": [64, 192, 255, 255], - "layerview_nozzle": [181, 166, 66, 120], + "layerview_ghost": [31, 31, 31, 95], + "layerview_none": [255, 255, 255, 255], + "layerview_inset_0": [255, 0, 0, 255], + "layerview_inset_x": [0, 255, 0, 255], + "layerview_skin": [255, 255, 0, 255], + "layerview_support": [0, 255, 255, 255], + "layerview_skirt": [0, 255, 255, 255], + "layerview_infill": [255, 127, 0, 255], + "layerview_support_infill": [0, 255, 255, 255], + "layerview_move_combing": [0, 0, 255, 255], + "layerview_move_retraction": [128, 127, 255, 255], + "layerview_support_interface": [63, 127, 255, 255], + "layerview_prime_tower": [0, 255, 255, 255], + "layerview_nozzle": [181, 166, 66, 50], "material_compatibility_warning": [255, 255, 255, 255], @@ -214,7 +215,6 @@ "toolbox_header_button_text_active": [255, 255, 255, 255], "toolbox_header_button_text_inactive": [128, 128, 128, 255], - "toolbox_header_button_text_hovered": [255, 255, 255, 255], "monitor_printer_family_tag": [86, 86, 106, 255], "monitor_text_primary": [229, 229, 229, 255], @@ -222,6 +222,7 @@ "monitor_text_link": [103, 160, 252, 255], "monitor_icon_primary": [229, 229, 229, 255], "monitor_icon_accent": [51, 53, 54, 255], + "monitor_icon_disabled": [102, 102, 102, 255], "monitor_secondary_button_hover": [80, 80, 80, 255], "monitor_secondary_button": [92, 92, 92, 255], diff --git a/resources/themes/cura-light-colorblind/icons/sign_in_to_cloud.svg b/resources/themes/cura-light-colorblind/icons/sign_in_to_cloud.svg new file mode 100644 index 0000000000..09ba300b6a --- /dev/null +++ b/resources/themes/cura-light-colorblind/icons/sign_in_to_cloud.svg @@ -0,0 +1,16 @@ + + + + Group-cloud Copy + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light-colorblind/theme.json b/resources/themes/cura-light-colorblind/theme.json new file mode 100644 index 0000000000..10349acbfd --- /dev/null +++ b/resources/themes/cura-light-colorblind/theme.json @@ -0,0 +1,29 @@ +{ + "metadata": { + "name": "Colorblind Assist Light", + "inherits": "cura-light" + }, + + "colors": { + + "x_axis": [200, 0, 0, 255], + "y_axis": [64, 64, 255, 255], + "model_default": [156, 201, 36, 255], + "model_overhang": [200, 0, 255, 255], + + "model_selection_outline": [12, 169, 227, 255], + + "xray": [26, 26, 62, 255], + "xray_error": [255, 0, 0, 255], + + "layerview_inset_0": [255, 64, 0, 255], + "layerview_inset_x": [0, 156, 128, 255], + "layerview_skin": [255, 255, 86, 255], + "layerview_support": [255, 255, 0, 255], + + "layerview_infill": [0, 255, 255, 255], + "layerview_support_infill": [0, 200, 200, 255], + + "layerview_move_retraction": [0, 100, 255, 255] + } +} diff --git a/resources/themes/cura-light/icons/pos_modify_dont_support_overlap.svg b/resources/themes/cura-light/icons/pos_modify_dont_support_overlap.svg new file mode 100644 index 0000000000..124e95f558 --- /dev/null +++ b/resources/themes/cura-light/icons/pos_modify_dont_support_overlap.svg @@ -0,0 +1,26 @@ + + + + pms_modify_dont_support_overlap + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/pos_modify_overlaps.svg b/resources/themes/cura-light/icons/pos_modify_overlaps.svg new file mode 100644 index 0000000000..a664e820a6 --- /dev/null +++ b/resources/themes/cura-light/icons/pos_modify_overlaps.svg @@ -0,0 +1,17 @@ + + + + pms_modify_overlaps + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/pos_normal.svg b/resources/themes/cura-light/icons/pos_normal.svg new file mode 100644 index 0000000000..8a49ef3a00 --- /dev/null +++ b/resources/themes/cura-light/icons/pos_normal.svg @@ -0,0 +1,9 @@ + + + + pms_Normal + Created with Sketch. + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/pos_print_as_support.svg b/resources/themes/cura-light/icons/pos_print_as_support.svg new file mode 100644 index 0000000000..3562ca1fe0 --- /dev/null +++ b/resources/themes/cura-light/icons/pos_print_as_support.svg @@ -0,0 +1,14 @@ + + + + pms_printassupport + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/rotate_face_layflat.svg b/resources/themes/cura-light/icons/rotate_face_layflat.svg new file mode 100644 index 0000000000..261a624cf0 --- /dev/null +++ b/resources/themes/cura-light/icons/rotate_face_layflat.svg @@ -0,0 +1,12 @@ + + + + select face lay flat + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/images/first_run_machine_types.svg b/resources/themes/cura-light/images/first_run_machine_types.svg new file mode 100644 index 0000000000..630fc426b6 --- /dev/null +++ b/resources/themes/cura-light/images/first_run_machine_types.svg @@ -0,0 +1,33 @@ + + + + Machine types + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/images/first_run_material_usage.svg b/resources/themes/cura-light/images/first_run_material_usage.svg new file mode 100644 index 0000000000..19be250c88 --- /dev/null +++ b/resources/themes/cura-light/images/first_run_material_usage.svg @@ -0,0 +1,67 @@ + + + + material usage + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/images/first_run_number_slices.svg b/resources/themes/cura-light/images/first_run_number_slices.svg new file mode 100644 index 0000000000..e8a7124ebc --- /dev/null +++ b/resources/themes/cura-light/images/first_run_number_slices.svg @@ -0,0 +1,31 @@ + + + + number of slices + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/images/first_run_print_settings.svg b/resources/themes/cura-light/images/first_run_print_settings.svg new file mode 100644 index 0000000000..21ed4030e2 --- /dev/null +++ b/resources/themes/cura-light/images/first_run_print_settings.svg @@ -0,0 +1,29 @@ + + + + Print settings + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/images/first_run_ultimaker_cloud.svg b/resources/themes/cura-light/images/first_run_ultimaker_cloud.svg new file mode 100644 index 0000000000..1e9b313862 --- /dev/null +++ b/resources/themes/cura-light/images/first_run_ultimaker_cloud.svg @@ -0,0 +1,12 @@ + + + + Group-cloud + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/images/first_run_welcome_cura.svg b/resources/themes/cura-light/images/first_run_welcome_cura.svg new file mode 100644 index 0000000000..fddb073c82 --- /dev/null +++ b/resources/themes/cura-light/images/first_run_welcome_cura.svg @@ -0,0 +1,11 @@ + + + + cura + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/images/logo.svg b/resources/themes/cura-light/images/logo.svg index 814b157e2a..611840e248 100644 --- a/resources/themes/cura-light/images/logo.svg +++ b/resources/themes/cura-light/images/logo.svg @@ -1,37 +1,18 @@ - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 121f604362..daf06ac6af 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -103,33 +103,29 @@ QtObject // This property will be back-propagated when the width of the label is calculated property var buttonWidth: 0 - background: Item + background: Rectangle { + id: backgroundRectangle implicitHeight: control.height implicitWidth: buttonWidth - Rectangle - { - id: buttonFace - implicitHeight: parent.height - implicitWidth: parent.width - radius: UM.Theme.getSize("action_button_radius").width + radius: UM.Theme.getSize("action_button_radius").width - color: + color: + { + if (control.checked) { - if (control.checked) + return UM.Theme.getColor("main_window_header_button_background_active") + } + else + { + if (control.hovered) { - return UM.Theme.getColor("main_window_header_button_background_active") - } - else - { - if (control.hovered) - { - return UM.Theme.getColor("main_window_header_button_background_hovered") - } - return UM.Theme.getColor("main_window_header_button_background_inactive") + return UM.Theme.getColor("main_window_header_button_background_hovered") } + return UM.Theme.getColor("main_window_header_button_background_inactive") } } + } label: Item @@ -168,6 +164,8 @@ QtObject buttonWidth = width } } + + } } @@ -243,7 +241,7 @@ QtObject Behavior on color { ColorAnimation { duration: 50; } } border.width: (control.hasOwnProperty("needBorder") && control.needBorder) ? Theme.getSize("default_lining").width : 0 - border.color: Theme.getColor("lining") + border.color: control.checked ? Theme.getColor("icon") : Theme.getColor("lining") } } @@ -398,73 +396,6 @@ QtObject } } - // Combobox with items with colored rectangles - property Component combobox_color: Component - { - - ComboBoxStyle - { - - background: Rectangle - { - color: !enabled ? UM.Theme.getColor("setting_control_disabled") : control._hovered ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") - border.width: UM.Theme.getSize("default_lining").width - border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control._hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") - radius: UM.Theme.getSize("setting_control_radius").width - } - - label: Item - { - Label - { - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_lining").width - anchors.right: swatch.left - anchors.rightMargin: UM.Theme.getSize("default_lining").width - anchors.verticalCenter: parent.verticalCenter - - text: control.currentText - font: UM.Theme.getFont("default") - color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text") - - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - UM.RecolorImage - { - id: swatch - height: Math.round(control.height / 2) - width: height - anchors.right: downArrow.left - anchors.verticalCenter: parent.verticalCenter - anchors.rightMargin: UM.Theme.getSize("default_margin").width - - sourceSize.width: width - sourceSize.height: height - source: UM.Theme.getIcon("extruder_button") - color: (control.color_override !== "") ? control.color_override : control.color - } - - UM.RecolorImage - { - id: downArrow - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2 - anchors.verticalCenter: parent.verticalCenter - - source: UM.Theme.getIcon("arrow_bottom") - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width + 5 * screenScaleFactor - sourceSize.height: width + 5 * screenScaleFactor - - color: UM.Theme.getColor("setting_control_button") - } - } - } - } - property Component checkbox: Component { CheckBoxStyle diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index efc16ecbca..e5009d8633 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -29,6 +29,11 @@ "weight": 63, "family": "Noto Sans" }, + "huge": { + "size": 1.8, + "weight": 50, + "family": "Noto Sans" + }, "medium": { "size": 1.16, "weight": 40, @@ -187,10 +192,16 @@ "action_panel_secondary": [27, 95, 202, 255], + "first_run_shadow": [50, 50, 50, 255], + "toolbar_background": [255, 255, 255, 255], + "notification_icon": [255, 0, 0, 255], + "printer_type_label_background": [228, 228, 242, 255], + "window_disabled_background": [0, 0, 0, 255], + "text": [25, 25, 25, 255], "text_detail": [174, 174, 174, 128], "text_link": [50, 130, 255, 255], @@ -361,18 +372,18 @@ "xray": [26, 26, 62, 255], "xray_error": [255, 0, 0, 255], - "layerview_ghost": [32, 32, 32, 96], + "layerview_ghost": [31, 31, 31, 95], "layerview_none": [255, 255, 255, 255], "layerview_inset_0": [255, 0, 0, 255], "layerview_inset_x": [0, 255, 0, 255], "layerview_skin": [255, 255, 0, 255], "layerview_support": [0, 255, 255, 255], "layerview_skirt": [0, 255, 255, 255], - "layerview_infill": [255, 192, 0, 255], + "layerview_infill": [255, 127, 0, 255], "layerview_support_infill": [0, 255, 255, 255], "layerview_move_combing": [0, 0, 255, 255], - "layerview_move_retraction": [128, 128, 255, 255], - "layerview_support_interface": [64, 192, 255, 255], + "layerview_move_retraction": [128, 127, 255, 255], + "layerview_support_interface": [63, 127, 255, 255], "layerview_prime_tower": [0, 255, 255, 255], "layerview_nozzle": [181, 166, 66, 50], @@ -382,9 +393,7 @@ "printer_config_matched": [50, 130, 255, 255], "printer_config_mismatch": [127, 127, 127, 255], - "toolbox_header_button_text_active": [0, 0, 0, 255], "toolbox_header_button_text_inactive": [0, 0, 0, 255], - "toolbox_header_button_text_hovered": [0, 0, 0, 255], "favorites_header_bar": [245, 245, 245, 255], "favorites_header_hover": [245, 245, 245, 255], @@ -398,6 +407,7 @@ "monitor_text_link": [50, 130, 255, 255], "monitor_icon_primary": [10, 8, 80, 255], "monitor_icon_accent": [255, 255, 255, 255], + "monitor_icon_disabled": [238, 238, 238, 255], "monitor_secondary_button_hover": [228, 228, 228, 255], "monitor_secondary_button": [240, 240, 240, 255], @@ -423,14 +433,17 @@ "monitor_skeleton_loading": [238, 238, 238, 255], "monitor_placeholder_image": [230, 230, 230, 255], "monitor_image_overlay": [0, 0, 0, 255], - "monitor_shadow": [220, 220, 220, 255], + "monitor_shadow": [200, 200, 200, 255], "monitor_carousel_dot": [216, 216, 216, 255], "monitor_carousel_dot_current": [119, 119, 119, 255] }, "sizes": { - "window_minimum_size": [100, 60], + "window_minimum_size": [80, 48], + "large_popup_dialog": [48, 40], + "popup_dialog": [40, 36], + "small_popup_dialog": [36, 12], "main_window_header": [0.0, 4.0], "main_window_header_button": [8, 2.35], @@ -473,7 +486,7 @@ "default_lining": [0.08, 0.08], "default_arrow": [0.8, 0.8], - "logo": [8, 1.75], + "logo": [16, 3.5], "wide_margin": [2.0, 2.0], "thick_margin": [1.71, 1.43], @@ -508,6 +521,8 @@ "action_button_icon": [1.0, 1.0], "action_button_radius": [0.15, 0.15], + "radio_button": [1.3, 1.3], + "small_button": [2, 2], "small_button_icon": [1.5, 1.5], @@ -532,7 +547,7 @@ "slider_groove": [0.5, 0.5], "slider_groove_radius": [0.15, 0.15], "slider_handle": [1.5, 1.5], - "slider_layerview_size": [1.0, 26.0], + "slider_layerview_size": [1.0, 34.0], "layerview_menu_size": [16.0, 4.0], "layerview_legend_size": [1.0, 1.0], @@ -551,6 +566,7 @@ "save_button_specs_icons": [1.4, 1.4], "job_specs_button": [2.7, 2.7], + "first_run_shadow_radius": [1.2, 1.2], "monitor_preheat_temperature_control": [4.5, 2.0], @@ -568,7 +584,7 @@ "jobspecs_line": [2.0, 2.0], - "objects_menu_size": [20, 40], + "objects_menu_size": [15, 15], "objects_menu_size_collapsed": [20, 17], "build_plate_selection_size": [15, 5], "objects_menu_button": [0.3, 2.7], @@ -578,10 +594,8 @@ "toolbox_thumbnail_large": [12.0, 10.0], "toolbox_footer": [1.0, 4.5], "toolbox_footer_button": [8.0, 2.5], - "toolbox_showcase_spacing": [1.0, 1.0], - "toolbox_header_tab": [8.0, 4.0], + "toolbox_header_tab": [12.0, 4.0], "toolbox_detail_header": [1.0, 14.0], - "toolbox_detail_tile": [1.0, 8.0], "toolbox_back_column": [6.0, 1.0], "toolbox_back_button": [6.0, 2.0], "toolbox_installed_tile": [1.0, 8.0], @@ -589,11 +603,12 @@ "toolbox_heading_label": [1.0, 3.8], "toolbox_header": [1.0, 4.0], "toolbox_header_highlight": [0.25, 0.25], - "toolbox_progress_bar": [8.0, 0.5], "toolbox_chart_row": [1.0, 2.0], "toolbox_action_button": [8.0, 2.5], "toolbox_loader": [2.0, 2.0], + "notification_icon": [1.5, 1.5], + "avatar_image": [6.8, 6.8], "monitor_config_override_box": [1.0, 14.0], @@ -606,6 +621,9 @@ "monitor_shadow_offset": [0.15, 0.15], "monitor_empty_state_offset": [5.6, 5.6], "monitor_empty_state_size": [35.0, 25.0], - "monitor_external_link_icon": [1.16, 1.16] + "monitor_external_link_icon": [1.16, 1.16], + "monitor_column": [18.0, 1.0], + "monitor_progress_bar": [16.5, 1.0], + "monitor_margin": [1.5, 1.5] } } diff --git a/resources/variants/Leapfrog_Bolt_Pro_Brass_0.4.inst.cfg b/resources/variants/Leapfrog_Bolt_Pro_Brass_0.4.inst.cfg new file mode 100644 index 0000000000..c428f9e2b9 --- /dev/null +++ b/resources/variants/Leapfrog_Bolt_Pro_Brass_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = Brass 0.4 +version = 4 +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/Leapfrog_Bolt_Pro_NozzleX_0.4.inst.cfg b/resources/variants/Leapfrog_Bolt_Pro_NozzleX_0.4.inst.cfg new file mode 100644 index 0000000000..6790b63189 --- /dev/null +++ b/resources/variants/Leapfrog_Bolt_Pro_NozzleX_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = NozzleX 0.4 +version = 4 +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/Mark2_for_Ultimaker2_0.25.inst.cfg b/resources/variants/Mark2_for_Ultimaker2_0.25.inst.cfg new file mode 100644 index 0000000000..420db71e6d --- /dev/null +++ b/resources/variants/Mark2_for_Ultimaker2_0.25.inst.cfg @@ -0,0 +1,19 @@ +[general] +name = 0.25 mm +version = 4 +definition = Mark2_for_Ultimaker2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +coasting_min_volume = 0.17 +coasting_volume = 0.1 +machine_nozzle_size = 0.25 +machine_nozzle_tip_outer_diameter = 0.8 +raft_airgap = 0.25 +speed_topbottom = =round(speed_print / 1.5, 1) +speed_wall = =round(speed_print / 1.2, 1) +speed_wall_0 = =1 if speed_wall < 5 else (speed_wall - 5) diff --git a/resources/variants/Mark2_for_Ultimaker2_0.4.inst.cfg b/resources/variants/Mark2_for_Ultimaker2_0.4.inst.cfg new file mode 100644 index 0000000000..e877bf0182 --- /dev/null +++ b/resources/variants/Mark2_for_Ultimaker2_0.4.inst.cfg @@ -0,0 +1,17 @@ +[general] +name = 0.4 mm +version = 4 +definition = Mark2_for_Ultimaker2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 +machine_nozzle_tip_outer_diameter = 1.05 +speed_wall = =round(speed_print / 1.25, 1) +speed_wall_0 = =max(speed_wall - 10, 1) +speed_topbottom = =round(speed_print / 2.25, 1) + diff --git a/resources/variants/Mark2_for_Ultimaker2_0.6.inst.cfg b/resources/variants/Mark2_for_Ultimaker2_0.6.inst.cfg new file mode 100644 index 0000000000..a641f94abd --- /dev/null +++ b/resources/variants/Mark2_for_Ultimaker2_0.6.inst.cfg @@ -0,0 +1,18 @@ +[general] +name = 0.6 mm +version = 4 +definition = Mark2_for_Ultimaker2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 +machine_nozzle_tip_outer_diameter = 1.25 +coasting_volume = 1.36 +speed_wall = =round(speed_print * 4 / 3, 1) +speed_wall_0 = =1 if speed_wall < 10 else (speed_wall - 10) +speed_topbottom = =round(speed_print / 2, 1) + diff --git a/resources/variants/Mark2_for_Ultimaker2_0.8.inst.cfg b/resources/variants/Mark2_for_Ultimaker2_0.8.inst.cfg new file mode 100644 index 0000000000..00b89de2a7 --- /dev/null +++ b/resources/variants/Mark2_for_Ultimaker2_0.8.inst.cfg @@ -0,0 +1,18 @@ +[general] +name = 0.8 mm +version = 4 +definition = Mark2_for_Ultimaker2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 +machine_nozzle_tip_outer_diameter = 1.35 +coasting_volume = 3.22 +speed_wall = =round(speed_print * 4 / 3, 1) +speed_wall_0 = =1 if speed_wall < 10 else (speed_wall - 10) +speed_topbottom = =round(speed_print / 2, 1) + diff --git a/resources/variants/cartesio_0.25.inst.cfg b/resources/variants/cartesio_0.25.inst.cfg index 24203fa0d3..13afb97261 100644 --- a/resources/variants/cartesio_0.25.inst.cfg +++ b/resources/variants/cartesio_0.25.inst.cfg @@ -5,7 +5,7 @@ definition = cartesio [metadata] author = Cartesio -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/cartesio_0.4.inst.cfg b/resources/variants/cartesio_0.4.inst.cfg index 6b980110b7..e975129722 100644 --- a/resources/variants/cartesio_0.4.inst.cfg +++ b/resources/variants/cartesio_0.4.inst.cfg @@ -5,7 +5,7 @@ definition = cartesio [metadata] author = Cartesio -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/cartesio_0.8.inst.cfg b/resources/variants/cartesio_0.8.inst.cfg index 62669929dc..0e3d1e8e8a 100644 --- a/resources/variants/cartesio_0.8.inst.cfg +++ b/resources/variants/cartesio_0.8.inst.cfg @@ -5,7 +5,7 @@ definition = cartesio [metadata] author = Cartesio -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/creality_base_0.2.inst.cfg b/resources/variants/creality_base_0.2.inst.cfg new file mode 100644 index 0000000000..024024b8b1 --- /dev/null +++ b/resources/variants/creality_base_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_base_0.3.inst.cfg b/resources/variants/creality_base_0.3.inst.cfg new file mode 100644 index 0000000000..ecee3b263d --- /dev/null +++ b/resources/variants/creality_base_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_base_0.4.inst.cfg b/resources/variants/creality_base_0.4.inst.cfg new file mode 100644 index 0000000000..80f98c72a9 --- /dev/null +++ b/resources/variants/creality_base_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_base_0.5.inst.cfg b/resources/variants/creality_base_0.5.inst.cfg new file mode 100644 index 0000000000..d7b497c3fd --- /dev/null +++ b/resources/variants/creality_base_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_base_0.6.inst.cfg b/resources/variants/creality_base_0.6.inst.cfg new file mode 100644 index 0000000000..9f2891a500 --- /dev/null +++ b/resources/variants/creality_base_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_base_0.8.inst.cfg b/resources/variants/creality_base_0.8.inst.cfg new file mode 100644 index 0000000000..83cfe29df9 --- /dev/null +++ b/resources/variants/creality_base_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_base_1.0.inst.cfg b/resources/variants/creality_base_1.0.inst.cfg new file mode 100644 index 0000000000..5f33a6f571 --- /dev/null +++ b/resources/variants/creality_base_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10_0.2.inst.cfg b/resources/variants/creality_cr10_0.2.inst.cfg new file mode 100644 index 0000000000..46a319ab06 --- /dev/null +++ b/resources/variants/creality_cr10_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10_0.3.inst.cfg b/resources/variants/creality_cr10_0.3.inst.cfg new file mode 100644 index 0000000000..6515e2cc36 --- /dev/null +++ b/resources/variants/creality_cr10_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10_0.4.inst.cfg b/resources/variants/creality_cr10_0.4.inst.cfg new file mode 100644 index 0000000000..5e3ce36692 --- /dev/null +++ b/resources/variants/creality_cr10_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10_0.5.inst.cfg b/resources/variants/creality_cr10_0.5.inst.cfg new file mode 100644 index 0000000000..0914780a54 --- /dev/null +++ b/resources/variants/creality_cr10_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10_0.6.inst.cfg b/resources/variants/creality_cr10_0.6.inst.cfg new file mode 100644 index 0000000000..2d0d42c518 --- /dev/null +++ b/resources/variants/creality_cr10_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10_0.8.inst.cfg b/resources/variants/creality_cr10_0.8.inst.cfg new file mode 100644 index 0000000000..73990c7862 --- /dev/null +++ b/resources/variants/creality_cr10_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10_1.0.inst.cfg b/resources/variants/creality_cr10_1.0.inst.cfg new file mode 100644 index 0000000000..6357a40498 --- /dev/null +++ b/resources/variants/creality_cr10_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10max_0.2.inst.cfg b/resources/variants/creality_cr10max_0.2.inst.cfg new file mode 100644 index 0000000000..6cc1be53da --- /dev/null +++ b/resources/variants/creality_cr10max_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10max_0.3.inst.cfg b/resources/variants/creality_cr10max_0.3.inst.cfg new file mode 100644 index 0000000000..8e1265f3ab --- /dev/null +++ b/resources/variants/creality_cr10max_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10max_0.4.inst.cfg b/resources/variants/creality_cr10max_0.4.inst.cfg new file mode 100644 index 0000000000..b00c8ba4b0 --- /dev/null +++ b/resources/variants/creality_cr10max_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10max_0.5.inst.cfg b/resources/variants/creality_cr10max_0.5.inst.cfg new file mode 100644 index 0000000000..c00fe00c5c --- /dev/null +++ b/resources/variants/creality_cr10max_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10max_0.6.inst.cfg b/resources/variants/creality_cr10max_0.6.inst.cfg new file mode 100644 index 0000000000..97393c357d --- /dev/null +++ b/resources/variants/creality_cr10max_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10max_0.8.inst.cfg b/resources/variants/creality_cr10max_0.8.inst.cfg new file mode 100644 index 0000000000..54a01e0973 --- /dev/null +++ b/resources/variants/creality_cr10max_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10max_1.0.inst.cfg b/resources/variants/creality_cr10max_1.0.inst.cfg new file mode 100644 index 0000000000..b291b9cd1c --- /dev/null +++ b/resources/variants/creality_cr10max_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10mini_0.2.inst.cfg b/resources/variants/creality_cr10mini_0.2.inst.cfg new file mode 100644 index 0000000000..21a8806881 --- /dev/null +++ b/resources/variants/creality_cr10mini_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10mini_0.3.inst.cfg b/resources/variants/creality_cr10mini_0.3.inst.cfg new file mode 100644 index 0000000000..00c079f21e --- /dev/null +++ b/resources/variants/creality_cr10mini_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10mini_0.4.inst.cfg b/resources/variants/creality_cr10mini_0.4.inst.cfg new file mode 100644 index 0000000000..69c9d9d09a --- /dev/null +++ b/resources/variants/creality_cr10mini_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10mini_0.5.inst.cfg b/resources/variants/creality_cr10mini_0.5.inst.cfg new file mode 100644 index 0000000000..763708080d --- /dev/null +++ b/resources/variants/creality_cr10mini_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10mini_0.6.inst.cfg b/resources/variants/creality_cr10mini_0.6.inst.cfg new file mode 100644 index 0000000000..6fcb2c06fc --- /dev/null +++ b/resources/variants/creality_cr10mini_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10mini_0.8.inst.cfg b/resources/variants/creality_cr10mini_0.8.inst.cfg new file mode 100644 index 0000000000..d5d3658738 --- /dev/null +++ b/resources/variants/creality_cr10mini_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10mini_1.0.inst.cfg b/resources/variants/creality_cr10mini_1.0.inst.cfg new file mode 100644 index 0000000000..008b7bc645 --- /dev/null +++ b/resources/variants/creality_cr10mini_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10s4_0.2.inst.cfg b/resources/variants/creality_cr10s4_0.2.inst.cfg new file mode 100644 index 0000000000..779b6133ab --- /dev/null +++ b/resources/variants/creality_cr10s4_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10s4_0.3.inst.cfg b/resources/variants/creality_cr10s4_0.3.inst.cfg new file mode 100644 index 0000000000..a244c09eba --- /dev/null +++ b/resources/variants/creality_cr10s4_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10s4_0.4.inst.cfg b/resources/variants/creality_cr10s4_0.4.inst.cfg new file mode 100644 index 0000000000..a92d4a3df4 --- /dev/null +++ b/resources/variants/creality_cr10s4_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10s4_0.5.inst.cfg b/resources/variants/creality_cr10s4_0.5.inst.cfg new file mode 100644 index 0000000000..0cc93cff6a --- /dev/null +++ b/resources/variants/creality_cr10s4_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10s4_0.6.inst.cfg b/resources/variants/creality_cr10s4_0.6.inst.cfg new file mode 100644 index 0000000000..b0a57972c4 --- /dev/null +++ b/resources/variants/creality_cr10s4_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10s4_0.8.inst.cfg b/resources/variants/creality_cr10s4_0.8.inst.cfg new file mode 100644 index 0000000000..83b19ba5cb --- /dev/null +++ b/resources/variants/creality_cr10s4_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10s4_1.0.inst.cfg b/resources/variants/creality_cr10s4_1.0.inst.cfg new file mode 100644 index 0000000000..0b852f22e1 --- /dev/null +++ b/resources/variants/creality_cr10s4_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10s5_0.2.inst.cfg b/resources/variants/creality_cr10s5_0.2.inst.cfg new file mode 100644 index 0000000000..8e300a1325 --- /dev/null +++ b/resources/variants/creality_cr10s5_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10s5_0.3.inst.cfg b/resources/variants/creality_cr10s5_0.3.inst.cfg new file mode 100644 index 0000000000..c710a9eefa --- /dev/null +++ b/resources/variants/creality_cr10s5_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10s5_0.4.inst.cfg b/resources/variants/creality_cr10s5_0.4.inst.cfg new file mode 100644 index 0000000000..3827335a8d --- /dev/null +++ b/resources/variants/creality_cr10s5_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10s5_0.5.inst.cfg b/resources/variants/creality_cr10s5_0.5.inst.cfg new file mode 100644 index 0000000000..8520799dfb --- /dev/null +++ b/resources/variants/creality_cr10s5_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10s5_0.6.inst.cfg b/resources/variants/creality_cr10s5_0.6.inst.cfg new file mode 100644 index 0000000000..c21827ffa7 --- /dev/null +++ b/resources/variants/creality_cr10s5_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10s5_0.8.inst.cfg b/resources/variants/creality_cr10s5_0.8.inst.cfg new file mode 100644 index 0000000000..e6676c9240 --- /dev/null +++ b/resources/variants/creality_cr10s5_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10s5_1.0.inst.cfg b/resources/variants/creality_cr10s5_1.0.inst.cfg new file mode 100644 index 0000000000..1c84c1117d --- /dev/null +++ b/resources/variants/creality_cr10s5_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10s_0.2.inst.cfg b/resources/variants/creality_cr10s_0.2.inst.cfg new file mode 100644 index 0000000000..aa01e71be6 --- /dev/null +++ b/resources/variants/creality_cr10s_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10s_0.3.inst.cfg b/resources/variants/creality_cr10s_0.3.inst.cfg new file mode 100644 index 0000000000..1ae25762ab --- /dev/null +++ b/resources/variants/creality_cr10s_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10s_0.4.inst.cfg b/resources/variants/creality_cr10s_0.4.inst.cfg new file mode 100644 index 0000000000..b72d53a8bc --- /dev/null +++ b/resources/variants/creality_cr10s_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10s_0.5.inst.cfg b/resources/variants/creality_cr10s_0.5.inst.cfg new file mode 100644 index 0000000000..98f222b229 --- /dev/null +++ b/resources/variants/creality_cr10s_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10s_0.6.inst.cfg b/resources/variants/creality_cr10s_0.6.inst.cfg new file mode 100644 index 0000000000..444a107666 --- /dev/null +++ b/resources/variants/creality_cr10s_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10s_0.8.inst.cfg b/resources/variants/creality_cr10s_0.8.inst.cfg new file mode 100644 index 0000000000..9d35763da5 --- /dev/null +++ b/resources/variants/creality_cr10s_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10s_1.0.inst.cfg b/resources/variants/creality_cr10s_1.0.inst.cfg new file mode 100644 index 0000000000..47b43b3222 --- /dev/null +++ b/resources/variants/creality_cr10s_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10spro_0.2.inst.cfg b/resources/variants/creality_cr10spro_0.2.inst.cfg new file mode 100644 index 0000000000..b0a4a3223d --- /dev/null +++ b/resources/variants/creality_cr10spro_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10spro_0.3.inst.cfg b/resources/variants/creality_cr10spro_0.3.inst.cfg new file mode 100644 index 0000000000..37a20a4455 --- /dev/null +++ b/resources/variants/creality_cr10spro_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10spro_0.4.inst.cfg b/resources/variants/creality_cr10spro_0.4.inst.cfg new file mode 100644 index 0000000000..760e9bcdd5 --- /dev/null +++ b/resources/variants/creality_cr10spro_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10spro_0.5.inst.cfg b/resources/variants/creality_cr10spro_0.5.inst.cfg new file mode 100644 index 0000000000..02b04babac --- /dev/null +++ b/resources/variants/creality_cr10spro_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10spro_0.6.inst.cfg b/resources/variants/creality_cr10spro_0.6.inst.cfg new file mode 100644 index 0000000000..ef7cb16379 --- /dev/null +++ b/resources/variants/creality_cr10spro_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10spro_0.8.inst.cfg b/resources/variants/creality_cr10spro_0.8.inst.cfg new file mode 100644 index 0000000000..96577fcb9a --- /dev/null +++ b/resources/variants/creality_cr10spro_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10spro_1.0.inst.cfg b/resources/variants/creality_cr10spro_1.0.inst.cfg new file mode 100644 index 0000000000..1b8a7edd38 --- /dev/null +++ b/resources/variants/creality_cr10spro_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr20_0.2.inst.cfg b/resources/variants/creality_cr20_0.2.inst.cfg new file mode 100644 index 0000000000..83ed7d453c --- /dev/null +++ b/resources/variants/creality_cr20_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr20_0.3.inst.cfg b/resources/variants/creality_cr20_0.3.inst.cfg new file mode 100644 index 0000000000..71245ef751 --- /dev/null +++ b/resources/variants/creality_cr20_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr20_0.4.inst.cfg b/resources/variants/creality_cr20_0.4.inst.cfg new file mode 100644 index 0000000000..a467e9db97 --- /dev/null +++ b/resources/variants/creality_cr20_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr20_0.5.inst.cfg b/resources/variants/creality_cr20_0.5.inst.cfg new file mode 100644 index 0000000000..288ff1821f --- /dev/null +++ b/resources/variants/creality_cr20_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr20_0.6.inst.cfg b/resources/variants/creality_cr20_0.6.inst.cfg new file mode 100644 index 0000000000..ebd75a82d7 --- /dev/null +++ b/resources/variants/creality_cr20_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr20_0.8.inst.cfg b/resources/variants/creality_cr20_0.8.inst.cfg new file mode 100644 index 0000000000..9f55c4e8c6 --- /dev/null +++ b/resources/variants/creality_cr20_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr20_1.0.inst.cfg b/resources/variants/creality_cr20_1.0.inst.cfg new file mode 100644 index 0000000000..a31af91078 --- /dev/null +++ b/resources/variants/creality_cr20_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr20pro_0.2.inst.cfg b/resources/variants/creality_cr20pro_0.2.inst.cfg new file mode 100644 index 0000000000..f54e9cc622 --- /dev/null +++ b/resources/variants/creality_cr20pro_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr20pro_0.3.inst.cfg b/resources/variants/creality_cr20pro_0.3.inst.cfg new file mode 100644 index 0000000000..a915b3365c --- /dev/null +++ b/resources/variants/creality_cr20pro_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr20pro_0.4.inst.cfg b/resources/variants/creality_cr20pro_0.4.inst.cfg new file mode 100644 index 0000000000..16ac215a9d --- /dev/null +++ b/resources/variants/creality_cr20pro_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr20pro_0.5.inst.cfg b/resources/variants/creality_cr20pro_0.5.inst.cfg new file mode 100644 index 0000000000..cd44cec729 --- /dev/null +++ b/resources/variants/creality_cr20pro_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr20pro_0.6.inst.cfg b/resources/variants/creality_cr20pro_0.6.inst.cfg new file mode 100644 index 0000000000..15b60a94c0 --- /dev/null +++ b/resources/variants/creality_cr20pro_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr20pro_0.8.inst.cfg b/resources/variants/creality_cr20pro_0.8.inst.cfg new file mode 100644 index 0000000000..12bcaccab7 --- /dev/null +++ b/resources/variants/creality_cr20pro_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr20pro_1.0.inst.cfg b/resources/variants/creality_cr20pro_1.0.inst.cfg new file mode 100644 index 0000000000..f14431a45f --- /dev/null +++ b/resources/variants/creality_cr20pro_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_ender2_0.2.inst.cfg b/resources/variants/creality_ender2_0.2.inst.cfg new file mode 100644 index 0000000000..f3b0a6603f --- /dev/null +++ b/resources/variants/creality_ender2_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_ender2_0.3.inst.cfg b/resources/variants/creality_ender2_0.3.inst.cfg new file mode 100644 index 0000000000..d43c96017d --- /dev/null +++ b/resources/variants/creality_ender2_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_ender2_0.4.inst.cfg b/resources/variants/creality_ender2_0.4.inst.cfg new file mode 100644 index 0000000000..2e3a1d9215 --- /dev/null +++ b/resources/variants/creality_ender2_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_ender2_0.5.inst.cfg b/resources/variants/creality_ender2_0.5.inst.cfg new file mode 100644 index 0000000000..dc7cefe27a --- /dev/null +++ b/resources/variants/creality_ender2_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_ender2_0.6.inst.cfg b/resources/variants/creality_ender2_0.6.inst.cfg new file mode 100644 index 0000000000..fecf5573ad --- /dev/null +++ b/resources/variants/creality_ender2_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_ender2_0.8.inst.cfg b/resources/variants/creality_ender2_0.8.inst.cfg new file mode 100644 index 0000000000..2a2aa5001e --- /dev/null +++ b/resources/variants/creality_ender2_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_ender2_1.0.inst.cfg b/resources/variants/creality_ender2_1.0.inst.cfg new file mode 100644 index 0000000000..5562fbd819 --- /dev/null +++ b/resources/variants/creality_ender2_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_ender3_0.2.inst.cfg b/resources/variants/creality_ender3_0.2.inst.cfg new file mode 100644 index 0000000000..ce44646d09 --- /dev/null +++ b/resources/variants/creality_ender3_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_ender3_0.3.inst.cfg b/resources/variants/creality_ender3_0.3.inst.cfg new file mode 100644 index 0000000000..4ccfc38820 --- /dev/null +++ b/resources/variants/creality_ender3_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_ender3_0.4.inst.cfg b/resources/variants/creality_ender3_0.4.inst.cfg new file mode 100644 index 0000000000..6183845e0f --- /dev/null +++ b/resources/variants/creality_ender3_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_ender3_0.5.inst.cfg b/resources/variants/creality_ender3_0.5.inst.cfg new file mode 100644 index 0000000000..2c4219b51c --- /dev/null +++ b/resources/variants/creality_ender3_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_ender3_0.6.inst.cfg b/resources/variants/creality_ender3_0.6.inst.cfg new file mode 100644 index 0000000000..429d21db0e --- /dev/null +++ b/resources/variants/creality_ender3_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_ender3_0.8.inst.cfg b/resources/variants/creality_ender3_0.8.inst.cfg new file mode 100644 index 0000000000..3ccc5e90c1 --- /dev/null +++ b/resources/variants/creality_ender3_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_ender3_1.0.inst.cfg b/resources/variants/creality_ender3_1.0.inst.cfg new file mode 100644 index 0000000000..feda76917e --- /dev/null +++ b/resources/variants/creality_ender3_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_ender4_0.2.inst.cfg b/resources/variants/creality_ender4_0.2.inst.cfg new file mode 100644 index 0000000000..42aebf3ad7 --- /dev/null +++ b/resources/variants/creality_ender4_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_ender4_0.3.inst.cfg b/resources/variants/creality_ender4_0.3.inst.cfg new file mode 100644 index 0000000000..269819366e --- /dev/null +++ b/resources/variants/creality_ender4_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_ender4_0.4.inst.cfg b/resources/variants/creality_ender4_0.4.inst.cfg new file mode 100644 index 0000000000..8a6bda3495 --- /dev/null +++ b/resources/variants/creality_ender4_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_ender4_0.5.inst.cfg b/resources/variants/creality_ender4_0.5.inst.cfg new file mode 100644 index 0000000000..5d5640d510 --- /dev/null +++ b/resources/variants/creality_ender4_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_ender4_0.6.inst.cfg b/resources/variants/creality_ender4_0.6.inst.cfg new file mode 100644 index 0000000000..28e806b46c --- /dev/null +++ b/resources/variants/creality_ender4_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_ender4_0.8.inst.cfg b/resources/variants/creality_ender4_0.8.inst.cfg new file mode 100644 index 0000000000..e90adbcfde --- /dev/null +++ b/resources/variants/creality_ender4_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_ender4_1.0.inst.cfg b/resources/variants/creality_ender4_1.0.inst.cfg new file mode 100644 index 0000000000..221ddacb83 --- /dev/null +++ b/resources/variants/creality_ender4_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_ender5_0.2.inst.cfg b/resources/variants/creality_ender5_0.2.inst.cfg new file mode 100644 index 0000000000..4c03104c09 --- /dev/null +++ b/resources/variants/creality_ender5_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_ender5_0.3.inst.cfg b/resources/variants/creality_ender5_0.3.inst.cfg new file mode 100644 index 0000000000..901745dd70 --- /dev/null +++ b/resources/variants/creality_ender5_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_ender5_0.4.inst.cfg b/resources/variants/creality_ender5_0.4.inst.cfg new file mode 100644 index 0000000000..ad071a3b38 --- /dev/null +++ b/resources/variants/creality_ender5_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_ender5_0.5.inst.cfg b/resources/variants/creality_ender5_0.5.inst.cfg new file mode 100644 index 0000000000..978eaf61c1 --- /dev/null +++ b/resources/variants/creality_ender5_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_ender5_0.6.inst.cfg b/resources/variants/creality_ender5_0.6.inst.cfg new file mode 100644 index 0000000000..57c0e8dda3 --- /dev/null +++ b/resources/variants/creality_ender5_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_ender5_0.8.inst.cfg b/resources/variants/creality_ender5_0.8.inst.cfg new file mode 100644 index 0000000000..253dd4374f --- /dev/null +++ b/resources/variants/creality_ender5_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_ender5_1.0.inst.cfg b/resources/variants/creality_ender5_1.0.inst.cfg new file mode 100644 index 0000000000..140f326557 --- /dev/null +++ b/resources/variants/creality_ender5_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_ender5plus_0.2.inst.cfg b/resources/variants/creality_ender5plus_0.2.inst.cfg new file mode 100644 index 0000000000..e07489a22a --- /dev/null +++ b/resources/variants/creality_ender5plus_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_ender5plus_0.3.inst.cfg b/resources/variants/creality_ender5plus_0.3.inst.cfg new file mode 100644 index 0000000000..e6bf5b75b2 --- /dev/null +++ b/resources/variants/creality_ender5plus_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_ender5plus_0.4.inst.cfg b/resources/variants/creality_ender5plus_0.4.inst.cfg new file mode 100644 index 0000000000..a18f640415 --- /dev/null +++ b/resources/variants/creality_ender5plus_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_ender5plus_0.5.inst.cfg b/resources/variants/creality_ender5plus_0.5.inst.cfg new file mode 100644 index 0000000000..cb3e05a82c --- /dev/null +++ b/resources/variants/creality_ender5plus_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_ender5plus_0.6.inst.cfg b/resources/variants/creality_ender5plus_0.6.inst.cfg new file mode 100644 index 0000000000..6200ab2f5a --- /dev/null +++ b/resources/variants/creality_ender5plus_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_ender5plus_0.8.inst.cfg b/resources/variants/creality_ender5plus_0.8.inst.cfg new file mode 100644 index 0000000000..4366fd59bd --- /dev/null +++ b/resources/variants/creality_ender5plus_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_ender5plus_1.0.inst.cfg b/resources/variants/creality_ender5plus_1.0.inst.cfg new file mode 100644 index 0000000000..ff4cc0d25f --- /dev/null +++ b/resources/variants/creality_ender5plus_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/deltacomb_025_e3d.inst.cfg b/resources/variants/deltacomb_025_e3d.inst.cfg new file mode 100755 index 0000000000..594447cc39 --- /dev/null +++ b/resources/variants/deltacomb_025_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = E3D 0.25mm +version = 4 +definition = deltacomb + +[metadata] +author = Deltacomb 3D +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.25 diff --git a/resources/variants/deltacomb_040_e3d.inst.cfg b/resources/variants/deltacomb_040_e3d.inst.cfg new file mode 100755 index 0000000000..17deafdaf9 --- /dev/null +++ b/resources/variants/deltacomb_040_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = E3D 0.40mm +version = 4 +definition = deltacomb + +[metadata] +author = Deltacomb 3D +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/deltacomb_080_e3d.inst.cfg b/resources/variants/deltacomb_080_e3d.inst.cfg new file mode 100755 index 0000000000..9e94ccd83f --- /dev/null +++ b/resources/variants/deltacomb_080_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = E3D 0.80mm +version = 4 +definition = deltacomb + +[metadata] +author = Deltacomb 3D +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/fabtotum_hyb35.inst.cfg b/resources/variants/fabtotum_hyb35.inst.cfg index bf00512c8f..c7d11e4eff 100644 --- a/resources/variants/fabtotum_hyb35.inst.cfg +++ b/resources/variants/fabtotum_hyb35.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_lite04.inst.cfg b/resources/variants/fabtotum_lite04.inst.cfg index cb4f7e4d34..8e6cd96030 100644 --- a/resources/variants/fabtotum_lite04.inst.cfg +++ b/resources/variants/fabtotum_lite04.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_lite06.inst.cfg b/resources/variants/fabtotum_lite06.inst.cfg index 9f0e3fe145..46d9c88462 100644 --- a/resources/variants/fabtotum_lite06.inst.cfg +++ b/resources/variants/fabtotum_lite06.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro02.inst.cfg b/resources/variants/fabtotum_pro02.inst.cfg index b80f80155b..c8939cfce4 100644 --- a/resources/variants/fabtotum_pro02.inst.cfg +++ b/resources/variants/fabtotum_pro02.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro04.inst.cfg b/resources/variants/fabtotum_pro04.inst.cfg index 7a0afdccb2..ce3aefbeb2 100644 --- a/resources/variants/fabtotum_pro04.inst.cfg +++ b/resources/variants/fabtotum_pro04.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro06.inst.cfg b/resources/variants/fabtotum_pro06.inst.cfg index 6330b2e77c..c2a9e29533 100644 --- a/resources/variants/fabtotum_pro06.inst.cfg +++ b/resources/variants/fabtotum_pro06.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro08.inst.cfg b/resources/variants/fabtotum_pro08.inst.cfg index 412bbf7410..7f32b5eeea 100644 --- a/resources/variants/fabtotum_pro08.inst.cfg +++ b/resources/variants/fabtotum_pro08.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/felixpro2_0.25.inst.cfg b/resources/variants/felixpro2_0.25.inst.cfg new file mode 100644 index 0000000000..ea8dd8ebed --- /dev/null +++ b/resources/variants/felixpro2_0.25.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 0.25 mm +version = 4 +definition = felixpro2dual + +[metadata] +author = pnks +type = variant +setting_version = 11 +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.25 +layer_height_0 = 0.15 diff --git a/resources/variants/felixpro2_0.35.inst.cfg b/resources/variants/felixpro2_0.35.inst.cfg new file mode 100644 index 0000000000..f580633098 --- /dev/null +++ b/resources/variants/felixpro2_0.35.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 0.35 mm +version = 4 +definition = felixpro2dual + +[metadata] +author = pnks +type = variant +setting_version = 11 +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.35 +layer_height_0 = 0.2 diff --git a/resources/variants/felixpro2_0.50.inst.cfg b/resources/variants/felixpro2_0.50.inst.cfg new file mode 100644 index 0000000000..5eda1ba795 --- /dev/null +++ b/resources/variants/felixpro2_0.50.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.50 mm +version = 4 +definition = felixpro2dual + +[metadata] +author = pnks +type = variant +setting_version = 11 +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/felixpro2_0.70.inst.cfg b/resources/variants/felixpro2_0.70.inst.cfg new file mode 100644 index 0000000000..afa97b539a --- /dev/null +++ b/resources/variants/felixpro2_0.70.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 0.70 mm +version = 4 +definition = felixpro2dual + +[metadata] +author = pnks +type = variant +setting_version = 11 +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.70 +layer_height_0 = 0.4 diff --git a/resources/variants/felixtec4_0.25.inst.cfg b/resources/variants/felixtec4_0.25.inst.cfg index 7a158bcc80..2993440972 100644 --- a/resources/variants/felixtec4_0.25.inst.cfg +++ b/resources/variants/felixtec4_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = felixtec4dual [metadata] author = kerog777 type = variant -setting_version = 7 +setting_version = 11 hardware_type = nozzle [values] diff --git a/resources/variants/felixtec4_0.35.inst.cfg b/resources/variants/felixtec4_0.35.inst.cfg index 35850afa7a..6d9079b637 100644 --- a/resources/variants/felixtec4_0.35.inst.cfg +++ b/resources/variants/felixtec4_0.35.inst.cfg @@ -6,7 +6,7 @@ definition = felixtec4dual [metadata] author = kerog777 type = variant -setting_version = 7 +setting_version = 11 hardware_type = nozzle [values] diff --git a/resources/variants/felixtec4_0.50.inst.cfg b/resources/variants/felixtec4_0.50.inst.cfg index d4ee356132..6bc04c3224 100644 --- a/resources/variants/felixtec4_0.50.inst.cfg +++ b/resources/variants/felixtec4_0.50.inst.cfg @@ -7,7 +7,7 @@ definition = felixtec4dual author = kerog777 type = variant hardware_type = nozzle -setting_version = 7 +setting_version = 11 [values] machine_nozzle_size = 0.5 diff --git a/resources/variants/felixtec4_0.70.inst.cfg b/resources/variants/felixtec4_0.70.inst.cfg index b5dfc3758c..52057a3be5 100644 --- a/resources/variants/felixtec4_0.70.inst.cfg +++ b/resources/variants/felixtec4_0.70.inst.cfg @@ -7,7 +7,7 @@ definition = felixtec4dual author = kerog777 type = variant hardware_type = nozzle -setting_version = 7 +setting_version = 11 [values] machine_nozzle_size = 0.70 diff --git a/resources/variants/gmax15plus_025_e3d.inst.cfg b/resources/variants/gmax15plus_025_e3d.inst.cfg index 42d692d5df..a3c590c5ad 100644 --- a/resources/variants/gmax15plus_025_e3d.inst.cfg +++ b/resources/variants/gmax15plus_025_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_04_e3d.inst.cfg b/resources/variants/gmax15plus_04_e3d.inst.cfg index fca1fd837d..60aa600bc6 100644 --- a/resources/variants/gmax15plus_04_e3d.inst.cfg +++ b/resources/variants/gmax15plus_04_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_05_e3d.inst.cfg b/resources/variants/gmax15plus_05_e3d.inst.cfg index 9c514dea8f..7485e9a474 100644 --- a/resources/variants/gmax15plus_05_e3d.inst.cfg +++ b/resources/variants/gmax15plus_05_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_05_jhead.inst.cfg b/resources/variants/gmax15plus_05_jhead.inst.cfg index 29dded70e2..4d0f1b1f1b 100644 --- a/resources/variants/gmax15plus_05_jhead.inst.cfg +++ b/resources/variants/gmax15plus_05_jhead.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_06_e3d.inst.cfg b/resources/variants/gmax15plus_06_e3d.inst.cfg index 18569ff55a..a76d867b28 100644 --- a/resources/variants/gmax15plus_06_e3d.inst.cfg +++ b/resources/variants/gmax15plus_06_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_08_e3d.inst.cfg b/resources/variants/gmax15plus_08_e3d.inst.cfg index 5ec1ce6916..bfea83ad11 100644 --- a/resources/variants/gmax15plus_08_e3d.inst.cfg +++ b/resources/variants/gmax15plus_08_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_10_jhead.inst.cfg b/resources/variants/gmax15plus_10_jhead.inst.cfg index 81c8ce2fcc..c9dc51f9dc 100644 --- a/resources/variants/gmax15plus_10_jhead.inst.cfg +++ b/resources/variants/gmax15plus_10_jhead.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_12_e3d.inst.cfg b/resources/variants/gmax15plus_12_e3d.inst.cfg index 3381f53cd0..671bf00f73 100644 --- a/resources/variants/gmax15plus_12_e3d.inst.cfg +++ b/resources/variants/gmax15plus_12_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_025_e3d.inst.cfg b/resources/variants/gmax15plus_dual_025_e3d.inst.cfg index a3d22f8629..7303487eb8 100644 --- a/resources/variants/gmax15plus_dual_025_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_025_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_04_e3d.inst.cfg b/resources/variants/gmax15plus_dual_04_e3d.inst.cfg index 4338432b10..60f66dc3aa 100644 --- a/resources/variants/gmax15plus_dual_04_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_04_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_05_e3d.inst.cfg b/resources/variants/gmax15plus_dual_05_e3d.inst.cfg index 1c1151324c..45b1bb15f2 100644 --- a/resources/variants/gmax15plus_dual_05_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_05_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_05_jhead.inst.cfg b/resources/variants/gmax15plus_dual_05_jhead.inst.cfg index ce2e9546be..28dc31a2dc 100644 --- a/resources/variants/gmax15plus_dual_05_jhead.inst.cfg +++ b/resources/variants/gmax15plus_dual_05_jhead.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_06_e3d.inst.cfg b/resources/variants/gmax15plus_dual_06_e3d.inst.cfg index ec2f378ff5..63bc1358e2 100644 --- a/resources/variants/gmax15plus_dual_06_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_06_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_08_e3d.inst.cfg b/resources/variants/gmax15plus_dual_08_e3d.inst.cfg index 06f9969302..6f766f0655 100644 --- a/resources/variants/gmax15plus_dual_08_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_08_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_10_jhead.inst.cfg b/resources/variants/gmax15plus_dual_10_jhead.inst.cfg index 6fefc37862..6aee101856 100644 --- a/resources/variants/gmax15plus_dual_10_jhead.inst.cfg +++ b/resources/variants/gmax15plus_dual_10_jhead.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/hms434_0.4tpnozzle.inst.cfg b/resources/variants/hms434_0.4tpnozzle.inst.cfg new file mode 100644 index 0000000000..ffecadd3db --- /dev/null +++ b/resources/variants/hms434_0.4tpnozzle.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.4mm TP extruder +version = 4 +definition = hms434 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 +machine_nozzle_tip_outer_diameter = 1.05 diff --git a/resources/variants/hms434_0.8tpnozzle.inst.cfg b/resources/variants/hms434_0.8tpnozzle.inst.cfg new file mode 100644 index 0000000000..903493cc4e --- /dev/null +++ b/resources/variants/hms434_0.8tpnozzle.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.8mm TP extruder +version = 4 +definition = hms434 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 +machine_nozzle_tip_outer_diameter = 1.05 diff --git a/resources/variants/imade3d_jellybox_0.4.inst.cfg b/resources/variants/imade3d_jellybox_0.4.inst.cfg index 18481a8342..812b6a4dee 100644 --- a/resources/variants/imade3d_jellybox_0.4.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4.inst.cfg @@ -5,7 +5,7 @@ definition = imade3d_jellybox [metadata] author = IMADE3D -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg b/resources/variants/imade3d_jellybox_2_0.4.inst.cfg similarity index 63% rename from resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg rename to resources/variants/imade3d_jellybox_2_0.4.inst.cfg index 2f4d35676e..c96249ffea 100644 --- a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg +++ b/resources/variants/imade3d_jellybox_2_0.4.inst.cfg @@ -1,11 +1,11 @@ [general] -name = 0.4 mm 2-fans +name = 0.4 mm version = 4 -definition = imade3d_jellybox +definition = imade3d_jellybox_2 [metadata] author = IMADE3D -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/nwa3d_a31_04.inst.cfg b/resources/variants/nwa3d_a31_04.inst.cfg new file mode 100644 index 0000000000..557b2bd072 --- /dev/null +++ b/resources/variants/nwa3d_a31_04.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = Standard 0.4mm +version = 4 +definition = nwa3d_a31 + +[metadata] +author = DragonJe +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/nwa3d_a31_06.inst.cfg b/resources/variants/nwa3d_a31_06.inst.cfg new file mode 100644 index 0000000000..1b23b1e1f8 --- /dev/null +++ b/resources/variants/nwa3d_a31_06.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = Engineering 0.6mm +version = 4 +definition = nwa3d_a31 + +[metadata] +author = DragonJe +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/strateo3d_standard_04.inst.cfg b/resources/variants/strateo3d_standard_04.inst.cfg new file mode 100644 index 0000000000..c7e9d433db --- /dev/null +++ b/resources/variants/strateo3d_standard_04.inst.cfg @@ -0,0 +1,20 @@ +[general] +name = Standard 0.4 +version = 4 +definition = strateo3d + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_id = Standard 0.4 +machine_nozzle_size = 0.4 +machine_nozzle_tip_outer_diameter = 1.0 +layer_height = 0.2 +layer_height_0 = 0.3 +prime_tower_enable = True +retract_at_layer_change = False +support_angle = 60 +support_use_towers = True \ No newline at end of file diff --git a/resources/variants/strateo3d_standard_06.inst.cfg b/resources/variants/strateo3d_standard_06.inst.cfg new file mode 100644 index 0000000000..f8fe060bf3 --- /dev/null +++ b/resources/variants/strateo3d_standard_06.inst.cfg @@ -0,0 +1,20 @@ +[general] +name = Standard 0.6 +version = 4 +definition = strateo3d + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_id = Standard 0.6 +machine_nozzle_size = 0.6 +machine_nozzle_tip_outer_diameter = 1.5 +layer_height = 0.3 +layer_height_0 = 0.4 +prime_tower_enable = True +retract_at_layer_change = False +support_angle = 55 +support_use_towers = True \ No newline at end of file diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.20.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.20.inst.cfg new file mode 100644 index 0000000000..38636be20f --- /dev/null +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.20.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 0.20mm (Clear) +version = 4 +definition = structur3d_discov3ry1_complete_um2plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_id = 0.20mm (Clear) +machine_nozzle_size = 0.20 +machine_nozzle_tip_outer_diameter = 0.30 diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.25.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.25.inst.cfg new file mode 100644 index 0000000000..e00d816183 --- /dev/null +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.25.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 0.25mm (Red) +version = 4 +definition = structur3d_discov3ry1_complete_um2plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_id = 0.25mm (Red) +machine_nozzle_size = 0.25 +machine_nozzle_tip_outer_diameter = 0.35 diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.41.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.41.inst.cfg new file mode 100644 index 0000000000..ceb7ade2ed --- /dev/null +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.41.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 0.41mm (Blue) +version = 4 +definition = structur3d_discov3ry1_complete_um2plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_id = 0.41mm (Blue) +machine_nozzle_size = 0.41 +machine_nozzle_tip_outer_diameter = 0.51 diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.58.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.58.inst.cfg new file mode 100644 index 0000000000..bdc90a417a --- /dev/null +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.58.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 0.58mm (Pink) +version = 4 +definition = structur3d_discov3ry1_complete_um2plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_id = 0.58mm (Pink) +machine_nozzle_size = 0.58 +machine_nozzle_tip_outer_diameter = 0.68 diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_0.84.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.84.inst.cfg new file mode 100644 index 0000000000..58c7ef255b --- /dev/null +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_0.84.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 0.84mm (Green) +version = 4 +definition = structur3d_discov3ry1_complete_um2plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_id = 0.84mm (Green) +machine_nozzle_size = 0.84 +machine_nozzle_tip_outer_diameter = 0.94 diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_1.19.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_1.19.inst.cfg new file mode 100644 index 0000000000..8eb4bd0915 --- /dev/null +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_1.19.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 1.19mm (Grey) +version = 4 +definition = structur3d_discov3ry1_complete_um2plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_id = 1.19mm (Grey) +machine_nozzle_size = 1.19 +machine_nozzle_tip_outer_diameter = 1.29 diff --git a/resources/variants/structur3d_discov3ry1_complete_um2plus_1.60.inst.cfg b/resources/variants/structur3d_discov3ry1_complete_um2plus_1.60.inst.cfg new file mode 100644 index 0000000000..6087e0acdf --- /dev/null +++ b/resources/variants/structur3d_discov3ry1_complete_um2plus_1.60.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 1.60mm (Olive) +version = 4 +definition = structur3d_discov3ry1_complete_um2plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_id = 1.60mm (Olive) +machine_nozzle_size = 1.60 +machine_nozzle_tip_outer_diameter = 1.70 diff --git a/resources/variants/tizyx_evy_0.2.inst.cfg b/resources/variants/tizyx_evy_0.2.inst.cfg index 802031778c..a024784550 100644 --- a/resources/variants/tizyx_evy_0.2.inst.cfg +++ b/resources/variants/tizyx_evy_0.2.inst.cfg @@ -5,10 +5,9 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 5 +setting_version = 11 type = variant hardware_type = nozzle [values] machine_nozzle_size = 0.2 - diff --git a/resources/variants/tizyx_evy_0.3.inst.cfg b/resources/variants/tizyx_evy_0.3.inst.cfg index 10c4fae6d4..4f70be4da8 100644 --- a/resources/variants/tizyx_evy_0.3.inst.cfg +++ b/resources/variants/tizyx_evy_0.3.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 5 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_0.4.inst.cfg b/resources/variants/tizyx_evy_0.4.inst.cfg index e5e0e6eb8f..9fc644023f 100644 --- a/resources/variants/tizyx_evy_0.4.inst.cfg +++ b/resources/variants/tizyx_evy_0.4.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 5 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_0.5.inst.cfg b/resources/variants/tizyx_evy_0.5.inst.cfg index e0ec423b5f..0005989cca 100644 --- a/resources/variants/tizyx_evy_0.5.inst.cfg +++ b/resources/variants/tizyx_evy_0.5.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 5 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_0.6.inst.cfg b/resources/variants/tizyx_evy_0.6.inst.cfg index a72ae828f9..3bd7cff273 100644 --- a/resources/variants/tizyx_evy_0.6.inst.cfg +++ b/resources/variants/tizyx_evy_0.6.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 5 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_0.8.inst.cfg b/resources/variants/tizyx_evy_0.8.inst.cfg index 584c8b7c19..ac56c46502 100644 --- a/resources/variants/tizyx_evy_0.8.inst.cfg +++ b/resources/variants/tizyx_evy_0.8.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 5 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_1.0.inst.cfg b/resources/variants/tizyx_evy_1.0.inst.cfg index 8949667197..1ba55936aa 100644 --- a/resources/variants/tizyx_evy_1.0.inst.cfg +++ b/resources/variants/tizyx_evy_1.0.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 5 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_dual_classic.inst.cfg b/resources/variants/tizyx_evy_dual_classic.inst.cfg new file mode 100644 index 0000000000..b9239088e0 --- /dev/null +++ b/resources/variants/tizyx_evy_dual_classic.inst.cfg @@ -0,0 +1,15 @@ +[general] +name = Classic Extruder +version = 4 +definition = tizyx_evy_dual + +[metadata] +author = TiZYX +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/variants/tizyx_evy_dual_direct_drive.inst.cfg b/resources/variants/tizyx_evy_dual_direct_drive.inst.cfg new file mode 100644 index 0000000000..166d981765 --- /dev/null +++ b/resources/variants/tizyx_evy_dual_direct_drive.inst.cfg @@ -0,0 +1,15 @@ +[general] +name = Direct Drive +version = 4 +definition = tizyx_evy_dual + +[metadata] +author = TiZYX +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/variants/tizyx_k25_0.2.inst.cfg b/resources/variants/tizyx_k25_0.2.inst.cfg index 589d50f93c..647adc64ac 100644 --- a/resources/variants/tizyx_k25_0.2.inst.cfg +++ b/resources/variants/tizyx_k25_0.2.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.3.inst.cfg b/resources/variants/tizyx_k25_0.3.inst.cfg index 41612baa4d..ef7e227f69 100644 --- a/resources/variants/tizyx_k25_0.3.inst.cfg +++ b/resources/variants/tizyx_k25_0.3.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.4.inst.cfg b/resources/variants/tizyx_k25_0.4.inst.cfg index b3fca877b3..517aedabc6 100644 --- a/resources/variants/tizyx_k25_0.4.inst.cfg +++ b/resources/variants/tizyx_k25_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.5.inst.cfg b/resources/variants/tizyx_k25_0.5.inst.cfg index e0dd4f1054..c0d8702adc 100644 --- a/resources/variants/tizyx_k25_0.5.inst.cfg +++ b/resources/variants/tizyx_k25_0.5.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.6.inst.cfg b/resources/variants/tizyx_k25_0.6.inst.cfg index d2aebe4695..0940ff6407 100644 --- a/resources/variants/tizyx_k25_0.6.inst.cfg +++ b/resources/variants/tizyx_k25_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.8.inst.cfg b/resources/variants/tizyx_k25_0.8.inst.cfg index 5a425988ee..0e02a9210f 100644 --- a/resources/variants/tizyx_k25_0.8.inst.cfg +++ b/resources/variants/tizyx_k25_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_1.0.inst.cfg b/resources/variants/tizyx_k25_1.0.inst.cfg index 01c8944960..c19ea398bd 100644 --- a/resources/variants/tizyx_k25_1.0.inst.cfg +++ b/resources/variants/tizyx_k25_1.0.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.25.inst.cfg b/resources/variants/ultimaker2_extended_olsson_0.25.inst.cfg similarity index 72% rename from resources/variants/ultimaker2_extended_0.25.inst.cfg rename to resources/variants/ultimaker2_extended_olsson_0.25.inst.cfg index eceb659e21..98e77b7a84 100644 --- a/resources/variants/ultimaker2_extended_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_olsson_0.25.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.25 mm version = 4 -definition = ultimaker2_extended +definition = ultimaker2_extended_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.4.inst.cfg b/resources/variants/ultimaker2_extended_olsson_0.4.inst.cfg similarity index 72% rename from resources/variants/ultimaker2_extended_0.4.inst.cfg rename to resources/variants/ultimaker2_extended_olsson_0.4.inst.cfg index e3dad7fd56..617980b5bf 100644 --- a/resources/variants/ultimaker2_extended_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_olsson_0.4.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.4 mm version = 4 -definition = ultimaker2_extended +definition = ultimaker2_extended_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.6.inst.cfg b/resources/variants/ultimaker2_extended_olsson_0.6.inst.cfg similarity index 72% rename from resources/variants/ultimaker2_extended_0.6.inst.cfg rename to resources/variants/ultimaker2_extended_olsson_0.6.inst.cfg index 82a5c08362..f0c959a26e 100644 --- a/resources/variants/ultimaker2_extended_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_olsson_0.6.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.6 mm version = 4 -definition = ultimaker2_extended +definition = ultimaker2_extended_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.8.inst.cfg b/resources/variants/ultimaker2_extended_olsson_0.8.inst.cfg similarity index 72% rename from resources/variants/ultimaker2_extended_0.8.inst.cfg rename to resources/variants/ultimaker2_extended_olsson_0.8.inst.cfg index 4f9d1d8889..64f08d3f7b 100644 --- a/resources/variants/ultimaker2_extended_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_olsson_0.8.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.8 mm version = 4 -definition = ultimaker2_extended +definition = ultimaker2_extended_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg index 034d094e86..cee40fd59d 100644 --- a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg index 976e129393..bd7a570554 100644 --- a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg index b7cbe8fa62..c636b2946e 100644 --- a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg index 437e107e89..c0e2e20a3d 100644 --- a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.25.inst.cfg b/resources/variants/ultimaker2_olsson_0.25.inst.cfg similarity index 77% rename from resources/variants/ultimaker2_0.25.inst.cfg rename to resources/variants/ultimaker2_olsson_0.25.inst.cfg index 87bb0a237d..481e793ed1 100644 --- a/resources/variants/ultimaker2_0.25.inst.cfg +++ b/resources/variants/ultimaker2_olsson_0.25.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.25 mm version = 4 -definition = ultimaker2 +definition = ultimaker2_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.4.inst.cfg b/resources/variants/ultimaker2_olsson_0.4.inst.cfg similarity index 75% rename from resources/variants/ultimaker2_0.4.inst.cfg rename to resources/variants/ultimaker2_olsson_0.4.inst.cfg index b50cc32eca..eb3d4b1d4d 100644 --- a/resources/variants/ultimaker2_0.4.inst.cfg +++ b/resources/variants/ultimaker2_olsson_0.4.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.4 mm version = 4 -definition = ultimaker2 +definition = ultimaker2_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.6.inst.cfg b/resources/variants/ultimaker2_olsson_0.6.inst.cfg similarity index 75% rename from resources/variants/ultimaker2_0.6.inst.cfg rename to resources/variants/ultimaker2_olsson_0.6.inst.cfg index fac65ed284..78923886e7 100644 --- a/resources/variants/ultimaker2_0.6.inst.cfg +++ b/resources/variants/ultimaker2_olsson_0.6.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.6 mm version = 4 -definition = ultimaker2 +definition = ultimaker2_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.8.inst.cfg b/resources/variants/ultimaker2_olsson_0.8.inst.cfg similarity index 75% rename from resources/variants/ultimaker2_0.8.inst.cfg rename to resources/variants/ultimaker2_olsson_0.8.inst.cfg index 9177e8e6ee..c2972e3393 100644 --- a/resources/variants/ultimaker2_0.8.inst.cfg +++ b/resources/variants/ultimaker2_olsson_0.8.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.8 mm version = 4 -definition = ultimaker2 +definition = ultimaker2_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.25.inst.cfg b/resources/variants/ultimaker2_plus_0.25.inst.cfg index 0880159d03..43b5059192 100644 --- a/resources/variants/ultimaker2_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.4.inst.cfg b/resources/variants/ultimaker2_plus_0.4.inst.cfg index 4543c148bb..9012398e96 100644 --- a/resources/variants/ultimaker2_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.6.inst.cfg b/resources/variants/ultimaker2_plus_0.6.inst.cfg index 57ff6714a7..a7388e5f7a 100644 --- a/resources/variants/ultimaker2_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.8.inst.cfg b/resources/variants/ultimaker2_plus_0.8.inst.cfg index 0fd1b50c5f..9142396e68 100644 --- a/resources/variants/ultimaker2_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_aa0.25.inst.cfg b/resources/variants/ultimaker3_aa0.25.inst.cfg index 1dadf10e91..02c818df63 100644 --- a/resources/variants/ultimaker3_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_aa0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index 2d3f210019..c6429b2cfd 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index b5a250184f..d7c4d62e42 100644 --- a/resources/variants/ultimaker3_aa04.inst.cfg +++ b/resources/variants/ultimaker3_aa04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index df5b654e2e..400e4d092c 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index 70e2a5faa8..01d465fe6a 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg index 5a9292ad1f..d8a1044620 100644 --- a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index 03b5b0753d..5ba9dd311c 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index 8303eca4e6..b5914013b2 100644 --- a/resources/variants/ultimaker3_extended_aa04.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index 13bb67d108..4a3f3e371f 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index 36191bd054..a8d706d2e4 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s3_aa0.25.inst.cfg b/resources/variants/ultimaker_s3_aa0.25.inst.cfg new file mode 100644 index 0000000000..3922e094b3 --- /dev/null +++ b/resources/variants/ultimaker_s3_aa0.25.inst.cfg @@ -0,0 +1,50 @@ +[general] +name = AA 0.25 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +brim_width = 7 +infill_line_width = 0.23 +layer_height_0 = 0.17 +line_width = 0.23 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = AA 0.25 +machine_nozzle_size = 0.25 +machine_nozzle_tip_outer_diameter = 0.65 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = 0.3 +raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 +raft_interface_line_spacing = =raft_interface_line_width + 0.2 +raft_interface_line_width = =line_width * 2 +raft_interface_thickness = =layer_height * 1.5 +raft_jerk = =jerk_print +raft_margin = 15 +raft_surface_layers = 2 +retraction_count_max = 25 +retraction_extrusion_window = 1 +retraction_min_travel = 0.7 +retraction_prime_speed = =retraction_speed +skin_overlap = 15 +speed_layer_0 = 20 +speed_print = 55 +speed_topbottom = 20 +speed_wall = =math.ceil(speed_print * 30 / 55) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_pattern = zigzag +support_top_distance = =support_z_distance +support_use_towers = True +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = =switch_extruder_retraction_speeds +switch_extruder_retraction_amount = =machine_heat_zone_length +top_bottom_thickness = 1.2 +wall_line_width_x = 0.23 +wall_thickness = 1.3 diff --git a/resources/variants/ultimaker_s3_aa0.8.inst.cfg b/resources/variants/ultimaker_s3_aa0.8.inst.cfg new file mode 100644 index 0000000000..c6f578d263 --- /dev/null +++ b/resources/variants/ultimaker_s3_aa0.8.inst.cfg @@ -0,0 +1,67 @@ +[general] +name = AA 0.8 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 7 +cool_fan_speed = 7 +cool_fan_speed_max = 100 +cool_min_speed = 5 +default_material_print_temperature = 200 +infill_before_walls = False +infill_line_width = =round(line_width * 0.6 / 0.7, 2) +infill_overlap = 0 +infill_pattern = triangles +infill_wipe_dist = 0 +jerk_enabled = True +jerk_print = 25 +jerk_topbottom = =math.ceil(jerk_print * 25 / 25) +jerk_wall = =math.ceil(jerk_print * 25 / 25) +jerk_wall_0 = =math.ceil(jerk_wall * 25 / 25) +layer_height = 0.2 +line_width = =machine_nozzle_size +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = AA 0.8 +machine_nozzle_size = 0.8 +machine_nozzle_tip_outer_diameter = 2.0 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_wipe_enabled = True +retract_at_layer_change = =not magic_spiralize +retraction_amount = 6.5 +retraction_count_max = 25 +retraction_extrusion_window = 1 +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = =line_width * 2 +skin_overlap = 5 +speed_equalize_flow_enabled = True +speed_layer_0 = 20 +speed_print = 35 +speed_topbottom = =math.ceil(speed_print * 25 / 35) +speed_wall_0 = =math.ceil(speed_wall * 25 / 30) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_pattern = zigzag +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = 20 +switch_extruder_retraction_amount = 16.5 +top_bottom_thickness = 1.4 +wall_0_inset = 0 +wall_line_width_0 = =wall_line_width +wall_line_width_x = =wall_line_width +wall_thickness = 2 diff --git a/resources/variants/ultimaker_s3_aa04.inst.cfg b/resources/variants/ultimaker_s3_aa04.inst.cfg new file mode 100644 index 0000000000..9ef3f515f0 --- /dev/null +++ b/resources/variants/ultimaker_s3_aa04.inst.cfg @@ -0,0 +1,42 @@ +[general] +name = AA 0.4 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +brim_width = 7 +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_id = AA 0.4 +machine_nozzle_tip_outer_diameter = 1.0 +raft_acceleration = =acceleration_print +raft_airgap = 0.3 +raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 +raft_interface_line_spacing = =raft_interface_line_width + 0.2 +raft_interface_line_width = =line_width * 2 +raft_interface_thickness = =layer_height * 1.5 +raft_jerk = =jerk_print +raft_margin = 15 +raft_surface_layers = 2 +retraction_amount = 6.5 +retraction_count_max = 25 +retraction_min_travel = =line_width * 2 +retraction_prime_speed = =retraction_speed +skin_overlap = 15 +speed_print = 70 +speed_topbottom = =math.ceil(speed_print * 30 / 70) +speed_wall = =math.ceil(speed_print * 30 / 70) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_pattern = zigzag +support_top_distance = =support_z_distance +support_use_towers = True +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = =switch_extruder_retraction_speeds +switch_extruder_retraction_amount = =machine_heat_zone_length +top_bottom_thickness = 1.2 +wall_thickness = 1.3 diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg new file mode 100644 index 0000000000..5c1e9c449e --- /dev/null +++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg @@ -0,0 +1,93 @@ +[general] +name = BB 0.8 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +acceleration_enabled = True +acceleration_print = 4000 +acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) +acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) +acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500) +acceleration_prime_tower = =math.ceil(acceleration_print * 200 / 4000) +brim_width = 3 +cool_fan_speed = 50 +cool_min_speed = 5 +gradual_support_infill_step_height = 1.6 +gradual_support_infill_steps = 2 +infill_line_width = =round(line_width * 0.8 / 0.7, 2) +infill_overlap = 0 +infill_pattern = triangles +infill_wipe_dist = 0 +jerk_enabled = True +jerk_prime_tower = =math.ceil(jerk_print * 2 / 25) +jerk_print = 25 +jerk_support = =math.ceil(jerk_print * 15 / 25) +jerk_support_interface = =math.ceil(jerk_support * 10 / 15) +jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) +layer_height = 0.2 +machine_min_cool_heat_time_window = 15 +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = BB 0.8 +machine_nozzle_size = 0.8 +machine_nozzle_tip_outer_diameter = 2.0 +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_wipe_enabled = True +raft_acceleration = =acceleration_layer_0 +raft_airgap = 0 +raft_base_speed = 20 +raft_base_thickness = 0.3 +raft_interface_line_spacing = 0.5 +raft_interface_line_width = 0.5 +raft_interface_speed = 20 +raft_interface_thickness = 0.2 +raft_margin = 10 +raft_speed = 25 +raft_surface_layers = 1 +retraction_amount = 4.5 +retraction_count_max = 15 +retraction_extrusion_window = =retraction_amount +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = =line_width * 3 +retraction_prime_speed = 15 +skin_overlap = 5 +speed_layer_0 = 20 +speed_print = 35 +speed_support = =math.ceil(speed_print * 25 / 35) +speed_support_interface = =math.ceil(speed_support * 20 / 25) +speed_support_bottom = =math.ceil(speed_support_interface * 10 / 20) +speed_wall_0 = =math.ceil(speed_wall * 25 / 30) +speed_prime_tower = =math.ceil(speed_print * 7 / 35) +support_angle = 60 +support_bottom_height = =layer_height * 2 +support_bottom_pattern = zigzag +support_bottom_stair_step_height = =layer_height +support_infill_rate = 50 +support_infill_sparse_thickness = 0.4 +support_interface_enable = True +support_interface_height = 0.6 +support_interface_skip_height = =layer_height +support_join_distance = 3 +support_line_width = =round(line_width * 0.4 / 0.35, 2) +support_offset = 1.5 +support_pattern = triangles +support_use_towers = False +support_xy_distance = =round(wall_line_width_0 * 0.75, 2) +support_xy_distance_overhang = =wall_line_width_0 / 4 +support_z_distance = 0 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 12 +top_bottom_thickness = 1 +wall_0_inset = 0 +wall_line_width_0 = =wall_line_width +wall_line_width_x = =wall_line_width +wall_thickness = 1 diff --git a/resources/variants/ultimaker_s3_bb04.inst.cfg b/resources/variants/ultimaker_s3_bb04.inst.cfg new file mode 100644 index 0000000000..7c37ffaa76 --- /dev/null +++ b/resources/variants/ultimaker_s3_bb04.inst.cfg @@ -0,0 +1,51 @@ +[general] +name = BB 0.4 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) +acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) +acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500) +acceleration_prime_tower = =math.ceil(acceleration_print * 200 / 4000) +cool_fan_speed_max = =cool_fan_speed +gradual_support_infill_steps = 2 +jerk_prime_tower = =math.ceil(jerk_print * 2 / 25) +jerk_support = =math.ceil(jerk_print * 15 / 25) +jerk_support_interface = =math.ceil(jerk_support * 10 / 15) +jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = BB 0.4 +machine_nozzle_tip_outer_diameter = 1.0 +raft_base_speed = 20 +raft_interface_speed = 20 +raft_speed = 25 +retraction_amount = 4.5 +retraction_count_max = 20 +retraction_extrusion_window = =retraction_amount +retraction_min_travel = =3 * line_width +speed_layer_0 = 20 +speed_prime_tower = =math.ceil(speed_print * 10 / 35) +speed_support = =math.ceil(speed_print * 25 / 35) +speed_support_interface = =math.ceil(speed_support * 20 / 25) +speed_support_bottom = =math.ceil(speed_support_interface * 10 / 20) +speed_wall_0 = =math.ceil(speed_wall * 25 / 30) +support_bottom_height = =layer_height * 2 +support_bottom_pattern = zigzag +support_bottom_stair_step_height = =layer_height +support_infill_rate = 50 +support_infill_sparse_thickness = 0.2 +support_interface_enable = True +support_interface_height = 0.6 +support_interface_skip_height = =layer_height +support_join_distance = 3 +support_line_width = =round(line_width * 0.4 / 0.35, 2) +support_offset = 3 +support_xy_distance = =round(wall_line_width_0 * 0.75, 2) +support_xy_distance_overhang = =wall_line_width_0 / 2 +switch_extruder_retraction_amount = 12 diff --git a/resources/variants/ultimaker_s3_cc06.inst.cfg b/resources/variants/ultimaker_s3_cc06.inst.cfg new file mode 100644 index 0000000000..882b248986 --- /dev/null +++ b/resources/variants/ultimaker_s3_cc06.inst.cfg @@ -0,0 +1,46 @@ +[general] +name = CC 0.6 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +brim_width = 7 +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_id = CC 0.6 +machine_nozzle_size = 0.6 +raft_acceleration = =acceleration_print +raft_airgap = 0.3 +raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 +raft_interface_line_spacing = =raft_interface_line_width + 0.2 +raft_interface_line_width = =line_width * 2 +raft_interface_thickness = =layer_height * 1.5 +raft_jerk = =jerk_print +raft_margin = 15 +raft_surface_layers = 2 +retraction_count_max = 25 +retraction_min_travel = =line_width * 2 +retraction_prime_speed = =retraction_speed +speed_infill = =speed_print +speed_layer_0 = 20 +speed_print = 45 +speed_support = =speed_topbottom +speed_topbottom = =math.ceil(speed_print * 25 / 45) +speed_travel_layer_0 = 50 +speed_wall = =math.ceil(speed_print * 30 / 45) +speed_wall_0 = =math.ceil(speed_wall * 25 / 30) +speed_wall_x = =speed_wall +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_pattern = zigzag +support_top_distance = =support_z_distance +support_use_towers = True +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = =switch_extruder_retraction_speeds +switch_extruder_retraction_amount = =machine_heat_zone_length +top_bottom_thickness = =layer_height * 6 +wall_thickness = =line_width * 3 diff --git a/resources/variants/ultimaker_s5_aa0.25.inst.cfg b/resources/variants/ultimaker_s5_aa0.25.inst.cfg index e2ed3defe9..442da77bbf 100644 --- a/resources/variants/ultimaker_s5_aa0.25.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_aa0.8.inst.cfg b/resources/variants/ultimaker_s5_aa0.8.inst.cfg index 84b3802fef..4af3273236 100644 --- a/resources/variants/ultimaker_s5_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_aa04.inst.cfg b/resources/variants/ultimaker_s5_aa04.inst.cfg index 88dbc25d91..e2a573d64c 100644 --- a/resources/variants/ultimaker_s5_aa04.inst.cfg +++ b/resources/variants/ultimaker_s5_aa04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_aluminum.inst.cfg b/resources/variants/ultimaker_s5_aluminum.inst.cfg index 65b0a6da68..3ee1f9f2f4 100644 --- a/resources/variants/ultimaker_s5_aluminum.inst.cfg +++ b/resources/variants/ultimaker_s5_aluminum.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = buildplate diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg index d05ce74f61..f393da7ff3 100644 --- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_bb04.inst.cfg b/resources/variants/ultimaker_s5_bb04.inst.cfg index 2d3bc42a50..7b3634a923 100644 --- a/resources/variants/ultimaker_s5_bb04.inst.cfg +++ b/resources/variants/ultimaker_s5_bb04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_cc06.inst.cfg b/resources/variants/ultimaker_s5_cc06.inst.cfg index f64e3b9055..f788811f58 100644 --- a/resources/variants/ultimaker_s5_cc06.inst.cfg +++ b/resources/variants/ultimaker_s5_cc06.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_glass.inst.cfg b/resources/variants/ultimaker_s5_glass.inst.cfg index 87196e5e9b..d08fdbe494 100644 --- a/resources/variants/ultimaker_s5_glass.inst.cfg +++ b/resources/variants/ultimaker_s5_glass.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = buildplate diff --git a/run_coverage.py b/run_coverage.py new file mode 100644 index 0000000000..2fd60f9342 --- /dev/null +++ b/run_coverage.py @@ -0,0 +1,22 @@ +import pytest +from pathlib import Path + +# Small helper script to run the coverage of main code & all plugins + +path = Path("plugins") +args = ["--cov" ,"cura" , "--cov-report", "html"] +all_paths = [] +for p in path.glob('**/*'): + if p.is_dir(): + if p.name in ["__pycache__", "tests"]: + continue + args.append("--cov") + args.append(str(p)) + all_paths.append(str(p)) + +for path in all_paths: + args.append(path) +args.append(".") +args.append("-x") +pytest.main(args) + diff --git a/run_mypy.py b/run_mypy.py index 27f07cd281..6be424bda8 100644 --- a/run_mypy.py +++ b/run_mypy.py @@ -1,80 +1,82 @@ -#!/usr/bin/env python -import os -import sys -import subprocess - - -# A quick Python implementation of unix 'where' command. -def where(exe_name: str, search_path: str = os.getenv("PATH")) -> str: - if search_path is None: - search_path = "" - paths = search_path.split(os.pathsep) - result = "" - print(" -> sys.executable location: %s" % sys.executable) - sys_exec_dir = os.path.dirname(sys.executable) - root_dir = os.path.dirname(sys_exec_dir) - paths += [sys_exec_dir, - os.path.join(root_dir, "bin"), - os.path.join(root_dir, "scripts"), - ] - paths = set(paths) - - for path in sorted(paths): - print(" -> Searching %s" % path) - candidate_path = os.path.join(path, exe_name) - if os.path.exists(candidate_path): - result = candidate_path - break - return result - - -def findModules(path): - result = [] - for entry in os.scandir(path): - if entry.is_dir() and os.path.exists(os.path.join(path, entry.name, "__init__.py")): - result.append(entry.name) - return result - - -def main(): - # Find Uranium via the PYTHONPATH var - uraniumUMPath = where("UM", os.getenv("PYTHONPATH")) - if uraniumUMPath is None: - uraniumUMPath = os.path.join("..", "Uranium") - uraniumPath = os.path.dirname(uraniumUMPath) - - mypy_path_parts = [".", os.path.join(".", "plugins"), os.path.join(".", "plugins", "VersionUpgrade"), - uraniumPath, os.path.join(uraniumPath, "stubs")] - if sys.platform == "win32": - os.putenv("MYPYPATH", ";".join(mypy_path_parts)) - else: - os.putenv("MYPYPATH", ":".join(mypy_path_parts)) - - # Mypy really needs to be run via its Python script otherwise it can't find its data files. - mypy_exe_name = "mypy.exe" if sys.platform == "win32" else "mypy" - mypy_exe_dir = where(mypy_exe_name) - mypy_module = os.path.join(os.path.dirname(mypy_exe_dir), mypy_exe_name) - print("Found mypy exe path: %s" % mypy_exe_dir) - print("Found mypy module path: %s" % mypy_module) - - plugins = findModules("plugins") - plugins.sort() - - mods = ["cura"] + plugins + findModules("plugins/VersionUpgrade") - - for mod in mods: - print("------------- Checking module {mod}".format(**locals())) - if sys.platform == "win32": - result = subprocess.run([mypy_module, "-p", mod, "--ignore-missing-imports"]) - else: - result = subprocess.run([sys.executable, mypy_module, "-p", mod, "--ignore-missing-imports"]) - if result.returncode != 0: - print("\nModule {mod} failed checking. :(".format(**locals())) - return 1 - else: - print("\n\nDone checking. All is good.") - return 0 - - -if __name__ == "__main__": - sys.exit(main()) +#!/usr/bin/env python +import os +import sys +import subprocess + + +# A quick Python implementation of unix 'where' command. +def where(exe_name: str, search_path: str = os.getenv("PATH")) -> str: + if search_path is None: + search_path = "" + paths = search_path.split(os.pathsep) + result = "" + print(" -> sys.executable location: %s" % sys.executable) + sys_exec_dir = os.path.dirname(sys.executable) + root_dir = os.path.dirname(sys_exec_dir) + paths += [sys_exec_dir, + os.path.join(root_dir, "bin"), + os.path.join(root_dir, "scripts"), + ] + paths = set(paths) + + for path in sorted(paths): + print(" -> Searching %s" % path) + candidate_path = os.path.join(path, exe_name) + if os.path.exists(candidate_path): + result = candidate_path + break + return result + + +def findModules(path): + result = [] + for entry in os.scandir(path): + if entry.is_dir() and os.path.exists(os.path.join(path, entry.name, "__init__.py")): + result.append(entry.name) + return result + + +def main(): + # Find Uranium via the PYTHONPATH var + uraniumUMPath = where("UM", os.getenv("PYTHONPATH")) + if uraniumUMPath is None: + uraniumUMPath = os.path.join("..", "Uranium") + uraniumPath = os.path.dirname(uraniumUMPath) + + mypy_path_parts = [".", os.path.join(".", "plugins"), os.path.join(".", "plugins", "VersionUpgrade"), + uraniumPath, os.path.join(uraniumPath, "stubs")] + if sys.platform == "win32": + os.putenv("MYPYPATH", ";".join(mypy_path_parts)) + else: + os.putenv("MYPYPATH", ":".join(mypy_path_parts)) + + # Mypy really needs to be run via its Python script otherwise it can't find its data files. + mypy_exe_name = "mypy.exe" if sys.platform == "win32" else "mypy" + mypy_exe_dir = where(mypy_exe_name) + mypy_module = os.path.join(os.path.dirname(mypy_exe_dir), mypy_exe_name) + print("Found mypy exe path: %s" % mypy_exe_dir) + print("Found mypy module path: %s" % mypy_module) + + plugins = findModules("plugins") + plugins.sort() + + mods = ["cura"] + plugins + findModules("plugins/VersionUpgrade") + success_code = 0 + for mod in mods: + print("------------- Checking module {mod}".format(**locals())) + if sys.platform == "win32": + result = subprocess.run([mypy_module, "-p", mod, "--ignore-missing-imports"]) + else: + result = subprocess.run([sys.executable, mypy_module, "-p", mod, "--ignore-missing-imports"]) + if result.returncode != 0: + print("\nModule {mod} failed checking. :(".format(**locals())) + success_code = 1 + if success_code: + print("\n\nSome modules failed checking!") + else: + print("\n\nDone checking. All is good.") + return success_code + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/lionbridge_import.py b/scripts/lionbridge_import.py new file mode 100644 index 0000000000..0c2c132216 --- /dev/null +++ b/scripts/lionbridge_import.py @@ -0,0 +1,180 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import argparse #To get the source directory from command line arguments. +import io # To fix encoding issues in Windows +import os #To find files from the source. +import os.path #To find files from the source and the destination path. + +cura_files = {"cura", "fdmprinter.def.json", "fdmextruder.def.json"} +uranium_files = {"uranium"} + +## Imports translation files from Lionbridge. +# +# Lionbridge has a bit of a weird export feature. It exports it to the same +# file type as what we imported, so that's a .pot file. However this .pot file +# only contains the translations, so the header is completely empty. We need +# to merge those translations into our existing files so that the header is +# preserved. +def lionbridge_import(source: str) -> None: + print("Importing from:", source) + print("Importing to Cura:", destination_cura()) + print("Importing to Uranium:", destination_uranium()) + + for language in (directory for directory in os.listdir(source) if os.path.isdir(os.path.join(source, directory))): + print("================ Processing language:", language, "================") + directory = os.path.join(source, language) + for file_pot in (file for file in os.listdir(directory) if file.endswith(".pot")): + source_file = file_pot[:-4] #Strip extension. + if source_file in cura_files: + destination_file = os.path.join(destination_cura(), language.replace("-", "_"), source_file + ".po") + print("Merging", source_file, "(Cura) into", destination_file) + elif source_file in uranium_files: + destination_file = os.path.join(destination_uranium(), language.replace("-", "_"), source_file + ".po") + print("Merging", source_file, "(Uranium) into", destination_file) + else: + raise Exception("Unknown file: " + source_file + "... Is this Cura or Uranium?") + + with io.open(os.path.join(directory, file_pot), encoding = "utf8") as f: + source_str = f.read() + with io.open(destination_file, encoding = "utf8") as f: + destination_str = f.read() + result = merge(source_str, destination_str) + with io.open(destination_file, "w", encoding = "utf8") as f: + f.write(result) + +## Gets the destination path to copy the translations for Cura to. +# \return Destination path for Cura. +def destination_cura() -> str: + return os.path.abspath(os.path.join(__file__, "..", "..", "resources", "i18n")) + +## Gets the destination path to copy the translations for Uranium to. +# \return Destination path for Uranium. +def destination_uranium() -> str: + try: + import UM + except ImportError: + relative_path = os.path.join(__file__, "..", "..", "..", "Uranium", "resources", "i18n", "uranium.pot") + print(os.path.abspath(relative_path)) + if os.path.exists(relative_path): + return os.path.abspath(relative_path) + else: + raise Exception("Can't find Uranium. Please put UM on the PYTHONPATH or put the Uranium folder next to the Cura folder.") + return os.path.abspath(os.path.join(UM.__file__, "..", "..", "resources", "i18n")) + +## Merges translations from the source file into the destination file if they +# were missing in the destination file. +# \param source The contents of the source .po file. +# \param destination The contents of the destination .po file. +def merge(source: str, destination: str) -> str: + result_lines = [] + last_destination = { + "msgctxt": "\"\"\n", + "msgid": "\"\"\n", + "msgstr": "\"\"\n", + "msgid_plural": "\"\"\n" + } + + current_state = "none" + for line in destination.split("\n"): + if line.startswith("msgctxt \""): + current_state = "msgctxt" + line = line[8:] + last_destination[current_state] = "" + elif line.startswith("msgid \""): + current_state = "msgid" + line = line[6:] + last_destination[current_state] = "" + elif line.startswith("msgstr \""): + current_state = "msgstr" + line = line[7:] + last_destination[current_state] = "" + elif line.startswith("msgid_plural \""): + current_state = "msgid_plural" + line = line[13:] + last_destination[current_state] = "" + + if line.startswith("\"") and line.endswith("\""): + last_destination[current_state] += line + "\n" + else: #White lines or comment lines trigger us to search for the translation in the source file. + if last_destination["msgstr"] == "\"\"\n" and last_destination["msgid"] != "\"\"\n": #No translation for this yet! + last_destination["msgstr"] = find_translation(source, last_destination["msgctxt"], last_destination["msgid"]) #Actually place the translation in. + if last_destination["msgctxt"] != "\"\"\n" or last_destination["msgid"] != "\"\"\n" or last_destination["msgid_plural"] != "\"\"\n" or last_destination["msgstr"] != "\"\"\n": + if last_destination["msgctxt"] != "\"\"\n": + result_lines.append("msgctxt {msgctxt}".format(msgctxt = last_destination["msgctxt"][:-1])) #The [:-1] to strip the last newline. + result_lines.append("msgid {msgid}".format(msgid = last_destination["msgid"][:-1])) + if last_destination["msgid_plural"] != "\"\"\n": + result_lines.append("msgid_plural {msgid_plural}".format(msgid_plural = last_destination["msgid_plural"][:-1])) + else: + result_lines.append("msgstr {msgstr}".format(msgstr = last_destination["msgstr"][:-1])) + last_destination = { + "msgctxt": "\"\"\n", + "msgid": "\"\"\n", + "msgstr": "\"\"\n", + "msgid_plural": "\"\"\n" + } + + result_lines.append(line) #This line itself. + return "\n".join(result_lines) + +## Finds a translation in the source file. +# \param source The contents of the source .po file. +# \param msgctxt The ctxt of the translation to find. +# \param msgid The id of the translation to find. +def find_translation(source: str, msgctxt: str, msgid: str) -> str: + last_source = { + "msgctxt": "\"\"\n", + "msgid": "\"\"\n", + "msgstr": "\"\"\n", + "msgid_plural": "\"\"\n" + } + + current_state = "none" + for line in source.split("\n"): + if line.startswith("msgctxt \""): + current_state = "msgctxt" + line = line[8:] + last_source[current_state] = "" + elif line.startswith("msgid \""): + current_state = "msgid" + line = line[6:] + last_source[current_state] = "" + elif line.startswith("msgstr \""): + current_state = "msgstr" + line = line[7:] + last_source[current_state] = "" + elif line.startswith("msgid_plural \""): + current_state = "msgid_plural" + line = line[13:] + last_source[current_state] = "" + + if line.startswith("\"") and line.endswith("\""): + last_source[current_state] += line + "\n" + else: #White lines trigger us to process this translation. Is it the correct one? + #Process the source and destination keys for comparison independent of newline technique. + source_ctxt = "".join((line.strip()[1:-1] for line in last_source["msgctxt"].split("\n"))) + source_id = "".join((line.strip()[1:-1] for line in last_source["msgid"].split("\n"))) + dest_ctxt = "".join((line.strip()[1:-1] for line in msgctxt.split("\n"))) + dest_id = "".join((line.strip()[1:-1] for line in msgid.split("\n"))) + + if source_ctxt == dest_ctxt and source_id == dest_id: + if last_source["msgstr"] == "\"\"\n" and last_source["msgid_plural"] == "\"\"\n": + print("!!! Empty translation for {" + dest_ctxt + "}", dest_id, "!!!") + return last_source["msgstr"] + + last_source = { + "msgctxt": "\"\"\n", + "msgid": "\"\"\n", + "msgstr": "\"\"\n", + "msgid_plural": "\"\"\n" + } + + #Still here? Then the entire msgctxt+msgid combination was not found at all. + print("!!! Missing translation for {" + msgctxt.strip() + "}", msgid.strip(), "!!!") + return "\"\"\n" + +if __name__ == "__main__": + argparser = argparse.ArgumentParser(description = "Import translation files from Lionbridge.") + argparser.add_argument("source") + args = argparser.parse_args() + lionbridge_import(args.source) \ No newline at end of file diff --git a/tests/API/TestAccount.py b/tests/API/TestAccount.py new file mode 100644 index 0000000000..d2708638cb --- /dev/null +++ b/tests/API/TestAccount.py @@ -0,0 +1,110 @@ +from unittest.mock import MagicMock + +import pytest + +from cura.API import Account +from cura.OAuth2.Models import UserProfile + + +@pytest.fixture() +def user_profile(): + result = UserProfile() + result.username = "username!" + result.profile_image_url = "profile_image_url!" + result.user_id = "user_id!" + return result + +def test_login(): + account = Account(MagicMock()) + mocked_auth_service = MagicMock() + account._authorization_service = mocked_auth_service + + account.login() + mocked_auth_service.startAuthorizationFlow.assert_called_once_with() + + # Fake a sucesfull login + account._onLoginStateChanged(True) + + # Attempting to log in again shouldn't change anything. + account.login() + mocked_auth_service.startAuthorizationFlow.assert_called_once_with() + + +def test_initialize(): + account = Account(MagicMock()) + mocked_auth_service = MagicMock() + account._authorization_service = mocked_auth_service + + account.initialize() + mocked_auth_service.loadAuthDataFromPreferences.assert_called_once_with() + + +def test_logout(): + account = Account(MagicMock()) + mocked_auth_service = MagicMock() + account._authorization_service = mocked_auth_service + + account.logout() + mocked_auth_service.deleteAuthData.assert_not_called() # We weren't logged in, so nothing should happen + assert not account.isLoggedIn + + # Pretend the stage changed + account._onLoginStateChanged(True) + assert account.isLoggedIn + + account.logout() + mocked_auth_service.deleteAuthData.assert_called_once_with() + + +def test_errorLoginState(): + account = Account(MagicMock()) + mocked_auth_service = MagicMock() + account._authorization_service = mocked_auth_service + account.loginStateChanged = MagicMock() + + account._onLoginStateChanged(True, "BLARG!") + # Even though we said that the login worked, it had an error message, so the login failed. + account.loginStateChanged.emit.called_with(False) + + account._onLoginStateChanged(True) + account._onLoginStateChanged(False, "OMGZOMG!") + account.loginStateChanged.emit.called_with(False) + + +def test_userName(user_profile): + account = Account(MagicMock()) + mocked_auth_service = MagicMock() + account._authorization_service = mocked_auth_service + mocked_auth_service.getUserProfile = MagicMock(return_value = user_profile) + + assert account.userName == "username!" + + mocked_auth_service.getUserProfile = MagicMock(return_value=None) + assert account.userName is None + + +def test_profileImageUrl(user_profile): + account = Account(MagicMock()) + mocked_auth_service = MagicMock() + account._authorization_service = mocked_auth_service + mocked_auth_service.getUserProfile = MagicMock(return_value = user_profile) + + assert account.profileImageUrl == "profile_image_url!" + + mocked_auth_service.getUserProfile = MagicMock(return_value=None) + assert account.profileImageUrl is None + + +def test_userProfile(user_profile): + account = Account(MagicMock()) + mocked_auth_service = MagicMock() + account._authorization_service = mocked_auth_service + mocked_auth_service.getUserProfile = MagicMock(return_value=user_profile) + + returned_user_profile = account.userProfile + assert returned_user_profile["username"] == "username!" + assert returned_user_profile["profile_image_url"] == "profile_image_url!" + assert returned_user_profile["user_id"] == "user_id!" + + mocked_auth_service.getUserProfile = MagicMock(return_value=None) + assert account.userProfile is None diff --git a/tests/Machines/Models/TestDiscoveredPrintersModel.py b/tests/Machines/Models/TestDiscoveredPrintersModel.py new file mode 100644 index 0000000000..3a25fa8a02 --- /dev/null +++ b/tests/Machines/Models/TestDiscoveredPrintersModel.py @@ -0,0 +1,63 @@ +from unittest.mock import MagicMock, PropertyMock + +import pytest + +from cura.Machines.Models.DiscoveredPrintersModel import DiscoveredPrintersModel, DiscoveredPrinter + + +@pytest.fixture() +def discovered_printer_model(application) -> DiscoveredPrintersModel: + return DiscoveredPrintersModel(application) + +@pytest.fixture() +def discovered_printer() -> DiscoveredPrinter: + return DiscoveredPrinter("127.0.0.1", "zomg", "yay", None, "bleep", MagicMock()) + + +def test_discoveredPrinters(discovered_printer_model): + mocked_device = MagicMock() + cluster_size = PropertyMock(return_value = 1) + type(mocked_device).clusterSize = cluster_size + + mocked_callback = MagicMock() + discovered_printer_model.addDiscoveredPrinter("ip", "key", "name", mocked_callback, "machine_type", mocked_device) + device = discovered_printer_model.discoveredPrinters[0] + discovered_printer_model.createMachineFromDiscoveredPrinter(device) + mocked_callback.assert_called_with("key") + + assert len(discovered_printer_model.discoveredPrinters) == 1 + + discovered_printer_model.discoveredPrintersChanged = MagicMock() + # Test if removing it works + discovered_printer_model.removeDiscoveredPrinter("ip") + assert len(discovered_printer_model.discoveredPrinters) == 0 + assert discovered_printer_model.discoveredPrintersChanged.emit.call_count == 1 + # Removing it again shouldn't cause another signal emit + discovered_printer_model.removeDiscoveredPrinter("ip") + assert discovered_printer_model.discoveredPrintersChanged.emit.call_count == 1 + +test_validate_data_get_set = [ + {"attribute": "name", "value": "zomg"}, + {"attribute": "machineType", "value": "BHDHAHHADAD"}, +] + +@pytest.mark.parametrize("data", test_validate_data_get_set) +def test_getAndSet(data, discovered_printer): + # Attempt to set the value + # Convert the first letter into a capital + attribute = list(data["attribute"]) + attribute[0] = attribute[0].capitalize() + attribute = "".join(attribute) + + # Attempt to set the value + getattr(discovered_printer, "set" + attribute)(data["value"]) + + # Ensure that the value got set + assert getattr(discovered_printer, data["attribute"]) == data["value"] + + +def test_isHostofGroup(discovered_printer): + discovered_printer.device.clusterSize = 0 + assert not discovered_printer.isHostOfGroup + discovered_printer.device.clusterSize = 2 + assert discovered_printer.isHostOfGroup \ No newline at end of file diff --git a/tests/Machines/TestContainerTree.py b/tests/Machines/TestContainerTree.py new file mode 100644 index 0000000000..ef11d9acc0 --- /dev/null +++ b/tests/Machines/TestContainerTree.py @@ -0,0 +1,93 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from unittest.mock import patch, MagicMock +import pytest +from UM.Settings.DefinitionContainer import DefinitionContainer +from cura.Machines.ContainerTree import ContainerTree +from cura.Settings.GlobalStack import GlobalStack + + +def createMockedStack(definition_id: str): + result = MagicMock(spec = GlobalStack) + result.definition.getId = MagicMock(return_value = definition_id) + + extruder_left_mock = MagicMock() + extruder_left_mock.variant.getName = MagicMock(return_value = definition_id + "_left_variant_name") + extruder_left_mock.material.getMetaDataEntry = MagicMock(return_value = definition_id + "_left_material_base_file") + extruder_left_mock.isEnabled = True + extruder_right_mock = MagicMock() + extruder_right_mock.variant.getName = MagicMock(return_value = definition_id + "_right_variant_name") + extruder_right_mock.material.getMetaDataEntry = MagicMock(return_value = definition_id + "_right_material_base_file") + extruder_right_mock.isEnabled = True + extruder_list = [extruder_left_mock, extruder_right_mock] + result.extruderList = extruder_list + return result + + +@pytest.fixture +def container_registry(): + result = MagicMock() + result.findContainerStacks = MagicMock(return_value = [createMockedStack("machine_1"), createMockedStack("machine_2")]) + result.findContainersMetadata = lambda id: [{"id": id}] if id in {"machine_1", "machine_2"} else [] + return result + +@pytest.fixture +def application(): + return MagicMock(getGlobalContainerStack = MagicMock(return_value = createMockedStack("current_global_stack"))) + + +def test_containerTreeInit(container_registry): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + container_tree = ContainerTree() + + assert "machine_1" in container_tree.machines + assert "machine_2" in container_tree.machines + +def test_getCurrentQualityGroupsNoGlobalStack(container_registry): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = MagicMock(getGlobalContainerStack = MagicMock(return_value = None)))): + container_tree = ContainerTree() + result = container_tree.getCurrentQualityGroups() + + assert len(result) == 0 + +def test_getCurrentQualityGroups(container_registry, application): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + container_tree = ContainerTree() + container_tree.machines._machines["current_global_stack"] = MagicMock() # Mock so that we can track whether the getQualityGroups function gets called with correct parameters. + + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + result = container_tree.getCurrentQualityGroups() + + # As defined in the fixture for application. + expected_variant_names = ["current_global_stack_left_variant_name", "current_global_stack_right_variant_name"] + expected_material_base_files = ["current_global_stack_left_material_base_file", "current_global_stack_right_material_base_file"] + expected_is_enabled = [True, True] + + container_tree.machines["current_global_stack"].getQualityGroups.assert_called_with(expected_variant_names, expected_material_base_files, expected_is_enabled) + assert result == container_tree.machines["current_global_stack"].getQualityGroups.return_value + +def test_getCurrentQualityChangesGroupsNoGlobalStack(container_registry): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = MagicMock(getGlobalContainerStack = MagicMock(return_value = None)))): + container_tree = ContainerTree() + result = container_tree.getCurrentQualityChangesGroups() + + assert len(result) == 0 + +def test_getCurrentQualityChangesGroups(container_registry, application): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + container_tree = ContainerTree() + container_tree.machines._machines["current_global_stack"] = MagicMock() # Mock so that we can track whether the getQualityGroups function gets called with correct parameters. + + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + result = container_tree.getCurrentQualityChangesGroups() + + # As defined in the fixture for application. + expected_variant_names = ["current_global_stack_left_variant_name", "current_global_stack_right_variant_name"] + expected_material_base_files = ["current_global_stack_left_material_base_file", "current_global_stack_right_material_base_file"] + expected_is_enabled = [True, True] + + container_tree.machines["current_global_stack"].getQualityChangesGroups.assert_called_with(expected_variant_names, expected_material_base_files, expected_is_enabled) + assert result == container_tree.machines["current_global_stack"].getQualityChangesGroups.return_value \ No newline at end of file diff --git a/tests/Machines/TestMachineNode.py b/tests/Machines/TestMachineNode.py new file mode 100644 index 0000000000..50d7bdafa0 --- /dev/null +++ b/tests/Machines/TestMachineNode.py @@ -0,0 +1,174 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from unittest.mock import patch, MagicMock +import pytest + +from UM.Settings.Interfaces import ContainerInterface +from cura.Machines.MachineNode import MachineNode + +metadata_dict = { + "has_materials": "false", + "has_variants": "true", + "has_machine_quality": "true", + "quality_definition": "test_quality_definition", + "exclude_materials": ["excluded_material_1", "excluded_material_2"], + "preferred_variant_name": "beautiful_nozzle", + "preferred_material": "beautiful_material", + "preferred_quality_type": "beautiful_quality_type" +} + + +@pytest.fixture +def container_registry(): + result = MagicMock() + result.findInstanceContainersMetadata = MagicMock(return_value = [{"id": "variant_1", "name": "Variant One", "quality_type": "normal"}, {"id": "variant_2", "name": "Variant Two", "quality_type": "great"}]) + result.findContainersMetadata = MagicMock(return_value = [metadata_dict]) + return result + +## Creates a machine node without anything underneath it. No sub-nodes. +# +# For testing stuff with machine nodes without testing _loadAll(). You'll need +# to add subnodes manually in your test. +@pytest.fixture +def empty_machine_node(): + empty_container_registry = MagicMock() + empty_container_registry.findContainersMetadata = MagicMock(return_value = [metadata_dict]) # Still contain the MachineNode's own metadata for the constructor. + empty_container_registry.findInstanceContainersMetadata = MagicMock(return_value = []) + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = empty_container_registry)): + with patch("cura.Machines.MachineNode.MachineNode._loadAll", MagicMock()): + return MachineNode("machine_1") + +def getMetadataEntrySideEffect(*args, **kwargs): + return metadata_dict.get(args[0]) + + +def createMockedInstanceContainer(): + result = MagicMock(spec = ContainerInterface) + result.getMetaDataEntry = MagicMock(side_effect = getMetadataEntrySideEffect) + return result + + +def createMachineNode(container_id, container_registry): + with patch("cura.Machines.MachineNode.VariantNode"): # We're not testing the variant node here, so patch it out. + with patch("cura.Machines.MachineNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + return MachineNode(container_id) + + +def test_machineNodeInit(container_registry): + machine_node = createMachineNode("machine_1", container_registry) + + # As variants get stored by name, we want to check if those get added. + assert "Variant One" in machine_node.variants + assert "Variant Two" in machine_node.variants + assert len(machine_node.variants) == 2 # And ensure that *only* those two got added. + +def test_metadataProperties(container_registry): + node = createMachineNode("machine_1", container_registry) + + # Check if each of the metadata entries got stored properly. + assert not node.has_materials + assert node.has_variants + assert node.has_machine_quality + assert node.quality_definition == metadata_dict["quality_definition"] + assert node.exclude_materials == metadata_dict["exclude_materials"] + assert node.preferred_variant_name == metadata_dict["preferred_variant_name"] + assert node.preferred_material == metadata_dict["preferred_material"] + assert node.preferred_quality_type == metadata_dict["preferred_quality_type"] + +## Test getting quality groups when there are quality profiles available for +# the requested configurations on two extruders. +def test_getQualityGroupsBothExtrudersAvailable(empty_machine_node): + # Prepare a tree inside the machine node. + extruder_0_node = MagicMock(quality_type = "quality_type_1") + extruder_1_node = MagicMock(quality_type = "quality_type_1") # Same quality type, so this is the one that can be returned. + empty_machine_node.variants = { + "variant_1": MagicMock( + materials = { + "material_1": MagicMock( + qualities = { + "quality_1": extruder_0_node + } + ) + } + ), + "variant_2": MagicMock( + materials = { + "material_2": MagicMock( + qualities = { + "quality_2": extruder_1_node + } + ) + } + ) + } + global_node = MagicMock( + container = MagicMock(id = "global_quality_container"), # Needs to exist, otherwise it won't add this quality type. + getMetaDataEntry = lambda _, __: "Global Quality Profile Name" + ) + empty_machine_node.global_qualities = { + "quality_type_1": global_node + } + + # Request the quality groups for the variants in the machine tree. + result = empty_machine_node.getQualityGroups(["variant_1", "variant_2"], ["material_1", "material_2"], [True, True]) + + assert "quality_type_1" in result, "This quality type was available for both extruders." + assert result["quality_type_1"].node_for_global == global_node + assert result["quality_type_1"].nodes_for_extruders[0] == extruder_0_node + assert result["quality_type_1"].nodes_for_extruders[1] == extruder_1_node + assert result["quality_type_1"].name == global_node.getMetaDataEntry("name", "Unnamed Profile") + assert result["quality_type_1"].quality_type == "quality_type_1" + +## Test the "is_available" flag on quality groups. +# +# If a profile is available for a quality type on an extruder but not on all +# extruders, there should be a quality group for it but it should not be made +# available. +def test_getQualityGroupsAvailability(empty_machine_node): + # Prepare a tree inside the machine node. + extruder_0_both = MagicMock(quality_type = "quality_type_both") # This quality type is available for both extruders. + extruder_1_both = MagicMock(quality_type = "quality_type_both") + extruder_0_exclusive = MagicMock(quality_type = "quality_type_0") # These quality types are only available on one of the extruders. + extruder_1_exclusive = MagicMock(quality_type = "quality_type_1") + empty_machine_node.variants = { + "variant_1": MagicMock( + materials = { + "material_1": MagicMock( + qualities = { + "quality_0_both": extruder_0_both, + "quality_0_exclusive": extruder_0_exclusive + } + ) + } + ), + "variant_2": MagicMock( + materials = { + "material_2": MagicMock( + qualities = { + "quality_1_both": extruder_1_both, + "quality_1_exclusive": extruder_1_exclusive + } + ) + } + ) + } + global_both = MagicMock(container = MagicMock(id = "global_quality_both"), getMetaDataEntry = lambda _, __: "Global Quality Both") + global_0 = MagicMock(container = MagicMock(id = "global_quality_0"), getMetaDataEntry = lambda _, __: "Global Quality 0 Exclusive") + global_1 = MagicMock(container = MagicMock(id = "global_quality_1"), getMetaDataEntry = lambda _, __: "Global Quality 1 Exclusive") + empty_machine_node.global_qualities = { + "quality_type_both": global_both, + "quality_type_0": global_0, + "quality_type_1": global_1 + } + + # Request the quality groups for the variants in the machine tree. + result = empty_machine_node.getQualityGroups(["variant_1", "variant_2"], ["material_1", "material_2"], [True, True]) + + assert "quality_type_both" in result, "This quality type was available on both extruders." + assert result["quality_type_both"].is_available, "This quality type was available on both extruders and thus should be made available." + assert "quality_type_0" in result, "This quality type was available for one of the extruders, and so there must be a group for it (even though it's unavailable)." + assert not result["quality_type_0"].is_available, "This quality type was only available for one of the extruders and thus can't be activated." + assert "quality_type_1" in result, "This quality type was available for one of the extruders, and so there must be a group for it (even though it's unavailable)." + assert not result["quality_type_1"].is_available, "This quality type was only available for one of the extruders and thus can't be activated." \ No newline at end of file diff --git a/tests/Machines/TestMaterialNode.py b/tests/Machines/TestMaterialNode.py new file mode 100644 index 0000000000..a04c8b253b --- /dev/null +++ b/tests/Machines/TestMaterialNode.py @@ -0,0 +1,155 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from unittest.mock import patch, MagicMock +import pytest + +from cura.Machines.MaterialNode import MaterialNode + +instance_container_metadata_dict = {"fdmprinter": {"no_variant": [{"id": "quality_1", "material": "material_1"}]}, + "machine_1": {"variant_1": {"material_1": [{"id": "quality_2", "material": "material_1"}, {"id": "quality_3","material": "material_1"}]}}} + +metadata_dict = {} + + +def getMetadataEntrySideEffect(*args, **kwargs): + return metadata_dict.get(args[0]) + + +def createMockedInstanceContainer(container_id): + result = MagicMock() + result.getId = MagicMock(return_value=container_id) + result.getMetaDataEntry = MagicMock(side_effect=getMetadataEntrySideEffect) + return result + + +def getInstanceContainerSideEffect(*args, **kwargs): + variant = kwargs.get("variant") + definition = kwargs.get("definition") + type = kwargs.get("type") + material = kwargs.get("material") + if material is not None and variant is not None: + definition_dict = instance_container_metadata_dict.get(definition) + variant_dict = definition_dict.get(variant) + material_dict = variant_dict.get("material_1") + return material_dict + if type == "quality": + if variant is None: + return instance_container_metadata_dict.get(definition).get("no_variant") + else: + return instance_container_metadata_dict.get(definition).get(variant).get("material_1") + if definition is None: + return [{"id": "material_1", "material": "material_1"}] + return instance_container_metadata_dict.get(definition).get("no_variant") + + +@pytest.fixture +def container_registry(): + result = MagicMock() + result.findInstanceContainersMetadata = MagicMock(side_effect=getInstanceContainerSideEffect) + result.findContainersMetadata = MagicMock(return_value = [{"base_file": "material_1", "material": "test_material_type", "GUID": "omg zomg"}]) + return result + + +def test_materialNodeInit_noMachineQuality(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = False + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + assert len(node.qualities) == 1 + assert "quality_1" in node.qualities + + +def test_materialNodeInit_MachineQuality(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = True + variant_node.machine.quality_definition = "machine_1" + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + assert len(node.qualities) == 2 + assert "quality_2" in node.qualities + assert "quality_3" in node.qualities + + +def test_onRemoved_wrongContainer(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = True + variant_node.machine.quality_definition = "machine_1" + variant_node.materials = {"material_1": MagicMock()} + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance",MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + container = createMockedInstanceContainer("material_2") + node._onRemoved(container) + + assert "material_1" in variant_node.materials + + +def test_onRemoved_rightContainer(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = True + variant_node.machine.quality_definition = "machine_1" + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + container = createMockedInstanceContainer("material_1") + variant_node.materials = {"material_1": MagicMock()} + node._onRemoved(container) + + assert "material_1" not in variant_node.materials + + +def test_onMetadataChanged(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = True + variant_node.machine.quality_definition = "machine_1" + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + # We only do this now since we do want it to be constructed but not actually re-evaluated. + node._loadAll = MagicMock() + + container = createMockedInstanceContainer("material_1") + container.getMetaData = MagicMock(return_value = {"base_file": "new_base_file", "material": "new_material_type", "GUID": "new_guid"}) + + node._onMetadataChanged(container) + + assert node.material_type == "new_material_type" + assert node.guid == "new_guid" + assert node.base_file == "new_base_file" + + +def test_onMetadataChanged_wrongContainer(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = True + variant_node.machine.quality_definition = "machine_1" + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", + MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + # We only do this now since we do want it to be constructed but not actually re-evaluated. + node._loadAll = MagicMock() + + container = createMockedInstanceContainer("material_2") + container.getMetaData = MagicMock( + return_value={"base_file": "new_base_file", "material": "new_material_type", "GUID": "new_guid"}) + + node._onMetadataChanged(container) + + assert node.material_type == "test_material_type" + assert node.guid == "omg zomg" + assert node.base_file == "material_1" diff --git a/tests/Machines/TestQualityNode.py b/tests/Machines/TestQualityNode.py new file mode 100644 index 0000000000..ffe897d203 --- /dev/null +++ b/tests/Machines/TestQualityNode.py @@ -0,0 +1,95 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from unittest.mock import patch, MagicMock +import pytest + +from cura.Machines.QualityNode import QualityNode + +## Metadata for hypothetical containers that get put in the registry. +metadatas = [ + { + "id": "matching_intent", # Matches our query. + "type": "intent", + "definition": "correct_definition", + "variant": "correct_variant", + "material": "correct_material", + "quality_type": "correct_quality_type" + }, + { + "id": "matching_intent_2", # Matches our query as well. + "type": "intent", + "definition": "correct_definition", + "variant": "correct_variant", + "material": "correct_material", + "quality_type": "correct_quality_type" + }, + { + "id": "bad_type", + "type": "quality", # Doesn't match because it's not an intent. + "definition": "correct_definition", + "variant": "correct_variant", + "material": "correct_material", + "quality_type": "correct_quality_type" + }, + { + "id": "bad_definition", + "type": "intent", + "definition": "wrong_definition", # Doesn't match on the definition. + "variant": "correct_variant", + "material": "correct_material", + "quality_type": "correct_quality_type" + }, + { + "id": "bad_variant", + "type": "intent", + "definition": "correct_definition", + "variant": "wrong_variant", # Doesn't match on the variant. + "material": "correct_material", + "quality_type": "correct_quality_type" + }, + { + "id": "bad_material", + "type": "intent", + "definition": "correct_definition", + "variant": "correct_variant", + "material": "wrong_material", # Doesn't match on the material. + "quality_type": "correct_quality_type" + }, + { + "id": "bad_quality", + "type": "intent", + "definition": "correct_definition", + "variant": "correct_variant", + "material": "correct_material", + "quality_type": "wrong_quality_type" # Doesn't match on the quality type. + }, + { + "id": "quality_1", + "quality_type": "correct_quality_type", + "material": "correct_material" + } +] + +@pytest.fixture +def container_registry(): + result = MagicMock() + def findContainersMetadata(**kwargs): + return [metadata for metadata in metadatas if kwargs.items() <= metadata.items()] + result.findContainersMetadata = findContainersMetadata + result.findInstanceContainersMetadata = findContainersMetadata + return result + +def test_qualityNode_machine_1(container_registry): + material_node = MagicMock() + material_node.variant.machine.quality_definition = "correct_definition" + material_node.variant.variant_name = "correct_variant" + + with patch("cura.Machines.QualityNode.IntentNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + node = QualityNode("quality_1", material_node) + + assert len(node.intents) == 3 + assert "matching_intent" in node.intents + assert "matching_intent_2" in node.intents + assert "empty_intent" in node.intents \ No newline at end of file diff --git a/tests/Machines/TestVariantNode.py b/tests/Machines/TestVariantNode.py new file mode 100644 index 0000000000..9a0213ef99 --- /dev/null +++ b/tests/Machines/TestVariantNode.py @@ -0,0 +1,186 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import collections # For OrderedDict to ensure that the first iteration of preferred material is dependable. +from unittest.mock import patch, MagicMock +import pytest + +from cura.Machines.VariantNode import VariantNode +import copy + +instance_container_metadata_dict = {"fdmprinter": {"no_variant": [{"base_file": "material_1", "id": "material_1"}, {"base_file": "material_2", "id": "material_2"}]}, + "machine_1": {"no_variant": [{"base_file": "material_1", "id": "material_1"}, {"base_file": "material_2", "id": "material_2"}], + "Variant One": [{"base_file": "material_1", "id": "material_1"}, {"base_file": "material_2", "id": "material_2"}]}} + + +material_node_added_test_data = [({"type": "Not a material"}, ["material_1", "material_2"]), # Wrong type + ({"type": "material", "base_file": "material_3"}, ["material_1", "material_2"]), # material_3 is on the "NOPE" list. + ({"type": "material", "base_file": "material_4", "definition": "machine_3"}, ["material_1", "material_2"]), # Wrong machine + ({"type": "material", "base_file": "material_4", "definition": "machine_1"}, ["material_1", "material_2", "material_4"]), # No variant + ({"type": "material", "base_file": "material_4", "definition": "machine_1", "variant_name": "Variant Three"}, ["material_1", "material_2"]), # Wrong variant + ({"type": "material", "base_file": "material_4", "definition": "machine_1", "variant_name": "Variant One"}, ["material_1", "material_2", "material_4"]) + ] + +material_node_update_test_data = [({"type": "material", "base_file": "material_1", "definition": "machine_1", "variant_name": "Variant One"}, ["material_1"], ["material_2"]), + ({"type": "material", "base_file": "material_1", "definition": "fdmprinter", "variant_name": "Variant One"}, [], ["material_2", "material_1"]), # Too generic + ({"type": "material", "base_file": "material_1", "definition": "machine_2", "variant_name": "Variant One"}, [], ["material_2", "material_1"]) # Wrong definition + ] + +metadata_dict = {} + + +def getMetadataEntrySideEffect(*args, **kwargs): + return metadata_dict.get(args[0]) + + +def getInstanceContainerSideEffect(*args, **kwargs): + variant = kwargs.get("variant") + definition = kwargs.get("definition") + + if variant is not None: + return instance_container_metadata_dict.get(definition).get(variant) + return instance_container_metadata_dict.get(definition).get("no_variant") + + +@pytest.fixture +def machine_node(): + mocked_machine_node = MagicMock() + mocked_machine_node.container_id = "machine_1" + mocked_machine_node.preferred_material = "preferred_material" + return mocked_machine_node + +## Constructs a variant node without any subnodes. +# +# This is useful for performing tests on VariantNode without being dependent +# on how _loadAll works. +@pytest.fixture +def empty_variant_node(machine_node): + container_registry = MagicMock( + findContainersMetadata = MagicMock(return_value = [{"name": "test variant name"}]) + ) + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.Machines.VariantNode.VariantNode._loadAll", MagicMock()): + result = VariantNode("test_variant", machine = machine_node) + return result + +@pytest.fixture +def container_registry(): + result = MagicMock() + result.findInstanceContainersMetadata = MagicMock(side_effect = getInstanceContainerSideEffect) + result.findContainersMetadata = MagicMock(return_value = [{"name": "Variant One"}]) + return result + + +def createMockedInstanceContainer(): + result = MagicMock() + result.getMetaDataEntry = MagicMock(side_effect=getMetadataEntrySideEffect) + return result + + +def createVariantNode(container_id, machine_node, container_registry): + with patch("cura.Machines.VariantNode.MaterialNode"): # We're not testing the material node here, so patch it out. + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + return VariantNode(container_id, machine_node) + + +def test_variantNodeInit(container_registry, machine_node): + node = createVariantNode("variant_1", machine_node, container_registry) + + assert "material_1" in node.materials + assert "material_2" in node.materials + assert len(node.materials) == 2 + + +def test_variantNodeInit_excludedMaterial(container_registry, machine_node): + machine_node.exclude_materials = ["material_1"] + node = createVariantNode("variant_1", machine_node, container_registry) + + assert "material_1" not in node.materials + assert "material_2" in node.materials + assert len(node.materials) == 1 + + +@pytest.mark.parametrize("metadata,material_result_list", material_node_added_test_data) +def test_materialAdded(container_registry, machine_node, metadata, material_result_list): + variant_node = createVariantNode("machine_1", machine_node, container_registry) + machine_node.exclude_materials = ["material_3"] + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.Machines.VariantNode.MaterialNode"): # We're not testing the material node here, so patch it out. + with patch.dict(metadata_dict, metadata): + mocked_container = createMockedInstanceContainer() + variant_node._materialAdded(mocked_container) + + assert len(material_result_list) == len(variant_node.materials) + for name in material_result_list: + assert name in variant_node.materials + + +@pytest.mark.parametrize("metadata,changed_material_list,unchanged_material_list", material_node_update_test_data) +def test_materialAdded_update(container_registry, machine_node, metadata, changed_material_list, unchanged_material_list): + variant_node = createVariantNode("machine_1", machine_node, container_registry) + original_material_nodes = copy.copy(variant_node.materials) + + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.Machines.VariantNode.MaterialNode"): # We're not testing the material node here, so patch it out. + with patch.dict(metadata_dict, metadata): + mocked_container = createMockedInstanceContainer() + variant_node._materialAdded(mocked_container) + + for key in unchanged_material_list: + assert original_material_nodes[key] == variant_node.materials[key] + + for key in changed_material_list: + assert original_material_nodes[key] != variant_node.materials[key] + +## Tests the preferred material when the exact base file is available in the +# materials list for this node. +def test_preferredMaterialExactMatch(empty_variant_node): + empty_variant_node.materials = { + "some_different_material": MagicMock(getMetaDataEntry = lambda x: 3), + "preferred_material": MagicMock(getMetaDataEntry = lambda x: 3) # Exact match. + } + empty_variant_node.machine.preferred_material = "preferred_material" + + assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["preferred_material"], "It should match exactly on this one since it's the preferred material." + +## Tests the preferred material when a submaterial is available in the +# materials list for this node. +def test_preferredMaterialSubmaterial(empty_variant_node): + empty_variant_node.materials = { + "some_different_material": MagicMock(getMetaDataEntry = lambda x: 3), + "preferred_material_base_file_aa04": MagicMock(getMetaDataEntry = lambda x: 3) # This is a submaterial of the preferred material. + } + empty_variant_node.machine.preferred_material = "preferred_material_base_file_aa04" + + assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["preferred_material_base_file_aa04"], "It should match on the submaterial just as well." + +## Tests the preferred material matching on the approximate diameter of the +# filament. +def test_preferredMaterialDiameter(empty_variant_node): + empty_variant_node.materials = { + "some_different_material": MagicMock(getMetaDataEntry = lambda x: 3), + "preferred_material_wrong_diameter": MagicMock(getMetaDataEntry = lambda x: 2), # Approximate diameter is 2 instead of 3. + "preferred_material_correct_diameter": MagicMock(getMetaDataEntry = lambda x: 3) # Correct approximate diameter. + } + empty_variant_node.machine.preferred_material = "preferred_material_correct_diameter" + + assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["preferred_material_correct_diameter"], "It should match only on the material with correct diameter." + +## Tests the preferred material matching on a different material if the +# diameter is wrong. +def test_preferredMaterialDiameterNoMatch(empty_variant_node): + empty_variant_node.materials = collections.OrderedDict() + empty_variant_node.materials["some_different_material"] = MagicMock(getMetaDataEntry = lambda x: 3) # This one first so that it gets iterated over first. + empty_variant_node.materials["preferred_material"] = MagicMock(getMetaDataEntry = lambda x: 2) # Wrong diameter. + + assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["some_different_material"], "It should match on another material with the correct diameter if the preferred one is unavailable." + +## Tests that the material diameter is considered more important to match than +# the preferred diameter. +def test_preferredMaterialDiameterPreference(empty_variant_node): + empty_variant_node.materials = collections.OrderedDict() + empty_variant_node.materials["some_different_material"] = MagicMock(getMetaDataEntry = lambda x: 2) # This one first so that it gets iterated over first. + empty_variant_node.materials["preferred_material"] = MagicMock(getMetaDataEntry = lambda x: 2) # Matches on ID but not diameter. + empty_variant_node.materials["not_preferred_but_correct_diameter"] = MagicMock(getMetaDataEntry = lambda x: 3) # Matches diameter but not ID. + + assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["not_preferred_but_correct_diameter"], "It should match on the correct diameter even if it's not the preferred one." \ No newline at end of file diff --git a/tests/PrinterOutput/TestPrintJobOutputModel.py b/tests/PrinterOutput/Models/TestPrintJobOutputModel.py similarity index 87% rename from tests/PrinterOutput/TestPrintJobOutputModel.py rename to tests/PrinterOutput/Models/TestPrintJobOutputModel.py index 658cff7a7e..b70883dd82 100644 --- a/tests/PrinterOutput/TestPrintJobOutputModel.py +++ b/tests/PrinterOutput/Models/TestPrintJobOutputModel.py @@ -2,16 +2,16 @@ from unittest.mock import MagicMock import pytest -from cura.PrinterOutput.ConfigurationModel import ConfigurationModel -from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel -from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel +from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel +from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel +from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel test_validate_data_get_set = [ {"attribute": "compatibleMachineFamilies", "value": ["yay"]}, ] test_validate_data_get_update = [ - {"attribute": "configuration", "value": ConfigurationModel()}, + {"attribute": "configuration", "value": PrinterConfigurationModel()}, {"attribute": "owner", "value": "WHOO"}, {"attribute": "assignedPrinter", "value": PrinterOutputModel(MagicMock())}, {"attribute": "key", "value": "YAY"}, diff --git a/tests/PrinterOutput/TestConfigurationModel.py b/tests/PrinterOutput/Models/TestPrinterConfigurationModel.py similarity index 84% rename from tests/PrinterOutput/TestConfigurationModel.py rename to tests/PrinterOutput/Models/TestPrinterConfigurationModel.py index d6b7b885c2..84b1d1b5bf 100644 --- a/tests/PrinterOutput/TestConfigurationModel.py +++ b/tests/PrinterOutput/Models/TestPrinterConfigurationModel.py @@ -4,8 +4,8 @@ from unittest.mock import MagicMock import pytest -from cura.PrinterOutput.ConfigurationModel import ConfigurationModel -from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel +from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel +from cura.PrinterOutput.Models.ExtruderConfigurationModel import ExtruderConfigurationModel test_validate_data_get_set = [ {"attribute": "extruderConfigurations", "value": [ExtruderConfigurationModel()]}, @@ -16,7 +16,7 @@ test_validate_data_get_set = [ @pytest.mark.parametrize("data", test_validate_data_get_set) def test_getAndSet(data): - model = ConfigurationModel() + model = PrinterConfigurationModel() # Convert the first letter into a capital attribute = list(data["attribute"]) diff --git a/tests/PrinterOutput/TestPrinterOutputModel.py b/tests/PrinterOutput/Models/TestPrinterOutputModel.py similarity index 50% rename from tests/PrinterOutput/TestPrinterOutputModel.py rename to tests/PrinterOutput/Models/TestPrinterOutputModel.py index f42149d50f..9848e0a5fa 100644 --- a/tests/PrinterOutput/TestPrinterOutputModel.py +++ b/tests/PrinterOutput/Models/TestPrinterOutputModel.py @@ -4,12 +4,15 @@ from unittest.mock import MagicMock import pytest -from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel -from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel +from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel +from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel +from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel +from cura.PrinterOutput.Peripheral import Peripheral test_validate_data_get_set = [ {"attribute": "name", "value": "YAY"}, {"attribute": "targetBedTemperature", "value": 192}, + {"attribute": "cameraUrl", "value": "YAY!"} ] test_validate_data_get_update = [ @@ -22,6 +25,7 @@ test_validate_data_get_update = [ {"attribute": "targetBedTemperature", "value": 9001}, {"attribute": "activePrintJob", "value": PrintJobOutputModel(MagicMock())}, {"attribute": "state", "value": "BEEPBOOP"}, + ] @@ -79,3 +83,67 @@ def test_getAndUpdate(data): getattr(model, "update" + attribute)(data["value"]) # The signal should not fire again assert signal.emit.call_count == 1 + + +def test_peripherals(): + model = PrinterOutputModel(MagicMock()) + model.peripheralsChanged = MagicMock() + + peripheral = MagicMock(spec=Peripheral) + peripheral.name = "test" + peripheral2 = MagicMock(spec=Peripheral) + peripheral2.name = "test2" + + model.addPeripheral(peripheral) + assert model.peripheralsChanged.emit.call_count == 1 + model.addPeripheral(peripheral2) + assert model.peripheralsChanged.emit.call_count == 2 + + assert model.peripherals == "test, test2" + + model.removePeripheral(peripheral) + assert model.peripheralsChanged.emit.call_count == 3 + assert model.peripherals == "test2" + + +def test_availableConfigurations_addConfiguration(): + model = PrinterOutputModel(MagicMock()) + + configuration = MagicMock(spec = PrinterConfigurationModel) + + model.addAvailableConfiguration(configuration) + assert model.availableConfigurations == [configuration] + + +def test_availableConfigurations_addConfigTwice(): + model = PrinterOutputModel(MagicMock()) + + configuration = MagicMock(spec=PrinterConfigurationModel) + + model.setAvailableConfigurations([configuration]) + assert model.availableConfigurations == [configuration] + + # Adding it again should not have any effect + model.addAvailableConfiguration(configuration) + assert model.availableConfigurations == [configuration] + + +def test_availableConfigurations_removeConfig(): + model = PrinterOutputModel(MagicMock()) + + configuration = MagicMock(spec=PrinterConfigurationModel) + + model.addAvailableConfiguration(configuration) + model.removeAvailableConfiguration(configuration) + assert model.availableConfigurations == [] + + +def test_removeAlreadyRemovedConfiguration(): + model = PrinterOutputModel(MagicMock()) + + configuration = MagicMock(spec=PrinterConfigurationModel) + model.availableConfigurationsChanged = MagicMock() + model.removeAvailableConfiguration(configuration) + assert model.availableConfigurationsChanged.emit.call_count == 0 + assert model.availableConfigurations == [] + diff --git a/tests/PrinterOutput/TestNetworkedPrinterOutputDevice.py b/tests/PrinterOutput/TestNetworkedPrinterOutputDevice.py new file mode 100644 index 0000000000..da3ce66ac4 --- /dev/null +++ b/tests/PrinterOutput/TestNetworkedPrinterOutputDevice.py @@ -0,0 +1,133 @@ +import time +from unittest.mock import MagicMock + +from PyQt5.QtNetwork import QNetworkAccessManager +from PyQt5.QtCore import QUrl +from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState +from cura.PrinterOutput.PrinterOutputDevice import ConnectionState + + +def test_properties(): + properties = { b"firmware_version": b"12", b"printer_type": b"BHDHAHHADAD", b"address": b"ZOMG", b"name": b":(", b"testProp": b"zomg"} + + output_device = NetworkedPrinterOutputDevice(device_id = "test", address = "127.0.0.1", properties = properties) + assert output_device.address == "ZOMG" + assert output_device.firmwareVersion == "12" + assert output_device.printerType == "BHDHAHHADAD" + assert output_device.ipAddress == "127.0.0.1" + assert output_device.name == ":(" + assert output_device.key == "test" + assert output_device.getProperties() == properties + + assert output_device.getProperty("testProp") == "zomg" + assert output_device.getProperty("whateverr") == "" + + +def test_authenticationState(): + output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={}) + + output_device.setAuthenticationState(AuthState.Authenticated) + + assert output_device.authenticationState == AuthState.Authenticated + + +def test_post(): + output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={}) + mocked_network_manager = MagicMock() + output_device._manager = mocked_network_manager + + # Create a fake reply (we cant use a QReply, since those are abstract C++) + reply = MagicMock() + reply.operation = MagicMock(return_value=QNetworkAccessManager.PostOperation) + reply.url = MagicMock(return_value=QUrl("127.0.0.1")) + mocked_network_manager.post = MagicMock(return_value = reply) + + mocked_callback_handler = MagicMock() + output_device.post("whatever", "omgzomg", on_finished = mocked_callback_handler.onFinished) + + # So we now fake that the request was sucesful. + output_device._handleOnFinished(reply) + + # We expect to get a callback regarding this. + mocked_callback_handler.onFinished.assert_called_once_with(reply) + + +def test_get(): + output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={}) + mocked_network_manager = MagicMock() + output_device._manager = mocked_network_manager + + # Create a fake reply (we cant use a QReply, since those are abstract C++) + reply = MagicMock() + reply.operation = MagicMock(return_value=QNetworkAccessManager.PostOperation) + reply.url = MagicMock(return_value=QUrl("127.0.0.1")) + mocked_network_manager.get = MagicMock(return_value=reply) + + mocked_callback_handler = MagicMock() + output_device.get("whatever", on_finished=mocked_callback_handler.onFinished) + + # So we now fake that the request was sucesful. + output_device._handleOnFinished(reply) + + # We expect to get a callback regarding this. + mocked_callback_handler.onFinished.assert_called_once_with(reply) + + +def test_delete(): + output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={}) + mocked_network_manager = MagicMock() + output_device._manager = mocked_network_manager + + # Create a fake reply (we cant use a QReply, since those are abstract C++) + reply = MagicMock() + reply.operation = MagicMock(return_value=QNetworkAccessManager.PostOperation) + reply.url = MagicMock(return_value=QUrl("127.0.0.1")) + mocked_network_manager.deleteResource = MagicMock(return_value=reply) + + mocked_callback_handler = MagicMock() + output_device.delete("whatever", on_finished=mocked_callback_handler.onFinished) + + # So we now fake that the request was sucesful. + output_device._handleOnFinished(reply) + + # We expect to get a callback regarding this. + mocked_callback_handler.onFinished.assert_called_once_with(reply) + + +def test_put(): + output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={}) + mocked_network_manager = MagicMock() + output_device._manager = mocked_network_manager + + # Create a fake reply (we cant use a QReply, since those are abstract C++) + reply = MagicMock() + reply.operation = MagicMock(return_value=QNetworkAccessManager.PostOperation) + reply.url = MagicMock(return_value=QUrl("127.0.0.1")) + mocked_network_manager.put = MagicMock(return_value = reply) + + mocked_callback_handler = MagicMock() + output_device.put("whatever", "omgzomg", on_finished = mocked_callback_handler.onFinished) + + # So we now fake that the request was sucesful. + output_device._handleOnFinished(reply) + + # We expect to get a callback regarding this. + mocked_callback_handler.onFinished.assert_called_once_with(reply) + + +def test_timeout(): + output_device = NetworkedPrinterOutputDevice(device_id="test", address="127.0.0.1", properties={}) + output_device.setConnectionState(ConnectionState.Connected) + + assert output_device.connectionState == ConnectionState.Connected + output_device._update() + # Pretend we didn't get any response for 15 seconds + output_device._last_response_time = time.time() - 15 + # But we did recently ask for a response! + output_device._last_request_time = time.time() - 5 + output_device._update() + + # The connection should now be closed, since it went into timeout. + assert output_device.connectionState == ConnectionState.Closed + + diff --git a/tests/PrinterOutput/TestPrinterOutputDevice.py b/tests/PrinterOutput/TestPrinterOutputDevice.py new file mode 100644 index 0000000000..7a9e4e2cc5 --- /dev/null +++ b/tests/PrinterOutput/TestPrinterOutputDevice.py @@ -0,0 +1,88 @@ +from unittest.mock import MagicMock + +import pytest +from unittest.mock import patch + +from cura.PrinterOutput.Models.ExtruderConfigurationModel import ExtruderConfigurationModel +from cura.PrinterOutput.Models.MaterialOutputModel import MaterialOutputModel +from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel +from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel +from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice + +test_validate_data_get_set = [ + {"attribute": "connectionText", "value": "yay"}, + {"attribute": "connectionState", "value": 1}, +] + +@pytest.fixture() +def printer_output_device(): + with patch("UM.Application.Application.getInstance"): + return PrinterOutputDevice("whatever") + + +@pytest.mark.parametrize("data", test_validate_data_get_set) +def test_getAndSet(data, printer_output_device): + model = printer_output_device + + # Convert the first letter into a capital + attribute = list(data["attribute"]) + attribute[0] = attribute[0].capitalize() + attribute = "".join(attribute) + + # mock the correct emit + setattr(model, data["attribute"] + "Changed", MagicMock()) + + # Attempt to set the value + getattr(model, "set" + attribute)(data["value"]) + + # Check if signal fired. + signal = getattr(model, data["attribute"] + "Changed") + assert signal.emit.call_count == 1 + + # Ensure that the value got set + assert getattr(model, data["attribute"]) == data["value"] + + # Attempt to set the value again + getattr(model, "set" + attribute)(data["value"]) + # The signal should not fire again + assert signal.emit.call_count == 1 + + +def test_uniqueConfigurations(printer_output_device): + printer = PrinterOutputModel(MagicMock()) + # Add a printer and fire the signal that ensures they get hooked up correctly. + printer_output_device._printers = [printer] + printer_output_device._onPrintersChanged() + + assert printer_output_device.uniqueConfigurations == [] + configuration = PrinterConfigurationModel() + printer.addAvailableConfiguration(configuration) + + assert printer_output_device.uniqueConfigurations == [configuration] + + # Once the type of printer is set, it's active configuration counts as being set. + # In that case, that should also be added to the list of available configurations + printer.updateType("blarg!") + loaded_material = MaterialOutputModel(guid = "", type = "PLA", color = "Blue", brand = "Generic", name = "Blue PLA") + loaded_left_extruder = ExtruderConfigurationModel(0) + loaded_left_extruder.setMaterial(loaded_material) + loaded_right_extruder = ExtruderConfigurationModel(1) + loaded_right_extruder.setMaterial(loaded_material) + printer.printerConfiguration.setExtruderConfigurations([loaded_left_extruder, loaded_right_extruder]) + assert printer_output_device.uniqueConfigurations == [configuration, printer.printerConfiguration] + + +def test_uniqueConfigurations_empty_is_filtered_out(printer_output_device): + printer = PrinterOutputModel(MagicMock()) + # Add a printer and fire the signal that ensures they get hooked up correctly. + printer_output_device._printers = [printer] + printer_output_device._onPrintersChanged() + + printer.updateType("blarg!") + empty_material = MaterialOutputModel(guid = "", type = "empty", color = "empty", brand = "Generic", name = "Empty") + empty_left_extruder = ExtruderConfigurationModel(0) + empty_left_extruder.setMaterial(empty_material) + empty_right_extruder = ExtruderConfigurationModel(1) + empty_right_extruder.setMaterial(empty_material) + printer.printerConfiguration.setExtruderConfigurations([empty_left_extruder, empty_right_extruder]) + assert printer_output_device.uniqueConfigurations == [] diff --git a/tests/Settings/MockContainer.py b/tests/Settings/MockContainer.py new file mode 100644 index 0000000000..0400359154 --- /dev/null +++ b/tests/Settings/MockContainer.py @@ -0,0 +1,134 @@ +from typing import Optional + +from UM.Settings.Interfaces import ContainerInterface +import UM.PluginObject +from UM.Signal import Signal + + +## Fake container class to add to the container registry. +# +# This allows us to test the container registry without testing the container +# class. If something is wrong in the container class it won't influence this +# test. + +class MockContainer(ContainerInterface, UM.PluginObject.PluginObject): + ## Initialise a new definition container. + # + # The container will have the specified ID and all metadata in the + # provided dictionary. + def __init__(self, metadata = None): + super().__init__() + if metadata is None: + self._metadata = {} + else: + self._metadata = metadata + self._plugin_id = "MockContainerPlugin" + + ## Gets the ID that was provided at initialisation. + # + # \return The ID of the container. + def getId(self): + return self._metadata["id"] + + ## Gets all metadata of this container. + # + # This returns the metadata dictionary that was provided in the + # constructor of this mock container. + # + # \return The metadata for this container. + def getMetaData(self): + return self._metadata + + ## Gets a metadata entry from the metadata dictionary. + # + # \param key The key of the metadata entry. + # \return The value of the metadata entry, or None if there is no such + # entry. + def getMetaDataEntry(self, entry, default = None): + if entry in self._metadata: + return self._metadata[entry] + return default + + ## Gets a human-readable name for this container. + # \return The name from the metadata, or "MockContainer" if there was no + # name provided. + def getName(self): + return self._metadata.get("name", "MockContainer") + + ## Get whether a container stack is enabled or not. + # \return Always returns True. + @property + def isEnabled(self): + return True + + ## Get whether the container item is stored on a read only location in the filesystem. + # + # \return Always returns False + def isReadOnly(self): + return False + + ## Mock get path + def getPath(self): + return "/path/to/the/light/side" + + ## Mock set path + def setPath(self, path): + pass + + def getAllKeys(self): + pass + + # Should return false (or even throw an exception) if trust (or other verification) is invalidated. + def _trustHook(self, file_name: Optional[str]) -> bool: + return True + + def setProperty(self, key, property_name, property_value, container = None, set_from_cache = False): + pass + + def getProperty(self, key, property_name, context=None): + if key in self.items: + return self.items[key] + + return None + + ## Get the value of a container item. + # + # Since this mock container cannot contain any items, it always returns + # None. + # + # \return Always returns None. + def getValue(self, key): + pass + + ## Get whether the container item has a specific property. + # + # This method is not implemented in the mock container. + def hasProperty(self, key, property_name): + return key in self.items + + ## Serializes the container to a string representation. + # + # This method is not implemented in the mock container. + def serialize(self, ignored_metadata_keys = None): + raise NotImplementedError() + + ## Deserializes the container from a string representation. + # + # This method is not implemented in the mock container. + def deserialize(self, serialized, file_name: Optional[str] = None): + raise NotImplementedError() + + @classmethod + def getConfigurationTypeFromSerialized(cls, serialized: str): + raise NotImplementedError() + + @classmethod + def getVersionFromSerialized(cls, serialized): + raise NotImplementedError() + + def isDirty(self): + return True + + metaDataChanged = Signal() + propertyChanged = Signal() + containersChanged = Signal() diff --git a/tests/Settings/TestContainerManager.py b/tests/Settings/TestContainerManager.py new file mode 100644 index 0000000000..ff23b727e6 --- /dev/null +++ b/tests/Settings/TestContainerManager.py @@ -0,0 +1,80 @@ +from unittest import TestCase +from unittest.mock import MagicMock + +from PyQt5.QtCore import QUrl +from unittest.mock import patch +from UM.MimeTypeDatabase import MimeTypeDatabase +from cura.Settings.ContainerManager import ContainerManager +import tempfile +import os + +class TestContainerManager(TestCase): + def setUp(self): + + self._application = MagicMock() + self._container_registry = MagicMock() + self._machine_manager = MagicMock() + + self._mocked_mime = MagicMock() + self._mocked_mime.preferredSuffix = "omg" + self._mocked_mime.suffixes = ["omg"] + self._mocked_mime.comment = "UnitTest!" + + self._mocked_container = MagicMock() + self._mocked_container_data = "SOME DATA :D" + self._mocked_container.serialize = MagicMock(return_value = self._mocked_container_data) + + self._containers_meta_data = [{"id": "test", "test_data": "omg"}] + self._container_registry.findContainersMetadata = MagicMock(return_value = self._containers_meta_data) + self._container_registry.getMimeTypeForContainer = MagicMock(return_value = self._mocked_mime) + self._container_registry.findContainers = MagicMock(return_value = [self._mocked_container]) + self._application.getContainerRegistry = MagicMock(return_value = self._container_registry) + self._application.getMachineManager = MagicMock(return_value = self._machine_manager) + + # Destroy the previous instance of the container manager + if ContainerManager.getInstance() is not None: + ContainerManager._ContainerManager__instance = None + + self._container_manager = ContainerManager(self._application) + MimeTypeDatabase.addMimeType(self._mocked_mime) + + def tearDown(self): + MimeTypeDatabase.removeMimeType(self._mocked_mime) + + def test_getContainerMetaDataEntry(self): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=self._application)): + assert self._container_manager.getContainerMetaDataEntry("test", "test_data") == "omg" + assert self._container_manager.getContainerMetaDataEntry("test", "entry_that_is_not_defined") == "" + + def test_clearUserContainer(self): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=self._application)): + self._container_manager.clearUserContainers() + assert self._machine_manager.activeMachine.userChanges.clear.call_count == 1 + + def test_getContainerNameFilters(self): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=self._application)): + # If nothing is added, we still expect to get the all files filter + assert self._container_manager.getContainerNameFilters("") == ['All Files (*)'] + + # Pretend that a new type was added. + self._container_registry.getContainerTypes = MagicMock(return_value=[("None", None)]) + assert self._container_manager.getContainerNameFilters("") == ['UnitTest! (*.omg)', 'All Files (*)'] + + def test_exportContainerUnknownFileType(self): + # The filetype is not known, so this should cause an error! + assert self._container_manager.exportContainer("test", "zomg", "whatever")["status"] == "error" + + def test_exportContainerInvalidPath(self): + assert self._container_manager.exportContainer("test", "zomg", "")["status"] == "error" + assert self._container_manager.exportContainer("test", "zomg", QUrl())["status"] == "error" + + def test_exportContainerInvalidId(self): + assert self._container_manager.exportContainer("", "whatever", "whatever")["status"] == "error" + + def test_exportContainer(self): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=self._application)): + with tempfile.TemporaryDirectory() as tmpdirname: + result = self._container_manager.exportContainer("test", "whatever", os.path.join(tmpdirname, "whatever.omg")) + assert(os.path.exists(result["path"])) + with open(result["path"], "r", encoding="utf-8") as f: + assert f.read() == self._mocked_container_data \ No newline at end of file diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index 7a3bd94b68..6918329397 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -1,16 +1,18 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import os #To find the directory with test files and find the test files. +import pytest #To parameterize tests. import unittest.mock #To mock and monkeypatch stuff. from UM.Settings.DefinitionContainer import DefinitionContainer +from cura.ReaderWriters.ProfileReader import NoProfileException from cura.Settings.ExtruderStack import ExtruderStack #Testing for returning the correct types of stacks. from cura.Settings.GlobalStack import GlobalStack #Testing for returning the correct types of stacks. import UM.Settings.InstanceContainer #Creating instance containers to register. import UM.Settings.ContainerRegistry #Making empty container stacks. import UM.Settings.ContainerStack #Setting the container registry here properly. - +import cura.CuraApplication def teardown(): #If the temporary file for the legacy file rename test still exists, remove it. @@ -34,16 +36,22 @@ def test_createUniqueName(container_registry): # It should add a #2 to test2 assert container_registry.createUniqueName("user", "test", "test2", "nope") == "test2 #2" + # The provided suggestion is already correct, so nothing to do + assert container_registry.createUniqueName("user", "test", "test2 #2", "nope") == "test2 #2" + + # In case we don't provide a new name, use the fallback + assert container_registry.createUniqueName("user", "test", "", "nope") == "nope" + ## Tests whether addContainer properly converts to ExtruderStack. def test_addContainerExtruderStack(container_registry, definition_container, definition_changes_container): container_registry.addContainer(definition_container) container_registry.addContainer(definition_changes_container) - container_stack = UM.Settings.ContainerStack.ContainerStack(stack_id = "Test Extruder Stack") #A container we're going to convert. + container_stack = ExtruderStack("Test Extruder Stack") #A container we're going to convert. container_stack.setMetaDataEntry("type", "extruder_train") #This is now an extruder train. - container_stack.insertContainer(0, definition_container) #Add a definition to it so it doesn't complain. - container_stack.insertContainer(1, definition_changes_container) + container_stack.setDefinition(definition_container) #Add a definition to it so it doesn't complain. + container_stack.setDefinitionChanges(definition_changes_container) mock_super_add_container = unittest.mock.MagicMock() #Takes the role of the Uranium-ContainerRegistry where the resulting containers get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -59,10 +67,10 @@ def test_addContainerGlobalStack(container_registry, definition_container, defin container_registry.addContainer(definition_container) container_registry.addContainer(definition_changes_container) - container_stack = UM.Settings.ContainerStack.ContainerStack(stack_id = "Test Global Stack") #A container we're going to convert. + container_stack = GlobalStack("Test Global Stack") #A container we're going to convert. container_stack.setMetaDataEntry("type", "machine") #This is now a global stack. - container_stack.insertContainer(0, definition_container) #Must have a definition. - container_stack.insertContainer(1, definition_changes_container) #Must have a definition changes. + container_stack.setDefinition(definition_container) #Must have a definition. + container_stack.setDefinitionChanges(definition_changes_container) #Must have a definition changes. mock_super_add_container = unittest.mock.MagicMock() #Takes the role of the Uranium-ContainerRegistry where the resulting containers get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -119,3 +127,202 @@ def test_addContainerBadSettingVersion(container_registry, definition_container) container_registry.addContainer(instance) mock_super_add_container.assert_not_called() #Should not get passed on to UM.Settings.ContainerRegistry.addContainer, because the setting_version doesn't match its definition! + +test_loadMetaDataValidation_data = [ + { + "id": "valid_container", + "is_valid": True, + "metadata": { + "id": "valid_container", + "setting_version": None, #The tests sets this to the current version so it's always correct. + "foo": "bar" + } + }, + { + "id": "wrong_setting_version", + "is_valid": False, + "metadata": { + "id": "wrong_setting_version", + "setting_version": "5", + "foo": "bar" + } + }, + { + "id": "missing_setting_version", + "is_valid": False, + "metadata": { + "id": "missing_setting_version", + "foo": "bar" + } + }, + { + "id": "unparsable_setting_version", + "is_valid": False, + "metadata": { + "id": "unparsable_setting_version", + "setting_version": "Not an integer!", + "foo": "bar" + } + } +] + + +@pytest.mark.parametrize("parameters", test_loadMetaDataValidation_data) +def test_loadMetadataValidation(container_registry, definition_container, parameters): + from cura.CuraApplication import CuraApplication + definition_container.getMetaData()["setting_version"] = CuraApplication.SettingVersion + container_registry.addContainer(definition_container) + if "setting_version" in parameters["metadata"] and parameters["metadata"]["setting_version"] is None: #Signal that the setting_version must be set to the currently correct version. + parameters["metadata"]["setting_version"] = CuraApplication.SettingVersion + + mock_provider = unittest.mock.MagicMock() + mock_provider.getAllIds = unittest.mock.MagicMock(return_value = [parameters["id"]]) + mock_provider.loadMetadata = unittest.mock.MagicMock(return_value = parameters["metadata"]) + container_registry._providers = [mock_provider] + + container_registry.loadAllMetadata() #Run the test. + + if parameters["is_valid"]: + assert parameters["id"] in container_registry.metadata + assert container_registry.metadata[parameters["id"]] == parameters["metadata"] + else: + assert parameters["id"] not in container_registry.metadata + + +class TestExportQualityProfile: + # This class is just there to provide some grouping for the tests. + def test_exportQualityProfileInvalidFileType(self, container_registry): + # With an invalid file_type, we should get a false for success. + assert not container_registry.exportQualityProfile([], "zomg", "invalid") + + def test_exportQualityProfileFailedWriter(self, container_registry): + # Create a writer that always fails. + mocked_writer = unittest.mock.MagicMock(name = "mocked_writer") + mocked_writer.write = unittest.mock.MagicMock(return_value = False) + container_registry._findProfileWriter = unittest.mock.MagicMock("findProfileWriter", return_value = mocked_writer) + + # Ensure that it actually fails if the writer did. + with unittest.mock.patch("UM.Application.Application.getInstance"): + assert not container_registry.exportQualityProfile([], "zomg", "test files (*.tst)") + + def test_exportQualityProfileExceptionWriter(self, container_registry): + # Create a writer that always fails. + mocked_writer = unittest.mock.MagicMock(name = "mocked_writer") + mocked_writer.write = unittest.mock.MagicMock(return_value = True, side_effect = Exception("Failed :(")) + container_registry._findProfileWriter = unittest.mock.MagicMock("findProfileWriter", return_value = mocked_writer) + + # Ensure that it actually fails if the writer did. + with unittest.mock.patch("UM.Application.Application.getInstance"): + assert not container_registry.exportQualityProfile([], "zomg", "test files (*.tst)") + + def test_exportQualityProfileSuccessWriter(self, container_registry): + # Create a writer that always fails. + mocked_writer = unittest.mock.MagicMock(name="mocked_writer") + mocked_writer.write = unittest.mock.MagicMock(return_value=True) + container_registry._findProfileWriter = unittest.mock.MagicMock("findProfileWriter", return_value=mocked_writer) + + # Ensure that it actually fails if the writer did. + with unittest.mock.patch("UM.Application.Application.getInstance"): + assert container_registry.exportQualityProfile([], "zomg", "test files (*.tst)") + + +def test__findProfileWriterNoPlugins(container_registry): + # Mock it so that no IO plugins are found. + container_registry._getIOPlugins = unittest.mock.MagicMock(return_value = []) + + with unittest.mock.patch("UM.PluginRegistry.PluginRegistry.getInstance"): + # Since there are no writers, don't return any + assert container_registry._findProfileWriter(".zomg", "dunno") is None + + +def test__findProfileWriter(container_registry): + # Mock it so that no IO plugins are found. + container_registry._getIOPlugins = unittest.mock.MagicMock(return_value = [("writer_id", {"profile_writer": [{"extension": ".zomg", "description": "dunno"}]})]) + + with unittest.mock.patch("UM.PluginRegistry.PluginRegistry.getInstance"): + # In this case it's getting a mocked object (from the mocked_plugin_registry) + assert container_registry._findProfileWriter(".zomg", "dunno") is not None + + +def test_importProfileEmptyFileName(container_registry): + result = container_registry.importProfile("") + assert result["status"] == "error" + + +mocked_application = unittest.mock.MagicMock(name = "application") +mocked_plugin_registry = unittest.mock.MagicMock(name="mocked_plugin_registry") + +@unittest.mock.patch("UM.Application.Application.getInstance", unittest.mock.MagicMock(return_value = mocked_application)) +@unittest.mock.patch("UM.PluginRegistry.PluginRegistry.getInstance", unittest.mock.MagicMock(return_value = mocked_plugin_registry)) +class TestImportProfile: + mocked_global_stack = unittest.mock.MagicMock(name="global stack") + mocked_global_stack.extruders = {0: unittest.mock.MagicMock(name="extruder stack")} + mocked_global_stack.getId = unittest.mock.MagicMock(return_value="blarg") + mocked_profile_reader = unittest.mock.MagicMock() + + mocked_plugin_registry.getPluginObject = unittest.mock.MagicMock(return_value=mocked_profile_reader) + + def test_importProfileWithoutGlobalStack(self, container_registry): + mocked_application.getGlobalContainerStack = unittest.mock.MagicMock(return_value = None) + result = container_registry.importProfile("non_empty") + assert result["status"] == "error" + + def test_importProfileNoProfileException(self, container_registry): + container_registry._getIOPlugins = unittest.mock.MagicMock(return_value=[("reader_id", {"profile_reader": [{"extension": "zomg", "description": "dunno"}]})]) + mocked_application.getGlobalContainerStack = unittest.mock.MagicMock(return_value=self.mocked_global_stack) + self.mocked_profile_reader.read = unittest.mock.MagicMock(side_effect = NoProfileException) + result = container_registry.importProfile("test.zomg") + # It's not an error, but we also didn't find any profile to read. + assert result["status"] == "ok" + + def test_importProfileGenericException(self, container_registry): + container_registry._getIOPlugins = unittest.mock.MagicMock(return_value=[("reader_id", {"profile_reader": [{"extension": "zomg", "description": "dunno"}]})]) + mocked_application.getGlobalContainerStack = unittest.mock.MagicMock(return_value=self.mocked_global_stack) + self.mocked_profile_reader.read = unittest.mock.MagicMock(side_effect = Exception) + result = container_registry.importProfile("test.zomg") + assert result["status"] == "error" + + def test_importProfileNoDefinitionFound(self, container_registry): + container_registry._getIOPlugins = unittest.mock.MagicMock(return_value=[("reader_id", {"profile_reader": [{"extension": "zomg", "description": "dunno"}]})]) + mocked_application.getGlobalContainerStack = unittest.mock.MagicMock(return_value=self.mocked_global_stack) + container_registry.findDefinitionContainers = unittest.mock.MagicMock(return_value = []) + mocked_profile = unittest.mock.MagicMock(name = "Mocked_global_profile") + self.mocked_profile_reader.read = unittest.mock.MagicMock(return_value = [mocked_profile]) + + result = container_registry.importProfile("test.zomg") + assert result["status"] == "error" + + @pytest.mark.skip + def test_importProfileSuccess(self, container_registry): + container_registry._getIOPlugins = unittest.mock.MagicMock(return_value=[("reader_id", {"profile_reader": [{"extension": "zomg", "description": "dunno"}]})]) + + mocked_application.getGlobalContainerStack = unittest.mock.MagicMock(return_value=self.mocked_global_stack) + + mocked_definition = unittest.mock.MagicMock(name = "definition") + + container_registry.findContainers = unittest.mock.MagicMock(return_value=[mocked_definition]) + container_registry.findDefinitionContainers = unittest.mock.MagicMock(return_value = [mocked_definition]) + mocked_profile = unittest.mock.MagicMock(name = "Mocked_global_profile") + + self.mocked_profile_reader.read = unittest.mock.MagicMock(return_value = [mocked_profile]) + with unittest.mock.patch.object(container_registry, "createUniqueName", return_value="derp"): + with unittest.mock.patch.object(container_registry, "_configureProfile", return_value=None): + result = container_registry.importProfile("test.zomg") + + assert result["status"] == "ok" + + +@pytest.mark.parametrize("metadata,result", [(None, False), + ({}, False), + ({"setting_version": cura.CuraApplication.CuraApplication.SettingVersion}, True), + ({"setting_version": 0}, False)]) +def test_isMetaDataValid(container_registry, metadata, result): + assert container_registry._isMetadataValid(metadata) == result + + +def test_getIOPlugins(container_registry): + plugin_registry = unittest.mock.MagicMock() + plugin_registry.getActivePlugins = unittest.mock.MagicMock(return_value = ["lizard"]) + plugin_registry.getMetaData = unittest.mock.MagicMock(return_value = {"zomg": {"test": "test"}}) + with unittest.mock.patch("UM.PluginRegistry.PluginRegistry.getInstance", unittest.mock.MagicMock(return_value = plugin_registry)): + assert container_registry._getIOPlugins("zomg") == [("lizard", {"zomg": {"test": "test"}})] \ No newline at end of file diff --git a/tests/Settings/TestCuraStackBuilder.py b/tests/Settings/TestCuraStackBuilder.py new file mode 100644 index 0000000000..aebde3406f --- /dev/null +++ b/tests/Settings/TestCuraStackBuilder.py @@ -0,0 +1,105 @@ +from unittest.mock import patch, MagicMock + +import pytest + +from UM.Settings.InstanceContainer import InstanceContainer +from cura.Machines.QualityGroup import QualityGroup +from cura.Settings.CuraStackBuilder import CuraStackBuilder + +@pytest.fixture +def global_variant(): + container = InstanceContainer(container_id="global_variant") + container.setMetaDataEntry("type", "variant") + + return container + +@pytest.fixture +def material_instance_container(): + container = InstanceContainer(container_id="material container") + container.setMetaDataEntry("type", "material") + + return container + +@pytest.fixture +def quality_container(): + container = InstanceContainer(container_id="quality container") + container.setMetaDataEntry("type", "quality") + + return container + + +@pytest.fixture +def intent_container(): + container = InstanceContainer(container_id="intent container") + container.setMetaDataEntry("type", "intent") + + return container + + +@pytest.fixture +def quality_changes_container(): + container = InstanceContainer(container_id="quality changes container") + container.setMetaDataEntry("type", "quality_changes") + + return container + + +def test_createMachineWithUnknownDefinition(application, container_registry): + application.getContainerRegistry = MagicMock(return_value=container_registry) + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)): + with patch("UM.ConfigurationErrorMessage.ConfigurationErrorMessage.getInstance") as mocked_config_error: + assert CuraStackBuilder.createMachine("Whatever", "NOPE") is None + assert mocked_config_error.addFaultyContainers.called_with("NOPE") + + +def test_createMachine(application, container_registry, definition_container, global_variant, material_instance_container, + quality_container, intent_container, quality_changes_container): + variant_manager = MagicMock(name = "Variant Manager") + quality_manager = MagicMock(name = "Quality Manager") + global_variant_node = MagicMock(name = "global variant node") + global_variant_node.container = global_variant + + variant_manager.getDefaultVariantNode = MagicMock(return_value = global_variant_node) + quality_group = QualityGroup(name = "zomg", quality_type = "normal") + quality_group.node_for_global = MagicMock(name = "Node for global") + quality_group.node_for_global.container = quality_container + quality_manager.getQualityGroups = MagicMock(return_value = {"normal": quality_group}) + + application.getContainerRegistry = MagicMock(return_value=container_registry) + application.empty_material_container = material_instance_container + application.empty_quality_container = quality_container + application.empty_intent_container = intent_container + application.empty_quality_changes_container = quality_changes_container + application.empty_variant_container = global_variant + + metadata = definition_container.getMetaData() + metadata["machine_extruder_trains"] = {} + metadata["preferred_quality_type"] = "normal" + + container_registry.addContainer(definition_container) + quality_node = MagicMock() + machine_node = MagicMock() + machine_node.preferredGlobalQuality = MagicMock(return_value = quality_node) + quality_node.container = quality_container + + # Patch out the creation of MachineNodes since that isn't under test (and would require quite a bit of extra setup) + with patch("cura.Machines.ContainerTree.MachineNode", MagicMock(return_value = machine_node)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)): + machine = CuraStackBuilder.createMachine("Whatever", "Test Definition") + + assert machine.quality == quality_container + assert machine.definition == definition_container + assert machine.variant == global_variant + + +def test_createExtruderStack(application, definition_container, global_variant, material_instance_container, + quality_container, intent_container, quality_changes_container): + application.empty_material_container = material_instance_container + application.empty_quality_container = quality_container + application.empty_intent_container = intent_container + application.empty_quality_changes_container = quality_changes_container + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + extruder_stack = CuraStackBuilder.createExtruderStack("Whatever", definition_container, "meh", 0, global_variant, material_instance_container, quality_container) + assert extruder_stack.variant == global_variant + assert extruder_stack.material == material_instance_container + assert extruder_stack.quality == quality_container \ No newline at end of file diff --git a/tests/Settings/TestDefinitionContainer.py b/tests/Settings/TestDefinitionContainer.py index e4a993c26a..38251e4397 100644 --- a/tests/Settings/TestDefinitionContainer.py +++ b/tests/Settings/TestDefinitionContainer.py @@ -1,26 +1,34 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import json # To check files for unnecessarily overridden properties. +import os import pytest #This module contains automated tests. +from typing import Any, Dict +import uuid + +from unittest.mock import patch, MagicMock import UM.Settings.ContainerRegistry #To create empty instance containers. import UM.Settings.ContainerStack #To set the container registry the container stacks use. from UM.Settings.DefinitionContainer import DefinitionContainer #To check against the class of DefinitionContainer. - - -import os -import os.path -import uuid - from UM.Resources import Resources Resources.addSearchPath(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "resources"))) -machine_filepaths = os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions")) +machine_filepaths = sorted(os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions"))) +machine_filepaths = [os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions", filename) for filename in machine_filepaths] +extruder_filepaths = sorted(os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "extruders"))) +extruder_filepaths = [os.path.join(os.path.dirname(__file__), "..", "..", "resources", "extruders", filename) for filename in extruder_filepaths] +definition_filepaths = machine_filepaths + extruder_filepaths all_meshes = os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "meshes")) all_images = os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "images")) +# Loading definition files needs a functioning ContainerRegistry +cr = UM.Settings.ContainerRegistry.ContainerRegistry(None) + + @pytest.fixture def definition_container(): uid = str(uuid.uuid4()) @@ -30,21 +38,25 @@ def definition_container(): ## Tests all definition containers -@pytest.mark.parametrize("file_name", machine_filepaths) -def test_validateMachineDefinitionContainer(file_name, definition_container): +@pytest.mark.parametrize("file_path", machine_filepaths) +def test_validateMachineDefinitionContainer(file_path, definition_container): + file_name = os.path.basename(file_path) if file_name == "fdmprinter.def.json" or file_name == "fdmextruder.def.json": return # Stop checking, these are root files. - definition_path = os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions") - assert isDefinitionValid(definition_container, definition_path, file_name) + from UM.VersionUpgradeManager import FilesDataUpdateResult + + mocked_vum = MagicMock() + mocked_vum.updateFilesData = lambda ct, v, fdl, fnl: FilesDataUpdateResult(ct, v, fdl, fnl) + with patch("UM.VersionUpgradeManager.VersionUpgradeManager.getInstance", MagicMock(return_value = mocked_vum)): + assertIsDefinitionValid(definition_container, file_path) -def isDefinitionValid(definition_container, path, file_name): - with open(os.path.join(path, file_name), encoding = "utf-8") as data: +def assertIsDefinitionValid(definition_container, file_path): + with open(file_path, encoding = "utf-8") as data: json = data.read() parser, is_valid = definition_container.readAndValidateSerialized(json) - if not is_valid: - print("The definition '{0}', has invalid data.".format(file_name)) + assert is_valid #The definition has invalid JSON structure. metadata = DefinitionContainer.deserializeMetadata(json, "whatever") # If the definition defines a platform file, it should be in /resources/meshes/ @@ -54,4 +66,126 @@ def isDefinitionValid(definition_container, path, file_name): if "platform_texture" in metadata[0]: assert metadata[0]["platform_texture"] in all_images - return is_valid +## Tests whether setting values are not being hidden by parent containers. +# +# When a definition container defines a "default_value" but inherits from a +# definition that defines a "value", the "default_value" is ineffective. This +# test fails on those things. +@pytest.mark.parametrize("file_path", definition_filepaths) +def test_validateOverridingDefaultValue(file_path: str): + with open(file_path, encoding = "utf-8") as f: + doc = json.load(f) + + if "inherits" not in doc: + return # We only want to check for documents where the inheritance overrides the children. If there's no inheritance, this can't happen so it's fine. + if "overrides" not in doc: + return # No settings are being overridden. No need to check anything. + parent_settings = getInheritedSettings(doc["inherits"]) + faulty_keys = set() + for key, val in doc["overrides"].items(): + if key in parent_settings and "value" in parent_settings[key]: + if "default_value" in val: + faulty_keys.add(key) + assert not faulty_keys, "Unnecessary default_values for {faulty_keys} in {file_name}".format(faulty_keys = sorted(faulty_keys), file_name = file_path) # If there is a value in the parent settings, then the default_value is not effective. + +## Get all settings and their properties from a definition we're inheriting +# from. +# \param definition_id The definition we're inheriting from. +# \return A dictionary of settings by key. Each setting is a dictionary of +# properties. +def getInheritedSettings(definition_id: str) -> Dict[str, Any]: + definition_path = os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions", definition_id + ".def.json") + with open(definition_path, encoding = "utf-8") as f: + doc = json.load(f) + result = {} + + if "inherits" in doc: # Recursive inheritance. + result.update(getInheritedSettings(doc["inherits"])) + if "settings" in doc: + result.update(flattenSettings(doc["settings"])) + if "overrides" in doc: + result = merge_dicts(result, doc["overrides"]) + + return result + +## Put all settings in the main dictionary rather than in children dicts. +# \param settings Nested settings. The keys are the setting IDs. The values +# are dictionaries of properties per setting, including the "children" +# property. +# \return A dictionary of settings by key. Each setting is a dictionary of +# properties. +def flattenSettings(settings: Dict[str, Any]) -> Dict[str, Any]: + result = {} + for entry, contents in settings.items(): + if "children" in contents: + result.update(flattenSettings(contents["children"])) + del contents["children"] + result[entry] = contents + return result + +## Make one dictionary override the other. Nested dictionaries override each +# other in the same way. +# \param base A dictionary of settings that will get overridden by the other. +# \param overrides A dictionary of settings that will override the other. +# \return Combined setting data. +def merge_dicts(base: Dict[str, Any], overrides: Dict[str, Any]) -> Dict[str, Any]: + result = {} + result.update(base) + for key, val in overrides.items(): + if key not in result: + result[key] = val + continue + + if isinstance(result[key], dict) and isinstance(val, dict): + result[key] = merge_dicts(result[key], val) + else: + result[key] = val + return result + +## Verifies that definition contains don't have an ID field. +# +# ID fields are legacy. They should not be used any more. This is legacy that +# people don't seem to be able to get used to. +@pytest.mark.parametrize("file_path", definition_filepaths) +def test_noId(file_path: str): + with open(file_path, encoding = "utf-8") as f: + doc = json.load(f) + + assert "id" not in doc, "Definitions should not have an ID field." + +## Verifies that extruders say that they work on the same extruder_nr as what +# is listed in their machine definition. +@pytest.mark.parametrize("file_path", extruder_filepaths) +def test_extruderMatch(file_path: str): + extruder_id = os.path.basename(file_path).split(".")[0] + with open(file_path, encoding = "utf-8") as f: + doc = json.load(f) + + if "metadata" not in doc: + return # May not be desirable either, but it's probably unfinished then. + if "machine" not in doc["metadata"] or "position" not in doc["metadata"]: + return # FDMextruder doesn't have this since it's not linked to a particular printer. + machine = doc["metadata"]["machine"] + position = doc["metadata"]["position"] + + # Find the machine definition. + for machine_filepath in machine_filepaths: + machine_id = os.path.basename(machine_filepath).split(".")[0] + if machine_id == machine: + break + else: + assert False, "The machine ID {machine} is not found.".format(machine = machine) + with open(machine_filepath, encoding = "utf-8") as f: + machine_doc = json.load(f) + + # Make sure that the two match up. + assert "metadata" in machine_doc, "Machine definition missing metadata entry." + assert "machine_extruder_trains" in machine_doc["metadata"], "Machine must define extruder trains." + extruder_trains = machine_doc["metadata"]["machine_extruder_trains"] + assert position in extruder_trains, "There must be a reference to the extruder in the machine definition." + assert extruder_trains[position] == extruder_id, "The extruder referenced in the machine definition must match up." + + # Also test if the extruder_nr setting is properly overridden. + if "overrides" not in doc or "extruder_nr" not in doc["overrides"] or "default_value" not in doc["overrides"]["extruder_nr"]: + assert position == "0" # Default to 0 is allowed. + assert doc["overrides"]["extruder_nr"]["default_value"] == int(position) \ No newline at end of file diff --git a/tests/Settings/TestExtruderStack.py b/tests/Settings/TestExtruderStack.py index df2e1075d1..73d5f583b3 100644 --- a/tests/Settings/TestExtruderStack.py +++ b/tests/Settings/TestExtruderStack.py @@ -9,6 +9,7 @@ import UM.Settings.ContainerRegistry #To create empty instance containers. import UM.Settings.ContainerStack #To set the container registry the container stacks use. from UM.Settings.DefinitionContainer import DefinitionContainer #To check against the class of DefinitionContainer. from UM.Settings.InstanceContainer import InstanceContainer #To check against the class of InstanceContainer. +from cura.Settings import Exceptions from cura.Settings.Exceptions import InvalidContainerError, InvalidOperationError #To check whether the correct exceptions are raised. from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.cura_empty_instance_containers import empty_container @@ -297,4 +298,31 @@ def test_setPropertyUser(key, property, value, extruder_stack): extruder_stack.setProperty(key, property, value) #The actual test. - extruder_stack.userChanges.setProperty.assert_called_once_with(key, property, value, None, False) #Make sure that the user container gets a setProperty call. \ No newline at end of file + extruder_stack.userChanges.setProperty.assert_called_once_with(key, property, value, None, False) #Make sure that the user container gets a setProperty call. + + +def test_setEnabled(extruder_stack): + extruder_stack.setEnabled(True) + assert extruder_stack.isEnabled + extruder_stack.setEnabled(False) + assert not extruder_stack.isEnabled + + +def test_getPropertyWithoutGlobal(extruder_stack): + assert extruder_stack.getNextStack() is None + + with pytest.raises(Exceptions.NoGlobalStackError): + extruder_stack.getProperty("whatever", "value") + + +def test_getMachineDefinitionWithoutGlobal(extruder_stack): + assert extruder_stack.getNextStack() is None + + with pytest.raises(Exceptions.NoGlobalStackError): + extruder_stack._getMachineDefinition() + +def test_getMachineDefinition(extruder_stack): + mocked_next_stack = unittest.mock.MagicMock() + mocked_next_stack._getMachineDefinition = unittest.mock.MagicMock(return_value = "ZOMG") + extruder_stack.getNextStack = unittest.mock.MagicMock(return_value = mocked_next_stack) + assert extruder_stack._getMachineDefinition() == "ZOMG" \ No newline at end of file diff --git a/tests/Settings/TestProfiles.py b/tests/Settings/TestProfiles.py index f0fea06a4f..570a2c9964 100644 --- a/tests/Settings/TestProfiles.py +++ b/tests/Settings/TestProfiles.py @@ -82,7 +82,7 @@ def test_validateQualityProfiles(file_name): except Exception as e: # File can't be read, header sections missing, whatever the case, this shouldn't happen! - print("Go an Exception while reading he file [%s]: %s" % (file_name, e)) + print("Got an Exception while reading he file [%s]: %s" % (file_name, e)) assert False @@ -110,5 +110,5 @@ def test_validateVariantProfiles(file_name): assert False except Exception as e: # File can't be read, header sections missing, whatever the case, this shouldn't happen! - print("Go an Exception while reading he file [%s]: %s" % (file_name, e)) + print("Got an Exception while reading he file [%s]: %s" % (file_name, e)) assert False diff --git a/tests/Settings/TestSettingInheritanceManager.py b/tests/Settings/TestSettingInheritanceManager.py new file mode 100644 index 0000000000..3589d8b91f --- /dev/null +++ b/tests/Settings/TestSettingInheritanceManager.py @@ -0,0 +1,137 @@ +from unittest.mock import patch, MagicMock + +import pytest + +from UM.Settings.SettingFunction import SettingFunction +from UM.Settings.SettingInstance import InstanceState +from cura.Settings.SettingInheritanceManager import SettingInheritanceManager + +setting_function = SettingFunction("") +setting_function.getUsedSettingKeys = MagicMock(return_value = ["omg", "zomg"]) + +setting_property_dict = {"setting_1": {}, + "setting_2": {"state": InstanceState.User, "enabled": False}, + "setting_3": {"state": InstanceState.User, "enabled": True}, + "setting_4": {"state": InstanceState.User, "enabled": True, "value": 12}, + "setting_5": {"state": InstanceState.User, "enabled": True, "value": setting_function}} + + +def getPropertySideEffect(*args, **kwargs): + properties = setting_property_dict.get(args[0]) + if properties: + return properties.get(args[1]) + + +@pytest.fixture +def setting_inheritance_manager(): + with patch("UM.Application.Application.getInstance"): + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance"): + return SettingInheritanceManager() + +@pytest.fixture +def mocked_stack(): + mocked_stack = MagicMock() + mocked_stack.getProperty = MagicMock(side_effect=getPropertySideEffect) + mocked_stack.getNextStack = MagicMock(return_value = None) + mocked_stack.getAllKeys = MagicMock(return_value = ["omg", "zomg", "blarg"]) + return mocked_stack + +def test_getChildrenKeysWithOverrideNoGlobalStack(setting_inheritance_manager): + setting_inheritance_manager._global_container_stack = None + assert setting_inheritance_manager.getChildrenKeysWithOverride("derp") == [] + + +def test_getChildrenKeysWithOverrideEmptyDefinitions(setting_inheritance_manager): + mocked_global_container = MagicMock() + mocked_global_container.definition.findDefinitions = MagicMock(return_value = []) + setting_inheritance_manager._global_container_stack = mocked_global_container + assert setting_inheritance_manager.getChildrenKeysWithOverride("derp") == [] + + +def test_getChildrenKeysWithOverride(setting_inheritance_manager): + mocked_global_container = MagicMock() + mocked_definition = MagicMock() + mocked_definition.getAllKeys = MagicMock(return_value = ["omg", "zomg", "blarg"]) + mocked_global_container.definition.findDefinitions = MagicMock(return_value=[mocked_definition]) + setting_inheritance_manager._global_container_stack = mocked_global_container + + setting_inheritance_manager._settings_with_inheritance_warning = ["omg", "zomg"] + + assert setting_inheritance_manager.getChildrenKeysWithOverride("derp") == ["omg", "zomg"] + + +def test_manualRemoveOverrideWrongSetting(setting_inheritance_manager): + setting_inheritance_manager._settings_with_inheritance_warning = ["omg", "zomg"] + assert setting_inheritance_manager.settingsWithInheritanceWarning == ["omg", "zomg"] + + # Shouldn't do anything + setting_inheritance_manager.manualRemoveOverride("BLARG") + assert setting_inheritance_manager.settingsWithInheritanceWarning == ["omg", "zomg"] + + +def test_manualRemoveOverrideExistingSetting(setting_inheritance_manager): + setting_inheritance_manager._settings_with_inheritance_warning = ["omg", "zomg"] + assert setting_inheritance_manager.settingsWithInheritanceWarning == ["omg", "zomg"] + + # Shouldn't do anything + setting_inheritance_manager.manualRemoveOverride("omg") + assert setting_inheritance_manager.settingsWithInheritanceWarning == ["zomg"] + + +def test_getOverridesForExtruderNoGlobalStack(setting_inheritance_manager): + setting_inheritance_manager._global_container_stack = None + assert setting_inheritance_manager.getOverridesForExtruder("derp", 0) == [] + + +def test_settingIsOverwritingInheritanceNoUserState(setting_inheritance_manager, mocked_stack): + # Setting 1 doesn't have a user state, so it cant have an override + assert not setting_inheritance_manager._settingIsOverwritingInheritance("setting_1", mocked_stack) + + +def test_settingIsOverwritingInheritanceNotEnabled(setting_inheritance_manager, mocked_stack): + # Setting 2 doesn't have a enabled, so it cant have an override + assert not setting_inheritance_manager._settingIsOverwritingInheritance("setting_2", mocked_stack) + + +def test_settingIsOverwritingInheritanceNoContainers(setting_inheritance_manager, mocked_stack): + mocked_stack.getContainers = MagicMock(return_value = []) + # All the properties are correct, but there are no containers :( + assert not setting_inheritance_manager._settingIsOverwritingInheritance("setting_3", mocked_stack) + + +def test_settingIsOverwritingInheritanceNoneValue(setting_inheritance_manager, mocked_stack): + mocked_container = MagicMock() + mocked_container.getProperty = MagicMock(side_effect=getPropertySideEffect) + mocked_stack.getContainers = MagicMock(return_value = [mocked_container]) + + # Setting 3 doesn't have a value, so even though the container is there, it's value is None + assert not setting_inheritance_manager._settingIsOverwritingInheritance("setting_3", mocked_stack) + + +def test_settingIsOverwritingInheritanceNoSettingFunction(setting_inheritance_manager, mocked_stack): + mocked_container = MagicMock() + mocked_container.getProperty = MagicMock(side_effect=getPropertySideEffect) + mocked_stack.getContainers = MagicMock(return_value=[mocked_container]) + + # Setting 4 does have a value, but it's not a settingFunction + assert not setting_inheritance_manager._settingIsOverwritingInheritance("setting_4", mocked_stack) + + +def test_settingIsOverwritingInheritanceSingleSettingFunction(setting_inheritance_manager, mocked_stack): + mocked_container = MagicMock() + mocked_container.getProperty = MagicMock(side_effect=getPropertySideEffect) + mocked_stack.getContainers = MagicMock(return_value=[mocked_container]) + setting_inheritance_manager._active_container_stack = mocked_stack + # Setting 5 does have a value, but we only have one container filled + assert not setting_inheritance_manager._settingIsOverwritingInheritance("setting_5", mocked_stack) + + +def test_settingIsOverwritingInheritance(setting_inheritance_manager, mocked_stack): + mocked_container = MagicMock() + mocked_second_container = MagicMock() + mocked_second_container.getProperty = MagicMock(return_value = 12) + mocked_container.getProperty = MagicMock(side_effect=getPropertySideEffect) + mocked_stack.getContainers = MagicMock(return_value=[mocked_second_container, mocked_container]) + setting_inheritance_manager._active_container_stack = mocked_stack + + assert setting_inheritance_manager._settingIsOverwritingInheritance("setting_5", mocked_stack) \ No newline at end of file diff --git a/tests/Settings/TestSettingOverrideDecorator.py b/tests/Settings/TestSettingOverrideDecorator.py new file mode 100644 index 0000000000..50c23c409f --- /dev/null +++ b/tests/Settings/TestSettingOverrideDecorator.py @@ -0,0 +1,52 @@ +from unittest.mock import patch, MagicMock + +import pytest + +from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator + + +extruder_manager = MagicMock(name= "ExtruderManager") +application = MagicMock(name="application") +container_registry = MagicMock(name="container_registry") + +@pytest.fixture() +def setting_override_decorator(): + # Ensure that all the call counts and the like are reset. + container_registry.reset_mock() + application.reset_mock() + extruder_manager.reset_mock() + + # Actually create the decorator. + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance", MagicMock(return_value=extruder_manager)): + return SettingOverrideDecorator() + + +def test_onSettingValueChanged(setting_override_decorator): + # On creation the needs slicing should be called once (as it being added should trigger a reslice) + assert application.getBackend().needsSlicing.call_count == 1 + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + setting_override_decorator._onSettingChanged("blarg", "value") + + # Once we set a setting value, it should trigger again. + assert application.getBackend().needsSlicing.call_count == 2 + + +def test_onSettingEnableChanged(setting_override_decorator): + # On creation the needs slicing should be called once (as it being added should trigger a reslice) + assert application.getBackend().needsSlicing.call_count == 1 + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + setting_override_decorator._onSettingChanged("blarg", "enabled") + + # Once we set a property that is not a value, no re-slice should happen. + assert application.getBackend().needsSlicing.call_count == 1 + + +def test_setActiveExtruder(setting_override_decorator): + setting_override_decorator.activeExtruderChanged.emit = MagicMock() + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance", MagicMock(return_value=extruder_manager)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + setting_override_decorator.setActiveExtruder("ZOMG") + setting_override_decorator.activeExtruderChanged.emit.assert_called_once_with() + assert setting_override_decorator.getActiveExtruder() == "ZOMG" diff --git a/tests/Settings/__init__.py b/tests/Settings/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/Settings/conftest.py b/tests/Settings/conftest.py index c2d8854f05..d7494dabf8 100644 --- a/tests/Settings/conftest.py +++ b/tests/Settings/conftest.py @@ -1,5 +1,5 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Uranium is released under the terms of the LGPLv3 or higher. +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. # The purpose of this class is to create fixtures or methods that can be shared among all settings tests. @@ -49,6 +49,6 @@ def global_stack(definition_changes_container) -> GlobalStack: # There is a restriction here that the definition changes cannot be an empty container. Added in CURA-5281 @pytest.fixture() def extruder_stack(definition_changes_container) -> ExtruderStack: - extruder_stack= ExtruderStack("TestExtruderStack") + extruder_stack = ExtruderStack("TestExtruderStack") extruder_stack._containers[cura.Settings.CuraContainerStack._ContainerIndexes.DefinitionChanges] = definition_changes_container return extruder_stack \ No newline at end of file diff --git a/tests/TestArrange.py b/tests/TestArrange.py index 7de3ec1d8d..a00b544936 100755 --- a/tests/TestArrange.py +++ b/tests/TestArrange.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import numpy @@ -10,35 +10,29 @@ from cura.Arranging.ShapeArray import ShapeArray def gimmeTriangle(): return numpy.array([[-3, 1], [3, 1], [0, -3]], dtype=numpy.int32) - ## Boring square def gimmeSquare(): return numpy.array([[-2, -2], [2, -2], [2, 2], [-2, 2]], dtype=numpy.int32) - ## Triangle of area 12 def gimmeShapeArray(scale = 1.0): vertices = gimmeTriangle() shape_arr = ShapeArray.fromPolygon(vertices, scale = scale) return shape_arr - ## Boring square def gimmeShapeArraySquare(scale = 1.0): vertices = gimmeSquare() shape_arr = ShapeArray.fromPolygon(vertices, scale = scale) return shape_arr - ## Smoke test for Arrange def test_smoke_arrange(): - ar = Arrange.create(fixed_nodes = []) - + Arrange.create(fixed_nodes = []) ## Smoke test for ShapeArray def test_smoke_ShapeArray(): - shape_arr = gimmeShapeArray() - + gimmeShapeArray() ## Test ShapeArray def test_ShapeArray(): @@ -47,12 +41,9 @@ def test_ShapeArray(): ar.centerFirst() shape_arr = gimmeShapeArray(scale) - print(shape_arr.arr) count = len(numpy.where(shape_arr.arr == 1)[0]) - print(count) assert count >= 10 # should approach 12 - ## Test ShapeArray with scaling def test_ShapeArray_scaling(): scale = 2 @@ -60,12 +51,9 @@ def test_ShapeArray_scaling(): ar.centerFirst() shape_arr = gimmeShapeArray(scale) - print(shape_arr.arr) count = len(numpy.where(shape_arr.arr == 1)[0]) - print(count) assert count >= 40 # should approach 2*2*12 = 48 - ## Test ShapeArray with scaling def test_ShapeArray_scaling2(): scale = 0.5 @@ -73,12 +61,9 @@ def test_ShapeArray_scaling2(): ar.centerFirst() shape_arr = gimmeShapeArray(scale) - print(shape_arr.arr) count = len(numpy.where(shape_arr.arr == 1)[0]) - print(count) assert count >= 1 # should approach 3, but it can be inaccurate due to pixel rounding - ## Test centerFirst def test_centerFirst(): ar = Arrange(300, 300, 150, 150, scale = 1) @@ -90,7 +75,6 @@ def test_centerFirst(): assert ar._priority[150][150] < ar._priority[150][130] assert ar._priority[150][150] < ar._priority[130][130] - ## Test centerFirst def test_centerFirst_rectangular(): ar = Arrange(400, 300, 200, 150, scale = 1) @@ -102,12 +86,10 @@ def test_centerFirst_rectangular(): assert ar._priority[150][200] < ar._priority[130][200] assert ar._priority[150][200] < ar._priority[130][180] - ## Test centerFirst def test_centerFirst_rectangular2(): ar = Arrange(10, 20, 5, 10, scale = 1) ar.centerFirst() - print(ar._priority) assert ar._priority[10][5] < ar._priority[10][7] @@ -120,7 +102,6 @@ def test_backFirst(): assert ar._priority[150][150] > ar._priority[130][150] assert ar._priority[150][150] > ar._priority[130][130] - ## See if the result of bestSpot has the correct form def test_smoke_bestSpot(): ar = Arrange(30, 30, 15, 15, scale = 1) @@ -133,7 +114,6 @@ def test_smoke_bestSpot(): assert hasattr(best_spot, "penalty_points") assert hasattr(best_spot, "priority") - ## Real life test def test_bestSpot(): ar = Arrange(16, 16, 8, 8, scale = 1) @@ -151,9 +131,6 @@ def test_bestSpot(): assert best_spot.x != 0 or best_spot.y != 0 # it can't be on the same location ar.place(best_spot.x, best_spot.y, shape_arr) - print(ar._occupied) # For debugging - - ## Real life test rectangular build plate def test_bestSpot_rectangular_build_plate(): ar = Arrange(16, 40, 8, 20, scale = 1) @@ -187,9 +164,6 @@ def test_bestSpot_rectangular_build_plate(): best_spot_x = ar.bestSpot(shape_arr) ar.place(best_spot_x.x, best_spot_x.y, shape_arr) - print(ar._occupied) # For debugging - - ## Real life test def test_bestSpot_scale(): scale = 0.5 @@ -202,17 +176,12 @@ def test_bestSpot_scale(): assert best_spot.y == 0 ar.place(best_spot.x, best_spot.y, shape_arr) - print(ar._occupied) - # Place object a second time best_spot = ar.bestSpot(shape_arr) assert best_spot.x is not None # we found a location assert best_spot.x != 0 or best_spot.y != 0 # it can't be on the same location ar.place(best_spot.x, best_spot.y, shape_arr) - print(ar._occupied) # For debugging - - ## Real life test def test_bestSpot_scale_rectangular(): scale = 0.5 @@ -227,8 +196,6 @@ def test_bestSpot_scale_rectangular(): assert best_spot.y == 0 ar.place(best_spot.x, best_spot.y, shape_arr_square) - print(ar._occupied) - # Place object a second time best_spot = ar.bestSpot(shape_arr) assert best_spot.x is not None # we found a location @@ -238,9 +205,6 @@ def test_bestSpot_scale_rectangular(): best_spot = ar.bestSpot(shape_arr_square) ar.place(best_spot.x, best_spot.y, shape_arr_square) - print(ar._occupied) # For debugging - - ## Try to place an object and see if something explodes def test_smoke_place(): ar = Arrange(30, 30, 15, 15) @@ -252,7 +216,6 @@ def test_smoke_place(): ar.place(0, 0, shape_arr) assert numpy.any(ar._occupied) - ## See of our center has less penalty points than out of the center def test_checkShape(): ar = Arrange(30, 30, 15, 15) @@ -265,12 +228,10 @@ def test_checkShape(): assert points2 > points assert points3 > points - ## See of our center has less penalty points than out of the center def test_checkShape_rectangular(): ar = Arrange(20, 30, 10, 15) ar.centerFirst() - print(ar._priority) shape_arr = gimmeShapeArray() points = ar.checkShape(0, 0, shape_arr) @@ -279,20 +240,18 @@ def test_checkShape_rectangular(): assert points2 > points assert points3 > points - ## Check that placing an object on occupied place returns None. def test_checkShape_place(): ar = Arrange(30, 30, 15, 15) ar.centerFirst() shape_arr = gimmeShapeArray() - points = ar.checkShape(3, 6, shape_arr) + ar.checkShape(3, 6, shape_arr) ar.place(3, 6, shape_arr) points2 = ar.checkShape(3, 6, shape_arr) assert points2 is None - ## Test the whole sequence def test_smoke_place_objects(): ar = Arrange(20, 20, 10, 10, scale = 1) @@ -303,35 +262,30 @@ def test_smoke_place_objects(): best_spot_x, best_spot_y, score, prio = ar.bestSpot(shape_arr) ar.place(best_spot_x, best_spot_y, shape_arr) - # Test some internals def test_compare_occupied_and_priority_tables(): ar = Arrange(10, 15, 5, 7) ar.centerFirst() assert ar._priority.shape == ar._occupied.shape - ## Polygon -> array def test_arrayFromPolygon(): vertices = numpy.array([[-3, 1], [3, 1], [0, -3]]) array = ShapeArray.arrayFromPolygon([5, 5], vertices) assert numpy.any(array) - ## Polygon -> array def test_arrayFromPolygon2(): vertices = numpy.array([[-3, 1], [3, 1], [2, -3]]) array = ShapeArray.arrayFromPolygon([5, 5], vertices) assert numpy.any(array) - ## Polygon -> array def test_fromPolygon(): vertices = numpy.array([[0, 0.5], [0, 0], [0.5, 0]]) array = ShapeArray.fromPolygon(vertices, scale=0.5) assert numpy.any(array.arr) - ## Line definition -> array with true/false def test_check(): base_array = numpy.zeros([5, 5], dtype=float) @@ -342,7 +296,6 @@ def test_check(): assert check_array[3][0] assert not check_array[0][3] - ## Line definition -> array with true/false def test_check2(): base_array = numpy.zeros([5, 5], dtype=float) @@ -353,22 +306,17 @@ def test_check2(): assert not check_array[3][0] assert check_array[3][4] - ## Just adding some stuff to ensure fromNode works as expected. Some parts should actually be in UM def test_parts_of_fromNode(): from UM.Math.Polygon import Polygon p = Polygon(numpy.array([[-2, -2], [2, -2], [2, 2], [-2, 2]], dtype=numpy.int32)) offset = 1 - print(p._points) p_offset = p.getMinkowskiHull(Polygon.approximatedCircle(offset)) - print("--------------") - print(p_offset._points) assert len(numpy.where(p_offset._points[:, 0] >= 2.9)) > 0 assert len(numpy.where(p_offset._points[:, 0] <= -2.9)) > 0 assert len(numpy.where(p_offset._points[:, 1] >= 2.9)) > 0 assert len(numpy.where(p_offset._points[:, 1] <= -2.9)) > 0 - def test_parts_of_fromNode2(): from UM.Math.Polygon import Polygon p = Polygon(numpy.array([[-2, -2], [2, -2], [2, 2], [-2, 2]], dtype=numpy.int32) * 2) # 4x4 @@ -378,4 +326,4 @@ def test_parts_of_fromNode2(): shape_arr1 = ShapeArray.fromPolygon(p._points, scale = scale) shape_arr2 = ShapeArray.fromPolygon(p_offset._points, scale = scale) assert shape_arr1.arr.shape[0] >= (4 * scale) - 1 # -1 is to account for rounding errors - assert shape_arr2.arr.shape[0] >= (2 * offset + 4) * scale - 1 + assert shape_arr2.arr.shape[0] >= (2 * offset + 4) * scale - 1 \ No newline at end of file diff --git a/tests/TestBuildVolume.py b/tests/TestBuildVolume.py new file mode 100644 index 0000000000..6ccb3d0fb7 --- /dev/null +++ b/tests/TestBuildVolume.py @@ -0,0 +1,390 @@ +from unittest.mock import MagicMock, patch +from UM.Math.AxisAlignedBox import AxisAlignedBox +import pytest + +from UM.Math.Polygon import Polygon +from UM.Math.Vector import Vector +from cura.BuildVolume import BuildVolume, PRIME_CLEARANCE +import numpy + + + + +@pytest.fixture +def build_volume() -> BuildVolume: + mocked_application = MagicMock() + mocked_platform = MagicMock(name="platform") + with patch("cura.BuildVolume.Platform", mocked_platform): + return BuildVolume(mocked_application) + + +def test_buildVolumeSetSizes(build_volume): + build_volume.setWidth(10) + assert build_volume.getDiagonalSize() == 10 + + build_volume.setWidth(0) + build_volume.setHeight(100) + assert build_volume.getDiagonalSize() == 100 + + build_volume.setHeight(0) + build_volume.setDepth(200) + assert build_volume.getDiagonalSize() == 200 + + +def test_buildMesh(build_volume): + mesh = build_volume._buildMesh(0, 100, 0, 100, 0, 100, 1) + result_vertices = numpy.array([[0., 0., 0.], [100., 0., 0.], [0., 0., 0.], [0., 100., 0.], [0., 100., 0.], [100., 100., 0.], [100., 0., 0.], [100., 100., 0.], [0., 0., 100.], [100., 0., 100.], [0., 0., 100.], [0., 100., 100.], [0., 100., 100.], [100., 100., 100.], [100., 0., 100.], [100., 100., 100.], [0., 0., 0.], [0., 0., 100.], [100., 0., 0.], [100., 0., 100.], [0., 100., 0.], [0., 100., 100.], [100., 100., 0.], [100., 100., 100.]], dtype=numpy.float32) + assert numpy.array_equal(result_vertices, mesh.getVertices()) + + +def test_buildGridMesh(build_volume): + mesh = build_volume._buildGridMesh(0, 100, 0, 100, 0, 100, 1) + result_vertices = numpy.array([[0., -1., 0.], [100., -1., 100.], [100., -1., 0.], [0., -1., 0.], [0., -1., 100.], [100., -1., 100.]]) + assert numpy.array_equal(result_vertices, mesh.getVertices()) + + +def test_clamp(build_volume): + assert build_volume._clamp(0, 0, 200) == 0 + assert build_volume._clamp(0, -200, 200) == 0 + assert build_volume._clamp(300, -200, 200) == 200 + + +class TestCalculateBedAdhesionSize: + setting_property_dict = {"adhesion_type": {"value": "brim"}, + "skirt_brim_line_width": {"value": 0}, + "initial_layer_line_width_factor": {"value": 0}, + "brim_line_count": {"value": 0}, + "machine_width": {"value": 200}, + "machine_depth": {"value": 200}, + "skirt_line_count": {"value": 0}, + "skirt_gap": {"value": 0}, + "raft_margin": {"value": 0} + } + + def getPropertySideEffect(*args, **kwargs): + properties = TestCalculateBedAdhesionSize.setting_property_dict.get(args[1]) + if properties: + return properties.get(args[2]) + + def createAndSetGlobalStack(self, build_volume): + mocked_stack = MagicMock() + mocked_stack.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + + build_volume._global_container_stack = mocked_stack + + def test_noGlobalStack(self, build_volume: BuildVolume): + assert build_volume._calculateBedAdhesionSize([]) is None + + @pytest.mark.parametrize("setting_dict, result", [ + ({}, 0), + ({"adhesion_type": {"value": "skirt"}}, 0), + ({"adhesion_type": {"value": "raft"}}, 0), + ({"adhesion_type": {"value": "none"}}, 0), + ({"adhesion_type": {"value": "skirt"}, "skirt_line_count": {"value": 2}, "initial_layer_line_width_factor": {"value": 1}, "skirt_brim_line_width": {"value": 2}}, 0.02), + # Even though it's marked as skirt, it should behave as a brim as the prime tower has a brim (skirt line count is still at 0!) + ({"adhesion_type": {"value": "skirt"}, "prime_tower_brim_enable": {"value": True}, "skirt_brim_line_width": {"value": 2}, "initial_layer_line_width_factor": {"value": 3}}, -0.06), + ({"brim_line_count": {"value": 1}, "skirt_brim_line_width": {"value": 2}, "initial_layer_line_width_factor": {"value": 3}}, 0), + ({"brim_line_count": {"value": 2}, "skirt_brim_line_width": {"value": 2}, "initial_layer_line_width_factor": {"value": 3}}, 0.06), + ({"brim_line_count": {"value": 9000000}, "skirt_brim_line_width": {"value": 90000}, "initial_layer_line_width_factor": {"value": 9000}}, 100), # Clamped at half the max size of buildplate + ]) + def test_singleExtruder(self, build_volume: BuildVolume, setting_dict, result): + self.createAndSetGlobalStack(build_volume) + patched_dictionary = self.setting_property_dict.copy() + patched_dictionary.update(setting_dict) + with patch.dict(self.setting_property_dict, patched_dictionary): + assert build_volume._calculateBedAdhesionSize([]) == result + + def test_unknownBedAdhesion(self, build_volume: BuildVolume): + self.createAndSetGlobalStack(build_volume) + patched_dictionary = self.setting_property_dict.copy() + patched_dictionary.update({"adhesion_type": {"value": "OMGZOMGBBQ"}}) + with patch.dict(self.setting_property_dict, patched_dictionary): + with pytest.raises(Exception): + build_volume._calculateBedAdhesionSize([]) + +class TestComputeDisallowedAreasStatic: + setting_property_dict = {"machine_disallowed_areas": {"value": [[[-200, 112.5], [ -82, 112.5], [ -84, 102.5], [-115, 102.5]]]}, + "machine_width": {"value": 200}, + "machine_depth": {"value": 200}, + } + + def getPropertySideEffect(*args, **kwargs): + properties = TestComputeDisallowedAreasStatic.setting_property_dict.get(args[1]) + if properties: + return properties.get(args[2]) + + def test_computeDisallowedAreasStaticNoExtruder(self, build_volume: BuildVolume): + mocked_stack = MagicMock() + mocked_stack.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + + build_volume._global_container_stack = mocked_stack + assert build_volume._computeDisallowedAreasStatic(0, []) == {} + + def test_computeDisalowedAreasStaticSingleExtruder(self, build_volume: BuildVolume): + mocked_stack = MagicMock() + mocked_stack.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + + mocked_extruder = MagicMock() + mocked_extruder.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + mocked_extruder.getId = MagicMock(return_value = "zomg") + + build_volume._global_container_stack = mocked_stack + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance"): + result = build_volume._computeDisallowedAreasStatic(0, [mocked_extruder]) + assert result == {"zomg": [Polygon([[-84.0, 102.5], [-115.0, 102.5], [-200.0, 112.5], [-82.0, 112.5]])]} + + def test_computeDisalowedAreasMutliExtruder(self, build_volume): + mocked_stack = MagicMock() + mocked_stack.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + + mocked_extruder = MagicMock() + mocked_extruder.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + mocked_extruder.getId = MagicMock(return_value="zomg") + extruder_manager = MagicMock() + extruder_manager.getActiveExtruderStacks = MagicMock(return_value = [mocked_stack]) + build_volume._global_container_stack = mocked_stack + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance", MagicMock(return_value = extruder_manager)): + result = build_volume._computeDisallowedAreasStatic(0, [mocked_extruder]) + assert result == {"zomg": [Polygon([[-84.0, 102.5], [-115.0, 102.5], [-200.0, 112.5], [-82.0, 112.5]])]} + +class TestUpdateRaftThickness: + setting_property_dict = {"raft_base_thickness": {"value": 1}, + "raft_interface_thickness": {"value": 1}, + "raft_surface_layers": {"value": 1}, + "raft_surface_thickness": {"value": 1}, + "raft_airgap": {"value": 1}, + "layer_0_z_overlap": {"value": 1}, + "adhesion_type": {"value": "raft"}} + + def getPropertySideEffect(*args, **kwargs): + properties = TestUpdateRaftThickness.setting_property_dict.get(args[1]) + if properties: + return properties.get(args[2]) + + def createMockedStack(self): + mocked_global_stack = MagicMock(name="mocked_global_stack") + mocked_global_stack.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + extruder_stack = MagicMock() + + mocked_global_stack.extruders = {"0": extruder_stack} + + return mocked_global_stack + + def test_simple(self, build_volume: BuildVolume): + build_volume.raftThicknessChanged = MagicMock() + mocked_global_stack = self.createMockedStack() + build_volume._global_container_stack = mocked_global_stack + + assert build_volume.getRaftThickness() == 0 + build_volume._updateRaftThickness() + assert build_volume.getRaftThickness() == 3 + assert build_volume.raftThicknessChanged.emit.call_count == 1 + + def test_adhesionIsNotRaft(self, build_volume: BuildVolume): + patched_dictionary = self.setting_property_dict.copy() + patched_dictionary["adhesion_type"] = {"value": "not_raft"} + + mocked_global_stack = self.createMockedStack() + build_volume._global_container_stack = mocked_global_stack + + assert build_volume.getRaftThickness() == 0 + with patch.dict(self.setting_property_dict, patched_dictionary): + build_volume._updateRaftThickness() + assert build_volume.getRaftThickness() == 0 + + def test_noGlobalStack(self, build_volume: BuildVolume): + build_volume.raftThicknessChanged = MagicMock() + assert build_volume.getRaftThickness() == 0 + build_volume._updateRaftThickness() + assert build_volume.getRaftThickness() == 0 + assert build_volume.raftThicknessChanged.emit.call_count == 0 + + +class TestComputeDisallowedAreasPrimeBlob: + setting_property_dict = {"machine_width": {"value": 50}, + "machine_depth": {"value": 100}, + "prime_blob_enable": {"value": True}, + "extruder_prime_pos_x": {"value": 25}, + "extruder_prime_pos_y": {"value": 50}, + "machine_center_is_zero": {"value": True}, + } + + def getPropertySideEffect(*args, **kwargs): + properties = TestComputeDisallowedAreasPrimeBlob.setting_property_dict.get(args[1]) + if properties: + return properties.get(args[2]) + + def test_noGlobalContainer(self, build_volume: BuildVolume): + # No global container and no extruders, so we expect no blob areas + assert build_volume._computeDisallowedAreasPrimeBlob(12, []) == {} + + def test_noExtruders(self, build_volume: BuildVolume): + mocked_stack = MagicMock() + mocked_stack.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + + build_volume._global_container_stack = mocked_stack + # No extruders, so still expect that we get no area + assert build_volume._computeDisallowedAreasPrimeBlob(12, []) == {} + + def test_singleExtruder(self, build_volume: BuildVolume): + mocked_global_stack = MagicMock(name = "mocked_global_stack") + mocked_global_stack.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + + mocked_extruder_stack = MagicMock(name = "mocked_extruder_stack") + mocked_extruder_stack.getId = MagicMock(return_value = "0") + mocked_extruder_stack.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + + build_volume._global_container_stack = mocked_global_stack + + # Create a polygon that should be the result + resulting_polygon = Polygon.approximatedCircle(PRIME_CLEARANCE) + # Since we want a blob of size 12; + resulting_polygon = resulting_polygon.getMinkowskiHull(Polygon.approximatedCircle(12)) + # In the The translation result is 25, -50 (due to the settings used) + resulting_polygon = resulting_polygon.translate(25, -50) + assert build_volume._computeDisallowedAreasPrimeBlob(12, [mocked_extruder_stack]) == {"0": [resulting_polygon]} + + +class TestCalculateExtraZClearance: + setting_property_dict = {"retraction_hop": {"value": 12}, + "retraction_hop_enabled": {"value": True}} + + def getPropertySideEffect(*args, **kwargs): + properties = TestCalculateExtraZClearance.setting_property_dict.get(args[1]) + if properties: + return properties.get(args[2]) + + def test_noContainerStack(self, build_volume: BuildVolume): + assert build_volume._calculateExtraZClearance([]) is 0 + + def test_withRetractionHop(self, build_volume: BuildVolume): + mocked_global_stack = MagicMock(name="mocked_global_stack") + + mocked_extruder = MagicMock() + mocked_extruder.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + + build_volume._global_container_stack = mocked_global_stack + + # It should be 12 because we have the hop enabled and the hop distance is set to 12 + assert build_volume._calculateExtraZClearance([mocked_extruder]) == 12 + + def test_withoutRetractionHop(self, build_volume: BuildVolume): + mocked_global_stack = MagicMock(name="mocked_global_stack") + + mocked_extruder = MagicMock() + mocked_extruder.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + + build_volume._global_container_stack = mocked_global_stack + + patched_dictionary = self.setting_property_dict.copy() + patched_dictionary["retraction_hop_enabled"] = {"value": False} + with patch.dict(self.setting_property_dict, patched_dictionary): + # It should be 12 because we have the hop enabled and the hop distance is set to 12 + assert build_volume._calculateExtraZClearance([mocked_extruder]) == 0 + + +class TestRebuild: + def test_zeroWidthHeightDepth(self, build_volume: BuildVolume): + build_volume.rebuild() + assert build_volume.getMeshData() is None + + def test_engineIsNotRead(self, build_volume: BuildVolume): + build_volume.setWidth(10) + build_volume.setHeight(10) + build_volume.setDepth(10) + build_volume.rebuild() + assert build_volume.getMeshData() is None + + def test_noGlobalStack(self, build_volume: BuildVolume): + build_volume.setWidth(10) + build_volume.setHeight(10) + build_volume.setDepth(10) + # Fake the the "engine is created callback" + build_volume._onEngineCreated() + build_volume.rebuild() + assert build_volume.getMeshData() is None + + def test_updateBoundingBox(self, build_volume: BuildVolume): + build_volume.setWidth(10) + build_volume.setHeight(10) + build_volume.setDepth(10) + + mocked_global_stack = MagicMock() + build_volume._global_container_stack = mocked_global_stack + build_volume.getEdgeDisallowedSize = MagicMock(return_value = 0) + build_volume.updateNodeBoundaryCheck = MagicMock() + + # Fake the the "engine is created callback" + build_volume._onEngineCreated() + build_volume.rebuild() + + bounding_box = build_volume.getBoundingBox() + assert bounding_box.minimum == Vector(-5.0, -1.0, -5.0) + assert bounding_box.maximum == Vector(5.0, 10.0, 5.0) + + +class TestUpdateMachineSizeProperties: + setting_property_dict = {"machine_width": {"value": 50}, + "machine_depth": {"value": 100}, + "machine_height": {"value": 200}, + "machine_shape": {"value": "DERP!"}} + + def getPropertySideEffect(*args, **kwargs): + properties = TestUpdateMachineSizeProperties.setting_property_dict.get(args[1]) + if properties: + return properties.get(args[2]) + + def test_noGlobalStack(self, build_volume: BuildVolume): + build_volume._updateMachineSizeProperties() + assert build_volume._width == 0 + assert build_volume._height == 0 + assert build_volume._depth == 0 + assert build_volume._shape == "" + + def test_happy(self, build_volume: BuildVolume): + mocked_global_stack = MagicMock(name="mocked_global_stack") + mocked_global_stack.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + build_volume._global_container_stack = mocked_global_stack + build_volume._updateMachineSizeProperties() + assert build_volume._width == 50 + assert build_volume._height == 200 + assert build_volume._depth == 100 + assert build_volume._shape == "DERP!" + + +class TestGetEdgeDisallowedSize: + setting_property_dict = {} + bed_adhesion_size = 1 + + @pytest.fixture() + def build_volume(self, build_volume): + build_volume._calculateBedAdhesionSize = MagicMock(return_value = 1) + return build_volume + + def getPropertySideEffect(*args, **kwargs): + properties = TestGetEdgeDisallowedSize.setting_property_dict.get(args[1]) + if properties: + return properties.get(args[2]) + + def createMockedStack(self): + mocked_global_stack = MagicMock(name="mocked_global_stack") + mocked_global_stack.getProperty = MagicMock(side_effect=self.getPropertySideEffect) + return mocked_global_stack + + def test_noGlobalContainer(self, build_volume: BuildVolume): + assert build_volume.getEdgeDisallowedSize() == 0 + + def test_unknownAdhesion(self, build_volume: BuildVolume): + build_volume._global_container_stack = self.createMockedStack() + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance"): + #with pytest.raises(Exception): + # Since we don't have any adhesion set, this should break. + + build_volume.getEdgeDisallowedSize() + + def test_oneAtATime(self, build_volume: BuildVolume): + build_volume._global_container_stack = self.createMockedStack() + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance"): + with patch.dict(self.setting_property_dict, {"print_sequence": {"value": "one_at_a_time"}}): + assert build_volume.getEdgeDisallowedSize() == 0.1 + diff --git a/tests/TestConvexHullDecorator.py b/tests/TestConvexHullDecorator.py new file mode 100644 index 0000000000..4205ae3a37 --- /dev/null +++ b/tests/TestConvexHullDecorator.py @@ -0,0 +1,181 @@ +import copy +from unittest.mock import patch, MagicMock + +import pytest + +from UM.Math.Polygon import Polygon +from UM.Mesh.MeshBuilder import MeshBuilder +from UM.Scene.GroupDecorator import GroupDecorator +from UM.Scene.SceneNode import SceneNode +from UM.Scene.SceneNodeDecorator import SceneNodeDecorator +from cura.Scene.ConvexHullDecorator import ConvexHullDecorator + +mocked_application = MagicMock() +mocked_controller = MagicMock() +# We need to mock out this function, otherwise we get a recursion +mocked_controller.isToolOperationActive = MagicMock(return_value = False) +mocked_application.getController = MagicMock(return_value = mocked_controller) + + +class NonPrintingDecorator(SceneNodeDecorator): + def isNonPrintingMesh(self): + return True + + +class PrintingDecorator(SceneNodeDecorator): + def isNonPrintingMesh(self): + return False + + +@pytest.fixture +def convex_hull_decorator(): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = mocked_application)): + with patch("UM.Application.Application.getInstance", MagicMock(return_value = mocked_application)): + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance"): + return ConvexHullDecorator() + + +def test_getSetNode(convex_hull_decorator): + node = SceneNode() + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + convex_hull_decorator.setNode(node) + assert convex_hull_decorator.getNode() == node + + +def test_getConvexHullBoundaryNoNode(convex_hull_decorator): + assert convex_hull_decorator.getConvexHullBoundary() is None + + +def test_getConvexHullHeadNoNode(convex_hull_decorator): + assert convex_hull_decorator.getConvexHullHead() is None + + +def test_getConvexHullHeadNotPrintingMesh(convex_hull_decorator): + node = SceneNode() + node.addDecorator(NonPrintingDecorator()) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + convex_hull_decorator.setNode(node) + assert convex_hull_decorator.getConvexHullHead() is None + + +def test_getConvexHullNoNode(convex_hull_decorator): + assert convex_hull_decorator.getConvexHull() is None + + +def test_getConvexHeadFullNoNode(convex_hull_decorator): + assert convex_hull_decorator.getConvexHullHeadFull() is None + + +def test_getConvexHullNotPrintingMesh(convex_hull_decorator): + node = SceneNode() + node.addDecorator(NonPrintingDecorator()) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + convex_hull_decorator.setNode(node) + assert convex_hull_decorator.getConvexHull() is None + + +def test_getConvexHullPrintingMesh(convex_hull_decorator): + node = SceneNode() + node.addDecorator(PrintingDecorator()) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + convex_hull_decorator.setNode(node) + convex_hull_decorator._compute2DConvexHull = MagicMock(return_value = Polygon.approximatedCircle(10)) + assert convex_hull_decorator.getConvexHull() == Polygon.approximatedCircle(10) + +def test_getConvexHullBoundaryNotPrintingMesh(convex_hull_decorator): + node = SceneNode() + node.addDecorator(NonPrintingDecorator()) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + convex_hull_decorator.setNode(node) + assert convex_hull_decorator.getConvexHullBoundary() is None + + +def test_getConvexHulLBoundaryPrintingMesh(convex_hull_decorator): + node = SceneNode() + node.addDecorator(PrintingDecorator()) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + convex_hull_decorator.setNode(node) + # Should still be None, since print sequence is not one at a time + assert convex_hull_decorator.getConvexHullBoundary() is None + + +def test_getConvexHulLBoundaryPrintingMeshOneAtATime(convex_hull_decorator): + node = SceneNode() + node.addDecorator(PrintingDecorator()) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + convex_hull_decorator.setNode(node) + convex_hull_decorator._global_stack = MagicMock() + convex_hull_decorator._global_stack.getProperty = MagicMock(return_value = "one_at_a_time") + # In this test we don't care for the result of the function, just that the convex hull computation is called. + convex_hull_decorator._compute2DConvexHull = MagicMock() + convex_hull_decorator.getConvexHullBoundary() + convex_hull_decorator._compute2DConvexHull.assert_called_once_with() + + +def value_changed(convex_hull_decorator, key): + convex_hull_decorator._onChanged = MagicMock() + convex_hull_decorator._onSettingValueChanged(key, "value") + convex_hull_decorator._onChanged.assert_called_once_with() + + # This should have no effect at all + convex_hull_decorator._onSettingValueChanged(key, "not value") + convex_hull_decorator._onChanged.assert_called_once_with() + + +@pytest.mark.parametrize("key", ConvexHullDecorator._affected_settings) +def test_onSettingValueChangedAffectedSettings(convex_hull_decorator, key): + value_changed(convex_hull_decorator, key) + + +@pytest.mark.parametrize("key", ConvexHullDecorator._influencing_settings) +def test_onSettingValueChangedInfluencingSettings(convex_hull_decorator, key): + convex_hull_decorator._init2DConvexHullCache = MagicMock() + value_changed(convex_hull_decorator, key) + convex_hull_decorator._init2DConvexHullCache.assert_called_once_with() + + +def test_compute2DConvexHullNoNode(convex_hull_decorator): + assert convex_hull_decorator._compute2DConvexHull() is None + + +def test_compute2DConvexHullNoMeshData(convex_hull_decorator): + node = SceneNode() + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + convex_hull_decorator.setNode(node) + + assert convex_hull_decorator._compute2DConvexHull() == Polygon([]) + + +def test_compute2DConvexHullMeshData(convex_hull_decorator): + node = SceneNode() + mb = MeshBuilder() + mb.addCube(10,10,10) + node.setMeshData(mb.build()) + + convex_hull_decorator._getSettingProperty = MagicMock(return_value = 0) + + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + convex_hull_decorator.setNode(node) + + assert convex_hull_decorator._compute2DConvexHull() == Polygon([[5.0,-5.0], [-5.0,-5.0], [-5.0,5.0], [5.0,5.0]]) + + +def test_compute2DConvexHullMeshDataGrouped(convex_hull_decorator): + parent_node = SceneNode() + parent_node.addDecorator(GroupDecorator()) + node = SceneNode() + parent_node.addChild(node) + + mb = MeshBuilder() + mb.addCube(10, 10, 10) + node.setMeshData(mb.build()) + + convex_hull_decorator._getSettingProperty = MagicMock(return_value=0) + + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + convex_hull_decorator.setNode(parent_node) + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance"): + copied_decorator = copy.deepcopy(convex_hull_decorator) + copied_decorator._getSettingProperty = MagicMock(return_value=0) + node.addDecorator(copied_decorator) + assert convex_hull_decorator._compute2DConvexHull() == Polygon([[-5.0,5.0], [5.0,5.0], [5.0,-5.0], [-5.0,-5.0]]) \ No newline at end of file diff --git a/tests/TestCuraSceneController.py b/tests/TestCuraSceneController.py new file mode 100644 index 0000000000..ffffa8ac2a --- /dev/null +++ b/tests/TestCuraSceneController.py @@ -0,0 +1,79 @@ +from unittest.mock import MagicMock, patch + +import pytest + +from UM.Scene.SceneNode import SceneNode +from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel +from cura.Scene.CuraSceneController import CuraSceneController +from cura.UI.ObjectsModel import ObjectsModel + + +@pytest.fixture +def objects_model() -> ObjectsModel: + return MagicMock(spec=ObjectsModel) + +@pytest.fixture +def multi_build_plate_model() -> MultiBuildPlateModel: + return MagicMock(spec=MultiBuildPlateModel) + +@pytest.fixture +def mocked_application(): + mocked_application = MagicMock() + mocked_controller = MagicMock() + mocked_scene = MagicMock() + mocked_application.getController = MagicMock(return_value=mocked_controller) + mocked_controller.getScene = MagicMock(return_value=mocked_scene) + return mocked_application + + +def test_setActiveBuildPlate(objects_model, multi_build_plate_model): + with patch("UM.Application.Application.getInstance"): + controller = CuraSceneController(objects_model, multi_build_plate_model) + controller.setActiveBuildPlate(12) + multi_build_plate_model.setActiveBuildPlate.assert_called_once_with(12) + objects_model.setActiveBuildPlate.assert_called_once_with(12) + + # Doing it again shouldn't cause another change to be passed along + controller.setActiveBuildPlate(12) + multi_build_plate_model.setActiveBuildPlate.assert_called_once_with(12) + objects_model.setActiveBuildPlate.assert_called_once_with(12) + + +def test_calcMaxBuildPlateEmptyScene(objects_model, multi_build_plate_model, mocked_application): + mocked_root = MagicMock() + mocked_root.callDecoration = MagicMock(return_value=0) + mocked_application.getController().getScene().getRoot = MagicMock(return_value=mocked_root) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + controller = CuraSceneController(objects_model, multi_build_plate_model) + assert controller._calcMaxBuildPlate() == 0 + + +def test_calcMaxBuildPlateFilledScene(objects_model, multi_build_plate_model, mocked_application): + mocked_root = MagicMock() + mocked_root.callDecoration = MagicMock(return_value = 0) + mocked_child = MagicMock() + mocked_child.callDecoration = MagicMock(return_value = 2) + mocked_root.getAllChildren = MagicMock(return_value = [mocked_child]) + mocked_application.getController().getScene().getRoot = MagicMock(return_value=mocked_root) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=mocked_application)): + controller = CuraSceneController(objects_model, multi_build_plate_model) + assert controller._calcMaxBuildPlate() == 2 + + +def test_updateMaxBuildPlate(objects_model, multi_build_plate_model): + with patch("UM.Application.Application.getInstance"): + controller = CuraSceneController(objects_model, multi_build_plate_model) + controller._calcMaxBuildPlate = MagicMock(return_value = 12) + controller.updateMaxBuildPlate(SceneNode()) + + # Check if that went well. + multi_build_plate_model.setMaxBuildPlate.assert_called_once_with(12) + + # Move to a different active build plate + controller.setActiveBuildPlate(5) + + # And check what happens if we move down again! + controller._calcMaxBuildPlate = MagicMock(return_value=2) + controller.updateMaxBuildPlate(SceneNode()) + assert controller._active_build_plate == 0 # We don't have any items anywere, so default to 0 + diff --git a/tests/TestCuraSceneNode.py b/tests/TestCuraSceneNode.py new file mode 100644 index 0000000000..9e2fcb1188 --- /dev/null +++ b/tests/TestCuraSceneNode.py @@ -0,0 +1,57 @@ +from UM.Math.Polygon import Polygon +from UM.Scene.SceneNodeDecorator import SceneNodeDecorator +from cura.Scene.CuraSceneNode import CuraSceneNode +import pytest + +from unittest.mock import patch + + +class MockedConvexHullDecorator(SceneNodeDecorator): + def __init__(self): + super().__init__() + + def getConvexHull(self): + return Polygon([[5, 5], [-5, 5], [-5, -5], [5, -5]]) + + def getPrintingArea(self): + return Polygon([[5, 5], [-5, 5], [-5, -5], [5, -5]]) + + +class InvalidConvexHullDecorator(SceneNodeDecorator): + def __init__(self): + super().__init__() + + def getConvexHull(self): + return Polygon() + + +@pytest.fixture() +def cura_scene_node(): + # Replace the SettingOverrideDecorator with an empty decorator + with patch("cura.Scene.CuraSceneNode.SettingOverrideDecorator", SceneNodeDecorator): + return CuraSceneNode() + + +class TestCollidesWithAreas: + def test_noConvexHull(self, cura_scene_node): + assert not cura_scene_node.collidesWithAreas([Polygon([[10, 10], [-10, 10], [-10, -10], [10, -10]])]) + + def test_convexHullIntersects(self, cura_scene_node): + cura_scene_node.addDecorator(MockedConvexHullDecorator()) + assert cura_scene_node.collidesWithAreas([Polygon([[10, 10], [-10, 10], [-10, -10], [10, -10]])]) + + def test_convexHullNoIntersection(self, cura_scene_node): + cura_scene_node.addDecorator(MockedConvexHullDecorator()) + + assert not cura_scene_node.collidesWithAreas([Polygon([[60, 60], [40, 60], [40, 40], [60, 40]])]) + + def test_invalidConvexHull(self, cura_scene_node): + cura_scene_node.addDecorator(InvalidConvexHullDecorator()) + assert not cura_scene_node.collidesWithAreas([Polygon([[10, 10], [-10, 10], [-10, -10], [10, -10]])]) + + +def test_outsideBuildArea(cura_scene_node): + cura_scene_node.setOutsideBuildArea(True) + assert cura_scene_node.isOutsideBuildArea + + diff --git a/tests/TestExtruderManager.py b/tests/TestExtruderManager.py new file mode 100644 index 0000000000..4ad75989de --- /dev/null +++ b/tests/TestExtruderManager.py @@ -0,0 +1,31 @@ + +from unittest.mock import MagicMock, patch + + +def createMockedExtruder(extruder_id): + extruder = MagicMock() + extruder.getId = MagicMock(return_value = extruder_id) + return extruder + + +def test_getAllExtruderSettings(extruder_manager): + extruder_1 = createMockedExtruder("extruder_1") + extruder_1.getProperty = MagicMock(return_value ="beep") + extruder_2 = createMockedExtruder("extruder_2") + extruder_2.getProperty = MagicMock(return_value="zomg") + extruder_manager.getActiveExtruderStacks = MagicMock(return_value = [extruder_1, extruder_2]) + assert extruder_manager.getAllExtruderSettings("whatever", "value") == ["beep", "zomg"] + + +def test_registerExtruder(extruder_manager): + extruder = createMockedExtruder("beep") + extruder.getMetaDataEntry = MagicMock(return_value = "0") # because the extruder position gets called + + extruder_manager.extrudersChanged = MagicMock() + extruder_manager.registerExtruder(extruder, "zomg") + + assert extruder_manager.extrudersChanged.emit.call_count == 1 + + # Doing it again should not trigger anything + extruder_manager.registerExtruder(extruder, "zomg") + assert extruder_manager.extrudersChanged.emit.call_count == 1 diff --git a/tests/TestIntentManager.py b/tests/TestIntentManager.py new file mode 100644 index 0000000000..66e3085337 --- /dev/null +++ b/tests/TestIntentManager.py @@ -0,0 +1,172 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from unittest.mock import MagicMock, patch + +import pytest +from typing import Any, Dict, List + +from cura.Settings.IntentManager import IntentManager +from cura.Machines.QualityGroup import QualityGroup + +from tests.Settings.MockContainer import MockContainer + +mocked_intent_metadata = [ + {"id": "um3_aa4_pla_smooth_normal", "GUID": "abcxyz", "definition": "ultimaker3", "variant": "AA 0.4", + "material_id": "generic_pla", "intent_category": "smooth", "quality_type": "normal"}, + {"id": "um3_aa4_pla_strong_abnorm", "GUID": "defqrs", "definition": "ultimaker3", "variant": "AA 0.4", + "material_id": "generic_pla", "intent_category": "strong", "quality_type": "abnorm"}] # type:List[Dict[str, str]] + +mocked_qualitygroup_metadata = { + "normal": QualityGroup("um3_aa4_pla_normal", "normal"), + "abnorm": QualityGroup("um3_aa4_pla_abnorm", "abnorm")} # type: Dict[str, QualityGroup] + +@pytest.fixture +def mock_container_tree() -> MagicMock: + container_tree = MagicMock() + container_tree.getCurrentQualityGroups = MagicMock(return_value = mocked_qualitygroup_metadata) + container_tree.machines = { + "ultimaker3": MagicMock( + variants = { + "AA 0.4": MagicMock( + materials = { + "generic_pla": MagicMock( + qualities = { + "um3_aa4_pla_normal": MagicMock( + quality_type = "normal", + intents = { + "um3_aa4_pla_smooth_normal": MagicMock( + intent_category = "smooth", + getMetadata = MagicMock(return_value = mocked_intent_metadata[0]) + ) + } + ), + "um3_aa4_pla_abnorm": MagicMock( + quality_type = "abnorm", + intents = { + "um3_aa4_pla_strong_abnorm": MagicMock( + intent_category = "strong", + getMetadata = MagicMock(return_value = mocked_intent_metadata[1]) + ) + } + ) + } + ) + } + ) + } + ) + } + return container_tree + +@pytest.fixture +def intent_manager(application, extruder_manager, machine_manager, container_registry, global_stack) -> IntentManager: + application.getExtruderManager = MagicMock(return_value = extruder_manager) + application.getGlobalContainerStack = MagicMock(return_value = global_stack) + application.getMachineManager = MagicMock(return_value = machine_manager) + machine_manager.setIntentByCategory = MagicMock() + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + manager = IntentManager() + return manager + +def mockFindMetadata(**kwargs) -> List[Dict[str, Any]]: + if "id" in kwargs: + return [x for x in mocked_intent_metadata if x["id"] == kwargs["id"]] + else: + result = [] + for data in mocked_intent_metadata: + should_add = True + for key, value in kwargs.items(): + if key in data.keys(): + should_add &= (data[key] == value) + if should_add: + result.append(data) + return result + + +def mockFindContainers(**kwargs) -> List[MockContainer]: + result = [] + metadatas = mockFindMetadata(**kwargs) + for metadata in metadatas: + result.append(MockContainer(metadata)) + return result + + +def doSetup(application, extruder_manager, container_registry, global_stack) -> None: + container_registry.findContainersMetadata = MagicMock(side_effect = mockFindMetadata) + container_registry.findContainers = MagicMock(side_effect = mockFindContainers) + + for qualitygroup in mocked_qualitygroup_metadata.values(): + qualitygroup.node_for_global = MagicMock(name = "Node for global") + + global_stack.definition = MockContainer({"id": "ultimaker3"}) + + extruder_stack_a = MockContainer({"id": "Extruder The First"}) + extruder_stack_a.variant = MockContainer({"name": "AA 0.4"}) + extruder_stack_a.quality = MockContainer({"id": "um3_aa4_pla_normal"}) + extruder_stack_a.material = MockContainer({"base_file": "generic_pla"}) + extruder_stack_a.intent = MockContainer({"id": "empty_intent", "intent_category": "default"}) + extruder_stack_a.qualityChanges = MockContainer({"id": "empty_quality_changes", "intent_category": "default"}) + extruder_stack_b = MockContainer({"id": "Extruder II: Plastic Boogaloo"}) + extruder_stack_b.variant = MockContainer({"name": "AA 0.4"}) + extruder_stack_b.quality = MockContainer({"id": "um3_aa4_pla_normal"}) + extruder_stack_b.material = MockContainer({"base_file": "generic_pla"}) + extruder_stack_b.intent = MockContainer({"id": "empty_intent", "intent_category": "default"}) + extruder_stack_b.qualityChanges = MockContainer({"id": "empty_quality_changes", "intent_category": "default"}) + global_stack.extruderList = [extruder_stack_a, extruder_stack_b] + + application.getGlobalContainerStack = MagicMock(return_value = global_stack) + extruder_manager.getUsedExtruderStacks = MagicMock(return_value = [extruder_stack_a, extruder_stack_b]) + + +def test_intentCategories(intent_manager, mock_container_tree): + with patch("cura.Machines.ContainerTree.ContainerTree.getInstance", MagicMock(return_value = mock_container_tree)): + categories = intent_manager.intentCategories("ultimaker3", "AA 0.4", "generic_pla") # type:List[str] + assert "default" in categories, "default should always be in categories" + assert "strong" in categories, "strong should be in categories" + assert "smooth" in categories, "smooth should be in categories" + + +def test_getCurrentAvailableIntents(application, extruder_manager, intent_manager, container_registry, global_stack, mock_container_tree): + doSetup(application, extruder_manager, container_registry, global_stack) + + with patch("cura.Machines.ContainerTree.ContainerTree.getInstance", MagicMock(return_value = mock_container_tree)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + intents = intent_manager.getCurrentAvailableIntents() + assert ("smooth", "normal") in intents + assert ("strong", "abnorm") in intents + #assert ("default", "normal") in intents # Pending to-do in 'IntentManager'. + #assert ("default", "abnorm") in intents # Pending to-do in 'IntentManager'. + assert len(intents) == 2 # Or 4? pending to-do in 'IntentManager'. + + +def test_currentAvailableIntentCategories(application, extruder_manager, intent_manager, container_registry, global_stack, mock_container_tree): + doSetup(application, extruder_manager, container_registry, global_stack) + + with patch("cura.Machines.ContainerTree.ContainerTree.getInstance", MagicMock(return_value = mock_container_tree)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance", MagicMock(return_value = extruder_manager)): + categories = intent_manager.currentAvailableIntentCategories() + assert "default" in categories # Currently inconsistent with 'currentAvailableIntents'! + assert "smooth" in categories + assert "strong" in categories + assert len(categories) == 3 + + +def test_selectIntent(application, extruder_manager, intent_manager, container_registry, global_stack, mock_container_tree): + doSetup(application, extruder_manager, container_registry, global_stack) + + with patch("cura.Machines.ContainerTree.ContainerTree.getInstance", MagicMock(return_value = mock_container_tree)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance", MagicMock(return_value = extruder_manager)): + intents = intent_manager.getCurrentAvailableIntents() + for intent, quality in intents: + intent_manager.selectIntent(intent, quality) + extruder_stacks = extruder_manager.getUsedExtruderStacks() + assert len(extruder_stacks) == 2 + assert extruder_stacks[0].intent.getMetaDataEntry("intent_category") == intent + assert extruder_stacks[1].intent.getMetaDataEntry("intent_category") == intent diff --git a/tests/TestLayer.py b/tests/TestLayer.py new file mode 100644 index 0000000000..f8183437d6 --- /dev/null +++ b/tests/TestLayer.py @@ -0,0 +1,39 @@ +from cura.Layer import Layer +from unittest.mock import MagicMock + + +def test_lineMeshVertexCount(): + layer = Layer(1) + layer_polygon = MagicMock() + layer_polygon.lineMeshVertexCount = MagicMock(return_value = 9001) + layer.polygons.append(layer_polygon) + assert layer.lineMeshVertexCount() == 9001 + + +def test_lineMeshElementCount(): + layer = Layer(1) + layer_polygon = MagicMock() + layer_polygon.lineMeshElementCount = MagicMock(return_value = 9001) + layer.polygons.append(layer_polygon) + assert layer.lineMeshElementCount() == 9001 + + +def test_getAndSet(): + layer = Layer(0) + + layer.setThickness(12) + assert layer.thickness == 12 + + layer.setHeight(0.1) + assert layer.height == 0.1 + + +def test_elementCount(): + layer = Layer(1) + layer_polygon = MagicMock() + layer_polygon.lineMeshElementCount = MagicMock(return_value=9002) + layer_polygon.lineMeshVertexCount = MagicMock(return_value=9001) + layer_polygon.elementCount = 12 + layer.polygons.append(layer_polygon) + assert layer.build(0, 0, [], [], [], [], [] ,[] , []) == (9001, 9002) + assert layer.elementCount == 12 \ No newline at end of file diff --git a/tests/TestMachineAction.py b/tests/TestMachineAction.py index f1487a1d9f..9b0cb0a4a0 100755 --- a/tests/TestMachineAction.py +++ b/tests/TestMachineAction.py @@ -4,7 +4,7 @@ import pytest from cura.MachineAction import MachineAction -from cura.MachineActionManager import NotUniqueMachineActionError, UnknownMachineActionError +from cura.UI.MachineActionManager import NotUniqueMachineActionError, UnknownMachineActionError from cura.Settings.GlobalStack import GlobalStack diff --git a/tests/TestMachineManager.py b/tests/TestMachineManager.py new file mode 100644 index 0000000000..a5d9d314cd --- /dev/null +++ b/tests/TestMachineManager.py @@ -0,0 +1,110 @@ +from unittest.mock import MagicMock, patch +import pytest + +from cura.Settings.MachineManager import MachineManager + +@pytest.fixture() +def global_stack(): + stack = MagicMock(name = "Global Stack") + stack.getId = MagicMock(return_value = "GlobalStack") + return stack + +@pytest.fixture() +def machine_manager(application, extruder_manager, container_registry, global_stack) -> MachineManager: + application.getExtruderManager = MagicMock(return_value = extruder_manager) + application.getGlobalContainerStack = MagicMock(return_value = global_stack) + with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + manager = MachineManager(application) + + return manager + +@pytest.mark.skip(reason = "Outdated test") +def test_setActiveMachine(machine_manager): + registry = MagicMock() + + mocked_global_stack = MagicMock() + + mocked_global_stack.getId = MagicMock(return_value = "test_machine") + registry.findContainerStacks = MagicMock(return_value = [mocked_global_stack]) + with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=registry)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=registry)): + machine_manager.setActiveMachine("test_machine") + + # Although we mocked the application away, we still want to know if it was notified about the attempted change. + machine_manager._application.setGlobalContainerStack.assert_called_with(mocked_global_stack) + + +def test_getMachine(): + registry = MagicMock() + mocked_global_stack = MagicMock() + mocked_global_stack.getId = MagicMock(return_value="test_machine") + mocked_global_stack.definition.getId = MagicMock(return_value = "test") + registry.findContainerStacks = MagicMock(return_value=[mocked_global_stack]) + with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=registry)): + assert MachineManager.getMachine("test") == mocked_global_stack + + +def test_addMachine(machine_manager): + registry = MagicMock() + + mocked_stack = MagicMock() + mocked_stack.getId = MagicMock(return_value="newlyCreatedStack") + mocked_create_machine = MagicMock(name="createMachine", return_value = mocked_stack) + machine_manager.setActiveMachine = MagicMock() + with patch("cura.Settings.CuraStackBuilder.CuraStackBuilder.createMachine", mocked_create_machine): + with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=registry)): + machine_manager.addMachine("derp") + machine_manager.setActiveMachine.assert_called_with("newlyCreatedStack") + + +def test_hasUserSettings(machine_manager, application): + mocked_stack = application.getGlobalContainerStack() + + mocked_instance_container = MagicMock(name="UserSettingContainer") + mocked_instance_container.getNumInstances = MagicMock(return_value = 12) + mocked_stack.getTop = MagicMock(return_value = mocked_instance_container) + + assert machine_manager.numUserSettings == 12 + assert machine_manager.hasUserSettings + + +def test_totalNumberOfSettings(machine_manager): + registry = MagicMock() + mocked_definition = MagicMock() + mocked_definition.getAllKeys = MagicMock(return_value = ["omg", "zomg", "foo"]) + registry.findDefinitionContainers = MagicMock(return_value = [mocked_definition]) + with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=registry)): + assert machine_manager.totalNumberOfSettings == 3 + + +def createMockedExtruder(extruder_id): + extruder = MagicMock() + extruder.getId = MagicMock(return_value = extruder_id) + return extruder + + +def createMockedInstanceContainer(instance_id, name = ""): + instance = MagicMock() + instance.getName = MagicMock(return_value = name) + instance.getId = MagicMock(return_value=instance_id) + return instance + + +def test_globalVariantName(machine_manager, application): + global_stack = application.getGlobalContainerStack() + global_stack.variant = createMockedInstanceContainer("beep", "zomg") + assert machine_manager.globalVariantName == "zomg" + + +def test_resetSettingForAllExtruders(machine_manager): + global_stack = machine_manager.activeMachine + extruder_1 = createMockedExtruder("extruder_1") + extruder_2 = createMockedExtruder("extruder_2") + extruder_1.userChanges = createMockedInstanceContainer("settings_1") + extruder_2.userChanges = createMockedInstanceContainer("settings_2") + global_stack.extruderList = [extruder_1, extruder_2] + + machine_manager.resetSettingForAllExtruders("whatever") + + extruder_1.userChanges.removeInstance.assert_called_once_with("whatever") + extruder_2.userChanges.removeInstance.assert_called_once_with("whatever") \ No newline at end of file diff --git a/tests/TestOAuth2.py b/tests/TestOAuth2.py index 26d6b8e332..1e305c6549 100644 --- a/tests/TestOAuth2.py +++ b/tests/TestOAuth2.py @@ -1,7 +1,10 @@ -import webbrowser from datetime import datetime from unittest.mock import MagicMock, patch +import requests + +from PyQt5.QtGui import QDesktopServices + from UM.Preferences import Preferences from cura.OAuth2.AuthorizationHelpers import AuthorizationHelpers, TOKEN_TIMESTAMP_FORMAT from cura.OAuth2.AuthorizationService import AuthorizationService @@ -32,7 +35,15 @@ SUCCESSFUL_AUTH_RESPONSE = AuthenticationResponse( access_token = "beep", refresh_token = "beep?", received_at = datetime.now().strftime(TOKEN_TIMESTAMP_FORMAT), - expires_in = 300 # 5 minutes should be more than enough for testing + expires_in = 300, # 5 minutes should be more than enough for testing + success = True +) + +NO_REFRESH_AUTH_RESPONSE = AuthenticationResponse( + access_token = "beep", + received_at = datetime.now().strftime(TOKEN_TIMESTAMP_FORMAT), + expires_in = 300, # 5 minutes should be more than enough for testing + success = True ) MALFORMED_AUTH_RESPONSE = AuthenticationResponse() @@ -46,6 +57,81 @@ def test_cleanAuthService() -> None: assert authorization_service.getAccessToken() is None +def test_refreshAccessTokenSuccess(): + authorization_service = AuthorizationService(OAUTH_SETTINGS, Preferences()) + authorization_service.initialize() + with patch.object(AuthorizationService, "getUserProfile", return_value=UserProfile()): + authorization_service._storeAuthData(SUCCESSFUL_AUTH_RESPONSE) + authorization_service.onAuthStateChanged.emit = MagicMock() + + with patch.object(AuthorizationHelpers, "getAccessTokenUsingRefreshToken", return_value=SUCCESSFUL_AUTH_RESPONSE): + authorization_service.refreshAccessToken() + assert authorization_service.onAuthStateChanged.emit.called_with(True) + + +def test__parseJWTNoRefreshToken(): + authorization_service = AuthorizationService(OAUTH_SETTINGS, Preferences()) + with patch.object(AuthorizationService, "getUserProfile", return_value=UserProfile()): + authorization_service._storeAuthData(NO_REFRESH_AUTH_RESPONSE) + assert authorization_service._parseJWT() is None + + +def test__parseJWTFailOnRefresh(): + authorization_service = AuthorizationService(OAUTH_SETTINGS, Preferences()) + with patch.object(AuthorizationService, "getUserProfile", return_value=UserProfile()): + authorization_service._storeAuthData(SUCCESSFUL_AUTH_RESPONSE) + + with patch.object(AuthorizationHelpers, "getAccessTokenUsingRefreshToken", return_value=FAILED_AUTH_RESPONSE): + assert authorization_service._parseJWT() is None + + +def test__parseJWTSucceedOnRefresh(): + authorization_service = AuthorizationService(OAUTH_SETTINGS, Preferences()) + authorization_service.initialize() + with patch.object(AuthorizationService, "getUserProfile", return_value=UserProfile()): + authorization_service._storeAuthData(SUCCESSFUL_AUTH_RESPONSE) + + with patch.object(AuthorizationHelpers, "getAccessTokenUsingRefreshToken", return_value=SUCCESSFUL_AUTH_RESPONSE): + with patch.object(AuthorizationHelpers, "parseJWT", MagicMock(return_value = None)) as mocked_parseJWT: + authorization_service._parseJWT() + mocked_parseJWT.assert_called_with("beep") + + +def test_initialize(): + original_preference = MagicMock() + initialize_preferences = MagicMock() + authorization_service = AuthorizationService(OAUTH_SETTINGS, original_preference) + authorization_service.initialize(initialize_preferences) + initialize_preferences.addPreference.assert_called_once_with("test/auth_data", "{}") + original_preference.addPreference.assert_not_called() + + +def test_refreshAccessTokenFailed(): + authorization_service = AuthorizationService(OAUTH_SETTINGS, Preferences()) + authorization_service.initialize() + with patch.object(AuthorizationService, "getUserProfile", return_value=UserProfile()): + authorization_service._storeAuthData(SUCCESSFUL_AUTH_RESPONSE) + authorization_service.onAuthStateChanged.emit = MagicMock() + with patch.object(AuthorizationHelpers, "getAccessTokenUsingRefreshToken", return_value=FAILED_AUTH_RESPONSE): + authorization_service.refreshAccessToken() + assert authorization_service.onAuthStateChanged.emit.called_with(False) + + +def test_refreshAccesTokenWithoutData(): + authorization_service = AuthorizationService(OAUTH_SETTINGS, Preferences()) + authorization_service.initialize() + authorization_service.onAuthStateChanged.emit = MagicMock() + authorization_service.refreshAccessToken() + authorization_service.onAuthStateChanged.emit.assert_not_called() + + +def test_userProfileException(): + authorization_service = AuthorizationService(OAUTH_SETTINGS, Preferences()) + authorization_service.initialize() + authorization_service._parseJWT = MagicMock(side_effect=requests.exceptions.ConnectionError) + assert authorization_service.getUserProfile() is None + + def test_failedLogin() -> None: authorization_service = AuthorizationService(OAUTH_SETTINGS, Preferences()) authorization_service.onAuthenticationError.emit = MagicMock() @@ -87,12 +173,12 @@ def test_storeAuthData(get_user_profile) -> None: @patch.object(LocalAuthorizationServer, "stop") @patch.object(LocalAuthorizationServer, "start") -@patch.object(webbrowser, "open_new") -def test_localAuthServer(webbrowser_open, start_auth_server, stop_auth_server) -> None: +@patch.object(QDesktopServices, "openUrl") +def test_localAuthServer(QDesktopServices_openUrl, start_auth_server, stop_auth_server) -> None: preferences = Preferences() authorization_service = AuthorizationService(OAUTH_SETTINGS, preferences) authorization_service.startAuthorizationFlow() - assert webbrowser_open.call_count == 1 + assert QDesktopServices_openUrl.call_count == 1 # Ensure that the Authorization service tried to start the server. assert start_auth_server.call_count == 1 diff --git a/tests/TestObjectsModel.py b/tests/TestObjectsModel.py new file mode 100644 index 0000000000..caed4741bb --- /dev/null +++ b/tests/TestObjectsModel.py @@ -0,0 +1,166 @@ +import pytest +import copy +from unittest.mock import patch, MagicMock + +from UM.Scene.GroupDecorator import GroupDecorator +from UM.Scene.SceneNode import SceneNode +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator +from cura.UI.ObjectsModel import ObjectsModel, _NodeInfo + + +@pytest.fixture() +def objects_model(application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + return ObjectsModel() + + +@pytest.fixture() +def group_scene_node(): + node = SceneNode() + node.addDecorator(GroupDecorator()) + return node + + +@pytest.fixture() +def slicable_scene_node(): + node = SceneNode() + node.addDecorator(SliceableObjectDecorator()) + return node + +@pytest.fixture() +def application_with_mocked_scene(application): + mocked_controller = MagicMock(name = "Controller") + mocked_scene = MagicMock(name = "Scene") + mocked_controller.getScene = MagicMock(return_value = mocked_scene) + application.getController = MagicMock(return_value = mocked_controller) + return application + + +def test_setActiveBuildPlate(objects_model): + objects_model._update = MagicMock() + + objects_model.setActiveBuildPlate(12) + assert objects_model._update.call_count == 1 + + objects_model.setActiveBuildPlate(12) + assert objects_model._update.call_count == 1 + + +class Test_shouldNodeBeHandled: + def test_nonSlicableSceneNode(self, objects_model): + # An empty SceneNode should not be handled by this model + assert not objects_model._shouldNodeBeHandled(SceneNode()) + + def test_groupedNode(self, objects_model, slicable_scene_node, application): + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + # A node without a build plate number should not be handled. + assert not objects_model._shouldNodeBeHandled(slicable_scene_node) + + def test_childNode(self, objects_model, group_scene_node, slicable_scene_node, application): + slicable_scene_node.setParent(group_scene_node) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + # A child node of a group node should not be handled. + assert not objects_model._shouldNodeBeHandled(slicable_scene_node) + + def test_slicableNodeWithoutFiltering(self, objects_model, slicable_scene_node, application): + mocked_preferences = MagicMock(name="preferences") + mocked_preferences.getValue = MagicMock(return_value = False) + application.getPreferences = MagicMock(return_value = mocked_preferences) + + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + # A slicable node should be handled by this model. + assert objects_model._shouldNodeBeHandled(slicable_scene_node) + + def test_slicableNodeWithFiltering(self, objects_model, slicable_scene_node, application): + mocked_preferences = MagicMock(name="preferences") + mocked_preferences.getValue = MagicMock(return_value = True) + application.getPreferences = MagicMock(return_value = mocked_preferences) + + buildplate_decorator = BuildPlateDecorator() + buildplate_decorator.setBuildPlateNumber(-1) + slicable_scene_node.addDecorator(buildplate_decorator) + + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): + # A slicable node with the same buildplate number should be handled. + assert objects_model._shouldNodeBeHandled(slicable_scene_node) + + +class Test_renameNodes: + def test_emptyDict(self, objects_model): + assert objects_model._renameNodes({}) == [] + + def test_singleItemNoRename(self, objects_model): + node = SceneNode() + assert objects_model._renameNodes({"zomg": _NodeInfo(index_to_node={1: node})}) == [node] + + def test_singleItemRename(self, objects_model): + node = SceneNode() + result = objects_model._renameNodes({"zomg": _NodeInfo(nodes_to_rename=[node])}) + assert result == [node] + assert node.getName() == "zomg(1)" + + def test_singleItemRenameWithIndex(self, objects_model): + node = SceneNode() + objects_model._renameNodes({"zomg": _NodeInfo(index_to_node = {1: node}, nodes_to_rename=[node])}) + assert node.getName() == "zomg(2)" + + def test_multipleItemsRename(self, objects_model): + node1 = SceneNode() + node2 = SceneNode() + result = objects_model._renameNodes({"zomg": _NodeInfo(nodes_to_rename=[node1, node2])}) + assert result == [node1, node2] + assert node1.getName() == "zomg(1)" + assert node2.getName() == "zomg(2)" + + def test_renameGroup(self, objects_model, group_scene_node): + result = objects_model._renameNodes({"zomg": _NodeInfo(nodes_to_rename=[group_scene_node], is_group=True)}) + assert result == [group_scene_node] + assert group_scene_node.getName() == "zomg#1" + + +class Test_Update: + def test_updateWithGroup(self, objects_model, application_with_mocked_scene, group_scene_node): + objects_model._shouldNodeBeHandled = MagicMock(return_value = True) + application_with_mocked_scene.getController().getScene().getRoot = MagicMock(return_value = group_scene_node) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application_with_mocked_scene)): + objects_model._update() + assert objects_model.items == [{'name': 'Group #1', 'selected': False, 'outside_build_area': False, 'buildplate_number': None, 'node': group_scene_node}] + + def test_updateWithNonGroup(self, objects_model, application_with_mocked_scene, slicable_scene_node): + objects_model._shouldNodeBeHandled = MagicMock(return_value=True) + slicable_scene_node.setName("YAY(1)") + application_with_mocked_scene.getController().getScene().getRoot = MagicMock(return_value=slicable_scene_node) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application_with_mocked_scene)): + objects_model._update() + assert objects_model.items == [{'name': 'YAY(1)', 'selected': False, 'outside_build_area': False, 'buildplate_number': None, 'node': slicable_scene_node}] + + def test_updateWithNonTwoNodes(self, objects_model, application_with_mocked_scene, slicable_scene_node): + objects_model._shouldNodeBeHandled = MagicMock(return_value=True) + slicable_scene_node.setName("YAY") + copied_node = copy.deepcopy(slicable_scene_node) + copied_node.setParent(slicable_scene_node) + application_with_mocked_scene.getController().getScene().getRoot = MagicMock(return_value=slicable_scene_node) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application_with_mocked_scene)): + objects_model._update() + assert objects_model.items == [{'name': 'YAY', 'selected': False, 'outside_build_area': False, 'buildplate_number': None, 'node': slicable_scene_node}, {'name': 'YAY(1)', 'selected': False, 'outside_build_area': False, 'buildplate_number': None, 'node': copied_node}] + + def test_updateWithNonTwoGroups(self, objects_model, application_with_mocked_scene, group_scene_node): + objects_model._shouldNodeBeHandled = MagicMock(return_value=True) + group_scene_node.setName("Group #1") + copied_node = copy.deepcopy(group_scene_node) + copied_node.setParent(group_scene_node) + application_with_mocked_scene.getController().getScene().getRoot = MagicMock(return_value=group_scene_node) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application_with_mocked_scene)): + objects_model._update() + assert objects_model.items == [{'name': 'Group #1', 'selected': False, 'outside_build_area': False, 'buildplate_number': None, 'node': group_scene_node}, {'name': 'Group #2', 'selected': False, 'outside_build_area': False, 'buildplate_number': None, 'node': copied_node}] + + def test_updateOutsideBuildplate(self, objects_model, application_with_mocked_scene, group_scene_node): + objects_model._shouldNodeBeHandled = MagicMock(return_value=True) + group_scene_node.setName("Group") + group_scene_node.isOutsideBuildArea = MagicMock(return_value = True) + application_with_mocked_scene.getController().getScene().getRoot = MagicMock(return_value=group_scene_node) + with patch("UM.Application.Application.getInstance", MagicMock(return_value=application_with_mocked_scene)): + objects_model._update() + assert objects_model.items == [{'name': 'Group #1', 'selected': False, 'outside_build_area': True, 'buildplate_number': None, 'node': group_scene_node}] + diff --git a/tests/TestPrintInformation.py b/tests/TestPrintInformation.py index 7bfe4af702..9b9362ea75 100644 --- a/tests/TestPrintInformation.py +++ b/tests/TestPrintInformation.py @@ -1,7 +1,7 @@ import functools from UM.Qt.Duration import Duration -from cura import PrintInformation +from cura.UI import PrintInformation from cura.Settings.MachineManager import MachineManager from unittest.mock import MagicMock, patch @@ -70,8 +70,15 @@ def test_duration(): feature_print_times = print_information.getFeaturePrintTimes() assert int(feature_print_times["Travel"]) == int(Duration(None)) + # Ensure that all print times are zero-ed + print_information.setToZeroPrintInformation() + assert int(feature_print_times["Travel"]) == 0 + # Fake a print duration message - print_information._onPrintDurationMessage(0, {"Travel": 20}, [10]) + print_information._onPrintDurationMessage(0, {"travel": 20}, [10]) + + # We only set a single time, so the total time must be of the same value. + assert int(print_information.currentPrintTime) == 20 feature_print_times = print_information.getFeaturePrintTimes() assert int(feature_print_times["Travel"]) == 20 diff --git a/tests/TestPrinterOutputDevice.py b/tests/TestPrinterOutputDevice.py deleted file mode 100644 index 9d3a337c21..0000000000 --- a/tests/TestPrinterOutputDevice.py +++ /dev/null @@ -1,37 +0,0 @@ -from unittest.mock import MagicMock - -import pytest -from cura.PrinterOutputDevice import PrinterOutputDevice - -test_validate_data_get_set = [ - {"attribute": "connectionText", "value": "yay"}, - {"attribute": "connectionState", "value": 1}, -] - - -@pytest.mark.parametrize("data", test_validate_data_get_set) -def test_getAndSet(data): - model = PrinterOutputDevice("whatever") - - # Convert the first letter into a capital - attribute = list(data["attribute"]) - attribute[0] = attribute[0].capitalize() - attribute = "".join(attribute) - - # mock the correct emit - setattr(model, data["attribute"] + "Changed", MagicMock()) - - # Attempt to set the value - getattr(model, "set" + attribute)(data["value"]) - - # Check if signal fired. - signal = getattr(model, data["attribute"] + "Changed") - assert signal.emit.call_count == 1 - - # Ensure that the value got set - assert getattr(model, data["attribute"]) == data["value"] - - # Attempt to set the value again - getattr(model, "set" + attribute)(data["value"]) - # The signal should not fire again - assert signal.emit.call_count == 1 \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/conftest.py b/tests/conftest.py index b21b32b028..876fb4f541 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,24 +3,61 @@ # The purpose of this class is to create fixtures or methods that can be shared among all tests. -import unittest.mock +from unittest.mock import MagicMock, patch import pytest -import Arcus #Prevents error: "PyCapsule_GetPointer called with incorrect name" with conflicting SIP configurations between Arcus and PyQt: Import Arcus and Savitar first! -import Savitar -from UM.Qt.QtApplication import QtApplication #QtApplication import is required, even though it isn't used. -from cura.CuraApplication import CuraApplication -from cura.MachineActionManager import MachineActionManager +# Prevents error: "PyCapsule_GetPointer called with incorrect name" with conflicting SIP configurations between Arcus and PyQt: Import Arcus and Savitar first! +import Savitar # Dont remove this line +import Arcus # No really. Don't. It needs to be there! +from UM.Qt.QtApplication import QtApplication # QtApplication import is required, even though it isn't used. +# Even though your IDE says these files are not used, don't believe it. It's lying. They need to be there. +from cura.CuraApplication import CuraApplication +from cura.Settings.ExtruderManager import ExtruderManager +from cura.Settings.MachineManager import MachineManager +from cura.UI.MachineActionManager import MachineActionManager +from UM.Settings.ContainerRegistry import ContainerRegistry # Create a CuraApplication object that will be shared among all tests. It needs to be initialized. # Since we need to use it more that once, we create the application the first time and use its instance afterwards. @pytest.fixture() def application() -> CuraApplication: - app = unittest.mock.MagicMock() + app = MagicMock() return app # Returns a MachineActionManager instance. @pytest.fixture() def machine_action_manager(application) -> MachineActionManager: return MachineActionManager(application) + +@pytest.fixture() +def global_stack(): + return MagicMock(name="Global Stack") + +@pytest.fixture() +def container_registry(application, global_stack) -> ContainerRegistry: + result = MagicMock() + result.findContainerStacks = MagicMock(return_value = [global_stack]) + application.getContainerRegistry = MagicMock(return_value = result) + return result + +@pytest.fixture() +def extruder_manager(application, container_registry) -> ExtruderManager: + if ExtruderManager.getInstance() is not None: + # Reset the data + ExtruderManager._ExtruderManager__instance = None + + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + manager = ExtruderManager() + return manager + + +@pytest.fixture() +def machine_manager(application, extruder_manager, container_registry, global_stack) -> MachineManager: + application.getExtruderManager = MagicMock(return_value = extruder_manager) + application.getGlobalContainerStack = MagicMock(return_value = global_stack) + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + manager = MachineManager(application) + + return manager